@webiny/db-dynamodb 0.0.0-mt-2 → 0.0.0-unstable.06b2ede40f

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 (222) hide show
  1. package/DynamoDbDriver.d.ts +23 -25
  2. package/DynamoDbDriver.js +232 -240
  3. package/DynamoDbDriver.js.map +1 -0
  4. package/README.md +81 -1
  5. package/index.d.ts +2 -0
  6. package/index.js +18 -3
  7. package/index.js.map +1 -0
  8. package/package.json +19 -22
  9. package/plugins/definitions/AttributePlugin.d.ts +6 -8
  10. package/plugins/definitions/AttributePlugin.js +5 -20
  11. package/plugins/definitions/AttributePlugin.js.map +1 -0
  12. package/plugins/definitions/DateTimeTransformPlugin.d.ts +3 -2
  13. package/plugins/definitions/DateTimeTransformPlugin.js +16 -28
  14. package/plugins/definitions/DateTimeTransformPlugin.js.map +1 -0
  15. package/plugins/definitions/FieldPathPlugin.d.ts +3 -3
  16. package/plugins/definitions/FieldPathPlugin.js +7 -21
  17. package/plugins/definitions/FieldPathPlugin.js.map +1 -0
  18. package/plugins/definitions/FieldPlugin.d.ts +5 -5
  19. package/plugins/definitions/FieldPlugin.js +2 -24
  20. package/plugins/definitions/FieldPlugin.js.map +1 -0
  21. package/plugins/definitions/TimeTransformPlugin.d.ts +3 -2
  22. package/plugins/definitions/TimeTransformPlugin.js +19 -30
  23. package/plugins/definitions/TimeTransformPlugin.js.map +1 -0
  24. package/plugins/definitions/ValueFilterPlugin.d.ts +13 -11
  25. package/plugins/definitions/ValueFilterPlugin.js +10 -16
  26. package/plugins/definitions/ValueFilterPlugin.js.map +1 -0
  27. package/plugins/definitions/ValueTransformPlugin.d.ts +9 -9
  28. package/plugins/definitions/ValueTransformPlugin.js +7 -22
  29. package/plugins/definitions/ValueTransformPlugin.js.map +1 -0
  30. package/plugins/definitions/assignFields.js +3 -10
  31. package/plugins/definitions/assignFields.js.map +1 -0
  32. package/plugins/filters/andIn.d.ts +2 -2
  33. package/plugins/filters/andIn.js +5 -9
  34. package/plugins/filters/andIn.js.map +1 -0
  35. package/plugins/filters/between.d.ts +2 -2
  36. package/plugins/filters/between.js +5 -9
  37. package/plugins/filters/between.js.map +1 -0
  38. package/plugins/filters/contains.d.ts +2 -2
  39. package/plugins/filters/contains.js +44 -17
  40. package/plugins/filters/contains.js.map +1 -0
  41. package/plugins/filters/eq.d.ts +2 -2
  42. package/plugins/filters/eq.js +17 -5
  43. package/plugins/filters/eq.js.map +1 -0
  44. package/plugins/filters/fuzzy.d.ts +2 -2
  45. package/plugins/filters/fuzzy.js +18 -12
  46. package/plugins/filters/fuzzy.js.map +1 -0
  47. package/plugins/filters/gt.d.ts +2 -2
  48. package/plugins/filters/gt.js +4 -4
  49. package/plugins/filters/gt.js.map +1 -0
  50. package/plugins/filters/gte.d.ts +2 -2
  51. package/plugins/filters/gte.js +4 -4
  52. package/plugins/filters/gte.js.map +1 -0
  53. package/plugins/filters/in.d.ts +2 -2
  54. package/plugins/filters/in.js +5 -9
  55. package/plugins/filters/in.js.map +1 -0
  56. package/plugins/filters/index.d.ts +1 -1
  57. package/plugins/filters/index.js +5 -15
  58. package/plugins/filters/index.js.map +1 -0
  59. package/plugins/filters/lt.d.ts +2 -2
  60. package/plugins/filters/lt.js +4 -4
  61. package/plugins/filters/lt.js.map +1 -0
  62. package/plugins/filters/lte.d.ts +2 -2
  63. package/plugins/filters/lte.js +4 -4
  64. package/plugins/filters/lte.js.map +1 -0
  65. package/plugins/filters/startsWith.d.ts +3 -0
  66. package/plugins/filters/startsWith.js +40 -0
  67. package/plugins/filters/startsWith.js.map +1 -0
  68. package/plugins/index.d.ts +1 -1
  69. package/plugins/index.js +3 -5
  70. package/plugins/index.js.map +1 -0
  71. package/store/entity.d.ts +78 -0
  72. package/store/entity.js +41 -0
  73. package/store/entity.js.map +1 -0
  74. package/store/keys.d.ts +6 -0
  75. package/store/keys.js +22 -0
  76. package/store/keys.js.map +1 -0
  77. package/store/types.d.ts +7 -0
  78. package/store/types.js +7 -0
  79. package/store/types.js.map +1 -0
  80. package/toolbox.d.ts +3 -0
  81. package/toolbox.js +20 -0
  82. package/toolbox.js.map +1 -0
  83. package/types.d.ts +37 -21
  84. package/types.js +3 -1
  85. package/types.js.map +1 -0
  86. package/utils/attributes.d.ts +5 -5
  87. package/utils/attributes.js +6 -14
  88. package/utils/attributes.js.map +1 -0
  89. package/utils/batch/batchRead.d.ts +15 -0
  90. package/utils/batch/batchRead.js +72 -0
  91. package/utils/batch/batchRead.js.map +1 -0
  92. package/utils/batch/batchWrite.d.ts +13 -0
  93. package/utils/batch/batchWrite.js +65 -0
  94. package/utils/batch/batchWrite.js.map +1 -0
  95. package/utils/batch/index.d.ts +3 -0
  96. package/utils/batch/index.js +40 -0
  97. package/utils/batch/index.js.map +1 -0
  98. package/utils/batch/types.d.ts +25 -0
  99. package/utils/batch/types.js +7 -0
  100. package/utils/batch/types.js.map +1 -0
  101. package/utils/cleanup.d.ts +3 -3
  102. package/utils/cleanup.js +11 -27
  103. package/utils/cleanup.js.map +1 -0
  104. package/utils/count.d.ts +2 -0
  105. package/utils/count.js +23 -0
  106. package/utils/count.js.map +1 -0
  107. package/utils/createEntity.d.ts +54 -0
  108. package/utils/createEntity.js +61 -0
  109. package/utils/createEntity.js.map +1 -0
  110. package/utils/createTable.d.ts +8 -0
  111. package/utils/createTable.js +29 -0
  112. package/utils/createTable.js.map +1 -0
  113. package/utils/cursor.d.ts +2 -2
  114. package/utils/cursor.js +2 -6
  115. package/utils/cursor.js.map +1 -0
  116. package/utils/delete.d.ts +10 -0
  117. package/utils/delete.js +18 -0
  118. package/utils/delete.js.map +1 -0
  119. package/utils/entity/Entity.d.ts +26 -0
  120. package/utils/entity/Entity.js +77 -0
  121. package/utils/entity/Entity.js.map +1 -0
  122. package/utils/entity/EntityReadBatch.d.ts +17 -0
  123. package/utils/entity/EntityReadBatch.js +41 -0
  124. package/utils/entity/EntityReadBatch.js.map +1 -0
  125. package/utils/entity/EntityReadBatchBuilder.d.ts +10 -0
  126. package/utils/entity/EntityReadBatchBuilder.js +29 -0
  127. package/utils/entity/EntityReadBatchBuilder.js.map +1 -0
  128. package/utils/entity/EntityWriteBatch.d.ts +22 -0
  129. package/utils/entity/EntityWriteBatch.js +59 -0
  130. package/utils/entity/EntityWriteBatch.js.map +1 -0
  131. package/utils/entity/EntityWriteBatchBuilder.d.ts +11 -0
  132. package/utils/entity/EntityWriteBatchBuilder.js +28 -0
  133. package/utils/entity/EntityWriteBatchBuilder.js.map +1 -0
  134. package/utils/entity/getEntity.d.ts +4 -0
  135. package/utils/entity/getEntity.js +19 -0
  136. package/utils/entity/getEntity.js.map +1 -0
  137. package/utils/entity/index.d.ts +7 -0
  138. package/utils/entity/index.js +84 -0
  139. package/utils/entity/index.js.map +1 -0
  140. package/utils/entity/types.d.ts +51 -0
  141. package/utils/entity/types.js +7 -0
  142. package/utils/entity/types.js.map +1 -0
  143. package/utils/filter.d.ts +4 -4
  144. package/utils/filter.js +12 -43
  145. package/utils/filter.js.map +1 -0
  146. package/utils/get.d.ts +10 -8
  147. package/utils/get.js +16 -7
  148. package/utils/get.js.map +1 -0
  149. package/utils/index.d.ts +17 -0
  150. package/utils/index.js +194 -0
  151. package/utils/index.js.map +1 -0
  152. package/utils/listResponse.d.ts +1 -1
  153. package/utils/listResponse.js +8 -7
  154. package/utils/listResponse.js.map +1 -0
  155. package/utils/put.d.ts +12 -0
  156. package/utils/put.js +19 -0
  157. package/utils/put.js.map +1 -0
  158. package/utils/query.d.ts +20 -8
  159. package/utils/query.js +71 -38
  160. package/utils/query.js.map +1 -0
  161. package/utils/scan.d.ts +38 -0
  162. package/utils/scan.js +90 -0
  163. package/utils/scan.js.map +1 -0
  164. package/utils/sort.d.ts +3 -3
  165. package/utils/sort.js +5 -22
  166. package/utils/sort.js.map +1 -0
  167. package/utils/table/Table.d.ts +11 -0
  168. package/utils/table/Table.js +38 -0
  169. package/utils/table/Table.js.map +1 -0
  170. package/utils/table/TableReadBatch.d.ts +19 -0
  171. package/utils/table/TableReadBatch.js +62 -0
  172. package/utils/table/TableReadBatch.js.map +1 -0
  173. package/utils/table/TableWriteBatch.d.ts +21 -0
  174. package/utils/table/TableWriteBatch.js +69 -0
  175. package/utils/table/TableWriteBatch.js.map +1 -0
  176. package/utils/table/index.d.ts +4 -0
  177. package/utils/table/index.js +51 -0
  178. package/utils/table/index.js.map +1 -0
  179. package/utils/table/types.d.ts +39 -0
  180. package/utils/table/types.js +7 -0
  181. package/utils/table/types.js.map +1 -0
  182. package/utils/update.d.ts +12 -0
  183. package/utils/update.js +19 -0
  184. package/utils/update.js.map +1 -0
  185. package/BatchProcess.d.ts +0 -31
  186. package/BatchProcess.js +0 -196
  187. package/QueryGenerator.d.ts +0 -19
  188. package/QueryGenerator.js +0 -79
  189. package/operators/comparison/beginsWith.d.ts +0 -3
  190. package/operators/comparison/beginsWith.js +0 -24
  191. package/operators/comparison/between.d.ts +0 -3
  192. package/operators/comparison/between.js +0 -30
  193. package/operators/comparison/eq.d.ts +0 -3
  194. package/operators/comparison/eq.js +0 -34
  195. package/operators/comparison/gt.d.ts +0 -3
  196. package/operators/comparison/gt.js +0 -24
  197. package/operators/comparison/gte.d.ts +0 -3
  198. package/operators/comparison/gte.js +0 -24
  199. package/operators/comparison/lt.d.ts +0 -3
  200. package/operators/comparison/lt.js +0 -24
  201. package/operators/comparison/lte.d.ts +0 -3
  202. package/operators/comparison/lte.js +0 -24
  203. package/operators/index.d.ts +0 -12
  204. package/operators/index.js +0 -39
  205. package/operators/logical/and.d.ts +0 -3
  206. package/operators/logical/and.js +0 -63
  207. package/operators/logical/or.d.ts +0 -3
  208. package/operators/logical/or.js +0 -63
  209. package/plugins/definitions/NumberTransformPlugin.d.ts +0 -4
  210. package/plugins/definitions/NumberTransformPlugin.js +0 -49
  211. package/statements/createKeyConditionExpressionArgs.d.ts +0 -12
  212. package/statements/createKeyConditionExpressionArgs.js +0 -48
  213. package/statements/processStatement.d.ts +0 -4
  214. package/statements/processStatement.js +0 -39
  215. package/utils/batchRead.d.ts +0 -15
  216. package/utils/batchRead.js +0 -58
  217. package/utils/batchWrite.d.ts +0 -17
  218. package/utils/batchWrite.js +0 -30
  219. package/utils/documentClient.d.ts +0 -8
  220. package/utils/documentClient.js +0 -33
  221. package/utils/table.d.ts +0 -7
  222. package/utils/table.js +0 -27
package/types.d.ts CHANGED
@@ -1,23 +1,3 @@
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
1
  /**
22
2
  * We use this definition to search for a value in any given field that was passed.
23
3
  * It works as an "OR" condition.
@@ -26,4 +6,40 @@ export interface DynamoDbContainsFilter {
26
6
  fields: string[];
27
7
  value: string;
28
8
  }
29
- export {};
9
+ export interface ProcessStatementArgsParam {
10
+ expression: string;
11
+ attributeNames: Record<string, any>;
12
+ attributeValues: Record<string, any>;
13
+ }
14
+ export interface ProcessStatementQueryParam {
15
+ [key: string]: any;
16
+ }
17
+ export interface ProcessStatementParams {
18
+ args: ProcessStatementArgsParam;
19
+ query: ProcessStatementQueryParam;
20
+ }
21
+ export interface ProcessStatementCallable {
22
+ (params: ProcessStatementParams): void;
23
+ }
24
+ export interface Query {
25
+ [key: string]: string;
26
+ }
27
+ export interface QueryKeyField {
28
+ name: string;
29
+ }
30
+ export interface QueryKey {
31
+ fields: QueryKeyField[];
32
+ primary?: boolean;
33
+ unique?: boolean;
34
+ name: string;
35
+ }
36
+ export type QueryKeys = QueryKey[];
37
+ export type QuerySort = Record<string, -1 | 1>;
38
+ export type DbItem<TData extends Record<string, any> = Record<string, any>> = {
39
+ PK: string;
40
+ SK: string;
41
+ GSI1_PK: string;
42
+ GSI1_SK: string;
43
+ TYPE: string;
44
+ data: TData;
45
+ };
package/types.js CHANGED
@@ -2,4 +2,6 @@
2
2
 
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
- });
5
+ });
6
+
7
+ //# sourceMappingURL=types.js.map
package/types.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["/**\n * We use this definition to search for a value in any given field that was passed.\n * It works as an \"OR\" condition.\n */\nexport interface DynamoDbContainsFilter {\n fields: string[];\n value: string;\n}\n\nexport interface ProcessStatementArgsParam {\n expression: string;\n attributeNames: Record<string, any>;\n attributeValues: Record<string, any>;\n}\nexport interface ProcessStatementQueryParam {\n [key: string]: any;\n}\nexport interface ProcessStatementParams {\n args: ProcessStatementArgsParam;\n query: ProcessStatementQueryParam;\n}\n\nexport interface ProcessStatementCallable {\n (params: ProcessStatementParams): void;\n}\n\nexport interface Query {\n [key: string]: string;\n}\nexport interface QueryKeyField {\n name: string;\n}\nexport interface QueryKey {\n fields: QueryKeyField[];\n primary?: boolean;\n unique?: boolean;\n name: string;\n}\nexport type QueryKeys = QueryKey[];\n\nexport type QuerySort = Record<string, -1 | 1>;\n\nexport type DbItem<TData extends Record<string, any> = Record<string, any>> = {\n PK: string;\n SK: string;\n GSI1_PK: string;\n GSI1_SK: string;\n TYPE: string;\n data: TData;\n};\n"],"mappings":"","ignoreList":[]}
@@ -1,10 +1,10 @@
1
- import { ContextInterface } from "@webiny/handler/types";
2
- import { DefinitionParams } from "../plugins/definitions/AttributePlugin";
3
- import { PluginsContainer } from "@webiny/plugins";
1
+ import type { Context } from "@webiny/api/types";
2
+ import { AttributePlugin } from "../plugins/definitions/AttributePlugin";
3
+ import type { PluginsContainer } from "@webiny/plugins";
4
4
  /**
5
5
  * Will be removed in favor of directly assigning attributes to a certain entity when creating the storage operations.
6
6
  *
7
7
  * @deprecated
8
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>;
9
+ export declare const getExtraAttributes: (context: Context, entity: string) => Record<string, AttributePlugin["_params"]>;
10
+ export declare const getExtraAttributesFromPlugins: (plugins: PluginsContainer, entity: string) => Record<string, AttributePlugin["_params"]>;
@@ -1,20 +1,10 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
3
  Object.defineProperty(exports, "__esModule", {
6
4
  value: true
7
5
  });
8
6
  exports.getExtraAttributesFromPlugins = exports.getExtraAttributes = void 0;
9
-
10
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
-
12
7
  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
8
  /**
19
9
  * Will be removed in favor of directly assigning attributes to a certain entity when creating the storage operations.
20
10
  *
@@ -23,13 +13,15 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
23
13
  const getExtraAttributes = (context, entity) => {
24
14
  return getExtraAttributesFromPlugins(context.plugins, entity);
25
15
  };
26
-
27
16
  exports.getExtraAttributes = getExtraAttributes;
28
-
29
17
  const getExtraAttributesFromPlugins = (plugins, entity) => {
30
18
  return plugins.byType(_AttributePlugin.AttributePlugin.type).filter(plugin => plugin.entity === entity).reduce((attributes, plugin) => {
31
- return _objectSpread(_objectSpread({}, attributes), plugin.getDefinition());
19
+ return {
20
+ ...attributes,
21
+ ...plugin.getDefinition()
22
+ };
32
23
  }, {});
33
24
  };
25
+ exports.getExtraAttributesFromPlugins = getExtraAttributesFromPlugins;
34
26
 
35
- exports.getExtraAttributesFromPlugins = getExtraAttributesFromPlugins;
27
+ //# sourceMappingURL=attributes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_AttributePlugin","require","getExtraAttributes","context","entity","getExtraAttributesFromPlugins","plugins","exports","byType","AttributePlugin","type","filter","plugin","reduce","attributes","getDefinition"],"sources":["attributes.ts"],"sourcesContent":["import type { Context } from \"@webiny/api/types\";\nimport { AttributePlugin } from \"~/plugins/definitions/AttributePlugin\";\nimport type { PluginsContainer } from \"@webiny/plugins\";\n\n/**\n * Will be removed in favor of directly assigning attributes to a certain entity when creating the storage operations.\n *\n * @deprecated\n */\nexport const getExtraAttributes = (\n context: Context,\n entity: string\n): Record<string, AttributePlugin[\"_params\"]> => {\n return getExtraAttributesFromPlugins(context.plugins, entity);\n};\n\nexport const getExtraAttributesFromPlugins = (\n plugins: PluginsContainer,\n entity: string\n): Record<string, AttributePlugin[\"_params\"]> => {\n return plugins\n .byType<AttributePlugin>(AttributePlugin.type)\n .filter(plugin => plugin.entity === entity)\n .reduce((attributes, plugin) => {\n return {\n ...attributes,\n ...plugin.getDefinition()\n };\n }, {});\n};\n"],"mappings":";;;;;;AACA,IAAAA,gBAAA,GAAAC,OAAA;AAGA;AACA;AACA;AACA;AACA;AACO,MAAMC,kBAAkB,GAAGA,CAC9BC,OAAgB,EAChBC,MAAc,KAC+B;EAC7C,OAAOC,6BAA6B,CAACF,OAAO,CAACG,OAAO,EAAEF,MAAM,CAAC;AACjE,CAAC;AAACG,OAAA,CAAAL,kBAAA,GAAAA,kBAAA;AAEK,MAAMG,6BAA6B,GAAGA,CACzCC,OAAyB,EACzBF,MAAc,KAC+B;EAC7C,OAAOE,OAAO,CACTE,MAAM,CAAkBC,gCAAe,CAACC,IAAI,CAAC,CAC7CC,MAAM,CAACC,MAAM,IAAIA,MAAM,CAACR,MAAM,KAAKA,MAAM,CAAC,CAC1CS,MAAM,CAAC,CAACC,UAAU,EAAEF,MAAM,KAAK;IAC5B,OAAO;MACH,GAAGE,UAAU;MACb,GAAGF,MAAM,CAACG,aAAa,CAAC;IAC5B,CAAC;EACL,CAAC,EAAE,CAAC,CAAC,CAAC;AACd,CAAC;AAACR,OAAA,CAAAF,6BAAA,GAAAA,6BAAA","ignoreList":[]}
@@ -0,0 +1,15 @@
1
+ import type { TableDef } from "../../toolbox";
2
+ import type { GenericRecord } from "@webiny/api/types";
3
+ export interface BatchReadItem {
4
+ Table?: TableDef;
5
+ Key: any;
6
+ }
7
+ export interface BatchReadParams {
8
+ table?: TableDef;
9
+ items: BatchReadItem[];
10
+ }
11
+ /**
12
+ * This helper function is meant to be used to batch read from one table.
13
+ * It will fetch all results, as there is a next() method call built in.
14
+ */
15
+ export declare const batchReadAll: <T = GenericRecord>(params: BatchReadParams, maxChunk?: number) => Promise<T[]>;
@@ -0,0 +1,72 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.batchReadAll = void 0;
8
+ var _chunk = _interopRequireDefault(require("lodash/chunk"));
9
+ var _error = _interopRequireDefault(require("@webiny/error"));
10
+ const MAX_BATCH_ITEMS = 100;
11
+ const flatten = responses => {
12
+ const entries = [];
13
+ const values = Object.values(responses);
14
+ for (const items of values) {
15
+ entries.push(...items);
16
+ }
17
+ return entries;
18
+ };
19
+ const batchReadAllChunk = async params => {
20
+ const {
21
+ table,
22
+ items
23
+ } = params;
24
+ const records = [];
25
+ if (!table) {
26
+ return records;
27
+ }
28
+ const result = await table.batchGet(items);
29
+ if (!result || !result.Responses) {
30
+ return records;
31
+ }
32
+ records.push(...flatten(result.Responses));
33
+ if (!result.next || typeof result.next !== "function") {
34
+ return records;
35
+ }
36
+ let previous = result;
37
+ while (typeof previous.next === "function") {
38
+ const nextResult = await previous.next();
39
+ if (!nextResult) {
40
+ return records;
41
+ }
42
+ records.push(...flatten(nextResult.Responses));
43
+ previous = nextResult;
44
+ }
45
+ return records;
46
+ };
47
+ /**
48
+ * This helper function is meant to be used to batch read from one table.
49
+ * It will fetch all results, as there is a next() method call built in.
50
+ */
51
+ const batchReadAll = async (params, maxChunk = MAX_BATCH_ITEMS) => {
52
+ if (params.items.length === 0) {
53
+ return [];
54
+ } else if (maxChunk > MAX_BATCH_ITEMS) {
55
+ throw new _error.default(`Cannot set to load more than ${MAX_BATCH_ITEMS} items from the DynamoDB at once.`, "DYNAMODB_MAX_BATCH_GET_LIMIT_ERROR", {
56
+ maxChunk
57
+ });
58
+ }
59
+ const records = [];
60
+ const chunkItemsList = (0, _chunk.default)(params.items, maxChunk);
61
+ for (const chunkItems of chunkItemsList) {
62
+ const results = await batchReadAllChunk({
63
+ table: params.table,
64
+ items: chunkItems
65
+ });
66
+ records.push(...results);
67
+ }
68
+ return records;
69
+ };
70
+ exports.batchReadAll = batchReadAll;
71
+
72
+ //# sourceMappingURL=batchRead.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_chunk","_interopRequireDefault","require","_error","MAX_BATCH_ITEMS","flatten","responses","entries","values","Object","items","push","batchReadAllChunk","params","table","records","result","batchGet","Responses","next","previous","nextResult","batchReadAll","maxChunk","length","WebinyError","chunkItemsList","lodashChunk","chunkItems","results","exports"],"sources":["batchRead.ts"],"sourcesContent":["import lodashChunk from \"lodash/chunk\";\nimport WebinyError from \"@webiny/error\";\nimport type { TableDef } from \"~/toolbox\";\nimport type { GenericRecord } from \"@webiny/api/types\";\n\nexport interface BatchReadItem {\n Table?: TableDef;\n Key: any;\n}\nexport interface BatchReadParams {\n table?: TableDef;\n items: BatchReadItem[];\n}\n\nconst MAX_BATCH_ITEMS = 100;\n\nconst flatten = (responses: Record<string, any[]>): any[] => {\n const entries = [];\n const values = Object.values(responses);\n for (const items of values) {\n entries.push(...items);\n }\n return entries;\n};\n\ninterface BatchReadAllChunkParams {\n table?: TableDef;\n items: BatchReadItem[];\n}\nconst batchReadAllChunk = async <T = any>(params: BatchReadAllChunkParams): Promise<T[]> => {\n const { table, items } = params;\n const records: T[] = [];\n\n if (!table) {\n return records;\n }\n\n const result = await table.batchGet(items);\n if (!result || !result.Responses) {\n return records;\n }\n records.push(...flatten(result.Responses));\n if (!result.next || typeof result.next !== \"function\") {\n return records;\n }\n let previous = result;\n while (typeof previous.next === \"function\") {\n const nextResult = await previous.next();\n if (!nextResult) {\n return records;\n }\n records.push(...flatten(nextResult.Responses));\n previous = nextResult;\n }\n return records;\n};\n/**\n * This helper function is meant to be used to batch read from one table.\n * It will fetch all results, as there is a next() method call built in.\n */\nexport const batchReadAll = async <T = GenericRecord>(\n params: BatchReadParams,\n maxChunk = MAX_BATCH_ITEMS\n): Promise<T[]> => {\n if (params.items.length === 0) {\n return [];\n } else if (maxChunk > MAX_BATCH_ITEMS) {\n throw new WebinyError(\n `Cannot set to load more than ${MAX_BATCH_ITEMS} items from the DynamoDB at once.`,\n \"DYNAMODB_MAX_BATCH_GET_LIMIT_ERROR\",\n {\n maxChunk\n }\n );\n }\n\n const records: T[] = [];\n\n const chunkItemsList = lodashChunk(params.items, maxChunk);\n\n for (const chunkItems of chunkItemsList) {\n const results = await batchReadAllChunk<T>({\n table: params.table,\n items: chunkItems\n });\n\n records.push(...results);\n }\n\n return records;\n};\n"],"mappings":";;;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,MAAA,GAAAF,sBAAA,CAAAC,OAAA;AAaA,MAAME,eAAe,GAAG,GAAG;AAE3B,MAAMC,OAAO,GAAIC,SAAgC,IAAY;EACzD,MAAMC,OAAO,GAAG,EAAE;EAClB,MAAMC,MAAM,GAAGC,MAAM,CAACD,MAAM,CAACF,SAAS,CAAC;EACvC,KAAK,MAAMI,KAAK,IAAIF,MAAM,EAAE;IACxBD,OAAO,CAACI,IAAI,CAAC,GAAGD,KAAK,CAAC;EAC1B;EACA,OAAOH,OAAO;AAClB,CAAC;AAMD,MAAMK,iBAAiB,GAAG,MAAgBC,MAA+B,IAAmB;EACxF,MAAM;IAAEC,KAAK;IAAEJ;EAAM,CAAC,GAAGG,MAAM;EAC/B,MAAME,OAAY,GAAG,EAAE;EAEvB,IAAI,CAACD,KAAK,EAAE;IACR,OAAOC,OAAO;EAClB;EAEA,MAAMC,MAAM,GAAG,MAAMF,KAAK,CAACG,QAAQ,CAACP,KAAK,CAAC;EAC1C,IAAI,CAACM,MAAM,IAAI,CAACA,MAAM,CAACE,SAAS,EAAE;IAC9B,OAAOH,OAAO;EAClB;EACAA,OAAO,CAACJ,IAAI,CAAC,GAAGN,OAAO,CAACW,MAAM,CAACE,SAAS,CAAC,CAAC;EAC1C,IAAI,CAACF,MAAM,CAACG,IAAI,IAAI,OAAOH,MAAM,CAACG,IAAI,KAAK,UAAU,EAAE;IACnD,OAAOJ,OAAO;EAClB;EACA,IAAIK,QAAQ,GAAGJ,MAAM;EACrB,OAAO,OAAOI,QAAQ,CAACD,IAAI,KAAK,UAAU,EAAE;IACxC,MAAME,UAAU,GAAG,MAAMD,QAAQ,CAACD,IAAI,CAAC,CAAC;IACxC,IAAI,CAACE,UAAU,EAAE;MACb,OAAON,OAAO;IAClB;IACAA,OAAO,CAACJ,IAAI,CAAC,GAAGN,OAAO,CAACgB,UAAU,CAACH,SAAS,CAAC,CAAC;IAC9CE,QAAQ,GAAGC,UAAU;EACzB;EACA,OAAON,OAAO;AAClB,CAAC;AACD;AACA;AACA;AACA;AACO,MAAMO,YAAY,GAAG,MAAAA,CACxBT,MAAuB,EACvBU,QAAQ,GAAGnB,eAAe,KACX;EACf,IAAIS,MAAM,CAACH,KAAK,CAACc,MAAM,KAAK,CAAC,EAAE;IAC3B,OAAO,EAAE;EACb,CAAC,MAAM,IAAID,QAAQ,GAAGnB,eAAe,EAAE;IACnC,MAAM,IAAIqB,cAAW,CACjB,gCAAgCrB,eAAe,mCAAmC,EAClF,oCAAoC,EACpC;MACImB;IACJ,CACJ,CAAC;EACL;EAEA,MAAMR,OAAY,GAAG,EAAE;EAEvB,MAAMW,cAAc,GAAG,IAAAC,cAAW,EAACd,MAAM,CAACH,KAAK,EAAEa,QAAQ,CAAC;EAE1D,KAAK,MAAMK,UAAU,IAAIF,cAAc,EAAE;IACrC,MAAMG,OAAO,GAAG,MAAMjB,iBAAiB,CAAI;MACvCE,KAAK,EAAED,MAAM,CAACC,KAAK;MACnBJ,KAAK,EAAEkB;IACX,CAAC,CAAC;IAEFb,OAAO,CAACJ,IAAI,CAAC,GAAGkB,OAAO,CAAC;EAC5B;EAEA,OAAOd,OAAO;AAClB,CAAC;AAACe,OAAA,CAAAR,YAAA,GAAAA,YAAA","ignoreList":[]}
@@ -0,0 +1,13 @@
1
+ import type { TableDef } from "../../toolbox";
2
+ import type { BatchWriteItem, BatchWriteResult } from "./types";
3
+ export interface BatchWriteParams {
4
+ table: TableDef | undefined;
5
+ items: BatchWriteItem[];
6
+ }
7
+ /**
8
+ * Method is meant for batch writing to a single table.
9
+ * It expects already prepared items for writing.
10
+ * It can either delete or put items
11
+ * The method does not check items before actually sending them into the underlying library.
12
+ */
13
+ export declare const batchWriteAll: (params: BatchWriteParams, maxChunk?: number) => Promise<BatchWriteResult>;
@@ -0,0 +1,65 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.batchWriteAll = void 0;
8
+ var _chunk = _interopRequireDefault(require("lodash/chunk"));
9
+ const hasUnprocessedItems = result => {
10
+ if (typeof result.next !== "function") {
11
+ return false;
12
+ }
13
+ const items = result.UnprocessedItems;
14
+ if (!items || typeof items !== "object") {
15
+ return false;
16
+ }
17
+ const keys = Object.keys(items);
18
+ return keys.some(key => {
19
+ const value = items[key];
20
+ if (!Array.isArray(value)) {
21
+ return false;
22
+ }
23
+ return value.some(val => {
24
+ return val.PutRequest || val.DeleteRequest;
25
+ });
26
+ });
27
+ };
28
+ const retry = async (input, results) => {
29
+ if (!hasUnprocessedItems(input)) {
30
+ return;
31
+ }
32
+ const result = await input.next();
33
+ await retry(result, results);
34
+ };
35
+ /**
36
+ * Method is meant for batch writing to a single table.
37
+ * It expects already prepared items for writing.
38
+ * It can either delete or put items
39
+ * The method does not check items before actually sending them into the underlying library.
40
+ */
41
+ const batchWriteAll = async (params, maxChunk = 25) => {
42
+ const {
43
+ items: collection,
44
+ table
45
+ } = params;
46
+ if (!table) {
47
+ console.log("No table provided.");
48
+ return [];
49
+ } else if (collection.length === 0) {
50
+ return [];
51
+ }
52
+ const chunkedItems = (0, _chunk.default)(collection, maxChunk);
53
+ const results = [];
54
+ for (const items of chunkedItems) {
55
+ const result = await table.batchWrite(items, {
56
+ execute: true
57
+ });
58
+ results.push(result);
59
+ await retry(result, results);
60
+ }
61
+ return results;
62
+ };
63
+ exports.batchWriteAll = batchWriteAll;
64
+
65
+ //# sourceMappingURL=batchWrite.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_chunk","_interopRequireDefault","require","hasUnprocessedItems","result","next","items","UnprocessedItems","keys","Object","some","key","value","Array","isArray","val","PutRequest","DeleteRequest","retry","input","results","batchWriteAll","params","maxChunk","collection","table","console","log","length","chunkedItems","lodashChunk","batchWrite","execute","push","exports"],"sources":["batchWrite.ts"],"sourcesContent":["import lodashChunk from \"lodash/chunk\";\nimport type { TableDef } from \"~/toolbox\";\nimport type { BatchWriteItem, BatchWriteResponse, BatchWriteResult } from \"./types\";\n\nexport interface BatchWriteParams {\n table: TableDef | undefined;\n items: BatchWriteItem[];\n}\n\nconst hasUnprocessedItems = (result: BatchWriteResponse): boolean => {\n if (typeof result.next !== \"function\") {\n return false;\n }\n const items = result.UnprocessedItems;\n if (!items || typeof items !== \"object\") {\n return false;\n }\n const keys = Object.keys(items);\n return keys.some(key => {\n const value = items[key];\n if (!Array.isArray(value)) {\n return false;\n }\n return value.some(val => {\n return val.PutRequest || val.DeleteRequest;\n });\n });\n};\n\nconst retry = async (input: BatchWriteResponse, results: BatchWriteResult): Promise<void> => {\n if (!hasUnprocessedItems(input)) {\n return;\n }\n const result = await input.next!();\n await retry(result, results);\n};\n/**\n * Method is meant for batch writing to a single table.\n * It expects already prepared items for writing.\n * It can either delete or put items\n * The method does not check items before actually sending them into the underlying library.\n */\nexport const batchWriteAll = async (\n params: BatchWriteParams,\n maxChunk = 25\n): Promise<BatchWriteResult> => {\n const { items: collection, table } = params;\n if (!table) {\n console.log(\"No table provided.\");\n return [];\n } else if (collection.length === 0) {\n return [];\n }\n\n const chunkedItems: BatchWriteItem[][] = lodashChunk(collection, maxChunk);\n const results: BatchWriteResult = [];\n for (const items of chunkedItems) {\n const result = (await table.batchWrite(items, {\n execute: true\n })) as BatchWriteResponse;\n results.push(result);\n await retry(result, results);\n }\n return results;\n};\n"],"mappings":";;;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AASA,MAAMC,mBAAmB,GAAIC,MAA0B,IAAc;EACjE,IAAI,OAAOA,MAAM,CAACC,IAAI,KAAK,UAAU,EAAE;IACnC,OAAO,KAAK;EAChB;EACA,MAAMC,KAAK,GAAGF,MAAM,CAACG,gBAAgB;EACrC,IAAI,CAACD,KAAK,IAAI,OAAOA,KAAK,KAAK,QAAQ,EAAE;IACrC,OAAO,KAAK;EAChB;EACA,MAAME,IAAI,GAAGC,MAAM,CAACD,IAAI,CAACF,KAAK,CAAC;EAC/B,OAAOE,IAAI,CAACE,IAAI,CAACC,GAAG,IAAI;IACpB,MAAMC,KAAK,GAAGN,KAAK,CAACK,GAAG,CAAC;IACxB,IAAI,CAACE,KAAK,CAACC,OAAO,CAACF,KAAK,CAAC,EAAE;MACvB,OAAO,KAAK;IAChB;IACA,OAAOA,KAAK,CAACF,IAAI,CAACK,GAAG,IAAI;MACrB,OAAOA,GAAG,CAACC,UAAU,IAAID,GAAG,CAACE,aAAa;IAC9C,CAAC,CAAC;EACN,CAAC,CAAC;AACN,CAAC;AAED,MAAMC,KAAK,GAAG,MAAAA,CAAOC,KAAyB,EAAEC,OAAyB,KAAoB;EACzF,IAAI,CAACjB,mBAAmB,CAACgB,KAAK,CAAC,EAAE;IAC7B;EACJ;EACA,MAAMf,MAAM,GAAG,MAAMe,KAAK,CAACd,IAAI,CAAE,CAAC;EAClC,MAAMa,KAAK,CAACd,MAAM,EAAEgB,OAAO,CAAC;AAChC,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACO,MAAMC,aAAa,GAAG,MAAAA,CACzBC,MAAwB,EACxBC,QAAQ,GAAG,EAAE,KACe;EAC5B,MAAM;IAAEjB,KAAK,EAAEkB,UAAU;IAAEC;EAAM,CAAC,GAAGH,MAAM;EAC3C,IAAI,CAACG,KAAK,EAAE;IACRC,OAAO,CAACC,GAAG,CAAC,oBAAoB,CAAC;IACjC,OAAO,EAAE;EACb,CAAC,MAAM,IAAIH,UAAU,CAACI,MAAM,KAAK,CAAC,EAAE;IAChC,OAAO,EAAE;EACb;EAEA,MAAMC,YAAgC,GAAG,IAAAC,cAAW,EAACN,UAAU,EAAED,QAAQ,CAAC;EAC1E,MAAMH,OAAyB,GAAG,EAAE;EACpC,KAAK,MAAMd,KAAK,IAAIuB,YAAY,EAAE;IAC9B,MAAMzB,MAAM,GAAI,MAAMqB,KAAK,CAACM,UAAU,CAACzB,KAAK,EAAE;MAC1C0B,OAAO,EAAE;IACb,CAAC,CAAwB;IACzBZ,OAAO,CAACa,IAAI,CAAC7B,MAAM,CAAC;IACpB,MAAMc,KAAK,CAACd,MAAM,EAAEgB,OAAO,CAAC;EAChC;EACA,OAAOA,OAAO;AAClB,CAAC;AAACc,OAAA,CAAAb,aAAA,GAAAA,aAAA","ignoreList":[]}
@@ -0,0 +1,3 @@
1
+ export * from "./batchRead";
2
+ export * from "./batchWrite";
3
+ export * from "./types";
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ var _batchRead = require("./batchRead");
7
+ Object.keys(_batchRead).forEach(function (key) {
8
+ if (key === "default" || key === "__esModule") return;
9
+ if (key in exports && exports[key] === _batchRead[key]) return;
10
+ Object.defineProperty(exports, key, {
11
+ enumerable: true,
12
+ get: function () {
13
+ return _batchRead[key];
14
+ }
15
+ });
16
+ });
17
+ var _batchWrite = require("./batchWrite");
18
+ Object.keys(_batchWrite).forEach(function (key) {
19
+ if (key === "default" || key === "__esModule") return;
20
+ if (key in exports && exports[key] === _batchWrite[key]) return;
21
+ Object.defineProperty(exports, key, {
22
+ enumerable: true,
23
+ get: function () {
24
+ return _batchWrite[key];
25
+ }
26
+ });
27
+ });
28
+ var _types = require("./types");
29
+ Object.keys(_types).forEach(function (key) {
30
+ if (key === "default" || key === "__esModule") return;
31
+ if (key in exports && exports[key] === _types[key]) return;
32
+ Object.defineProperty(exports, key, {
33
+ enumerable: true,
34
+ get: function () {
35
+ return _types[key];
36
+ }
37
+ });
38
+ });
39
+
40
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_batchRead","require","Object","keys","forEach","key","exports","defineProperty","enumerable","get","_batchWrite","_types"],"sources":["index.ts"],"sourcesContent":["export * from \"./batchRead\";\nexport * from \"./batchWrite\";\nexport * from \"./types\";\n"],"mappings":";;;;;AAAA,IAAAA,UAAA,GAAAC,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAH,UAAA,EAAAI,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAL,UAAA,CAAAK,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAT,UAAA,CAAAK,GAAA;IAAA;EAAA;AAAA;AACA,IAAAK,WAAA,GAAAT,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAO,WAAA,EAAAN,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAK,WAAA,CAAAL,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAC,WAAA,CAAAL,GAAA;IAAA;EAAA;AAAA;AACA,IAAAM,MAAA,GAAAV,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAQ,MAAA,EAAAP,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAM,MAAA,CAAAN,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAE,MAAA,CAAAN,GAAA;IAAA;EAAA;AAAA","ignoreList":[]}
@@ -0,0 +1,25 @@
1
+ import type { WriteRequest } from "@webiny/aws-sdk/client-dynamodb";
2
+ export interface BatchWriteResponse {
3
+ next?: () => Promise<BatchWriteResponse>;
4
+ $metadata: {
5
+ httpStatusCode: number;
6
+ requestId: string;
7
+ attempts: number;
8
+ totalRetryDelay: number;
9
+ };
10
+ UnprocessedItems?: {
11
+ [table: string]: WriteRequest[];
12
+ };
13
+ }
14
+ export type BatchWriteResult = BatchWriteResponse[];
15
+ export interface IDeleteBatchItem {
16
+ PK: string;
17
+ SK: string;
18
+ }
19
+ export type IPutBatchItem<T extends Record<string, any> = Record<string, any>> = {
20
+ PK: string;
21
+ SK: string;
22
+ } & T;
23
+ export interface BatchWriteItem {
24
+ [key: string]: WriteRequest;
25
+ }
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+
7
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["import type { WriteRequest } from \"@webiny/aws-sdk/client-dynamodb\";\n\nexport interface BatchWriteResponse {\n next?: () => Promise<BatchWriteResponse>;\n $metadata: {\n httpStatusCode: number;\n requestId: string;\n attempts: number;\n totalRetryDelay: number;\n };\n UnprocessedItems?: {\n [table: string]: WriteRequest[];\n };\n}\n\nexport type BatchWriteResult = BatchWriteResponse[];\n\nexport interface IDeleteBatchItem {\n PK: string;\n SK: string;\n}\n\nexport type IPutBatchItem<T extends Record<string, any> = Record<string, any>> = {\n PK: string;\n SK: string;\n} & T;\n\nexport interface BatchWriteItem {\n [key: string]: WriteRequest;\n}\n"],"mappings":"","ignoreList":[]}
@@ -1,3 +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[];
1
+ import type { Entity } from "../toolbox";
2
+ export declare function cleanupItem<T>(entity: Entity<any>, item?: T | null, removeAttributes?: string[]): T | null;
3
+ export declare function cleanupItems<T>(entity: Entity<any>, items: T[], removeAttributes?: string[]): T[];
package/utils/cleanup.js CHANGED
@@ -1,53 +1,37 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
3
  Object.defineProperty(exports, "__esModule", {
6
4
  value: true
7
5
  });
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
-
6
+ exports.cleanupItem = cleanupItem;
7
+ exports.cleanupItems = cleanupItems;
16
8
  /**
17
9
  * The attributes defined by us or the dynamodb-toolbox library.
18
10
  * Add more attributes if necessary.
19
11
  */
20
- const attributesToRemove = ["PK", "SK", "created", "_ct", "modified", "_mt", "entity", "_et", "GSI1_PK", "GSI1_SK", "TYPE"];
21
-
22
- const cleanupItem = (entity, item, removeAttributes = []) => {
12
+ const attributesToRemove = ["PK", "SK", "created", "_ct", "modified", "_mt", "entity", "_et", "GSI1_PK", "GSI1_SK", "GSI2_PK", "GSI2_SK", "GSI3_PK", "GSI3_SK", "GSI4_PK", "GSI4_SK", "GSI5_PK", "GSI5_SK", "TYPE"];
13
+ function cleanupItem(entity, item, removeAttributes = []) {
23
14
  if (!item) {
24
15
  return null;
25
16
  }
26
-
27
- const newItem = _objectSpread({}, item);
28
-
17
+ const newItem = {
18
+ ...item
19
+ };
29
20
  const targets = attributesToRemove.concat(removeAttributes);
30
21
  const attributes = entity.schema.attributes;
31
-
32
22
  for (const key in item) {
33
23
  if (item.hasOwnProperty(key) === false) {
34
24
  continue;
35
25
  }
36
-
37
26
  if (attributes[key] && targets.includes(key) === false) {
38
27
  continue;
39
28
  }
40
-
41
29
  delete newItem[key];
42
30
  }
43
-
44
31
  return newItem;
45
- };
46
-
47
- exports.cleanupItem = cleanupItem;
48
-
49
- const cleanupItems = (entity, items, removeAttributes = []) => {
32
+ }
33
+ function cleanupItems(entity, items, removeAttributes = []) {
50
34
  return items.map(item => cleanupItem(entity, item, removeAttributes));
51
- };
35
+ }
52
36
 
53
- exports.cleanupItems = cleanupItems;
37
+ //# sourceMappingURL=cleanup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["attributesToRemove","cleanupItem","entity","item","removeAttributes","newItem","targets","concat","attributes","schema","key","hasOwnProperty","includes","cleanupItems","items","map"],"sources":["cleanup.ts"],"sourcesContent":["import type { Entity } from \"~/toolbox\";\n\n/**\n * The attributes defined by us or the dynamodb-toolbox library.\n * Add more attributes if necessary.\n */\nconst attributesToRemove = [\n \"PK\",\n \"SK\",\n \"created\",\n \"_ct\",\n \"modified\",\n \"_mt\",\n \"entity\",\n \"_et\",\n \"GSI1_PK\",\n \"GSI1_SK\",\n \"GSI2_PK\",\n \"GSI2_SK\",\n \"GSI3_PK\",\n \"GSI3_SK\",\n \"GSI4_PK\",\n \"GSI4_SK\",\n \"GSI5_PK\",\n \"GSI5_SK\",\n \"TYPE\"\n];\n\nexport function cleanupItem<T>(\n entity: Entity<any>,\n item?: T | null,\n removeAttributes: string[] = []\n): T | null {\n if (!item) {\n return null;\n }\n const newItem = {\n ...item\n };\n const targets = attributesToRemove.concat(removeAttributes);\n const attributes = entity.schema.attributes;\n for (const key in item) {\n if (item.hasOwnProperty(key) === false) {\n continue;\n }\n if (attributes[key] && targets.includes(key) === false) {\n continue;\n }\n delete newItem[key];\n }\n return newItem;\n}\n\nexport function cleanupItems<T>(\n entity: Entity<any>,\n items: T[],\n removeAttributes: string[] = []\n): T[] {\n return items.map(item => cleanupItem<T>(entity, item, removeAttributes) as T);\n}\n"],"mappings":";;;;;;;AAEA;AACA;AACA;AACA;AACA,MAAMA,kBAAkB,GAAG,CACvB,IAAI,EACJ,IAAI,EACJ,SAAS,EACT,KAAK,EACL,UAAU,EACV,KAAK,EACL,QAAQ,EACR,KAAK,EACL,SAAS,EACT,SAAS,EACT,SAAS,EACT,SAAS,EACT,SAAS,EACT,SAAS,EACT,SAAS,EACT,SAAS,EACT,SAAS,EACT,SAAS,EACT,MAAM,CACT;AAEM,SAASC,WAAWA,CACvBC,MAAmB,EACnBC,IAAe,EACfC,gBAA0B,GAAG,EAAE,EACvB;EACR,IAAI,CAACD,IAAI,EAAE;IACP,OAAO,IAAI;EACf;EACA,MAAME,OAAO,GAAG;IACZ,GAAGF;EACP,CAAC;EACD,MAAMG,OAAO,GAAGN,kBAAkB,CAACO,MAAM,CAACH,gBAAgB,CAAC;EAC3D,MAAMI,UAAU,GAAGN,MAAM,CAACO,MAAM,CAACD,UAAU;EAC3C,KAAK,MAAME,GAAG,IAAIP,IAAI,EAAE;IACpB,IAAIA,IAAI,CAACQ,cAAc,CAACD,GAAG,CAAC,KAAK,KAAK,EAAE;MACpC;IACJ;IACA,IAAIF,UAAU,CAACE,GAAG,CAAC,IAAIJ,OAAO,CAACM,QAAQ,CAACF,GAAG,CAAC,KAAK,KAAK,EAAE;MACpD;IACJ;IACA,OAAOL,OAAO,CAACK,GAAG,CAAC;EACvB;EACA,OAAOL,OAAO;AAClB;AAEO,SAASQ,YAAYA,CACxBX,MAAmB,EACnBY,KAAU,EACVV,gBAA0B,GAAG,EAAE,EAC5B;EACH,OAAOU,KAAK,CAACC,GAAG,CAACZ,IAAI,IAAIF,WAAW,CAAIC,MAAM,EAAEC,IAAI,EAAEC,gBAAgB,CAAM,CAAC;AACjF","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ import type { QueryAllParams } from "./query";
2
+ export declare const count: (params: QueryAllParams) => Promise<number>;
package/utils/count.js ADDED
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.count = void 0;
7
+ const count = async params => {
8
+ const {
9
+ entity,
10
+ partitionKey,
11
+ options = {}
12
+ } = params;
13
+ const {
14
+ Count
15
+ } = await entity.query(partitionKey, {
16
+ ...options,
17
+ select: "count"
18
+ });
19
+ return Count || 0;
20
+ };
21
+ exports.count = count;
22
+
23
+ //# sourceMappingURL=count.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["count","params","entity","partitionKey","options","Count","query","select","exports"],"sources":["count.ts"],"sourcesContent":["import type { QueryAllParams } from \"~/utils/query\";\n\nexport const count = async (params: QueryAllParams): Promise<number> => {\n const { entity, partitionKey, options = {} } = params;\n const { Count } = await entity.query(partitionKey, { ...options, select: \"count\" });\n return Count || 0;\n};\n"],"mappings":";;;;;;AAEO,MAAMA,KAAK,GAAG,MAAOC,MAAsB,IAAsB;EACpE,MAAM;IAAEC,MAAM;IAAEC,YAAY;IAAEC,OAAO,GAAG,CAAC;EAAE,CAAC,GAAGH,MAAM;EACrD,MAAM;IAAEI;EAAM,CAAC,GAAG,MAAMH,MAAM,CAACI,KAAK,CAACH,YAAY,EAAE;IAAE,GAAGC,OAAO;IAAEG,MAAM,EAAE;EAAQ,CAAC,CAAC;EACnF,OAAOF,KAAK,IAAI,CAAC;AACrB,CAAC;AAACG,OAAA,CAAAR,KAAA,GAAAA,KAAA","ignoreList":[]}
@@ -0,0 +1,54 @@
1
+ import type { AttributeDefinitions, Table } from "../toolbox";
2
+ import { Entity } from "../toolbox";
3
+ interface CreateStandardEntityParams {
4
+ table: Table<string, string, string>;
5
+ name: string;
6
+ }
7
+ export declare const createStandardEntity: (params: CreateStandardEntityParams) => Entity<any>;
8
+ interface CreateLegacyEntityParams {
9
+ table: Table<string, string, string>;
10
+ name: string;
11
+ attributes?: AttributeDefinitions;
12
+ }
13
+ export declare const createLegacyEntity: (params: CreateLegacyEntityParams) => Entity<string, import("dynamodb-toolbox/dist/cjs/classes/Entity").Overlay, import("dynamodb-toolbox/dist/cjs/classes/Entity").Overlay, Table<string, string, string>, boolean, boolean, boolean, string, string, string, boolean, {
14
+ PK: {
15
+ partitionKey: true;
16
+ };
17
+ SK: {
18
+ sortKey: true;
19
+ };
20
+ GSI1_PK: {
21
+ type: "string";
22
+ };
23
+ GSI1_SK: {
24
+ type: "string";
25
+ };
26
+ TYPE: {
27
+ type: "string";
28
+ };
29
+ }, {
30
+ PK: {
31
+ partitionKey: true;
32
+ };
33
+ SK: {
34
+ sortKey: true;
35
+ };
36
+ GSI1_PK: {
37
+ type: "string";
38
+ };
39
+ GSI1_SK: {
40
+ type: "string";
41
+ };
42
+ TYPE: {
43
+ type: "string";
44
+ };
45
+ }, import("dynamodb-toolbox/dist/cjs/classes/Entity").ParsedAttributes<import("ts-toolbelt/out/Any/Key").Key>, any, {
46
+ [x: string]: any;
47
+ [x: number]: any;
48
+ [x: symbol]: any;
49
+ }, {
50
+ [x: string]: any;
51
+ [x: number]: any;
52
+ [x: symbol]: any;
53
+ }>;
54
+ export {};