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.
@@ -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 base = isAbsolute(path) ? "" : props.baseUrl;
718
- let url = `${base}${path}`;
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)) {
@@ -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 base = isAbsolute(path) ? "" : props.baseUrl;
711
- let url = `${base}${path}`;
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
- * // Type-safe conditions (recommended) - like filters in find()
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: { pk: 'user#1', sk: 'profile', version: 2, name: 'Updated' },
282
- * conditions: [{ key: 'version', op: '=', value: 1 }]
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
- * delete: {
287
- * key: { pk: 'user#2', sk: 'profile' },
288
- * conditions: [{ key: 'status', op: '=', value: 'inactive' }]
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
- * conditionCheck: {
293
- * key: { pk: 'org#1', sk: 'org#1' },
294
- * conditions: [{ key: 'pk', op: 'attribute_exists' }]
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
- * @example
301
- * // Delete a media item and update its group atomically
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, memberMediaIds: filtered, updatedAt: Date.now() } } },
368
+ * { put: { item: { ...group, mediaIds: updatedIds, updatedAt: Date.now() } } },
306
369
  * ]
307
370
  * });
308
371
  *
309
- * @example
310
- * // Raw expressions (for advanced use cases)
311
- * await transact(ddb, {
372
+ *
373
+ * // CONDITION CHECK - Verify related item exists before writing
374
+ *
375
+ * await transact<User>(ddb, {
312
376
  * items: [
313
377
  * {
314
- * put: {
315
- * item: { pk: 'user#1', sk: 'profile', version: 2, name: 'Updated' },
316
- * cond: 'version = :v',
317
- * exprValues: { ':v': 1 }
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":"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"}
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
- /** Put operation in a transaction */
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 (e.g., 'attribute_not_exists(pk)'). Use conditions for type-safety. */
233
+ /** Raw condition expression. Use conditions for type-safety. */
226
234
  cond?: string;
227
- /** Expression attribute values for raw cond (e.g., { ':v': 1 }) */
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
- /** Delete operation in a transaction */
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
- /** Update operation in a transaction */
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
- /** ConditionCheck operation - validates a condition without modifying the item */
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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"}
@@ -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 base = isAbsolute(path) ? "" : props.baseUrl;
730
- let url = `${base}${path}`;
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
- ConditionExpression,
1884
- ExpressionAttributeNames,
1885
- ExpressionAttributeValues
1886
- } = buildCondition(
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
- item2.update.exprNames,
1890
- item2.update.exprValues
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: item2.update.expr,
1897
- ...ConditionExpression && { ConditionExpression },
1898
- ...ExpressionAttributeValues && { ExpressionAttributeValues },
1899
- ...ExpressionAttributeNames && { ExpressionAttributeNames }
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
  }
@@ -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 base = isAbsolute(path) ? "" : props.baseUrl;
722
- let url = `${base}${path}`;
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
- ConditionExpression,
1876
- ExpressionAttributeNames,
1877
- ExpressionAttributeValues
1878
- } = buildCondition(
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
- item2.update.exprNames,
1882
- item2.update.exprValues
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: item2.update.expr,
1889
- ...ConditionExpression && { ConditionExpression },
1890
- ...ExpressionAttributeValues && { ExpressionAttributeValues },
1891
- ...ExpressionAttributeNames && { ExpressionAttributeNames }
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;AAEpE;;;;;;;;;;;;;;;;;;;;;;;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"}
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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "qstd",
3
- "version": "0.3.79",
3
+ "version": "0.3.81",
4
4
  "description": "Standard Block component and utilities library with Panda CSS",
5
5
  "author": "malin1",
6
6
  "license": "MIT",