dinah 0.2.0 → 0.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,520 @@
1
+ import { Static, TSchema } from "typebox";
2
+ import { DynamoDB, DynamoDBClient, DynamoDBClientConfig } from "@aws-sdk/client-dynamodb";
3
+ import * as Lib from "@aws-sdk/lib-dynamodb";
4
+
5
+ //#region src/db.d.ts
6
+ declare class Db {
7
+ readonly client: Lib.DynamoDBDocumentClient;
8
+ readonly config: DbConfig | undefined;
9
+ constructor(clientOrConfig: DynamoDBClient | DynamoDB | DynamoDBClientConfig, dbConfig?: DbConfig);
10
+ createRepo<T extends Table>(table: T): Repo<T>;
11
+ createTable(table: Table): Promise<void>;
12
+ deleteTable(tableName: string): Promise<void>;
13
+ listTables(data?: DbListTables): Promise<string[]>;
14
+ get<R = Obj>(data: DbGet): Promise<R | undefined>;
15
+ getOrThrow<R = Obj>(data: DbGet): Promise<R>;
16
+ put<R = Obj>(data: DbPut): Promise<R>;
17
+ update<R = Obj>(data: DbUpdate): Promise<R>;
18
+ delete<R = Obj>(data: DbDelete): Promise<R | undefined>;
19
+ deleteOrThrow<R = Obj>(data: DbDelete): Promise<R>;
20
+ queryPaged<R = Obj>(data: DbQuery): AsyncGenerator<R[]>;
21
+ query<R = Obj>(data: DbQuery): Promise<R[]>;
22
+ scanPaged<R = Obj>(data: DbScan): AsyncGenerator<R[]>;
23
+ scan<R = Obj>(data: DbScan): Promise<R[]>;
24
+ exists(data: DbExists): Promise<boolean>;
25
+ batchGet(data: DbBatchGet): Promise<DbBatchGetResponse>;
26
+ batchGetOrThrow(data: DbBatchGet): Promise<DbBatchGetResponse["items"]>;
27
+ batchWrite(data: DbBatchWrite): Promise<DbBatchWriteResponse>;
28
+ trxGet<R extends DbTrxGetRequest[]>(...requests: R): Promise<DbTrxGetResult<R>>;
29
+ trxGetOrThrow<R extends DbTrxGetRequest[]>(...requests: R): Promise<DbTrxGetOrThrowResult<R>>;
30
+ trxWrite(...requests: DbTrxWriteRequest[]): Promise<void>;
31
+ }
32
+ //#endregion
33
+ //#region src/repo.d.ts
34
+ declare abstract class AbstractRepo<T extends Table> {
35
+ readonly $schema: ExtractTableSchema<T>;
36
+ readonly $def: ExtractTableDef<T>;
37
+ abstract readonly table: T;
38
+ readonly db: Db;
39
+ constructor(db: Db);
40
+ get tableName(): string;
41
+ get defaultPutData(): Partial<ExtractTableSchema<T>>;
42
+ get defaultUpdateData(): Partial<ExtractTableSchema<T>>;
43
+ transformItem(item: ExtractTableSchema<T>): ExtractTableSchema<T>;
44
+ extractKey(item: RepoKey<this>): RepoKey<this>;
45
+ get<O extends RepoGetOptions<this>>(key: RepoKey<this>, options?: O): Promise<RepoGetResult<this, O>>;
46
+ getOrThrow<O extends RepoGetOptions<this>>(key: RepoKey<this>, options?: O): Promise<RepoGetOrThrowResult<this, O>>;
47
+ put(item: RepoPutItem<this>, options?: RepoPutOptions<this>): Promise<RepoPutResult<this>>;
48
+ update(key: RepoKey<this>, update: RepoUpdateData, options?: RepoUpdateOptions<this>): Promise<RepoUpdateResult<this>>;
49
+ create(item: RepoPutItem<this>, options?: RepoCreateOptions<this>): Promise<RepoCreateResult<this>>;
50
+ delete(key: RepoKey<this>, options?: RepoDeleteOptions<this>): Promise<RepoDeleteResult<this>>;
51
+ deleteOrThrow(key: RepoKey<this>, options?: Omit<RepoDeleteOptions<this>, "return">): Promise<RepoDeleteOrThrowResult<this>>;
52
+ query<O extends RepoQueryOptions<this>>(query: RepoQueryQuery<this>, options?: O): Promise<RepoQueryResult<this, O>>;
53
+ queryPaged<O extends RepoQueryOptions<this>>(query: RepoQueryQuery<this>, options?: O): RepoQueryPagedResult<this, O>;
54
+ queryGsi<G extends TableGsiNames<T>, O extends RepoQueryGsiOptions<this, T, G>>(gsi: G, query: RepoQueryGsiQuery<T, G>, options?: O): Promise<RepoQueryGsiResult<this, O, G>>;
55
+ queryGsiPaged<G extends TableGsiNames<T>, O extends RepoQueryGsiOptions<this, T, G>>(gsi: G, query: RepoQueryGsiQuery<T, G>, options?: O): RepoQueryGsiPagedResult<this, O, G>;
56
+ scan<O extends RepoScanOptions<this>>(options?: O): Promise<RepoScanResult<this, O>>;
57
+ scanPaged<O extends RepoScanOptions<this>>(options?: O): RepoScanPagedResult<this, O>;
58
+ scanGsi<G extends TableGsiNames<T>, O extends RepoScanGsiOptions<this, T, G>>(gsi: G, options?: O): Promise<RepoScanGsiResult<this, O, G>>;
59
+ scanGsiPaged<G extends TableGsiNames<T>, O extends RepoScanGsiOptions<this, T, G>>(gsi: G, options?: O): RepoScanGsiPagedResult<this, O, G>;
60
+ exists(options?: RepoExistsOptions<this>): Promise<boolean>;
61
+ existsGsi(gsi: TableGsiNames<T>, options?: RepoExistsOptions<this>): Promise<boolean>;
62
+ batchGet<O extends RepoBatchGetOptions<this>>(keys: RepoKey<this>[], options?: O): Promise<RepoBatchGetResult<this, O>>;
63
+ batchGetOrThrow<O extends RepoBatchGetOptions<this>>(keys: RepoKey<this>[], options?: O): Promise<RepoBatchGetOrThrowResult<this, O>>;
64
+ batchWrite(requests: RepoBatchWrite<this>): Promise<RepoBatchWriteResult<this>>;
65
+ trxGet<O extends RepoTrxGetOptions<this>>(keys: RepoKey<this>[], options?: O): Promise<RepoTrxGetResult<this, O>>;
66
+ trxGetOrThrow<O extends RepoTrxGetOptions<this>>(keys: RepoKey<this>[], options?: O): Promise<RepoTrxGetOrThrowResult<this, O>>;
67
+ trxWrite(...requests: RepoTrxWriteRequest<this>[]): Promise<void>;
68
+ trxDelete(keys: RepoKey<this>[], options?: Omit<RepoDeleteOptions<this>, "return">): Promise<void>;
69
+ trxPut(items: RepoPutItem<this>[], options?: Omit<RepoPutOptions<this>, "return">): Promise<void>;
70
+ trxUpdate(keys: RepoKey<this>[], update: RepoUpdateData, options?: Omit<RepoUpdateOptions<this>, "return">): Promise<void>;
71
+ trxCreate(items: RepoCreateItem<this>[], options?: RepoCreateOptions<this>): Promise<void>;
72
+ trxGetRequest<O extends RepoGetOptions<this>>(key: RepoKey<this>, options?: O): DbTrxGetRequest<RepoGetOrThrowResult<this, O>>;
73
+ trxDeleteRequest(key: RepoKey<this>, options?: Omit<RepoDeleteOptions<this>, "return">): DbTrxWriteRequest;
74
+ trxConditionRequest(key: RepoKey<this>, condition: Condition<ExtractTableSchema<T>>, options?: Omit<RepoDeleteOptions<this>, "return" | "condition">): DbTrxWriteRequest;
75
+ trxPutRequest(item: RepoPutItem<this>, options?: Omit<RepoPutOptions<this>, "return">): DbTrxWriteRequest;
76
+ trxUpdateRequest(key: RepoKey<this>, update: RepoUpdateData, options?: Omit<RepoUpdateOptions<this>, "return">): DbTrxWriteRequest;
77
+ trxCreateRequest(item: RepoCreateItem<this>, options?: RepoCreateOptions<this>): DbTrxWriteRequest;
78
+ private applyTransformsIfNeeded;
79
+ private applyTransformIfNeeded;
80
+ }
81
+ declare class Repo<T extends Table<any, any>> extends AbstractRepo<T> {
82
+ readonly table: T;
83
+ constructor(db: Db, table: T);
84
+ }
85
+ //#endregion
86
+ //#region src/types.d.ts
87
+ type Obj<T = any> = Record<string, T>;
88
+ interface DbConfig {
89
+ tableNamePrefix?: string;
90
+ }
91
+ interface DbListTables {
92
+ limit?: number;
93
+ }
94
+ interface DbGet {
95
+ table: string;
96
+ key: Obj;
97
+ consistent?: boolean;
98
+ projection?: string[];
99
+ condition?: Obj;
100
+ }
101
+ interface DbPut {
102
+ table: string;
103
+ item: Obj;
104
+ returnOld?: boolean;
105
+ condition?: Obj;
106
+ }
107
+ interface DbUpdate {
108
+ table: string;
109
+ key: Obj;
110
+ update: Obj;
111
+ condition?: Obj;
112
+ }
113
+ interface DbCreate {
114
+ table: string;
115
+ partitionKeyName: string;
116
+ item: Obj;
117
+ condition?: Obj;
118
+ }
119
+ interface DbUpsert {
120
+ table: string;
121
+ key: Obj;
122
+ update: Obj;
123
+ item: Obj;
124
+ condition?: Obj;
125
+ }
126
+ interface DbDelete {
127
+ table: string;
128
+ key: Obj;
129
+ condition?: Obj;
130
+ }
131
+ interface DbQuery {
132
+ table: string;
133
+ query: Obj;
134
+ startKey?: Obj;
135
+ filter?: Obj;
136
+ projection?: string[];
137
+ limit?: number;
138
+ index?: string;
139
+ consistent?: boolean;
140
+ sort?: "ASC" | "DESC";
141
+ }
142
+ interface DbScan {
143
+ table: string;
144
+ startKey?: Obj;
145
+ filter?: Obj;
146
+ projection?: string[];
147
+ limit?: number;
148
+ index?: string;
149
+ consistent?: boolean;
150
+ parallel?: number;
151
+ }
152
+ interface DbExists {
153
+ table: string;
154
+ query?: Obj;
155
+ filter?: Obj;
156
+ index?: string;
157
+ projection?: string[];
158
+ consistent?: boolean;
159
+ }
160
+ interface DbBatchGetRequest {
161
+ keys: Obj[];
162
+ consistent?: boolean;
163
+ projection?: string[];
164
+ condition?: Obj;
165
+ }
166
+ type DbBatchGet = Obj<DbBatchGetRequest>;
167
+ interface DbBatchGetResponse {
168
+ items: Obj<Obj[]>;
169
+ unprocessed?: DbBatchGet;
170
+ }
171
+ interface DbBatchDeleteRequest {
172
+ type: "DELETE";
173
+ key: Obj;
174
+ }
175
+ interface DbBatchPutRequest {
176
+ type: "PUT";
177
+ item: Obj;
178
+ }
179
+ type DbBatchWrite = Obj<(DbBatchDeleteRequest | DbBatchPutRequest)[]>;
180
+ interface DbBatchWriteResponse {
181
+ items: Obj<Obj[]>;
182
+ unprocessed?: DbBatchWrite;
183
+ }
184
+ interface DbTrxGetRequest<T = Obj> {
185
+ table: string;
186
+ key: Obj;
187
+ projection?: string[];
188
+ condition?: Obj;
189
+ }
190
+ type DbTrxGetResult<R extends DbTrxGetRequest[]> = { [K in keyof R]: R[K] extends DbTrxGetRequest<infer T> ? T | undefined : Obj | undefined };
191
+ type DbTrxGetOrThrowResult<R extends DbTrxGetRequest[]> = { [K in keyof R]: R[K] extends DbTrxGetRequest<infer T> ? (T extends Obj ? T : Obj) : Obj };
192
+ interface DbTrxDeleteRequest {
193
+ table: string;
194
+ type: "DELETE";
195
+ key: Obj;
196
+ condition?: Obj;
197
+ }
198
+ interface DbTrxPutRequest {
199
+ table: string;
200
+ type: "PUT";
201
+ item: Obj;
202
+ condition?: Obj;
203
+ }
204
+ interface DbTrxUpdateRequest {
205
+ table: string;
206
+ type: "UPDATE";
207
+ key: Obj;
208
+ update: Obj;
209
+ condition?: Obj;
210
+ }
211
+ interface DbTrxConditionRequest {
212
+ table: string;
213
+ type: "CONDITION";
214
+ key: Obj;
215
+ condition: Obj;
216
+ }
217
+ type DbTrxWriteRequest = DbTrxDeleteRequest | DbTrxPutRequest | DbTrxUpdateRequest | DbTrxConditionRequest;
218
+ interface DbEnableEventStreams {
219
+ tables?: string[];
220
+ startTime?: number;
221
+ }
222
+ interface DbDisableEventStreams {
223
+ tables?: string[];
224
+ }
225
+ interface DbStreamEvent {
226
+ id: string;
227
+ time: number;
228
+ table: string;
229
+ key: Obj;
230
+ type: "INSERT" | "MODIFY" | "REMOVE";
231
+ oldItem?: Obj;
232
+ newItem?: Obj;
233
+ }
234
+ type DbStreamEventListener = (event: DbStreamEvent) => void;
235
+ type AllKeys<T> = Extract<T extends any ? keyof T : never, string>;
236
+ type PartialSome<T, K extends string | number | symbol> = Omit<T, K> & Partial<Pick<T, Extract<K, keyof T>>>;
237
+ type DistPartialSome<T, K extends string | number | symbol> = T extends unknown ? PartialSome<T, K> : never;
238
+ type ExtractTableDef<T> = T extends Table<any, infer Def> ? Def : never;
239
+ type ExtractTableSchema<T> = T extends Table<infer Schema, any> ? unknown extends Static<Schema> ? any : Static<Schema> : never;
240
+ type ExtractKey<S, D> = D extends {
241
+ partitionKey: infer PK;
242
+ sortKey?: infer SK;
243
+ } ? PK extends keyof S ? SK extends keyof S ? Pick<S, PK | SK> : Pick<S, PK> : never : never;
244
+ type Func = (...args: any[]) => any;
245
+ type ExtractKeys<T, O> = { [K in AllKeys<T>]: PickTypeOf<T, K, O> extends never ? never : {
246
+ k: K;
247
+ v: PickTypeOf<T, K, O>;
248
+ } }[AllKeys<T>]["k"];
249
+ type ToUnion<T> = T extends readonly (infer U)[] ? U : T;
250
+ type SortKeyQuery<Schema, SK> = SK extends readonly [infer A extends string & keyof Schema, infer B extends string & keyof Schema, infer C extends string & keyof Schema, infer D extends string & keyof Schema] ? {} | Pick<Schema, A> | Pick<Schema, A | B> | Pick<Schema, A | B | C> | Pick<Schema, A | B | C | D> : SK extends readonly [infer A extends string & keyof Schema, infer B extends string & keyof Schema, infer C extends string & keyof Schema] ? {} | Pick<Schema, A> | Pick<Schema, A | B> | Pick<Schema, A | B | C> : SK extends readonly [infer A extends string & keyof Schema, infer B extends string & keyof Schema] ? {} | Pick<Schema, A> | Pick<Schema, A | B> : SK extends readonly [infer A extends string & keyof Schema] ? {} | Pick<Schema, A> : SK extends string & keyof Schema ? Partial<Pick<Schema, SK>> : {};
251
+ /** Extract the type of field K across all members of union T */
252
+ type ValueOfUnion<T, K extends string> = T extends unknown ? K extends keyof T ? T[K] : never : never;
253
+ /** Comparison operators valid for ordered types (string, number) */
254
+ interface ComparatorOps<V> {
255
+ $eq?: V;
256
+ $ne?: V;
257
+ $gt?: V;
258
+ $gte?: V;
259
+ $lt?: V;
260
+ $lte?: V;
261
+ }
262
+ /** String-specific operators */
263
+ interface StringOps {
264
+ $prefix?: string;
265
+ $includes?: string;
266
+ $between?: [string, string];
267
+ }
268
+ /** Number-specific operators */
269
+ interface NumberOps {
270
+ $between?: [number, number];
271
+ }
272
+ /** Operators valid for any attribute type */
273
+ interface CommonOps<V> {
274
+ $eq?: V;
275
+ $ne?: V;
276
+ $exists?: boolean;
277
+ $type?: "S" | "SS" | "N" | "NS" | "B" | "BS" | "BOOL" | "NULL" | "L" | "M";
278
+ $in?: V[];
279
+ $nin?: V[];
280
+ }
281
+ /** Size operator — accepts a number or a comparator on number */
282
+ interface SizeOps {
283
+ $size?: number | ComparatorOps<number>;
284
+ }
285
+ /** Path reference for cross-attribute comparisons */
286
+ interface PathRef {
287
+ $path: string;
288
+ }
289
+ /**
290
+ * Map a field's value type to the set of valid operators.
291
+ * Uses `[V] extends [X]` (wrapped) to prevent distribution over unions.
292
+ */
293
+ type FieldOps<V> = [V] extends [string] ? CommonOps<V | PathRef> & ComparatorOps<V | PathRef> & StringOps & SizeOps : [V] extends [number] ? CommonOps<V | PathRef> & ComparatorOps<V | PathRef> & NumberOps & SizeOps : [V] extends [boolean] ? CommonOps<V | PathRef> : [V] extends [any[]] ? CommonOps<V | PathRef> & {
294
+ $includes?: V[number];
295
+ } & SizeOps : CommonOps<V | PathRef> & SizeOps;
296
+ /**
297
+ * A single field condition: either a direct value (shorthand for $eq)
298
+ * or an operator object.
299
+ */
300
+ type FieldCondition<T> = { [K in AllKeys<T>]?: ValueOfUnion<T, K> | FieldOps<ValueOfUnion<T, K>> };
301
+ /**
302
+ * Full condition expression with compound operators.
303
+ */
304
+ type Condition<T> = FieldCondition<T> & {
305
+ $and?: Condition<T>[];
306
+ $or?: Condition<T>[];
307
+ $not?: Condition<T>;
308
+ };
309
+ type ValidPrimaryKeys<T> = { [K in keyof T]: T[K] extends string | number ? K : never }[keyof T];
310
+ type ValidTtlKeys<T> = ExtractKeys<T, number>;
311
+ type ValidGsiKeys<T> = ExtractKeys<T, string | number>;
312
+ type RepoKey<R extends AbstractRepo<any>> = Partial<R["$schema"]> & ExtractKey<R["$schema"], R["$def"]>;
313
+ type RepoPutItem<R extends AbstractRepo<any>> = DistPartialSome<R["$schema"], keyof R["defaultPutData"]>;
314
+ type RepoUpdateItem<R extends AbstractRepo<any>> = DistPartialSome<R["$schema"], keyof R["defaultUpdateData"]>;
315
+ type GsiNames<R extends AbstractRepo<any>> = keyof R["table"]["def"]["gsis"] & string;
316
+ type TableGsiNames<T extends Table> = keyof NonNullable<ExtractTableDef<T>["gsis"]> & string;
317
+ type GsiKey<R extends AbstractRepo<any>, G extends GsiNames<R>> = ExtractKey<R["$schema"], GsiDef<R, G>>;
318
+ type Projection<R extends AbstractRepo<any>> = AllKeys<R["$schema"]>[];
319
+ type RepoOutput<R extends AbstractRepo<any>> = ReturnType<R["transformItem"]>;
320
+ type ApplyProjection<R extends AbstractRepo<any>, O> = O extends {
321
+ projection: Array<infer P extends AllKeys<R["$schema"]>>;
322
+ } ? Pick<R["$schema"], P> : RepoOutput<R>;
323
+ type GsiProjectionType<R extends AbstractRepo<any>, G extends string> = GsiDef<R, G> extends {
324
+ projection: infer P;
325
+ } ? P : undefined;
326
+ type GsiDef<R extends AbstractRepo<any>, G extends string> = NonNullable<R["table"]["def"]["gsis"]>[G];
327
+ type TableKeyAttributes<R extends AbstractRepo<any>> = R["table"]["def"]["partitionKey"] | (R["table"]["def"]["sortKey"] & string);
328
+ type GsiOwnKeyAttributes<R extends AbstractRepo<any>, G extends string> = (ToUnion<GsiDef<R, G>["partitionKey"]> & string) | (ToUnion<GsiDef<R, G>["sortKey"]> & string);
329
+ type GsiAllKeyAttributes<R extends AbstractRepo<any>, G extends string> = TableKeyAttributes<R> | GsiOwnKeyAttributes<R, G>;
330
+ type GsiIncludedAttributes<R extends AbstractRepo<any>, G extends string> = Extract<GsiDef<R, G>["projection"], readonly any[]>[number];
331
+ type ApplyGsiProjection<R extends AbstractRepo<any>, O, G extends string> = O extends {
332
+ projection: Array<infer P extends AllKeys<R["$schema"]>>;
333
+ } ? Pick<R["$schema"], P | Extract<GsiAllKeyAttributes<R, G>, keyof R["$schema"]>> : GsiProjectionType<R, G> extends "ALL" | undefined ? RepoOutput<R> : Pick<R["$schema"], Extract<GsiAllKeyAttributes<R, G> | GsiIncludedAttributes<R, G>, keyof R["$schema"]>>;
334
+ interface RepoGetOptions<R extends AbstractRepo<any>> {
335
+ consistent?: boolean;
336
+ projection?: Projection<R>;
337
+ condition?: Condition<R["$schema"]>;
338
+ }
339
+ type RepoGetResult<R extends AbstractRepo<any>, O extends RepoGetOptions<R>> = undefined | ApplyProjection<R, O>;
340
+ type RepoGetOrThrowResult<R extends AbstractRepo<any>, O extends RepoGetOptions<R>> = ApplyProjection<R, O>;
341
+ interface RepoPutOptions<R extends AbstractRepo<any>> {
342
+ condition?: Condition<R["$schema"]>;
343
+ }
344
+ type RepoPutResult<R extends AbstractRepo<any>> = RepoOutput<R>;
345
+ type RepoCreateItem<R extends AbstractRepo<any>> = RepoPutItem<R>;
346
+ interface RepoCreateOptions<R extends AbstractRepo<any>> {
347
+ condition?: Condition<R["$schema"]>;
348
+ }
349
+ type RepoCreateResult<R extends AbstractRepo<any>> = RepoOutput<R>;
350
+ type RepoUpdateData = Obj;
351
+ interface RepoUpdateOptions<R extends AbstractRepo<any>> {
352
+ condition?: Condition<R["$schema"]>;
353
+ }
354
+ type RepoUpdateResult<R extends AbstractRepo<any>> = RepoOutput<R>;
355
+ interface RepoDeleteOptions<R extends AbstractRepo<any>> {
356
+ condition?: Condition<R["$schema"]>;
357
+ }
358
+ type RepoDeleteResult<R extends AbstractRepo<any>> = RepoOutput<R> | undefined;
359
+ type RepoDeleteOrThrowResult<R extends AbstractRepo<any>> = RepoOutput<R>;
360
+ type RepoQueryQuery<R extends AbstractRepo<any>> = Pick<R["$schema"], R["table"]["def"]["partitionKey"]> & SortKeyQuery<R["$schema"], R["table"]["def"]["sortKey"]>;
361
+ interface RepoQueryOptions<R extends AbstractRepo<any>> {
362
+ startKey?: RepoKey<R>;
363
+ filter?: Condition<R["$schema"]>;
364
+ projection?: Projection<R>;
365
+ limit?: number;
366
+ consistent?: boolean;
367
+ sort?: "ASC" | "DESC";
368
+ }
369
+ type RepoQueryResult<R extends AbstractRepo<any>, O extends RepoQueryOptions<R>> = ApplyProjection<R, O>[];
370
+ type RepoQueryPagedResult<R extends AbstractRepo<any>, O extends RepoQueryOptions<R>> = AsyncGenerator<ApplyProjection<R, O>[]>;
371
+ type RepoQueryGsiQuery<T extends Table, G extends string> = Pick<ExtractTableSchema<T>, ToUnion<NonNullable<ExtractTableDef<T>["gsis"]>[G]["partitionKey"]> & string> & SortKeyQuery<ExtractTableSchema<T>, NonNullable<ExtractTableDef<T>["gsis"]>[G]["sortKey"]>;
372
+ type GsiSortKeyOf<T extends Table, G extends string> = ToUnion<NonNullable<ExtractTableDef<T>["gsis"]>[G] extends {
373
+ sortKey: infer SK;
374
+ } ? SK : never> & string;
375
+ type TableSortKeyOf<T extends Table> = ExtractTableDef<T> extends {
376
+ sortKey: infer SK extends string;
377
+ } ? SK : never;
378
+ type RepoGsiStartKey<T extends Table, G extends string> = Pick<ExtractTableSchema<T>, ExtractTableDef<T>["partitionKey"] | TableSortKeyOf<T> | (ToUnion<NonNullable<ExtractTableDef<T>["gsis"]>[G]["partitionKey"]> & string) | GsiSortKeyOf<T, G>>;
379
+ interface RepoQueryGsiOptions<R extends AbstractRepo<any>, T extends Table = Table, G extends string = string> {
380
+ startKey?: RepoGsiStartKey<T, G>;
381
+ filter?: Condition<R["$schema"]>;
382
+ projection?: Projection<R>;
383
+ limit?: number;
384
+ sort?: "ASC" | "DESC";
385
+ }
386
+ type RepoQueryGsiResult<R extends AbstractRepo<any>, O extends RepoQueryGsiOptions<R>, G extends string = string> = ApplyGsiProjection<R, O, G>[];
387
+ type RepoQueryGsiPagedResult<R extends AbstractRepo<any>, O extends RepoQueryGsiOptions<R>, G extends string = string> = AsyncGenerator<ApplyGsiProjection<R, O, G>[]>;
388
+ interface RepoScanOptions<R extends AbstractRepo<any>> {
389
+ startKey?: RepoKey<R>;
390
+ filter?: Condition<R["$schema"]>;
391
+ projection?: Projection<R>;
392
+ limit?: number;
393
+ consistent?: boolean;
394
+ parallel?: number;
395
+ }
396
+ type RepoScanResult<R extends AbstractRepo<any>, O extends RepoScanOptions<R>> = ApplyProjection<R, O>[];
397
+ type RepoScanPagedResult<R extends AbstractRepo<any>, O extends RepoScanOptions<R>> = AsyncGenerator<ApplyProjection<R, O>[]>;
398
+ interface RepoScanGsiOptions<R extends AbstractRepo<any>, T extends Table = Table, G extends string = string> {
399
+ startKey?: RepoGsiStartKey<T, G>;
400
+ filter?: Condition<R["$schema"]>;
401
+ projection?: Projection<R>;
402
+ limit?: number;
403
+ parallel?: number;
404
+ }
405
+ type RepoScanGsiResult<R extends AbstractRepo<any>, O extends RepoScanGsiOptions<R>, G extends string = string> = ApplyGsiProjection<R, O, G>[];
406
+ type RepoScanGsiPagedResult<R extends AbstractRepo<any>, O extends RepoScanGsiOptions<R>, G extends string = string> = AsyncGenerator<ApplyGsiProjection<R, O, G>[]>;
407
+ interface RepoExistsOptions<R extends AbstractRepo<any>> {
408
+ query?: Obj;
409
+ filter?: Condition<R["$schema"]>;
410
+ consistent?: boolean;
411
+ }
412
+ interface RepoTrxGetOptions<R extends AbstractRepo<any>> {
413
+ projection?: Projection<R>;
414
+ condition?: Condition<R["$schema"]>;
415
+ }
416
+ type RepoTrxGetResult<R extends AbstractRepo<any>, O extends RepoTrxGetOptions<R>> = (ApplyProjection<R, O> | undefined)[];
417
+ type RepoTrxGetOrThrowResult<R extends AbstractRepo<any>, O extends RepoTrxGetOptions<R>> = ApplyProjection<R, O>[];
418
+ type RepoTrxGetRequestResult = {
419
+ table: string;
420
+ };
421
+ interface RepoTrxDeleteRequest<R extends AbstractRepo<any>> {
422
+ type: "DELETE";
423
+ key: RepoKey<R>;
424
+ condition?: Condition<R["$schema"]>;
425
+ }
426
+ interface RepoTrxPutRequest<R extends AbstractRepo<any>> {
427
+ type: "PUT";
428
+ item: RepoPutItem<R>;
429
+ condition?: Condition<R["$schema"]>;
430
+ }
431
+ interface RepoTrxUpdateRequest<R extends AbstractRepo<any>> {
432
+ table: string;
433
+ type: "UPDATE";
434
+ key: RepoKey<R>;
435
+ update: RepoUpdateData;
436
+ condition?: Condition<R["$schema"]>;
437
+ }
438
+ interface RepoTrxConditionRequest<R extends AbstractRepo<any>> {
439
+ type: "CONDITION";
440
+ key: RepoKey<R>;
441
+ condition: Condition<R["$schema"]>;
442
+ }
443
+ type RepoTrxWriteRequest<R extends AbstractRepo<any>> = RepoTrxDeleteRequest<R> | RepoTrxPutRequest<R> | RepoTrxUpdateRequest<R> | RepoTrxConditionRequest<R>;
444
+ interface RepoBatchGetOptions<R extends AbstractRepo<any>> {
445
+ consistent?: boolean;
446
+ projection?: Projection<R>;
447
+ condition?: Condition<R["$schema"]>;
448
+ }
449
+ type RepoBatchGetResult<R extends AbstractRepo<any>, O extends RepoBatchGetOptions<R>> = {
450
+ items: ApplyProjection<R, O>[];
451
+ unprocessed?: RepoKey<R>[];
452
+ };
453
+ type RepoBatchGetOrThrowResult<R extends AbstractRepo<any>, O extends RepoBatchGetOptions<R>> = ApplyProjection<R, O>[];
454
+ type RepoBatchWritePutRequest<R extends AbstractRepo<any>> = {
455
+ type: "PUT";
456
+ item: RepoPutItem<R>;
457
+ };
458
+ type RepoBatchWriteDeleteRequest<R extends AbstractRepo<any>> = {
459
+ type: "DELETE";
460
+ key: RepoKey<R>;
461
+ };
462
+ type RepoBatchWrite<R extends AbstractRepo<any>> = (RepoBatchWritePutRequest<R> | RepoBatchWriteDeleteRequest<R>)[];
463
+ type RepoBatchWriteResult<R extends AbstractRepo<any>> = {
464
+ items: RepoPutItem<R>[];
465
+ unprocessed?: RepoBatchWrite<R>;
466
+ };
467
+ type RepoBatchPutRequest<R extends AbstractRepo<any>> = RepoPutItem<R>[];
468
+ type RepoBatchPutResult<R extends AbstractRepo<any>> = {
469
+ items: RepoPutItem<R>[];
470
+ unprocessed?: RepoBatchPutRequest<R>;
471
+ };
472
+ type RepoBatchDeleteRequest<R extends AbstractRepo<any>> = RepoKey<R>[];
473
+ type RepoBatchDeleteResponse<R extends AbstractRepo<any>> = RepoBatchDeleteRequest<R> | undefined;
474
+ type PickTypeOf<T, K extends AllKeys<T>, O> = T extends { [k in K]?: O } ? T[K] : never;
475
+ interface Gsi<T> {
476
+ readonly partitionKey: ValidGsiKeys<T> | readonly ValidGsiKeys<T>[];
477
+ readonly sortKey?: ValidGsiKeys<T> | readonly ValidGsiKeys<T>[];
478
+ readonly projection?: "ALL" | "KEYS_ONLY" | readonly AllKeys<T>[];
479
+ }
480
+ interface TableDef<T = any> {
481
+ readonly name: string;
482
+ readonly partitionKey: ValidPrimaryKeys<T>;
483
+ readonly sortKey?: ValidPrimaryKeys<T>;
484
+ readonly gsis?: Readonly<Record<string, Gsi<T>>>;
485
+ readonly ttlAttribute?: ValidTtlKeys<T>;
486
+ readonly billingMode?: "PAY_PER_REQUEST" | "PROVISIONED";
487
+ readonly stream?: "KEYS_ONLY" | "NEW_IMAGE" | "OLD_IMAGE" | "NEW_AND_OLD_IMAGES";
488
+ }
489
+ interface TableKey {
490
+ name: string;
491
+ type: "S" | "N";
492
+ }
493
+ interface TableGsi {
494
+ indexName: string;
495
+ projectionType: "KEYS_ONLY" | "ALL" | "INCLUDE";
496
+ partitionKey: TableKey;
497
+ sortKey?: TableKey;
498
+ nonKeyAttributes?: string[];
499
+ }
500
+ interface TableDesc {
501
+ tableName: string;
502
+ billingMode: "PAY_PER_REQUEST" | "PROVISIONED";
503
+ partitionKey: TableKey;
504
+ sortKey?: TableKey;
505
+ ttlAttribute?: string;
506
+ gsis?: TableGsi[];
507
+ stream?: "KEYS_ONLY" | "NEW_IMAGE" | "OLD_IMAGE" | "NEW_AND_OLD_IMAGES";
508
+ }
509
+ type ResolvedAttrType = ("S" | "N" | undefined)[];
510
+ //#endregion
511
+ //#region src/table.d.ts
512
+ type SchemaStatic<Schema extends TSchema> = unknown extends Static<Schema> ? any : Static<Schema>;
513
+ declare class Table<Schema extends TSchema = TSchema, const Def extends TableDef<SchemaStatic<Schema>> = TableDef<SchemaStatic<Schema>>> {
514
+ readonly schema: Schema;
515
+ readonly def: Def;
516
+ constructor(schema: Schema, def: Def);
517
+ }
518
+ //#endregion
519
+ export { RepoBatchGetOrThrowResult as $, TableKey as $t, DbTrxGetResult as A, RepoScanGsiPagedResult as At, ExtractTableSchema as B, RepoTrxGetResult as Bt, DbScan as C, RepoQueryGsiQuery as Ct, DbTrxDeleteRequest as D, RepoQueryQuery as Dt, DbTrxConditionRequest as E, RepoQueryPagedResult as Et, DbUpsert as F, RepoTrxConditionRequest as Ft, GsiProjectionType as G, RepoUpdateItem as Gt, Gsi as H, RepoTrxUpdateRequest as Ht, DistPartialSome as I, RepoTrxDeleteRequest as It, PickTypeOf as J, ResolvedAttrType as Jt, Obj as K, RepoUpdateOptions as Kt, ExtractKey as L, RepoTrxGetOptions as Lt, DbTrxUpdateRequest as M, RepoScanOptions as Mt, DbTrxWriteRequest as N, RepoScanPagedResult as Nt, DbTrxGetOrThrowResult as O, RepoQueryResult as Ot, DbUpdate as P, RepoScanResult as Pt, RepoBatchGetOptions as Q, TableGsiNames as Qt, ExtractKeys as R, RepoTrxGetOrThrowResult as Rt, DbQuery as S, RepoQueryGsiPagedResult as St, DbStreamEventListener as T, RepoQueryOptions as Tt, GsiKey as U, RepoTrxWriteRequest as Ut, Func as V, RepoTrxPutRequest as Vt, GsiNames as W, RepoUpdateData as Wt, RepoBatchDeleteRequest as X, TableDesc as Xt, Projection as Y, TableDef as Yt, RepoBatchDeleteResponse as Z, TableGsi as Zt, DbEnableEventStreams as _, RepoOutput as _t, Condition as a, Db as an, RepoCreateItem as at, DbListTables as b, RepoPutResult as bt, DbBatchGetRequest as c, RepoDeleteOptions as ct, DbBatchWrite as d, RepoExistsOptions as dt, ValidGsiKeys as en, RepoBatchGetResult as et, DbBatchWriteResponse as f, RepoGetOptions as ft, DbDisableEventStreams as g, RepoKey as gt, DbDelete as h, RepoGsiStartKey as ht, ApplyProjection as i, Repo as in, RepoBatchWriteResult as it, DbTrxPutRequest as j, RepoScanGsiResult as jt, DbTrxGetRequest as k, RepoScanGsiOptions as kt, DbBatchGetResponse as l, RepoDeleteOrThrowResult as lt, DbCreate as m, RepoGetResult as mt, AllKeys as n, ValidTtlKeys as nn, RepoBatchPutResult as nt, DbBatchDeleteRequest as o, RepoCreateOptions as ot, DbConfig as p, RepoGetOrThrowResult as pt, PartialSome as q, RepoUpdateResult as qt, ApplyGsiProjection as r, AbstractRepo as rn, RepoBatchWrite as rt, DbBatchGet as s, RepoCreateResult as st, Table as t, ValidPrimaryKeys as tn, RepoBatchPutRequest as tt, DbBatchPutRequest as u, RepoDeleteResult as ut, DbExists as v, RepoPutItem as vt, DbStreamEvent as w, RepoQueryGsiResult as wt, DbPut as x, RepoQueryGsiOptions as xt, DbGet as y, RepoPutOptions as yt, ExtractTableDef as z, RepoTrxGetRequestResult as zt };
520
+ //# sourceMappingURL=table-DBf8kWHl.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"table-DBf8kWHl.d.cts","names":[],"sources":["../src/db.ts","../src/repo.ts","../src/types.ts","../src/table.ts"],"mappings":"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"}