dynamo-document-builder 0.0.0 → 0.1.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 +79 -2
- package/dist/attributes/attribute-map.cjs +114 -0
- package/dist/attributes/attribute-map.cjs.map +1 -0
- package/dist/attributes/attribute-map.d.ts +32 -0
- package/dist/attributes/attribute-map.mjs +112 -0
- package/dist/attributes/attribute-map.mjs.map +1 -0
- package/dist/attributes/index.cjs +8 -0
- package/dist/attributes/index.cjs.map +1 -0
- package/dist/attributes/index.d.ts +1 -0
- package/dist/attributes/index.mjs +2 -0
- package/dist/attributes/index.mjs.map +1 -0
- package/dist/commands/base-command.cjs +3 -0
- package/dist/commands/base-command.cjs.map +1 -0
- package/dist/commands/base-command.d.ts +24 -0
- package/dist/commands/base-command.mjs +2 -0
- package/dist/commands/base-command.mjs.map +1 -0
- package/dist/commands/batch-get.cjs +55 -0
- package/dist/commands/batch-get.cjs.map +1 -0
- package/dist/commands/batch-get.d.ts +17 -0
- package/dist/commands/batch-get.mjs +53 -0
- package/dist/commands/batch-get.mjs.map +1 -0
- package/dist/commands/batch-write.cjs +94 -0
- package/dist/commands/batch-write.cjs.map +1 -0
- package/dist/commands/batch-write.d.ts +34 -0
- package/dist/commands/batch-write.mjs +92 -0
- package/dist/commands/batch-write.mjs.map +1 -0
- package/dist/commands/condition-check.cjs +24 -0
- package/dist/commands/condition-check.cjs.map +1 -0
- package/dist/commands/condition-check.d.ts +16 -0
- package/dist/commands/condition-check.mjs +22 -0
- package/dist/commands/condition-check.mjs.map +1 -0
- package/dist/commands/conditional-delete.cjs +53 -0
- package/dist/commands/conditional-delete.cjs.map +1 -0
- package/dist/commands/conditional-delete.d.ts +21 -0
- package/dist/commands/conditional-delete.mjs +51 -0
- package/dist/commands/conditional-delete.mjs.map +1 -0
- package/dist/commands/conditional-put.cjs +63 -0
- package/dist/commands/conditional-put.cjs.map +1 -0
- package/dist/commands/conditional-put.d.ts +22 -0
- package/dist/commands/conditional-put.mjs +61 -0
- package/dist/commands/conditional-put.mjs.map +1 -0
- package/dist/commands/conditional-update.cjs +57 -0
- package/dist/commands/conditional-update.cjs.map +1 -0
- package/dist/commands/conditional-update.d.ts +21 -0
- package/dist/commands/conditional-update.mjs +55 -0
- package/dist/commands/conditional-update.mjs.map +1 -0
- package/dist/commands/delete.cjs +59 -0
- package/dist/commands/delete.cjs.map +1 -0
- package/dist/commands/delete.d.ts +20 -0
- package/dist/commands/delete.mjs +57 -0
- package/dist/commands/delete.mjs.map +1 -0
- package/dist/commands/get.cjs +46 -0
- package/dist/commands/get.cjs.map +1 -0
- package/dist/commands/get.d.ts +16 -0
- package/dist/commands/get.mjs +44 -0
- package/dist/commands/get.mjs.map +1 -0
- package/dist/commands/index.cjs +40 -0
- package/dist/commands/index.cjs.map +1 -0
- package/dist/commands/index.d.ts +18 -0
- package/dist/commands/index.mjs +18 -0
- package/dist/commands/index.mjs.map +1 -0
- package/dist/commands/projected-get.cjs +50 -0
- package/dist/commands/projected-get.cjs.map +1 -0
- package/dist/commands/projected-get.d.ts +18 -0
- package/dist/commands/projected-get.mjs +48 -0
- package/dist/commands/projected-get.mjs.map +1 -0
- package/dist/commands/projected-query.cjs +118 -0
- package/dist/commands/projected-query.cjs.map +1 -0
- package/dist/commands/projected-query.d.ts +26 -0
- package/dist/commands/projected-query.mjs +116 -0
- package/dist/commands/projected-query.mjs.map +1 -0
- package/dist/commands/projected-scan.cjs +98 -0
- package/dist/commands/projected-scan.cjs.map +1 -0
- package/dist/commands/projected-scan.d.ts +26 -0
- package/dist/commands/projected-scan.mjs +96 -0
- package/dist/commands/projected-scan.mjs.map +1 -0
- package/dist/commands/put.cjs +69 -0
- package/dist/commands/put.cjs.map +1 -0
- package/dist/commands/put.d.ts +21 -0
- package/dist/commands/put.mjs +67 -0
- package/dist/commands/put.mjs.map +1 -0
- package/dist/commands/query.cjs +117 -0
- package/dist/commands/query.cjs.map +1 -0
- package/dist/commands/query.d.ts +33 -0
- package/dist/commands/query.mjs +115 -0
- package/dist/commands/query.mjs.map +1 -0
- package/dist/commands/scan.cjs +96 -0
- package/dist/commands/scan.cjs.map +1 -0
- package/dist/commands/scan.d.ts +34 -0
- package/dist/commands/scan.mjs +94 -0
- package/dist/commands/scan.mjs.map +1 -0
- package/dist/commands/transact-get.cjs +60 -0
- package/dist/commands/transact-get.cjs.map +1 -0
- package/dist/commands/transact-get.d.ts +15 -0
- package/dist/commands/transact-get.mjs +58 -0
- package/dist/commands/transact-get.mjs.map +1 -0
- package/dist/commands/transact-write.cjs +42 -0
- package/dist/commands/transact-write.cjs.map +1 -0
- package/dist/commands/transact-write.d.ts +20 -0
- package/dist/commands/transact-write.mjs +40 -0
- package/dist/commands/transact-write.mjs.map +1 -0
- package/dist/commands/update.cjs +53 -0
- package/dist/commands/update.cjs.map +1 -0
- package/dist/commands/update.d.ts +22 -0
- package/dist/commands/update.mjs +51 -0
- package/dist/commands/update.mjs.map +1 -0
- package/dist/conditions/and.cjs +14 -0
- package/dist/conditions/and.cjs.map +1 -0
- package/dist/conditions/and.d.ts +2 -0
- package/dist/conditions/and.mjs +12 -0
- package/dist/conditions/and.mjs.map +1 -0
- package/dist/conditions/begins-with.cjs +13 -0
- package/dist/conditions/begins-with.cjs.map +1 -0
- package/dist/conditions/begins-with.d.ts +2 -0
- package/dist/conditions/begins-with.mjs +11 -0
- package/dist/conditions/begins-with.mjs.map +1 -0
- package/dist/conditions/between.cjs +14 -0
- package/dist/conditions/between.cjs.map +1 -0
- package/dist/conditions/between.d.ts +2 -0
- package/dist/conditions/between.mjs +12 -0
- package/dist/conditions/between.mjs.map +1 -0
- package/dist/conditions/condition-parser.cjs +194 -0
- package/dist/conditions/condition-parser.cjs.map +1 -0
- package/dist/conditions/condition-parser.d.ts +7 -0
- package/dist/conditions/condition-parser.mjs +192 -0
- package/dist/conditions/condition-parser.mjs.map +1 -0
- package/dist/conditions/condition-symbols.cjs +43 -0
- package/dist/conditions/condition-symbols.cjs.map +1 -0
- package/dist/conditions/condition-symbols.d.ts +14 -0
- package/dist/conditions/condition-symbols.mjs +31 -0
- package/dist/conditions/condition-symbols.mjs.map +1 -0
- package/dist/conditions/condition-types.cjs +3 -0
- package/dist/conditions/condition-types.cjs.map +1 -0
- package/dist/conditions/condition-types.d.ts +85 -0
- package/dist/conditions/condition-types.mjs +2 -0
- package/dist/conditions/condition-types.mjs.map +1 -0
- package/dist/conditions/contains.cjs +13 -0
- package/dist/conditions/contains.cjs.map +1 -0
- package/dist/conditions/contains.d.ts +3 -0
- package/dist/conditions/contains.mjs +11 -0
- package/dist/conditions/contains.mjs.map +1 -0
- package/dist/conditions/equals.cjs +14 -0
- package/dist/conditions/equals.cjs.map +1 -0
- package/dist/conditions/equals.d.ts +2 -0
- package/dist/conditions/equals.mjs +12 -0
- package/dist/conditions/equals.mjs.map +1 -0
- package/dist/conditions/exists.cjs +12 -0
- package/dist/conditions/exists.cjs.map +1 -0
- package/dist/conditions/exists.d.ts +2 -0
- package/dist/conditions/exists.mjs +10 -0
- package/dist/conditions/exists.mjs.map +1 -0
- package/dist/conditions/greater-than-or-equal.cjs +14 -0
- package/dist/conditions/greater-than-or-equal.cjs.map +1 -0
- package/dist/conditions/greater-than-or-equal.d.ts +2 -0
- package/dist/conditions/greater-than-or-equal.mjs +12 -0
- package/dist/conditions/greater-than-or-equal.mjs.map +1 -0
- package/dist/conditions/greater-than.cjs +14 -0
- package/dist/conditions/greater-than.cjs.map +1 -0
- package/dist/conditions/greater-than.d.ts +2 -0
- package/dist/conditions/greater-than.mjs +12 -0
- package/dist/conditions/greater-than.mjs.map +1 -0
- package/dist/conditions/index.cjs +42 -0
- package/dist/conditions/index.cjs.map +1 -0
- package/dist/conditions/index.d.ts +19 -0
- package/dist/conditions/index.mjs +19 -0
- package/dist/conditions/index.mjs.map +1 -0
- package/dist/conditions/is-in.cjs +13 -0
- package/dist/conditions/is-in.cjs.map +1 -0
- package/dist/conditions/is-in.d.ts +2 -0
- package/dist/conditions/is-in.mjs +11 -0
- package/dist/conditions/is-in.mjs.map +1 -0
- package/dist/conditions/less-than-or-equal.cjs +14 -0
- package/dist/conditions/less-than-or-equal.cjs.map +1 -0
- package/dist/conditions/less-than-or-equal.d.ts +2 -0
- package/dist/conditions/less-than-or-equal.mjs +12 -0
- package/dist/conditions/less-than-or-equal.mjs.map +1 -0
- package/dist/conditions/less-than.cjs +14 -0
- package/dist/conditions/less-than.cjs.map +1 -0
- package/dist/conditions/less-than.d.ts +2 -0
- package/dist/conditions/less-than.mjs +12 -0
- package/dist/conditions/less-than.mjs.map +1 -0
- package/dist/conditions/not-equals.cjs +14 -0
- package/dist/conditions/not-equals.cjs.map +1 -0
- package/dist/conditions/not-equals.d.ts +2 -0
- package/dist/conditions/not-equals.mjs +12 -0
- package/dist/conditions/not-equals.mjs.map +1 -0
- package/dist/conditions/not-exists.cjs +13 -0
- package/dist/conditions/not-exists.cjs.map +1 -0
- package/dist/conditions/not-exists.d.ts +2 -0
- package/dist/conditions/not-exists.mjs +11 -0
- package/dist/conditions/not-exists.mjs.map +1 -0
- package/dist/conditions/not.cjs +13 -0
- package/dist/conditions/not.cjs.map +1 -0
- package/dist/conditions/not.d.ts +2 -0
- package/dist/conditions/not.mjs +11 -0
- package/dist/conditions/not.mjs.map +1 -0
- package/dist/conditions/or.cjs +14 -0
- package/dist/conditions/or.cjs.map +1 -0
- package/dist/conditions/or.d.ts +2 -0
- package/dist/conditions/or.mjs +12 -0
- package/dist/conditions/or.mjs.map +1 -0
- package/dist/conditions/size.cjs +13 -0
- package/dist/conditions/size.cjs.map +1 -0
- package/dist/conditions/size.d.ts +2 -0
- package/dist/conditions/size.mjs +11 -0
- package/dist/conditions/size.mjs.map +1 -0
- package/dist/conditions/type-is.cjs +13 -0
- package/dist/conditions/type-is.cjs.map +1 -0
- package/dist/conditions/type-is.d.ts +2 -0
- package/dist/conditions/type-is.mjs +11 -0
- package/dist/conditions/type-is.mjs.map +1 -0
- package/dist/core/core-types.cjs +3 -0
- package/dist/core/core-types.cjs.map +1 -0
- package/dist/core/core-types.d.ts +41 -0
- package/dist/core/core-types.mjs +2 -0
- package/dist/core/core-types.mjs.map +1 -0
- package/dist/core/entity.cjs +146 -0
- package/dist/core/entity.cjs.map +1 -0
- package/dist/core/entity.d.ts +39 -0
- package/dist/core/entity.mjs +144 -0
- package/dist/core/entity.mjs.map +1 -0
- package/dist/core/index.cjs +12 -0
- package/dist/core/index.cjs.map +1 -0
- package/dist/core/index.d.ts +4 -0
- package/dist/core/index.mjs +4 -0
- package/dist/core/index.mjs.map +1 -0
- package/dist/core/key.cjs +8 -0
- package/dist/core/key.cjs.map +1 -0
- package/dist/core/key.d.ts +12 -0
- package/dist/core/key.mjs +6 -0
- package/dist/core/key.mjs.map +1 -0
- package/dist/core/table.cjs +44 -0
- package/dist/core/table.cjs.map +1 -0
- package/dist/core/table.d.ts +22 -0
- package/dist/core/table.mjs +42 -0
- package/dist/core/table.mjs.map +1 -0
- package/dist/errors.cjs +7 -0
- package/dist/errors.cjs.map +1 -0
- package/dist/errors.d.ts +2 -0
- package/dist/errors.mjs +5 -0
- package/dist/errors.mjs.map +1 -0
- package/dist/index.cjs +106 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.ts +7 -2
- package/dist/index.mjs +51 -0
- package/dist/index.mjs.map +1 -0
- package/dist/internal-constants.cjs +20 -0
- package/dist/internal-constants.cjs.map +1 -0
- package/dist/internal-constants.d.ts +8 -0
- package/dist/internal-constants.mjs +11 -0
- package/dist/internal-constants.mjs.map +1 -0
- package/dist/node_modules/tslib/tslib.es6.cjs +92 -0
- package/dist/node_modules/tslib/tslib.es6.cjs.map +1 -0
- package/dist/node_modules/tslib/tslib.es6.mjs +84 -0
- package/dist/node_modules/tslib/tslib.es6.mjs.map +1 -0
- package/dist/projections/index.cjs +8 -0
- package/dist/projections/index.cjs.map +1 -0
- package/dist/projections/index.d.ts +2 -0
- package/dist/projections/index.mjs +2 -0
- package/dist/projections/index.mjs.map +1 -0
- package/dist/projections/projection-parser.cjs +19 -0
- package/dist/projections/projection-parser.cjs.map +1 -0
- package/dist/projections/projection-parser.d.ts +7 -0
- package/dist/projections/projection-parser.mjs +17 -0
- package/dist/projections/projection-parser.mjs.map +1 -0
- package/dist/projections/projection-types.cjs +3 -0
- package/dist/projections/projection-types.cjs.map +1 -0
- package/dist/projections/projection-types.d.ts +1 -0
- package/dist/projections/projection-types.mjs +2 -0
- package/dist/projections/projection-types.mjs.map +1 -0
- package/dist/updates/add-to-set.cjs +14 -0
- package/dist/updates/add-to-set.cjs.map +1 -0
- package/dist/updates/add-to-set.d.ts +3 -0
- package/dist/updates/add-to-set.mjs +12 -0
- package/dist/updates/add-to-set.mjs.map +1 -0
- package/dist/updates/add.cjs +14 -0
- package/dist/updates/add.cjs.map +1 -0
- package/dist/updates/add.d.ts +2 -0
- package/dist/updates/add.mjs +12 -0
- package/dist/updates/add.mjs.map +1 -0
- package/dist/updates/append.cjs +14 -0
- package/dist/updates/append.cjs.map +1 -0
- package/dist/updates/append.d.ts +3 -0
- package/dist/updates/append.mjs +12 -0
- package/dist/updates/append.mjs.map +1 -0
- package/dist/updates/delete.cjs +13 -0
- package/dist/updates/delete.cjs.map +1 -0
- package/dist/updates/delete.d.ts +3 -0
- package/dist/updates/delete.mjs +11 -0
- package/dist/updates/delete.mjs.map +1 -0
- package/dist/updates/index.cjs +24 -0
- package/dist/updates/index.cjs.map +1 -0
- package/dist/updates/index.d.ts +10 -0
- package/dist/updates/index.mjs +10 -0
- package/dist/updates/index.mjs.map +1 -0
- package/dist/updates/prepend.cjs +14 -0
- package/dist/updates/prepend.cjs.map +1 -0
- package/dist/updates/prepend.d.ts +3 -0
- package/dist/updates/prepend.mjs +12 -0
- package/dist/updates/prepend.mjs.map +1 -0
- package/dist/updates/ref.cjs +14 -0
- package/dist/updates/ref.cjs.map +1 -0
- package/dist/updates/ref.d.ts +3 -0
- package/dist/updates/ref.mjs +12 -0
- package/dist/updates/ref.mjs.map +1 -0
- package/dist/updates/remove.cjs +12 -0
- package/dist/updates/remove.cjs.map +1 -0
- package/dist/updates/remove.d.ts +2 -0
- package/dist/updates/remove.mjs +10 -0
- package/dist/updates/remove.mjs.map +1 -0
- package/dist/updates/subtract.cjs +14 -0
- package/dist/updates/subtract.cjs.map +1 -0
- package/dist/updates/subtract.d.ts +2 -0
- package/dist/updates/subtract.mjs +12 -0
- package/dist/updates/subtract.mjs.map +1 -0
- package/dist/updates/update-parser.cjs +157 -0
- package/dist/updates/update-parser.cjs.map +1 -0
- package/dist/updates/update-parser.d.ts +7 -0
- package/dist/updates/update-parser.mjs +155 -0
- package/dist/updates/update-parser.mjs.map +1 -0
- package/dist/updates/update-symbols.cjs +30 -0
- package/dist/updates/update-symbols.cjs.map +1 -0
- package/dist/updates/update-symbols.d.ts +13 -0
- package/dist/updates/update-symbols.mjs +19 -0
- package/dist/updates/update-symbols.mjs.map +1 -0
- package/dist/updates/update-types.cjs +3 -0
- package/dist/updates/update-types.cjs.map +1 -0
- package/dist/updates/update-types.d.ts +42 -0
- package/dist/updates/update-types.mjs +2 -0
- package/dist/updates/update-types.mjs.map +1 -0
- package/package.json +142 -22
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -7
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var tslib_es6 = require('../node_modules/tslib/tslib.es6.cjs');
|
|
4
|
+
var attributes_attributeMap = require('../attributes/attribute-map.cjs');
|
|
5
|
+
var internalConstants = require('../internal-constants.cjs');
|
|
6
|
+
var conditions_conditionParser = require('../conditions/condition-parser.cjs');
|
|
7
|
+
var projections_projectionParser = require('../projections/projection-parser.cjs');
|
|
8
|
+
var errors = require('../errors.cjs');
|
|
9
|
+
var libDynamodb = require('@aws-sdk/lib-dynamodb');
|
|
10
|
+
var pMap = require('p-map');
|
|
11
|
+
|
|
12
|
+
var _ProjectedQuery_config;
|
|
13
|
+
class ProjectedQuery {
|
|
14
|
+
constructor(config) {
|
|
15
|
+
_ProjectedQuery_config.set(this, void 0);
|
|
16
|
+
tslib_es6.__classPrivateFieldSet(this, _ProjectedQuery_config, config, "f");
|
|
17
|
+
}
|
|
18
|
+
buildCommandInput(entity) {
|
|
19
|
+
var _a;
|
|
20
|
+
const attributeExpressionMap = new attributes_attributeMap.AttributeExpressionMap();
|
|
21
|
+
// Generate the PK or GSIPK key
|
|
22
|
+
const keyItem = entity.buildPrimaryOrIndexKey(tslib_es6.__classPrivateFieldGet(this, _ProjectedQuery_config, "f"));
|
|
23
|
+
let queryKeyName;
|
|
24
|
+
if ('key' in tslib_es6.__classPrivateFieldGet(this, _ProjectedQuery_config, "f")) {
|
|
25
|
+
queryKeyName = entity.table.partitionKeyName;
|
|
26
|
+
}
|
|
27
|
+
else if ('index' in tslib_es6.__classPrivateFieldGet(this, _ProjectedQuery_config, "f")) {
|
|
28
|
+
const indexes = Object.keys(tslib_es6.__classPrivateFieldGet(this, _ProjectedQuery_config, "f").index);
|
|
29
|
+
if (!indexes) {
|
|
30
|
+
throw new errors.DocumentBuilderError('No index specified in query configuration.');
|
|
31
|
+
}
|
|
32
|
+
const indexName = Object.keys(tslib_es6.__classPrivateFieldGet(this, _ProjectedQuery_config, "f").index)[0];
|
|
33
|
+
queryKeyName = entity.table.globalSecondaryIndexKeyNames[indexName].partitionKey;
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
throw new errors.DocumentBuilderError("Either 'key' or 'index' must be specified for a query.");
|
|
37
|
+
}
|
|
38
|
+
const queryKeyValue = keyItem[queryKeyName];
|
|
39
|
+
const keyConditionExpression = conditions_conditionParser.parseCondition(Object.assign({ [queryKeyName]: queryKeyValue }, tslib_es6.__classPrivateFieldGet(this, _ProjectedQuery_config, "f").sortKeyCondition), attributeExpressionMap).conditionExpression;
|
|
40
|
+
let filterExpression;
|
|
41
|
+
if (tslib_es6.__classPrivateFieldGet(this, _ProjectedQuery_config, "f").filter) {
|
|
42
|
+
filterExpression = conditions_conditionParser.parseCondition(tslib_es6.__classPrivateFieldGet(this, _ProjectedQuery_config, "f").filter, attributeExpressionMap).conditionExpression;
|
|
43
|
+
}
|
|
44
|
+
const { projectionExpression } = projections_projectionParser.parseProjection(tslib_es6.__classPrivateFieldGet(this, _ProjectedQuery_config, "f").projection, attributeExpressionMap);
|
|
45
|
+
return Object.assign(Object.assign({ TableName: entity.table.tableName, KeyConditionExpression: keyConditionExpression, FilterExpression: filterExpression, ProjectionExpression: projectionExpression }, attributeExpressionMap.toDynamoAttributeExpression()), { Select: tslib_es6.__classPrivateFieldGet(this, _ProjectedQuery_config, "f").selectAttributes, Limit: tslib_es6.__classPrivateFieldGet(this, _ProjectedQuery_config, "f").limit, ConsistentRead: (_a = tslib_es6.__classPrivateFieldGet(this, _ProjectedQuery_config, "f").consistent) !== null && _a !== void 0 ? _a : false, IndexName: 'index' in tslib_es6.__classPrivateFieldGet(this, _ProjectedQuery_config, "f") ? queryKeyName : undefined, ScanIndexForward: !tslib_es6.__classPrivateFieldGet(this, _ProjectedQuery_config, "f").reverseIndexScan, ExclusiveStartKey: tslib_es6.__classPrivateFieldGet(this, _ProjectedQuery_config, "f").exclusiveStartKey, ReturnConsumedCapacity: tslib_es6.__classPrivateFieldGet(this, _ProjectedQuery_config, "f").returnConsumedCapacity });
|
|
46
|
+
}
|
|
47
|
+
validateItems(items) {
|
|
48
|
+
return tslib_es6.__awaiter(this, void 0, void 0, function* () {
|
|
49
|
+
var _a, _b;
|
|
50
|
+
if (!items) {
|
|
51
|
+
return [];
|
|
52
|
+
}
|
|
53
|
+
if (tslib_es6.__classPrivateFieldGet(this, _ProjectedQuery_config, "f").skipValidation) {
|
|
54
|
+
return items;
|
|
55
|
+
}
|
|
56
|
+
return pMap(items, item => tslib_es6.__classPrivateFieldGet(this, _ProjectedQuery_config, "f").projectionSchema.parseAsync(item), {
|
|
57
|
+
concurrency: (_a = tslib_es6.__classPrivateFieldGet(this, _ProjectedQuery_config, "f").validationConcurrency) !== null && _a !== void 0 ? _a : internalConstants.PROJECTED_QUERY_VALIDATION_CONCURRENCY,
|
|
58
|
+
signal: (_b = tslib_es6.__classPrivateFieldGet(this, _ProjectedQuery_config, "f").abortController) === null || _b === void 0 ? void 0 : _b.signal,
|
|
59
|
+
});
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
buildResult(items, queryResult) {
|
|
63
|
+
var _a, _b;
|
|
64
|
+
return {
|
|
65
|
+
items,
|
|
66
|
+
count: (_a = queryResult.Count) !== null && _a !== void 0 ? _a : 0,
|
|
67
|
+
scannedCount: (_b = queryResult.ScannedCount) !== null && _b !== void 0 ? _b : 0,
|
|
68
|
+
lastEvaluatedKey: queryResult.LastEvaluatedKey,
|
|
69
|
+
responseMetadata: queryResult.$metadata,
|
|
70
|
+
consumedCapacity: queryResult.ConsumedCapacity,
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
execute(entity) {
|
|
74
|
+
return tslib_es6.__awaiter(this, void 0, void 0, function* () {
|
|
75
|
+
var _a;
|
|
76
|
+
const query = new libDynamodb.QueryCommand(this.buildCommandInput(entity));
|
|
77
|
+
const queryResult = yield entity.table.documentClient.send(query, {
|
|
78
|
+
abortSignal: (_a = tslib_es6.__classPrivateFieldGet(this, _ProjectedQuery_config, "f").abortController) === null || _a === void 0 ? void 0 : _a.signal,
|
|
79
|
+
requestTimeout: tslib_es6.__classPrivateFieldGet(this, _ProjectedQuery_config, "f").timeoutMs,
|
|
80
|
+
});
|
|
81
|
+
const items = yield this.validateItems(queryResult.Items);
|
|
82
|
+
return this.buildResult(items, queryResult);
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
executePaginated(entity) {
|
|
86
|
+
return tslib_es6.__asyncGenerator(this, arguments, function* executePaginated_1() {
|
|
87
|
+
var _a, e_1, _b, _c;
|
|
88
|
+
var _d;
|
|
89
|
+
const paginator = libDynamodb.paginateQuery({
|
|
90
|
+
client: entity.table.documentClient,
|
|
91
|
+
pageSize: tslib_es6.__classPrivateFieldGet(this, _ProjectedQuery_config, "f").pageSize,
|
|
92
|
+
}, this.buildCommandInput(entity), {
|
|
93
|
+
abortSignal: (_d = tslib_es6.__classPrivateFieldGet(this, _ProjectedQuery_config, "f").abortController) === null || _d === void 0 ? void 0 : _d.signal,
|
|
94
|
+
requestTimeout: tslib_es6.__classPrivateFieldGet(this, _ProjectedQuery_config, "f").timeoutMs,
|
|
95
|
+
});
|
|
96
|
+
try {
|
|
97
|
+
for (var _e = true, paginator_1 = tslib_es6.__asyncValues(paginator), paginator_1_1; paginator_1_1 = yield tslib_es6.__await(paginator_1.next()), _a = paginator_1_1.done, !_a; _e = true) {
|
|
98
|
+
_c = paginator_1_1.value;
|
|
99
|
+
_e = false;
|
|
100
|
+
const page = _c;
|
|
101
|
+
const items = yield tslib_es6.__await(this.validateItems(page.Items));
|
|
102
|
+
yield yield tslib_es6.__await(this.buildResult(items, page));
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
106
|
+
finally {
|
|
107
|
+
try {
|
|
108
|
+
if (!_e && !_a && (_b = paginator_1.return)) yield tslib_es6.__await(_b.call(paginator_1));
|
|
109
|
+
}
|
|
110
|
+
finally { if (e_1) throw e_1.error; }
|
|
111
|
+
}
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
_ProjectedQuery_config = new WeakMap();
|
|
116
|
+
|
|
117
|
+
exports.ProjectedQuery = ProjectedQuery;
|
|
118
|
+
//# sourceMappingURL=projected-query.cjs.map
|
|
@@ -0,0 +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":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { DynamoEntity } from '@/core/entity';
|
|
2
|
+
import type { EntitySchema } from '@/core/core-types';
|
|
3
|
+
import type { Projection } from '@/projections/projection-types';
|
|
4
|
+
import type { QueryConfig } from '@/commands/query';
|
|
5
|
+
import type { ZodObject } from 'zod/v4';
|
|
6
|
+
import type { BaseResult, BaseCommand, BasePaginatable } from '@/commands/base-command';
|
|
7
|
+
import { type NativeAttributeValue, type QueryCommandInput, type QueryCommandOutput } from '@aws-sdk/lib-dynamodb';
|
|
8
|
+
export type ProjectedQueryConfig<Schema extends ZodObject, ProjectionSchema extends ZodObject> = QueryConfig<Schema> & {
|
|
9
|
+
projection: Projection;
|
|
10
|
+
projectionSchema: ProjectionSchema;
|
|
11
|
+
};
|
|
12
|
+
export type ProjectedQueryResult<Schema extends ZodObject, ProjectionSchema extends ZodObject> = BaseResult & {
|
|
13
|
+
items: EntitySchema<ProjectionSchema>[];
|
|
14
|
+
count: number;
|
|
15
|
+
scannedCount: number;
|
|
16
|
+
lastEvaluatedKey?: Partial<EntitySchema<Schema>> | undefined;
|
|
17
|
+
};
|
|
18
|
+
export declare class ProjectedQuery<Schema extends ZodObject, ProjectedSchema extends ZodObject> implements BaseCommand<ProjectedQueryResult<Schema, ProjectedSchema>, Schema>, BasePaginatable<ProjectedQueryResult<Schema, ProjectedSchema>, Schema> {
|
|
19
|
+
#private;
|
|
20
|
+
constructor(config: ProjectedQueryConfig<Schema, ProjectedSchema>);
|
|
21
|
+
buildCommandInput(entity: DynamoEntity<Schema>): QueryCommandInput;
|
|
22
|
+
validateItems(items: Record<string, NativeAttributeValue>[] | undefined): Promise<EntitySchema<ProjectedSchema>[]>;
|
|
23
|
+
buildResult(items: EntitySchema<ProjectedSchema>[], queryResult: QueryCommandOutput): ProjectedQueryResult<Schema, ProjectedSchema>;
|
|
24
|
+
execute(entity: DynamoEntity<Schema>): Promise<ProjectedQueryResult<Schema, ProjectedSchema>>;
|
|
25
|
+
executePaginated(entity: DynamoEntity<Schema>): AsyncGenerator<ProjectedQueryResult<Schema, ProjectedSchema>, void, unknown>;
|
|
26
|
+
}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
import { __classPrivateFieldSet, __classPrivateFieldGet, __awaiter, __asyncGenerator, __asyncValues, __await } from '../node_modules/tslib/tslib.es6.mjs';
|
|
2
|
+
import { AttributeExpressionMap } from '../attributes/attribute-map.mjs';
|
|
3
|
+
import { PROJECTED_QUERY_VALIDATION_CONCURRENCY } from '../internal-constants.mjs';
|
|
4
|
+
import { parseCondition } from '../conditions/condition-parser.mjs';
|
|
5
|
+
import { parseProjection } from '../projections/projection-parser.mjs';
|
|
6
|
+
import { DocumentBuilderError } from '../errors.mjs';
|
|
7
|
+
import { QueryCommand, paginateQuery } from '@aws-sdk/lib-dynamodb';
|
|
8
|
+
import pMap from 'p-map';
|
|
9
|
+
|
|
10
|
+
var _ProjectedQuery_config;
|
|
11
|
+
class ProjectedQuery {
|
|
12
|
+
constructor(config) {
|
|
13
|
+
_ProjectedQuery_config.set(this, void 0);
|
|
14
|
+
__classPrivateFieldSet(this, _ProjectedQuery_config, config, "f");
|
|
15
|
+
}
|
|
16
|
+
buildCommandInput(entity) {
|
|
17
|
+
var _a;
|
|
18
|
+
const attributeExpressionMap = new AttributeExpressionMap();
|
|
19
|
+
// Generate the PK or GSIPK key
|
|
20
|
+
const keyItem = entity.buildPrimaryOrIndexKey(__classPrivateFieldGet(this, _ProjectedQuery_config, "f"));
|
|
21
|
+
let queryKeyName;
|
|
22
|
+
if ('key' in __classPrivateFieldGet(this, _ProjectedQuery_config, "f")) {
|
|
23
|
+
queryKeyName = entity.table.partitionKeyName;
|
|
24
|
+
}
|
|
25
|
+
else if ('index' in __classPrivateFieldGet(this, _ProjectedQuery_config, "f")) {
|
|
26
|
+
const indexes = Object.keys(__classPrivateFieldGet(this, _ProjectedQuery_config, "f").index);
|
|
27
|
+
if (!indexes) {
|
|
28
|
+
throw new DocumentBuilderError('No index specified in query configuration.');
|
|
29
|
+
}
|
|
30
|
+
const indexName = Object.keys(__classPrivateFieldGet(this, _ProjectedQuery_config, "f").index)[0];
|
|
31
|
+
queryKeyName = entity.table.globalSecondaryIndexKeyNames[indexName].partitionKey;
|
|
32
|
+
}
|
|
33
|
+
else {
|
|
34
|
+
throw new DocumentBuilderError("Either 'key' or 'index' must be specified for a query.");
|
|
35
|
+
}
|
|
36
|
+
const queryKeyValue = keyItem[queryKeyName];
|
|
37
|
+
const keyConditionExpression = parseCondition(Object.assign({ [queryKeyName]: queryKeyValue }, __classPrivateFieldGet(this, _ProjectedQuery_config, "f").sortKeyCondition), attributeExpressionMap).conditionExpression;
|
|
38
|
+
let filterExpression;
|
|
39
|
+
if (__classPrivateFieldGet(this, _ProjectedQuery_config, "f").filter) {
|
|
40
|
+
filterExpression = parseCondition(__classPrivateFieldGet(this, _ProjectedQuery_config, "f").filter, attributeExpressionMap).conditionExpression;
|
|
41
|
+
}
|
|
42
|
+
const { projectionExpression } = parseProjection(__classPrivateFieldGet(this, _ProjectedQuery_config, "f").projection, attributeExpressionMap);
|
|
43
|
+
return Object.assign(Object.assign({ TableName: entity.table.tableName, KeyConditionExpression: keyConditionExpression, FilterExpression: filterExpression, ProjectionExpression: projectionExpression }, attributeExpressionMap.toDynamoAttributeExpression()), { Select: __classPrivateFieldGet(this, _ProjectedQuery_config, "f").selectAttributes, Limit: __classPrivateFieldGet(this, _ProjectedQuery_config, "f").limit, ConsistentRead: (_a = __classPrivateFieldGet(this, _ProjectedQuery_config, "f").consistent) !== null && _a !== void 0 ? _a : false, IndexName: 'index' in __classPrivateFieldGet(this, _ProjectedQuery_config, "f") ? queryKeyName : undefined, ScanIndexForward: !__classPrivateFieldGet(this, _ProjectedQuery_config, "f").reverseIndexScan, ExclusiveStartKey: __classPrivateFieldGet(this, _ProjectedQuery_config, "f").exclusiveStartKey, ReturnConsumedCapacity: __classPrivateFieldGet(this, _ProjectedQuery_config, "f").returnConsumedCapacity });
|
|
44
|
+
}
|
|
45
|
+
validateItems(items) {
|
|
46
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
47
|
+
var _a, _b;
|
|
48
|
+
if (!items) {
|
|
49
|
+
return [];
|
|
50
|
+
}
|
|
51
|
+
if (__classPrivateFieldGet(this, _ProjectedQuery_config, "f").skipValidation) {
|
|
52
|
+
return items;
|
|
53
|
+
}
|
|
54
|
+
return pMap(items, item => __classPrivateFieldGet(this, _ProjectedQuery_config, "f").projectionSchema.parseAsync(item), {
|
|
55
|
+
concurrency: (_a = __classPrivateFieldGet(this, _ProjectedQuery_config, "f").validationConcurrency) !== null && _a !== void 0 ? _a : PROJECTED_QUERY_VALIDATION_CONCURRENCY,
|
|
56
|
+
signal: (_b = __classPrivateFieldGet(this, _ProjectedQuery_config, "f").abortController) === null || _b === void 0 ? void 0 : _b.signal,
|
|
57
|
+
});
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
buildResult(items, queryResult) {
|
|
61
|
+
var _a, _b;
|
|
62
|
+
return {
|
|
63
|
+
items,
|
|
64
|
+
count: (_a = queryResult.Count) !== null && _a !== void 0 ? _a : 0,
|
|
65
|
+
scannedCount: (_b = queryResult.ScannedCount) !== null && _b !== void 0 ? _b : 0,
|
|
66
|
+
lastEvaluatedKey: queryResult.LastEvaluatedKey,
|
|
67
|
+
responseMetadata: queryResult.$metadata,
|
|
68
|
+
consumedCapacity: queryResult.ConsumedCapacity,
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
execute(entity) {
|
|
72
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
73
|
+
var _a;
|
|
74
|
+
const query = new QueryCommand(this.buildCommandInput(entity));
|
|
75
|
+
const queryResult = yield entity.table.documentClient.send(query, {
|
|
76
|
+
abortSignal: (_a = __classPrivateFieldGet(this, _ProjectedQuery_config, "f").abortController) === null || _a === void 0 ? void 0 : _a.signal,
|
|
77
|
+
requestTimeout: __classPrivateFieldGet(this, _ProjectedQuery_config, "f").timeoutMs,
|
|
78
|
+
});
|
|
79
|
+
const items = yield this.validateItems(queryResult.Items);
|
|
80
|
+
return this.buildResult(items, queryResult);
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
executePaginated(entity) {
|
|
84
|
+
return __asyncGenerator(this, arguments, function* executePaginated_1() {
|
|
85
|
+
var _a, e_1, _b, _c;
|
|
86
|
+
var _d;
|
|
87
|
+
const paginator = paginateQuery({
|
|
88
|
+
client: entity.table.documentClient,
|
|
89
|
+
pageSize: __classPrivateFieldGet(this, _ProjectedQuery_config, "f").pageSize,
|
|
90
|
+
}, this.buildCommandInput(entity), {
|
|
91
|
+
abortSignal: (_d = __classPrivateFieldGet(this, _ProjectedQuery_config, "f").abortController) === null || _d === void 0 ? void 0 : _d.signal,
|
|
92
|
+
requestTimeout: __classPrivateFieldGet(this, _ProjectedQuery_config, "f").timeoutMs,
|
|
93
|
+
});
|
|
94
|
+
try {
|
|
95
|
+
for (var _e = true, paginator_1 = __asyncValues(paginator), paginator_1_1; paginator_1_1 = yield __await(paginator_1.next()), _a = paginator_1_1.done, !_a; _e = true) {
|
|
96
|
+
_c = paginator_1_1.value;
|
|
97
|
+
_e = false;
|
|
98
|
+
const page = _c;
|
|
99
|
+
const items = yield __await(this.validateItems(page.Items));
|
|
100
|
+
yield yield __await(this.buildResult(items, page));
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
104
|
+
finally {
|
|
105
|
+
try {
|
|
106
|
+
if (!_e && !_a && (_b = paginator_1.return)) yield __await(_b.call(paginator_1));
|
|
107
|
+
}
|
|
108
|
+
finally { if (e_1) throw e_1.error; }
|
|
109
|
+
}
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
_ProjectedQuery_config = new WeakMap();
|
|
114
|
+
|
|
115
|
+
export { ProjectedQuery };
|
|
116
|
+
//# sourceMappingURL=projected-query.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"projected-query.mjs","sources":["../../src/commands/projected-query.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var tslib_es6 = require('../node_modules/tslib/tslib.es6.cjs');
|
|
4
|
+
var attributes_attributeMap = require('../attributes/attribute-map.cjs');
|
|
5
|
+
var internalConstants = require('../internal-constants.cjs');
|
|
6
|
+
var libDynamodb = require('@aws-sdk/lib-dynamodb');
|
|
7
|
+
var conditions_conditionParser = require('../conditions/condition-parser.cjs');
|
|
8
|
+
var projections_projectionParser = require('../projections/projection-parser.cjs');
|
|
9
|
+
var pMap = require('p-map');
|
|
10
|
+
|
|
11
|
+
var _ProjectedScan_config;
|
|
12
|
+
class ProjectedScan {
|
|
13
|
+
constructor(config) {
|
|
14
|
+
_ProjectedScan_config.set(this, void 0);
|
|
15
|
+
tslib_es6.__classPrivateFieldSet(this, _ProjectedScan_config, config, "f");
|
|
16
|
+
}
|
|
17
|
+
buildCommandInput(entity) {
|
|
18
|
+
var _a;
|
|
19
|
+
const attributeExpressionMap = new attributes_attributeMap.AttributeExpressionMap();
|
|
20
|
+
let filterExpression;
|
|
21
|
+
if (tslib_es6.__classPrivateFieldGet(this, _ProjectedScan_config, "f").filter) {
|
|
22
|
+
filterExpression = conditions_conditionParser.parseCondition(tslib_es6.__classPrivateFieldGet(this, _ProjectedScan_config, "f").filter, attributeExpressionMap).conditionExpression;
|
|
23
|
+
}
|
|
24
|
+
const { projectionExpression } = projections_projectionParser.parseProjection(tslib_es6.__classPrivateFieldGet(this, _ProjectedScan_config, "f").projection, attributeExpressionMap);
|
|
25
|
+
return Object.assign(Object.assign({ TableName: entity.table.tableName, FilterExpression: filterExpression }, attributeExpressionMap.toDynamoAttributeExpression()), { ProjectionExpression: projectionExpression, Select: tslib_es6.__classPrivateFieldGet(this, _ProjectedScan_config, "f").selectAttributes, Limit: tslib_es6.__classPrivateFieldGet(this, _ProjectedScan_config, "f").limit, ConsistentRead: (_a = tslib_es6.__classPrivateFieldGet(this, _ProjectedScan_config, "f").consistent) !== null && _a !== void 0 ? _a : false, IndexName: tslib_es6.__classPrivateFieldGet(this, _ProjectedScan_config, "f").indexName, Segment: tslib_es6.__classPrivateFieldGet(this, _ProjectedScan_config, "f").segment, TotalSegments: tslib_es6.__classPrivateFieldGet(this, _ProjectedScan_config, "f").totalSegments, ExclusiveStartKey: tslib_es6.__classPrivateFieldGet(this, _ProjectedScan_config, "f").exclusiveStartKey, ReturnConsumedCapacity: tslib_es6.__classPrivateFieldGet(this, _ProjectedScan_config, "f").returnConsumedCapacity });
|
|
26
|
+
}
|
|
27
|
+
validateItems(items) {
|
|
28
|
+
return tslib_es6.__awaiter(this, void 0, void 0, function* () {
|
|
29
|
+
var _a, _b;
|
|
30
|
+
if (!items) {
|
|
31
|
+
return [];
|
|
32
|
+
}
|
|
33
|
+
if (tslib_es6.__classPrivateFieldGet(this, _ProjectedScan_config, "f").skipValidation) {
|
|
34
|
+
return items;
|
|
35
|
+
}
|
|
36
|
+
return pMap(items, item => tslib_es6.__classPrivateFieldGet(this, _ProjectedScan_config, "f").projectionSchema.parseAsync(item), {
|
|
37
|
+
concurrency: (_a = tslib_es6.__classPrivateFieldGet(this, _ProjectedScan_config, "f").validationConcurrency) !== null && _a !== void 0 ? _a : internalConstants.PROJECTED_SCAN_VALIDATION_CONCURRENCY,
|
|
38
|
+
signal: (_b = tslib_es6.__classPrivateFieldGet(this, _ProjectedScan_config, "f").abortController) === null || _b === void 0 ? void 0 : _b.signal,
|
|
39
|
+
});
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
buildResult(items, scanResult) {
|
|
43
|
+
var _a, _b;
|
|
44
|
+
return {
|
|
45
|
+
items,
|
|
46
|
+
count: (_a = scanResult.Count) !== null && _a !== void 0 ? _a : 0,
|
|
47
|
+
scannedCount: (_b = scanResult.ScannedCount) !== null && _b !== void 0 ? _b : 0,
|
|
48
|
+
lastEvaluatedKey: scanResult.LastEvaluatedKey,
|
|
49
|
+
responseMetadata: scanResult.$metadata,
|
|
50
|
+
consumedCapacity: scanResult.ConsumedCapacity,
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
execute(entity) {
|
|
54
|
+
return tslib_es6.__awaiter(this, void 0, void 0, function* () {
|
|
55
|
+
var _a;
|
|
56
|
+
const scan = new libDynamodb.ScanCommand(this.buildCommandInput(entity));
|
|
57
|
+
const scanResult = yield entity.table.documentClient.send(scan, {
|
|
58
|
+
abortSignal: (_a = tslib_es6.__classPrivateFieldGet(this, _ProjectedScan_config, "f").abortController) === null || _a === void 0 ? void 0 : _a.signal,
|
|
59
|
+
requestTimeout: tslib_es6.__classPrivateFieldGet(this, _ProjectedScan_config, "f").timeoutMs,
|
|
60
|
+
});
|
|
61
|
+
const items = yield this.validateItems(scanResult.Items);
|
|
62
|
+
return this.buildResult(items, scanResult);
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
executePaginated(entity) {
|
|
66
|
+
return tslib_es6.__asyncGenerator(this, arguments, function* executePaginated_1() {
|
|
67
|
+
var _a, e_1, _b, _c;
|
|
68
|
+
var _d;
|
|
69
|
+
const paginator = libDynamodb.paginateScan({
|
|
70
|
+
client: entity.table.documentClient,
|
|
71
|
+
pageSize: tslib_es6.__classPrivateFieldGet(this, _ProjectedScan_config, "f").pageSize,
|
|
72
|
+
}, this.buildCommandInput(entity), {
|
|
73
|
+
abortSignal: (_d = tslib_es6.__classPrivateFieldGet(this, _ProjectedScan_config, "f").abortController) === null || _d === void 0 ? void 0 : _d.signal,
|
|
74
|
+
requestTimeout: tslib_es6.__classPrivateFieldGet(this, _ProjectedScan_config, "f").timeoutMs,
|
|
75
|
+
});
|
|
76
|
+
try {
|
|
77
|
+
for (var _e = true, paginator_1 = tslib_es6.__asyncValues(paginator), paginator_1_1; paginator_1_1 = yield tslib_es6.__await(paginator_1.next()), _a = paginator_1_1.done, !_a; _e = true) {
|
|
78
|
+
_c = paginator_1_1.value;
|
|
79
|
+
_e = false;
|
|
80
|
+
const page = _c;
|
|
81
|
+
const items = yield tslib_es6.__await(this.validateItems(page.Items));
|
|
82
|
+
yield yield tslib_es6.__await(this.buildResult(items, page));
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
86
|
+
finally {
|
|
87
|
+
try {
|
|
88
|
+
if (!_e && !_a && (_b = paginator_1.return)) yield tslib_es6.__await(_b.call(paginator_1));
|
|
89
|
+
}
|
|
90
|
+
finally { if (e_1) throw e_1.error; }
|
|
91
|
+
}
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
_ProjectedScan_config = new WeakMap();
|
|
96
|
+
|
|
97
|
+
exports.ProjectedScan = ProjectedScan;
|
|
98
|
+
//# sourceMappingURL=projected-scan.cjs.map
|
|
@@ -0,0 +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":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { DynamoEntity } from '@/core/entity';
|
|
2
|
+
import type { EntitySchema } from '@/core/core-types';
|
|
3
|
+
import type { ScanConfig } from '@/commands/scan';
|
|
4
|
+
import type { Projection } from '@/projections/projection-types';
|
|
5
|
+
import type { ZodObject } from 'zod/v4';
|
|
6
|
+
import type { BaseCommand, BasePaginatable, BaseResult } from '@/commands/base-command';
|
|
7
|
+
import { type NativeAttributeValue, type ScanCommandInput, type ScanCommandOutput } from '@aws-sdk/lib-dynamodb';
|
|
8
|
+
export type ProjectedScanConfig<ProjectionSchema extends ZodObject> = ScanConfig<ProjectionSchema> & {
|
|
9
|
+
projection: Projection;
|
|
10
|
+
projectionSchema: ProjectionSchema;
|
|
11
|
+
};
|
|
12
|
+
export type ProjectedScanResult<Schema extends ZodObject, ProjectionSchema extends ZodObject> = BaseResult & {
|
|
13
|
+
items: EntitySchema<ProjectionSchema>[];
|
|
14
|
+
count: number;
|
|
15
|
+
scannedCount: number;
|
|
16
|
+
lastEvaluatedKey?: Partial<EntitySchema<Schema>> | undefined;
|
|
17
|
+
};
|
|
18
|
+
export declare class ProjectedScan<Schema extends ZodObject, ProjectedSchema extends ZodObject> implements BaseCommand<ProjectedScanResult<Schema, ProjectedSchema>, Schema>, BasePaginatable<ProjectedScanResult<Schema, ProjectedSchema>, Schema> {
|
|
19
|
+
#private;
|
|
20
|
+
constructor(config: ProjectedScanConfig<ProjectedSchema>);
|
|
21
|
+
buildCommandInput(entity: DynamoEntity<Schema>): ScanCommandInput;
|
|
22
|
+
validateItems(items: Record<string, NativeAttributeValue>[] | undefined): Promise<EntitySchema<ProjectedSchema>[]>;
|
|
23
|
+
buildResult(items: EntitySchema<ProjectedSchema>[], scanResult: ScanCommandOutput): ProjectedScanResult<Schema, ProjectedSchema>;
|
|
24
|
+
execute(entity: DynamoEntity<Schema>): Promise<ProjectedScanResult<Schema, ProjectedSchema>>;
|
|
25
|
+
executePaginated(entity: DynamoEntity<Schema>): AsyncGenerator<ProjectedScanResult<Schema, ProjectedSchema>, void, unknown>;
|
|
26
|
+
}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import { __classPrivateFieldSet, __classPrivateFieldGet, __awaiter, __asyncGenerator, __asyncValues, __await } from '../node_modules/tslib/tslib.es6.mjs';
|
|
2
|
+
import { AttributeExpressionMap } from '../attributes/attribute-map.mjs';
|
|
3
|
+
import { PROJECTED_SCAN_VALIDATION_CONCURRENCY } from '../internal-constants.mjs';
|
|
4
|
+
import { ScanCommand, paginateScan } from '@aws-sdk/lib-dynamodb';
|
|
5
|
+
import { parseCondition } from '../conditions/condition-parser.mjs';
|
|
6
|
+
import { parseProjection } from '../projections/projection-parser.mjs';
|
|
7
|
+
import pMap from 'p-map';
|
|
8
|
+
|
|
9
|
+
var _ProjectedScan_config;
|
|
10
|
+
class ProjectedScan {
|
|
11
|
+
constructor(config) {
|
|
12
|
+
_ProjectedScan_config.set(this, void 0);
|
|
13
|
+
__classPrivateFieldSet(this, _ProjectedScan_config, config, "f");
|
|
14
|
+
}
|
|
15
|
+
buildCommandInput(entity) {
|
|
16
|
+
var _a;
|
|
17
|
+
const attributeExpressionMap = new AttributeExpressionMap();
|
|
18
|
+
let filterExpression;
|
|
19
|
+
if (__classPrivateFieldGet(this, _ProjectedScan_config, "f").filter) {
|
|
20
|
+
filterExpression = parseCondition(__classPrivateFieldGet(this, _ProjectedScan_config, "f").filter, attributeExpressionMap).conditionExpression;
|
|
21
|
+
}
|
|
22
|
+
const { projectionExpression } = parseProjection(__classPrivateFieldGet(this, _ProjectedScan_config, "f").projection, attributeExpressionMap);
|
|
23
|
+
return Object.assign(Object.assign({ TableName: entity.table.tableName, FilterExpression: filterExpression }, attributeExpressionMap.toDynamoAttributeExpression()), { ProjectionExpression: projectionExpression, Select: __classPrivateFieldGet(this, _ProjectedScan_config, "f").selectAttributes, Limit: __classPrivateFieldGet(this, _ProjectedScan_config, "f").limit, ConsistentRead: (_a = __classPrivateFieldGet(this, _ProjectedScan_config, "f").consistent) !== null && _a !== void 0 ? _a : false, IndexName: __classPrivateFieldGet(this, _ProjectedScan_config, "f").indexName, Segment: __classPrivateFieldGet(this, _ProjectedScan_config, "f").segment, TotalSegments: __classPrivateFieldGet(this, _ProjectedScan_config, "f").totalSegments, ExclusiveStartKey: __classPrivateFieldGet(this, _ProjectedScan_config, "f").exclusiveStartKey, ReturnConsumedCapacity: __classPrivateFieldGet(this, _ProjectedScan_config, "f").returnConsumedCapacity });
|
|
24
|
+
}
|
|
25
|
+
validateItems(items) {
|
|
26
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
27
|
+
var _a, _b;
|
|
28
|
+
if (!items) {
|
|
29
|
+
return [];
|
|
30
|
+
}
|
|
31
|
+
if (__classPrivateFieldGet(this, _ProjectedScan_config, "f").skipValidation) {
|
|
32
|
+
return items;
|
|
33
|
+
}
|
|
34
|
+
return pMap(items, item => __classPrivateFieldGet(this, _ProjectedScan_config, "f").projectionSchema.parseAsync(item), {
|
|
35
|
+
concurrency: (_a = __classPrivateFieldGet(this, _ProjectedScan_config, "f").validationConcurrency) !== null && _a !== void 0 ? _a : PROJECTED_SCAN_VALIDATION_CONCURRENCY,
|
|
36
|
+
signal: (_b = __classPrivateFieldGet(this, _ProjectedScan_config, "f").abortController) === null || _b === void 0 ? void 0 : _b.signal,
|
|
37
|
+
});
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
buildResult(items, scanResult) {
|
|
41
|
+
var _a, _b;
|
|
42
|
+
return {
|
|
43
|
+
items,
|
|
44
|
+
count: (_a = scanResult.Count) !== null && _a !== void 0 ? _a : 0,
|
|
45
|
+
scannedCount: (_b = scanResult.ScannedCount) !== null && _b !== void 0 ? _b : 0,
|
|
46
|
+
lastEvaluatedKey: scanResult.LastEvaluatedKey,
|
|
47
|
+
responseMetadata: scanResult.$metadata,
|
|
48
|
+
consumedCapacity: scanResult.ConsumedCapacity,
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
execute(entity) {
|
|
52
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
53
|
+
var _a;
|
|
54
|
+
const scan = new ScanCommand(this.buildCommandInput(entity));
|
|
55
|
+
const scanResult = yield entity.table.documentClient.send(scan, {
|
|
56
|
+
abortSignal: (_a = __classPrivateFieldGet(this, _ProjectedScan_config, "f").abortController) === null || _a === void 0 ? void 0 : _a.signal,
|
|
57
|
+
requestTimeout: __classPrivateFieldGet(this, _ProjectedScan_config, "f").timeoutMs,
|
|
58
|
+
});
|
|
59
|
+
const items = yield this.validateItems(scanResult.Items);
|
|
60
|
+
return this.buildResult(items, scanResult);
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
executePaginated(entity) {
|
|
64
|
+
return __asyncGenerator(this, arguments, function* executePaginated_1() {
|
|
65
|
+
var _a, e_1, _b, _c;
|
|
66
|
+
var _d;
|
|
67
|
+
const paginator = paginateScan({
|
|
68
|
+
client: entity.table.documentClient,
|
|
69
|
+
pageSize: __classPrivateFieldGet(this, _ProjectedScan_config, "f").pageSize,
|
|
70
|
+
}, this.buildCommandInput(entity), {
|
|
71
|
+
abortSignal: (_d = __classPrivateFieldGet(this, _ProjectedScan_config, "f").abortController) === null || _d === void 0 ? void 0 : _d.signal,
|
|
72
|
+
requestTimeout: __classPrivateFieldGet(this, _ProjectedScan_config, "f").timeoutMs,
|
|
73
|
+
});
|
|
74
|
+
try {
|
|
75
|
+
for (var _e = true, paginator_1 = __asyncValues(paginator), paginator_1_1; paginator_1_1 = yield __await(paginator_1.next()), _a = paginator_1_1.done, !_a; _e = true) {
|
|
76
|
+
_c = paginator_1_1.value;
|
|
77
|
+
_e = false;
|
|
78
|
+
const page = _c;
|
|
79
|
+
const items = yield __await(this.validateItems(page.Items));
|
|
80
|
+
yield yield __await(this.buildResult(items, page));
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
84
|
+
finally {
|
|
85
|
+
try {
|
|
86
|
+
if (!_e && !_a && (_b = paginator_1.return)) yield __await(_b.call(paginator_1));
|
|
87
|
+
}
|
|
88
|
+
finally { if (e_1) throw e_1.error; }
|
|
89
|
+
}
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
_ProjectedScan_config = new WeakMap();
|
|
94
|
+
|
|
95
|
+
export { ProjectedScan };
|
|
96
|
+
//# sourceMappingURL=projected-scan.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"projected-scan.mjs","sources":["../../src/commands/projected-scan.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var tslib_es6 = require('../node_modules/tslib/tslib.es6.cjs');
|
|
4
|
+
var libDynamodb = require('@aws-sdk/lib-dynamodb');
|
|
5
|
+
|
|
6
|
+
var _Put_config;
|
|
7
|
+
class Put {
|
|
8
|
+
constructor(config) {
|
|
9
|
+
_Put_config.set(this, void 0);
|
|
10
|
+
tslib_es6.__classPrivateFieldSet(this, _Put_config, config, "f");
|
|
11
|
+
}
|
|
12
|
+
buildItem(entity) {
|
|
13
|
+
return tslib_es6.__awaiter(this, void 0, void 0, function* () {
|
|
14
|
+
const encodedData = tslib_es6.__classPrivateFieldGet(this, _Put_config, "f").skipValidation
|
|
15
|
+
? tslib_es6.__classPrivateFieldGet(this, _Put_config, "f").item
|
|
16
|
+
: yield entity.schema.encodeAsync(tslib_es6.__classPrivateFieldGet(this, _Put_config, "f").item);
|
|
17
|
+
return Object.assign(Object.assign({}, encodedData), entity.buildAllKeys(tslib_es6.__classPrivateFieldGet(this, _Put_config, "f").item));
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
execute(entity) {
|
|
21
|
+
return tslib_es6.__awaiter(this, void 0, void 0, function* () {
|
|
22
|
+
var _a;
|
|
23
|
+
const item = yield this.buildItem(entity);
|
|
24
|
+
const put = new libDynamodb.PutCommand({
|
|
25
|
+
TableName: entity.table.tableName,
|
|
26
|
+
Item: item,
|
|
27
|
+
ReturnValues: tslib_es6.__classPrivateFieldGet(this, _Put_config, "f").returnValues,
|
|
28
|
+
ReturnConsumedCapacity: tslib_es6.__classPrivateFieldGet(this, _Put_config, "f").returnConsumedCapacity,
|
|
29
|
+
ReturnItemCollectionMetrics: tslib_es6.__classPrivateFieldGet(this, _Put_config, "f").returnItemCollectionMetrics,
|
|
30
|
+
});
|
|
31
|
+
const putResult = yield entity.table.documentClient.send(put, {
|
|
32
|
+
abortSignal: (_a = tslib_es6.__classPrivateFieldGet(this, _Put_config, "f").abortController) === null || _a === void 0 ? void 0 : _a.signal,
|
|
33
|
+
requestTimeout: tslib_es6.__classPrivateFieldGet(this, _Put_config, "f").timeoutMs,
|
|
34
|
+
});
|
|
35
|
+
if (putResult.Attributes) {
|
|
36
|
+
const returnItem = (tslib_es6.__classPrivateFieldGet(this, _Put_config, "f").skipValidation
|
|
37
|
+
? putResult.Attributes
|
|
38
|
+
: yield entity.schema.partial().parseAsync(putResult.Attributes));
|
|
39
|
+
return {
|
|
40
|
+
returnItem,
|
|
41
|
+
responseMetadata: putResult.$metadata,
|
|
42
|
+
consumedCapacity: putResult.ConsumedCapacity,
|
|
43
|
+
itemCollectionMetrics: putResult.ItemCollectionMetrics,
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
return {
|
|
47
|
+
returnItem: undefined,
|
|
48
|
+
responseMetadata: putResult.$metadata,
|
|
49
|
+
consumedCapacity: putResult.ConsumedCapacity,
|
|
50
|
+
itemCollectionMetrics: putResult.ItemCollectionMetrics,
|
|
51
|
+
};
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
prepareWriteTransaction(entity) {
|
|
55
|
+
return tslib_es6.__awaiter(this, void 0, void 0, function* () {
|
|
56
|
+
const item = yield this.buildItem(entity);
|
|
57
|
+
return {
|
|
58
|
+
Put: {
|
|
59
|
+
TableName: entity.table.tableName,
|
|
60
|
+
Item: item,
|
|
61
|
+
},
|
|
62
|
+
};
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
_Put_config = new WeakMap();
|
|
67
|
+
|
|
68
|
+
exports.Put = Put;
|
|
69
|
+
//# sourceMappingURL=put.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"put.cjs","sources":["../../src/commands/put.ts"],"sourcesContent":[null],"names":["__classPrivateFieldSet","__classPrivateFieldGet","PutCommand"],"mappings":";;;;;;MA2Ba,GAAG,CAAA;AAKd,IAAA,WAAA,CAAY,MAAyB,EAAA;QAFrC,WAAA,CAAA,GAAA,CAAA,IAAA,EAAA,MAAA,CAAA;AAGE,QAAAA,gCAAA,CAAA,IAAI,EAAA,WAAA,EAAW,MAAM,EAAA,GAAA,CAAA;IACvB;AAEa,IAAA,SAAS,CAAC,MAA4B,EAAA;;AACjD,YAAA,MAAM,WAAW,GAAGC,gCAAA,CAAA,IAAI,EAAA,WAAA,EAAA,GAAA,CAAQ,CAAC;AAC/B,kBAAEA,gCAAA,CAAA,IAAI,EAAA,WAAA,EAAA,GAAA,CAAQ,CAAC;AACf,kBAAE,MAAM,MAAM,CAAC,MAAM,CAAC,WAAW,CAACA,gCAAA,CAAA,IAAI,EAAA,WAAA,EAAA,GAAA,CAAQ,CAAC,IAAI,CAAC;AAEtD,YAAA,OAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EACK,WAAW,CAAA,EACX,MAAM,CAAC,YAAY,CAACA,gCAAA,CAAA,IAAI,EAAA,WAAA,EAAA,GAAA,CAAQ,CAAC,IAAI,CAAC,CAAA;QAE7C,CAAC,CAAA;AAAA,IAAA;AAEY,IAAA,OAAO,CAAC,MAA4B,EAAA;;;YAC/C,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;AACzC,YAAA,MAAM,GAAG,GAAG,IAAIC,sBAAU,CAAC;AACzB,gBAAA,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,SAAS;AACjC,gBAAA,IAAI,EAAE,IAAI;AACV,gBAAA,YAAY,EAAED,gCAAA,CAAA,IAAI,EAAA,WAAA,EAAA,GAAA,CAAQ,CAAC,YAAY;AACvC,gBAAA,sBAAsB,EAAEA,gCAAA,CAAA,IAAI,EAAA,WAAA,EAAA,GAAA,CAAQ,CAAC,sBAAsB;AAC3D,gBAAA,2BAA2B,EAAEA,gCAAA,CAAA,IAAI,EAAA,WAAA,EAAA,GAAA,CAAQ,CAAC,2BAA2B;AACtE,aAAA,CAAC;AACF,YAAA,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE;gBAC5D,WAAW,EAAE,MAAAA,gCAAA,CAAA,IAAI,mBAAQ,CAAC,eAAe,0CAAE,MAAM;AACjD,gBAAA,cAAc,EAAEA,gCAAA,CAAA,IAAI,EAAA,WAAA,EAAA,GAAA,CAAQ,CAAC,SAAS;AACvC,aAAA,CAAC;AACF,YAAA,IAAI,SAAS,CAAC,UAAU,EAAE;AACxB,gBAAA,MAAM,UAAU,IACdA,iCAAA,IAAI,EAAA,WAAA,EAAA,GAAA,CAAQ,CAAC;sBACT,SAAS,CAAC;AACZ,sBAAE,MAAM,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,UAAU,CAAC,CAClC;gBAElC,OAAO;oBACL,UAAU;oBACV,gBAAgB,EAAE,SAAS,CAAC,SAAS;oBACrC,gBAAgB,EAAE,SAAS,CAAC,gBAAgB;oBAC5C,qBAAqB,EAAE,SAAS,CAAC,qBAAqB;iBACvD;YACH;YAEA,OAAO;AACL,gBAAA,UAAU,EAAE,SAAS;gBACrB,gBAAgB,EAAE,SAAS,CAAC,SAAS;gBACrC,gBAAgB,EAAE,SAAS,CAAC,gBAAgB;gBAC5C,qBAAqB,EAAE,SAAS,CAAC,qBAAqB;aACvD;QACH,CAAC,CAAA;AAAA,IAAA;AAEY,IAAA,uBAAuB,CAClC,MAA4B,EAAA;;YAE5B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;YACzC,OAAO;AACL,gBAAA,GAAG,EAAE;AACH,oBAAA,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,SAAS;AACjC,oBAAA,IAAI,EAAE,IAAI;AACX,iBAAA;aACF;QACH,CAAC,CAAA;AAAA,IAAA;AACF;;;;;"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { DynamoEntity } from '@/core/entity';
|
|
2
|
+
import type { EntitySchema, TransactWriteOperation } from '@/core/core-types';
|
|
3
|
+
import type { ItemCollectionMetrics, ReturnItemCollectionMetrics, ReturnValue } from '@aws-sdk/client-dynamodb';
|
|
4
|
+
import type { ZodObject } from 'zod/v4';
|
|
5
|
+
import type { BaseConfig, BaseCommand, BaseResult, WriteTransactable } from '@/commands/base-command';
|
|
6
|
+
export type PutConfig<Schema extends ZodObject> = BaseConfig & {
|
|
7
|
+
item: EntitySchema<Schema>;
|
|
8
|
+
returnValues?: ReturnValue;
|
|
9
|
+
returnItemCollectionMetrics?: ReturnItemCollectionMetrics;
|
|
10
|
+
};
|
|
11
|
+
export type PutResult<Schema extends ZodObject> = BaseResult & {
|
|
12
|
+
returnItem: Partial<EntitySchema<Schema>> | undefined;
|
|
13
|
+
itemCollectionMetrics?: ItemCollectionMetrics;
|
|
14
|
+
};
|
|
15
|
+
export declare class Put<Schema extends ZodObject> implements BaseCommand<PutResult<Schema>, Schema>, WriteTransactable<Schema> {
|
|
16
|
+
#private;
|
|
17
|
+
constructor(config: PutConfig<Schema>);
|
|
18
|
+
buildItem(entity: DynamoEntity<Schema>): Promise<(import("zod/v4").infer<Schema> & import("..").DynamoKey) | (import("zod/v4").input<Schema> & import("..").DynamoKey)>;
|
|
19
|
+
execute(entity: DynamoEntity<Schema>): Promise<PutResult<Schema>>;
|
|
20
|
+
prepareWriteTransaction(entity: DynamoEntity<Schema>): Promise<TransactWriteOperation>;
|
|
21
|
+
}
|