@nicia-ai/typegraph 0.48.0 → 0.49.0

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 (69) hide show
  1. package/dist/backend/postgres/index.cjs +3 -3
  2. package/dist/backend/postgres/index.js +2 -2
  3. package/dist/backend/postgres/pglite-store.cjs +4 -4
  4. package/dist/backend/postgres/pglite-store.d.cts +2 -2
  5. package/dist/backend/postgres/pglite-store.d.ts +2 -2
  6. package/dist/backend/postgres/pglite-store.js +3 -3
  7. package/dist/backend/postgres/pglite.cjs +4 -4
  8. package/dist/backend/postgres/pglite.js +3 -3
  9. package/dist/backend/sqlite/index.cjs +3 -3
  10. package/dist/backend/sqlite/index.js +2 -2
  11. package/dist/backend/sqlite/libsql.cjs +4 -4
  12. package/dist/backend/sqlite/libsql.js +2 -2
  13. package/dist/backend/sqlite/local-store.cjs +5 -5
  14. package/dist/backend/sqlite/local-store.d.cts +2 -2
  15. package/dist/backend/sqlite/local-store.d.ts +2 -2
  16. package/dist/backend/sqlite/local-store.js +4 -4
  17. package/dist/backend/sqlite/local.cjs +5 -5
  18. package/dist/backend/sqlite/local.js +3 -3
  19. package/dist/{chunk-TKZXMWQF.cjs → chunk-2O4PCIZ6.cjs} +4 -4
  20. package/dist/{chunk-TKZXMWQF.cjs.map → chunk-2O4PCIZ6.cjs.map} +1 -1
  21. package/dist/{chunk-OTUPEF2W.cjs → chunk-3G5W2U2L.cjs} +30 -4
  22. package/dist/chunk-3G5W2U2L.cjs.map +1 -0
  23. package/dist/{chunk-WCCATHMB.cjs → chunk-3QNZ5SAJ.cjs} +3 -3
  24. package/dist/chunk-3QNZ5SAJ.cjs.map +1 -0
  25. package/dist/{chunk-OD4SSY2U.js → chunk-7LZJNLA5.js} +3 -3
  26. package/dist/{chunk-OD4SSY2U.js.map → chunk-7LZJNLA5.js.map} +1 -1
  27. package/dist/{chunk-7XUYFFR4.cjs → chunk-7UOLHNWC.cjs} +5 -5
  28. package/dist/{chunk-7XUYFFR4.cjs.map → chunk-7UOLHNWC.cjs.map} +1 -1
  29. package/dist/{chunk-2SYZXD54.js → chunk-D4QLTJSM.js} +3 -3
  30. package/dist/{chunk-2SYZXD54.js.map → chunk-D4QLTJSM.js.map} +1 -1
  31. package/dist/{chunk-CT3ZKTOF.js → chunk-JPD2CTC3.js} +3 -3
  32. package/dist/{chunk-CT3ZKTOF.js.map → chunk-JPD2CTC3.js.map} +1 -1
  33. package/dist/{chunk-AX6JGVTZ.js → chunk-LTXQOEIC.js} +30 -5
  34. package/dist/chunk-LTXQOEIC.js.map +1 -0
  35. package/dist/{chunk-PFBRJBUL.cjs → chunk-UGHQV7MP.cjs} +55 -55
  36. package/dist/{chunk-PFBRJBUL.cjs.map → chunk-UGHQV7MP.cjs.map} +1 -1
  37. package/dist/{chunk-4WMMBDS5.js → chunk-WIC7DRXW.js} +3 -3
  38. package/dist/{chunk-4WMMBDS5.js.map → chunk-WIC7DRXW.js.map} +1 -1
  39. package/dist/{chunk-2HIYYMWY.cjs → chunk-YYUHLYM2.cjs} +54 -54
  40. package/dist/{chunk-2HIYYMWY.cjs.map → chunk-YYUHLYM2.cjs.map} +1 -1
  41. package/dist/{chunk-ACGSAMD3.js → chunk-Z2JCLZFJ.js} +3 -3
  42. package/dist/chunk-Z2JCLZFJ.js.map +1 -0
  43. package/dist/graph-merge/index.cjs +28 -5
  44. package/dist/graph-merge/index.cjs.map +1 -1
  45. package/dist/graph-merge/index.d.cts +7 -4
  46. package/dist/graph-merge/index.d.ts +7 -4
  47. package/dist/graph-merge/index.js +24 -1
  48. package/dist/graph-merge/index.js.map +1 -1
  49. package/dist/index.cjs.map +1 -1
  50. package/dist/index.d.cts +2 -2
  51. package/dist/index.d.ts +2 -2
  52. package/dist/index.js.map +1 -1
  53. package/dist/ingestion-import-target-XPxZYw89.d.cts +17 -0
  54. package/dist/ingestion-import-target-dNeL7iAv.d.ts +17 -0
  55. package/dist/interchange/index.cjs +25 -25
  56. package/dist/interchange/index.d.cts +9 -6
  57. package/dist/interchange/index.d.ts +9 -6
  58. package/dist/interchange/index.js +2 -2
  59. package/dist/profiler/index.d.cts +1 -1
  60. package/dist/profiler/index.d.ts +1 -1
  61. package/dist/provenance/index.d.cts +1 -1
  62. package/dist/provenance/index.d.ts +1 -1
  63. package/dist/{store-UzrGvZOo.d.ts → store-DRrFCx5x.d.ts} +9 -1
  64. package/dist/{store-JUVvtmR4.d.cts → store-bphCSo7z.d.cts} +9 -1
  65. package/package.json +2 -3
  66. package/dist/chunk-ACGSAMD3.js.map +0 -1
  67. package/dist/chunk-AX6JGVTZ.js.map +0 -1
  68. package/dist/chunk-OTUPEF2W.cjs.map +0 -1
  69. package/dist/chunk-WCCATHMB.cjs.map +0 -1
@@ -1,4 +1,4 @@
1
- import { createSqliteBackend } from './chunk-2SYZXD54.js';
1
+ import { createSqliteBackend } from './chunk-D4QLTJSM.js';
2
2
  import { sqliteVecStrategy } from './chunk-7SQSZN2J.js';
3
3
  import { tables2, generateSqliteDDL } from './chunk-6SWPJEYN.js';
4
4
  import { wrapWithManagedClose } from './chunk-UGHG7PGX.js';
@@ -179,5 +179,5 @@ function tryLoadSqliteVec(sqlite) {
179
179
  }
180
180
 
181
181
  export { DEFAULT_LOCAL_SQLITE_PRAGMAS, createLocalSqliteBackend };
182
- //# sourceMappingURL=chunk-4WMMBDS5.js.map
183
- //# sourceMappingURL=chunk-4WMMBDS5.js.map
182
+ //# sourceMappingURL=chunk-WIC7DRXW.js.map
183
+ //# sourceMappingURL=chunk-WIC7DRXW.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/backend/sqlite/local-options.ts","../src/backend/sqlite/local.ts"],"names":["tables"],"mappings":"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","file":"chunk-4WMMBDS5.js","sourcesContent":["/** Journal modes accepted by local SQLite connections. */\nexport type LocalSqliteJournalMode =\n \"wal\" | \"delete\" | \"truncate\" | \"persist\" | \"memory\" | \"off\";\n\n/** Synchronous levels accepted by local SQLite connections. */\nexport type LocalSqliteSynchronousMode = \"off\" | \"normal\" | \"full\" | \"extra\";\n\n/** Connection pragmas applied when TypeGraph opens a local SQLite database. */\nexport type LocalSqlitePragmaOptions = Readonly<{\n /** `PRAGMA journal_mode`. Default: `\"wal\"` (no-op on `\":memory:\"`). */\n journalMode?: LocalSqliteJournalMode;\n /** `PRAGMA synchronous`. Default: `\"normal\"`. */\n synchronous?: LocalSqliteSynchronousMode;\n /** `PRAGMA busy_timeout`, in milliseconds. Default: `5000`. */\n busyTimeoutMs?: number;\n /**\n * `PRAGMA cache_size`, expressed as a negative KiB value. Positive values\n * mean pages in SQLite and are rejected to prevent accidental oversizing.\n */\n cacheSizeKib?: number | undefined;\n /** `PRAGMA mmap_size`, in non-negative bytes. */\n mmapSizeBytes?: number | undefined;\n /**\n * `PRAGMA wal_autocheckpoint`, in WAL pages. Use `0` to disable automatic\n * checkpoints and run them explicitly after controlled bulk loads.\n */\n walAutocheckpointPages?: number | undefined;\n}>;\n\n/** Defaults for TypeGraph-owned local SQLite connections. */\nexport const DEFAULT_LOCAL_SQLITE_PRAGMAS: Required<LocalSqlitePragmaOptions> =\n {\n journalMode: \"wal\",\n synchronous: \"normal\",\n busyTimeoutMs: 5000,\n cacheSizeKib: undefined,\n mmapSizeBytes: undefined,\n walAutocheckpointPages: undefined,\n };\n","/**\n * Local SQLite backend using better-sqlite3.\n *\n * This module depends on the `better-sqlite3` native addon and should only\n * be imported in Node.js environments. For bundler-friendly SQLite DDL\n * generation and Drizzle backend creation, import from `@nicia-ai/typegraph/adapters/drizzle/sqlite`.\n *\n * @example In-memory database (default)\n * ```typescript\n * import { createLocalSqliteBackend } from \"@nicia-ai/typegraph/adapters/drizzle/sqlite/local\";\n *\n * const { backend, db } = createLocalSqliteBackend();\n * const store = createStore(graph, backend);\n * ```\n *\n * @example File-based database for persistent local development\n * ```typescript\n * import { createLocalSqliteBackend } from \"@nicia-ai/typegraph/adapters/drizzle/sqlite/local\";\n *\n * const { backend, db } = createLocalSqliteBackend({ path: \"./dev.db\" });\n * const store = createStore(graph, backend);\n * ```\n */\nimport { createRequire } from \"node:module\";\n\nimport Database from \"better-sqlite3\";\nimport {\n type BetterSQLite3Database,\n drizzle,\n} from \"drizzle-orm/better-sqlite3\";\n\nimport { ConfigurationError } from \"../../errors\";\nimport { sqliteVecStrategy } from \"../../query/dialect/vector/sqlite-vec-strategy\";\nimport { wrapWithManagedClose } from \"../derive-backend\";\nimport { generateSqliteDDL } from \"../drizzle/ddl\";\nimport { type AnySqliteDatabase } from \"../drizzle/execution\";\nexport type { AnySqliteDatabase } from \"../drizzle/execution\";\nimport {\n createSqliteBackend,\n type SqliteTables,\n tables as defaultTables,\n} from \"../drizzle/sqlite\";\nimport {\n DEFAULT_LOCAL_SQLITE_PRAGMAS,\n type LocalSqliteJournalMode,\n type LocalSqlitePragmaOptions,\n type LocalSqliteSynchronousMode,\n} from \"./local-options\";\n\nexport {\n DEFAULT_LOCAL_SQLITE_PRAGMAS,\n type LocalSqliteJournalMode,\n type LocalSqlitePragmaOptions,\n type LocalSqliteSynchronousMode,\n} from \"./local-options\";\nimport { type AdapterBackend, type BackendCapabilities } from \"../types\";\n\nexport type {\n ContributionDiagnostic,\n ContributionDiagnosticState,\n ContributionRepairEntry,\n ContributionRepairResult,\n} from \"../types\";\n\nconst nodeRequire = createRequire(import.meta.url);\n\n// ============================================================\n// Native Addon Helpers\n// ============================================================\n\ntype NodeModuleVersionMismatch = Readonly<{\n compiled: number;\n required: number;\n}>;\n\nfunction getUnknownErrorMessage(error: unknown): string {\n if (error instanceof Error) return error.message;\n return String(error);\n}\n\nfunction parseNodeModuleVersionMismatchMessage(\n message: string,\n): NodeModuleVersionMismatch | undefined {\n const regexp =\n /NODE_MODULE_VERSION (?<compiled>\\d+)[\\s\\S]*?NODE_MODULE_VERSION (?<required>\\d+)/;\n const match = regexp.exec(message);\n if (!match?.groups) return undefined;\n\n const compiled = Number(match.groups[\"compiled\"]);\n const required = Number(match.groups[\"required\"]);\n\n if (!Number.isFinite(compiled) || !Number.isFinite(required))\n return undefined;\n\n return { compiled, required };\n}\n\nfunction createDatabase(path: string): Database.Database {\n try {\n return new Database(path);\n } catch (error) {\n const message = getUnknownErrorMessage(error);\n const mismatch = parseNodeModuleVersionMismatchMessage(message);\n if (!mismatch) throw error;\n\n throw new ConfigurationError(\n [\n \"Failed to load better-sqlite3 native addon.\",\n `It was compiled for NODE_MODULE_VERSION ${mismatch.compiled}, but this Node.js runtime requires ${mismatch.required}.`,\n \"This usually happens after switching Node versions without rebuilding native dependencies.\",\n \"Rebuild with: pnpm rebuild better-sqlite3 (or npm rebuild better-sqlite3).\",\n ].join(\" \"),\n {\n nodeVersion: process.version,\n nodeModuleVersion: process.versions.modules,\n compiledNodeModuleVersion: mismatch.compiled,\n requiredNodeModuleVersion: mismatch.required,\n },\n { cause: error },\n );\n }\n}\n\n// ============================================================\n// Types\n// ============================================================\n\nconst LOCAL_SQLITE_JOURNAL_MODES: readonly LocalSqliteJournalMode[] = [\n \"wal\",\n \"delete\",\n \"truncate\",\n \"persist\",\n \"memory\",\n \"off\",\n];\n\nconst LOCAL_SQLITE_SYNCHRONOUS_MODES: readonly LocalSqliteSynchronousMode[] = [\n \"off\",\n \"normal\",\n \"full\",\n \"extra\",\n];\n\nconst SQLITE_MAX_WAL_AUTOCHECKPOINT_PAGES = 2_147_483_647;\n\nfunction applyConnectionPragmas(\n sqlite: Database.Database,\n pragmas: LocalSqlitePragmaOptions | false | undefined,\n): void {\n if (pragmas === false) return;\n const resolved: Required<LocalSqlitePragmaOptions> = {\n ...DEFAULT_LOCAL_SQLITE_PRAGMAS,\n ...pragmas,\n };\n\n // Runtime guards mirror the compile-time unions: pragma values are spliced\n // into pragma statements, so reject anything outside the allowlists rather\n // than forwarding it to SQLite.\n if (!LOCAL_SQLITE_JOURNAL_MODES.includes(resolved.journalMode)) {\n throw new ConfigurationError(\n `Invalid journalMode pragma: ${resolved.journalMode}. ` +\n `Expected one of: ${LOCAL_SQLITE_JOURNAL_MODES.join(\", \")}.`,\n { journalMode: resolved.journalMode },\n );\n }\n if (!LOCAL_SQLITE_SYNCHRONOUS_MODES.includes(resolved.synchronous)) {\n throw new ConfigurationError(\n `Invalid synchronous pragma: ${resolved.synchronous}. ` +\n `Expected one of: ${LOCAL_SQLITE_SYNCHRONOUS_MODES.join(\", \")}.`,\n { synchronous: resolved.synchronous },\n );\n }\n if (\n !Number.isSafeInteger(resolved.busyTimeoutMs) ||\n resolved.busyTimeoutMs < 0\n ) {\n throw new ConfigurationError(\n `Invalid busyTimeoutMs pragma: ${String(resolved.busyTimeoutMs)}. ` +\n \"Expected a non-negative integer number of milliseconds.\",\n { busyTimeoutMs: resolved.busyTimeoutMs },\n );\n }\n if (\n resolved.cacheSizeKib !== undefined &&\n (!Number.isSafeInteger(resolved.cacheSizeKib) || resolved.cacheSizeKib >= 0)\n ) {\n throw new ConfigurationError(\n `Invalid cacheSizeKib pragma: ${String(resolved.cacheSizeKib)}. ` +\n \"Expected a negative safe integer — SQLite's own cache_size pragma \" +\n \"interprets a positive value as a page count, not KiB, so a caller \" +\n 'who passes e.g. 131072 meaning \"131072 KiB\" silently gets ' +\n \"131072 pages (~512MiB at the default 4KiB page size) instead.\",\n { cacheSizeKib: resolved.cacheSizeKib },\n );\n }\n if (\n resolved.mmapSizeBytes !== undefined &&\n (!Number.isSafeInteger(resolved.mmapSizeBytes) ||\n resolved.mmapSizeBytes < 0)\n ) {\n throw new ConfigurationError(\n `Invalid mmapSizeBytes pragma: ${String(resolved.mmapSizeBytes)}. ` +\n \"Expected a non-negative safe integer number of bytes.\",\n { mmapSizeBytes: resolved.mmapSizeBytes },\n );\n }\n if (\n resolved.walAutocheckpointPages !== undefined &&\n (!Number.isSafeInteger(resolved.walAutocheckpointPages) ||\n resolved.walAutocheckpointPages < 0 ||\n resolved.walAutocheckpointPages > SQLITE_MAX_WAL_AUTOCHECKPOINT_PAGES)\n ) {\n throw new ConfigurationError(\n `Invalid walAutocheckpointPages pragma: ${String(resolved.walAutocheckpointPages)}. ` +\n `Expected an integer between 0 and ${SQLITE_MAX_WAL_AUTOCHECKPOINT_PAGES} ` +\n \"WAL pages (0 disables automatic checkpointing entirely).\",\n { walAutocheckpointPages: resolved.walAutocheckpointPages },\n );\n }\n\n // \":memory:\" databases always journal in memory; SQLite answers the WAL\n // request with \"memory\" instead of erroring, so no special-casing needed.\n sqlite.pragma(`journal_mode = ${resolved.journalMode}`);\n sqlite.pragma(`synchronous = ${resolved.synchronous}`);\n sqlite.pragma(`busy_timeout = ${resolved.busyTimeoutMs}`);\n if (resolved.cacheSizeKib !== undefined) {\n sqlite.pragma(`cache_size = ${resolved.cacheSizeKib}`);\n }\n if (resolved.mmapSizeBytes !== undefined) {\n sqlite.pragma(`mmap_size = ${resolved.mmapSizeBytes}`);\n }\n if (resolved.walAutocheckpointPages !== undefined) {\n sqlite.pragma(`wal_autocheckpoint = ${resolved.walAutocheckpointPages}`);\n }\n}\n\n/**\n * Options for creating a local SQLite backend.\n */\nexport type LocalSqliteBackendOptions = Readonly<{\n /**\n * Path to the SQLite database file.\n * Defaults to \":memory:\" for an in-memory database.\n */\n path?: string;\n\n /**\n * Connection pragmas applied at open. Defaults to\n * {@link DEFAULT_LOCAL_SQLITE_PRAGMAS} (WAL, `synchronous=NORMAL`, 5s busy\n * timeout, and SQLite's own tiny built-in page cache / disabled mmap\n * left untouched). Individual values merge over the defaults; pass\n * `false` to skip pragma configuration entirely and keep the driver\n * defaults (rollback journal, `synchronous=FULL`, and better-sqlite3's\n * own 5s busy timeout from its `timeout` constructor option). Set\n * `cacheSizeKib`/`mmapSizeBytes` explicitly once a database's working\n * set is known to exceed SQLite's 2MiB default cache — otherwise every\n * query pays a fresh disk read per page past that tiny working set. Set\n * `walAutocheckpointPages` explicitly for a bulk-insert-heavy workload —\n * SQLite's own default checkpoints every ~4MiB of WAL growth, which gets\n * more expensive as the database file grows over a large load.\n */\n pragmas?: LocalSqlitePragmaOptions | false;\n\n /**\n * Custom table definitions.\n * Defaults to standard TypeGraph table names.\n */\n tables?: SqliteTables;\n\n /**\n * Override specific backend capabilities — e.g. to simulate an engine-level\n * gap like missing SQL window functions in tests. Forwarded to\n * createSqliteBackend.\n */\n capabilities?: Partial<BackendCapabilities>;\n}>;\n\n/**\n * Result of creating a local SQLite backend.\n */\nexport type LocalSqliteBackendResult = Readonly<{\n /**\n * The GraphBackend instance for use with createStore.\n */\n backend: AdapterBackend<AnySqliteDatabase>;\n\n /**\n * The underlying Drizzle database instance.\n * Useful for direct SQL access or cleanup.\n */\n db: BetterSQLite3Database;\n}>;\n\n// ============================================================\n// Factory Function\n// ============================================================\n\n/**\n * Creates a SQLite backend with minimal configuration.\n *\n * This is a convenience function for local development and testing.\n * It handles database creation, schema migration, and backend setup.\n *\n * For production deployments or custom configurations, use createSqliteBackend\n * directly with your own Drizzle database instance.\n *\n * @param options - Configuration options\n * @returns Backend and database instances\n *\n * @example In-memory database (default)\n * ```typescript\n * const { backend } = createLocalSqliteBackend();\n * const store = createStore(graph, backend);\n * ```\n *\n * @example File-based database\n * ```typescript\n * const { backend, db } = createLocalSqliteBackend({ path: \"./data.db\" });\n * const store = createStore(graph, backend);\n * ```\n */\nexport function createLocalSqliteBackend(\n options: LocalSqliteBackendOptions = {},\n): LocalSqliteBackendResult {\n const path = options.path ?? \":memory:\";\n const tables = options.tables ?? defaultTables;\n\n const sqlite = createDatabase(path);\n try {\n applyConnectionPragmas(sqlite, options.pragmas);\n\n // Best-effort: load sqlite-vec so embedding fields are persisted to\n // per-`(kind, field)` `vec0` storage. Without it, nodes with\n // `embedding()` fields validate and insert but their vectors are silently\n // dropped. When the user has installed sqlite-vec as a peer dep we load\n // it and wire the strategy; otherwise we proceed without vector support.\n const hasSqliteVec = tryLoadSqliteVec(sqlite);\n\n const db = drizzle(sqlite);\n\n // Generate and execute DDL from schema\n const ddlStatements = generateSqliteDDL(tables);\n for (const statement of ddlStatements) {\n sqlite.exec(statement);\n }\n\n const backend = createSqliteBackend(db, {\n executionProfile: {\n isSync: true,\n },\n tables,\n ...(hasSqliteVec ? { vector: sqliteVecStrategy } : {}),\n capabilities: {\n ...options.capabilities,\n graphAnalytics: {\n supported:\n options.capabilities?.graphAnalytics?.supported ??\n options.capabilities?.transactions !== false,\n mathFunctions:\n options.capabilities?.graphAnalytics?.mathFunctions ?? true,\n },\n },\n });\n const managedBackend = wrapWithManagedClose(backend, () => {\n sqlite.close();\n });\n\n return { backend: managedBackend, db };\n } catch (error) {\n try {\n sqlite.close();\n } catch {\n // Preserve the provisioning error; a cleanup failure is secondary.\n }\n throw error;\n }\n}\n\nfunction tryLoadSqliteVec(sqlite: Database.Database): boolean {\n try {\n // `sqlite-vec` is an optional peer dep; resolved via createRequire so\n // bundlers don't mark it as a hard import. Node resolves the package\n // only when it's actually installed.\n const module_: unknown = nodeRequire(\"sqlite-vec\");\n if (\n typeof module_ === \"object\" &&\n module_ !== null &&\n \"load\" in module_ &&\n typeof module_.load === \"function\"\n ) {\n (module_ as { load: (db: Database.Database) => void }).load(sqlite);\n return true;\n }\n return false;\n } catch {\n return false;\n }\n}\nexport type { GraphIdentityConfig } from \"../../core/define-graph\";\n"]}
1
+ {"version":3,"sources":["../src/backend/sqlite/local-options.ts","../src/backend/sqlite/local.ts"],"names":["tables"],"mappings":"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","file":"chunk-WIC7DRXW.js","sourcesContent":["/** Journal modes accepted by local SQLite connections. */\nexport type LocalSqliteJournalMode =\n \"wal\" | \"delete\" | \"truncate\" | \"persist\" | \"memory\" | \"off\";\n\n/** Synchronous levels accepted by local SQLite connections. */\nexport type LocalSqliteSynchronousMode = \"off\" | \"normal\" | \"full\" | \"extra\";\n\n/** Connection pragmas applied when TypeGraph opens a local SQLite database. */\nexport type LocalSqlitePragmaOptions = Readonly<{\n /** `PRAGMA journal_mode`. Default: `\"wal\"` (no-op on `\":memory:\"`). */\n journalMode?: LocalSqliteJournalMode;\n /** `PRAGMA synchronous`. Default: `\"normal\"`. */\n synchronous?: LocalSqliteSynchronousMode;\n /** `PRAGMA busy_timeout`, in milliseconds. Default: `5000`. */\n busyTimeoutMs?: number;\n /**\n * `PRAGMA cache_size`, expressed as a negative KiB value. Positive values\n * mean pages in SQLite and are rejected to prevent accidental oversizing.\n */\n cacheSizeKib?: number | undefined;\n /** `PRAGMA mmap_size`, in non-negative bytes. */\n mmapSizeBytes?: number | undefined;\n /**\n * `PRAGMA wal_autocheckpoint`, in WAL pages. Use `0` to disable automatic\n * checkpoints and run them explicitly after controlled bulk loads.\n */\n walAutocheckpointPages?: number | undefined;\n}>;\n\n/** Defaults for TypeGraph-owned local SQLite connections. */\nexport const DEFAULT_LOCAL_SQLITE_PRAGMAS: Required<LocalSqlitePragmaOptions> =\n {\n journalMode: \"wal\",\n synchronous: \"normal\",\n busyTimeoutMs: 5000,\n cacheSizeKib: undefined,\n mmapSizeBytes: undefined,\n walAutocheckpointPages: undefined,\n };\n","/**\n * Local SQLite backend using better-sqlite3.\n *\n * This module depends on the `better-sqlite3` native addon and should only\n * be imported in Node.js environments. For bundler-friendly SQLite DDL\n * generation and Drizzle backend creation, import from `@nicia-ai/typegraph/adapters/drizzle/sqlite`.\n *\n * @example In-memory database (default)\n * ```typescript\n * import { createLocalSqliteBackend } from \"@nicia-ai/typegraph/adapters/drizzle/sqlite/local\";\n *\n * const { backend, db } = createLocalSqliteBackend();\n * const store = createStore(graph, backend);\n * ```\n *\n * @example File-based database for persistent local development\n * ```typescript\n * import { createLocalSqliteBackend } from \"@nicia-ai/typegraph/adapters/drizzle/sqlite/local\";\n *\n * const { backend, db } = createLocalSqliteBackend({ path: \"./dev.db\" });\n * const store = createStore(graph, backend);\n * ```\n */\nimport { createRequire } from \"node:module\";\n\nimport Database from \"better-sqlite3\";\nimport {\n type BetterSQLite3Database,\n drizzle,\n} from \"drizzle-orm/better-sqlite3\";\n\nimport { ConfigurationError } from \"../../errors\";\nimport { sqliteVecStrategy } from \"../../query/dialect/vector/sqlite-vec-strategy\";\nimport { wrapWithManagedClose } from \"../derive-backend\";\nimport { generateSqliteDDL } from \"../drizzle/ddl\";\nimport { type AnySqliteDatabase } from \"../drizzle/execution\";\nexport type { AnySqliteDatabase } from \"../drizzle/execution\";\nimport {\n createSqliteBackend,\n type SqliteTables,\n tables as defaultTables,\n} from \"../drizzle/sqlite\";\nimport {\n DEFAULT_LOCAL_SQLITE_PRAGMAS,\n type LocalSqliteJournalMode,\n type LocalSqlitePragmaOptions,\n type LocalSqliteSynchronousMode,\n} from \"./local-options\";\n\nexport {\n DEFAULT_LOCAL_SQLITE_PRAGMAS,\n type LocalSqliteJournalMode,\n type LocalSqlitePragmaOptions,\n type LocalSqliteSynchronousMode,\n} from \"./local-options\";\nimport { type AdapterBackend, type BackendCapabilities } from \"../types\";\n\nexport type {\n ContributionDiagnostic,\n ContributionDiagnosticState,\n ContributionRepairEntry,\n ContributionRepairResult,\n} from \"../types\";\n\nconst nodeRequire = createRequire(import.meta.url);\n\n// ============================================================\n// Native Addon Helpers\n// ============================================================\n\ntype NodeModuleVersionMismatch = Readonly<{\n compiled: number;\n required: number;\n}>;\n\nfunction getUnknownErrorMessage(error: unknown): string {\n if (error instanceof Error) return error.message;\n return String(error);\n}\n\nfunction parseNodeModuleVersionMismatchMessage(\n message: string,\n): NodeModuleVersionMismatch | undefined {\n const regexp =\n /NODE_MODULE_VERSION (?<compiled>\\d+)[\\s\\S]*?NODE_MODULE_VERSION (?<required>\\d+)/;\n const match = regexp.exec(message);\n if (!match?.groups) return undefined;\n\n const compiled = Number(match.groups[\"compiled\"]);\n const required = Number(match.groups[\"required\"]);\n\n if (!Number.isFinite(compiled) || !Number.isFinite(required))\n return undefined;\n\n return { compiled, required };\n}\n\nfunction createDatabase(path: string): Database.Database {\n try {\n return new Database(path);\n } catch (error) {\n const message = getUnknownErrorMessage(error);\n const mismatch = parseNodeModuleVersionMismatchMessage(message);\n if (!mismatch) throw error;\n\n throw new ConfigurationError(\n [\n \"Failed to load better-sqlite3 native addon.\",\n `It was compiled for NODE_MODULE_VERSION ${mismatch.compiled}, but this Node.js runtime requires ${mismatch.required}.`,\n \"This usually happens after switching Node versions without rebuilding native dependencies.\",\n \"Rebuild with: pnpm rebuild better-sqlite3 (or npm rebuild better-sqlite3).\",\n ].join(\" \"),\n {\n nodeVersion: process.version,\n nodeModuleVersion: process.versions.modules,\n compiledNodeModuleVersion: mismatch.compiled,\n requiredNodeModuleVersion: mismatch.required,\n },\n { cause: error },\n );\n }\n}\n\n// ============================================================\n// Types\n// ============================================================\n\nconst LOCAL_SQLITE_JOURNAL_MODES: readonly LocalSqliteJournalMode[] = [\n \"wal\",\n \"delete\",\n \"truncate\",\n \"persist\",\n \"memory\",\n \"off\",\n];\n\nconst LOCAL_SQLITE_SYNCHRONOUS_MODES: readonly LocalSqliteSynchronousMode[] = [\n \"off\",\n \"normal\",\n \"full\",\n \"extra\",\n];\n\nconst SQLITE_MAX_WAL_AUTOCHECKPOINT_PAGES = 2_147_483_647;\n\nfunction applyConnectionPragmas(\n sqlite: Database.Database,\n pragmas: LocalSqlitePragmaOptions | false | undefined,\n): void {\n if (pragmas === false) return;\n const resolved: Required<LocalSqlitePragmaOptions> = {\n ...DEFAULT_LOCAL_SQLITE_PRAGMAS,\n ...pragmas,\n };\n\n // Runtime guards mirror the compile-time unions: pragma values are spliced\n // into pragma statements, so reject anything outside the allowlists rather\n // than forwarding it to SQLite.\n if (!LOCAL_SQLITE_JOURNAL_MODES.includes(resolved.journalMode)) {\n throw new ConfigurationError(\n `Invalid journalMode pragma: ${resolved.journalMode}. ` +\n `Expected one of: ${LOCAL_SQLITE_JOURNAL_MODES.join(\", \")}.`,\n { journalMode: resolved.journalMode },\n );\n }\n if (!LOCAL_SQLITE_SYNCHRONOUS_MODES.includes(resolved.synchronous)) {\n throw new ConfigurationError(\n `Invalid synchronous pragma: ${resolved.synchronous}. ` +\n `Expected one of: ${LOCAL_SQLITE_SYNCHRONOUS_MODES.join(\", \")}.`,\n { synchronous: resolved.synchronous },\n );\n }\n if (\n !Number.isSafeInteger(resolved.busyTimeoutMs) ||\n resolved.busyTimeoutMs < 0\n ) {\n throw new ConfigurationError(\n `Invalid busyTimeoutMs pragma: ${String(resolved.busyTimeoutMs)}. ` +\n \"Expected a non-negative integer number of milliseconds.\",\n { busyTimeoutMs: resolved.busyTimeoutMs },\n );\n }\n if (\n resolved.cacheSizeKib !== undefined &&\n (!Number.isSafeInteger(resolved.cacheSizeKib) || resolved.cacheSizeKib >= 0)\n ) {\n throw new ConfigurationError(\n `Invalid cacheSizeKib pragma: ${String(resolved.cacheSizeKib)}. ` +\n \"Expected a negative safe integer — SQLite's own cache_size pragma \" +\n \"interprets a positive value as a page count, not KiB, so a caller \" +\n 'who passes e.g. 131072 meaning \"131072 KiB\" silently gets ' +\n \"131072 pages (~512MiB at the default 4KiB page size) instead.\",\n { cacheSizeKib: resolved.cacheSizeKib },\n );\n }\n if (\n resolved.mmapSizeBytes !== undefined &&\n (!Number.isSafeInteger(resolved.mmapSizeBytes) ||\n resolved.mmapSizeBytes < 0)\n ) {\n throw new ConfigurationError(\n `Invalid mmapSizeBytes pragma: ${String(resolved.mmapSizeBytes)}. ` +\n \"Expected a non-negative safe integer number of bytes.\",\n { mmapSizeBytes: resolved.mmapSizeBytes },\n );\n }\n if (\n resolved.walAutocheckpointPages !== undefined &&\n (!Number.isSafeInteger(resolved.walAutocheckpointPages) ||\n resolved.walAutocheckpointPages < 0 ||\n resolved.walAutocheckpointPages > SQLITE_MAX_WAL_AUTOCHECKPOINT_PAGES)\n ) {\n throw new ConfigurationError(\n `Invalid walAutocheckpointPages pragma: ${String(resolved.walAutocheckpointPages)}. ` +\n `Expected an integer between 0 and ${SQLITE_MAX_WAL_AUTOCHECKPOINT_PAGES} ` +\n \"WAL pages (0 disables automatic checkpointing entirely).\",\n { walAutocheckpointPages: resolved.walAutocheckpointPages },\n );\n }\n\n // \":memory:\" databases always journal in memory; SQLite answers the WAL\n // request with \"memory\" instead of erroring, so no special-casing needed.\n sqlite.pragma(`journal_mode = ${resolved.journalMode}`);\n sqlite.pragma(`synchronous = ${resolved.synchronous}`);\n sqlite.pragma(`busy_timeout = ${resolved.busyTimeoutMs}`);\n if (resolved.cacheSizeKib !== undefined) {\n sqlite.pragma(`cache_size = ${resolved.cacheSizeKib}`);\n }\n if (resolved.mmapSizeBytes !== undefined) {\n sqlite.pragma(`mmap_size = ${resolved.mmapSizeBytes}`);\n }\n if (resolved.walAutocheckpointPages !== undefined) {\n sqlite.pragma(`wal_autocheckpoint = ${resolved.walAutocheckpointPages}`);\n }\n}\n\n/**\n * Options for creating a local SQLite backend.\n */\nexport type LocalSqliteBackendOptions = Readonly<{\n /**\n * Path to the SQLite database file.\n * Defaults to \":memory:\" for an in-memory database.\n */\n path?: string;\n\n /**\n * Connection pragmas applied at open. Defaults to\n * {@link DEFAULT_LOCAL_SQLITE_PRAGMAS} (WAL, `synchronous=NORMAL`, 5s busy\n * timeout, and SQLite's own tiny built-in page cache / disabled mmap\n * left untouched). Individual values merge over the defaults; pass\n * `false` to skip pragma configuration entirely and keep the driver\n * defaults (rollback journal, `synchronous=FULL`, and better-sqlite3's\n * own 5s busy timeout from its `timeout` constructor option). Set\n * `cacheSizeKib`/`mmapSizeBytes` explicitly once a database's working\n * set is known to exceed SQLite's 2MiB default cache — otherwise every\n * query pays a fresh disk read per page past that tiny working set. Set\n * `walAutocheckpointPages` explicitly for a bulk-insert-heavy workload —\n * SQLite's own default checkpoints every ~4MiB of WAL growth, which gets\n * more expensive as the database file grows over a large load.\n */\n pragmas?: LocalSqlitePragmaOptions | false;\n\n /**\n * Custom table definitions.\n * Defaults to standard TypeGraph table names.\n */\n tables?: SqliteTables;\n\n /**\n * Override specific backend capabilities — e.g. to simulate an engine-level\n * gap like missing SQL window functions in tests. Forwarded to\n * createSqliteBackend.\n */\n capabilities?: Partial<BackendCapabilities>;\n}>;\n\n/**\n * Result of creating a local SQLite backend.\n */\nexport type LocalSqliteBackendResult = Readonly<{\n /**\n * The GraphBackend instance for use with createStore.\n */\n backend: AdapterBackend<AnySqliteDatabase>;\n\n /**\n * The underlying Drizzle database instance.\n * Useful for direct SQL access or cleanup.\n */\n db: BetterSQLite3Database;\n}>;\n\n// ============================================================\n// Factory Function\n// ============================================================\n\n/**\n * Creates a SQLite backend with minimal configuration.\n *\n * This is a convenience function for local development and testing.\n * It handles database creation, schema migration, and backend setup.\n *\n * For production deployments or custom configurations, use createSqliteBackend\n * directly with your own Drizzle database instance.\n *\n * @param options - Configuration options\n * @returns Backend and database instances\n *\n * @example In-memory database (default)\n * ```typescript\n * const { backend } = createLocalSqliteBackend();\n * const store = createStore(graph, backend);\n * ```\n *\n * @example File-based database\n * ```typescript\n * const { backend, db } = createLocalSqliteBackend({ path: \"./data.db\" });\n * const store = createStore(graph, backend);\n * ```\n */\nexport function createLocalSqliteBackend(\n options: LocalSqliteBackendOptions = {},\n): LocalSqliteBackendResult {\n const path = options.path ?? \":memory:\";\n const tables = options.tables ?? defaultTables;\n\n const sqlite = createDatabase(path);\n try {\n applyConnectionPragmas(sqlite, options.pragmas);\n\n // Best-effort: load sqlite-vec so embedding fields are persisted to\n // per-`(kind, field)` `vec0` storage. Without it, nodes with\n // `embedding()` fields validate and insert but their vectors are silently\n // dropped. When the user has installed sqlite-vec as a peer dep we load\n // it and wire the strategy; otherwise we proceed without vector support.\n const hasSqliteVec = tryLoadSqliteVec(sqlite);\n\n const db = drizzle(sqlite);\n\n // Generate and execute DDL from schema\n const ddlStatements = generateSqliteDDL(tables);\n for (const statement of ddlStatements) {\n sqlite.exec(statement);\n }\n\n const backend = createSqliteBackend(db, {\n executionProfile: {\n isSync: true,\n },\n tables,\n ...(hasSqliteVec ? { vector: sqliteVecStrategy } : {}),\n capabilities: {\n ...options.capabilities,\n graphAnalytics: {\n supported:\n options.capabilities?.graphAnalytics?.supported ??\n options.capabilities?.transactions !== false,\n mathFunctions:\n options.capabilities?.graphAnalytics?.mathFunctions ?? true,\n },\n },\n });\n const managedBackend = wrapWithManagedClose(backend, () => {\n sqlite.close();\n });\n\n return { backend: managedBackend, db };\n } catch (error) {\n try {\n sqlite.close();\n } catch {\n // Preserve the provisioning error; a cleanup failure is secondary.\n }\n throw error;\n }\n}\n\nfunction tryLoadSqliteVec(sqlite: Database.Database): boolean {\n try {\n // `sqlite-vec` is an optional peer dep; resolved via createRequire so\n // bundlers don't mark it as a hard import. Node resolves the package\n // only when it's actually installed.\n const module_: unknown = nodeRequire(\"sqlite-vec\");\n if (\n typeof module_ === \"object\" &&\n module_ !== null &&\n \"load\" in module_ &&\n typeof module_.load === \"function\"\n ) {\n (module_ as { load: (db: Database.Database) => void }).load(sqlite);\n return true;\n }\n return false;\n } catch {\n return false;\n }\n}\nexport type { GraphIdentityConfig } from \"../../core/define-graph\";\n"]}
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var chunkWCCATHMB_cjs = require('./chunk-WCCATHMB.cjs');
3
+ var chunk3QNZ5SAJ_cjs = require('./chunk-3QNZ5SAJ.cjs');
4
4
  var chunkFA2AFWLP_cjs = require('./chunk-FA2AFWLP.cjs');
5
5
  var chunkHDL2ARHX_cjs = require('./chunk-HDL2ARHX.cjs');
6
6
  var chunkWODMN3Q2_cjs = require('./chunk-WODMN3Q2.cjs');
@@ -148,7 +148,7 @@ function resolveSqliteClient(db) {
148
148
  return sqliteClient;
149
149
  }
150
150
  function getOrCreatePreparedStatement(cache, sqliteClient, sqlText, cacheMax) {
151
- return chunkWCCATHMB_cjs.getOrCreateLru(
151
+ return chunk3QNZ5SAJ_cjs.getOrCreateLru(
152
152
  cache,
153
153
  sqlText,
154
154
  cacheMax,
@@ -305,7 +305,7 @@ function computeSqliteBatchChunkSizes(maxBindParameters) {
305
305
  ),
306
306
  embeddingUpsertBatchSize: Math.max(
307
307
  1,
308
- Math.floor(maxBindParameters / chunkWCCATHMB_cjs.EMBEDDING_UPSERT_PARAM_COUNT)
308
+ Math.floor(maxBindParameters / chunk3QNZ5SAJ_cjs.EMBEDDING_UPSERT_PARAM_COUNT)
309
309
  ),
310
310
  fulltextUpsertBatchSize: Math.max(
311
311
  1,
@@ -321,7 +321,7 @@ function computeSqliteBatchChunkSizes(maxBindParameters) {
321
321
  ),
322
322
  findEdgesEndpointChunkSize: Math.max(
323
323
  1,
324
- maxBindParameters - chunkWCCATHMB_cjs.FIND_EDGES_ENDPOINT_FIXED_PARAM_COUNT
324
+ maxBindParameters - chunk3QNZ5SAJ_cjs.FIND_EDGES_ENDPOINT_FIXED_PARAM_COUNT
325
325
  ),
326
326
  getEdgesChunkSize: Math.max(
327
327
  1,
@@ -502,7 +502,7 @@ function createSqliteOperationBackend(options) {
502
502
  const batchConfig = computeSqliteBatchChunkSizes(
503
503
  capabilities.maxBindParameters ?? chunk5PRKMB24_cjs.SQLITE_MAX_BIND_PARAMETERS
504
504
  );
505
- const commonOperationMembers = chunkWCCATHMB_cjs.createCommonOperationBackend({
505
+ const commonOperationMembers = chunk3QNZ5SAJ_cjs.createCommonOperationBackend({
506
506
  batchConfig,
507
507
  execution: {
508
508
  execAll,
@@ -530,7 +530,7 @@ function createSqliteOperationBackend(options) {
530
530
  };
531
531
  const vectorEmbeddingMethods = vectorStrategy === void 0 ? {} : {
532
532
  async upsertEmbedding(params) {
533
- const slot = chunkWCCATHMB_cjs.vectorSlotFromParams(params);
533
+ const slot = chunk3QNZ5SAJ_cjs.vectorSlotFromParams(params);
534
534
  await contributionMaterializer.assertVectorSlot(slot);
535
535
  const statements = vectorStrategy.buildUpsert(slot, params, chunkFA2AFWLP_cjs.nowIso());
536
536
  try {
@@ -538,12 +538,12 @@ function createSqliteOperationBackend(options) {
538
538
  await execRun(statement);
539
539
  }
540
540
  } catch (error) {
541
- throw chunkWCCATHMB_cjs.mapVectorWriteError(error, params);
541
+ throw chunk3QNZ5SAJ_cjs.mapVectorWriteError(error, params);
542
542
  }
543
543
  },
544
544
  async upsertEmbeddingBatch(params) {
545
545
  if (params.rows.length === 0) return;
546
- const slot = chunkWCCATHMB_cjs.vectorSlotFromParams(params);
546
+ const slot = chunk3QNZ5SAJ_cjs.vectorSlotFromParams(params);
547
547
  await contributionMaterializer.assertVectorSlot(slot);
548
548
  const rowsById = new Map(
549
549
  params.rows.map((row) => [row.nodeId, row])
@@ -580,11 +580,11 @@ function createSqliteOperationBackend(options) {
580
580
  }
581
581
  }
582
582
  } catch (error) {
583
- throw chunkWCCATHMB_cjs.mapVectorWriteError(error, params);
583
+ throw chunk3QNZ5SAJ_cjs.mapVectorWriteError(error, params);
584
584
  }
585
585
  },
586
586
  async deleteEmbedding(params) {
587
- const slot = chunkWCCATHMB_cjs.vectorSlotFromParams(params);
587
+ const slot = chunk3QNZ5SAJ_cjs.vectorSlotFromParams(params);
588
588
  await contributionMaterializer.assertVectorSlot(slot);
589
589
  const statements = vectorStrategy.buildDelete(slot, params);
590
590
  for (const statement of statements) {
@@ -593,7 +593,7 @@ function createSqliteOperationBackend(options) {
593
593
  },
594
594
  async deleteEmbeddingBatch(params) {
595
595
  if (params.nodeIds.length === 0) return;
596
- const slot = chunkWCCATHMB_cjs.vectorSlotFromParams(params);
596
+ const slot = chunk3QNZ5SAJ_cjs.vectorSlotFromParams(params);
597
597
  await contributionMaterializer.assertVectorSlot(slot);
598
598
  for (const nodeIds of chunkSIT26LAZ_cjs.chunk(
599
599
  [...new Set(params.nodeIds)],
@@ -616,13 +616,13 @@ function createSqliteOperationBackend(options) {
616
616
  dialect: "SQLite",
617
617
  engine: vectorStrategy.name
618
618
  });
619
- const slot = chunkWCCATHMB_cjs.vectorSlotFromParams(params);
619
+ const slot = chunk3QNZ5SAJ_cjs.vectorSlotFromParams(params);
620
620
  const query = vectorStrategy.buildSearch(
621
621
  slot,
622
622
  params,
623
623
  // Store-compiled candidates (predicates + subclass + currency)
624
624
  // take precedence; the live-node default covers direct backend use.
625
- params.candidates ?? chunkWCCATHMB_cjs.buildLiveNodeCandidates(
625
+ params.candidates ?? chunk3QNZ5SAJ_cjs.buildLiveNodeCandidates(
626
626
  tableNames.nodes,
627
627
  params.graphId,
628
628
  params.nodeKind,
@@ -633,7 +633,7 @@ function createSqliteOperationBackend(options) {
633
633
  try {
634
634
  rows = await execAll(query);
635
635
  } catch (error) {
636
- throw chunkWCCATHMB_cjs.mapVectorWriteError(error, params);
636
+ throw chunk3QNZ5SAJ_cjs.mapVectorWriteError(error, params);
637
637
  }
638
638
  return rows.map((row) => ({
639
639
  nodeId: row.node_id,
@@ -655,7 +655,7 @@ function createSqliteOperationBackend(options) {
655
655
  dialect: "SQLite",
656
656
  engine: vectorStrategy.name
657
657
  });
658
- const slot = chunkWCCATHMB_cjs.vectorSlotFromParams({
658
+ const slot = chunk3QNZ5SAJ_cjs.vectorSlotFromParams({
659
659
  graphId: params.graphId,
660
660
  nodeKind: params.nodeKind,
661
661
  fieldPath: params.vector.fieldPath,
@@ -663,7 +663,7 @@ function createSqliteOperationBackend(options) {
663
663
  metric: params.vector.metric,
664
664
  indexType: params.vector.indexType
665
665
  });
666
- const candidates = params.candidates ?? chunkWCCATHMB_cjs.buildLiveNodeCandidates(
666
+ const candidates = params.candidates ?? chunk3QNZ5SAJ_cjs.buildLiveNodeCandidates(
667
667
  tableNames.nodes,
668
668
  params.graphId,
669
669
  params.nodeKind,
@@ -694,9 +694,9 @@ function createSqliteOperationBackend(options) {
694
694
  try {
695
695
  raw = await execAll(statement);
696
696
  } catch (error) {
697
- throw chunkWCCATHMB_cjs.mapVectorWriteError(error, vectorParams);
697
+ throw chunk3QNZ5SAJ_cjs.mapVectorWriteError(error, vectorParams);
698
698
  }
699
- return raw.map((row) => chunkWCCATHMB_cjs.mapHybridSearchRow(row, toNodeRow));
699
+ return raw.map((row) => chunk3QNZ5SAJ_cjs.mapHybridSearchRow(row, toNodeRow));
700
700
  }
701
701
  } : {}
702
702
  };
@@ -752,7 +752,7 @@ function createSqliteOperationBackend(options) {
752
752
  const active = await commonOperationMembers.getActiveSchema(
753
753
  params.graphId
754
754
  );
755
- chunkWCCATHMB_cjs.assertActiveSchemaVersion(
755
+ chunk3QNZ5SAJ_cjs.assertActiveSchemaVersion(
756
756
  params.graphId,
757
757
  params.expectedVersion,
758
758
  active?.version ?? 0
@@ -760,7 +760,7 @@ function createSqliteOperationBackend(options) {
760
760
  },
761
761
  async createVectorIndex(params) {
762
762
  if (vectorStrategy === void 0) return;
763
- const slot = chunkWCCATHMB_cjs.vectorSlotFromCreateIndexParams(params);
763
+ const slot = chunk3QNZ5SAJ_cjs.vectorSlotFromCreateIndexParams(params);
764
764
  await contributionMaterializer.ensureVectorSlot(slot);
765
765
  const indexStatement = vectorStrategy.buildCreateIndex?.(slot);
766
766
  if (indexStatement !== void 0) {
@@ -769,7 +769,7 @@ function createSqliteOperationBackend(options) {
769
769
  },
770
770
  async dropVectorIndex(params) {
771
771
  if (vectorStrategy === void 0) return;
772
- const slot = chunkWCCATHMB_cjs.vectorSlotFromDropIndexParams(params);
772
+ const slot = chunk3QNZ5SAJ_cjs.vectorSlotFromDropIndexParams(params);
773
773
  const dropStatement = vectorStrategy.buildDropIndex?.(slot);
774
774
  if (dropStatement === void 0) return;
775
775
  try {
@@ -897,7 +897,7 @@ function createSqliteBackend(db, options = {}) {
897
897
  contributions: {
898
898
  supported: true,
899
899
  probe: true,
900
- rebuild: chunkWCCATHMB_cjs.contributionRebuildSupported(
900
+ rebuild: chunk3QNZ5SAJ_cjs.contributionRebuildSupported(
901
901
  fulltextStrategy,
902
902
  tables2.fulltextTableName,
903
903
  declaredCapabilities.transactions
@@ -933,7 +933,7 @@ function createSqliteBackend(db, options = {}) {
933
933
  tableNames.identityClosure,
934
934
  tableNames.identitySeparation
935
935
  ];
936
- const operationStrategy = chunkWCCATHMB_cjs.createSqliteOperationStrategy(
936
+ const operationStrategy = chunk3QNZ5SAJ_cjs.createSqliteOperationStrategy(
937
937
  tables2,
938
938
  fulltextStrategy
939
939
  );
@@ -953,25 +953,25 @@ function createSqliteBackend(db, options = {}) {
953
953
  );
954
954
  const row = rows[0];
955
955
  if (row === void 0) return void 0;
956
- return chunkWCCATHMB_cjs.mapContributionMaterializationRow(
956
+ return chunk3QNZ5SAJ_cjs.mapContributionMaterializationRow(
957
957
  row,
958
- chunkWCCATHMB_cjs.SQLITE_CONTRIBUTION_MAT_TIMESTAMPS.decode
958
+ chunk3QNZ5SAJ_cjs.SQLITE_CONTRIBUTION_MAT_TIMESTAMPS.decode
959
959
  );
960
960
  }
961
961
  async function getContributionMaterializationRows(graphId) {
962
962
  const rows = await db.select().from(matTable).where(drizzleOrm.eq(matTable.graphId, graphId));
963
963
  return rows.map(
964
- (row) => chunkWCCATHMB_cjs.mapContributionMaterializationRow(
964
+ (row) => chunk3QNZ5SAJ_cjs.mapContributionMaterializationRow(
965
965
  row,
966
- chunkWCCATHMB_cjs.SQLITE_CONTRIBUTION_MAT_TIMESTAMPS.decode
966
+ chunk3QNZ5SAJ_cjs.SQLITE_CONTRIBUTION_MAT_TIMESTAMPS.decode
967
967
  )
968
968
  );
969
969
  }
970
970
  async function recordContributionMaterializationRow(params) {
971
971
  await db.insert(matTable).values(
972
- chunkWCCATHMB_cjs.buildContributionInsertValues(
972
+ chunk3QNZ5SAJ_cjs.buildContributionInsertValues(
973
973
  params,
974
- chunkWCCATHMB_cjs.SQLITE_CONTRIBUTION_MAT_TIMESTAMPS.encode
974
+ chunk3QNZ5SAJ_cjs.SQLITE_CONTRIBUTION_MAT_TIMESTAMPS.encode
975
975
  )
976
976
  ).onConflictDoUpdate({
977
977
  target: [
@@ -980,7 +980,7 @@ function createSqliteBackend(db, options = {}) {
980
980
  matTable.owner,
981
981
  matTable.tableName
982
982
  ],
983
- set: chunkWCCATHMB_cjs.buildContributionOnConflictSet(
983
+ set: chunk3QNZ5SAJ_cjs.buildContributionOnConflictSet(
984
984
  matTable.materializedAt,
985
985
  params.materializedAt
986
986
  )
@@ -1000,7 +1000,7 @@ function createSqliteBackend(db, options = {}) {
1000
1000
  const rows = await executionAdapter.execute(
1001
1001
  operationStrategy.buildTableExists(tableName)
1002
1002
  );
1003
- return chunkWCCATHMB_cjs.tableExistsFromRow(rows[0]);
1003
+ return chunk3QNZ5SAJ_cjs.tableExistsFromRow(rows[0]);
1004
1004
  }
1005
1005
  function identityContributionsFor(identityTableNames) {
1006
1006
  const identityTables = chunkHDL2ARHX_cjs.createSqliteTables({
@@ -1013,7 +1013,7 @@ function createSqliteBackend(db, options = {}) {
1013
1013
  (contribution) => IDENTITY_TABLE_LOGICAL_NAMES.has(contribution.logicalName)
1014
1014
  );
1015
1015
  }
1016
- const contributionMaterializer = chunkWCCATHMB_cjs.createContributionMaterializer({
1016
+ const contributionMaterializer = chunk3QNZ5SAJ_cjs.createContributionMaterializer({
1017
1017
  dialect: "sqlite",
1018
1018
  fulltextStrategy,
1019
1019
  fulltextTableName: tables2.fulltextTableName,
@@ -1153,7 +1153,7 @@ function createSqliteBackend(db, options = {}) {
1153
1153
  vectorStrategy,
1154
1154
  contributionMaterializer
1155
1155
  });
1156
- return chunkWCCATHMB_cjs.gateFulltext(
1156
+ return chunk3QNZ5SAJ_cjs.gateFulltext(
1157
1157
  txBackend,
1158
1158
  contributionMaterializer.assertInitialized,
1159
1159
  contributionMaterializer.refuseUnavailableFulltext
@@ -1169,16 +1169,16 @@ function createSqliteBackend(db, options = {}) {
1169
1169
  ...options_.schemaWrite
1170
1170
  });
1171
1171
  }
1172
- await chunkWCCATHMB_cjs.assertTrustedImportDatabaseEmpty(tx, tableNames);
1173
- const indexDefinitions = await chunkWCCATHMB_cjs.suspendSqliteSecondaryIndexes(
1172
+ await chunk3QNZ5SAJ_cjs.assertTrustedImportDatabaseEmpty(tx, tableNames);
1173
+ const indexDefinitions = await chunk3QNZ5SAJ_cjs.suspendSqliteSecondaryIndexes(
1174
1174
  tx,
1175
1175
  tableNames
1176
1176
  );
1177
1177
  const result = await fn(
1178
- chunkWCCATHMB_cjs.createSqliteTrustedImportSession(executionAdapter, tableNames)
1178
+ chunk3QNZ5SAJ_cjs.createSqliteTrustedImportSession(executionAdapter, tableNames)
1179
1179
  );
1180
- await chunkWCCATHMB_cjs.restoreSecondaryIndexes(tx, indexDefinitions);
1181
- await chunkWCCATHMB_cjs.analyzeImportedTables(tx, tableNames);
1180
+ await chunk3QNZ5SAJ_cjs.restoreSecondaryIndexes(tx, indexDefinitions);
1181
+ await chunk3QNZ5SAJ_cjs.analyzeImportedTables(tx, tableNames);
1182
1182
  return result;
1183
1183
  });
1184
1184
  }
@@ -1221,7 +1221,7 @@ function createSqliteBackend(db, options = {}) {
1221
1221
  // uninitialized database throws `StoreNotInitializedError` rather
1222
1222
  // than self-healing (#135). Shared verbatim with the tx-scoped gate
1223
1223
  // via `gateFulltextMethods`.
1224
- ...chunkWCCATHMB_cjs.gateFulltextMethods(
1224
+ ...chunk3QNZ5SAJ_cjs.gateFulltextMethods(
1225
1225
  operations,
1226
1226
  contributionMaterializer.assertInitialized,
1227
1227
  contributionMaterializer.refuseUnavailableFulltext
@@ -1239,26 +1239,26 @@ function createSqliteBackend(db, options = {}) {
1239
1239
  const rows = await db.select().from(t).where(drizzleOrm.eq(t.indexName, indexName));
1240
1240
  const row = rows[0];
1241
1241
  if (row === void 0) return void 0;
1242
- return chunkWCCATHMB_cjs.mapMaterializationRow(row, chunkWCCATHMB_cjs.SQLITE_INDEX_MAT_TIMESTAMPS.decode);
1242
+ return chunk3QNZ5SAJ_cjs.mapMaterializationRow(row, chunk3QNZ5SAJ_cjs.SQLITE_INDEX_MAT_TIMESTAMPS.decode);
1243
1243
  },
1244
1244
  async getIndexMaterializations(statusKeys) {
1245
1245
  if (statusKeys.length === 0) return [];
1246
1246
  const t = tables2.indexMaterializations;
1247
1247
  const rows = await db.select().from(t).where(drizzleOrm.inArray(t.indexName, [...statusKeys]));
1248
1248
  return rows.map(
1249
- (row) => chunkWCCATHMB_cjs.mapMaterializationRow(row, chunkWCCATHMB_cjs.SQLITE_INDEX_MAT_TIMESTAMPS.decode)
1249
+ (row) => chunk3QNZ5SAJ_cjs.mapMaterializationRow(row, chunk3QNZ5SAJ_cjs.SQLITE_INDEX_MAT_TIMESTAMPS.decode)
1250
1250
  );
1251
1251
  },
1252
1252
  async recordIndexMaterialization(params) {
1253
1253
  const t = tables2.indexMaterializations;
1254
1254
  await db.insert(t).values(
1255
- chunkWCCATHMB_cjs.buildMaterializationInsertValues(
1255
+ chunk3QNZ5SAJ_cjs.buildMaterializationInsertValues(
1256
1256
  params,
1257
- chunkWCCATHMB_cjs.SQLITE_INDEX_MAT_TIMESTAMPS.encode
1257
+ chunk3QNZ5SAJ_cjs.SQLITE_INDEX_MAT_TIMESTAMPS.encode
1258
1258
  )
1259
1259
  ).onConflictDoUpdate({
1260
1260
  target: t.indexName,
1261
- set: chunkWCCATHMB_cjs.buildMaterializationOnConflictSet(params.materializedAt)
1261
+ set: chunk3QNZ5SAJ_cjs.buildMaterializationOnConflictSet(params.materializedAt)
1262
1262
  });
1263
1263
  },
1264
1264
  async ensureContributionMaterializationsTable() {
@@ -1280,26 +1280,26 @@ function createSqliteBackend(db, options = {}) {
1280
1280
  const t = tables2.kindRemovals;
1281
1281
  const rows = await db.select().from(t).where(drizzleOrm.and(drizzleOrm.eq(t.graphId, graphId), drizzleOrm.isNull(t.removedAt)));
1282
1282
  return rows.map(
1283
- (row) => chunkWCCATHMB_cjs.mapKindRemovalRow(row, chunkWCCATHMB_cjs.SQLITE_KIND_REMOVAL_TIMESTAMPS.decode)
1283
+ (row) => chunk3QNZ5SAJ_cjs.mapKindRemovalRow(row, chunk3QNZ5SAJ_cjs.SQLITE_KIND_REMOVAL_TIMESTAMPS.decode)
1284
1284
  );
1285
1285
  },
1286
1286
  async getAllKindRemovals(graphId) {
1287
1287
  const t = tables2.kindRemovals;
1288
1288
  const rows = await db.select().from(t).where(drizzleOrm.eq(t.graphId, graphId));
1289
1289
  return rows.map(
1290
- (row) => chunkWCCATHMB_cjs.mapKindRemovalRow(row, chunkWCCATHMB_cjs.SQLITE_KIND_REMOVAL_TIMESTAMPS.decode)
1290
+ (row) => chunk3QNZ5SAJ_cjs.mapKindRemovalRow(row, chunk3QNZ5SAJ_cjs.SQLITE_KIND_REMOVAL_TIMESTAMPS.decode)
1291
1291
  );
1292
1292
  },
1293
1293
  async recordKindRemoval(params) {
1294
1294
  const t = tables2.kindRemovals;
1295
1295
  await db.insert(t).values(
1296
- chunkWCCATHMB_cjs.buildKindRemovalInsertValues(
1296
+ chunk3QNZ5SAJ_cjs.buildKindRemovalInsertValues(
1297
1297
  params,
1298
- chunkWCCATHMB_cjs.SQLITE_KIND_REMOVAL_TIMESTAMPS.encode
1298
+ chunk3QNZ5SAJ_cjs.SQLITE_KIND_REMOVAL_TIMESTAMPS.encode
1299
1299
  )
1300
1300
  ).onConflictDoUpdate({
1301
1301
  target: [t.graphId, t.kindName, t.entity, t.schemaVersion],
1302
- set: chunkWCCATHMB_cjs.buildKindRemovalOnConflictSet(t.removedAt, params.removedAt)
1302
+ set: chunk3QNZ5SAJ_cjs.buildKindRemovalOnConflictSet(t.removedAt, params.removedAt)
1303
1303
  });
1304
1304
  },
1305
1305
  async ensureReconciliationMarkersTable() {
@@ -1406,7 +1406,7 @@ function createSqliteBackend(db, options = {}) {
1406
1406
  },
1407
1407
  async commitSchemaVersionIfKindsEmpty(params, probes) {
1408
1408
  return runSchemaWriteTransaction(
1409
- (target) => chunkWCCATHMB_cjs.commitSchemaVersionIfKindsEmpty(target, params, probes)
1409
+ (target) => chunk3QNZ5SAJ_cjs.commitSchemaVersionIfKindsEmpty(target, params, probes)
1410
1410
  );
1411
1411
  },
1412
1412
  async commitSchemaVersionWithPreflight(params, preflight) {
@@ -1457,7 +1457,7 @@ function createSqliteBackend(db, options = {}) {
1457
1457
  );
1458
1458
  try {
1459
1459
  const result = await fn(
1460
- chunkWCCATHMB_cjs.gateFulltext(
1460
+ chunk3QNZ5SAJ_cjs.gateFulltext(
1461
1461
  txBackend,
1462
1462
  contributionMaterializer.assertInitialized,
1463
1463
  contributionMaterializer.refuseUnavailableFulltext
@@ -1490,7 +1490,7 @@ function createSqliteBackend(db, options = {}) {
1490
1490
  "Cross-store atomicity is unavailable on this SQLite backend: transactions are disabled (transactionMode: 'none'). Adopting an external transaction here would let the caller's relational write commit with no way to roll back the graph write. Configure a driver that supports transactions (better-sqlite3, libsql, bun:sqlite)."
1491
1491
  );
1492
1492
  }
1493
- chunkWCCATHMB_cjs.assertAdoptedDialect(
1493
+ chunk3QNZ5SAJ_cjs.assertAdoptedDialect(
1494
1494
  externalTx,
1495
1495
  sqliteCore.BaseSQLiteDatabase,
1496
1496
  "sqlite"
@@ -1524,5 +1524,5 @@ function createTransactionBackend(options) {
1524
1524
 
1525
1525
  exports.createSqliteBackend = createSqliteBackend;
1526
1526
  exports.isLocalLibsqlClient = isLocalLibsqlClient;
1527
- //# sourceMappingURL=chunk-2HIYYMWY.cjs.map
1528
- //# sourceMappingURL=chunk-2HIYYMWY.cjs.map
1527
+ //# sourceMappingURL=chunk-YYUHLYM2.cjs.map
1528
+ //# sourceMappingURL=chunk-YYUHLYM2.cjs.map