@nicia-ai/typegraph 0.29.0 → 0.30.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 (142) hide show
  1. package/dist/backend/postgres/index.cjs +19 -19
  2. package/dist/backend/postgres/index.d.cts +5 -5
  3. package/dist/backend/postgres/index.d.ts +5 -5
  4. package/dist/backend/postgres/index.js +9 -9
  5. package/dist/backend/postgres/pglite.cjs +14 -14
  6. package/dist/backend/postgres/pglite.d.cts +2 -2
  7. package/dist/backend/postgres/pglite.d.ts +2 -2
  8. package/dist/backend/postgres/pglite.js +9 -9
  9. package/dist/backend/sqlite/index.cjs +17 -17
  10. package/dist/backend/sqlite/index.d.cts +11 -6
  11. package/dist/backend/sqlite/index.d.ts +11 -6
  12. package/dist/backend/sqlite/index.js +8 -8
  13. package/dist/backend/sqlite/libsql.cjs +13 -13
  14. package/dist/backend/sqlite/libsql.d.cts +2 -2
  15. package/dist/backend/sqlite/libsql.d.ts +2 -2
  16. package/dist/backend/sqlite/libsql.js +9 -9
  17. package/dist/backend/sqlite/local.cjs +16 -15
  18. package/dist/backend/sqlite/local.cjs.map +1 -1
  19. package/dist/backend/sqlite/local.d.cts +8 -2
  20. package/dist/backend/sqlite/local.d.ts +8 -2
  21. package/dist/backend/sqlite/local.js +11 -10
  22. package/dist/backend/sqlite/local.js.map +1 -1
  23. package/dist/{chunk-UP4QAJND.cjs → chunk-26HWIIVS.cjs} +65 -65
  24. package/dist/{chunk-UP4QAJND.cjs.map → chunk-26HWIIVS.cjs.map} +1 -1
  25. package/dist/{chunk-GPUNAJFH.js → chunk-2QA5EHEN.js} +3 -3
  26. package/dist/{chunk-GPUNAJFH.js.map → chunk-2QA5EHEN.js.map} +1 -1
  27. package/dist/{chunk-CUZGBWFT.js → chunk-3IRMLJEK.js} +3 -3
  28. package/dist/{chunk-CUZGBWFT.js.map → chunk-3IRMLJEK.js.map} +1 -1
  29. package/dist/{chunk-MRMD7S7E.js → chunk-3JLRHQ67.js} +7 -7
  30. package/dist/{chunk-MRMD7S7E.js.map → chunk-3JLRHQ67.js.map} +1 -1
  31. package/dist/{chunk-UPBXUOW7.cjs → chunk-4BXHVEFB.cjs} +15 -15
  32. package/dist/{chunk-UPBXUOW7.cjs.map → chunk-4BXHVEFB.cjs.map} +1 -1
  33. package/dist/{chunk-RU5BBUU2.cjs → chunk-4LBO6KIF.cjs} +70 -67
  34. package/dist/chunk-4LBO6KIF.cjs.map +1 -0
  35. package/dist/{chunk-HKN622O4.js → chunk-633N7DSE.js} +9 -5
  36. package/dist/chunk-633N7DSE.js.map +1 -0
  37. package/dist/{chunk-R2LA6MKR.cjs → chunk-7JGLPAFV.cjs} +8 -8
  38. package/dist/{chunk-R2LA6MKR.cjs.map → chunk-7JGLPAFV.cjs.map} +1 -1
  39. package/dist/{chunk-7KLVFWXR.js → chunk-AI3RNREM.js} +30 -4
  40. package/dist/chunk-AI3RNREM.js.map +1 -0
  41. package/dist/{chunk-SFNUHFON.js → chunk-ENDUY2CD.js} +4 -4
  42. package/dist/{chunk-SFNUHFON.js.map → chunk-ENDUY2CD.js.map} +1 -1
  43. package/dist/{chunk-7V335GHG.cjs → chunk-FLRCVI2G.cjs} +12 -2
  44. package/dist/chunk-FLRCVI2G.cjs.map +1 -0
  45. package/dist/{chunk-IE2TPFBT.js → chunk-FVIGJTS7.js} +3 -3
  46. package/dist/{chunk-IE2TPFBT.js.map → chunk-FVIGJTS7.js.map} +1 -1
  47. package/dist/{chunk-Q5ASTPM4.cjs → chunk-FWBVPATK.cjs} +19 -19
  48. package/dist/{chunk-Q5ASTPM4.cjs.map → chunk-FWBVPATK.cjs.map} +1 -1
  49. package/dist/{chunk-KGAJ5HFO.cjs → chunk-IE6GN7L3.cjs} +17 -17
  50. package/dist/{chunk-KGAJ5HFO.cjs.map → chunk-IE6GN7L3.cjs.map} +1 -1
  51. package/dist/{chunk-A4H6QMV4.js → chunk-IUIJJYPI.js} +14 -11
  52. package/dist/chunk-IUIJJYPI.js.map +1 -0
  53. package/dist/{chunk-BMDF2S7S.js → chunk-IX7RE7CG.js} +3 -3
  54. package/dist/{chunk-BMDF2S7S.js.map → chunk-IX7RE7CG.js.map} +1 -1
  55. package/dist/{chunk-G6P3OVDY.cjs → chunk-JIEJCTDS.cjs} +18 -2
  56. package/dist/chunk-JIEJCTDS.cjs.map +1 -0
  57. package/dist/{chunk-XTQHSOIC.cjs → chunk-K4N35E7B.cjs} +86 -86
  58. package/dist/{chunk-XTQHSOIC.cjs.map → chunk-K4N35E7B.cjs.map} +1 -1
  59. package/dist/{chunk-NZ5PMBTG.js → chunk-K5P5OZXS.js} +12 -3
  60. package/dist/chunk-K5P5OZXS.js.map +1 -0
  61. package/dist/{chunk-Y52UNT66.js → chunk-K5VREXMZ.js} +7 -7
  62. package/dist/{chunk-Y52UNT66.js.map → chunk-K5VREXMZ.js.map} +1 -1
  63. package/dist/chunk-LUHU4T2F.cjs +12 -0
  64. package/dist/{chunk-Q3ZZLU3O.cjs.map → chunk-LUHU4T2F.cjs.map} +1 -1
  65. package/dist/{chunk-Z36W5WUM.js → chunk-MAQJYNJR.js} +3 -3
  66. package/dist/{chunk-Z36W5WUM.js.map → chunk-MAQJYNJR.js.map} +1 -1
  67. package/dist/{chunk-N3VVQDMA.js → chunk-MXE2U3EX.js} +3 -3
  68. package/dist/{chunk-N3VVQDMA.js.map → chunk-MXE2U3EX.js.map} +1 -1
  69. package/dist/{chunk-3DTLDGIM.js → chunk-N2OEOGBB.js} +6 -6
  70. package/dist/{chunk-3DTLDGIM.js.map → chunk-N2OEOGBB.js.map} +1 -1
  71. package/dist/{chunk-OGUH56BB.js → chunk-R4JOBEJU.js} +4 -4
  72. package/dist/{chunk-OGUH56BB.js.map → chunk-R4JOBEJU.js.map} +1 -1
  73. package/dist/{chunk-HM6XMR3E.cjs → chunk-SGPXKJ4A.cjs} +18 -18
  74. package/dist/{chunk-HM6XMR3E.cjs.map → chunk-SGPXKJ4A.cjs.map} +1 -1
  75. package/dist/{chunk-MB363HT5.js → chunk-TQOYM4LN.js} +18 -3
  76. package/dist/chunk-TQOYM4LN.js.map +1 -0
  77. package/dist/{chunk-C2RWFIYP.cjs → chunk-UESTHN47.cjs} +34 -6
  78. package/dist/chunk-UESTHN47.cjs.map +1 -0
  79. package/dist/{chunk-4K6IHUW6.cjs → chunk-VFX3LC76.cjs} +14 -14
  80. package/dist/{chunk-4K6IHUW6.cjs.map → chunk-VFX3LC76.cjs.map} +1 -1
  81. package/dist/{chunk-F2Q76CQ4.cjs → chunk-WEMZM7J7.cjs} +11 -7
  82. package/dist/chunk-WEMZM7J7.cjs.map +1 -0
  83. package/dist/{chunk-ZYQEXGYC.cjs → chunk-WFCECD6Q.cjs} +84 -84
  84. package/dist/{chunk-ZYQEXGYC.cjs.map → chunk-WFCECD6Q.cjs.map} +1 -1
  85. package/dist/{chunk-VGU26WIU.cjs → chunk-YQGLVWB2.cjs} +4 -4
  86. package/dist/{chunk-VGU26WIU.cjs.map → chunk-YQGLVWB2.cjs.map} +1 -1
  87. package/dist/{ddl-D3o-RmsV.d.cts → ddl-BSFlbGQF.d.cts} +3 -3
  88. package/dist/{ddl-BwH00BB6.d.ts → ddl-EdkIiFVU.d.ts} +3 -3
  89. package/dist/graph-extension/index.cjs +19 -19
  90. package/dist/graph-extension/index.d.cts +1 -1
  91. package/dist/graph-extension/index.d.ts +1 -1
  92. package/dist/graph-extension/index.js +4 -4
  93. package/dist/{index-CapHwi1a.d.ts → index-DzeIiMO3.d.ts} +9 -1
  94. package/dist/{index-jPPexxM5.d.cts → index-Ln_KHTGA.d.cts} +9 -1
  95. package/dist/index.cjs +780 -515
  96. package/dist/index.cjs.map +1 -1
  97. package/dist/index.d.cts +8 -8
  98. package/dist/index.d.ts +8 -8
  99. package/dist/index.js +314 -53
  100. package/dist/index.js.map +1 -1
  101. package/dist/indexes/index.cjs +18 -18
  102. package/dist/indexes/index.d.cts +4 -4
  103. package/dist/indexes/index.d.ts +4 -4
  104. package/dist/indexes/index.js +4 -4
  105. package/dist/interchange/index.cjs +7 -7
  106. package/dist/interchange/index.d.cts +3 -3
  107. package/dist/interchange/index.d.ts +3 -3
  108. package/dist/interchange/index.js +2 -2
  109. package/dist/{manager-BUugwCYz.d.ts → manager-BbdyNhkv.d.ts} +1 -1
  110. package/dist/{manager-DpIpn1HQ.d.cts → manager-wTDgjoXG.d.cts} +1 -1
  111. package/dist/{postgres-CQL9UIn2.d.cts → postgres-CK2ByP1q.d.cts} +1 -1
  112. package/dist/{postgres-CcRLaxz0.d.ts → postgres-ymXYC6Rr.d.ts} +1 -1
  113. package/dist/profiler/index.cjs +9 -9
  114. package/dist/profiler/index.d.cts +5 -5
  115. package/dist/profiler/index.d.ts +5 -5
  116. package/dist/profiler/index.js +2 -2
  117. package/dist/schema/index.cjs +31 -31
  118. package/dist/schema/index.d.cts +5 -5
  119. package/dist/schema/index.d.ts +5 -5
  120. package/dist/schema/index.js +8 -8
  121. package/dist/{sqlite-Rj3xu4It.d.cts → sqlite-DxH1lrwD.d.cts} +1 -1
  122. package/dist/{sqlite-CZDFUfHS.d.ts → sqlite-R8YGOqVQ.d.ts} +1 -1
  123. package/dist/{store-B43FpOVX.d.cts → store--z1Tmk7U.d.cts} +43 -3
  124. package/dist/{store-De0Y33wP.d.ts → store-CNKM334w.d.ts} +43 -3
  125. package/dist/{types-CmAT-Z47.d.ts → types-BBiDqJCU.d.ts} +2 -0
  126. package/dist/{types-B5GSeE3t.d.ts → types-CMvxx2kd.d.ts} +1 -1
  127. package/dist/{types-Bwlp_yvu.d.cts → types-D5B6Be5c.d.cts} +1 -1
  128. package/dist/{types-DXCSyxac.d.cts → types-dL-clxO3.d.cts} +2 -0
  129. package/dist/{where-CP4qGIHd.d.ts → where-CAo6wsBZ.d.ts} +1 -1
  130. package/dist/{where-2dsyYt3d.d.cts → where-bJjuOCeV.d.cts} +1 -1
  131. package/package.json +1 -1
  132. package/dist/chunk-7KLVFWXR.js.map +0 -1
  133. package/dist/chunk-7V335GHG.cjs.map +0 -1
  134. package/dist/chunk-A4H6QMV4.js.map +0 -1
  135. package/dist/chunk-C2RWFIYP.cjs.map +0 -1
  136. package/dist/chunk-F2Q76CQ4.cjs.map +0 -1
  137. package/dist/chunk-G6P3OVDY.cjs.map +0 -1
  138. package/dist/chunk-HKN622O4.js.map +0 -1
  139. package/dist/chunk-MB363HT5.js.map +0 -1
  140. package/dist/chunk-NZ5PMBTG.js.map +0 -1
  141. package/dist/chunk-Q3ZZLU3O.cjs +0 -12
  142. package/dist/chunk-RU5BBUU2.cjs.map +0 -1
@@ -1,5 +1,5 @@
1
- import { createSchemaIntrospector, resolveFieldTypeInfoAtJsonPointer } from './chunk-N3VVQDMA.js';
2
- import { jsonPointer, normalizeJsonPointer, parseJsonPointer } from './chunk-NZ5PMBTG.js';
1
+ import { createSchemaIntrospector, resolveFieldTypeInfoAtJsonPointer } from './chunk-MXE2U3EX.js';
2
+ import { jsonPointer, normalizeJsonPointer, parseJsonPointer } from './chunk-K5P5OZXS.js';
3
3
 
4
4
  // src/constants.ts
5
5
  var MAX_PG_IDENTIFIER_LENGTH = 63;
@@ -533,5 +533,5 @@ function sanitizeIdentifierComponent(value) {
533
533
  }
534
534
 
535
535
  export { DEFAULT_PAGINATION_LIMIT, DEFAULT_STREAM_BATCH_SIZE, EDGE_META_KEYS, MAX_PG_IDENTIFIER_LENGTH, NODE_META_KEYS, PG_ARRAY_END, PG_ARRAY_START, PG_PATH_ELEMENT_SEPARATOR, SQLITE_PATH_DELIMITER, defineEdgeIndex, defineNodeIndex, fnv1aBase36, sha256Hex };
536
- //# sourceMappingURL=chunk-OGUH56BB.js.map
537
- //# sourceMappingURL=chunk-OGUH56BB.js.map
536
+ //# sourceMappingURL=chunk-R4JOBEJU.js.map
537
+ //# sourceMappingURL=chunk-R4JOBEJU.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/constants.ts","../src/system-fields.ts","../src/utils/hash.ts","../src/indexes/define-index.ts"],"names":[],"mappings":"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","file":"chunk-OGUH56BB.js","sourcesContent":["/**\n * Shared constants used across the TypeGraph codebase.\n */\n\n// ============================================================\n// PostgreSQL Limits\n// ============================================================\n\n/**\n * PostgreSQL truncates identifiers longer than 63 bytes.\n * Used for column aliases, index names, and other generated identifiers.\n */\nexport const MAX_PG_IDENTIFIER_LENGTH = 63;\n\n/** Maximum byte length for the truncated portion of a generated identifier. */\nexport const TRUNCATED_IDENTIFIER_MAX_LENGTH = 54;\n\n/** Maximum length for a single component (kind name, field name) in a generated identifier. */\nexport const IDENTIFIER_COMPONENT_MAX_LENGTH = 20;\n\n// ============================================================\n// FNV-1a Hash Constants\n// ============================================================\n\n/** FNV-1a 32-bit offset basis. */\nexport const FNV1A_OFFSET_BASIS = 0x81_1c_9d_c5;\n\n/** FNV-1a 32-bit prime. */\nexport const FNV1A_PRIME = 0x01_00_01_93;\n\n// ============================================================\n// Pagination\n// ============================================================\n\n/** Default page size for paginate() and cursor-based pagination. */\nexport const DEFAULT_PAGINATION_LIMIT = 20;\n\n/** Default batch size for streaming query results. */\nexport const DEFAULT_STREAM_BATCH_SIZE = 1000;\n\n// ============================================================\n// Path Delimiters\n// ============================================================\n\n/** SQLite stores array paths as pipe-delimited strings: |id1|id2|id3| */\nexport const SQLITE_PATH_DELIMITER = \"|\";\n\n/** PostgreSQL text arrays use comma-separated elements: {id1,id2,id3} */\nexport const PG_PATH_ELEMENT_SEPARATOR = \",\";\n\n/** PostgreSQL text array start delimiter. */\nexport const PG_ARRAY_START = \"{\";\n\n/** PostgreSQL text array end delimiter. */\nexport const PG_ARRAY_END = \"}\";\n","export const NODE_META_KEYS = [\n \"version\",\n \"validFrom\",\n \"validTo\",\n \"createdAt\",\n \"updatedAt\",\n \"deletedAt\",\n] as const;\n\nexport const EDGE_META_KEYS = [\n \"validFrom\",\n \"validTo\",\n \"createdAt\",\n \"updatedAt\",\n \"deletedAt\",\n] as const;\n","/**\n * Hash utilities — FNV-1a for fast non-cryptographic identifier\n * generation, SHA-256 (truncated) for collision-resistant signatures.\n */\nimport { FNV1A_OFFSET_BASIS, FNV1A_PRIME } from \"../constants\";\n\n/**\n * FNV-1a hash of `input`, returned as a base-36 encoded string. Used for\n * generating short, deterministic identifiers (column aliases, index\n * name suffixes, etc.).\n */\nexport function fnv1aBase36(input: string): string {\n let hash = FNV1A_OFFSET_BASIS;\n for (const character of input) {\n const codePoint = character.codePointAt(0);\n if (codePoint === undefined) continue;\n hash ^= codePoint;\n hash = Math.imul(hash, FNV1A_PRIME);\n }\n return (hash >>> 0).toString(36);\n}\n\n/**\n * Hex-truncated SHA-256 of `input` via the Web Crypto API. Works in\n * Node.js 16+, Cloudflare Workers, Deno, and browsers.\n *\n * `byteLength` controls how many bytes of the digest are emitted —\n * default 8 (16 hex chars, ~64 bits, sufficient for schema-version and\n * per-graph index signatures). Pass 16 (32 hex chars) when hashes are\n * compared against externally-stored signatures.\n */\nexport async function sha256Hex(\n input: string,\n byteLength = 8,\n): Promise<string> {\n const encoded = new TextEncoder().encode(input);\n const digest = await globalThis.crypto.subtle.digest(\"SHA-256\", encoded);\n const bytes = new Uint8Array(digest);\n let hex = \"\";\n for (let index = 0; index < byteLength; index++) {\n const byte = bytes[index];\n if (byte === undefined) break;\n hex += byte.toString(16).padStart(2, \"0\");\n }\n return hex;\n}\n","import { type z } from \"zod\";\n\nimport {\n IDENTIFIER_COMPONENT_MAX_LENGTH,\n MAX_PG_IDENTIFIER_LENGTH,\n TRUNCATED_IDENTIFIER_MAX_LENGTH,\n} from \"../constants\";\nimport {\n type AnyEdgeType,\n type KindEntity,\n type NodeType,\n} from \"../core/types\";\nimport { type ValueType } from \"../query/ast\";\nimport { resolveFieldTypeInfoAtJsonPointer } from \"../query/field-type-info\";\nimport {\n type JsonPointer,\n jsonPointer,\n type JsonPointerInput,\n type JsonPointerSegment,\n normalizeJsonPointer,\n parseJsonPointer,\n} from \"../query/json-pointer\";\nimport {\n createSchemaIntrospector,\n type FieldTypeInfo,\n} from \"../query/schema-introspector\";\nimport { EDGE_META_KEYS, NODE_META_KEYS } from \"../system-fields\";\nimport { fnv1aBase36 } from \"../utils/hash\";\nimport {\n type EdgeIndexConfig,\n type EdgeIndexDeclaration,\n type EdgeIndexDirection,\n type EdgeIndexWhereBuilder,\n type IndexFieldInput,\n type IndexScope,\n type IndexWhereExpression,\n type IndexWhereFieldBuilder,\n type IndexWhereLiteral,\n type IndexWhereOp,\n type IndexWhereOperand,\n type NodeIndexConfig,\n type NodeIndexDeclaration,\n type NodeIndexWhereBuilder,\n type SystemColumnName,\n} from \"./types\";\n\n// ============================================================\n// Public API\n// ============================================================\n\nexport function defineNodeIndex<N extends NodeType>(\n node: N,\n config: NodeIndexConfig<N>,\n): NodeIndexDeclaration {\n const scope = config.scope ?? \"graphAndKind\";\n const unique = config.unique ?? false;\n\n const schemaIntrospector = createSchemaIntrospector(\n new Map([[node.kind, { schema: node.schema }]]),\n );\n\n const { pointers: fields, valueTypes: fieldValueTypes } =\n normalizeNodeIndexFieldsOrThrow(\n node,\n config.fields,\n schemaIntrospector,\n \"fields\",\n { allowEmpty: false },\n );\n\n const { pointers: coveringFields, valueTypes: coveringFieldValueTypes } =\n normalizeNodeIndexFieldsOrThrow(\n node,\n config.coveringFields ?? [],\n schemaIntrospector,\n \"coveringFields\",\n { allowEmpty: true },\n );\n assertNoOverlap(fields, coveringFields, \"fields\", \"coveringFields\");\n\n const where = normalizeWhereInput(config.where, () =>\n createNodeWhereBuilder(node, schemaIntrospector),\n );\n\n const name =\n config.name ??\n generateDefaultIndexName({\n kind: \"node\",\n kindName: node.kind,\n unique,\n scope,\n direction: \"none\",\n fields,\n coveringFields,\n });\n\n // `origin` is intentionally omitted: `\"compile-time\"` is the default\n // and is canonicalized by absence so the serialized form stays\n // byte-identical for legacy graphs.\n return {\n entity: \"node\",\n kind: node.kind,\n name,\n fields,\n fieldValueTypes,\n coveringFields,\n coveringFieldValueTypes,\n unique,\n scope,\n where,\n };\n}\n\nexport function defineEdgeIndex<E extends AnyEdgeType>(\n edge: E,\n config: EdgeIndexConfig<E>,\n): EdgeIndexDeclaration {\n const scope = config.scope ?? \"graphAndKind\";\n const unique = config.unique ?? false;\n const direction = config.direction ?? \"none\";\n\n const schemaIntrospector = createSchemaIntrospector(\n new Map(),\n new Map([[edge.kind, { schema: edge.schema }]]),\n );\n\n const { pointers: fields, valueTypes: fieldValueTypes } =\n normalizeEdgeIndexFieldsOrThrow(\n edge,\n config.fields,\n schemaIntrospector,\n \"fields\",\n { allowEmpty: false },\n );\n\n const { pointers: coveringFields, valueTypes: coveringFieldValueTypes } =\n normalizeEdgeIndexFieldsOrThrow(\n edge,\n config.coveringFields ?? [],\n schemaIntrospector,\n \"coveringFields\",\n { allowEmpty: true },\n );\n assertNoOverlap(fields, coveringFields, \"fields\", \"coveringFields\");\n\n const where = normalizeWhereInput(config.where, () =>\n createEdgeWhereBuilder(edge, schemaIntrospector),\n );\n\n const name =\n config.name ??\n generateDefaultIndexName({\n kind: \"edge\",\n kindName: edge.kind,\n unique,\n scope,\n direction,\n fields,\n coveringFields,\n });\n\n return {\n entity: \"edge\",\n kind: edge.kind,\n name,\n fields,\n fieldValueTypes,\n coveringFields,\n coveringFieldValueTypes,\n unique,\n scope,\n direction,\n where,\n };\n}\n\n// ============================================================\n// WHERE Builder\n// ============================================================\n\n/**\n * The WHERE builder currently only supports top-level fields.\n * Nested field access (e.g., `where.metadata.priority.gt(5)`) is not supported.\n * Use top-level field predicates like `where.status.eq(\"active\")`.\n *\n * For complex nested predicates, use `andWhere()`, `orWhere()`, and `notWhere()`\n * to compose multiple top-level conditions.\n */\n\nfunction normalizeWhereInput<Builder>(\n input:\n | ((where: Builder) => IndexWhereExpression)\n | IndexWhereExpression\n | undefined,\n createBuilder: () => Builder,\n): IndexWhereExpression | undefined {\n if (input === undefined) {\n return undefined;\n }\n\n if (typeof input === \"function\") {\n return input(createBuilder());\n }\n\n return input;\n}\n\ntype NodeShape = Readonly<Record<string, z.ZodType>>;\ntype EdgeShape = Readonly<Record<string, z.ZodType>>;\n\nfunction createNodeWhereBuilder<N extends NodeType>(\n node: N,\n schemaIntrospector: ReturnType<typeof createSchemaIntrospector>,\n): NodeIndexWhereBuilder<N> {\n const shape = getSchemaShape(node.schema);\n const system = createSystemColumnMapForNode();\n\n function getOperand(key: string): IndexWhereOperand {\n const systemColumn = system.get(key);\n if (systemColumn) {\n return {\n __type: \"index_operand_system\",\n column: systemColumn.column,\n valueType: systemColumn.valueType,\n };\n }\n\n if (!(key in shape)) {\n throw new Error(\n `Unknown field \"${key}\" in node index WHERE clause for \"${node.kind}\"`,\n );\n }\n\n const info = schemaIntrospector.getFieldTypeInfo(node.kind, key);\n const valueType = info?.valueType;\n\n return {\n __type: \"index_operand_prop\",\n field: key,\n valueType,\n };\n }\n\n return createWhereProxy<NodeIndexWhereBuilder<N>>((key) => getOperand(key));\n}\n\nfunction createEdgeWhereBuilder<E extends AnyEdgeType>(\n edge: E,\n schemaIntrospector: ReturnType<typeof createSchemaIntrospector>,\n): EdgeIndexWhereBuilder<E> {\n const shape = getSchemaShape(edge.schema);\n const system = createSystemColumnMapForEdge();\n\n function getOperand(key: string): IndexWhereOperand {\n const systemColumn = system.get(key);\n if (systemColumn) {\n return {\n __type: \"index_operand_system\",\n column: systemColumn.column,\n valueType: systemColumn.valueType,\n };\n }\n\n if (!(key in shape)) {\n throw new Error(\n `Unknown field \"${key}\" in edge index WHERE clause for \"${edge.kind}\"`,\n );\n }\n\n const info = schemaIntrospector.getEdgeFieldTypeInfo(edge.kind, key);\n const valueType = info?.valueType;\n\n return {\n __type: \"index_operand_prop\",\n field: key,\n valueType,\n };\n }\n\n return createWhereProxy<EdgeIndexWhereBuilder<E>>((key) => getOperand(key));\n}\n\nfunction createWhereProxy<TBuilder extends object>(\n getOperand: (key: string) => IndexWhereOperand,\n): TBuilder {\n return new Proxy(Object.create(null) as TBuilder, {\n get: (_target, property: string | symbol) => {\n if (typeof property !== \"string\") return;\n if (property === \"then\") return;\n if (property === \"toJSON\") return;\n\n const operand = getOperand(property);\n return createIndexWhereFieldBuilder(operand);\n },\n });\n}\n\nfunction createIndexWhereFieldBuilder<T>(\n operand: IndexWhereOperand,\n): IndexWhereFieldBuilder<T> {\n function isNull(): IndexWhereExpression {\n return { __type: \"index_where_null_check\", operand, op: \"isNull\" };\n }\n\n function isNotNull(): IndexWhereExpression {\n return { __type: \"index_where_null_check\", operand, op: \"isNotNull\" };\n }\n\n function comparison(op: IndexWhereOp, value: unknown): IndexWhereExpression {\n return {\n __type: \"index_where_comparison\",\n left: operand,\n op,\n right: toLiteralOrThrow(value, operand.valueType),\n };\n }\n\n function listComparison(\n op: IndexWhereOp,\n values: readonly unknown[],\n ): IndexWhereExpression {\n const literals = values.map((value) =>\n toLiteralOrThrow(value, operand.valueType),\n );\n return {\n __type: \"index_where_comparison\",\n left: operand,\n op,\n right: literals,\n };\n }\n\n return {\n eq: (value) => comparison(\"eq\", value),\n neq: (value) => comparison(\"neq\", value),\n gt: (value) => comparison(\"gt\", value),\n gte: (value) => comparison(\"gte\", value),\n lt: (value) => comparison(\"lt\", value),\n lte: (value) => comparison(\"lte\", value),\n in: (values) => listComparison(\"in\", values),\n notIn: (values) => listComparison(\"notIn\", values),\n isNull,\n isNotNull,\n };\n}\n\nfunction toLiteralOrThrow(\n value: unknown,\n preferredType: ValueType | undefined,\n): IndexWhereLiteral {\n if (value instanceof Date) {\n return {\n __type: \"index_where_literal\",\n value: value.toISOString(),\n valueType: \"date\",\n };\n }\n\n if (\n typeof value === \"string\" ||\n typeof value === \"number\" ||\n typeof value === \"boolean\"\n ) {\n const valueType = inferValueType(value, preferredType);\n return { __type: \"index_where_literal\", value, valueType };\n }\n\n throw new Error(\n `Unsupported literal value type in index WHERE clause: ${String(value)}`,\n );\n}\n\nfunction inferValueType(\n value: string | number | boolean,\n preferredType: ValueType | undefined,\n): ValueType {\n if (preferredType === \"date\" && typeof value === \"string\") {\n return \"date\";\n }\n if (preferredType === \"number\" && typeof value === \"string\") {\n return \"number\";\n }\n if (preferredType === \"boolean\" && typeof value === \"string\") {\n return \"boolean\";\n }\n\n if (typeof value === \"string\") return \"string\";\n if (typeof value === \"number\") return \"number\";\n return \"boolean\";\n}\n\nfunction toSystemColumnName(metaKey: string): SystemColumnName {\n const snake = metaKey.replaceAll(/([A-Z])/g, \"_$1\").toLowerCase();\n\n switch (snake) {\n case \"deleted_at\":\n case \"valid_from\":\n case \"valid_to\":\n case \"created_at\":\n case \"updated_at\": {\n return snake;\n }\n default: {\n throw new Error(`Unsupported system meta key: ${metaKey}`);\n }\n }\n}\n\nfunction createSystemColumnMapForNode(): Map<\n string,\n Readonly<{ column: SystemColumnName; valueType: ValueType | undefined }>\n> {\n const entries: (readonly [\n string,\n Readonly<{ column: SystemColumnName; valueType: ValueType | undefined }>,\n ])[] = [\n [\"graphId\", { column: \"graph_id\", valueType: \"string\" }],\n [\"kind\", { column: \"kind\", valueType: \"string\" }],\n [\"id\", { column: \"id\", valueType: \"string\" }],\n ];\n\n for (const key of NODE_META_KEYS) {\n if (key === \"version\") {\n entries.push([key, { column: \"version\", valueType: \"number\" }]);\n continue;\n }\n entries.push([key, { column: toSystemColumnName(key), valueType: \"date\" }]);\n }\n\n return new Map(entries);\n}\n\nfunction createSystemColumnMapForEdge(): Map<\n string,\n Readonly<{ column: SystemColumnName; valueType: ValueType | undefined }>\n> {\n const entries: (readonly [\n string,\n Readonly<{ column: SystemColumnName; valueType: ValueType | undefined }>,\n ])[] = [\n [\"graphId\", { column: \"graph_id\", valueType: \"string\" }],\n [\"kind\", { column: \"kind\", valueType: \"string\" }],\n [\"id\", { column: \"id\", valueType: \"string\" }],\n [\"fromKind\", { column: \"from_kind\", valueType: \"string\" }],\n [\"fromId\", { column: \"from_id\", valueType: \"string\" }],\n [\"toKind\", { column: \"to_kind\", valueType: \"string\" }],\n [\"toId\", { column: \"to_id\", valueType: \"string\" }],\n ];\n\n for (const key of EDGE_META_KEYS) {\n entries.push([key, { column: toSystemColumnName(key), valueType: \"date\" }]);\n }\n\n return new Map(entries);\n}\n\nfunction getSchemaShape(schema: z.ZodType): NodeShape | EdgeShape {\n if (schema.type !== \"object\") {\n throw new Error(\"Index definitions require an object schema\");\n }\n\n const def = schema.def as { shape?: Record<string, z.ZodType> };\n const shape = def.shape;\n if (!shape) {\n throw new Error(\"Index definitions require a resolvable object shape\");\n }\n\n return shape;\n}\n\n// ============================================================\n// Validation\n// ============================================================\n\nfunction assertNonEmpty(values: readonly unknown[], label: string): void {\n if (values.length === 0) {\n throw new Error(`Index ${label} must not be empty`);\n }\n}\n\nfunction assertUnique(values: readonly string[], label: string): void {\n const set = new Set<string>();\n for (const value of values) {\n if (set.has(value)) {\n throw new Error(`Index ${label} contains duplicate value: ${value}`);\n }\n set.add(value);\n }\n}\n\nfunction assertNoOverlap(\n a: readonly string[],\n b: readonly string[],\n aLabel: string,\n bLabel: string,\n): void {\n const set = new Set(a);\n for (const value of b) {\n if (set.has(value)) {\n throw new Error(`Index ${bLabel} must not overlap ${aLabel}: ${value}`);\n }\n }\n}\n\nfunction assertIndexableValueType(valueType: ValueType, context: string): void {\n if (valueType === \"embedding\") {\n throw new Error(\n `Cannot create props index for embedding field (${context}); embedding() fields are indexed automatically in the vector strategy's per-(kind, field) storage`,\n );\n }\n\n if (valueType === \"array\" || valueType === \"object\") {\n throw new Error(\n `Cannot create btree props index for ${valueType} field (${context}); use a GIN/JSON index strategy instead`,\n );\n }\n}\n\ntype NormalizedIndexFields = Readonly<{\n pointers: readonly JsonPointer[];\n valueTypes: readonly (ValueType | undefined)[];\n}>;\n\nfunction normalizeNodeIndexFieldsOrThrow<N extends NodeType>(\n node: N,\n inputs: readonly IndexFieldInput<z.infer<N[\"schema\"]>>[],\n schemaIntrospector: ReturnType<typeof createSchemaIntrospector>,\n label: string,\n options: Readonly<{ allowEmpty: boolean }>,\n): NormalizedIndexFields {\n if (inputs.length === 0 && options.allowEmpty) {\n return { pointers: [], valueTypes: [] };\n }\n assertNonEmpty(inputs, label);\n\n const pointers: JsonPointer[] = [];\n const valueTypes: (ValueType | undefined)[] = [];\n\n for (const input of inputs) {\n const pointer = normalizeIndexFieldPointer(input);\n const info = resolveNodeFieldTypeInfoOrThrow(\n node.kind,\n pointer,\n schemaIntrospector,\n );\n assertIndexableValueType(info.valueType, `node \"${node.kind}\" ${pointer}`);\n pointers.push(pointer);\n valueTypes.push(info.valueType);\n }\n\n assertUnique(pointers, label);\n\n return { pointers, valueTypes };\n}\n\nfunction normalizeEdgeIndexFieldsOrThrow<E extends AnyEdgeType>(\n edge: E,\n inputs: readonly IndexFieldInput<z.infer<E[\"schema\"]>>[],\n schemaIntrospector: ReturnType<typeof createSchemaIntrospector>,\n label: string,\n options: Readonly<{ allowEmpty: boolean }>,\n): NormalizedIndexFields {\n if (inputs.length === 0 && options.allowEmpty) {\n return { pointers: [], valueTypes: [] };\n }\n assertNonEmpty(inputs, label);\n\n const pointers: JsonPointer[] = [];\n const valueTypes: (ValueType | undefined)[] = [];\n\n for (const input of inputs) {\n const pointer = normalizeIndexFieldPointer(input);\n const info = resolveEdgeFieldTypeInfoOrThrow(\n edge.kind,\n pointer,\n schemaIntrospector,\n );\n assertIndexableValueType(info.valueType, `edge \"${edge.kind}\" ${pointer}`);\n pointers.push(pointer);\n valueTypes.push(info.valueType);\n }\n\n assertUnique(pointers, label);\n\n return { pointers, valueTypes };\n}\n\nfunction normalizeIndexFieldPointer<T>(input: IndexFieldInput<T>): JsonPointer {\n if (Array.isArray(input)) {\n if (input.length === 0) {\n throw new Error(\"Index field JSON pointer must not be empty\");\n }\n return jsonPointer(input as readonly JsonPointerSegment[]);\n }\n\n if (typeof input === \"string\") {\n if (input.startsWith(\"/\")) {\n const pointer = normalizeJsonPointer(\n input as JsonPointerInput<Record<string, unknown>>,\n );\n if (pointer === \"\") {\n throw new Error(\"Index field JSON pointer must not be empty\");\n }\n return pointer;\n }\n return jsonPointer([input]);\n }\n\n throw new Error(`Unsupported index field input: ${String(input)}`);\n}\n\nfunction resolveNodeFieldTypeInfoOrThrow(\n nodeKind: string,\n pointer: JsonPointer,\n schemaIntrospector: ReturnType<typeof createSchemaIntrospector>,\n): FieldTypeInfo {\n const segments = parseJsonPointer(pointer);\n const [first, ...rest] = segments;\n if (!first) {\n throw new Error(\"Index field JSON pointer must not be empty\");\n }\n\n const rootInfo = schemaIntrospector.getFieldTypeInfo(nodeKind, first);\n if (!rootInfo) {\n throw new Error(\n `Unknown field \"${first}\" for node \"${nodeKind}\" in index definition`,\n );\n }\n\n if (rest.length === 0) {\n return rootInfo;\n }\n\n const resolved = resolveFieldTypeInfoAtJsonPointer(\n rootInfo,\n jsonPointer(rest),\n );\n if (!resolved) {\n throw new Error(\n `Unknown JSON pointer \"${pointer}\" for node \"${nodeKind}\" in index definition`,\n );\n }\n\n return resolved;\n}\n\nfunction resolveEdgeFieldTypeInfoOrThrow(\n edgeKind: string,\n pointer: JsonPointer,\n schemaIntrospector: ReturnType<typeof createSchemaIntrospector>,\n): FieldTypeInfo {\n const segments = parseJsonPointer(pointer);\n const [first, ...rest] = segments;\n if (!first) {\n throw new Error(\"Index field JSON pointer must not be empty\");\n }\n\n const rootInfo = schemaIntrospector.getEdgeFieldTypeInfo(edgeKind, first);\n if (!rootInfo) {\n throw new Error(\n `Unknown field \"${first}\" for edge \"${edgeKind}\" in index definition`,\n );\n }\n\n if (rest.length === 0) {\n return rootInfo;\n }\n\n const resolved = resolveFieldTypeInfoAtJsonPointer(\n rootInfo,\n jsonPointer(rest),\n );\n if (!resolved) {\n throw new Error(\n `Unknown JSON pointer \"${pointer}\" for edge \"${edgeKind}\" in index definition`,\n );\n }\n\n return resolved;\n}\n\n// ============================================================\n// Default Name Generation\n// ============================================================\n\ntype DefaultNameParts = Readonly<{\n kind: KindEntity;\n kindName: string;\n unique: boolean;\n scope: IndexScope;\n direction: EdgeIndexDirection;\n fields: readonly string[];\n coveringFields: readonly string[];\n}>;\n\nfunction generateDefaultIndexName(parts: DefaultNameParts): string {\n const hash = fnv1aBase36(\n JSON.stringify({\n kind: parts.kind,\n kindName: parts.kindName,\n unique: parts.unique,\n scope: parts.scope,\n direction: parts.direction,\n fields: parts.fields,\n covering: parts.coveringFields,\n }),\n );\n\n const nameParts = [\n \"idx\",\n \"tg\",\n parts.kind,\n sanitizeIdentifierComponent(parts.kindName),\n sanitizeIdentifierComponent(parts.fields.join(\"_\")),\n parts.coveringFields.length > 0 ?\n `cov_${sanitizeIdentifierComponent(parts.coveringFields.join(\"_\"))}`\n : undefined,\n parts.direction === \"none\" ? undefined : parts.direction,\n parts.unique ? \"uniq\" : undefined,\n parts.scope === \"graphAndKind\" ?\n undefined\n : sanitizeIdentifierComponent(parts.scope),\n hash,\n ].filter((part) => part !== undefined);\n\n const joined = nameParts.join(\"_\");\n return joined.length <= MAX_PG_IDENTIFIER_LENGTH ?\n joined\n : `${joined.slice(0, TRUNCATED_IDENTIFIER_MAX_LENGTH)}_${hash}`;\n}\n\nfunction sanitizeIdentifierComponent(value: string): string {\n return value\n .toLowerCase()\n .replaceAll(/[^a-z0-9_]+/g, \"_\")\n .replaceAll(/^_+|_+$/g, \"\")\n .slice(0, IDENTIFIER_COMPONENT_MAX_LENGTH);\n}\n"]}
1
+ {"version":3,"sources":["../src/constants.ts","../src/system-fields.ts","../src/utils/hash.ts","../src/indexes/define-index.ts"],"names":[],"mappings":"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","file":"chunk-R4JOBEJU.js","sourcesContent":["/**\n * Shared constants used across the TypeGraph codebase.\n */\n\n// ============================================================\n// PostgreSQL Limits\n// ============================================================\n\n/**\n * PostgreSQL truncates identifiers longer than 63 bytes.\n * Used for column aliases, index names, and other generated identifiers.\n */\nexport const MAX_PG_IDENTIFIER_LENGTH = 63;\n\n/** Maximum byte length for the truncated portion of a generated identifier. */\nexport const TRUNCATED_IDENTIFIER_MAX_LENGTH = 54;\n\n/** Maximum length for a single component (kind name, field name) in a generated identifier. */\nexport const IDENTIFIER_COMPONENT_MAX_LENGTH = 20;\n\n// ============================================================\n// FNV-1a Hash Constants\n// ============================================================\n\n/** FNV-1a 32-bit offset basis. */\nexport const FNV1A_OFFSET_BASIS = 0x81_1c_9d_c5;\n\n/** FNV-1a 32-bit prime. */\nexport const FNV1A_PRIME = 0x01_00_01_93;\n\n// ============================================================\n// Pagination\n// ============================================================\n\n/** Default page size for paginate() and cursor-based pagination. */\nexport const DEFAULT_PAGINATION_LIMIT = 20;\n\n/** Default batch size for streaming query results. */\nexport const DEFAULT_STREAM_BATCH_SIZE = 1000;\n\n// ============================================================\n// Path Delimiters\n// ============================================================\n\n/** SQLite stores array paths as pipe-delimited strings: |id1|id2|id3| */\nexport const SQLITE_PATH_DELIMITER = \"|\";\n\n/** PostgreSQL text arrays use comma-separated elements: {id1,id2,id3} */\nexport const PG_PATH_ELEMENT_SEPARATOR = \",\";\n\n/** PostgreSQL text array start delimiter. */\nexport const PG_ARRAY_START = \"{\";\n\n/** PostgreSQL text array end delimiter. */\nexport const PG_ARRAY_END = \"}\";\n","export const NODE_META_KEYS = [\n \"version\",\n \"validFrom\",\n \"validTo\",\n \"createdAt\",\n \"updatedAt\",\n \"deletedAt\",\n] as const;\n\nexport const EDGE_META_KEYS = [\n \"validFrom\",\n \"validTo\",\n \"createdAt\",\n \"updatedAt\",\n \"deletedAt\",\n] as const;\n","/**\n * Hash utilities — FNV-1a for fast non-cryptographic identifier\n * generation, SHA-256 (truncated) for collision-resistant signatures.\n */\nimport { FNV1A_OFFSET_BASIS, FNV1A_PRIME } from \"../constants\";\n\n/**\n * FNV-1a hash of `input`, returned as a base-36 encoded string. Used for\n * generating short, deterministic identifiers (column aliases, index\n * name suffixes, etc.).\n */\nexport function fnv1aBase36(input: string): string {\n let hash = FNV1A_OFFSET_BASIS;\n for (const character of input) {\n const codePoint = character.codePointAt(0);\n if (codePoint === undefined) continue;\n hash ^= codePoint;\n hash = Math.imul(hash, FNV1A_PRIME);\n }\n return (hash >>> 0).toString(36);\n}\n\n/**\n * Hex-truncated SHA-256 of `input` via the Web Crypto API. Works in\n * Node.js 16+, Cloudflare Workers, Deno, and browsers.\n *\n * `byteLength` controls how many bytes of the digest are emitted —\n * default 8 (16 hex chars, ~64 bits, sufficient for schema-version and\n * per-graph index signatures). Pass 16 (32 hex chars) when hashes are\n * compared against externally-stored signatures.\n */\nexport async function sha256Hex(\n input: string,\n byteLength = 8,\n): Promise<string> {\n const encoded = new TextEncoder().encode(input);\n const digest = await globalThis.crypto.subtle.digest(\"SHA-256\", encoded);\n const bytes = new Uint8Array(digest);\n let hex = \"\";\n for (let index = 0; index < byteLength; index++) {\n const byte = bytes[index];\n if (byte === undefined) break;\n hex += byte.toString(16).padStart(2, \"0\");\n }\n return hex;\n}\n","import { type z } from \"zod\";\n\nimport {\n IDENTIFIER_COMPONENT_MAX_LENGTH,\n MAX_PG_IDENTIFIER_LENGTH,\n TRUNCATED_IDENTIFIER_MAX_LENGTH,\n} from \"../constants\";\nimport {\n type AnyEdgeType,\n type KindEntity,\n type NodeType,\n} from \"../core/types\";\nimport { type ValueType } from \"../query/ast\";\nimport { resolveFieldTypeInfoAtJsonPointer } from \"../query/field-type-info\";\nimport {\n type JsonPointer,\n jsonPointer,\n type JsonPointerInput,\n type JsonPointerSegment,\n normalizeJsonPointer,\n parseJsonPointer,\n} from \"../query/json-pointer\";\nimport {\n createSchemaIntrospector,\n type FieldTypeInfo,\n} from \"../query/schema-introspector\";\nimport { EDGE_META_KEYS, NODE_META_KEYS } from \"../system-fields\";\nimport { fnv1aBase36 } from \"../utils/hash\";\nimport {\n type EdgeIndexConfig,\n type EdgeIndexDeclaration,\n type EdgeIndexDirection,\n type EdgeIndexWhereBuilder,\n type IndexFieldInput,\n type IndexScope,\n type IndexWhereExpression,\n type IndexWhereFieldBuilder,\n type IndexWhereLiteral,\n type IndexWhereOp,\n type IndexWhereOperand,\n type NodeIndexConfig,\n type NodeIndexDeclaration,\n type NodeIndexWhereBuilder,\n type SystemColumnName,\n} from \"./types\";\n\n// ============================================================\n// Public API\n// ============================================================\n\nexport function defineNodeIndex<N extends NodeType>(\n node: N,\n config: NodeIndexConfig<N>,\n): NodeIndexDeclaration {\n const scope = config.scope ?? \"graphAndKind\";\n const unique = config.unique ?? false;\n\n const schemaIntrospector = createSchemaIntrospector(\n new Map([[node.kind, { schema: node.schema }]]),\n );\n\n const { pointers: fields, valueTypes: fieldValueTypes } =\n normalizeNodeIndexFieldsOrThrow(\n node,\n config.fields,\n schemaIntrospector,\n \"fields\",\n { allowEmpty: false },\n );\n\n const { pointers: coveringFields, valueTypes: coveringFieldValueTypes } =\n normalizeNodeIndexFieldsOrThrow(\n node,\n config.coveringFields ?? [],\n schemaIntrospector,\n \"coveringFields\",\n { allowEmpty: true },\n );\n assertNoOverlap(fields, coveringFields, \"fields\", \"coveringFields\");\n\n const where = normalizeWhereInput(config.where, () =>\n createNodeWhereBuilder(node, schemaIntrospector),\n );\n\n const name =\n config.name ??\n generateDefaultIndexName({\n kind: \"node\",\n kindName: node.kind,\n unique,\n scope,\n direction: \"none\",\n fields,\n coveringFields,\n });\n\n // `origin` is intentionally omitted: `\"compile-time\"` is the default\n // and is canonicalized by absence so the serialized form stays\n // byte-identical for legacy graphs.\n return {\n entity: \"node\",\n kind: node.kind,\n name,\n fields,\n fieldValueTypes,\n coveringFields,\n coveringFieldValueTypes,\n unique,\n scope,\n where,\n };\n}\n\nexport function defineEdgeIndex<E extends AnyEdgeType>(\n edge: E,\n config: EdgeIndexConfig<E>,\n): EdgeIndexDeclaration {\n const scope = config.scope ?? \"graphAndKind\";\n const unique = config.unique ?? false;\n const direction = config.direction ?? \"none\";\n\n const schemaIntrospector = createSchemaIntrospector(\n new Map(),\n new Map([[edge.kind, { schema: edge.schema }]]),\n );\n\n const { pointers: fields, valueTypes: fieldValueTypes } =\n normalizeEdgeIndexFieldsOrThrow(\n edge,\n config.fields,\n schemaIntrospector,\n \"fields\",\n { allowEmpty: false },\n );\n\n const { pointers: coveringFields, valueTypes: coveringFieldValueTypes } =\n normalizeEdgeIndexFieldsOrThrow(\n edge,\n config.coveringFields ?? [],\n schemaIntrospector,\n \"coveringFields\",\n { allowEmpty: true },\n );\n assertNoOverlap(fields, coveringFields, \"fields\", \"coveringFields\");\n\n const where = normalizeWhereInput(config.where, () =>\n createEdgeWhereBuilder(edge, schemaIntrospector),\n );\n\n const name =\n config.name ??\n generateDefaultIndexName({\n kind: \"edge\",\n kindName: edge.kind,\n unique,\n scope,\n direction,\n fields,\n coveringFields,\n });\n\n return {\n entity: \"edge\",\n kind: edge.kind,\n name,\n fields,\n fieldValueTypes,\n coveringFields,\n coveringFieldValueTypes,\n unique,\n scope,\n direction,\n where,\n };\n}\n\n// ============================================================\n// WHERE Builder\n// ============================================================\n\n/**\n * The WHERE builder currently only supports top-level fields.\n * Nested field access (e.g., `where.metadata.priority.gt(5)`) is not supported.\n * Use top-level field predicates like `where.status.eq(\"active\")`.\n *\n * For complex nested predicates, use `andWhere()`, `orWhere()`, and `notWhere()`\n * to compose multiple top-level conditions.\n */\n\nfunction normalizeWhereInput<Builder>(\n input:\n | ((where: Builder) => IndexWhereExpression)\n | IndexWhereExpression\n | undefined,\n createBuilder: () => Builder,\n): IndexWhereExpression | undefined {\n if (input === undefined) {\n return undefined;\n }\n\n if (typeof input === \"function\") {\n return input(createBuilder());\n }\n\n return input;\n}\n\ntype NodeShape = Readonly<Record<string, z.ZodType>>;\ntype EdgeShape = Readonly<Record<string, z.ZodType>>;\n\nfunction createNodeWhereBuilder<N extends NodeType>(\n node: N,\n schemaIntrospector: ReturnType<typeof createSchemaIntrospector>,\n): NodeIndexWhereBuilder<N> {\n const shape = getSchemaShape(node.schema);\n const system = createSystemColumnMapForNode();\n\n function getOperand(key: string): IndexWhereOperand {\n const systemColumn = system.get(key);\n if (systemColumn) {\n return {\n __type: \"index_operand_system\",\n column: systemColumn.column,\n valueType: systemColumn.valueType,\n };\n }\n\n if (!(key in shape)) {\n throw new Error(\n `Unknown field \"${key}\" in node index WHERE clause for \"${node.kind}\"`,\n );\n }\n\n const info = schemaIntrospector.getFieldTypeInfo(node.kind, key);\n const valueType = info?.valueType;\n\n return {\n __type: \"index_operand_prop\",\n field: key,\n valueType,\n };\n }\n\n return createWhereProxy<NodeIndexWhereBuilder<N>>((key) => getOperand(key));\n}\n\nfunction createEdgeWhereBuilder<E extends AnyEdgeType>(\n edge: E,\n schemaIntrospector: ReturnType<typeof createSchemaIntrospector>,\n): EdgeIndexWhereBuilder<E> {\n const shape = getSchemaShape(edge.schema);\n const system = createSystemColumnMapForEdge();\n\n function getOperand(key: string): IndexWhereOperand {\n const systemColumn = system.get(key);\n if (systemColumn) {\n return {\n __type: \"index_operand_system\",\n column: systemColumn.column,\n valueType: systemColumn.valueType,\n };\n }\n\n if (!(key in shape)) {\n throw new Error(\n `Unknown field \"${key}\" in edge index WHERE clause for \"${edge.kind}\"`,\n );\n }\n\n const info = schemaIntrospector.getEdgeFieldTypeInfo(edge.kind, key);\n const valueType = info?.valueType;\n\n return {\n __type: \"index_operand_prop\",\n field: key,\n valueType,\n };\n }\n\n return createWhereProxy<EdgeIndexWhereBuilder<E>>((key) => getOperand(key));\n}\n\nfunction createWhereProxy<TBuilder extends object>(\n getOperand: (key: string) => IndexWhereOperand,\n): TBuilder {\n return new Proxy(Object.create(null) as TBuilder, {\n get: (_target, property: string | symbol) => {\n if (typeof property !== \"string\") return;\n if (property === \"then\") return;\n if (property === \"toJSON\") return;\n\n const operand = getOperand(property);\n return createIndexWhereFieldBuilder(operand);\n },\n });\n}\n\nfunction createIndexWhereFieldBuilder<T>(\n operand: IndexWhereOperand,\n): IndexWhereFieldBuilder<T> {\n function isNull(): IndexWhereExpression {\n return { __type: \"index_where_null_check\", operand, op: \"isNull\" };\n }\n\n function isNotNull(): IndexWhereExpression {\n return { __type: \"index_where_null_check\", operand, op: \"isNotNull\" };\n }\n\n function comparison(op: IndexWhereOp, value: unknown): IndexWhereExpression {\n return {\n __type: \"index_where_comparison\",\n left: operand,\n op,\n right: toLiteralOrThrow(value, operand.valueType),\n };\n }\n\n function listComparison(\n op: IndexWhereOp,\n values: readonly unknown[],\n ): IndexWhereExpression {\n const literals = values.map((value) =>\n toLiteralOrThrow(value, operand.valueType),\n );\n return {\n __type: \"index_where_comparison\",\n left: operand,\n op,\n right: literals,\n };\n }\n\n return {\n eq: (value) => comparison(\"eq\", value),\n neq: (value) => comparison(\"neq\", value),\n gt: (value) => comparison(\"gt\", value),\n gte: (value) => comparison(\"gte\", value),\n lt: (value) => comparison(\"lt\", value),\n lte: (value) => comparison(\"lte\", value),\n in: (values) => listComparison(\"in\", values),\n notIn: (values) => listComparison(\"notIn\", values),\n isNull,\n isNotNull,\n };\n}\n\nfunction toLiteralOrThrow(\n value: unknown,\n preferredType: ValueType | undefined,\n): IndexWhereLiteral {\n if (value instanceof Date) {\n return {\n __type: \"index_where_literal\",\n value: value.toISOString(),\n valueType: \"date\",\n };\n }\n\n if (\n typeof value === \"string\" ||\n typeof value === \"number\" ||\n typeof value === \"boolean\"\n ) {\n const valueType = inferValueType(value, preferredType);\n return { __type: \"index_where_literal\", value, valueType };\n }\n\n throw new Error(\n `Unsupported literal value type in index WHERE clause: ${String(value)}`,\n );\n}\n\nfunction inferValueType(\n value: string | number | boolean,\n preferredType: ValueType | undefined,\n): ValueType {\n if (preferredType === \"date\" && typeof value === \"string\") {\n return \"date\";\n }\n if (preferredType === \"number\" && typeof value === \"string\") {\n return \"number\";\n }\n if (preferredType === \"boolean\" && typeof value === \"string\") {\n return \"boolean\";\n }\n\n if (typeof value === \"string\") return \"string\";\n if (typeof value === \"number\") return \"number\";\n return \"boolean\";\n}\n\nfunction toSystemColumnName(metaKey: string): SystemColumnName {\n const snake = metaKey.replaceAll(/([A-Z])/g, \"_$1\").toLowerCase();\n\n switch (snake) {\n case \"deleted_at\":\n case \"valid_from\":\n case \"valid_to\":\n case \"created_at\":\n case \"updated_at\": {\n return snake;\n }\n default: {\n throw new Error(`Unsupported system meta key: ${metaKey}`);\n }\n }\n}\n\nfunction createSystemColumnMapForNode(): Map<\n string,\n Readonly<{ column: SystemColumnName; valueType: ValueType | undefined }>\n> {\n const entries: (readonly [\n string,\n Readonly<{ column: SystemColumnName; valueType: ValueType | undefined }>,\n ])[] = [\n [\"graphId\", { column: \"graph_id\", valueType: \"string\" }],\n [\"kind\", { column: \"kind\", valueType: \"string\" }],\n [\"id\", { column: \"id\", valueType: \"string\" }],\n ];\n\n for (const key of NODE_META_KEYS) {\n if (key === \"version\") {\n entries.push([key, { column: \"version\", valueType: \"number\" }]);\n continue;\n }\n entries.push([key, { column: toSystemColumnName(key), valueType: \"date\" }]);\n }\n\n return new Map(entries);\n}\n\nfunction createSystemColumnMapForEdge(): Map<\n string,\n Readonly<{ column: SystemColumnName; valueType: ValueType | undefined }>\n> {\n const entries: (readonly [\n string,\n Readonly<{ column: SystemColumnName; valueType: ValueType | undefined }>,\n ])[] = [\n [\"graphId\", { column: \"graph_id\", valueType: \"string\" }],\n [\"kind\", { column: \"kind\", valueType: \"string\" }],\n [\"id\", { column: \"id\", valueType: \"string\" }],\n [\"fromKind\", { column: \"from_kind\", valueType: \"string\" }],\n [\"fromId\", { column: \"from_id\", valueType: \"string\" }],\n [\"toKind\", { column: \"to_kind\", valueType: \"string\" }],\n [\"toId\", { column: \"to_id\", valueType: \"string\" }],\n ];\n\n for (const key of EDGE_META_KEYS) {\n entries.push([key, { column: toSystemColumnName(key), valueType: \"date\" }]);\n }\n\n return new Map(entries);\n}\n\nfunction getSchemaShape(schema: z.ZodType): NodeShape | EdgeShape {\n if (schema.type !== \"object\") {\n throw new Error(\"Index definitions require an object schema\");\n }\n\n const def = schema.def as { shape?: Record<string, z.ZodType> };\n const shape = def.shape;\n if (!shape) {\n throw new Error(\"Index definitions require a resolvable object shape\");\n }\n\n return shape;\n}\n\n// ============================================================\n// Validation\n// ============================================================\n\nfunction assertNonEmpty(values: readonly unknown[], label: string): void {\n if (values.length === 0) {\n throw new Error(`Index ${label} must not be empty`);\n }\n}\n\nfunction assertUnique(values: readonly string[], label: string): void {\n const set = new Set<string>();\n for (const value of values) {\n if (set.has(value)) {\n throw new Error(`Index ${label} contains duplicate value: ${value}`);\n }\n set.add(value);\n }\n}\n\nfunction assertNoOverlap(\n a: readonly string[],\n b: readonly string[],\n aLabel: string,\n bLabel: string,\n): void {\n const set = new Set(a);\n for (const value of b) {\n if (set.has(value)) {\n throw new Error(`Index ${bLabel} must not overlap ${aLabel}: ${value}`);\n }\n }\n}\n\nfunction assertIndexableValueType(valueType: ValueType, context: string): void {\n if (valueType === \"embedding\") {\n throw new Error(\n `Cannot create props index for embedding field (${context}); embedding() fields are indexed automatically in the vector strategy's per-(kind, field) storage`,\n );\n }\n\n if (valueType === \"array\" || valueType === \"object\") {\n throw new Error(\n `Cannot create btree props index for ${valueType} field (${context}); use a GIN/JSON index strategy instead`,\n );\n }\n}\n\ntype NormalizedIndexFields = Readonly<{\n pointers: readonly JsonPointer[];\n valueTypes: readonly (ValueType | undefined)[];\n}>;\n\nfunction normalizeNodeIndexFieldsOrThrow<N extends NodeType>(\n node: N,\n inputs: readonly IndexFieldInput<z.infer<N[\"schema\"]>>[],\n schemaIntrospector: ReturnType<typeof createSchemaIntrospector>,\n label: string,\n options: Readonly<{ allowEmpty: boolean }>,\n): NormalizedIndexFields {\n if (inputs.length === 0 && options.allowEmpty) {\n return { pointers: [], valueTypes: [] };\n }\n assertNonEmpty(inputs, label);\n\n const pointers: JsonPointer[] = [];\n const valueTypes: (ValueType | undefined)[] = [];\n\n for (const input of inputs) {\n const pointer = normalizeIndexFieldPointer(input);\n const info = resolveNodeFieldTypeInfoOrThrow(\n node.kind,\n pointer,\n schemaIntrospector,\n );\n assertIndexableValueType(info.valueType, `node \"${node.kind}\" ${pointer}`);\n pointers.push(pointer);\n valueTypes.push(info.valueType);\n }\n\n assertUnique(pointers, label);\n\n return { pointers, valueTypes };\n}\n\nfunction normalizeEdgeIndexFieldsOrThrow<E extends AnyEdgeType>(\n edge: E,\n inputs: readonly IndexFieldInput<z.infer<E[\"schema\"]>>[],\n schemaIntrospector: ReturnType<typeof createSchemaIntrospector>,\n label: string,\n options: Readonly<{ allowEmpty: boolean }>,\n): NormalizedIndexFields {\n if (inputs.length === 0 && options.allowEmpty) {\n return { pointers: [], valueTypes: [] };\n }\n assertNonEmpty(inputs, label);\n\n const pointers: JsonPointer[] = [];\n const valueTypes: (ValueType | undefined)[] = [];\n\n for (const input of inputs) {\n const pointer = normalizeIndexFieldPointer(input);\n const info = resolveEdgeFieldTypeInfoOrThrow(\n edge.kind,\n pointer,\n schemaIntrospector,\n );\n assertIndexableValueType(info.valueType, `edge \"${edge.kind}\" ${pointer}`);\n pointers.push(pointer);\n valueTypes.push(info.valueType);\n }\n\n assertUnique(pointers, label);\n\n return { pointers, valueTypes };\n}\n\nfunction normalizeIndexFieldPointer<T>(input: IndexFieldInput<T>): JsonPointer {\n if (Array.isArray(input)) {\n if (input.length === 0) {\n throw new Error(\"Index field JSON pointer must not be empty\");\n }\n return jsonPointer(input as readonly JsonPointerSegment[]);\n }\n\n if (typeof input === \"string\") {\n if (input.startsWith(\"/\")) {\n const pointer = normalizeJsonPointer(\n input as JsonPointerInput<Record<string, unknown>>,\n );\n if (pointer === \"\") {\n throw new Error(\"Index field JSON pointer must not be empty\");\n }\n return pointer;\n }\n return jsonPointer([input]);\n }\n\n throw new Error(`Unsupported index field input: ${String(input)}`);\n}\n\nfunction resolveNodeFieldTypeInfoOrThrow(\n nodeKind: string,\n pointer: JsonPointer,\n schemaIntrospector: ReturnType<typeof createSchemaIntrospector>,\n): FieldTypeInfo {\n const segments = parseJsonPointer(pointer);\n const [first, ...rest] = segments;\n if (!first) {\n throw new Error(\"Index field JSON pointer must not be empty\");\n }\n\n const rootInfo = schemaIntrospector.getFieldTypeInfo(nodeKind, first);\n if (!rootInfo) {\n throw new Error(\n `Unknown field \"${first}\" for node \"${nodeKind}\" in index definition`,\n );\n }\n\n if (rest.length === 0) {\n return rootInfo;\n }\n\n const resolved = resolveFieldTypeInfoAtJsonPointer(\n rootInfo,\n jsonPointer(rest),\n );\n if (!resolved) {\n throw new Error(\n `Unknown JSON pointer \"${pointer}\" for node \"${nodeKind}\" in index definition`,\n );\n }\n\n return resolved;\n}\n\nfunction resolveEdgeFieldTypeInfoOrThrow(\n edgeKind: string,\n pointer: JsonPointer,\n schemaIntrospector: ReturnType<typeof createSchemaIntrospector>,\n): FieldTypeInfo {\n const segments = parseJsonPointer(pointer);\n const [first, ...rest] = segments;\n if (!first) {\n throw new Error(\"Index field JSON pointer must not be empty\");\n }\n\n const rootInfo = schemaIntrospector.getEdgeFieldTypeInfo(edgeKind, first);\n if (!rootInfo) {\n throw new Error(\n `Unknown field \"${first}\" for edge \"${edgeKind}\" in index definition`,\n );\n }\n\n if (rest.length === 0) {\n return rootInfo;\n }\n\n const resolved = resolveFieldTypeInfoAtJsonPointer(\n rootInfo,\n jsonPointer(rest),\n );\n if (!resolved) {\n throw new Error(\n `Unknown JSON pointer \"${pointer}\" for edge \"${edgeKind}\" in index definition`,\n );\n }\n\n return resolved;\n}\n\n// ============================================================\n// Default Name Generation\n// ============================================================\n\ntype DefaultNameParts = Readonly<{\n kind: KindEntity;\n kindName: string;\n unique: boolean;\n scope: IndexScope;\n direction: EdgeIndexDirection;\n fields: readonly string[];\n coveringFields: readonly string[];\n}>;\n\nfunction generateDefaultIndexName(parts: DefaultNameParts): string {\n const hash = fnv1aBase36(\n JSON.stringify({\n kind: parts.kind,\n kindName: parts.kindName,\n unique: parts.unique,\n scope: parts.scope,\n direction: parts.direction,\n fields: parts.fields,\n covering: parts.coveringFields,\n }),\n );\n\n const nameParts = [\n \"idx\",\n \"tg\",\n parts.kind,\n sanitizeIdentifierComponent(parts.kindName),\n sanitizeIdentifierComponent(parts.fields.join(\"_\")),\n parts.coveringFields.length > 0 ?\n `cov_${sanitizeIdentifierComponent(parts.coveringFields.join(\"_\"))}`\n : undefined,\n parts.direction === \"none\" ? undefined : parts.direction,\n parts.unique ? \"uniq\" : undefined,\n parts.scope === \"graphAndKind\" ?\n undefined\n : sanitizeIdentifierComponent(parts.scope),\n hash,\n ].filter((part) => part !== undefined);\n\n const joined = nameParts.join(\"_\");\n return joined.length <= MAX_PG_IDENTIFIER_LENGTH ?\n joined\n : `${joined.slice(0, TRUNCATED_IDENTIFIER_MAX_LENGTH)}_${hash}`;\n}\n\nfunction sanitizeIdentifierComponent(value: string): string {\n return value\n .toLowerCase()\n .replaceAll(/[^a-z0-9_]+/g, \"_\")\n .replaceAll(/^_+|_+$/g, \"\")\n .slice(0, IDENTIFIER_COMPONENT_MAX_LENGTH);\n}\n"]}
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
- var chunkG6P3OVDY_cjs = require('./chunk-G6P3OVDY.cjs');
4
- var chunk7V335GHG_cjs = require('./chunk-7V335GHG.cjs');
3
+ var chunkJIEJCTDS_cjs = require('./chunk-JIEJCTDS.cjs');
4
+ var chunkFLRCVI2G_cjs = require('./chunk-FLRCVI2G.cjs');
5
5
 
6
6
  // src/ontology/closures.ts
7
7
  function computeTransitiveClosure(relations) {
@@ -83,7 +83,7 @@ var GRAPH_EXTENSION_ISSUE_CODES = [
83
83
  "EMPTY_INDEX_FIELDS",
84
84
  "UNKNOWN_PROPERTY_KEY"
85
85
  ];
86
- var GraphExtensionError = class extends chunkG6P3OVDY_cjs.TypeGraphError {
86
+ var GraphExtensionError = class extends chunkJIEJCTDS_cjs.TypeGraphError {
87
87
  constructor(spec) {
88
88
  super(spec.message, spec.code, {
89
89
  details: spec.details,
@@ -320,7 +320,7 @@ function describeNonPlain(value) {
320
320
  return "non-plain object";
321
321
  }
322
322
  function throwInvalid(path, kind, ownerKind) {
323
- throw new chunkG6P3OVDY_cjs.ConfigurationError(
323
+ throw new chunkJIEJCTDS_cjs.ConfigurationError(
324
324
  `${ownerKind} ${path} contains a non-JSON value (${kind}). Annotations must be JSON-serializable.`,
325
325
  { path, valueKind: kind },
326
326
  {
@@ -387,7 +387,7 @@ function assertSchemaKeysAreFree(entityKind, name, keys, reservedStructuralKeys)
387
387
  );
388
388
  if (structuralConflicts.length > 0) {
389
389
  const label = entityKind.toLowerCase();
390
- throw new chunkG6P3OVDY_cjs.ConfigurationError(
390
+ throw new chunkJIEJCTDS_cjs.ConfigurationError(
391
391
  `${entityKind} "${name}" schema contains reserved property names: ${structuralConflicts.join(", ")}`,
392
392
  {
393
393
  [`${label}Type`]: name,
@@ -402,7 +402,7 @@ function assertSchemaKeysAreFree(entityKind, name, keys, reservedStructuralKeys)
402
402
  const prefixConflicts = keys.filter((key) => isReservedPropertyName(key));
403
403
  if (prefixConflicts.length > 0) {
404
404
  const label = entityKind.toLowerCase();
405
- throw new chunkG6P3OVDY_cjs.ConfigurationError(
405
+ throw new chunkJIEJCTDS_cjs.ConfigurationError(
406
406
  `${entityKind} "${name}" schema uses the reserved "${RESERVED_PROPERTY_PREFIX}" prefix on: ${prefixConflicts.join(", ")}`,
407
407
  {
408
408
  [`${label}Type`]: name,
@@ -418,7 +418,7 @@ function assertSchemaKeysAreFree(entityKind, name, keys, reservedStructuralKeys)
418
418
  function validateProjectionField(field, entityType, kind) {
419
419
  const reserved = entityType === "node" ? RESERVED_NODE_KEYS : RESERVED_EDGE_KEYS;
420
420
  if (reserved.has(field)) {
421
- throw new chunkG6P3OVDY_cjs.ConfigurationError(
421
+ throw new chunkJIEJCTDS_cjs.ConfigurationError(
422
422
  `Projection field "${field}" on ${entityType} kind "${kind}" conflicts with a reserved structural key`,
423
423
  { field, kind, entityType, reservedKeys: [...reserved] },
424
424
  {
@@ -427,7 +427,7 @@ function validateProjectionField(field, entityType, kind) {
427
427
  );
428
428
  }
429
429
  if (PROTOTYPE_POLLUTION_KEYS.has(field)) {
430
- throw new chunkG6P3OVDY_cjs.ConfigurationError(
430
+ throw new chunkJIEJCTDS_cjs.ConfigurationError(
431
431
  `Projection field "${field}" on ${entityType} kind "${kind}" is not allowed`,
432
432
  { field, kind, entityType },
433
433
  {
@@ -498,7 +498,7 @@ function rejectUnknownPropertyKeys(raw, type, path, issues) {
498
498
  for (const key of Object.keys(raw)) {
499
499
  if (COMMON_PROPERTY_KEYS.has(key) || typeKeys.has(key)) continue;
500
500
  issues.push({
501
- path: `${path}/${chunk7V335GHG_cjs.encodeJsonPointerSegment(key)}`,
501
+ path: `${path}/${chunkFLRCVI2G_cjs.encodeJsonPointerSegment(key)}`,
502
502
  message: `Unknown property key "${key}" for type "${type}". Recognized keys: ${recognized.join(", ")}.`,
503
503
  code: "UNKNOWN_PROPERTY_KEY"
504
504
  });
@@ -508,7 +508,7 @@ function rejectUnknownObjectKeys(raw, allowed, label, path, code, issues) {
508
508
  for (const key of Object.keys(raw)) {
509
509
  if (allowed.has(key)) continue;
510
510
  issues.push({
511
- path: `${path}/${chunk7V335GHG_cjs.encodeJsonPointerSegment(key)}`,
511
+ path: `${path}/${chunkFLRCVI2G_cjs.encodeJsonPointerSegment(key)}`,
512
512
  message: `Unknown ${label} key "${key}". Allowed: ${[...allowed].join(", ")}.`,
513
513
  code
514
514
  });
@@ -580,7 +580,7 @@ function validateGraphExtension(input, options = {}) {
580
580
  for (const key of Object.keys(documentRecord)) {
581
581
  if (!KNOWN_DOCUMENT_KEYS.has(key)) {
582
582
  issues.push({
583
- path: `/${chunk7V335GHG_cjs.encodeJsonPointerSegment(key)}`,
583
+ path: `/${chunkFLRCVI2G_cjs.encodeJsonPointerSegment(key)}`,
584
584
  message: `Unknown top-level key "${key}". Did you mean one of: ${[...KNOWN_DOCUMENT_KEYS].join(", ")}?`,
585
585
  code: "UNKNOWN_DOCUMENT_KEY"
586
586
  });
@@ -639,7 +639,7 @@ function validateNodesSection(rawNodes, issues, strict) {
639
639
  const result = {};
640
640
  const recorded = /* @__PURE__ */ new Set();
641
641
  for (const [kindName, rawNode] of Object.entries(rawNodes)) {
642
- const path = `/nodes/${chunk7V335GHG_cjs.encodeJsonPointerSegment(kindName)}`;
642
+ const path = `/nodes/${chunkFLRCVI2G_cjs.encodeJsonPointerSegment(kindName)}`;
643
643
  if (!isValidKindName(kindName)) {
644
644
  issues.push({
645
645
  path,
@@ -733,7 +733,7 @@ function validateEdgesSection(rawEdges, issues, strict) {
733
733
  const result = {};
734
734
  const recorded = /* @__PURE__ */ new Set();
735
735
  for (const [kindName, rawEdge] of Object.entries(rawEdges)) {
736
- const path = `/edges/${chunk7V335GHG_cjs.encodeJsonPointerSegment(kindName)}`;
736
+ const path = `/edges/${chunkFLRCVI2G_cjs.encodeJsonPointerSegment(kindName)}`;
737
737
  if (!isValidKindName(kindName)) {
738
738
  issues.push({
739
739
  path,
@@ -1269,7 +1269,7 @@ function validatePropertiesMap(raw, path, ownerType, ownerName, issues, strict)
1269
1269
  const reserved = ownerType === "node" ? RESERVED_NODE_KEYS : RESERVED_EDGE_KEYS;
1270
1270
  const result = {};
1271
1271
  for (const [propertyName, propertyValue] of Object.entries(raw)) {
1272
- const propertyPath = `${path}/${chunk7V335GHG_cjs.encodeJsonPointerSegment(propertyName)}`;
1272
+ const propertyPath = `${path}/${chunkFLRCVI2G_cjs.encodeJsonPointerSegment(propertyName)}`;
1273
1273
  if (reserved.has(propertyName)) {
1274
1274
  issues.push({
1275
1275
  path: propertyPath,
@@ -1594,7 +1594,7 @@ function validateObjectProperty(raw, path, depth, issues, strict) {
1594
1594
  }
1595
1595
  const fields = {};
1596
1596
  for (const [name, value] of propertiesEntries) {
1597
- const fieldPath = `${path}/properties/${chunk7V335GHG_cjs.encodeJsonPointerSegment(name)}`;
1597
+ const fieldPath = `${path}/properties/${chunkFLRCVI2G_cjs.encodeJsonPointerSegment(name)}`;
1598
1598
  if (!isPlainObject(value)) {
1599
1599
  issues.push({
1600
1600
  path: fieldPath,
@@ -1939,7 +1939,7 @@ function validateAnnotations(raw, path, ownerLabel, issues) {
1939
1939
  try {
1940
1940
  assertJsonValue(raw, "annotations", ownerLabel);
1941
1941
  } catch (error) {
1942
- if (error instanceof chunkG6P3OVDY_cjs.ConfigurationError) {
1942
+ if (error instanceof chunkJIEJCTDS_cjs.ConfigurationError) {
1943
1943
  const detailPath = error.details.path;
1944
1944
  const annotationPath = typeof detailPath === "string" ? `${path}/${detailPath.replace(/^annotations\.?/, "").replaceAll(".", "/")}` : path;
1945
1945
  issues.push({
@@ -2065,5 +2065,5 @@ exports.isReachable = isReachable;
2065
2065
  exports.unwrap = unwrap;
2066
2066
  exports.validateGraphExtension = validateGraphExtension;
2067
2067
  exports.validateProjectionField = validateProjectionField;
2068
- //# sourceMappingURL=chunk-HM6XMR3E.cjs.map
2069
- //# sourceMappingURL=chunk-HM6XMR3E.cjs.map
2068
+ //# sourceMappingURL=chunk-SGPXKJ4A.cjs.map
2069
+ //# sourceMappingURL=chunk-SGPXKJ4A.cjs.map