ugly-app 0.1.842 → 0.1.843
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/dist/cli/version.d.ts +1 -1
- package/dist/cli/version.js +1 -1
- package/dist/server/sqlite/assertIndexed.d.ts +1 -3
- package/dist/server/sqlite/assertIndexed.d.ts.map +1 -1
- package/dist/server/sqlite/assertIndexed.js +3 -5
- package/dist/server/sqlite/assertIndexed.js.map +1 -1
- package/dist/server/userPublicCollection.d.ts +10 -10
- package/dist/shared/DB.d.ts +92 -83
- package/dist/shared/DB.d.ts.map +1 -1
- package/dist/shared/DB.js +5 -1
- package/dist/shared/DB.js.map +1 -1
- package/dist/shared/dbIndexTypes.d.ts +71 -0
- package/dist/shared/dbIndexTypes.d.ts.map +1 -0
- package/dist/shared/dbIndexTypes.js +7 -0
- package/dist/shared/dbIndexTypes.js.map +1 -0
- package/dist/shared/dbTypeChecks.d.ts +171 -0
- package/dist/shared/dbTypeChecks.d.ts.map +1 -0
- package/dist/shared/dbTypeChecks.js +49 -0
- package/dist/shared/dbTypeChecks.js.map +1 -0
- package/package.json +1 -1
- package/src/cli/version.ts +1 -1
- package/src/server/sqlite/assertIndexed.test.ts +0 -6
- package/src/server/sqlite/assertIndexed.ts +2 -4
- package/src/shared/DB.ts +63 -26
- package/src/shared/dbIndexTypes.ts +88 -0
- package/src/shared/dbTypeChecks.ts +87 -0
package/dist/cli/version.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const CLI_VERSION = "0.1.
|
|
1
|
+
export declare const CLI_VERSION = "0.1.843";
|
|
2
2
|
//# sourceMappingURL=version.d.ts.map
|
package/dist/cli/version.js
CHANGED
|
@@ -14,7 +14,5 @@ export declare class UnindexedQueryError extends Error {
|
|
|
14
14
|
}
|
|
15
15
|
/** Every field named in any declared index (composite indexes credit all fields). */
|
|
16
16
|
export declare function coveredFields(indexes?: IndexDef[]): Set<string>;
|
|
17
|
-
export declare function assertIndexed(collection: string, indexes: IndexDef[] | undefined, filter?: Record<string, unknown>, sort?: Record<string, 1 | -1
|
|
18
|
-
allowScan?: boolean;
|
|
19
|
-
}): void;
|
|
17
|
+
export declare function assertIndexed(collection: string, indexes: IndexDef[] | undefined, filter?: Record<string, unknown>, sort?: Record<string, 1 | -1>): void;
|
|
20
18
|
//# sourceMappingURL=assertIndexed.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"assertIndexed.d.ts","sourceRoot":"","sources":["../../../src/server/sqlite/assertIndexed.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAKnD,qBAAa,mBAAoB,SAAQ,KAAK;aAE1B,UAAU,EAAE,MAAM;aAClB,KAAK,EAAE,MAAM;gBADb,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM;CAShC;AAED,qFAAqF;AACrF,wBAAgB,aAAa,CAAC,OAAO,CAAC,EAAE,QAAQ,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,CAM/D;AAED,wBAAgB,aAAa,CAC3B,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,QAAQ,EAAE,GAAG,SAAS,EAC/B,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"assertIndexed.d.ts","sourceRoot":"","sources":["../../../src/server/sqlite/assertIndexed.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAKnD,qBAAa,mBAAoB,SAAQ,KAAK;aAE1B,UAAU,EAAE,MAAM;aAClB,KAAK,EAAE,MAAM;gBADb,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM;CAShC;AAED,qFAAqF;AACrF,wBAAgB,aAAa,CAAC,OAAO,CAAC,EAAE,QAAQ,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,CAM/D;AAED,wBAAgB,aAAa,CAC3B,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,QAAQ,EAAE,GAAG,SAAS,EAC/B,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,GAC5B,IAAI,CAcN"}
|
|
@@ -5,8 +5,8 @@ export class UnindexedQueryError extends Error {
|
|
|
5
5
|
field;
|
|
6
6
|
constructor(collection, field) {
|
|
7
7
|
super(`Collection "${collection}" filters/sorts on "${field}" which has no index. ` +
|
|
8
|
-
`Add to meta.indexes: { fields: { ${field}: 1 } } — or
|
|
9
|
-
`for a deliberate
|
|
8
|
+
`Add to meta.indexes: { fields: { ${field}: 1 } } — or use db.getQuery(...) ` +
|
|
9
|
+
`for a deliberate unindexed scan.`);
|
|
10
10
|
this.collection = collection;
|
|
11
11
|
this.field = field;
|
|
12
12
|
this.name = 'UnindexedQueryError';
|
|
@@ -21,9 +21,7 @@ export function coveredFields(indexes) {
|
|
|
21
21
|
}
|
|
22
22
|
return covered;
|
|
23
23
|
}
|
|
24
|
-
export function assertIndexed(collection, indexes, filter, sort
|
|
25
|
-
if (opts?.allowScan)
|
|
26
|
-
return;
|
|
24
|
+
export function assertIndexed(collection, indexes, filter, sort) {
|
|
27
25
|
const covered = coveredFields(indexes);
|
|
28
26
|
const fields = new Set();
|
|
29
27
|
if (filter)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"assertIndexed.js","sourceRoot":"","sources":["../../../src/server/sqlite/assertIndexed.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAEtD,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC,CAAC,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC;AAE5E,MAAM,OAAO,mBAAoB,SAAQ,KAAK;IAE1B;IACA;IAFlB,YACkB,UAAkB,EAClB,KAAa;QAE7B,KAAK,CACH,eAAe,UAAU,uBAAuB,KAAK,wBAAwB;YAC3E,oCAAoC,KAAK,
|
|
1
|
+
{"version":3,"file":"assertIndexed.js","sourceRoot":"","sources":["../../../src/server/sqlite/assertIndexed.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAEtD,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC,CAAC,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC;AAE5E,MAAM,OAAO,mBAAoB,SAAQ,KAAK;IAE1B;IACA;IAFlB,YACkB,UAAkB,EAClB,KAAa;QAE7B,KAAK,CACH,eAAe,UAAU,uBAAuB,KAAK,wBAAwB;YAC3E,oCAAoC,KAAK,oCAAoC;YAC7E,kCAAkC,CACrC,CAAC;QAPc,eAAU,GAAV,UAAU,CAAQ;QAClB,UAAK,GAAL,KAAK,CAAQ;QAO7B,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC;IACpC,CAAC;CACF;AAED,qFAAqF;AACrF,MAAM,UAAU,aAAa,CAAC,OAAoB;IAChD,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAClC,KAAK,MAAM,GAAG,IAAI,OAAO,IAAI,EAAE,EAAE,CAAC;QAChC,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC;YAAE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAClE,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,aAAa,CAC3B,UAAkB,EAClB,OAA+B,EAC/B,MAAgC,EAChC,IAA6B;IAE7B,MAAM,OAAO,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;IAEvC,MAAM,MAAM,GAAG,IAAI,GAAG,EAAU,CAAC;IACjC,IAAI,MAAM;QAAE,KAAK,MAAM,CAAC,IAAI,iBAAiB,CAAC,MAAM,CAAC;YAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACrE,IAAI,IAAI,EAAE,CAAC;QACT,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAClC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC;gBAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;IAED,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;YAAE,MAAM,IAAI,mBAAmB,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;IAC5E,CAAC;AACH,CAAC"}
|
|
@@ -57,8 +57,8 @@ export declare function profilesGetter(ids: string[]): Promise<Record<string, Us
|
|
|
57
57
|
* });
|
|
58
58
|
*/
|
|
59
59
|
export declare const userPublicCollections: import("../shared/DB.js").DefinedCollections<{
|
|
60
|
-
userPublic: {
|
|
61
|
-
schema: z.ZodObject<{
|
|
60
|
+
readonly userPublic: {
|
|
61
|
+
readonly schema: z.ZodObject<{
|
|
62
62
|
name: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
63
63
|
avatar: z.ZodOptional<z.ZodNullable<z.ZodObject<{
|
|
64
64
|
id: z.ZodString;
|
|
@@ -93,15 +93,15 @@ export declare const userPublicCollections: import("../shared/DB.js").DefinedCol
|
|
|
93
93
|
backgroundUrl: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
94
94
|
avatarGlbUrl: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
95
95
|
}, z.core.$catchall<z.ZodUnknown>>;
|
|
96
|
-
meta: {
|
|
97
|
-
public: true;
|
|
98
|
-
trackable: false;
|
|
99
|
-
cache: {
|
|
100
|
-
ttlMs: number;
|
|
96
|
+
readonly meta: {
|
|
97
|
+
readonly public: true;
|
|
98
|
+
readonly trackable: false;
|
|
99
|
+
readonly cache: {
|
|
100
|
+
readonly ttlMs: number;
|
|
101
101
|
};
|
|
102
|
-
getter: typeof profilesGetter;
|
|
103
|
-
cascadeFrom: null;
|
|
104
|
-
db: import("../shared/DB.js").Backend;
|
|
102
|
+
readonly getter: typeof profilesGetter;
|
|
103
|
+
readonly cascadeFrom: null;
|
|
104
|
+
readonly db: import("../shared/DB.js").Backend;
|
|
105
105
|
};
|
|
106
106
|
};
|
|
107
107
|
}>;
|
package/dist/shared/DB.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
+
import type { DocOf, IndexedFilter, IndexedSort, ValidateTrackKeys } from './dbIndexTypes.js';
|
|
2
3
|
export interface DBObject {
|
|
3
4
|
/**
|
|
4
5
|
* GLOBAL primary key for the collection. A collection is ONE table shared by
|
|
@@ -148,12 +149,12 @@ export interface GetDocsOptions {
|
|
|
148
149
|
/** Derive the document type from a Zod schema, adding DBObject base fields. */
|
|
149
150
|
export type InferDocType<S extends z.ZodObject<any>> = z.infer<S> & DBObject;
|
|
150
151
|
/** What developers pass to defineCollections (schema + meta, no name or type). */
|
|
151
|
-
export interface CollectionDefInput<Keys extends readonly string[] = readonly string[]> {
|
|
152
|
+
export interface CollectionDefInput<Keys extends readonly string[] = readonly string[], Idx extends readonly IndexDef[] = readonly IndexDef[]> {
|
|
152
153
|
schema: z.ZodObject<z.ZodRawShape>;
|
|
153
154
|
meta: CollectionMeta & {
|
|
154
155
|
trackKeys?: Keys;
|
|
155
156
|
};
|
|
156
|
-
indexes?:
|
|
157
|
+
indexes?: Idx;
|
|
157
158
|
search?: {
|
|
158
159
|
fields: string[];
|
|
159
160
|
language?: string;
|
|
@@ -161,10 +162,12 @@ export interface CollectionDefInput<Keys extends readonly string[] = readonly st
|
|
|
161
162
|
vector?: VectorMeta;
|
|
162
163
|
}
|
|
163
164
|
/** Internal collection definition with inferred T. Created by defineCollections. */
|
|
164
|
-
export interface CollectionDef<T = any, Keys extends readonly string[] = readonly string[]> {
|
|
165
|
+
export interface CollectionDef<T = any, Keys extends readonly string[] = readonly string[], Idx extends readonly IndexDef[] = readonly IndexDef[]> {
|
|
165
166
|
readonly name: string;
|
|
166
167
|
/** @internal phantom field — anchors T for structural type inference. Never set by users. */
|
|
167
168
|
readonly _type?: T;
|
|
169
|
+
/** @internal phantom — anchors the literal index tuple for CollectionIndexedFields. Never set. */
|
|
170
|
+
readonly _idx?: Idx;
|
|
168
171
|
schema: z.ZodObject<z.ZodRawShape>;
|
|
169
172
|
meta: CollectionMeta & {
|
|
170
173
|
trackKeys?: Keys;
|
|
@@ -180,7 +183,7 @@ export interface CollectionDef<T = any, Keys extends readonly string[] = readonl
|
|
|
180
183
|
export type DeleteHandlers<Defs extends CollectionDefRegistry = CollectionDefRegistry> = {
|
|
181
184
|
[K in keyof Defs]?: (doc: Defs[K] extends CollectionDef<infer T> ? T : never, db: TypedDB<any>) => Promise<void>;
|
|
182
185
|
};
|
|
183
|
-
export type CollectionDefInputRegistry = Record<string, CollectionDefInput
|
|
186
|
+
export type CollectionDefInputRegistry = Record<string, CollectionDefInput<any, any>>;
|
|
184
187
|
export type CollectionDefRegistry = Record<string, Omit<CollectionDef, 'name'>>;
|
|
185
188
|
export type TrackKeyOf<C extends CollectionDef<any, any>> = C extends CollectionDef<any, infer K> ? K[number] : never;
|
|
186
189
|
/**
|
|
@@ -291,8 +294,14 @@ export interface TypedDB<_Map extends Record<string, DBObject> = Record<never, D
|
|
|
291
294
|
setDocOpOrIgnore<T>(collection: CollectionDef<T>, id: string, op: MongoUpdateOp<T>): Promise<T | null>;
|
|
292
295
|
/** Delete a document and cascade-delete all children declared via cascadeFrom. */
|
|
293
296
|
deleteDoc(collection: CollectionDef, id: string): Promise<void>;
|
|
294
|
-
/**
|
|
295
|
-
|
|
297
|
+
/**
|
|
298
|
+
* Query documents (optionally with full-text `search` and/or vector `near`).
|
|
299
|
+
* Filter and sort KEYS are constrained to the collection's indexed fields —
|
|
300
|
+
* an unindexed field is a compile error (add the index, or use `getQuery`).
|
|
301
|
+
*/
|
|
302
|
+
getDocs<C extends CollectionDef>(collection: C, filter?: IndexedFilter<C>, options?: Omit<GetDocsOptions, 'sort'> & {
|
|
303
|
+
sort?: IndexedSort<C>;
|
|
304
|
+
}): Promise<DocOf<C>[]>;
|
|
296
305
|
/**
|
|
297
306
|
* Run a sequence of writes as one trackDocs "transaction": the writes happen
|
|
298
307
|
* immediately, but their change/delete NOTIFICATIONS are coalesced and flushed
|
|
@@ -317,12 +326,16 @@ export interface TypedDB<_Map extends Record<string, DBObject> = Record<never, D
|
|
|
317
326
|
}): Promise<T[]>;
|
|
318
327
|
/** Bulk delete documents matching `match`, cascade-deleting children and calling onDelete. */
|
|
319
328
|
deleteQuery(collection: CollectionDef, match: Record<string, unknown>): Promise<void>;
|
|
320
|
-
/** Query documents
|
|
321
|
-
find<
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
329
|
+
/** Query documents. Filter/sort keys are constrained to indexed fields. */
|
|
330
|
+
find<C extends CollectionDef>(collection: C, filter?: IndexedFilter<C>, options?: {
|
|
331
|
+
sort?: IndexedSort<C>;
|
|
332
|
+
limit?: number;
|
|
333
|
+
skip?: number;
|
|
334
|
+
}): Promise<DocOf<C>[]>;
|
|
335
|
+
/** Count documents. Filter keys are constrained to indexed fields. */
|
|
336
|
+
findCount<C extends CollectionDef>(collection: C, filter?: IndexedFilter<C>): Promise<number>;
|
|
337
|
+
/** Fetch a random sample. Filter keys are constrained to indexed fields. */
|
|
338
|
+
findRandom<C extends CollectionDef>(collection: C, filter?: IndexedFilter<C>, limit?: number): Promise<DocOf<C>[]>;
|
|
326
339
|
/** Bulk delete documents matching a typed filter, with cascade deletes and onDelete hooks. */
|
|
327
340
|
deleteWhere<T extends DBObject>(collection: CollectionDef<T>, filter: TypedFilter<T>): Promise<void>;
|
|
328
341
|
/** Fetch a single document by collection name (dynamic/untyped access). */
|
|
@@ -383,13 +396,17 @@ export interface TypedDB<_Map extends Record<string, DBObject> = Record<never, D
|
|
|
383
396
|
export type InjectableDb = Pick<TypedDB, 'getDoc' | 'getByIds' | 'getDocs' | 'getQuery' | 'setDoc' | 'setDocFields' | 'setDocFieldsOrIgnore' | 'setDocFieldsOrCreate' | 'setDocOp' | 'deleteDoc' | 'deleteQuery' | 'batch'>;
|
|
384
397
|
/** Return shape of {@link defineCollections}: each input key mapped to a fully-typed CollectionDef. */
|
|
385
398
|
export type DefinedCollections<Defs extends CollectionDefInputRegistry> = {
|
|
386
|
-
[K in keyof Defs & string]: CollectionDef<InferDocType<Defs[K]['schema']
|
|
399
|
+
[K in keyof Defs & string]: CollectionDef<InferDocType<Defs[K]['schema']>, Defs[K]['meta'] extends {
|
|
400
|
+
trackKeys?: infer TK;
|
|
401
|
+
} ? TK extends readonly string[] ? TK : readonly string[] : readonly string[], Defs[K]['indexes'] extends readonly IndexDef[] ? Defs[K]['indexes'] : readonly []> & {
|
|
387
402
|
name: K;
|
|
388
403
|
schema: Defs[K]['schema'];
|
|
389
404
|
meta: Defs[K]['meta'];
|
|
390
405
|
};
|
|
391
406
|
};
|
|
392
|
-
export declare function defineCollections<Defs extends CollectionDefInputRegistry>(defs: Defs
|
|
407
|
+
export declare function defineCollections<const Defs extends CollectionDefInputRegistry>(defs: Defs & {
|
|
408
|
+
[K in keyof Defs]: ValidateTrackKeys<Defs[K]>;
|
|
409
|
+
}): DefinedCollections<Defs>;
|
|
393
410
|
export interface IndexDef {
|
|
394
411
|
fields: Record<string, 1 | -1>;
|
|
395
412
|
unique?: boolean;
|
|
@@ -664,8 +681,8 @@ export interface EventLog {
|
|
|
664
681
|
experimentBranches: Record<string, string>;
|
|
665
682
|
}
|
|
666
683
|
export declare const BUILTIN_DEFS: DefinedCollections<{
|
|
667
|
-
authMagicLink: {
|
|
668
|
-
schema: z.ZodObject<{
|
|
684
|
+
readonly authMagicLink: {
|
|
685
|
+
readonly schema: z.ZodObject<{
|
|
669
686
|
email: z.ZodString;
|
|
670
687
|
tokenHash: z.ZodString;
|
|
671
688
|
expiresAt: z.ZodNumber;
|
|
@@ -673,29 +690,26 @@ export declare const BUILTIN_DEFS: DefinedCollections<{
|
|
|
673
690
|
requestIp: z.ZodNullable<z.ZodString>;
|
|
674
691
|
requestedAt: z.ZodNumber;
|
|
675
692
|
}, z.core.$strip>;
|
|
676
|
-
meta: {
|
|
677
|
-
cache: false;
|
|
678
|
-
trackable: false;
|
|
679
|
-
public: false;
|
|
680
|
-
cascadeFrom: null;
|
|
681
|
-
db: Backend;
|
|
693
|
+
readonly meta: {
|
|
694
|
+
readonly cache: false;
|
|
695
|
+
readonly trackable: false;
|
|
696
|
+
readonly public: false;
|
|
697
|
+
readonly cascadeFrom: null;
|
|
698
|
+
readonly db: Backend;
|
|
682
699
|
};
|
|
683
|
-
indexes:
|
|
684
|
-
fields: {
|
|
685
|
-
email: 1;
|
|
686
|
-
expiresAt?: never;
|
|
700
|
+
readonly indexes: readonly [{
|
|
701
|
+
readonly fields: {
|
|
702
|
+
readonly email: 1;
|
|
687
703
|
};
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
|
|
691
|
-
expiresAt: 1;
|
|
692
|
-
email?: never;
|
|
704
|
+
}, {
|
|
705
|
+
readonly fields: {
|
|
706
|
+
readonly expiresAt: 1;
|
|
693
707
|
};
|
|
694
|
-
ttl:
|
|
695
|
-
}
|
|
708
|
+
readonly ttl: 86400;
|
|
709
|
+
}];
|
|
696
710
|
};
|
|
697
|
-
authIdentity: {
|
|
698
|
-
schema: z.ZodObject<{
|
|
711
|
+
readonly authIdentity: {
|
|
712
|
+
readonly schema: z.ZodObject<{
|
|
699
713
|
provider: z.ZodEnum<{
|
|
700
714
|
"magic-link": "magic-link";
|
|
701
715
|
google: "google";
|
|
@@ -708,27 +722,25 @@ export declare const BUILTIN_DEFS: DefinedCollections<{
|
|
|
708
722
|
createdAt: z.ZodNumber;
|
|
709
723
|
lastLoginAt: z.ZodNumber;
|
|
710
724
|
}, z.core.$strip>;
|
|
711
|
-
meta: {
|
|
712
|
-
cache: false;
|
|
713
|
-
trackable: false;
|
|
714
|
-
public: false;
|
|
715
|
-
cascadeFrom: null;
|
|
716
|
-
db: Backend;
|
|
725
|
+
readonly meta: {
|
|
726
|
+
readonly cache: false;
|
|
727
|
+
readonly trackable: false;
|
|
728
|
+
readonly public: false;
|
|
729
|
+
readonly cascadeFrom: null;
|
|
730
|
+
readonly db: Backend;
|
|
717
731
|
};
|
|
718
|
-
indexes:
|
|
719
|
-
fields: {
|
|
720
|
-
providerKey: 1;
|
|
721
|
-
userId?: never;
|
|
732
|
+
readonly indexes: readonly [{
|
|
733
|
+
readonly fields: {
|
|
734
|
+
readonly providerKey: 1;
|
|
722
735
|
};
|
|
723
|
-
}
|
|
724
|
-
fields: {
|
|
725
|
-
userId: 1;
|
|
726
|
-
providerKey?: never;
|
|
736
|
+
}, {
|
|
737
|
+
readonly fields: {
|
|
738
|
+
readonly userId: 1;
|
|
727
739
|
};
|
|
728
|
-
}
|
|
740
|
+
}];
|
|
729
741
|
};
|
|
730
|
-
debugLogSession: {
|
|
731
|
-
schema: z.ZodObject<{
|
|
742
|
+
readonly debugLogSession: {
|
|
743
|
+
readonly schema: z.ZodObject<{
|
|
732
744
|
userId: z.ZodString;
|
|
733
745
|
projectId: z.ZodDefault<z.ZodString>;
|
|
734
746
|
active: z.ZodDefault<z.ZodBoolean>;
|
|
@@ -750,45 +762,42 @@ export declare const BUILTIN_DEFS: DefinedCollections<{
|
|
|
750
762
|
expiresAt: z.ZodDefault<z.ZodNumber>;
|
|
751
763
|
updatedAt: z.ZodDefault<z.ZodNumber>;
|
|
752
764
|
}, z.core.$strip>;
|
|
753
|
-
meta: {
|
|
754
|
-
cache: false;
|
|
755
|
-
trackable: true;
|
|
756
|
-
public: false;
|
|
757
|
-
cascadeFrom: null;
|
|
758
|
-
trackKeys:
|
|
759
|
-
db: Backend;
|
|
765
|
+
readonly meta: {
|
|
766
|
+
readonly cache: false;
|
|
767
|
+
readonly trackable: true;
|
|
768
|
+
readonly public: false;
|
|
769
|
+
readonly cascadeFrom: null;
|
|
770
|
+
readonly trackKeys: readonly ["userId"];
|
|
771
|
+
readonly db: Backend;
|
|
760
772
|
};
|
|
761
|
-
indexes:
|
|
762
|
-
fields: {
|
|
763
|
-
userId: 1;
|
|
764
|
-
expiresAt?: never;
|
|
773
|
+
readonly indexes: readonly [{
|
|
774
|
+
readonly fields: {
|
|
775
|
+
readonly userId: 1;
|
|
765
776
|
};
|
|
766
|
-
|
|
767
|
-
|
|
768
|
-
|
|
769
|
-
expiresAt: 1;
|
|
770
|
-
userId?: never;
|
|
777
|
+
}, {
|
|
778
|
+
readonly fields: {
|
|
779
|
+
readonly expiresAt: 1;
|
|
771
780
|
};
|
|
772
|
-
ttl:
|
|
773
|
-
}
|
|
781
|
+
readonly ttl: 3600;
|
|
782
|
+
}];
|
|
774
783
|
};
|
|
775
|
-
debugLogStream: {
|
|
776
|
-
schema: z.ZodObject<{
|
|
784
|
+
readonly debugLogStream: {
|
|
785
|
+
readonly schema: z.ZodObject<{
|
|
777
786
|
userId: z.ZodString;
|
|
778
787
|
}, z.core.$strip>;
|
|
779
|
-
meta: {
|
|
780
|
-
cache: false;
|
|
781
|
-
trackable: true;
|
|
782
|
-
public: false;
|
|
783
|
-
cascadeFrom: null;
|
|
784
|
-
trackKeys:
|
|
785
|
-
db: Backend;
|
|
788
|
+
readonly meta: {
|
|
789
|
+
readonly cache: false;
|
|
790
|
+
readonly trackable: true;
|
|
791
|
+
readonly public: false;
|
|
792
|
+
readonly cascadeFrom: null;
|
|
793
|
+
readonly trackKeys: readonly ["userId"];
|
|
794
|
+
readonly db: Backend;
|
|
786
795
|
};
|
|
787
|
-
indexes: {
|
|
788
|
-
fields: {
|
|
789
|
-
userId: 1;
|
|
796
|
+
readonly indexes: readonly [{
|
|
797
|
+
readonly fields: {
|
|
798
|
+
readonly userId: 1;
|
|
790
799
|
};
|
|
791
|
-
}
|
|
800
|
+
}];
|
|
792
801
|
};
|
|
793
802
|
}>;
|
|
794
803
|
//# sourceMappingURL=DB.d.ts.map
|
package/dist/shared/DB.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DB.d.ts","sourceRoot":"","sources":["../../src/shared/DB.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"DB.d.ts","sourceRoot":"","sources":["../../src/shared/DB.ts"],"names":[],"mappings":"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"}
|
package/dist/shared/DB.js
CHANGED
|
@@ -26,7 +26,11 @@ export function isCacheEnabled(meta) {
|
|
|
26
26
|
export function cacheTtlMs(meta) {
|
|
27
27
|
return meta && meta.cache && typeof meta.cache === 'object' ? meta.cache.ttlMs : undefined;
|
|
28
28
|
}
|
|
29
|
-
export function defineCollections(
|
|
29
|
+
export function defineCollections(
|
|
30
|
+
// The intersection re-applies the per-collection `trackKeys ⊆ indexed` check
|
|
31
|
+
// that the `CollectionDefInputRegistry` (any, any) constraint would otherwise
|
|
32
|
+
// erase — see ValidateTrackKeys.
|
|
33
|
+
defs) {
|
|
30
34
|
return Object.fromEntries(Object.entries(defs).map(([k, v]) => [k, { ...v, name: k }]));
|
|
31
35
|
}
|
|
32
36
|
export function dbDefaults() {
|
package/dist/shared/DB.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DB.js","sourceRoot":"","sources":["../../src/shared/DB.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"DB.js","sourceRoot":"","sources":["../../src/shared/DB.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAmDxB,MAAM,UAAU,aAAa,CAAC,IAAe;IAC3C,OAAO,EAAE,IAAI,EAAE,CAAC;AAClB,CAAC;AAED,yDAAyD;AACzD,MAAM,CAAC,MAAM,EAAE,GAAY,aAAa,CAAC,IAAI,CAAC,CAAC;AAC/C,oDAAoD;AACpD,MAAM,CAAC,MAAM,IAAI,GAAY,aAAa,CAAC,MAAM,CAAC,CAAC;AAEnD;;;;;GAKG;AACH,MAAM,UAAU,WAAW,CAAC,EAAuB;IACjD,IAAI,CAAC,EAAE,EAAE,CAAC;QACR,MAAM,IAAI,KAAK,CACb,6FAA6F,CAC9F,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,CAAC,IAAI,CAAC;AACjB,CAAC;AA4ED,4EAA4E;AAC5E,MAAM,UAAU,cAAc,CAAC,IAA+C;IAC5E,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC;AACvB,CAAC;AAED,4FAA4F;AAC5F,MAAM,UAAU,UAAU,CAAC,IAA+C;IACxE,OAAO,IAAI,IAAI,IAAI,CAAC,KAAK,IAAI,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AAC7F,CAAC;AAiZD,MAAM,UAAU,iBAAiB;AAC/B,6EAA6E;AAC7E,8EAA8E;AAC9E,iCAAiC;AACjC,IAA8D;IAE9D,OAAO,MAAM,CAAC,WAAW,CACvB,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CACtB,CAAC;AAC3C,CAAC;AAWD,MAAM,UAAU,UAAU;IAIxB,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;IACvB,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC;AACpD,CAAC;AAED,8EAA8E;AAC9E,0DAA0D;AAC1D,8EAA8E;AAE9E,6EAA6E;AAC7E,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC;IACrC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,uFAAuF;IACvF,oFAAoF;IACpF,uFAAuF;IACvF,+DAA+D;IAC/D,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAC5B,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACrC,CAAC,CAAC;AAoBH,MAAM,UAAU,gBAAgB,CAC9B,OAAyB;IAEzB,OAAO;QACL,GAAG,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC;QAC/C,GAAG,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC;QAC3C,MAAM,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC;QACxE,IAAI,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC;QACjD,MAAM,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC;KACtD,CAAC;AACJ,CAAC;AA0CD,8EAA8E;AAC9E,4EAA4E;AAC5E,iFAAiF;AACjF,8EAA8E;AAG9E,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;QACb,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;QACnE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;QACnD,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QACxD,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC7B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC3B,UAAU,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;QAClC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAChC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC9B,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;KACjC,CAAC;IACF,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IACvC,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IACrC,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IAChE,YAAY,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;QAC7B,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;QACrB,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QACxD,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;QACnB,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;KAC3B,CAAC,CAAC,CAAC,QAAQ,EAAE;CACf,CAAC,CAAC;AA2DH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC;IACpC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;IACrB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;IACtB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;CACnB,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC7B,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;IACpB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;IAC3E,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACnC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACjC,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACnC,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE;CAC7B,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;CACvB,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC9C,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;IAClB,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;IAC1C,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE;IACf,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACpC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC9B,YAAY,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;QAC7B,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;QACrB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;QACjB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;KACpB,CAAC,CAAC,CAAC,QAAQ,EAAE;IACd,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;IAC/D,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACjC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAClC,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,CAAC,MAAM,CAAC;IAClD,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;QACb,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;QACrB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC7B,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;QACrB,kBAAkB,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;KAChE,CAAC;IACF,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC;CACnE,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,CAAC,MAAM,CAAC;IAChD,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;IACtB,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE;IACxB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACpC,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,CAAC,MAAM,CAAC;IAClD,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,QAAQ,EAAE,CAAC,CAAC,IAAI,EAAE;CACnB,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC7C,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;IACd,SAAS,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE;IAC9B,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAChC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC7B,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC7C,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;IACpB,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACxC,CAAC,CAAC;AAiCH,8EAA8E;AAC9E,4DAA4D;AAC5D,8EAA8E;AAE9E,wDAAwD;AACxD,iEAAiE;AACjE,qEAAqE;AACrE,sEAAsE;AACtE,oEAAoE;AACpE,8CAA8C;AAC9C,sEAAsE;AACtE,4DAA4D;AAC5D,qEAAqE;AACrE,EAAE;AACF,8EAA8E;AAC9E,6EAA6E;AAC7E,6EAA6E;AAC7E,4EAA4E;AAC5E,0EAA0E;AAC1E,0EAA0E;AAC1E,gFAAgF;AAChF,gFAAgF;AAChF,2EAA2E;AAC3E,mCAAmC;AACnC,MAAM,CAAC,MAAM,YAAY,GAAG,iBAAiB,CAAC;IAC5C,aAAa,EAAE;QACb,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;YACf,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;YACjB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;YACrB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;YACrB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;YACjC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;YAChC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;SACxB,CAAC;QACF,IAAI,EAAE;YACJ,KAAK,EAAE,KAAK;YACZ,SAAS,EAAE,KAAK;YAChB,MAAM,EAAE,KAAK;YACb,WAAW,EAAE,IAAI;YACjB,EAAE,EAAE,EAAE;SACP;QACD,OAAO,EAAE;YACP,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;YACxB,2DAA2D;YAC3D,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE;SACzC;KACF;IACD,YAAY,EAAE;QACZ,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;YACf,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;YACrD,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;YACvB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;YAClB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;YAC5B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;YAC3B,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;YACrB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;SACxB,CAAC;QACF,IAAI,EAAE;YACJ,KAAK,EAAE,KAAK;YACZ,SAAS,EAAE,KAAK;YAChB,MAAM,EAAE,KAAK;YACb,WAAW,EAAE,IAAI;YACjB,EAAE,EAAE,EAAE;SACP;QACD,OAAO,EAAE;YACP,EAAE,MAAM,EAAE,EAAE,WAAW,EAAE,CAAC,EAAE,EAAE;YAC9B,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE;SAC1B;KACF;IACD,2EAA2E;IAC3E,+EAA+E;IAC/E,6EAA6E;IAC7E,+EAA+E;IAC/E,iFAAiF;IACjF,eAAe,EAAE;QACf,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;YACf,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;YAClB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;YACjC,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;YAClC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;YAClC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;YACzC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;YACjF,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC;YAChE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;YAChC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;YAChC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;SACjC,CAAC;QACF,IAAI,EAAE;YACJ,KAAK,EAAE,KAAK;YACZ,SAAS,EAAE,IAAI;YACf,MAAM,EAAE,KAAK;YACb,WAAW,EAAE,IAAI;YACjB,SAAS,EAAE,CAAC,QAAQ,CAAC;YACrB,EAAE,EAAE,EAAE;SACP;QACD,OAAO,EAAE;YACP,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE;YACzB,+EAA+E;YAC/E,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE;SACxC;KACF;IACD,+EAA+E;IAC/E,wEAAwE;IACxE,+EAA+E;IAC/E,+EAA+E;IAC/E,iFAAiF;IACjF,qCAAqC;IACrC,cAAc,EAAE;QACd,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;YACf,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;SACnB,CAAC;QACF,IAAI,EAAE;YACJ,KAAK,EAAE,KAAK;YACZ,SAAS,EAAE,IAAI;YACf,MAAM,EAAE,KAAK;YACb,WAAW,EAAE,IAAI;YACjB,SAAS,EAAE,CAAC,QAAQ,CAAC;YACrB,EAAE,EAAE,EAAE;SACP;QACD,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;KACrC;CACF,CAAC,CAAC"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Type-level derivation of a collection's indexed fields, mirroring the runtime
|
|
3
|
+
* `coveredFields` rule in src/server/sqlite/assertIndexed.ts: every field named
|
|
4
|
+
* in ANY index is covered (a composite credits all its fields — no prefix rule).
|
|
5
|
+
*/
|
|
6
|
+
/** Columns that always exist and never need a declared index. */
|
|
7
|
+
export type TopLevelColumns = '_id' | 'created' | 'updated' | 'version';
|
|
8
|
+
/** Shape an index entry must have for field extraction. */
|
|
9
|
+
export interface IndexLike {
|
|
10
|
+
fields: Record<string, 1 | -1>;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Union of every field name across an index tuple. Mapped over the tuple
|
|
14
|
+
* per-element because `keyof (A | B)` is the INTERSECTION — mapping then
|
|
15
|
+
* `[number]`-indexing recovers the UNION.
|
|
16
|
+
*/
|
|
17
|
+
export type IndexedFieldsOf<Idx extends readonly IndexLike[] | undefined> = Idx extends readonly IndexLike[] ? {
|
|
18
|
+
[I in keyof Idx]: Idx[I] extends IndexLike ? keyof Idx[I]['fields'] : never;
|
|
19
|
+
}[number] & string : never;
|
|
20
|
+
import type { CollectionDef, IndexDef } from './DB.js';
|
|
21
|
+
/**
|
|
22
|
+
* Per-collection validation applied by `defineCollections` via an intersection
|
|
23
|
+
* on its parameter (the registry constraint widens the per-collection generics
|
|
24
|
+
* to `any`, so the trackKeys⊆indexed check must be re-applied here). Returns a
|
|
25
|
+
* constraint fragment requiring every `trackKey` to be an indexed field; a
|
|
26
|
+
* trackKey outside the index union makes the value unassignable → compile error.
|
|
27
|
+
*/
|
|
28
|
+
export type ValidateTrackKeys<C> = C extends {
|
|
29
|
+
meta: infer M;
|
|
30
|
+
indexes?: infer Idx;
|
|
31
|
+
} ? M extends {
|
|
32
|
+
trackKeys?: infer TK;
|
|
33
|
+
} ? TK extends readonly string[] ? Idx extends readonly IndexDef[] ? {
|
|
34
|
+
meta: {
|
|
35
|
+
trackKeys?: readonly IndexedFieldsOf<Idx>[];
|
|
36
|
+
};
|
|
37
|
+
} : unknown : unknown : unknown : unknown;
|
|
38
|
+
/**
|
|
39
|
+
* Fields a collection may be filtered/sorted on: its declared index fields plus
|
|
40
|
+
* the always-present top-level columns. Mirrors the runtime `assertIndexed` rule.
|
|
41
|
+
*/
|
|
42
|
+
export type CollectionIndexedFields<C> = C extends CollectionDef<any, any, infer Idx> ? IndexedFieldsOf<Idx> | TopLevelColumns : TopLevelColumns;
|
|
43
|
+
/** The document type carried by a collection def. */
|
|
44
|
+
export type DocOf<C> = C extends CollectionDef<infer T, any, any> ? T : never;
|
|
45
|
+
/**
|
|
46
|
+
* A field match value: equality, or a Mongo-style operator object. Mirrors the
|
|
47
|
+
* operator surface the runtime SqliteFilter / PostgresOperators support. Values
|
|
48
|
+
* stay permissive (`unknown`) in v1 — the safety win is the KEY constraint.
|
|
49
|
+
*/
|
|
50
|
+
export type FieldMatch<V = unknown> = V | {
|
|
51
|
+
$ne?: V;
|
|
52
|
+
$in?: readonly V[];
|
|
53
|
+
$nin?: readonly V[];
|
|
54
|
+
$gt?: V;
|
|
55
|
+
$gte?: V;
|
|
56
|
+
$lt?: V;
|
|
57
|
+
$lte?: V;
|
|
58
|
+
$exists?: boolean;
|
|
59
|
+
};
|
|
60
|
+
/** Filter whose KEYS are restricted to a collection's indexed fields. */
|
|
61
|
+
export type IndexedFilter<C> = {
|
|
62
|
+
[K in CollectionIndexedFields<C>]?: FieldMatch;
|
|
63
|
+
} & {
|
|
64
|
+
$and?: IndexedFilter<C>[];
|
|
65
|
+
$or?: IndexedFilter<C>[];
|
|
66
|
+
};
|
|
67
|
+
/** Sort whose keys are restricted to a collection's indexed fields. */
|
|
68
|
+
export type IndexedSort<C> = {
|
|
69
|
+
[K in CollectionIndexedFields<C>]?: 1 | -1;
|
|
70
|
+
};
|
|
71
|
+
//# sourceMappingURL=dbIndexTypes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dbIndexTypes.d.ts","sourceRoot":"","sources":["../../src/shared/dbIndexTypes.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,iEAAiE;AACjE,MAAM,MAAM,eAAe,GAAG,KAAK,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;AAExE,2DAA2D;AAC3D,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAChC;AAED;;;;GAIG;AACH,MAAM,MAAM,eAAe,CAAC,GAAG,SAAS,SAAS,SAAS,EAAE,GAAG,SAAS,IACtE,GAAG,SAAS,SAAS,SAAS,EAAE,GAC5B;KACG,CAAC,IAAI,MAAM,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,SAAS,SAAS,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,KAAK;CAC5E,CAAC,MAAM,CAAC,GAAG,MAAM,GAClB,KAAK,CAAC;AAEZ,OAAO,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAEvD;;;;;;GAMG;AACH,MAAM,MAAM,iBAAiB,CAAC,CAAC,IAC7B,CAAC,SAAS;IAAE,IAAI,EAAE,MAAM,CAAC,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,GAAG,CAAA;CAAE,GAC5C,CAAC,SAAS;IAAE,SAAS,CAAC,EAAE,MAAM,EAAE,CAAA;CAAE,GAChC,EAAE,SAAS,SAAS,MAAM,EAAE,GAC1B,GAAG,SAAS,SAAS,QAAQ,EAAE,GAC7B;IAAE,IAAI,EAAE;QAAE,SAAS,CAAC,EAAE,SAAS,eAAe,CAAC,GAAG,CAAC,EAAE,CAAA;KAAE,CAAA;CAAE,GACzD,OAAO,GACT,OAAO,GACT,OAAO,GACT,OAAO,CAAC;AAEd;;;GAGG;AACH,MAAM,MAAM,uBAAuB,CAAC,CAAC,IAEnC,CAAC,SAAS,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,GACxC,eAAe,CAAC,GAAG,CAAC,GAAG,eAAe,GACtC,eAAe,CAAC;AAEtB,qDAAqD;AACrD,MAAM,MAAM,KAAK,CAAC,CAAC,IAEjB,CAAC,SAAS,aAAa,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AAEzD;;;;GAIG;AACH,MAAM,MAAM,UAAU,CAAC,CAAC,GAAG,OAAO,IAC9B,CAAC,GACD;IACE,GAAG,CAAC,EAAE,CAAC,CAAC;IACR,GAAG,CAAC,EAAE,SAAS,CAAC,EAAE,CAAC;IACnB,IAAI,CAAC,EAAE,SAAS,CAAC,EAAE,CAAC;IACpB,GAAG,CAAC,EAAE,CAAC,CAAC;IACR,IAAI,CAAC,EAAE,CAAC,CAAC;IACT,GAAG,CAAC,EAAE,CAAC,CAAC;IACR,IAAI,CAAC,EAAE,CAAC,CAAC;IACT,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAEN,yEAAyE;AACzE,MAAM,MAAM,aAAa,CAAC,CAAC,IAAI;KAC5B,CAAC,IAAI,uBAAuB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU;CAC/C,GAAG;IAAE,IAAI,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC;IAAC,GAAG,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,CAAA;CAAE,CAAC;AAE5D,uEAAuE;AACvE,MAAM,MAAM,WAAW,CAAC,CAAC,IAAI;KAC1B,CAAC,IAAI,uBAAuB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;CAC3C,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Type-level derivation of a collection's indexed fields, mirroring the runtime
|
|
3
|
+
* `coveredFields` rule in src/server/sqlite/assertIndexed.ts: every field named
|
|
4
|
+
* in ANY index is covered (a composite credits all its fields — no prefix rule).
|
|
5
|
+
*/
|
|
6
|
+
export {};
|
|
7
|
+
//# sourceMappingURL=dbIndexTypes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dbIndexTypes.js","sourceRoot":"","sources":["../../src/shared/dbIndexTypes.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
import type { IndexedFieldsOf, TopLevelColumns } from './dbIndexTypes.js';
|
|
2
|
+
type Expect<T extends true> = T;
|
|
3
|
+
type Equal<A, B> = (<T>() => T extends A ? 1 : 2) extends (<T>() => T extends B ? 1 : 2) ? true : false;
|
|
4
|
+
type Idx = readonly [{
|
|
5
|
+
fields: {
|
|
6
|
+
conversationId: 1;
|
|
7
|
+
};
|
|
8
|
+
}, {
|
|
9
|
+
fields: {
|
|
10
|
+
userId: 1;
|
|
11
|
+
};
|
|
12
|
+
}];
|
|
13
|
+
type _t1 = Expect<Equal<IndexedFieldsOf<Idx>, 'conversationId' | 'userId'>>;
|
|
14
|
+
type IdxComposite = readonly [{
|
|
15
|
+
fields: {
|
|
16
|
+
a: 1;
|
|
17
|
+
b: -1;
|
|
18
|
+
};
|
|
19
|
+
}];
|
|
20
|
+
type _t2 = Expect<Equal<IndexedFieldsOf<IdxComposite>, 'a' | 'b'>>;
|
|
21
|
+
type _t3 = Expect<Equal<IndexedFieldsOf<readonly []>, never>>;
|
|
22
|
+
type _t4 = Expect<Equal<TopLevelColumns, '_id' | 'created' | 'updated' | 'version'>>;
|
|
23
|
+
import { z } from 'zod';
|
|
24
|
+
import type { CollectionIndexedFields } from './dbIndexTypes.js';
|
|
25
|
+
declare const _defs: import("./DB.js").DefinedCollections<{
|
|
26
|
+
readonly conversationUser: {
|
|
27
|
+
readonly schema: z.ZodObject<{
|
|
28
|
+
conversationId: z.ZodString;
|
|
29
|
+
userId: z.ZodString;
|
|
30
|
+
role: z.ZodString;
|
|
31
|
+
}, z.core.$strip>;
|
|
32
|
+
readonly meta: {
|
|
33
|
+
readonly cache: false;
|
|
34
|
+
readonly trackable: true;
|
|
35
|
+
readonly public: false;
|
|
36
|
+
readonly cascadeFrom: null;
|
|
37
|
+
readonly db: import("./DB.js").Backend;
|
|
38
|
+
};
|
|
39
|
+
readonly indexes: readonly [{
|
|
40
|
+
readonly fields: {
|
|
41
|
+
readonly conversationId: 1;
|
|
42
|
+
};
|
|
43
|
+
}, {
|
|
44
|
+
readonly fields: {
|
|
45
|
+
readonly userId: 1;
|
|
46
|
+
};
|
|
47
|
+
}];
|
|
48
|
+
};
|
|
49
|
+
}>;
|
|
50
|
+
type _CIF = CollectionIndexedFields<typeof _defs.conversationUser>;
|
|
51
|
+
type _t5 = Expect<Equal<_CIF, 'conversationId' | 'userId' | TopLevelColumns>>;
|
|
52
|
+
import type { IndexedFilter, IndexedSort } from './dbIndexTypes.js';
|
|
53
|
+
export type __IndexSafetyChecks = [_t1, _t2, _t3, _t4, _t5];
|
|
54
|
+
export declare const __indexSafetyRuntime: (import("./DB.js").DefinedCollections<{
|
|
55
|
+
readonly conversationUser: {
|
|
56
|
+
readonly schema: z.ZodObject<{
|
|
57
|
+
conversationId: z.ZodString;
|
|
58
|
+
userId: z.ZodString;
|
|
59
|
+
role: z.ZodString;
|
|
60
|
+
}, z.core.$strip>;
|
|
61
|
+
readonly meta: {
|
|
62
|
+
readonly cache: false;
|
|
63
|
+
readonly trackable: true;
|
|
64
|
+
readonly public: false;
|
|
65
|
+
readonly cascadeFrom: null;
|
|
66
|
+
readonly db: import("./DB.js").Backend;
|
|
67
|
+
};
|
|
68
|
+
readonly indexes: readonly [{
|
|
69
|
+
readonly fields: {
|
|
70
|
+
readonly conversationId: 1;
|
|
71
|
+
};
|
|
72
|
+
}, {
|
|
73
|
+
readonly fields: {
|
|
74
|
+
readonly userId: 1;
|
|
75
|
+
};
|
|
76
|
+
}];
|
|
77
|
+
};
|
|
78
|
+
}> | import("./DB.js").DefinedCollections<{
|
|
79
|
+
readonly ok: {
|
|
80
|
+
readonly schema: z.ZodObject<{
|
|
81
|
+
userId: z.ZodString;
|
|
82
|
+
}, z.core.$strip>;
|
|
83
|
+
readonly meta: {
|
|
84
|
+
readonly cache: false;
|
|
85
|
+
readonly trackable: true;
|
|
86
|
+
readonly public: false;
|
|
87
|
+
readonly cascadeFrom: null;
|
|
88
|
+
readonly db: import("./DB.js").Backend;
|
|
89
|
+
readonly trackKeys: readonly ["userId"];
|
|
90
|
+
};
|
|
91
|
+
readonly indexes: readonly [{
|
|
92
|
+
readonly fields: {
|
|
93
|
+
readonly userId: 1;
|
|
94
|
+
};
|
|
95
|
+
}];
|
|
96
|
+
};
|
|
97
|
+
}> | import("./DB.js").DefinedCollections<{
|
|
98
|
+
readonly bad: {
|
|
99
|
+
readonly schema: z.ZodObject<{
|
|
100
|
+
conversationId: z.ZodString;
|
|
101
|
+
userId: z.ZodString;
|
|
102
|
+
}, z.core.$strip>;
|
|
103
|
+
readonly meta: {
|
|
104
|
+
readonly cache: false;
|
|
105
|
+
readonly trackable: true;
|
|
106
|
+
readonly public: false;
|
|
107
|
+
readonly cascadeFrom: null;
|
|
108
|
+
readonly db: import("./DB.js").Backend;
|
|
109
|
+
readonly trackKeys: readonly ["conversationId", "userId"];
|
|
110
|
+
};
|
|
111
|
+
readonly indexes: readonly [{
|
|
112
|
+
readonly fields: {
|
|
113
|
+
readonly conversationId: 1;
|
|
114
|
+
};
|
|
115
|
+
}];
|
|
116
|
+
};
|
|
117
|
+
}> | IndexedFilter<import("./DB.js").CollectionDef<import("./DB.js").InferDocType<z.ZodObject<{
|
|
118
|
+
conversationId: z.ZodString;
|
|
119
|
+
userId: z.ZodString;
|
|
120
|
+
role: z.ZodString;
|
|
121
|
+
}, z.core.$strip>>, readonly string[], readonly [{
|
|
122
|
+
readonly fields: {
|
|
123
|
+
readonly conversationId: 1;
|
|
124
|
+
};
|
|
125
|
+
}, {
|
|
126
|
+
readonly fields: {
|
|
127
|
+
readonly userId: 1;
|
|
128
|
+
};
|
|
129
|
+
}]> & {
|
|
130
|
+
name: "conversationUser";
|
|
131
|
+
schema: z.ZodObject<{
|
|
132
|
+
conversationId: z.ZodString;
|
|
133
|
+
userId: z.ZodString;
|
|
134
|
+
role: z.ZodString;
|
|
135
|
+
}, z.core.$strip>;
|
|
136
|
+
meta: {
|
|
137
|
+
readonly cache: false;
|
|
138
|
+
readonly trackable: true;
|
|
139
|
+
readonly public: false;
|
|
140
|
+
readonly cascadeFrom: null;
|
|
141
|
+
readonly db: import("./DB.js").Backend;
|
|
142
|
+
};
|
|
143
|
+
}> | IndexedSort<import("./DB.js").CollectionDef<import("./DB.js").InferDocType<z.ZodObject<{
|
|
144
|
+
conversationId: z.ZodString;
|
|
145
|
+
userId: z.ZodString;
|
|
146
|
+
role: z.ZodString;
|
|
147
|
+
}, z.core.$strip>>, readonly string[], readonly [{
|
|
148
|
+
readonly fields: {
|
|
149
|
+
readonly conversationId: 1;
|
|
150
|
+
};
|
|
151
|
+
}, {
|
|
152
|
+
readonly fields: {
|
|
153
|
+
readonly userId: 1;
|
|
154
|
+
};
|
|
155
|
+
}]> & {
|
|
156
|
+
name: "conversationUser";
|
|
157
|
+
schema: z.ZodObject<{
|
|
158
|
+
conversationId: z.ZodString;
|
|
159
|
+
userId: z.ZodString;
|
|
160
|
+
role: z.ZodString;
|
|
161
|
+
}, z.core.$strip>;
|
|
162
|
+
meta: {
|
|
163
|
+
readonly cache: false;
|
|
164
|
+
readonly trackable: true;
|
|
165
|
+
readonly public: false;
|
|
166
|
+
readonly cascadeFrom: null;
|
|
167
|
+
readonly db: import("./DB.js").Backend;
|
|
168
|
+
};
|
|
169
|
+
}>)[];
|
|
170
|
+
export {};
|
|
171
|
+
//# sourceMappingURL=dbTypeChecks.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dbTypeChecks.d.ts","sourceRoot":"","sources":["../../src/shared/dbTypeChecks.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAG1E,KAAK,MAAM,CAAC,CAAC,SAAS,IAAI,IAAI,CAAC,CAAC;AAChC,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC,IACb,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,GAAG,KAAK,CAAC;AAEvF,KAAK,GAAG,GAAG,SAAS,CAAC;IAAE,MAAM,EAAE;QAAE,cAAc,EAAE,CAAC,CAAA;KAAE,CAAA;CAAE,EAAE;IAAE,MAAM,EAAE;QAAE,MAAM,EAAE,CAAC,CAAA;KAAE,CAAA;CAAE,CAAC,CAAC;AAEnF,KAAK,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,gBAAgB,GAAG,QAAQ,CAAC,CAAC,CAAC;AAE5E,KAAK,YAAY,GAAG,SAAS,CAAC;IAAE,MAAM,EAAE;QAAE,CAAC,EAAE,CAAC,CAAC;QAAC,CAAC,EAAE,CAAC,CAAC,CAAA;KAAE,CAAA;CAAE,CAAC,CAAC;AAC3D,KAAK,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,YAAY,CAAC,EAAE,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC;AAEnE,KAAK,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,SAAS,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;AAC9D,KAAK,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,eAAe,EAAE,KAAK,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC,CAAC,CAAC;AAGrF,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AAEjE,QAAA,MAAM,KAAK;;;;;;;;;;;;;;;;;;;;;;;;EAOT,CAAC;AACH,KAAK,IAAI,GAAG,uBAAuB,CAAC,OAAO,KAAK,CAAC,gBAAgB,CAAC,CAAC;AACnE,KAAK,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,gBAAgB,GAAG,QAAQ,GAAG,eAAe,CAAC,CAAC,CAAC;AAuB9E,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AA4BpE,MAAM,MAAM,mBAAmB,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AAC5D,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAAgE,CAAC"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
// ── Task 2: CollectionIndexedFields on a real defineCollections result ──────
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
import { defineCollections, d1 } from './DB.js';
|
|
4
|
+
const _defs = defineCollections({
|
|
5
|
+
conversationUser: {
|
|
6
|
+
schema: z.object({ conversationId: z.string(), userId: z.string(), role: z.string() }),
|
|
7
|
+
meta: { cache: false, trackable: true, public: false, cascadeFrom: null, db: d1 },
|
|
8
|
+
// Inline indexes — the `const` type param preserves the literal field keys.
|
|
9
|
+
indexes: [{ fields: { conversationId: 1 } }, { fields: { userId: 1 } }],
|
|
10
|
+
},
|
|
11
|
+
});
|
|
12
|
+
// ── Task 3: trackKeys must be a subset of the indexed fields ────────────────
|
|
13
|
+
// GOOD: every trackKey is indexed → compiles.
|
|
14
|
+
const _okDefs = defineCollections({
|
|
15
|
+
ok: {
|
|
16
|
+
schema: z.object({ userId: z.string() }),
|
|
17
|
+
meta: { cache: false, trackable: true, public: false, cascadeFrom: null, db: d1, trackKeys: ['userId'] },
|
|
18
|
+
indexes: [{ fields: { userId: 1 } }],
|
|
19
|
+
},
|
|
20
|
+
});
|
|
21
|
+
// BAD: trackKey `userId` is NOT in any index → must be a compile error.
|
|
22
|
+
const _badDefs = defineCollections({
|
|
23
|
+
bad: {
|
|
24
|
+
schema: z.object({ conversationId: z.string(), userId: z.string() }),
|
|
25
|
+
// @ts-expect-error trackKey "userId" is not present in meta.indexes
|
|
26
|
+
meta: { cache: false, trackable: true, public: false, cascadeFrom: null, db: d1, trackKeys: ['conversationId', 'userId'] },
|
|
27
|
+
indexes: [{ fields: { conversationId: 1 } }],
|
|
28
|
+
},
|
|
29
|
+
});
|
|
30
|
+
// indexed field → allowed (equality or operator object)
|
|
31
|
+
const _f1 = { userId: 'u1' };
|
|
32
|
+
const _f2 = { userId: { $ne: 'u1' } };
|
|
33
|
+
const _f3 = { _id: 'x' }; // top-level always OK
|
|
34
|
+
// @ts-expect-error `role` is not indexed
|
|
35
|
+
const _f4 = { role: 'admin' };
|
|
36
|
+
// $or recurses under the same key constraint
|
|
37
|
+
const _f5 = { $or: [{ userId: 'u1' }, { conversationId: 'c1' }] };
|
|
38
|
+
const _s1 = { userId: 1 };
|
|
39
|
+
// @ts-expect-error `role` is not indexed
|
|
40
|
+
const _s2 = { role: -1 };
|
|
41
|
+
// indexed → OK
|
|
42
|
+
void db.getDocs(_defs.conversationUser, { userId: 'u1' });
|
|
43
|
+
void db.getDocs(_defs.conversationUser, { userId: 'u1' }, { sort: { conversationId: 1 } });
|
|
44
|
+
// @ts-expect-error filtering an unindexed field must not compile
|
|
45
|
+
void db.getDocs(_defs.conversationUser, { role: 'admin' });
|
|
46
|
+
// @ts-expect-error sorting an unindexed field must not compile
|
|
47
|
+
void db.getDocs(_defs.conversationUser, { userId: 'u1' }, { sort: { role: 1 } });
|
|
48
|
+
export const __indexSafetyRuntime = [_defs, _okDefs, _badDefs, _f1, _f2, _f3, _f4, _f5, _s1, _s2];
|
|
49
|
+
//# sourceMappingURL=dbTypeChecks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dbTypeChecks.js","sourceRoot":"","sources":["../../src/shared/dbTypeChecks.ts"],"names":[],"mappings":"AAoBA,+EAA+E;AAC/E,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,iBAAiB,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAGhD,MAAM,KAAK,GAAG,iBAAiB,CAAC;IAC9B,gBAAgB,EAAE;QAChB,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC;QACtF,IAAI,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE;QACjF,4EAA4E;QAC5E,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,cAAc,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;KACxE;CACF,CAAC,CAAC;AAIH,+EAA+E;AAC/E,8CAA8C;AAC9C,MAAM,OAAO,GAAG,iBAAiB,CAAC;IAChC,EAAE,EAAE;QACF,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC;QACxC,IAAI,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,CAAC,QAAQ,CAAC,EAAE;QACxG,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;KACrC;CACF,CAAC,CAAC;AAEH,wEAAwE;AACxE,MAAM,QAAQ,GAAG,iBAAiB,CAAC;IACjC,GAAG,EAAE;QACH,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC;QACpE,oEAAoE;QACpE,IAAI,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,CAAC,gBAAgB,EAAE,QAAQ,CAAC,EAAE;QAC1H,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,cAAc,EAAE,CAAC,EAAE,EAAE,CAAC;KAC7C;CACF,CAAC,CAAC;AAKH,wDAAwD;AACxD,MAAM,GAAG,GAAiD,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;AAC3E,MAAM,GAAG,GAAiD,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC;AACpF,MAAM,GAAG,GAAiD,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,sBAAsB;AAC9F,yCAAyC;AACzC,MAAM,GAAG,GAAiD,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;AAC5E,6CAA6C;AAC7C,MAAM,GAAG,GAAiD,EAAE,GAAG,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;AAEhH,MAAM,GAAG,GAA+C,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;AACtE,yCAAyC;AACzC,MAAM,GAAG,GAA+C,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;AAMrE,eAAe;AACf,KAAK,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,gBAAgB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;AAC1D,KAAK,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,gBAAgB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,cAAc,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;AAC3F,iEAAiE;AACjE,KAAK,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,gBAAgB,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;AAC3D,+DAA+D;AAC/D,KAAK,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,gBAAgB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;AAIjF,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ugly-app",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.843",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"comment:files": "Allowlist what ships to npm. dist = runtime; src = sourcemap targets (dist/*.js.map reference ../../src/); templates = CLI scaffold. Everything else at repo root (.pgdata local Postgres, coverage, assets/icons sources, test/, test-results/) is excluded by omission. The !negations strip the scaffold's installed deps + cruft (templates/node_modules is 200MB+ and must never ship). package.json/README/LICENSE ship automatically.",
|
|
6
6
|
"files": [
|
package/src/cli/version.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
// Auto-generated by prebuild — do not edit manually
|
|
2
|
-
export const CLI_VERSION = "0.1.
|
|
2
|
+
export const CLI_VERSION = "0.1.843";
|
|
@@ -46,12 +46,6 @@ describe('assertIndexed', () => {
|
|
|
46
46
|
expect(() => assertIndexed('c', IDX, { other: { $exists: true } })).not.toThrow();
|
|
47
47
|
});
|
|
48
48
|
|
|
49
|
-
it('allowScan bypasses the check', () => {
|
|
50
|
-
expect(() =>
|
|
51
|
-
assertIndexed('c', IDX, { other: 1 }, undefined, { allowScan: true }),
|
|
52
|
-
).not.toThrow();
|
|
53
|
-
});
|
|
54
|
-
|
|
55
49
|
it('no filter/sort → no-op', () => {
|
|
56
50
|
expect(() => assertIndexed('c', IDX)).not.toThrow();
|
|
57
51
|
});
|
|
@@ -18,8 +18,8 @@ export class UnindexedQueryError extends Error {
|
|
|
18
18
|
) {
|
|
19
19
|
super(
|
|
20
20
|
`Collection "${collection}" filters/sorts on "${field}" which has no index. ` +
|
|
21
|
-
`Add to meta.indexes: { fields: { ${field}: 1 } } — or
|
|
22
|
-
`for a deliberate
|
|
21
|
+
`Add to meta.indexes: { fields: { ${field}: 1 } } — or use db.getQuery(...) ` +
|
|
22
|
+
`for a deliberate unindexed scan.`,
|
|
23
23
|
);
|
|
24
24
|
this.name = 'UnindexedQueryError';
|
|
25
25
|
}
|
|
@@ -39,9 +39,7 @@ export function assertIndexed(
|
|
|
39
39
|
indexes: IndexDef[] | undefined,
|
|
40
40
|
filter?: Record<string, unknown>,
|
|
41
41
|
sort?: Record<string, 1 | -1>,
|
|
42
|
-
opts?: { allowScan?: boolean },
|
|
43
42
|
): void {
|
|
44
|
-
if (opts?.allowScan) return;
|
|
45
43
|
const covered = coveredFields(indexes);
|
|
46
44
|
|
|
47
45
|
const fields = new Set<string>();
|
package/src/shared/DB.ts
CHANGED
|
@@ -1,4 +1,10 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
+
import type {
|
|
3
|
+
DocOf,
|
|
4
|
+
IndexedFilter,
|
|
5
|
+
IndexedSort,
|
|
6
|
+
ValidateTrackKeys,
|
|
7
|
+
} from './dbIndexTypes.js';
|
|
2
8
|
|
|
3
9
|
export interface DBObject {
|
|
4
10
|
/**
|
|
@@ -179,22 +185,33 @@ export interface GetDocsOptions {
|
|
|
179
185
|
export type InferDocType<S extends z.ZodObject<any>> = z.infer<S> & DBObject;
|
|
180
186
|
|
|
181
187
|
/** What developers pass to defineCollections (schema + meta, no name or type). */
|
|
182
|
-
export interface CollectionDefInput<
|
|
188
|
+
export interface CollectionDefInput<
|
|
189
|
+
Keys extends readonly string[] = readonly string[],
|
|
190
|
+
Idx extends readonly IndexDef[] = readonly IndexDef[],
|
|
191
|
+
> {
|
|
183
192
|
schema: z.ZodObject<z.ZodRawShape>;
|
|
184
193
|
meta: CollectionMeta & { trackKeys?: Keys };
|
|
185
|
-
indexes?:
|
|
194
|
+
indexes?: Idx;
|
|
186
195
|
search?: { fields: string[]; language?: string };
|
|
187
196
|
vector?: VectorMeta;
|
|
188
197
|
}
|
|
189
198
|
|
|
190
199
|
/** Internal collection definition with inferred T. Created by defineCollections. */
|
|
191
|
-
|
|
192
|
-
|
|
200
|
+
export interface CollectionDef<
|
|
201
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
202
|
+
T = any,
|
|
203
|
+
Keys extends readonly string[] = readonly string[],
|
|
204
|
+
Idx extends readonly IndexDef[] = readonly IndexDef[],
|
|
205
|
+
> {
|
|
193
206
|
readonly name: string; // injected by defineCollections from the object key
|
|
194
207
|
/** @internal phantom field — anchors T for structural type inference. Never set by users. */
|
|
195
208
|
readonly _type?: T;
|
|
209
|
+
/** @internal phantom — anchors the literal index tuple for CollectionIndexedFields. Never set. */
|
|
210
|
+
readonly _idx?: Idx;
|
|
196
211
|
schema: z.ZodObject<z.ZodRawShape>;
|
|
197
212
|
meta: CollectionMeta & { trackKeys?: Keys };
|
|
213
|
+
// Stays a mutable IndexDef[] for internal consumers; the literal tuple is
|
|
214
|
+
// captured phantom-only in `_idx`, so widening here doesn't lose the type info.
|
|
198
215
|
indexes?: IndexDef[];
|
|
199
216
|
search?: { fields: string[]; language?: string };
|
|
200
217
|
vector?: VectorMeta;
|
|
@@ -207,7 +224,8 @@ export type DeleteHandlers<Defs extends CollectionDefRegistry = CollectionDefReg
|
|
|
207
224
|
[K in keyof Defs]?: (doc: Defs[K] extends CollectionDef<infer T> ? T : never, db: TypedDB<any>) => Promise<void>;
|
|
208
225
|
};
|
|
209
226
|
|
|
210
|
-
|
|
227
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
228
|
+
export type CollectionDefInputRegistry = Record<string, CollectionDefInput<any, any>>;
|
|
211
229
|
export type CollectionDefRegistry = Record<string, Omit<CollectionDef, 'name'>>;
|
|
212
230
|
|
|
213
231
|
// Extract union of trackable key names from a CollectionDef
|
|
@@ -367,8 +385,16 @@ export interface TypedDB<
|
|
|
367
385
|
/** Delete a document and cascade-delete all children declared via cascadeFrom. */
|
|
368
386
|
deleteDoc(collection: CollectionDef, id: string): Promise<void>;
|
|
369
387
|
|
|
370
|
-
/**
|
|
371
|
-
|
|
388
|
+
/**
|
|
389
|
+
* Query documents (optionally with full-text `search` and/or vector `near`).
|
|
390
|
+
* Filter and sort KEYS are constrained to the collection's indexed fields —
|
|
391
|
+
* an unindexed field is a compile error (add the index, or use `getQuery`).
|
|
392
|
+
*/
|
|
393
|
+
getDocs<C extends CollectionDef>(
|
|
394
|
+
collection: C,
|
|
395
|
+
filter?: IndexedFilter<C>,
|
|
396
|
+
options?: Omit<GetDocsOptions, 'sort'> & { sort?: IndexedSort<C> },
|
|
397
|
+
): Promise<DocOf<C>[]>;
|
|
372
398
|
|
|
373
399
|
/**
|
|
374
400
|
* Run a sequence of writes as one trackDocs "transaction": the writes happen
|
|
@@ -406,25 +432,25 @@ export interface TypedDB<
|
|
|
406
432
|
|
|
407
433
|
// ─── Typed SQL-native query methods ───────────────────────────────────────
|
|
408
434
|
|
|
409
|
-
/** Query documents
|
|
410
|
-
find<
|
|
411
|
-
collection:
|
|
412
|
-
filter?:
|
|
413
|
-
options?:
|
|
414
|
-
): Promise<
|
|
415
|
-
|
|
416
|
-
/** Count documents
|
|
417
|
-
findCount<
|
|
418
|
-
collection:
|
|
419
|
-
filter?:
|
|
435
|
+
/** Query documents. Filter/sort keys are constrained to indexed fields. */
|
|
436
|
+
find<C extends CollectionDef>(
|
|
437
|
+
collection: C,
|
|
438
|
+
filter?: IndexedFilter<C>,
|
|
439
|
+
options?: { sort?: IndexedSort<C>; limit?: number; skip?: number },
|
|
440
|
+
): Promise<DocOf<C>[]>;
|
|
441
|
+
|
|
442
|
+
/** Count documents. Filter keys are constrained to indexed fields. */
|
|
443
|
+
findCount<C extends CollectionDef>(
|
|
444
|
+
collection: C,
|
|
445
|
+
filter?: IndexedFilter<C>,
|
|
420
446
|
): Promise<number>;
|
|
421
447
|
|
|
422
|
-
/** Fetch a random sample
|
|
423
|
-
findRandom<
|
|
424
|
-
collection:
|
|
425
|
-
filter?:
|
|
448
|
+
/** Fetch a random sample. Filter keys are constrained to indexed fields. */
|
|
449
|
+
findRandom<C extends CollectionDef>(
|
|
450
|
+
collection: C,
|
|
451
|
+
filter?: IndexedFilter<C>,
|
|
426
452
|
limit?: number,
|
|
427
|
-
): Promise<
|
|
453
|
+
): Promise<DocOf<C>[]>;
|
|
428
454
|
|
|
429
455
|
/** Bulk delete documents matching a typed filter, with cascade deletes and onDelete hooks. */
|
|
430
456
|
deleteWhere<T extends DBObject>(
|
|
@@ -515,15 +541,26 @@ export type InjectableDb = Pick<
|
|
|
515
541
|
|
|
516
542
|
/** Return shape of {@link defineCollections}: each input key mapped to a fully-typed CollectionDef. */
|
|
517
543
|
export type DefinedCollections<Defs extends CollectionDefInputRegistry> = {
|
|
518
|
-
[K in keyof Defs & string]: CollectionDef<
|
|
544
|
+
[K in keyof Defs & string]: CollectionDef<
|
|
545
|
+
InferDocType<Defs[K]['schema']>,
|
|
546
|
+
Defs[K]['meta'] extends { trackKeys?: infer TK }
|
|
547
|
+
? TK extends readonly string[]
|
|
548
|
+
? TK
|
|
549
|
+
: readonly string[]
|
|
550
|
+
: readonly string[],
|
|
551
|
+
Defs[K]['indexes'] extends readonly IndexDef[] ? Defs[K]['indexes'] : readonly []
|
|
552
|
+
> & {
|
|
519
553
|
name: K;
|
|
520
554
|
schema: Defs[K]['schema'];
|
|
521
555
|
meta: Defs[K]['meta'];
|
|
522
556
|
};
|
|
523
557
|
};
|
|
524
558
|
|
|
525
|
-
export function defineCollections<Defs extends CollectionDefInputRegistry>(
|
|
526
|
-
|
|
559
|
+
export function defineCollections<const Defs extends CollectionDefInputRegistry>(
|
|
560
|
+
// The intersection re-applies the per-collection `trackKeys ⊆ indexed` check
|
|
561
|
+
// that the `CollectionDefInputRegistry` (any, any) constraint would otherwise
|
|
562
|
+
// erase — see ValidateTrackKeys.
|
|
563
|
+
defs: Defs & { [K in keyof Defs]: ValidateTrackKeys<Defs[K]> },
|
|
527
564
|
): DefinedCollections<Defs> {
|
|
528
565
|
return Object.fromEntries(
|
|
529
566
|
Object.entries(defs).map(([k, v]) => [k, { ...v, name: k }]),
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Type-level derivation of a collection's indexed fields, mirroring the runtime
|
|
3
|
+
* `coveredFields` rule in src/server/sqlite/assertIndexed.ts: every field named
|
|
4
|
+
* in ANY index is covered (a composite credits all its fields — no prefix rule).
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
/** Columns that always exist and never need a declared index. */
|
|
8
|
+
export type TopLevelColumns = '_id' | 'created' | 'updated' | 'version';
|
|
9
|
+
|
|
10
|
+
/** Shape an index entry must have for field extraction. */
|
|
11
|
+
export interface IndexLike {
|
|
12
|
+
fields: Record<string, 1 | -1>;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* Union of every field name across an index tuple. Mapped over the tuple
|
|
17
|
+
* per-element because `keyof (A | B)` is the INTERSECTION — mapping then
|
|
18
|
+
* `[number]`-indexing recovers the UNION.
|
|
19
|
+
*/
|
|
20
|
+
export type IndexedFieldsOf<Idx extends readonly IndexLike[] | undefined> =
|
|
21
|
+
Idx extends readonly IndexLike[]
|
|
22
|
+
? {
|
|
23
|
+
[I in keyof Idx]: Idx[I] extends IndexLike ? keyof Idx[I]['fields'] : never;
|
|
24
|
+
}[number] & string
|
|
25
|
+
: never;
|
|
26
|
+
|
|
27
|
+
import type { CollectionDef, IndexDef } from './DB.js';
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* Per-collection validation applied by `defineCollections` via an intersection
|
|
31
|
+
* on its parameter (the registry constraint widens the per-collection generics
|
|
32
|
+
* to `any`, so the trackKeys⊆indexed check must be re-applied here). Returns a
|
|
33
|
+
* constraint fragment requiring every `trackKey` to be an indexed field; a
|
|
34
|
+
* trackKey outside the index union makes the value unassignable → compile error.
|
|
35
|
+
*/
|
|
36
|
+
export type ValidateTrackKeys<C> =
|
|
37
|
+
C extends { meta: infer M; indexes?: infer Idx }
|
|
38
|
+
? M extends { trackKeys?: infer TK }
|
|
39
|
+
? TK extends readonly string[]
|
|
40
|
+
? Idx extends readonly IndexDef[]
|
|
41
|
+
? { meta: { trackKeys?: readonly IndexedFieldsOf<Idx>[] } }
|
|
42
|
+
: unknown
|
|
43
|
+
: unknown
|
|
44
|
+
: unknown
|
|
45
|
+
: unknown;
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* Fields a collection may be filtered/sorted on: its declared index fields plus
|
|
49
|
+
* the always-present top-level columns. Mirrors the runtime `assertIndexed` rule.
|
|
50
|
+
*/
|
|
51
|
+
export type CollectionIndexedFields<C> =
|
|
52
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
53
|
+
C extends CollectionDef<any, any, infer Idx>
|
|
54
|
+
? IndexedFieldsOf<Idx> | TopLevelColumns
|
|
55
|
+
: TopLevelColumns;
|
|
56
|
+
|
|
57
|
+
/** The document type carried by a collection def. */
|
|
58
|
+
export type DocOf<C> =
|
|
59
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
60
|
+
C extends CollectionDef<infer T, any, any> ? T : never;
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
* A field match value: equality, or a Mongo-style operator object. Mirrors the
|
|
64
|
+
* operator surface the runtime SqliteFilter / PostgresOperators support. Values
|
|
65
|
+
* stay permissive (`unknown`) in v1 — the safety win is the KEY constraint.
|
|
66
|
+
*/
|
|
67
|
+
export type FieldMatch<V = unknown> =
|
|
68
|
+
| V
|
|
69
|
+
| {
|
|
70
|
+
$ne?: V;
|
|
71
|
+
$in?: readonly V[];
|
|
72
|
+
$nin?: readonly V[];
|
|
73
|
+
$gt?: V;
|
|
74
|
+
$gte?: V;
|
|
75
|
+
$lt?: V;
|
|
76
|
+
$lte?: V;
|
|
77
|
+
$exists?: boolean;
|
|
78
|
+
};
|
|
79
|
+
|
|
80
|
+
/** Filter whose KEYS are restricted to a collection's indexed fields. */
|
|
81
|
+
export type IndexedFilter<C> = {
|
|
82
|
+
[K in CollectionIndexedFields<C>]?: FieldMatch;
|
|
83
|
+
} & { $and?: IndexedFilter<C>[]; $or?: IndexedFilter<C>[] };
|
|
84
|
+
|
|
85
|
+
/** Sort whose keys are restricted to a collection's indexed fields. */
|
|
86
|
+
export type IndexedSort<C> = {
|
|
87
|
+
[K in CollectionIndexedFields<C>]?: 1 | -1;
|
|
88
|
+
};
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
// Compile-checked assertions for the index-safety types. This file is included
|
|
2
|
+
// in tsc (it is NOT a *.test.ts, which tsconfig excludes). A wrong type surfaces
|
|
3
|
+
// as a tsc error, so `npx tsc --noEmit` is the test for the index-safety types.
|
|
4
|
+
import type { IndexedFieldsOf, TopLevelColumns } from './dbIndexTypes.js';
|
|
5
|
+
|
|
6
|
+
// Assert two types are exactly equal (compile error otherwise).
|
|
7
|
+
type Expect<T extends true> = T;
|
|
8
|
+
type Equal<A, B> =
|
|
9
|
+
(<T>() => T extends A ? 1 : 2) extends (<T>() => T extends B ? 1 : 2) ? true : false;
|
|
10
|
+
|
|
11
|
+
type Idx = readonly [{ fields: { conversationId: 1 } }, { fields: { userId: 1 } }];
|
|
12
|
+
// Union of all fields across all indexes (NOT the keyof-intersection `never`).
|
|
13
|
+
type _t1 = Expect<Equal<IndexedFieldsOf<Idx>, 'conversationId' | 'userId'>>;
|
|
14
|
+
// Composite index credits all its fields.
|
|
15
|
+
type IdxComposite = readonly [{ fields: { a: 1; b: -1 } }];
|
|
16
|
+
type _t2 = Expect<Equal<IndexedFieldsOf<IdxComposite>, 'a' | 'b'>>;
|
|
17
|
+
// Empty indexes → never.
|
|
18
|
+
type _t3 = Expect<Equal<IndexedFieldsOf<readonly []>, never>>;
|
|
19
|
+
type _t4 = Expect<Equal<TopLevelColumns, '_id' | 'created' | 'updated' | 'version'>>;
|
|
20
|
+
|
|
21
|
+
// ── Task 2: CollectionIndexedFields on a real defineCollections result ──────
|
|
22
|
+
import { z } from 'zod';
|
|
23
|
+
import { defineCollections, d1 } from './DB.js';
|
|
24
|
+
import type { CollectionIndexedFields } from './dbIndexTypes.js';
|
|
25
|
+
|
|
26
|
+
const _defs = defineCollections({
|
|
27
|
+
conversationUser: {
|
|
28
|
+
schema: z.object({ conversationId: z.string(), userId: z.string(), role: z.string() }),
|
|
29
|
+
meta: { cache: false, trackable: true, public: false, cascadeFrom: null, db: d1 },
|
|
30
|
+
// Inline indexes — the `const` type param preserves the literal field keys.
|
|
31
|
+
indexes: [{ fields: { conversationId: 1 } }, { fields: { userId: 1 } }],
|
|
32
|
+
},
|
|
33
|
+
});
|
|
34
|
+
type _CIF = CollectionIndexedFields<typeof _defs.conversationUser>;
|
|
35
|
+
type _t5 = Expect<Equal<_CIF, 'conversationId' | 'userId' | TopLevelColumns>>;
|
|
36
|
+
|
|
37
|
+
// ── Task 3: trackKeys must be a subset of the indexed fields ────────────────
|
|
38
|
+
// GOOD: every trackKey is indexed → compiles.
|
|
39
|
+
const _okDefs = defineCollections({
|
|
40
|
+
ok: {
|
|
41
|
+
schema: z.object({ userId: z.string() }),
|
|
42
|
+
meta: { cache: false, trackable: true, public: false, cascadeFrom: null, db: d1, trackKeys: ['userId'] },
|
|
43
|
+
indexes: [{ fields: { userId: 1 } }],
|
|
44
|
+
},
|
|
45
|
+
});
|
|
46
|
+
|
|
47
|
+
// BAD: trackKey `userId` is NOT in any index → must be a compile error.
|
|
48
|
+
const _badDefs = defineCollections({
|
|
49
|
+
bad: {
|
|
50
|
+
schema: z.object({ conversationId: z.string(), userId: z.string() }),
|
|
51
|
+
// @ts-expect-error trackKey "userId" is not present in meta.indexes
|
|
52
|
+
meta: { cache: false, trackable: true, public: false, cascadeFrom: null, db: d1, trackKeys: ['conversationId', 'userId'] },
|
|
53
|
+
indexes: [{ fields: { conversationId: 1 } }],
|
|
54
|
+
},
|
|
55
|
+
});
|
|
56
|
+
|
|
57
|
+
// ── Task 5: IndexedFilter / IndexedSort key constraints ─────────────────────
|
|
58
|
+
import type { IndexedFilter, IndexedSort } from './dbIndexTypes.js';
|
|
59
|
+
|
|
60
|
+
// indexed field → allowed (equality or operator object)
|
|
61
|
+
const _f1: IndexedFilter<typeof _defs.conversationUser> = { userId: 'u1' };
|
|
62
|
+
const _f2: IndexedFilter<typeof _defs.conversationUser> = { userId: { $ne: 'u1' } };
|
|
63
|
+
const _f3: IndexedFilter<typeof _defs.conversationUser> = { _id: 'x' }; // top-level always OK
|
|
64
|
+
// @ts-expect-error `role` is not indexed
|
|
65
|
+
const _f4: IndexedFilter<typeof _defs.conversationUser> = { role: 'admin' };
|
|
66
|
+
// $or recurses under the same key constraint
|
|
67
|
+
const _f5: IndexedFilter<typeof _defs.conversationUser> = { $or: [{ userId: 'u1' }, { conversationId: 'c1' }] };
|
|
68
|
+
|
|
69
|
+
const _s1: IndexedSort<typeof _defs.conversationUser> = { userId: 1 };
|
|
70
|
+
// @ts-expect-error `role` is not indexed
|
|
71
|
+
const _s2: IndexedSort<typeof _defs.conversationUser> = { role: -1 };
|
|
72
|
+
|
|
73
|
+
// ── Task 6: enforced read methods reject unindexed filter/sort keys ─────────
|
|
74
|
+
import type { TypedDB } from './DB.js';
|
|
75
|
+
declare const db: TypedDB;
|
|
76
|
+
|
|
77
|
+
// indexed → OK
|
|
78
|
+
void db.getDocs(_defs.conversationUser, { userId: 'u1' });
|
|
79
|
+
void db.getDocs(_defs.conversationUser, { userId: 'u1' }, { sort: { conversationId: 1 } });
|
|
80
|
+
// @ts-expect-error filtering an unindexed field must not compile
|
|
81
|
+
void db.getDocs(_defs.conversationUser, { role: 'admin' });
|
|
82
|
+
// @ts-expect-error sorting an unindexed field must not compile
|
|
83
|
+
void db.getDocs(_defs.conversationUser, { userId: 'u1' }, { sort: { role: 1 } });
|
|
84
|
+
|
|
85
|
+
// Reference the aliases so unused-local lint/tsc noUnusedLocals doesn't trip.
|
|
86
|
+
export type __IndexSafetyChecks = [_t1, _t2, _t3, _t4, _t5];
|
|
87
|
+
export const __indexSafetyRuntime = [_defs, _okDefs, _badDefs, _f1, _f2, _f3, _f4, _f5, _s1, _s2];
|