grafeo-ogm 1.3.1 → 1.5.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 (58) hide show
  1. package/CHANGELOG.md +51 -0
  2. package/dist/cjs/generator/type-emitters/model-map-emitter.d.ts +3 -1
  3. package/dist/cjs/generator/type-emitters/model-map-emitter.d.ts.map +1 -1
  4. package/dist/cjs/generator/type-emitters/model-map-emitter.js +13 -5
  5. package/dist/cjs/generator/type-emitters/model-map-emitter.js.map +1 -1
  6. package/dist/cjs/generator/type-emitters/sort-options-emitter.d.ts +4 -3
  7. package/dist/cjs/generator/type-emitters/sort-options-emitter.d.ts.map +1 -1
  8. package/dist/cjs/generator/type-emitters/sort-options-emitter.js +54 -16
  9. package/dist/cjs/generator/type-emitters/sort-options-emitter.js.map +1 -1
  10. package/dist/cjs/interface-model.d.ts +10 -10
  11. package/dist/cjs/interface-model.d.ts.map +1 -1
  12. package/dist/cjs/interface-model.js +28 -19
  13. package/dist/cjs/interface-model.js.map +1 -1
  14. package/dist/cjs/model.d.ts +10 -10
  15. package/dist/cjs/model.d.ts.map +1 -1
  16. package/dist/cjs/model.js +23 -16
  17. package/dist/cjs/model.js.map +1 -1
  18. package/dist/cjs/ogm.d.ts +10 -4
  19. package/dist/cjs/ogm.d.ts.map +1 -1
  20. package/dist/cjs/ogm.js.map +1 -1
  21. package/dist/cjs/schema/parser.d.ts.map +1 -1
  22. package/dist/cjs/schema/parser.js +8 -0
  23. package/dist/cjs/schema/parser.js.map +1 -1
  24. package/dist/cjs/schema/types.d.ts +2 -0
  25. package/dist/cjs/schema/types.d.ts.map +1 -1
  26. package/dist/cjs/utils/cypher-sort-projection.d.ts +44 -0
  27. package/dist/cjs/utils/cypher-sort-projection.d.ts.map +1 -0
  28. package/dist/cjs/utils/cypher-sort-projection.js +79 -0
  29. package/dist/cjs/utils/cypher-sort-projection.js.map +1 -0
  30. package/dist/esm/generator/type-emitters/model-map-emitter.d.ts +3 -1
  31. package/dist/esm/generator/type-emitters/model-map-emitter.d.ts.map +1 -1
  32. package/dist/esm/generator/type-emitters/model-map-emitter.js +13 -5
  33. package/dist/esm/generator/type-emitters/model-map-emitter.js.map +1 -1
  34. package/dist/esm/generator/type-emitters/sort-options-emitter.d.ts +4 -3
  35. package/dist/esm/generator/type-emitters/sort-options-emitter.d.ts.map +1 -1
  36. package/dist/esm/generator/type-emitters/sort-options-emitter.js +54 -16
  37. package/dist/esm/generator/type-emitters/sort-options-emitter.js.map +1 -1
  38. package/dist/esm/interface-model.d.ts +10 -10
  39. package/dist/esm/interface-model.d.ts.map +1 -1
  40. package/dist/esm/interface-model.js +29 -20
  41. package/dist/esm/interface-model.js.map +1 -1
  42. package/dist/esm/model.d.ts +10 -10
  43. package/dist/esm/model.d.ts.map +1 -1
  44. package/dist/esm/model.js +24 -17
  45. package/dist/esm/model.js.map +1 -1
  46. package/dist/esm/ogm.d.ts +10 -4
  47. package/dist/esm/ogm.d.ts.map +1 -1
  48. package/dist/esm/ogm.js.map +1 -1
  49. package/dist/esm/schema/parser.d.ts.map +1 -1
  50. package/dist/esm/schema/parser.js +8 -0
  51. package/dist/esm/schema/parser.js.map +1 -1
  52. package/dist/esm/schema/types.d.ts +2 -0
  53. package/dist/esm/schema/types.d.ts.map +1 -1
  54. package/dist/esm/utils/cypher-sort-projection.d.ts +44 -0
  55. package/dist/esm/utils/cypher-sort-projection.d.ts.map +1 -0
  56. package/dist/esm/utils/cypher-sort-projection.js +75 -0
  57. package/dist/esm/utils/cypher-sort-projection.js.map +1 -0
  58. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,56 @@
1
1
  # Changelog
2
2
 
3
+ ## 1.5.0 (2026-04-30)
4
+
5
+ ### Features
6
+
7
+ - **Sort by `@cypher` scalar fields** — `find()` / `findFirst()` / `findFirstOrThrow()` now resolve `@cypher` scalar fields at runtime when used in `options.sort`, instead of silently sorting against `NULL`. Each `@cypher` sort is compiled into a `CALL { WITH n; WITH n AS this; <user statement> }` subquery, with the projected column renamed to a unique `__sort_<field>` alias before the `RETURN`. Multi-field sort with mixed stored and `@cypher` fields works in any combination. Supports relationship-traversing statements (e.g. `MATCH (this)-[:HAS_STATUS]->(s) RETURN s.name`) — the rebound `this` variable scopes correctly inside the subquery without text substitution.
8
+
9
+ ### Codegen
10
+
11
+ - **`<Type>Sort` now includes scalar-returning `@cypher` fields** — the per-node and per-interface `Sort` types emit a `<field>?: InputMaybe<SortDirection>` for any `@cypher` field whose declared return type is a sortable scalar (`ID`, `String`, `Int`, `Float`, `Boolean`, `BigInt`, `Date`, `Time`, `LocalTime`, `DateTime`, `LocalDateTime`, `Duration`, or an enum). Skips array returns, node/interface returns, and `Point` / `CartesianPoint`. Purely additive — every previous key still exists, no symbol renames, no removals.
12
+
13
+ ### Schema parser
14
+
15
+ - **`@cypher(statement, columnName)` arguments are now captured.** `PropertyDefinition` gains two optional fields: `cypherStatement` (the verbatim subquery body) and `cypherColumnName` (the column to project). `cypherColumnName` defaults to the GraphQL field name at runtime when omitted, matching the `@neo4j/graphql` v4+ convention.
16
+
17
+ ### Internal
18
+
19
+ - New helper `src/utils/cypher-sort-projection.ts` exporting `compileSortClause()` and `buildCypherSortProjection()`. `Model.compileOptions()` and `InterfaceModel.find()` both delegate sort compilation to it. The helper accepts a `preserveVars` array so callers can carry forward variables already in scope (e.g. `__typename` on `InterfaceModel`) across each successive `WITH`.
20
+ - `Model.compileOptions()` now returns `{ pre, post }` instead of a single string. `pre` (the CALL subqueries + `WITH` projections) is injected before the `RETURN`; `post` (`ORDER BY` / `SKIP` / `LIMIT`) goes after it.
21
+
22
+ ### Notes & Limits
23
+
24
+ - **Sort-only.** This release implements `@cypher` resolution exclusively for `ORDER BY`. `select`, `selectionSet`, `where`, and `aggregate` continue to skip `@cypher` fields at runtime as in 1.4.0 — those use cases will be addressed in a separate release.
25
+ - **Pre-existing `where-emitter` footgun unchanged**: scalar `@cypher` fields are still emitted in `<Node>Where`, and the WHERE compiler still produces `n.<cypherField>` (which fails at Neo4j). This was already broken in 1.4.x and is out of scope for 1.5.0; track in a separate issue.
26
+ - **Statement convention.** `@cypher` statements must reference the bound node as `this` and end with `RETURN <expr> AS <columnName>` (or `RETURN <expr>` alone — the column name then defaults to the GraphQL field name). Example: `@cypher(statement: "RETURN toLower(this.drugName) AS insensitiveDrugName")`. The OGM never modifies the user's statement — `this` is rebound by the wrapping `CALL` subquery.
27
+ - **Stored-field sorts produce byte-identical Cypher to 1.4.0.** Only sorts that resolve to a `@cypher` field gain the new CALL/WITH machinery; everything else is unchanged.
28
+ - **No new generic parameters or breaking type changes.** `TSort` keeps its 1.4.0 default (`Record<string, 'ASC' | 'DESC'>`) — un-regenerated consumers continue to compile against the older `<Node>Sort` shape.
29
+
30
+ ## 1.4.0 (2026-04-30)
31
+
32
+ ### Features
33
+
34
+ - **Type-safe `sort` options per model** — `find()`, `findFirst()`, and `findFirstOrThrow()` now type-check the `options.sort` array against the actual node (or interface) properties. Writing `sort: [{ nonExistentField: 'ASC' }]` produces a TypeScript error instead of silently compiling. Powered by the existing per-node `<Node>Sort` types (which were emitted by the generator since v1.0 but never wired into the runtime). Also covers `InterfaceModel` via newly emitted `<Iface>Sort` / `<Iface>Options` types.
35
+
36
+ ### Improvements
37
+
38
+ - `ModelInterface` and `Model` now accept `TSort` as an 11th generic parameter (default `Record<string, 'ASC' | 'DESC'>`, preserving the previous untyped behavior for callers that don't pass generics).
39
+ - `InterfaceModelInterface` and `InterfaceModel` accept `TSort` as a 3rd generic parameter (same default).
40
+ - `ogm.model<K>()` and `ogm.interfaceModel<K>()` typed overloads now derive `TSort` from `TModelMap[K]` / `TInterfaceModelMap[K]` via a new `Sort` field on each map entry. The `model<K>` overload also wires `MutationSelectFields` through (was previously defaulting to `any` despite being available on the map).
41
+ - The generated `<Node>Model` aliases — including the fulltext-typed override variants — now reference `<Node>Sort` directly, so autocomplete and typo-checking work in IDEs without any extra setup.
42
+
43
+ ### Generator
44
+
45
+ - `sort-options-emitter.ts` now also emits `<Iface>Sort` and `<Iface>Options` for every interface in the schema (previously nodes only). Each interface's sortable fields are derived from its own scalar property declarations, skipping `@cypher` computed fields.
46
+ - `model-map-emitter.ts` adds `Sort: <Type>Sort;` to every `ModelMap` and `InterfaceModelMap` entry.
47
+
48
+ ### Notes & Limits
49
+
50
+ - **Type-only breaking change**: code that previously compiled with invalid sort field names (e.g. typos) will now produce TypeScript errors after upgrading. This is the intended behavior — runtime semantics are unchanged. If you need the loose typing temporarily during migration, cast at the call site: `sort: [{ field: 'ASC' } as Record<string, 'ASC' | 'DESC'>]`.
51
+ - No runtime changes: Cypher generation, parameter binding, and execution paths are byte-for-byte identical to v1.3.1.
52
+ - Backwards compatible at the JS level: callers using `ogm.model<T>(name)` (single-generic overload) or `Model` without explicit type args continue to receive the loose `Record<string, 'ASC' | 'DESC'>` shape via the default.
53
+
3
54
  ## 1.3.1 (2026-04-21)
4
55
 
5
56
  ### Bug Fixes
@@ -14,7 +14,9 @@ import type { SchemaMetadata } from '../../schema/types';
14
14
  * BookConnectInput,
15
15
  * BookDisconnectInput,
16
16
  * BookDeleteInput,
17
- * 'books'
17
+ * 'books',
18
+ * BookMutationSelectFields,
19
+ * BookSort
18
20
  * >;
19
21
  * ```
20
22
  *
@@ -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;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
+ {"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;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;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"}
@@ -19,7 +19,9 @@ const fulltext_emitter_1 = require("./fulltext-emitter");
19
19
  * BookConnectInput,
20
20
  * BookDisconnectInput,
21
21
  * BookDeleteInput,
22
- * 'books'
22
+ * 'books',
23
+ * BookMutationSelectFields,
24
+ * BookSort
23
25
  * >;
24
26
  * ```
25
27
  *
@@ -99,7 +101,8 @@ function buildModelType(typeName, pluralName, hasRels, hasFulltext) {
99
101
  ` ${disconnectType},`,
100
102
  ` ${deleteType},`,
101
103
  ` '${pluralName}',`,
102
- ` ${typeName}MutationSelectFields`,
104
+ ` ${typeName}MutationSelectFields,`,
105
+ ` ${typeName}Sort`,
103
106
  `>`,
104
107
  ].join('\n');
105
108
  if (!hasFulltext)
@@ -122,12 +125,13 @@ function buildModelTypeWithTypedFulltext(typeName, baseAlias) {
122
125
  // We only re-declare what we need to change. The shared parameter shapes
123
126
  // are inlined to stay decoupled from the non-exported runtime
124
127
  // `FindOptions`; `ExecutionContext` is imported from the package.
128
+ const sort = `${typeName}Sort`;
125
129
  const findParams = `{
126
130
  where?: ${where};
127
131
  selectionSet?: string | DocumentNode;
128
132
  select?: ${select};
129
133
  labels?: string[];
130
- options?: { limit?: number; offset?: number; sort?: Array<Record<string, 'ASC' | 'DESC'>> };
134
+ options?: { limit?: number; offset?: number; sort?: Array<${sort}> };
131
135
  fulltext?: ${fulltextInput};
132
136
  context?: ExecutionContext;
133
137
  }`;
@@ -136,7 +140,7 @@ function buildModelTypeWithTypedFulltext(typeName, baseAlias) {
136
140
  selectionSet?: string | DocumentNode;
137
141
  select?: ${select};
138
142
  labels?: string[];
139
- options?: { offset?: number; sort?: Array<Record<string, 'ASC' | 'DESC'>> };
143
+ options?: { offset?: number; sort?: Array<${sort}> };
140
144
  fulltext?: ${fulltextInput};
141
145
  context?: ExecutionContext;
142
146
  }`;
@@ -170,7 +174,8 @@ function buildInterfaceModelType(ifaceName) {
170
174
  return [
171
175
  `export type ${ifaceName}Model = InterfaceModelInterface<`,
172
176
  ` ${ifaceName},`,
173
- ` ${ifaceName}Where`,
177
+ ` ${ifaceName}Where,`,
178
+ ` ${ifaceName}Sort`,
174
179
  `>;`,
175
180
  ].join('\n');
176
181
  }
@@ -196,6 +201,7 @@ function buildModelMapEntry(typeName, pluralName, hasRels) {
196
201
  ` DisconnectInput: ${disconnectType};`,
197
202
  ` DeleteInput: ${deleteType};`,
198
203
  ` PluralKey: '${pluralName}';`,
204
+ ` Sort: ${typeName}Sort;`,
199
205
  ` };`,
200
206
  ].join('\n');
201
207
  }
@@ -211,6 +217,7 @@ function buildInterfaceAsModelMapEntry(ifaceName) {
211
217
  ` DisconnectInput: Record<string, never>;`,
212
218
  ` DeleteInput: Record<string, never>;`,
213
219
  ` PluralKey: never;`,
220
+ ` Sort: ${ifaceName}Sort;`,
214
221
  ` };`,
215
222
  ].join('\n');
216
223
  }
@@ -219,6 +226,7 @@ function buildInterfaceModelMapEntry(ifaceName) {
219
226
  ` ${ifaceName}: {`,
220
227
  ` Type: ${ifaceName};`,
221
228
  ` Where: ${ifaceName}Where;`,
229
+ ` Sort: ${ifaceName}Sort;`,
222
230
  ` };`,
223
231
  ].join('\n');
224
232
  }
@@ -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":";;AA8BA,sDAoBC;AAMD,oCAiBC;AAMD,sDAWC;AAzFD,yDAAwD;AAExD;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,SAAgB,qBAAqB,CAAC,MAAsB;IAC1D,MAAM,MAAM,GAAa,EAAE,CAAC;IAE5B,MAAM,WAAW,GAAG,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAEpD,KAAK,MAAM,QAAQ,IAAI,WAAW,EAAE,CAAC;QACnC,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAE,CAAC;QACzC,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,GAAG,CAAC,CAAC;QAC5C,MAAM,WAAW,GAAG,IAAA,qCAAkB,EAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACrD,MAAM,CAAC,IAAI,CACT,cAAc,CAAC,QAAQ,EAAE,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE,WAAW,CAAC,CAChE,CAAC;IACJ,CAAC;IAED,+BAA+B;IAC/B,MAAM,gBAAgB,GAAG,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAC9D,KAAK,MAAM,SAAS,IAAI,gBAAgB;QACtC,MAAM,CAAC,IAAI,CAAC,uBAAuB,CAAC,SAAS,CAAC,CAAC,CAAC;IAElD,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC7B,CAAC;AAED;;;GAGG;AACH,SAAgB,YAAY,CAAC,MAAsB;IACjD,MAAM,OAAO,GAAa,EAAE,CAAC;IAE7B,MAAM,WAAW,GAAG,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAEpD,KAAK,MAAM,QAAQ,IAAI,WAAW,EAAE,CAAC;QACnC,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAE,CAAC;QACzC,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,GAAG,CAAC,CAAC;QAC5C,OAAO,CAAC,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC;IACvE,CAAC;IAED,qEAAqE;IACrE,MAAM,gBAAgB,GAAG,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAC9D,KAAK,MAAM,SAAS,IAAI,gBAAgB;QACtC,OAAO,CAAC,IAAI,CAAC,6BAA6B,CAAC,SAAS,CAAC,CAAC,CAAC;IAEzD,OAAO,6BAA6B,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;AAC/D,CAAC;AAED;;;GAGG;AACH,SAAgB,qBAAqB,CAAC,MAAsB;IAC1D,MAAM,OAAO,GAAa,EAAE,CAAC;IAE7B,MAAM,gBAAgB,GAAG,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAE9D,KAAK,MAAM,SAAS,IAAI,gBAAgB;QACtC,OAAO,CAAC,IAAI,CAAC,2BAA2B,CAAC,SAAS,CAAC,CAAC,CAAC;IAEvD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,qCAAqC,CAAC;IAEvE,OAAO,sCAAsC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;AACxE,CAAC;AAED,8EAA8E;AAC9E,UAAU;AACV,8EAA8E;AAE9E,SAAS,cAAc,CACrB,QAAgB,EAChB,UAAkB,EAClB,OAAgB,EAChB,WAAoB;IAEpB,MAAM,WAAW,GAAG,OAAO;QACzB,CAAC,CAAC,GAAG,QAAQ,cAAc;QAC3B,CAAC,CAAC,uBAAuB,CAAC;IAC5B,MAAM,cAAc,GAAG,OAAO;QAC5B,CAAC,CAAC,GAAG,QAAQ,iBAAiB;QAC9B,CAAC,CAAC,uBAAuB,CAAC;IAC5B,MAAM,UAAU,GAAG,OAAO;QACxB,CAAC,CAAC,GAAG,QAAQ,aAAa;QAC1B,CAAC,CAAC,uBAAuB,CAAC;IAE5B,MAAM,SAAS,GAAG;QAChB,iBAAiB;QACjB,KAAK,QAAQ,GAAG;QAChB,KAAK,QAAQ,eAAe;QAC5B,KAAK,QAAQ,QAAQ;QACrB,KAAK,QAAQ,cAAc;QAC3B,KAAK,QAAQ,cAAc;QAC3B,KAAK,WAAW,GAAG;QACnB,KAAK,cAAc,GAAG;QACtB,KAAK,UAAU,GAAG;QAClB,MAAM,UAAU,IAAI;QACpB,KAAK,QAAQ,uBAAuB;QACpC,KAAK,QAAQ,MAAM;QACnB,GAAG;KACJ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEb,IAAI,CAAC,WAAW;QAAE,OAAO,eAAe,QAAQ,WAAW,SAAS,GAAG,CAAC;IAExE,OAAO,+BAA+B,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;AAC9D,CAAC;AAED;;;;;;;;GAQG;AACH,SAAS,+BAA+B,CACtC,QAAgB,EAChB,SAAiB;IAEjB,MAAM,aAAa,GAAG,GAAG,QAAQ,eAAe,CAAC;IACjD,MAAM,KAAK,GAAG,GAAG,QAAQ,OAAO,CAAC;IACjC,MAAM,MAAM,GAAG,GAAG,QAAQ,cAAc,CAAC;IAEzC,yEAAyE;IACzE,8DAA8D;IAC9D,kEAAkE;IAClE,MAAM,IAAI,GAAG,GAAG,QAAQ,MAAM,CAAC;IAE/B,MAAM,UAAU,GAAG;cACP,KAAK;;eAEJ,MAAM;;gEAE2C,IAAI;iBACnD,aAAa;;IAE1B,CAAC;IAEH,MAAM,eAAe,GAAG;cACZ,KAAK;;eAEJ,MAAM;;gDAE2B,IAAI;iBACnC,aAAa;;IAE1B,CAAC;IAEH,MAAM,WAAW,GAAG;cACR,KAAK;;iBAEF,aAAa;;IAE1B,CAAC;IAEH,MAAM,eAAe,GAAG;cACZ,KAAK;;;iBAGF,aAAa;;IAE1B,CAAC;IAEH,OAAO;QACL,eAAe,QAAQ,eAAe;QACtC,KAAK,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG;QAC1C,qEAAqE;QACrE,OAAO;QACP,mBAAmB,UAAU,cAAc,QAAQ,MAAM;QACzD,wBAAwB,eAAe,cAAc,QAAQ,WAAW;QACxE,+BAA+B,eAAe,cAAc,QAAQ,IAAI;QACxE,oBAAoB,WAAW,qBAAqB;QACpD,uBAAuB,eAAe,2DAA2D;QACjG,IAAI;KACL,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED,SAAS,uBAAuB,CAAC,SAAiB;IAChD,OAAO;QACL,eAAe,SAAS,kCAAkC;QAC1D,KAAK,SAAS,GAAG;QACjB,KAAK,SAAS,QAAQ;QACtB,KAAK,SAAS,MAAM;QACpB,IAAI;KACL,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED,SAAS,kBAAkB,CACzB,QAAgB,EAChB,UAAkB,EAClB,OAAgB;IAEhB,MAAM,WAAW,GAAG,OAAO;QACzB,CAAC,CAAC,GAAG,QAAQ,cAAc;QAC3B,CAAC,CAAC,uBAAuB,CAAC;IAC5B,MAAM,cAAc,GAAG,OAAO;QAC5B,CAAC,CAAC,GAAG,QAAQ,iBAAiB;QAC9B,CAAC,CAAC,uBAAuB,CAAC;IAC5B,MAAM,UAAU,GAAG,OAAO;QACxB,CAAC,CAAC,GAAG,QAAQ,aAAa;QAC1B,CAAC,CAAC,uBAAuB,CAAC;IAC5B,OAAO;QACL,KAAK,QAAQ,KAAK;QAClB,aAAa,QAAQ,GAAG;QACxB,qBAAqB,QAAQ,eAAe;QAC5C,6BAA6B,QAAQ,uBAAuB;QAC5D,cAAc,QAAQ,QAAQ;QAC9B,oBAAoB,QAAQ,cAAc;QAC1C,oBAAoB,QAAQ,cAAc;QAC1C,qBAAqB,WAAW,GAAG;QACnC,wBAAwB,cAAc,GAAG;QACzC,oBAAoB,UAAU,GAAG;QACjC,mBAAmB,UAAU,IAAI;QACjC,aAAa,QAAQ,OAAO;QAC5B,MAAM;KACP,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED,SAAS,6BAA6B,CAAC,SAAiB;IACtD,OAAO;QACL,KAAK,SAAS,KAAK;QACnB,aAAa,SAAS,GAAG;QACzB,qBAAqB,SAAS,eAAe;QAC7C,cAAc,SAAS,QAAQ;QAC/B,yCAAyC;QACzC,yCAAyC;QACzC,0CAA0C;QAC1C,6CAA6C;QAC7C,yCAAyC;QACzC,uBAAuB;QACvB,aAAa,SAAS,OAAO;QAC7B,MAAM;KACP,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED,SAAS,2BAA2B,CAAC,SAAiB;IACpD,OAAO;QACL,KAAK,SAAS,KAAK;QACnB,aAAa,SAAS,GAAG;QACzB,cAAc,SAAS,QAAQ;QAC/B,aAAa,SAAS,OAAO;QAC7B,MAAM;KACP,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC"}
@@ -1,8 +1,9 @@
1
1
  import type { SchemaMetadata } from '../../schema/types';
2
2
  /**
3
- * For each node in the schema, emits a `<Node>Sort` type (with one optional
4
- * `SortDirection` field per scalar property) and a `<Node>Options` type that
5
- * exposes `limit`, `offset`, and `sort`.
3
+ * For each node and interface in the schema, emits:
4
+ * - `<Type>Sort` — one optional `SortDirection` field per sortable scalar
5
+ * (stored scalars + scalar-returning `@cypher` fields)
6
+ * - `<Type>Options` — `limit`, `offset`, `sort` for use in find params
6
7
  */
7
8
  export declare function emitSortOptions(schema: SchemaMetadata): string;
8
9
  //# sourceMappingURL=sort-options-emitter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sort-options-emitter.d.ts","sourceRoot":"","sources":["../../../../src/generator/type-emitters/sort-options-emitter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAkB,MAAM,oBAAoB,CAAC;AAEzE;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,CAW9D"}
1
+ {"version":3,"file":"sort-options-emitter.d.ts","sourceRoot":"","sources":["../../../../src/generator/type-emitters/sort-options-emitter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EAIf,MAAM,oBAAoB,CAAC;AAE5B;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,CAgB9D"}
@@ -2,46 +2,84 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.emitSortOptions = emitSortOptions;
4
4
  /**
5
- * For each node in the schema, emits a `<Node>Sort` type (with one optional
6
- * `SortDirection` field per scalar property) and a `<Node>Options` type that
7
- * exposes `limit`, `offset`, and `sort`.
5
+ * For each node and interface in the schema, emits:
6
+ * - `<Type>Sort` — one optional `SortDirection` field per sortable scalar
7
+ * (stored scalars + scalar-returning `@cypher` fields)
8
+ * - `<Type>Options` — `limit`, `offset`, `sort` for use in find params
8
9
  */
9
10
  function emitSortOptions(schema) {
10
11
  const blocks = [];
11
- // Process nodes in alphabetical order
12
12
  const sortedNodes = [...schema.nodes.entries()].sort(([a], [b]) => a.localeCompare(b));
13
13
  for (const [, node] of sortedNodes)
14
- blocks.push(emitNodeSortAndOptions(node));
14
+ blocks.push(emitNodeSortAndOptions(node, schema));
15
+ const sortedInterfaces = [...schema.interfaces.entries()].sort(([a], [b]) => a.localeCompare(b));
16
+ for (const [, iface] of sortedInterfaces)
17
+ blocks.push(emitInterfaceSortAndOptions(iface, schema));
15
18
  return blocks.join('\n\n');
16
19
  }
17
20
  // ---------------------------------------------------------------------------
18
21
  // Helpers
19
22
  // ---------------------------------------------------------------------------
20
- function emitNodeSortAndOptions(node) {
21
- const sortFields = getSortableProperties(node);
23
+ function emitNodeSortAndOptions(node, schema) {
24
+ return emitSortAndOptionsBlock(node.typeName, getSortableProperties(node.properties, schema));
25
+ }
26
+ function emitInterfaceSortAndOptions(iface, schema) {
27
+ return emitSortAndOptionsBlock(iface.name, getSortableProperties(iface.properties, schema));
28
+ }
29
+ function emitSortAndOptionsBlock(typeName, sortFields) {
22
30
  const sortMembers = sortFields
23
31
  .map((name) => ` ${name}?: InputMaybe<SortDirection>;`)
24
32
  .join('\n');
25
- const sortType = `export type ${node.typeName}Sort = {\n${sortMembers}\n};`;
26
- const optionsType = `export type ${node.typeName}Options = {
33
+ const sortType = `export type ${typeName}Sort = {\n${sortMembers}\n};`;
34
+ const optionsType = `export type ${typeName}Options = {
27
35
  limit?: InputMaybe<Scalars["Int"]["input"]>;
28
36
  offset?: InputMaybe<Scalars["Int"]["input"]>;
29
- sort?: InputMaybe<Array<${node.typeName}Sort>>;
37
+ sort?: InputMaybe<Array<${typeName}Sort>>;
30
38
  };`;
31
39
  return `${sortType}\n\n${optionsType}`;
32
40
  }
33
41
  /**
34
- * Returns the names of all scalar (non-relationship, non-cypher) properties
35
- * on a node, preserving the insertion order of the properties map.
42
+ * Returns the names of properties eligible for `ORDER BY`:
43
+ * - Stored scalars (any non-`@cypher` property)
44
+ * - `@cypher` fields whose declared return type is a sortable scalar
45
+ * (skips `Point` / `CartesianPoint` and array returns)
46
+ *
47
+ * Preserves the insertion order of the properties map.
36
48
  */
37
- function getSortableProperties(node) {
49
+ function getSortableProperties(properties, schema) {
38
50
  const names = [];
39
- for (const [name, prop] of node.properties) {
40
- // Skip @cypher fields — they are computed and not stored
51
+ for (const [name, prop] of properties) {
41
52
  if (prop.isCypher)
42
- continue;
53
+ if (!isCypherSortable(prop, schema))
54
+ continue;
43
55
  names.push(name);
44
56
  }
45
57
  return names;
46
58
  }
59
+ /**
60
+ * A `@cypher` field is sortable when it returns a single (non-array)
61
+ * scalar / enum value. Geo types (`Point` / `CartesianPoint`) are excluded
62
+ * because Cypher cannot `ORDER BY` them directly.
63
+ */
64
+ function isCypherSortable(prop, schema) {
65
+ if (prop.isArray)
66
+ return false;
67
+ if (prop.type === 'Point' || prop.type === 'CartesianPoint')
68
+ return false;
69
+ return SORTABLE_SCALARS.has(prop.type) || schema.enums.has(prop.type);
70
+ }
71
+ const SORTABLE_SCALARS = new Set([
72
+ 'ID',
73
+ 'String',
74
+ 'Int',
75
+ 'Float',
76
+ 'Boolean',
77
+ 'BigInt',
78
+ 'Date',
79
+ 'Time',
80
+ 'LocalTime',
81
+ 'DateTime',
82
+ 'LocalDateTime',
83
+ 'Duration',
84
+ ]);
47
85
  //# sourceMappingURL=sort-options-emitter.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sort-options-emitter.js","sourceRoot":"","sources":["../../../../src/generator/type-emitters/sort-options-emitter.ts"],"names":[],"mappings":";;AAOA,0CAWC;AAhBD;;;;GAIG;AACH,SAAgB,eAAe,CAAC,MAAsB;IACpD,MAAM,MAAM,GAAa,EAAE,CAAC;IAE5B,sCAAsC;IACtC,MAAM,WAAW,GAAG,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAChE,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CACnB,CAAC;IAEF,KAAK,MAAM,CAAC,EAAE,IAAI,CAAC,IAAI,WAAW;QAAE,MAAM,CAAC,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC,CAAC;IAE9E,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC7B,CAAC;AAED,8EAA8E;AAC9E,UAAU;AACV,8EAA8E;AAE9E,SAAS,sBAAsB,CAAC,IAAoB;IAClD,MAAM,UAAU,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAC;IAE/C,MAAM,WAAW,GAAG,UAAU;SAC3B,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,IAAI,+BAA+B,CAAC;SACvD,IAAI,CAAC,IAAI,CAAC,CAAC;IAEd,MAAM,QAAQ,GAAG,eAAe,IAAI,CAAC,QAAQ,aAAa,WAAW,MAAM,CAAC;IAE5E,MAAM,WAAW,GAAG,eAAe,IAAI,CAAC,QAAQ;;;4BAGtB,IAAI,CAAC,QAAQ;GACtC,CAAC;IAEF,OAAO,GAAG,QAAQ,OAAO,WAAW,EAAE,CAAC;AACzC,CAAC;AAED;;;GAGG;AACH,SAAS,qBAAqB,CAAC,IAAoB;IACjD,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;QAC3C,yDAAyD;QACzD,IAAI,IAAI,CAAC,QAAQ;YAAE,SAAS;QAE5B,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACnB,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC"}
1
+ {"version":3,"file":"sort-options-emitter.js","sourceRoot":"","sources":["../../../../src/generator/type-emitters/sort-options-emitter.ts"],"names":[],"mappings":"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"}
@@ -2,10 +2,10 @@ import { DocumentNode } from 'graphql';
2
2
  import { Driver } from 'neo4j-driver';
3
3
  import { ExecutionContext } from './execution/executor';
4
4
  import { InterfaceDefinition, SchemaMetadata } from './schema/types';
5
- interface FindOptions {
5
+ interface FindOptions<TSort = Record<string, 'ASC' | 'DESC'>> {
6
6
  limit?: number;
7
7
  offset?: number;
8
- sort?: Array<Record<string, 'ASC' | 'DESC'>>;
8
+ sort?: TSort[];
9
9
  }
10
10
  import type { QueryCompilers } from './model';
11
11
  /**
@@ -17,11 +17,11 @@ export type InterfaceModelCompilers = QueryCompilers;
17
17
  * Public-facing interface for InterfaceModel — used in generated type aliases.
18
18
  * Excludes internal class properties so jest.Mocked<XModel> only requires find/aggregate.
19
19
  */
20
- export interface InterfaceModelInterface<T = any, TWhere = any> {
20
+ export interface InterfaceModelInterface<T = any, TWhere = any, TSort = Record<string, 'ASC' | 'DESC'>> {
21
21
  find(params?: {
22
22
  where?: TWhere;
23
23
  selectionSet?: string | DocumentNode;
24
- options?: FindOptions;
24
+ options?: FindOptions<TSort>;
25
25
  labels?: string[];
26
26
  context?: ExecutionContext;
27
27
  }): Promise<(T & {
@@ -39,7 +39,7 @@ export interface InterfaceModelInterface<T = any, TWhere = any> {
39
39
  findFirst?(params?: {
40
40
  where?: TWhere;
41
41
  selectionSet?: string | DocumentNode;
42
- options?: Omit<FindOptions, 'limit'>;
42
+ options?: Omit<FindOptions<TSort>, 'limit'>;
43
43
  labels?: string[];
44
44
  context?: ExecutionContext;
45
45
  }): Promise<(T & {
@@ -56,7 +56,7 @@ export interface InterfaceModelInterface<T = any, TWhere = any> {
56
56
  findFirstOrThrow?(params?: {
57
57
  where?: TWhere;
58
58
  selectionSet?: string | DocumentNode;
59
- options?: Omit<FindOptions, 'limit'>;
59
+ options?: Omit<FindOptions<TSort>, 'limit'>;
60
60
  labels?: string[];
61
61
  context?: ExecutionContext;
62
62
  }): Promise<T & {
@@ -76,7 +76,7 @@ export interface InterfaceModelInterface<T = any, TWhere = any> {
76
76
  context?: ExecutionContext;
77
77
  }): Promise<number>;
78
78
  }
79
- export declare class InterfaceModel<T = Record<string, unknown>, TWhere = any> implements InterfaceModelInterface<T, TWhere> {
79
+ export declare class InterfaceModel<T = Record<string, unknown>, TWhere = any, TSort = Record<string, 'ASC' | 'DESC'>> implements InterfaceModelInterface<T, TWhere, TSort> {
80
80
  private interfaceDef;
81
81
  private schema;
82
82
  private whereCompiler;
@@ -91,7 +91,7 @@ export declare class InterfaceModel<T = Record<string, unknown>, TWhere = any> i
91
91
  find(params?: {
92
92
  where?: TWhere;
93
93
  selectionSet?: string | DocumentNode;
94
- options?: FindOptions;
94
+ options?: FindOptions<TSort>;
95
95
  labels?: string[];
96
96
  context?: ExecutionContext;
97
97
  }): Promise<(T & {
@@ -109,7 +109,7 @@ export declare class InterfaceModel<T = Record<string, unknown>, TWhere = any> i
109
109
  findFirst(params?: {
110
110
  where?: TWhere;
111
111
  selectionSet?: string | DocumentNode;
112
- options?: Omit<FindOptions, 'limit'>;
112
+ options?: Omit<FindOptions<TSort>, 'limit'>;
113
113
  labels?: string[];
114
114
  context?: ExecutionContext;
115
115
  }): Promise<(T & {
@@ -126,7 +126,7 @@ export declare class InterfaceModel<T = Record<string, unknown>, TWhere = any> i
126
126
  findFirstOrThrow(params?: {
127
127
  where?: TWhere;
128
128
  selectionSet?: string | DocumentNode;
129
- options?: Omit<FindOptions, 'limit'>;
129
+ options?: Omit<FindOptions<TSort>, 'limit'>;
130
130
  labels?: string[];
131
131
  context?: ExecutionContext;
132
132
  }): Promise<T & {
@@ -1 +1 @@
1
- {"version":3,"file":"interface-model.d.ts","sourceRoot":"","sources":["../../src/interface-model.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"interface-model.d.ts","sourceRoot":"","sources":["../../src/interface-model.ts"],"names":[],"mappings":"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"}
@@ -9,6 +9,7 @@ const where_compiler_1 = require("./compilers/where.compiler");
9
9
  const errors_1 = require("./errors");
10
10
  const executor_1 = require("./execution/executor");
11
11
  const result_mapper_1 = require("./execution/result-mapper");
12
+ const cypher_sort_projection_1 = require("./utils/cypher-sort-projection");
12
13
  const validation_1 = require("./utils/validation");
13
14
  class InterfaceModel {
14
15
  constructor(interfaceDef, schema, driver, compilers) {
@@ -59,26 +60,34 @@ class InterfaceModel {
59
60
  const returnClause = this.selectionCompiler.compile(selection, 'n', this.syntheticNodeDef, this.maxDepth, 0, allParams, paramCounter);
60
61
  // Inject __typename into the projection: "n { .id, .name }" → "n { .id, .name, __typename: __typename }"
61
62
  const injected = returnClause.replace(/\}$/, ', __typename: __typename }');
63
+ // OPTIONS — sort `pre` (CALL subqueries + WITH for `@cypher` sorts) is
64
+ // injected BEFORE the RETURN so the projected aliases are in scope; the
65
+ // WITH must preserve `__typename` (already in scope from the typename
66
+ // resolution step above).
67
+ let sortPre = '';
68
+ let sortOrderBy = '';
69
+ if (params?.options?.sort?.length) {
70
+ const compiled = (0, cypher_sort_projection_1.compileSortClause)({
71
+ sort: params.options.sort,
72
+ nodeVar: 'n',
73
+ propertyLookup: (field) => this.syntheticNodeDef.properties.get(field),
74
+ preserveVars: ['__typename'],
75
+ });
76
+ sortPre = compiled.pre;
77
+ sortOrderBy = compiled.orderBy;
78
+ }
79
+ if (sortPre)
80
+ cypherParts.push(sortPre);
62
81
  cypherParts.push(`RETURN ${injected}`);
63
- // OPTIONS
64
- if (params?.options) {
65
- if (params.options.sort?.length) {
66
- const sortItems = params.options.sort.map((sortObj) => {
67
- const [field, direction] = Object.entries(sortObj)[0];
68
- (0, validation_1.assertSafeIdentifier)(field, 'sort field');
69
- const validDirection = (0, validation_1.assertSortDirection)(direction);
70
- return `n.${(0, validation_1.escapeIdentifier)(field)} ${validDirection}`;
71
- });
72
- cypherParts.push(`ORDER BY ${sortItems.join(', ')}`);
73
- }
74
- if (params.options.offset !== undefined) {
75
- allParams.options_offset = (0, neo4j_driver_1.int)(params.options.offset);
76
- cypherParts.push(`SKIP $options_offset`);
77
- }
78
- if (params.options.limit !== undefined) {
79
- allParams.options_limit = (0, neo4j_driver_1.int)(params.options.limit);
80
- cypherParts.push(`LIMIT $options_limit`);
81
- }
82
+ if (sortOrderBy)
83
+ cypherParts.push(sortOrderBy);
84
+ if (params?.options?.offset !== undefined) {
85
+ allParams.options_offset = (0, neo4j_driver_1.int)(params.options.offset);
86
+ cypherParts.push(`SKIP $options_offset`);
87
+ }
88
+ if (params?.options?.limit !== undefined) {
89
+ allParams.options_limit = (0, neo4j_driver_1.int)(params.options.limit);
90
+ cypherParts.push(`LIMIT $options_limit`);
82
91
  }
83
92
  const cypher = cypherParts.join('\n');
84
93
  const result = await this.executor.execute(cypher, allParams, params?.context);
@@ -1 +1 @@
1
- {"version":3,"file":"interface-model.js","sourceRoot":"","sources":["../../src/interface-model.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"interface-model.js","sourceRoot":"","sources":["../../src/interface-model.ts"],"names":[],"mappings":"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"}
@@ -8,10 +8,10 @@ import { VectorCompiler } from './compilers/vector.compiler';
8
8
  import { WhereCompiler } from './compilers/where.compiler';
9
9
  import { ExecutionContext, OGMLogger } from './execution/executor';
10
10
  import { NodeDefinition, SchemaMetadata } from './schema/types';
11
- interface FindOptions {
11
+ interface FindOptions<TSort = Record<string, 'ASC' | 'DESC'>> {
12
12
  limit?: number;
13
13
  offset?: number;
14
- sort?: Array<Record<string, 'ASC' | 'DESC'>>;
14
+ sort?: TSort[];
15
15
  }
16
16
  /** A single fulltext index query entry */
17
17
  export interface FulltextIndexEntry {
@@ -54,13 +54,13 @@ export type MutationResponse<T = any, K extends string = any> = string extends K
54
54
  * Excludes internal class properties (selectionSet setter, maxDepth, etc.)
55
55
  * so that jest.Mocked<XModel> only requires CRUD methods.
56
56
  */
57
- export interface ModelInterface<T = any, TSelect extends Record<string, unknown> = any, TWhere extends Record<string, unknown> = any, TCreateInput extends Record<string, unknown> = any, TUpdateInput extends Record<string, unknown> = any, TConnectInput extends Record<string, unknown> = any, TDisconnectInput extends Record<string, unknown> = any, TDeleteInput extends Record<string, unknown> = any, TPluralKey extends string = any, TMutationSelect extends Record<string, unknown> = any> {
57
+ export interface ModelInterface<T = any, TSelect extends Record<string, unknown> = any, TWhere extends Record<string, unknown> = any, TCreateInput extends Record<string, unknown> = any, TUpdateInput extends Record<string, unknown> = any, TConnectInput extends Record<string, unknown> = any, TDisconnectInput extends Record<string, unknown> = any, TDeleteInput extends Record<string, unknown> = any, TPluralKey extends string = any, TMutationSelect extends Record<string, unknown> = any, TSort = Record<string, 'ASC' | 'DESC'>> {
58
58
  find(params?: {
59
59
  where?: TWhere;
60
60
  selectionSet?: string | DocumentNode;
61
61
  select?: TSelect;
62
62
  labels?: string[];
63
- options?: FindOptions;
63
+ options?: FindOptions<TSort>;
64
64
  fulltext?: FulltextInput;
65
65
  context?: ExecutionContext;
66
66
  }): Promise<T[]>;
@@ -107,7 +107,7 @@ export interface ModelInterface<T = any, TSelect extends Record<string, unknown>
107
107
  selectionSet?: string | DocumentNode;
108
108
  select?: TSelect;
109
109
  labels?: string[];
110
- options?: Omit<FindOptions, 'limit'>;
110
+ options?: Omit<FindOptions<TSort>, 'limit'>;
111
111
  fulltext?: FulltextInput;
112
112
  context?: ExecutionContext;
113
113
  }): Promise<T | null>;
@@ -123,7 +123,7 @@ export interface ModelInterface<T = any, TSelect extends Record<string, unknown>
123
123
  selectionSet?: string | DocumentNode;
124
124
  select?: TSelect;
125
125
  labels?: string[];
126
- options?: Omit<FindOptions, 'limit'>;
126
+ options?: Omit<FindOptions<TSort>, 'limit'>;
127
127
  fulltext?: FulltextInput;
128
128
  context?: ExecutionContext;
129
129
  }): Promise<T>;
@@ -223,7 +223,7 @@ export interface MutationCompilers {
223
223
  export interface ModelCompilers extends QueryCompilers, MutationCompilers {
224
224
  vector?: VectorCompiler;
225
225
  }
226
- export declare class Model<T = any, TSelect extends Record<string, unknown> = any, TWhere extends Record<string, unknown> = any, TCreateInput extends Record<string, unknown> = any, TUpdateInput extends Record<string, unknown> = any, TConnectInput extends Record<string, unknown> = any, TDisconnectInput extends Record<string, unknown> = any, TDeleteInput extends Record<string, unknown> = any, TPluralKey extends string = any, TMutationSelect extends Record<string, unknown> = any> implements ModelInterface<T, TSelect, TWhere, TCreateInput, TUpdateInput, TConnectInput, TDisconnectInput, TDeleteInput, TPluralKey, TMutationSelect> {
226
+ export declare class Model<T = any, TSelect extends Record<string, unknown> = any, TWhere extends Record<string, unknown> = any, TCreateInput extends Record<string, unknown> = any, TUpdateInput extends Record<string, unknown> = any, TConnectInput extends Record<string, unknown> = any, TDisconnectInput extends Record<string, unknown> = any, TDeleteInput extends Record<string, unknown> = any, TPluralKey extends string = any, TMutationSelect extends Record<string, unknown> = any, TSort = Record<string, 'ASC' | 'DESC'>> implements ModelInterface<T, TSelect, TWhere, TCreateInput, TUpdateInput, TConnectInput, TDisconnectInput, TDeleteInput, TPluralKey, TMutationSelect, TSort> {
227
227
  private nodeDef;
228
228
  private schema;
229
229
  private _selectionSet;
@@ -254,7 +254,7 @@ export declare class Model<T = any, TSelect extends Record<string, unknown> = an
254
254
  selectionSet?: string | DocumentNode;
255
255
  select?: TSelect;
256
256
  labels?: string[];
257
- options?: FindOptions;
257
+ options?: FindOptions<TSort>;
258
258
  fulltext?: FulltextInput;
259
259
  context?: ExecutionContext;
260
260
  }): Promise<T[]>;
@@ -307,7 +307,7 @@ export declare class Model<T = any, TSelect extends Record<string, unknown> = an
307
307
  selectionSet?: string | DocumentNode;
308
308
  select?: TSelect;
309
309
  labels?: string[];
310
- options?: Omit<FindOptions, 'limit'>;
310
+ options?: Omit<FindOptions<TSort>, 'limit'>;
311
311
  fulltext?: FulltextInput;
312
312
  context?: ExecutionContext;
313
313
  }): Promise<T | null>;
@@ -323,7 +323,7 @@ export declare class Model<T = any, TSelect extends Record<string, unknown> = an
323
323
  selectionSet?: string | DocumentNode;
324
324
  select?: TSelect;
325
325
  labels?: string[];
326
- options?: Omit<FindOptions, 'limit'>;
326
+ options?: Omit<FindOptions<TSort>, 'limit'>;
327
327
  fulltext?: FulltextInput;
328
328
  context?: ExecutionContext;
329
329
  }): Promise<T>;