@dee-wan/cache 1.1.0 → 2.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. package/README.md +31 -1
  2. package/dist/chunk-2V6MG4YX.js +652 -0
  3. package/dist/chunk-2V6MG4YX.js.map +1 -0
  4. package/dist/{chunk-MOJBHU3S.js → chunk-6VWIKYUQ.js} +72 -173
  5. package/dist/chunk-6VWIKYUQ.js.map +1 -0
  6. package/dist/{chunk-HGAUU4EU.js → chunk-7OWX6SH5.js} +52 -15
  7. package/dist/chunk-7OWX6SH5.js.map +1 -0
  8. package/dist/{chunk-A4WV6RY4.js → chunk-GGSQ6C6X.js} +8 -3
  9. package/dist/chunk-GGSQ6C6X.js.map +1 -0
  10. package/dist/{chunk-ZREX7LLC.js → chunk-M4UOCIDQ.js} +18 -6
  11. package/dist/chunk-M4UOCIDQ.js.map +1 -0
  12. package/dist/chunk-NFBMWKY5.js +54 -0
  13. package/dist/chunk-NFBMWKY5.js.map +1 -0
  14. package/dist/{chunk-OOPPXK7Q.js → chunk-WKZ7TKGM.js} +3 -54
  15. package/dist/chunk-WKZ7TKGM.js.map +1 -0
  16. package/dist/chunk-ZBYAKDNZ.js +45 -0
  17. package/dist/chunk-ZBYAKDNZ.js.map +1 -0
  18. package/dist/client.d.ts +14 -1
  19. package/dist/client.js +37 -1
  20. package/dist/client.js.map +1 -1
  21. package/dist/cloudflare/index.d.ts +1 -1
  22. package/dist/cloudflare/index.js +4 -4
  23. package/dist/d1/index.d.ts +18 -2
  24. package/dist/d1/index.js +33 -11
  25. package/dist/d1/index.js.map +1 -1
  26. package/dist/d1/response-lease.js +11 -9
  27. package/dist/d1/response-lease.js.map +1 -1
  28. package/dist/index.d.ts +2 -2
  29. package/dist/index.js +1 -1
  30. package/dist/response-lease.js +8 -3
  31. package/dist/{types-D-Gd11to.d.ts → types-CtErcz2a.d.ts} +13 -1
  32. package/docs/cache-contract.md +2 -0
  33. package/package.json +1 -1
  34. package/dist/chunk-A4WV6RY4.js.map +0 -1
  35. package/dist/chunk-D2EESWMC.js +0 -19
  36. package/dist/chunk-D2EESWMC.js.map +0 -1
  37. package/dist/chunk-HGAUU4EU.js.map +0 -1
  38. package/dist/chunk-MOJBHU3S.js.map +0 -1
  39. package/dist/chunk-OOPPXK7Q.js.map +0 -1
  40. package/dist/chunk-ZREX7LLC.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/d1/adapter.ts","../src/d1/env.ts","../src/d1/read.ts"],"names":["index","wrapped","runtimes"],"mappings":"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","file":"chunk-MOJBHU3S.js","sourcesContent":["import { CacheUnavailableError } from '../core/extension';\nimport type { CacheStore } from '../core/types';\nimport type { D1WritePolicy } from './profile';\nimport type { D1Database, D1DatabaseSession, D1PreparedStatement, D1Result } from '@cloudflare/workers-types';\nimport { boundedD1Store } from './bounded-store';\n\nconst fence = ['g'];\n\nconst lexemes = /\\s+|--[^\\n]*|\\/\\*[\\s\\S]*?(?:\\*\\/|$)|'(?:[^']|'')*'?|`(?:[^`]|``)*`?|\"(?:[^\"]|\"\")*\"?|\\[[^\\]]*\\]?|[A-Za-z_][A-Za-z0-9_$]*|[\\s\\S]/g;\nconst safePragmas = new Set(['database_list', 'table_list', 'table_info', 'table_xinfo', 'index_list', 'index_info', 'index_xinfo', 'foreign_key_list']);\n\nfunction operationOf(tokens: string[], start = 0): string | undefined {\n const word = (index: number) => tokens[index]?.toLowerCase();\n if (word(start) !== 'with') return word(start);\n let index = start + 1;\n if (word(index) === 'recursive') index++;\n const group = (): boolean => {\n if (tokens[index] !== '(') return false;\n let depth = 0;\n do {\n if (tokens[index] === '(') depth++;\n if (tokens[index] === ')') depth--;\n index++;\n } while (index < tokens.length && depth > 0);\n return depth === 0;\n };\n while (index < tokens.length) {\n if (!/^(?:[A-Za-z_][A-Za-z0-9_$]*|`[^`]+`|\"[^\"]+\"|\\[[^\\]]+\\])$/.test(tokens[index] ?? '')) return undefined;\n index++;\n if (tokens[index] === '(' && !group()) return undefined;\n if (word(index++) !== 'as') return undefined;\n if (word(index) === 'not') index++;\n if (word(index) === 'materialized') index++;\n if (tokens[index] !== '(' || !['select', 'with'].includes(word(index + 1) ?? '')) return undefined;\n if (!group()) return undefined;\n if (tokens[index] !== ',') return word(index);\n index++;\n }\n return undefined;\n}\n\nfunction isReadonly(sql: string): boolean {\n const tokens = [...sql.matchAll(lexemes)].map(([token = '']) => token).filter((token) => !/^(?:\\s|--|\\/\\*)/.test(token));\n if (tokens.at(-1) === ';') tokens.pop();\n const first = tokens[0]?.toLowerCase();\n const pragmaName = first === 'pragma' ? (tokens[2] === '.' ? tokens[3] : tokens[1])?.toLowerCase() : undefined;\n const readonlyPragma = first === 'pragma' && pragmaName !== undefined && safePragmas.has(pragmaName) && !tokens.includes('=');\n return !tokens.includes(';') && (operationOf(tokens) === 'select' || readonlyPragma);\n}\n\nfunction needsWriteFence(sql: string, unrelatedWrites: ReadonlySet<string>): boolean {\n const tokens = [...sql.matchAll(lexemes)].map(([token = '']) => token).filter((token) => !/^(?:\\s|--|\\/\\*)/.test(token));\n if (tokens.at(-1) === ';') tokens.pop();\n if (tokens.includes(';')) return true;\n let index = 0;\n const word = () => tokens[index]?.toLowerCase();\n const operation = word();\n if (operation !== 'insert' && operation !== 'update' && operation !== 'delete') return true;\n index++;\n if ((operation === 'insert' || operation === 'update') && word() === 'or') {\n index++;\n if (!['rollback', 'abort', 'replace', 'fail', 'ignore'].includes(word() ?? '')) return true;\n index++;\n }\n if (operation === 'insert') { if (word() !== 'into') return true; index++; }\n if (operation === 'delete') { if (word() !== 'from') return true; index++; }\n const identifier = (token: string | undefined): string | null => {\n if (!token) return null;\n if (/^[A-Za-z_][A-Za-z0-9_$]*$/.test(token)) return token.toLowerCase();\n if (/^\"[A-Za-z_][A-Za-z0-9_$]*\"$/.test(token) || /^`[A-Za-z_][A-Za-z0-9_$]*`$/.test(token) || /^\\[[A-Za-z_][A-Za-z0-9_$]*\\]$/.test(token)) return token.slice(1, -1).toLowerCase();\n return null;\n };\n let target = identifier(tokens[index++]);\n if (tokens[index] === '.') {\n if (target !== 'main') return true;\n index++;\n target = identifier(tokens[index++]);\n }\n if (!target || !unrelatedWrites.has(target)) return true;\n if (operation === 'update' && word() !== 'set') return true;\n if (operation === 'delete' && !['where', 'returning'].includes(word() ?? '') && index !== tokens.length) return true;\n return false;\n}\n\nexport function fenceD1Writes(db: D1Database, options: { store: CacheStore; generation: string; policy: D1WritePolicy }): D1Database {\n const { generation, policy } = options;\n const store = boundedD1Store(options.store);\n const unrelatedWrites = new Set(policy.unfencedWriteTables.map((name) => name.toLowerCase()));\n if (!generation) throw new TypeError('cache generation is required');\n const statements = new WeakMap<D1PreparedStatement, { raw: D1PreparedStatement; fence: boolean }>();\n const withWrite = async <T>(operation: () => Promise<T>): Promise<T> => {\n const token = crypto.randomUUID();\n try {\n await store.beginWrite({ fences: fence, generation, leaseMs: 600000, token });\n } catch (error) {\n await store.endWrite({ fences: fence, token }).catch(() => undefined);\n throw new CacheUnavailableError(error);\n }\n try { return await operation(); }\n finally { await store.endWrite({ fences: fence, token }).catch(() => undefined); }\n };\n const wrapStatement = (raw: D1PreparedStatement, sql: string): D1PreparedStatement => {\n const requiresFence = !isReadonly(sql) && needsWriteFence(sql, unrelatedWrites);\n const execute = <T>(operation: () => Promise<T>): Promise<T> => requiresFence ? withWrite(operation) : operation();\n function rawRows<T = unknown[]>(rawOptions: { columnNames: true }): Promise<[string[], ...T[]]>;\n function rawRows<T = unknown[]>(rawOptions?: { columnNames?: false }): Promise<T[]>;\n function rawRows<T = unknown[]>(rawOptions?: { columnNames?: boolean }): Promise<T[] | [string[], ...T[]]> {\n return execute<T[] | [string[], ...T[]]>(() => rawOptions?.columnNames === true ? raw.raw<T>({ columnNames: true }) : raw.raw<T>(rawOptions?.columnNames === false ? { columnNames: false } : undefined));\n }\n const wrapped: D1PreparedStatement = {\n bind: (...next) => wrapStatement(raw.bind(...next), sql),\n first: <T = Record<string, unknown>>(column?: string): Promise<T | null> => execute(() => column === undefined ? raw.first<T>() : raw.first<T>(column)),\n all: <T = Record<string, unknown>>(): Promise<D1Result<T>> => execute(() => raw.all<T>()),\n run: <T = Record<string, unknown>>(): Promise<D1Result<T>> => execute(() => raw.run<T>()),\n raw: rawRows,\n };\n statements.set(wrapped, { raw, fence: requiresFence });\n return wrapped;\n };\n const batch = <T>(target: D1Database | D1DatabaseSession, items: D1PreparedStatement[]): Promise<D1Result<T>[]> => {\n const resolved = items.map((item) => statements.get(item));\n const raw = items.map((item, index) => resolved[index]?.raw ?? item);\n const operation = () => target.batch<T>(raw);\n return resolved.every((item) => item !== undefined && !item.fence) ? operation() : withWrite(operation);\n };\n return {\n prepare: (sql) => wrapStatement(db.prepare(sql), sql),\n batch: <T = unknown>(items: D1PreparedStatement[]) => batch<T>(db, items),\n exec: (sql) => isReadonly(sql) || !needsWriteFence(sql, unrelatedWrites) ? db.exec(sql) : withWrite(() => db.exec(sql)),\n dump: () => db.dump(),\n withSession: (constraint) => {\n const session = db.withSession(constraint);\n return {\n prepare: (sql) => wrapStatement(session.prepare(sql), sql),\n batch: <T = unknown>(items: D1PreparedStatement[]) => batch<T>(session, items),\n getBookmark: () => session.getBookmark(),\n };\n },\n };\n}\n","import { createDurableObjectStore } from '../cloudflare/store';\nimport type { CoordinatorLocationHint } from '../cloudflare/store-options';\nimport type { CacheCoordinator } from '../cloudflare/coordinator';\nimport { fenceD1Writes } from './adapter';\nimport { isD1BindingName, type D1CacheProfile } from './profile';\nimport { createCacheExtension } from '../core/extension';\nimport type { CacheStore, DecimalConstructor, GeneratedCacheConfig } from '../core/types';\nimport { sha256Hex, stableStringify } from '../core/codec';\nimport { boundedValue, dependencyRuntimes, inspect, sameSnapshots } from './read';\nimport { boundedD1Store } from './bounded-store';\nimport { regionalKey, regionalRead, regionalWrite } from './regional';\nimport { limitRegionalDataUntil } from './regional-deadline';\nimport { readTargets } from '../core/targets';\n\nconst uuid = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;\nconst hints = new Set(['wnam', 'enam', 'sam', 'weur', 'eeur', 'apac', 'oc', 'afr', 'me']);\nconst wrapped = new WeakMap<object, WeakMap<D1Database, Map<string, D1Database>>>();\nexport interface D1CacheRuntime { store: CacheStore; generation: string; databaseId: string; readsEnabled: boolean; readModels: readonly string[]; coordinatorIdentity: object; coordinatorName: string; regionalIdentity?: string }\nconst runtimes = new WeakMap<object, D1CacheRuntime>();\nexport const d1CacheRuntime = (database: object): D1CacheRuntime | undefined => runtimes.get(database);\nexport function createD1CacheRuntime(database: D1Database, options: { store: CacheStore; databaseId: string; generation: string; readsEnabled?: boolean; profile: D1CacheProfile; coordinatorIdentity?: object; coordinatorName?: string; regionalIdentity?: string }): D1Database {\n const { generation, databaseId, profile, readsEnabled = true } = options;\n const store = boundedD1Store(options.store);\n const fenced = fenceD1Writes(database, { store, generation, policy: profile });\n runtimes.set(fenced, { store, generation, databaseId, readsEnabled, readModels: profile.readModels, coordinatorIdentity: options.coordinatorIdentity ?? options.store, coordinatorName: options.coordinatorName ?? '', regionalIdentity: options.regionalIdentity });\n return fenced;\n}\n\nexport function cacheD1Env<T extends object>(env: T, profile: D1CacheProfile): T {\n const value = (suffix: string): unknown => Reflect.get(env, `${profile.envPrefix}_${suffix}`);\n const enabled = value('ENABLED');\n if (enabled === undefined || enabled === 'false') return env;\n if (enabled !== 'true') throw new Error(`Invalid ${profile.envPrefix}_ENABLED`);\n const reads = value('READS_ENABLED');\n if (reads !== undefined && reads !== 'true' && reads !== 'false') throw new Error(`Invalid ${profile.envPrefix}_READS_ENABLED`);\n const readsEnabled = reads !== 'false';\n const namespace = value('COORDINATOR');\n const rawIds = value('DATABASE_IDS');\n const generation = value('GENERATION');\n if (!namespace || typeof namespace !== 'object' || typeof Reflect.get(namespace, 'idFromName') !== 'function' || typeof Reflect.get(namespace, 'get') !== 'function' || typeof rawIds !== 'string' || typeof generation !== 'string' || !generation.trim())\n throw new Error(`${profile.envPrefix} requires coordinator, database identities and generation`);\n if (generation.length > 256) throw new Error(`Invalid ${profile.envPrefix}_GENERATION`);\n let ids: unknown;\n try { ids = JSON.parse(rawIds); } catch { throw new Error(`Invalid ${profile.envPrefix}_DATABASE_IDS`); }\n if (!ids || typeof ids !== 'object' || Array.isArray(ids)) throw new Error(`Invalid ${profile.envPrefix}_DATABASE_IDS`);\n const map = Object.entries(ids);\n if (map.some(([key, id]) => !isD1BindingName(key, profile) || typeof id !== 'string' || !uuid.test(id))) throw new Error('Invalid cache database identity');\n const locationHint = value('LOCATION_HINT') ?? 'weur';\n if (typeof locationHint !== 'string' || !hints.has(locationHint)) throw new Error(`Invalid ${profile.envPrefix}_LOCATION_HINT`);\n const identities = new Map(map);\n const scoped = { ...env };\n for (const name of profile.bindingNames) if (!Reflect.has(env, name)) throw new Error(`Cache missing D1 binding: ${name}`);\n for (const [key, database] of Object.entries(env)) {\n if (profile.bindingPrefixes.some((prefix) => key.startsWith(prefix)) && !isD1BindingName(key, profile)) throw new Error(`Invalid cache binding: ${key}`);\n if (!isD1BindingName(key, profile)) continue;\n const id = identities.get(key);\n if (typeof id !== 'string' || !database || typeof database.prepare !== 'function') throw new Error(`Cache missing D1 identity or binding: ${key}`);\n const databaseId = id.toLowerCase();\n const cacheKey = JSON.stringify([databaseId, generation, locationHint, readsEnabled, profile]);\n let databases = wrapped.get(namespace);\n if (!databases) { databases = new WeakMap(); wrapped.set(namespace, databases); }\n let versions = databases.get(database);\n if (!versions) { versions = new Map(); databases.set(database, versions); }\n let cached = versions.get(cacheKey);\n if (!cached) {\n const coordinatorName = `${profile.coordinatorNamePrefix}${databaseId}`;\n const store = createDurableObjectStore(namespace as DurableObjectNamespace<CacheCoordinator>, { name: coordinatorName, locationHint: locationHint as CoordinatorLocationHint });\n cached = createD1CacheRuntime(database, { store, generation, databaseId, readsEnabled, profile, coordinatorIdentity: namespace, coordinatorName, regionalIdentity: (namespace as DurableObjectNamespace<CacheCoordinator>).idFromName(coordinatorName).toString() });\n versions.set(cacheKey, cached);\n }\n Reflect.set(scoped, key, cached);\n }\n return scoped;\n}\n\nexport function wrapD1Handler<Event, Env extends object, Context, Result>(handler: (event: Event, env: Env, context: Context) => Result, profile: D1CacheProfile): (event: Event, env: Env, context: Context) => Result {\n return (event, env, context) => handler(event, cacheD1Env(env, profile), context);\n}\n\nexport interface D1PrismaCacheOptions {\n scope: unknown;\n dependencies?: readonly D1Database[];\n keyArgs?: (args: unknown) => unknown;\n regionalTtlMs?: number;\n regionalModels?: readonly string[];\n}\n\nexport function d1PrismaCacheExtension(database: object, config: GeneratedCacheConfig, optionsOrDecimal?: D1PrismaCacheOptions | DecimalConstructor, decimalArg?: DecimalConstructor): ReturnType<typeof createCacheExtension> | undefined {\n const runtime = runtimes.get(database);\n if (!runtime || !runtime.readsEnabled) return undefined;\n const options = typeof optionsOrDecimal === 'function' ? undefined : optionsOrDecimal;\n const decimal = typeof optionsOrDecimal === 'function' ? optionsOrDecimal : decimalArg;\n const allowed = new Set(runtime.readModels);\n const scopedConfig = { ...config, cacheableByModel: Object.fromEntries(Object.entries(config.cacheableByModel).map(([model, enabled]) => [model, enabled && allowed.has(model)])) };\n const common = { config: scopedConfig, store: runtime.store, generation: runtime.generation, coordinationGeneration: runtime.generation, ...(decimal ? { decimal } : {}), ...(options?.keyArgs ? { keyArgs: options.keyArgs } : {}) };\n const base = createCacheExtension({ ...common, scope: runtime.databaseId });\n if (!options) return base;\n const operation = base.query.$allModels.$allOperations;\n return {\n ...base,\n query: { $allModels: { async $allOperations(params: Parameters<typeof operation>[0]) {\n if (!params.model || !allowed.has(params.model) || !['findUnique', 'findUniqueOrThrow', 'findFirst', 'findFirstOrThrow', 'findMany', 'count', 'aggregate', 'groupBy'].includes(params.operation)) return operation(params);\n if (options.scope === null || options.scope === undefined || !boundedValue(options.scope, 32_768, true) || (options.dependencies?.length ?? 0) > 32) return params.query(params.args);\n const dependencies = dependencyRuntimes(database, options.dependencies ?? []);\n if (!dependencies) return params.query(params.args);\n const internal = params.__internalParams;\n const dataPath = internal && typeof internal === 'object' && Array.isArray(Reflect.get(internal, 'dataPath')) ? Reflect.get(internal, 'dataPath') : [];\n const transaction: unknown = internal && typeof internal === 'object' ? Reflect.get(internal, 'transaction') : undefined;\n const inBatch = !!transaction && typeof transaction === 'object' && Reflect.get(transaction, 'kind') === 'batch';\n let regional: string | null = null;\n let normalizedArgs: unknown;\n let normalized = false;\n try {\n const identities = [runtime, ...dependencies].map((item) => [item.databaseId, item.generation, item.coordinatorName, item.regionalIdentity]);\n const targets = options.regionalModels ? readTargets(config.relationGraph, params.model, params.args) : undefined;\n const allowedTargets = !options.regionalModels || (!!targets && [...targets.models].every((model) => options.regionalModels?.includes(model)));\n if (options.regionalTtlMs && options.regionalTtlMs > 0 && options.regionalTtlMs <= 5000 && !inBatch && allowedTargets && identities.every((item) => item[3])) {\n normalizedArgs = options.keyArgs ? options.keyArgs(params.args) : params.args;\n normalized = true;\n const configDigest = await sha256Hex(stableStringify(config));\n regional = await regionalKey(options.regionalTtlMs, ['prisma', options.regionalTtlMs, identities, configDigest, options.scope, params.model, params.operation, dataPath, normalizedArgs ?? null]);\n }\n } catch { /* Key callbacks use the strict path on failure. */ }\n const hit = await regionalRead(regional, options.regionalTtlMs, decimal);\n if (hit) { limitRegionalDataUntil(hit.expires); return hit.value; }\n let started = Date.now();\n const snapshot = await inspect(dependencies);\n if (!snapshot) return params.query(params.args);\n let scope: string;\n try {\n scope = stableStringify([runtime.databaseId, runtime.generation, options.scope, snapshot.map(({ runtime: dependency, epoch }) => [dependency.databaseId, dependency.generation, epoch])]);\n if (new TextEncoder().encode(scope).byteLength > 32_768) return params.query(params.args);\n } catch { return params.query(params.args); }\n let verifiedHit = false;\n let verifiedWrite = false;\n let queried = false;\n const store: CacheStore = { ...runtime.store,\n async write(request) {\n const result = await runtime.store.write(request);\n verifiedWrite = result.ok;\n return result;\n },\n async read(request) {\n const result = await runtime.store.read(request);\n if (result.kind === 'hit' && !sameSnapshots(snapshot, await inspect(dependencies))) return { kind: 'miss', epochs: result.epochs, lockHeldForMs: null, lockToken: null, pending: true };\n if (result.kind === 'hit') verifiedHit = true;\n return result;\n } };\n const scoped = createCacheExtension({ ...common, store, scope, ...(normalized ? { keyArgs: () => normalizedArgs } : {}) });\n const value = await scoped.query.$allModels.$allOperations({ ...params, query: async (args) => {\n queried = true;\n started = Date.now();\n return params.query(args);\n } });\n if (regional && ((!queried && verifiedHit) || verifiedWrite) && sameSnapshots(snapshot, await inspect(dependencies))) await regionalWrite(regional, options.regionalTtlMs, started, value);\n return value;\n } } },\n };\n}\n\nexport function withD1PrismaCache<Client extends object>(client: Client, database: object, config: GeneratedCacheConfig, optionsOrDecimal?: D1PrismaCacheOptions | DecimalConstructor, decimalArg?: DecimalConstructor): Client {\n const extension = d1PrismaCacheExtension(database, config, optionsOrDecimal, decimalArg);\n if (!extension) return client;\n const extend: unknown = Reflect.get(client, '$extends', client);\n if (typeof extend !== 'function') throw new TypeError('Prisma client must support $extends');\n const extended: unknown = Reflect.apply(extend, client, [extension]);\n if (!extended || typeof extended !== 'object') throw new TypeError('Prisma extension returned no client');\n return new Proxy(client, {\n get(target, property) {\n const source = property === '$on' ? target : extended;\n const member: unknown = Reflect.get(source, property, source);\n return typeof member === 'function' ? member.bind(source) : member;\n },\n });\n}\n","import { boundedValue } from '../core/bounded-value';\nimport type { D1Database } from '@cloudflare/workers-types';\nimport { decode, encode, sha256Hex, stableStringify } from '../core/codec';\nimport { MAX_VALUE_BYTES } from '../core/limits';\nimport { d1CacheRuntime, type D1CacheRuntime } from './env';\nimport { regionalKey, regionalRead, regionalWrite } from './regional';\nimport { limitRegionalDataUntil } from './regional-deadline';\n\nconst FENCES = ['g'];\nconst DEFAULT_TTL_MS = 30_000;\nconst MAX_TTL_MS = 300_000;\nconst MAX_IDENTITY_BYTES = 32_768;\nconst MAX_VALUE_SIZE = Math.min(1_500_000, MAX_VALUE_BYTES);\n\nexport interface D1ReadOptions<T> {\n key: unknown;\n scope: unknown;\n dependencies?: readonly D1Database[];\n ttlMs?: number;\n regionalTtlMs?: number;\n cacheable?: (value: T) => boolean;\n}\n\nexport { boundedValue } from '../core/bounded-value';\n\nexport interface Snapshot { runtime: D1CacheRuntime; epoch: number }\nexport function sameD1CacheDatabase(left: object, right: object): boolean {\n const a = d1CacheRuntime(left);\n const b = d1CacheRuntime(right);\n return !!a && !!b && a.databaseId === b.databaseId && a.generation === b.generation && a.coordinatorIdentity === b.coordinatorIdentity && a.coordinatorName === b.coordinatorName;\n}\nexport async function d1CacheEpoch(database: object): Promise<string | null> {\n const runtime = d1CacheRuntime(database);\n if (!runtime || !runtime.readsEnabled) return null;\n const snapshot = await inspect([runtime]);\n if (!snapshot?.[0]) return null;\n return stableStringify([runtime.databaseId, runtime.generation, snapshot[0].epoch]);\n}\nexport async function inspect(runtimes: readonly D1CacheRuntime[]): Promise<Snapshot[] | null> {\n if (runtimes.length === 0) return [];\n try {\n const states = await Promise.all(runtimes.map(async (runtime) => {\n if (!runtime.store.inspectFences) return null;\n const state = await runtime.store.inspectFences({ fences: FENCES, generation: runtime.generation });\n const epoch = state.epochs.g;\n if (state.pending !== false || typeof epoch !== 'number' || !Number.isSafeInteger(epoch) || epoch < 0) return null;\n return { runtime, epoch };\n }));\n return states.some((state) => state === null) ? null : states.filter((state): state is Snapshot => state !== null);\n } catch { return null; }\n}\n\nexport const sameSnapshots = (a: readonly Snapshot[], b: readonly Snapshot[] | null): boolean =>\n b !== null && a.length === b.length && a.every((item, index) => item.runtime.databaseId === b[index]?.runtime.databaseId && item.runtime.generation === b[index]?.runtime.generation && item.epoch === b[index]?.epoch);\n\nexport function dependencyRuntimes(database: object, dependencies: readonly object[]): D1CacheRuntime[] | null {\n if (dependencies.length > 32) return null;\n const primary = d1CacheRuntime(database);\n if (!primary || !primary.readsEnabled) return null;\n const byId = new Map<string, D1CacheRuntime>();\n for (const dependency of dependencies) {\n const runtime = d1CacheRuntime(dependency);\n if (!runtime || !runtime.readsEnabled) return null;\n const prior = runtime.databaseId === primary.databaseId ? primary : byId.get(runtime.databaseId);\n if (prior && (prior.generation !== runtime.generation || prior.coordinatorIdentity !== runtime.coordinatorIdentity || prior.coordinatorName !== runtime.coordinatorName)) return null;\n if (runtime.databaseId === primary.databaseId) continue;\n if (!runtime.store.inspectFences) return null;\n byId.set(runtime.databaseId, prior ?? runtime);\n }\n return [...byId.values()].sort((a, b) => a.databaseId.localeCompare(b.databaseId));\n}\n\nexport async function cacheD1Read<T>(database: D1Database, options: D1ReadOptions<T>, load: () => Promise<T>): Promise<T> {\n const primary = d1CacheRuntime(database);\n const ttl = options.ttlMs ?? DEFAULT_TTL_MS;\n if (!primary || !primary.readsEnabled || !Number.isFinite(ttl) || ttl <= 0 || ttl > MAX_TTL_MS || options.scope === undefined || options.scope === null || !boundedValue(options.scope, MAX_IDENTITY_BYTES, true) || !boundedValue(options.key, MAX_IDENTITY_BYTES, true)) return load();\n const runtimes = dependencyRuntimes(database, options.dependencies ?? []);\n if (!runtimes) return load();\n const regionalIdentities = [primary, ...runtimes].map((runtime) => [runtime.databaseId, runtime.generation, runtime.coordinatorName, runtime.regionalIdentity]);\n const regional = regionalIdentities.every((identity) => identity[3])\n ? await regionalKey(options.regionalTtlMs, ['d1-read', options.regionalTtlMs, regionalIdentities, options.scope, options.key]) : null;\n const hit = await regionalRead(regional, options.regionalTtlMs);\n if (hit) { limitRegionalDataUntil(hit.expires); return hit.value as T; }\n const started = Date.now();\n const snapshot = await inspect(runtimes);\n if (!snapshot) return load();\n let key: string;\n try {\n const identity = stableStringify(['d1-read-v1', primary.databaseId, primary.generation, options.scope, options.key, snapshot.map(({ runtime, epoch }) => [runtime.databaseId, runtime.generation, epoch])]);\n if (new TextEncoder().encode(identity).byteLength > MAX_IDENTITY_BYTES) return load();\n key = `d1:${await sha256Hex(identity)}`;\n } catch { return load(); }\n let result;\n try { result = await primary.store.read({ key, fences: FENCES, generation: primary.generation, lockMs: 30_000, refresh: false }); }\n catch { return load(); }\n if (result.kind === 'hit') {\n try {\n const value: unknown = decode(JSON.parse(result.value));\n if (boundedValue(value, MAX_VALUE_SIZE, false) && sameSnapshots(snapshot, await inspect(runtimes))) {\n await regionalWrite(regional, options.regionalTtlMs, started, value);\n return value as T;\n }\n } catch { /* Invalid cached values are read from the source. */ }\n return load();\n }\n if (!result.lockToken || result.pending) return load();\n const lockToken = result.lockToken;\n try {\n const value = await load();\n try {\n if (value !== null && value !== undefined && boundedValue(value, MAX_VALUE_SIZE, false) && (options.cacheable?.(value) ?? true)) {\n const text = JSON.stringify(encode(value));\n if (new TextEncoder().encode(text).byteLength <= MAX_VALUE_SIZE && sameSnapshots(snapshot, await inspect(runtimes))) {\n const written = await primary.store.write({ key, lockToken, snapshot: result.epochs, ttlMs: ttl, softTtlMs: ttl, value: text });\n if (regional && written.ok && sameSnapshots(snapshot, await inspect(runtimes))) await regionalWrite(regional, options.regionalTtlMs, started, value);\n }\n }\n } catch { /* The source result remains authoritative when caching fails. */ }\n return value;\n } finally {\n try { await primary.store.release({ key, lockToken }); } catch { /* The lock expires if the coordinator cannot be reached. */ }\n }\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/cloudflare/retry.ts","../src/cloudflare/store-options.ts","../src/cloudflare/store.ts","../src/d1/deadline.ts","../src/d1/bounded-store.ts"],"names":[],"mappings":"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","file":"chunk-OOPPXK7Q.js","sourcesContent":["const BASE_BACKOFF_MS = 50;\n\nexport const isRetryable = (error: unknown): boolean =>\n !!error && typeof error === \"object\" && Reflect.get(error, \"retryable\") === true && Reflect.get(error, \"overloaded\") !== true;\n\nexport async function retryTransient<T>(call: () => Promise<T>, attempts: number, sleep: (ms: number) => Promise<void>): Promise<T> {\n for (let attempt = 0; ; attempt++) {\n try {\n return await call();\n } catch (error) {\n if (attempt + 1 >= attempts || !isRetryable(error)) throw error;\n await sleep(BASE_BACKOFF_MS * Math.random() * 2 ** attempt);\n }\n }\n}\n","export const WRITE_PATH_ATTEMPTS = 3;\nexport const MAX_COORDINATOR_NAME_LENGTH = 256;\n\nexport const LOCATION_HINTS = [\"wnam\", \"enam\", \"sam\", \"weur\", \"eeur\", \"apac\", \"oc\", \"afr\", \"me\"] as const;\n\nexport type CoordinatorLocationHint = (typeof LOCATION_HINTS)[number];\n\nexport interface DurableObjectStoreOptions {\n attempts?: number;\n locationHint?: CoordinatorLocationHint;\n name: string;\n sleep?: (ms: number) => Promise<void>;\n}\n\nexport interface ResolvedStoreOptions {\n attempts: number;\n locationHint?: CoordinatorLocationHint;\n name: string;\n sleep: (ms: number) => Promise<void>;\n}\n\nconst isLocationHint = (value: unknown): value is CoordinatorLocationHint =>\n LOCATION_HINTS.some((hint) => hint === value);\n\nexport function resolveStoreOptions(options: DurableObjectStoreOptions): ResolvedStoreOptions {\n const { attempts = WRITE_PATH_ATTEMPTS, locationHint, name } = options;\n const problems = [\n !(typeof name === \"string\" && name.length > 0 && name.length <= MAX_COORDINATOR_NAME_LENGTH) &&\n `name must be 1..${MAX_COORDINATOR_NAME_LENGTH} characters and identify one D1 database`,\n !(Number.isInteger(attempts) && attempts >= 1 && attempts <= 10) && \"attempts must be an integer in 1..10\",\n locationHint !== undefined && !isLocationHint(locationHint) && `locationHint must be one of ${LOCATION_HINTS.join(\", \")}`,\n ].filter((problem): problem is string => typeof problem === \"string\");\n if (problems.length > 0) throw new TypeError(`cache store: ${problems.join(\"; \")}`);\n return {\n attempts,\n name,\n sleep: options.sleep ?? ((ms: number) => new Promise<void>((resolve) => setTimeout(resolve, ms))),\n ...(locationHint ? { locationHint } : {}),\n };\n}\n","import type { CacheStore } from \"../core/types\";\nimport type { CacheCoordinator } from \"./coordinator\";\n\nimport { retryTransient } from \"./retry\";\nimport { type DurableObjectStoreOptions, resolveStoreOptions } from \"./store-options\";\n\nexport function createDurableObjectStore<Env>(\n namespace: DurableObjectNamespace<CacheCoordinator<Env>>,\n options: DurableObjectStoreOptions,\n): CacheStore {\n const { attempts, locationHint, name, sleep } = resolveStoreOptions(options);\n const stub = () => namespace.get(namespace.idFromName(name), locationHint ? { locationHint } : undefined);\n const withRetry = <T>(call: (coordinator: ReturnType<typeof stub>) => Promise<T>): Promise<T> =>\n retryTransient(() => call(stub()), attempts, sleep);\n\n return {\n inspectFences: async (request) => stub().inspectFences(request),\n beginWrite: (request) => withRetry(async (coordinator) => void (await coordinator.beginWrite(request))),\n endWrite: (request) => withRetry(async (coordinator) => void (await coordinator.endWrite(request))),\n invalidate: (fences) => withRetry(async (coordinator) => void (await coordinator.invalidate(fences))),\n read: async (request) => stub().read(request),\n release: async (request) => void (await stub().release(request)),\n write: async (request) => stub().write(request),\n };\n}\n","const COORDINATOR_TIMEOUT_MS = 2_000;\n\nexport async function withinCoordinatorDeadline<T>(work: Promise<T>): Promise<T> {\n let timer: ReturnType<typeof setTimeout> | undefined;\n try {\n return await Promise.race([work, new Promise<never>((_, reject) => { timer = setTimeout(() => reject(new Error('cache coordinator timeout')), COORDINATOR_TIMEOUT_MS); })]);\n } finally { if (timer !== undefined) clearTimeout(timer); }\n}\n","import type { CacheStore, EndWriteRequest } from '../core/types';\nimport { withinCoordinatorDeadline } from './deadline';\n\nconst boundedStores = new WeakMap<CacheStore, CacheStore>();\n\nexport function boundedD1Store(store: CacheStore): CacheStore {\n const existing = boundedStores.get(store);\n if (existing) return existing;\n const failedBegins = new Set<string>();\n const inspectFences = store.inspectFences;\n const endWrite = async (request: EndWriteRequest): Promise<void> => {\n let active = true;\n try {\n await withinCoordinatorDeadline((async () => {\n for (let attempt = 0; ; attempt++) {\n try { await store.endWrite(request); return; }\n catch (error) { if (!active || attempt === 1) throw error; }\n }\n })());\n } finally { active = false; }\n };\n const bounded: CacheStore = {\n ...store,\n ...(inspectFences ? { inspectFences: (request: Parameters<typeof inspectFences>[0]) => withinCoordinatorDeadline(Promise.resolve().then(() => inspectFences.call(store, request))) } : {}),\n async read(request) {\n const pending = Promise.resolve().then(() => store.read(request));\n try { return await withinCoordinatorDeadline(pending); }\n catch (error) {\n void pending.then((result) => {\n const token = result.kind === 'miss' ? result.lockToken : result.refreshToken;\n if (token) return bounded.release({ key: request.key, lockToken: token });\n return undefined;\n }).catch(() => undefined);\n throw error;\n }\n },\n write: (request) => withinCoordinatorDeadline(Promise.resolve().then(() => store.write(request))),\n release: (request) => withinCoordinatorDeadline(Promise.resolve().then(() => store.release(request))),\n async beginWrite(request) {\n const begin = Promise.resolve().then(() => store.beginWrite(request));\n try { await withinCoordinatorDeadline(begin); }\n catch (error) {\n failedBegins.add(request.token);\n void begin.then(\n () => endWrite({ fences: request.fences, token: request.token }),\n () => endWrite({ fences: request.fences, token: request.token }),\n ).catch(() => undefined);\n throw error;\n }\n },\n async endWrite(request) {\n if (failedBegins.delete(request.token)) return;\n await endWrite(request);\n },\n invalidate: (fences) => withinCoordinatorDeadline(Promise.resolve().then(() => store.invalidate(fences))),\n };\n boundedStores.set(store, bounded);\n boundedStores.set(bounded, bounded);\n return bounded;\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/core/pk.ts","../src/core/plan.ts","../src/core/shape.ts","../src/core/targets.ts","../src/core/extension.ts"],"names":[],"mappings":"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","file":"chunk-ZREX7LLC.js","sourcesContent":["export type PkValue = number | string;\n\nexport function isPlainRecord(value: unknown): value is Record<string, unknown> {\n return !!value && typeof value === \"object\" && !Array.isArray(value);\n}\n\nexport function encodePk(parts: ReadonlyArray<PkValue>): string {\n return parts.map((part) => encodeURIComponent(String(part))).join(\":\");\n}\n\nfunction unwrapEquals(value: unknown): unknown {\n return isPlainRecord(value) && \"equals\" in value ? value.equals : value;\n}\n\nfunction isScalarPk(value: unknown): value is PkValue {\n return typeof value === \"string\" || (typeof value === \"number\" && Number.isFinite(value));\n}\n\nexport function pkFromWhere(where: unknown, pkFields: string[], compoundName?: string): null | string {\n if (!isPlainRecord(where)) return null;\n const compound = where[compoundName ?? pkFields.join(\"_\")];\n const source = pkFields.length > 1 && isPlainRecord(compound) ? compound : where;\n const parts: PkValue[] = [];\n for (const field of pkFields) {\n const value = source === where ? unwrapEquals(where[field]) : source[field];\n if (!isScalarPk(value)) return null;\n parts.push(value);\n }\n return encodePk(parts);\n}\n\nexport function pkFromRow(row: unknown, pkFields: string[]): null | string {\n if (!isPlainRecord(row)) return null;\n const parts: PkValue[] = [];\n for (const field of pkFields) {\n const value = row[field];\n if (!isScalarPk(value)) return null;\n parts.push(value);\n }\n return encodePk(parts);\n}\n","import type { GeneratedCacheConfig, InvalidationTarget, RelationInfo } from \"./types\";\n\nimport { entityFence, GLOBAL_FENCE, modelFence, writeFence } from \"./fences\";\nimport { isPlainRecord, pkFromRow, pkFromWhere } from \"./pk\";\n\nexport const MAX_NESTED_WRITE_DEPTH = 5;\nexport const MAX_ENTITY_FENCES_PER_MODEL = 100;\n\nexport const READ_OPERATIONS = new Set([\"aggregate\", \"count\", \"findFirst\", \"findFirstOrThrow\", \"findMany\", \"findUnique\", \"findUniqueOrThrow\", \"groupBy\"]);\n\nexport const WRITE_OPERATIONS = new Set([\n \"create\",\n \"createMany\",\n \"createManyAndReturn\",\n \"delete\",\n \"deleteMany\",\n \"update\",\n \"updateMany\",\n \"updateManyAndReturn\",\n \"upsert\",\n]);\n\ninterface ModelTouch {\n pks: Set<string>;\n wide: boolean;\n}\n\nexport interface WritePlan {\n all: boolean;\n touched: Map<string, ModelTouch>;\n}\n\ninterface PlanContext {\n config: GeneratedCacheConfig;\n plan: WritePlan;\n}\n\nconst pkFieldsOf = (config: GeneratedCacheConfig, model: string): string[] => config.primaryKeyFieldsByModel[model] ?? [\"id\"];\n\nfunction touch(plan: WritePlan, model: string): ModelTouch {\n const existing = plan.touched.get(model);\n if (existing) return existing;\n const created: ModelTouch = { pks: new Set(), wide: false };\n plan.touched.set(model, created);\n return created;\n}\n\nconst touchWrite = (ctx: PlanContext, model: string): void => void touch(ctx.plan, model);\n\nconst touchWide = (ctx: PlanContext, model: string): void => void (touch(ctx.plan, model).wide = true);\n\nfunction touchEntity(ctx: PlanContext, model: string, where: unknown): void {\n const pk = pkFromWhere(where, pkFieldsOf(ctx.config, model), ctx.config.primaryKeyNameByModel[model]);\n if (pk === null) touchWide(ctx, model);\n else touch(ctx.plan, model).pks.add(pk);\n}\n\nfunction referencedFields(config: GeneratedCacheConfig, model: string): Set<string> {\n const fields = new Set<string>();\n for (const relations of Object.values(config.relationGraph)) {\n for (const relation of relations) {\n if (relation.targetModel === model && relation.localFields.length > 0) {\n for (const field of relation.foreignFields) fields.add(field);\n }\n }\n }\n return fields;\n}\n\nfunction touchReferencing(ctx: PlanContext, model: string, seen = new Set<string>()): void {\n if (seen.has(model)) return;\n seen.add(model);\n for (const [owner, relations] of Object.entries(ctx.config.relationGraph)) {\n const references = relations.some((relation) => relation.targetModel === model && relation.localFields.length > 0);\n if (!references) continue;\n touchWide(ctx, owner);\n touchReferencing(ctx, owner, seen);\n }\n}\n\nfunction touchReferencingIfKeyChanges(ctx: PlanContext, model: string, data: unknown): void {\n if (!isPlainRecord(data)) return;\n const referenced = referencedFields(ctx.config, model);\n if (Object.keys(data).some((field) => referenced.has(field))) touchReferencing(ctx, model);\n}\n\nconst asItems = (value: unknown): unknown[] => (Array.isArray(value) ? value : [value]);\n\nconst ONE_TO_ONE_REPARENTING_OPS = new Set([\"connect\", \"connectOrCreate\", \"create\", \"upsert\"]);\n\nconst FOREIGN_KEY_CHANGING_OPS = new Set([\"connect\", \"connectOrCreate\", \"create\", \"delete\", \"disconnect\", \"set\", \"upsert\"]);\n\nconst overlaps = (fields: string[], referenced: Set<string>): boolean => fields.some((field) => referenced.has(field));\n\nfunction widenIfForeignKeyReferenced(ctx: PlanContext, model: string, relation: RelationInfo): void {\n if (overlaps(relation.localFields, referencedFields(ctx.config, model))) touchReferencing(ctx, model);\n const opposite = (ctx.config.relationGraph[relation.targetModel] ?? []).find(\n (candidate) => candidate !== relation && candidate.relationName !== undefined && candidate.relationName === relation.relationName,\n );\n if (opposite && overlaps(opposite.localFields, referencedFields(ctx.config, relation.targetModel))) {\n touchReferencing(ctx, relation.targetModel);\n }\n}\n\nfunction nestedWrites(ctx: PlanContext, model: string, data: unknown, depth: number): void {\n if (!isPlainRecord(data)) return;\n for (const relation of ctx.config.relationGraph[model] ?? []) {\n const ops = data[relation.fieldName];\n if (!isPlainRecord(ops)) continue;\n const target = relation.targetModel;\n if (depth >= MAX_NESTED_WRITE_DEPTH) {\n ctx.plan.all = true;\n return;\n }\n touchWrite(ctx, target);\n const recurse = (value: unknown) => nestedWrites(ctx, target, value, depth + 1);\n for (const [op, value] of Object.entries(ops)) {\n const items = asItems(value);\n if (relation.oneToOne === true && ONE_TO_ONE_REPARENTING_OPS.has(op)) {\n touchWide(ctx, target);\n touchWide(ctx, model);\n }\n if (FOREIGN_KEY_CHANGING_OPS.has(op)) widenIfForeignKeyReferenced(ctx, model, relation);\n switch (op) {\n case \"create\":\n items.forEach(recurse);\n break;\n case \"createMany\":\n break;\n case \"connect\":\n items.forEach((item) => touchEntity(ctx, target, item));\n break;\n case \"connectOrCreate\":\n for (const item of items) {\n touchEntity(ctx, target, isPlainRecord(item) ? item.where : undefined);\n if (isPlainRecord(item)) recurse(item.create);\n }\n break;\n case \"disconnect\":\n items.forEach((item) => (isPlainRecord(item) ? touchEntity(ctx, target, item) : touchWide(ctx, target)));\n break;\n case \"delete\":\n items.forEach((item) => (isPlainRecord(item) ? touchEntity(ctx, target, item) : touchWide(ctx, target)));\n touchReferencing(ctx, target);\n break;\n case \"deleteMany\":\n touchWide(ctx, target);\n touchReferencing(ctx, target);\n break;\n case \"update\":\n case \"upsert\":\n for (const item of items) {\n const hasWhere = isPlainRecord(item) && \"where\" in item;\n if (hasWhere) touchEntity(ctx, target, item.where);\n else touchWide(ctx, target);\n const payloads = isPlainRecord(item) ? [item.data, item.create, item.update, hasWhere ? undefined : item] : [];\n for (const payload of payloads) {\n touchReferencingIfKeyChanges(ctx, target, payload);\n recurse(payload);\n }\n }\n break;\n default:\n touchWide(ctx, target);\n for (const item of items) if (isPlainRecord(item)) touchReferencingIfKeyChanges(ctx, target, item.data);\n }\n }\n }\n}\n\nexport function planWrite(config: GeneratedCacheConfig, model: string, operation: string, args: unknown): WritePlan {\n const ctx: PlanContext = { config, plan: { all: false, touched: new Map() } };\n const input = isPlainRecord(args) ? args : {};\n touchWrite(ctx, model);\n switch (operation) {\n case \"create\":\n nestedWrites(ctx, model, input.data, 0);\n break;\n case \"createMany\":\n case \"createManyAndReturn\":\n break;\n case \"update\":\n touchEntity(ctx, model, input.where);\n touchReferencingIfKeyChanges(ctx, model, input.data);\n nestedWrites(ctx, model, input.data, 0);\n break;\n case \"upsert\":\n touchEntity(ctx, model, input.where);\n touchReferencingIfKeyChanges(ctx, model, input.update);\n nestedWrites(ctx, model, input.create, 0);\n nestedWrites(ctx, model, input.update, 0);\n break;\n case \"delete\":\n touchEntity(ctx, model, input.where);\n touchReferencing(ctx, model);\n break;\n case \"deleteMany\":\n touchWide(ctx, model);\n touchReferencing(ctx, model);\n break;\n default:\n touchWide(ctx, model);\n touchReferencingIfKeyChanges(ctx, model, input.data);\n }\n return ctx.plan;\n}\n\nexport function planFences(plan: WritePlan): string[] {\n if (plan.all) return [GLOBAL_FENCE];\n const fences: string[] = [];\n for (const [model, { pks, wide }] of plan.touched) {\n fences.push(writeFence(model));\n if (wide || pks.size > MAX_ENTITY_FENCES_PER_MODEL) fences.push(modelFence(model));\n else for (const pk of pks) fences.push(entityFence(model, pk));\n }\n return fences;\n}\n\nexport function rawWritePlanFences(config: GeneratedCacheConfig, target: InvalidationTarget): string[] {\n if (\"all\" in target) return [GLOBAL_FENCE];\n const ctx: PlanContext = { config, plan: { all: false, touched: new Map() } };\n const known = new Set(config.modelNames);\n const models = \"models\" in target ? target.models : target.entities.map(({ model }) => model);\n const unknown = models.filter((model) => !known.has(model));\n if (unknown.length > 0) throw new TypeError(`cache invalidation: unknown models ${unknown.join(\", \")}`);\n if (\"models\" in target) target.models.forEach((model) => touchWide(ctx, model));\n else {\n for (const { model, pk } of target.entities) {\n const fields = pkFieldsOf(config, model);\n const encoded = pk.length === fields.length ? pkFromRow(Object.fromEntries(fields.map((field, i) => [field, pk[i]])), fields) : null;\n if (encoded === null) touchWide(ctx, model);\n else touch(ctx.plan, model).pks.add(encoded);\n }\n }\n models.forEach((model) => touchReferencing(ctx, model));\n return planFences(ctx.plan);\n}\n","import type { CacheExtensionOptions, CacheShape, ResolvedShape } from \"./types\";\n\nimport { MAX_SHAPE_TTL_SECONDS } from \"./limits\";\n\nexport const DEFAULT_SHAPE: ResolvedShape = { freshTtlSeconds: 3600, negativeTtlSeconds: 600, softTtlRatio: 0.8 };\n\nfunction validate(label: string, shape: CacheShape | undefined): void {\n if (!shape) return;\n for (const field of [\"freshTtlSeconds\", \"negativeTtlSeconds\"] as const) {\n const value = shape[field];\n if (value !== undefined && !(Number.isFinite(value) && value > 0 && value <= MAX_SHAPE_TTL_SECONDS)) {\n throw new TypeError(`cache shape ${label}: ${field} must be in (0, ${MAX_SHAPE_TTL_SECONDS}]`);\n }\n }\n const ratio = shape.softTtlRatio;\n if (ratio !== undefined && !(Number.isFinite(ratio) && ratio > 0 && ratio <= 1)) {\n throw new TypeError(`cache shape ${label}: softTtlRatio must be in (0, 1]`);\n }\n}\n\nexport function validateShapes(shape: CacheExtensionOptions[\"shape\"]): void {\n validate(\"default\", shape?.default);\n for (const [model, value] of Object.entries(shape?.byModel ?? {})) validate(`byModel.${model}`, value);\n}\n\nexport function resolveShape(shape: CacheExtensionOptions[\"shape\"], model: string): ResolvedShape {\n const pick = <K extends keyof ResolvedShape>(field: K): ResolvedShape[K] =>\n shape?.byModel?.[model]?.[field] ?? shape?.default?.[field] ?? DEFAULT_SHAPE[field];\n return { freshTtlSeconds: pick(\"freshTtlSeconds\"), negativeTtlSeconds: pick(\"negativeTtlSeconds\"), softTtlRatio: pick(\"softTtlRatio\") };\n}\n","import type { RelationInfo } from \"./types\";\n\nimport { isPlainRecord } from \"./pk\";\n\nexport const MAX_RELATION_DEPTH = 10;\n\nconst RELATION_FILTER_KEYS = [\"some\", \"every\", \"none\", \"is\", \"isNot\"];\nconst LOGICAL_KEYS = new Set([\"AND\", \"OR\", \"NOT\"]);\n\ntype Graph = Record<string, RelationInfo[]>;\n\nexport interface ReadTargets {\n models: Set<string>;\n relational: boolean;\n}\n\ninterface Walk {\n graph: Graph;\n out: ReadTargets;\n}\n\nfunction relationsOf(graph: Graph, model: string): Map<string, RelationInfo> {\n return new Map((graph[model] ?? []).map((relation) => [relation.fieldName, relation]));\n}\n\nfunction reach(walk: Walk, relation: RelationInfo): void {\n walk.out.models.add(relation.targetModel);\n walk.out.relational = true;\n}\n\nfunction walkFilter(walk: Walk, model: string, value: unknown, depth: number): boolean {\n if (depth > MAX_RELATION_DEPTH) return false;\n if (Array.isArray(value)) return value.every((item) => walkFilter(walk, model, item, depth + 1));\n if (!isPlainRecord(value)) return true;\n const relations = relationsOf(walk.graph, model);\n for (const [key, nested] of Object.entries(value)) {\n if (LOGICAL_KEYS.has(key)) {\n if (!walkFilter(walk, model, nested, depth + 1)) return false;\n continue;\n }\n const relation = relations.get(key);\n if (!relation) continue;\n reach(walk, relation);\n if (!isPlainRecord(nested)) continue;\n const wrapped = RELATION_FILTER_KEYS.filter((wrapper) => wrapper in nested);\n const inner = wrapped.length > 0 ? wrapped.map((wrapper) => nested[wrapper]) : [nested];\n if (!inner.every((item) => walkFilter(walk, relation.targetModel, item, depth + 1))) return false;\n }\n return true;\n}\n\nfunction walkCount(walk: Walk, model: string, count: unknown, depth: number): boolean {\n if (count === undefined) return true;\n const select = isPlainRecord(count) && isPlainRecord(count.select) ? count.select : null;\n for (const relation of walk.graph[model] ?? []) {\n const selected = select ? select[relation.fieldName] : count;\n if (!selected) continue;\n reach(walk, relation);\n if (isPlainRecord(selected) && !walkFilter(walk, relation.targetModel, selected.where, depth + 1)) return false;\n }\n return true;\n}\n\nfunction walkArgs(walk: Walk, model: string, args: unknown, depth: number): boolean {\n walk.out.models.add(model);\n if (!isPlainRecord(args)) return true;\n for (const filter of [args.where, args.orderBy, args.cursor]) {\n if (!walkFilter(walk, model, filter, depth)) return false;\n }\n for (const projection of [args.include, args.select]) {\n if (!isPlainRecord(projection)) continue;\n if (!walkCount(walk, model, projection._count, depth)) return false;\n for (const relation of walk.graph[model] ?? []) {\n const nested = projection[relation.fieldName];\n if (!nested) continue;\n reach(walk, relation);\n if (!walkArgs(walk, relation.targetModel, nested, depth + 1)) return false;\n }\n }\n return true;\n}\n\nexport function readTargets(graph: Graph, model: string, args: unknown): null | ReadTargets {\n const walk: Walk = { graph, out: { models: new Set(), relational: false } };\n return walkArgs(walk, model, args, 0) ? walk.out : null;\n}\n","import type { CacheExtensionOptions, InvalidationTarget, ReadResponse } from \"./types\";\n\nimport { decode, encode, sha256Hex, stableStringify } from \"./codec\";\nimport { entityFence, GLOBAL_FENCE, modelFence, writeFence } from \"./fences\";\nimport {\n CONFIG_FORMAT,\n MAX_GENERATION_LENGTH,\n MAX_LEASE_MS,\n MAX_LOCK_MS,\n MAX_VALUE_BYTES,\n PLANNER_VERSION,\n TTL_JITTER_RATIO,\n} from \"./limits\";\nimport { planFences, planWrite, rawWritePlanFences, READ_OPERATIONS, WRITE_OPERATIONS } from \"./plan\";\nimport { isPlainRecord, pkFromWhere } from \"./pk\";\nimport { resolveShape, validateShapes } from \"./shape\";\nimport { readTargets } from \"./targets\";\n\nexport class CacheUnavailableError extends Error {\n constructor(cause: unknown) {\n super(\"cache coordinator unavailable; the write was not executed\", { cause });\n this.name = \"CacheUnavailableError\";\n }\n}\n\nexport const DEFAULT_FILL_POLL_DELAYS_MS = [20, 40, 80, 160, 320, 640];\nexport const DEFAULT_LOCK_MS = 30_000;\nexport const DEFAULT_LEASE_MS = 60_000;\nexport const DEFAULT_MAX_VALUE_BYTES = 1_500_000;\n\ntype Query = (args: unknown) => Promise<unknown>;\n\ninterface OperationParams {\n __internalParams?: unknown;\n args: unknown;\n model?: string;\n operation: string;\n query: Query;\n}\n\ninterface ReadContext {\n args: unknown;\n entityFences: string[] | null;\n fences: string[];\n key: string;\n model: string;\n operation: string;\n query: Query;\n}\n\nconst sleep = (ms: number): Promise<void> => new Promise((resolve) => setTimeout(resolve, ms));\n\nconst pickEpochs = (epochs: Record<string, number>, fences: string[]): Record<string, number> =>\n Object.fromEntries(fences.map((fence) => [fence, epochs[fence] ?? 0]));\n\nconst isNegative = (value: unknown): boolean => value === null || (Array.isArray(value) && value.length === 0);\n\nconst sum = (values: number[]): number => values.reduce((total, value) => total + value, 0);\n\nfunction internalParams(params: OperationParams): { dataPath: unknown[]; inBatch: boolean } {\n const internal = isPlainRecord(params.__internalParams) ? params.__internalParams : {};\n const transaction = internal.transaction;\n return {\n dataPath: Array.isArray(internal.dataPath) ? internal.dataPath : [],\n inBatch: isPlainRecord(transaction) && transaction.kind === \"batch\",\n };\n}\n\nfunction validateOptions(options: CacheExtensionOptions): void {\n if (options.config.configFormat !== CONFIG_FORMAT) {\n throw new TypeError(\n `cache extension: generated config format ${String(options.config.configFormat)} does not match ${CONFIG_FORMAT}; run prisma generate`,\n );\n }\n const inRange = (value: number | undefined, max: number) => value === undefined || (Number.isFinite(value) && value > 0 && value <= max);\n const problems = [\n !inRange(options.lockMs, MAX_LOCK_MS) && `lockMs must be in (0, ${MAX_LOCK_MS}]`,\n !inRange(options.leaseMs, MAX_LEASE_MS) && `leaseMs must be in (0, ${MAX_LEASE_MS}]`,\n !inRange(options.maxValueBytes, MAX_VALUE_BYTES) && `maxValueBytes must be in (0, ${MAX_VALUE_BYTES}]`,\n options.fillPollDelaysMs?.some((delay) => !(Number.isFinite(delay) && delay >= 0)) && \"fillPollDelaysMs must be non-negative\",\n options.excludeModels?.some((model) => !options.config.modelNames.includes(model)) && \"excludeModels names an unknown model\",\n options.config.hasDecimalFields &&\n !options.decimal &&\n \"decimal is required because the schema has Decimal fields (pass Prisma.Decimal)\",\n options.generation !== undefined &&\n !(options.generation.length > 0 && options.generation.length <= MAX_GENERATION_LENGTH) &&\n `generation must be 1..${MAX_GENERATION_LENGTH} characters`,\n options.coordinationGeneration !== undefined &&\n !(options.coordinationGeneration.length > 0 && options.coordinationGeneration.length <= MAX_GENERATION_LENGTH) &&\n `coordinationGeneration must be 1..${MAX_GENERATION_LENGTH} characters`,\n ].filter((problem): problem is string => typeof problem === \"string\");\n if (problems.length > 0) throw new TypeError(`cache extension: ${problems.join(\"; \")}`);\n validateShapes(options.shape);\n}\n\nexport function createCacheExtension(options: CacheExtensionOptions) {\n validateOptions(options);\n const { config, store, unsafeTestHooks: hooks } = options;\n const enabled = options.enabled ?? true;\n const excluded = new Set(options.excludeModels ?? []);\n const scope = options.scope ?? \"\";\n const generation = options.coordinationGeneration ?? `${PLANNER_VERSION}/${config.cacheVersion}/${options.generation ?? \"\"}`;\n const pollDelays = options.fillPollDelaysMs ?? DEFAULT_FILL_POLL_DELAYS_MS;\n const lockMs = options.lockMs ?? DEFAULT_LOCK_MS;\n const leaseMs = options.leaseMs ?? DEFAULT_LEASE_MS;\n const maxValueBytes = options.maxValueBytes ?? DEFAULT_MAX_VALUE_BYTES;\n const report = (error: unknown, context: string): void => options.onError?.(error, context);\n\n const isCacheable = (model: string): boolean =>\n enabled && config.cacheableByModel[model] === true && !excluded.has(model);\n\n function readContext(model: string, operation: string, args: unknown, query: Query, key: string): ReadContext | null {\n const targets = readTargets(config.relationGraph, model, args);\n if (!targets || [...targets.models].some((target) => !isCacheable(target))) return null;\n const rootPk = operation.startsWith(\"findUnique\")\n ? pkFromWhere(\n isPlainRecord(args) ? args.where : undefined,\n config.primaryKeyFieldsByModel[model] ?? [\"id\"],\n config.primaryKeyNameByModel[model],\n )\n : null;\n const base = [GLOBAL_FENCE, modelFence(model)];\n const entity = rootPk === null ? null : entityFence(model, rootPk);\n const fences = [...base, ...[...targets.models].map(writeFence), ...(entity ? [entity] : [])];\n const entityFences = entity && !targets.relational ? [...base, entity] : null;\n return { args, entityFences, fences, key, model, operation, query };\n }\n\n const release = (key: string, lockToken: string): Promise<void> =>\n store.release({ key, lockToken }).catch((error) => report(error, \"release\"));\n\n function serialize(value: unknown): null | string {\n try {\n const serialized = JSON.stringify(encode(value));\n if (new TextEncoder().encode(serialized).byteLength <= maxValueBytes) return serialized;\n report(new Error(`cache value exceeds ${maxValueBytes} bytes`), \"serialize\");\n } catch (error) {\n report(error, \"serialize\");\n }\n return null;\n }\n\n async function fill(ctx: ReadContext, lockToken: string, epochs: Record<string, number>): Promise<unknown> {\n let value: unknown;\n try {\n value = await ctx.query(ctx.args);\n await hooks?.afterFillQuery?.();\n } catch (error) {\n await release(ctx.key, lockToken);\n throw error;\n }\n const serialized = serialize(value);\n if (serialized === null) {\n await release(ctx.key, lockToken);\n return value;\n }\n const shape = resolveShape(options.shape, ctx.model);\n const baseTtl = ctx.operation !== \"count\" && isNegative(value) ? shape.negativeTtlSeconds : shape.freshTtlSeconds;\n const ttlMs = Math.round(baseTtl * 1000 * (1 + Math.random() * TTL_JITTER_RATIO));\n const snapshotFences = ctx.entityFences && isPlainRecord(value) ? ctx.entityFences : ctx.fences;\n try {\n const result = await store.write({\n key: ctx.key,\n lockToken,\n snapshot: pickEpochs(epochs, snapshotFences),\n softTtlMs: Math.round(ttlMs * shape.softTtlRatio),\n ttlMs,\n value: serialized,\n });\n if (!result.ok) report(new Error(`cache write rejected: ${result.reason}`), \"write\");\n } catch (error) {\n report(error, \"write\");\n await release(ctx.key, lockToken);\n }\n return value;\n }\n\n async function scheduleRefresh(ctx: ReadContext, response: Extract<ReadResponse, { kind: \"hit\" }>): Promise<void> {\n const token = response.refreshToken;\n if (!token) return;\n if (!options.waitUntil) return release(ctx.key, token);\n try {\n options.waitUntil(fill(ctx, token, response.epochs).catch((error) => report(error, \"refresh\")));\n } catch (error) {\n report(error, \"waitUntil\");\n await release(ctx.key, token);\n }\n }\n\n async function handleRead(model: string, operation: string, args: unknown, query: Query, dataPath: unknown[]): Promise<unknown> {\n let key: string;\n try {\n const identity = [PLANNER_VERSION, config.cacheVersion, scope, model, operation, dataPath, (options.keyArgs ? options.keyArgs(args) : args) ?? null];\n key = `${model}:${await sha256Hex(stableStringify(identity))}`;\n } catch (error) {\n report(error, \"key\");\n return query(args);\n }\n const ctx = readContext(model, operation, args, query, key);\n if (!ctx) return query(args);\n for (let attempt = 0; ; attempt++) {\n let response: ReadResponse;\n try {\n response = await store.read({ fences: ctx.fences, generation, key, lockMs, refresh: !!options.waitUntil });\n } catch (error) {\n report(error, \"read\");\n return query(args);\n }\n if (response.kind === \"hit\") {\n let value: unknown;\n try {\n value = decode(JSON.parse(response.value), options.decimal);\n } catch (error) {\n report(error, \"decode\");\n if (response.refreshToken) await release(key, response.refreshToken);\n return query(args);\n }\n await scheduleRefresh(ctx, response);\n return value;\n }\n if (response.lockToken) return fill(ctx, response.lockToken, response.epochs);\n const delay = pollDelays[attempt];\n const holderTooSlow = response.lockHeldForMs !== null && response.lockHeldForMs > sum(pollDelays);\n if (response.pending || delay === undefined || holderTooSlow) return query(args);\n await sleep(delay);\n }\n }\n\n async function withLease<T>(fences: string[], run: () => Promise<T>): Promise<T> {\n const token = crypto.randomUUID();\n try {\n await store.beginWrite({ fences, generation, leaseMs, token });\n } catch (error) {\n report(error, \"beginWrite\");\n await endWrite(token, fences);\n throw new CacheUnavailableError(error);\n }\n try {\n await hooks?.afterBeginWrite?.();\n return await run();\n } finally {\n if (!hooks?.skipEndWrite?.()) await endWrite(token, fences);\n }\n }\n\n async function endWrite(token: string, fences: string[]): Promise<void> {\n await store.endWrite({ fences, token }).catch((error) => report(error, \"endWrite\"));\n }\n\n const targetFences = (target: InvalidationTarget): string[] => rawWritePlanFences(config, target);\n\n return {\n client: {\n async $cacheInvalidate(target: InvalidationTarget): Promise<void> {\n await store.invalidate(targetFences(target));\n },\n async $cacheRawWrite<T>(target: InvalidationTarget, run: () => Promise<T>): Promise<T> {\n const fences = targetFences(target);\n return enabled ? withLease(fences, run) : run();\n },\n },\n name: \"dee-wan-cache\",\n query: {\n $allModels: {\n $allOperations(params: OperationParams): Promise<unknown> {\n const { args, model, operation, query } = params;\n if (!model) return query(args);\n const { dataPath, inBatch } = internalParams(params);\n if (READ_OPERATIONS.has(operation) && isCacheable(model) && !inBatch) {\n return handleRead(model, operation, args, query, dataPath);\n }\n if (WRITE_OPERATIONS.has(operation) && enabled) {\n return withLease(planFences(planWrite(config, model, operation, args)), () => query(args));\n }\n return query(args);\n },\n },\n },\n };\n}\n"]}