qstd 0.3.79 → 0.3.81
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/client/index.cjs +15 -2
- package/dist/client/index.js +15 -2
- package/dist/server/aws/ddb/domain.d.ts +119 -21
- package/dist/server/aws/ddb/domain.d.ts.map +1 -1
- package/dist/server/aws/ddb/fns.d.ts +4 -0
- package/dist/server/aws/ddb/fns.d.ts.map +1 -1
- package/dist/server/aws/ddb/types.d.ts +140 -14
- package/dist/server/aws/ddb/types.d.ts.map +1 -1
- package/dist/server/index.cjs +226 -14
- package/dist/server/index.js +228 -16
- package/dist/shared/api/fns.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/client/index.cjs
CHANGED
|
@@ -708,14 +708,27 @@ var isDev = () => {
|
|
|
708
708
|
return false;
|
|
709
709
|
};
|
|
710
710
|
var isAbsolute = (path) => path.startsWith("http");
|
|
711
|
+
var joinBaseAndPath = (baseUrl, path) => {
|
|
712
|
+
if (!baseUrl) return path;
|
|
713
|
+
if (!path) return baseUrl;
|
|
714
|
+
if (path.startsWith("?") || path.startsWith("#")) {
|
|
715
|
+
return `${baseUrl.replace(/\/+$/, "")}${path}`;
|
|
716
|
+
}
|
|
717
|
+
const trimmedBase = baseUrl.replace(/\/+$/, "");
|
|
718
|
+
const trimmedPath = path.replace(/^\/+/, "");
|
|
719
|
+
if (!trimmedPath && path.startsWith("/")) {
|
|
720
|
+
return `${trimmedBase}/`;
|
|
721
|
+
}
|
|
722
|
+
return `${trimmedBase}/${trimmedPath}`;
|
|
723
|
+
};
|
|
711
724
|
var prepareUrl = (path, props) => {
|
|
712
725
|
if (isDev() && !isAbsolute(path) && path.includes("?") && path.split("?")[1]?.split("#")[0]) {
|
|
713
726
|
console.warn(
|
|
714
727
|
`[api] Query params detected in path string. Prefer using the 'params' option instead: Api.get("/path", { params: { ... } }). Path: ${path}`
|
|
715
728
|
);
|
|
716
729
|
}
|
|
717
|
-
const
|
|
718
|
-
let url =
|
|
730
|
+
const baseUrl = isAbsolute(path) ? "" : props.baseUrl;
|
|
731
|
+
let url = joinBaseAndPath(baseUrl, path);
|
|
719
732
|
if (props.params) {
|
|
720
733
|
const searchParams = new URLSearchParams();
|
|
721
734
|
for (const [key, value] of Object.entries(props.params)) {
|
package/dist/client/index.js
CHANGED
|
@@ -701,14 +701,27 @@ var isDev = () => {
|
|
|
701
701
|
return false;
|
|
702
702
|
};
|
|
703
703
|
var isAbsolute = (path) => path.startsWith("http");
|
|
704
|
+
var joinBaseAndPath = (baseUrl, path) => {
|
|
705
|
+
if (!baseUrl) return path;
|
|
706
|
+
if (!path) return baseUrl;
|
|
707
|
+
if (path.startsWith("?") || path.startsWith("#")) {
|
|
708
|
+
return `${baseUrl.replace(/\/+$/, "")}${path}`;
|
|
709
|
+
}
|
|
710
|
+
const trimmedBase = baseUrl.replace(/\/+$/, "");
|
|
711
|
+
const trimmedPath = path.replace(/^\/+/, "");
|
|
712
|
+
if (!trimmedPath && path.startsWith("/")) {
|
|
713
|
+
return `${trimmedBase}/`;
|
|
714
|
+
}
|
|
715
|
+
return `${trimmedBase}/${trimmedPath}`;
|
|
716
|
+
};
|
|
704
717
|
var prepareUrl = (path, props) => {
|
|
705
718
|
if (isDev() && !isAbsolute(path) && path.includes("?") && path.split("?")[1]?.split("#")[0]) {
|
|
706
719
|
console.warn(
|
|
707
720
|
`[api] Query params detected in path string. Prefer using the 'params' option instead: Api.get("/path", { params: { ... } }). Path: ${path}`
|
|
708
721
|
);
|
|
709
722
|
}
|
|
710
|
-
const
|
|
711
|
-
let url =
|
|
723
|
+
const baseUrl = isAbsolute(path) ? "" : props.baseUrl;
|
|
724
|
+
let url = joinBaseAndPath(baseUrl, path);
|
|
712
725
|
if (props.params) {
|
|
713
726
|
const searchParams = new URLSearchParams();
|
|
714
727
|
for (const [key, value] of Object.entries(props.params)) {
|
|
@@ -95,6 +95,49 @@ export declare const save: <T extends object>(ddb: Client, props: {
|
|
|
95
95
|
tableName?: string;
|
|
96
96
|
item: T;
|
|
97
97
|
}) => Promise<import("@aws-sdk/lib-dynamodb").PutCommandOutput>;
|
|
98
|
+
/**
|
|
99
|
+
* Update a single item with type-safe operations
|
|
100
|
+
*
|
|
101
|
+
* Supports all DynamoDB update operations with a clean, type-safe API.
|
|
102
|
+
* Use this for single-item updates; use `transact` for atomic multi-item updates.
|
|
103
|
+
*
|
|
104
|
+
* @example
|
|
105
|
+
* ```ts
|
|
106
|
+
* // All operations with DynamoDB expression comments
|
|
107
|
+
* await update<User>(ddb, {
|
|
108
|
+
* key: { pk: 'user#123', sk: 'profile' },
|
|
109
|
+
*
|
|
110
|
+
* // Value operations
|
|
111
|
+
* set: { name: 'Alice', status: 'active' }, // SET #name = :name, #status = :status
|
|
112
|
+
* incr: { loginCount: 1, failedAttempts: -1 }, // SET #x = #x + :val (negative to decrement)
|
|
113
|
+
* remove: ['tempToken', 'oldField'], // REMOVE #tempToken, #oldField
|
|
114
|
+
*
|
|
115
|
+
* // List operations
|
|
116
|
+
* append: { tags: ['new-tag'] }, // SET #tags = list_append(#tags, :tags)
|
|
117
|
+
* prepend: { notifications: [latest] }, // SET #notif = list_append(:notif, #notif)
|
|
118
|
+
*
|
|
119
|
+
* // Conditional & atomic operations
|
|
120
|
+
* ifNotExists: { createdAt: Date.now() }, // SET #createdAt = if_not_exists(#createdAt, :val)
|
|
121
|
+
* add: { viewCount: 1 }, // ADD #viewCount :val (atomic, creates if missing)
|
|
122
|
+
*
|
|
123
|
+
* // Advanced operations
|
|
124
|
+
* setPath: { 'address.city': 'NYC' }, // SET #address.#city = :val (nested updates)
|
|
125
|
+
* compute: { total: ['subtotal', '+', 'tax'] }, // SET #total = #subtotal + #tax (cross-attribute)
|
|
126
|
+
*
|
|
127
|
+
* // Conditional execution (ConditionExpression)
|
|
128
|
+
* conditions: [{ key: 'version', op: '=', value: 1 }],
|
|
129
|
+
* });
|
|
130
|
+
*
|
|
131
|
+
* // Get updated item back
|
|
132
|
+
* const result = await update<User>(ddb, {
|
|
133
|
+
* key: { pk: 'user#123', sk: 'profile' },
|
|
134
|
+
* incr: { views: 1 },
|
|
135
|
+
* returnValues: 'allNew',
|
|
136
|
+
* });
|
|
137
|
+
* console.log(result.Attributes); // Updated item
|
|
138
|
+
* ```
|
|
139
|
+
*/
|
|
140
|
+
export declare function update<T extends object = Record<string, unknown>>(ddb: Client, props: _t.UpdateProps<T>): Promise<import("@aws-sdk/lib-dynamodb").UpdateCommandOutput>;
|
|
98
141
|
/**
|
|
99
142
|
* Batch get multiple items from DynamoDB
|
|
100
143
|
*
|
|
@@ -273,52 +316,107 @@ export declare const tableExists: (ddb: Client, props: {
|
|
|
273
316
|
* - Cannot have multiple operations on the same item
|
|
274
317
|
*
|
|
275
318
|
* @example
|
|
276
|
-
*
|
|
319
|
+
* ```ts
|
|
320
|
+
*
|
|
321
|
+
* // OPTIMISTIC LOCKING - Type-safe conditions (recommended)
|
|
322
|
+
*
|
|
277
323
|
* await transact<User>(ddb, {
|
|
278
324
|
* items: [
|
|
279
325
|
* {
|
|
280
326
|
* put: {
|
|
281
|
-
* item: {
|
|
282
|
-
* conditions: [{ key: 'version', op: '=', value:
|
|
327
|
+
* item: { ...user, version: user.version + 1 },
|
|
328
|
+
* conditions: [{ key: 'version', op: '=', value: user.version }]
|
|
283
329
|
* }
|
|
284
|
-
* }
|
|
330
|
+
* }
|
|
331
|
+
* ]
|
|
332
|
+
* });
|
|
333
|
+
*
|
|
334
|
+
*
|
|
335
|
+
* // PREVENT OVERWRITES - Only create if doesn't exist
|
|
336
|
+
*
|
|
337
|
+
* await transact<User>(ddb, {
|
|
338
|
+
* items: [
|
|
285
339
|
* {
|
|
286
|
-
*
|
|
287
|
-
*
|
|
288
|
-
* conditions: [{ key: '
|
|
340
|
+
* put: {
|
|
341
|
+
* item: newUser,
|
|
342
|
+
* conditions: [{ key: 'pk', op: 'attribute_not_exists' }]
|
|
289
343
|
* }
|
|
290
|
-
* }
|
|
344
|
+
* }
|
|
345
|
+
* ]
|
|
346
|
+
* });
|
|
347
|
+
*
|
|
348
|
+
*
|
|
349
|
+
* // CONDITIONAL DELETE - Only delete if status matches
|
|
350
|
+
*
|
|
351
|
+
* await transact<User>(ddb, {
|
|
352
|
+
* items: [
|
|
291
353
|
* {
|
|
292
|
-
*
|
|
293
|
-
* key: { pk: '
|
|
294
|
-
* conditions: [{ key: '
|
|
354
|
+
* delete: {
|
|
355
|
+
* key: { pk: 'user#123', sk: 'profile' },
|
|
356
|
+
* conditions: [{ key: 'status', op: '=', value: 'inactive' }]
|
|
295
357
|
* }
|
|
296
358
|
* }
|
|
297
359
|
* ]
|
|
298
360
|
* });
|
|
299
361
|
*
|
|
300
|
-
*
|
|
301
|
-
* // Delete
|
|
362
|
+
*
|
|
363
|
+
* // ATOMIC MULTI-ITEM - Delete media and update group together
|
|
364
|
+
*
|
|
302
365
|
* await transact(ddb, {
|
|
303
366
|
* items: [
|
|
304
367
|
* { delete: { key: { pk: 'media#123', sk: 'media#123' } } },
|
|
305
|
-
* { put: { item: { ...group,
|
|
368
|
+
* { put: { item: { ...group, mediaIds: updatedIds, updatedAt: Date.now() } } },
|
|
306
369
|
* ]
|
|
307
370
|
* });
|
|
308
371
|
*
|
|
309
|
-
*
|
|
310
|
-
* //
|
|
311
|
-
*
|
|
372
|
+
*
|
|
373
|
+
* // CONDITION CHECK - Verify related item exists before writing
|
|
374
|
+
*
|
|
375
|
+
* await transact<User>(ddb, {
|
|
312
376
|
* items: [
|
|
313
377
|
* {
|
|
314
|
-
*
|
|
315
|
-
*
|
|
316
|
-
*
|
|
317
|
-
*
|
|
378
|
+
* conditionCheck: {
|
|
379
|
+
* key: { pk: 'org#456', sk: 'org#456' },
|
|
380
|
+
* conditions: [{ key: 'pk', op: 'attribute_exists' }]
|
|
381
|
+
* }
|
|
382
|
+
* },
|
|
383
|
+
* { put: { item: { ...user, orgId: 'org#456' } } }
|
|
384
|
+
* ]
|
|
385
|
+
* });
|
|
386
|
+
*
|
|
387
|
+
*
|
|
388
|
+
* // TYPE-SAFE UPDATE - All operations with DynamoDB expression comments
|
|
389
|
+
*
|
|
390
|
+
* await transact<Order>(ddb, {
|
|
391
|
+
* items: [
|
|
392
|
+
* {
|
|
393
|
+
* update: {
|
|
394
|
+
* key: { pk: 'order#123', sk: 'order#123' },
|
|
395
|
+
*
|
|
396
|
+
* // Value operations
|
|
397
|
+
* set: { status: 'shipped', updatedAt: Date.now() }, // SET #status = :status
|
|
398
|
+
* incr: { version: 1, shipmentCount: 1 }, // SET #version = #version + :val
|
|
399
|
+
* remove: ['pendingReason'], // REMOVE #pendingReason
|
|
400
|
+
*
|
|
401
|
+
* // List operations
|
|
402
|
+
* append: { history: ['shipped'] }, // SET #history = list_append(#history, :val)
|
|
403
|
+
* prepend: { alerts: ['urgent'] }, // SET #alerts = list_append(:val, #alerts)
|
|
404
|
+
*
|
|
405
|
+
* // Conditional & atomic operations
|
|
406
|
+
* ifNotExists: { firstShippedAt: Date.now() }, // SET #x = if_not_exists(#x, :val)
|
|
407
|
+
* add: { totalOrders: 1 }, // ADD #totalOrders :val
|
|
408
|
+
*
|
|
409
|
+
* // Advanced operations
|
|
410
|
+
* setPath: { 'shipping.carrier': 'FedEx' }, // SET #shipping.#carrier = :val
|
|
411
|
+
* compute: { total: ['subtotal', '+', 'tax'] }, // SET #total = #subtotal + #tax
|
|
412
|
+
*
|
|
413
|
+
* // Conditional execution
|
|
414
|
+
* conditions: [{ key: 'status', op: '=', value: 'pending' }]
|
|
318
415
|
* }
|
|
319
416
|
* }
|
|
320
417
|
* ]
|
|
321
418
|
* });
|
|
419
|
+
* ```
|
|
322
420
|
*/
|
|
323
421
|
export declare function transact<T extends object = Record<string, unknown>>(ddb: Client, props: {
|
|
324
422
|
tableName?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"domain.d.ts","sourceRoot":"","sources":["../../../../src/server/aws/ddb/domain.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"domain.d.ts","sourceRoot":"","sources":["../../../../src/server/aws/ddb/domain.ts"],"names":[],"mappings":"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"}
|
|
@@ -27,4 +27,8 @@ export declare const backoffDelay: (attempt: number) => number;
|
|
|
27
27
|
* Chunk an array into smaller arrays of specified size
|
|
28
28
|
*/
|
|
29
29
|
export declare const chunk: <T>(arr: T[], size: number) => T[][];
|
|
30
|
+
/**
|
|
31
|
+
* Build UpdateExpression and expression attributes from type-safe update operations
|
|
32
|
+
*/
|
|
33
|
+
export declare const buildUpdateExpression: <T extends object>(ops: _t.UpdateOperations<T>, names: Record<string, string>, values: Record<string, NativeAttributeValue>) => string | undefined;
|
|
30
34
|
//# sourceMappingURL=fns.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fns.d.ts","sourceRoot":"","sources":["../../../../src/server/aws/ddb/fns.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAClE,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAE9B;;;GAGG;AACH,eAAO,MAAM,mBAAmB,GAC9B,GAAG,YAAY,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE,KACpC,MAOF,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAAI,CAAC,SAAS,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC1E,OAAO,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG;IAAE,KAAK,CAAC,EAAE,OAAO,CAAC;IAAC,GAAG,CAAC,EAAE,OAAO,CAAA;CAAE,EAC3D,WAAW,MAAM,SAmClB,CAAC;AAEF,eAAO,MAAM,2BAA2B,GACtC,IAAI;IAAE,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,EACnC,IAAI,EAAE,CAAC,MAAM,GAAG,SAAS,EACzB,OAAO,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC7B,QAAQ,MAAM,CAAC,MAAM,EAAE,oBAAoB,CAAC,WAoD7C,CAAC;AAEF,eAAO,MAAM,qBAAqB,GAAI,CAAC,SAAS,MAAM,EACpD,SAAS,aAAa,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAC1C,OAAO,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC7B,QAAQ,MAAM,CAAC,MAAM,EAAE,oBAAoB,CAAC,uBAoE7C,CAAC;AAEF,eAAO,MAAM,yBAAyB,GAAI,CAAC,EACzC,YAAY,CAAC,MAAM,CAAC,CAAC,EAAE,EACvB,OAAO,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,WAQ9B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,KAAK,GAAI,IAAI,MAAM,qBACmB,CAAC;AAEpD;;GAEG;AACH,eAAO,MAAM,YAAY,GAAI,SAAS,MAAM,KAAG,MAE9C,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,KAAK,GAAI,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,MAAM,MAAM,KAAG,CAAC,EAAE,EAIpD,CAAC"}
|
|
1
|
+
{"version":3,"file":"fns.d.ts","sourceRoot":"","sources":["../../../../src/server/aws/ddb/fns.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAClE,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAE9B;;;GAGG;AACH,eAAO,MAAM,mBAAmB,GAC9B,GAAG,YAAY,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE,KACpC,MAOF,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAAI,CAAC,SAAS,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC1E,OAAO,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG;IAAE,KAAK,CAAC,EAAE,OAAO,CAAC;IAAC,GAAG,CAAC,EAAE,OAAO,CAAA;CAAE,EAC3D,WAAW,MAAM,SAmClB,CAAC;AAEF,eAAO,MAAM,2BAA2B,GACtC,IAAI;IAAE,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,EACnC,IAAI,EAAE,CAAC,MAAM,GAAG,SAAS,EACzB,OAAO,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC7B,QAAQ,MAAM,CAAC,MAAM,EAAE,oBAAoB,CAAC,WAoD7C,CAAC;AAEF,eAAO,MAAM,qBAAqB,GAAI,CAAC,SAAS,MAAM,EACpD,SAAS,aAAa,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAC1C,OAAO,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC7B,QAAQ,MAAM,CAAC,MAAM,EAAE,oBAAoB,CAAC,uBAoE7C,CAAC;AAEF,eAAO,MAAM,yBAAyB,GAAI,CAAC,EACzC,YAAY,CAAC,MAAM,CAAC,CAAC,EAAE,EACvB,OAAO,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,WAQ9B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,KAAK,GAAI,IAAI,MAAM,qBACmB,CAAC;AAEpD;;GAEG;AACH,eAAO,MAAM,YAAY,GAAI,SAAS,MAAM,KAAG,MAE9C,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,KAAK,GAAI,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,MAAM,MAAM,KAAG,CAAC,EAAE,EAIpD,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,qBAAqB,GAAI,CAAC,SAAS,MAAM,EACpD,KAAK,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAC3B,OAAO,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC7B,QAAQ,MAAM,CAAC,MAAM,EAAE,oBAAoB,CAAC,uBA6I7C,CAAC"}
|
|
@@ -216,21 +216,37 @@ export type BatchDeleteResult = {
|
|
|
216
216
|
export type ExprValues = Record<string, unknown>;
|
|
217
217
|
/** Expression attribute names for reserved word escaping */
|
|
218
218
|
export type ExprNames = Record<string, string>;
|
|
219
|
-
/**
|
|
219
|
+
/**
|
|
220
|
+
* Put operation in a transaction
|
|
221
|
+
* @example
|
|
222
|
+
* // Type-safe conditions (recommended)
|
|
223
|
+
* { put: { item: user, conditions: [{ key: 'version', op: '=', value: 1 }] } }
|
|
224
|
+
*
|
|
225
|
+
* // Raw expression (advanced)
|
|
226
|
+
* { put: { item: user, cond: 'attribute_not_exists(pk)' } }
|
|
227
|
+
*/
|
|
220
228
|
export type TransactPut<T extends object = Record<string, unknown>> = {
|
|
221
229
|
put: {
|
|
222
230
|
item: T;
|
|
223
231
|
/** Type-safe conditions (like filters). Auto-generates expression attributes. */
|
|
224
232
|
conditions?: ReadonlyArray<FilterClause<T>>;
|
|
225
|
-
/** Raw condition expression
|
|
233
|
+
/** Raw condition expression. Use conditions for type-safety. */
|
|
226
234
|
cond?: string;
|
|
227
|
-
/** Expression attribute values for raw cond
|
|
235
|
+
/** Expression attribute values for raw cond */
|
|
228
236
|
exprValues?: ExprValues;
|
|
229
237
|
/** Expression attribute names for raw cond */
|
|
230
238
|
exprNames?: ExprNames;
|
|
231
239
|
};
|
|
232
240
|
};
|
|
233
|
-
/**
|
|
241
|
+
/**
|
|
242
|
+
* Delete operation in a transaction
|
|
243
|
+
* @example
|
|
244
|
+
* // Type-safe conditions (recommended)
|
|
245
|
+
* { delete: { key: { pk, sk }, conditions: [{ key: 'status', op: '=', value: 'inactive' }] } }
|
|
246
|
+
*
|
|
247
|
+
* // Simple delete (no conditions)
|
|
248
|
+
* { delete: { key: { pk, sk } } }
|
|
249
|
+
*/
|
|
234
250
|
export type TransactDelete<T extends object = Record<string, unknown>> = {
|
|
235
251
|
delete: {
|
|
236
252
|
key: Key;
|
|
@@ -244,25 +260,136 @@ export type TransactDelete<T extends object = Record<string, unknown>> = {
|
|
|
244
260
|
exprNames?: ExprNames;
|
|
245
261
|
};
|
|
246
262
|
};
|
|
247
|
-
/**
|
|
263
|
+
/**
|
|
264
|
+
* Type-safe update operations - shared between transact and update functions
|
|
265
|
+
* @example
|
|
266
|
+
* ```ts
|
|
267
|
+
* // Value operations
|
|
268
|
+
* set: { name: 'Alice', status: 'active' } // SET #name = :name, #status = :status
|
|
269
|
+
* incr: { count: 1, views: -5 } // SET #count = #count + :incr (use negative to decrement)
|
|
270
|
+
* remove: ['oldField', 'tempData'] // REMOVE #oldField, #tempData
|
|
271
|
+
*
|
|
272
|
+
* // List operations
|
|
273
|
+
* append: { items: ['new1', 'new2'] } // SET #items = list_append(#items, :items)
|
|
274
|
+
* prepend: { items: ['first'] } // SET #items = list_append(:items, #items)
|
|
275
|
+
*
|
|
276
|
+
* // Conditional & set operations
|
|
277
|
+
* ifNotExists: { field: 'default' } // SET #field = if_not_exists(#field, :field)
|
|
278
|
+
* add: { counter: 5 } // ADD #counter :counter (atomic, creates if missing)
|
|
279
|
+
*
|
|
280
|
+
* // Advanced
|
|
281
|
+
* setPath: { 'address.city': 'NYC' } // SET #address.#city = :val (nested updates)
|
|
282
|
+
* compute: { total: ['price', '+', 'tax'] } // SET #total = #price + #tax (cross-attribute math)
|
|
283
|
+
* ```
|
|
284
|
+
*/
|
|
285
|
+
export type UpdateOperations<T extends object = Record<string, unknown>> = {
|
|
286
|
+
/** SET: assign values to attributes */
|
|
287
|
+
set?: Partial<T>;
|
|
288
|
+
/** INCREMENT: add to numeric attributes (use negative to decrement) */
|
|
289
|
+
incr?: Partial<Record<keyof T, number>>;
|
|
290
|
+
/** REMOVE: list of attribute names to remove */
|
|
291
|
+
remove?: (keyof T)[];
|
|
292
|
+
/** LIST APPEND: append values to list attributes */
|
|
293
|
+
append?: Partial<Record<keyof T, unknown[]>>;
|
|
294
|
+
/** LIST PREPEND: prepend values to list attributes */
|
|
295
|
+
prepend?: Partial<Record<keyof T, unknown[]>>;
|
|
296
|
+
/** IF NOT EXISTS: set value only if attribute doesn't exist */
|
|
297
|
+
ifNotExists?: Partial<T>;
|
|
298
|
+
/** ADD: atomic add to numeric attributes (creates attribute if missing) */
|
|
299
|
+
add?: Partial<Record<keyof T, number>>;
|
|
300
|
+
/** SET PATH: update nested attributes using dot notation */
|
|
301
|
+
setPath?: Record<string, unknown>;
|
|
302
|
+
/** COMPUTE: cross-attribute math operations */
|
|
303
|
+
compute?: Partial<Record<keyof T, [keyof T, "+" | "-", keyof T]>>;
|
|
304
|
+
};
|
|
305
|
+
/**
|
|
306
|
+
* Update operation in a transaction
|
|
307
|
+
* @example
|
|
308
|
+
* ```ts
|
|
309
|
+
* // All operations can be combined in a single update
|
|
310
|
+
* {
|
|
311
|
+
* update: {
|
|
312
|
+
* key: { pk: 'user#123', sk: 'profile' },
|
|
313
|
+
*
|
|
314
|
+
* // Value operations
|
|
315
|
+
* set: { name: 'Alice', status: 'active' }, // SET #name = :name, #status = :status
|
|
316
|
+
* incr: { loginCount: 1, failedAttempts: -1 }, // SET #x = #x + :val (negative to decrement)
|
|
317
|
+
* remove: ['tempToken', 'oldField'], // REMOVE #tempToken, #oldField
|
|
318
|
+
*
|
|
319
|
+
* // List operations
|
|
320
|
+
* append: { tags: ['new-tag'] }, // SET #tags = list_append(#tags, :tags)
|
|
321
|
+
* prepend: { notifications: [latest] }, // SET #notif = list_append(:notif, #notif)
|
|
322
|
+
*
|
|
323
|
+
* // Conditional & set operations
|
|
324
|
+
* ifNotExists: { createdAt: Date.now() }, // SET #createdAt = if_not_exists(#createdAt, :val)
|
|
325
|
+
* add: { viewCount: 1 }, // ADD #viewCount :val (atomic, creates if missing)
|
|
326
|
+
*
|
|
327
|
+
* // Advanced operations
|
|
328
|
+
* setPath: { 'address.city': 'NYC' }, // SET #address.#city = :val (nested)
|
|
329
|
+
* compute: { total: ['subtotal', '+', 'tax'] }, // SET #total = #subtotal + #tax
|
|
330
|
+
*
|
|
331
|
+
* // Conditional execution
|
|
332
|
+
* conditions: [{ key: 'version', op: '=', value: 1 }]
|
|
333
|
+
* }
|
|
334
|
+
* }
|
|
335
|
+
* ```
|
|
336
|
+
*/
|
|
248
337
|
export type TransactUpdate<T extends object = Record<string, unknown>> = {
|
|
249
|
-
update: {
|
|
338
|
+
update: UpdateOperations<T> & {
|
|
250
339
|
key: Key;
|
|
251
|
-
/** Update expression (e.g., 'SET #count = #count + :inc') */
|
|
252
|
-
expr: string;
|
|
253
340
|
/** Type-safe conditions (like filters). Auto-generates expression attributes. */
|
|
254
341
|
conditions?: ReadonlyArray<FilterClause<T>>;
|
|
255
342
|
/** Raw condition expression. Use conditions for type-safety. */
|
|
256
343
|
cond?: string;
|
|
257
|
-
/** Expression attribute values (for expr and/or cond) */
|
|
258
|
-
exprValues?: ExprValues;
|
|
259
|
-
/** Expression attribute names (for expr and/or cond) */
|
|
260
|
-
exprNames?: ExprNames;
|
|
261
344
|
};
|
|
262
345
|
};
|
|
263
|
-
/**
|
|
346
|
+
/** Return values options for update operations */
|
|
347
|
+
export type UpdateReturnValues = "none" | "allOld" | "updatedOld" | "allNew" | "updatedNew";
|
|
348
|
+
/**
|
|
349
|
+
* Props for standalone update function
|
|
350
|
+
*/
|
|
351
|
+
export type UpdateProps<T extends object = Record<string, unknown>> = {
|
|
352
|
+
/** Table name (optional if set on client) */
|
|
353
|
+
tableName?: string;
|
|
354
|
+
/** Primary key of item to update */
|
|
355
|
+
key: Key;
|
|
356
|
+
/** Type-safe conditions (like filters) */
|
|
357
|
+
conditions?: ReadonlyArray<FilterClause<T>>;
|
|
358
|
+
/** Raw condition expression */
|
|
359
|
+
cond?: string;
|
|
360
|
+
/** What values to return after update */
|
|
361
|
+
returnValues?: UpdateReturnValues;
|
|
362
|
+
/** SET: assign values to attributes */
|
|
363
|
+
set?: Partial<T>;
|
|
364
|
+
/** INCREMENT: add to numeric attributes (use negative to decrement) */
|
|
365
|
+
incr?: Partial<Record<keyof T, number>>;
|
|
366
|
+
/** REMOVE: list of attribute names to remove */
|
|
367
|
+
remove?: (keyof T)[];
|
|
368
|
+
/** LIST APPEND: append values to list attributes */
|
|
369
|
+
append?: Partial<Record<keyof T, unknown[]>>;
|
|
370
|
+
/** LIST PREPEND: prepend values to list attributes */
|
|
371
|
+
prepend?: Partial<Record<keyof T, unknown[]>>;
|
|
372
|
+
/** IF NOT EXISTS: set value only if attribute doesn't exist */
|
|
373
|
+
ifNotExists?: Partial<T>;
|
|
374
|
+
/** ADD: atomic add to numeric attributes (creates attribute if missing) */
|
|
375
|
+
add?: Partial<Record<keyof T, number>>;
|
|
376
|
+
/** SET PATH: update nested attributes using dot notation */
|
|
377
|
+
setPath?: Record<string, unknown>;
|
|
378
|
+
/** COMPUTE: cross-attribute math operations */
|
|
379
|
+
compute?: Partial<Record<keyof T, [keyof T, "+" | "-", keyof T]>>;
|
|
380
|
+
};
|
|
381
|
+
/**
|
|
382
|
+
* ConditionCheck operation - validates a condition without modifying the item
|
|
383
|
+
* @example
|
|
384
|
+
* // Type-safe conditions (recommended)
|
|
385
|
+
* { conditionCheck: { key: { pk, sk }, conditions: [{ key: 'pk', op: 'attribute_exists' }] } }
|
|
386
|
+
*
|
|
387
|
+
* // Raw expression
|
|
388
|
+
* { conditionCheck: { key: { pk, sk }, cond: 'attribute_exists(pk)' } }
|
|
389
|
+
*/
|
|
264
390
|
export type TransactConditionCheck<T extends object = Record<string, unknown>> = {
|
|
265
391
|
conditionCheck: {
|
|
392
|
+
key: Key;
|
|
266
393
|
/** Type-safe conditions (like filters). Auto-generates expression attributes. */
|
|
267
394
|
conditions?: ReadonlyArray<FilterClause<T>>;
|
|
268
395
|
/** Raw condition expression. Use conditions for type-safety. */
|
|
@@ -271,7 +398,6 @@ export type TransactConditionCheck<T extends object = Record<string, unknown>> =
|
|
|
271
398
|
exprValues?: ExprValues;
|
|
272
399
|
/** Expression attribute names for raw cond */
|
|
273
400
|
exprNames?: ExprNames;
|
|
274
|
-
key: Key;
|
|
275
401
|
};
|
|
276
402
|
};
|
|
277
403
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/server/aws/ddb/types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/server/aws/ddb/types.ts"],"names":[],"mappings":"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"}
|
package/dist/server/index.cjs
CHANGED
|
@@ -720,14 +720,27 @@ var isDev = () => {
|
|
|
720
720
|
return false;
|
|
721
721
|
};
|
|
722
722
|
var isAbsolute = (path) => path.startsWith("http");
|
|
723
|
+
var joinBaseAndPath = (baseUrl, path) => {
|
|
724
|
+
if (!baseUrl) return path;
|
|
725
|
+
if (!path) return baseUrl;
|
|
726
|
+
if (path.startsWith("?") || path.startsWith("#")) {
|
|
727
|
+
return `${baseUrl.replace(/\/+$/, "")}${path}`;
|
|
728
|
+
}
|
|
729
|
+
const trimmedBase = baseUrl.replace(/\/+$/, "");
|
|
730
|
+
const trimmedPath = path.replace(/^\/+/, "");
|
|
731
|
+
if (!trimmedPath && path.startsWith("/")) {
|
|
732
|
+
return `${trimmedBase}/`;
|
|
733
|
+
}
|
|
734
|
+
return `${trimmedBase}/${trimmedPath}`;
|
|
735
|
+
};
|
|
723
736
|
var prepareUrl = (path, props) => {
|
|
724
737
|
if (isDev() && !isAbsolute(path) && path.includes("?") && path.split("?")[1]?.split("#")[0]) {
|
|
725
738
|
console.warn(
|
|
726
739
|
`[api] Query params detected in path string. Prefer using the 'params' option instead: Api.get("/path", { params: { ... } }). Path: ${path}`
|
|
727
740
|
);
|
|
728
741
|
}
|
|
729
|
-
const
|
|
730
|
-
let url =
|
|
742
|
+
const baseUrl = isAbsolute(path) ? "" : props.baseUrl;
|
|
743
|
+
let url = joinBaseAndPath(baseUrl, path);
|
|
731
744
|
if (props.params) {
|
|
732
745
|
const searchParams = new URLSearchParams();
|
|
733
746
|
for (const [key, value] of Object.entries(props.params)) {
|
|
@@ -1231,7 +1244,8 @@ __export(ddb_exports, {
|
|
|
1231
1244
|
remove: () => remove2,
|
|
1232
1245
|
save: () => save,
|
|
1233
1246
|
tableExists: () => tableExists,
|
|
1234
|
-
transact: () => transact
|
|
1247
|
+
transact: () => transact,
|
|
1248
|
+
update: () => update
|
|
1235
1249
|
});
|
|
1236
1250
|
|
|
1237
1251
|
// src/server/aws/ddb/fns.ts
|
|
@@ -1383,6 +1397,124 @@ var chunk2 = (arr, size) => {
|
|
|
1383
1397
|
(_, i) => arr.slice(i * size, i * size + size)
|
|
1384
1398
|
);
|
|
1385
1399
|
};
|
|
1400
|
+
var buildUpdateExpression = (ops, names, values) => {
|
|
1401
|
+
const setParts = [];
|
|
1402
|
+
const removeParts = [];
|
|
1403
|
+
const addParts = [];
|
|
1404
|
+
let nameIdx = 0;
|
|
1405
|
+
const getName = (key) => {
|
|
1406
|
+
const token = `#u${nameIdx++}`;
|
|
1407
|
+
names[token] = key;
|
|
1408
|
+
return token;
|
|
1409
|
+
};
|
|
1410
|
+
let valIdx = 0;
|
|
1411
|
+
const getValue = (val) => {
|
|
1412
|
+
const token = `:u${valIdx++}`;
|
|
1413
|
+
values[token] = val;
|
|
1414
|
+
return token;
|
|
1415
|
+
};
|
|
1416
|
+
if (ops.set) {
|
|
1417
|
+
for (const [key, val] of Object.entries(
|
|
1418
|
+
ops.set
|
|
1419
|
+
)) {
|
|
1420
|
+
if (val !== void 0) {
|
|
1421
|
+
setParts.push(`${getName(key)} = ${getValue(val)}`);
|
|
1422
|
+
}
|
|
1423
|
+
}
|
|
1424
|
+
}
|
|
1425
|
+
if (ops.incr) {
|
|
1426
|
+
for (const [key, val] of Object.entries(
|
|
1427
|
+
ops.incr
|
|
1428
|
+
)) {
|
|
1429
|
+
if (val !== void 0) {
|
|
1430
|
+
const nameToken = getName(key);
|
|
1431
|
+
setParts.push(`${nameToken} = ${nameToken} + ${getValue(val)}`);
|
|
1432
|
+
}
|
|
1433
|
+
}
|
|
1434
|
+
}
|
|
1435
|
+
if (ops.remove) {
|
|
1436
|
+
for (const key of ops.remove) {
|
|
1437
|
+
removeParts.push(getName(key));
|
|
1438
|
+
}
|
|
1439
|
+
}
|
|
1440
|
+
if (ops.append) {
|
|
1441
|
+
for (const [key, val] of Object.entries(
|
|
1442
|
+
ops.append
|
|
1443
|
+
)) {
|
|
1444
|
+
if (val !== void 0) {
|
|
1445
|
+
const nameToken = getName(key);
|
|
1446
|
+
setParts.push(
|
|
1447
|
+
`${nameToken} = list_append(${nameToken}, ${getValue(val)})`
|
|
1448
|
+
);
|
|
1449
|
+
}
|
|
1450
|
+
}
|
|
1451
|
+
}
|
|
1452
|
+
if (ops.prepend) {
|
|
1453
|
+
for (const [key, val] of Object.entries(
|
|
1454
|
+
ops.prepend
|
|
1455
|
+
)) {
|
|
1456
|
+
if (val !== void 0) {
|
|
1457
|
+
const nameToken = getName(key);
|
|
1458
|
+
setParts.push(
|
|
1459
|
+
`${nameToken} = list_append(${getValue(val)}, ${nameToken})`
|
|
1460
|
+
);
|
|
1461
|
+
}
|
|
1462
|
+
}
|
|
1463
|
+
}
|
|
1464
|
+
if (ops.ifNotExists) {
|
|
1465
|
+
for (const [key, val] of Object.entries(
|
|
1466
|
+
ops.ifNotExists
|
|
1467
|
+
)) {
|
|
1468
|
+
if (val !== void 0) {
|
|
1469
|
+
const nameToken = getName(key);
|
|
1470
|
+
setParts.push(
|
|
1471
|
+
`${nameToken} = if_not_exists(${nameToken}, ${getValue(val)})`
|
|
1472
|
+
);
|
|
1473
|
+
}
|
|
1474
|
+
}
|
|
1475
|
+
}
|
|
1476
|
+
if (ops.add) {
|
|
1477
|
+
for (const [key, val] of Object.entries(
|
|
1478
|
+
ops.add
|
|
1479
|
+
)) {
|
|
1480
|
+
if (val !== void 0) {
|
|
1481
|
+
addParts.push(`${getName(key)} ${getValue(val)}`);
|
|
1482
|
+
}
|
|
1483
|
+
}
|
|
1484
|
+
}
|
|
1485
|
+
if (ops.setPath) {
|
|
1486
|
+
for (const [path, val] of Object.entries(ops.setPath)) {
|
|
1487
|
+
if (val !== void 0) {
|
|
1488
|
+
const pathParts = path.split(".");
|
|
1489
|
+
const pathTokens = pathParts.map((p) => getName(p));
|
|
1490
|
+
setParts.push(`${pathTokens.join(".")} = ${getValue(val)}`);
|
|
1491
|
+
}
|
|
1492
|
+
}
|
|
1493
|
+
}
|
|
1494
|
+
if (ops.compute) {
|
|
1495
|
+
for (const [key, val] of Object.entries(
|
|
1496
|
+
ops.compute
|
|
1497
|
+
)) {
|
|
1498
|
+
if (val && Array.isArray(val) && val.length === 3) {
|
|
1499
|
+
const [left, op, right] = val;
|
|
1500
|
+
setParts.push(
|
|
1501
|
+
`${getName(key)} = ${getName(left)} ${op} ${getName(right)}`
|
|
1502
|
+
);
|
|
1503
|
+
}
|
|
1504
|
+
}
|
|
1505
|
+
}
|
|
1506
|
+
const exprParts = [];
|
|
1507
|
+
if (setParts.length > 0) {
|
|
1508
|
+
exprParts.push(`SET ${setParts.join(", ")}`);
|
|
1509
|
+
}
|
|
1510
|
+
if (removeParts.length > 0) {
|
|
1511
|
+
exprParts.push(`REMOVE ${removeParts.join(", ")}`);
|
|
1512
|
+
}
|
|
1513
|
+
if (addParts.length > 0) {
|
|
1514
|
+
exprParts.push(`ADD ${addParts.join(", ")}`);
|
|
1515
|
+
}
|
|
1516
|
+
return exprParts.join(" ") || void 0;
|
|
1517
|
+
};
|
|
1386
1518
|
|
|
1387
1519
|
// src/server/aws/ddb/domain.ts
|
|
1388
1520
|
var create2 = (props) => {
|
|
@@ -1531,6 +1663,66 @@ var save = async (ddb, props) => {
|
|
|
1531
1663
|
});
|
|
1532
1664
|
return ddb.client.send(command);
|
|
1533
1665
|
};
|
|
1666
|
+
var RETURN_VALUES_MAP = {
|
|
1667
|
+
updatedNew: clientDynamodb.ReturnValue.UPDATED_NEW,
|
|
1668
|
+
updatedOld: clientDynamodb.ReturnValue.UPDATED_OLD,
|
|
1669
|
+
allOld: clientDynamodb.ReturnValue.ALL_OLD,
|
|
1670
|
+
allNew: clientDynamodb.ReturnValue.ALL_NEW,
|
|
1671
|
+
none: clientDynamodb.ReturnValue.NONE
|
|
1672
|
+
};
|
|
1673
|
+
async function update(ddb, props) {
|
|
1674
|
+
const TableName = getTableNameOrThrow(
|
|
1675
|
+
props.tableName,
|
|
1676
|
+
ddb.tableName
|
|
1677
|
+
);
|
|
1678
|
+
const names = {};
|
|
1679
|
+
const values = {};
|
|
1680
|
+
const UpdateExpression = buildUpdateExpression(
|
|
1681
|
+
props,
|
|
1682
|
+
names,
|
|
1683
|
+
values
|
|
1684
|
+
);
|
|
1685
|
+
if (!UpdateExpression) {
|
|
1686
|
+
throw new Error(
|
|
1687
|
+
`[ddb] [update] requires at least one operation (set, incr, remove, append, etc.)`
|
|
1688
|
+
);
|
|
1689
|
+
}
|
|
1690
|
+
let ConditionExpression;
|
|
1691
|
+
if (props.conditions || props.cond) {
|
|
1692
|
+
const condNames = {};
|
|
1693
|
+
const condValues = {};
|
|
1694
|
+
if (props.conditions) {
|
|
1695
|
+
ConditionExpression = buildFilterExpression(
|
|
1696
|
+
props.conditions,
|
|
1697
|
+
condNames,
|
|
1698
|
+
condValues
|
|
1699
|
+
);
|
|
1700
|
+
}
|
|
1701
|
+
if (props.cond) {
|
|
1702
|
+
ConditionExpression = ConditionExpression ? `(${ConditionExpression}) AND (${props.cond})` : props.cond;
|
|
1703
|
+
}
|
|
1704
|
+
Object.assign(names, condNames);
|
|
1705
|
+
Object.assign(values, condValues);
|
|
1706
|
+
}
|
|
1707
|
+
const input = {
|
|
1708
|
+
TableName,
|
|
1709
|
+
Key: props.key,
|
|
1710
|
+
UpdateExpression
|
|
1711
|
+
};
|
|
1712
|
+
if (ConditionExpression) {
|
|
1713
|
+
input.ConditionExpression = ConditionExpression;
|
|
1714
|
+
}
|
|
1715
|
+
if (Object.keys(names).length > 0) {
|
|
1716
|
+
input.ExpressionAttributeNames = names;
|
|
1717
|
+
}
|
|
1718
|
+
if (Object.keys(values).length > 0) {
|
|
1719
|
+
input.ExpressionAttributeValues = values;
|
|
1720
|
+
}
|
|
1721
|
+
if (props.returnValues) {
|
|
1722
|
+
input.ReturnValues = RETURN_VALUES_MAP[props.returnValues];
|
|
1723
|
+
}
|
|
1724
|
+
return ddb.client.send(new libDynamodb.UpdateCommand(input));
|
|
1725
|
+
}
|
|
1534
1726
|
async function batchGet(ddb, props) {
|
|
1535
1727
|
const { keys, maxRetries = 3, strong = false } = props;
|
|
1536
1728
|
const TableName = getTableNameOrThrow(props.tableName, ddb.tableName);
|
|
@@ -1879,24 +2071,44 @@ async function transact(ddb, props) {
|
|
|
1879
2071
|
};
|
|
1880
2072
|
}
|
|
1881
2073
|
if ("update" in item2) {
|
|
1882
|
-
const {
|
|
1883
|
-
|
|
1884
|
-
|
|
1885
|
-
|
|
1886
|
-
|
|
2074
|
+
const names = {};
|
|
2075
|
+
const values = {};
|
|
2076
|
+
const UpdateExpression = buildUpdateExpression(
|
|
2077
|
+
item2.update,
|
|
2078
|
+
names,
|
|
2079
|
+
values
|
|
2080
|
+
);
|
|
2081
|
+
if (!UpdateExpression) {
|
|
2082
|
+
throw new Error(
|
|
2083
|
+
`[ddb] [transact] update requires at least one operation (set, incr, remove, append, etc.)`
|
|
2084
|
+
);
|
|
2085
|
+
}
|
|
2086
|
+
const condResult = buildCondition(
|
|
1887
2087
|
item2.update.conditions,
|
|
1888
2088
|
item2.update.cond,
|
|
1889
|
-
|
|
1890
|
-
|
|
2089
|
+
void 0,
|
|
2090
|
+
void 0
|
|
1891
2091
|
);
|
|
2092
|
+
if (condResult.ExpressionAttributeNames) {
|
|
2093
|
+
Object.assign(names, condResult.ExpressionAttributeNames);
|
|
2094
|
+
}
|
|
2095
|
+
if (condResult.ExpressionAttributeValues) {
|
|
2096
|
+
Object.assign(values, condResult.ExpressionAttributeValues);
|
|
2097
|
+
}
|
|
1892
2098
|
return {
|
|
1893
2099
|
Update: {
|
|
1894
2100
|
TableName,
|
|
1895
2101
|
Key: item2.update.key,
|
|
1896
|
-
UpdateExpression
|
|
1897
|
-
...ConditionExpression && {
|
|
1898
|
-
|
|
1899
|
-
|
|
2102
|
+
UpdateExpression,
|
|
2103
|
+
...condResult.ConditionExpression && {
|
|
2104
|
+
ConditionExpression: condResult.ConditionExpression
|
|
2105
|
+
},
|
|
2106
|
+
...Object.keys(values).length > 0 && {
|
|
2107
|
+
ExpressionAttributeValues: values
|
|
2108
|
+
},
|
|
2109
|
+
...Object.keys(names).length > 0 && {
|
|
2110
|
+
ExpressionAttributeNames: names
|
|
2111
|
+
}
|
|
1900
2112
|
}
|
|
1901
2113
|
};
|
|
1902
2114
|
}
|
package/dist/server/index.js
CHANGED
|
@@ -2,8 +2,8 @@ import { format, formatISO, formatDistanceToNow, isSameYear, isSameMonth, isSame
|
|
|
2
2
|
import awaitSpawn from 'await-spawn';
|
|
3
3
|
import { promises } from 'fs';
|
|
4
4
|
import { ArkErrors } from 'arktype';
|
|
5
|
-
import { DynamoDBDocumentClient, ScanCommand, QueryCommand, DeleteCommand, PutCommand, BatchGetCommand, TransactWriteCommand, BatchWriteCommand } from '@aws-sdk/lib-dynamodb';
|
|
6
|
-
import { DynamoDBClient, DeleteTableCommand, DescribeTableCommand, DynamoDBServiceException, CreateTableCommand, DescribeContinuousBackupsCommand, UpdateContinuousBackupsCommand, waitUntilTableExists } from '@aws-sdk/client-dynamodb';
|
|
5
|
+
import { DynamoDBDocumentClient, ScanCommand, QueryCommand, DeleteCommand, PutCommand, UpdateCommand, BatchGetCommand, TransactWriteCommand, BatchWriteCommand } from '@aws-sdk/lib-dynamodb';
|
|
6
|
+
import { ReturnValue, DynamoDBClient, DeleteTableCommand, DescribeTableCommand, DynamoDBServiceException, CreateTableCommand, DescribeContinuousBackupsCommand, UpdateContinuousBackupsCommand, waitUntilTableExists } from '@aws-sdk/client-dynamodb';
|
|
7
7
|
import signale from 'signale';
|
|
8
8
|
import { SNSClient, PublishCommand } from '@aws-sdk/client-sns';
|
|
9
9
|
import { SQSClient, SendMessageCommand } from '@aws-sdk/client-sqs';
|
|
@@ -712,14 +712,27 @@ var isDev = () => {
|
|
|
712
712
|
return false;
|
|
713
713
|
};
|
|
714
714
|
var isAbsolute = (path) => path.startsWith("http");
|
|
715
|
+
var joinBaseAndPath = (baseUrl, path) => {
|
|
716
|
+
if (!baseUrl) return path;
|
|
717
|
+
if (!path) return baseUrl;
|
|
718
|
+
if (path.startsWith("?") || path.startsWith("#")) {
|
|
719
|
+
return `${baseUrl.replace(/\/+$/, "")}${path}`;
|
|
720
|
+
}
|
|
721
|
+
const trimmedBase = baseUrl.replace(/\/+$/, "");
|
|
722
|
+
const trimmedPath = path.replace(/^\/+/, "");
|
|
723
|
+
if (!trimmedPath && path.startsWith("/")) {
|
|
724
|
+
return `${trimmedBase}/`;
|
|
725
|
+
}
|
|
726
|
+
return `${trimmedBase}/${trimmedPath}`;
|
|
727
|
+
};
|
|
715
728
|
var prepareUrl = (path, props) => {
|
|
716
729
|
if (isDev() && !isAbsolute(path) && path.includes("?") && path.split("?")[1]?.split("#")[0]) {
|
|
717
730
|
console.warn(
|
|
718
731
|
`[api] Query params detected in path string. Prefer using the 'params' option instead: Api.get("/path", { params: { ... } }). Path: ${path}`
|
|
719
732
|
);
|
|
720
733
|
}
|
|
721
|
-
const
|
|
722
|
-
let url =
|
|
734
|
+
const baseUrl = isAbsolute(path) ? "" : props.baseUrl;
|
|
735
|
+
let url = joinBaseAndPath(baseUrl, path);
|
|
723
736
|
if (props.params) {
|
|
724
737
|
const searchParams = new URLSearchParams();
|
|
725
738
|
for (const [key, value] of Object.entries(props.params)) {
|
|
@@ -1223,7 +1236,8 @@ __export(ddb_exports, {
|
|
|
1223
1236
|
remove: () => remove2,
|
|
1224
1237
|
save: () => save,
|
|
1225
1238
|
tableExists: () => tableExists,
|
|
1226
|
-
transact: () => transact
|
|
1239
|
+
transact: () => transact,
|
|
1240
|
+
update: () => update
|
|
1227
1241
|
});
|
|
1228
1242
|
|
|
1229
1243
|
// src/server/aws/ddb/fns.ts
|
|
@@ -1375,6 +1389,124 @@ var chunk2 = (arr, size) => {
|
|
|
1375
1389
|
(_, i) => arr.slice(i * size, i * size + size)
|
|
1376
1390
|
);
|
|
1377
1391
|
};
|
|
1392
|
+
var buildUpdateExpression = (ops, names, values) => {
|
|
1393
|
+
const setParts = [];
|
|
1394
|
+
const removeParts = [];
|
|
1395
|
+
const addParts = [];
|
|
1396
|
+
let nameIdx = 0;
|
|
1397
|
+
const getName = (key) => {
|
|
1398
|
+
const token = `#u${nameIdx++}`;
|
|
1399
|
+
names[token] = key;
|
|
1400
|
+
return token;
|
|
1401
|
+
};
|
|
1402
|
+
let valIdx = 0;
|
|
1403
|
+
const getValue = (val) => {
|
|
1404
|
+
const token = `:u${valIdx++}`;
|
|
1405
|
+
values[token] = val;
|
|
1406
|
+
return token;
|
|
1407
|
+
};
|
|
1408
|
+
if (ops.set) {
|
|
1409
|
+
for (const [key, val] of Object.entries(
|
|
1410
|
+
ops.set
|
|
1411
|
+
)) {
|
|
1412
|
+
if (val !== void 0) {
|
|
1413
|
+
setParts.push(`${getName(key)} = ${getValue(val)}`);
|
|
1414
|
+
}
|
|
1415
|
+
}
|
|
1416
|
+
}
|
|
1417
|
+
if (ops.incr) {
|
|
1418
|
+
for (const [key, val] of Object.entries(
|
|
1419
|
+
ops.incr
|
|
1420
|
+
)) {
|
|
1421
|
+
if (val !== void 0) {
|
|
1422
|
+
const nameToken = getName(key);
|
|
1423
|
+
setParts.push(`${nameToken} = ${nameToken} + ${getValue(val)}`);
|
|
1424
|
+
}
|
|
1425
|
+
}
|
|
1426
|
+
}
|
|
1427
|
+
if (ops.remove) {
|
|
1428
|
+
for (const key of ops.remove) {
|
|
1429
|
+
removeParts.push(getName(key));
|
|
1430
|
+
}
|
|
1431
|
+
}
|
|
1432
|
+
if (ops.append) {
|
|
1433
|
+
for (const [key, val] of Object.entries(
|
|
1434
|
+
ops.append
|
|
1435
|
+
)) {
|
|
1436
|
+
if (val !== void 0) {
|
|
1437
|
+
const nameToken = getName(key);
|
|
1438
|
+
setParts.push(
|
|
1439
|
+
`${nameToken} = list_append(${nameToken}, ${getValue(val)})`
|
|
1440
|
+
);
|
|
1441
|
+
}
|
|
1442
|
+
}
|
|
1443
|
+
}
|
|
1444
|
+
if (ops.prepend) {
|
|
1445
|
+
for (const [key, val] of Object.entries(
|
|
1446
|
+
ops.prepend
|
|
1447
|
+
)) {
|
|
1448
|
+
if (val !== void 0) {
|
|
1449
|
+
const nameToken = getName(key);
|
|
1450
|
+
setParts.push(
|
|
1451
|
+
`${nameToken} = list_append(${getValue(val)}, ${nameToken})`
|
|
1452
|
+
);
|
|
1453
|
+
}
|
|
1454
|
+
}
|
|
1455
|
+
}
|
|
1456
|
+
if (ops.ifNotExists) {
|
|
1457
|
+
for (const [key, val] of Object.entries(
|
|
1458
|
+
ops.ifNotExists
|
|
1459
|
+
)) {
|
|
1460
|
+
if (val !== void 0) {
|
|
1461
|
+
const nameToken = getName(key);
|
|
1462
|
+
setParts.push(
|
|
1463
|
+
`${nameToken} = if_not_exists(${nameToken}, ${getValue(val)})`
|
|
1464
|
+
);
|
|
1465
|
+
}
|
|
1466
|
+
}
|
|
1467
|
+
}
|
|
1468
|
+
if (ops.add) {
|
|
1469
|
+
for (const [key, val] of Object.entries(
|
|
1470
|
+
ops.add
|
|
1471
|
+
)) {
|
|
1472
|
+
if (val !== void 0) {
|
|
1473
|
+
addParts.push(`${getName(key)} ${getValue(val)}`);
|
|
1474
|
+
}
|
|
1475
|
+
}
|
|
1476
|
+
}
|
|
1477
|
+
if (ops.setPath) {
|
|
1478
|
+
for (const [path, val] of Object.entries(ops.setPath)) {
|
|
1479
|
+
if (val !== void 0) {
|
|
1480
|
+
const pathParts = path.split(".");
|
|
1481
|
+
const pathTokens = pathParts.map((p) => getName(p));
|
|
1482
|
+
setParts.push(`${pathTokens.join(".")} = ${getValue(val)}`);
|
|
1483
|
+
}
|
|
1484
|
+
}
|
|
1485
|
+
}
|
|
1486
|
+
if (ops.compute) {
|
|
1487
|
+
for (const [key, val] of Object.entries(
|
|
1488
|
+
ops.compute
|
|
1489
|
+
)) {
|
|
1490
|
+
if (val && Array.isArray(val) && val.length === 3) {
|
|
1491
|
+
const [left, op, right] = val;
|
|
1492
|
+
setParts.push(
|
|
1493
|
+
`${getName(key)} = ${getName(left)} ${op} ${getName(right)}`
|
|
1494
|
+
);
|
|
1495
|
+
}
|
|
1496
|
+
}
|
|
1497
|
+
}
|
|
1498
|
+
const exprParts = [];
|
|
1499
|
+
if (setParts.length > 0) {
|
|
1500
|
+
exprParts.push(`SET ${setParts.join(", ")}`);
|
|
1501
|
+
}
|
|
1502
|
+
if (removeParts.length > 0) {
|
|
1503
|
+
exprParts.push(`REMOVE ${removeParts.join(", ")}`);
|
|
1504
|
+
}
|
|
1505
|
+
if (addParts.length > 0) {
|
|
1506
|
+
exprParts.push(`ADD ${addParts.join(", ")}`);
|
|
1507
|
+
}
|
|
1508
|
+
return exprParts.join(" ") || void 0;
|
|
1509
|
+
};
|
|
1378
1510
|
|
|
1379
1511
|
// src/server/aws/ddb/domain.ts
|
|
1380
1512
|
var create2 = (props) => {
|
|
@@ -1523,6 +1655,66 @@ var save = async (ddb, props) => {
|
|
|
1523
1655
|
});
|
|
1524
1656
|
return ddb.client.send(command);
|
|
1525
1657
|
};
|
|
1658
|
+
var RETURN_VALUES_MAP = {
|
|
1659
|
+
updatedNew: ReturnValue.UPDATED_NEW,
|
|
1660
|
+
updatedOld: ReturnValue.UPDATED_OLD,
|
|
1661
|
+
allOld: ReturnValue.ALL_OLD,
|
|
1662
|
+
allNew: ReturnValue.ALL_NEW,
|
|
1663
|
+
none: ReturnValue.NONE
|
|
1664
|
+
};
|
|
1665
|
+
async function update(ddb, props) {
|
|
1666
|
+
const TableName = getTableNameOrThrow(
|
|
1667
|
+
props.tableName,
|
|
1668
|
+
ddb.tableName
|
|
1669
|
+
);
|
|
1670
|
+
const names = {};
|
|
1671
|
+
const values = {};
|
|
1672
|
+
const UpdateExpression = buildUpdateExpression(
|
|
1673
|
+
props,
|
|
1674
|
+
names,
|
|
1675
|
+
values
|
|
1676
|
+
);
|
|
1677
|
+
if (!UpdateExpression) {
|
|
1678
|
+
throw new Error(
|
|
1679
|
+
`[ddb] [update] requires at least one operation (set, incr, remove, append, etc.)`
|
|
1680
|
+
);
|
|
1681
|
+
}
|
|
1682
|
+
let ConditionExpression;
|
|
1683
|
+
if (props.conditions || props.cond) {
|
|
1684
|
+
const condNames = {};
|
|
1685
|
+
const condValues = {};
|
|
1686
|
+
if (props.conditions) {
|
|
1687
|
+
ConditionExpression = buildFilterExpression(
|
|
1688
|
+
props.conditions,
|
|
1689
|
+
condNames,
|
|
1690
|
+
condValues
|
|
1691
|
+
);
|
|
1692
|
+
}
|
|
1693
|
+
if (props.cond) {
|
|
1694
|
+
ConditionExpression = ConditionExpression ? `(${ConditionExpression}) AND (${props.cond})` : props.cond;
|
|
1695
|
+
}
|
|
1696
|
+
Object.assign(names, condNames);
|
|
1697
|
+
Object.assign(values, condValues);
|
|
1698
|
+
}
|
|
1699
|
+
const input = {
|
|
1700
|
+
TableName,
|
|
1701
|
+
Key: props.key,
|
|
1702
|
+
UpdateExpression
|
|
1703
|
+
};
|
|
1704
|
+
if (ConditionExpression) {
|
|
1705
|
+
input.ConditionExpression = ConditionExpression;
|
|
1706
|
+
}
|
|
1707
|
+
if (Object.keys(names).length > 0) {
|
|
1708
|
+
input.ExpressionAttributeNames = names;
|
|
1709
|
+
}
|
|
1710
|
+
if (Object.keys(values).length > 0) {
|
|
1711
|
+
input.ExpressionAttributeValues = values;
|
|
1712
|
+
}
|
|
1713
|
+
if (props.returnValues) {
|
|
1714
|
+
input.ReturnValues = RETURN_VALUES_MAP[props.returnValues];
|
|
1715
|
+
}
|
|
1716
|
+
return ddb.client.send(new UpdateCommand(input));
|
|
1717
|
+
}
|
|
1526
1718
|
async function batchGet(ddb, props) {
|
|
1527
1719
|
const { keys, maxRetries = 3, strong = false } = props;
|
|
1528
1720
|
const TableName = getTableNameOrThrow(props.tableName, ddb.tableName);
|
|
@@ -1871,24 +2063,44 @@ async function transact(ddb, props) {
|
|
|
1871
2063
|
};
|
|
1872
2064
|
}
|
|
1873
2065
|
if ("update" in item2) {
|
|
1874
|
-
const {
|
|
1875
|
-
|
|
1876
|
-
|
|
1877
|
-
|
|
1878
|
-
|
|
2066
|
+
const names = {};
|
|
2067
|
+
const values = {};
|
|
2068
|
+
const UpdateExpression = buildUpdateExpression(
|
|
2069
|
+
item2.update,
|
|
2070
|
+
names,
|
|
2071
|
+
values
|
|
2072
|
+
);
|
|
2073
|
+
if (!UpdateExpression) {
|
|
2074
|
+
throw new Error(
|
|
2075
|
+
`[ddb] [transact] update requires at least one operation (set, incr, remove, append, etc.)`
|
|
2076
|
+
);
|
|
2077
|
+
}
|
|
2078
|
+
const condResult = buildCondition(
|
|
1879
2079
|
item2.update.conditions,
|
|
1880
2080
|
item2.update.cond,
|
|
1881
|
-
|
|
1882
|
-
|
|
2081
|
+
void 0,
|
|
2082
|
+
void 0
|
|
1883
2083
|
);
|
|
2084
|
+
if (condResult.ExpressionAttributeNames) {
|
|
2085
|
+
Object.assign(names, condResult.ExpressionAttributeNames);
|
|
2086
|
+
}
|
|
2087
|
+
if (condResult.ExpressionAttributeValues) {
|
|
2088
|
+
Object.assign(values, condResult.ExpressionAttributeValues);
|
|
2089
|
+
}
|
|
1884
2090
|
return {
|
|
1885
2091
|
Update: {
|
|
1886
2092
|
TableName,
|
|
1887
2093
|
Key: item2.update.key,
|
|
1888
|
-
UpdateExpression
|
|
1889
|
-
...ConditionExpression && {
|
|
1890
|
-
|
|
1891
|
-
|
|
2094
|
+
UpdateExpression,
|
|
2095
|
+
...condResult.ConditionExpression && {
|
|
2096
|
+
ConditionExpression: condResult.ConditionExpression
|
|
2097
|
+
},
|
|
2098
|
+
...Object.keys(values).length > 0 && {
|
|
2099
|
+
ExpressionAttributeValues: values
|
|
2100
|
+
},
|
|
2101
|
+
...Object.keys(names).length > 0 && {
|
|
2102
|
+
ExpressionAttributeNames: names
|
|
2103
|
+
}
|
|
1892
2104
|
}
|
|
1893
2105
|
};
|
|
1894
2106
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fns.d.ts","sourceRoot":"","sources":["../../../src/shared/api/fns.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AA2B9B;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,UAAU,GAAI,MAAM,MAAM,YAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"fns.d.ts","sourceRoot":"","sources":["../../../src/shared/api/fns.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AA2B9B;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,UAAU,GAAI,MAAM,MAAM,YAA4B,CAAC;AA8CpE;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,eAAO,MAAM,UAAU,GACrB,MAAM,MAAM,EACZ,OAAO;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,EAAE,CAAC,MAAM,CAAA;CAAE,KAC7C,MA+BF,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,eAAO,MAAM,cAAc,GAAU,OAAO;IAC1C,QAAQ,EAAE,EAAE,CAAC,aAAa,CAAC;IAC3B,aAAa,EACT,IAAI,GACJ,KAAK,GACL,EAAE,CAAC,aAAa,GAChB,EAAE,CAAC,gBAAgB,GACnB,SAAS,CAAC;IACd,KAAK,EAAE,EAAE,CAAC,KAAK,GAAG,SAAS,CAAC;IAC5B,IAAI,EAAE,OAAO,CAAC;CACf,KAAG,OAAO,CAAC,EAAE,CAAC,aAAa,GAAG,SAAS,CAkCvC,CAAC;AAEF;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,WAAW,GACtB,MAAM,OAAO,EACb,OAAO,EAAE,CAAC,KAAK,GAAG,SAAS,KAC1B,QAAQ,GAAG,SAuBb,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AACH,wBAAuB,QAAQ,CAAC,CAAC,GAAG,OAAO,EACzC,MAAM,EAAE,cAAc,CAAC,UAAU,CAAC,GACjC,cAAc,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,CAqF/C;AAED,eAAO,MAAM,aAAa,GACxB,GAAG,EACH,CAAC,SAAS,EAAE,CAAC,MAAM,GAAG,SAAS,GAAG,SAAS,EAE3C,UAAU,QAAQ,EAClB,SAAS,CAAC,EACV,aAAa,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,KAAK,IAAI,KAC3C,OAAO,CAAC,EAAE,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC,CAAC,CAyDlC,CAAC;AAMF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,cAAc,GACzB,GAAG,EACH,CAAC,SAAS,EAAE,CAAC,MAAM,GAAG,SAAS,GAAG,SAAS,EAC3C,OAAO;IACP,gBAAgB,CAAC,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,KAAK,IAAI,CAAC;IACnD,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,KAAK,IAAI,CAAC;IAC7C,OAAO,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC;IAC3B,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,CAAC,CAAC;CACZ,KAAG,OAAO,CAAC,EAAE,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC,CAAC,CAiGnC,CAAC"}
|