@kronor/dtv 4.1.0 → 5.0.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.
@@ -0,0 +1,163 @@
1
+ import { getNamedType, isEnumType, isInterfaceType, isInputObjectType, isListType, isNonNullType, isObjectType, isScalarType, isUnionType } from 'graphql';
2
+ function safePropKey(key) {
3
+ return /^[A-Za-z_][A-Za-z0-9_]*$/.test(key) ? key : JSON.stringify(key);
4
+ }
5
+ export function unwrapCollectionElementType(fieldType) {
6
+ // fieldType is usually [T!]! or [T!] etc. We want T.
7
+ let t = fieldType;
8
+ while (isNonNullType(t))
9
+ t = t.ofType;
10
+ if (isListType(t)) {
11
+ t = t.ofType;
12
+ while (isNonNullType(t))
13
+ t = t.ofType;
14
+ return getNamedType(t);
15
+ }
16
+ return getNamedType(t);
17
+ }
18
+ export function collectReachableTypes(_schema, roots) {
19
+ const queue = [...roots];
20
+ const seen = new Set();
21
+ const add = (t) => {
22
+ if (t.name.startsWith('__'))
23
+ return;
24
+ if (seen.has(t.name))
25
+ return;
26
+ seen.add(t.name);
27
+ queue.push(t);
28
+ };
29
+ for (const r of roots) {
30
+ if (!r.name.startsWith('__'))
31
+ seen.add(r.name);
32
+ }
33
+ const out = [];
34
+ while (queue.length) {
35
+ const t = queue.shift();
36
+ out.push(t);
37
+ if (isObjectType(t) || isInterfaceType(t)) {
38
+ const fields = t.getFields();
39
+ for (const field of Object.values(fields)) {
40
+ const named = getNamedType(field.type);
41
+ add(named);
42
+ }
43
+ }
44
+ else if (isUnionType(t)) {
45
+ for (const possible of t.getTypes())
46
+ add(possible);
47
+ }
48
+ }
49
+ return out.sort((a, b) => a.name.localeCompare(b.name));
50
+ }
51
+ export function renderTsFromSchema(types, options) {
52
+ const scalarMap = {
53
+ ID: 'string',
54
+ String: 'string',
55
+ Boolean: 'boolean',
56
+ Int: 'number',
57
+ Float: 'number',
58
+ json: 'any',
59
+ jsonb: 'any',
60
+ date: 'string',
61
+ timestamptz: 'string',
62
+ timestamp: 'string',
63
+ uuid: 'string',
64
+ ...(options?.scalars ?? {})
65
+ };
66
+ const renderGraphqlTypeRef = (t) => {
67
+ if (isNonNullType(t))
68
+ return `${renderGraphqlTypeRef(t.ofType)}!`;
69
+ if (isListType(t))
70
+ return `[${renderGraphqlTypeRef(t.ofType)}]`;
71
+ return getNamedType(t).name;
72
+ };
73
+ const renderTypeRef = (t) => {
74
+ if (!isNonNullType(t)) {
75
+ return `${renderTypeRefNonNull(t)} | null`;
76
+ }
77
+ return renderTypeRefNonNull(t.ofType);
78
+ };
79
+ const renderTypeRefNonNull = (t) => {
80
+ if (isNonNullType(t))
81
+ return renderTypeRefNonNull(t.ofType);
82
+ if (isListType(t))
83
+ return `Array<${renderTypeRef(t.ofType)}>`;
84
+ const named = getNamedType(t);
85
+ if (isScalarType(named)) {
86
+ return scalarMap[named.name] ?? 'unknown';
87
+ }
88
+ return named.name;
89
+ };
90
+ const includeGraphqlTypeComments = options?.includeGraphqlTypeComments === true;
91
+ const exportTypes = options?.exportTypes !== false;
92
+ const typePrefix = exportTypes ? 'export type' : 'type';
93
+ const chunks = [];
94
+ chunks.push('/* eslint-disable @typescript-eslint/no-unused-vars */');
95
+ chunks.push('// This file is auto-generated by `dtv typegen`.');
96
+ chunks.push('// Do not edit manually.');
97
+ chunks.push('');
98
+ for (const t of types) {
99
+ const typeName = t.name;
100
+ if (t.name.startsWith('__'))
101
+ continue;
102
+ if (isScalarType(t)) {
103
+ continue;
104
+ }
105
+ if (isEnumType(t)) {
106
+ const values = t.getValues().map(v => JSON.stringify(v.name)).join(' | ');
107
+ chunks.push(`${typePrefix} ${typeName} = ${values || 'never'};`);
108
+ chunks.push('');
109
+ continue;
110
+ }
111
+ if (isUnionType(t)) {
112
+ const members = t.getTypes().map(m => m.name).join(' | ');
113
+ chunks.push(`${typePrefix} ${typeName} = ${members || 'never'};`);
114
+ chunks.push('');
115
+ continue;
116
+ }
117
+ if (isObjectType(t) || isInterfaceType(t)) {
118
+ const fields = t.getFields();
119
+ const lines = [];
120
+ for (const field of Object.values(fields)) {
121
+ if (field.name.startsWith('__'))
122
+ continue;
123
+ const key = safePropKey(field.name);
124
+ const tsType = renderTypeRef(field.type);
125
+ if (includeGraphqlTypeComments) {
126
+ lines.push(` ${key}: ${tsType}; // GraphQL: ${renderGraphqlTypeRef(field.type)}`);
127
+ }
128
+ else {
129
+ lines.push(` ${key}: ${tsType};`);
130
+ }
131
+ }
132
+ chunks.push(`${typePrefix} ${typeName} = {`);
133
+ chunks.push(...lines);
134
+ chunks.push('};');
135
+ chunks.push('');
136
+ continue;
137
+ }
138
+ if (isInputObjectType(t)) {
139
+ // Not expected in reachable output types, but keep deterministic behavior.
140
+ const fields = t.getFields();
141
+ const lines = [];
142
+ for (const field of Object.values(fields)) {
143
+ const key = safePropKey(field.name);
144
+ const tsType = renderTypeRef(field.type);
145
+ if (includeGraphqlTypeComments) {
146
+ lines.push(` ${key}: ${tsType}; // GraphQL: ${renderGraphqlTypeRef(field.type)}`);
147
+ }
148
+ else {
149
+ lines.push(` ${key}: ${tsType};`);
150
+ }
151
+ }
152
+ chunks.push(`${typePrefix} ${typeName} = {`);
153
+ chunks.push(...lines);
154
+ chunks.push('};');
155
+ chunks.push('');
156
+ continue;
157
+ }
158
+ chunks.push(`${typePrefix} ${typeName} = unknown;`);
159
+ chunks.push('');
160
+ }
161
+ return chunks.join('\n');
162
+ }
163
+ //# sourceMappingURL=schemaToTs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schemaToTs.js","sourceRoot":"","sources":["../../../src/cli/typegen/schemaToTs.ts"],"names":[],"mappings":"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"}
package/dist/index.es.js CHANGED
@@ -33678,30 +33678,33 @@ const Ll = {
33678
33678
  autocomplete: (e) => ({ type: "autocomplete", ...e }),
33679
33679
  custom: (e, r) => ({ type: "custom", component: e, ...r })
33680
33680
  };
33681
- function IC(e) {
33681
+ function IC() {
33682
+ }
33683
+ function PC(e) {
33684
+ const { rowType: r, ...t } = e;
33682
33685
  return {
33683
33686
  type: "tableColumn",
33684
- id: e.id,
33685
- name: e.name,
33686
- data: e.data,
33687
- cellRenderer: e.cellRenderer
33687
+ id: t.id,
33688
+ name: t.name,
33689
+ data: t.data,
33690
+ cellRenderer: t.cellRenderer
33688
33691
  };
33689
33692
  }
33690
- function PC(e) {
33693
+ function DC(e) {
33691
33694
  return {
33692
33695
  type: "virtualColumn",
33693
33696
  id: e.id,
33694
33697
  data: e.data
33695
33698
  };
33696
33699
  }
33697
- function DC(e) {
33700
+ function RC(e) {
33698
33701
  return {
33699
33702
  type: "valueQuery",
33700
33703
  field: e.field,
33701
33704
  ...e.path !== void 0 ? { path: e.path } : {}
33702
33705
  };
33703
33706
  }
33704
- function RC(e) {
33707
+ function kC(e) {
33705
33708
  return {
33706
33709
  type: "objectQuery",
33707
33710
  field: e.field,
@@ -33709,7 +33712,7 @@ function RC(e) {
33709
33712
  ...e.path !== void 0 ? { path: e.path } : {}
33710
33713
  };
33711
33714
  }
33712
- function kC(e) {
33715
+ function TC(e) {
33713
33716
  return {
33714
33717
  type: "arrayQuery",
33715
33718
  field: e.field,
@@ -33724,33 +33727,33 @@ function kC(e) {
33724
33727
  function ko(e, r) {
33725
33728
  return { section: e, key: r };
33726
33729
  }
33727
- function TC(e) {
33730
+ function NC(e) {
33728
33731
  return ko("cellRenderers", e);
33729
33732
  }
33730
- function NC(e) {
33733
+ function MC(e) {
33731
33734
  return ko("noRowsComponents", e);
33732
33735
  }
33733
- function MC(e) {
33736
+ function FC(e) {
33734
33737
  return ko("customFilterComponents", e);
33735
33738
  }
33736
- function FC(e) {
33739
+ function AC(e) {
33737
33740
  return ko("queryTransforms", e);
33738
33741
  }
33739
- function AC(e) {
33742
+ function _C(e) {
33740
33743
  return ko("initialValues", e);
33741
33744
  }
33742
- const _C = {
33745
+ const jC = {
33743
33746
  and: (...e) => ({ and: e }),
33744
33747
  or: (...e) => ({ or: e })
33745
33748
  };
33746
- function jC(e) {
33749
+ function LC(e) {
33747
33750
  return {
33748
33751
  name: e.name,
33749
33752
  label: e.label,
33750
33753
  filters: e.filters
33751
33754
  };
33752
33755
  }
33753
- function LC(e) {
33756
+ function $C(e) {
33754
33757
  return {
33755
33758
  id: e.id,
33756
33759
  label: e.label,
@@ -33772,7 +33775,7 @@ function hp(e, r, t) {
33772
33775
  n.set(s, i);
33773
33776
  }
33774
33777
  }
33775
- function $C(e) {
33778
+ function BC(e) {
33776
33779
  hp(e.columnDefinitions, (t) => t.id, {
33777
33780
  context: `view("${e.id}") columnDefinitions`,
33778
33781
  keyName: "id"
@@ -33783,31 +33786,32 @@ function $C(e) {
33783
33786
  keyName: "id"
33784
33787
  }), e;
33785
33788
  }
33786
- const KC = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
33789
+ const zC = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
33787
33790
  __proto__: null,
33788
33791
  CellRenderer: zm,
33789
33792
  FilterControl: OC,
33790
33793
  FilterExpr: Ll,
33791
- arrayQuery: kC,
33792
- cellRendererRef: TC,
33793
- column: IC,
33794
- customFilterComponentRef: MC,
33795
- filter: LC,
33796
- filterField: _C,
33797
- filterGroup: jC,
33798
- initialValueRef: AC,
33799
- noRowsComponentRef: NC,
33800
- objectQuery: RC,
33801
- queryTransformRef: FC,
33794
+ arrayQuery: TC,
33795
+ cellRendererRef: NC,
33796
+ column: PC,
33797
+ customFilterComponentRef: FC,
33798
+ filter: $C,
33799
+ filterField: jC,
33800
+ filterGroup: LC,
33801
+ initialValueRef: _C,
33802
+ noRowsComponentRef: MC,
33803
+ objectQuery: kC,
33804
+ queryTransformRef: AC,
33805
+ rowType: IC,
33802
33806
  runtimeRef: ko,
33803
- valueQuery: DC,
33804
- view: $C,
33805
- virtualColumn: PC
33807
+ valueQuery: RC,
33808
+ view: BC,
33809
+ virtualColumn: DC
33806
33810
  }, Symbol.toStringTag, { value: "Module" }));
33807
33811
  export {
33808
33812
  xC as App,
33809
33813
  zm as CellRenderer,
33810
- KC as DSL,
33814
+ zC as DSL,
33811
33815
  OC as FilterControl,
33812
33816
  Ll as FilterExpr,
33813
33817
  k0 as FilterTransform,
@@ -33817,5 +33821,6 @@ export {
33817
33821
  Kc as isFailure,
33818
33822
  is as isSuccess,
33819
33823
  Rv as renderGraphQLQuery,
33824
+ IC as rowType,
33820
33825
  Ti as success
33821
33826
  };
package/dist/index.html CHANGED
@@ -6,7 +6,7 @@
6
6
  <link rel="icon" type="image/svg+xml" href="/portal/static/assets/table-views/vite.svg" />
7
7
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
8
8
  <title>Filters Demo</title>
9
- <script type="module" crossorigin src="/portal/static/assets/table-views/assets/index-fwXiEkID.js"></script>
9
+ <script type="module" crossorigin src="/portal/static/assets/table-views/assets/index-BCuRRUo9.js"></script>
10
10
  <link rel="stylesheet" crossorigin href="/portal/static/assets/table-views/assets/index-8FxkZzYn.css">
11
11
  </head>
12
12
 
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=dtv.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dtv.d.ts","sourceRoot":"","sources":["../../../src/cli/dtv.ts"],"names":[],"mappings":""}
@@ -0,0 +1,13 @@
1
+ import { type GraphQLNamedType, type GraphQLSchema, type GraphQLType } from 'graphql';
2
+ export declare function unwrapCollectionElementType(fieldType: GraphQLType): GraphQLNamedType;
3
+ export declare function collectReachableTypes(_schema: GraphQLSchema, roots: GraphQLNamedType[]): GraphQLNamedType[];
4
+ export declare function renderTsFromSchema(types: GraphQLNamedType[], options?: {
5
+ scalars?: Record<string, string>;
6
+ includeGraphqlTypeComments?: boolean;
7
+ /**
8
+ * When true (default), emit `export type ...` declarations.
9
+ * When false, emit local `type ...` declarations.
10
+ */
11
+ exportTypes?: boolean;
12
+ }): string;
13
+ //# sourceMappingURL=schemaToTs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schemaToTs.d.ts","sourceRoot":"","sources":["../../../../src/cli/typegen/schemaToTs.ts"],"names":[],"mappings":"AAAA,OAAO,EAUH,KAAK,gBAAgB,EACrB,KAAK,aAAa,EAClB,KAAK,WAAW,EACnB,MAAM,SAAS,CAAC;AAMjB,wBAAgB,2BAA2B,CAAC,SAAS,EAAE,WAAW,GAAG,gBAAgB,CAUpF;AAED,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,gBAAgB,EAAE,GAAG,gBAAgB,EAAE,CAiC3G;AAED,wBAAgB,kBAAkB,CAC9B,KAAK,EAAE,gBAAgB,EAAE,EACzB,OAAO,CAAC,EAAE;IACN,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,0BAA0B,CAAC,EAAE,OAAO,CAAC;IACrC;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;CACzB,GACF,MAAM,CAqHR"}
@@ -5,53 +5,80 @@
5
5
  * and provide a concise, ergonomic way to build column definitions while
6
6
  * retaining full type safety.
7
7
  */
8
- import { type FieldQuery, type TableColumnDefinition, type VirtualColumnDefinition, type CellRenderer, type Query, type OrderByConfig, type ValueQuery, type ObjectQuery, type ArrayQuery } from "../framework/column-definition";
8
+ import { type FieldQuery, type DataFromFieldQueriesSafe, type DataFromFieldQueriesForRowSafe, type FieldQueryForRowSafe, type TableColumnDefinition, type VirtualColumnDefinition, type CellRenderer, type Query, type OrderByConfig, type ValueQuery, type ObjectQuery, type ArrayQuery } from "../framework/column-definition";
9
9
  import type { HasuraCondition } from '../framework/graphql';
10
+ /**
11
+ * Produces a phantom value used for type inference.
12
+ *
13
+ * Typical usage:
14
+ *
15
+ * column({
16
+ * rowType: rowType<MyFullRow>(),
17
+ * ...
18
+ * })
19
+ */
20
+ export declare function rowType<Row>(): Row;
10
21
  /**
11
22
  * Creates a renderable table column definition.
12
- * Convenience wrapper that accepts raw string paths or FieldQuery objects.
23
+ * Convenience wrapper around the underlying TableColumnDefinition type.
13
24
  */
14
- export declare function column(args: {
25
+ export declare function column<Row, const FieldQueries extends readonly FieldQuery[]>(args: {
26
+ rowType: Row;
27
+ id: string;
28
+ name: string;
29
+ data: FieldQueries & readonly FieldQueryForRowSafe<Row>[];
30
+ cellRenderer: CellRenderer<DataFromFieldQueriesForRowSafe<Row, FieldQueries>>;
31
+ }): TableColumnDefinition<FieldQueries, DataFromFieldQueriesForRowSafe<Row, FieldQueries>>;
32
+ export declare function column<const FieldQueries extends readonly FieldQuery[]>(args: {
33
+ rowType?: never;
15
34
  id: string;
16
35
  name: string;
17
- data: FieldQuery[];
18
- cellRenderer: CellRenderer;
19
- }): TableColumnDefinition;
36
+ data: FieldQueries;
37
+ cellRenderer: CellRenderer<DataFromFieldQueriesSafe<FieldQueries>>;
38
+ }): TableColumnDefinition<FieldQueries>;
20
39
  /**
21
- * Creates a data-only virtual column definition. Convenience wrapper that
22
- * accepts raw string paths or FieldQuery objects.
40
+ * Creates a data-only virtual column definition. Convenience wrapper around
41
+ * the underlying VirtualColumnDefinition type.
23
42
  */
24
- export declare function virtualColumn(args: {
43
+ export declare function virtualColumn<const FieldQueries extends readonly FieldQuery[]>(args: {
25
44
  id: string;
26
- data: FieldQuery[];
27
- }): VirtualColumnDefinition;
45
+ data: FieldQueries;
46
+ }): VirtualColumnDefinition<FieldQueries>;
28
47
  /**
29
48
  * Creates a ValueQuery (scalar field) definition.
30
49
  */
31
- export declare function valueQuery(args: {
32
- field: string;
50
+ export declare function valueQuery<const Field extends string>(args: {
51
+ field: Field;
33
52
  path?: string;
34
- }): ValueQuery;
53
+ }): ValueQuery & {
54
+ field: Field;
55
+ };
35
56
  /**
36
57
  * Creates an ObjectQuery (nested object) with a selection set.
37
58
  * selectionSet must contain only Query variants (value/object/array queries).
38
59
  */
39
- export declare function objectQuery(args: {
40
- field: string;
41
- selectionSet: Query[];
60
+ export declare function objectQuery<const Field extends string, const SelectionSet extends readonly Query[]>(args: {
61
+ field: Field;
62
+ selectionSet: SelectionSet;
42
63
  path?: string;
43
- }): ObjectQuery;
64
+ }): ObjectQuery & {
65
+ field: Field;
66
+ selectionSet: SelectionSet;
67
+ };
44
68
  /**
45
69
  * Creates an ArrayQuery (list) with a selection set and optional ordering/limit.
46
70
  */
47
- export declare function arrayQuery(args: {
48
- field: string;
49
- selectionSet: Query[];
71
+ export declare function arrayQuery<const Field extends string, const SelectionSet extends readonly Query[]>(args: {
72
+ field: Field;
73
+ selectionSet: SelectionSet;
50
74
  path?: string;
51
75
  orderBy?: OrderByConfig | OrderByConfig[];
52
76
  distinctOn?: string[];
53
77
  limit?: number;
54
78
  where?: HasuraCondition;
55
- }): ArrayQuery;
56
- export type { Query };
79
+ }): ArrayQuery & {
80
+ field: Field;
81
+ selectionSet: SelectionSet;
82
+ };
83
+ export type { Query } from "../framework/column-definition";
57
84
  //# sourceMappingURL=columns.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"columns.d.ts","sourceRoot":"","sources":["../../../src/dsl/columns.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EACH,KAAK,UAAU,EACf,KAAK,qBAAqB,EAC1B,KAAK,uBAAuB,EAC5B,KAAK,YAAY,EACjB,KAAK,KAAK,EACV,KAAK,aAAa,EAClB,KAAK,UAAU,EACf,KAAK,WAAW,EAChB,KAAK,UAAU,EAClB,MAAM,gCAAgC,CAAC;AACxC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAE5D;;;GAGG;AACH,wBAAgB,MAAM,CAAC,IAAI,EAAE;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,UAAU,EAAE,CAAC;IAAC,YAAY,EAAE,YAAY,CAAA;CAAE,GAAG,qBAAqB,CAQhI;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,UAAU,EAAE,CAAA;CAAE,GAAG,uBAAuB,CAM/F;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,UAAU,CAM7E;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,KAAK,EAAE,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,WAAW,CAOtG;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,KAAK,EAAE,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,aAAa,GAAG,aAAa,EAAE,CAAC;IAC1C,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,eAAe,CAAC;CAC3B,GAAG,UAAU,CAWb;AAGD,YAAY,EAAE,KAAK,EAAE,CAAC"}
1
+ {"version":3,"file":"columns.d.ts","sourceRoot":"","sources":["../../../src/dsl/columns.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ import type { ArrayQuery, ArrayQueryForRow, ObjectQueryForRow, QueryForRowSafe, ValueQueryForRow } from '../../framework/column-definition';
2
+ type NonNullish<T> = Exclude<T, null | undefined>;
3
+ type ElemOf<T> = T extends ReadonlyArray<infer E> ? E : never;
4
+ type ArrayFieldKey<Row> = ArrayQueryForRow<Row> extends {
5
+ field: infer F;
6
+ } ? Extract<F, string> : never;
7
+ type ObjectFieldKey<Row> = ObjectQueryForRow<Row> extends {
8
+ field: infer F;
9
+ } ? Extract<F, string> : never;
10
+ export type QueryBuilder<Row> = {
11
+ value: <K extends keyof Row & string>(field: K, args?: {
12
+ path?: string;
13
+ }) => ValueQueryForRow<Row> & {
14
+ field: K;
15
+ };
16
+ object: <K extends ObjectFieldKey<Row> & keyof Row & string, const SelectionSet extends readonly QueryForRowSafe<NonNullish<Row[K]>>[]>(field: K, buildSelection: (q: QueryBuilder<NonNullish<Row[K]>>) => SelectionSet, args?: {
17
+ path?: string;
18
+ }) => ObjectQueryForRow<Row> & {
19
+ field: K;
20
+ selectionSet: SelectionSet;
21
+ };
22
+ array: <K extends ArrayFieldKey<Row> & keyof Row & string, const SelectionSet extends readonly QueryForRowSafe<NonNullish<ElemOf<NonNullish<Row[K]>>>>[]>(field: K, buildSelection: (q: QueryBuilder<NonNullish<ElemOf<NonNullish<Row[K]>>>>) => SelectionSet, args?: {
23
+ path?: string;
24
+ orderBy?: ArrayQuery['orderBy'];
25
+ distinctOn?: ArrayQuery['distinctOn'];
26
+ limit?: number;
27
+ where?: ArrayQuery['where'];
28
+ }) => ArrayQueryForRow<Row> & {
29
+ field: K;
30
+ selectionSet: SelectionSet;
31
+ };
32
+ selection: <SelectionRow>() => QueryBuilder<SelectionRow>;
33
+ __row: Row;
34
+ };
35
+ /**
36
+ * Internal typed query builder scoped to a Row type.
37
+ *
38
+ * Not exported via the public DSL surface (yet).
39
+ */
40
+ export declare function queryForRow<Row>(): QueryBuilder<Row>;
41
+ export {};
42
+ //# sourceMappingURL=queryForRow.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queryForRow.d.ts","sourceRoot":"","sources":["../../../../src/dsl/internal/queryForRow.ts"],"names":[],"mappings":"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"}