diff --git a/src/arts/cache/active-cache.svelte.ts b/src/arts/cache/active-cache.svelte.ts index 89886bf..721f91b 100644 --- a/src/arts/cache/active-cache.svelte.ts +++ b/src/arts/cache/active-cache.svelte.ts @@ -1,5 +1,5 @@ import { CACHE_EVENT_ALL, type CacheClock, type CacheEvent } from '$libs/cache'; -import { createEngineCache } from '$svrs/cache'; +import { createEngineCache } from '$libs/cache'; import { CACHE_ACTIVE_DIAGNOSTIC_EVENTS, CACHE_METHOD_CLEAR, @@ -13,7 +13,7 @@ import { CACHE_METHOD_SET, CACHE_METHOD_STATS } from './consts.ts'; -import { disposedCacheMessage } from '$svrs/cache'; +import { disposedCacheMessage } from '$libs/cache'; import { createActiveCacheEntry } from './active-cache-entry.svelte.ts'; import { normalizeActiveCacheError } from './active-cache-helpers.ts'; import { createActiveCacheDiagnostics, emitActiveCacheDiagnostic } from './diagnostics.ts'; diff --git a/src/arts/cache/consts.ts b/src/arts/cache/consts.ts index 03fc217..574ab29 100644 --- a/src/arts/cache/consts.ts +++ b/src/arts/cache/consts.ts @@ -25,7 +25,7 @@ export { CACHE_METHOD_SET, CACHE_METHOD_STATS, CACHE_MODULE -} from '$svrs/cache'; +} from '$libs/cache'; export const CACHE_ACTIVE_STATUS_IDLE = 'idle'; export const CACHE_ACTIVE_STATUS_LOADING = 'loading'; diff --git a/src/arts/cache/errors.ts b/src/arts/cache/errors.ts index d773ce5..327e0ae 100644 --- a/src/arts/cache/errors.ts +++ b/src/arts/cache/errors.ts @@ -1,8 +1,8 @@ import { CodeError } from '$libs/errs'; import { CACHE_ERR_ACTIVE_ENTRY_DISPOSED } from '$libs/cache'; -import { CACHE_MODULE } from '$svrs/cache'; +import { CACHE_MODULE } from '$libs/cache'; -export { CACHE_ERROR_MSG_DISPOSED_SUFFIX, CacheDisposedError, isCacheDisposedError } from '$svrs/cache'; +export { CACHE_ERROR_MSG_DISPOSED_SUFFIX, CacheDisposedError, isCacheDisposedError } from '$libs/cache'; export const CACHE_ERROR_MSG_ACTIVE_ENTRY_DISPOSED = `[${CACHE_MODULE}] ActiveCacheEntry used after dispose().`; diff --git a/src/arts/cache/index.ts b/src/arts/cache/index.ts index 1f10a8b..e36aa34 100644 --- a/src/arts/cache/index.ts +++ b/src/arts/cache/index.ts @@ -53,7 +53,7 @@ export { isCacheActiveEntryDisposedError, isCacheDisposedError } from './errors.ts'; -export { disposedCacheMessage } from '$svrs/cache'; +export { disposedCacheMessage } from '$libs/cache'; export type { ActiveCacheDiagnosticEvent, ActiveCacheDiagnosticMeta, @@ -145,7 +145,7 @@ export { stableHash, stableStringify, storageCacheAdapter -} from '$svrs/cache'; +} from '$libs/cache'; export type { CacheAdapter, @@ -187,4 +187,4 @@ export type { SetOptions, StorageCacheAdapterOptions, StorageLike -} from '$svrs/cache'; +} from '$libs/cache'; diff --git a/src/arts/cache/types.ts b/src/arts/cache/types.ts index a1bad42..daaf564 100644 --- a/src/arts/cache/types.ts +++ b/src/arts/cache/types.ts @@ -1,9 +1,9 @@ import type { CACHE_ACTIVE_ENTRY_EVENTS, CACHE_ACTIVE_STATUSES } from './consts.ts'; import type { CacheClock, CacheEvent, CacheKey, QueryOptions, SetOptions } from '$libs/cache'; -import type { EngineCache, EngineCacheOptions } from '$svrs/cache'; +import type { EngineCache, EngineCacheOptions } from '$libs/cache'; import type { ActiveChangeListener, ActiveEngine } from '$libs/active'; -export type { EngineCache, EngineCacheOptions } from '$svrs/cache'; +export type { EngineCache, EngineCacheOptions } from '$libs/cache'; export type ActiveCacheEntryStatus = (typeof CACHE_ACTIVE_STATUSES)[number]; diff --git a/src/svrs/cache/diagnostics.ts b/src/libs/cache/diagnostics.ts similarity index 89% rename from src/svrs/cache/diagnostics.ts rename to src/libs/cache/diagnostics.ts index fee0c86..485947f 100644 --- a/src/svrs/cache/diagnostics.ts +++ b/src/libs/cache/diagnostics.ts @@ -10,10 +10,10 @@ import { CACHE_EVENT_ADAPTER_ERROR, CACHE_EVENT_REFRESH_ERROR, CACHE_EVENT_STALE_IF_ERROR, - type CacheEvent, - type CacheEventType -} from '$libs/cache'; -import { CACHE_LOG_MESSAGE_BY_EVENT, CACHE_MODULE } from './consts.ts'; + CACHE_MODULE +} from './consts.ts'; +import type { CacheEvent, CacheEventType } from './types.ts'; +import { CACHE_LOG_MESSAGE_BY_EVENT } from './engine-consts.ts'; export type CacheDiagnosticEvent = DiagnosticEvent; export type CacheDiagnostics = Diagnostics; diff --git a/src/svrs/cache/engine-cache.ts b/src/libs/cache/engine-cache.ts similarity index 85% rename from src/svrs/cache/engine-cache.ts rename to src/libs/cache/engine-cache.ts index bec8193..e6b55fd 100644 --- a/src/svrs/cache/engine-cache.ts +++ b/src/libs/cache/engine-cache.ts @@ -1,4 +1,5 @@ -import { createCacheRuntime, memoryCacheAdapter } from '$libs/cache'; +import { createCacheRuntime } from './engine.ts'; +import { memoryCacheAdapter } from './adapters/memory.ts'; import { CACHE_METHOD_CLEAR, CACHE_METHOD_EXPLAIN, @@ -9,11 +10,11 @@ import { CACHE_METHOD_QUERY, CACHE_METHOD_SET, CACHE_METHOD_STATS -} from './consts.ts'; +} from './engine-consts.ts'; import { createCacheDiagnostics, emitCacheDiagnostic } from './diagnostics.ts'; -import { CacheDisposedError } from './errors.ts'; -import { disposedCacheMessage } from './helpers.ts'; -import type { EngineCache, EngineCacheOptions } from './types.ts'; +import { CacheDisposedError } from './engine-errors.ts'; +import { disposedCacheMessage } from './engine-helpers.ts'; +import type { EngineCache, EngineCacheOptions } from './engine-types.ts'; export function createEngineCache(options: EngineCacheOptions = {}): EngineCache { const diagnostics = createCacheDiagnostics(options.logger); diff --git a/src/svrs/cache/consts.ts b/src/libs/cache/engine-consts.ts similarity index 90% rename from src/svrs/cache/consts.ts rename to src/libs/cache/engine-consts.ts index a76fab3..99aa5da 100644 --- a/src/svrs/cache/consts.ts +++ b/src/libs/cache/engine-consts.ts @@ -13,15 +13,9 @@ import { CACHE_EVENT_SET, CACHE_EVENT_SINGLEFLIGHT_JOIN, CACHE_EVENT_STALE_HIT, - CACHE_EVENT_STALE_IF_ERROR, - CACHE_MODULE, - type CacheEventType -} from '$libs/cache'; - -// `CACHE_MODULE` is owned by `libs/cache` (the pure layer needs it for -// diagnostics) and re-exported from this server consts module so -// existing `$svrs/cache` consumers keep their import paths. -export { CACHE_MODULE }; + CACHE_EVENT_STALE_IF_ERROR +} from './consts.ts'; +import type { CacheEventType } from './types.ts'; export const CACHE_LOG_MESSAGE_HIT = 'cache hit'; export const CACHE_LOG_MESSAGE_MISS = 'cache miss'; diff --git a/src/svrs/cache/errors.ts b/src/libs/cache/engine-errors.ts similarity index 88% rename from src/svrs/cache/errors.ts rename to src/libs/cache/engine-errors.ts index 72e3f6f..1bbda4e 100644 --- a/src/svrs/cache/errors.ts +++ b/src/libs/cache/engine-errors.ts @@ -1,5 +1,5 @@ import { CodeError } from '$libs/errs'; -import { CACHE_ERR_DISPOSED } from '$libs/cache'; +import { CACHE_ERR_DISPOSED } from './errors.ts'; export const CACHE_ERROR_MSG_DISPOSED_SUFFIX = '() called on a disposed cache engine'; diff --git a/src/svrs/cache/helpers.ts b/src/libs/cache/engine-helpers.ts similarity index 63% rename from src/svrs/cache/helpers.ts rename to src/libs/cache/engine-helpers.ts index f659bf5..fe76034 100644 --- a/src/svrs/cache/helpers.ts +++ b/src/libs/cache/engine-helpers.ts @@ -1,4 +1,4 @@ -import { CACHE_ERROR_MSG_DISPOSED_SUFFIX } from './errors.ts'; +import { CACHE_ERROR_MSG_DISPOSED_SUFFIX } from './engine-errors.ts'; export function disposedCacheMessage(method: string): string { return `${method}${CACHE_ERROR_MSG_DISPOSED_SUFFIX}`; diff --git a/src/svrs/cache/types.ts b/src/libs/cache/engine-types.ts similarity index 86% rename from src/svrs/cache/types.ts rename to src/libs/cache/engine-types.ts index 05affa5..885f385 100644 --- a/src/svrs/cache/types.ts +++ b/src/libs/cache/engine-types.ts @@ -2,9 +2,9 @@ import type { CacheAdapter, CacheEventHandler, CacheRuntime, - CacheRuntimeConfig, - MemoryCacheAdapterOptions -} from '$libs/cache'; + CacheRuntimeConfig +} from './types.ts'; +import type { MemoryCacheAdapterOptions } from './adapters/memory.ts'; import type { Logger } from '$libs/logger'; export interface EngineCacheOptions extends Omit { diff --git a/src/libs/cache/index.ts b/src/libs/cache/index.ts index 8074684..6e56391 100644 --- a/src/libs/cache/index.ts +++ b/src/libs/cache/index.ts @@ -68,3 +68,48 @@ export type { export type { MemoryCacheAdapter, MemoryCacheAdapterOptions } from './adapters/memory.ts'; export type { StorageCacheAdapterOptions, StorageLike } from './adapters/storage.ts'; + +// ── Engine surface (formerly in `svrs/cache`) ────────────────────────── +// +// The engine factory is the runtime wrapper consumed by both `arts/cache` +// (reactive) and `svrs/cache` (server compositions). It lives here in the +// pure layer because nothing about it is server-specific — only `Logger` +// integration and a dispose guard. Closes the codex audit blocker #8 +// (arts → svrs layer inversion). +export { createEngineCache } from './engine-cache.ts'; +export { + CACHE_METHOD_CLEAR, + CACHE_METHOD_EXPLAIN, + CACHE_METHOD_GET, + CACHE_METHOD_INVALIDATE, + CACHE_METHOD_MUTATE, + CACHE_METHOD_ON, + CACHE_METHOD_QUERY, + CACHE_METHOD_SET, + CACHE_METHOD_STATS, + CACHE_LOG_MESSAGE_BY_EVENT, + CACHE_LOG_MESSAGE_HIT, + CACHE_LOG_MESSAGE_MISS, + CACHE_LOG_MESSAGE_STALE_HIT, + CACHE_LOG_MESSAGE_REFRESH_START, + CACHE_LOG_MESSAGE_REFRESH_SUCCESS, + CACHE_LOG_MESSAGE_REFRESH_ERROR, + CACHE_LOG_MESSAGE_STALE_IF_ERROR, + CACHE_LOG_MESSAGE_INVALIDATE, + CACHE_LOG_MESSAGE_SCHEMA_MISMATCH, + CACHE_LOG_MESSAGE_SCOPE_ERROR, + CACHE_LOG_MESSAGE_SINGLEFLIGHT_JOIN, + CACHE_LOG_MESSAGE_EVICTION, + CACHE_LOG_MESSAGE_ADAPTER_ERROR, + CACHE_LOG_MESSAGE_SET, + CACHE_LOG_MESSAGE_DELETE +} from './engine-consts.ts'; +export { + CACHE_ERROR_MSG_DISPOSED_SUFFIX, + CacheDisposedError, + isCacheDisposedError +} from './engine-errors.ts'; +export { disposedCacheMessage } from './engine-helpers.ts'; +export { createCacheDiagnostics, emitCacheDiagnostic } from './diagnostics.ts'; +export type { EngineCache, EngineCacheOptions } from './engine-types.ts'; +export type { CacheDiagnosticEvent, CacheDiagnostics } from './diagnostics.ts'; diff --git a/src/svrs/cache/index.ts b/src/svrs/cache/index.ts index ddb8cd5..8311f4a 100644 --- a/src/svrs/cache/index.ts +++ b/src/svrs/cache/index.ts @@ -1,155 +1,10 @@ -export { createEngineCache } from './engine-cache.ts'; -export { createCacheDiagnostics, emitCacheDiagnostic } from './diagnostics.ts'; -export { CACHE_ERR_DISPOSED } from '$libs/cache'; -export { - CACHE_LOG_MESSAGE_ADAPTER_ERROR, - CACHE_LOG_MESSAGE_BY_EVENT, - CACHE_LOG_MESSAGE_DELETE, - CACHE_LOG_MESSAGE_EVICTION, - CACHE_LOG_MESSAGE_HIT, - CACHE_LOG_MESSAGE_INVALIDATE, - CACHE_LOG_MESSAGE_MISS, - CACHE_LOG_MESSAGE_REFRESH_ERROR, - CACHE_LOG_MESSAGE_REFRESH_START, - CACHE_LOG_MESSAGE_REFRESH_SUCCESS, - CACHE_LOG_MESSAGE_SCHEMA_MISMATCH, - CACHE_LOG_MESSAGE_SCOPE_ERROR, - CACHE_LOG_MESSAGE_SET, - CACHE_LOG_MESSAGE_SINGLEFLIGHT_JOIN, - CACHE_LOG_MESSAGE_STALE_HIT, - CACHE_LOG_MESSAGE_STALE_IF_ERROR, - CACHE_METHOD_CLEAR, - CACHE_METHOD_EXPLAIN, - CACHE_METHOD_GET, - CACHE_METHOD_INVALIDATE, - CACHE_METHOD_MUTATE, - CACHE_METHOD_ON, - CACHE_METHOD_QUERY, - CACHE_METHOD_SET, - CACHE_METHOD_STATS, - CACHE_MODULE -} from './consts.ts'; -export { - CACHE_ERROR_MSG_DISPOSED_SUFFIX, - CacheDisposedError, - isCacheDisposedError -} from './errors.ts'; -export { disposedCacheMessage } from './helpers.ts'; -export type { EngineCache, EngineCacheOptions } from './types.ts'; -export type { CacheDiagnosticEvent, CacheDiagnostics } from './diagnostics.ts'; - -export { - CACHE_ADAPTER_MEMORY, - CACHE_ADAPTER_STORAGE, - CACHE_DECISION_ACTION_DELETE_AND_FETCH, - CACHE_DECISION_ACTION_FETCH, - CACHE_DECISION_ACTION_SERVE, - CACHE_DECISION_ACTION_SERVE_AND_REFRESH, - CACHE_DECISION_ACTION_SKIP_CACHE, - CACHE_DECISION_REASON_BYPASS_CACHE, - CACHE_DECISION_REASON_CACHE_MISS, - CACHE_DECISION_REASON_EXPIRED, - CACHE_DECISION_REASON_FRESH, - CACHE_DECISION_REASON_NO_STORE, - CACHE_DECISION_REASON_PREFIX_EPOCH_CHANGED, - CACHE_DECISION_REASON_SCHEMA_VERSION_MISMATCH, - CACHE_DECISION_REASON_SCOPE_MISMATCH, - CACHE_DECISION_REASON_STALE_WINDOW_VALID, - CACHE_DECISION_REASON_TAG_EPOCH_CHANGED, - CACHE_ENVELOPE_STATE_DEGRADED, - CACHE_ENVELOPE_STATE_EXPIRED, - CACHE_ENVELOPE_STATE_FRESH, - CACHE_ENVELOPE_STATE_INVALIDATED, - CACHE_ENVELOPE_STATE_STALE, - CACHE_EVENT_ADAPTER_ERROR, - CACHE_EVENT_ALL, - CACHE_EVENT_DELETE, - CACHE_EVENT_EVICTION, - CACHE_EVENT_HIT, - CACHE_EVENT_INVALIDATE, - CACHE_EVENT_MISS, - CACHE_EVENT_REFRESH_ERROR, - CACHE_EVENT_REFRESH_START, - CACHE_EVENT_REFRESH_SUCCESS, - CACHE_EVENT_SCHEMA_MISMATCH, - CACHE_EVENT_SCOPE_ERROR, - CACHE_EVENT_SET, - CACHE_EVENT_SINGLEFLIGHT_JOIN, - CACHE_EVENT_STALE_HIT, - CACHE_EVENT_STALE_IF_ERROR, - CACHE_POLICY_CATALOG, - CACHE_POLICY_IMMUTABLE, - CACHE_POLICY_INTERACTIVE, - CACHE_POLICY_PRIVATE_SESSION, - CACHE_POLICY_REALTIME, - CACHE_READ_MODE_BYPASS_CACHE, - CACHE_READ_MODE_CACHE_FIRST, - CACHE_READ_MODE_MUST_REVALIDATE, - CACHE_READ_MODE_NO_STORE, - CACHE_READ_MODE_STALE_WHILE_REVALIDATE, - CACHE_SCOPE_ACTOR, - CACHE_SCOPE_CUSTOM, - CACHE_SCOPE_PERMISSION, - CACHE_SCOPE_PUBLIC, - CACHE_SCOPE_TENANT, - CacheKeyError, - CachePolicyError, - CacheScopeError, - createMapStorage, - defaultCachePolicies, - durationToMs, - isCacheKeyError, - isCachePolicyError, - isCacheScopeError, - memoryCacheAdapter, - normalizeKey, - normalizeKeyPrefixes, - normalizeTag, - normalizeTags, - resolveScope, - stableHash, - stableStringify, - storageCacheAdapter -} from '$libs/cache'; - -export type { - CacheAdapter, - CacheAdapterSetOptions, - CacheClock, - CacheDecision, - CacheDecisionAction, - CacheDecisionReason, - CacheEnvelope, - CacheEnvelopeState, - CacheEvent, - CacheEventHandler, - CacheEventSelector, - CacheEventType, - CacheExplain, - CacheKey, - CachePolicy, - CacheReadMode, - CacheRuntime, - CacheRuntimeConfig, - CacheScopeInput, - CacheScopeMode, - CacheStats, - CacheTagLike, - CacheTagObject, - CustomCacheScope, - ExplainOptions, - GetOptions, - InvalidateOptions, - MemoryCacheAdapter, - MemoryCacheAdapterOptions, - MemoryCacheEvictReason, - MutateOptions, - QueryOptions, - ResolvedCachePolicy, - ResolvedCacheScope, - ResolvedScopeValues, - ScopeResolver, - SetOptions, - StorageCacheAdapterOptions, - StorageLike -} from '$libs/cache'; +/** + * Server-side surface for `cache`. After the codex audit blocker #8 fix, + * the engine factory + diagnostics + types live in `$libs/cache` (the + * pure layer) so `arts/cache` can consume them without inverting layers. + * + * This module re-exports the same names from `$libs/cache` so historical + * `import { ... } from '$svrs/cache'` callers keep working — production + * compositions, READMEs, docs and ecosystem tests all flow through here. + */ +export * from '$libs/cache'; diff --git a/src/web/routes/test/aapp/+page.svelte b/src/web/routes/test/aapp/+page.svelte index 4ae7ea4..8c69eb4 100644 --- a/src/web/routes/test/aapp/+page.svelte +++ b/src/web/routes/test/aapp/+page.svelte @@ -1,7 +1,15 @@