dynamo-document-builder 0.6.0 → 0.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +367 -0
- package/dist/attributes/attribute-map.cjs +52 -0
- package/dist/attributes/attribute-map.cjs.map +1 -1
- package/dist/attributes/attribute-map.d.ts +67 -0
- package/dist/attributes/attribute-map.mjs +52 -0
- package/dist/attributes/attribute-map.mjs.map +1 -1
- package/dist/commands/batch-get.cjs +43 -0
- package/dist/commands/batch-get.cjs.map +1 -1
- package/dist/commands/batch-get.d.ts +51 -3
- package/dist/commands/batch-get.mjs +44 -1
- package/dist/commands/batch-get.mjs.map +1 -1
- package/dist/commands/batch-projected-get.cjs +42 -0
- package/dist/commands/batch-projected-get.cjs.map +1 -1
- package/dist/commands/batch-projected-get.d.ts +56 -3
- package/dist/commands/batch-projected-get.mjs +42 -0
- package/dist/commands/batch-projected-get.mjs.map +1 -1
- package/dist/commands/batch-write.cjs +44 -0
- package/dist/commands/batch-write.cjs.map +1 -1
- package/dist/commands/batch-write.d.ts +54 -4
- package/dist/commands/batch-write.mjs +45 -1
- package/dist/commands/batch-write.mjs.map +1 -1
- package/dist/commands/condition-check.cjs +37 -0
- package/dist/commands/condition-check.cjs.map +1 -1
- package/dist/commands/condition-check.d.ts +45 -3
- package/dist/commands/condition-check.mjs +37 -0
- package/dist/commands/condition-check.mjs.map +1 -1
- package/dist/commands/conditional-delete.cjs +33 -0
- package/dist/commands/conditional-delete.cjs.map +1 -1
- package/dist/commands/conditional-delete.d.ts +46 -3
- package/dist/commands/conditional-delete.mjs +33 -0
- package/dist/commands/conditional-delete.mjs.map +1 -1
- package/dist/commands/conditional-put.cjs +34 -0
- package/dist/commands/conditional-put.cjs.map +1 -1
- package/dist/commands/conditional-put.d.ts +48 -4
- package/dist/commands/conditional-put.mjs +34 -0
- package/dist/commands/conditional-put.mjs.map +1 -1
- package/dist/commands/conditional-update.cjs +35 -0
- package/dist/commands/conditional-update.cjs.map +1 -1
- package/dist/commands/conditional-update.d.ts +48 -3
- package/dist/commands/conditional-update.mjs +35 -0
- package/dist/commands/conditional-update.mjs.map +1 -1
- package/dist/commands/delete.cjs +32 -0
- package/dist/commands/delete.cjs.map +1 -1
- package/dist/commands/delete.d.ts +44 -2
- package/dist/commands/delete.mjs +32 -0
- package/dist/commands/delete.mjs.map +1 -1
- package/dist/commands/get.cjs +33 -0
- package/dist/commands/get.cjs.map +1 -1
- package/dist/commands/get.d.ts +45 -2
- package/dist/commands/get.mjs +33 -0
- package/dist/commands/get.mjs.map +1 -1
- package/dist/commands/index.cjs +8 -0
- package/dist/commands/index.cjs.map +1 -1
- package/dist/commands/index.d.ts +160 -1
- package/dist/commands/index.mjs +4 -0
- package/dist/commands/index.mjs.map +1 -1
- package/dist/commands/projected-get.cjs +40 -0
- package/dist/commands/projected-get.cjs.map +1 -1
- package/dist/commands/projected-get.d.ts +54 -3
- package/dist/commands/projected-get.mjs +40 -0
- package/dist/commands/projected-get.mjs.map +1 -1
- package/dist/commands/projected-query.cjs +41 -0
- package/dist/commands/projected-query.cjs.map +1 -1
- package/dist/commands/projected-query.d.ts +56 -3
- package/dist/commands/projected-query.mjs +41 -0
- package/dist/commands/projected-query.mjs.map +1 -1
- package/dist/commands/projected-scan.cjs +41 -0
- package/dist/commands/projected-scan.cjs.map +1 -1
- package/dist/commands/projected-scan.d.ts +55 -3
- package/dist/commands/projected-scan.mjs +41 -0
- package/dist/commands/projected-scan.mjs.map +1 -1
- package/dist/commands/put.cjs +37 -0
- package/dist/commands/put.cjs.map +1 -1
- package/dist/commands/put.d.ts +50 -3
- package/dist/commands/put.mjs +37 -0
- package/dist/commands/put.mjs.map +1 -1
- package/dist/commands/query.cjs +35 -0
- package/dist/commands/query.cjs.map +1 -1
- package/dist/commands/query.d.ts +48 -3
- package/dist/commands/query.mjs +35 -0
- package/dist/commands/query.mjs.map +1 -1
- package/dist/commands/scan.cjs +33 -0
- package/dist/commands/scan.cjs.map +1 -1
- package/dist/commands/scan.d.ts +46 -3
- package/dist/commands/scan.mjs +33 -0
- package/dist/commands/scan.mjs.map +1 -1
- package/dist/commands/table-batch-get.cjs +123 -0
- package/dist/commands/table-batch-get.cjs.map +1 -0
- package/dist/commands/table-batch-get.d.ts +86 -0
- package/dist/commands/table-batch-get.mjs +121 -0
- package/dist/commands/table-batch-get.mjs.map +1 -0
- package/dist/commands/table-batch-write.cjs +119 -0
- package/dist/commands/table-batch-write.cjs.map +1 -0
- package/dist/commands/table-batch-write.d.ts +79 -0
- package/dist/commands/table-batch-write.mjs +117 -0
- package/dist/commands/table-batch-write.mjs.map +1 -0
- package/dist/commands/table-transact-get.cjs +73 -0
- package/dist/commands/table-transact-get.cjs.map +1 -0
- package/dist/commands/table-transact-get.d.ts +60 -0
- package/dist/commands/table-transact-get.mjs +71 -0
- package/dist/commands/table-transact-get.mjs.map +1 -0
- package/dist/commands/table-transact-write.cjs +76 -0
- package/dist/commands/table-transact-write.cjs.map +1 -0
- package/dist/commands/table-transact-write.d.ts +51 -0
- package/dist/commands/table-transact-write.mjs +74 -0
- package/dist/commands/table-transact-write.mjs.map +1 -0
- package/dist/commands/transact-get.cjs +38 -0
- package/dist/commands/transact-get.cjs.map +1 -1
- package/dist/commands/transact-get.d.ts +49 -3
- package/dist/commands/transact-get.mjs +39 -1
- package/dist/commands/transact-get.mjs.map +1 -1
- package/dist/commands/transact-write.cjs +37 -0
- package/dist/commands/transact-write.cjs.map +1 -1
- package/dist/commands/transact-write.d.ts +46 -1
- package/dist/commands/transact-write.mjs +37 -0
- package/dist/commands/transact-write.mjs.map +1 -1
- package/dist/commands/update.cjs +37 -0
- package/dist/commands/update.cjs.map +1 -1
- package/dist/commands/update.d.ts +50 -3
- package/dist/commands/update.mjs +37 -0
- package/dist/commands/update.mjs.map +1 -1
- package/dist/conditions/and.cjs +3 -0
- package/dist/conditions/and.cjs.map +1 -1
- package/dist/conditions/and.d.ts +4 -1
- package/dist/conditions/and.mjs +3 -0
- package/dist/conditions/and.mjs.map +1 -1
- package/dist/conditions/begins-with.cjs +3 -0
- package/dist/conditions/begins-with.cjs.map +1 -1
- package/dist/conditions/begins-with.d.ts +4 -1
- package/dist/conditions/begins-with.mjs +3 -0
- package/dist/conditions/begins-with.mjs.map +1 -1
- package/dist/conditions/between.cjs +3 -0
- package/dist/conditions/between.cjs.map +1 -1
- package/dist/conditions/between.d.ts +4 -1
- package/dist/conditions/between.mjs +3 -0
- package/dist/conditions/between.mjs.map +1 -1
- package/dist/conditions/condition-parser.d.ts +1 -1
- package/dist/conditions/contains.cjs +3 -0
- package/dist/conditions/contains.cjs.map +1 -1
- package/dist/conditions/contains.d.ts +4 -1
- package/dist/conditions/contains.mjs +3 -0
- package/dist/conditions/contains.mjs.map +1 -1
- package/dist/conditions/equals.cjs +3 -0
- package/dist/conditions/equals.cjs.map +1 -1
- package/dist/conditions/equals.d.ts +4 -1
- package/dist/conditions/equals.mjs +3 -0
- package/dist/conditions/equals.mjs.map +1 -1
- package/dist/conditions/exists.cjs +3 -0
- package/dist/conditions/exists.cjs.map +1 -1
- package/dist/conditions/exists.d.ts +4 -1
- package/dist/conditions/exists.mjs +3 -0
- package/dist/conditions/exists.mjs.map +1 -1
- package/dist/conditions/greater-than-or-equal.cjs +3 -0
- package/dist/conditions/greater-than-or-equal.cjs.map +1 -1
- package/dist/conditions/greater-than-or-equal.d.ts +4 -1
- package/dist/conditions/greater-than-or-equal.mjs +3 -0
- package/dist/conditions/greater-than-or-equal.mjs.map +1 -1
- package/dist/conditions/greater-than.cjs +3 -0
- package/dist/conditions/greater-than.cjs.map +1 -1
- package/dist/conditions/greater-than.d.ts +4 -1
- package/dist/conditions/greater-than.mjs +3 -0
- package/dist/conditions/greater-than.mjs.map +1 -1
- package/dist/conditions/index.cjs +2 -2
- package/dist/conditions/index.d.ts +185 -2
- package/dist/conditions/index.mjs +1 -1
- package/dist/conditions/is-in.cjs +3 -0
- package/dist/conditions/is-in.cjs.map +1 -1
- package/dist/conditions/is-in.d.ts +4 -1
- package/dist/conditions/is-in.mjs +3 -0
- package/dist/conditions/is-in.mjs.map +1 -1
- package/dist/conditions/less-than-or-equal.cjs +3 -0
- package/dist/conditions/less-than-or-equal.cjs.map +1 -1
- package/dist/conditions/less-than-or-equal.d.ts +4 -1
- package/dist/conditions/less-than-or-equal.mjs +3 -0
- package/dist/conditions/less-than-or-equal.mjs.map +1 -1
- package/dist/conditions/less-than.cjs +3 -0
- package/dist/conditions/less-than.cjs.map +1 -1
- package/dist/conditions/less-than.d.ts +4 -1
- package/dist/conditions/less-than.mjs +3 -0
- package/dist/conditions/less-than.mjs.map +1 -1
- package/dist/conditions/not-equals.cjs +3 -0
- package/dist/conditions/not-equals.cjs.map +1 -1
- package/dist/conditions/not-equals.d.ts +4 -1
- package/dist/conditions/not-equals.mjs +3 -0
- package/dist/conditions/not-equals.mjs.map +1 -1
- package/dist/conditions/not-exists.cjs +3 -0
- package/dist/conditions/not-exists.cjs.map +1 -1
- package/dist/conditions/not-exists.d.ts +4 -1
- package/dist/conditions/not-exists.mjs +3 -0
- package/dist/conditions/not-exists.mjs.map +1 -1
- package/dist/conditions/not.cjs +3 -0
- package/dist/conditions/not.cjs.map +1 -1
- package/dist/conditions/not.d.ts +4 -1
- package/dist/conditions/not.mjs +3 -0
- package/dist/conditions/not.mjs.map +1 -1
- package/dist/conditions/or.cjs +3 -0
- package/dist/conditions/or.cjs.map +1 -1
- package/dist/conditions/or.d.ts +4 -1
- package/dist/conditions/or.mjs +3 -0
- package/dist/conditions/or.mjs.map +1 -1
- package/dist/conditions/size.cjs +3 -0
- package/dist/conditions/size.cjs.map +1 -1
- package/dist/conditions/size.d.ts +4 -1
- package/dist/conditions/size.mjs +3 -0
- package/dist/conditions/size.mjs.map +1 -1
- package/dist/conditions/type-is.cjs +3 -0
- package/dist/conditions/type-is.cjs.map +1 -1
- package/dist/conditions/type-is.d.ts +4 -1
- package/dist/conditions/type-is.mjs +3 -0
- package/dist/conditions/type-is.mjs.map +1 -1
- package/dist/core/entity.cjs +171 -0
- package/dist/core/entity.cjs.map +1 -1
- package/dist/core/entity.d.ts +99 -4
- package/dist/core/entity.mjs +171 -0
- package/dist/core/entity.mjs.map +1 -1
- package/dist/core/index.d.ts +139 -2
- package/dist/core/key.cjs +1 -1
- package/dist/core/key.cjs.map +1 -1
- package/dist/core/key.d.ts +26 -2
- package/dist/core/key.mjs +1 -1
- package/dist/core/key.mjs.map +1 -1
- package/dist/core/table.cjs +30 -0
- package/dist/core/table.cjs.map +1 -1
- package/dist/core/table.d.ts +40 -1
- package/dist/core/table.mjs +31 -1
- package/dist/core/table.mjs.map +1 -1
- package/dist/errors.cjs +3 -0
- package/dist/errors.cjs.map +1 -1
- package/dist/errors.d.ts +3 -0
- package/dist/errors.mjs +3 -0
- package/dist/errors.mjs.map +1 -1
- package/dist/index.cjs +10 -2
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +11 -7
- package/dist/index.mjs +5 -1
- package/dist/index.mjs.map +1 -1
- package/dist/projections/index.d.ts +7 -1
- package/dist/projections/projection-parser.d.ts +1 -1
- package/dist/updates/add-to-set.cjs +5 -0
- package/dist/updates/add-to-set.cjs.map +1 -1
- package/dist/updates/add-to-set.d.ts +6 -1
- package/dist/updates/add-to-set.mjs +5 -0
- package/dist/updates/add-to-set.mjs.map +1 -1
- package/dist/updates/add.cjs +5 -0
- package/dist/updates/add.cjs.map +1 -1
- package/dist/updates/add.d.ts +6 -1
- package/dist/updates/add.mjs +5 -0
- package/dist/updates/add.mjs.map +1 -1
- package/dist/updates/append.cjs +5 -0
- package/dist/updates/append.cjs.map +1 -1
- package/dist/updates/append.d.ts +6 -1
- package/dist/updates/append.mjs +5 -0
- package/dist/updates/append.mjs.map +1 -1
- package/dist/updates/index.d.ts +78 -1
- package/dist/updates/prepend.cjs +5 -0
- package/dist/updates/prepend.cjs.map +1 -1
- package/dist/updates/prepend.d.ts +6 -1
- package/dist/updates/prepend.mjs +5 -0
- package/dist/updates/prepend.mjs.map +1 -1
- package/dist/updates/ref.cjs +6 -0
- package/dist/updates/ref.cjs.map +1 -1
- package/dist/updates/ref.d.ts +7 -1
- package/dist/updates/ref.mjs +6 -0
- package/dist/updates/ref.mjs.map +1 -1
- package/dist/updates/remove-from-set.cjs +5 -0
- package/dist/updates/remove-from-set.cjs.map +1 -1
- package/dist/updates/remove-from-set.d.ts +6 -1
- package/dist/updates/remove-from-set.mjs +5 -0
- package/dist/updates/remove-from-set.mjs.map +1 -1
- package/dist/updates/remove.cjs +3 -0
- package/dist/updates/remove.cjs.map +1 -1
- package/dist/updates/remove.d.ts +4 -1
- package/dist/updates/remove.mjs +3 -0
- package/dist/updates/remove.mjs.map +1 -1
- package/dist/updates/subtract.cjs +5 -0
- package/dist/updates/subtract.cjs.map +1 -1
- package/dist/updates/subtract.d.ts +6 -1
- package/dist/updates/subtract.mjs +5 -0
- package/dist/updates/subtract.mjs.map +1 -1
- package/dist/updates/update-parser.cjs +10 -0
- package/dist/updates/update-parser.cjs.map +1 -1
- package/dist/updates/update-parser.d.ts +17 -1
- package/dist/updates/update-parser.mjs +10 -0
- package/dist/updates/update-parser.mjs.map +1 -1
- package/package.json +2 -1
- package/dist/commands/base-command.cjs +0 -3
- package/dist/commands/base-command.cjs.map +0 -1
- package/dist/commands/base-command.d.ts +0 -27
- package/dist/commands/base-command.mjs +0 -2
- package/dist/commands/base-command.mjs.map +0 -1
- package/dist/conditions/condition-types.cjs +0 -3
- package/dist/conditions/condition-types.cjs.map +0 -1
- package/dist/conditions/condition-types.d.ts +0 -95
- package/dist/conditions/condition-types.mjs +0 -2
- package/dist/conditions/condition-types.mjs.map +0 -1
- package/dist/core/core-types.cjs +0 -3
- package/dist/core/core-types.cjs.map +0 -1
- package/dist/core/core-types.d.ts +0 -44
- package/dist/core/core-types.mjs +0 -2
- package/dist/core/core-types.mjs.map +0 -1
- package/dist/projections/projection-types.cjs +0 -3
- package/dist/projections/projection-types.cjs.map +0 -1
- package/dist/projections/projection-types.d.ts +0 -3
- package/dist/projections/projection-types.mjs +0 -2
- package/dist/projections/projection-types.mjs.map +0 -1
- package/dist/updates/update-types.cjs +0 -3
- package/dist/updates/update-types.cjs.map +0 -1
- package/dist/updates/update-types.d.ts +0 -45
- package/dist/updates/update-types.mjs +0 -2
- package/dist/updates/update-types.mjs.map +0 -1
|
@@ -5,6 +5,46 @@ var libDynamodb = require('@aws-sdk/lib-dynamodb');
|
|
|
5
5
|
var projections_projectionParser = require('../projections/projection-parser.cjs');
|
|
6
6
|
|
|
7
7
|
var _ProjectedGet_config;
|
|
8
|
+
/**
|
|
9
|
+
* Command to retrieve specific attributes of a single item by primary key.
|
|
10
|
+
*
|
|
11
|
+
* @template Schema - The Zod schema defining the structure of the entity.
|
|
12
|
+
* @template ProjectionSchema - The Zod schema defining the structure of the projected attributes.
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* ```typescript
|
|
16
|
+
* import { DynamoTable, DynamoEntity, key, ProjectedGet } from 'dynamo-document-builder';
|
|
17
|
+
*
|
|
18
|
+
* const table = new DynamoTable({
|
|
19
|
+
* tableName: 'ExampleTable',
|
|
20
|
+
* documentClient,
|
|
21
|
+
* });
|
|
22
|
+
*
|
|
23
|
+
* const userEntity = new DynamoEntity({
|
|
24
|
+
* table,
|
|
25
|
+
* schema: z.object({
|
|
26
|
+
* userId: z.string(),
|
|
27
|
+
* name: z.string(),
|
|
28
|
+
* email: z.string(),
|
|
29
|
+
* age: z.number(),
|
|
30
|
+
* }),
|
|
31
|
+
* partitionKey: user => key('USER', user.userId),
|
|
32
|
+
* sortKey: () => 'METADATA',
|
|
33
|
+
* });
|
|
34
|
+
*
|
|
35
|
+
* const projectedGetCommand = new ProjectedGet({
|
|
36
|
+
* key: { userId: 'user123' },
|
|
37
|
+
* projection: ['name', 'email'],
|
|
38
|
+
* projectionSchema: z.object({
|
|
39
|
+
* name: z.string(),
|
|
40
|
+
* email: z.string(),
|
|
41
|
+
* }),
|
|
42
|
+
* consistent: true,
|
|
43
|
+
* });
|
|
44
|
+
*
|
|
45
|
+
* const { item } = await userEntity.send(projectedGetCommand);
|
|
46
|
+
* ```
|
|
47
|
+
*/
|
|
8
48
|
class ProjectedGet {
|
|
9
49
|
constructor(config) {
|
|
10
50
|
_ProjectedGet_config.set(this, void 0);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"projected-get.cjs","sources":["../../src/commands/projected-get.ts"],"sourcesContent":[null],"names":["__classPrivateFieldSet","parseProjection","__classPrivateFieldGet","GetCommand"],"mappings":";;;;;;;
|
|
1
|
+
{"version":3,"file":"projected-get.cjs","sources":["../../src/commands/projected-get.ts"],"sourcesContent":[null],"names":["__classPrivateFieldSet","parseProjection","__classPrivateFieldGet","GetCommand"],"mappings":";;;;;;;AAgCA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuCG;MACU,YAAY,CAAA;AAKvB,IAAA,WAAA,CAAY,MAAoD,EAAA;QAFhE,oBAAA,CAAA,GAAA,CAAA,IAAA,EAAA,MAAA,CAAA;AAGE,QAAAA,gCAAA,CAAA,IAAI,EAAA,oBAAA,EAAW,MAAM,EAAA,GAAA,CAAA;IACvB;AAEa,IAAA,OAAO,CAClB,MAA4B,EAAA;;;AAE5B,YAAA,MAAM,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,GAAGC,4CAAe,CACtEC,gCAAA,CAAA,IAAI,EAAA,oBAAA,EAAA,GAAA,CAAQ,CAAC,UAAU,CACxB;AAED,YAAA,MAAM,OAAO,GAAG,IAAIC,sBAAU,CAAC;AAC7B,gBAAA,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,SAAS;gBACjC,GAAG,EAAE,MAAM,CAAC,eAAe,CAACD,iCAAA,IAAI,EAAA,oBAAA,EAAA,GAAA,CAAQ,CAAC,GAAG,CAAC;AAC7C,gBAAA,oBAAoB,EAAE,oBAAoB;AAC1C,gBAAA,wBAAwB,EAAE,sBAAsB,CAAC,sBAAsB,EAAE;gBACzE,cAAc,EAAE,MAAAA,gCAAA,CAAA,IAAI,4BAAQ,CAAC,UAAU,mCAAI,KAAK;AAChD,gBAAA,sBAAsB,EAAEA,gCAAA,CAAA,IAAI,EAAA,oBAAA,EAAA,GAAA,CAAQ,CAAC,sBAAsB;AAC5D,aAAA,CAAC;AAEF,YAAA,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE;gBAChE,WAAW,EAAE,MAAAA,gCAAA,CAAA,IAAI,4BAAQ,CAAC,eAAe,0CAAE,MAAM;AACjD,gBAAA,cAAc,EAAEA,gCAAA,CAAA,IAAI,EAAA,oBAAA,EAAA,GAAA,CAAQ,CAAC,SAAS;AACvC,aAAA,CAAC;AAEF,YAAA,IAAI,SAAS,CAAC,IAAI,EAAE;AAClB,gBAAA,MAAM,IAAI,GAAGA,gCAAA,CAAA,IAAI,EAAA,oBAAA,EAAA,GAAA,CAAQ,CAAC;sBACrB,SAAS,CAAC;AACb,sBAAE,MAAMA,gCAAA,CAAA,IAAI,4BAAQ,CAAC,gBAAgB,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC;gBAElE,OAAO;oBACL,IAAI;oBACJ,gBAAgB,EAAE,SAAS,CAAC,SAAS;oBACrC,gBAAgB,EAAE,SAAS,CAAC,gBAAgB;iBAC7C;YACH;YAEA,OAAO;AACL,gBAAA,IAAI,EAAE,SAAS;gBACf,gBAAgB,EAAE,SAAS,CAAC,SAAS;gBACrC,gBAAgB,EAAE,SAAS,CAAC,gBAAgB;aAC7C;QACH,CAAC,CAAA;AAAA,IAAA;AACF;;;;;"}
|
|
@@ -1,17 +1,68 @@
|
|
|
1
1
|
import { DynamoEntity } from '../core/entity.js';
|
|
2
|
-
import { EntitySchema } from '../core/
|
|
2
|
+
import { EntitySchema } from '../core/index.js';
|
|
3
3
|
import { GetConfig } from './get.js';
|
|
4
|
-
import { Projection } from '../projections/
|
|
4
|
+
import { Projection } from '../projections/index.js';
|
|
5
5
|
import { ZodObject } from 'zod/v4';
|
|
6
|
-
import { BaseResult, BaseCommand } from './
|
|
6
|
+
import { BaseResult, BaseCommand } from './index.js';
|
|
7
7
|
|
|
8
|
+
/**
|
|
9
|
+
* Configuration for the ProjectedGet command.
|
|
10
|
+
*
|
|
11
|
+
* @template Schema - The Zod schema defining the structure of the entity.
|
|
12
|
+
* @template ProjectionSchema - The Zod schema defining the structure of the projected attributes.
|
|
13
|
+
*/
|
|
8
14
|
type ProjectedGetConfig<Schema extends ZodObject, ProjectionSchema extends ZodObject> = GetConfig<Schema> & {
|
|
9
15
|
projection: Projection;
|
|
10
16
|
projectionSchema: ProjectionSchema;
|
|
11
17
|
};
|
|
18
|
+
/**
|
|
19
|
+
* Result of the ProjectedGet command.
|
|
20
|
+
*
|
|
21
|
+
* @template ProjectionSchema - The Zod schema defining the structure of the projected attributes.
|
|
22
|
+
*/
|
|
12
23
|
type ProjectedGetResult<ProjectionSchema extends ZodObject> = BaseResult & {
|
|
13
24
|
item: EntitySchema<ProjectionSchema> | undefined;
|
|
14
25
|
};
|
|
26
|
+
/**
|
|
27
|
+
* Command to retrieve specific attributes of a single item by primary key.
|
|
28
|
+
*
|
|
29
|
+
* @template Schema - The Zod schema defining the structure of the entity.
|
|
30
|
+
* @template ProjectionSchema - The Zod schema defining the structure of the projected attributes.
|
|
31
|
+
*
|
|
32
|
+
* @example
|
|
33
|
+
* ```typescript
|
|
34
|
+
* import { DynamoTable, DynamoEntity, key, ProjectedGet } from 'dynamo-document-builder';
|
|
35
|
+
*
|
|
36
|
+
* const table = new DynamoTable({
|
|
37
|
+
* tableName: 'ExampleTable',
|
|
38
|
+
* documentClient,
|
|
39
|
+
* });
|
|
40
|
+
*
|
|
41
|
+
* const userEntity = new DynamoEntity({
|
|
42
|
+
* table,
|
|
43
|
+
* schema: z.object({
|
|
44
|
+
* userId: z.string(),
|
|
45
|
+
* name: z.string(),
|
|
46
|
+
* email: z.string(),
|
|
47
|
+
* age: z.number(),
|
|
48
|
+
* }),
|
|
49
|
+
* partitionKey: user => key('USER', user.userId),
|
|
50
|
+
* sortKey: () => 'METADATA',
|
|
51
|
+
* });
|
|
52
|
+
*
|
|
53
|
+
* const projectedGetCommand = new ProjectedGet({
|
|
54
|
+
* key: { userId: 'user123' },
|
|
55
|
+
* projection: ['name', 'email'],
|
|
56
|
+
* projectionSchema: z.object({
|
|
57
|
+
* name: z.string(),
|
|
58
|
+
* email: z.string(),
|
|
59
|
+
* }),
|
|
60
|
+
* consistent: true,
|
|
61
|
+
* });
|
|
62
|
+
*
|
|
63
|
+
* const { item } = await userEntity.send(projectedGetCommand);
|
|
64
|
+
* ```
|
|
65
|
+
*/
|
|
15
66
|
declare class ProjectedGet<Schema extends ZodObject, ProjectionSchema extends ZodObject> implements BaseCommand<ProjectedGetResult<ProjectionSchema>, Schema> {
|
|
16
67
|
#private;
|
|
17
68
|
constructor(config: ProjectedGetConfig<Schema, ProjectionSchema>);
|
|
@@ -3,6 +3,46 @@ import { GetCommand } from '@aws-sdk/lib-dynamodb';
|
|
|
3
3
|
import { parseProjection } from '../projections/projection-parser.mjs';
|
|
4
4
|
|
|
5
5
|
var _ProjectedGet_config;
|
|
6
|
+
/**
|
|
7
|
+
* Command to retrieve specific attributes of a single item by primary key.
|
|
8
|
+
*
|
|
9
|
+
* @template Schema - The Zod schema defining the structure of the entity.
|
|
10
|
+
* @template ProjectionSchema - The Zod schema defining the structure of the projected attributes.
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* ```typescript
|
|
14
|
+
* import { DynamoTable, DynamoEntity, key, ProjectedGet } from 'dynamo-document-builder';
|
|
15
|
+
*
|
|
16
|
+
* const table = new DynamoTable({
|
|
17
|
+
* tableName: 'ExampleTable',
|
|
18
|
+
* documentClient,
|
|
19
|
+
* });
|
|
20
|
+
*
|
|
21
|
+
* const userEntity = new DynamoEntity({
|
|
22
|
+
* table,
|
|
23
|
+
* schema: z.object({
|
|
24
|
+
* userId: z.string(),
|
|
25
|
+
* name: z.string(),
|
|
26
|
+
* email: z.string(),
|
|
27
|
+
* age: z.number(),
|
|
28
|
+
* }),
|
|
29
|
+
* partitionKey: user => key('USER', user.userId),
|
|
30
|
+
* sortKey: () => 'METADATA',
|
|
31
|
+
* });
|
|
32
|
+
*
|
|
33
|
+
* const projectedGetCommand = new ProjectedGet({
|
|
34
|
+
* key: { userId: 'user123' },
|
|
35
|
+
* projection: ['name', 'email'],
|
|
36
|
+
* projectionSchema: z.object({
|
|
37
|
+
* name: z.string(),
|
|
38
|
+
* email: z.string(),
|
|
39
|
+
* }),
|
|
40
|
+
* consistent: true,
|
|
41
|
+
* });
|
|
42
|
+
*
|
|
43
|
+
* const { item } = await userEntity.send(projectedGetCommand);
|
|
44
|
+
* ```
|
|
45
|
+
*/
|
|
6
46
|
class ProjectedGet {
|
|
7
47
|
constructor(config) {
|
|
8
48
|
_ProjectedGet_config.set(this, void 0);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"projected-get.mjs","sources":["../../src/commands/projected-get.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"projected-get.mjs","sources":["../../src/commands/projected-get.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;;AAgCA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuCG;MACU,YAAY,CAAA;AAKvB,IAAA,WAAA,CAAY,MAAoD,EAAA;QAFhE,oBAAA,CAAA,GAAA,CAAA,IAAA,EAAA,MAAA,CAAA;AAGE,QAAA,sBAAA,CAAA,IAAI,EAAA,oBAAA,EAAW,MAAM,EAAA,GAAA,CAAA;IACvB;AAEa,IAAA,OAAO,CAClB,MAA4B,EAAA;;;AAE5B,YAAA,MAAM,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,GAAG,eAAe,CACtE,sBAAA,CAAA,IAAI,EAAA,oBAAA,EAAA,GAAA,CAAQ,CAAC,UAAU,CACxB;AAED,YAAA,MAAM,OAAO,GAAG,IAAI,UAAU,CAAC;AAC7B,gBAAA,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,SAAS;gBACjC,GAAG,EAAE,MAAM,CAAC,eAAe,CAAC,uBAAA,IAAI,EAAA,oBAAA,EAAA,GAAA,CAAQ,CAAC,GAAG,CAAC;AAC7C,gBAAA,oBAAoB,EAAE,oBAAoB;AAC1C,gBAAA,wBAAwB,EAAE,sBAAsB,CAAC,sBAAsB,EAAE;gBACzE,cAAc,EAAE,MAAA,sBAAA,CAAA,IAAI,4BAAQ,CAAC,UAAU,mCAAI,KAAK;AAChD,gBAAA,sBAAsB,EAAE,sBAAA,CAAA,IAAI,EAAA,oBAAA,EAAA,GAAA,CAAQ,CAAC,sBAAsB;AAC5D,aAAA,CAAC;AAEF,YAAA,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE;gBAChE,WAAW,EAAE,MAAA,sBAAA,CAAA,IAAI,4BAAQ,CAAC,eAAe,0CAAE,MAAM;AACjD,gBAAA,cAAc,EAAE,sBAAA,CAAA,IAAI,EAAA,oBAAA,EAAA,GAAA,CAAQ,CAAC,SAAS;AACvC,aAAA,CAAC;AAEF,YAAA,IAAI,SAAS,CAAC,IAAI,EAAE;AAClB,gBAAA,MAAM,IAAI,GAAG,sBAAA,CAAA,IAAI,EAAA,oBAAA,EAAA,GAAA,CAAQ,CAAC;sBACrB,SAAS,CAAC;AACb,sBAAE,MAAM,sBAAA,CAAA,IAAI,4BAAQ,CAAC,gBAAgB,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC;gBAElE,OAAO;oBACL,IAAI;oBACJ,gBAAgB,EAAE,SAAS,CAAC,SAAS;oBACrC,gBAAgB,EAAE,SAAS,CAAC,gBAAgB;iBAC7C;YACH;YAEA,OAAO;AACL,gBAAA,IAAI,EAAE,SAAS;gBACf,gBAAgB,EAAE,SAAS,CAAC,SAAS;gBACrC,gBAAgB,EAAE,SAAS,CAAC,gBAAgB;aAC7C;QACH,CAAC,CAAA;AAAA,IAAA;AACF;;;;;"}
|
|
@@ -10,6 +10,47 @@ var libDynamodb = require('@aws-sdk/lib-dynamodb');
|
|
|
10
10
|
var pMap = require('p-map');
|
|
11
11
|
|
|
12
12
|
var _ProjectedQuery_config;
|
|
13
|
+
/**
|
|
14
|
+
* Command to retrieve specific attributes of multiple items by partition key with optional sort key conditions.
|
|
15
|
+
*
|
|
16
|
+
* @template Schema - The Zod schema defining the structure of the entity.
|
|
17
|
+
* @template ProjectionSchema - The Zod schema defining the structure of the projected attributes.
|
|
18
|
+
*
|
|
19
|
+
* @example
|
|
20
|
+
* ```typescript
|
|
21
|
+
* import { DynamoTable, DynamoEntity, key, ProjectedQuery, beginsWith } from 'dynamo-document-builder';
|
|
22
|
+
*
|
|
23
|
+
* const table = new DynamoTable({
|
|
24
|
+
* tableName: 'ExampleTable',
|
|
25
|
+
* documentClient,
|
|
26
|
+
* });
|
|
27
|
+
*
|
|
28
|
+
* const todoEntity = new DynamoEntity({
|
|
29
|
+
* table,
|
|
30
|
+
* schema: z.object({
|
|
31
|
+
* userId: z.string(),
|
|
32
|
+
* todoId: z.string(),
|
|
33
|
+
* title: z.string(),
|
|
34
|
+
* description: z.string(),
|
|
35
|
+
* isComplete: z.boolean(),
|
|
36
|
+
* }),
|
|
37
|
+
* partitionKey: todo => key('USER', todo.userId),
|
|
38
|
+
* sortKey: todo => key('TODO', todo.todoId),
|
|
39
|
+
* });
|
|
40
|
+
*
|
|
41
|
+
* const projectedQueryCommand = new ProjectedQuery({
|
|
42
|
+
* key: { userId: 'user123' },
|
|
43
|
+
* projection: ['title', 'isComplete'],
|
|
44
|
+
* projectionSchema: z.object({
|
|
45
|
+
* title: z.string(),
|
|
46
|
+
* isComplete: z.boolean(),
|
|
47
|
+
* }),
|
|
48
|
+
* limit: 10,
|
|
49
|
+
* });
|
|
50
|
+
*
|
|
51
|
+
* const { items, count } = await todoEntity.send(projectedQueryCommand);
|
|
52
|
+
* ```
|
|
53
|
+
*/
|
|
13
54
|
class ProjectedQuery {
|
|
14
55
|
constructor(config) {
|
|
15
56
|
_ProjectedQuery_config.set(this, void 0);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"projected-query.cjs","sources":["../../src/commands/projected-query.ts"],"sourcesContent":[null],"names":["__classPrivateFieldSet","AttributeExpressionMap","__classPrivateFieldGet","DocumentBuilderError","parseCondition","parseProjection","PROJECTED_QUERY_VALIDATION_CONCURRENCY","QueryCommand","paginateQuery","__asyncValues","__await"],"mappings":";;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"projected-query.cjs","sources":["../../src/commands/projected-query.ts"],"sourcesContent":[null],"names":["__classPrivateFieldSet","AttributeExpressionMap","__classPrivateFieldGet","DocumentBuilderError","parseCondition","parseProjection","PROJECTED_QUERY_VALIDATION_CONCURRENCY","QueryCommand","paginateQuery","__asyncValues","__await"],"mappings":"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"}
|
|
@@ -1,21 +1,74 @@
|
|
|
1
1
|
import { DynamoEntity } from '../core/entity.js';
|
|
2
|
-
import { EntitySchema } from '../core/
|
|
3
|
-
import { Projection } from '../projections/
|
|
2
|
+
import { EntitySchema } from '../core/index.js';
|
|
3
|
+
import { Projection } from '../projections/index.js';
|
|
4
4
|
import { QueryConfig } from './query.js';
|
|
5
5
|
import { ZodObject } from 'zod/v4';
|
|
6
|
-
import { BaseResult, BaseCommand, BasePaginatable } from './
|
|
6
|
+
import { BaseResult, BaseCommand, BasePaginatable } from './index.js';
|
|
7
7
|
import { QueryCommandInput, NativeAttributeValue, QueryCommandOutput } from '@aws-sdk/lib-dynamodb';
|
|
8
8
|
|
|
9
|
+
/**
|
|
10
|
+
* Configuration for the ProjectedQuery command.
|
|
11
|
+
*
|
|
12
|
+
* @template Schema - The Zod schema defining the structure of the entity.
|
|
13
|
+
* @template ProjectionSchema - The Zod schema defining the structure of the projected attributes.
|
|
14
|
+
*/
|
|
9
15
|
type ProjectedQueryConfig<Schema extends ZodObject, ProjectionSchema extends ZodObject> = QueryConfig<Schema> & {
|
|
10
16
|
projection: Projection;
|
|
11
17
|
projectionSchema: ProjectionSchema;
|
|
12
18
|
};
|
|
19
|
+
/**
|
|
20
|
+
* Result of the ProjectedQuery command.
|
|
21
|
+
*
|
|
22
|
+
* @template Schema - The Zod schema defining the structure of the entity.
|
|
23
|
+
* @template ProjectionSchema - The Zod schema defining the structure of the projected attributes.
|
|
24
|
+
*/
|
|
13
25
|
type ProjectedQueryResult<Schema extends ZodObject, ProjectionSchema extends ZodObject> = BaseResult & {
|
|
14
26
|
items: EntitySchema<ProjectionSchema>[];
|
|
15
27
|
count: number;
|
|
16
28
|
scannedCount: number;
|
|
17
29
|
lastEvaluatedKey?: Partial<EntitySchema<Schema>> | undefined;
|
|
18
30
|
};
|
|
31
|
+
/**
|
|
32
|
+
* Command to retrieve specific attributes of multiple items by partition key with optional sort key conditions.
|
|
33
|
+
*
|
|
34
|
+
* @template Schema - The Zod schema defining the structure of the entity.
|
|
35
|
+
* @template ProjectionSchema - The Zod schema defining the structure of the projected attributes.
|
|
36
|
+
*
|
|
37
|
+
* @example
|
|
38
|
+
* ```typescript
|
|
39
|
+
* import { DynamoTable, DynamoEntity, key, ProjectedQuery, beginsWith } from 'dynamo-document-builder';
|
|
40
|
+
*
|
|
41
|
+
* const table = new DynamoTable({
|
|
42
|
+
* tableName: 'ExampleTable',
|
|
43
|
+
* documentClient,
|
|
44
|
+
* });
|
|
45
|
+
*
|
|
46
|
+
* const todoEntity = new DynamoEntity({
|
|
47
|
+
* table,
|
|
48
|
+
* schema: z.object({
|
|
49
|
+
* userId: z.string(),
|
|
50
|
+
* todoId: z.string(),
|
|
51
|
+
* title: z.string(),
|
|
52
|
+
* description: z.string(),
|
|
53
|
+
* isComplete: z.boolean(),
|
|
54
|
+
* }),
|
|
55
|
+
* partitionKey: todo => key('USER', todo.userId),
|
|
56
|
+
* sortKey: todo => key('TODO', todo.todoId),
|
|
57
|
+
* });
|
|
58
|
+
*
|
|
59
|
+
* const projectedQueryCommand = new ProjectedQuery({
|
|
60
|
+
* key: { userId: 'user123' },
|
|
61
|
+
* projection: ['title', 'isComplete'],
|
|
62
|
+
* projectionSchema: z.object({
|
|
63
|
+
* title: z.string(),
|
|
64
|
+
* isComplete: z.boolean(),
|
|
65
|
+
* }),
|
|
66
|
+
* limit: 10,
|
|
67
|
+
* });
|
|
68
|
+
*
|
|
69
|
+
* const { items, count } = await todoEntity.send(projectedQueryCommand);
|
|
70
|
+
* ```
|
|
71
|
+
*/
|
|
19
72
|
declare class ProjectedQuery<Schema extends ZodObject, ProjectedSchema extends ZodObject> implements BaseCommand<ProjectedQueryResult<Schema, ProjectedSchema>, Schema>, BasePaginatable<ProjectedQueryResult<Schema, ProjectedSchema>, Schema> {
|
|
20
73
|
#private;
|
|
21
74
|
constructor(config: ProjectedQueryConfig<Schema, ProjectedSchema>);
|
|
@@ -8,6 +8,47 @@ import { QueryCommand, paginateQuery } from '@aws-sdk/lib-dynamodb';
|
|
|
8
8
|
import pMap from 'p-map';
|
|
9
9
|
|
|
10
10
|
var _ProjectedQuery_config;
|
|
11
|
+
/**
|
|
12
|
+
* Command to retrieve specific attributes of multiple items by partition key with optional sort key conditions.
|
|
13
|
+
*
|
|
14
|
+
* @template Schema - The Zod schema defining the structure of the entity.
|
|
15
|
+
* @template ProjectionSchema - The Zod schema defining the structure of the projected attributes.
|
|
16
|
+
*
|
|
17
|
+
* @example
|
|
18
|
+
* ```typescript
|
|
19
|
+
* import { DynamoTable, DynamoEntity, key, ProjectedQuery, beginsWith } from 'dynamo-document-builder';
|
|
20
|
+
*
|
|
21
|
+
* const table = new DynamoTable({
|
|
22
|
+
* tableName: 'ExampleTable',
|
|
23
|
+
* documentClient,
|
|
24
|
+
* });
|
|
25
|
+
*
|
|
26
|
+
* const todoEntity = new DynamoEntity({
|
|
27
|
+
* table,
|
|
28
|
+
* schema: z.object({
|
|
29
|
+
* userId: z.string(),
|
|
30
|
+
* todoId: z.string(),
|
|
31
|
+
* title: z.string(),
|
|
32
|
+
* description: z.string(),
|
|
33
|
+
* isComplete: z.boolean(),
|
|
34
|
+
* }),
|
|
35
|
+
* partitionKey: todo => key('USER', todo.userId),
|
|
36
|
+
* sortKey: todo => key('TODO', todo.todoId),
|
|
37
|
+
* });
|
|
38
|
+
*
|
|
39
|
+
* const projectedQueryCommand = new ProjectedQuery({
|
|
40
|
+
* key: { userId: 'user123' },
|
|
41
|
+
* projection: ['title', 'isComplete'],
|
|
42
|
+
* projectionSchema: z.object({
|
|
43
|
+
* title: z.string(),
|
|
44
|
+
* isComplete: z.boolean(),
|
|
45
|
+
* }),
|
|
46
|
+
* limit: 10,
|
|
47
|
+
* });
|
|
48
|
+
*
|
|
49
|
+
* const { items, count } = await todoEntity.send(projectedQueryCommand);
|
|
50
|
+
* ```
|
|
51
|
+
*/
|
|
11
52
|
class ProjectedQuery {
|
|
12
53
|
constructor(config) {
|
|
13
54
|
_ProjectedQuery_config.set(this, void 0);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"projected-query.mjs","sources":["../../src/commands/projected-query.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"projected-query.mjs","sources":["../../src/commands/projected-query.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
@@ -9,6 +9,47 @@ var projections_projectionParser = require('../projections/projection-parser.cjs
|
|
|
9
9
|
var pMap = require('p-map');
|
|
10
10
|
|
|
11
11
|
var _ProjectedScan_config;
|
|
12
|
+
/**
|
|
13
|
+
* Command to scan entire table or index and retrieve specific attributes (expensive operation).
|
|
14
|
+
*
|
|
15
|
+
* @template Schema - The Zod schema defining the structure of the entity.
|
|
16
|
+
* @template ProjectionSchema - The Zod schema defining the structure of the projected attributes.
|
|
17
|
+
*
|
|
18
|
+
* @example
|
|
19
|
+
* ```typescript
|
|
20
|
+
* import { DynamoTable, DynamoEntity, key, ProjectedScan } from 'dynamo-document-builder';
|
|
21
|
+
*
|
|
22
|
+
* const table = new DynamoTable({
|
|
23
|
+
* tableName: 'ExampleTable',
|
|
24
|
+
* documentClient,
|
|
25
|
+
* });
|
|
26
|
+
*
|
|
27
|
+
* const todoEntity = new DynamoEntity({
|
|
28
|
+
* table,
|
|
29
|
+
* schema: z.object({
|
|
30
|
+
* userId: z.string(),
|
|
31
|
+
* todoId: z.string(),
|
|
32
|
+
* title: z.string(),
|
|
33
|
+
* description: z.string(),
|
|
34
|
+
* isComplete: z.boolean(),
|
|
35
|
+
* }),
|
|
36
|
+
* partitionKey: todo => key('USER', todo.userId),
|
|
37
|
+
* sortKey: todo => key('TODO', todo.todoId),
|
|
38
|
+
* });
|
|
39
|
+
*
|
|
40
|
+
* const projectedScanCommand = new ProjectedScan({
|
|
41
|
+
* projection: ['title', 'isComplete'],
|
|
42
|
+
* projectionSchema: z.object({
|
|
43
|
+
* title: z.string(),
|
|
44
|
+
* isComplete: z.boolean(),
|
|
45
|
+
* }),
|
|
46
|
+
* filter: { isComplete: false },
|
|
47
|
+
* limit: 100,
|
|
48
|
+
* });
|
|
49
|
+
*
|
|
50
|
+
* const { items, scannedCount } = await todoEntity.send(projectedScanCommand);
|
|
51
|
+
* ```
|
|
52
|
+
*/
|
|
12
53
|
class ProjectedScan {
|
|
13
54
|
constructor(config) {
|
|
14
55
|
_ProjectedScan_config.set(this, void 0);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"projected-scan.cjs","sources":["../../src/commands/projected-scan.ts"],"sourcesContent":[null],"names":["__classPrivateFieldSet","AttributeExpressionMap","__classPrivateFieldGet","parseCondition","parseProjection","PROJECTED_SCAN_VALIDATION_CONCURRENCY","ScanCommand","paginateScan","__asyncValues","__await"],"mappings":";;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"projected-scan.cjs","sources":["../../src/commands/projected-scan.ts"],"sourcesContent":[null],"names":["__classPrivateFieldSet","AttributeExpressionMap","__classPrivateFieldGet","parseCondition","parseProjection","PROJECTED_SCAN_VALIDATION_CONCURRENCY","ScanCommand","paginateScan","__asyncValues","__await"],"mappings":"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"}
|
|
@@ -1,21 +1,73 @@
|
|
|
1
1
|
import { DynamoEntity } from '../core/entity.js';
|
|
2
|
-
import { EntitySchema } from '../core/
|
|
2
|
+
import { EntitySchema } from '../core/index.js';
|
|
3
3
|
import { ScanConfig } from './scan.js';
|
|
4
|
-
import { Projection } from '../projections/
|
|
4
|
+
import { Projection } from '../projections/index.js';
|
|
5
5
|
import { ZodObject } from 'zod/v4';
|
|
6
|
-
import { BaseResult, BaseCommand, BasePaginatable } from './
|
|
6
|
+
import { BaseResult, BaseCommand, BasePaginatable } from './index.js';
|
|
7
7
|
import { ScanCommandInput, NativeAttributeValue, ScanCommandOutput } from '@aws-sdk/lib-dynamodb';
|
|
8
8
|
|
|
9
|
+
/**
|
|
10
|
+
* Configuration for the ProjectedScan command.
|
|
11
|
+
*
|
|
12
|
+
* @template ProjectionSchema - The Zod schema defining the structure of the projected attributes.
|
|
13
|
+
*/
|
|
9
14
|
type ProjectedScanConfig<ProjectionSchema extends ZodObject> = ScanConfig<ProjectionSchema> & {
|
|
10
15
|
projection: Projection;
|
|
11
16
|
projectionSchema: ProjectionSchema;
|
|
12
17
|
};
|
|
18
|
+
/**
|
|
19
|
+
* Result of the ProjectedScan command.
|
|
20
|
+
*
|
|
21
|
+
* @template Schema - The Zod schema defining the structure of the entity.
|
|
22
|
+
* @template ProjectionSchema - The Zod schema defining the structure of the projected attributes.
|
|
23
|
+
*/
|
|
13
24
|
type ProjectedScanResult<Schema extends ZodObject, ProjectionSchema extends ZodObject> = BaseResult & {
|
|
14
25
|
items: EntitySchema<ProjectionSchema>[];
|
|
15
26
|
count: number;
|
|
16
27
|
scannedCount: number;
|
|
17
28
|
lastEvaluatedKey?: Partial<EntitySchema<Schema>> | undefined;
|
|
18
29
|
};
|
|
30
|
+
/**
|
|
31
|
+
* Command to scan entire table or index and retrieve specific attributes (expensive operation).
|
|
32
|
+
*
|
|
33
|
+
* @template Schema - The Zod schema defining the structure of the entity.
|
|
34
|
+
* @template ProjectionSchema - The Zod schema defining the structure of the projected attributes.
|
|
35
|
+
*
|
|
36
|
+
* @example
|
|
37
|
+
* ```typescript
|
|
38
|
+
* import { DynamoTable, DynamoEntity, key, ProjectedScan } from 'dynamo-document-builder';
|
|
39
|
+
*
|
|
40
|
+
* const table = new DynamoTable({
|
|
41
|
+
* tableName: 'ExampleTable',
|
|
42
|
+
* documentClient,
|
|
43
|
+
* });
|
|
44
|
+
*
|
|
45
|
+
* const todoEntity = new DynamoEntity({
|
|
46
|
+
* table,
|
|
47
|
+
* schema: z.object({
|
|
48
|
+
* userId: z.string(),
|
|
49
|
+
* todoId: z.string(),
|
|
50
|
+
* title: z.string(),
|
|
51
|
+
* description: z.string(),
|
|
52
|
+
* isComplete: z.boolean(),
|
|
53
|
+
* }),
|
|
54
|
+
* partitionKey: todo => key('USER', todo.userId),
|
|
55
|
+
* sortKey: todo => key('TODO', todo.todoId),
|
|
56
|
+
* });
|
|
57
|
+
*
|
|
58
|
+
* const projectedScanCommand = new ProjectedScan({
|
|
59
|
+
* projection: ['title', 'isComplete'],
|
|
60
|
+
* projectionSchema: z.object({
|
|
61
|
+
* title: z.string(),
|
|
62
|
+
* isComplete: z.boolean(),
|
|
63
|
+
* }),
|
|
64
|
+
* filter: { isComplete: false },
|
|
65
|
+
* limit: 100,
|
|
66
|
+
* });
|
|
67
|
+
*
|
|
68
|
+
* const { items, scannedCount } = await todoEntity.send(projectedScanCommand);
|
|
69
|
+
* ```
|
|
70
|
+
*/
|
|
19
71
|
declare class ProjectedScan<Schema extends ZodObject, ProjectedSchema extends ZodObject> implements BaseCommand<ProjectedScanResult<Schema, ProjectedSchema>, Schema>, BasePaginatable<ProjectedScanResult<Schema, ProjectedSchema>, Schema> {
|
|
20
72
|
#private;
|
|
21
73
|
constructor(config: ProjectedScanConfig<ProjectedSchema>);
|
|
@@ -7,6 +7,47 @@ import { parseProjection } from '../projections/projection-parser.mjs';
|
|
|
7
7
|
import pMap from 'p-map';
|
|
8
8
|
|
|
9
9
|
var _ProjectedScan_config;
|
|
10
|
+
/**
|
|
11
|
+
* Command to scan entire table or index and retrieve specific attributes (expensive operation).
|
|
12
|
+
*
|
|
13
|
+
* @template Schema - The Zod schema defining the structure of the entity.
|
|
14
|
+
* @template ProjectionSchema - The Zod schema defining the structure of the projected attributes.
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* ```typescript
|
|
18
|
+
* import { DynamoTable, DynamoEntity, key, ProjectedScan } from 'dynamo-document-builder';
|
|
19
|
+
*
|
|
20
|
+
* const table = new DynamoTable({
|
|
21
|
+
* tableName: 'ExampleTable',
|
|
22
|
+
* documentClient,
|
|
23
|
+
* });
|
|
24
|
+
*
|
|
25
|
+
* const todoEntity = new DynamoEntity({
|
|
26
|
+
* table,
|
|
27
|
+
* schema: z.object({
|
|
28
|
+
* userId: z.string(),
|
|
29
|
+
* todoId: z.string(),
|
|
30
|
+
* title: z.string(),
|
|
31
|
+
* description: z.string(),
|
|
32
|
+
* isComplete: z.boolean(),
|
|
33
|
+
* }),
|
|
34
|
+
* partitionKey: todo => key('USER', todo.userId),
|
|
35
|
+
* sortKey: todo => key('TODO', todo.todoId),
|
|
36
|
+
* });
|
|
37
|
+
*
|
|
38
|
+
* const projectedScanCommand = new ProjectedScan({
|
|
39
|
+
* projection: ['title', 'isComplete'],
|
|
40
|
+
* projectionSchema: z.object({
|
|
41
|
+
* title: z.string(),
|
|
42
|
+
* isComplete: z.boolean(),
|
|
43
|
+
* }),
|
|
44
|
+
* filter: { isComplete: false },
|
|
45
|
+
* limit: 100,
|
|
46
|
+
* });
|
|
47
|
+
*
|
|
48
|
+
* const { items, scannedCount } = await todoEntity.send(projectedScanCommand);
|
|
49
|
+
* ```
|
|
50
|
+
*/
|
|
10
51
|
class ProjectedScan {
|
|
11
52
|
constructor(config) {
|
|
12
53
|
_ProjectedScan_config.set(this, void 0);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"projected-scan.mjs","sources":["../../src/commands/projected-scan.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;;;;
|
|
1
|
+
{"version":3,"file":"projected-scan.mjs","sources":["../../src/commands/projected-scan.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|