@nicia-ai/typegraph 0.31.0 → 0.33.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.
- package/README.md +31 -0
- package/dist/backend/postgres/index.cjs +31 -18
- package/dist/backend/postgres/index.d.cts +6 -6
- package/dist/backend/postgres/index.d.ts +6 -6
- package/dist/backend/postgres/index.js +9 -8
- package/dist/backend/postgres/pglite.cjs +13 -12
- package/dist/backend/postgres/pglite.cjs.map +1 -1
- package/dist/backend/postgres/pglite.d.cts +3 -3
- package/dist/backend/postgres/pglite.d.ts +3 -3
- package/dist/backend/postgres/pglite.js +9 -8
- package/dist/backend/postgres/pglite.js.map +1 -1
- package/dist/backend/sqlite/index.cjs +29 -16
- package/dist/backend/sqlite/index.d.cts +7 -7
- package/dist/backend/sqlite/index.d.ts +7 -7
- package/dist/backend/sqlite/index.js +8 -7
- package/dist/backend/sqlite/libsql.cjs +13 -12
- package/dist/backend/sqlite/libsql.cjs.map +1 -1
- package/dist/backend/sqlite/libsql.d.cts +3 -3
- package/dist/backend/sqlite/libsql.d.ts +3 -3
- package/dist/backend/sqlite/libsql.js +9 -8
- package/dist/backend/sqlite/libsql.js.map +1 -1
- package/dist/backend/sqlite/local.cjs +14 -13
- package/dist/backend/sqlite/local.cjs.map +1 -1
- package/dist/backend/sqlite/local.d.cts +3 -3
- package/dist/backend/sqlite/local.d.ts +3 -3
- package/dist/backend/sqlite/local.js +9 -8
- package/dist/backend/sqlite/local.js.map +1 -1
- package/dist/{chunk-SFFJ2IKN.cjs → chunk-3642VBVC.cjs} +70 -68
- package/dist/chunk-3642VBVC.cjs.map +1 -0
- package/dist/chunk-3E7SNSIA.cjs +55 -0
- package/dist/chunk-3E7SNSIA.cjs.map +1 -0
- package/dist/{chunk-6RMLO5O4.cjs → chunk-3IR2GEMJ.cjs} +8 -7
- package/dist/chunk-3IR2GEMJ.cjs.map +1 -0
- package/dist/{chunk-6SA7UIQJ.cjs → chunk-3QRBXYT5.cjs} +6 -6
- package/dist/{chunk-6SA7UIQJ.cjs.map → chunk-3QRBXYT5.cjs.map} +1 -1
- package/dist/{chunk-54JVNOAQ.cjs → chunk-4RBAJVEC.cjs} +128 -6
- package/dist/chunk-4RBAJVEC.cjs.map +1 -0
- package/dist/{chunk-IJORSAC3.js → chunk-6NRFUHMS.js} +4 -3
- package/dist/chunk-6NRFUHMS.js.map +1 -0
- package/dist/{chunk-FLOI7QOT.cjs → chunk-BF3ZDEUE.cjs} +104 -72
- package/dist/chunk-BF3ZDEUE.cjs.map +1 -0
- package/dist/{chunk-2HZGWCB4.js → chunk-C4C4Q7A6.js} +3 -3
- package/dist/chunk-C4C4Q7A6.js.map +1 -0
- package/dist/{chunk-O4VUR6SI.js → chunk-CEF2QOTO.js} +3 -3
- package/dist/{chunk-O4VUR6SI.js.map → chunk-CEF2QOTO.js.map} +1 -1
- package/dist/{chunk-V4IQYOQ4.cjs → chunk-CFNT3ITG.cjs} +3 -3
- package/dist/chunk-CFNT3ITG.cjs.map +1 -0
- package/dist/{chunk-LJLMDDCW.js → chunk-CWFPJ3RC.js} +3 -3
- package/dist/{chunk-LJLMDDCW.js.map → chunk-CWFPJ3RC.js.map} +1 -1
- package/dist/{chunk-RZ4DH4E7.cjs → chunk-D3EWZ67S.cjs} +3348 -2030
- package/dist/chunk-D3EWZ67S.cjs.map +1 -0
- package/dist/{chunk-GKFWM3DS.js → chunk-DJYRRDHA.js} +124 -5
- package/dist/chunk-DJYRRDHA.js.map +1 -0
- package/dist/{chunk-YQGLVWB2.cjs → chunk-EF3Z645U.cjs} +2 -52
- package/dist/chunk-EF3Z645U.cjs.map +1 -0
- package/dist/{chunk-ASYQDPPU.cjs → chunk-FDN43KXV.cjs} +19 -19
- package/dist/{chunk-ASYQDPPU.cjs.map → chunk-FDN43KXV.cjs.map} +1 -1
- package/dist/chunk-GYVBEZAO.js +120 -0
- package/dist/chunk-GYVBEZAO.js.map +1 -0
- package/dist/chunk-I4W7MKVG.cjs +1526 -0
- package/dist/chunk-I4W7MKVG.cjs.map +1 -0
- package/dist/{chunk-MXE2U3EX.js → chunk-IZ4PCL47.js} +3 -52
- package/dist/chunk-IZ4PCL47.js.map +1 -0
- package/dist/{chunk-4A4GUZTQ.js → chunk-JHOBXD7O.js} +10 -8
- package/dist/chunk-JHOBXD7O.js.map +1 -0
- package/dist/{chunk-CIINW6PS.cjs → chunk-KY5SDVA7.cjs} +676 -635
- package/dist/chunk-KY5SDVA7.cjs.map +1 -0
- package/dist/{chunk-N2MBPTAF.cjs → chunk-LM2IC4ZJ.cjs} +14 -14
- package/dist/{chunk-N2MBPTAF.cjs.map → chunk-LM2IC4ZJ.cjs.map} +1 -1
- package/dist/{chunk-7JGLPAFV.cjs → chunk-MBLXCV2Y.cjs} +16 -16
- package/dist/chunk-MBLXCV2Y.cjs.map +1 -0
- package/dist/{chunk-5DTPBFX5.cjs → chunk-NG5N7R45.cjs} +28 -28
- package/dist/{chunk-5DTPBFX5.cjs.map → chunk-NG5N7R45.cjs.map} +1 -1
- package/dist/chunk-OIE2UPVG.cjs +126 -0
- package/dist/chunk-OIE2UPVG.cjs.map +1 -0
- package/dist/{chunk-STP7QVUB.js → chunk-OS6KS3HV.js} +43 -11
- package/dist/chunk-OS6KS3HV.js.map +1 -0
- package/dist/{chunk-2ZY4K43M.js → chunk-PIHXFF73.js} +3 -3
- package/dist/{chunk-2ZY4K43M.js.map → chunk-PIHXFF73.js.map} +1 -1
- package/dist/{chunk-ATTXBMAX.js → chunk-PRMKPFN5.js} +3 -3
- package/dist/{chunk-ATTXBMAX.js.map → chunk-PRMKPFN5.js.map} +1 -1
- package/dist/chunk-PYD3UCDU.js +1480 -0
- package/dist/chunk-PYD3UCDU.js.map +1 -0
- package/dist/{chunk-MAQJYNJR.js → chunk-QBYTJSAY.js} +14 -16
- package/dist/chunk-QBYTJSAY.js.map +1 -0
- package/dist/{chunk-THX25XW6.js → chunk-SPT5JMME.js} +27 -7
- package/dist/chunk-SPT5JMME.js.map +1 -0
- package/dist/{chunk-3JBJEYWE.cjs → chunk-SST7XDY6.cjs} +32 -12
- package/dist/chunk-SST7XDY6.cjs.map +1 -0
- package/dist/{chunk-VZX2KSY3.js → chunk-UPDMJEW6.js} +608 -563
- package/dist/chunk-UPDMJEW6.js.map +1 -0
- package/dist/{chunk-UIFEEPME.js → chunk-WLP6TKFB.js} +3141 -1823
- package/dist/chunk-WLP6TKFB.js.map +1 -0
- package/dist/{chunk-VMEWZU2N.cjs → chunk-WWVV44DY.cjs} +11 -11
- package/dist/{chunk-VMEWZU2N.cjs.map → chunk-WWVV44DY.cjs.map} +1 -1
- package/dist/{chunk-UJ4V3YUQ.js → chunk-XKNAK27R.js} +3 -3
- package/dist/{chunk-UJ4V3YUQ.js.map → chunk-XKNAK27R.js.map} +1 -1
- package/dist/chunk-XLUNB2TZ.js +53 -0
- package/dist/chunk-XLUNB2TZ.js.map +1 -0
- package/dist/{chunk-XKJQQQVR.js → chunk-XVUJY72M.js} +6 -6
- package/dist/{chunk-XKJQQQVR.js.map → chunk-XVUJY72M.js.map} +1 -1
- package/dist/{chunk-5CN7B4CZ.cjs → chunk-YW7GHMF4.cjs} +17 -17
- package/dist/{chunk-5CN7B4CZ.cjs.map → chunk-YW7GHMF4.cjs.map} +1 -1
- package/dist/{ddl-BJcPrB4L.d.ts → ddl-CVnHJcar.d.ts} +3 -3
- package/dist/{ddl-CPZ7mB7X.d.cts → ddl-Dxt_fBHr.d.cts} +3 -3
- package/dist/{extension-types-D1k0inWU.d.cts → extension-types-YGFJPrzK.d.cts} +1 -1
- package/dist/{extension-types-D1k0inWU.d.ts → extension-types-YGFJPrzK.d.ts} +1 -1
- package/dist/graph-extension/index.d.cts +4 -4
- package/dist/graph-extension/index.d.ts +4 -4
- package/dist/graph-merge/index.cjs +200 -55
- package/dist/graph-merge/index.cjs.map +1 -1
- package/dist/graph-merge/index.d.cts +6 -6
- package/dist/graph-merge/index.d.ts +6 -6
- package/dist/graph-merge/index.js +185 -40
- package/dist/graph-merge/index.js.map +1 -1
- package/dist/{index-BEK0VtNB.d.ts → index-DGX6D9j1.d.ts} +2 -2
- package/dist/{index-C8sSTErx.d.cts → index-SEvUHDA6.d.cts} +2 -2
- package/dist/index.cjs +145 -116
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +25 -55
- package/dist/index.d.ts +25 -55
- package/dist/index.js +19 -17
- package/dist/index.js.map +1 -1
- package/dist/indexes/index.cjs +15 -14
- package/dist/indexes/index.d.cts +5 -5
- package/dist/indexes/index.d.ts +5 -5
- package/dist/indexes/index.js +6 -5
- package/dist/interchange/index.cjs +15 -15
- package/dist/interchange/index.d.cts +9 -9
- package/dist/interchange/index.d.ts +9 -9
- package/dist/interchange/index.js +2 -2
- package/dist/{manager-Np7VVSlE.d.cts → manager-BYl_zyZR.d.cts} +2 -2
- package/dist/{manager-By-WEd8M.d.ts → manager-C0_r0ALf.d.ts} +2 -2
- package/dist/{materialize-indexes-CAGhqPHQ.d.ts → materialize-indexes-CAkIYFV-.d.ts} +1 -1
- package/dist/{materialize-indexes-DEYkU-wr.d.cts → materialize-indexes-D20xNluI.d.cts} +1 -1
- package/dist/{postgres-4J2tmauh.d.cts → postgres-MzBPkYzq.d.ts} +2651 -596
- package/dist/{postgres-BdIb7tS_.d.ts → postgres-_9psmVGm.d.cts} +2651 -596
- package/dist/profiler/index.cjs +4 -3
- package/dist/profiler/index.cjs.map +1 -1
- package/dist/profiler/index.d.cts +7 -7
- package/dist/profiler/index.d.ts +7 -7
- package/dist/profiler/index.js +2 -1
- package/dist/profiler/index.js.map +1 -1
- package/dist/schema/index.cjs +30 -29
- package/dist/schema/index.cjs.map +1 -1
- package/dist/schema/index.d.cts +7 -7
- package/dist/schema/index.d.ts +7 -7
- package/dist/schema/index.js +7 -6
- package/dist/schema/index.js.map +1 -1
- package/dist/{sqlite-aM_PAz-O.d.ts → sqlite-BfksSb45.d.cts} +2726 -455
- package/dist/{sqlite-Gatk_iw_.d.cts → sqlite-gm44dShb.d.ts} +2726 -455
- package/dist/{store-DuCbdqsh.d.cts → store-view-9jQ2rPum.d.cts} +1101 -465
- package/dist/{store-MloRPwb9.d.ts → store-view-FfE5_7eo.d.ts} +1101 -465
- package/dist/{types-DoByHGyU.d.cts → types-B6mhrcLv.d.cts} +2 -2
- package/dist/{types-C1CYxWrL.d.cts → types-C_UnQOQp.d.cts} +154 -23
- package/dist/{types-K3vpaJAL.d.ts → types-CdWxK-nD.d.ts} +2 -2
- package/dist/{types-BKQljXom.d.ts → types-DGylBhWo.d.ts} +154 -23
- package/dist/{where-DydZjGOb.d.cts → where-Bpp2ul_z.d.cts} +2 -2
- package/dist/{where-Dt49bvo6.d.ts → where-BsEXraKW.d.ts} +2 -2
- package/package.json +2 -2
- package/dist/chunk-2HZGWCB4.js.map +0 -1
- package/dist/chunk-3JBJEYWE.cjs.map +0 -1
- package/dist/chunk-4A4GUZTQ.js.map +0 -1
- package/dist/chunk-54JVNOAQ.cjs.map +0 -1
- package/dist/chunk-6G35I3VW.cjs +0 -40
- package/dist/chunk-6G35I3VW.cjs.map +0 -1
- package/dist/chunk-6RMLO5O4.cjs.map +0 -1
- package/dist/chunk-7JGLPAFV.cjs.map +0 -1
- package/dist/chunk-CIINW6PS.cjs.map +0 -1
- package/dist/chunk-FLOI7QOT.cjs.map +0 -1
- package/dist/chunk-GKFWM3DS.js.map +0 -1
- package/dist/chunk-IJORSAC3.js.map +0 -1
- package/dist/chunk-M6OC455F.js +0 -65
- package/dist/chunk-M6OC455F.js.map +0 -1
- package/dist/chunk-MAQJYNJR.js.map +0 -1
- package/dist/chunk-MXE2U3EX.js.map +0 -1
- package/dist/chunk-RP7YITHX.cjs +0 -70
- package/dist/chunk-RP7YITHX.cjs.map +0 -1
- package/dist/chunk-RZ4DH4E7.cjs.map +0 -1
- package/dist/chunk-SAJSMR2B.js +0 -35
- package/dist/chunk-SAJSMR2B.js.map +0 -1
- package/dist/chunk-SFFJ2IKN.cjs.map +0 -1
- package/dist/chunk-STP7QVUB.js.map +0 -1
- package/dist/chunk-THX25XW6.js.map +0 -1
- package/dist/chunk-UIFEEPME.js.map +0 -1
- package/dist/chunk-V4IQYOQ4.cjs.map +0 -1
- package/dist/chunk-VZX2KSY3.js.map +0 -1
- package/dist/chunk-YQGLVWB2.cjs.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/core/searchable.ts","../src/query/field-type-info.ts","../src/query/schema-introspector.ts"],"names":["shape"],"mappings":"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","file":"chunk-MXE2U3EX.js","sourcesContent":["/**\n * Searchable string type for fulltext search.\n *\n * `searchable()` attaches `SearchableMetadata` to a plain Zod string so\n * the schema introspector and fulltext-sync layer can keep the fulltext\n * index in sync with node data.\n *\n * The metadata is preserved by Zod's `.meta()` across refinements\n * (`.min(1)`, `.trim()`, `.regex(...)`) and wrapper types (`.optional()`,\n * `.nullable()`, `.default(...)`, pipes) — `getSearchableMetadata()` walks\n * these variants so runtime indexing works whether or not a user chains\n * additional modifiers.\n *\n * `$fulltext` is exposed on every `NodeAccessor` at the type level; a\n * runtime guard throws a clear error if you call `.matches()` on an\n * alias whose node kind has no `searchable()` fields. This is simpler\n * and more predictable than a type-level brand that silently disappears\n * behind `.min(1)`.\n *\n * @example\n * ```typescript\n * const Document = defineNode(\"Document\", {\n * schema: z.object({\n * title: searchable({ language: \"english\" }),\n * body: searchable().min(1),\n * authorId: z.string(),\n * }),\n * });\n * ```\n */\nimport { z } from \"zod\";\n\nexport const SEARCHABLE_FIELD_KEY = \"_searchableField\" as const;\n\nexport const DEFAULT_SEARCHABLE_LANGUAGE = \"english\" as const;\n\nconst SEARCHABLE_WRAPPER_TYPES = new Set([\n \"optional\",\n \"nullable\",\n \"default\",\n \"prefault\",\n \"catch\",\n \"readonly\",\n \"nonoptional\",\n \"success\",\n]);\n\n/**\n * Searchable field metadata attached to a Zod schema.\n */\nexport type SearchableMetadata = Readonly<{\n /**\n * Language for stemming / tokenization.\n * Postgres: passed to `to_tsvector(regconfig, ...)`.\n * SQLite FTS5: tokenizer is fixed at table-create time, so the\n * language is recorded but not applied per-row.\n */\n language: string;\n}>;\n\n/**\n * Branded Zod string schema. The `SEARCHABLE_FIELD_KEY` marker is\n * attached both as a direct property (fast runtime check) and via Zod's\n * `.meta()` (so it survives `.min()`, `.trim()`, etc.).\n */\nexport type SearchableSchema = z.ZodString &\n Readonly<{\n [SEARCHABLE_FIELD_KEY]: SearchableMetadata;\n }>;\n\nexport type SearchableOptions = Readonly<{\n language?: string;\n}>;\n\ntype SearchableMetaRecord = Readonly<\n Partial<Record<typeof SEARCHABLE_FIELD_KEY, unknown>>\n>;\n\ntype SearchableSchemaDef = Readonly<{\n innerType?: z.ZodType;\n in?: z.ZodType;\n out?: z.ZodType;\n}>;\n\nfunction readSearchableMetadata(\n value: unknown,\n): SearchableMetadata | undefined {\n if (typeof value !== \"object\" || value === null) {\n return undefined;\n }\n\n const language = (value as Partial<SearchableMetadata>).language;\n return typeof language === \"string\" ? { language } : undefined;\n}\n\nfunction getSearchableMetadataFromSchemaMeta(\n schema: z.ZodType,\n): SearchableMetadata | undefined {\n const meta = schema.meta() as SearchableMetaRecord | undefined;\n return readSearchableMetadata(meta?.[SEARCHABLE_FIELD_KEY]);\n}\n\n/**\n * Creates a Zod string schema tagged as fulltext-searchable.\n *\n * The returned schema passes runtime validation unchanged — the tag only\n * affects how TypeGraph treats the field for indexing and search. Pair\n * with `.optional()` / `.nullable()` / `.min()` / `.trim()` exactly like\n * any other Zod string; `getSearchableMetadata()` finds the metadata\n * through all of them.\n */\nexport function searchable(options: SearchableOptions = {}): SearchableSchema {\n const language = options.language ?? DEFAULT_SEARCHABLE_LANGUAGE;\n\n if (language.length === 0) {\n throw new Error(\"searchable() language must be a non-empty string\");\n }\n\n const metadata: SearchableMetadata = { language };\n const schema = z.string().meta({\n [SEARCHABLE_FIELD_KEY]: metadata,\n });\n\n return Object.assign(schema, {\n [SEARCHABLE_FIELD_KEY]: metadata,\n });\n}\n\nexport function isSearchableSchema(value: unknown): value is SearchableSchema {\n if (typeof value !== \"object\" || value === null) return false;\n if (!(SEARCHABLE_FIELD_KEY in value)) return false;\n return (\n readSearchableMetadata(\n (value as Record<string, unknown>)[SEARCHABLE_FIELD_KEY],\n ) !== undefined\n );\n}\n\nexport function getSearchableMetadata(\n schema: z.ZodType,\n): SearchableMetadata | undefined {\n if (isSearchableSchema(schema)) {\n return schema[SEARCHABLE_FIELD_KEY];\n }\n\n const directMetadata = getSearchableMetadataFromSchemaMeta(schema);\n if (directMetadata !== undefined) {\n return directMetadata;\n }\n\n const def = schema.def as SearchableSchemaDef;\n if (\n SEARCHABLE_WRAPPER_TYPES.has(schema.type) &&\n def.innerType !== undefined\n ) {\n return getSearchableMetadata(def.innerType);\n }\n\n if (schema.type === \"pipe\") {\n return (\n (def.in === undefined ? undefined : getSearchableMetadata(def.in)) ??\n (def.out === undefined ? undefined : getSearchableMetadata(def.out))\n );\n }\n\n return undefined;\n}\n","import { type JsonPointer, parseJsonPointer } from \"./json-pointer\";\nimport { type FieldTypeInfo } from \"./schema-introspector\";\n\nfunction isJsonPointerIndex(segment: string): boolean {\n return /^\\d+$/.test(segment);\n}\n\nexport function resolveFieldTypeInfoAtJsonPointer(\n typeInfo: FieldTypeInfo | undefined,\n pointer: JsonPointer,\n): FieldTypeInfo | undefined {\n if (!typeInfo) {\n return undefined;\n }\n\n const segments = parseJsonPointer(pointer);\n\n let current: FieldTypeInfo | undefined = typeInfo;\n for (const segment of segments) {\n if (!current) {\n return undefined;\n }\n\n if (current.valueType === \"array\") {\n if (!isJsonPointerIndex(segment)) {\n throw new Error(\n `JSON Pointer segment \"${segment}\" is not a valid array index`,\n );\n }\n current = current.elementTypeInfo;\n continue;\n }\n\n if (current.valueType === \"object\") {\n if (isJsonPointerIndex(segment)) {\n throw new Error(\n \"JSON Pointer numeric segments are only valid for arrays\",\n );\n }\n if (current.shape && segment in current.shape) {\n current = current.shape[segment];\n continue;\n }\n if (current.recordValueType) {\n current = current.recordValueType;\n continue;\n }\n throw new Error(\n `JSON Pointer segment \"${segment}\" is not defined on object schema`,\n );\n }\n\n throw new Error(\n `JSON Pointer segment \"${segment}\" cannot traverse ${current.valueType}`,\n );\n }\n\n return current;\n}\n","import { type z } from \"zod\";\n\nimport { getEmbeddingDimensions } from \"../core/embedding\";\nimport {\n getSearchableMetadata,\n type SearchableMetadata,\n} from \"../core/searchable\";\nimport { type ValueType } from \"./ast\";\n\nconst SUPPORTED_SCHEMA_TYPES = [\n \"string\",\n \"number\",\n \"nan\",\n \"boolean\",\n \"date\",\n \"literal\",\n \"enum\",\n \"nativeEnum\",\n \"array\",\n \"tuple\",\n \"object\",\n \"record\",\n \"union\",\n \"discriminatedUnion\",\n \"intersection\",\n] as const;\n\ntype SupportedSchemaType = (typeof SUPPORTED_SCHEMA_TYPES)[number];\n\n// Use Set<string> to allow checking arbitrary strings while maintaining type safety\nconst SUPPORTED_SCHEMA_TYPE_SET: ReadonlySet<string> = new Set(\n SUPPORTED_SCHEMA_TYPES,\n);\n\nfunction isSupportedSchemaType(type: string): type is SupportedSchemaType {\n return SUPPORTED_SCHEMA_TYPE_SET.has(type);\n}\n\nexport type FieldTypeInfo = Readonly<{\n valueType: ValueType;\n elementType?: ValueType | undefined;\n elementTypeInfo?: FieldTypeInfo | undefined;\n shape?: Readonly<Record<string, FieldTypeInfo>> | undefined;\n recordValueType?: FieldTypeInfo | undefined;\n /** For embedding types: the number of dimensions */\n dimensions?: number | undefined;\n /** For fulltext-searchable string types: field-level metadata */\n searchable?: SearchableMetadata | undefined;\n}>;\n\nexport type SchemaIntrospector = Readonly<{\n getFieldTypeInfo: (\n kindName: string,\n fieldName: string,\n ) => FieldTypeInfo | undefined;\n getSharedFieldTypeInfo: (\n kindNames: readonly string[],\n fieldName: string,\n ) => FieldTypeInfo | undefined;\n getEdgeFieldTypeInfo: (\n edgeKindName: string,\n fieldName: string,\n ) => FieldTypeInfo | undefined;\n getSharedEdgeFieldTypeInfo: (\n edgeKindNames: readonly string[],\n fieldName: string,\n ) => FieldTypeInfo | undefined;\n /**\n * True iff every kind in `kindNames` has at least one `searchable()`\n * field. For polymorphic aliases, `$fulltext` is available only when\n * every resolved kind has searchable content — otherwise `.matches()`\n * would silently miss some kinds.\n */\n hasSearchableField: (kindNames: readonly string[]) => boolean;\n}>;\n\nfunction sharedCacheKey(\n kindNames: readonly string[],\n fieldName: string,\n): string {\n return `${[...kindNames].toSorted().join(\"|\")}|${fieldName}`;\n}\n\nexport function createSchemaIntrospector(\n nodeKinds: ReadonlyMap<string, { schema: z.ZodType }>,\n edgeKinds?: ReadonlyMap<string, { schema: z.ZodType }>,\n): SchemaIntrospector {\n const nodeShapeCache = new Map<\n string,\n Readonly<Record<string, FieldTypeInfo>>\n >();\n const edgeShapeCache = new Map<\n string,\n Readonly<Record<string, FieldTypeInfo>>\n >();\n // Proxy-based field accessors trigger a fresh merge on every property\n // read during a `whereNode(n => ...)` callback. For polymorphic\n // aliases with N kinds and M field accesses, that is O(N*M) per\n // compile; caching collapses it to O(1) after the first access.\n const sharedFieldTypeInfoCache = new Map<string, FieldTypeInfo | undefined>();\n const sharedEdgeFieldTypeInfoCache = new Map<\n string,\n FieldTypeInfo | undefined\n >();\n const searchableCache = new Map<string, boolean>();\n\n function getFieldTypeInfo(\n kindName: string,\n fieldName: string,\n ): FieldTypeInfo | undefined {\n const shape = getShapeForKind(kindName);\n return shape?.[fieldName];\n }\n\n function getSharedFieldTypeInfo(\n kindNames: readonly string[],\n fieldName: string,\n ): FieldTypeInfo | undefined {\n const cacheKey = sharedCacheKey(kindNames, fieldName);\n if (sharedFieldTypeInfoCache.has(cacheKey)) {\n return sharedFieldTypeInfoCache.get(cacheKey);\n }\n\n const infos = kindNames\n .map((kindName) => getFieldTypeInfo(kindName, fieldName))\n .filter((info): info is FieldTypeInfo => info !== undefined);\n\n const merged =\n infos.length !== kindNames.length || infos.length === 0 ?\n undefined\n : mergeFieldTypeInfos(infos);\n sharedFieldTypeInfoCache.set(cacheKey, merged);\n return merged;\n }\n\n function getEdgeFieldTypeInfo(\n edgeKindName: string,\n fieldName: string,\n ): FieldTypeInfo | undefined {\n const shape = getShapeForEdgeKind(edgeKindName);\n return shape?.[fieldName];\n }\n\n function getSharedEdgeFieldTypeInfo(\n edgeKindNames: readonly string[],\n fieldName: string,\n ): FieldTypeInfo | undefined {\n const cacheKey = sharedCacheKey(edgeKindNames, fieldName);\n if (sharedEdgeFieldTypeInfoCache.has(cacheKey)) {\n return sharedEdgeFieldTypeInfoCache.get(cacheKey);\n }\n\n const infos = edgeKindNames\n .map((kindName) => getEdgeFieldTypeInfo(kindName, fieldName))\n .filter((info): info is FieldTypeInfo => info !== undefined);\n\n const merged =\n infos.length !== edgeKindNames.length || infos.length === 0 ?\n undefined\n : mergeFieldTypeInfos(infos);\n sharedEdgeFieldTypeInfoCache.set(cacheKey, merged);\n return merged;\n }\n\n function getShapeForKind(\n kindName: string,\n ): Readonly<Record<string, FieldTypeInfo>> | undefined {\n const cached = nodeShapeCache.get(kindName);\n if (cached) {\n return cached;\n }\n\n const kind = nodeKinds.get(kindName);\n if (!kind) {\n return undefined;\n }\n\n const schema = kind.schema;\n if (schema.type !== \"object\") {\n return undefined;\n }\n\n const shape = (schema.def as { shape?: Record<string, z.ZodType> }).shape;\n if (!shape) {\n return undefined;\n }\n\n const entries = Object.entries(shape).map(\n ([key, value]) => [key, resolveFieldTypeInfo(value)] as const,\n );\n const resolved = Object.freeze(Object.fromEntries(entries));\n nodeShapeCache.set(kindName, resolved);\n return resolved;\n }\n\n function getShapeForEdgeKind(\n edgeKindName: string,\n ): Readonly<Record<string, FieldTypeInfo>> | undefined {\n if (!edgeKinds) {\n return undefined;\n }\n\n const cached = edgeShapeCache.get(edgeKindName);\n if (cached) {\n return cached;\n }\n\n const kind = edgeKinds.get(edgeKindName);\n if (!kind) {\n return undefined;\n }\n\n const schema = kind.schema;\n if (schema.type !== \"object\") {\n return undefined;\n }\n\n const shape = (schema.def as { shape?: Record<string, z.ZodType> }).shape;\n if (!shape) {\n return undefined;\n }\n\n const entries = Object.entries(shape).map(\n ([key, value]) => [key, resolveFieldTypeInfo(value)] as const,\n );\n const resolved = Object.freeze(Object.fromEntries(entries));\n edgeShapeCache.set(edgeKindName, resolved);\n return resolved;\n }\n\n function hasSearchableField(kindNames: readonly string[]): boolean {\n const cacheKey = [...kindNames].toSorted().join(\"|\");\n const cached = searchableCache.get(cacheKey);\n if (cached !== undefined) return cached;\n\n const result =\n kindNames.length > 0 &&\n kindNames.every((kindName) => {\n const shape = getShapeForKind(kindName);\n if (!shape) return false;\n return Object.values(shape).some(\n (info) => info.searchable !== undefined,\n );\n });\n searchableCache.set(cacheKey, result);\n return result;\n }\n\n return {\n getFieldTypeInfo,\n getSharedFieldTypeInfo,\n getEdgeFieldTypeInfo,\n getSharedEdgeFieldTypeInfo,\n hasSearchableField,\n };\n}\n\nfunction resolveFieldTypeInfo(schema: z.ZodType): FieldTypeInfo {\n // Check for embedding type before unwrapping\n // (embedding metadata is attached to the outer schema)\n const embeddingDimensions = getEmbeddingDimensions(schema);\n if (embeddingDimensions !== undefined) {\n return { valueType: \"embedding\", dimensions: embeddingDimensions };\n }\n\n const searchableMetadata = getSearchableMetadata(schema);\n const searchableStringSchema =\n searchableMetadata === undefined ? undefined : (\n unwrapSearchableStringSchema(schema)\n );\n if (\n searchableMetadata !== undefined &&\n searchableStringSchema !== undefined\n ) {\n return { valueType: \"string\", searchable: searchableMetadata };\n }\n\n const unwrapped = unwrapSchema(schema);\n\n // Check embedding on unwrapped schema too (for z.optional(embedding(...)))\n const unwrappedEmbeddingDimensions = getEmbeddingDimensions(unwrapped);\n if (unwrappedEmbeddingDimensions !== undefined) {\n return { valueType: \"embedding\", dimensions: unwrappedEmbeddingDimensions };\n }\n\n // Cast to string to detach from Zod's internal type union,\n // then let the type guard narrow to our SupportedSchemaType.\n const rawType = unwrapped.type as string;\n\n if (!isSupportedSchemaType(rawType)) {\n return { valueType: \"unknown\" };\n }\n\n // After the type guard, rawType is SupportedSchemaType.\n const schemaType = rawType;\n\n // Handle each schema type individually\n if (schemaType === \"string\") {\n return { valueType: \"string\" };\n }\n if (schemaType === \"number\" || schemaType === \"nan\") {\n return { valueType: \"number\" };\n }\n if (schemaType === \"boolean\") {\n return { valueType: \"boolean\" };\n }\n if (schemaType === \"date\") {\n return { valueType: \"date\" };\n }\n if (schemaType === \"literal\") {\n const literalValue = (unwrapped.def as { value?: unknown }).value;\n return resolveLiteralTypeInfo(literalValue);\n }\n if (schemaType === \"enum\") {\n return { valueType: \"string\" };\n }\n if (schemaType === \"nativeEnum\") {\n const values = Object.values(\n (unwrapped.def as { values?: Record<string, unknown> }).values ?? {},\n );\n const valueType = resolveEnumValueType(values);\n return { valueType };\n }\n if (schemaType === \"array\") {\n const elementSchema = (unwrapped.def as { element?: z.ZodType }).element;\n const elementInfo =\n elementSchema ? resolveFieldTypeInfo(elementSchema) : undefined;\n return {\n valueType: \"array\",\n elementType: elementInfo?.valueType,\n elementTypeInfo: elementInfo,\n };\n }\n if (schemaType === \"tuple\") {\n return {\n valueType: \"array\",\n elementType: \"unknown\",\n };\n }\n if (schemaType === \"object\") {\n const shape = (unwrapped.def as { shape?: Record<string, z.ZodType> })\n .shape;\n if (!shape) {\n return { valueType: \"object\" };\n }\n const entries = Object.entries(shape).map(\n ([key, value]) => [key, resolveFieldTypeInfo(value)] as const,\n );\n const resolved = Object.freeze(Object.fromEntries(entries));\n return {\n valueType: \"object\",\n shape: resolved,\n };\n }\n if (schemaType === \"record\") {\n const valueSchema = (unwrapped.def as { valueType?: z.ZodType }).valueType;\n const valueInfo =\n valueSchema ? resolveFieldTypeInfo(valueSchema) : undefined;\n return {\n valueType: \"object\",\n recordValueType: valueInfo,\n };\n }\n if (schemaType === \"union\" || schemaType === \"discriminatedUnion\") {\n const unionOptions = (unwrapped.def as { options?: readonly z.ZodType[] })\n .options;\n if (!unionOptions || unionOptions.length === 0) {\n return { valueType: \"unknown\" };\n }\n const optionInfos = unionOptions.map((option) =>\n resolveFieldTypeInfo(option),\n );\n return mergeFieldTypeInfos(optionInfos) ?? { valueType: \"unknown\" };\n }\n\n // Only \"intersection\" remains after all other cases\n const left = (unwrapped.def as { left?: z.ZodType }).left;\n const right = (unwrapped.def as { right?: z.ZodType }).right;\n if (!left || !right) {\n return { valueType: \"unknown\" };\n }\n const leftInfo = resolveFieldTypeInfo(left);\n const rightInfo = resolveFieldTypeInfo(right);\n return mergeFieldTypeInfos([leftInfo, rightInfo]) ?? { valueType: \"unknown\" };\n}\n\nfunction resolveLiteralTypeInfo(value: unknown): FieldTypeInfo {\n if (value instanceof Date) {\n return { valueType: \"date\" };\n }\n if (typeof value === \"string\") {\n return { valueType: \"string\" };\n }\n if (typeof value === \"number\") {\n return { valueType: \"number\" };\n }\n if (typeof value === \"boolean\") {\n return { valueType: \"boolean\" };\n }\n return { valueType: \"unknown\" };\n}\n\nfunction resolveEnumValueType(values: readonly unknown[]): ValueType {\n const uniqueTypes = new Set(values.map((value) => typeof value));\n if (uniqueTypes.size !== 1) {\n return \"unknown\";\n }\n\n const type = uniqueTypes.values().next().value;\n if (type === \"string\") {\n return \"string\";\n }\n if (type === \"number\") {\n return \"number\";\n }\n if (type === \"boolean\") {\n return \"boolean\";\n }\n return \"unknown\";\n}\n\nfunction mergeFieldTypeInfos(\n infos: readonly FieldTypeInfo[],\n): FieldTypeInfo | undefined {\n const [first, ...rest] = infos;\n if (!first) {\n return undefined;\n }\n\n const sameValueType = rest.every(\n (info) => info.valueType === first.valueType,\n );\n if (!sameValueType) {\n return undefined;\n }\n\n if (first.valueType === \"array\") {\n const elementType =\n rest.every((info) => info.elementType === first.elementType) ?\n first.elementType\n : \"unknown\";\n const elementTypeInfo =\n (\n rest.every(\n (info) =>\n info.elementTypeInfo?.valueType ===\n first.elementTypeInfo?.valueType,\n )\n ) ?\n first.elementTypeInfo\n : undefined;\n return {\n valueType: \"array\",\n elementType,\n elementTypeInfo,\n };\n }\n\n if (first.valueType === \"object\") {\n const shapes = infos\n .map((info) => info.shape)\n .filter(\n (shape): shape is Readonly<Record<string, FieldTypeInfo>> =>\n shape !== undefined,\n );\n\n const shape =\n shapes.length === infos.length ? intersectShapes(shapes) : undefined;\n\n const recordValueType =\n (\n rest.every(\n (info) =>\n info.recordValueType?.valueType ===\n first.recordValueType?.valueType,\n )\n ) ?\n first.recordValueType\n : undefined;\n\n return {\n valueType: \"object\",\n shape,\n recordValueType,\n };\n }\n\n // Strings: only mark the merged result as searchable if every kind\n // in the polymorphic alias declares the field as searchable. A field\n // that isn't uniformly searchable would silently search only some\n // kinds via `.matches()`.\n if (first.valueType === \"string\") {\n const allSearchable =\n first.searchable !== undefined &&\n rest.every((info) => info.searchable !== undefined);\n return allSearchable ?\n { valueType: \"string\", searchable: first.searchable }\n : { valueType: \"string\" };\n }\n\n return first;\n}\n\nfunction intersectShapes(\n shapes: readonly Readonly<Record<string, FieldTypeInfo>>[],\n): Readonly<Record<string, FieldTypeInfo>> {\n const [first, ...rest] = shapes;\n if (!first) {\n return Object.freeze({});\n }\n\n const keys = Object.keys(first).filter((key) =>\n rest.every((shape) => key in shape),\n );\n\n const entries = keys\n .map((key) => {\n const infos = shapes.map((shape) => shape[key]!);\n const merged = mergeFieldTypeInfos(infos);\n if (!merged) {\n return;\n }\n return [key, merged] as const;\n })\n .filter(\n (entry): entry is readonly [string, FieldTypeInfo] => entry !== undefined,\n );\n\n return Object.freeze(Object.fromEntries(entries));\n}\n\nfunction unwrapSearchableStringSchema(\n schema: z.ZodType,\n): z.ZodType | undefined {\n const type = schema.type;\n const def = schema.def as {\n innerType?: z.ZodType;\n in?: z.ZodType;\n out?: z.ZodType;\n };\n\n if (\n (type === \"optional\" ||\n type === \"nullable\" ||\n type === \"default\" ||\n type === \"prefault\" ||\n type === \"catch\" ||\n type === \"readonly\" ||\n type === \"nonoptional\" ||\n type === \"success\") &&\n def.innerType\n ) {\n return unwrapSearchableStringSchema(def.innerType);\n }\n\n if (type === \"pipe\") {\n return (\n (def.in === undefined ?\n undefined\n : unwrapSearchableStringSchema(def.in)) ??\n (def.out === undefined ?\n undefined\n : unwrapSearchableStringSchema(def.out))\n );\n }\n\n const unwrapped = unwrapSchema(schema);\n return unwrapped.type === \"string\" ? unwrapped : undefined;\n}\n\nfunction unwrapSchema(schema: z.ZodType): z.ZodType {\n const type = schema.type;\n const def = schema.def as {\n innerType?: z.ZodType;\n out?: z.ZodType;\n };\n\n if (\n (type === \"optional\" ||\n type === \"nullable\" ||\n type === \"default\" ||\n type === \"prefault\" ||\n type === \"catch\" ||\n type === \"readonly\" ||\n type === \"nonoptional\" ||\n type === \"success\") &&\n def.innerType\n ) {\n return unwrapSchema(def.innerType);\n }\n\n if (type === \"pipe\" && def.out) {\n return unwrapSchema(def.out);\n }\n\n return schema;\n}\n"]}
|
package/dist/chunk-RP7YITHX.cjs
DELETED
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
// src/utils/sql-errors.ts
|
|
4
|
-
var MISSING_TABLE_PATTERNS = [
|
|
5
|
-
"no such table",
|
|
6
|
-
// SQLite
|
|
7
|
-
"does not exist",
|
|
8
|
-
// PostgreSQL ("relation ... does not exist")
|
|
9
|
-
"SQLITE_ERROR"
|
|
10
|
-
// D1 / Durable Objects error code
|
|
11
|
-
];
|
|
12
|
-
var POSTGRES_UNDEFINED_TABLE_CODE = "42P01";
|
|
13
|
-
function* errorChain(error) {
|
|
14
|
-
const seen = /* @__PURE__ */ new Set();
|
|
15
|
-
let current = error;
|
|
16
|
-
while (current !== void 0 && current !== null && !seen.has(current)) {
|
|
17
|
-
seen.add(current);
|
|
18
|
-
yield current;
|
|
19
|
-
current = current instanceof Error ? current.cause : void 0;
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
function isPostgresUndefinedTable(link) {
|
|
23
|
-
return typeof link === "object" && link !== null && "code" in link && link.code === POSTGRES_UNDEFINED_TABLE_CODE;
|
|
24
|
-
}
|
|
25
|
-
function isMissingTableError(error) {
|
|
26
|
-
for (const link of errorChain(error)) {
|
|
27
|
-
if (isPostgresUndefinedTable(link)) return true;
|
|
28
|
-
const message = link instanceof Error ? link.message : String(link);
|
|
29
|
-
if (MISSING_TABLE_PATTERNS.some((pattern) => message.includes(pattern))) {
|
|
30
|
-
return true;
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
return false;
|
|
34
|
-
}
|
|
35
|
-
var DIMENSION_MISMATCH_PATTERN = /expected (\d+) dimensions(?:[,\s]+(?:not|got|but got|but)\s*(\d+))?/i;
|
|
36
|
-
function parseDimensionMismatch(error) {
|
|
37
|
-
for (const link of errorChain(error)) {
|
|
38
|
-
const message = link instanceof Error ? link.message : String(link);
|
|
39
|
-
const match = DIMENSION_MISMATCH_PATTERN.exec(message);
|
|
40
|
-
if (match) {
|
|
41
|
-
return {
|
|
42
|
-
expected: Number(match[1]),
|
|
43
|
-
actual: match[2] === void 0 ? void 0 : Number(match[2])
|
|
44
|
-
};
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
return void 0;
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
// src/schema/canonical.ts
|
|
51
|
-
function sortedReplacer(_key, value) {
|
|
52
|
-
if (value !== null && typeof value === "object" && !Array.isArray(value)) {
|
|
53
|
-
const sorted = {};
|
|
54
|
-
for (const key of Object.keys(value).toSorted()) {
|
|
55
|
-
sorted[key] = value[key];
|
|
56
|
-
}
|
|
57
|
-
return sorted;
|
|
58
|
-
}
|
|
59
|
-
return value;
|
|
60
|
-
}
|
|
61
|
-
function canonicalEqual(a, b) {
|
|
62
|
-
return JSON.stringify(a, sortedReplacer) === JSON.stringify(b, sortedReplacer);
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
exports.canonicalEqual = canonicalEqual;
|
|
66
|
-
exports.isMissingTableError = isMissingTableError;
|
|
67
|
-
exports.parseDimensionMismatch = parseDimensionMismatch;
|
|
68
|
-
exports.sortedReplacer = sortedReplacer;
|
|
69
|
-
//# sourceMappingURL=chunk-RP7YITHX.cjs.map
|
|
70
|
-
//# sourceMappingURL=chunk-RP7YITHX.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/utils/sql-errors.ts","../src/schema/canonical.ts"],"names":[],"mappings":";;;AAqBA,IAAM,sBAAA,GAAyB;AAAA,EAC7B,eAAA;AAAA;AAAA,EACA,gBAAA;AAAA;AAAA,EACA;AAAA;AACF,CAAA;AASA,IAAM,6BAAA,GAAgC,OAAA;AAOtC,UAAU,WAAW,KAAA,EAAgD;AACnE,EAAA,MAAM,IAAA,uBAAW,GAAA,EAAa;AAC9B,EAAA,IAAI,OAAA,GAAmB,KAAA;AACvB,EAAA,OAAO,OAAA,KAAY,UAAa,OAAA,KAAY,IAAA,IAAQ,CAAC,IAAA,CAAK,GAAA,CAAI,OAAO,CAAA,EAAG;AACtE,IAAA,IAAA,CAAK,IAAI,OAAO,CAAA;AAChB,IAAA,MAAM,OAAA;AACN,IAAA,OAAA,GAAU,OAAA,YAAmB,KAAA,GAAQ,OAAA,CAAQ,KAAA,GAAQ,MAAA;AAAA,EACvD;AACF;AAMA,SAAS,yBAAyB,IAAA,EAAwB;AACxD,EAAA,OACE,OAAO,SAAS,QAAA,IAChB,IAAA,KAAS,QACT,MAAA,IAAU,IAAA,IACT,KAAsC,IAAA,KACrC,6BAAA;AAEN;AAEO,SAAS,oBAAoB,KAAA,EAAyB;AAC3D,EAAA,KAAA,MAAW,IAAA,IAAQ,UAAA,CAAW,KAAK,CAAA,EAAG;AACpC,IAAA,IAAI,wBAAA,CAAyB,IAAI,CAAA,EAAG,OAAO,IAAA;AAC3C,IAAA,MAAM,UAAU,IAAA,YAAgB,KAAA,GAAQ,IAAA,CAAK,OAAA,GAAU,OAAO,IAAI,CAAA;AAClE,IAAA,IAAI,sBAAA,CAAuB,KAAK,CAAC,OAAA,KAAY,QAAQ,QAAA,CAAS,OAAO,CAAC,CAAA,EAAG;AACvE,MAAA,OAAO,IAAA;AAAA,IACT;AAAA,EACF;AACA,EAAA,OAAO,KAAA;AACT;AAQA,IAAM,0BAAA,GACJ,sEAAA;AAQK,SAAS,uBACd,KAAA,EAC8D;AAC9D,EAAA,KAAA,MAAW,IAAA,IAAQ,UAAA,CAAW,KAAK,CAAA,EAAG;AACpC,IAAA,MAAM,UAAU,IAAA,YAAgB,KAAA,GAAQ,IAAA,CAAK,OAAA,GAAU,OAAO,IAAI,CAAA;AAClE,IAAA,MAAM,KAAA,GAAQ,0BAAA,CAA2B,IAAA,CAAK,OAAO,CAAA;AACrD,IAAA,IAAI,KAAA,EAAO;AACT,MAAA,OAAO;AAAA,QACL,QAAA,EAAU,MAAA,CAAO,KAAA,CAAM,CAAC,CAAC,CAAA;AAAA,QACzB,MAAA,EAAQ,MAAM,CAAC,CAAA,KAAM,SAAY,MAAA,GAAY,MAAA,CAAO,KAAA,CAAM,CAAC,CAAC;AAAA,OAC9D;AAAA,IACF;AAAA,EACF;AACA,EAAA,OAAO,MAAA;AACT;;;ACxFO,SAAS,cAAA,CAAe,MAAc,KAAA,EAAyB;AACpE,EAAA,IAAI,KAAA,KAAU,QAAQ,OAAO,KAAA,KAAU,YAAY,CAAC,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,EAAG;AACxE,IAAA,MAAM,SAAkC,EAAC;AACzC,IAAA,KAAA,MAAW,OAAO,MAAA,CAAO,IAAA,CAAK,KAAK,CAAA,CAAE,UAAS,EAAG;AAC/C,MAAA,MAAA,CAAO,GAAG,CAAA,GAAK,KAAA,CAAkC,GAAG,CAAA;AAAA,IACtD;AACA,IAAA,OAAO,MAAA;AAAA,EACT;AACA,EAAA,OAAO,KAAA;AACT;AAaO,SAAS,cAAA,CAAe,GAAY,CAAA,EAAqB;AAC9D,EAAA,OACE,IAAA,CAAK,UAAU,CAAA,EAAG,cAAc,MAAM,IAAA,CAAK,SAAA,CAAU,GAAG,cAAc,CAAA;AAE1E","file":"chunk-RP7YITHX.cjs","sourcesContent":["/**\n * Cross-dialect detection of \"this relation does not exist yet\" errors.\n *\n * Shared so the schema bootstrap (`loadActiveSchemaWithBootstrap`) and\n * the durable contribution-materialization gate (#135) agree on what a\n * missing-table failure looks like, and — critically — so neither one\n * swallows a genuine system fault (connection/permission/driver error)\n * as a benign \"not bootstrapped yet\".\n *\n * Detection walks the error's `cause` chain because Drizzle (>= the\n * `DrizzleQueryError` era, drizzle-orm ≥ 0.36) wraps every failure from a\n * query-builder call (`db.select()`, `db.insert()`, …): the wrapper's\n * `.message` becomes the failed query text and the real driver error —\n * which carries both the missing-relation text and the SQLSTATE — is\n * preserved on `.cause`. node-postgres / postgres-js nest the pg error\n * one link deep; better-sqlite3 throws it unwrapped; raw `client.query()`\n * fast paths surface it directly. Walking the chain makes the check\n * wrapper- and driver-agnostic instead of only matching the outermost\n * `.message`, which on Postgres is just the SQL string.\n */\n\nconst MISSING_TABLE_PATTERNS = [\n \"no such table\", // SQLite\n \"does not exist\", // PostgreSQL (\"relation ... does not exist\")\n \"SQLITE_ERROR\", // D1 / Durable Objects error code\n] as const;\n\n/**\n * SQLSTATE for PostgreSQL `undefined_table`. Preferred over the\n * human-readable message: it is locale-independent (the \"... does not\n * exist\" text is translated under a non-English `lc_messages`) and is\n * preserved on the underlying driver error even when Drizzle overwrites\n * `.message` with the query text.\n */\nconst POSTGRES_UNDEFINED_TABLE_CODE = \"42P01\";\n\n/**\n * Yields an error and each error reachable by following `.cause`,\n * outermost first. `seen` guards the pathological cyclic-cause case so a\n * self-referential chain can't spin forever.\n */\nfunction* errorChain(error: unknown): Generator<unknown, void, void> {\n const seen = new Set<unknown>();\n let current: unknown = error;\n while (current !== undefined && current !== null && !seen.has(current)) {\n seen.add(current);\n yield current;\n current = current instanceof Error ? current.cause : undefined;\n }\n}\n\n/**\n * Whether a single chain link is a PostgreSQL `undefined_table` failure,\n * identified by its SQLSTATE rather than a message substring.\n */\nfunction isPostgresUndefinedTable(link: unknown): boolean {\n return (\n typeof link === \"object\" &&\n link !== null &&\n \"code\" in link &&\n (link as Readonly<{ code?: unknown }>).code ===\n POSTGRES_UNDEFINED_TABLE_CODE\n );\n}\n\nexport function isMissingTableError(error: unknown): boolean {\n for (const link of errorChain(error)) {\n if (isPostgresUndefinedTable(link)) return true;\n const message = link instanceof Error ? link.message : String(link);\n if (MISSING_TABLE_PATTERNS.some((pattern) => message.includes(pattern))) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * Engine \"vector dimension mismatch\" message shapes. pgvector:\n * `expected 384 dimensions, not 512`; libSQL / sqlite-vec surface a similar\n * `expected N … got/not M`. The first capture is the dimension the *stored*\n * column expects; the optional second is the dimension that was *attempted*.\n */\nconst DIMENSION_MISMATCH_PATTERN =\n /expected (\\d+) dimensions(?:[,\\s]+(?:not|got|but got|but)\\s*(\\d+))?/i;\n\n/**\n * Parses an engine vector-dimension-mismatch error into `{ expected, actual }`\n * by walking the `.cause` chain (drivers wrap the real error). `expected` is\n * the stored column's dimension; `actual` (when the message includes it) is the\n * attempted vector's dimension. Returns `undefined` for unrelated errors.\n */\nexport function parseDimensionMismatch(\n error: unknown,\n): { expected: number; actual: number | undefined } | undefined {\n for (const link of errorChain(error)) {\n const message = link instanceof Error ? link.message : String(link);\n const match = DIMENSION_MISMATCH_PATTERN.exec(message);\n if (match) {\n return {\n expected: Number(match[1]),\n actual: match[2] === undefined ? undefined : Number(match[2]),\n };\n }\n }\n return undefined;\n}\n","/**\n * Canonical-form helpers for deterministic schema serialization.\n *\n * Used by both content-hashing (`computeSchemaHash`) and structural diffing\n * (`computeSchemaDiff`) to ensure that semantically-equivalent objects with\n * differently-ordered keys produce identical canonical strings.\n */\n\n/**\n * `JSON.stringify` replacer that sorts object keys recursively.\n *\n * Apply via `JSON.stringify(value, sortedReplacer)` to obtain output in\n * which sibling keys at every depth appear in lexicographic order.\n *\n * Arrays are passed through unchanged — array order is semantically\n * meaningful and must not be normalized.\n */\nexport function sortedReplacer(_key: string, value: unknown): unknown {\n if (value !== null && typeof value === \"object\" && !Array.isArray(value)) {\n const sorted: Record<string, unknown> = {};\n for (const key of Object.keys(value).toSorted()) {\n sorted[key] = (value as Record<string, unknown>)[key];\n }\n return sorted;\n }\n return value;\n}\n\n/**\n * Compare two values for canonical-form equality.\n *\n * Returns `true` when both values produce identical JSON under `sortedReplacer`\n * — i.e., they have the same JSON structure regardless of object key order.\n * Used by diff machinery to detect semantic changes in JSON-shaped fields.\n *\n * Note: callers must handle `undefined` themselves — `JSON.stringify(undefined)`\n * returns `undefined`, so two `undefined` inputs would compare equal here, which\n * may or may not be the desired semantics depending on context.\n */\nexport function canonicalEqual(a: unknown, b: unknown): boolean {\n return (\n JSON.stringify(a, sortedReplacer) === JSON.stringify(b, sortedReplacer)\n );\n}\n"]}
|