@mszr/idb-dux 1.0.0 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +11 -0
- package/dist/commonjs/query/index.d.ts +1 -1
- package/dist/commonjs/query/index.d.ts.map +1 -1
- package/dist/commonjs/query/index.js.map +1 -1
- package/dist/commonjs/query/keys.d.ts +13 -0
- package/dist/commonjs/query/keys.d.ts.map +1 -1
- package/dist/commonjs/query/keys.js.map +1 -1
- package/dist/commonjs/query/types.d.ts +25 -6
- package/dist/commonjs/query/types.d.ts.map +1 -1
- package/dist/commonjs/query/types.js.map +1 -1
- package/dist/commonjs/query/validation.d.ts +8 -4
- package/dist/commonjs/query/validation.d.ts.map +1 -1
- package/dist/commonjs/query/validation.js.map +1 -1
- package/dist/esm/query/index.d.ts +1 -1
- package/dist/esm/query/index.d.ts.map +1 -1
- package/dist/esm/query/index.js.map +1 -1
- package/dist/esm/query/keys.d.ts +13 -0
- package/dist/esm/query/keys.d.ts.map +1 -1
- package/dist/esm/query/keys.js.map +1 -1
- package/dist/esm/query/types.d.ts +25 -6
- package/dist/esm/query/types.d.ts.map +1 -1
- package/dist/esm/query/types.js.map +1 -1
- package/dist/esm/query/validation.d.ts +8 -4
- package/dist/esm/query/validation.d.ts.map +1 -1
- package/dist/esm/query/validation.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -69,6 +69,17 @@ declare module '@mszr/idb-dux' {
|
|
|
69
69
|
}
|
|
70
70
|
```
|
|
71
71
|
|
|
72
|
+
## Editor tip — smoother `where` dot-paths
|
|
73
|
+
|
|
74
|
+
dux completes linked dot-paths in `where` clauses up to three hops (`memberships`, `memberships.user`, `memberships.user.email`). For the nicest experience, turn off accept-on-commit-character in your editor:
|
|
75
|
+
|
|
76
|
+
```JSON
|
|
77
|
+
// VS Code settings.json
|
|
78
|
+
"editor.acceptSuggestionOnCommitCharacter": false
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
Otherwise typing `.` to continue a path (`memberships.user.`) auto-accepts the highlighted suggestion instead of letting you keep going. With it off, Tab / Enter / arrow keys still accept completions exactly as you'd expect.
|
|
82
|
+
|
|
72
83
|
## The one hard contract
|
|
73
84
|
|
|
74
85
|
**dux owes behavioral compatibility to Instant's backend, not API compatibility to Instant's SDKs.** Everything dux emits — schema shapes for the CLI, perms CEL, wire queries — is something Instant already accepts. Inside that envelope, dux is free to reimagine the ergonomics.
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export { $only, $skip } from './constants.js';
|
|
2
2
|
export type { IdbQueryBuilder } from './defineQuery.js';
|
|
3
3
|
export { defineQuery, q } from './defineQuery.js';
|
|
4
|
-
export type { HasPick, ResolvedScopeKey, SingularScopeKey } from './keys.js';
|
|
4
|
+
export type { HasPick, ReservedResultKey, ResolvedScopeKey, SingularScopeKey } from './keys.js';
|
|
5
5
|
export { resultKeys, shapeResult, shapingSchema } from './shapeResult.js';
|
|
6
6
|
export type { IdbMBlock, IdbMTransform, IdbQuery, IdbQueryData, IdbQueryEntity, IdbQueryFields, IdbQueryNode, IdbQueryOptions, IdbQueryPageInfo, IdbQuerySubquery, IdbSchemaRuleParams, IdbWhereOps, } from './types.js';
|
|
7
7
|
export type { IdbValidQuery } from './validation.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/query/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAA;AAC7C,YAAY,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AACvD,OAAO,EAAE,WAAW,EAAE,CAAC,EAAE,MAAM,kBAAkB,CAAA;AACjD,YAAY,EAAE,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/query/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAA;AAC7C,YAAY,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AACvD,OAAO,EAAE,WAAW,EAAE,CAAC,EAAE,MAAM,kBAAkB,CAAA;AACjD,YAAY,EAAE,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAA;AAC/F,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AACzE,YAAY,EACV,SAAS,EACT,aAAa,EACb,QAAQ,EACR,YAAY,EACZ,cAAc,EACd,cAAc,EACd,YAAY,EACZ,eAAe,EACf,gBAAgB,EAChB,gBAAgB,EAChB,mBAAmB,EACnB,WAAW,GACZ,MAAM,YAAY,CAAA;AACnB,YAAY,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/query/index.ts"],"names":[],"mappings":";;;AAAA,+CAA6C;AAApC,qGAAA,KAAK,OAAA;AAAE,qGAAA,KAAK,OAAA;AAErB,mDAAiD;AAAxC,6GAAA,WAAW,OAAA;AAAE,mGAAA,CAAC,OAAA;AAEvB,mDAAyE;AAAhE,4GAAA,UAAU,OAAA;AAAE,6GAAA,WAAW,OAAA;AAAE,+GAAA,aAAa,OAAA;AAgB/C,qCAAuC;AAA9B,sGAAA,WAAW,OAAA","sourcesContent":["export { $only, $skip } from './constants.js'\nexport type { IdbQueryBuilder } from './defineQuery.js'\nexport { defineQuery, q } from './defineQuery.js'\nexport type { HasPick, ResolvedScopeKey, SingularScopeKey } from './keys.js'\nexport { resultKeys, shapeResult, shapingSchema } from './shapeResult.js'\nexport type {\n IdbMBlock,\n IdbMTransform,\n IdbQuery,\n IdbQueryData,\n IdbQueryEntity,\n IdbQueryFields,\n IdbQueryNode,\n IdbQueryOptions,\n IdbQueryPageInfo,\n IdbQuerySubquery,\n IdbSchemaRuleParams,\n IdbWhereOps,\n} from './types.js'\nexport type { IdbValidQuery } from './validation.js'\nexport { toWireQuery } from './wire.js'\n"]}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/query/index.ts"],"names":[],"mappings":";;;AAAA,+CAA6C;AAApC,qGAAA,KAAK,OAAA;AAAE,qGAAA,KAAK,OAAA;AAErB,mDAAiD;AAAxC,6GAAA,WAAW,OAAA;AAAE,mGAAA,CAAC,OAAA;AAEvB,mDAAyE;AAAhE,4GAAA,UAAU,OAAA;AAAE,6GAAA,WAAW,OAAA;AAAE,+GAAA,aAAa,OAAA;AAgB/C,qCAAuC;AAA9B,sGAAA,WAAW,OAAA","sourcesContent":["export { $only, $skip } from './constants.js'\nexport type { IdbQueryBuilder } from './defineQuery.js'\nexport { defineQuery, q } from './defineQuery.js'\nexport type { HasPick, ReservedResultKey, ResolvedScopeKey, SingularScopeKey } from './keys.js'\nexport { resultKeys, shapeResult, shapingSchema } from './shapeResult.js'\nexport type {\n IdbMBlock,\n IdbMTransform,\n IdbQuery,\n IdbQueryData,\n IdbQueryEntity,\n IdbQueryFields,\n IdbQueryNode,\n IdbQueryOptions,\n IdbQueryPageInfo,\n IdbQuerySubquery,\n IdbSchemaRuleParams,\n IdbWhereOps,\n} from './types.js'\nexport type { IdbValidQuery } from './validation.js'\nexport { toWireQuery } from './wire.js'\n"]}
|
|
@@ -19,6 +19,19 @@ export type HasPick<Node> = Node extends {
|
|
|
19
19
|
} | {
|
|
20
20
|
$at: number;
|
|
21
21
|
} ? true : false : false;
|
|
22
|
+
/**
|
|
23
|
+
* The top-level keys a `/vue` client hook result owns. A query whose resolved
|
|
24
|
+
* scope key — or top-level `$m` label — lands on one of these would clash with
|
|
25
|
+
* the hook's own ref (`{ isLoading } = useQuery(...)`), so query validation
|
|
26
|
+
* rejects it ([validation.ts], `QERR_RESULT_KEY_RESERVED`). The set is the
|
|
27
|
+
* union across `useQuery`, `useInfiniteQuery`, and the result wrapper
|
|
28
|
+
* (`.refs`/`.state`); the `/vue` result shapes are locked against it by a type
|
|
29
|
+
* test so the two never drift.
|
|
30
|
+
*
|
|
31
|
+
* Nested keys never appear here: they live inside entity objects, where no
|
|
32
|
+
* result field exists to collide with.
|
|
33
|
+
*/
|
|
34
|
+
export type ReservedResultKey = 'isLoading' | 'error' | 'pageInfo' | 'refs' | 'state' | 'canLoadNextPage' | 'loadNextPage';
|
|
22
35
|
/** The output key of a scope: `$as` wins, `$only`/`$at` singularize, else as-is. */
|
|
23
36
|
export type ResolvedScopeKey<S extends IdbSchema, ParentNS extends string | null, Key extends string, Node> = Node extends {
|
|
24
37
|
$: infer Dollar;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"keys.d.ts","sourceRoot":"","sources":["../../../src/query/keys.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAA;AAC1D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAA;AAE3D,KAAK,gBAAgB,CACnB,CAAC,SAAS,SAAS,EACnB,QAAQ,SAAS,MAAM,GAAG,IAAI,EAC9B,GAAG,SAAS,MAAM,IAChB,QAAQ,SAAS,IAAI,GACrB,GAAG,SAAS,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,GACvC,CAAC,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,GACxC,SAAS,GACX,QAAQ,SAAS,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,GAC/C,GAAG,SAAS,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,QAAQ,CAAC,GACpD,CAAC,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,GACzC,SAAS,GACX,SAAS,CAAA;AAEf,+EAA+E;AAC/E,MAAM,MAAM,gBAAgB,CAC1B,CAAC,SAAS,SAAS,EACnB,QAAQ,SAAS,MAAM,GAAG,IAAI,EAC9B,GAAG,SAAS,MAAM,IAChB,CAAC,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,CAAC,aAAa,CAAC,SAAS,KAAK,GACjD,GAAG,GACH,gBAAgB,CAAC,CAAC,EAAE,QAAQ,EAAE,GAAG,CAAC,SAAS,MAAM,QAAQ,GACvD,QAAQ,SAAS,MAAM,GACrB,QAAQ,GACR,CAAC,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,CAAC,aAAa,CAAC,SAAS,UAAU,GACpD,GAAG,GACH,WAAW,CAAC,GAAG,CAAC,GACpB,KAAK,CAAA;AAEX,iEAAiE;AACjE,MAAM,MAAM,OAAO,CAAC,IAAI,IAAI,IAAI,SAAS;IAAE,CAAC,EAAE,MAAM,MAAM,CAAA;CAAE,GACxD,MAAM,SAAS;IAAE,KAAK,EAAE,IAAI,CAAA;CAAE,GAAG;IAAE,GAAG,EAAE,MAAM,CAAA;CAAE,GAC9C,IAAI,GACJ,KAAK,GACP,KAAK,CAAA;AAET,oFAAoF;AACpF,MAAM,MAAM,gBAAgB,CAC1B,CAAC,SAAS,SAAS,EACnB,QAAQ,SAAS,MAAM,GAAG,IAAI,EAC9B,GAAG,SAAS,MAAM,EAClB,IAAI,IACF,IAAI,SAAS;IAAE,CAAC,EAAE,MAAM,MAAM,CAAA;CAAE,GAChC,MAAM,SAAS;IAAE,GAAG,EAAE,MAAM,EAAE,SAAS,MAAM,CAAA;CAAE,GAC7C,EAAE,GACF,MAAM,SAAS;IAAE,KAAK,EAAE,IAAI,CAAA;CAAE,GAAG;IAAE,GAAG,EAAE,MAAM,CAAA;CAAE,GAC9C,gBAAgB,CAAC,CAAC,EAAE,QAAQ,EAAE,GAAG,CAAC,GAClC,GAAG,GACP,GAAG,CAAA"}
|
|
1
|
+
{"version":3,"file":"keys.d.ts","sourceRoot":"","sources":["../../../src/query/keys.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAA;AAC1D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAA;AAE3D,KAAK,gBAAgB,CACnB,CAAC,SAAS,SAAS,EACnB,QAAQ,SAAS,MAAM,GAAG,IAAI,EAC9B,GAAG,SAAS,MAAM,IAChB,QAAQ,SAAS,IAAI,GACrB,GAAG,SAAS,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,GACvC,CAAC,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,GACxC,SAAS,GACX,QAAQ,SAAS,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,GAC/C,GAAG,SAAS,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,QAAQ,CAAC,GACpD,CAAC,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,GACzC,SAAS,GACX,SAAS,CAAA;AAEf,+EAA+E;AAC/E,MAAM,MAAM,gBAAgB,CAC1B,CAAC,SAAS,SAAS,EACnB,QAAQ,SAAS,MAAM,GAAG,IAAI,EAC9B,GAAG,SAAS,MAAM,IAChB,CAAC,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,CAAC,aAAa,CAAC,SAAS,KAAK,GACjD,GAAG,GACH,gBAAgB,CAAC,CAAC,EAAE,QAAQ,EAAE,GAAG,CAAC,SAAS,MAAM,QAAQ,GACvD,QAAQ,SAAS,MAAM,GACrB,QAAQ,GACR,CAAC,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,CAAC,aAAa,CAAC,SAAS,UAAU,GACpD,GAAG,GACH,WAAW,CAAC,GAAG,CAAC,GACpB,KAAK,CAAA;AAEX,iEAAiE;AACjE,MAAM,MAAM,OAAO,CAAC,IAAI,IAAI,IAAI,SAAS;IAAE,CAAC,EAAE,MAAM,MAAM,CAAA;CAAE,GACxD,MAAM,SAAS;IAAE,KAAK,EAAE,IAAI,CAAA;CAAE,GAAG;IAAE,GAAG,EAAE,MAAM,CAAA;CAAE,GAC9C,IAAI,GACJ,KAAK,GACP,KAAK,CAAA;AAET;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,iBAAiB,GACvB,WAAW,GACX,OAAO,GACP,UAAU,GACV,MAAM,GACN,OAAO,GACP,iBAAiB,GACjB,cAAc,CAAA;AAEpB,oFAAoF;AACpF,MAAM,MAAM,gBAAgB,CAC1B,CAAC,SAAS,SAAS,EACnB,QAAQ,SAAS,MAAM,GAAG,IAAI,EAC9B,GAAG,SAAS,MAAM,EAClB,IAAI,IACF,IAAI,SAAS;IAAE,CAAC,EAAE,MAAM,MAAM,CAAA;CAAE,GAChC,MAAM,SAAS;IAAE,GAAG,EAAE,MAAM,EAAE,SAAS,MAAM,CAAA;CAAE,GAC7C,EAAE,GACF,MAAM,SAAS;IAAE,KAAK,EAAE,IAAI,CAAA;CAAE,GAAG;IAAE,GAAG,EAAE,MAAM,CAAA;CAAE,GAC9C,gBAAgB,CAAC,CAAC,EAAE,QAAQ,EAAE,GAAG,CAAC,GAClC,GAAG,GACP,GAAG,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"keys.js","sourceRoot":"","sources":["../../../src/query/keys.ts"],"names":[],"mappings":"","sourcesContent":["/**\n * Type-level scope-key resolution — the mirror of `resolveSingularKey` in\n * `shapeResult.ts`. Both derive from the same schema metadata, so the\n * TypeScript key and the runtime key always match.\n *\n * `ParentNS` is `null` for top-level scopes (the key is a namespace name) and\n * the parent's namespace name for nested scopes (the key is a link label).\n */\nimport type { IdbSchema } from '../schema/defineSchema.js'\nimport type { Singularize } from '../schema/singularize.js'\n\ntype DeclaredSingular<\n S extends IdbSchema,\n ParentNS extends string | null,\n Key extends string,\n> = ParentNS extends null\n ? Key extends keyof S['$dux']['namespaces']\n ? S['$dux']['namespaces'][Key]['singular']\n : undefined\n : ParentNS extends keyof S['$dux']['linkSingulars']\n ? Key extends keyof S['$dux']['linkSingulars'][ParentNS]\n ? S['$dux']['linkSingulars'][ParentNS][Key]\n : undefined\n : undefined\n\n/** The singular form of a scope key per the schema's `options.singularize`. */\nexport type SingularScopeKey<\n S extends IdbSchema,\n ParentNS extends string | null,\n Key extends string,\n> = S['$dux']['options']['singularize'] extends 'off'\n ? Key\n : DeclaredSingular<S, ParentNS, Key> extends infer Declared\n ? Declared extends string\n ? Declared\n : S['$dux']['options']['singularize'] extends 'explicit'\n ? Key\n : Singularize<Key>\n : never\n\n/** Whether a scope node coerces its array to a single entity. */\nexport type HasPick<Node> = Node extends { $: infer Dollar }\n ? Dollar extends { $only: true } | { $at: number }\n ? true\n : false\n : false\n\n/** The output key of a scope: `$as` wins, `$only`/`$at` singularize, else as-is. */\nexport type ResolvedScopeKey<\n S extends IdbSchema,\n ParentNS extends string | null,\n Key extends string,\n Node,\n> = Node extends { $: infer Dollar }\n ? Dollar extends { $as: infer As extends string }\n ? As\n : Dollar extends { $only: true } | { $at: number }\n ? SingularScopeKey<S, ParentNS, Key>\n : Key\n : Key\n"]}
|
|
1
|
+
{"version":3,"file":"keys.js","sourceRoot":"","sources":["../../../src/query/keys.ts"],"names":[],"mappings":"","sourcesContent":["/**\n * Type-level scope-key resolution — the mirror of `resolveSingularKey` in\n * `shapeResult.ts`. Both derive from the same schema metadata, so the\n * TypeScript key and the runtime key always match.\n *\n * `ParentNS` is `null` for top-level scopes (the key is a namespace name) and\n * the parent's namespace name for nested scopes (the key is a link label).\n */\nimport type { IdbSchema } from '../schema/defineSchema.js'\nimport type { Singularize } from '../schema/singularize.js'\n\ntype DeclaredSingular<\n S extends IdbSchema,\n ParentNS extends string | null,\n Key extends string,\n> = ParentNS extends null\n ? Key extends keyof S['$dux']['namespaces']\n ? S['$dux']['namespaces'][Key]['singular']\n : undefined\n : ParentNS extends keyof S['$dux']['linkSingulars']\n ? Key extends keyof S['$dux']['linkSingulars'][ParentNS]\n ? S['$dux']['linkSingulars'][ParentNS][Key]\n : undefined\n : undefined\n\n/** The singular form of a scope key per the schema's `options.singularize`. */\nexport type SingularScopeKey<\n S extends IdbSchema,\n ParentNS extends string | null,\n Key extends string,\n> = S['$dux']['options']['singularize'] extends 'off'\n ? Key\n : DeclaredSingular<S, ParentNS, Key> extends infer Declared\n ? Declared extends string\n ? Declared\n : S['$dux']['options']['singularize'] extends 'explicit'\n ? Key\n : Singularize<Key>\n : never\n\n/** Whether a scope node coerces its array to a single entity. */\nexport type HasPick<Node> = Node extends { $: infer Dollar }\n ? Dollar extends { $only: true } | { $at: number }\n ? true\n : false\n : false\n\n/**\n * The top-level keys a `/vue` client hook result owns. A query whose resolved\n * scope key — or top-level `$m` label — lands on one of these would clash with\n * the hook's own ref (`{ isLoading } = useQuery(...)`), so query validation\n * rejects it ([validation.ts], `QERR_RESULT_KEY_RESERVED`). The set is the\n * union across `useQuery`, `useInfiniteQuery`, and the result wrapper\n * (`.refs`/`.state`); the `/vue` result shapes are locked against it by a type\n * test so the two never drift.\n *\n * Nested keys never appear here: they live inside entity objects, where no\n * result field exists to collide with.\n */\nexport type ReservedResultKey\n = | 'isLoading'\n | 'error'\n | 'pageInfo'\n | 'refs'\n | 'state'\n | 'canLoadNextPage'\n | 'loadNextPage'\n\n/** The output key of a scope: `$as` wins, `$only`/`$at` singularize, else as-is. */\nexport type ResolvedScopeKey<\n S extends IdbSchema,\n ParentNS extends string | null,\n Key extends string,\n Node,\n> = Node extends { $: infer Dollar }\n ? Dollar extends { $as: infer As extends string }\n ? As\n : Dollar extends { $only: true } | { $at: number }\n ? SingularScopeKey<S, ParentNS, Key>\n : Key\n : Key\n"]}
|
|
@@ -40,23 +40,42 @@ type FieldWhereValue<A> = A extends DataAttrDef<infer V, infer R, infer I, any>
|
|
|
40
40
|
type IdAttr = DataAttrDef<string, false, true, true>;
|
|
41
41
|
/**
|
|
42
42
|
* The where shape: fields, `id`, link labels (matching the linked entity's
|
|
43
|
-
* id),
|
|
44
|
-
*
|
|
45
|
-
*
|
|
43
|
+
* id), linked dot-paths up to 3 hops, and `and`/`or`. `undefined` values
|
|
44
|
+
* (`$skip`) drop the clause.
|
|
45
|
+
*
|
|
46
|
+
* Completions are enumerated, not just validated: every dot-path the cursor
|
|
47
|
+
* could complete is a key here, so `where: { ⌶ }` suggests `memberships`,
|
|
48
|
+
* `memberships.user`, and `memberships.user.email` alike. The value type for
|
|
49
|
+
* each path is resolved by `WhereKeyAttr` (a link leaf matches the linked
|
|
50
|
+
* entity's id; a field leaf takes its own type).
|
|
46
51
|
*/
|
|
47
52
|
export type IdbWhereShape<S extends IdbSchema, NS extends string> = {
|
|
48
53
|
[F in FieldKeys<S, NS>]?: FieldWhereValue<AttrsOf<S, NS>[F]>;
|
|
49
54
|
} & {
|
|
50
55
|
[L in LinkLabels<S, NS>]?: FieldWhereValue<IdAttr>;
|
|
51
56
|
} & {
|
|
52
|
-
[P in
|
|
57
|
+
[P in WhereDotPaths<S, NS>]?: FieldWhereValue<WhereKeyAttr<S, NS, P>>;
|
|
53
58
|
} & {
|
|
54
59
|
id?: FieldWhereValue<IdAttr>;
|
|
55
60
|
and?: readonly IdbWhereShape<S, NS>[];
|
|
56
61
|
or?: readonly IdbWhereShape<S, NS>[];
|
|
57
62
|
};
|
|
58
|
-
|
|
59
|
-
|
|
63
|
+
/**
|
|
64
|
+
* A where leaf on a linked namespace: any field, any link label (a bare link
|
|
65
|
+
* filters on the linked id), or `id`. A link label as a leaf is what lets a
|
|
66
|
+
* dot-path stop on a relationship — e.g. `memberships.user`.
|
|
67
|
+
*/
|
|
68
|
+
type WhereLeaf<S extends IdbSchema, NS extends string> = FieldKeys<S, NS> | LinkLabels<S, NS> | 'id';
|
|
69
|
+
/**
|
|
70
|
+
* Linked dot-paths for `where`, hops 2 and 3 (hop 1 — fields, `id`, link
|
|
71
|
+
* labels — are direct keys on the shape above). Each non-terminal segment is
|
|
72
|
+
* a link label; the terminal is any `WhereLeaf`. Bounded at 3 hops by
|
|
73
|
+
* construction (the fixed depth policy — [dux-spec-root.md §3.3]).
|
|
74
|
+
*/
|
|
75
|
+
type WhereDotPaths<S extends IdbSchema, NS extends string> = {
|
|
76
|
+
[L1 in LinkLabels<S, NS>]: `${L1}.${WhereLeaf<S, LinkTarget<S, NS, L1>>}` | {
|
|
77
|
+
[L2 in LinkLabels<S, LinkTarget<S, NS, L1>>]: `${L1}.${L2}.${WhereLeaf<S, LinkTarget<S, LinkTarget<S, NS, L1>, L2>>}`;
|
|
78
|
+
}[LinkLabels<S, LinkTarget<S, NS, L1>>];
|
|
60
79
|
}[LinkLabels<S, NS>];
|
|
61
80
|
/** Resolve the attr def a where key addresses — fields, id, labels, dot-paths ≤ 3 hops. */
|
|
62
81
|
export type WhereKeyAttr<S extends IdbSchema, NS extends string, K extends string, D extends Depth = []> = K extends FieldKeys<S, NS> ? AttrsOf<S, NS>[K] : K extends 'id' ? IdAttr : K extends `${infer L}.${infer Rest}` ? L extends LinkLabels<S, NS> ? D['length'] extends MaxHops ? never : WhereKeyAttr<S, LinkTarget<S, NS, L>, Rest, NextHop<D>> : never : K extends LinkLabels<S, NS> ? IdAttr : never;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/query/types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/query/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/query/types.ts"],"names":[],"mappings":"","sourcesContent":["/**\n * The query-domain types: the authoring shape (`IdbQuery` and its node\n * types — also the completion source for `q`/`useQuery` literals), the\n * type-level shaping mirror (`IdbQueryData`, `IdbQueryEntity`), and the\n * renamed official types (`IdbQueryPageInfo`, `IdbQueryOptions`, …).\n */\nimport type {\n Cursor,\n DataAttrDef,\n PageInfoResponse,\n ResolveAttrs,\n} from '@instantdb/core'\nimport type { IdbSchema } from '../schema/defineSchema.js'\nimport type {\n AttrsOf,\n AttrValue,\n FieldKeys,\n IndexedFieldKeys,\n LinkCardinality,\n LinkLabels,\n LinkTarget,\n PrimitiveFieldKeys,\n UniqueFieldKeys,\n WireValue,\n} from '../schema/fields.js'\nimport type { IdbRegisteredSchema } from '../schema/register.js'\nimport type { IdbNamespaceName } from '../schema/types.js'\nimport type { Expand, UnionToIntersection } from '../schema/util.js'\nimport type { HasPick, ResolvedScopeKey } from './keys.js'\n\nexport type {\n FieldKeys,\n IndexedFieldKeys,\n LinkLabels,\n LinkTarget,\n UniqueFieldKeys,\n WireValue,\n} from '../schema/fields.js'\n\n// ==========\n// hop counting — validation and completions stop at 3 hops (matches core)\n\ntype Depth = readonly unknown[]\nexport type MaxHops = 3\nexport type NextHop<D extends Depth> = D['length'] extends MaxHops ? D : [...D, unknown]\n\n// ==========\n// where authoring\n\n/**\n * The operator object for one field. Every operator is present so the\n * completion list and the diagnostic are both intentional: operators the\n * field doesn't support are typed as the `QERR_*` message explaining why.\n */\nexport interface IdbWhereOps<V, _IsRequired, IsIndexed> {\n $in?: readonly WireValue<V>[]\n $not?: WireValue<V>\n $ne?: WireValue<V>\n $gt?: ComparableValue<V, IsIndexed, '$gt'>\n $lt?: ComparableValue<V, IsIndexed, '$lt'>\n $gte?: ComparableValue<V, IsIndexed, '$gte'>\n $lte?: ComparableValue<V, IsIndexed, '$lte'>\n $like?: StringPattern<V, IsIndexed, '$like'>\n $ilike?: StringPattern<V, IsIndexed, '$ilike'>\n $isNull?: boolean\n}\n\ntype ComparableValue<V, IsIndexed, Op extends string> = [V] extends [\n string | number | boolean | Date,\n]\n ? IsIndexed extends true\n ? WireValue<V>\n : `QERR_WHERE_OPERATOR_INVALID: Operator ${Op} is only available for indexed fields with a checked type.`\n : `QERR_WHERE_OPERATOR_INVALID: Operator ${Op} is only available for indexed fields with a checked type.`\n\ntype StringPattern<V, IsIndexed, Op extends string> = [V] extends [string]\n ? IsIndexed extends true\n ? string\n : `QERR_WHERE_OPERATOR_INVALID: Operator ${Op} is only available for indexed string fields.`\n : `QERR_WHERE_OPERATOR_INVALID: Operator ${Op} is only available for indexed string fields.`\n\ntype FieldWhereValue<A> = A extends DataAttrDef<infer V, infer R, infer I, any>\n ? WireValue<V> | IdbWhereOps<V, R, I> | undefined\n : never\n\ntype IdAttr = DataAttrDef<string, false, true, true>\n\n/**\n * The where shape: fields, `id`, link labels (matching the linked entity's\n * id), one enumerated hop of `label.field` dot-paths, and `and`/`or`.\n * Deeper dot-paths (up to 3 hops) are accepted via validation rather than\n * enumerated here. `undefined` values (`$skip`) drop the clause.\n */\nexport type IdbWhereShape<S extends IdbSchema, NS extends string> = {\n [F in FieldKeys<S, NS>]?: FieldWhereValue<AttrsOf<S, NS>[F]>\n} & {\n [L in LinkLabels<S, NS>]?: FieldWhereValue<IdAttr>\n} & {\n [P in DotPathsOneHop<S, NS>]?: FieldWhereValue<WhereKeyAttr<S, NS, P>>\n} & {\n id?: FieldWhereValue<IdAttr>\n and?: readonly IdbWhereShape<S, NS>[]\n or?: readonly IdbWhereShape<S, NS>[]\n}\n\ntype DotPathsOneHop<S extends IdbSchema, NS extends string> = {\n [L in LinkLabels<S, NS>]: `${L}.${FieldKeys<S, LinkTarget<S, NS, L>> | 'id'}`\n}[LinkLabels<S, NS>]\n\n/** Resolve the attr def a where key addresses — fields, id, labels, dot-paths ≤ 3 hops. */\nexport type WhereKeyAttr<\n S extends IdbSchema,\n NS extends string,\n K extends string,\n D extends Depth = [],\n> = K extends FieldKeys<S, NS>\n ? AttrsOf<S, NS>[K]\n : K extends 'id'\n ? IdAttr\n : K extends `${infer L}.${infer Rest}`\n ? L extends LinkLabels<S, NS>\n ? D['length'] extends MaxHops\n ? never\n : WhereKeyAttr<S, LinkTarget<S, NS, L>, Rest, NextHop<D>>\n : never\n : K extends LinkLabels<S, NS>\n ? IdAttr\n : never\n\n// ==========\n// order, fields, $m authoring\n\n/** Direct indexed fields and `serverCreatedAt` — ordering never traverses links. */\nexport type IdbOrderShape<S extends IdbSchema, NS extends string> = {\n [K in IndexedFieldKeys<S, NS> | 'serverCreatedAt']?: 'asc' | 'desc'\n}\n\n/** The `fields` array type for a namespace. */\nexport type IdbQueryFields<\n NS extends IdbNamespaceName<S>,\n S extends IdbSchema = IdbRegisteredSchema,\n> = (FieldKeys<S, NS> | 'id')[]\n\n/**\n * One `$m` transform:\n * - `indexBy` — a unique field (or `id`); yields `Record<string, Entity>`\n * - `groupBy` — a primitive field; yields `Record<string, Entity[]>`\n * - `at` — a position (negative from the end); yields `Entity | undefined`\n */\nexport type IdbMTransform<S extends IdbSchema, NS extends string>\n = | { indexBy: UniqueFieldKeys<S, NS> | 'id' }\n | { groupBy: PrimitiveFieldKeys<S, NS> }\n | { at: number }\n\nexport type IdbMBlock<S extends IdbSchema, NS extends string> = Record<\n string,\n IdbMTransform<S, NS>\n>\n\n// ==========\n// the authoring shape\n\ninterface IdbDuxDollarKeys {\n /** Coerce this scope to `Entity | undefined` and singularize its key. */\n $only?: true\n /** Pick the element at this position (negative from the end); singularizes the key. */\n $at?: number\n /** Rename this scope's result key explicitly — always wins. */\n $as?: string\n}\n\ninterface IdbPaginationKeys {\n last?: number\n first?: number\n offset?: number\n after?: Cursor\n afterInclusive?: boolean\n before?: Cursor\n beforeInclusive?: boolean\n}\n\nexport type IdbDollar<\n S extends IdbSchema,\n NS extends string,\n TopLevel extends boolean,\n> = {\n where?: IdbWhereShape<S, NS>\n order?: IdbOrderShape<S, NS>\n fields?: readonly (FieldKeys<S, NS> | 'id')[]\n limit?: number\n} & IdbDuxDollarKeys\n& (TopLevel extends true ? IdbPaginationKeys : {})\n\n/** One scope of a query: `$`, `$m`, and nested link labels (3 hops, then open). */\nexport type IdbQueryNode<\n S extends IdbSchema,\n NS extends string,\n D extends Depth = [],\n TopLevel extends boolean = false,\n> = D['length'] extends MaxHops\n ? Record<string, any>\n : {\n $?: IdbDollar<S, NS, TopLevel>\n $m?: IdbMBlock<S, NS>\n } & {\n [L in LinkLabels<S, NS>]?: IdbQueryNode<S, LinkTarget<S, NS, L>, NextHop<D>>\n }\n\n/**\n * The valid-query-object type — handy for function params. Authoring\n * completions for `q`/`useQuery` literals come from this shape; per-call\n * validation is `IdbValidQuery` (`validation.ts`).\n */\nexport type IdbQuery<S extends IdbSchema = IdbRegisteredSchema> = {\n [NS in IdbNamespaceName<S>]?: IdbQueryNode<S, NS, [], true>\n}\n\n/** The subquery shape for one namespace — what `IdbQueryEntity` accepts. */\nexport type IdbQuerySubquery<\n NS extends IdbNamespaceName<S>,\n S extends IdbSchema = IdbRegisteredSchema,\n> = IdbQueryNode<S, NS>\n\n// ==========\n// the shaping mirror — must agree with shapeResult.ts by construction\n\ntype EntityFields<S extends IdbSchema, NS extends string, Node> = Node extends {\n $: { fields: infer F extends readonly string[] }\n}\n ? Pick<\n ResolveAttrs<S['entities'], NS, false>,\n Exclude<F[number], 'id'> & keyof ResolveAttrs<S['entities'], NS, false>\n >\n : ResolveAttrs<S['entities'], NS, false>\n\ntype ChildKeys<Node> = Exclude<keyof Node & string, '$' | '$m'>\n\ntype ShapedChildren<S extends IdbSchema, NS extends string, Node> = {\n [L in ChildKeys<Node> as L extends LinkLabels<S, NS>\n ? ResolvedScopeKey<S, NS, L, Node[L]>\n : never]: L extends LinkLabels<S, NS> ? ChildData<S, NS, L, Node[L]> : never\n}\n\ntype ChildData<\n S extends IdbSchema,\n NS extends string,\n L extends LinkLabels<S, NS>,\n Node,\n> = HasPick<Node> extends true\n ? ShapedEntity<S, LinkTarget<S, NS, L>, Node> | undefined\n : LinkCardinality<S, NS, L> extends 'one'\n ? ShapedEntity<S, LinkTarget<S, NS, L>, Node> | undefined\n : ShapedEntity<S, LinkTarget<S, NS, L>, Node>[]\n\ntype MValue<T, E> = T extends { indexBy: any }\n ? Record<string, E>\n : T extends { groupBy: any }\n ? Record<string, E[]>\n : T extends { at: number }\n ? E | undefined\n : never\n\n/** The `$m` sibling keys a scope contributes beside its own result key. */\ntype MSiblings<S extends IdbSchema, NS extends string, Node> = Node extends {\n $m: infer M\n}\n ? { -readonly [Label in keyof M]: MValue<M[Label], ShapedEntity<S, NS, Node>> }\n : {}\n\ntype ChildrenMSiblings<S extends IdbSchema, NS extends string, Node> = [\n ChildKeys<Node>,\n] extends [never]\n ? {}\n : UnionToIntersection<\n {\n [L in ChildKeys<Node>]: L extends LinkLabels<S, NS>\n ? MSiblings<S, LinkTarget<S, NS, L>, Node[L]>\n : {}\n }[ChildKeys<Node>]\n >\n\ntype ShapedEntity<S extends IdbSchema, NS extends string, Node> = Expand<\n { id: string } & EntityFields<S, NS, Node>\n & ShapedChildren<S, NS, Node>\n & ChildrenMSiblings<S, NS, Node>\n>\n\n/**\n * An entity shaped by query syntax — `$` and `$m` fully supported, including\n * `$: { fields }`.\n */\nexport type IdbQueryEntity<\n NS extends IdbNamespaceName<S>,\n Subquery = {},\n S extends IdbSchema = IdbRegisteredSchema,\n> = ShapedEntity<S, NS, Subquery>\n\ntype TopScopeData<S extends IdbSchema, NS extends string, Node>\n = HasPick<Node> extends true\n ? ShapedEntity<S, NS, Node> | undefined\n : ShapedEntity<S, NS, Node>[]\n\ntype TopMSiblings<Q, S extends IdbSchema> = [keyof Q] extends [never]\n ? {}\n : UnionToIntersection<\n {\n [K in keyof Q & string]: K extends IdbNamespaceName<S>\n ? MSiblings<S, K, Q[K]>\n : {}\n }[keyof Q & string]\n >\n\n/**\n * The shaped data for a query — the exact shape `useQuery`, `queryOnce`, and\n * `adminDb.query` deliver: normalized arrays, `$only`/`$at` coercion,\n * singularized/`$as` keys, `$m` siblings.\n */\nexport type IdbQueryData<Q, S extends IdbSchema = IdbRegisteredSchema> = Expand<\n {\n [K in keyof Q & string as K extends IdbNamespaceName<S>\n ? ResolvedScopeKey<S, null, K, Q[K]>\n : never]: K extends IdbNamespaceName<S> ? TopScopeData<S, K, Q[K]> : never\n } & TopMSiblings<Q, S>\n>\n\n// ==========\n// options + pageInfo\n\ntype NamespaceRuleParams<RP> = RP extends Record<string, DataAttrDef<any, any, any, any>>\n ? { [K in keyof RP]?: AttrValue<RP[K]> }\n : {}\n\n/**\n * Every rule param declared in the schema, merged and optional — the\n * query-level companion to the per-namespace tx typing.\n */\nexport type IdbSchemaRuleParams<S extends IdbSchema = IdbRegisteredSchema> = Expand<\n UnionToIntersection<\n {\n [NS in keyof S['$dux']['namespaces']]: NamespaceRuleParams<\n S['$dux']['namespaces'][NS]['ruleParams']\n >\n }[keyof S['$dux']['namespaces']]\n >\n>\n\n/** Per-call query options — `ruleParams` typed from the schema. */\nexport interface IdbQueryOptions<S extends IdbSchema = IdbRegisteredSchema> {\n ruleParams: IdbSchemaRuleParams<S>\n}\n\n/** Pagination cursors, keyed by the query's top-level namespace keys. */\nexport type IdbQueryPageInfo<Q = Record<string, unknown>> = PageInfoResponse<Q>\n"]}
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/query/types.ts"],"names":[],"mappings":"","sourcesContent":["/**\n * The query-domain types: the authoring shape (`IdbQuery` and its node\n * types — also the completion source for `q`/`useQuery` literals), the\n * type-level shaping mirror (`IdbQueryData`, `IdbQueryEntity`), and the\n * renamed official types (`IdbQueryPageInfo`, `IdbQueryOptions`, …).\n */\nimport type {\n Cursor,\n DataAttrDef,\n PageInfoResponse,\n ResolveAttrs,\n} from '@instantdb/core'\nimport type { IdbSchema } from '../schema/defineSchema.js'\nimport type {\n AttrsOf,\n AttrValue,\n FieldKeys,\n IndexedFieldKeys,\n LinkCardinality,\n LinkLabels,\n LinkTarget,\n PrimitiveFieldKeys,\n UniqueFieldKeys,\n WireValue,\n} from '../schema/fields.js'\nimport type { IdbRegisteredSchema } from '../schema/register.js'\nimport type { IdbNamespaceName } from '../schema/types.js'\nimport type { Expand, UnionToIntersection } from '../schema/util.js'\nimport type { HasPick, ResolvedScopeKey } from './keys.js'\n\nexport type {\n FieldKeys,\n IndexedFieldKeys,\n LinkLabels,\n LinkTarget,\n UniqueFieldKeys,\n WireValue,\n} from '../schema/fields.js'\n\n// ==========\n// hop counting — validation and completions stop at 3 hops (matches core)\n\ntype Depth = readonly unknown[]\nexport type MaxHops = 3\nexport type NextHop<D extends Depth> = D['length'] extends MaxHops ? D : [...D, unknown]\n\n// ==========\n// where authoring\n\n/**\n * The operator object for one field. Every operator is present so the\n * completion list and the diagnostic are both intentional: operators the\n * field doesn't support are typed as the `QERR_*` message explaining why.\n */\nexport interface IdbWhereOps<V, _IsRequired, IsIndexed> {\n $in?: readonly WireValue<V>[]\n $not?: WireValue<V>\n $ne?: WireValue<V>\n $gt?: ComparableValue<V, IsIndexed, '$gt'>\n $lt?: ComparableValue<V, IsIndexed, '$lt'>\n $gte?: ComparableValue<V, IsIndexed, '$gte'>\n $lte?: ComparableValue<V, IsIndexed, '$lte'>\n $like?: StringPattern<V, IsIndexed, '$like'>\n $ilike?: StringPattern<V, IsIndexed, '$ilike'>\n $isNull?: boolean\n}\n\ntype ComparableValue<V, IsIndexed, Op extends string> = [V] extends [\n string | number | boolean | Date,\n]\n ? IsIndexed extends true\n ? WireValue<V>\n : `QERR_WHERE_OPERATOR_INVALID: Operator ${Op} is only available for indexed fields with a checked type.`\n : `QERR_WHERE_OPERATOR_INVALID: Operator ${Op} is only available for indexed fields with a checked type.`\n\ntype StringPattern<V, IsIndexed, Op extends string> = [V] extends [string]\n ? IsIndexed extends true\n ? string\n : `QERR_WHERE_OPERATOR_INVALID: Operator ${Op} is only available for indexed string fields.`\n : `QERR_WHERE_OPERATOR_INVALID: Operator ${Op} is only available for indexed string fields.`\n\ntype FieldWhereValue<A> = A extends DataAttrDef<infer V, infer R, infer I, any>\n ? WireValue<V> | IdbWhereOps<V, R, I> | undefined\n : never\n\ntype IdAttr = DataAttrDef<string, false, true, true>\n\n/**\n * The where shape: fields, `id`, link labels (matching the linked entity's\n * id), linked dot-paths up to 3 hops, and `and`/`or`. `undefined` values\n * (`$skip`) drop the clause.\n *\n * Completions are enumerated, not just validated: every dot-path the cursor\n * could complete is a key here, so `where: { ⌶ }` suggests `memberships`,\n * `memberships.user`, and `memberships.user.email` alike. The value type for\n * each path is resolved by `WhereKeyAttr` (a link leaf matches the linked\n * entity's id; a field leaf takes its own type).\n */\nexport type IdbWhereShape<S extends IdbSchema, NS extends string> = {\n [F in FieldKeys<S, NS>]?: FieldWhereValue<AttrsOf<S, NS>[F]>\n} & {\n [L in LinkLabels<S, NS>]?: FieldWhereValue<IdAttr>\n} & {\n [P in WhereDotPaths<S, NS>]?: FieldWhereValue<WhereKeyAttr<S, NS, P>>\n} & {\n id?: FieldWhereValue<IdAttr>\n and?: readonly IdbWhereShape<S, NS>[]\n or?: readonly IdbWhereShape<S, NS>[]\n}\n\n/**\n * A where leaf on a linked namespace: any field, any link label (a bare link\n * filters on the linked id), or `id`. A link label as a leaf is what lets a\n * dot-path stop on a relationship — e.g. `memberships.user`.\n */\ntype WhereLeaf<S extends IdbSchema, NS extends string>\n = FieldKeys<S, NS> | LinkLabels<S, NS> | 'id'\n\n/**\n * Linked dot-paths for `where`, hops 2 and 3 (hop 1 — fields, `id`, link\n * labels — are direct keys on the shape above). Each non-terminal segment is\n * a link label; the terminal is any `WhereLeaf`. Bounded at 3 hops by\n * construction (the fixed depth policy — [dux-spec-root.md §3.3]).\n */\ntype WhereDotPaths<S extends IdbSchema, NS extends string> = {\n [L1 in LinkLabels<S, NS>]:\n | `${L1}.${WhereLeaf<S, LinkTarget<S, NS, L1>>}`\n | {\n [L2 in LinkLabels<S, LinkTarget<S, NS, L1>>]: `${L1}.${L2}.${WhereLeaf<\n S,\n LinkTarget<S, LinkTarget<S, NS, L1>, L2>\n >}`\n }[LinkLabels<S, LinkTarget<S, NS, L1>>]\n}[LinkLabels<S, NS>]\n\n/** Resolve the attr def a where key addresses — fields, id, labels, dot-paths ≤ 3 hops. */\nexport type WhereKeyAttr<\n S extends IdbSchema,\n NS extends string,\n K extends string,\n D extends Depth = [],\n> = K extends FieldKeys<S, NS>\n ? AttrsOf<S, NS>[K]\n : K extends 'id'\n ? IdAttr\n : K extends `${infer L}.${infer Rest}`\n ? L extends LinkLabels<S, NS>\n ? D['length'] extends MaxHops\n ? never\n : WhereKeyAttr<S, LinkTarget<S, NS, L>, Rest, NextHop<D>>\n : never\n : K extends LinkLabels<S, NS>\n ? IdAttr\n : never\n\n// ==========\n// order, fields, $m authoring\n\n/** Direct indexed fields and `serverCreatedAt` — ordering never traverses links. */\nexport type IdbOrderShape<S extends IdbSchema, NS extends string> = {\n [K in IndexedFieldKeys<S, NS> | 'serverCreatedAt']?: 'asc' | 'desc'\n}\n\n/** The `fields` array type for a namespace. */\nexport type IdbQueryFields<\n NS extends IdbNamespaceName<S>,\n S extends IdbSchema = IdbRegisteredSchema,\n> = (FieldKeys<S, NS> | 'id')[]\n\n/**\n * One `$m` transform:\n * - `indexBy` — a unique field (or `id`); yields `Record<string, Entity>`\n * - `groupBy` — a primitive field; yields `Record<string, Entity[]>`\n * - `at` — a position (negative from the end); yields `Entity | undefined`\n */\nexport type IdbMTransform<S extends IdbSchema, NS extends string>\n = | { indexBy: UniqueFieldKeys<S, NS> | 'id' }\n | { groupBy: PrimitiveFieldKeys<S, NS> }\n | { at: number }\n\nexport type IdbMBlock<S extends IdbSchema, NS extends string> = Record<\n string,\n IdbMTransform<S, NS>\n>\n\n// ==========\n// the authoring shape\n\ninterface IdbDuxDollarKeys {\n /** Coerce this scope to `Entity | undefined` and singularize its key. */\n $only?: true\n /** Pick the element at this position (negative from the end); singularizes the key. */\n $at?: number\n /** Rename this scope's result key explicitly — always wins. */\n $as?: string\n}\n\ninterface IdbPaginationKeys {\n last?: number\n first?: number\n offset?: number\n after?: Cursor\n afterInclusive?: boolean\n before?: Cursor\n beforeInclusive?: boolean\n}\n\nexport type IdbDollar<\n S extends IdbSchema,\n NS extends string,\n TopLevel extends boolean,\n> = {\n where?: IdbWhereShape<S, NS>\n order?: IdbOrderShape<S, NS>\n fields?: readonly (FieldKeys<S, NS> | 'id')[]\n limit?: number\n} & IdbDuxDollarKeys\n& (TopLevel extends true ? IdbPaginationKeys : {})\n\n/** One scope of a query: `$`, `$m`, and nested link labels (3 hops, then open). */\nexport type IdbQueryNode<\n S extends IdbSchema,\n NS extends string,\n D extends Depth = [],\n TopLevel extends boolean = false,\n> = D['length'] extends MaxHops\n ? Record<string, any>\n : {\n $?: IdbDollar<S, NS, TopLevel>\n $m?: IdbMBlock<S, NS>\n } & {\n [L in LinkLabels<S, NS>]?: IdbQueryNode<S, LinkTarget<S, NS, L>, NextHop<D>>\n }\n\n/**\n * The valid-query-object type — handy for function params. Authoring\n * completions for `q`/`useQuery` literals come from this shape; per-call\n * validation is `IdbValidQuery` (`validation.ts`).\n */\nexport type IdbQuery<S extends IdbSchema = IdbRegisteredSchema> = {\n [NS in IdbNamespaceName<S>]?: IdbQueryNode<S, NS, [], true>\n}\n\n/** The subquery shape for one namespace — what `IdbQueryEntity` accepts. */\nexport type IdbQuerySubquery<\n NS extends IdbNamespaceName<S>,\n S extends IdbSchema = IdbRegisteredSchema,\n> = IdbQueryNode<S, NS>\n\n// ==========\n// the shaping mirror — must agree with shapeResult.ts by construction\n\ntype EntityFields<S extends IdbSchema, NS extends string, Node> = Node extends {\n $: { fields: infer F extends readonly string[] }\n}\n ? Pick<\n ResolveAttrs<S['entities'], NS, false>,\n Exclude<F[number], 'id'> & keyof ResolveAttrs<S['entities'], NS, false>\n >\n : ResolveAttrs<S['entities'], NS, false>\n\ntype ChildKeys<Node> = Exclude<keyof Node & string, '$' | '$m'>\n\ntype ShapedChildren<S extends IdbSchema, NS extends string, Node> = {\n [L in ChildKeys<Node> as L extends LinkLabels<S, NS>\n ? ResolvedScopeKey<S, NS, L, Node[L]>\n : never]: L extends LinkLabels<S, NS> ? ChildData<S, NS, L, Node[L]> : never\n}\n\ntype ChildData<\n S extends IdbSchema,\n NS extends string,\n L extends LinkLabels<S, NS>,\n Node,\n> = HasPick<Node> extends true\n ? ShapedEntity<S, LinkTarget<S, NS, L>, Node> | undefined\n : LinkCardinality<S, NS, L> extends 'one'\n ? ShapedEntity<S, LinkTarget<S, NS, L>, Node> | undefined\n : ShapedEntity<S, LinkTarget<S, NS, L>, Node>[]\n\ntype MValue<T, E> = T extends { indexBy: any }\n ? Record<string, E>\n : T extends { groupBy: any }\n ? Record<string, E[]>\n : T extends { at: number }\n ? E | undefined\n : never\n\n/** The `$m` sibling keys a scope contributes beside its own result key. */\ntype MSiblings<S extends IdbSchema, NS extends string, Node> = Node extends {\n $m: infer M\n}\n ? { -readonly [Label in keyof M]: MValue<M[Label], ShapedEntity<S, NS, Node>> }\n : {}\n\ntype ChildrenMSiblings<S extends IdbSchema, NS extends string, Node> = [\n ChildKeys<Node>,\n] extends [never]\n ? {}\n : UnionToIntersection<\n {\n [L in ChildKeys<Node>]: L extends LinkLabels<S, NS>\n ? MSiblings<S, LinkTarget<S, NS, L>, Node[L]>\n : {}\n }[ChildKeys<Node>]\n >\n\ntype ShapedEntity<S extends IdbSchema, NS extends string, Node> = Expand<\n { id: string } & EntityFields<S, NS, Node>\n & ShapedChildren<S, NS, Node>\n & ChildrenMSiblings<S, NS, Node>\n>\n\n/**\n * An entity shaped by query syntax — `$` and `$m` fully supported, including\n * `$: { fields }`.\n */\nexport type IdbQueryEntity<\n NS extends IdbNamespaceName<S>,\n Subquery = {},\n S extends IdbSchema = IdbRegisteredSchema,\n> = ShapedEntity<S, NS, Subquery>\n\ntype TopScopeData<S extends IdbSchema, NS extends string, Node>\n = HasPick<Node> extends true\n ? ShapedEntity<S, NS, Node> | undefined\n : ShapedEntity<S, NS, Node>[]\n\ntype TopMSiblings<Q, S extends IdbSchema> = [keyof Q] extends [never]\n ? {}\n : UnionToIntersection<\n {\n [K in keyof Q & string]: K extends IdbNamespaceName<S>\n ? MSiblings<S, K, Q[K]>\n : {}\n }[keyof Q & string]\n >\n\n/**\n * The shaped data for a query — the exact shape `useQuery`, `queryOnce`, and\n * `adminDb.query` deliver: normalized arrays, `$only`/`$at` coercion,\n * singularized/`$as` keys, `$m` siblings.\n */\nexport type IdbQueryData<Q, S extends IdbSchema = IdbRegisteredSchema> = Expand<\n {\n [K in keyof Q & string as K extends IdbNamespaceName<S>\n ? ResolvedScopeKey<S, null, K, Q[K]>\n : never]: K extends IdbNamespaceName<S> ? TopScopeData<S, K, Q[K]> : never\n } & TopMSiblings<Q, S>\n>\n\n// ==========\n// options + pageInfo\n\ntype NamespaceRuleParams<RP> = RP extends Record<string, DataAttrDef<any, any, any, any>>\n ? { [K in keyof RP]?: AttrValue<RP[K]> }\n : {}\n\n/**\n * Every rule param declared in the schema, merged and optional — the\n * query-level companion to the per-namespace tx typing.\n */\nexport type IdbSchemaRuleParams<S extends IdbSchema = IdbRegisteredSchema> = Expand<\n UnionToIntersection<\n {\n [NS in keyof S['$dux']['namespaces']]: NamespaceRuleParams<\n S['$dux']['namespaces'][NS]['ruleParams']\n >\n }[keyof S['$dux']['namespaces']]\n >\n>\n\n/** Per-call query options — `ruleParams` typed from the schema. */\nexport interface IdbQueryOptions<S extends IdbSchema = IdbRegisteredSchema> {\n ruleParams: IdbSchemaRuleParams<S>\n}\n\n/** Pagination cursors, keyed by the query's top-level namespace keys. */\nexport type IdbQueryPageInfo<Q = Record<string, unknown>> = PageInfoResponse<Q>\n"]}
|
|
@@ -16,13 +16,13 @@
|
|
|
16
16
|
* The `QERR_*` codes: ROOT_KEY_UNKNOWN, NESTED_KEY_UNKNOWN, OPTION_UNKNOWN,
|
|
17
17
|
* OPTION_TOP_LEVEL_ONLY, WHERE_KEY_UNKNOWN, WHERE_VALUE_TYPE,
|
|
18
18
|
* WHERE_OPERATOR_INVALID (lives in the ops shape, `types.ts`),
|
|
19
|
-
* ORDER_KEY_INVALID,
|
|
20
|
-
* M_INDEXBY_NOT_UNIQUE, M_GROUPBY_NOT_PRIMITIVE.
|
|
19
|
+
* ORDER_KEY_INVALID, RESULT_KEY_RESERVED, M_LABEL_COLLISION,
|
|
20
|
+
* M_TRANSFORM_UNKNOWN, M_INDEXBY_NOT_UNIQUE, M_GROUPBY_NOT_PRIMITIVE.
|
|
21
21
|
*/
|
|
22
22
|
import type { DataAttrDef } from '@instantdb/core';
|
|
23
23
|
import type { IdbSchema } from '../schema/defineSchema.js';
|
|
24
24
|
import type { IdbNamespaceName } from '../schema/types.js';
|
|
25
|
-
import type { ResolvedScopeKey } from './keys.js';
|
|
25
|
+
import type { ReservedResultKey, ResolvedScopeKey } from './keys.js';
|
|
26
26
|
import type { FieldKeys, IdbQuery, IndexedFieldKeys, LinkLabels, LinkTarget, MaxHops, NextHop, UniqueFieldKeys, WhereKeyAttr, WireValue } from './types.js';
|
|
27
27
|
type Depth = readonly unknown[];
|
|
28
28
|
type TypeName<V> = V extends string ? 'string' : V extends number ? 'number' : V extends boolean ? 'boolean' : V extends Date ? 'date' : 'json';
|
|
@@ -50,12 +50,16 @@ type ValidMTransform<T, S extends IdbSchema, NS extends string> = T extends obje
|
|
|
50
50
|
type ValidNode<Node, S extends IdbSchema, NS extends string, ParentNS extends string | null, Key extends string, D extends Depth, TopLevel extends boolean> = Node extends object ? {
|
|
51
51
|
[K in keyof Node & string]: K extends '$' ? ValidDollar<Node[K], S, NS, TopLevel> : K extends '$m' ? ValidM<Node[K], S, NS, ResolvedScopeKey<S, ParentNS, Key, Node>> : K extends LinkLabels<S, NS> ? ValidNode<Node[K], S, LinkTarget<S, NS, K>, NS, K, NextHop<D>, false> : D['length'] extends MaxHops ? unknown : `QERR_QUERY_NESTED_KEY_UNKNOWN: ${K} is not a valid nested key on ${NS}`;
|
|
52
52
|
} : unknown;
|
|
53
|
+
type TopMLabels<Node> = Node extends {
|
|
54
|
+
$m: infer M;
|
|
55
|
+
} ? keyof M & string : never;
|
|
56
|
+
type ReservedScopeMsg<S extends IdbSchema, Key extends string, Node> = ResolvedScopeKey<S, null, Key, Node> extends ReservedResultKey ? `QERR_RESULT_KEY_RESERVED: result key '${ResolvedScopeKey<S, null, Key, Node> & string}' is reserved — it clashes with a hook result field; rename this scope` : [Extract<TopMLabels<Node>, ReservedResultKey>] extends [never] ? false : `QERR_RESULT_KEY_RESERVED: $m label '${Extract<TopMLabels<Node>, ReservedResultKey>}' is reserved — it clashes with a hook result field; choose another label`;
|
|
53
57
|
/**
|
|
54
58
|
* The per-call validating type. Use as a self-referential constraint:
|
|
55
59
|
* `<Q extends IdbValidQuery<Q, S>>(query: Q)`.
|
|
56
60
|
*/
|
|
57
61
|
export type IdbValidQuery<Q, S extends IdbSchema> = IdbQuery<S> & {
|
|
58
|
-
[K in keyof Q & string]: K extends IdbNamespaceName<S> ? ValidNode<Q[K], S, K, null, K, [], true> : `QERR_QUERY_ROOT_KEY_UNKNOWN: ${K} is not a valid top-level namespace`;
|
|
62
|
+
[K in keyof Q & string]: K extends IdbNamespaceName<S> ? ReservedScopeMsg<S, K, Q[K]> extends infer Msg extends string ? Msg : ValidNode<Q[K], S, K, null, K, [], true> : `QERR_QUERY_ROOT_KEY_UNKNOWN: ${K} is not a valid top-level namespace`;
|
|
59
63
|
};
|
|
60
64
|
export {};
|
|
61
65
|
//# sourceMappingURL=validation.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../../src/query/validation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAClD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAA;AAC1D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AAC1D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAA;
|
|
1
|
+
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../../src/query/validation.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../../../src/query/validation.ts"],"names":[],"mappings":"","sourcesContent":["/**\n * The one validation surface — applied by `q`, `defineQuery`, and every\n * query-accepting API on `/vue` and `/admin`.\n *\n * `IdbValidQuery<Q, S>` is an intersection of two arms:\n *\n * 1. the input-independent authoring shape (`IdbQuery<S>`, `types.ts`) —\n * completions and structural/value checking;\n * 2. an input-mapped arm that re-walks the *user's* keys and types each\n * violation as a `QERR_*` message string, so the error lands on the\n * offending key and carries an actionable, stable-coded message.\n *\n * Valid positions in arm 2 resolve to `unknown` (the intersection identity),\n * so it adds nothing where the query is fine.\n *\n * The `QERR_*` codes: ROOT_KEY_UNKNOWN, NESTED_KEY_UNKNOWN, OPTION_UNKNOWN,\n * OPTION_TOP_LEVEL_ONLY, WHERE_KEY_UNKNOWN, WHERE_VALUE_TYPE,\n * WHERE_OPERATOR_INVALID (lives in the ops shape, `types.ts`),\n * ORDER_KEY_INVALID,
|
|
1
|
+
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../../../src/query/validation.ts"],"names":[],"mappings":"","sourcesContent":["/**\n * The one validation surface — applied by `q`, `defineQuery`, and every\n * query-accepting API on `/vue` and `/admin`.\n *\n * `IdbValidQuery<Q, S>` is an intersection of two arms:\n *\n * 1. the input-independent authoring shape (`IdbQuery<S>`, `types.ts`) —\n * completions and structural/value checking;\n * 2. an input-mapped arm that re-walks the *user's* keys and types each\n * violation as a `QERR_*` message string, so the error lands on the\n * offending key and carries an actionable, stable-coded message.\n *\n * Valid positions in arm 2 resolve to `unknown` (the intersection identity),\n * so it adds nothing where the query is fine.\n *\n * The `QERR_*` codes: ROOT_KEY_UNKNOWN, NESTED_KEY_UNKNOWN, OPTION_UNKNOWN,\n * OPTION_TOP_LEVEL_ONLY, WHERE_KEY_UNKNOWN, WHERE_VALUE_TYPE,\n * WHERE_OPERATOR_INVALID (lives in the ops shape, `types.ts`),\n * ORDER_KEY_INVALID, RESULT_KEY_RESERVED, M_LABEL_COLLISION,\n * M_TRANSFORM_UNKNOWN, M_INDEXBY_NOT_UNIQUE, M_GROUPBY_NOT_PRIMITIVE.\n */\nimport type { DataAttrDef } from '@instantdb/core'\nimport type { IdbSchema } from '../schema/defineSchema.js'\nimport type { IdbNamespaceName } from '../schema/types.js'\nimport type { ReservedResultKey, ResolvedScopeKey } from './keys.js'\nimport type {\n FieldKeys,\n IdbQuery,\n IndexedFieldKeys,\n LinkLabels,\n LinkTarget,\n MaxHops,\n NextHop,\n UniqueFieldKeys,\n WhereKeyAttr,\n WireValue,\n} from './types.js'\n\ntype Depth = readonly unknown[]\n\ntype TypeName<V> = V extends string\n ? 'string'\n : V extends number\n ? 'number'\n : V extends boolean\n ? 'boolean'\n : V extends Date\n ? 'date'\n : 'json'\n\n// ==========\n// $ validation\n\ntype SharedDollarKeys = 'where' | 'order' | 'fields' | 'limit' | '$only' | '$at' | '$as'\ntype PaginationKeys\n = | 'last'\n | 'first'\n | 'offset'\n | 'after'\n | 'afterInclusive'\n | 'before'\n | 'beforeInclusive'\n\ntype ValidDollar<\n Dollar,\n S extends IdbSchema,\n NS extends string,\n TopLevel extends boolean,\n> = Dollar extends object\n ? {\n [K in keyof Dollar & string]: K extends 'where'\n ? ValidWhere<Dollar[K], S, NS>\n : K extends 'order'\n ? ValidOrder<Dollar[K], S, NS>\n : K extends SharedDollarKeys\n ? unknown\n : K extends PaginationKeys\n ? TopLevel extends true\n ? unknown\n : `QERR_QUERY_OPTION_TOP_LEVEL_ONLY: ${K} is only available on top-level scopes`\n : `QERR_QUERY_OPTION_UNKNOWN: ${K} is not a valid query option`\n }\n : unknown\n\n// ==========\n// where validation\n\ntype ValidWhere<W, S extends IdbSchema, NS extends string> = W extends object\n ? {\n [K in keyof W & string]: K extends 'and' | 'or'\n ? ValidWhereList<W[K], S, NS>\n : [WhereKeyAttr<S, NS, K>] extends [never]\n ? `QERR_WHERE_KEY_UNKNOWN: ${K} is not a valid where key on ${NS}`\n : WhereKeyAttr<S, NS, K> extends DataAttrDef<infer V, any, any, any>\n ? ValidWhereValue<W[K], V, K>\n : `QERR_WHERE_KEY_UNKNOWN: ${K} is not a valid where key on ${NS}`\n }\n : unknown\n\ntype ValidWhereList<L, S extends IdbSchema, NS extends string> = L extends readonly any[]\n ? { [I in keyof L]: ValidWhere<L[I], S, NS> }\n : unknown\n\ntype ValidWhereValue<Input, V, K extends string> = Input extends undefined\n ? unknown // $skip — the clause is dropped\n : Input extends WireValue<V>\n ? unknown\n : Input extends object\n ? unknown // operator objects are validated by the authoring shape\n : `QERR_WHERE_VALUE_TYPE: Type '${TypeName<Input>}' is not assignable to field '${K}' of type ${TypeName<V>}`\n\n// ==========\n// order validation\n\ntype ValidOrder<O, S extends IdbSchema, NS extends string> = O extends object\n ? {\n [K in keyof O & string]: K extends IndexedFieldKeys<S, NS> | 'serverCreatedAt'\n ? unknown\n : `QERR_ORDER_KEY_INVALID: ${K} is not orderable — order accepts indexed fields and serverCreatedAt`\n }\n : unknown\n\n// ==========\n// $m validation\n\ntype ValidM<\n M,\n S extends IdbSchema,\n NS extends string,\n OwnKey extends string,\n> = M extends object\n ? {\n [Label in keyof M & string]: Label extends OwnKey\n ? `QERR_M_LABEL_COLLISION: ${Label} collides with the scope's own result key`\n : ValidMTransform<M[Label], S, NS>\n }\n : unknown\n\ntype ValidMTransform<T, S extends IdbSchema, NS extends string> = T extends object\n ? {\n [K in keyof T & string]: K extends 'indexBy'\n ? T[K] extends UniqueFieldKeys<S, NS> | 'id'\n ? unknown\n : `QERR_M_INDEXBY_NOT_UNIQUE: indexBy requires a unique field on ${NS}`\n : K extends 'groupBy'\n ? T[K] extends FieldKeys<S, NS>\n ? unknown\n : `QERR_M_GROUPBY_NOT_PRIMITIVE: groupBy requires a string, number, or boolean field on ${NS}`\n : K extends 'at'\n ? unknown\n : `QERR_M_TRANSFORM_UNKNOWN: ${K} is not a valid $m transform — use indexBy, groupBy, or at`\n }\n : unknown\n\n// ==========\n// node + query validation\n\ntype ValidNode<\n Node,\n S extends IdbSchema,\n NS extends string,\n ParentNS extends string | null,\n Key extends string,\n D extends Depth,\n TopLevel extends boolean,\n> = Node extends object\n ? {\n [K in keyof Node & string]: K extends '$'\n ? ValidDollar<Node[K], S, NS, TopLevel>\n : K extends '$m'\n ? ValidM<Node[K], S, NS, ResolvedScopeKey<S, ParentNS, Key, Node>>\n : K extends LinkLabels<S, NS>\n ? ValidNode<Node[K], S, LinkTarget<S, NS, K>, NS, K, NextHop<D>, false>\n : D['length'] extends MaxHops\n ? unknown\n : `QERR_QUERY_NESTED_KEY_UNKNOWN: ${K} is not a valid nested key on ${NS}`\n }\n : unknown\n\n// ==========\n// result-key collision — a top-level output key that would clash with a hook\n// result field (`isLoading`, `error`, `refs`, `state`, …). Catches `$as` to a\n// reserved name and singularization that lands on one (e.g. `states` → `state`)\n// alike, because both flow through `ResolvedScopeKey`. Nested scopes can't\n// collide, so only the top level is checked.\n\ntype TopMLabels<Node> = Node extends { $m: infer M } ? keyof M & string : never\n\ntype ReservedScopeMsg<\n S extends IdbSchema,\n Key extends string,\n Node,\n> = ResolvedScopeKey<S, null, Key, Node> extends ReservedResultKey\n ? `QERR_RESULT_KEY_RESERVED: result key '${ResolvedScopeKey<S, null, Key, Node> & string}' is reserved — it clashes with a hook result field; rename this scope`\n : [Extract<TopMLabels<Node>, ReservedResultKey>] extends [never]\n ? false\n : `QERR_RESULT_KEY_RESERVED: $m label '${Extract<TopMLabels<Node>, ReservedResultKey>}' is reserved — it clashes with a hook result field; choose another label`\n\n/**\n * The per-call validating type. Use as a self-referential constraint:\n * `<Q extends IdbValidQuery<Q, S>>(query: Q)`.\n */\nexport type IdbValidQuery<Q, S extends IdbSchema> = IdbQuery<S> & {\n [K in keyof Q & string]: K extends IdbNamespaceName<S>\n ? ReservedScopeMsg<S, K, Q[K]> extends infer Msg extends string\n ? Msg\n : ValidNode<Q[K], S, K, null, K, [], true>\n : `QERR_QUERY_ROOT_KEY_UNKNOWN: ${K} is not a valid top-level namespace`\n}\n"]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export { $only, $skip } from './constants.js';
|
|
2
2
|
export type { IdbQueryBuilder } from './defineQuery.js';
|
|
3
3
|
export { defineQuery, q } from './defineQuery.js';
|
|
4
|
-
export type { HasPick, ResolvedScopeKey, SingularScopeKey } from './keys.js';
|
|
4
|
+
export type { HasPick, ReservedResultKey, ResolvedScopeKey, SingularScopeKey } from './keys.js';
|
|
5
5
|
export { resultKeys, shapeResult, shapingSchema } from './shapeResult.js';
|
|
6
6
|
export type { IdbMBlock, IdbMTransform, IdbQuery, IdbQueryData, IdbQueryEntity, IdbQueryFields, IdbQueryNode, IdbQueryOptions, IdbQueryPageInfo, IdbQuerySubquery, IdbSchemaRuleParams, IdbWhereOps, } from './types.js';
|
|
7
7
|
export type { IdbValidQuery } from './validation.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/query/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAA;AAC7C,YAAY,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AACvD,OAAO,EAAE,WAAW,EAAE,CAAC,EAAE,MAAM,kBAAkB,CAAA;AACjD,YAAY,EAAE,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/query/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAA;AAC7C,YAAY,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AACvD,OAAO,EAAE,WAAW,EAAE,CAAC,EAAE,MAAM,kBAAkB,CAAA;AACjD,YAAY,EAAE,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAA;AAC/F,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AACzE,YAAY,EACV,SAAS,EACT,aAAa,EACb,QAAQ,EACR,YAAY,EACZ,cAAc,EACd,cAAc,EACd,YAAY,EACZ,eAAe,EACf,gBAAgB,EAChB,gBAAgB,EAChB,mBAAmB,EACnB,WAAW,GACZ,MAAM,YAAY,CAAA;AACnB,YAAY,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/query/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAA;AAE7C,OAAO,EAAE,WAAW,EAAE,CAAC,EAAE,MAAM,kBAAkB,CAAA;AAEjD,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAgBzE,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA","sourcesContent":["export { $only, $skip } from './constants.js'\nexport type { IdbQueryBuilder } from './defineQuery.js'\nexport { defineQuery, q } from './defineQuery.js'\nexport type { HasPick, ResolvedScopeKey, SingularScopeKey } from './keys.js'\nexport { resultKeys, shapeResult, shapingSchema } from './shapeResult.js'\nexport type {\n IdbMBlock,\n IdbMTransform,\n IdbQuery,\n IdbQueryData,\n IdbQueryEntity,\n IdbQueryFields,\n IdbQueryNode,\n IdbQueryOptions,\n IdbQueryPageInfo,\n IdbQuerySubquery,\n IdbSchemaRuleParams,\n IdbWhereOps,\n} from './types.js'\nexport type { IdbValidQuery } from './validation.js'\nexport { toWireQuery } from './wire.js'\n"]}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/query/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAA;AAE7C,OAAO,EAAE,WAAW,EAAE,CAAC,EAAE,MAAM,kBAAkB,CAAA;AAEjD,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAgBzE,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA","sourcesContent":["export { $only, $skip } from './constants.js'\nexport type { IdbQueryBuilder } from './defineQuery.js'\nexport { defineQuery, q } from './defineQuery.js'\nexport type { HasPick, ReservedResultKey, ResolvedScopeKey, SingularScopeKey } from './keys.js'\nexport { resultKeys, shapeResult, shapingSchema } from './shapeResult.js'\nexport type {\n IdbMBlock,\n IdbMTransform,\n IdbQuery,\n IdbQueryData,\n IdbQueryEntity,\n IdbQueryFields,\n IdbQueryNode,\n IdbQueryOptions,\n IdbQueryPageInfo,\n IdbQuerySubquery,\n IdbSchemaRuleParams,\n IdbWhereOps,\n} from './types.js'\nexport type { IdbValidQuery } from './validation.js'\nexport { toWireQuery } from './wire.js'\n"]}
|
package/dist/esm/query/keys.d.ts
CHANGED
|
@@ -19,6 +19,19 @@ export type HasPick<Node> = Node extends {
|
|
|
19
19
|
} | {
|
|
20
20
|
$at: number;
|
|
21
21
|
} ? true : false : false;
|
|
22
|
+
/**
|
|
23
|
+
* The top-level keys a `/vue` client hook result owns. A query whose resolved
|
|
24
|
+
* scope key — or top-level `$m` label — lands on one of these would clash with
|
|
25
|
+
* the hook's own ref (`{ isLoading } = useQuery(...)`), so query validation
|
|
26
|
+
* rejects it ([validation.ts], `QERR_RESULT_KEY_RESERVED`). The set is the
|
|
27
|
+
* union across `useQuery`, `useInfiniteQuery`, and the result wrapper
|
|
28
|
+
* (`.refs`/`.state`); the `/vue` result shapes are locked against it by a type
|
|
29
|
+
* test so the two never drift.
|
|
30
|
+
*
|
|
31
|
+
* Nested keys never appear here: they live inside entity objects, where no
|
|
32
|
+
* result field exists to collide with.
|
|
33
|
+
*/
|
|
34
|
+
export type ReservedResultKey = 'isLoading' | 'error' | 'pageInfo' | 'refs' | 'state' | 'canLoadNextPage' | 'loadNextPage';
|
|
22
35
|
/** The output key of a scope: `$as` wins, `$only`/`$at` singularize, else as-is. */
|
|
23
36
|
export type ResolvedScopeKey<S extends IdbSchema, ParentNS extends string | null, Key extends string, Node> = Node extends {
|
|
24
37
|
$: infer Dollar;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"keys.d.ts","sourceRoot":"","sources":["../../../src/query/keys.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAA;AAC1D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAA;AAE3D,KAAK,gBAAgB,CACnB,CAAC,SAAS,SAAS,EACnB,QAAQ,SAAS,MAAM,GAAG,IAAI,EAC9B,GAAG,SAAS,MAAM,IAChB,QAAQ,SAAS,IAAI,GACrB,GAAG,SAAS,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,GACvC,CAAC,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,GACxC,SAAS,GACX,QAAQ,SAAS,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,GAC/C,GAAG,SAAS,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,QAAQ,CAAC,GACpD,CAAC,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,GACzC,SAAS,GACX,SAAS,CAAA;AAEf,+EAA+E;AAC/E,MAAM,MAAM,gBAAgB,CAC1B,CAAC,SAAS,SAAS,EACnB,QAAQ,SAAS,MAAM,GAAG,IAAI,EAC9B,GAAG,SAAS,MAAM,IAChB,CAAC,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,CAAC,aAAa,CAAC,SAAS,KAAK,GACjD,GAAG,GACH,gBAAgB,CAAC,CAAC,EAAE,QAAQ,EAAE,GAAG,CAAC,SAAS,MAAM,QAAQ,GACvD,QAAQ,SAAS,MAAM,GACrB,QAAQ,GACR,CAAC,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,CAAC,aAAa,CAAC,SAAS,UAAU,GACpD,GAAG,GACH,WAAW,CAAC,GAAG,CAAC,GACpB,KAAK,CAAA;AAEX,iEAAiE;AACjE,MAAM,MAAM,OAAO,CAAC,IAAI,IAAI,IAAI,SAAS;IAAE,CAAC,EAAE,MAAM,MAAM,CAAA;CAAE,GACxD,MAAM,SAAS;IAAE,KAAK,EAAE,IAAI,CAAA;CAAE,GAAG;IAAE,GAAG,EAAE,MAAM,CAAA;CAAE,GAC9C,IAAI,GACJ,KAAK,GACP,KAAK,CAAA;AAET,oFAAoF;AACpF,MAAM,MAAM,gBAAgB,CAC1B,CAAC,SAAS,SAAS,EACnB,QAAQ,SAAS,MAAM,GAAG,IAAI,EAC9B,GAAG,SAAS,MAAM,EAClB,IAAI,IACF,IAAI,SAAS;IAAE,CAAC,EAAE,MAAM,MAAM,CAAA;CAAE,GAChC,MAAM,SAAS;IAAE,GAAG,EAAE,MAAM,EAAE,SAAS,MAAM,CAAA;CAAE,GAC7C,EAAE,GACF,MAAM,SAAS;IAAE,KAAK,EAAE,IAAI,CAAA;CAAE,GAAG;IAAE,GAAG,EAAE,MAAM,CAAA;CAAE,GAC9C,gBAAgB,CAAC,CAAC,EAAE,QAAQ,EAAE,GAAG,CAAC,GAClC,GAAG,GACP,GAAG,CAAA"}
|
|
1
|
+
{"version":3,"file":"keys.d.ts","sourceRoot":"","sources":["../../../src/query/keys.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAA;AAC1D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAA;AAE3D,KAAK,gBAAgB,CACnB,CAAC,SAAS,SAAS,EACnB,QAAQ,SAAS,MAAM,GAAG,IAAI,EAC9B,GAAG,SAAS,MAAM,IAChB,QAAQ,SAAS,IAAI,GACrB,GAAG,SAAS,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,GACvC,CAAC,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,GACxC,SAAS,GACX,QAAQ,SAAS,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,GAC/C,GAAG,SAAS,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,QAAQ,CAAC,GACpD,CAAC,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,GACzC,SAAS,GACX,SAAS,CAAA;AAEf,+EAA+E;AAC/E,MAAM,MAAM,gBAAgB,CAC1B,CAAC,SAAS,SAAS,EACnB,QAAQ,SAAS,MAAM,GAAG,IAAI,EAC9B,GAAG,SAAS,MAAM,IAChB,CAAC,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,CAAC,aAAa,CAAC,SAAS,KAAK,GACjD,GAAG,GACH,gBAAgB,CAAC,CAAC,EAAE,QAAQ,EAAE,GAAG,CAAC,SAAS,MAAM,QAAQ,GACvD,QAAQ,SAAS,MAAM,GACrB,QAAQ,GACR,CAAC,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,CAAC,aAAa,CAAC,SAAS,UAAU,GACpD,GAAG,GACH,WAAW,CAAC,GAAG,CAAC,GACpB,KAAK,CAAA;AAEX,iEAAiE;AACjE,MAAM,MAAM,OAAO,CAAC,IAAI,IAAI,IAAI,SAAS;IAAE,CAAC,EAAE,MAAM,MAAM,CAAA;CAAE,GACxD,MAAM,SAAS;IAAE,KAAK,EAAE,IAAI,CAAA;CAAE,GAAG;IAAE,GAAG,EAAE,MAAM,CAAA;CAAE,GAC9C,IAAI,GACJ,KAAK,GACP,KAAK,CAAA;AAET;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,iBAAiB,GACvB,WAAW,GACX,OAAO,GACP,UAAU,GACV,MAAM,GACN,OAAO,GACP,iBAAiB,GACjB,cAAc,CAAA;AAEpB,oFAAoF;AACpF,MAAM,MAAM,gBAAgB,CAC1B,CAAC,SAAS,SAAS,EACnB,QAAQ,SAAS,MAAM,GAAG,IAAI,EAC9B,GAAG,SAAS,MAAM,EAClB,IAAI,IACF,IAAI,SAAS;IAAE,CAAC,EAAE,MAAM,MAAM,CAAA;CAAE,GAChC,MAAM,SAAS;IAAE,GAAG,EAAE,MAAM,EAAE,SAAS,MAAM,CAAA;CAAE,GAC7C,EAAE,GACF,MAAM,SAAS;IAAE,KAAK,EAAE,IAAI,CAAA;CAAE,GAAG;IAAE,GAAG,EAAE,MAAM,CAAA;CAAE,GAC9C,gBAAgB,CAAC,CAAC,EAAE,QAAQ,EAAE,GAAG,CAAC,GAClC,GAAG,GACP,GAAG,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"keys.js","sourceRoot":"","sources":["../../../src/query/keys.ts"],"names":[],"mappings":"","sourcesContent":["/**\n * Type-level scope-key resolution — the mirror of `resolveSingularKey` in\n * `shapeResult.ts`. Both derive from the same schema metadata, so the\n * TypeScript key and the runtime key always match.\n *\n * `ParentNS` is `null` for top-level scopes (the key is a namespace name) and\n * the parent's namespace name for nested scopes (the key is a link label).\n */\nimport type { IdbSchema } from '../schema/defineSchema.js'\nimport type { Singularize } from '../schema/singularize.js'\n\ntype DeclaredSingular<\n S extends IdbSchema,\n ParentNS extends string | null,\n Key extends string,\n> = ParentNS extends null\n ? Key extends keyof S['$dux']['namespaces']\n ? S['$dux']['namespaces'][Key]['singular']\n : undefined\n : ParentNS extends keyof S['$dux']['linkSingulars']\n ? Key extends keyof S['$dux']['linkSingulars'][ParentNS]\n ? S['$dux']['linkSingulars'][ParentNS][Key]\n : undefined\n : undefined\n\n/** The singular form of a scope key per the schema's `options.singularize`. */\nexport type SingularScopeKey<\n S extends IdbSchema,\n ParentNS extends string | null,\n Key extends string,\n> = S['$dux']['options']['singularize'] extends 'off'\n ? Key\n : DeclaredSingular<S, ParentNS, Key> extends infer Declared\n ? Declared extends string\n ? Declared\n : S['$dux']['options']['singularize'] extends 'explicit'\n ? Key\n : Singularize<Key>\n : never\n\n/** Whether a scope node coerces its array to a single entity. */\nexport type HasPick<Node> = Node extends { $: infer Dollar }\n ? Dollar extends { $only: true } | { $at: number }\n ? true\n : false\n : false\n\n/** The output key of a scope: `$as` wins, `$only`/`$at` singularize, else as-is. */\nexport type ResolvedScopeKey<\n S extends IdbSchema,\n ParentNS extends string | null,\n Key extends string,\n Node,\n> = Node extends { $: infer Dollar }\n ? Dollar extends { $as: infer As extends string }\n ? As\n : Dollar extends { $only: true } | { $at: number }\n ? SingularScopeKey<S, ParentNS, Key>\n : Key\n : Key\n"]}
|
|
1
|
+
{"version":3,"file":"keys.js","sourceRoot":"","sources":["../../../src/query/keys.ts"],"names":[],"mappings":"","sourcesContent":["/**\n * Type-level scope-key resolution — the mirror of `resolveSingularKey` in\n * `shapeResult.ts`. Both derive from the same schema metadata, so the\n * TypeScript key and the runtime key always match.\n *\n * `ParentNS` is `null` for top-level scopes (the key is a namespace name) and\n * the parent's namespace name for nested scopes (the key is a link label).\n */\nimport type { IdbSchema } from '../schema/defineSchema.js'\nimport type { Singularize } from '../schema/singularize.js'\n\ntype DeclaredSingular<\n S extends IdbSchema,\n ParentNS extends string | null,\n Key extends string,\n> = ParentNS extends null\n ? Key extends keyof S['$dux']['namespaces']\n ? S['$dux']['namespaces'][Key]['singular']\n : undefined\n : ParentNS extends keyof S['$dux']['linkSingulars']\n ? Key extends keyof S['$dux']['linkSingulars'][ParentNS]\n ? S['$dux']['linkSingulars'][ParentNS][Key]\n : undefined\n : undefined\n\n/** The singular form of a scope key per the schema's `options.singularize`. */\nexport type SingularScopeKey<\n S extends IdbSchema,\n ParentNS extends string | null,\n Key extends string,\n> = S['$dux']['options']['singularize'] extends 'off'\n ? Key\n : DeclaredSingular<S, ParentNS, Key> extends infer Declared\n ? Declared extends string\n ? Declared\n : S['$dux']['options']['singularize'] extends 'explicit'\n ? Key\n : Singularize<Key>\n : never\n\n/** Whether a scope node coerces its array to a single entity. */\nexport type HasPick<Node> = Node extends { $: infer Dollar }\n ? Dollar extends { $only: true } | { $at: number }\n ? true\n : false\n : false\n\n/**\n * The top-level keys a `/vue` client hook result owns. A query whose resolved\n * scope key — or top-level `$m` label — lands on one of these would clash with\n * the hook's own ref (`{ isLoading } = useQuery(...)`), so query validation\n * rejects it ([validation.ts], `QERR_RESULT_KEY_RESERVED`). The set is the\n * union across `useQuery`, `useInfiniteQuery`, and the result wrapper\n * (`.refs`/`.state`); the `/vue` result shapes are locked against it by a type\n * test so the two never drift.\n *\n * Nested keys never appear here: they live inside entity objects, where no\n * result field exists to collide with.\n */\nexport type ReservedResultKey\n = | 'isLoading'\n | 'error'\n | 'pageInfo'\n | 'refs'\n | 'state'\n | 'canLoadNextPage'\n | 'loadNextPage'\n\n/** The output key of a scope: `$as` wins, `$only`/`$at` singularize, else as-is. */\nexport type ResolvedScopeKey<\n S extends IdbSchema,\n ParentNS extends string | null,\n Key extends string,\n Node,\n> = Node extends { $: infer Dollar }\n ? Dollar extends { $as: infer As extends string }\n ? As\n : Dollar extends { $only: true } | { $at: number }\n ? SingularScopeKey<S, ParentNS, Key>\n : Key\n : Key\n"]}
|
|
@@ -40,23 +40,42 @@ type FieldWhereValue<A> = A extends DataAttrDef<infer V, infer R, infer I, any>
|
|
|
40
40
|
type IdAttr = DataAttrDef<string, false, true, true>;
|
|
41
41
|
/**
|
|
42
42
|
* The where shape: fields, `id`, link labels (matching the linked entity's
|
|
43
|
-
* id),
|
|
44
|
-
*
|
|
45
|
-
*
|
|
43
|
+
* id), linked dot-paths up to 3 hops, and `and`/`or`. `undefined` values
|
|
44
|
+
* (`$skip`) drop the clause.
|
|
45
|
+
*
|
|
46
|
+
* Completions are enumerated, not just validated: every dot-path the cursor
|
|
47
|
+
* could complete is a key here, so `where: { ⌶ }` suggests `memberships`,
|
|
48
|
+
* `memberships.user`, and `memberships.user.email` alike. The value type for
|
|
49
|
+
* each path is resolved by `WhereKeyAttr` (a link leaf matches the linked
|
|
50
|
+
* entity's id; a field leaf takes its own type).
|
|
46
51
|
*/
|
|
47
52
|
export type IdbWhereShape<S extends IdbSchema, NS extends string> = {
|
|
48
53
|
[F in FieldKeys<S, NS>]?: FieldWhereValue<AttrsOf<S, NS>[F]>;
|
|
49
54
|
} & {
|
|
50
55
|
[L in LinkLabels<S, NS>]?: FieldWhereValue<IdAttr>;
|
|
51
56
|
} & {
|
|
52
|
-
[P in
|
|
57
|
+
[P in WhereDotPaths<S, NS>]?: FieldWhereValue<WhereKeyAttr<S, NS, P>>;
|
|
53
58
|
} & {
|
|
54
59
|
id?: FieldWhereValue<IdAttr>;
|
|
55
60
|
and?: readonly IdbWhereShape<S, NS>[];
|
|
56
61
|
or?: readonly IdbWhereShape<S, NS>[];
|
|
57
62
|
};
|
|
58
|
-
|
|
59
|
-
|
|
63
|
+
/**
|
|
64
|
+
* A where leaf on a linked namespace: any field, any link label (a bare link
|
|
65
|
+
* filters on the linked id), or `id`. A link label as a leaf is what lets a
|
|
66
|
+
* dot-path stop on a relationship — e.g. `memberships.user`.
|
|
67
|
+
*/
|
|
68
|
+
type WhereLeaf<S extends IdbSchema, NS extends string> = FieldKeys<S, NS> | LinkLabels<S, NS> | 'id';
|
|
69
|
+
/**
|
|
70
|
+
* Linked dot-paths for `where`, hops 2 and 3 (hop 1 — fields, `id`, link
|
|
71
|
+
* labels — are direct keys on the shape above). Each non-terminal segment is
|
|
72
|
+
* a link label; the terminal is any `WhereLeaf`. Bounded at 3 hops by
|
|
73
|
+
* construction (the fixed depth policy — [dux-spec-root.md §3.3]).
|
|
74
|
+
*/
|
|
75
|
+
type WhereDotPaths<S extends IdbSchema, NS extends string> = {
|
|
76
|
+
[L1 in LinkLabels<S, NS>]: `${L1}.${WhereLeaf<S, LinkTarget<S, NS, L1>>}` | {
|
|
77
|
+
[L2 in LinkLabels<S, LinkTarget<S, NS, L1>>]: `${L1}.${L2}.${WhereLeaf<S, LinkTarget<S, LinkTarget<S, NS, L1>, L2>>}`;
|
|
78
|
+
}[LinkLabels<S, LinkTarget<S, NS, L1>>];
|
|
60
79
|
}[LinkLabels<S, NS>];
|
|
61
80
|
/** Resolve the attr def a where key addresses — fields, id, labels, dot-paths ≤ 3 hops. */
|
|
62
81
|
export type WhereKeyAttr<S extends IdbSchema, NS extends string, K extends string, D extends Depth = []> = K extends FieldKeys<S, NS> ? AttrsOf<S, NS>[K] : K extends 'id' ? IdAttr : K extends `${infer L}.${infer Rest}` ? L extends LinkLabels<S, NS> ? D['length'] extends MaxHops ? never : WhereKeyAttr<S, LinkTarget<S, NS, L>, Rest, NextHop<D>> : never : K extends LinkLabels<S, NS> ? IdAttr : never;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/query/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EACV,MAAM,EACN,WAAW,EACX,gBAAgB,EAChB,YAAY,EACb,MAAM,iBAAiB,CAAA;AACxB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAA;AAC1D,OAAO,KAAK,EACV,OAAO,EACP,SAAS,EACT,SAAS,EACT,gBAAgB,EAChB,eAAe,EACf,UAAU,EACV,UAAU,EACV,kBAAkB,EAClB,eAAe,EACf,SAAS,EACV,MAAM,qBAAqB,CAAA;AAC5B,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAChE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AAC1D,OAAO,KAAK,EAAE,MAAM,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAA;AACpE,OAAO,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAA;AAE1D,YAAY,EACV,SAAS,EACT,gBAAgB,EAChB,UAAU,EACV,UAAU,EACV,eAAe,EACf,SAAS,GACV,MAAM,qBAAqB,CAAA;AAK5B,KAAK,KAAK,GAAG,SAAS,OAAO,EAAE,CAAA;AAC/B,MAAM,MAAM,OAAO,GAAG,CAAC,CAAA;AACvB,MAAM,MAAM,OAAO,CAAC,CAAC,SAAS,KAAK,IAAI,CAAC,CAAC,QAAQ,CAAC,SAAS,OAAO,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAAA;AAKxF;;;;GAIG;AACH,MAAM,WAAW,WAAW,CAAC,CAAC,EAAE,WAAW,EAAE,SAAS;IACpD,GAAG,CAAC,EAAE,SAAS,SAAS,CAAC,CAAC,CAAC,EAAE,CAAA;IAC7B,IAAI,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAA;IACnB,GAAG,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAA;IAClB,GAAG,CAAC,EAAE,eAAe,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,CAAA;IAC1C,GAAG,CAAC,EAAE,eAAe,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,CAAA;IAC1C,IAAI,CAAC,EAAE,eAAe,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,CAAC,CAAA;IAC5C,IAAI,CAAC,EAAE,eAAe,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,CAAC,CAAA;IAC5C,KAAK,CAAC,EAAE,aAAa,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,CAAA;IAC5C,MAAM,CAAC,EAAE,aAAa,CAAC,CAAC,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAA;IAC9C,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAED,KAAK,eAAe,CAAC,CAAC,EAAE,SAAS,EAAE,EAAE,SAAS,MAAM,IAAI,CAAC,CAAC,CAAC,SAAS;IAClE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI;CACjC,GACG,SAAS,SAAS,IAAI,GACpB,SAAS,CAAC,CAAC,CAAC,GACZ,yCAAyC,EAAE,4DAA4D,GACzG,yCAAyC,EAAE,4DAA4D,CAAA;AAE3G,KAAK,aAAa,CAAC,CAAC,EAAE,SAAS,EAAE,EAAE,SAAS,MAAM,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,GACtE,SAAS,SAAS,IAAI,GACpB,MAAM,GACN,yCAAyC,EAAE,+CAA+C,GAC5F,yCAAyC,EAAE,+CAA+C,CAAA;AAE9F,KAAK,eAAe,CAAC,CAAC,IAAI,CAAC,SAAS,WAAW,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,EAAE,GAAG,CAAC,GAC3E,SAAS,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,SAAS,GAC/C,KAAK,CAAA;AAET,KAAK,MAAM,GAAG,WAAW,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;AAEpD;;;;;GAKG;AACH,MAAM,MAAM,aAAa,CAAC,CAAC,SAAS,SAAS,EAAE,EAAE,SAAS,MAAM,IAAI;KACjE,CAAC,IAAI,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,eAAe,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;CAC7D,GAAG;KACD,CAAC,IAAI,UAAU,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,eAAe,CAAC,MAAM,CAAC;CACnD,GAAG;KACD,CAAC,IAAI,cAAc,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,eAAe,CAAC,YAAY,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;CACvE,GAAG;IACF,EAAE,CAAC,EAAE,eAAe,CAAC,MAAM,CAAC,CAAA;IAC5B,GAAG,CAAC,EAAE,SAAS,aAAa,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAA;IACrC,EAAE,CAAC,EAAE,SAAS,aAAa,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAA;CACrC,CAAA;AAED,KAAK,cAAc,CAAC,CAAC,SAAS,SAAS,EAAE,EAAE,SAAS,MAAM,IAAI;KAC3D,CAAC,IAAI,UAAU,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,IAAI,SAAS,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,EAAE;CAC9E,CAAC,UAAU,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAA;AAEpB,2FAA2F;AAC3F,MAAM,MAAM,YAAY,CACtB,CAAC,SAAS,SAAS,EACnB,EAAE,SAAS,MAAM,EACjB,CAAC,SAAS,MAAM,EAChB,CAAC,SAAS,KAAK,GAAG,EAAE,IAClB,CAAC,SAAS,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,GAC1B,OAAO,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,GACjB,CAAC,SAAS,IAAI,GACZ,MAAM,GACN,CAAC,SAAS,GAAG,MAAM,CAAC,IAAI,MAAM,IAAI,EAAE,GAClC,CAAC,SAAS,UAAU,CAAC,CAAC,EAAE,EAAE,CAAC,GACzB,CAAC,CAAC,QAAQ,CAAC,SAAS,OAAO,GACzB,KAAK,GACL,YAAY,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,GACzD,KAAK,GACP,CAAC,SAAS,UAAU,CAAC,CAAC,EAAE,EAAE,CAAC,GACzB,MAAM,GACN,KAAK,CAAA;AAKf,oFAAoF;AACpF,MAAM,MAAM,aAAa,CAAC,CAAC,SAAS,SAAS,EAAE,EAAE,SAAS,MAAM,IAAI;KACjE,CAAC,IAAI,gBAAgB,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,iBAAiB,CAAC,CAAC,EAAE,KAAK,GAAG,MAAM;CACpE,CAAA;AAED,+CAA+C;AAC/C,MAAM,MAAM,cAAc,CACxB,EAAE,SAAS,gBAAgB,CAAC,CAAC,CAAC,EAC9B,CAAC,SAAS,SAAS,GAAG,mBAAmB,IACvC,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,CAAA;AAE/B;;;;;GAKG;AACH,MAAM,MAAM,aAAa,CAAC,CAAC,SAAS,SAAS,EAAE,EAAE,SAAS,MAAM,IAC1D;IAAE,OAAO,EAAE,eAAe,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,IAAI,CAAA;CAAE,GAC1C;IAAE,OAAO,EAAE,kBAAkB,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;CAAE,GACtC;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,CAAA;AAEpB,MAAM,MAAM,SAAS,CAAC,CAAC,SAAS,SAAS,EAAE,EAAE,SAAS,MAAM,IAAI,MAAM,CACpE,MAAM,EACN,aAAa,CAAC,CAAC,EAAE,EAAE,CAAC,CACrB,CAAA;AAKD,UAAU,gBAAgB;IACxB,yEAAyE;IACzE,KAAK,CAAC,EAAE,IAAI,CAAA;IACZ,uFAAuF;IACvF,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,+DAA+D;IAC/D,GAAG,CAAC,EAAE,MAAM,CAAA;CACb;AAED,UAAU,iBAAiB;IACzB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,eAAe,CAAC,EAAE,OAAO,CAAA;CAC1B;AAED,MAAM,MAAM,SAAS,CACnB,CAAC,SAAS,SAAS,EACnB,EAAE,SAAS,MAAM,EACjB,QAAQ,SAAS,OAAO,IACtB;IACF,KAAK,CAAC,EAAE,aAAa,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;IAC5B,KAAK,CAAC,EAAE,aAAa,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;IAC5B,MAAM,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,CAAA;IAC7C,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,GAAG,gBAAgB,GAClB,CAAC,QAAQ,SAAS,IAAI,GAAG,iBAAiB,GAAG,EAAE,CAAC,CAAA;AAElD,mFAAmF;AACnF,MAAM,MAAM,YAAY,CACtB,CAAC,SAAS,SAAS,EACnB,EAAE,SAAS,MAAM,EACjB,CAAC,SAAS,KAAK,GAAG,EAAE,EACpB,QAAQ,SAAS,OAAO,GAAG,KAAK,IAC9B,CAAC,CAAC,QAAQ,CAAC,SAAS,OAAO,GAC3B,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GACnB;IACA,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAA;IAC9B,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;CACtB,GAAG;KACD,CAAC,IAAI,UAAU,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;CAC7E,CAAA;AAEH;;;;GAIG;AACH,MAAM,MAAM,QAAQ,CAAC,CAAC,SAAS,SAAS,GAAG,mBAAmB,IAAI;KAC/D,EAAE,IAAI,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC;CAC5D,CAAA;AAED,4EAA4E;AAC5E,MAAM,MAAM,gBAAgB,CAC1B,EAAE,SAAS,gBAAgB,CAAC,CAAC,CAAC,EAC9B,CAAC,SAAS,SAAS,GAAG,mBAAmB,IACvC,YAAY,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;AAKvB,KAAK,YAAY,CAAC,CAAC,SAAS,SAAS,EAAE,EAAE,SAAS,MAAM,EAAE,IAAI,IAAI,IAAI,SAAS;IAC7E,CAAC,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC,SAAS,SAAS,MAAM,EAAE,CAAA;KAAE,CAAA;CACjD,GACG,IAAI,CACJ,YAAY,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,EAAE,EAAE,KAAK,CAAC,EACpC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,GAAG,MAAM,YAAY,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,EAAE,EAAE,KAAK,CAAC,CAC1E,GACC,YAAY,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,EAAE,EAAE,KAAK,CAAC,CAAA;AAE1C,KAAK,SAAS,CAAC,IAAI,IAAI,OAAO,CAAC,MAAM,IAAI,GAAG,MAAM,EAAE,GAAG,GAAG,IAAI,CAAC,CAAA;AAE/D,KAAK,cAAc,CAAC,CAAC,SAAS,SAAS,EAAE,EAAE,SAAS,MAAM,EAAE,IAAI,IAAI;KACjE,CAAC,IAAI,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,UAAU,CAAC,CAAC,EAAE,EAAE,CAAC,GAChD,gBAAgB,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,GACnC,KAAK,GAAG,CAAC,SAAS,UAAU,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK;CAC/E,CAAA;AAED,KAAK,SAAS,CACZ,CAAC,SAAS,SAAS,EACnB,EAAE,SAAS,MAAM,EACjB,CAAC,SAAS,UAAU,CAAC,CAAC,EAAE,EAAE,CAAC,EAC3B,IAAI,IACF,OAAO,CAAC,IAAI,CAAC,SAAS,IAAI,GAC1B,YAAY,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,SAAS,GACvD,eAAe,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,SAAS,KAAK,GACrC,YAAY,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,SAAS,GACvD,YAAY,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAA;AAEnD,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS;IAAE,OAAO,EAAE,GAAG,CAAA;CAAE,GAC1C,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,GACjB,CAAC,SAAS;IAAE,OAAO,EAAE,GAAG,CAAA;CAAE,GACxB,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,GACnB,CAAC,SAAS;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,GACtB,CAAC,GAAG,SAAS,GACb,KAAK,CAAA;AAEb,2EAA2E;AAC3E,KAAK,SAAS,CAAC,CAAC,SAAS,SAAS,EAAE,EAAE,SAAS,MAAM,EAAE,IAAI,IAAI,IAAI,SAAS;IAC1E,EAAE,EAAE,MAAM,CAAC,CAAA;CACZ,GACG;IAAE,CAAC,UAAU,KAAK,IAAI,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,YAAY,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;CAAE,GAC7E,EAAE,CAAA;AAEN,KAAK,iBAAiB,CAAC,CAAC,SAAS,SAAS,EAAE,EAAE,SAAS,MAAM,EAAE,IAAI,IAAI;IACrE,SAAS,CAAC,IAAI,CAAC;CAChB,SAAS,CAAC,KAAK,CAAC,GACb,EAAE,GACF,mBAAmB,CACnB;KACG,CAAC,IAAI,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,UAAU,CAAC,CAAC,EAAE,EAAE,CAAC,GAC/C,SAAS,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,GAC3C,EAAE;CACP,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CACnB,CAAA;AAEH,KAAK,YAAY,CAAC,CAAC,SAAS,SAAS,EAAE,EAAE,SAAS,MAAM,EAAE,IAAI,IAAI,MAAM,CACtE;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,GAAG,YAAY,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,GACxC,cAAc,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,GAC3B,iBAAiB,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,CACjC,CAAA;AAED;;;GAGG;AACH,MAAM,MAAM,cAAc,CACxB,EAAE,SAAS,gBAAgB,CAAC,CAAC,CAAC,EAC9B,QAAQ,GAAG,EAAE,EACb,CAAC,SAAS,SAAS,GAAG,mBAAmB,IACvC,YAAY,CAAC,CAAC,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAA;AAEjC,KAAK,YAAY,CAAC,CAAC,SAAS,SAAS,EAAE,EAAE,SAAS,MAAM,EAAE,IAAI,IAC1D,OAAO,CAAC,IAAI,CAAC,SAAS,IAAI,GACxB,YAAY,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,GAAG,SAAS,GACrC,YAAY,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,CAAA;AAEjC,KAAK,YAAY,CAAC,CAAC,EAAE,CAAC,SAAS,SAAS,IAAI,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,GACjE,EAAE,GACF,mBAAmB,CACnB;KACG,CAAC,IAAI,MAAM,CAAC,GAAG,MAAM,GAAG,CAAC,SAAS,gBAAgB,CAAC,CAAC,CAAC,GAClD,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GACrB,EAAE;CACP,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,CACpB,CAAA;AAEH;;;;GAIG;AACH,MAAM,MAAM,YAAY,CAAC,CAAC,EAAE,CAAC,SAAS,SAAS,GAAG,mBAAmB,IAAI,MAAM,CAC7E;KACG,CAAC,IAAI,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,SAAS,gBAAgB,CAAC,CAAC,CAAC,GACnD,gBAAgB,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAClC,KAAK,GAAG,CAAC,SAAS,gBAAgB,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK;CAC7E,GAAG,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,CACvB,CAAA;AAKD,KAAK,mBAAmB,CAAC,EAAE,IAAI,EAAE,SAAS,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,GACrF;KAAG,CAAC,IAAI,MAAM,EAAE,CAAC,CAAC,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;CAAE,GACtC,EAAE,CAAA;AAEN;;;GAGG;AACH,MAAM,MAAM,mBAAmB,CAAC,CAAC,SAAS,SAAS,GAAG,mBAAmB,IAAI,MAAM,CACjF,mBAAmB,CACjB;KACG,EAAE,IAAI,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,GAAG,mBAAmB,CACxD,CAAC,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,YAAY,CAAC,CAC1C;CACF,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC,CACjC,CACF,CAAA;AAED,mEAAmE;AACnE,MAAM,WAAW,eAAe,CAAC,CAAC,SAAS,SAAS,GAAG,mBAAmB;IACxE,UAAU,EAAE,mBAAmB,CAAC,CAAC,CAAC,CAAA;CACnC;AAED,yEAAyE;AACzE,MAAM,MAAM,gBAAgB,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,gBAAgB,CAAC,CAAC,CAAC,CAAA"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/query/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/query/types.ts"],"names":[],"mappings":"","sourcesContent":["/**\n * The query-domain types: the authoring shape (`IdbQuery` and its node\n * types — also the completion source for `q`/`useQuery` literals), the\n * type-level shaping mirror (`IdbQueryData`, `IdbQueryEntity`), and the\n * renamed official types (`IdbQueryPageInfo`, `IdbQueryOptions`, …).\n */\nimport type {\n Cursor,\n DataAttrDef,\n PageInfoResponse,\n ResolveAttrs,\n} from '@instantdb/core'\nimport type { IdbSchema } from '../schema/defineSchema.js'\nimport type {\n AttrsOf,\n AttrValue,\n FieldKeys,\n IndexedFieldKeys,\n LinkCardinality,\n LinkLabels,\n LinkTarget,\n PrimitiveFieldKeys,\n UniqueFieldKeys,\n WireValue,\n} from '../schema/fields.js'\nimport type { IdbRegisteredSchema } from '../schema/register.js'\nimport type { IdbNamespaceName } from '../schema/types.js'\nimport type { Expand, UnionToIntersection } from '../schema/util.js'\nimport type { HasPick, ResolvedScopeKey } from './keys.js'\n\nexport type {\n FieldKeys,\n IndexedFieldKeys,\n LinkLabels,\n LinkTarget,\n UniqueFieldKeys,\n WireValue,\n} from '../schema/fields.js'\n\n// ==========\n// hop counting — validation and completions stop at 3 hops (matches core)\n\ntype Depth = readonly unknown[]\nexport type MaxHops = 3\nexport type NextHop<D extends Depth> = D['length'] extends MaxHops ? D : [...D, unknown]\n\n// ==========\n// where authoring\n\n/**\n * The operator object for one field. Every operator is present so the\n * completion list and the diagnostic are both intentional: operators the\n * field doesn't support are typed as the `QERR_*` message explaining why.\n */\nexport interface IdbWhereOps<V, _IsRequired, IsIndexed> {\n $in?: readonly WireValue<V>[]\n $not?: WireValue<V>\n $ne?: WireValue<V>\n $gt?: ComparableValue<V, IsIndexed, '$gt'>\n $lt?: ComparableValue<V, IsIndexed, '$lt'>\n $gte?: ComparableValue<V, IsIndexed, '$gte'>\n $lte?: ComparableValue<V, IsIndexed, '$lte'>\n $like?: StringPattern<V, IsIndexed, '$like'>\n $ilike?: StringPattern<V, IsIndexed, '$ilike'>\n $isNull?: boolean\n}\n\ntype ComparableValue<V, IsIndexed, Op extends string> = [V] extends [\n string | number | boolean | Date,\n]\n ? IsIndexed extends true\n ? WireValue<V>\n : `QERR_WHERE_OPERATOR_INVALID: Operator ${Op} is only available for indexed fields with a checked type.`\n : `QERR_WHERE_OPERATOR_INVALID: Operator ${Op} is only available for indexed fields with a checked type.`\n\ntype StringPattern<V, IsIndexed, Op extends string> = [V] extends [string]\n ? IsIndexed extends true\n ? string\n : `QERR_WHERE_OPERATOR_INVALID: Operator ${Op} is only available for indexed string fields.`\n : `QERR_WHERE_OPERATOR_INVALID: Operator ${Op} is only available for indexed string fields.`\n\ntype FieldWhereValue<A> = A extends DataAttrDef<infer V, infer R, infer I, any>\n ? WireValue<V> | IdbWhereOps<V, R, I> | undefined\n : never\n\ntype IdAttr = DataAttrDef<string, false, true, true>\n\n/**\n * The where shape: fields, `id`, link labels (matching the linked entity's\n * id), one enumerated hop of `label.field` dot-paths, and `and`/`or`.\n * Deeper dot-paths (up to 3 hops) are accepted via validation rather than\n * enumerated here. `undefined` values (`$skip`) drop the clause.\n */\nexport type IdbWhereShape<S extends IdbSchema, NS extends string> = {\n [F in FieldKeys<S, NS>]?: FieldWhereValue<AttrsOf<S, NS>[F]>\n} & {\n [L in LinkLabels<S, NS>]?: FieldWhereValue<IdAttr>\n} & {\n [P in DotPathsOneHop<S, NS>]?: FieldWhereValue<WhereKeyAttr<S, NS, P>>\n} & {\n id?: FieldWhereValue<IdAttr>\n and?: readonly IdbWhereShape<S, NS>[]\n or?: readonly IdbWhereShape<S, NS>[]\n}\n\ntype DotPathsOneHop<S extends IdbSchema, NS extends string> = {\n [L in LinkLabels<S, NS>]: `${L}.${FieldKeys<S, LinkTarget<S, NS, L>> | 'id'}`\n}[LinkLabels<S, NS>]\n\n/** Resolve the attr def a where key addresses — fields, id, labels, dot-paths ≤ 3 hops. */\nexport type WhereKeyAttr<\n S extends IdbSchema,\n NS extends string,\n K extends string,\n D extends Depth = [],\n> = K extends FieldKeys<S, NS>\n ? AttrsOf<S, NS>[K]\n : K extends 'id'\n ? IdAttr\n : K extends `${infer L}.${infer Rest}`\n ? L extends LinkLabels<S, NS>\n ? D['length'] extends MaxHops\n ? never\n : WhereKeyAttr<S, LinkTarget<S, NS, L>, Rest, NextHop<D>>\n : never\n : K extends LinkLabels<S, NS>\n ? IdAttr\n : never\n\n// ==========\n// order, fields, $m authoring\n\n/** Direct indexed fields and `serverCreatedAt` — ordering never traverses links. */\nexport type IdbOrderShape<S extends IdbSchema, NS extends string> = {\n [K in IndexedFieldKeys<S, NS> | 'serverCreatedAt']?: 'asc' | 'desc'\n}\n\n/** The `fields` array type for a namespace. */\nexport type IdbQueryFields<\n NS extends IdbNamespaceName<S>,\n S extends IdbSchema = IdbRegisteredSchema,\n> = (FieldKeys<S, NS> | 'id')[]\n\n/**\n * One `$m` transform:\n * - `indexBy` — a unique field (or `id`); yields `Record<string, Entity>`\n * - `groupBy` — a primitive field; yields `Record<string, Entity[]>`\n * - `at` — a position (negative from the end); yields `Entity | undefined`\n */\nexport type IdbMTransform<S extends IdbSchema, NS extends string>\n = | { indexBy: UniqueFieldKeys<S, NS> | 'id' }\n | { groupBy: PrimitiveFieldKeys<S, NS> }\n | { at: number }\n\nexport type IdbMBlock<S extends IdbSchema, NS extends string> = Record<\n string,\n IdbMTransform<S, NS>\n>\n\n// ==========\n// the authoring shape\n\ninterface IdbDuxDollarKeys {\n /** Coerce this scope to `Entity | undefined` and singularize its key. */\n $only?: true\n /** Pick the element at this position (negative from the end); singularizes the key. */\n $at?: number\n /** Rename this scope's result key explicitly — always wins. */\n $as?: string\n}\n\ninterface IdbPaginationKeys {\n last?: number\n first?: number\n offset?: number\n after?: Cursor\n afterInclusive?: boolean\n before?: Cursor\n beforeInclusive?: boolean\n}\n\nexport type IdbDollar<\n S extends IdbSchema,\n NS extends string,\n TopLevel extends boolean,\n> = {\n where?: IdbWhereShape<S, NS>\n order?: IdbOrderShape<S, NS>\n fields?: readonly (FieldKeys<S, NS> | 'id')[]\n limit?: number\n} & IdbDuxDollarKeys\n& (TopLevel extends true ? IdbPaginationKeys : {})\n\n/** One scope of a query: `$`, `$m`, and nested link labels (3 hops, then open). */\nexport type IdbQueryNode<\n S extends IdbSchema,\n NS extends string,\n D extends Depth = [],\n TopLevel extends boolean = false,\n> = D['length'] extends MaxHops\n ? Record<string, any>\n : {\n $?: IdbDollar<S, NS, TopLevel>\n $m?: IdbMBlock<S, NS>\n } & {\n [L in LinkLabels<S, NS>]?: IdbQueryNode<S, LinkTarget<S, NS, L>, NextHop<D>>\n }\n\n/**\n * The valid-query-object type — handy for function params. Authoring\n * completions for `q`/`useQuery` literals come from this shape; per-call\n * validation is `IdbValidQuery` (`validation.ts`).\n */\nexport type IdbQuery<S extends IdbSchema = IdbRegisteredSchema> = {\n [NS in IdbNamespaceName<S>]?: IdbQueryNode<S, NS, [], true>\n}\n\n/** The subquery shape for one namespace — what `IdbQueryEntity` accepts. */\nexport type IdbQuerySubquery<\n NS extends IdbNamespaceName<S>,\n S extends IdbSchema = IdbRegisteredSchema,\n> = IdbQueryNode<S, NS>\n\n// ==========\n// the shaping mirror — must agree with shapeResult.ts by construction\n\ntype EntityFields<S extends IdbSchema, NS extends string, Node> = Node extends {\n $: { fields: infer F extends readonly string[] }\n}\n ? Pick<\n ResolveAttrs<S['entities'], NS, false>,\n Exclude<F[number], 'id'> & keyof ResolveAttrs<S['entities'], NS, false>\n >\n : ResolveAttrs<S['entities'], NS, false>\n\ntype ChildKeys<Node> = Exclude<keyof Node & string, '$' | '$m'>\n\ntype ShapedChildren<S extends IdbSchema, NS extends string, Node> = {\n [L in ChildKeys<Node> as L extends LinkLabels<S, NS>\n ? ResolvedScopeKey<S, NS, L, Node[L]>\n : never]: L extends LinkLabels<S, NS> ? ChildData<S, NS, L, Node[L]> : never\n}\n\ntype ChildData<\n S extends IdbSchema,\n NS extends string,\n L extends LinkLabels<S, NS>,\n Node,\n> = HasPick<Node> extends true\n ? ShapedEntity<S, LinkTarget<S, NS, L>, Node> | undefined\n : LinkCardinality<S, NS, L> extends 'one'\n ? ShapedEntity<S, LinkTarget<S, NS, L>, Node> | undefined\n : ShapedEntity<S, LinkTarget<S, NS, L>, Node>[]\n\ntype MValue<T, E> = T extends { indexBy: any }\n ? Record<string, E>\n : T extends { groupBy: any }\n ? Record<string, E[]>\n : T extends { at: number }\n ? E | undefined\n : never\n\n/** The `$m` sibling keys a scope contributes beside its own result key. */\ntype MSiblings<S extends IdbSchema, NS extends string, Node> = Node extends {\n $m: infer M\n}\n ? { -readonly [Label in keyof M]: MValue<M[Label], ShapedEntity<S, NS, Node>> }\n : {}\n\ntype ChildrenMSiblings<S extends IdbSchema, NS extends string, Node> = [\n ChildKeys<Node>,\n] extends [never]\n ? {}\n : UnionToIntersection<\n {\n [L in ChildKeys<Node>]: L extends LinkLabels<S, NS>\n ? MSiblings<S, LinkTarget<S, NS, L>, Node[L]>\n : {}\n }[ChildKeys<Node>]\n >\n\ntype ShapedEntity<S extends IdbSchema, NS extends string, Node> = Expand<\n { id: string } & EntityFields<S, NS, Node>\n & ShapedChildren<S, NS, Node>\n & ChildrenMSiblings<S, NS, Node>\n>\n\n/**\n * An entity shaped by query syntax — `$` and `$m` fully supported, including\n * `$: { fields }`.\n */\nexport type IdbQueryEntity<\n NS extends IdbNamespaceName<S>,\n Subquery = {},\n S extends IdbSchema = IdbRegisteredSchema,\n> = ShapedEntity<S, NS, Subquery>\n\ntype TopScopeData<S extends IdbSchema, NS extends string, Node>\n = HasPick<Node> extends true\n ? ShapedEntity<S, NS, Node> | undefined\n : ShapedEntity<S, NS, Node>[]\n\ntype TopMSiblings<Q, S extends IdbSchema> = [keyof Q] extends [never]\n ? {}\n : UnionToIntersection<\n {\n [K in keyof Q & string]: K extends IdbNamespaceName<S>\n ? MSiblings<S, K, Q[K]>\n : {}\n }[keyof Q & string]\n >\n\n/**\n * The shaped data for a query — the exact shape `useQuery`, `queryOnce`, and\n * `adminDb.query` deliver: normalized arrays, `$only`/`$at` coercion,\n * singularized/`$as` keys, `$m` siblings.\n */\nexport type IdbQueryData<Q, S extends IdbSchema = IdbRegisteredSchema> = Expand<\n {\n [K in keyof Q & string as K extends IdbNamespaceName<S>\n ? ResolvedScopeKey<S, null, K, Q[K]>\n : never]: K extends IdbNamespaceName<S> ? TopScopeData<S, K, Q[K]> : never\n } & TopMSiblings<Q, S>\n>\n\n// ==========\n// options + pageInfo\n\ntype NamespaceRuleParams<RP> = RP extends Record<string, DataAttrDef<any, any, any, any>>\n ? { [K in keyof RP]?: AttrValue<RP[K]> }\n : {}\n\n/**\n * Every rule param declared in the schema, merged and optional — the\n * query-level companion to the per-namespace tx typing.\n */\nexport type IdbSchemaRuleParams<S extends IdbSchema = IdbRegisteredSchema> = Expand<\n UnionToIntersection<\n {\n [NS in keyof S['$dux']['namespaces']]: NamespaceRuleParams<\n S['$dux']['namespaces'][NS]['ruleParams']\n >\n }[keyof S['$dux']['namespaces']]\n >\n>\n\n/** Per-call query options — `ruleParams` typed from the schema. */\nexport interface IdbQueryOptions<S extends IdbSchema = IdbRegisteredSchema> {\n ruleParams: IdbSchemaRuleParams<S>\n}\n\n/** Pagination cursors, keyed by the query's top-level namespace keys. */\nexport type IdbQueryPageInfo<Q = Record<string, unknown>> = PageInfoResponse<Q>\n"]}
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/query/types.ts"],"names":[],"mappings":"","sourcesContent":["/**\n * The query-domain types: the authoring shape (`IdbQuery` and its node\n * types — also the completion source for `q`/`useQuery` literals), the\n * type-level shaping mirror (`IdbQueryData`, `IdbQueryEntity`), and the\n * renamed official types (`IdbQueryPageInfo`, `IdbQueryOptions`, …).\n */\nimport type {\n Cursor,\n DataAttrDef,\n PageInfoResponse,\n ResolveAttrs,\n} from '@instantdb/core'\nimport type { IdbSchema } from '../schema/defineSchema.js'\nimport type {\n AttrsOf,\n AttrValue,\n FieldKeys,\n IndexedFieldKeys,\n LinkCardinality,\n LinkLabels,\n LinkTarget,\n PrimitiveFieldKeys,\n UniqueFieldKeys,\n WireValue,\n} from '../schema/fields.js'\nimport type { IdbRegisteredSchema } from '../schema/register.js'\nimport type { IdbNamespaceName } from '../schema/types.js'\nimport type { Expand, UnionToIntersection } from '../schema/util.js'\nimport type { HasPick, ResolvedScopeKey } from './keys.js'\n\nexport type {\n FieldKeys,\n IndexedFieldKeys,\n LinkLabels,\n LinkTarget,\n UniqueFieldKeys,\n WireValue,\n} from '../schema/fields.js'\n\n// ==========\n// hop counting — validation and completions stop at 3 hops (matches core)\n\ntype Depth = readonly unknown[]\nexport type MaxHops = 3\nexport type NextHop<D extends Depth> = D['length'] extends MaxHops ? D : [...D, unknown]\n\n// ==========\n// where authoring\n\n/**\n * The operator object for one field. Every operator is present so the\n * completion list and the diagnostic are both intentional: operators the\n * field doesn't support are typed as the `QERR_*` message explaining why.\n */\nexport interface IdbWhereOps<V, _IsRequired, IsIndexed> {\n $in?: readonly WireValue<V>[]\n $not?: WireValue<V>\n $ne?: WireValue<V>\n $gt?: ComparableValue<V, IsIndexed, '$gt'>\n $lt?: ComparableValue<V, IsIndexed, '$lt'>\n $gte?: ComparableValue<V, IsIndexed, '$gte'>\n $lte?: ComparableValue<V, IsIndexed, '$lte'>\n $like?: StringPattern<V, IsIndexed, '$like'>\n $ilike?: StringPattern<V, IsIndexed, '$ilike'>\n $isNull?: boolean\n}\n\ntype ComparableValue<V, IsIndexed, Op extends string> = [V] extends [\n string | number | boolean | Date,\n]\n ? IsIndexed extends true\n ? WireValue<V>\n : `QERR_WHERE_OPERATOR_INVALID: Operator ${Op} is only available for indexed fields with a checked type.`\n : `QERR_WHERE_OPERATOR_INVALID: Operator ${Op} is only available for indexed fields with a checked type.`\n\ntype StringPattern<V, IsIndexed, Op extends string> = [V] extends [string]\n ? IsIndexed extends true\n ? string\n : `QERR_WHERE_OPERATOR_INVALID: Operator ${Op} is only available for indexed string fields.`\n : `QERR_WHERE_OPERATOR_INVALID: Operator ${Op} is only available for indexed string fields.`\n\ntype FieldWhereValue<A> = A extends DataAttrDef<infer V, infer R, infer I, any>\n ? WireValue<V> | IdbWhereOps<V, R, I> | undefined\n : never\n\ntype IdAttr = DataAttrDef<string, false, true, true>\n\n/**\n * The where shape: fields, `id`, link labels (matching the linked entity's\n * id), linked dot-paths up to 3 hops, and `and`/`or`. `undefined` values\n * (`$skip`) drop the clause.\n *\n * Completions are enumerated, not just validated: every dot-path the cursor\n * could complete is a key here, so `where: { ⌶ }` suggests `memberships`,\n * `memberships.user`, and `memberships.user.email` alike. The value type for\n * each path is resolved by `WhereKeyAttr` (a link leaf matches the linked\n * entity's id; a field leaf takes its own type).\n */\nexport type IdbWhereShape<S extends IdbSchema, NS extends string> = {\n [F in FieldKeys<S, NS>]?: FieldWhereValue<AttrsOf<S, NS>[F]>\n} & {\n [L in LinkLabels<S, NS>]?: FieldWhereValue<IdAttr>\n} & {\n [P in WhereDotPaths<S, NS>]?: FieldWhereValue<WhereKeyAttr<S, NS, P>>\n} & {\n id?: FieldWhereValue<IdAttr>\n and?: readonly IdbWhereShape<S, NS>[]\n or?: readonly IdbWhereShape<S, NS>[]\n}\n\n/**\n * A where leaf on a linked namespace: any field, any link label (a bare link\n * filters on the linked id), or `id`. A link label as a leaf is what lets a\n * dot-path stop on a relationship — e.g. `memberships.user`.\n */\ntype WhereLeaf<S extends IdbSchema, NS extends string>\n = FieldKeys<S, NS> | LinkLabels<S, NS> | 'id'\n\n/**\n * Linked dot-paths for `where`, hops 2 and 3 (hop 1 — fields, `id`, link\n * labels — are direct keys on the shape above). Each non-terminal segment is\n * a link label; the terminal is any `WhereLeaf`. Bounded at 3 hops by\n * construction (the fixed depth policy — [dux-spec-root.md §3.3]).\n */\ntype WhereDotPaths<S extends IdbSchema, NS extends string> = {\n [L1 in LinkLabels<S, NS>]:\n | `${L1}.${WhereLeaf<S, LinkTarget<S, NS, L1>>}`\n | {\n [L2 in LinkLabels<S, LinkTarget<S, NS, L1>>]: `${L1}.${L2}.${WhereLeaf<\n S,\n LinkTarget<S, LinkTarget<S, NS, L1>, L2>\n >}`\n }[LinkLabels<S, LinkTarget<S, NS, L1>>]\n}[LinkLabels<S, NS>]\n\n/** Resolve the attr def a where key addresses — fields, id, labels, dot-paths ≤ 3 hops. */\nexport type WhereKeyAttr<\n S extends IdbSchema,\n NS extends string,\n K extends string,\n D extends Depth = [],\n> = K extends FieldKeys<S, NS>\n ? AttrsOf<S, NS>[K]\n : K extends 'id'\n ? IdAttr\n : K extends `${infer L}.${infer Rest}`\n ? L extends LinkLabels<S, NS>\n ? D['length'] extends MaxHops\n ? never\n : WhereKeyAttr<S, LinkTarget<S, NS, L>, Rest, NextHop<D>>\n : never\n : K extends LinkLabels<S, NS>\n ? IdAttr\n : never\n\n// ==========\n// order, fields, $m authoring\n\n/** Direct indexed fields and `serverCreatedAt` — ordering never traverses links. */\nexport type IdbOrderShape<S extends IdbSchema, NS extends string> = {\n [K in IndexedFieldKeys<S, NS> | 'serverCreatedAt']?: 'asc' | 'desc'\n}\n\n/** The `fields` array type for a namespace. */\nexport type IdbQueryFields<\n NS extends IdbNamespaceName<S>,\n S extends IdbSchema = IdbRegisteredSchema,\n> = (FieldKeys<S, NS> | 'id')[]\n\n/**\n * One `$m` transform:\n * - `indexBy` — a unique field (or `id`); yields `Record<string, Entity>`\n * - `groupBy` — a primitive field; yields `Record<string, Entity[]>`\n * - `at` — a position (negative from the end); yields `Entity | undefined`\n */\nexport type IdbMTransform<S extends IdbSchema, NS extends string>\n = | { indexBy: UniqueFieldKeys<S, NS> | 'id' }\n | { groupBy: PrimitiveFieldKeys<S, NS> }\n | { at: number }\n\nexport type IdbMBlock<S extends IdbSchema, NS extends string> = Record<\n string,\n IdbMTransform<S, NS>\n>\n\n// ==========\n// the authoring shape\n\ninterface IdbDuxDollarKeys {\n /** Coerce this scope to `Entity | undefined` and singularize its key. */\n $only?: true\n /** Pick the element at this position (negative from the end); singularizes the key. */\n $at?: number\n /** Rename this scope's result key explicitly — always wins. */\n $as?: string\n}\n\ninterface IdbPaginationKeys {\n last?: number\n first?: number\n offset?: number\n after?: Cursor\n afterInclusive?: boolean\n before?: Cursor\n beforeInclusive?: boolean\n}\n\nexport type IdbDollar<\n S extends IdbSchema,\n NS extends string,\n TopLevel extends boolean,\n> = {\n where?: IdbWhereShape<S, NS>\n order?: IdbOrderShape<S, NS>\n fields?: readonly (FieldKeys<S, NS> | 'id')[]\n limit?: number\n} & IdbDuxDollarKeys\n& (TopLevel extends true ? IdbPaginationKeys : {})\n\n/** One scope of a query: `$`, `$m`, and nested link labels (3 hops, then open). */\nexport type IdbQueryNode<\n S extends IdbSchema,\n NS extends string,\n D extends Depth = [],\n TopLevel extends boolean = false,\n> = D['length'] extends MaxHops\n ? Record<string, any>\n : {\n $?: IdbDollar<S, NS, TopLevel>\n $m?: IdbMBlock<S, NS>\n } & {\n [L in LinkLabels<S, NS>]?: IdbQueryNode<S, LinkTarget<S, NS, L>, NextHop<D>>\n }\n\n/**\n * The valid-query-object type — handy for function params. Authoring\n * completions for `q`/`useQuery` literals come from this shape; per-call\n * validation is `IdbValidQuery` (`validation.ts`).\n */\nexport type IdbQuery<S extends IdbSchema = IdbRegisteredSchema> = {\n [NS in IdbNamespaceName<S>]?: IdbQueryNode<S, NS, [], true>\n}\n\n/** The subquery shape for one namespace — what `IdbQueryEntity` accepts. */\nexport type IdbQuerySubquery<\n NS extends IdbNamespaceName<S>,\n S extends IdbSchema = IdbRegisteredSchema,\n> = IdbQueryNode<S, NS>\n\n// ==========\n// the shaping mirror — must agree with shapeResult.ts by construction\n\ntype EntityFields<S extends IdbSchema, NS extends string, Node> = Node extends {\n $: { fields: infer F extends readonly string[] }\n}\n ? Pick<\n ResolveAttrs<S['entities'], NS, false>,\n Exclude<F[number], 'id'> & keyof ResolveAttrs<S['entities'], NS, false>\n >\n : ResolveAttrs<S['entities'], NS, false>\n\ntype ChildKeys<Node> = Exclude<keyof Node & string, '$' | '$m'>\n\ntype ShapedChildren<S extends IdbSchema, NS extends string, Node> = {\n [L in ChildKeys<Node> as L extends LinkLabels<S, NS>\n ? ResolvedScopeKey<S, NS, L, Node[L]>\n : never]: L extends LinkLabels<S, NS> ? ChildData<S, NS, L, Node[L]> : never\n}\n\ntype ChildData<\n S extends IdbSchema,\n NS extends string,\n L extends LinkLabels<S, NS>,\n Node,\n> = HasPick<Node> extends true\n ? ShapedEntity<S, LinkTarget<S, NS, L>, Node> | undefined\n : LinkCardinality<S, NS, L> extends 'one'\n ? ShapedEntity<S, LinkTarget<S, NS, L>, Node> | undefined\n : ShapedEntity<S, LinkTarget<S, NS, L>, Node>[]\n\ntype MValue<T, E> = T extends { indexBy: any }\n ? Record<string, E>\n : T extends { groupBy: any }\n ? Record<string, E[]>\n : T extends { at: number }\n ? E | undefined\n : never\n\n/** The `$m` sibling keys a scope contributes beside its own result key. */\ntype MSiblings<S extends IdbSchema, NS extends string, Node> = Node extends {\n $m: infer M\n}\n ? { -readonly [Label in keyof M]: MValue<M[Label], ShapedEntity<S, NS, Node>> }\n : {}\n\ntype ChildrenMSiblings<S extends IdbSchema, NS extends string, Node> = [\n ChildKeys<Node>,\n] extends [never]\n ? {}\n : UnionToIntersection<\n {\n [L in ChildKeys<Node>]: L extends LinkLabels<S, NS>\n ? MSiblings<S, LinkTarget<S, NS, L>, Node[L]>\n : {}\n }[ChildKeys<Node>]\n >\n\ntype ShapedEntity<S extends IdbSchema, NS extends string, Node> = Expand<\n { id: string } & EntityFields<S, NS, Node>\n & ShapedChildren<S, NS, Node>\n & ChildrenMSiblings<S, NS, Node>\n>\n\n/**\n * An entity shaped by query syntax — `$` and `$m` fully supported, including\n * `$: { fields }`.\n */\nexport type IdbQueryEntity<\n NS extends IdbNamespaceName<S>,\n Subquery = {},\n S extends IdbSchema = IdbRegisteredSchema,\n> = ShapedEntity<S, NS, Subquery>\n\ntype TopScopeData<S extends IdbSchema, NS extends string, Node>\n = HasPick<Node> extends true\n ? ShapedEntity<S, NS, Node> | undefined\n : ShapedEntity<S, NS, Node>[]\n\ntype TopMSiblings<Q, S extends IdbSchema> = [keyof Q] extends [never]\n ? {}\n : UnionToIntersection<\n {\n [K in keyof Q & string]: K extends IdbNamespaceName<S>\n ? MSiblings<S, K, Q[K]>\n : {}\n }[keyof Q & string]\n >\n\n/**\n * The shaped data for a query — the exact shape `useQuery`, `queryOnce`, and\n * `adminDb.query` deliver: normalized arrays, `$only`/`$at` coercion,\n * singularized/`$as` keys, `$m` siblings.\n */\nexport type IdbQueryData<Q, S extends IdbSchema = IdbRegisteredSchema> = Expand<\n {\n [K in keyof Q & string as K extends IdbNamespaceName<S>\n ? ResolvedScopeKey<S, null, K, Q[K]>\n : never]: K extends IdbNamespaceName<S> ? TopScopeData<S, K, Q[K]> : never\n } & TopMSiblings<Q, S>\n>\n\n// ==========\n// options + pageInfo\n\ntype NamespaceRuleParams<RP> = RP extends Record<string, DataAttrDef<any, any, any, any>>\n ? { [K in keyof RP]?: AttrValue<RP[K]> }\n : {}\n\n/**\n * Every rule param declared in the schema, merged and optional — the\n * query-level companion to the per-namespace tx typing.\n */\nexport type IdbSchemaRuleParams<S extends IdbSchema = IdbRegisteredSchema> = Expand<\n UnionToIntersection<\n {\n [NS in keyof S['$dux']['namespaces']]: NamespaceRuleParams<\n S['$dux']['namespaces'][NS]['ruleParams']\n >\n }[keyof S['$dux']['namespaces']]\n >\n>\n\n/** Per-call query options — `ruleParams` typed from the schema. */\nexport interface IdbQueryOptions<S extends IdbSchema = IdbRegisteredSchema> {\n ruleParams: IdbSchemaRuleParams<S>\n}\n\n/** Pagination cursors, keyed by the query's top-level namespace keys. */\nexport type IdbQueryPageInfo<Q = Record<string, unknown>> = PageInfoResponse<Q>\n"]}
|
|
@@ -16,13 +16,13 @@
|
|
|
16
16
|
* The `QERR_*` codes: ROOT_KEY_UNKNOWN, NESTED_KEY_UNKNOWN, OPTION_UNKNOWN,
|
|
17
17
|
* OPTION_TOP_LEVEL_ONLY, WHERE_KEY_UNKNOWN, WHERE_VALUE_TYPE,
|
|
18
18
|
* WHERE_OPERATOR_INVALID (lives in the ops shape, `types.ts`),
|
|
19
|
-
* ORDER_KEY_INVALID,
|
|
20
|
-
* M_INDEXBY_NOT_UNIQUE, M_GROUPBY_NOT_PRIMITIVE.
|
|
19
|
+
* ORDER_KEY_INVALID, RESULT_KEY_RESERVED, M_LABEL_COLLISION,
|
|
20
|
+
* M_TRANSFORM_UNKNOWN, M_INDEXBY_NOT_UNIQUE, M_GROUPBY_NOT_PRIMITIVE.
|
|
21
21
|
*/
|
|
22
22
|
import type { DataAttrDef } from '@instantdb/core';
|
|
23
23
|
import type { IdbSchema } from '../schema/defineSchema.js';
|
|
24
24
|
import type { IdbNamespaceName } from '../schema/types.js';
|
|
25
|
-
import type { ResolvedScopeKey } from './keys.js';
|
|
25
|
+
import type { ReservedResultKey, ResolvedScopeKey } from './keys.js';
|
|
26
26
|
import type { FieldKeys, IdbQuery, IndexedFieldKeys, LinkLabels, LinkTarget, MaxHops, NextHop, UniqueFieldKeys, WhereKeyAttr, WireValue } from './types.js';
|
|
27
27
|
type Depth = readonly unknown[];
|
|
28
28
|
type TypeName<V> = V extends string ? 'string' : V extends number ? 'number' : V extends boolean ? 'boolean' : V extends Date ? 'date' : 'json';
|
|
@@ -50,12 +50,16 @@ type ValidMTransform<T, S extends IdbSchema, NS extends string> = T extends obje
|
|
|
50
50
|
type ValidNode<Node, S extends IdbSchema, NS extends string, ParentNS extends string | null, Key extends string, D extends Depth, TopLevel extends boolean> = Node extends object ? {
|
|
51
51
|
[K in keyof Node & string]: K extends '$' ? ValidDollar<Node[K], S, NS, TopLevel> : K extends '$m' ? ValidM<Node[K], S, NS, ResolvedScopeKey<S, ParentNS, Key, Node>> : K extends LinkLabels<S, NS> ? ValidNode<Node[K], S, LinkTarget<S, NS, K>, NS, K, NextHop<D>, false> : D['length'] extends MaxHops ? unknown : `QERR_QUERY_NESTED_KEY_UNKNOWN: ${K} is not a valid nested key on ${NS}`;
|
|
52
52
|
} : unknown;
|
|
53
|
+
type TopMLabels<Node> = Node extends {
|
|
54
|
+
$m: infer M;
|
|
55
|
+
} ? keyof M & string : never;
|
|
56
|
+
type ReservedScopeMsg<S extends IdbSchema, Key extends string, Node> = ResolvedScopeKey<S, null, Key, Node> extends ReservedResultKey ? `QERR_RESULT_KEY_RESERVED: result key '${ResolvedScopeKey<S, null, Key, Node> & string}' is reserved — it clashes with a hook result field; rename this scope` : [Extract<TopMLabels<Node>, ReservedResultKey>] extends [never] ? false : `QERR_RESULT_KEY_RESERVED: $m label '${Extract<TopMLabels<Node>, ReservedResultKey>}' is reserved — it clashes with a hook result field; choose another label`;
|
|
53
57
|
/**
|
|
54
58
|
* The per-call validating type. Use as a self-referential constraint:
|
|
55
59
|
* `<Q extends IdbValidQuery<Q, S>>(query: Q)`.
|
|
56
60
|
*/
|
|
57
61
|
export type IdbValidQuery<Q, S extends IdbSchema> = IdbQuery<S> & {
|
|
58
|
-
[K in keyof Q & string]: K extends IdbNamespaceName<S> ? ValidNode<Q[K], S, K, null, K, [], true> : `QERR_QUERY_ROOT_KEY_UNKNOWN: ${K} is not a valid top-level namespace`;
|
|
62
|
+
[K in keyof Q & string]: K extends IdbNamespaceName<S> ? ReservedScopeMsg<S, K, Q[K]> extends infer Msg extends string ? Msg : ValidNode<Q[K], S, K, null, K, [], true> : `QERR_QUERY_ROOT_KEY_UNKNOWN: ${K} is not a valid top-level namespace`;
|
|
59
63
|
};
|
|
60
64
|
export {};
|
|
61
65
|
//# sourceMappingURL=validation.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../../src/query/validation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAClD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAA;AAC1D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AAC1D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAA;
|
|
1
|
+
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../../src/query/validation.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../../../src/query/validation.ts"],"names":[],"mappings":"","sourcesContent":["/**\n * The one validation surface — applied by `q`, `defineQuery`, and every\n * query-accepting API on `/vue` and `/admin`.\n *\n * `IdbValidQuery<Q, S>` is an intersection of two arms:\n *\n * 1. the input-independent authoring shape (`IdbQuery<S>`, `types.ts`) —\n * completions and structural/value checking;\n * 2. an input-mapped arm that re-walks the *user's* keys and types each\n * violation as a `QERR_*` message string, so the error lands on the\n * offending key and carries an actionable, stable-coded message.\n *\n * Valid positions in arm 2 resolve to `unknown` (the intersection identity),\n * so it adds nothing where the query is fine.\n *\n * The `QERR_*` codes: ROOT_KEY_UNKNOWN, NESTED_KEY_UNKNOWN, OPTION_UNKNOWN,\n * OPTION_TOP_LEVEL_ONLY, WHERE_KEY_UNKNOWN, WHERE_VALUE_TYPE,\n * WHERE_OPERATOR_INVALID (lives in the ops shape, `types.ts`),\n * ORDER_KEY_INVALID,
|
|
1
|
+
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../../../src/query/validation.ts"],"names":[],"mappings":"","sourcesContent":["/**\n * The one validation surface — applied by `q`, `defineQuery`, and every\n * query-accepting API on `/vue` and `/admin`.\n *\n * `IdbValidQuery<Q, S>` is an intersection of two arms:\n *\n * 1. the input-independent authoring shape (`IdbQuery<S>`, `types.ts`) —\n * completions and structural/value checking;\n * 2. an input-mapped arm that re-walks the *user's* keys and types each\n * violation as a `QERR_*` message string, so the error lands on the\n * offending key and carries an actionable, stable-coded message.\n *\n * Valid positions in arm 2 resolve to `unknown` (the intersection identity),\n * so it adds nothing where the query is fine.\n *\n * The `QERR_*` codes: ROOT_KEY_UNKNOWN, NESTED_KEY_UNKNOWN, OPTION_UNKNOWN,\n * OPTION_TOP_LEVEL_ONLY, WHERE_KEY_UNKNOWN, WHERE_VALUE_TYPE,\n * WHERE_OPERATOR_INVALID (lives in the ops shape, `types.ts`),\n * ORDER_KEY_INVALID, RESULT_KEY_RESERVED, M_LABEL_COLLISION,\n * M_TRANSFORM_UNKNOWN, M_INDEXBY_NOT_UNIQUE, M_GROUPBY_NOT_PRIMITIVE.\n */\nimport type { DataAttrDef } from '@instantdb/core'\nimport type { IdbSchema } from '../schema/defineSchema.js'\nimport type { IdbNamespaceName } from '../schema/types.js'\nimport type { ReservedResultKey, ResolvedScopeKey } from './keys.js'\nimport type {\n FieldKeys,\n IdbQuery,\n IndexedFieldKeys,\n LinkLabels,\n LinkTarget,\n MaxHops,\n NextHop,\n UniqueFieldKeys,\n WhereKeyAttr,\n WireValue,\n} from './types.js'\n\ntype Depth = readonly unknown[]\n\ntype TypeName<V> = V extends string\n ? 'string'\n : V extends number\n ? 'number'\n : V extends boolean\n ? 'boolean'\n : V extends Date\n ? 'date'\n : 'json'\n\n// ==========\n// $ validation\n\ntype SharedDollarKeys = 'where' | 'order' | 'fields' | 'limit' | '$only' | '$at' | '$as'\ntype PaginationKeys\n = | 'last'\n | 'first'\n | 'offset'\n | 'after'\n | 'afterInclusive'\n | 'before'\n | 'beforeInclusive'\n\ntype ValidDollar<\n Dollar,\n S extends IdbSchema,\n NS extends string,\n TopLevel extends boolean,\n> = Dollar extends object\n ? {\n [K in keyof Dollar & string]: K extends 'where'\n ? ValidWhere<Dollar[K], S, NS>\n : K extends 'order'\n ? ValidOrder<Dollar[K], S, NS>\n : K extends SharedDollarKeys\n ? unknown\n : K extends PaginationKeys\n ? TopLevel extends true\n ? unknown\n : `QERR_QUERY_OPTION_TOP_LEVEL_ONLY: ${K} is only available on top-level scopes`\n : `QERR_QUERY_OPTION_UNKNOWN: ${K} is not a valid query option`\n }\n : unknown\n\n// ==========\n// where validation\n\ntype ValidWhere<W, S extends IdbSchema, NS extends string> = W extends object\n ? {\n [K in keyof W & string]: K extends 'and' | 'or'\n ? ValidWhereList<W[K], S, NS>\n : [WhereKeyAttr<S, NS, K>] extends [never]\n ? `QERR_WHERE_KEY_UNKNOWN: ${K} is not a valid where key on ${NS}`\n : WhereKeyAttr<S, NS, K> extends DataAttrDef<infer V, any, any, any>\n ? ValidWhereValue<W[K], V, K>\n : `QERR_WHERE_KEY_UNKNOWN: ${K} is not a valid where key on ${NS}`\n }\n : unknown\n\ntype ValidWhereList<L, S extends IdbSchema, NS extends string> = L extends readonly any[]\n ? { [I in keyof L]: ValidWhere<L[I], S, NS> }\n : unknown\n\ntype ValidWhereValue<Input, V, K extends string> = Input extends undefined\n ? unknown // $skip — the clause is dropped\n : Input extends WireValue<V>\n ? unknown\n : Input extends object\n ? unknown // operator objects are validated by the authoring shape\n : `QERR_WHERE_VALUE_TYPE: Type '${TypeName<Input>}' is not assignable to field '${K}' of type ${TypeName<V>}`\n\n// ==========\n// order validation\n\ntype ValidOrder<O, S extends IdbSchema, NS extends string> = O extends object\n ? {\n [K in keyof O & string]: K extends IndexedFieldKeys<S, NS> | 'serverCreatedAt'\n ? unknown\n : `QERR_ORDER_KEY_INVALID: ${K} is not orderable — order accepts indexed fields and serverCreatedAt`\n }\n : unknown\n\n// ==========\n// $m validation\n\ntype ValidM<\n M,\n S extends IdbSchema,\n NS extends string,\n OwnKey extends string,\n> = M extends object\n ? {\n [Label in keyof M & string]: Label extends OwnKey\n ? `QERR_M_LABEL_COLLISION: ${Label} collides with the scope's own result key`\n : ValidMTransform<M[Label], S, NS>\n }\n : unknown\n\ntype ValidMTransform<T, S extends IdbSchema, NS extends string> = T extends object\n ? {\n [K in keyof T & string]: K extends 'indexBy'\n ? T[K] extends UniqueFieldKeys<S, NS> | 'id'\n ? unknown\n : `QERR_M_INDEXBY_NOT_UNIQUE: indexBy requires a unique field on ${NS}`\n : K extends 'groupBy'\n ? T[K] extends FieldKeys<S, NS>\n ? unknown\n : `QERR_M_GROUPBY_NOT_PRIMITIVE: groupBy requires a string, number, or boolean field on ${NS}`\n : K extends 'at'\n ? unknown\n : `QERR_M_TRANSFORM_UNKNOWN: ${K} is not a valid $m transform — use indexBy, groupBy, or at`\n }\n : unknown\n\n// ==========\n// node + query validation\n\ntype ValidNode<\n Node,\n S extends IdbSchema,\n NS extends string,\n ParentNS extends string | null,\n Key extends string,\n D extends Depth,\n TopLevel extends boolean,\n> = Node extends object\n ? {\n [K in keyof Node & string]: K extends '$'\n ? ValidDollar<Node[K], S, NS, TopLevel>\n : K extends '$m'\n ? ValidM<Node[K], S, NS, ResolvedScopeKey<S, ParentNS, Key, Node>>\n : K extends LinkLabels<S, NS>\n ? ValidNode<Node[K], S, LinkTarget<S, NS, K>, NS, K, NextHop<D>, false>\n : D['length'] extends MaxHops\n ? unknown\n : `QERR_QUERY_NESTED_KEY_UNKNOWN: ${K} is not a valid nested key on ${NS}`\n }\n : unknown\n\n// ==========\n// result-key collision — a top-level output key that would clash with a hook\n// result field (`isLoading`, `error`, `refs`, `state`, …). Catches `$as` to a\n// reserved name and singularization that lands on one (e.g. `states` → `state`)\n// alike, because both flow through `ResolvedScopeKey`. Nested scopes can't\n// collide, so only the top level is checked.\n\ntype TopMLabels<Node> = Node extends { $m: infer M } ? keyof M & string : never\n\ntype ReservedScopeMsg<\n S extends IdbSchema,\n Key extends string,\n Node,\n> = ResolvedScopeKey<S, null, Key, Node> extends ReservedResultKey\n ? `QERR_RESULT_KEY_RESERVED: result key '${ResolvedScopeKey<S, null, Key, Node> & string}' is reserved — it clashes with a hook result field; rename this scope`\n : [Extract<TopMLabels<Node>, ReservedResultKey>] extends [never]\n ? false\n : `QERR_RESULT_KEY_RESERVED: $m label '${Extract<TopMLabels<Node>, ReservedResultKey>}' is reserved — it clashes with a hook result field; choose another label`\n\n/**\n * The per-call validating type. Use as a self-referential constraint:\n * `<Q extends IdbValidQuery<Q, S>>(query: Q)`.\n */\nexport type IdbValidQuery<Q, S extends IdbSchema> = IdbQuery<S> & {\n [K in keyof Q & string]: K extends IdbNamespaceName<S>\n ? ReservedScopeMsg<S, K, Q[K]> extends infer Msg extends string\n ? Msg\n : ValidNode<Q[K], S, K, null, K, [], true>\n : `QERR_QUERY_ROOT_KEY_UNKNOWN: ${K} is not a valid top-level namespace`\n}\n"]}
|
package/package.json
CHANGED