grafeo-ogm 1.2.0 → 1.3.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 (77) hide show
  1. package/CHANGELOG.md +33 -0
  2. package/README.md +156 -1
  3. package/dist/cjs/compilers/vector.compiler.d.ts +56 -0
  4. package/dist/cjs/compilers/vector.compiler.d.ts.map +1 -0
  5. package/dist/cjs/compilers/vector.compiler.js +129 -0
  6. package/dist/cjs/compilers/vector.compiler.js.map +1 -0
  7. package/dist/cjs/generator/generate-types.d.ts.map +1 -1
  8. package/dist/cjs/generator/generate-types.js +2 -0
  9. package/dist/cjs/generator/generate-types.js.map +1 -1
  10. package/dist/cjs/generator/type-emitters/fulltext-emitter.d.ts +16 -4
  11. package/dist/cjs/generator/type-emitters/fulltext-emitter.d.ts.map +1 -1
  12. package/dist/cjs/generator/type-emitters/fulltext-emitter.js +122 -9
  13. package/dist/cjs/generator/type-emitters/fulltext-emitter.js.map +1 -1
  14. package/dist/cjs/generator/type-emitters/model-map-emitter.d.ts +6 -0
  15. package/dist/cjs/generator/type-emitters/model-map-emitter.d.ts.map +1 -1
  16. package/dist/cjs/generator/type-emitters/model-map-emitter.js +76 -5
  17. package/dist/cjs/generator/type-emitters/model-map-emitter.js.map +1 -1
  18. package/dist/cjs/generator/type-emitters/utility-types.js +1 -1
  19. package/dist/cjs/generator/type-emitters/utility-types.js.map +1 -1
  20. package/dist/cjs/generator/type-emitters/vector-emitter.d.ts +14 -0
  21. package/dist/cjs/generator/type-emitters/vector-emitter.d.ts.map +1 -0
  22. package/dist/cjs/generator/type-emitters/vector-emitter.js +81 -0
  23. package/dist/cjs/generator/type-emitters/vector-emitter.js.map +1 -0
  24. package/dist/cjs/index.d.ts +3 -1
  25. package/dist/cjs/index.d.ts.map +1 -1
  26. package/dist/cjs/index.js +3 -1
  27. package/dist/cjs/index.js.map +1 -1
  28. package/dist/cjs/model.d.ts +127 -1
  29. package/dist/cjs/model.d.ts.map +1 -1
  30. package/dist/cjs/model.js +150 -44
  31. package/dist/cjs/model.js.map +1 -1
  32. package/dist/cjs/ogm.d.ts.map +1 -1
  33. package/dist/cjs/ogm.js +3 -0
  34. package/dist/cjs/ogm.js.map +1 -1
  35. package/dist/cjs/schema/parser.d.ts.map +1 -1
  36. package/dist/cjs/schema/parser.js +48 -0
  37. package/dist/cjs/schema/parser.js.map +1 -1
  38. package/dist/cjs/schema/types.d.ts +7 -0
  39. package/dist/cjs/schema/types.d.ts.map +1 -1
  40. package/dist/esm/compilers/vector.compiler.d.ts +56 -0
  41. package/dist/esm/compilers/vector.compiler.d.ts.map +1 -0
  42. package/dist/esm/compilers/vector.compiler.js +125 -0
  43. package/dist/esm/compilers/vector.compiler.js.map +1 -0
  44. package/dist/esm/generator/generate-types.d.ts.map +1 -1
  45. package/dist/esm/generator/generate-types.js +2 -0
  46. package/dist/esm/generator/generate-types.js.map +1 -1
  47. package/dist/esm/generator/type-emitters/fulltext-emitter.d.ts +16 -4
  48. package/dist/esm/generator/type-emitters/fulltext-emitter.d.ts.map +1 -1
  49. package/dist/esm/generator/type-emitters/fulltext-emitter.js +121 -9
  50. package/dist/esm/generator/type-emitters/fulltext-emitter.js.map +1 -1
  51. package/dist/esm/generator/type-emitters/model-map-emitter.d.ts +6 -0
  52. package/dist/esm/generator/type-emitters/model-map-emitter.d.ts.map +1 -1
  53. package/dist/esm/generator/type-emitters/model-map-emitter.js +76 -5
  54. package/dist/esm/generator/type-emitters/model-map-emitter.js.map +1 -1
  55. package/dist/esm/generator/type-emitters/utility-types.js +1 -1
  56. package/dist/esm/generator/type-emitters/utility-types.js.map +1 -1
  57. package/dist/esm/generator/type-emitters/vector-emitter.d.ts +14 -0
  58. package/dist/esm/generator/type-emitters/vector-emitter.d.ts.map +1 -0
  59. package/dist/esm/generator/type-emitters/vector-emitter.js +78 -0
  60. package/dist/esm/generator/type-emitters/vector-emitter.js.map +1 -0
  61. package/dist/esm/index.d.ts +3 -1
  62. package/dist/esm/index.d.ts.map +1 -1
  63. package/dist/esm/index.js +1 -0
  64. package/dist/esm/index.js.map +1 -1
  65. package/dist/esm/model.d.ts +127 -1
  66. package/dist/esm/model.d.ts.map +1 -1
  67. package/dist/esm/model.js +150 -44
  68. package/dist/esm/model.js.map +1 -1
  69. package/dist/esm/ogm.d.ts.map +1 -1
  70. package/dist/esm/ogm.js +3 -0
  71. package/dist/esm/ogm.js.map +1 -1
  72. package/dist/esm/schema/parser.d.ts.map +1 -1
  73. package/dist/esm/schema/parser.js +48 -0
  74. package/dist/esm/schema/parser.js.map +1 -1
  75. package/dist/esm/schema/types.d.ts +7 -0
  76. package/dist/esm/schema/types.d.ts.map +1 -1
  77. package/package.json +1 -1
@@ -3,28 +3,55 @@
3
3
  // ---------------------------------------------------------------------------
4
4
  /**
5
5
  * Emits fulltext-related types for every node that declares at least one
6
- * `@fulltext` index:
6
+ * `@fulltext` index (either directly on the node or on a relationship whose
7
+ * `@relationshipProperties` type has fulltext indexes):
7
8
  *
8
9
  * - `<Node>FulltextResult` — score + the matched node
9
10
  * - `<Node>FulltextWhere` — filtering by score and node-level where
10
11
  * - `<Node>FulltextSort` — sorting by score and node-level sort
12
+ * - `<Node>FulltextLeaf` — per-node leaf with literal index-name keys
13
+ * - `<Node>FulltextInput` — leaf | OR/AND/NOT composition
11
14
  *
12
- * Also emits the shared `FloatWhere` type used for score filtering.
15
+ * Also emits the shared `FloatWhere` and `FulltextIndexEntry` types used by
16
+ * the typed inputs.
13
17
  *
14
- * Returns an empty string when no nodes have fulltext indexes.
18
+ * Returns an empty string when no nodes have fulltext indexes (direct or via
19
+ * a relationship-properties type).
15
20
  */
16
21
  export function emitFulltextTypes(schema) {
17
- const nodesWithFulltext = getNodesWithFulltext(schema);
18
- if (nodesWithFulltext.length === 0)
22
+ const nodesWithResults = getNodesWithNodeLevelFulltext(schema);
23
+ const nodesWithInputs = getNodesWithAnyFulltext(schema);
24
+ if (nodesWithResults.length === 0 && nodesWithInputs.length === 0)
19
25
  return '';
20
- const blocks = [FLOAT_WHERE_TYPE];
21
- for (const node of nodesWithFulltext) {
26
+ const blocks = [FLOAT_WHERE_TYPE, FULLTEXT_INDEX_ENTRY_TYPE];
27
+ // Node-level fulltext result/where/sort — only emitted when the node itself
28
+ // has indexes (these types describe RETURN shape, which only makes sense
29
+ // when you query the node's own index).
30
+ for (const node of nodesWithResults) {
22
31
  blocks.push(emitFulltextResult(node));
23
32
  blocks.push(emitFulltextWhere(node));
24
33
  blocks.push(emitFulltextSort(node));
25
34
  }
35
+ // Per-node typed fulltext INPUT — emitted when the node OR any relationship
36
+ // exposes a fulltext index. Drives the find()/findFirst()/count()/aggregate()
37
+ // autocomplete in the generated model.
38
+ for (const node of nodesWithInputs) {
39
+ blocks.push(emitFulltextLeaf(node, schema));
40
+ blocks.push(emitFulltextInput(node));
41
+ }
26
42
  return blocks.join('\n\n');
27
43
  }
44
+ /**
45
+ * Returns true when the node has a node-level fulltext index OR a
46
+ * relationship whose `@relationshipProperties` type has fulltext indexes.
47
+ * Exposed so the model-map emitter can decide whether to override the
48
+ * `fulltext` parameter type on the generated `<Node>Model`.
49
+ */
50
+ export function nodeHasAnyFulltext(node, schema) {
51
+ if (node.fulltextIndexes.length > 0)
52
+ return true;
53
+ return getRelationshipFulltextEntries(node, schema).length > 0;
54
+ }
28
55
  // ---------------------------------------------------------------------------
29
56
  // Shared types
30
57
  // ---------------------------------------------------------------------------
@@ -32,18 +59,54 @@ const FLOAT_WHERE_TYPE = `export type FloatWhere = {
32
59
  min?: InputMaybe<Scalars["Float"]["input"]>;
33
60
  max?: InputMaybe<Scalars["Float"]["input"]>;
34
61
  };`;
62
+ /**
63
+ * Structural mirror of the runtime `FulltextIndexEntry` in `src/model.ts`.
64
+ * Inlined here so the generated file stays decoupled from runtime internals.
65
+ */
66
+ const FULLTEXT_INDEX_ENTRY_TYPE = `export type FulltextIndexEntry = {
67
+ phrase: string;
68
+ score?: number;
69
+ };`;
35
70
  // ---------------------------------------------------------------------------
36
71
  // Helpers
37
72
  // ---------------------------------------------------------------------------
38
73
  /**
39
- * Returns all nodes that have at least one fulltext index,
74
+ * Returns all nodes that have at least one node-level fulltext index,
40
75
  * sorted alphabetically by type name.
41
76
  */
42
- function getNodesWithFulltext(schema) {
77
+ function getNodesWithNodeLevelFulltext(schema) {
43
78
  return [...schema.nodes.values()]
44
79
  .filter((node) => node.fulltextIndexes.length > 0)
45
80
  .sort((a, b) => a.typeName.localeCompare(b.typeName));
46
81
  }
82
+ /**
83
+ * Returns all nodes that have at least one node-level OR relationship-level
84
+ * fulltext index, sorted alphabetically by type name.
85
+ */
86
+ function getNodesWithAnyFulltext(schema) {
87
+ return [...schema.nodes.values()]
88
+ .filter((node) => nodeHasAnyFulltext(node, schema))
89
+ .sort((a, b) => a.typeName.localeCompare(b.typeName));
90
+ }
91
+ /**
92
+ * For a given node, returns each relationship that points to a
93
+ * `@relationshipProperties` type whose fulltext indexes list is non-empty.
94
+ * The resulting entries drive the nested keys on `<Node>FulltextLeaf`.
95
+ */
96
+ function getRelationshipFulltextEntries(node, schema) {
97
+ const entries = [];
98
+ for (const rel of node.relationships.values()) {
99
+ if (!rel.properties)
100
+ continue;
101
+ const props = schema.relationshipProperties.get(rel.properties);
102
+ if (!props)
103
+ continue;
104
+ if (!props.fulltextIndexes || props.fulltextIndexes.length === 0)
105
+ continue;
106
+ entries.push({ rel, props });
107
+ }
108
+ return entries.sort((a, b) => a.rel.fieldName.localeCompare(b.rel.fieldName));
109
+ }
47
110
  /**
48
111
  * Converts a PascalCase type name to camelCase for the result field name.
49
112
  * e.g. `Book` → `book`, `BookCategory` → `bookCategory`
@@ -51,6 +114,17 @@ function getNodesWithFulltext(schema) {
51
114
  function toCamelCase(typeName) {
52
115
  return typeName.charAt(0).toLowerCase() + typeName.slice(1);
53
116
  }
117
+ /**
118
+ * Returns a syntactically valid TypeScript object-literal key for the given
119
+ * name. Identifiers are left bare; anything else is quoted.
120
+ *
121
+ * Matches TypeScript's identifier rules conservatively: must start with a
122
+ * letter, `_`, or `$`, and only contain letters, digits, `_`, `$`.
123
+ */
124
+ function formatObjectKey(name) {
125
+ const IDENTIFIER = /^[A-Za-z_$][A-Za-z0-9_$]*$/;
126
+ return IDENTIFIER.test(name) ? name : `'${name.replace(/'/g, "\\'")}'`;
127
+ }
54
128
  function emitFulltextResult(node) {
55
129
  const fieldName = toCamelCase(node.typeName);
56
130
  return `export type ${node.typeName}FulltextResult = {
@@ -74,4 +148,42 @@ function emitFulltextSort(node) {
74
148
  ${fieldName}?: InputMaybe<${node.typeName}Sort>;
75
149
  };`;
76
150
  }
151
+ /**
152
+ * Emits `<Node>FulltextLeaf` — an object whose keys are the node's fulltext
153
+ * index names (literal, optional) and whose relationship keys map to
154
+ * `{ [IndexName]?: FulltextIndexEntry }` shapes matching the runtime
155
+ * `FulltextRelationshipEntry` contract.
156
+ *
157
+ * If the node has node-level indexes only, the relationship section is
158
+ * omitted and vice-versa.
159
+ */
160
+ function emitFulltextLeaf(node, schema) {
161
+ const nodeLevelKeys = node.fulltextIndexes.map((idx) => {
162
+ const key = formatObjectKey(idx.name);
163
+ return ` ${key}?: FulltextIndexEntry;`;
164
+ });
165
+ const relEntries = getRelationshipFulltextEntries(node, schema);
166
+ const relKeys = relEntries.map(({ rel, props }) => {
167
+ const key = formatObjectKey(rel.fieldName);
168
+ const indexKeys = (props.fulltextIndexes ?? [])
169
+ .map((idx) => `${formatObjectKey(idx.name)}?: FulltextIndexEntry`)
170
+ .join('; ');
171
+ return ` ${key}?: { ${indexKeys} };`;
172
+ });
173
+ const body = [...nodeLevelKeys, ...relKeys].join('\n');
174
+ return `export type ${node.typeName}FulltextLeaf = {
175
+ ${body}
176
+ };`;
177
+ }
178
+ /**
179
+ * Emits `<Node>FulltextInput` — the top-level union accepted by `find()` et
180
+ * al. Includes the leaf and the three logical composition operators.
181
+ */
182
+ function emitFulltextInput(node) {
183
+ return `export type ${node.typeName}FulltextInput =
184
+ | ${node.typeName}FulltextLeaf
185
+ | { OR: ${node.typeName}FulltextInput[] }
186
+ | { AND: ${node.typeName}FulltextInput[] }
187
+ | { NOT: ${node.typeName}FulltextInput };`;
188
+ }
77
189
  //# sourceMappingURL=fulltext-emitter.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"fulltext-emitter.js","sourceRoot":"","sources":["../../../../src/generator/type-emitters/fulltext-emitter.ts"],"names":[],"mappings":"AAEA,8EAA8E;AAC9E,aAAa;AACb,8EAA8E;AAE9E;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,iBAAiB,CAAC,MAAsB;IACtD,MAAM,iBAAiB,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAC;IAEvD,IAAI,iBAAiB,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAE9C,MAAM,MAAM,GAAa,CAAC,gBAAgB,CAAC,CAAC;IAE5C,KAAK,MAAM,IAAI,IAAI,iBAAiB,EAAE,CAAC;QACrC,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC;QACtC,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC;QACrC,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC;IACtC,CAAC;IAED,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC7B,CAAC;AAED,8EAA8E;AAC9E,eAAe;AACf,8EAA8E;AAE9E,MAAM,gBAAgB,GAAG;;;GAGtB,CAAC;AAEJ,8EAA8E;AAC9E,UAAU;AACV,8EAA8E;AAE9E;;;GAGG;AACH,SAAS,oBAAoB,CAAC,MAAsB;IAClD,OAAO,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;SAC9B,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC;SACjD,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC1D,CAAC;AAED;;;GAGG;AACH,SAAS,WAAW,CAAC,QAAgB;IACnC,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC9D,CAAC;AAED,SAAS,kBAAkB,CAAC,IAAoB;IAC9C,MAAM,SAAS,GAAG,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAE7C,OAAO,eAAe,IAAI,CAAC,QAAQ;kBACnB,IAAI,CAAC,QAAQ;;IAE3B,SAAS,KAAK,IAAI,CAAC,QAAQ;GAC5B,CAAC;AACJ,CAAC;AAED,SAAS,iBAAiB,CAAC,IAAoB;IAC7C,MAAM,SAAS,GAAG,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAE7C,OAAO,+DAA+D,IAAI,CAAC,QAAQ;cACvE,IAAI,CAAC,QAAQ;;IAEvB,SAAS,iBAAiB,IAAI,CAAC,QAAQ;GACxC,CAAC;AACJ,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAoB;IAC5C,MAAM,SAAS,GAAG,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAE7C,OAAO,eAAe,IAAI,CAAC,QAAQ;;IAEjC,SAAS,iBAAiB,IAAI,CAAC,QAAQ;GACxC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"fulltext-emitter.js","sourceRoot":"","sources":["../../../../src/generator/type-emitters/fulltext-emitter.ts"],"names":[],"mappings":"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"}
@@ -17,6 +17,12 @@ import type { SchemaMetadata } from '../../schema/types';
17
17
  * 'books'
18
18
  * >;
19
19
  * ```
20
+ *
21
+ * When the node has at least one fulltext index (directly or via a
22
+ * relationship-properties type), the fulltext-accepting methods (`find`,
23
+ * `findFirst`, `findFirstOrThrow`, `count`, `aggregate`) are re-declared with
24
+ * a narrowed `fulltext?: <Node>FulltextInput` so users get autocomplete and
25
+ * typo-checking on index names.
20
26
  */
21
27
  export declare function emitModelDeclarations(schema: SchemaMetadata): string;
22
28
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"model-map-emitter.d.ts","sourceRoot":"","sources":["../../../../src/generator/type-emitters/model-map-emitter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEzD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,CAiBpE;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,CAiB3D;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,CAWpE"}
1
+ {"version":3,"file":"model-map-emitter.d.ts","sourceRoot":"","sources":["../../../../src/generator/type-emitters/model-map-emitter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAGzD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,CAoBpE;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,CAiB3D;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,CAWpE"}
@@ -1,3 +1,4 @@
1
+ import { nodeHasAnyFulltext } from './fulltext-emitter';
1
2
  /**
2
3
  * Emits a model declaration type for each node type, wrapping the generic
3
4
  * `ModelInterface` from `grafeo-ogm` with the correct type parameters.
@@ -16,6 +17,12 @@
16
17
  * 'books'
17
18
  * >;
18
19
  * ```
20
+ *
21
+ * When the node has at least one fulltext index (directly or via a
22
+ * relationship-properties type), the fulltext-accepting methods (`find`,
23
+ * `findFirst`, `findFirstOrThrow`, `count`, `aggregate`) are re-declared with
24
+ * a narrowed `fulltext?: <Node>FulltextInput` so users get autocomplete and
25
+ * typo-checking on index names.
19
26
  */
20
27
  export function emitModelDeclarations(schema) {
21
28
  const blocks = [];
@@ -23,7 +30,8 @@ export function emitModelDeclarations(schema) {
23
30
  for (const typeName of sortedNodes) {
24
31
  const node = schema.nodes.get(typeName);
25
32
  const hasRels = node.relationships.size > 0;
26
- blocks.push(buildModelType(typeName, node.pluralName, hasRels));
33
+ const hasFulltext = nodeHasAnyFulltext(node, schema);
34
+ blocks.push(buildModelType(typeName, node.pluralName, hasRels, hasFulltext));
27
35
  }
28
36
  // Interface model declarations
29
37
  const sortedInterfaces = [...schema.interfaces.keys()].sort();
@@ -65,7 +73,7 @@ export function emitInterfaceModelMap(schema) {
65
73
  // ---------------------------------------------------------------------------
66
74
  // Helpers
67
75
  // ---------------------------------------------------------------------------
68
- function buildModelType(typeName, pluralName, hasRels) {
76
+ function buildModelType(typeName, pluralName, hasRels, hasFulltext) {
69
77
  const connectType = hasRels
70
78
  ? `${typeName}ConnectInput`
71
79
  : 'Record<string, never>';
@@ -75,8 +83,8 @@ function buildModelType(typeName, pluralName, hasRels) {
75
83
  const deleteType = hasRels
76
84
  ? `${typeName}DeleteInput`
77
85
  : 'Record<string, never>';
78
- return [
79
- `export type ${typeName}Model = ModelInterface<`,
86
+ const baseAlias = [
87
+ `ModelInterface<`,
80
88
  ` ${typeName},`,
81
89
  ` ${typeName}SelectFields,`,
82
90
  ` ${typeName}Where,`,
@@ -87,7 +95,70 @@ function buildModelType(typeName, pluralName, hasRels) {
87
95
  ` ${deleteType},`,
88
96
  ` '${pluralName}',`,
89
97
  ` ${typeName}MutationSelectFields`,
90
- `>;`,
98
+ `>`,
99
+ ].join('\n');
100
+ if (!hasFulltext)
101
+ return `export type ${typeName}Model = ${baseAlias};`;
102
+ return buildModelTypeWithTypedFulltext(typeName, baseAlias);
103
+ }
104
+ /**
105
+ * Builds a `<Node>Model` alias that keeps every method from `ModelInterface`
106
+ * but replaces the `fulltext` parameter with the node-specific
107
+ * `<Node>FulltextInput`, giving users autocomplete + typo-checking on
108
+ * index names.
109
+ *
110
+ * Uses `Omit<..., 'find' | ...>` to strip the loose variants from the base,
111
+ * then intersects with the refined signatures.
112
+ */
113
+ function buildModelTypeWithTypedFulltext(typeName, baseAlias) {
114
+ const fulltextInput = `${typeName}FulltextInput`;
115
+ const where = `${typeName}Where`;
116
+ const select = `${typeName}SelectFields`;
117
+ // We only re-declare what we need to change. The shared parameter shapes
118
+ // are inlined to stay decoupled from the non-exported runtime
119
+ // `FindOptions`; `ExecutionContext` is imported from the package.
120
+ const findParams = `{
121
+ where?: ${where};
122
+ selectionSet?: string | DocumentNode;
123
+ select?: ${select};
124
+ labels?: string[];
125
+ options?: { limit?: number; offset?: number; sort?: Array<Record<string, 'ASC' | 'DESC'>> };
126
+ fulltext?: ${fulltextInput};
127
+ context?: ExecutionContext;
128
+ }`;
129
+ const findFirstParams = `{
130
+ where?: ${where};
131
+ selectionSet?: string | DocumentNode;
132
+ select?: ${select};
133
+ labels?: string[];
134
+ options?: { offset?: number; sort?: Array<Record<string, 'ASC' | 'DESC'>> };
135
+ fulltext?: ${fulltextInput};
136
+ context?: ExecutionContext;
137
+ }`;
138
+ const countParams = `{
139
+ where?: ${where};
140
+ labels?: string[];
141
+ fulltext?: ${fulltextInput};
142
+ context?: ExecutionContext;
143
+ }`;
144
+ const aggregateParams = `{
145
+ where?: ${where};
146
+ aggregate: { count?: boolean; [field: string]: boolean | undefined };
147
+ labels?: string[];
148
+ fulltext?: ${fulltextInput};
149
+ context?: ExecutionContext;
150
+ }`;
151
+ return [
152
+ `export type ${typeName}Model = Omit<`,
153
+ ` ${baseAlias.split('\n').join('\n ')},`,
154
+ ` 'find' | 'findFirst' | 'findFirstOrThrow' | 'count' | 'aggregate'`,
155
+ `> & {`,
156
+ ` find(params?: ${findParams}): Promise<${typeName}[]>;`,
157
+ ` findFirst(params?: ${findFirstParams}): Promise<${typeName} | null>;`,
158
+ ` findFirstOrThrow(params?: ${findFirstParams}): Promise<${typeName}>;`,
159
+ ` count(params?: ${countParams}): Promise<number>;`,
160
+ ` aggregate(params: ${aggregateParams}): Promise<{ count?: number; [field: string]: unknown }>;`,
161
+ `};`,
91
162
  ].join('\n');
92
163
  }
93
164
  function buildInterfaceModelType(ifaceName) {
@@ -1 +1 @@
1
- {"version":3,"file":"model-map-emitter.js","sourceRoot":"","sources":["../../../../src/generator/type-emitters/model-map-emitter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"model-map-emitter.js","sourceRoot":"","sources":["../../../../src/generator/type-emitters/model-map-emitter.ts"],"names":[],"mappings":"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"}
@@ -20,7 +20,7 @@ export function emitHeader(config, packageName = 'grafeo-ogm') {
20
20
  export function emitImports(packageName = 'grafeo-ogm') {
21
21
  return [
22
22
  'import type { SelectionSetNode, DocumentNode } from "graphql";',
23
- `import type { Model, ModelInterface, InterfaceModelInterface } from "${packageName}";`,
23
+ `import type { ModelInterface, InterfaceModelInterface, ExecutionContext } from "${packageName}";`,
24
24
  ].join('\n');
25
25
  }
26
26
  // ---------------------------------------------------------------------------
@@ -1 +1 @@
1
- {"version":3,"file":"utility-types.js","sourceRoot":"","sources":["../../../../src/generator/type-emitters/utility-types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,8EAA8E;AAC9E,SAAS;AACT,8EAA8E;AAE9E,MAAM,UAAU,UAAU,CACxB,MAA4B,EAC5B,WAAW,GAAG,YAAY;IAE1B,MAAM,KAAK,GAAG;QACZ,sCAAsC;QACtC,mBAAmB,WAAW,kBAAkB;KACjD,CAAC;IAEF,IAAI,MAAM,EAAE,MAAM;QAAE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAE9C,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,8EAA8E;AAC9E,UAAU;AACV,8EAA8E;AAE9E,MAAM,UAAU,WAAW,CAAC,WAAW,GAAG,YAAY;IACpD,OAAO;QACL,gEAAgE;QAChE,wEAAwE,WAAW,IAAI;KACxF,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED,8EAA8E;AAC9E,oEAAoE;AACpE,8EAA8E;AAE9E,MAAM,UAAU,gBAAgB;IAC9B,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwDN,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"utility-types.js","sourceRoot":"","sources":["../../../../src/generator/type-emitters/utility-types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,8EAA8E;AAC9E,SAAS;AACT,8EAA8E;AAE9E,MAAM,UAAU,UAAU,CACxB,MAA4B,EAC5B,WAAW,GAAG,YAAY;IAE1B,MAAM,KAAK,GAAG;QACZ,sCAAsC;QACtC,mBAAmB,WAAW,kBAAkB;KACjD,CAAC;IAEF,IAAI,MAAM,EAAE,MAAM;QAAE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAE9C,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,8EAA8E;AAC9E,UAAU;AACV,8EAA8E;AAE9E,MAAM,UAAU,WAAW,CAAC,WAAW,GAAG,YAAY;IACpD,OAAO;QACL,gEAAgE;QAChE,mFAAmF,WAAW,IAAI;KACnG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED,8EAA8E;AAC9E,oEAAoE;AACpE,8EAA8E;AAE9E,MAAM,UAAU,gBAAgB;IAC9B,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwDN,CAAC;AACJ,CAAC"}
@@ -0,0 +1,14 @@
1
+ import type { SchemaMetadata } from '../../schema/types';
2
+ /**
3
+ * Emits vector-search-related types for every node that declares at least one
4
+ * `@vector` index:
5
+ *
6
+ * - `<Node>VectorResult` — `{ node, score }` returned by search
7
+ * - `<Node>VectorSearchByVectorInput` — arguments for `searchByVector`
8
+ * - `<Node>VectorSearchByPhraseInput` — arguments for `searchByPhrase`
9
+ * (only emitted when at least one index on the node has `provider` set)
10
+ *
11
+ * Returns an empty string when no nodes have vector indexes.
12
+ */
13
+ export declare function emitVectorTypes(schema: SchemaMetadata): string;
14
+ //# sourceMappingURL=vector-emitter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vector-emitter.d.ts","sourceRoot":"","sources":["../../../../src/generator/type-emitters/vector-emitter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EAGf,MAAM,oBAAoB,CAAC;AAM5B;;;;;;;;;;GAUG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,CAkB9D"}
@@ -0,0 +1,78 @@
1
+ // ---------------------------------------------------------------------------
2
+ // Public API
3
+ // ---------------------------------------------------------------------------
4
+ /**
5
+ * Emits vector-search-related types for every node that declares at least one
6
+ * `@vector` index:
7
+ *
8
+ * - `<Node>VectorResult` — `{ node, score }` returned by search
9
+ * - `<Node>VectorSearchByVectorInput` — arguments for `searchByVector`
10
+ * - `<Node>VectorSearchByPhraseInput` — arguments for `searchByPhrase`
11
+ * (only emitted when at least one index on the node has `provider` set)
12
+ *
13
+ * Returns an empty string when no nodes have vector indexes.
14
+ */
15
+ export function emitVectorTypes(schema) {
16
+ const nodesWithVectors = getNodesWithVectors(schema);
17
+ if (nodesWithVectors.length === 0)
18
+ return '';
19
+ const blocks = [];
20
+ for (const node of nodesWithVectors) {
21
+ const indexes = node.vectorIndexes ?? [];
22
+ blocks.push(emitVectorResult(node));
23
+ blocks.push(emitVectorSearchByVectorInput(node, indexes));
24
+ const providerIndexes = indexes.filter((idx) => Boolean(idx.provider));
25
+ if (providerIndexes.length > 0)
26
+ blocks.push(emitVectorSearchByPhraseInput(node, providerIndexes));
27
+ }
28
+ return blocks.join('\n\n');
29
+ }
30
+ // ---------------------------------------------------------------------------
31
+ // Helpers
32
+ // ---------------------------------------------------------------------------
33
+ /**
34
+ * Returns all nodes that have at least one vector index,
35
+ * sorted alphabetically by type name.
36
+ */
37
+ function getNodesWithVectors(schema) {
38
+ return [...schema.nodes.values()]
39
+ .filter((node) => (node.vectorIndexes ?? []).length > 0)
40
+ .sort((a, b) => a.typeName.localeCompare(b.typeName));
41
+ }
42
+ /**
43
+ * Builds a literal union of index names, e.g. `'idx_a' | 'idx_b'`.
44
+ * Assumes the caller guarantees a non-empty list.
45
+ */
46
+ function toIndexNameUnion(indexes) {
47
+ return indexes.map((idx) => `'${idx.indexName}'`).join(' | ');
48
+ }
49
+ function emitVectorResult(node) {
50
+ return `export type ${node.typeName}VectorResult = {
51
+ node: ${node.typeName};
52
+ score: number;
53
+ };`;
54
+ }
55
+ function emitVectorSearchByVectorInput(node, indexes) {
56
+ const indexUnion = toIndexNameUnion(indexes);
57
+ return `export type ${node.typeName}VectorSearchByVectorInput = {
58
+ indexName: ${indexUnion};
59
+ vector: number[];
60
+ k: number;
61
+ where?: ${node.typeName}Where;
62
+ selectionSet?: string;
63
+ labels?: string[];
64
+ };`;
65
+ }
66
+ function emitVectorSearchByPhraseInput(node, providerIndexes) {
67
+ const indexUnion = toIndexNameUnion(providerIndexes);
68
+ return `export type ${node.typeName}VectorSearchByPhraseInput = {
69
+ indexName: ${indexUnion};
70
+ phrase: string;
71
+ k: number;
72
+ providerConfig?: Record<string, unknown>;
73
+ where?: ${node.typeName}Where;
74
+ selectionSet?: string;
75
+ labels?: string[];
76
+ };`;
77
+ }
78
+ //# sourceMappingURL=vector-emitter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vector-emitter.js","sourceRoot":"","sources":["../../../../src/generator/type-emitters/vector-emitter.ts"],"names":[],"mappings":"AAMA,8EAA8E;AAC9E,aAAa;AACb,8EAA8E;AAE9E;;;;;;;;;;GAUG;AACH,MAAM,UAAU,eAAe,CAAC,MAAsB;IACpD,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC;IAErD,IAAI,gBAAgB,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAE7C,MAAM,MAAM,GAAa,EAAE,CAAC;IAE5B,KAAK,MAAM,IAAI,IAAI,gBAAgB,EAAE,CAAC;QACpC,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,IAAI,EAAE,CAAC;QACzC,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC;QACpC,MAAM,CAAC,IAAI,CAAC,6BAA6B,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;QAE1D,MAAM,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;QACvE,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC;YAC5B,MAAM,CAAC,IAAI,CAAC,6BAA6B,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC,CAAC;IACtE,CAAC;IAED,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC7B,CAAC;AAED,8EAA8E;AAC9E,UAAU;AACV,8EAA8E;AAE9E;;;GAGG;AACH,SAAS,mBAAmB,CAAC,MAAsB;IACjD,OAAO,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;SAC9B,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;SACvD,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC1D,CAAC;AAED;;;GAGG;AACH,SAAS,gBAAgB,CAAC,OAAsB;IAC9C,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC,SAAS,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAChE,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAoB;IAC5C,OAAO,eAAe,IAAI,CAAC,QAAQ;UAC3B,IAAI,CAAC,QAAQ;;GAEpB,CAAC;AACJ,CAAC;AAED,SAAS,6BAA6B,CACpC,IAAoB,EACpB,OAAsB;IAEtB,MAAM,UAAU,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;IAE7C,OAAO,eAAe,IAAI,CAAC,QAAQ;eACtB,UAAU;;;YAGb,IAAI,CAAC,QAAQ;;;GAGtB,CAAC;AACJ,CAAC;AAED,SAAS,6BAA6B,CACpC,IAAoB,EACpB,eAA8B;IAE9B,MAAM,UAAU,GAAG,gBAAgB,CAAC,eAAe,CAAC,CAAC;IAErD,OAAO,eAAe,IAAI,CAAC,QAAQ;eACtB,UAAU;;;;YAIb,IAAI,CAAC,QAAQ;;;GAGtB,CAAC;AACJ,CAAC"}
@@ -7,7 +7,7 @@ export type { ModelInterface, MutationResponse, MutationInfo, FulltextIndexEntry
7
7
  export { InterfaceModel } from './interface-model';
8
8
  export type { InterfaceModelInterface } from './interface-model';
9
9
  export { OGMError, RecordNotFoundError, SubgraphOperationError, } from './errors';
10
- export type { SchemaMetadata, NodeDefinition, InterfaceDefinition, RelationshipDefinition, RelationshipPropertiesDefinition, PropertyDefinition, FulltextIndex, Neo4jValue, WhereInput, MutationInput, } from './schema/types';
10
+ export type { SchemaMetadata, NodeDefinition, InterfaceDefinition, RelationshipDefinition, RelationshipPropertiesDefinition, PropertyDefinition, FulltextIndex, VectorIndex, Neo4jValue, WhereInput, MutationInput, } from './schema/types';
11
11
  export { parseSchema, pluralize } from './schema/parser';
12
12
  export { clearResolveTargetDefCache } from './schema/utils';
13
13
  export { WhereCompiler } from './compilers/where.compiler';
@@ -18,6 +18,8 @@ export { SelectNormalizer } from './compilers/select-normalizer';
18
18
  export { MutationCompiler } from './compilers/mutation.compiler';
19
19
  export type { MutationResult } from './compilers/mutation.compiler';
20
20
  export { FulltextCompiler } from './compilers/fulltext.compiler';
21
+ export { VectorCompiler } from './compilers/vector.compiler';
22
+ export type { VectorResult } from './compilers/vector.compiler';
21
23
  export { Executor } from './execution/executor';
22
24
  export type { ExecutionContext, OGMLogger } from './execution/executor';
23
25
  export { ResultMapper } from './execution/result-mapper';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAC5B,YAAY,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,kCAAkC;AAClC,OAAO,EAAE,GAAG,IAAI,WAAW,EAAE,MAAM,OAAO,CAAC;AAC3C,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AACtE,YAAY,EACV,cAAc,EACd,gBAAgB,EAChB,YAAY,EACZ,kBAAkB,EAClB,yBAAyB,EACzB,YAAY,EACZ,aAAa,GACd,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,YAAY,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AAGjE,OAAO,EACL,QAAQ,EACR,mBAAmB,EACnB,sBAAsB,GACvB,MAAM,UAAU,CAAC;AAGlB,YAAY,EACV,cAAc,EACd,cAAc,EACd,mBAAmB,EACnB,sBAAsB,EACtB,gCAAgC,EAChC,kBAAkB,EAClB,aAAa,EACb,UAAU,EACV,UAAU,EACV,aAAa,GACd,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAGzD,OAAO,EAAE,0BAA0B,EAAE,MAAM,gBAAgB,CAAC;AAG5D,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,YAAY,EACV,WAAW,EACX,oBAAoB,GACrB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,YAAY,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,YAAY,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAGjE,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,YAAY,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACxE,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAGzD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,YAAY,EACV,oBAAoB,EACpB,mBAAmB,EACnB,mBAAmB,EACnB,gBAAgB,GACjB,MAAM,aAAa,CAAC;AAGrB,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC3D,YAAY,EACV,mBAAmB,EACnB,cAAc,EACd,oBAAoB,EACpB,6BAA6B,GAC9B,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EACL,oBAAoB,EACpB,eAAe,EACf,mBAAmB,EACnB,gBAAgB,GACjB,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAC5B,YAAY,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,kCAAkC;AAClC,OAAO,EAAE,GAAG,IAAI,WAAW,EAAE,MAAM,OAAO,CAAC;AAC3C,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AACtE,YAAY,EACV,cAAc,EACd,gBAAgB,EAChB,YAAY,EACZ,kBAAkB,EAClB,yBAAyB,EACzB,YAAY,EACZ,aAAa,GACd,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,YAAY,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AAGjE,OAAO,EACL,QAAQ,EACR,mBAAmB,EACnB,sBAAsB,GACvB,MAAM,UAAU,CAAC;AAGlB,YAAY,EACV,cAAc,EACd,cAAc,EACd,mBAAmB,EACnB,sBAAsB,EACtB,gCAAgC,EAChC,kBAAkB,EAClB,aAAa,EACb,WAAW,EACX,UAAU,EACV,UAAU,EACV,aAAa,GACd,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAGzD,OAAO,EAAE,0BAA0B,EAAE,MAAM,gBAAgB,CAAC;AAG5D,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,YAAY,EACV,WAAW,EACX,oBAAoB,GACrB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,YAAY,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,YAAY,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,YAAY,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAGhE,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,YAAY,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACxE,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAGzD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,YAAY,EACV,oBAAoB,EACpB,mBAAmB,EACnB,mBAAmB,EACnB,gBAAgB,GACjB,MAAM,aAAa,CAAC;AAGrB,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC3D,YAAY,EACV,mBAAmB,EACnB,cAAc,EACd,oBAAoB,EACpB,6BAA6B,GAC9B,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EACL,oBAAoB,EACpB,eAAe,EACf,mBAAmB,EACnB,gBAAgB,GACjB,MAAM,oBAAoB,CAAC"}
package/dist/esm/index.js CHANGED
@@ -16,6 +16,7 @@ export { SelectionCompiler } from './compilers/selection.compiler';
16
16
  export { SelectNormalizer } from './compilers/select-normalizer';
17
17
  export { MutationCompiler } from './compilers/mutation.compiler';
18
18
  export { FulltextCompiler } from './compilers/fulltext.compiler';
19
+ export { VectorCompiler } from './compilers/vector.compiler';
19
20
  // Execution
20
21
  export { Executor } from './execution/executor';
21
22
  export { ResultMapper } from './execution/result-mapper';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,eAAe;AACf,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAE5B,kCAAkC;AAClC,OAAO,EAAE,GAAG,IAAI,WAAW,EAAE,MAAM,OAAO,CAAC;AAC3C,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAUtE,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAGnD,SAAS;AACT,OAAO,EACL,QAAQ,EACR,mBAAmB,EACnB,sBAAsB,GACvB,MAAM,UAAU,CAAC;AAgBlB,gBAAgB;AAChB,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAEzD,eAAe;AACf,OAAO,EAAE,0BAA0B,EAAE,MAAM,gBAAgB,CAAC;AAE5D,yCAAyC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAK3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAEnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAEjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAEjE,YAAY;AACZ,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAEhD,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAEzD,iBAAiB;AACjB,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAQ5C,sBAAsB;AACtB,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAQ3D,QAAQ;AACR,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EACL,oBAAoB,EACpB,eAAe,EACf,mBAAmB,EACnB,gBAAgB,GACjB,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,eAAe;AACf,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAE5B,kCAAkC;AAClC,OAAO,EAAE,GAAG,IAAI,WAAW,EAAE,MAAM,OAAO,CAAC;AAC3C,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAUtE,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAGnD,SAAS;AACT,OAAO,EACL,QAAQ,EACR,mBAAmB,EACnB,sBAAsB,GACvB,MAAM,UAAU,CAAC;AAiBlB,gBAAgB;AAChB,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAEzD,eAAe;AACf,OAAO,EAAE,0BAA0B,EAAE,MAAM,gBAAgB,CAAC;AAE5D,yCAAyC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAK3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAEnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAEjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAG7D,YAAY;AACZ,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAEhD,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAEzD,iBAAiB;AACjB,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAQ5C,sBAAsB;AACtB,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAQ3D,QAAQ;AACR,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EACL,oBAAoB,EACpB,eAAe,EACf,mBAAmB,EACnB,gBAAgB,GACjB,MAAM,oBAAoB,CAAC"}