@webiny/db-dynamodb 0.0.0-mt-1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (103) hide show
  1. package/BatchProcess.d.ts +31 -0
  2. package/BatchProcess.js +196 -0
  3. package/DynamoDbDriver.d.ts +27 -0
  4. package/DynamoDbDriver.js +272 -0
  5. package/LICENSE +21 -0
  6. package/QueryGenerator.d.ts +19 -0
  7. package/QueryGenerator.js +79 -0
  8. package/README.md +67 -0
  9. package/index.d.ts +2 -0
  10. package/index.js +15 -0
  11. package/operators/comparison/beginsWith.d.ts +3 -0
  12. package/operators/comparison/beginsWith.js +24 -0
  13. package/operators/comparison/between.d.ts +3 -0
  14. package/operators/comparison/between.js +30 -0
  15. package/operators/comparison/eq.d.ts +3 -0
  16. package/operators/comparison/eq.js +34 -0
  17. package/operators/comparison/gt.d.ts +3 -0
  18. package/operators/comparison/gt.js +24 -0
  19. package/operators/comparison/gte.d.ts +3 -0
  20. package/operators/comparison/gte.js +24 -0
  21. package/operators/comparison/lt.d.ts +3 -0
  22. package/operators/comparison/lt.js +24 -0
  23. package/operators/comparison/lte.d.ts +3 -0
  24. package/operators/comparison/lte.js +24 -0
  25. package/operators/index.d.ts +12 -0
  26. package/operators/index.js +39 -0
  27. package/operators/logical/and.d.ts +3 -0
  28. package/operators/logical/and.js +63 -0
  29. package/operators/logical/or.d.ts +3 -0
  30. package/operators/logical/or.js +63 -0
  31. package/package.json +45 -0
  32. package/plugins/definitions/AttributePlugin.d.ts +20 -0
  33. package/plugins/definitions/AttributePlugin.js +61 -0
  34. package/plugins/definitions/DateTimeTransformPlugin.d.ts +4 -0
  35. package/plugins/definitions/DateTimeTransformPlugin.js +54 -0
  36. package/plugins/definitions/FieldPathPlugin.d.ts +22 -0
  37. package/plugins/definitions/FieldPathPlugin.js +48 -0
  38. package/plugins/definitions/FieldPlugin.d.ts +34 -0
  39. package/plugins/definitions/FieldPlugin.js +73 -0
  40. package/plugins/definitions/NumberTransformPlugin.d.ts +4 -0
  41. package/plugins/definitions/NumberTransformPlugin.js +49 -0
  42. package/plugins/definitions/TimeTransformPlugin.d.ts +4 -0
  43. package/plugins/definitions/TimeTransformPlugin.js +65 -0
  44. package/plugins/definitions/ValueFilterPlugin.d.ts +20 -0
  45. package/plugins/definitions/ValueFilterPlugin.js +49 -0
  46. package/plugins/definitions/ValueTransformPlugin.d.ts +22 -0
  47. package/plugins/definitions/ValueTransformPlugin.js +52 -0
  48. package/plugins/definitions/assignFields.d.ts +1 -0
  49. package/plugins/definitions/assignFields.js +37 -0
  50. package/plugins/filters/andIn.d.ts +3 -0
  51. package/plugins/filters/andIn.js +35 -0
  52. package/plugins/filters/between.d.ts +3 -0
  53. package/plugins/filters/between.js +36 -0
  54. package/plugins/filters/contains.d.ts +3 -0
  55. package/plugins/filters/contains.js +32 -0
  56. package/plugins/filters/eq.d.ts +3 -0
  57. package/plugins/filters/eq.js +20 -0
  58. package/plugins/filters/fuzzy.d.ts +3 -0
  59. package/plugins/filters/fuzzy.js +30 -0
  60. package/plugins/filters/gt.d.ts +3 -0
  61. package/plugins/filters/gt.js +20 -0
  62. package/plugins/filters/gte.d.ts +3 -0
  63. package/plugins/filters/gte.js +20 -0
  64. package/plugins/filters/in.d.ts +3 -0
  65. package/plugins/filters/in.js +35 -0
  66. package/plugins/filters/index.d.ts +2 -0
  67. package/plugins/filters/index.js +32 -0
  68. package/plugins/filters/lt.d.ts +3 -0
  69. package/plugins/filters/lt.js +20 -0
  70. package/plugins/filters/lte.d.ts +3 -0
  71. package/plugins/filters/lte.js +20 -0
  72. package/plugins/index.d.ts +2 -0
  73. package/plugins/index.js +19 -0
  74. package/statements/createKeyConditionExpressionArgs.d.ts +12 -0
  75. package/statements/createKeyConditionExpressionArgs.js +48 -0
  76. package/statements/processStatement.d.ts +4 -0
  77. package/statements/processStatement.js +39 -0
  78. package/types.d.ts +29 -0
  79. package/types.js +5 -0
  80. package/utils/attributes.d.ts +10 -0
  81. package/utils/attributes.js +35 -0
  82. package/utils/batchRead.d.ts +15 -0
  83. package/utils/batchRead.js +58 -0
  84. package/utils/batchWrite.d.ts +17 -0
  85. package/utils/batchWrite.js +30 -0
  86. package/utils/cleanup.d.ts +3 -0
  87. package/utils/cleanup.js +53 -0
  88. package/utils/cursor.d.ts +2 -0
  89. package/utils/cursor.js +26 -0
  90. package/utils/documentClient.d.ts +8 -0
  91. package/utils/documentClient.js +33 -0
  92. package/utils/filter.d.ts +12 -0
  93. package/utils/filter.js +212 -0
  94. package/utils/get.d.ts +17 -0
  95. package/utils/get.js +30 -0
  96. package/utils/listResponse.d.ts +13 -0
  97. package/utils/listResponse.js +30 -0
  98. package/utils/query.d.ts +33 -0
  99. package/utils/query.js +127 -0
  100. package/utils/sort.d.ts +17 -0
  101. package/utils/sort.js +93 -0
  102. package/utils/table.d.ts +7 -0
  103. package/utils/table.js +27 -0
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ var _ValueFilterPlugin = require("../definitions/ValueFilterPlugin");
9
+
10
+ var _default = new _ValueFilterPlugin.ValueFilterPlugin({
11
+ operation: "eq",
12
+ matches: ({
13
+ value,
14
+ compareValue
15
+ }) => {
16
+ return value === compareValue;
17
+ }
18
+ });
19
+
20
+ exports.default = _default;
@@ -0,0 +1,3 @@
1
+ import { ValueFilterPlugin } from "../definitions/ValueFilterPlugin";
2
+ declare const _default: ValueFilterPlugin;
3
+ export default _default;
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.default = void 0;
9
+
10
+ var _fuse = _interopRequireDefault(require("fuse.js"));
11
+
12
+ var _ValueFilterPlugin = require("../definitions/ValueFilterPlugin");
13
+
14
+ var _default = new _ValueFilterPlugin.ValueFilterPlugin({
15
+ operation: "fuzzy",
16
+ matches: ({
17
+ value,
18
+ compareValue
19
+ }) => {
20
+ if (typeof value !== "string") {
21
+ return false;
22
+ }
23
+
24
+ const f = new _fuse.default([value], {});
25
+ const result = f.search(compareValue);
26
+ return result.length > 0;
27
+ }
28
+ });
29
+
30
+ exports.default = _default;
@@ -0,0 +1,3 @@
1
+ import { ValueFilterPlugin } from "../definitions/ValueFilterPlugin";
2
+ declare const _default: ValueFilterPlugin;
3
+ export default _default;
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ var _ValueFilterPlugin = require("../definitions/ValueFilterPlugin");
9
+
10
+ var _default = new _ValueFilterPlugin.ValueFilterPlugin({
11
+ operation: "gt",
12
+ matches: ({
13
+ value,
14
+ compareValue
15
+ }) => {
16
+ return value > compareValue;
17
+ }
18
+ });
19
+
20
+ exports.default = _default;
@@ -0,0 +1,3 @@
1
+ import { ValueFilterPlugin } from "../definitions/ValueFilterPlugin";
2
+ declare const _default: ValueFilterPlugin;
3
+ export default _default;
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ var _ValueFilterPlugin = require("../definitions/ValueFilterPlugin");
9
+
10
+ var _default = new _ValueFilterPlugin.ValueFilterPlugin({
11
+ operation: "gte",
12
+ matches: ({
13
+ value,
14
+ compareValue
15
+ }) => {
16
+ return value >= compareValue;
17
+ }
18
+ });
19
+
20
+ exports.default = _default;
@@ -0,0 +1,3 @@
1
+ import { ValueFilterPlugin } from "../definitions/ValueFilterPlugin";
2
+ declare const _default: ValueFilterPlugin;
3
+ export default _default;
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.default = void 0;
9
+
10
+ var _ValueFilterPlugin = require("../definitions/ValueFilterPlugin");
11
+
12
+ var _error = _interopRequireDefault(require("@webiny/error"));
13
+
14
+ var _default = new _ValueFilterPlugin.ValueFilterPlugin({
15
+ operation: "in",
16
+ matches: ({
17
+ value,
18
+ compareValue
19
+ }) => {
20
+ if (!compareValue || Array.isArray(compareValue) === false) {
21
+ throw new _error.default(`The value given as "compareValue" must be an array!`, "COMPARE_VALUE_ERROR", {
22
+ value,
23
+ compareValue
24
+ });
25
+ }
26
+
27
+ if (Array.isArray(value) === true) {
28
+ return compareValue.some(c => value.includes(c));
29
+ }
30
+
31
+ return compareValue.includes(value);
32
+ }
33
+ });
34
+
35
+ exports.default = _default;
@@ -0,0 +1,2 @@
1
+ declare const _default: () => import("../definitions/ValueFilterPlugin").ValueFilterPlugin[];
2
+ export default _default;
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.default = void 0;
9
+
10
+ var _eq = _interopRequireDefault(require("./eq"));
11
+
12
+ var _between = _interopRequireDefault(require("./between"));
13
+
14
+ var _andIn = _interopRequireDefault(require("./andIn"));
15
+
16
+ var _in = _interopRequireDefault(require("./in"));
17
+
18
+ var _gt = _interopRequireDefault(require("./gt"));
19
+
20
+ var _gte = _interopRequireDefault(require("./gte"));
21
+
22
+ var _lt = _interopRequireDefault(require("./lt"));
23
+
24
+ var _lte = _interopRequireDefault(require("./lte"));
25
+
26
+ var _contains = _interopRequireDefault(require("./contains"));
27
+
28
+ var _fuzzy = _interopRequireDefault(require("./fuzzy"));
29
+
30
+ var _default = () => [_eq.default, _andIn.default, _in.default, _gt.default, _lt.default, _gte.default, _lte.default, _between.default, _contains.default, _fuzzy.default];
31
+
32
+ exports.default = _default;
@@ -0,0 +1,3 @@
1
+ import { ValueFilterPlugin } from "../definitions/ValueFilterPlugin";
2
+ declare const _default: ValueFilterPlugin;
3
+ export default _default;
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ var _ValueFilterPlugin = require("../definitions/ValueFilterPlugin");
9
+
10
+ var _default = new _ValueFilterPlugin.ValueFilterPlugin({
11
+ operation: "lt",
12
+ matches: ({
13
+ value,
14
+ compareValue
15
+ }) => {
16
+ return value < compareValue;
17
+ }
18
+ });
19
+
20
+ exports.default = _default;
@@ -0,0 +1,3 @@
1
+ import { ValueFilterPlugin } from "../definitions/ValueFilterPlugin";
2
+ declare const _default: ValueFilterPlugin;
3
+ export default _default;
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ var _ValueFilterPlugin = require("../definitions/ValueFilterPlugin");
9
+
10
+ var _default = new _ValueFilterPlugin.ValueFilterPlugin({
11
+ operation: "lte",
12
+ matches: ({
13
+ value,
14
+ compareValue
15
+ }) => {
16
+ return value <= compareValue;
17
+ }
18
+ });
19
+
20
+ exports.default = _default;
@@ -0,0 +1,2 @@
1
+ declare const _default: () => import("./definitions/ValueFilterPlugin").ValueFilterPlugin[][];
2
+ export default _default;
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.default = void 0;
9
+
10
+ var _filters = _interopRequireDefault(require("./filters"));
11
+
12
+ /**
13
+ * List everything that needs to be loaded by default.
14
+ */
15
+ var _default = () => {
16
+ return [(0, _filters.default)()];
17
+ };
18
+
19
+ exports.default = _default;
@@ -0,0 +1,12 @@
1
+ declare const _default: ({ query, sort, key }: {
2
+ query: any;
3
+ sort: any;
4
+ key: any;
5
+ }) => {
6
+ KeyConditionExpression: string;
7
+ ExpressionAttributeNames: {};
8
+ ExpressionAttributeValues: {};
9
+ ScanIndexForward: boolean;
10
+ IndexName: any;
11
+ };
12
+ export default _default;
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.default = void 0;
9
+
10
+ var _processStatement = _interopRequireDefault(require("./processStatement"));
11
+
12
+ var _default = ({
13
+ query,
14
+ sort,
15
+ key
16
+ }) => {
17
+ const args = {
18
+ expression: "",
19
+ attributeNames: {},
20
+ attributeValues: {}
21
+ };
22
+ (0, _processStatement.default)({
23
+ args,
24
+ query: {
25
+ $and: query
26
+ }
27
+ });
28
+ const output = {
29
+ KeyConditionExpression: args.expression,
30
+ ExpressionAttributeNames: args.attributeNames,
31
+ ExpressionAttributeValues: args.attributeValues,
32
+ ScanIndexForward: true,
33
+ IndexName: null
34
+ };
35
+ const sortKey = key.fields && key.fields[1];
36
+
37
+ if (sort && sort[sortKey.name] === -1) {
38
+ output.ScanIndexForward = false;
39
+ }
40
+
41
+ if (!key.primary) {
42
+ output.IndexName = key.name;
43
+ }
44
+
45
+ return output;
46
+ };
47
+
48
+ exports.default = _default;
@@ -0,0 +1,4 @@
1
+ export default function processStatement({ args, query }: {
2
+ args: any;
3
+ query: any;
4
+ }): void;
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.default = processStatement;
9
+
10
+ var _operators = _interopRequireDefault(require("./../operators"));
11
+
12
+ function processStatement({
13
+ args,
14
+ query
15
+ }) {
16
+ outerLoop: for (const [key, value] of Object.entries(query)) {
17
+ const operators = Object.values(_operators.default);
18
+
19
+ for (let i = 0; i < operators.length; i++) {
20
+ const operator = operators[i];
21
+
22
+ if (operator.canProcess({
23
+ key,
24
+ value,
25
+ args
26
+ })) {
27
+ operator.process({
28
+ key,
29
+ value,
30
+ args,
31
+ processStatement
32
+ });
33
+ continue outerLoop;
34
+ }
35
+ }
36
+
37
+ throw new Error(`Invalid operator {${key} : ${value}}.`);
38
+ }
39
+ }
package/types.d.ts ADDED
@@ -0,0 +1,29 @@
1
+ export declare type OperatorArgs = {
2
+ expression: string;
3
+ attributeNames: Record<string, any>;
4
+ attributeValues: Record<string, any>;
5
+ };
6
+ declare type CanProcessArgs = {
7
+ key: string;
8
+ value: any;
9
+ args: OperatorArgs;
10
+ };
11
+ declare type ProcessArgs = {
12
+ key: string;
13
+ value: any;
14
+ args: OperatorArgs;
15
+ processStatement: any;
16
+ };
17
+ export declare type Operator = {
18
+ canProcess: ({ key }: CanProcessArgs) => boolean;
19
+ process: ({ key, value, args }: ProcessArgs) => void;
20
+ };
21
+ /**
22
+ * We use this definition to search for a value in any given field that was passed.
23
+ * It works as an "OR" condition.
24
+ */
25
+ export interface DynamoDbContainsFilter {
26
+ fields: string[];
27
+ value: string;
28
+ }
29
+ export {};
package/types.js ADDED
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
@@ -0,0 +1,10 @@
1
+ import { ContextInterface } from "@webiny/handler/types";
2
+ import { DefinitionParams } from "../plugins/definitions/AttributePlugin";
3
+ import { PluginsContainer } from "@webiny/plugins";
4
+ /**
5
+ * Will be removed in favor of directly assigning attributes to a certain entity when creating the storage operations.
6
+ *
7
+ * @deprecated
8
+ */
9
+ export declare const getExtraAttributes: (context: ContextInterface, entity: string) => Record<string, DefinitionParams>;
10
+ export declare const getExtraAttributesFromPlugins: (plugins: PluginsContainer, entity: string) => Record<string, DefinitionParams>;
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.getExtraAttributesFromPlugins = exports.getExtraAttributes = void 0;
9
+
10
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
+
12
+ var _AttributePlugin = require("../plugins/definitions/AttributePlugin");
13
+
14
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
15
+
16
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
17
+
18
+ /**
19
+ * Will be removed in favor of directly assigning attributes to a certain entity when creating the storage operations.
20
+ *
21
+ * @deprecated
22
+ */
23
+ const getExtraAttributes = (context, entity) => {
24
+ return getExtraAttributesFromPlugins(context.plugins, entity);
25
+ };
26
+
27
+ exports.getExtraAttributes = getExtraAttributes;
28
+
29
+ const getExtraAttributesFromPlugins = (plugins, entity) => {
30
+ return plugins.byType(_AttributePlugin.AttributePlugin.type).filter(plugin => plugin.entity === entity).reduce((attributes, plugin) => {
31
+ return _objectSpread(_objectSpread({}, attributes), plugin.getDefinition());
32
+ }, {});
33
+ };
34
+
35
+ exports.getExtraAttributesFromPlugins = getExtraAttributesFromPlugins;
@@ -0,0 +1,15 @@
1
+ import { Table } from "dynamodb-toolbox";
2
+ interface Item {
3
+ Table: Table;
4
+ Key: any;
5
+ }
6
+ interface Params {
7
+ table: Table;
8
+ items: Item[];
9
+ }
10
+ /**
11
+ * This helper function is meant to be used to batch read from one table.
12
+ * It will fetch all results, as there is a next() method call built in.
13
+ */
14
+ export declare const batchReadAll: <T = any>(params: Params) => Promise<T[]>;
15
+ export {};
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.batchReadAll = void 0;
7
+
8
+ const flatten = responses => {
9
+ const entries = [];
10
+ const values = Object.values(responses);
11
+
12
+ for (const items of values) {
13
+ entries.push(...items);
14
+ }
15
+
16
+ return entries;
17
+ };
18
+ /**
19
+ * This helper function is meant to be used to batch read from one table.
20
+ * It will fetch all results, as there is a next() method call built in.
21
+ */
22
+
23
+
24
+ const batchReadAll = async params => {
25
+ if (params.items.length === 0) {
26
+ return [];
27
+ }
28
+
29
+ const items = [];
30
+ const result = await params.table.batchGet(params.items);
31
+
32
+ if (result.Responses) {
33
+ items.push(...flatten(result.Responses));
34
+ }
35
+
36
+ if (typeof result.next === "function") {
37
+ let previous = result;
38
+ let nextResult;
39
+
40
+ while (nextResult = await previous.next()) {
41
+ if (!nextResult) {
42
+ return items;
43
+ }
44
+
45
+ items.push(...flatten(nextResult.Responses));
46
+
47
+ if (!nextResult || typeof nextResult.next !== "function") {
48
+ return items;
49
+ }
50
+
51
+ previous = nextResult;
52
+ }
53
+ }
54
+
55
+ return items;
56
+ };
57
+
58
+ exports.batchReadAll = batchReadAll;
@@ -0,0 +1,17 @@
1
+ import { Table } from "dynamodb-toolbox";
2
+ import { DocumentClient } from "aws-sdk/clients/dynamodb";
3
+ interface Item {
4
+ [key: string]: DocumentClient.WriteRequest;
5
+ }
6
+ interface Params {
7
+ table: Table;
8
+ items: Item[];
9
+ }
10
+ /**
11
+ * Method is meant for batch writing to a single table.
12
+ * It expects already prepared items for the write.
13
+ * It can either delete or put items
14
+ * The method does not check items before actually sending them into the underlying library.
15
+ */
16
+ export declare const batchWriteAll: (params: Params, maxChunk?: number) => Promise<void>;
17
+ export {};
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.batchWriteAll = void 0;
9
+
10
+ var _chunk = _interopRequireDefault(require("lodash/chunk"));
11
+
12
+ /**
13
+ * Method is meant for batch writing to a single table.
14
+ * It expects already prepared items for the write.
15
+ * It can either delete or put items
16
+ * The method does not check items before actually sending them into the underlying library.
17
+ */
18
+ const batchWriteAll = async (params, maxChunk = 25) => {
19
+ if (params.items.length === 0) {
20
+ return;
21
+ }
22
+
23
+ const chunkedItems = (0, _chunk.default)(params.items, maxChunk);
24
+
25
+ for (const items of chunkedItems) {
26
+ await params.table.batchWrite(items);
27
+ }
28
+ };
29
+
30
+ exports.batchWriteAll = batchWriteAll;
@@ -0,0 +1,3 @@
1
+ import { Entity } from "dynamodb-toolbox";
2
+ export declare const cleanupItem: <T>(entity: Entity<any>, item?: T & Record<string, any>, removeAttributes?: string[]) => T;
3
+ export declare const cleanupItems: <T>(entity: Entity<any>, items: (T & Record<string, any>)[], removeAttributes?: string[]) => T[];
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.cleanupItems = exports.cleanupItem = void 0;
9
+
10
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
+
12
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
13
+
14
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
15
+
16
+ /**
17
+ * The attributes defined by us or the dynamodb-toolbox library.
18
+ * Add more attributes if necessary.
19
+ */
20
+ const attributesToRemove = ["PK", "SK", "created", "_ct", "modified", "_mt", "entity", "_et", "GSI1_PK", "GSI1_SK", "TYPE"];
21
+
22
+ const cleanupItem = (entity, item, removeAttributes = []) => {
23
+ if (!item) {
24
+ return null;
25
+ }
26
+
27
+ const newItem = _objectSpread({}, item);
28
+
29
+ const targets = attributesToRemove.concat(removeAttributes);
30
+ const attributes = entity.schema.attributes;
31
+
32
+ for (const key in item) {
33
+ if (item.hasOwnProperty(key) === false) {
34
+ continue;
35
+ }
36
+
37
+ if (attributes[key] && targets.includes(key) === false) {
38
+ continue;
39
+ }
40
+
41
+ delete newItem[key];
42
+ }
43
+
44
+ return newItem;
45
+ };
46
+
47
+ exports.cleanupItem = cleanupItem;
48
+
49
+ const cleanupItems = (entity, items, removeAttributes = []) => {
50
+ return items.map(item => cleanupItem(entity, item, removeAttributes));
51
+ };
52
+
53
+ exports.cleanupItems = cleanupItems;
@@ -0,0 +1,2 @@
1
+ export declare const encodeCursor: (cursor?: any) => string;
2
+ export declare const decodeCursor: (cursor?: string) => any;
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.encodeCursor = exports.decodeCursor = void 0;
7
+
8
+ const encodeCursor = cursor => {
9
+ if (!cursor) {
10
+ return null;
11
+ }
12
+
13
+ return Buffer.from(JSON.stringify(cursor)).toString("base64");
14
+ };
15
+
16
+ exports.encodeCursor = encodeCursor;
17
+
18
+ const decodeCursor = cursor => {
19
+ if (!cursor) {
20
+ return null;
21
+ }
22
+
23
+ return JSON.parse(Buffer.from(cursor, "base64").toString("ascii"));
24
+ };
25
+
26
+ exports.decodeCursor = decodeCursor;