{"version":3,"sources":["../src/index.ts"],"names":["AdapterConfigurationError","DbError","options","AdapterListOptionsSchema","StorageContractError","StorageWriteInputSchema","CacheContractError","AdapterJsonValueSchema","CacheSetOptionsSchema","QueueContractError","QueueJobInputSchema","EventsContractError","EventPublishInputSchema","EventSubscribeInputSchema","WebhookEmitInputSchema","WebhookDeliverySchema","AuthContractError","PaymentsContractError","PaymentPlanContractSchema","PaymentCheckoutInputSchema","DeployContractError","DeploymentTargetSchema"],"mappings":"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","file":"index.cjs","sourcesContent":["/**\n * @module index\n * @package @geenius/adapters/memory\n * @description Implements the launch memory DB provider as an in-process\n * `Map`-backed adapter for tests, Storybook fixtures, and local development.\n */\n\nimport type {\n  AdapterJsonValue,\n  AuthIdentity,\n  AuthProviderAdapter,\n  AuthSessionContract,\n  CacheAdapter,\n  CacheSetOptions,\n  DbAdapter,\n  DeployAdapter,\n  DeploymentResult,\n  DeploymentTarget,\n  EventEnvelope,\n  EventPublishInput,\n  EventSubscribeInput,\n  EventSubscription,\n  EventsAdapter,\n  ListOptions,\n  PaymentCheckoutSession,\n  PaymentPlanContract,\n  PaymentSubscriptionContract,\n  PaymentsProviderAdapter,\n  QueryCondition,\n  QueryFilter,\n  QueueAdapter,\n  QueueJob,\n  QueueJobInput,\n  StorageAdapter,\n  StorageObject,\n  StorageWriteInput,\n  WebhookDelivery,\n  WebhookEmitInput,\n} from \"@geenius/adapters\";\nimport {\n  AdapterConfigurationError,\n  AdapterJsonValueSchema,\n  AdapterListOptionsSchema,\n  AuthContractError,\n  CacheContractError,\n  CacheSetOptionsSchema,\n  DbError,\n  DeployContractError,\n  DeploymentTargetSchema,\n  EventPublishInputSchema,\n  EventSubscribeInputSchema,\n  EventsContractError,\n  PaymentCheckoutInputSchema,\n  PaymentPlanContractSchema,\n  PaymentsContractError,\n  QueueContractError,\n  QueueJobInputSchema,\n  StorageContractError,\n  StorageWriteInputSchema,\n  WebhookDeliverySchema,\n  WebhookEmitInputSchema,\n} from \"@geenius/adapters\";\n\n/** In-memory record shape stored by the Memory DB adapter. */\nexport type MemoryDbRecord = Record<string, unknown> & { id: string };\ntype MemoryKeyPart = \"collection\" | \"field\" | \"id\";\ntype ContractErrorFactory = (message: string, cause?: unknown) => Error;\ntype ContractSchema<T> = {\n  parse(value: unknown): T;\n};\n\n/**\n * Configuration accepted by {@link createMemoryDbAdapter}.\n *\n * The adapter is intended for tests, Storybook fixtures, and local development.\n * It refuses production-like runtimes when `environment` or `NODE_ENV` is\n * `\"production\"` unless `allowProduction: true` is supplied explicitly.\n * Process-less browser, Storybook, and edge test runtimes are treated as\n * development-like unless callers pass `environment: \"production\"`. Use `seed`\n * for deterministic in-memory collections and `idFactory` for stable generated\n * ids in tests.\n */\nexport interface MemoryDbAdapterOptions {\n  allowProduction?: boolean;\n  environment?: string;\n  idFactory?: () => string;\n  seed?: Record<string, readonly MemoryDbRecord[]>;\n}\n\n/** Binding object accepted by {@link withMemoryDb} for existing adapters. */\nexport interface MemoryDbAdapterBinding {\n  adapter: DbAdapter;\n}\n\n/** Accepted input for creating or binding a Memory DB adapter. */\nexport type MemoryDbAdapterInput =\n  | DbAdapter\n  | MemoryDbAdapterBinding\n  | MemoryDbAdapterOptions\n  | undefined;\n\n/** Error thrown when Memory adapter configuration is invalid. */\nexport class MemoryBindingError extends AdapterConfigurationError {\n  readonly memoryCode = \"INVALID_MEMORY_ADAPTER\" as const;\n\n  /**\n   * Creates a typed Memory adapter binding error.\n   *\n   * @param message Human-readable validation failure.\n   */\n  constructor(message: string) {\n    super(message, \"INVALID_CONFIG\");\n    Object.defineProperty(this, \"name\", {\n      value: \"MemoryBindingError\",\n      enumerable: false,\n      configurable: true,\n    });\n    Object.setPrototypeOf(this, new.target.prototype);\n  }\n}\n\nconst adapterMethods = [\n  \"create\",\n  \"get\",\n  \"update\",\n  \"delete\",\n  \"list\",\n  \"query\",\n  \"count\",\n] as const;\nconst queryOperators = new Set<QueryCondition[\"operator\"]>([\n  \"eq\",\n  \"neq\",\n  \"gt\",\n  \"gte\",\n  \"lt\",\n  \"lte\",\n  \"in\",\n  \"contains\",\n]);\nconst optionKeys: ReadonlySet<keyof MemoryDbAdapterOptions> = new Set([\n  \"allowProduction\",\n  \"environment\",\n  \"idFactory\",\n  \"seed\",\n]);\n\nfunction defaultIdFactory(): string {\n  return (\n    globalThis.crypto?.randomUUID?.() ??\n    `memory_${Date.now()}_${Math.random().toString(36).slice(2)}`\n  );\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n  return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\nfunction isMemoryRecord(value: unknown): value is MemoryDbRecord {\n  return isRecord(value) && typeof value.id === \"string\";\n}\n\nfunction isMemoryOptions(value: unknown): value is MemoryDbAdapterOptions {\n  return (\n    isRecord(value) &&\n    !(\"adapter\" in value) &&\n    Object.keys(value).every((key): key is keyof MemoryDbAdapterOptions =>\n      optionKeys.has(key as keyof MemoryDbAdapterOptions),\n    )\n  );\n}\n\nfunction assertBindingKeyPart(value: string, part: MemoryKeyPart): string {\n  if (typeof value !== \"string\" || value.trim().length === 0) {\n    throw new MemoryBindingError(`memory ${part} must be a non-empty string`);\n  }\n\n  return value;\n}\n\nfunction assertOperationKeyPart(value: string, part: MemoryKeyPart): string {\n  if (typeof value !== \"string\" || value.trim().length === 0) {\n    throw new DbError(\n      `memory ${part} must be a non-empty string`,\n      \"QUERY_ERROR\",\n    );\n  }\n\n  return value;\n}\n\nfunction assertWritePayload(\n  value: unknown,\n  operation: \"create\" | \"update\",\n): Record<string, unknown> {\n  if (!isRecord(value)) {\n    throw new DbError(\n      `memory ${operation} payload must be a record`,\n      \"QUERY_ERROR\",\n    );\n  }\n\n  return value;\n}\n\nfunction assertNoDuplicateIds(\n  collection: string,\n  records: readonly MemoryDbRecord[],\n): void {\n  const seen = new Set<string>();\n\n  for (const record of records) {\n    assertBindingKeyPart(record.id, \"id\");\n    if (seen.has(record.id)) {\n      throw new MemoryBindingError(\n        `memory seed for ${collection} contains duplicate id ${record.id}`,\n      );\n    }\n    seen.add(record.id);\n  }\n}\n\nfunction getRuntimeEnvironment(): string | undefined {\n  const runtime = globalThis as {\n    process?: {\n      env?: {\n        NODE_ENV?: string;\n      };\n    };\n  };\n\n  return runtime.process?.env?.NODE_ENV;\n}\n\nfunction isProductionLikeRuntime(environment: string | undefined): boolean {\n  return environment === \"production\";\n}\n\nfunction cloneValue<T>(value: T, createError?: ContractErrorFactory): T {\n  try {\n    return structuredClone(value);\n  } catch (error) {\n    if (createError) {\n      throw createError(\"Failed to clone memory adapter payload\", error);\n    }\n    throw new DbError(\n      \"Failed to clone memory adapter payload\",\n      \"QUERY_ERROR\",\n      error,\n    );\n  }\n}\n\nfunction addDaysToIsoTimestamp(timestamp: string, days: number): string {\n  const millis = Date.parse(timestamp);\n  if (Number.isNaN(millis)) {\n    return timestamp;\n  }\n\n  return new Date(millis + days * 24 * 60 * 60 * 1000).toISOString();\n}\n\nfunction cloneRecord(record: MemoryDbRecord): MemoryDbRecord {\n  return cloneValue(record);\n}\n\nfunction cloneRecords(records: readonly MemoryDbRecord[]): MemoryDbRecord[] {\n  return records.map((record) => cloneRecord(record));\n}\n\nfunction assertOptions(options: MemoryDbAdapterOptions): void {\n  if (\n    options.allowProduction !== undefined &&\n    typeof options.allowProduction !== \"boolean\"\n  ) {\n    throw new MemoryBindingError(\"memory allowProduction must be a boolean\");\n  }\n\n  if (\n    options.environment !== undefined &&\n    (typeof options.environment !== \"string\" ||\n      options.environment.trim().length === 0)\n  ) {\n    throw new MemoryBindingError(\n      \"memory environment must be a non-empty string\",\n    );\n  }\n\n  const environment = options.environment ?? getRuntimeEnvironment();\n  if (\n    isProductionLikeRuntime(environment) &&\n    options.allowProduction !== true\n  ) {\n    throw new MemoryBindingError(\n      \"memory adapter is for development and tests; pass allowProduction: true to opt in explicitly\",\n    );\n  }\n\n  if (\n    options.idFactory !== undefined &&\n    typeof options.idFactory !== \"function\"\n  ) {\n    throw new MemoryBindingError(\"memory idFactory must be a function\");\n  }\n\n  if (options.seed !== undefined && !isRecord(options.seed)) {\n    throw new MemoryBindingError(\"memory seed must be a collection record map\");\n  }\n\n  for (const [collection, records] of Object.entries(options.seed ?? {})) {\n    assertBindingKeyPart(collection, \"collection\");\n    if (!Array.isArray(records) || !records.every(isMemoryRecord)) {\n      throw new MemoryBindingError(\n        `memory seed for ${collection} must be an array of records with string ids`,\n      );\n    }\n    assertNoDuplicateIds(collection, records);\n  }\n}\n\nfunction assertGeneratedId(id: string): string {\n  if (typeof id !== \"string\" || id.trim().length === 0) {\n    throw new DbError(\n      \"memory idFactory must return a non-empty string\",\n      \"QUERY_ERROR\",\n    );\n  }\n\n  return id;\n}\n\nfunction assertNonNegativeInteger(\n  value: number | undefined,\n  optionName: string,\n): void {\n  if (value === undefined) {\n    return;\n  }\n\n  if (!Number.isInteger(value) || value < 0) {\n    throw new DbError(\n      `${optionName} must be a non-negative integer`,\n      \"QUERY_ERROR\",\n    );\n  }\n}\n\nfunction assertListOptions(options: ListOptions | undefined): void {\n  if (!options) {\n    return;\n  }\n\n  assertNonNegativeInteger(options.limit, \"list limit\");\n  assertNonNegativeInteger(options.offset, \"list offset\");\n\n  if (options.orderBy !== undefined) {\n    assertOperationKeyPart(options.orderBy, \"field\");\n  }\n\n  if (\n    options.order !== undefined &&\n    options.order !== \"asc\" &&\n    options.order !== \"desc\"\n  ) {\n    throw new DbError(\n      'list order must be either \"asc\" or \"desc\"',\n      \"QUERY_ERROR\",\n    );\n  }\n}\n\nfunction isComparableQueryValue(value: unknown): value is number | string {\n  return typeof value === \"number\" || typeof value === \"string\";\n}\n\nfunction assertQueryConditionOperand(\n  condition: QueryCondition,\n  methodName: string,\n  index: number,\n): void {\n  switch (condition.operator) {\n    case \"eq\":\n    case \"neq\":\n      return;\n    case \"gt\":\n    case \"gte\":\n    case \"lt\":\n    case \"lte\":\n      if (!isComparableQueryValue(condition.value)) {\n        throw new DbError(\n          `${methodName} filter condition ${index} requires a string or number value`,\n          \"QUERY_ERROR\",\n        );\n      }\n      return;\n    case \"in\":\n      if (!Array.isArray(condition.value)) {\n        throw new DbError(\n          `${methodName} filter condition ${index} requires an array value`,\n          \"QUERY_ERROR\",\n        );\n      }\n      return;\n    case \"contains\":\n      if (typeof condition.value !== \"string\") {\n        throw new DbError(\n          `${methodName} filter condition ${index} requires a string value`,\n          \"QUERY_ERROR\",\n        );\n      }\n      return;\n  }\n}\n\nfunction assertQueryFilter(\n  filter: QueryFilter,\n  methodName: string,\n): QueryFilter {\n  if (!Array.isArray(filter)) {\n    throw new DbError(\n      `${methodName} filter must be an array of query conditions`,\n      \"QUERY_ERROR\",\n    );\n  }\n\n  for (const [index, condition] of filter.entries()) {\n    if (\n      !isRecord(condition) ||\n      typeof condition.field !== \"string\" ||\n      condition.field.trim().length === 0 ||\n      !queryOperators.has(condition.operator as QueryCondition[\"operator\"])\n    ) {\n      throw new DbError(\n        `${methodName} filter condition ${index} is invalid`,\n        \"QUERY_ERROR\",\n      );\n    }\n    assertQueryConditionOperand(condition, methodName, index);\n  }\n\n  return filter;\n}\n\nfunction compareValues(\n  left: unknown,\n  right: unknown,\n  operator: Extract<QueryCondition[\"operator\"], \"gt\" | \"gte\" | \"lt\" | \"lte\">,\n): boolean {\n  if (typeof left === \"number\" && typeof right === \"number\") {\n    if (operator === \"gt\") return left > right;\n    if (operator === \"gte\") return left >= right;\n    if (operator === \"lt\") return left < right;\n    return left <= right;\n  }\n\n  if (typeof left === \"string\" && typeof right === \"string\") {\n    if (operator === \"gt\") return left > right;\n    if (operator === \"gte\") return left >= right;\n    if (operator === \"lt\") return left < right;\n    return left <= right;\n  }\n\n  return false;\n}\n\nfunction matchesCondition(\n  item: MemoryDbRecord,\n  condition: QueryCondition,\n): boolean {\n  const value = item[condition.field];\n\n  switch (condition.operator) {\n    case \"eq\":\n      return value === condition.value;\n    case \"neq\":\n      return value !== condition.value;\n    case \"gt\":\n    case \"gte\":\n    case \"lt\":\n    case \"lte\":\n      return compareValues(value, condition.value, condition.operator);\n    case \"in\":\n      return Array.isArray(condition.value) && condition.value.includes(value);\n    case \"contains\":\n      return (\n        typeof value === \"string\" &&\n        typeof condition.value === \"string\" &&\n        value.includes(condition.value)\n      );\n    default:\n      return false;\n  }\n}\n\nfunction matchesFilter(item: MemoryDbRecord, filter: QueryFilter): boolean {\n  return filter.every((condition: QueryCondition) =>\n    matchesCondition(item, condition),\n  );\n}\n\nfunction sortRecords(\n  records: MemoryDbRecord[],\n  options?: ListOptions,\n): MemoryDbRecord[] {\n  if (!options?.orderBy) {\n    return records;\n  }\n\n  const direction = options.order === \"desc\" ? -1 : 1;\n  return [...records].sort((left, right) => {\n    const leftValue = left[options.orderBy as string];\n    const rightValue = right[options.orderBy as string];\n    if (typeof leftValue === \"number\" && typeof rightValue === \"number\") {\n      return leftValue < rightValue\n        ? -direction\n        : leftValue > rightValue\n          ? direction\n          : 0;\n    }\n    if (typeof leftValue === \"string\" && typeof rightValue === \"string\") {\n      return leftValue < rightValue\n        ? -direction\n        : leftValue > rightValue\n          ? direction\n          : 0;\n    }\n    return 0;\n  });\n}\n\nfunction pageRecords(\n  records: MemoryDbRecord[],\n  options?: ListOptions,\n): MemoryDbRecord[] {\n  const offset = options?.offset ?? 0;\n  const limit = options?.limit;\n  return typeof limit === \"number\"\n    ? records.slice(offset, offset + limit)\n    : records.slice(offset);\n}\n\nfunction assertDbAdapter(value: unknown): asserts value is DbAdapter {\n  if (!isRecord(value)) {\n    throw new MemoryBindingError(\n      \"Expected a DbAdapter object for memory binding\",\n    );\n  }\n\n  const missing = adapterMethods.filter(\n    (method) => typeof value[method] !== \"function\",\n  );\n  if (missing.length > 0) {\n    throw new MemoryBindingError(\n      `Memory DbAdapter is missing methods: ${missing.join(\", \")}`,\n    );\n  }\n}\n\n/**\n * Creates an in-process DB adapter for tests, Storybook, and local development.\n *\n * By default this factory rejects production-like runtimes, while allowing\n * process-less browser, Storybook, and edge test runtimes where `process.env`\n * cannot be observed. Pass `environment: \"production\"` with\n * `allowProduction: true` only when an ephemeral process-local store is\n * intentionally acceptable in a production-like smoke test.\n * For deterministic smoke tests, pass both `seed` and `idFactory` so generated\n * records are stable across runs:\n *\n * ```ts\n * const adapter = createMemoryDbAdapter({\n *   environment: \"test\",\n *   seed: { users: [{ id: \"user_1\", name: \"Ada\" }] },\n *   idFactory: () => \"user_2\",\n * });\n * ```\n *\n * @param options Optional seed data, id factory, and environment guard settings.\n * @returns A DB adapter backed by an isolated in-memory collection store.\n */\nexport function createMemoryDbAdapter(\n  options: MemoryDbAdapterOptions = {},\n): DbAdapter {\n  assertOptions(options);\n\n  const idFactory = options.idFactory ?? defaultIdFactory;\n  const store = new Map<string, MemoryDbRecord[]>();\n\n  for (const [collection, records] of Object.entries(options.seed ?? {})) {\n    store.set(collection, cloneRecords(records));\n  }\n\n  const getCollection = (collection: string) =>\n    store.get(assertOperationKeyPart(collection, \"collection\")) ?? [];\n  const setCollection = (collection: string, records: MemoryDbRecord[]) => {\n    store.set(\n      assertOperationKeyPart(collection, \"collection\"),\n      cloneRecords(records),\n    );\n  };\n\n  return {\n    async create<T extends Record<string, unknown>>(\n      collection: string,\n      data: Omit<T, \"id\">,\n    ) {\n      const id = assertGeneratedId(idFactory());\n      const payload = assertWritePayload(data, \"create\");\n      const record = cloneRecord({ ...payload, id } as MemoryDbRecord);\n      const records = getCollection(collection);\n      if (records.some((candidate) => candidate.id === id)) {\n        throw new DbError(\n          `Duplicate memory record id ${id} in ${collection}`,\n          \"CONSTRAINT_VIOLATION\",\n        );\n      }\n      setCollection(collection, [...records, record]);\n      return cloneValue(record) as T & { id: string };\n    },\n    async get<T>(collection: string, id: string) {\n      const recordId = assertOperationKeyPart(id, \"id\");\n      const record = getCollection(collection).find(\n        (candidate) => candidate.id === recordId,\n      );\n      return record ? (cloneValue(record) as T) : null;\n    },\n    async update<T extends Record<string, unknown>>(\n      collection: string,\n      id: string,\n      data: Partial<T>,\n    ) {\n      const recordId = assertOperationKeyPart(id, \"id\");\n      const records = getCollection(collection);\n      const index = records.findIndex((record) => record.id === recordId);\n      if (index === -1) {\n        return null;\n      }\n      const payload = assertWritePayload(data, \"update\");\n      const next = cloneRecord({\n        ...records[index],\n        ...payload,\n        id: recordId,\n      } as MemoryDbRecord);\n      const updated = [...records];\n      updated[index] = next;\n      setCollection(collection, updated);\n      return cloneValue(next) as T;\n    },\n    async delete(collection: string, id: string) {\n      const recordId = assertOperationKeyPart(id, \"id\");\n      const records = getCollection(collection);\n      const next = records.filter((record) => record.id !== recordId);\n      setCollection(collection, next);\n      return next.length !== records.length;\n    },\n    async list<T>(collection: string, options?: ListOptions) {\n      assertListOptions(options);\n      return cloneValue(\n        pageRecords(\n          sortRecords([...getCollection(collection)], options),\n          options,\n        ),\n      ) as T[];\n    },\n    async query<T>(collection: string, filter: QueryFilter) {\n      const checkedFilter = assertQueryFilter(filter, \"query\");\n      return cloneValue(\n        getCollection(collection).filter((record) =>\n          matchesFilter(record, checkedFilter),\n        ),\n      ) as T[];\n    },\n    async count(collection: string, filter?: QueryFilter) {\n      const checkedFilter = filter\n        ? assertQueryFilter(filter, \"count\")\n        : undefined;\n      const records = getCollection(collection);\n      return checkedFilter && checkedFilter.length > 0\n        ? records.filter((record) => matchesFilter(record, checkedFilter))\n            .length\n        : records.length;\n    },\n  };\n}\n\n/**\n * Normalizes Memory adapter input into a shared DB adapter instance.\n *\n * @param config Existing DB adapter, adapter binding, Memory options, or undefined.\n * @returns A DB adapter suitable for the shared adapters contract.\n */\nexport function withMemoryDb(config?: MemoryDbAdapterInput): DbAdapter {\n  if (config === undefined) {\n    return createMemoryDbAdapter();\n  }\n\n  if (isMemoryOptions(config)) {\n    return createMemoryDbAdapter(config);\n  }\n\n  const adapter =\n    isRecord(config) && \"adapter\" in config ? config.adapter : config;\n  assertDbAdapter(adapter);\n  return adapter;\n}\n\n/** Minimal localStorage-compatible persistence surface used by memory mocks. */\nexport interface MemoryContractStorage {\n  readonly length: number;\n  clear(): void;\n  getItem(key: string): string | null;\n  key(index: number): string | null;\n  removeItem(key: string): void;\n  setItem(key: string, value: string): void;\n}\n\n/** Options shared by localStorage-backed memory contract adapters. */\nexport interface MemoryContractAdapterOptions {\n  allowProduction?: boolean;\n  environment?: string;\n  idFactory?: () => string;\n  namespace?: string;\n  now?: () => string;\n  storage?: MemoryContractStorage;\n}\n\n/** Options for the memory auth contract adapter. */\nexport interface MemoryAuthAdapterOptions extends MemoryContractAdapterOptions {\n  sessionTtlSeconds?: number;\n}\n\n/** Options for the memory payments contract adapter. */\nexport interface MemoryPaymentsAdapterOptions\n  extends MemoryContractAdapterOptions {\n  plans?: readonly PaymentPlanContract[];\n}\n\n/** Options accepted by the aggregate memory contract adapter bundle. */\nexport interface MemoryAdaptersOptions\n  extends MemoryAuthAdapterOptions,\n    MemoryPaymentsAdapterOptions {}\n\ntype EventHandler = (event: EventEnvelope) => void | Promise<void>;\ntype MemoryStorageObject = StorageObject & { expiresAt?: string };\n\nconst defaultMemoryNamespace = \"geenius:adapters:memory\";\n\nclass EphemeralContractStorage implements MemoryContractStorage {\n  private readonly values = new Map<string, string>();\n\n  get length(): number {\n    return this.values.size;\n  }\n\n  clear(): void {\n    this.values.clear();\n  }\n\n  getItem(key: string): string | null {\n    return this.values.get(key) ?? null;\n  }\n\n  key(index: number): string | null {\n    return Array.from(this.values.keys())[index] ?? null;\n  }\n\n  removeItem(key: string): void {\n    this.values.delete(key);\n  }\n\n  setItem(key: string, value: string): void {\n    this.values.set(key, value);\n  }\n}\n\nfunction resolveContractStorage(\n  options: MemoryContractAdapterOptions | undefined,\n): MemoryContractStorage {\n  if (options?.storage) {\n    return options.storage;\n  }\n\n  const runtime = globalThis as { localStorage?: MemoryContractStorage };\n  return runtime.localStorage ?? new EphemeralContractStorage();\n}\n\nfunction assertMemoryContractOptions(\n  options: MemoryContractAdapterOptions | undefined,\n): void {\n  if (\n    options?.allowProduction !== undefined &&\n    typeof options.allowProduction !== \"boolean\"\n  ) {\n    throw new MemoryBindingError(\"memory allowProduction must be a boolean\");\n  }\n\n  if (\n    options?.environment !== undefined &&\n    (typeof options.environment !== \"string\" ||\n      options.environment.trim().length === 0)\n  ) {\n    throw new MemoryBindingError(\n      \"memory environment must be a non-empty string\",\n    );\n  }\n\n  const environment = options?.environment ?? getRuntimeEnvironment();\n  if (\n    isProductionLikeRuntime(environment) &&\n    options?.allowProduction !== true\n  ) {\n    throw new MemoryBindingError(\n      \"memory adapter is for development and tests; pass allowProduction: true to opt in explicitly\",\n    );\n  }\n}\n\nfunction createContractContext(\n  domain: string,\n  options?: MemoryContractAdapterOptions,\n  createError?: (message: string, cause?: unknown) => Error,\n) {\n  assertMemoryContractOptions(options);\n\n  const storage = resolveContractStorage(options);\n  const namespace = options?.namespace ?? defaultMemoryNamespace;\n  const idFactory = options?.idFactory ?? defaultIdFactory;\n  const now = options?.now ?? (() => new Date().toISOString());\n  const prefix = `${namespace}:${domain}:`;\n\n  const keyFor = (bucket: string) => `${prefix}${bucket}`;\n  const toError =\n    createError ??\n    ((message: string, cause?: unknown) => new Error(message, { cause }));\n\n  const readArray = <T>(bucket: string): T[] => {\n    try {\n      const raw = storage.getItem(keyFor(bucket));\n      if (!raw) {\n        return [];\n      }\n      const parsed: unknown = JSON.parse(raw);\n      if (!Array.isArray(parsed)) {\n        return [];\n      }\n      return parsed as T[];\n    } catch (error) {\n      throw toError(\n        `memory ${domain} storage read failed for bucket ${bucket}`,\n        error,\n      );\n    }\n  };\n\n  const writeArray = <T>(bucket: string, value: readonly T[]): void => {\n    try {\n      storage.setItem(keyFor(bucket), JSON.stringify(value));\n    } catch (error) {\n      throw toError(\n        `memory ${domain} storage write failed for bucket ${bucket}`,\n        error,\n      );\n    }\n  };\n\n  return { idFactory, now, readArray, writeArray };\n}\n\nfunction parseContractValue<T>(\n  schema: ContractSchema<T>,\n  value: unknown,\n  label: string,\n  errorFactory: ContractErrorFactory,\n): T {\n  try {\n    return schema.parse(value);\n  } catch (error) {\n    throw errorFactory(`memory ${label} is invalid`, error);\n  }\n}\n\nfunction assertContractKey(key: string, errorFactory: ContractErrorFactory) {\n  if (typeof key !== \"string\" || key.trim().length === 0) {\n    throw errorFactory(\"memory contract key must be a non-empty string\");\n  }\n}\n\nfunction pageContractRecords<T extends Record<string, unknown>>(\n  records: readonly T[],\n  options: unknown,\n  errorFactory: ContractErrorFactory,\n): T[] {\n  const pageOptions = validateContractListOptions(options, errorFactory);\n  const filtered = pageOptions?.prefix\n    ? records.filter((record) =>\n        String(record.key ?? record.id ?? \"\").startsWith(\n          pageOptions.prefix ?? \"\",\n        ),\n      )\n    : [...records];\n  let start = 0;\n  if (pageOptions?.cursor) {\n    const cursorIndex = filtered.findIndex(\n      (record) => String(record.key ?? record.id) === pageOptions.cursor,\n    );\n    if (cursorIndex < 0) {\n      throw errorFactory(\n        `memory list cursor ${pageOptions.cursor} does not match any record`,\n      );\n    }\n    start = cursorIndex + 1;\n  }\n  const end = pageOptions?.limit ? start + pageOptions.limit : undefined;\n  return cloneValue(filtered.slice(start, end), errorFactory);\n}\n\nfunction validateContractListOptions(\n  options: unknown,\n  errorFactory: ContractErrorFactory,\n): { limit?: number; cursor?: string; prefix?: string } | undefined {\n  if (options === undefined) {\n    return undefined;\n  }\n  const parsed = parseContractValue(\n    AdapterListOptionsSchema,\n    options,\n    \"list options\",\n    errorFactory,\n  );\n\n  if (parsed.cursor !== undefined && parsed.cursor.trim().length === 0) {\n    throw errorFactory(\"memory list cursor must be a non-empty string\");\n  }\n  if (parsed.prefix !== undefined && parsed.prefix.trim().length === 0) {\n    throw errorFactory(\"memory list prefix must be a non-empty string\");\n  }\n\n  return parsed;\n}\n\n/**\n * Creates a localStorage-backed object storage mock for tests, Storybook, and\n * offline prototypes.\n *\n * @param options Optional storage, namespace, id, clock, and environment guard\n * settings used to isolate deterministic local state.\n * @returns A storage adapter implementing object get/put/delete/list and\n * health checks without importing a provider SDK.\n */\nexport function createMemoryStorageAdapter(\n  options?: MemoryContractAdapterOptions,\n): StorageAdapter {\n  const context = createContractContext(\n    \"storage\",\n    options,\n    (message, cause) => new StorageContractError(message, cause),\n  );\n  const currentTimeMs = () => new Date(context.now()).getTime();\n  const liveObjects = () =>\n    context\n      .readArray<MemoryStorageObject>(\"objects\")\n      .filter(\n        (object) =>\n          !object.expiresAt ||\n          new Date(object.expiresAt).getTime() > currentTimeMs(),\n      );\n  const cloneStorageValue = <T>(value: T): T =>\n    cloneValue(\n      value,\n      (message, cause) => new StorageContractError(message, cause),\n    );\n\n  return {\n    async getObject(key: string) {\n      assertContractKey(key, (message) => new StorageContractError(message));\n      return liveObjects().find((object) => object.key === key) ?? null;\n    },\n    async putObject(input: StorageWriteInput) {\n      const checkedInput = parseContractValue(\n        StorageWriteInputSchema,\n        input,\n        \"storage write input\",\n        (message, cause) => new StorageContractError(message, cause),\n      );\n      assertContractKey(\n        checkedInput.key,\n        (message) => new StorageContractError(message),\n      );\n      const objects = liveObjects();\n      const now = context.now();\n      const expiresAt = checkedInput.ttlSeconds\n        ? new Date(\n            currentTimeMs() + checkedInput.ttlSeconds * 1000,\n          ).toISOString()\n        : undefined;\n      const object: MemoryStorageObject = {\n        key: checkedInput.key,\n        body: checkedInput.body,\n        contentType: checkedInput.contentType,\n        etag: context.idFactory(),\n        metadata: checkedInput.metadata ?? {},\n        size: checkedInput.body.length,\n        ...(expiresAt ? { expiresAt } : {}),\n        updatedAt: now,\n      };\n      context.writeArray(\"objects\", [\n        ...objects.filter((candidate) => candidate.key !== checkedInput.key),\n        object,\n      ]);\n      return cloneStorageValue(object);\n    },\n    async deleteObject(key: string) {\n      assertContractKey(key, (message) => new StorageContractError(message));\n      context.writeArray(\n        \"objects\",\n        liveObjects().filter((object) => object.key !== key),\n      );\n    },\n    async listObjects(options) {\n      return pageContractRecords(\n        liveObjects(),\n        options,\n        (message) => new StorageContractError(message),\n      );\n    },\n    async getHealth() {\n      return { ok: true, checkedAt: context.now() };\n    },\n  };\n}\n\n/**\n * Creates a localStorage-backed key/value cache mock for tests, Storybook, and\n * offline prototypes.\n *\n * @param options Optional storage, namespace, id, clock, and environment guard\n * settings used to isolate deterministic local state.\n * @returns A cache adapter implementing get/set/delete/has/clear and health\n * checks without importing Redis, KV, or provider SDKs.\n */\nexport function createMemoryCacheAdapter(\n  options?: MemoryContractAdapterOptions,\n): CacheAdapter {\n  const context = createContractContext(\n    \"cache\",\n    options,\n    (message, cause) => new CacheContractError(message, cause),\n  );\n  const currentTimeMs = () => new Date(context.now()).getTime();\n  const cloneCacheValue = <T>(value: T): T =>\n    cloneValue(\n      value,\n      (message, cause) => new CacheContractError(message, cause),\n    );\n\n  const liveEntries = () =>\n    context\n      .readArray<{\n        key: string;\n        value: unknown;\n        expiresAt?: string;\n        updatedAt: string;\n      }>(\"entries\")\n      .filter(\n        (entry) =>\n          !entry.expiresAt ||\n          new Date(entry.expiresAt).getTime() > currentTimeMs(),\n      );\n\n  return {\n    async get<T extends AdapterJsonValue = AdapterJsonValue>(key: string) {\n      assertContractKey(key, (message) => new CacheContractError(message));\n      const entry = liveEntries().find((candidate) => candidate.key === key);\n      return entry ? (cloneCacheValue(entry.value) as T) : null;\n    },\n    async set<T extends AdapterJsonValue = AdapterJsonValue>(\n      key: string,\n      value: T,\n      writeOptions?: CacheSetOptions,\n    ) {\n      assertContractKey(key, (message) => new CacheContractError(message));\n      const checkedValue = parseContractValue(\n        AdapterJsonValueSchema,\n        value,\n        \"cache value\",\n        (message, cause) => new CacheContractError(message, cause),\n      );\n      const checkedOptions = writeOptions\n        ? parseContractValue(\n            CacheSetOptionsSchema,\n            writeOptions,\n            \"cache set options\",\n            (message, cause) => new CacheContractError(message, cause),\n          )\n        : undefined;\n      const expiresAt = checkedOptions?.ttlSeconds\n        ? new Date(\n            currentTimeMs() + checkedOptions.ttlSeconds * 1000,\n          ).toISOString()\n        : undefined;\n      const entries = liveEntries().filter((entry) => entry.key !== key);\n      context.writeArray(\"entries\", [\n        ...entries,\n        {\n          key,\n          value: cloneCacheValue(checkedValue),\n          expiresAt,\n          updatedAt: context.now(),\n        },\n      ]);\n    },\n    async delete(key: string) {\n      assertContractKey(key, (message) => new CacheContractError(message));\n      context.writeArray(\n        \"entries\",\n        liveEntries().filter((entry) => entry.key !== key),\n      );\n    },\n    async has(key: string) {\n      assertContractKey(key, (message) => new CacheContractError(message));\n      return liveEntries().some((entry) => entry.key === key);\n    },\n    async clear(prefix?: string) {\n      const entries = prefix\n        ? liveEntries().filter((entry) => !entry.key.startsWith(prefix))\n        : [];\n      context.writeArray(\"entries\", entries);\n    },\n    async getHealth() {\n      return { ok: true, checkedAt: context.now() };\n    },\n  };\n}\n\n/**\n * Creates a localStorage-backed job queue mock for tests, Storybook, and\n * offline prototypes.\n *\n * @param options Optional storage, namespace, id, clock, and environment guard\n * settings used to isolate deterministic local state.\n * @returns A queue adapter implementing enqueue, schedule, complete, fail,\n * listJobs, and health checks without importing a queue provider SDK.\n */\nexport function createMemoryQueueAdapter(\n  options?: MemoryContractAdapterOptions,\n): QueueAdapter {\n  const context = createContractContext(\n    \"queue\",\n    options,\n    (message, cause) => new QueueContractError(message, cause),\n  );\n  const jobs = () => context.readArray<QueueJob>(\"jobs\");\n  const writeJobs = (value: readonly QueueJob[]) =>\n    context.writeArray(\"jobs\", value);\n  const cloneQueueValue = <T>(value: T): T =>\n    cloneValue(\n      value,\n      (message, cause) => new QueueContractError(message, cause),\n    );\n\n  const upsertJob = (job: QueueJob) => {\n    writeJobs([...jobs().filter((candidate) => candidate.id !== job.id), job]);\n  };\n\n  const enqueueJob = async (input: QueueJobInput): Promise<QueueJob> => {\n    const checkedInput = parseContractValue(\n      QueueJobInputSchema,\n      input,\n      \"queue job input\",\n      (message, cause) => new QueueContractError(message, cause),\n    );\n    const now = context.now();\n    const generatedId = context.idFactory();\n    const existing = jobs();\n    if (existing.some((candidate) => candidate.id === generatedId)) {\n      throw new QueueContractError(\n        `memory queue id collision: ${generatedId} already exists`,\n      );\n    }\n    const job: QueueJob = {\n      id: generatedId,\n      name: checkedInput.name,\n      payload: checkedInput.payload ?? null,\n      status: checkedInput.runAt ? \"scheduled\" : \"queued\",\n      runAt: checkedInput.runAt,\n      attempts: 0,\n      createdAt: now,\n      updatedAt: now,\n    };\n    upsertJob(job);\n    return cloneQueueValue(job);\n  };\n\n  return {\n    enqueue: enqueueJob,\n    async schedule(input: QueueJobInput & { runAt: string }) {\n      const checkedInput = parseContractValue(\n        QueueJobInputSchema,\n        input,\n        \"queue job input\",\n        (message, cause) => new QueueContractError(message, cause),\n      );\n      if (\n        checkedInput.runAt === undefined ||\n        checkedInput.runAt.trim().length === 0\n      ) {\n        throw new QueueContractError(\n          \"memory queue schedule runAt must be a non-empty string\",\n        );\n      }\n      return enqueueJob({ ...checkedInput, runAt: checkedInput.runAt });\n    },\n    async complete(jobId: string) {\n      assertContractKey(jobId, (message) => new QueueContractError(message));\n      const job = jobs().find((candidate) => candidate.id === jobId);\n      if (job) {\n        upsertJob({ ...job, status: \"completed\", updatedAt: context.now() });\n      }\n    },\n    async fail(jobId: string) {\n      assertContractKey(jobId, (message) => new QueueContractError(message));\n      const job = jobs().find((candidate) => candidate.id === jobId);\n      if (job) {\n        upsertJob({\n          ...job,\n          attempts: job.attempts + 1,\n          status: \"failed\",\n          updatedAt: context.now(),\n        });\n      }\n    },\n    async listJobs(options) {\n      return pageContractRecords(\n        jobs(),\n        options,\n        (message) => new QueueContractError(message),\n      );\n    },\n    async getHealth() {\n      return { ok: true, checkedAt: context.now() };\n    },\n  };\n}\n\n/**\n * Creates a localStorage-backed pub/sub and webhook event mock for tests,\n * Storybook, and offline prototypes.\n *\n * @param options Optional storage, namespace, id, clock, and environment guard\n * settings used to isolate deterministic local state.\n * @returns An events adapter implementing publish, subscribe, emitWebhook,\n * listEvents, and health checks without importing an event bus SDK.\n */\nexport function createMemoryEventsAdapter(\n  options?: MemoryContractAdapterOptions,\n): EventsAdapter {\n  const context = createContractContext(\n    \"events\",\n    options,\n    (message, cause) => new EventsContractError(message, cause),\n  );\n  const handlers = new Map<string, Set<EventHandler>>();\n  const cloneEventsValue = <T>(value: T): T =>\n    cloneValue(\n      value,\n      (message, cause) => new EventsContractError(message, cause),\n    );\n\n  return {\n    async publish(input: EventPublishInput) {\n      const checkedInput = parseContractValue(\n        EventPublishInputSchema,\n        input,\n        \"event publish input\",\n        (message, cause) => new EventsContractError(message, cause),\n      );\n      const event: EventEnvelope = {\n        id: context.idFactory(),\n        topic: checkedInput.topic,\n        payload: checkedInput.payload ?? null,\n        metadata: checkedInput.metadata ?? {},\n        createdAt: context.now(),\n      };\n      context.writeArray(\"events\", [\n        ...context.readArray<EventEnvelope>(\"events\"),\n        event,\n      ]);\n      for (const handler of handlers.get(checkedInput.topic) ?? []) {\n        await handler(cloneEventsValue(event));\n      }\n      return cloneEventsValue(event);\n    },\n    async subscribe(input: EventSubscribeInput, handler: EventHandler) {\n      const checkedInput = parseContractValue(\n        EventSubscribeInputSchema,\n        input,\n        \"event subscribe input\",\n        (message, cause) => new EventsContractError(message, cause),\n      );\n      const topic = checkedInput.topic;\n      const topicHandlers = handlers.get(topic) ?? new Set<EventHandler>();\n      topicHandlers.add(handler);\n      handlers.set(topic, topicHandlers);\n      const subscription: EventSubscription = {\n        async unsubscribe() {\n          topicHandlers.delete(handler);\n        },\n      };\n      return subscription;\n    },\n    async emitWebhook(input: WebhookEmitInput) {\n      const checkedInput = parseContractValue(\n        WebhookEmitInputSchema,\n        input,\n        \"webhook emit input\",\n        (message, cause) => new EventsContractError(message, cause),\n      );\n      const delivery = parseContractValue(\n        WebhookDeliverySchema,\n        {\n          id: context.idFactory(),\n          url: checkedInput.url,\n          eventId: checkedInput.event.id,\n          status: \"delivered\",\n          createdAt: context.now(),\n        },\n        \"webhook delivery\",\n        (message, cause) => new EventsContractError(message, cause),\n      );\n      context.writeArray(\"webhooks\", [\n        ...context.readArray<WebhookDelivery>(\"webhooks\"),\n        delivery,\n      ]);\n      return cloneEventsValue(delivery);\n    },\n    async listEvents(options) {\n      return pageContractRecords(\n        context.readArray<EventEnvelope>(\"events\"),\n        options,\n        (message) => new EventsContractError(message),\n      );\n    },\n    async getHealth() {\n      return { ok: true, checkedAt: context.now() };\n    },\n  };\n}\n\n/**\n * Creates a localStorage-backed identity and session mock for tests, Storybook,\n * and offline prototypes.\n *\n * @param options Optional storage, namespace, id, clock, session TTL, and\n * environment guard settings used to isolate deterministic local state.\n * @returns An auth provider adapter implementing identity/session lifecycle and\n * health checks without importing an auth provider SDK.\n */\nexport function createMemoryAuthAdapter(\n  options?: MemoryAuthAdapterOptions,\n): AuthProviderAdapter {\n  const context = createContractContext(\n    \"auth\",\n    options,\n    (message, cause) => new AuthContractError(message, cause),\n  );\n  const identities = () => context.readArray<AuthIdentity>(\"identities\");\n  const sessions = () => context.readArray<AuthSessionContract>(\"sessions\");\n  const sessionTtlSeconds = options?.sessionTtlSeconds;\n  const cloneAuthValue = <T>(value: T): T =>\n    cloneValue(\n      value,\n      (message, cause) => new AuthContractError(message, cause),\n    );\n\n  if (\n    sessionTtlSeconds !== undefined &&\n    (!Number.isInteger(sessionTtlSeconds) || sessionTtlSeconds <= 0)\n  ) {\n    throw new AuthContractError(\n      \"memory auth sessionTtlSeconds must be a positive integer\",\n    );\n  }\n\n  return {\n    async getIdentity(identityId: string) {\n      assertContractKey(\n        identityId,\n        (message) => new AuthContractError(message),\n      );\n      return (\n        identities().find((identity) => identity.id === identityId) ?? null\n      );\n    },\n    async createIdentity(identity: AuthIdentity) {\n      assertContractKey(\n        identity.id,\n        (message) => new AuthContractError(message),\n      );\n      context.writeArray(\"identities\", [\n        ...identities().filter((candidate) => candidate.id !== identity.id),\n        cloneAuthValue(identity),\n      ]);\n      return cloneAuthValue(identity);\n    },\n    async createSession(identityId: string) {\n      assertContractKey(\n        identityId,\n        (message) => new AuthContractError(message),\n      );\n      const existingIdentity = identities().find(\n        (identity) => identity.id === identityId,\n      );\n      if (!existingIdentity) {\n        throw new AuthContractError(\n          `memory auth createSession requires an existing identity for ${identityId}`,\n        );\n      }\n      const session: AuthSessionContract = {\n        id: context.idFactory(),\n        identityId,\n        token: context.idFactory(),\n        expiresAt: sessionTtlSeconds\n          ? new Date(\n              new Date(context.now()).getTime() + sessionTtlSeconds * 1000,\n            ).toISOString()\n          : undefined,\n        createdAt: context.now(),\n      };\n      context.writeArray(\"sessions\", [...sessions(), session]);\n      return cloneAuthValue(session);\n    },\n    async verifySession(token: string) {\n      assertContractKey(token, (message) => new AuthContractError(message));\n      const session = sessions().find((candidate) => candidate.token === token);\n      if (!session) {\n        return null;\n      }\n      if (\n        session.expiresAt &&\n        new Date(session.expiresAt).getTime() <=\n          new Date(context.now()).getTime()\n      ) {\n        return null;\n      }\n      return cloneAuthValue(session);\n    },\n    async revokeSession(sessionId: string) {\n      assertContractKey(sessionId, (message) => new AuthContractError(message));\n      context.writeArray(\n        \"sessions\",\n        sessions().filter((session) => session.id !== sessionId),\n      );\n    },\n    async getHealth() {\n      return { ok: true, checkedAt: context.now() };\n    },\n  };\n}\n\n/**\n * Creates a localStorage-backed payments mock for tests, Storybook, and\n * offline prototypes.\n *\n * @param options Optional storage, namespace, id, clock, plan fixtures, and\n * environment guard settings used to isolate deterministic local state.\n * @returns A payments provider adapter implementing plans, checkout,\n * subscription, feature-gate, and health methods without importing Stripe or\n * another payment SDK.\n */\nexport function createMemoryPaymentsAdapter(\n  options?: MemoryPaymentsAdapterOptions,\n): PaymentsProviderAdapter {\n  const context = createContractContext(\n    \"payments\",\n    options,\n    (message, cause) => new PaymentsContractError(message, cause),\n  );\n  const clonePaymentsValue = <T>(value: T): T =>\n    cloneValue(\n      value,\n      (message, cause) => new PaymentsContractError(message, cause),\n    );\n  const plans = clonePaymentsValue(\n    (\n      options?.plans ??\n      ([\n        {\n          id: \"memory-free\",\n          name: \"Memory Free\",\n          currency: \"USD\",\n          amount: 0,\n          interval: \"month\",\n          features: [\"core\"],\n        },\n      ] satisfies readonly PaymentPlanContract[])\n    ).map((plan) =>\n      parseContractValue(\n        PaymentPlanContractSchema,\n        plan,\n        \"payment plan\",\n        (message, cause) => new PaymentsContractError(message, cause),\n      ),\n    ),\n  );\n  const checkouts = () =>\n    context.readArray<PaymentCheckoutSession>(\"checkouts\");\n  const subscriptions = () =>\n    context.readArray<PaymentSubscriptionContract>(\"subscriptions\");\n  const getSubscriptionForIdentity = async (\n    identityId: string,\n  ): Promise<PaymentSubscriptionContract | null> => {\n    assertContractKey(\n      identityId,\n      (message) => new PaymentsContractError(message),\n    );\n    return (\n      subscriptions()\n        .filter((subscription) => subscription.identityId === identityId)\n        .at(-1) ?? null\n    );\n  };\n\n  return {\n    async listPlans() {\n      return clonePaymentsValue([...plans]);\n    },\n    async createCheckout(input) {\n      const checkedInput = parseContractValue(\n        PaymentCheckoutInputSchema,\n        input,\n        \"checkout input\",\n        (message, cause) => new PaymentsContractError(message, cause),\n      );\n      if (!plans.some((plan) => plan.id === checkedInput.planId)) {\n        throw new PaymentsContractError(\n          `Unknown memory plan ${checkedInput.planId}`,\n        );\n      }\n      const now = context.now();\n      const checkout: PaymentCheckoutSession = {\n        id: context.idFactory(),\n        planId: checkedInput.planId,\n        identityId: checkedInput.identityId,\n        url: checkedInput.successUrl ?? \"https://memory.geenius.local/checkout\",\n        status: \"created\",\n        createdAt: now,\n      };\n      const subscription: PaymentSubscriptionContract = {\n        id: `sub_${checkout.id}`,\n        planId: checkedInput.planId,\n        identityId: checkedInput.identityId,\n        status: \"active\",\n        currentPeriodStart: now,\n        currentPeriodEnd: addDaysToIsoTimestamp(now, 30),\n        cancelAtPeriodEnd: false,\n        createdAt: now,\n        updatedAt: now,\n        metadata: {},\n      };\n      context.writeArray(\"checkouts\", [...checkouts(), checkout]);\n      context.writeArray(\"subscriptions\", [\n        ...subscriptions().filter(\n          (candidate) => candidate.identityId !== input.identityId,\n        ),\n        subscription,\n      ]);\n      return clonePaymentsValue(checkout);\n    },\n    async getSubscription(identityId: string) {\n      return getSubscriptionForIdentity(identityId);\n    },\n    async cancelSubscription(identityId: string) {\n      assertContractKey(\n        identityId,\n        (message) => new PaymentsContractError(message),\n      );\n      const cancelledAt = context.now();\n      context.writeArray(\n        \"subscriptions\",\n        subscriptions().map((subscription) =>\n          subscription.identityId === identityId\n            ? {\n                ...subscription,\n                status: \"cancelled\" as const,\n                cancelAtPeriodEnd: false,\n                cancelledAt,\n                updatedAt: cancelledAt,\n              }\n            : subscription,\n        ),\n      );\n    },\n    async isFeatureEnabled(identityId: string, feature: string) {\n      assertContractKey(\n        identityId,\n        (message) => new PaymentsContractError(message),\n      );\n      const subscription = await getSubscriptionForIdentity(identityId);\n      if (\n        subscription?.status !== \"active\" &&\n        subscription?.status !== \"trialing\"\n      ) {\n        return false;\n      }\n      const plan = plans.find(\n        (candidate) => candidate.id === subscription.planId,\n      );\n      return plan?.features.includes(feature) ?? false;\n    },\n    async getHealth() {\n      return { ok: true, checkedAt: context.now() };\n    },\n  };\n}\n\n/**\n * Creates a localStorage-backed deployment-platform mock for tests, Storybook,\n * and offline prototypes.\n *\n * @param options Optional storage, namespace, id, clock, and environment guard\n * settings used to isolate deterministic local state.\n * @returns A deploy adapter implementing deploy, rollback, lookup, list, and\n * health methods without importing Cloudflare, Vercel, Netlify, or Heroku SDKs.\n */\nexport function createMemoryDeployAdapter(\n  options?: MemoryContractAdapterOptions,\n): DeployAdapter {\n  const context = createContractContext(\n    \"deploy\",\n    options,\n    (message, cause) => new DeployContractError(message, cause),\n  );\n  const deployments = () => context.readArray<DeploymentResult>(\"deployments\");\n  const cloneDeployValue = <T>(value: T): T =>\n    cloneValue(\n      value,\n      (message, cause) => new DeployContractError(message, cause),\n    );\n\n  return {\n    async deploy(target: DeploymentTarget) {\n      const checkedTarget = parseContractValue(\n        DeploymentTargetSchema,\n        target,\n        \"deployment target\",\n        (message, cause) => new DeployContractError(message, cause),\n      );\n      const now = context.now();\n      const deployment: DeploymentResult = {\n        id: context.idFactory(),\n        targetId: checkedTarget.id,\n        status: \"ready\",\n        url: `https://${checkedTarget.projectId}.${checkedTarget.provider}.memory.local`,\n        createdAt: now,\n        updatedAt: now,\n      };\n      context.writeArray(\"deployments\", [...deployments(), deployment]);\n      return cloneDeployValue(deployment);\n    },\n    async rollback(deploymentId: string) {\n      assertContractKey(\n        deploymentId,\n        (message) => new DeployContractError(message),\n      );\n      const existing = deployments().find(\n        (deployment) => deployment.id === deploymentId,\n      );\n      if (!existing) {\n        throw new DeployContractError(\n          `Unknown memory deployment ${deploymentId}`,\n        );\n      }\n      const rolledBack: DeploymentResult = {\n        ...existing,\n        status: \"rolled_back\",\n        updatedAt: context.now(),\n      };\n      context.writeArray(\n        \"deployments\",\n        deployments().map((deployment) =>\n          deployment.id === deploymentId ? rolledBack : deployment,\n        ),\n      );\n      return cloneDeployValue(rolledBack);\n    },\n    async getDeployment(deploymentId: string) {\n      assertContractKey(\n        deploymentId,\n        (message) => new DeployContractError(message),\n      );\n      return (\n        deployments().find((deployment) => deployment.id === deploymentId) ??\n        null\n      );\n    },\n    async listDeployments(targetId?: string) {\n      const records = deployments();\n      return cloneDeployValue(\n        targetId\n          ? records.filter((deployment) => deployment.targetId === targetId)\n          : records,\n      );\n    },\n    async getHealth() {\n      return { ok: true, checkedAt: context.now() };\n    },\n  };\n}\n\n/**\n * Creates the aggregate local/dev adapter bundle for every memory contract\n * domain.\n *\n * @param options Optional shared storage, namespace, id, clock, auth session,\n * payment plan, and environment guard settings passed to each domain factory.\n * @returns A bundled set of storage, cache, queue, events, auth, payments, and\n * deploy memory adapters for tests, Storybook, and offline prototypes.\n */\nexport function createMemoryAdapters(options?: MemoryAdaptersOptions) {\n  return {\n    storage: createMemoryStorageAdapter(options),\n    cache: createMemoryCacheAdapter(options),\n    queue: createMemoryQueueAdapter(options),\n    events: createMemoryEventsAdapter(options),\n    auth: createMemoryAuthAdapter(options),\n    payments: createMemoryPaymentsAdapter(options),\n    deploy: createMemoryDeployAdapter(options),\n  };\n}\n\n/** @doc SDK-free domain contract interfaces exposed consistently across launch DB backend subpaths. */\nexport type {\n  AuthProviderAdapter,\n  CacheAdapter,\n  DeployAdapter,\n  EventsAdapter,\n  PaymentsProviderAdapter,\n  QueueAdapter,\n  StorageAdapter,\n} from \"@geenius/adapters\";\n/** @doc SDK-free domain Zod schemas and error classes exposed by this backend contract subpath. */\nexport {\n  AuthContractError,\n  AuthIdentitySchema,\n  AuthSessionContractSchema,\n  CacheContractError,\n  CacheEntrySchema,\n  DeployContractError,\n  DeploymentResultSchema,\n  DeploymentTargetSchema,\n  EventEnvelopeSchema,\n  EventsContractError,\n  PaymentCheckoutInputSchema,\n  PaymentPlanContractSchema,\n  PaymentSubscriptionContractSchema,\n  PaymentsContractError,\n  QueueContractError,\n  QueueJobSchema,\n  StorageContractError,\n  StorageObjectSchema,\n} from \"@geenius/adapters\";\n"]}