@webiny/db-dynamodb 0.0.0-unstable.de38392959 → 0.0.0-unstable.e0bfc55d5a

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 (168) hide show
  1. package/DynamoDbDriver.d.ts +20 -14
  2. package/DynamoDbDriver.js +239 -17
  3. package/DynamoDbDriver.js.map +1 -1
  4. package/README.md +81 -1
  5. package/index.d.ts +1 -1
  6. package/index.js +1 -9
  7. package/index.js.map +1 -1
  8. package/package.json +15 -20
  9. package/plugins/definitions/AttributePlugin.d.ts +1 -1
  10. package/plugins/definitions/AttributePlugin.js.map +1 -1
  11. package/plugins/definitions/DateTimeTransformPlugin.d.ts +2 -1
  12. package/plugins/definitions/DateTimeTransformPlugin.js.map +1 -1
  13. package/plugins/definitions/FieldPathPlugin.js.map +1 -1
  14. package/plugins/definitions/FieldPlugin.d.ts +2 -2
  15. package/plugins/definitions/FieldPlugin.js.map +1 -1
  16. package/plugins/definitions/TimeTransformPlugin.d.ts +2 -1
  17. package/plugins/definitions/TimeTransformPlugin.js +7 -6
  18. package/plugins/definitions/TimeTransformPlugin.js.map +1 -1
  19. package/plugins/definitions/ValueFilterPlugin.d.ts +2 -2
  20. package/plugins/definitions/ValueFilterPlugin.js.map +1 -1
  21. package/plugins/definitions/ValueTransformPlugin.js.map +1 -1
  22. package/plugins/definitions/assignFields.js.map +1 -1
  23. package/plugins/filters/andIn.d.ts +1 -1
  24. package/plugins/filters/andIn.js +1 -2
  25. package/plugins/filters/andIn.js.map +1 -1
  26. package/plugins/filters/between.d.ts +1 -1
  27. package/plugins/filters/between.js +1 -2
  28. package/plugins/filters/between.js.map +1 -1
  29. package/plugins/filters/contains.d.ts +1 -1
  30. package/plugins/filters/contains.js +22 -4
  31. package/plugins/filters/contains.js.map +1 -1
  32. package/plugins/filters/eq.d.ts +1 -1
  33. package/plugins/filters/eq.js +3 -4
  34. package/plugins/filters/eq.js.map +1 -1
  35. package/plugins/filters/fuzzy.d.ts +1 -1
  36. package/plugins/filters/fuzzy.js +1 -2
  37. package/plugins/filters/fuzzy.js.map +1 -1
  38. package/plugins/filters/gt.d.ts +1 -1
  39. package/plugins/filters/gt.js +1 -2
  40. package/plugins/filters/gt.js.map +1 -1
  41. package/plugins/filters/gte.d.ts +1 -1
  42. package/plugins/filters/gte.js +1 -2
  43. package/plugins/filters/gte.js.map +1 -1
  44. package/plugins/filters/in.d.ts +1 -1
  45. package/plugins/filters/in.js +1 -2
  46. package/plugins/filters/in.js.map +1 -1
  47. package/plugins/filters/index.d.ts +1 -1
  48. package/plugins/filters/index.js.map +1 -1
  49. package/plugins/filters/lt.d.ts +1 -1
  50. package/plugins/filters/lt.js +1 -2
  51. package/plugins/filters/lt.js.map +1 -1
  52. package/plugins/filters/lte.d.ts +1 -1
  53. package/plugins/filters/lte.js +1 -2
  54. package/plugins/filters/lte.js.map +1 -1
  55. package/plugins/filters/startsWith.d.ts +1 -1
  56. package/plugins/filters/startsWith.js +1 -2
  57. package/plugins/filters/startsWith.js.map +1 -1
  58. package/plugins/index.d.ts +1 -1
  59. package/plugins/index.js.map +1 -1
  60. package/store/entity.d.ts +78 -0
  61. package/store/entity.js +41 -0
  62. package/store/entity.js.map +1 -0
  63. package/store/keys.d.ts +6 -0
  64. package/store/keys.js +22 -0
  65. package/store/keys.js.map +1 -0
  66. package/store/types.d.ts +7 -0
  67. package/store/types.js +7 -0
  68. package/store/types.js.map +1 -0
  69. package/toolbox.d.ts +1 -1
  70. package/toolbox.js.map +1 -1
  71. package/types.d.ts +3 -24
  72. package/types.js.map +1 -1
  73. package/utils/attributes.d.ts +2 -2
  74. package/utils/attributes.js.map +1 -1
  75. package/utils/{batchRead.d.ts → batch/batchRead.d.ts} +3 -2
  76. package/utils/batch/batchRead.js.map +1 -0
  77. package/utils/batch/batchWrite.d.ts +13 -0
  78. package/utils/batch/batchWrite.js.map +1 -0
  79. package/utils/batch/index.d.ts +3 -0
  80. package/utils/batch/index.js +40 -0
  81. package/utils/batch/index.js.map +1 -0
  82. package/utils/batch/types.d.ts +25 -0
  83. package/utils/batch/types.js +7 -0
  84. package/utils/batch/types.js.map +1 -0
  85. package/utils/cleanup.d.ts +3 -3
  86. package/utils/cleanup.js +1 -1
  87. package/utils/cleanup.js.map +1 -1
  88. package/utils/count.d.ts +1 -1
  89. package/utils/count.js.map +1 -1
  90. package/utils/createEntity.d.ts +2 -1
  91. package/utils/createEntity.js.map +1 -1
  92. package/utils/createTable.d.ts +5 -4
  93. package/utils/createTable.js.map +1 -1
  94. package/utils/cursor.js.map +1 -1
  95. package/utils/delete.d.ts +8 -8
  96. package/utils/delete.js.map +1 -1
  97. package/utils/entity/Entity.d.ts +26 -0
  98. package/utils/entity/Entity.js +77 -0
  99. package/utils/entity/Entity.js.map +1 -0
  100. package/utils/entity/EntityReadBatch.d.ts +17 -0
  101. package/utils/entity/EntityReadBatch.js +41 -0
  102. package/utils/entity/EntityReadBatch.js.map +1 -0
  103. package/utils/entity/EntityReadBatchBuilder.d.ts +10 -0
  104. package/utils/entity/EntityReadBatchBuilder.js +29 -0
  105. package/utils/entity/EntityReadBatchBuilder.js.map +1 -0
  106. package/utils/entity/EntityWriteBatch.d.ts +22 -0
  107. package/utils/entity/EntityWriteBatch.js +59 -0
  108. package/utils/entity/EntityWriteBatch.js.map +1 -0
  109. package/utils/entity/EntityWriteBatchBuilder.d.ts +11 -0
  110. package/utils/entity/EntityWriteBatchBuilder.js +28 -0
  111. package/utils/entity/EntityWriteBatchBuilder.js.map +1 -0
  112. package/utils/entity/getEntity.d.ts +4 -0
  113. package/utils/entity/getEntity.js +19 -0
  114. package/utils/entity/getEntity.js.map +1 -0
  115. package/utils/entity/index.d.ts +7 -0
  116. package/utils/entity/index.js +84 -0
  117. package/utils/entity/index.js.map +1 -0
  118. package/utils/entity/types.d.ts +51 -0
  119. package/utils/entity/types.js +7 -0
  120. package/utils/entity/types.js.map +1 -0
  121. package/utils/filter.d.ts +2 -2
  122. package/utils/filter.js.map +1 -1
  123. package/utils/get.d.ts +6 -5
  124. package/utils/get.js.map +1 -1
  125. package/utils/index.d.ts +3 -3
  126. package/utils/index.js +30 -30
  127. package/utils/index.js.map +1 -1
  128. package/utils/listResponse.js.map +1 -1
  129. package/utils/put.d.ts +10 -9
  130. package/utils/put.js +2 -1
  131. package/utils/put.js.map +1 -1
  132. package/utils/query.d.ts +9 -3
  133. package/utils/query.js +24 -2
  134. package/utils/query.js.map +1 -1
  135. package/utils/scan.d.ts +12 -7
  136. package/utils/scan.js +37 -5
  137. package/utils/scan.js.map +1 -1
  138. package/utils/sort.d.ts +1 -1
  139. package/utils/sort.js.map +1 -1
  140. package/utils/table/Table.d.ts +11 -0
  141. package/utils/table/Table.js +38 -0
  142. package/utils/table/Table.js.map +1 -0
  143. package/utils/table/TableReadBatch.d.ts +19 -0
  144. package/utils/table/TableReadBatch.js +62 -0
  145. package/utils/table/TableReadBatch.js.map +1 -0
  146. package/utils/table/TableWriteBatch.d.ts +21 -0
  147. package/utils/table/TableWriteBatch.js +69 -0
  148. package/utils/table/TableWriteBatch.js.map +1 -0
  149. package/utils/table/index.d.ts +4 -0
  150. package/utils/table/index.js +51 -0
  151. package/utils/table/index.js.map +1 -0
  152. package/utils/table/types.d.ts +39 -0
  153. package/utils/table/types.js +7 -0
  154. package/utils/table/types.js.map +1 -0
  155. package/utils/update.d.ts +2 -1
  156. package/utils/update.js +2 -1
  157. package/utils/update.js.map +1 -1
  158. package/plugins/definitions/NumberTransformPlugin.d.ts +0 -4
  159. package/plugins/definitions/NumberTransformPlugin.js +0 -36
  160. package/plugins/definitions/NumberTransformPlugin.js.map +0 -1
  161. package/utils/batchRead.js.map +0 -1
  162. package/utils/batchWrite.d.ts +0 -29
  163. package/utils/batchWrite.js.map +0 -1
  164. package/utils/table.d.ts +0 -7
  165. package/utils/table.js +0 -24
  166. package/utils/table.js.map +0 -1
  167. /package/utils/{batchRead.js → batch/batchRead.js} +0 -0
  168. /package/utils/{batchWrite.js → batch/batchWrite.js} +0 -0
@@ -1,19 +1,25 @@
1
- import { DynamoDBClient } from "@webiny/aws-sdk/client-dynamodb";
2
- import { DbDriver, Result } from "@webiny/db";
1
+ import type { DynamoDBDocument } from "@webiny/aws-sdk/client-dynamodb";
2
+ import type { DbDriver, GetValueResult, GetValuesResult, IListValuesParams, ListValuesResult, RemoveValueResult, RemoveValuesResult, StorageKey, StoreValueResult, StoreValuesResult } from "@webiny/db";
3
+ import type { Entity } from "dynamodb-toolbox";
4
+ import type { Table } from "./utils/createTable";
5
+ import type { GenericRecord } from "@webiny/api/types";
3
6
  interface ConstructorArgs {
4
- documentClient: DynamoDBClient;
7
+ documentClient: DynamoDBDocument;
5
8
  }
6
- declare class DynamoDbDriver implements DbDriver {
7
- batchProcesses: Record<string, any>;
8
- documentClient: DynamoDBClient;
9
+ declare class DynamoDbDriver implements DbDriver<DynamoDBDocument> {
10
+ readonly documentClient: DynamoDBDocument;
11
+ private _table;
12
+ private _entity;
13
+ table(): Table;
14
+ entity(): Entity;
9
15
  constructor({ documentClient }: ConstructorArgs);
10
- getClient(): DynamoDBClient;
11
- create(): Promise<Result>;
12
- update(): Promise<Result>;
13
- delete(): Promise<Result>;
14
- read<T>(): Promise<Result<T[]>>;
15
- createLog(): Promise<Result>;
16
- readLogs<T>(): Promise<Result<T[]>>;
17
- getBatchProcess(): void;
16
+ getClient(): DynamoDBDocument;
17
+ storeValue<V>(key: string, input: V): Promise<StoreValueResult<V>>;
18
+ storeValues<V extends GenericRecord<StorageKey>>(values: V): Promise<StoreValuesResult<V>>;
19
+ getValue<V>(key: StorageKey): Promise<GetValueResult<V>>;
20
+ getValues<V extends GenericRecord<StorageKey>>(input: (keyof V)[]): Promise<GetValuesResult<V>>;
21
+ listValues<V extends GenericRecord<StorageKey>>(params?: IListValuesParams): Promise<ListValuesResult<V>>;
22
+ removeValue<V>(key: StorageKey): Promise<RemoveValueResult<V>>;
23
+ removeValues<V extends GenericRecord<StorageKey>>(input: (keyof V)[]): Promise<RemoveValuesResult<V>>;
18
24
  }
19
25
  export default DynamoDbDriver;
package/DynamoDbDriver.js CHANGED
@@ -4,39 +4,261 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
+ var _createTable = require("./utils/createTable");
8
+ var _entity = require("./store/entity");
9
+ var _utils = require("./utils");
10
+ var _keys = require("./store/keys");
7
11
  class DynamoDbDriver {
12
+ _table = undefined;
13
+ _entity = undefined;
14
+ table() {
15
+ if (this._table) {
16
+ return this._table;
17
+ }
18
+ this._table = (0, _createTable.createTable)({
19
+ documentClient: this.documentClient
20
+ });
21
+ return this._table;
22
+ }
23
+ entity() {
24
+ if (this._entity) {
25
+ return this._entity;
26
+ }
27
+ this._entity = (0, _entity.createEntity)({
28
+ table: this.table()
29
+ });
30
+ return this._entity;
31
+ }
8
32
  constructor({
9
33
  documentClient
10
34
  }) {
11
- this.batchProcesses = {};
12
35
  this.documentClient = documentClient;
13
36
  }
14
37
  getClient() {
15
38
  return this.documentClient;
16
39
  }
17
- async create() {
18
- return [true, {}];
40
+ async storeValue(key, input) {
41
+ let value;
42
+ try {
43
+ value = JSON.stringify(input);
44
+ } catch (ex) {
45
+ return {
46
+ key,
47
+ error: ex
48
+ };
49
+ }
50
+ try {
51
+ await (0, _utils.put)({
52
+ entity: this.entity(),
53
+ item: {
54
+ PK: (0, _keys.createPartitionKey)(),
55
+ SK: (0, _keys.createSortKey)({
56
+ key
57
+ }),
58
+ TYPE: (0, _keys.createType)(),
59
+ key,
60
+ value
61
+ }
62
+ });
63
+ return {
64
+ key,
65
+ data: input
66
+ };
67
+ } catch (ex) {
68
+ return {
69
+ key,
70
+ error: ex
71
+ };
72
+ }
19
73
  }
20
- async update() {
21
- return [true, {}];
74
+ async storeValues(values) {
75
+ const keys = Object.keys(values);
76
+ try {
77
+ const batch = keys.map(key => {
78
+ const input = values[key];
79
+ let value;
80
+ try {
81
+ value = JSON.stringify(input);
82
+ } catch (ex) {
83
+ throw ex;
84
+ }
85
+ const item = {
86
+ PK: (0, _keys.createPartitionKey)(),
87
+ SK: (0, _keys.createSortKey)({
88
+ key
89
+ }),
90
+ TYPE: (0, _keys.createType)(),
91
+ key,
92
+ value
93
+ };
94
+ return this.entity().putBatch(item);
95
+ });
96
+ await (0, _utils.batchWriteAll)({
97
+ table: this.table(),
98
+ items: batch
99
+ });
100
+ return {
101
+ keys,
102
+ data: values
103
+ };
104
+ } catch (ex) {
105
+ return {
106
+ keys,
107
+ error: ex
108
+ };
109
+ }
22
110
  }
23
- async delete() {
24
- return [true, {}];
111
+ async getValue(key) {
112
+ try {
113
+ const result = await (0, _utils.get)({
114
+ entity: this.entity(),
115
+ keys: {
116
+ PK: (0, _keys.createPartitionKey)(),
117
+ SK: (0, _keys.createSortKey)({
118
+ key
119
+ })
120
+ }
121
+ });
122
+ return {
123
+ key,
124
+ data: result ? JSON.parse(result.value) : null
125
+ };
126
+ } catch (ex) {
127
+ return {
128
+ key,
129
+ error: ex
130
+ };
131
+ }
25
132
  }
26
- async read() {
27
- return [[], {}];
133
+ async getValues(input) {
134
+ const keys = [...input];
135
+ const batch = keys.map(key => {
136
+ return this.entity().getBatch({
137
+ PK: (0, _keys.createPartitionKey)(),
138
+ SK: (0, _keys.createSortKey)({
139
+ key
140
+ })
141
+ });
142
+ });
143
+ try {
144
+ const results = await (0, _utils.batchReadAll)({
145
+ table: this.table(),
146
+ items: batch
147
+ });
148
+ const data = keys.reduce((collection, key) => {
149
+ const result = results.find(item => {
150
+ return item.PK === (0, _keys.createPartitionKey)() && item.SK === (0, _keys.createSortKey)({
151
+ key
152
+ });
153
+ });
154
+ if (!result?.value) {
155
+ // @ts-expect-error
156
+ collection[key] = null;
157
+ return collection;
158
+ }
159
+ try {
160
+ // @ts-expect-error
161
+ collection[key] = JSON.parse(result.value);
162
+ } catch {
163
+ // @ts-expect-error
164
+ collection[key] = null;
165
+ }
166
+ return collection;
167
+ }, {});
168
+ return {
169
+ keys,
170
+ data
171
+ };
172
+ } catch (ex) {
173
+ return {
174
+ keys,
175
+ error: ex
176
+ };
177
+ }
28
178
  }
29
- async createLog() {
30
- return [true, {}];
179
+ async listValues(params) {
180
+ try {
181
+ const partitionKey = (0, _keys.createPartitionKey)();
182
+ const options = {
183
+ ...params
184
+ };
185
+ const results = await (0, _utils.queryAll)({
186
+ entity: this.entity(),
187
+ partitionKey,
188
+ options
189
+ });
190
+ const data = results.reduce((collection, item) => {
191
+ try {
192
+ // @ts-expect-error
193
+ collection[item.key] = JSON.parse(item.value);
194
+ } catch (ex) {
195
+ // @ts-expect-error
196
+ collection[item.key] = null;
197
+ }
198
+ return collection;
199
+ }, {});
200
+ return {
201
+ keys: Object.keys(data),
202
+ data
203
+ };
204
+ } catch (ex) {
205
+ return {
206
+ error: ex
207
+ };
208
+ }
31
209
  }
32
- async readLogs() {
33
- return this.read();
210
+ async removeValue(key) {
211
+ const result = await this.getValue(key);
212
+ if (result.error) {
213
+ return {
214
+ key,
215
+ error: result.error
216
+ };
217
+ }
218
+ try {
219
+ await this.entity().delete({
220
+ PK: (0, _keys.createPartitionKey)(),
221
+ SK: (0, _keys.createSortKey)({
222
+ key
223
+ })
224
+ });
225
+ return {
226
+ key,
227
+ data: result.data
228
+ };
229
+ } catch (ex) {
230
+ return {
231
+ key,
232
+ error: ex
233
+ };
234
+ }
34
235
  }
35
- getBatchProcess() {
36
- // not empty
236
+ async removeValues(input) {
237
+ const keys = [...input];
238
+ const batch = keys.map(key => {
239
+ return this.entity().deleteBatch({
240
+ PK: (0, _keys.createPartitionKey)(),
241
+ SK: (0, _keys.createSortKey)({
242
+ key
243
+ })
244
+ });
245
+ });
246
+ try {
247
+ await (0, _utils.batchWriteAll)({
248
+ table: this.table(),
249
+ items: batch
250
+ });
251
+ return {
252
+ keys
253
+ };
254
+ } catch (ex) {
255
+ return {
256
+ keys,
257
+ error: ex
258
+ };
259
+ }
37
260
  }
38
261
  }
39
- var _default = DynamoDbDriver;
40
- exports.default = _default;
262
+ var _default = exports.default = DynamoDbDriver;
41
263
 
42
264
  //# sourceMappingURL=DynamoDbDriver.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["DynamoDbDriver","constructor","documentClient","batchProcesses","getClient","create","update","delete","read","createLog","readLogs","getBatchProcess","_default","exports","default"],"sources":["DynamoDbDriver.ts"],"sourcesContent":["import { DynamoDBClient } from \"@webiny/aws-sdk/client-dynamodb\";\nimport { DbDriver, Result } from \"@webiny/db\";\n\ninterface ConstructorArgs {\n documentClient: DynamoDBClient;\n}\n\nclass DynamoDbDriver implements DbDriver {\n batchProcesses: Record<string, any>;\n documentClient: DynamoDBClient;\n constructor({ documentClient }: ConstructorArgs) {\n this.batchProcesses = {};\n this.documentClient = documentClient;\n }\n\n getClient() {\n return this.documentClient;\n }\n async create(): Promise<Result> {\n return [true, {}];\n }\n\n async update(): Promise<Result> {\n return [true, {}];\n }\n\n async delete(): Promise<Result> {\n return [true, {}];\n }\n\n async read<T>(): Promise<Result<T[]>> {\n return [[], {}];\n }\n\n async createLog(): Promise<Result> {\n return [true, {}];\n }\n\n async readLogs<T>() {\n return this.read<T>();\n }\n\n getBatchProcess() {\n // not empty\n }\n}\n\nexport default DynamoDbDriver;\n"],"mappings":";;;;;;AAOA,MAAMA,cAAc,CAAqB;EAGrCC,WAAWA,CAAC;IAAEC;EAAgC,CAAC,EAAE;IAC7C,IAAI,CAACC,cAAc,GAAG,CAAC,CAAC;IACxB,IAAI,CAACD,cAAc,GAAGA,cAAc;EACxC;EAEAE,SAASA,CAAA,EAAG;IACR,OAAO,IAAI,CAACF,cAAc;EAC9B;EACA,MAAMG,MAAMA,CAAA,EAAoB;IAC5B,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;EACrB;EAEA,MAAMC,MAAMA,CAAA,EAAoB;IAC5B,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;EACrB;EAEA,MAAMC,MAAMA,CAAA,EAAoB;IAC5B,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;EACrB;EAEA,MAAMC,IAAIA,CAAA,EAA4B;IAClC,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;EACnB;EAEA,MAAMC,SAASA,CAAA,EAAoB;IAC/B,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;EACrB;EAEA,MAAMC,QAAQA,CAAA,EAAM;IAChB,OAAO,IAAI,CAACF,IAAI,CAAI,CAAC;EACzB;EAEAG,eAAeA,CAAA,EAAG;IACd;EAAA;AAER;AAAC,IAAAC,QAAA,GAEcZ,cAAc;AAAAa,OAAA,CAAAC,OAAA,GAAAF,QAAA"}
1
+ {"version":3,"names":["_createTable","require","_entity","_utils","_keys","DynamoDbDriver","_table","undefined","table","createTable","documentClient","entity","createEntity","constructor","getClient","storeValue","key","input","value","JSON","stringify","ex","error","put","item","PK","createPartitionKey","SK","createSortKey","TYPE","createType","data","storeValues","values","keys","Object","batch","map","putBatch","batchWriteAll","items","getValue","result","get","parse","getValues","getBatch","results","batchReadAll","reduce","collection","find","listValues","params","partitionKey","options","queryAll","removeValue","delete","removeValues","deleteBatch","_default","exports","default"],"sources":["DynamoDbDriver.ts"],"sourcesContent":["import type { DynamoDBDocument } from \"@webiny/aws-sdk/client-dynamodb\";\nimport type {\n DbDriver,\n GetValueResult,\n GetValuesResult,\n IListValuesParams,\n ListValuesResult,\n RemoveValueResult,\n RemoveValuesResult,\n StorageKey,\n StoreValueResult,\n StoreValuesResult\n} from \"@webiny/db\";\nimport type { Entity } from \"dynamodb-toolbox\";\nimport type { Table } from \"~/utils/createTable\";\nimport { createTable } from \"~/utils/createTable\";\nimport type { GenericRecord } from \"@webiny/api/types\";\nimport { createEntity } from \"~/store/entity\";\nimport { batchReadAll, batchWriteAll, get, put, queryAll } from \"~/utils\";\nimport { createPartitionKey, createSortKey, createType } from \"~/store/keys\";\nimport type { IStoreItem } from \"~/store/types\";\n\ninterface ConstructorArgs {\n documentClient: DynamoDBDocument;\n}\n\nclass DynamoDbDriver implements DbDriver<DynamoDBDocument> {\n public readonly documentClient: DynamoDBDocument;\n\n private _table: Table | undefined = undefined;\n private _entity: Entity | undefined = undefined;\n\n public table(): Table {\n if (this._table) {\n return this._table;\n }\n this._table = createTable({\n documentClient: this.documentClient\n });\n return this._table;\n }\n\n public entity(): Entity {\n if (this._entity) {\n return this._entity;\n }\n this._entity = createEntity({\n table: this.table()\n });\n return this._entity;\n }\n\n constructor({ documentClient }: ConstructorArgs) {\n this.documentClient = documentClient;\n }\n\n public getClient() {\n return this.documentClient;\n }\n\n public async storeValue<V>(key: string, input: V): Promise<StoreValueResult<V>> {\n let value: string | undefined;\n try {\n value = JSON.stringify(input);\n } catch (ex) {\n return {\n key,\n error: ex\n };\n }\n\n try {\n await put<IStoreItem>({\n entity: this.entity(),\n item: {\n PK: createPartitionKey(),\n SK: createSortKey({ key }),\n TYPE: createType(),\n key,\n value\n }\n });\n\n return {\n key,\n data: input\n };\n } catch (ex) {\n return {\n key,\n error: ex\n };\n }\n }\n public async storeValues<V extends GenericRecord<StorageKey>>(\n values: V\n ): Promise<StoreValuesResult<V>> {\n const keys = Object.keys(values);\n try {\n const batch = keys.map(key => {\n const input = values[key];\n let value: string | undefined;\n try {\n value = JSON.stringify(input);\n } catch (ex) {\n throw ex;\n }\n const item: IStoreItem = {\n PK: createPartitionKey(),\n SK: createSortKey({ key }),\n TYPE: createType(),\n key,\n value\n };\n return this.entity().putBatch(item);\n });\n\n await batchWriteAll({\n table: this.table(),\n items: batch\n });\n return {\n keys,\n data: values\n };\n } catch (ex) {\n return {\n keys,\n error: ex\n };\n }\n }\n public async getValue<V>(key: StorageKey): Promise<GetValueResult<V>> {\n try {\n const result = await get<IStoreItem>({\n entity: this.entity(),\n keys: {\n PK: createPartitionKey(),\n SK: createSortKey({ key })\n }\n });\n return {\n key,\n data: result ? JSON.parse(result.value) : null\n };\n } catch (ex) {\n return {\n key,\n error: ex\n };\n }\n }\n public async getValues<V extends GenericRecord<StorageKey>>(\n input: (keyof V)[]\n ): Promise<GetValuesResult<V>> {\n const keys = [...input] as string[];\n const batch = keys.map(key => {\n return this.entity().getBatch({\n PK: createPartitionKey(),\n SK: createSortKey({ key })\n });\n });\n\n try {\n const results = await batchReadAll<IStoreItem>({\n table: this.table(),\n items: batch\n });\n const data = keys.reduce((collection, key) => {\n const result = results.find(item => {\n return item.PK === createPartitionKey() && item.SK === createSortKey({ key });\n });\n if (!result?.value) {\n // @ts-expect-error\n collection[key] = null;\n return collection;\n }\n try {\n // @ts-expect-error\n collection[key] = JSON.parse(result.value);\n } catch {\n // @ts-expect-error\n collection[key] = null;\n }\n\n return collection;\n }, {} as V);\n return {\n keys,\n data\n };\n } catch (ex) {\n return {\n keys,\n error: ex\n };\n }\n }\n public async listValues<V extends GenericRecord<StorageKey>>(\n params?: IListValuesParams\n ): Promise<ListValuesResult<V>> {\n try {\n const partitionKey = createPartitionKey();\n const options = {\n ...params\n };\n const results = await queryAll<IStoreItem>({\n entity: this.entity(),\n partitionKey,\n options\n });\n\n const data = results.reduce((collection, item) => {\n try {\n // @ts-expect-error\n collection[item.key] = JSON.parse(item.value);\n } catch (ex) {\n // @ts-expect-error\n collection[item.key] = null;\n }\n\n return collection;\n }, {} as V);\n\n return {\n keys: Object.keys(data),\n data\n };\n } catch (ex) {\n return {\n error: ex\n };\n }\n }\n\n public async removeValue<V>(key: StorageKey): Promise<RemoveValueResult<V>> {\n const result = await this.getValue<V>(key);\n if (result.error) {\n return {\n key,\n error: result.error\n };\n }\n try {\n await this.entity().delete({\n PK: createPartitionKey(),\n SK: createSortKey({ key })\n });\n return {\n key,\n data: result.data\n };\n } catch (ex) {\n return {\n key,\n error: ex\n };\n }\n }\n\n public async removeValues<V extends GenericRecord<StorageKey>>(\n input: (keyof V)[]\n ): Promise<RemoveValuesResult<V>> {\n const keys = [...input] as string[];\n const batch = keys.map(key => {\n return this.entity().deleteBatch({\n PK: createPartitionKey(),\n SK: createSortKey({ key })\n });\n });\n\n try {\n await batchWriteAll({\n table: this.table(),\n items: batch\n });\n return {\n keys\n };\n } catch (ex) {\n return {\n keys,\n error: ex\n };\n }\n }\n}\n\nexport default DynamoDbDriver;\n"],"mappings":"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","ignoreList":[]}
package/README.md CHANGED
@@ -14,6 +14,86 @@ For more information, please visit
14
14
  yarn add @webiny/db-dynamodb
15
15
  ```
16
16
 
17
+ ### Helper classes
18
+ We have some classes that ease the use of dynamodb-toolbox.
19
+ #### [Table](./src/utils/table/Table.ts)
20
+ ```typescript
21
+ import { createTable } from "@webiny/db-dynamodb";
22
+
23
+ const table = createTable({...params});
24
+ const writer = table.createWriter(); // see TableWriteBatch
25
+ const reader = table.createReader(); // see TableReadBatch
26
+
27
+ const result = await table.scan({...params}); // see scan
28
+ ```
29
+
30
+ #### [Entity](./src/utils/entity/Entity.ts)
31
+ ```typescript
32
+
33
+ import { createEntity } from "@webiny/db-dynamodb";
34
+
35
+ const entity = createEntity({...params});
36
+ const writer = entity.createWriter(); // see EntityWriteBatch
37
+ const reader = entity.createReader(); // see EntityReadBatch
38
+ const tableWriter = entity.createTableWriter(); // see TableWriteBatch
39
+
40
+ const getResult = await entity.get({...params}); // see get
41
+ const getCleanResult = await entity.getClean({...params}); // see get
42
+ const queryAllResult = await entity.queryAll({...params}); // see queryAllClean
43
+ const queryOneResult = await entity.queryOne({...params}); // see queryOneClean
44
+ const putResult = await entity.put({...params}); // see put
45
+
46
+ ```
47
+
48
+ #### [EntityWriteBatch](./src/utils/entity/EntityWriteBatch.ts)
49
+ ```typescript
50
+ import { createEntityWriteBatch } from "@webiny/db-dynamodb";
51
+
52
+ const writer = createEntityWriteBatch({...params});
53
+
54
+ writer.put({...item});
55
+ writer.delete({...keys});
56
+ writer.delete({...moreKeys});
57
+
58
+ await writer.execute();
59
+ ```
60
+
61
+ #### [EntityReadBatch](./src/utils/entity/EntityReadBatch.ts)
62
+ ```typescript
63
+ import { createEntityReadBatch } from "@webiny/db-dynamodb";
64
+
65
+ const reader = createEntityReadBatch({...params});
66
+
67
+ reader.get({...keys});
68
+ reader.get({...moreKeys});
69
+
70
+ const result = await reader.execute();
71
+ ```
72
+ #### [TableWriteBatch](./src/utils/table/TableWriteBatch.ts)
73
+ ```typescript
74
+ import { createTableWriteBatch } from "@webiny/db-dynamodb";
75
+
76
+ const writer = createTableWriteBatch({...params});
77
+
78
+ writer.put(entity, {...item});
79
+ writer.delete(entity, {...keys});
80
+ writer.delete(entity, {...moreKeys});
81
+
82
+ await writer.execute();
83
+ ```
84
+ #### [TableReadBatch](./src/utils/table/TableReadBatch.ts)
85
+ ```typescript
86
+ import {createTableReadBatch} from "@webiny/db-dynamodb";
87
+
88
+ const reader = createTableReadBatch({...params});
89
+
90
+ writer.get(entity, {...keys});
91
+ writer.get(entity, {...moreKeys});
92
+
93
+ const result = await reader.execute();
94
+ ```
95
+
96
+
17
97
 
18
98
  ### Helper functions
19
99
  We have a number [helper](./src/utils) functions that ease the use of either dynamodb-toolbox, filtering, sorting or just creating proper response.
@@ -64,4 +144,4 @@ This function accepts items (records) to be filtered, a definition of fields to
64
144
  #### [sort](./src/utils/sort.ts)
65
145
  Sort the DynamoDB records by given sort condition.
66
146
 
67
- This function accepts items (records) to be sorted, sort options (eg. createdBy_ASC, id_DESC, etc.) and a definitions of fields to sort by (not required by default if no field modification is required).
147
+ This function accepts items (records) to be sorted, sort options (eg. createdBy_ASC, id_DESC, etc.) and a definitions of fields to sort by (not required by default if no field modification is required).
package/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
1
  import { default as DynamoDbDriver } from "./DynamoDbDriver";
2
2
  export * from "./utils";
3
- export { DbItem } from "./types";
3
+ export type { DbItem } from "./types";
4
4
  export { DynamoDbDriver };
package/index.js CHANGED
@@ -5,15 +5,8 @@ Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
7
  var _exportNames = {
8
- DynamoDbDriver: true,
9
- DbItem: true
8
+ DynamoDbDriver: true
10
9
  };
11
- Object.defineProperty(exports, "DbItem", {
12
- enumerable: true,
13
- get: function () {
14
- return _types.DbItem;
15
- }
16
- });
17
10
  Object.defineProperty(exports, "DynamoDbDriver", {
18
11
  enumerable: true,
19
12
  get: function () {
@@ -33,6 +26,5 @@ Object.keys(_utils).forEach(function (key) {
33
26
  }
34
27
  });
35
28
  });
36
- var _types = require("./types");
37
29
 
38
30
  //# sourceMappingURL=index.js.map
package/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"names":["_DynamoDbDriver","_interopRequireDefault","require","_utils","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","_types"],"sources":["index.ts"],"sourcesContent":["import { default as DynamoDbDriver } from \"./DynamoDbDriver\";\n\nexport * from \"./utils\";\nexport { DbItem } from \"./types\";\n\nexport { DynamoDbDriver };\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,eAAA,GAAAC,sBAAA,CAAAC,OAAA;AAEA,IAAAC,MAAA,GAAAD,OAAA;AAAAE,MAAA,CAAAC,IAAA,CAAAF,MAAA,EAAAG,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAJ,MAAA,CAAAI,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAZ,MAAA,CAAAI,GAAA;IAAA;EAAA;AAAA;AACA,IAAAS,MAAA,GAAAd,OAAA"}
1
+ {"version":3,"names":["_DynamoDbDriver","_interopRequireDefault","require","_utils","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get"],"sources":["index.ts"],"sourcesContent":["import { default as DynamoDbDriver } from \"./DynamoDbDriver\";\n\nexport * from \"./utils\";\nexport type { DbItem } from \"./types\";\n\nexport { DynamoDbDriver };\n"],"mappings":";;;;;;;;;;;;;;;AAAA,IAAAA,eAAA,GAAAC,sBAAA,CAAAC,OAAA;AAEA,IAAAC,MAAA,GAAAD,OAAA;AAAAE,MAAA,CAAAC,IAAA,CAAAF,MAAA,EAAAG,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAJ,MAAA,CAAAI,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAZ,MAAA,CAAAI,GAAA;IAAA;EAAA;AAAA","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@webiny/db-dynamodb",
3
- "version": "0.0.0-unstable.de38392959",
3
+ "version": "0.0.0-unstable.e0bfc55d5a",
4
4
  "main": "index.js",
5
5
  "repository": {
6
6
  "type": "git",
@@ -10,38 +10,33 @@
10
10
  "author": "Webiny Ltd",
11
11
  "license": "MIT",
12
12
  "dependencies": {
13
- "@webiny/api": "0.0.0-unstable.de38392959",
14
- "@webiny/aws-sdk": "0.0.0-unstable.de38392959",
15
- "@webiny/db": "0.0.0-unstable.de38392959",
16
- "@webiny/error": "0.0.0-unstable.de38392959",
17
- "@webiny/handler-db": "0.0.0-unstable.de38392959",
18
- "@webiny/plugins": "0.0.0-unstable.de38392959",
13
+ "@webiny/api": "0.0.0-unstable.e0bfc55d5a",
14
+ "@webiny/aws-sdk": "0.0.0-unstable.e0bfc55d5a",
15
+ "@webiny/db": "0.0.0-unstable.e0bfc55d5a",
16
+ "@webiny/error": "0.0.0-unstable.e0bfc55d5a",
17
+ "@webiny/plugins": "0.0.0-unstable.e0bfc55d5a",
18
+ "@webiny/utils": "0.0.0-unstable.e0bfc55d5a",
19
19
  "date-fns": "2.29.3",
20
20
  "dot-prop": "6.0.1",
21
21
  "dynamodb-toolbox": "0.9.2",
22
22
  "fuse.js": "7.0.0",
23
- "is-number": "7.0.0",
24
23
  "lodash": "4.17.21"
25
24
  },
26
25
  "devDependencies": {
27
- "@babel/cli": "7.22.6",
28
- "@babel/core": "7.22.8",
29
- "@types/is-number": "7.0.3",
30
- "@webiny/cli": "0.0.0-unstable.de38392959",
31
- "@webiny/project-utils": "0.0.0-unstable.de38392959",
32
- "jest": "29.5.0",
26
+ "@types/is-number": "7.0.5",
27
+ "@webiny/project-utils": "0.0.0-unstable.e0bfc55d5a",
28
+ "jest": "29.7.0",
33
29
  "jest-dynalite": "3.6.1",
34
- "rimraf": "3.0.2",
35
- "ttypescript": "1.5.15",
36
- "typescript": "4.7.4"
30
+ "rimraf": "6.0.1",
31
+ "typescript": "5.3.3"
37
32
  },
38
33
  "publishConfig": {
39
34
  "access": "public",
40
35
  "directory": "dist"
41
36
  },
42
37
  "scripts": {
43
- "build": "yarn webiny run build",
44
- "watch": "yarn webiny run watch"
38
+ "build": "node ../cli/bin.js run build",
39
+ "watch": "node ../cli/bin.js run watch"
45
40
  },
46
- "gitHead": "de38392959f2692d1feb08945a3588cd80e4924c"
41
+ "gitHead": "e0bfc55d5a4d6a42b32e6558d9fb2eb6753e331b"
47
42
  }
@@ -1,5 +1,5 @@
1
1
  import { Plugin } from "@webiny/plugins";
2
- import { AttributeDefinition } from "../../toolbox";
2
+ import type { AttributeDefinition } from "../../toolbox";
3
3
  export interface AttributePluginParams {
4
4
  entity: string;
5
5
  attribute: string;
@@ -1 +1 @@
1
- {"version":3,"names":["_error","_interopRequireDefault","require","_plugins","reservedFields","AttributePlugin","Plugin","type","entity","_entity","attribute","_attribute","constructor","params","validateReserved","_params","getDefinition","includes","WebinyError","exports"],"sources":["AttributePlugin.ts"],"sourcesContent":["import WebinyError from \"@webiny/error\";\nimport { Plugin } from \"@webiny/plugins\";\nimport { AttributeDefinition } from \"~/toolbox\";\n\nconst reservedFields = [\"PK\", \"SK\", \"index\", \"data\"];\n\nexport interface AttributePluginParams {\n entity: string;\n attribute: string;\n params: AttributeDefinition;\n}\n\nexport abstract class AttributePlugin extends Plugin {\n public static override readonly type: string = \"db.dynamodb.attribute\";\n private readonly _entity: string;\n private readonly _attribute: string;\n private readonly _params: AttributeDefinition;\n\n public get entity(): string {\n return this._entity;\n }\n\n public get attribute(): string {\n return this._attribute;\n }\n\n public constructor({ entity, attribute, params }: AttributePluginParams) {\n super();\n\n this.validateReserved(attribute);\n\n this._entity = entity;\n this._attribute = attribute;\n this._params = params;\n }\n\n public getDefinition(): Record<string, AttributeDefinition> {\n return {\n [this.attribute]: this._params\n };\n }\n\n private validateReserved(attribute: string): void {\n if (reservedFields.includes(attribute) === false) {\n return;\n }\n throw new WebinyError(\n `Attribute name \"${attribute}\" is not allowed.`,\n \"ATTRIBUTE_NOT_ALLOWED\",\n {\n attribute\n }\n );\n }\n}\n"],"mappings":";;;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,QAAA,GAAAD,OAAA;AAGA,MAAME,cAAc,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC;AAQ7C,MAAeC,eAAe,SAASC,eAAM,CAAC;EACjD,OAAgCC,IAAI,GAAW,uBAAuB;EAKtE,IAAWC,MAAMA,CAAA,EAAW;IACxB,OAAO,IAAI,CAACC,OAAO;EACvB;EAEA,IAAWC,SAASA,CAAA,EAAW;IAC3B,OAAO,IAAI,CAACC,UAAU;EAC1B;EAEOC,WAAWA,CAAC;IAAEJ,MAAM;IAAEE,SAAS;IAAEG;EAA8B,CAAC,EAAE;IACrE,KAAK,CAAC,CAAC;IAEP,IAAI,CAACC,gBAAgB,CAACJ,SAAS,CAAC;IAEhC,IAAI,CAACD,OAAO,GAAGD,MAAM;IACrB,IAAI,CAACG,UAAU,GAAGD,SAAS;IAC3B,IAAI,CAACK,OAAO,GAAGF,MAAM;EACzB;EAEOG,aAAaA,CAAA,EAAwC;IACxD,OAAO;MACH,CAAC,IAAI,CAACN,SAAS,GAAG,IAAI,CAACK;IAC3B,CAAC;EACL;EAEQD,gBAAgBA,CAACJ,SAAiB,EAAQ;IAC9C,IAAIN,cAAc,CAACa,QAAQ,CAACP,SAAS,CAAC,KAAK,KAAK,EAAE;MAC9C;IACJ;IACA,MAAM,IAAIQ,cAAW,CAChB,mBAAkBR,SAAU,mBAAkB,EAC/C,uBAAuB,EACvB;MACIA;IACJ,CACJ,CAAC;EACL;AACJ;AAACS,OAAA,CAAAd,eAAA,GAAAA,eAAA"}
1
+ {"version":3,"names":["_error","_interopRequireDefault","require","_plugins","reservedFields","AttributePlugin","Plugin","type","entity","_entity","attribute","_attribute","constructor","params","validateReserved","_params","getDefinition","includes","WebinyError","exports"],"sources":["AttributePlugin.ts"],"sourcesContent":["import WebinyError from \"@webiny/error\";\nimport { Plugin } from \"@webiny/plugins\";\nimport type { AttributeDefinition } from \"~/toolbox\";\n\nconst reservedFields = [\"PK\", \"SK\", \"index\", \"data\"];\n\nexport interface AttributePluginParams {\n entity: string;\n attribute: string;\n params: AttributeDefinition;\n}\n\nexport abstract class AttributePlugin extends Plugin {\n public static override readonly type: string = \"db.dynamodb.attribute\";\n private readonly _entity: string;\n private readonly _attribute: string;\n private readonly _params: AttributeDefinition;\n\n public get entity(): string {\n return this._entity;\n }\n\n public get attribute(): string {\n return this._attribute;\n }\n\n public constructor({ entity, attribute, params }: AttributePluginParams) {\n super();\n\n this.validateReserved(attribute);\n\n this._entity = entity;\n this._attribute = attribute;\n this._params = params;\n }\n\n public getDefinition(): Record<string, AttributeDefinition> {\n return {\n [this.attribute]: this._params\n };\n }\n\n private validateReserved(attribute: string): void {\n if (reservedFields.includes(attribute) === false) {\n return;\n }\n throw new WebinyError(\n `Attribute name \"${attribute}\" is not allowed.`,\n \"ATTRIBUTE_NOT_ALLOWED\",\n {\n attribute\n }\n );\n }\n}\n"],"mappings":";;;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,QAAA,GAAAD,OAAA;AAGA,MAAME,cAAc,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC;AAQ7C,MAAeC,eAAe,SAASC,eAAM,CAAC;EACjD,OAAgCC,IAAI,GAAW,uBAAuB;EAKtE,IAAWC,MAAMA,CAAA,EAAW;IACxB,OAAO,IAAI,CAACC,OAAO;EACvB;EAEA,IAAWC,SAASA,CAAA,EAAW;IAC3B,OAAO,IAAI,CAACC,UAAU;EAC1B;EAEOC,WAAWA,CAAC;IAAEJ,MAAM;IAAEE,SAAS;IAAEG;EAA8B,CAAC,EAAE;IACrE,KAAK,CAAC,CAAC;IAEP,IAAI,CAACC,gBAAgB,CAACJ,SAAS,CAAC;IAEhC,IAAI,CAACD,OAAO,GAAGD,MAAM;IACrB,IAAI,CAACG,UAAU,GAAGD,SAAS;IAC3B,IAAI,CAACK,OAAO,GAAGF,MAAM;EACzB;EAEOG,aAAaA,CAAA,EAAwC;IACxD,OAAO;MACH,CAAC,IAAI,CAACN,SAAS,GAAG,IAAI,CAACK;IAC3B,CAAC;EACL;EAEQD,gBAAgBA,CAACJ,SAAiB,EAAQ;IAC9C,IAAIN,cAAc,CAACa,QAAQ,CAACP,SAAS,CAAC,KAAK,KAAK,EAAE;MAC9C;IACJ;IACA,MAAM,IAAIQ,cAAW,CACjB,mBAAmBR,SAAS,mBAAmB,EAC/C,uBAAuB,EACvB;MACIA;IACJ,CACJ,CAAC;EACL;AACJ;AAACS,OAAA,CAAAd,eAAA,GAAAA,eAAA","ignoreList":[]}
@@ -1,4 +1,5 @@
1
- import { ValueTransformPlugin, ValueTransformPluginParams } from "./ValueTransformPlugin";
1
+ import type { ValueTransformPluginParams } from "./ValueTransformPlugin";
2
+ import { ValueTransformPlugin } from "./ValueTransformPlugin";
2
3
  export declare class DateTimeTransformPlugin extends ValueTransformPlugin {
3
4
  constructor(params: Omit<ValueTransformPluginParams, "transform">);
4
5
  }
@@ -1 +1 @@
1
- {"version":3,"names":["_ValueTransformPlugin","require","_error","_interopRequireDefault","_dateFns","transformDateTime","params","value","undefined","parsedDateTime","parseISO","getTime","isNaN","Date","WebinyError","DateTimeTransformPlugin","ValueTransformPlugin","constructor","transform","exports"],"sources":["DateTimeTransformPlugin.ts"],"sourcesContent":["import {\n ValueTransformPlugin,\n ValueTransformPluginParams,\n ValueTransformPluginParamsTransformParams\n} from \"./ValueTransformPlugin\";\nimport WebinyError from \"@webiny/error\";\nimport { parseISO } from \"date-fns\";\n\nconst transformDateTime = (params: ValueTransformPluginParamsTransformParams): number | null => {\n const { value } = params;\n if (value === null || value === undefined) {\n return null;\n } else if (typeof value === \"string\") {\n const parsedDateTime = parseISO(value).getTime();\n if (isNaN(parsedDateTime) === false) {\n return parsedDateTime;\n }\n } else if (value instanceof Date || typeof (value as unknown as Date)?.getTime === \"function\") {\n /**\n * In this case we assume this is a date object, and we just get the time.\n */\n return value.getTime();\n }\n\n throw new WebinyError(\"Could not parse given dateTime value.\", \"PARSE_DATE_ERROR\", {\n value\n });\n};\n\nexport class DateTimeTransformPlugin extends ValueTransformPlugin {\n public constructor(params: Omit<ValueTransformPluginParams, \"transform\">) {\n super({\n transform: transformDateTime,\n ...params\n });\n }\n}\n"],"mappings":";;;;;;;AAAA,IAAAA,qBAAA,GAAAC,OAAA;AAKA,IAAAC,MAAA,GAAAC,sBAAA,CAAAF,OAAA;AACA,IAAAG,QAAA,GAAAH,OAAA;AAEA,MAAMI,iBAAiB,GAAIC,MAAiD,IAAoB;EAC5F,MAAM;IAAEC;EAAM,CAAC,GAAGD,MAAM;EACxB,IAAIC,KAAK,KAAK,IAAI,IAAIA,KAAK,KAAKC,SAAS,EAAE;IACvC,OAAO,IAAI;EACf,CAAC,MAAM,IAAI,OAAOD,KAAK,KAAK,QAAQ,EAAE;IAClC,MAAME,cAAc,GAAG,IAAAC,iBAAQ,EAACH,KAAK,CAAC,CAACI,OAAO,CAAC,CAAC;IAChD,IAAIC,KAAK,CAACH,cAAc,CAAC,KAAK,KAAK,EAAE;MACjC,OAAOA,cAAc;IACzB;EACJ,CAAC,MAAM,IAAIF,KAAK,YAAYM,IAAI,IAAI,OAAQN,KAAK,EAAsBI,OAAO,KAAK,UAAU,EAAE;IAC3F;AACR;AACA;IACQ,OAAOJ,KAAK,CAACI,OAAO,CAAC,CAAC;EAC1B;EAEA,MAAM,IAAIG,cAAW,CAAC,uCAAuC,EAAE,kBAAkB,EAAE;IAC/EP;EACJ,CAAC,CAAC;AACN,CAAC;AAEM,MAAMQ,uBAAuB,SAASC,0CAAoB,CAAC;EACvDC,WAAWA,CAACX,MAAqD,EAAE;IACtE,KAAK,CAAC;MACFY,SAAS,EAAEb,iBAAiB;MAC5B,GAAGC;IACP,CAAC,CAAC;EACN;AACJ;AAACa,OAAA,CAAAJ,uBAAA,GAAAA,uBAAA"}
1
+ {"version":3,"names":["_ValueTransformPlugin","require","_error","_interopRequireDefault","_dateFns","transformDateTime","params","value","undefined","parsedDateTime","parseISO","getTime","isNaN","Date","WebinyError","DateTimeTransformPlugin","ValueTransformPlugin","constructor","transform","exports"],"sources":["DateTimeTransformPlugin.ts"],"sourcesContent":["import type {\n ValueTransformPluginParams,\n ValueTransformPluginParamsTransformParams\n} from \"./ValueTransformPlugin\";\nimport { ValueTransformPlugin } from \"./ValueTransformPlugin\";\nimport WebinyError from \"@webiny/error\";\nimport { parseISO } from \"date-fns\";\n\nconst transformDateTime = (params: ValueTransformPluginParamsTransformParams): number | null => {\n const { value } = params;\n if (value === null || value === undefined) {\n return null;\n } else if (typeof value === \"string\") {\n const parsedDateTime = parseISO(value).getTime();\n if (isNaN(parsedDateTime) === false) {\n return parsedDateTime;\n }\n } else if (value instanceof Date || typeof (value as unknown as Date)?.getTime === \"function\") {\n /**\n * In this case we assume this is a date object, and we just get the time.\n */\n return value.getTime();\n }\n\n throw new WebinyError(\"Could not parse given dateTime value.\", \"PARSE_DATE_ERROR\", {\n value\n });\n};\n\nexport class DateTimeTransformPlugin extends ValueTransformPlugin {\n public constructor(params: Omit<ValueTransformPluginParams, \"transform\">) {\n super({\n transform: transformDateTime,\n ...params\n });\n }\n}\n"],"mappings":";;;;;;;AAIA,IAAAA,qBAAA,GAAAC,OAAA;AACA,IAAAC,MAAA,GAAAC,sBAAA,CAAAF,OAAA;AACA,IAAAG,QAAA,GAAAH,OAAA;AAEA,MAAMI,iBAAiB,GAAIC,MAAiD,IAAoB;EAC5F,MAAM;IAAEC;EAAM,CAAC,GAAGD,MAAM;EACxB,IAAIC,KAAK,KAAK,IAAI,IAAIA,KAAK,KAAKC,SAAS,EAAE;IACvC,OAAO,IAAI;EACf,CAAC,MAAM,IAAI,OAAOD,KAAK,KAAK,QAAQ,EAAE;IAClC,MAAME,cAAc,GAAG,IAAAC,iBAAQ,EAACH,KAAK,CAAC,CAACI,OAAO,CAAC,CAAC;IAChD,IAAIC,KAAK,CAACH,cAAc,CAAC,KAAK,KAAK,EAAE;MACjC,OAAOA,cAAc;IACzB;EACJ,CAAC,MAAM,IAAIF,KAAK,YAAYM,IAAI,IAAI,OAAQN,KAAK,EAAsBI,OAAO,KAAK,UAAU,EAAE;IAC3F;AACR;AACA;IACQ,OAAOJ,KAAK,CAACI,OAAO,CAAC,CAAC;EAC1B;EAEA,MAAM,IAAIG,cAAW,CAAC,uCAAuC,EAAE,kBAAkB,EAAE;IAC/EP;EACJ,CAAC,CAAC;AACN,CAAC;AAEM,MAAMQ,uBAAuB,SAASC,0CAAoB,CAAC;EACvDC,WAAWA,CAACX,MAAqD,EAAE;IACtE,KAAK,CAAC;MACFY,SAAS,EAAEb,iBAAiB;MAC5B,GAAGC;IACP,CAAC,CAAC;EACN;AACJ;AAACa,OAAA,CAAAJ,uBAAA,GAAAA,uBAAA","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["_plugins","require","_error","_interopRequireDefault","_assignFields","FieldPathPlugin","Plugin","type","constructor","params","_params","fields","assignFields","canCreate","field","includes","createPath","WebinyError","exports"],"sources":["FieldPathPlugin.ts"],"sourcesContent":["import { Plugin } from \"@webiny/plugins\";\nimport WebinyError from \"@webiny/error\";\nimport { assignFields } from \"./assignFields\";\n\nexport interface CreatePath {\n (field: string): string;\n}\nexport interface FieldPathPluginParams {\n /**\n * Which field(s) is this plugin for.\n */\n fields: string | string[];\n /**\n * Create a path for given field.\n * Field is passed because it can be a multi-field plugin.\n */\n createPath: CreatePath;\n}\n\nexport class FieldPathPlugin extends Plugin {\n public static override readonly type: string = \"dynamodb.value.path\";\n private readonly _params: Omit<FieldPathPluginParams, \"fields\"> & { fields: string[] };\n\n public constructor(params: FieldPathPluginParams) {\n super();\n this._params = {\n ...params,\n fields: assignFields(params.fields)\n };\n }\n\n public canCreate(field: string): boolean {\n return this._params.fields.includes(field);\n }\n\n public createPath(field: string): string {\n if (!this._params.createPath) {\n throw new WebinyError(`Missing \"createPath\" in the plugin.`, \"TRANSFORM_ERROR\", {\n fields: this._params.fields\n });\n }\n return this._params.createPath(field);\n }\n}\n"],"mappings":";;;;;;;AAAA,IAAAA,QAAA,GAAAC,OAAA;AACA,IAAAC,MAAA,GAAAC,sBAAA,CAAAF,OAAA;AACA,IAAAG,aAAA,GAAAH,OAAA;AAiBO,MAAMI,eAAe,SAASC,eAAM,CAAC;EACxC,OAAgCC,IAAI,GAAW,qBAAqB;EAG7DC,WAAWA,CAACC,MAA6B,EAAE;IAC9C,KAAK,CAAC,CAAC;IACP,IAAI,CAACC,OAAO,GAAG;MACX,GAAGD,MAAM;MACTE,MAAM,EAAE,IAAAC,0BAAY,EAACH,MAAM,CAACE,MAAM;IACtC,CAAC;EACL;EAEOE,SAASA,CAACC,KAAa,EAAW;IACrC,OAAO,IAAI,CAACJ,OAAO,CAACC,MAAM,CAACI,QAAQ,CAACD,KAAK,CAAC;EAC9C;EAEOE,UAAUA,CAACF,KAAa,EAAU;IACrC,IAAI,CAAC,IAAI,CAACJ,OAAO,CAACM,UAAU,EAAE;MAC1B,MAAM,IAAIC,cAAW,CAAE,qCAAoC,EAAE,iBAAiB,EAAE;QAC5EN,MAAM,EAAE,IAAI,CAACD,OAAO,CAACC;MACzB,CAAC,CAAC;IACN;IACA,OAAO,IAAI,CAACD,OAAO,CAACM,UAAU,CAACF,KAAK,CAAC;EACzC;AACJ;AAACI,OAAA,CAAAb,eAAA,GAAAA,eAAA"}
1
+ {"version":3,"names":["_plugins","require","_error","_interopRequireDefault","_assignFields","FieldPathPlugin","Plugin","type","constructor","params","_params","fields","assignFields","canCreate","field","includes","createPath","WebinyError","exports"],"sources":["FieldPathPlugin.ts"],"sourcesContent":["import { Plugin } from \"@webiny/plugins\";\nimport WebinyError from \"@webiny/error\";\nimport { assignFields } from \"./assignFields\";\n\nexport interface CreatePath {\n (field: string): string;\n}\nexport interface FieldPathPluginParams {\n /**\n * Which field(s) is this plugin for.\n */\n fields: string | string[];\n /**\n * Create a path for given field.\n * Field is passed because it can be a multi-field plugin.\n */\n createPath: CreatePath;\n}\n\nexport class FieldPathPlugin extends Plugin {\n public static override readonly type: string = \"dynamodb.value.path\";\n private readonly _params: Omit<FieldPathPluginParams, \"fields\"> & { fields: string[] };\n\n public constructor(params: FieldPathPluginParams) {\n super();\n this._params = {\n ...params,\n fields: assignFields(params.fields)\n };\n }\n\n public canCreate(field: string): boolean {\n return this._params.fields.includes(field);\n }\n\n public createPath(field: string): string {\n if (!this._params.createPath) {\n throw new WebinyError(`Missing \"createPath\" in the plugin.`, \"TRANSFORM_ERROR\", {\n fields: this._params.fields\n });\n }\n return this._params.createPath(field);\n }\n}\n"],"mappings":";;;;;;;AAAA,IAAAA,QAAA,GAAAC,OAAA;AACA,IAAAC,MAAA,GAAAC,sBAAA,CAAAF,OAAA;AACA,IAAAG,aAAA,GAAAH,OAAA;AAiBO,MAAMI,eAAe,SAASC,eAAM,CAAC;EACxC,OAAgCC,IAAI,GAAW,qBAAqB;EAG7DC,WAAWA,CAACC,MAA6B,EAAE;IAC9C,KAAK,CAAC,CAAC;IACP,IAAI,CAACC,OAAO,GAAG;MACX,GAAGD,MAAM;MACTE,MAAM,EAAE,IAAAC,0BAAY,EAACH,MAAM,CAACE,MAAM;IACtC,CAAC;EACL;EAEOE,SAASA,CAACC,KAAa,EAAW;IACrC,OAAO,IAAI,CAACJ,OAAO,CAACC,MAAM,CAACI,QAAQ,CAACD,KAAK,CAAC;EAC9C;EAEOE,UAAUA,CAACF,KAAa,EAAU;IACrC,IAAI,CAAC,IAAI,CAACJ,OAAO,CAACM,UAAU,EAAE;MAC1B,MAAM,IAAIC,cAAW,CAAC,qCAAqC,EAAE,iBAAiB,EAAE;QAC5EN,MAAM,EAAE,IAAI,CAACD,OAAO,CAACC;MACzB,CAAC,CAAC;IACN;IACA,OAAO,IAAI,CAACD,OAAO,CAACM,UAAU,CAACF,KAAK,CAAC;EACzC;AACJ;AAACI,OAAA,CAAAb,eAAA,GAAAA,eAAA","ignoreList":[]}
@@ -1,6 +1,6 @@
1
1
  import { Plugin } from "@webiny/plugins";
2
- import { DynamoDBTypes } from "../../toolbox";
3
- export declare type FieldType = DynamoDBTypes & "date" & any;
2
+ import type { DynamoDBTypes } from "../../toolbox";
3
+ export type FieldType = DynamoDBTypes & "date" & any;
4
4
  export interface TransformValueCb {
5
5
  (value: any): any;
6
6
  }
@@ -1 +1 @@
1
- {"version":3,"names":["_plugins","require","FieldPlugin","Plugin","constructor","params","fieldType","type","dynamoDbType","field","path","sortable","undefined","_transformValue","transformValue","getPath","getType","getField","getDynamoDbType","value","Number","Date","isSortable","exports"],"sources":["FieldPlugin.ts"],"sourcesContent":["import { Plugin } from \"@webiny/plugins\";\nimport { DynamoDBTypes } from \"~/toolbox\";\n\nexport type FieldType = DynamoDBTypes & \"date\" & any;\n\nexport interface TransformValueCb {\n (value: any): any;\n}\n\nexport interface FieldPluginParams {\n /**\n * Default is string.\n */\n type?: FieldType;\n field: string;\n path?: string;\n /**\n * Default is true.\n */\n sortable?: boolean;\n\n transformValue?: TransformValueCb;\n}\n\nexport abstract class FieldPlugin extends Plugin {\n private readonly path?: string;\n private readonly field: string;\n private readonly fieldType: FieldType;\n private readonly dynamoDbType: DynamoDBTypes;\n private readonly sortable: boolean;\n private readonly _transformValue: TransformValueCb | undefined;\n\n public constructor(params: FieldPluginParams) {\n super();\n this.fieldType = params.type || \"string\";\n this.dynamoDbType = params.type === \"date\" ? \"string\" : params.type;\n this.field = params.field;\n this.path = params.path;\n this.sortable = params.sortable === undefined ? true : params.sortable;\n this._transformValue = params.transformValue;\n }\n\n public getPath(): string {\n return this.path || this.field;\n }\n\n public getType(): FieldType {\n return this.fieldType;\n }\n\n public getField(): string {\n return this.field;\n }\n\n public getDynamoDbType(): string {\n return this.dynamoDbType;\n }\n\n public transformValue(value: any): any {\n if (this._transformValue) {\n return this.transformValue(value);\n }\n switch (this.fieldType) {\n case \"number\":\n return Number(value);\n case \"date\":\n if (!value) {\n return null;\n }\n return new Date(value);\n }\n return value;\n }\n\n public isSortable(): boolean {\n return this.sortable;\n }\n}\n"],"mappings":";;;;;;AAAA,IAAAA,QAAA,GAAAC,OAAA;AAwBO,MAAeC,WAAW,SAASC,eAAM,CAAC;EAQtCC,WAAWA,CAACC,MAAyB,EAAE;IAC1C,KAAK,CAAC,CAAC;IACP,IAAI,CAACC,SAAS,GAAGD,MAAM,CAACE,IAAI,IAAI,QAAQ;IACxC,IAAI,CAACC,YAAY,GAAGH,MAAM,CAACE,IAAI,KAAK,MAAM,GAAG,QAAQ,GAAGF,MAAM,CAACE,IAAI;IACnE,IAAI,CAACE,KAAK,GAAGJ,MAAM,CAACI,KAAK;IACzB,IAAI,CAACC,IAAI,GAAGL,MAAM,CAACK,IAAI;IACvB,IAAI,CAACC,QAAQ,GAAGN,MAAM,CAACM,QAAQ,KAAKC,SAAS,GAAG,IAAI,GAAGP,MAAM,CAACM,QAAQ;IACtE,IAAI,CAACE,eAAe,GAAGR,MAAM,CAACS,cAAc;EAChD;EAEOC,OAAOA,CAAA,EAAW;IACrB,OAAO,IAAI,CAACL,IAAI,IAAI,IAAI,CAACD,KAAK;EAClC;EAEOO,OAAOA,CAAA,EAAc;IACxB,OAAO,IAAI,CAACV,SAAS;EACzB;EAEOW,QAAQA,CAAA,EAAW;IACtB,OAAO,IAAI,CAACR,KAAK;EACrB;EAEOS,eAAeA,CAAA,EAAW;IAC7B,OAAO,IAAI,CAACV,YAAY;EAC5B;EAEOM,cAAcA,CAACK,KAAU,EAAO;IACnC,IAAI,IAAI,CAACN,eAAe,EAAE;MACtB,OAAO,IAAI,CAACC,cAAc,CAACK,KAAK,CAAC;IACrC;IACA,QAAQ,IAAI,CAACb,SAAS;MAClB,KAAK,QAAQ;QACT,OAAOc,MAAM,CAACD,KAAK,CAAC;MACxB,KAAK,MAAM;QACP,IAAI,CAACA,KAAK,EAAE;UACR,OAAO,IAAI;QACf;QACA,OAAO,IAAIE,IAAI,CAACF,KAAK,CAAC;IAC9B;IACA,OAAOA,KAAK;EAChB;EAEOG,UAAUA,CAAA,EAAY;IACzB,OAAO,IAAI,CAACX,QAAQ;EACxB;AACJ;AAACY,OAAA,CAAArB,WAAA,GAAAA,WAAA"}
1
+ {"version":3,"names":["_plugins","require","FieldPlugin","Plugin","constructor","params","fieldType","type","dynamoDbType","field","path","sortable","undefined","_transformValue","transformValue","getPath","getType","getField","getDynamoDbType","value","Number","Date","isSortable","exports"],"sources":["FieldPlugin.ts"],"sourcesContent":["import { Plugin } from \"@webiny/plugins\";\nimport type { DynamoDBTypes } from \"~/toolbox\";\n\nexport type FieldType = DynamoDBTypes & \"date\" & any;\n\nexport interface TransformValueCb {\n (value: any): any;\n}\n\nexport interface FieldPluginParams {\n /**\n * Default is string.\n */\n type?: FieldType;\n field: string;\n path?: string;\n /**\n * Default is true.\n */\n sortable?: boolean;\n\n transformValue?: TransformValueCb;\n}\n\nexport abstract class FieldPlugin extends Plugin {\n private readonly path?: string;\n private readonly field: string;\n private readonly fieldType: FieldType;\n private readonly dynamoDbType: DynamoDBTypes;\n private readonly sortable: boolean;\n private readonly _transformValue: TransformValueCb | undefined;\n\n public constructor(params: FieldPluginParams) {\n super();\n this.fieldType = params.type || \"string\";\n this.dynamoDbType = params.type === \"date\" ? \"string\" : params.type;\n this.field = params.field;\n this.path = params.path;\n this.sortable = params.sortable === undefined ? true : params.sortable;\n this._transformValue = params.transformValue;\n }\n\n public getPath(): string {\n return this.path || this.field;\n }\n\n public getType(): FieldType {\n return this.fieldType;\n }\n\n public getField(): string {\n return this.field;\n }\n\n public getDynamoDbType(): string {\n return this.dynamoDbType;\n }\n\n public transformValue(value: any): any {\n if (this._transformValue) {\n return this.transformValue(value);\n }\n switch (this.fieldType) {\n case \"number\":\n return Number(value);\n case \"date\":\n if (!value) {\n return null;\n }\n return new Date(value);\n }\n return value;\n }\n\n public isSortable(): boolean {\n return this.sortable;\n }\n}\n"],"mappings":";;;;;;AAAA,IAAAA,QAAA,GAAAC,OAAA;AAwBO,MAAeC,WAAW,SAASC,eAAM,CAAC;EAQtCC,WAAWA,CAACC,MAAyB,EAAE;IAC1C,KAAK,CAAC,CAAC;IACP,IAAI,CAACC,SAAS,GAAGD,MAAM,CAACE,IAAI,IAAI,QAAQ;IACxC,IAAI,CAACC,YAAY,GAAGH,MAAM,CAACE,IAAI,KAAK,MAAM,GAAG,QAAQ,GAAGF,MAAM,CAACE,IAAI;IACnE,IAAI,CAACE,KAAK,GAAGJ,MAAM,CAACI,KAAK;IACzB,IAAI,CAACC,IAAI,GAAGL,MAAM,CAACK,IAAI;IACvB,IAAI,CAACC,QAAQ,GAAGN,MAAM,CAACM,QAAQ,KAAKC,SAAS,GAAG,IAAI,GAAGP,MAAM,CAACM,QAAQ;IACtE,IAAI,CAACE,eAAe,GAAGR,MAAM,CAACS,cAAc;EAChD;EAEOC,OAAOA,CAAA,EAAW;IACrB,OAAO,IAAI,CAACL,IAAI,IAAI,IAAI,CAACD,KAAK;EAClC;EAEOO,OAAOA,CAAA,EAAc;IACxB,OAAO,IAAI,CAACV,SAAS;EACzB;EAEOW,QAAQA,CAAA,EAAW;IACtB,OAAO,IAAI,CAACR,KAAK;EACrB;EAEOS,eAAeA,CAAA,EAAW;IAC7B,OAAO,IAAI,CAACV,YAAY;EAC5B;EAEOM,cAAcA,CAACK,KAAU,EAAO;IACnC,IAAI,IAAI,CAACN,eAAe,EAAE;MACtB,OAAO,IAAI,CAACC,cAAc,CAACK,KAAK,CAAC;IACrC;IACA,QAAQ,IAAI,CAACb,SAAS;MAClB,KAAK,QAAQ;QACT,OAAOc,MAAM,CAACD,KAAK,CAAC;MACxB,KAAK,MAAM;QACP,IAAI,CAACA,KAAK,EAAE;UACR,OAAO,IAAI;QACf;QACA,OAAO,IAAIE,IAAI,CAACF,KAAK,CAAC;IAC9B;IACA,OAAOA,KAAK;EAChB;EAEOG,UAAUA,CAAA,EAAY;IACzB,OAAO,IAAI,CAACX,QAAQ;EACxB;AACJ;AAACY,OAAA,CAAArB,WAAA,GAAAA,WAAA","ignoreList":[]}