@webiny/db-dynamodb 5.43.3 → 6.0.0-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (54) hide show
  1. package/DynamoDbDriver.d.ts +5 -5
  2. package/DynamoDbDriver.js.map +1 -1
  3. package/package.json +9 -9
  4. package/plugins/definitions/AttributePlugin.d.ts +1 -1
  5. package/plugins/definitions/AttributePlugin.js.map +1 -1
  6. package/plugins/definitions/DateTimeTransformPlugin.d.ts +2 -1
  7. package/plugins/definitions/DateTimeTransformPlugin.js.map +1 -1
  8. package/plugins/definitions/FieldPlugin.d.ts +1 -1
  9. package/plugins/definitions/FieldPlugin.js.map +1 -1
  10. package/plugins/definitions/TimeTransformPlugin.d.ts +2 -1
  11. package/plugins/definitions/TimeTransformPlugin.js.map +1 -1
  12. package/plugins/filters/contains.js +22 -3
  13. package/plugins/filters/contains.js.map +1 -1
  14. package/plugins/filters/fuzzy.js.map +1 -1
  15. package/store/entity.d.ts +7 -7
  16. package/store/entity.js.map +1 -1
  17. package/utils/attributes.d.ts +2 -2
  18. package/utils/attributes.js.map +1 -1
  19. package/utils/batch/batchRead.d.ts +2 -2
  20. package/utils/batch/batchRead.js.map +1 -1
  21. package/utils/batch/batchWrite.d.ts +2 -2
  22. package/utils/batch/batchWrite.js.map +1 -1
  23. package/utils/cleanup.d.ts +1 -1
  24. package/utils/cleanup.js.map +1 -1
  25. package/utils/count.d.ts +1 -1
  26. package/utils/count.js.map +1 -1
  27. package/utils/createEntity.d.ts +2 -1
  28. package/utils/createEntity.js.map +1 -1
  29. package/utils/createTable.d.ts +1 -1
  30. package/utils/createTable.js.map +1 -1
  31. package/utils/delete.d.ts +1 -1
  32. package/utils/delete.js.map +1 -1
  33. package/utils/entity/Entity.d.ts +1 -1
  34. package/utils/entity/Entity.js.map +1 -1
  35. package/utils/entity/EntityReadBatch.d.ts +1 -1
  36. package/utils/entity/EntityReadBatch.js.map +1 -1
  37. package/utils/entity/EntityReadBatchBuilder.d.ts +1 -1
  38. package/utils/entity/EntityReadBatchBuilder.js.map +1 -1
  39. package/utils/entity/getEntity.d.ts +1 -1
  40. package/utils/entity/getEntity.js.map +1 -1
  41. package/utils/filter.d.ts +2 -2
  42. package/utils/filter.js.map +1 -1
  43. package/utils/get.d.ts +1 -1
  44. package/utils/get.js.map +1 -1
  45. package/utils/put.d.ts +2 -2
  46. package/utils/put.js.map +1 -1
  47. package/utils/query.d.ts +2 -2
  48. package/utils/query.js.map +1 -1
  49. package/utils/scan.d.ts +1 -1
  50. package/utils/scan.js.map +1 -1
  51. package/utils/sort.d.ts +1 -1
  52. package/utils/sort.js.map +1 -1
  53. package/utils/update.d.ts +1 -1
  54. package/utils/update.js.map +1 -1
@@ -1,8 +1,8 @@
1
- import { DynamoDBDocument } from "@webiny/aws-sdk/client-dynamodb";
2
- import { DbDriver, GetValueResult, GetValuesResult, IListValuesParams, ListValuesResult, RemoveValueResult, RemoveValuesResult, StorageKey, StoreValueResult, StoreValuesResult } from "@webiny/db";
3
- import { Entity } from "dynamodb-toolbox";
4
- import { Table } from "./utils/createTable";
5
- import { GenericRecord } from "@webiny/api/types";
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";
6
6
  interface ConstructorArgs {
7
7
  documentClient: DynamoDBDocument;
8
8
  }
@@ -1 +1 @@
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 { DynamoDBDocument } from \"@webiny/aws-sdk/client-dynamodb\";\nimport {\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 { Entity } from \"dynamodb-toolbox\";\nimport { createTable, Table } from \"~/utils/createTable\";\nimport { 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 { 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":[]}
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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@webiny/db-dynamodb",
3
- "version": "5.43.3",
3
+ "version": "6.0.0-alpha.1",
4
4
  "main": "index.js",
5
5
  "repository": {
6
6
  "type": "git",
@@ -10,12 +10,12 @@
10
10
  "author": "Webiny Ltd",
11
11
  "license": "MIT",
12
12
  "dependencies": {
13
- "@webiny/api": "5.43.3",
14
- "@webiny/aws-sdk": "5.43.3",
15
- "@webiny/db": "5.43.3",
16
- "@webiny/error": "5.43.3",
17
- "@webiny/plugins": "5.43.3",
18
- "@webiny/utils": "5.43.3",
13
+ "@webiny/api": "6.0.0-alpha.1",
14
+ "@webiny/aws-sdk": "6.0.0-alpha.1",
15
+ "@webiny/db": "6.0.0-alpha.1",
16
+ "@webiny/error": "6.0.0-alpha.1",
17
+ "@webiny/plugins": "6.0.0-alpha.1",
18
+ "@webiny/utils": "6.0.0-alpha.1",
19
19
  "date-fns": "2.29.3",
20
20
  "dot-prop": "6.0.1",
21
21
  "dynamodb-toolbox": "0.9.2",
@@ -24,7 +24,7 @@
24
24
  },
25
25
  "devDependencies": {
26
26
  "@types/is-number": "7.0.5",
27
- "@webiny/project-utils": "5.43.3",
27
+ "@webiny/project-utils": "6.0.0-alpha.1",
28
28
  "jest": "29.7.0",
29
29
  "jest-dynalite": "3.6.1",
30
30
  "rimraf": "6.0.1",
@@ -38,5 +38,5 @@
38
38
  "build": "node ../cli/bin.js run build",
39
39
  "watch": "node ../cli/bin.js run watch"
40
40
  },
41
- "gitHead": "c6d623eb1b715f3731434a8d3107b8fd8a1d6792"
41
+ "gitHead": "9bd236cf5e689f209a11bec089207dcc2d41a53c"
42
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,CACjB,mBAAmBR,SAAS,mBAAmB,EAC/C,uBAAuB,EACvB;MACIA;IACJ,CACJ,CAAC;EACL;AACJ;AAACS,OAAA,CAAAd,eAAA,GAAAA,eAAA","ignoreList":[]}
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","ignoreList":[]}
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,5 +1,5 @@
1
1
  import { Plugin } from "@webiny/plugins";
2
- import { DynamoDBTypes } from "../../toolbox";
2
+ import type { DynamoDBTypes } from "../../toolbox";
3
3
  export type FieldType = DynamoDBTypes & "date" & any;
4
4
  export interface TransformValueCb {
5
5
  (value: any): any;
@@ -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","ignoreList":[]}
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":[]}
@@ -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 TimeTransformPlugin extends ValueTransformPlugin {
3
4
  constructor(params: Omit<ValueTransformPluginParams, "transform">);
4
5
  }
@@ -1 +1 @@
1
- {"version":3,"names":["_ValueTransformPlugin","require","_error","_interopRequireDefault","transformTime","params","value","undefined","WebinyError","Array","isArray","converted","Number","isNaN","time","milliseconds","split","values","map","length","hours","minutes","seconds","TimeTransformPlugin","ValueTransformPlugin","constructor","transform","exports"],"sources":["TimeTransformPlugin.ts"],"sourcesContent":["import {\n ValueTransformPlugin,\n ValueTransformPluginParams,\n ValueTransformPluginParamsTransformParams\n} from \"./ValueTransformPlugin\";\nimport WebinyError from \"@webiny/error\";\n\nconst transformTime = (params: ValueTransformPluginParamsTransformParams): number => {\n const { value } = params;\n if (value === undefined || value === null) {\n throw new WebinyError(`Time value is null or undefined.`, \"TIME_PARSE_ERROR\", {\n value\n });\n } else if (typeof value === \"boolean\" || value === \"\" || Array.isArray(value)) {\n throw new WebinyError(\n \"Field value must be a string because field is defined as time.\",\n \"TIME_PARSE_ERROR\",\n {\n value\n }\n );\n }\n const converted = Number(`${value}`);\n if (typeof value === \"number\" || isNaN(converted) === false) {\n return Number(value);\n } else if (typeof value !== \"string\") {\n throw new WebinyError(\n \"Field value must be a string because field is defined as time.\",\n \"TIME_PARSE_ERROR\",\n {\n value\n }\n );\n }\n /**\n * This is for the time format, eg. 12:36:25 or 12:36:25.881\n */\n const [time, milliseconds = 0] = value.split(\".\");\n const values = time.split(\":\").map(Number);\n if (values.length < 2) {\n throw new WebinyError(\"Time must contain at least hours and minutes.\", \"TIME_PARSE_ERROR\", {\n value\n });\n }\n const [hours, minutes, seconds = 0] = values;\n return (hours * 60 * 60 + minutes * 60 + seconds) * 1000 + Number(milliseconds);\n};\n\nexport class TimeTransformPlugin extends ValueTransformPlugin {\n public constructor(params: Omit<ValueTransformPluginParams, \"transform\">) {\n super({\n transform: transformTime,\n ...params\n });\n }\n}\n"],"mappings":";;;;;;;AAAA,IAAAA,qBAAA,GAAAC,OAAA;AAKA,IAAAC,MAAA,GAAAC,sBAAA,CAAAF,OAAA;AAEA,MAAMG,aAAa,GAAIC,MAAiD,IAAa;EACjF,MAAM;IAAEC;EAAM,CAAC,GAAGD,MAAM;EACxB,IAAIC,KAAK,KAAKC,SAAS,IAAID,KAAK,KAAK,IAAI,EAAE;IACvC,MAAM,IAAIE,cAAW,CAAC,kCAAkC,EAAE,kBAAkB,EAAE;MAC1EF;IACJ,CAAC,CAAC;EACN,CAAC,MAAM,IAAI,OAAOA,KAAK,KAAK,SAAS,IAAIA,KAAK,KAAK,EAAE,IAAIG,KAAK,CAACC,OAAO,CAACJ,KAAK,CAAC,EAAE;IAC3E,MAAM,IAAIE,cAAW,CACjB,gEAAgE,EAChE,kBAAkB,EAClB;MACIF;IACJ,CACJ,CAAC;EACL;EACA,MAAMK,SAAS,GAAGC,MAAM,CAAC,GAAGN,KAAK,EAAE,CAAC;EACpC,IAAI,OAAOA,KAAK,KAAK,QAAQ,IAAIO,KAAK,CAACF,SAAS,CAAC,KAAK,KAAK,EAAE;IACzD,OAAOC,MAAM,CAACN,KAAK,CAAC;EACxB,CAAC,MAAM,IAAI,OAAOA,KAAK,KAAK,QAAQ,EAAE;IAClC,MAAM,IAAIE,cAAW,CACjB,gEAAgE,EAChE,kBAAkB,EAClB;MACIF;IACJ,CACJ,CAAC;EACL;EACA;AACJ;AACA;EACI,MAAM,CAACQ,IAAI,EAAEC,YAAY,GAAG,CAAC,CAAC,GAAGT,KAAK,CAACU,KAAK,CAAC,GAAG,CAAC;EACjD,MAAMC,MAAM,GAAGH,IAAI,CAACE,KAAK,CAAC,GAAG,CAAC,CAACE,GAAG,CAACN,MAAM,CAAC;EAC1C,IAAIK,MAAM,CAACE,MAAM,GAAG,CAAC,EAAE;IACnB,MAAM,IAAIX,cAAW,CAAC,+CAA+C,EAAE,kBAAkB,EAAE;MACvFF;IACJ,CAAC,CAAC;EACN;EACA,MAAM,CAACc,KAAK,EAAEC,OAAO,EAAEC,OAAO,GAAG,CAAC,CAAC,GAAGL,MAAM;EAC5C,OAAO,CAACG,KAAK,GAAG,EAAE,GAAG,EAAE,GAAGC,OAAO,GAAG,EAAE,GAAGC,OAAO,IAAI,IAAI,GAAGV,MAAM,CAACG,YAAY,CAAC;AACnF,CAAC;AAEM,MAAMQ,mBAAmB,SAASC,0CAAoB,CAAC;EACnDC,WAAWA,CAACpB,MAAqD,EAAE;IACtE,KAAK,CAAC;MACFqB,SAAS,EAAEtB,aAAa;MACxB,GAAGC;IACP,CAAC,CAAC;EACN;AACJ;AAACsB,OAAA,CAAAJ,mBAAA,GAAAA,mBAAA","ignoreList":[]}
1
+ {"version":3,"names":["_ValueTransformPlugin","require","_error","_interopRequireDefault","transformTime","params","value","undefined","WebinyError","Array","isArray","converted","Number","isNaN","time","milliseconds","split","values","map","length","hours","minutes","seconds","TimeTransformPlugin","ValueTransformPlugin","constructor","transform","exports"],"sources":["TimeTransformPlugin.ts"],"sourcesContent":["import type {\n ValueTransformPluginParams,\n ValueTransformPluginParamsTransformParams\n} from \"./ValueTransformPlugin\";\nimport { ValueTransformPlugin } from \"./ValueTransformPlugin\";\nimport WebinyError from \"@webiny/error\";\n\nconst transformTime = (params: ValueTransformPluginParamsTransformParams): number => {\n const { value } = params;\n if (value === undefined || value === null) {\n throw new WebinyError(`Time value is null or undefined.`, \"TIME_PARSE_ERROR\", {\n value\n });\n } else if (typeof value === \"boolean\" || value === \"\" || Array.isArray(value)) {\n throw new WebinyError(\n \"Field value must be a string because field is defined as time.\",\n \"TIME_PARSE_ERROR\",\n {\n value\n }\n );\n }\n const converted = Number(`${value}`);\n if (typeof value === \"number\" || isNaN(converted) === false) {\n return Number(value);\n } else if (typeof value !== \"string\") {\n throw new WebinyError(\n \"Field value must be a string because field is defined as time.\",\n \"TIME_PARSE_ERROR\",\n {\n value\n }\n );\n }\n /**\n * This is for the time format, eg. 12:36:25 or 12:36:25.881\n */\n const [time, milliseconds = 0] = value.split(\".\");\n const values = time.split(\":\").map(Number);\n if (values.length < 2) {\n throw new WebinyError(\"Time must contain at least hours and minutes.\", \"TIME_PARSE_ERROR\", {\n value\n });\n }\n const [hours, minutes, seconds = 0] = values;\n return (hours * 60 * 60 + minutes * 60 + seconds) * 1000 + Number(milliseconds);\n};\n\nexport class TimeTransformPlugin extends ValueTransformPlugin {\n public constructor(params: Omit<ValueTransformPluginParams, \"transform\">) {\n super({\n transform: transformTime,\n ...params\n });\n }\n}\n"],"mappings":";;;;;;;AAIA,IAAAA,qBAAA,GAAAC,OAAA;AACA,IAAAC,MAAA,GAAAC,sBAAA,CAAAF,OAAA;AAEA,MAAMG,aAAa,GAAIC,MAAiD,IAAa;EACjF,MAAM;IAAEC;EAAM,CAAC,GAAGD,MAAM;EACxB,IAAIC,KAAK,KAAKC,SAAS,IAAID,KAAK,KAAK,IAAI,EAAE;IACvC,MAAM,IAAIE,cAAW,CAAC,kCAAkC,EAAE,kBAAkB,EAAE;MAC1EF;IACJ,CAAC,CAAC;EACN,CAAC,MAAM,IAAI,OAAOA,KAAK,KAAK,SAAS,IAAIA,KAAK,KAAK,EAAE,IAAIG,KAAK,CAACC,OAAO,CAACJ,KAAK,CAAC,EAAE;IAC3E,MAAM,IAAIE,cAAW,CACjB,gEAAgE,EAChE,kBAAkB,EAClB;MACIF;IACJ,CACJ,CAAC;EACL;EACA,MAAMK,SAAS,GAAGC,MAAM,CAAC,GAAGN,KAAK,EAAE,CAAC;EACpC,IAAI,OAAOA,KAAK,KAAK,QAAQ,IAAIO,KAAK,CAACF,SAAS,CAAC,KAAK,KAAK,EAAE;IACzD,OAAOC,MAAM,CAACN,KAAK,CAAC;EACxB,CAAC,MAAM,IAAI,OAAOA,KAAK,KAAK,QAAQ,EAAE;IAClC,MAAM,IAAIE,cAAW,CACjB,gEAAgE,EAChE,kBAAkB,EAClB;MACIF;IACJ,CACJ,CAAC;EACL;EACA;AACJ;AACA;EACI,MAAM,CAACQ,IAAI,EAAEC,YAAY,GAAG,CAAC,CAAC,GAAGT,KAAK,CAACU,KAAK,CAAC,GAAG,CAAC;EACjD,MAAMC,MAAM,GAAGH,IAAI,CAACE,KAAK,CAAC,GAAG,CAAC,CAACE,GAAG,CAACN,MAAM,CAAC;EAC1C,IAAIK,MAAM,CAACE,MAAM,GAAG,CAAC,EAAE;IACnB,MAAM,IAAIX,cAAW,CAAC,+CAA+C,EAAE,kBAAkB,EAAE;MACvFF;IACJ,CAAC,CAAC;EACN;EACA,MAAM,CAACc,KAAK,EAAEC,OAAO,EAAEC,OAAO,GAAG,CAAC,CAAC,GAAGL,MAAM;EAC5C,OAAO,CAACG,KAAK,GAAG,EAAE,GAAG,EAAE,GAAGC,OAAO,GAAG,EAAE,GAAGC,OAAO,IAAI,IAAI,GAAGV,MAAM,CAACG,YAAY,CAAC;AACnF,CAAC;AAEM,MAAMQ,mBAAmB,SAASC,0CAAoB,CAAC;EACnDC,WAAWA,CAACpB,MAAqD,EAAE;IACtE,KAAK,CAAC;MACFqB,SAAS,EAAEtB,aAAa;MACxB,GAAGC;IACP,CAAC,CAAC;EACN;AACJ;AAACsB,OAAA,CAAAJ,mBAAA,GAAAA,mBAAA","ignoreList":[]}
@@ -6,11 +6,30 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.default = void 0;
7
7
  var _ValueFilterPlugin = require("../definitions/ValueFilterPlugin");
8
8
  const createValues = initialValue => {
9
- const values = Array.isArray(initialValue) ? initialValue : [initialValue];
10
- return values.filter(Boolean);
9
+ if (typeof initialValue === "string") {
10
+ return [initialValue];
11
+ }
12
+ if (Array.isArray(initialValue)) {
13
+ return initialValue.flat().map(v => v.toString()).filter(Boolean);
14
+ }
15
+ const result = [];
16
+ const traverse = node => {
17
+ if (node == null) {
18
+ return;
19
+ }
20
+ if (typeof node === "string" || typeof node === "number") {
21
+ result.push(node.toString());
22
+ } else if (Array.isArray(node)) {
23
+ node.forEach(traverse);
24
+ } else if (typeof node === "object") {
25
+ Object.values(node).forEach(traverse);
26
+ }
27
+ };
28
+ traverse(initialValue);
29
+ return result.filter(Boolean);
11
30
  };
12
31
  const createCompareValues = value => {
13
- return value.replace(/\s+/g, " ").trim().replace(/\?/g, `\\?`).replace(/\//g, `\\/`).replace(/:/g, ` `).replace(/\-/g, `\\-`).split(" ").filter(val => {
32
+ return value.replace(/\s+/g, " ").trim().replace(/\?/g, `\\?`).replace(/\//g, `\\/`).replace(/:/g, ``).replace(/\-/g, `\\-`).split(" ").filter(val => {
14
33
  return val.length > 0;
15
34
  });
16
35
  };
@@ -1 +1 @@
1
- {"version":3,"names":["_ValueFilterPlugin","require","createValues","initialValue","values","Array","isArray","filter","Boolean","createCompareValues","value","replace","trim","split","val","length","plugin","ValueFilterPlugin","operation","matches","compareValue","initialCompareValue","undefined","compareValues","some","target","every","match","RegExp","name","_default","exports","default"],"sources":["contains.ts"],"sourcesContent":["import { ValueFilterPlugin } from \"../definitions/ValueFilterPlugin\";\n\nconst createValues = (initialValue: string | string[]) => {\n const values = Array.isArray(initialValue) ? initialValue : [initialValue];\n\n return values.filter(Boolean);\n};\n\nconst createCompareValues = (value: string) => {\n return value\n .replace(/\\s+/g, \" \")\n .trim()\n .replace(/\\?/g, `\\\\?`)\n .replace(/\\//g, `\\\\/`)\n .replace(/:/g, ` `)\n .replace(/\\-/g, `\\\\-`)\n .split(\" \")\n .filter(val => {\n return val.length > 0;\n });\n};\n\nconst plugin = new ValueFilterPlugin({\n operation: \"contains\",\n matches: ({ value: initialValue, compareValue: initialCompareValue }) => {\n if (!initialValue || (Array.isArray(initialValue) && initialValue.length === 0)) {\n return false;\n } else if (initialCompareValue === undefined || initialCompareValue === null) {\n return true;\n }\n const values = createValues(initialValue);\n const compareValues = createCompareValues(initialCompareValue);\n return values.some(target => {\n return compareValues.every(compareValue => {\n return target.match(new RegExp(compareValue, \"gi\")) !== null;\n });\n });\n }\n});\n\nplugin.name = \"dynamodb.value.filter.contains\";\n\nexport default plugin;\n"],"mappings":";;;;;;AAAA,IAAAA,kBAAA,GAAAC,OAAA;AAEA,MAAMC,YAAY,GAAIC,YAA+B,IAAK;EACtD,MAAMC,MAAM,GAAGC,KAAK,CAACC,OAAO,CAACH,YAAY,CAAC,GAAGA,YAAY,GAAG,CAACA,YAAY,CAAC;EAE1E,OAAOC,MAAM,CAACG,MAAM,CAACC,OAAO,CAAC;AACjC,CAAC;AAED,MAAMC,mBAAmB,GAAIC,KAAa,IAAK;EAC3C,OAAOA,KAAK,CACPC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CACpBC,IAAI,CAAC,CAAC,CACND,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CACrBA,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CACrBA,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAClBA,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CACrBE,KAAK,CAAC,GAAG,CAAC,CACVN,MAAM,CAACO,GAAG,IAAI;IACX,OAAOA,GAAG,CAACC,MAAM,GAAG,CAAC;EACzB,CAAC,CAAC;AACV,CAAC;AAED,MAAMC,MAAM,GAAG,IAAIC,oCAAiB,CAAC;EACjCC,SAAS,EAAE,UAAU;EACrBC,OAAO,EAAEA,CAAC;IAAET,KAAK,EAAEP,YAAY;IAAEiB,YAAY,EAAEC;EAAoB,CAAC,KAAK;IACrE,IAAI,CAAClB,YAAY,IAAKE,KAAK,CAACC,OAAO,CAACH,YAAY,CAAC,IAAIA,YAAY,CAACY,MAAM,KAAK,CAAE,EAAE;MAC7E,OAAO,KAAK;IAChB,CAAC,MAAM,IAAIM,mBAAmB,KAAKC,SAAS,IAAID,mBAAmB,KAAK,IAAI,EAAE;MAC1E,OAAO,IAAI;IACf;IACA,MAAMjB,MAAM,GAAGF,YAAY,CAACC,YAAY,CAAC;IACzC,MAAMoB,aAAa,GAAGd,mBAAmB,CAACY,mBAAmB,CAAC;IAC9D,OAAOjB,MAAM,CAACoB,IAAI,CAACC,MAAM,IAAI;MACzB,OAAOF,aAAa,CAACG,KAAK,CAACN,YAAY,IAAI;QACvC,OAAOK,MAAM,CAACE,KAAK,CAAC,IAAIC,MAAM,CAACR,YAAY,EAAE,IAAI,CAAC,CAAC,KAAK,IAAI;MAChE,CAAC,CAAC;IACN,CAAC,CAAC;EACN;AACJ,CAAC,CAAC;AAEFJ,MAAM,CAACa,IAAI,GAAG,gCAAgC;AAAC,IAAAC,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAEhChB,MAAM","ignoreList":[]}
1
+ {"version":3,"names":["_ValueFilterPlugin","require","createValues","initialValue","Array","isArray","flat","map","v","toString","filter","Boolean","result","traverse","node","push","forEach","Object","values","createCompareValues","value","replace","trim","split","val","length","plugin","ValueFilterPlugin","operation","matches","compareValue","initialCompareValue","undefined","compareValues","some","target","every","match","RegExp","name","_default","exports","default"],"sources":["contains.ts"],"sourcesContent":["import { ValueFilterPlugin } from \"../definitions/ValueFilterPlugin\";\n\nconst createValues = (initialValue: string | string[] | object): string[] => {\n if (typeof initialValue === \"string\") {\n return [initialValue];\n }\n\n if (Array.isArray(initialValue)) {\n return initialValue\n .flat()\n .map(v => v.toString())\n .filter(Boolean);\n }\n\n const result: string[] = [];\n\n const traverse = (node: any): void => {\n if (node == null) {\n return;\n }\n if (typeof node === \"string\" || typeof node === \"number\") {\n result.push(node.toString());\n } else if (Array.isArray(node)) {\n node.forEach(traverse);\n } else if (typeof node === \"object\") {\n Object.values(node).forEach(traverse);\n }\n };\n\n traverse(initialValue);\n\n return result.filter(Boolean);\n};\n\nconst createCompareValues = (value: string) => {\n return value\n .replace(/\\s+/g, \" \")\n .trim()\n .replace(/\\?/g, `\\\\?`)\n .replace(/\\//g, `\\\\/`)\n .replace(/:/g, ``)\n .replace(/\\-/g, `\\\\-`)\n .split(\" \")\n .filter(val => {\n return val.length > 0;\n });\n};\n\nconst plugin = new ValueFilterPlugin({\n operation: \"contains\",\n matches: ({ value: initialValue, compareValue: initialCompareValue }) => {\n if (!initialValue || (Array.isArray(initialValue) && initialValue.length === 0)) {\n return false;\n } else if (initialCompareValue === undefined || initialCompareValue === null) {\n return true;\n }\n const values = createValues(initialValue);\n const compareValues = createCompareValues(initialCompareValue);\n return values.some(target => {\n return compareValues.every(compareValue => {\n return target.match(new RegExp(compareValue, \"gi\")) !== null;\n });\n });\n }\n});\n\nplugin.name = \"dynamodb.value.filter.contains\";\n\nexport default plugin;\n"],"mappings":";;;;;;AAAA,IAAAA,kBAAA,GAAAC,OAAA;AAEA,MAAMC,YAAY,GAAIC,YAAwC,IAAe;EACzE,IAAI,OAAOA,YAAY,KAAK,QAAQ,EAAE;IAClC,OAAO,CAACA,YAAY,CAAC;EACzB;EAEA,IAAIC,KAAK,CAACC,OAAO,CAACF,YAAY,CAAC,EAAE;IAC7B,OAAOA,YAAY,CACdG,IAAI,CAAC,CAAC,CACNC,GAAG,CAACC,CAAC,IAAIA,CAAC,CAACC,QAAQ,CAAC,CAAC,CAAC,CACtBC,MAAM,CAACC,OAAO,CAAC;EACxB;EAEA,MAAMC,MAAgB,GAAG,EAAE;EAE3B,MAAMC,QAAQ,GAAIC,IAAS,IAAW;IAClC,IAAIA,IAAI,IAAI,IAAI,EAAE;MACd;IACJ;IACA,IAAI,OAAOA,IAAI,KAAK,QAAQ,IAAI,OAAOA,IAAI,KAAK,QAAQ,EAAE;MACtDF,MAAM,CAACG,IAAI,CAACD,IAAI,CAACL,QAAQ,CAAC,CAAC,CAAC;IAChC,CAAC,MAAM,IAAIL,KAAK,CAACC,OAAO,CAACS,IAAI,CAAC,EAAE;MAC5BA,IAAI,CAACE,OAAO,CAACH,QAAQ,CAAC;IAC1B,CAAC,MAAM,IAAI,OAAOC,IAAI,KAAK,QAAQ,EAAE;MACjCG,MAAM,CAACC,MAAM,CAACJ,IAAI,CAAC,CAACE,OAAO,CAACH,QAAQ,CAAC;IACzC;EACJ,CAAC;EAEDA,QAAQ,CAACV,YAAY,CAAC;EAEtB,OAAOS,MAAM,CAACF,MAAM,CAACC,OAAO,CAAC;AACjC,CAAC;AAED,MAAMQ,mBAAmB,GAAIC,KAAa,IAAK;EAC3C,OAAOA,KAAK,CACPC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CACpBC,IAAI,CAAC,CAAC,CACND,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CACrBA,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CACrBA,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CACjBA,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CACrBE,KAAK,CAAC,GAAG,CAAC,CACVb,MAAM,CAACc,GAAG,IAAI;IACX,OAAOA,GAAG,CAACC,MAAM,GAAG,CAAC;EACzB,CAAC,CAAC;AACV,CAAC;AAED,MAAMC,MAAM,GAAG,IAAIC,oCAAiB,CAAC;EACjCC,SAAS,EAAE,UAAU;EACrBC,OAAO,EAAEA,CAAC;IAAET,KAAK,EAAEjB,YAAY;IAAE2B,YAAY,EAAEC;EAAoB,CAAC,KAAK;IACrE,IAAI,CAAC5B,YAAY,IAAKC,KAAK,CAACC,OAAO,CAACF,YAAY,CAAC,IAAIA,YAAY,CAACsB,MAAM,KAAK,CAAE,EAAE;MAC7E,OAAO,KAAK;IAChB,CAAC,MAAM,IAAIM,mBAAmB,KAAKC,SAAS,IAAID,mBAAmB,KAAK,IAAI,EAAE;MAC1E,OAAO,IAAI;IACf;IACA,MAAMb,MAAM,GAAGhB,YAAY,CAACC,YAAY,CAAC;IACzC,MAAM8B,aAAa,GAAGd,mBAAmB,CAACY,mBAAmB,CAAC;IAC9D,OAAOb,MAAM,CAACgB,IAAI,CAACC,MAAM,IAAI;MACzB,OAAOF,aAAa,CAACG,KAAK,CAACN,YAAY,IAAI;QACvC,OAAOK,MAAM,CAACE,KAAK,CAAC,IAAIC,MAAM,CAACR,YAAY,EAAE,IAAI,CAAC,CAAC,KAAK,IAAI;MAChE,CAAC,CAAC;IACN,CAAC,CAAC;EACN;AACJ,CAAC,CAAC;AAEFJ,MAAM,CAACa,IAAI,GAAG,gCAAgC;AAAC,IAAAC,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAEhChB,MAAM","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["_fuse","_interopRequireDefault","require","_ValueFilterPlugin","plugin","ValueFilterPlugin","operation","matches","value","initialValue","compareValue","initialCompareValue","replaceAll","f","Fuse","includeScore","minMatchCharLength","threshold","isCaseSensitive","findAllMatches","ignoreLocation","result","search","length","name","_default","exports","default"],"sources":["fuzzy.ts"],"sourcesContent":["import Fuse from \"fuse.js\";\nimport {\n ValueFilterPlugin,\n ValueFilterPluginParamsMatchesParams\n} from \"../definitions/ValueFilterPlugin\";\n\nconst plugin = new ValueFilterPlugin({\n operation: \"fuzzy\",\n matches: ({\n value: initialValue,\n compareValue: initialCompareValue\n }: ValueFilterPluginParamsMatchesParams<\n string | null | undefined,\n string | null | undefined\n >) => {\n if (typeof initialValue !== \"string\" || typeof initialCompareValue !== \"string\") {\n return false;\n }\n const value = initialValue.replaceAll(\"/\", \" \");\n const compareValue = initialCompareValue.replaceAll(\"/\", \" \");\n\n const f = new Fuse([value], {\n includeScore: true,\n minMatchCharLength: 3,\n threshold: 0.5,\n isCaseSensitive: false,\n findAllMatches: true,\n ignoreLocation: true\n });\n const result = f.search(compareValue);\n\n return result.length > 0;\n }\n});\n\nplugin.name = \"dynamodb.value.filter.fuzzy\";\n\nexport default plugin;\n"],"mappings":";;;;;;;AAAA,IAAAA,KAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,kBAAA,GAAAD,OAAA;AAKA,MAAME,MAAM,GAAG,IAAIC,oCAAiB,CAAC;EACjCC,SAAS,EAAE,OAAO;EAClBC,OAAO,EAAEA,CAAC;IACNC,KAAK,EAAEC,YAAY;IACnBC,YAAY,EAAEC;EAIlB,CAAC,KAAK;IACF,IAAI,OAAOF,YAAY,KAAK,QAAQ,IAAI,OAAOE,mBAAmB,KAAK,QAAQ,EAAE;MAC7E,OAAO,KAAK;IAChB;IACA,MAAMH,KAAK,GAAGC,YAAY,CAACG,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC;IAC/C,MAAMF,YAAY,GAAGC,mBAAmB,CAACC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC;IAE7D,MAAMC,CAAC,GAAG,IAAIC,aAAI,CAAC,CAACN,KAAK,CAAC,EAAE;MACxBO,YAAY,EAAE,IAAI;MAClBC,kBAAkB,EAAE,CAAC;MACrBC,SAAS,EAAE,GAAG;MACdC,eAAe,EAAE,KAAK;MACtBC,cAAc,EAAE,IAAI;MACpBC,cAAc,EAAE;IACpB,CAAC,CAAC;IACF,MAAMC,MAAM,GAAGR,CAAC,CAACS,MAAM,CAACZ,YAAY,CAAC;IAErC,OAAOW,MAAM,CAACE,MAAM,GAAG,CAAC;EAC5B;AACJ,CAAC,CAAC;AAEFnB,MAAM,CAACoB,IAAI,GAAG,6BAA6B;AAAC,IAAAC,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAE7BvB,MAAM","ignoreList":[]}
1
+ {"version":3,"names":["_fuse","_interopRequireDefault","require","_ValueFilterPlugin","plugin","ValueFilterPlugin","operation","matches","value","initialValue","compareValue","initialCompareValue","replaceAll","f","Fuse","includeScore","minMatchCharLength","threshold","isCaseSensitive","findAllMatches","ignoreLocation","result","search","length","name","_default","exports","default"],"sources":["fuzzy.ts"],"sourcesContent":["import Fuse from \"fuse.js\";\nimport type { ValueFilterPluginParamsMatchesParams } from \"../definitions/ValueFilterPlugin\";\nimport { ValueFilterPlugin } from \"../definitions/ValueFilterPlugin\";\n\nconst plugin = new ValueFilterPlugin({\n operation: \"fuzzy\",\n matches: ({\n value: initialValue,\n compareValue: initialCompareValue\n }: ValueFilterPluginParamsMatchesParams<\n string | null | undefined,\n string | null | undefined\n >) => {\n if (typeof initialValue !== \"string\" || typeof initialCompareValue !== \"string\") {\n return false;\n }\n const value = initialValue.replaceAll(\"/\", \" \");\n const compareValue = initialCompareValue.replaceAll(\"/\", \" \");\n\n const f = new Fuse([value], {\n includeScore: true,\n minMatchCharLength: 3,\n threshold: 0.5,\n isCaseSensitive: false,\n findAllMatches: true,\n ignoreLocation: true\n });\n const result = f.search(compareValue);\n\n return result.length > 0;\n }\n});\n\nplugin.name = \"dynamodb.value.filter.fuzzy\";\n\nexport default plugin;\n"],"mappings":";;;;;;;AAAA,IAAAA,KAAA,GAAAC,sBAAA,CAAAC,OAAA;AAEA,IAAAC,kBAAA,GAAAD,OAAA;AAEA,MAAME,MAAM,GAAG,IAAIC,oCAAiB,CAAC;EACjCC,SAAS,EAAE,OAAO;EAClBC,OAAO,EAAEA,CAAC;IACNC,KAAK,EAAEC,YAAY;IACnBC,YAAY,EAAEC;EAIlB,CAAC,KAAK;IACF,IAAI,OAAOF,YAAY,KAAK,QAAQ,IAAI,OAAOE,mBAAmB,KAAK,QAAQ,EAAE;MAC7E,OAAO,KAAK;IAChB;IACA,MAAMH,KAAK,GAAGC,YAAY,CAACG,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC;IAC/C,MAAMF,YAAY,GAAGC,mBAAmB,CAACC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC;IAE7D,MAAMC,CAAC,GAAG,IAAIC,aAAI,CAAC,CAACN,KAAK,CAAC,EAAE;MACxBO,YAAY,EAAE,IAAI;MAClBC,kBAAkB,EAAE,CAAC;MACrBC,SAAS,EAAE,GAAG;MACdC,eAAe,EAAE,KAAK;MACtBC,cAAc,EAAE,IAAI;MACpBC,cAAc,EAAE;IACpB,CAAC,CAAC;IACF,MAAMC,MAAM,GAAGR,CAAC,CAACS,MAAM,CAACZ,YAAY,CAAC;IAErC,OAAOW,MAAM,CAACE,MAAM,GAAG,CAAC;EAC5B;AACJ,CAAC,CAAC;AAEFnB,MAAM,CAACoB,IAAI,GAAG,6BAA6B;AAAC,IAAAC,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAE7BvB,MAAM","ignoreList":[]}
package/store/entity.d.ts CHANGED
@@ -2,7 +2,7 @@
2
2
  * TODO determine if GSIs are needed
3
3
  */
4
4
  import { Entity } from "../toolbox";
5
- import { Table } from "../utils";
5
+ import type { Table } from "../utils";
6
6
  export interface ICreateEntityParams {
7
7
  table: Table;
8
8
  }
@@ -55,23 +55,23 @@ export declare const createEntity: ({ table }: ICreateEntityParams) => Entity<"W
55
55
  type: "string";
56
56
  };
57
57
  }, true, "created", "modified", "entity", false>, {
58
- TYPE?: string | undefined;
59
58
  key?: string | undefined;
60
59
  value?: string | undefined;
61
- PK: any;
62
- SK: any;
60
+ TYPE?: string | undefined;
63
61
  created: string;
64
62
  modified: string;
65
63
  entity: string;
64
+ PK: any;
65
+ SK: any;
66
66
  }, {
67
- TYPE?: string | undefined;
68
67
  key?: string | undefined;
69
68
  value?: string | undefined;
70
- PK: any;
71
- SK: any;
69
+ TYPE?: string | undefined;
72
70
  created: string;
73
71
  modified: string;
74
72
  entity: string;
73
+ PK: any;
74
+ SK: any;
75
75
  }, {
76
76
  PK: any;
77
77
  SK: any;
@@ -1 +1 @@
1
- {"version":3,"names":["_toolbox","require","createEntity","table","Entity","name","attributes","PK","partitionKey","SK","sortKey","TYPE","type","key","value","autoExecute","autoParse","exports"],"sources":["entity.ts"],"sourcesContent":["/**\n * TODO determine if GSIs are needed\n */\nimport { Entity } from \"~/toolbox\";\nimport { Table } from \"~/utils\";\n\nexport interface ICreateEntityParams {\n table: Table;\n}\n\nexport const createEntity = ({ table }: ICreateEntityParams) => {\n return new Entity({\n table,\n name: \"WebinyKeyValue\",\n attributes: {\n PK: {\n partitionKey: true\n },\n SK: {\n sortKey: true\n },\n TYPE: {\n type: \"string\"\n },\n key: {\n type: \"string\"\n },\n value: {\n type: \"string\"\n }\n },\n autoExecute: true,\n autoParse: true\n });\n};\n"],"mappings":";;;;;;AAGA,IAAAA,QAAA,GAAAC,OAAA;AAHA;AACA;AACA;;AAQO,MAAMC,YAAY,GAAGA,CAAC;EAAEC;AAA2B,CAAC,KAAK;EAC5D,OAAO,IAAIC,eAAM,CAAC;IACdD,KAAK;IACLE,IAAI,EAAE,gBAAgB;IACtBC,UAAU,EAAE;MACRC,EAAE,EAAE;QACAC,YAAY,EAAE;MAClB,CAAC;MACDC,EAAE,EAAE;QACAC,OAAO,EAAE;MACb,CAAC;MACDC,IAAI,EAAE;QACFC,IAAI,EAAE;MACV,CAAC;MACDC,GAAG,EAAE;QACDD,IAAI,EAAE;MACV,CAAC;MACDE,KAAK,EAAE;QACHF,IAAI,EAAE;MACV;IACJ,CAAC;IACDG,WAAW,EAAE,IAAI;IACjBC,SAAS,EAAE;EACf,CAAC,CAAC;AACN,CAAC;AAACC,OAAA,CAAAf,YAAA,GAAAA,YAAA","ignoreList":[]}
1
+ {"version":3,"names":["_toolbox","require","createEntity","table","Entity","name","attributes","PK","partitionKey","SK","sortKey","TYPE","type","key","value","autoExecute","autoParse","exports"],"sources":["entity.ts"],"sourcesContent":["/**\n * TODO determine if GSIs are needed\n */\nimport { Entity } from \"~/toolbox\";\nimport type { Table } from \"~/utils\";\n\nexport interface ICreateEntityParams {\n table: Table;\n}\n\nexport const createEntity = ({ table }: ICreateEntityParams) => {\n return new Entity({\n table,\n name: \"WebinyKeyValue\",\n attributes: {\n PK: {\n partitionKey: true\n },\n SK: {\n sortKey: true\n },\n TYPE: {\n type: \"string\"\n },\n key: {\n type: \"string\"\n },\n value: {\n type: \"string\"\n }\n },\n autoExecute: true,\n autoParse: true\n });\n};\n"],"mappings":";;;;;;AAGA,IAAAA,QAAA,GAAAC,OAAA;AAHA;AACA;AACA;;AAQO,MAAMC,YAAY,GAAGA,CAAC;EAAEC;AAA2B,CAAC,KAAK;EAC5D,OAAO,IAAIC,eAAM,CAAC;IACdD,KAAK;IACLE,IAAI,EAAE,gBAAgB;IACtBC,UAAU,EAAE;MACRC,EAAE,EAAE;QACAC,YAAY,EAAE;MAClB,CAAC;MACDC,EAAE,EAAE;QACAC,OAAO,EAAE;MACb,CAAC;MACDC,IAAI,EAAE;QACFC,IAAI,EAAE;MACV,CAAC;MACDC,GAAG,EAAE;QACDD,IAAI,EAAE;MACV,CAAC;MACDE,KAAK,EAAE;QACHF,IAAI,EAAE;MACV;IACJ,CAAC;IACDG,WAAW,EAAE,IAAI;IACjBC,SAAS,EAAE;EACf,CAAC,CAAC;AACN,CAAC;AAACC,OAAA,CAAAf,YAAA,GAAAA,YAAA","ignoreList":[]}
@@ -1,6 +1,6 @@
1
- import { Context } from "@webiny/api/types";
1
+ import type { Context } from "@webiny/api/types";
2
2
  import { AttributePlugin } from "../plugins/definitions/AttributePlugin";
3
- import { PluginsContainer } from "@webiny/plugins";
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
  *
@@ -1 +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 { Context } from \"@webiny/api/types\";\nimport { AttributePlugin } from \"~/plugins/definitions/AttributePlugin\";\nimport { 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":[]}
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":[]}
@@ -1,5 +1,5 @@
1
- import { TableDef } from "../../toolbox";
2
- import { GenericRecord } from "@webiny/api/types";
1
+ import type { TableDef } from "../../toolbox";
2
+ import type { GenericRecord } from "@webiny/api/types";
3
3
  export interface BatchReadItem {
4
4
  Table?: TableDef;
5
5
  Key: any;
@@ -1 +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 { TableDef } from \"~/toolbox\";\nimport { 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":[]}
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":[]}
@@ -1,5 +1,5 @@
1
- import { TableDef } from "../../toolbox";
2
- import { BatchWriteItem, BatchWriteResult } from "./types";
1
+ import type { TableDef } from "../../toolbox";
2
+ import type { BatchWriteItem, BatchWriteResult } from "./types";
3
3
  export interface BatchWriteParams {
4
4
  table: TableDef | undefined;
5
5
  items: BatchWriteItem[];
@@ -1 +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 { TableDef } from \"~/toolbox\";\nimport { 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":[]}
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":[]}
@@ -1,3 +1,3 @@
1
- import { Entity } from "../toolbox";
1
+ import type { Entity } from "../toolbox";
2
2
  export declare function cleanupItem<T>(entity: Entity<any>, item?: T | null, removeAttributes?: string[]): T | null;
3
3
  export declare function cleanupItems<T>(entity: Entity<any>, items: T[], removeAttributes?: string[]): T[];
@@ -1 +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 { 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":[]}
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":[]}
package/utils/count.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- import { QueryAllParams } from "./query";
1
+ import type { QueryAllParams } from "./query";
2
2
  export declare const count: (params: QueryAllParams) => Promise<number>;
@@ -1 +1 @@
1
- {"version":3,"names":["count","params","entity","partitionKey","options","Count","query","select","exports"],"sources":["count.ts"],"sourcesContent":["import { 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":[]}
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":[]}
@@ -1,4 +1,5 @@
1
- import { AttributeDefinitions, Entity, Table } from "../toolbox";
1
+ import type { AttributeDefinitions, Table } from "../toolbox";
2
+ import { Entity } from "../toolbox";
2
3
  interface CreateStandardEntityParams {
3
4
  table: Table<string, string, string>;
4
5
  name: string;
@@ -1 +1 @@
1
- {"version":3,"names":["_toolbox","require","createStandardEntity","params","Entity","name","table","attributes","PK","partitionKey","SK","sortKey","GSI1_PK","type","GSI1_SK","TYPE","data","exports","createLegacyEntity"],"sources":["createEntity.ts"],"sourcesContent":["import { AttributeDefinitions, Entity, Table } from \"~/toolbox\";\n\ninterface CreateStandardEntityParams {\n table: Table<string, string, string>;\n name: string;\n}\n\nexport const createStandardEntity = (params: CreateStandardEntityParams): Entity<any> => {\n return new Entity({\n name: params.name,\n table: params.table,\n attributes: {\n PK: {\n partitionKey: true\n },\n SK: {\n sortKey: true\n },\n GSI1_PK: {\n type: \"string\"\n },\n GSI1_SK: {\n type: \"string\"\n },\n TYPE: {\n type: \"string\"\n },\n data: {\n type: \"map\"\n }\n }\n });\n};\n\ninterface CreateLegacyEntityParams {\n table: Table<string, string, string>;\n name: string;\n attributes?: AttributeDefinitions;\n}\n\nexport const createLegacyEntity = (params: CreateLegacyEntityParams) => {\n return new Entity({\n table: params.table,\n name: params.name,\n attributes: {\n PK: {\n partitionKey: true\n },\n SK: {\n sortKey: true\n },\n GSI1_PK: {\n type: \"string\"\n },\n GSI1_SK: {\n type: \"string\"\n },\n TYPE: {\n type: \"string\"\n },\n ...(params.attributes || {})\n }\n });\n};\n"],"mappings":";;;;;;AAAA,IAAAA,QAAA,GAAAC,OAAA;AAOO,MAAMC,oBAAoB,GAAIC,MAAkC,IAAkB;EACrF,OAAO,IAAIC,eAAM,CAAC;IACdC,IAAI,EAAEF,MAAM,CAACE,IAAI;IACjBC,KAAK,EAAEH,MAAM,CAACG,KAAK;IACnBC,UAAU,EAAE;MACRC,EAAE,EAAE;QACAC,YAAY,EAAE;MAClB,CAAC;MACDC,EAAE,EAAE;QACAC,OAAO,EAAE;MACb,CAAC;MACDC,OAAO,EAAE;QACLC,IAAI,EAAE;MACV,CAAC;MACDC,OAAO,EAAE;QACLD,IAAI,EAAE;MACV,CAAC;MACDE,IAAI,EAAE;QACFF,IAAI,EAAE;MACV,CAAC;MACDG,IAAI,EAAE;QACFH,IAAI,EAAE;MACV;IACJ;EACJ,CAAC,CAAC;AACN,CAAC;AAACI,OAAA,CAAAf,oBAAA,GAAAA,oBAAA;AAQK,MAAMgB,kBAAkB,GAAIf,MAAgC,IAAK;EACpE,OAAO,IAAIC,eAAM,CAAC;IACdE,KAAK,EAAEH,MAAM,CAACG,KAAK;IACnBD,IAAI,EAAEF,MAAM,CAACE,IAAI;IACjBE,UAAU,EAAE;MACRC,EAAE,EAAE;QACAC,YAAY,EAAE;MAClB,CAAC;MACDC,EAAE,EAAE;QACAC,OAAO,EAAE;MACb,CAAC;MACDC,OAAO,EAAE;QACLC,IAAI,EAAE;MACV,CAAC;MACDC,OAAO,EAAE;QACLD,IAAI,EAAE;MACV,CAAC;MACDE,IAAI,EAAE;QACFF,IAAI,EAAE;MACV,CAAC;MACD,IAAIV,MAAM,CAACI,UAAU,IAAI,CAAC,CAAC;IAC/B;EACJ,CAAC,CAAC;AACN,CAAC;AAACU,OAAA,CAAAC,kBAAA,GAAAA,kBAAA","ignoreList":[]}
1
+ {"version":3,"names":["_toolbox","require","createStandardEntity","params","Entity","name","table","attributes","PK","partitionKey","SK","sortKey","GSI1_PK","type","GSI1_SK","TYPE","data","exports","createLegacyEntity"],"sources":["createEntity.ts"],"sourcesContent":["import type { AttributeDefinitions, Table } from \"~/toolbox\";\nimport { Entity } from \"~/toolbox\";\n\ninterface CreateStandardEntityParams {\n table: Table<string, string, string>;\n name: string;\n}\n\nexport const createStandardEntity = (params: CreateStandardEntityParams): Entity<any> => {\n return new Entity({\n name: params.name,\n table: params.table,\n attributes: {\n PK: {\n partitionKey: true\n },\n SK: {\n sortKey: true\n },\n GSI1_PK: {\n type: \"string\"\n },\n GSI1_SK: {\n type: \"string\"\n },\n TYPE: {\n type: \"string\"\n },\n data: {\n type: \"map\"\n }\n }\n });\n};\n\ninterface CreateLegacyEntityParams {\n table: Table<string, string, string>;\n name: string;\n attributes?: AttributeDefinitions;\n}\n\nexport const createLegacyEntity = (params: CreateLegacyEntityParams) => {\n return new Entity({\n table: params.table,\n name: params.name,\n attributes: {\n PK: {\n partitionKey: true\n },\n SK: {\n sortKey: true\n },\n GSI1_PK: {\n type: \"string\"\n },\n GSI1_SK: {\n type: \"string\"\n },\n TYPE: {\n type: \"string\"\n },\n ...(params.attributes || {})\n }\n });\n};\n"],"mappings":";;;;;;AACA,IAAAA,QAAA,GAAAC,OAAA;AAOO,MAAMC,oBAAoB,GAAIC,MAAkC,IAAkB;EACrF,OAAO,IAAIC,eAAM,CAAC;IACdC,IAAI,EAAEF,MAAM,CAACE,IAAI;IACjBC,KAAK,EAAEH,MAAM,CAACG,KAAK;IACnBC,UAAU,EAAE;MACRC,EAAE,EAAE;QACAC,YAAY,EAAE;MAClB,CAAC;MACDC,EAAE,EAAE;QACAC,OAAO,EAAE;MACb,CAAC;MACDC,OAAO,EAAE;QACLC,IAAI,EAAE;MACV,CAAC;MACDC,OAAO,EAAE;QACLD,IAAI,EAAE;MACV,CAAC;MACDE,IAAI,EAAE;QACFF,IAAI,EAAE;MACV,CAAC;MACDG,IAAI,EAAE;QACFH,IAAI,EAAE;MACV;IACJ;EACJ,CAAC,CAAC;AACN,CAAC;AAACI,OAAA,CAAAf,oBAAA,GAAAA,oBAAA;AAQK,MAAMgB,kBAAkB,GAAIf,MAAgC,IAAK;EACpE,OAAO,IAAIC,eAAM,CAAC;IACdE,KAAK,EAAEH,MAAM,CAACG,KAAK;IACnBD,IAAI,EAAEF,MAAM,CAACE,IAAI;IACjBE,UAAU,EAAE;MACRC,EAAE,EAAE;QACAC,YAAY,EAAE;MAClB,CAAC;MACDC,EAAE,EAAE;QACAC,OAAO,EAAE;MACb,CAAC;MACDC,OAAO,EAAE;QACLC,IAAI,EAAE;MACV,CAAC;MACDC,OAAO,EAAE;QACLD,IAAI,EAAE;MACV,CAAC;MACDE,IAAI,EAAE;QACFF,IAAI,EAAE;MACV,CAAC;MACD,IAAIV,MAAM,CAACI,UAAU,IAAI,CAAC,CAAC;IAC/B;EACJ,CAAC,CAAC;AACN,CAAC;AAACU,OAAA,CAAAC,kBAAA,GAAAA,kBAAA","ignoreList":[]}
@@ -1,4 +1,4 @@
1
- import { DynamoDBDocument } from "@webiny/aws-sdk/client-dynamodb";
1
+ import type { DynamoDBDocument } from "@webiny/aws-sdk/client-dynamodb";
2
2
  import { Table as BaseTable } from "../toolbox";
3
3
  export interface CreateTableParams {
4
4
  name?: string;
@@ -1 +1 @@
1
- {"version":3,"names":["_toolbox","require","createTable","name","documentClient","BaseTable","String","process","env","DB_TABLE","partitionKey","sortKey","DocumentClient","indexes","GSI1","autoExecute","autoParse","exports"],"sources":["createTable.ts"],"sourcesContent":["import { DynamoDBDocument } from \"@webiny/aws-sdk/client-dynamodb\";\nimport { Table as BaseTable } from \"~/toolbox\";\n\nexport interface CreateTableParams {\n name?: string;\n documentClient: DynamoDBDocument;\n}\n\nexport type Table = BaseTable<string, \"PK\", \"SK\">;\n\nexport const createTable = ({ name, documentClient }: CreateTableParams): Table => {\n return new BaseTable({\n name: name || String(process.env.DB_TABLE),\n partitionKey: \"PK\",\n sortKey: \"SK\",\n DocumentClient: documentClient,\n indexes: {\n GSI1: {\n partitionKey: \"GSI1_PK\",\n sortKey: \"GSI1_SK\"\n }\n },\n autoExecute: true,\n autoParse: true\n });\n};\n"],"mappings":";;;;;;AACA,IAAAA,QAAA,GAAAC,OAAA;AASO,MAAMC,WAAW,GAAGA,CAAC;EAAEC,IAAI;EAAEC;AAAkC,CAAC,KAAY;EAC/E,OAAO,IAAIC,cAAS,CAAC;IACjBF,IAAI,EAAEA,IAAI,IAAIG,MAAM,CAACC,OAAO,CAACC,GAAG,CAACC,QAAQ,CAAC;IAC1CC,YAAY,EAAE,IAAI;IAClBC,OAAO,EAAE,IAAI;IACbC,cAAc,EAAER,cAAc;IAC9BS,OAAO,EAAE;MACLC,IAAI,EAAE;QACFJ,YAAY,EAAE,SAAS;QACvBC,OAAO,EAAE;MACb;IACJ,CAAC;IACDI,WAAW,EAAE,IAAI;IACjBC,SAAS,EAAE;EACf,CAAC,CAAC;AACN,CAAC;AAACC,OAAA,CAAAf,WAAA,GAAAA,WAAA","ignoreList":[]}
1
+ {"version":3,"names":["_toolbox","require","createTable","name","documentClient","BaseTable","String","process","env","DB_TABLE","partitionKey","sortKey","DocumentClient","indexes","GSI1","autoExecute","autoParse","exports"],"sources":["createTable.ts"],"sourcesContent":["import type { DynamoDBDocument } from \"@webiny/aws-sdk/client-dynamodb\";\nimport { Table as BaseTable } from \"~/toolbox\";\n\nexport interface CreateTableParams {\n name?: string;\n documentClient: DynamoDBDocument;\n}\n\nexport type Table = BaseTable<string, \"PK\", \"SK\">;\n\nexport const createTable = ({ name, documentClient }: CreateTableParams): Table => {\n return new BaseTable({\n name: name || String(process.env.DB_TABLE),\n partitionKey: \"PK\",\n sortKey: \"SK\",\n DocumentClient: documentClient,\n indexes: {\n GSI1: {\n partitionKey: \"GSI1_PK\",\n sortKey: \"GSI1_SK\"\n }\n },\n autoExecute: true,\n autoParse: true\n });\n};\n"],"mappings":";;;;;;AACA,IAAAA,QAAA,GAAAC,OAAA;AASO,MAAMC,WAAW,GAAGA,CAAC;EAAEC,IAAI;EAAEC;AAAkC,CAAC,KAAY;EAC/E,OAAO,IAAIC,cAAS,CAAC;IACjBF,IAAI,EAAEA,IAAI,IAAIG,MAAM,CAACC,OAAO,CAACC,GAAG,CAACC,QAAQ,CAAC;IAC1CC,YAAY,EAAE,IAAI;IAClBC,OAAO,EAAE,IAAI;IACbC,cAAc,EAAER,cAAc;IAC9BS,OAAO,EAAE;MACLC,IAAI,EAAE;QACFJ,YAAY,EAAE,SAAS;QACvBC,OAAO,EAAE;MACb;IACJ,CAAC;IACDI,WAAW,EAAE,IAAI;IACjBC,SAAS,EAAE;EACf,CAAC,CAAC;AACN,CAAC;AAACC,OAAA,CAAAf,WAAA,GAAAA,WAAA","ignoreList":[]}
package/utils/delete.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { Entity } from "../toolbox";
1
+ import type { Entity } from "../toolbox";
2
2
  export interface IDeleteItemKeys {
3
3
  PK: string;
4
4
  SK: string;
@@ -1 +1 @@
1
- {"version":3,"names":["deleteItem","params","entity","keys","delete","execute","exports"],"sources":["delete.ts"],"sourcesContent":["import { Entity } from \"~/toolbox\";\nexport interface IDeleteItemKeys {\n PK: string;\n SK: string;\n}\nexport interface IDeleteItemParams {\n entity: Entity;\n keys: IDeleteItemKeys;\n}\n\nexport const deleteItem = async (params: IDeleteItemParams) => {\n const { entity, keys } = params;\n\n return await entity.delete(keys, {\n execute: true\n });\n};\n"],"mappings":";;;;;;AAUO,MAAMA,UAAU,GAAG,MAAOC,MAAyB,IAAK;EAC3D,MAAM;IAAEC,MAAM;IAAEC;EAAK,CAAC,GAAGF,MAAM;EAE/B,OAAO,MAAMC,MAAM,CAACE,MAAM,CAACD,IAAI,EAAE;IAC7BE,OAAO,EAAE;EACb,CAAC,CAAC;AACN,CAAC;AAACC,OAAA,CAAAN,UAAA,GAAAA,UAAA","ignoreList":[]}
1
+ {"version":3,"names":["deleteItem","params","entity","keys","delete","execute","exports"],"sources":["delete.ts"],"sourcesContent":["import type { Entity } from \"~/toolbox\";\nexport interface IDeleteItemKeys {\n PK: string;\n SK: string;\n}\nexport interface IDeleteItemParams {\n entity: Entity;\n keys: IDeleteItemKeys;\n}\n\nexport const deleteItem = async (params: IDeleteItemParams) => {\n const { entity, keys } = params;\n\n return await entity.delete(keys, {\n execute: true\n });\n};\n"],"mappings":";;;;;;AAUO,MAAMA,UAAU,GAAG,MAAOC,MAAyB,IAAK;EAC3D,MAAM;IAAEC,MAAM;IAAEC;EAAK,CAAC,GAAGF,MAAM;EAE/B,OAAO,MAAMC,MAAM,CAACE,MAAM,CAACD,IAAI,EAAE;IAC7BE,OAAO,EAAE;EACb,CAAC,CAAC;AACN,CAAC;AAACC,OAAA,CAAAN,UAAA,GAAAA,UAAA","ignoreList":[]}
@@ -8,7 +8,7 @@ import type { GetRecordParamsKeys } from "../get";
8
8
  import { get, getClean } from "../get";
9
9
  import type { IDeleteItemKeys } from "../delete";
10
10
  import { deleteItem } from "../delete";
11
- import { GenericRecord } from "@webiny/api/types";
11
+ import type { GenericRecord } from "@webiny/api/types";
12
12
  export type EntityConstructor<T extends Readonly<AttributeDefinitions> = Readonly<AttributeDefinitions>> = BaseEntityConstructor<TableDef, string, true, true, true, "created", "modified", "entity", false, T>;
13
13
  export declare class Entity implements IEntity {
14
14
  readonly entity: BaseEntity;
@@ -1 +1 @@
1
- {"version":3,"names":["_toolbox","require","_put","_get","_delete","_EntityReadBatch","_EntityWriteBatch","_TableWriteBatch","_query","Entity","constructor","params","entity","BaseEntity","createEntityReader","createEntityReadBatch","createEntityWriter","createEntityWriteBatch","createTableWriter","createTableWriteBatch","table","put","item","get","keys","getClean","delete","deleteItem","queryOne","queryOneClean","queryAll","queryAllClean","exports","createEntity"],"sources":["Entity.ts"],"sourcesContent":["import type {\n AttributeDefinitions,\n EntityConstructor as BaseEntityConstructor,\n Readonly,\n TableDef\n} from \"~/toolbox\";\nimport { Entity as BaseEntity } from \"~/toolbox\";\nimport type { ITableWriteBatch } from \"../table/types\";\nimport type {\n IEntity,\n IEntityQueryAllParams,\n IEntityQueryOneParams,\n IEntityReadBatch,\n IEntityWriteBatch\n} from \"./types\";\nimport type { IPutParamsItem } from \"../put\";\nimport { put } from \"../put\";\nimport type { GetRecordParamsKeys } from \"../get\";\nimport { get, getClean } from \"../get\";\nimport type { IDeleteItemKeys } from \"../delete\";\nimport { deleteItem } from \"../delete\";\nimport { createEntityReadBatch } from \"./EntityReadBatch\";\nimport { createEntityWriteBatch } from \"./EntityWriteBatch\";\nimport { createTableWriteBatch } from \"~/utils/table/TableWriteBatch\";\nimport { queryAllClean, queryOneClean } from \"../query\";\nimport { GenericRecord } from \"@webiny/api/types\";\n\nexport type EntityConstructor<\n T extends Readonly<AttributeDefinitions> = Readonly<AttributeDefinitions>\n> = BaseEntityConstructor<\n TableDef,\n string,\n true,\n true,\n true,\n \"created\",\n \"modified\",\n \"entity\",\n false,\n T\n>;\n\nexport class Entity implements IEntity {\n public readonly entity: BaseEntity;\n\n public constructor(params: EntityConstructor) {\n this.entity = new BaseEntity(params);\n }\n\n public createEntityReader(): IEntityReadBatch {\n return createEntityReadBatch({\n entity: this.entity\n });\n }\n\n public createEntityWriter(): IEntityWriteBatch {\n return createEntityWriteBatch({\n entity: this.entity\n });\n }\n\n public createTableWriter(): ITableWriteBatch {\n return createTableWriteBatch({\n table: this.entity.table as TableDef\n });\n }\n\n public async put<T extends GenericRecord = GenericRecord>(\n item: IPutParamsItem<T>\n ): ReturnType<typeof put> {\n return put({\n entity: this.entity,\n item\n });\n }\n\n public async get<T>(keys: GetRecordParamsKeys): ReturnType<typeof get<T>> {\n return get<T>({\n entity: this.entity,\n keys\n });\n }\n\n public async getClean<T>(keys: GetRecordParamsKeys): ReturnType<typeof getClean<T>> {\n return getClean<T>({\n entity: this.entity,\n keys\n });\n }\n\n public async delete(keys: IDeleteItemKeys): ReturnType<typeof deleteItem> {\n return deleteItem({\n entity: this.entity,\n keys\n });\n }\n\n public queryOne<T>(params: IEntityQueryOneParams): Promise<T | null> {\n return queryOneClean<T>({\n ...params,\n entity: this.entity\n });\n }\n\n public queryAll<T>(params: IEntityQueryAllParams): Promise<T[]> {\n return queryAllClean<T>({\n ...params,\n entity: this.entity\n });\n }\n}\n\nexport const createEntity = (params: EntityConstructor): IEntity => {\n return new Entity(params);\n};\n"],"mappings":";;;;;;AAMA,IAAAA,QAAA,GAAAC,OAAA;AAUA,IAAAC,IAAA,GAAAD,OAAA;AAEA,IAAAE,IAAA,GAAAF,OAAA;AAEA,IAAAG,OAAA,GAAAH,OAAA;AACA,IAAAI,gBAAA,GAAAJ,OAAA;AACA,IAAAK,iBAAA,GAAAL,OAAA;AACA,IAAAM,gBAAA,GAAAN,OAAA;AACA,IAAAO,MAAA,GAAAP,OAAA;AAkBO,MAAMQ,MAAM,CAAoB;EAG5BC,WAAWA,CAACC,MAAyB,EAAE;IAC1C,IAAI,CAACC,MAAM,GAAG,IAAIC,eAAU,CAACF,MAAM,CAAC;EACxC;EAEOG,kBAAkBA,CAAA,EAAqB;IAC1C,OAAO,IAAAC,sCAAqB,EAAC;MACzBH,MAAM,EAAE,IAAI,CAACA;IACjB,CAAC,CAAC;EACN;EAEOI,kBAAkBA,CAAA,EAAsB;IAC3C,OAAO,IAAAC,wCAAsB,EAAC;MAC1BL,MAAM,EAAE,IAAI,CAACA;IACjB,CAAC,CAAC;EACN;EAEOM,iBAAiBA,CAAA,EAAqB;IACzC,OAAO,IAAAC,sCAAqB,EAAC;MACzBC,KAAK,EAAE,IAAI,CAACR,MAAM,CAACQ;IACvB,CAAC,CAAC;EACN;EAEA,MAAaC,GAAGA,CACZC,IAAuB,EACD;IACtB,OAAO,IAAAD,QAAG,EAAC;MACPT,MAAM,EAAE,IAAI,CAACA,MAAM;MACnBU;IACJ,CAAC,CAAC;EACN;EAEA,MAAaC,GAAGA,CAAIC,IAAyB,EAA6B;IACtE,OAAO,IAAAD,QAAG,EAAI;MACVX,MAAM,EAAE,IAAI,CAACA,MAAM;MACnBY;IACJ,CAAC,CAAC;EACN;EAEA,MAAaC,QAAQA,CAAID,IAAyB,EAAkC;IAChF,OAAO,IAAAC,aAAQ,EAAI;MACfb,MAAM,EAAE,IAAI,CAACA,MAAM;MACnBY;IACJ,CAAC,CAAC;EACN;EAEA,MAAaE,MAAMA,CAACF,IAAqB,EAAiC;IACtE,OAAO,IAAAG,kBAAU,EAAC;MACdf,MAAM,EAAE,IAAI,CAACA,MAAM;MACnBY;IACJ,CAAC,CAAC;EACN;EAEOI,QAAQA,CAAIjB,MAA6B,EAAqB;IACjE,OAAO,IAAAkB,oBAAa,EAAI;MACpB,GAAGlB,MAAM;MACTC,MAAM,EAAE,IAAI,CAACA;IACjB,CAAC,CAAC;EACN;EAEOkB,QAAQA,CAAInB,MAA6B,EAAgB;IAC5D,OAAO,IAAAoB,oBAAa,EAAI;MACpB,GAAGpB,MAAM;MACTC,MAAM,EAAE,IAAI,CAACA;IACjB,CAAC,CAAC;EACN;AACJ;AAACoB,OAAA,CAAAvB,MAAA,GAAAA,MAAA;AAEM,MAAMwB,YAAY,GAAItB,MAAyB,IAAc;EAChE,OAAO,IAAIF,MAAM,CAACE,MAAM,CAAC;AAC7B,CAAC;AAACqB,OAAA,CAAAC,YAAA,GAAAA,YAAA","ignoreList":[]}
1
+ {"version":3,"names":["_toolbox","require","_put","_get","_delete","_EntityReadBatch","_EntityWriteBatch","_TableWriteBatch","_query","Entity","constructor","params","entity","BaseEntity","createEntityReader","createEntityReadBatch","createEntityWriter","createEntityWriteBatch","createTableWriter","createTableWriteBatch","table","put","item","get","keys","getClean","delete","deleteItem","queryOne","queryOneClean","queryAll","queryAllClean","exports","createEntity"],"sources":["Entity.ts"],"sourcesContent":["import type {\n AttributeDefinitions,\n EntityConstructor as BaseEntityConstructor,\n Readonly,\n TableDef\n} from \"~/toolbox\";\nimport { Entity as BaseEntity } from \"~/toolbox\";\nimport type { ITableWriteBatch } from \"../table/types\";\nimport type {\n IEntity,\n IEntityQueryAllParams,\n IEntityQueryOneParams,\n IEntityReadBatch,\n IEntityWriteBatch\n} from \"./types\";\nimport type { IPutParamsItem } from \"../put\";\nimport { put } from \"../put\";\nimport type { GetRecordParamsKeys } from \"../get\";\nimport { get, getClean } from \"../get\";\nimport type { IDeleteItemKeys } from \"../delete\";\nimport { deleteItem } from \"../delete\";\nimport { createEntityReadBatch } from \"./EntityReadBatch\";\nimport { createEntityWriteBatch } from \"./EntityWriteBatch\";\nimport { createTableWriteBatch } from \"~/utils/table/TableWriteBatch\";\nimport { queryAllClean, queryOneClean } from \"../query\";\nimport type { GenericRecord } from \"@webiny/api/types\";\n\nexport type EntityConstructor<\n T extends Readonly<AttributeDefinitions> = Readonly<AttributeDefinitions>\n> = BaseEntityConstructor<\n TableDef,\n string,\n true,\n true,\n true,\n \"created\",\n \"modified\",\n \"entity\",\n false,\n T\n>;\n\nexport class Entity implements IEntity {\n public readonly entity: BaseEntity;\n\n public constructor(params: EntityConstructor) {\n this.entity = new BaseEntity(params);\n }\n\n public createEntityReader(): IEntityReadBatch {\n return createEntityReadBatch({\n entity: this.entity\n });\n }\n\n public createEntityWriter(): IEntityWriteBatch {\n return createEntityWriteBatch({\n entity: this.entity\n });\n }\n\n public createTableWriter(): ITableWriteBatch {\n return createTableWriteBatch({\n table: this.entity.table as TableDef\n });\n }\n\n public async put<T extends GenericRecord = GenericRecord>(\n item: IPutParamsItem<T>\n ): ReturnType<typeof put> {\n return put({\n entity: this.entity,\n item\n });\n }\n\n public async get<T>(keys: GetRecordParamsKeys): ReturnType<typeof get<T>> {\n return get<T>({\n entity: this.entity,\n keys\n });\n }\n\n public async getClean<T>(keys: GetRecordParamsKeys): ReturnType<typeof getClean<T>> {\n return getClean<T>({\n entity: this.entity,\n keys\n });\n }\n\n public async delete(keys: IDeleteItemKeys): ReturnType<typeof deleteItem> {\n return deleteItem({\n entity: this.entity,\n keys\n });\n }\n\n public queryOne<T>(params: IEntityQueryOneParams): Promise<T | null> {\n return queryOneClean<T>({\n ...params,\n entity: this.entity\n });\n }\n\n public queryAll<T>(params: IEntityQueryAllParams): Promise<T[]> {\n return queryAllClean<T>({\n ...params,\n entity: this.entity\n });\n }\n}\n\nexport const createEntity = (params: EntityConstructor): IEntity => {\n return new Entity(params);\n};\n"],"mappings":";;;;;;AAMA,IAAAA,QAAA,GAAAC,OAAA;AAUA,IAAAC,IAAA,GAAAD,OAAA;AAEA,IAAAE,IAAA,GAAAF,OAAA;AAEA,IAAAG,OAAA,GAAAH,OAAA;AACA,IAAAI,gBAAA,GAAAJ,OAAA;AACA,IAAAK,iBAAA,GAAAL,OAAA;AACA,IAAAM,gBAAA,GAAAN,OAAA;AACA,IAAAO,MAAA,GAAAP,OAAA;AAkBO,MAAMQ,MAAM,CAAoB;EAG5BC,WAAWA,CAACC,MAAyB,EAAE;IAC1C,IAAI,CAACC,MAAM,GAAG,IAAIC,eAAU,CAACF,MAAM,CAAC;EACxC;EAEOG,kBAAkBA,CAAA,EAAqB;IAC1C,OAAO,IAAAC,sCAAqB,EAAC;MACzBH,MAAM,EAAE,IAAI,CAACA;IACjB,CAAC,CAAC;EACN;EAEOI,kBAAkBA,CAAA,EAAsB;IAC3C,OAAO,IAAAC,wCAAsB,EAAC;MAC1BL,MAAM,EAAE,IAAI,CAACA;IACjB,CAAC,CAAC;EACN;EAEOM,iBAAiBA,CAAA,EAAqB;IACzC,OAAO,IAAAC,sCAAqB,EAAC;MACzBC,KAAK,EAAE,IAAI,CAACR,MAAM,CAACQ;IACvB,CAAC,CAAC;EACN;EAEA,MAAaC,GAAGA,CACZC,IAAuB,EACD;IACtB,OAAO,IAAAD,QAAG,EAAC;MACPT,MAAM,EAAE,IAAI,CAACA,MAAM;MACnBU;IACJ,CAAC,CAAC;EACN;EAEA,MAAaC,GAAGA,CAAIC,IAAyB,EAA6B;IACtE,OAAO,IAAAD,QAAG,EAAI;MACVX,MAAM,EAAE,IAAI,CAACA,MAAM;MACnBY;IACJ,CAAC,CAAC;EACN;EAEA,MAAaC,QAAQA,CAAID,IAAyB,EAAkC;IAChF,OAAO,IAAAC,aAAQ,EAAI;MACfb,MAAM,EAAE,IAAI,CAACA,MAAM;MACnBY;IACJ,CAAC,CAAC;EACN;EAEA,MAAaE,MAAMA,CAACF,IAAqB,EAAiC;IACtE,OAAO,IAAAG,kBAAU,EAAC;MACdf,MAAM,EAAE,IAAI,CAACA,MAAM;MACnBY;IACJ,CAAC,CAAC;EACN;EAEOI,QAAQA,CAAIjB,MAA6B,EAAqB;IACjE,OAAO,IAAAkB,oBAAa,EAAI;MACpB,GAAGlB,MAAM;MACTC,MAAM,EAAE,IAAI,CAACA;IACjB,CAAC,CAAC;EACN;EAEOkB,QAAQA,CAAInB,MAA6B,EAAgB;IAC5D,OAAO,IAAAoB,oBAAa,EAAI;MACpB,GAAGpB,MAAM;MACTC,MAAM,EAAE,IAAI,CAACA;IACjB,CAAC,CAAC;EACN;AACJ;AAACoB,OAAA,CAAAvB,MAAA,GAAAA,MAAA;AAEM,MAAMwB,YAAY,GAAItB,MAAyB,IAAc;EAChE,OAAO,IAAIF,MAAM,CAACE,MAAM,CAAC;AAC7B,CAAC;AAACqB,OAAA,CAAAC,YAAA,GAAAA,YAAA","ignoreList":[]}
@@ -1,6 +1,6 @@
1
1
  import type { IPutBatchItem } from "../batch/types";
2
2
  import type { IEntityReadBatch, IEntityReadBatchKey } from "./types";
3
- import { GenericRecord } from "@webiny/api/types";
3
+ import type { GenericRecord } from "@webiny/api/types";
4
4
  import type { EntityOption } from "./getEntity";
5
5
  export interface IEntityReadBatchParams {
6
6
  entity: EntityOption;
@@ -1 +1 @@
1
- {"version":3,"names":["_batchRead","require","_EntityReadBatchBuilder","_getEntity","EntityReadBatch","_items","constructor","params","entity","getEntity","builder","createEntityReadBatchBuilder","item","read","get","input","Array","isArray","push","map","execute","batchReadAll","table","items","exports","createEntityReadBatch"],"sources":["EntityReadBatch.ts"],"sourcesContent":["import type { IPutBatchItem } from \"~/utils/batch/types\";\nimport type {\n IEntityReadBatch,\n IEntityReadBatchBuilder,\n IEntityReadBatchBuilderGetResponse,\n IEntityReadBatchKey\n} from \"./types\";\nimport type { TableDef } from \"~/toolbox\";\nimport type { Entity as ToolboxEntity } from \"~/toolbox\";\nimport { batchReadAll } from \"~/utils/batch/batchRead\";\nimport { GenericRecord } from \"@webiny/api/types\";\nimport { createEntityReadBatchBuilder } from \"./EntityReadBatchBuilder\";\nimport type { EntityOption } from \"./getEntity\";\nimport { getEntity } from \"./getEntity\";\n\nexport interface IEntityReadBatchParams {\n entity: EntityOption;\n read?: IPutBatchItem[];\n}\n\nexport class EntityReadBatch implements IEntityReadBatch {\n private readonly entity: ToolboxEntity;\n private readonly builder: IEntityReadBatchBuilder;\n private readonly _items: IEntityReadBatchBuilderGetResponse[] = [];\n\n public constructor(params: IEntityReadBatchParams) {\n this.entity = getEntity(params.entity);\n this.builder = createEntityReadBatchBuilder(this.entity);\n for (const item of params.read || []) {\n this.get(item);\n }\n }\n public get(input: IEntityReadBatchKey | IEntityReadBatchKey[]): void {\n if (Array.isArray(input)) {\n this._items.push(\n ...input.map(item => {\n return this.builder.get(item);\n })\n );\n return;\n }\n this._items.push(this.builder.get(input));\n }\n\n public async execute<T = GenericRecord>() {\n return await batchReadAll<T>({\n table: this.entity.table as TableDef,\n items: this._items\n });\n }\n}\n\nexport const createEntityReadBatch = (params: IEntityReadBatchParams): IEntityReadBatch => {\n return new EntityReadBatch(params);\n};\n"],"mappings":";;;;;;AASA,IAAAA,UAAA,GAAAC,OAAA;AAEA,IAAAC,uBAAA,GAAAD,OAAA;AAEA,IAAAE,UAAA,GAAAF,OAAA;AAOO,MAAMG,eAAe,CAA6B;EAGpCC,MAAM,GAAyC,EAAE;EAE3DC,WAAWA,CAACC,MAA8B,EAAE;IAC/C,IAAI,CAACC,MAAM,GAAG,IAAAC,oBAAS,EAACF,MAAM,CAACC,MAAM,CAAC;IACtC,IAAI,CAACE,OAAO,GAAG,IAAAC,oDAA4B,EAAC,IAAI,CAACH,MAAM,CAAC;IACxD,KAAK,MAAMI,IAAI,IAAIL,MAAM,CAACM,IAAI,IAAI,EAAE,EAAE;MAClC,IAAI,CAACC,GAAG,CAACF,IAAI,CAAC;IAClB;EACJ;EACOE,GAAGA,CAACC,KAAkD,EAAQ;IACjE,IAAIC,KAAK,CAACC,OAAO,CAACF,KAAK,CAAC,EAAE;MACtB,IAAI,CAACV,MAAM,CAACa,IAAI,CACZ,GAAGH,KAAK,CAACI,GAAG,CAACP,IAAI,IAAI;QACjB,OAAO,IAAI,CAACF,OAAO,CAACI,GAAG,CAACF,IAAI,CAAC;MACjC,CAAC,CACL,CAAC;MACD;IACJ;IACA,IAAI,CAACP,MAAM,CAACa,IAAI,CAAC,IAAI,CAACR,OAAO,CAACI,GAAG,CAACC,KAAK,CAAC,CAAC;EAC7C;EAEA,MAAaK,OAAOA,CAAA,EAAsB;IACtC,OAAO,MAAM,IAAAC,uBAAY,EAAI;MACzBC,KAAK,EAAE,IAAI,CAACd,MAAM,CAACc,KAAiB;MACpCC,KAAK,EAAE,IAAI,CAAClB;IAChB,CAAC,CAAC;EACN;AACJ;AAACmB,OAAA,CAAApB,eAAA,GAAAA,eAAA;AAEM,MAAMqB,qBAAqB,GAAIlB,MAA8B,IAAuB;EACvF,OAAO,IAAIH,eAAe,CAACG,MAAM,CAAC;AACtC,CAAC;AAACiB,OAAA,CAAAC,qBAAA,GAAAA,qBAAA","ignoreList":[]}
1
+ {"version":3,"names":["_batchRead","require","_EntityReadBatchBuilder","_getEntity","EntityReadBatch","_items","constructor","params","entity","getEntity","builder","createEntityReadBatchBuilder","item","read","get","input","Array","isArray","push","map","execute","batchReadAll","table","items","exports","createEntityReadBatch"],"sources":["EntityReadBatch.ts"],"sourcesContent":["import type { IPutBatchItem } from \"~/utils/batch/types\";\nimport type {\n IEntityReadBatch,\n IEntityReadBatchBuilder,\n IEntityReadBatchBuilderGetResponse,\n IEntityReadBatchKey\n} from \"./types\";\nimport type { TableDef } from \"~/toolbox\";\nimport type { Entity as ToolboxEntity } from \"~/toolbox\";\nimport { batchReadAll } from \"~/utils/batch/batchRead\";\nimport type { GenericRecord } from \"@webiny/api/types\";\nimport { createEntityReadBatchBuilder } from \"./EntityReadBatchBuilder\";\nimport type { EntityOption } from \"./getEntity\";\nimport { getEntity } from \"./getEntity\";\n\nexport interface IEntityReadBatchParams {\n entity: EntityOption;\n read?: IPutBatchItem[];\n}\n\nexport class EntityReadBatch implements IEntityReadBatch {\n private readonly entity: ToolboxEntity;\n private readonly builder: IEntityReadBatchBuilder;\n private readonly _items: IEntityReadBatchBuilderGetResponse[] = [];\n\n public constructor(params: IEntityReadBatchParams) {\n this.entity = getEntity(params.entity);\n this.builder = createEntityReadBatchBuilder(this.entity);\n for (const item of params.read || []) {\n this.get(item);\n }\n }\n public get(input: IEntityReadBatchKey | IEntityReadBatchKey[]): void {\n if (Array.isArray(input)) {\n this._items.push(\n ...input.map(item => {\n return this.builder.get(item);\n })\n );\n return;\n }\n this._items.push(this.builder.get(input));\n }\n\n public async execute<T = GenericRecord>() {\n return await batchReadAll<T>({\n table: this.entity.table as TableDef,\n items: this._items\n });\n }\n}\n\nexport const createEntityReadBatch = (params: IEntityReadBatchParams): IEntityReadBatch => {\n return new EntityReadBatch(params);\n};\n"],"mappings":";;;;;;AASA,IAAAA,UAAA,GAAAC,OAAA;AAEA,IAAAC,uBAAA,GAAAD,OAAA;AAEA,IAAAE,UAAA,GAAAF,OAAA;AAOO,MAAMG,eAAe,CAA6B;EAGpCC,MAAM,GAAyC,EAAE;EAE3DC,WAAWA,CAACC,MAA8B,EAAE;IAC/C,IAAI,CAACC,MAAM,GAAG,IAAAC,oBAAS,EAACF,MAAM,CAACC,MAAM,CAAC;IACtC,IAAI,CAACE,OAAO,GAAG,IAAAC,oDAA4B,EAAC,IAAI,CAACH,MAAM,CAAC;IACxD,KAAK,MAAMI,IAAI,IAAIL,MAAM,CAACM,IAAI,IAAI,EAAE,EAAE;MAClC,IAAI,CAACC,GAAG,CAACF,IAAI,CAAC;IAClB;EACJ;EACOE,GAAGA,CAACC,KAAkD,EAAQ;IACjE,IAAIC,KAAK,CAACC,OAAO,CAACF,KAAK,CAAC,EAAE;MACtB,IAAI,CAACV,MAAM,CAACa,IAAI,CACZ,GAAGH,KAAK,CAACI,GAAG,CAACP,IAAI,IAAI;QACjB,OAAO,IAAI,CAACF,OAAO,CAACI,GAAG,CAACF,IAAI,CAAC;MACjC,CAAC,CACL,CAAC;MACD;IACJ;IACA,IAAI,CAACP,MAAM,CAACa,IAAI,CAAC,IAAI,CAACR,OAAO,CAACI,GAAG,CAACC,KAAK,CAAC,CAAC;EAC7C;EAEA,MAAaK,OAAOA,CAAA,EAAsB;IACtC,OAAO,MAAM,IAAAC,uBAAY,EAAI;MACzBC,KAAK,EAAE,IAAI,CAACd,MAAM,CAACc,KAAiB;MACpCC,KAAK,EAAE,IAAI,CAAClB;IAChB,CAAC,CAAC;EACN;AACJ;AAACmB,OAAA,CAAApB,eAAA,GAAAA,eAAA;AAEM,MAAMqB,qBAAqB,GAAIlB,MAA8B,IAAuB;EACvF,OAAO,IAAIH,eAAe,CAACG,MAAM,CAAC;AACtC,CAAC;AAACiB,OAAA,CAAAC,qBAAA,GAAAA,qBAAA","ignoreList":[]}
@@ -1,6 +1,6 @@
1
1
  import type { Entity as ToolboxEntity } from "../../toolbox";
2
2
  import type { IEntityReadBatchBuilder, IEntityReadBatchBuilderGetResponse, IEntityReadBatchKey } from "./types";
3
- import { Entity } from "./Entity";
3
+ import type { Entity } from "./Entity";
4
4
  import type { EntityOption } from "./getEntity";
5
5
  export declare class EntityReadBatchBuilder implements IEntityReadBatchBuilder {
6
6
  private readonly entity;
@@ -1 +1 @@
1
- {"version":3,"names":["_error","require","_getEntity","EntityReadBatchBuilder","constructor","entity","getEntity","get","item","result","getBatch","Table","WebinyError","name","Key","exports","createEntityReadBatchBuilder"],"sources":["EntityReadBatchBuilder.ts"],"sourcesContent":["import type { Entity as ToolboxEntity } from \"~/toolbox\";\nimport type {\n IEntityReadBatchBuilder,\n IEntityReadBatchBuilderGetResponse,\n IEntityReadBatchKey\n} from \"./types\";\nimport { WebinyError } from \"@webiny/error\";\nimport { Entity } from \"./Entity\";\nimport type { EntityOption } from \"./getEntity\";\nimport { getEntity } from \"./getEntity\";\n\nexport class EntityReadBatchBuilder implements IEntityReadBatchBuilder {\n private readonly entity: ToolboxEntity;\n\n public constructor(entity: EntityOption) {\n this.entity = getEntity(entity);\n }\n\n public get(item: IEntityReadBatchKey): IEntityReadBatchBuilderGetResponse {\n const result = this.entity.getBatch(item);\n if (!result.Table) {\n throw new WebinyError(`No table provided for entity ${this.entity.name}.`);\n } else if (!result.Key) {\n throw new WebinyError(`No key provided for entity ${this.entity.name}.`);\n }\n return result as IEntityReadBatchBuilderGetResponse;\n }\n}\n\nexport const createEntityReadBatchBuilder = (\n entity: ToolboxEntity | Entity\n): IEntityReadBatchBuilder => {\n return new EntityReadBatchBuilder(entity);\n};\n"],"mappings":";;;;;;AAMA,IAAAA,MAAA,GAAAC,OAAA;AAGA,IAAAC,UAAA,GAAAD,OAAA;AAEO,MAAME,sBAAsB,CAAoC;EAG5DC,WAAWA,CAACC,MAAoB,EAAE;IACrC,IAAI,CAACA,MAAM,GAAG,IAAAC,oBAAS,EAACD,MAAM,CAAC;EACnC;EAEOE,GAAGA,CAACC,IAAyB,EAAsC;IACtE,MAAMC,MAAM,GAAG,IAAI,CAACJ,MAAM,CAACK,QAAQ,CAACF,IAAI,CAAC;IACzC,IAAI,CAACC,MAAM,CAACE,KAAK,EAAE;MACf,MAAM,IAAIC,kBAAW,CAAC,gCAAgC,IAAI,CAACP,MAAM,CAACQ,IAAI,GAAG,CAAC;IAC9E,CAAC,MAAM,IAAI,CAACJ,MAAM,CAACK,GAAG,EAAE;MACpB,MAAM,IAAIF,kBAAW,CAAC,8BAA8B,IAAI,CAACP,MAAM,CAACQ,IAAI,GAAG,CAAC;IAC5E;IACA,OAAOJ,MAAM;EACjB;AACJ;AAACM,OAAA,CAAAZ,sBAAA,GAAAA,sBAAA;AAEM,MAAMa,4BAA4B,GACrCX,MAA8B,IACJ;EAC1B,OAAO,IAAIF,sBAAsB,CAACE,MAAM,CAAC;AAC7C,CAAC;AAACU,OAAA,CAAAC,4BAAA,GAAAA,4BAAA","ignoreList":[]}
1
+ {"version":3,"names":["_error","require","_getEntity","EntityReadBatchBuilder","constructor","entity","getEntity","get","item","result","getBatch","Table","WebinyError","name","Key","exports","createEntityReadBatchBuilder"],"sources":["EntityReadBatchBuilder.ts"],"sourcesContent":["import type { Entity as ToolboxEntity } from \"~/toolbox\";\nimport type {\n IEntityReadBatchBuilder,\n IEntityReadBatchBuilderGetResponse,\n IEntityReadBatchKey\n} from \"./types\";\nimport { WebinyError } from \"@webiny/error\";\nimport type { Entity } from \"./Entity\";\nimport type { EntityOption } from \"./getEntity\";\nimport { getEntity } from \"./getEntity\";\n\nexport class EntityReadBatchBuilder implements IEntityReadBatchBuilder {\n private readonly entity: ToolboxEntity;\n\n public constructor(entity: EntityOption) {\n this.entity = getEntity(entity);\n }\n\n public get(item: IEntityReadBatchKey): IEntityReadBatchBuilderGetResponse {\n const result = this.entity.getBatch(item);\n if (!result.Table) {\n throw new WebinyError(`No table provided for entity ${this.entity.name}.`);\n } else if (!result.Key) {\n throw new WebinyError(`No key provided for entity ${this.entity.name}.`);\n }\n return result as IEntityReadBatchBuilderGetResponse;\n }\n}\n\nexport const createEntityReadBatchBuilder = (\n entity: ToolboxEntity | Entity\n): IEntityReadBatchBuilder => {\n return new EntityReadBatchBuilder(entity);\n};\n"],"mappings":";;;;;;AAMA,IAAAA,MAAA,GAAAC,OAAA;AAGA,IAAAC,UAAA,GAAAD,OAAA;AAEO,MAAME,sBAAsB,CAAoC;EAG5DC,WAAWA,CAACC,MAAoB,EAAE;IACrC,IAAI,CAACA,MAAM,GAAG,IAAAC,oBAAS,EAACD,MAAM,CAAC;EACnC;EAEOE,GAAGA,CAACC,IAAyB,EAAsC;IACtE,MAAMC,MAAM,GAAG,IAAI,CAACJ,MAAM,CAACK,QAAQ,CAACF,IAAI,CAAC;IACzC,IAAI,CAACC,MAAM,CAACE,KAAK,EAAE;MACf,MAAM,IAAIC,kBAAW,CAAC,gCAAgC,IAAI,CAACP,MAAM,CAACQ,IAAI,GAAG,CAAC;IAC9E,CAAC,MAAM,IAAI,CAACJ,MAAM,CAACK,GAAG,EAAE;MACpB,MAAM,IAAIF,kBAAW,CAAC,8BAA8B,IAAI,CAACP,MAAM,CAACQ,IAAI,GAAG,CAAC;IAC5E;IACA,OAAOJ,MAAM;EACjB;AACJ;AAACM,OAAA,CAAAZ,sBAAA,GAAAA,sBAAA;AAEM,MAAMa,4BAA4B,GACrCX,MAA8B,IACJ;EAC1B,OAAO,IAAIF,sBAAsB,CAACE,MAAM,CAAC;AAC7C,CAAC;AAACU,OAAA,CAAAC,4BAAA,GAAAA,4BAAA","ignoreList":[]}
@@ -1,4 +1,4 @@
1
1
  import { Entity as ToolboxEntity } from "../../toolbox";
2
- import { Entity } from "./Entity";
2
+ import type { Entity } from "./Entity";
3
3
  export type EntityOption = ToolboxEntity | Entity;
4
4
  export declare const getEntity: (entity: EntityOption) => ToolboxEntity;
@@ -1 +1 @@
1
- {"version":3,"names":["_toolbox","require","getEntity","entity","result","ToolboxEntity","name","Error","table","exports"],"sources":["getEntity.ts"],"sourcesContent":["import { Entity as ToolboxEntity } from \"~/toolbox\";\nimport { Entity } from \"./Entity\";\n\nexport type EntityOption = ToolboxEntity | Entity;\n\nexport const getEntity = (entity: EntityOption): ToolboxEntity => {\n const result = entity instanceof ToolboxEntity ? entity : entity.entity;\n if (!result.name) {\n throw new Error(`No name provided for entity.`);\n } else if (!result.table) {\n throw new Error(`No table provided for entity ${result.name}.`);\n }\n return result;\n};\n"],"mappings":";;;;;;AAAA,IAAAA,QAAA,GAAAC,OAAA;AAKO,MAAMC,SAAS,GAAIC,MAAoB,IAAoB;EAC9D,MAAMC,MAAM,GAAGD,MAAM,YAAYE,eAAa,GAAGF,MAAM,GAAGA,MAAM,CAACA,MAAM;EACvE,IAAI,CAACC,MAAM,CAACE,IAAI,EAAE;IACd,MAAM,IAAIC,KAAK,CAAC,8BAA8B,CAAC;EACnD,CAAC,MAAM,IAAI,CAACH,MAAM,CAACI,KAAK,EAAE;IACtB,MAAM,IAAID,KAAK,CAAC,gCAAgCH,MAAM,CAACE,IAAI,GAAG,CAAC;EACnE;EACA,OAAOF,MAAM;AACjB,CAAC;AAACK,OAAA,CAAAP,SAAA,GAAAA,SAAA","ignoreList":[]}
1
+ {"version":3,"names":["_toolbox","require","getEntity","entity","result","ToolboxEntity","name","Error","table","exports"],"sources":["getEntity.ts"],"sourcesContent":["import { Entity as ToolboxEntity } from \"~/toolbox\";\nimport type { Entity } from \"./Entity\";\n\nexport type EntityOption = ToolboxEntity | Entity;\n\nexport const getEntity = (entity: EntityOption): ToolboxEntity => {\n const result = entity instanceof ToolboxEntity ? entity : entity.entity;\n if (!result.name) {\n throw new Error(`No name provided for entity.`);\n } else if (!result.table) {\n throw new Error(`No table provided for entity ${result.name}.`);\n }\n return result;\n};\n"],"mappings":";;;;;;AAAA,IAAAA,QAAA,GAAAC,OAAA;AAKO,MAAMC,SAAS,GAAIC,MAAoB,IAAoB;EAC9D,MAAMC,MAAM,GAAGD,MAAM,YAAYE,eAAa,GAAGF,MAAM,GAAGA,MAAM,CAACA,MAAM;EACvE,IAAI,CAACC,MAAM,CAACE,IAAI,EAAE;IACd,MAAM,IAAIC,KAAK,CAAC,8BAA8B,CAAC;EACnD,CAAC,MAAM,IAAI,CAACH,MAAM,CAACI,KAAK,EAAE;IACtB,MAAM,IAAID,KAAK,CAAC,gCAAgCH,MAAM,CAACE,IAAI,GAAG,CAAC;EACnE;EACA,OAAOF,MAAM;AACjB,CAAC;AAACK,OAAA,CAAAP,SAAA,GAAAA,SAAA","ignoreList":[]}
package/utils/filter.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import { PluginsContainer } from "@webiny/plugins";
2
- import { FieldPlugin } from "../plugins/definitions/FieldPlugin";
1
+ import type { PluginsContainer } from "@webiny/plugins";
2
+ import type { FieldPlugin } from "../plugins/definitions/FieldPlugin";
3
3
  export interface Params<T = any> {
4
4
  plugins: PluginsContainer;
5
5
  items: T[];
@@ -1 +1 @@
1
- {"version":3,"names":["_dotProp","_interopRequireDefault","require","_error","_ValueFilterPlugin","getMappedPlugins","params","plugins","byType","type","reduce","plugin","op","property","extractWhereArgs","key","result","split","field","shift","rawOp","length","join","operation","negate","match","replace","findFilterPlugin","WebinyError","multiSearchFieldOperations","createFilters","where","fields","keys","Object","filterPlugins","ValueFilterPlugin","filters","compareValue","undefined","includes","data","transformValue","paths","map","fieldPlugin","find","getField","value","getPath","filterPlugin","push","path","transform","Array","isArray","v","createFilterCallable","item","filter","some","dotProp","get","matched","matches","filterItems","items"],"sources":["filter.ts"],"sourcesContent":["import dotProp from \"dot-prop\";\nimport WebinyError from \"@webiny/error\";\nimport { Plugin, PluginsContainer } from \"@webiny/plugins\";\nimport { ValueFilterPlugin } from \"~/plugins/definitions/ValueFilterPlugin\";\nimport { FieldPlugin } from \"~/plugins/definitions/FieldPlugin\";\nimport { DynamoDbContainsFilter } from \"~/types\";\n\ntype TransformValue = (value: any) => any;\n\nexport interface Params<T = any> {\n plugins: PluginsContainer;\n items: T[];\n where: Record<string, any>;\n /**\n * An array of fields that require some special operation.\n */\n fields: FieldPlugin[];\n}\n\ninterface MappedPluginParams<T extends Plugin = Plugin> {\n plugins: PluginsContainer;\n type: string;\n property: keyof T;\n}\n\ninterface Filter {\n operation: string;\n compareValue: any;\n filterPlugin: ValueFilterPlugin;\n transformValue?: TransformValue;\n paths: string[];\n negate: boolean;\n}\n\nconst getMappedPlugins = <T extends Plugin>(params: MappedPluginParams<T>): Record<string, T> => {\n return params.plugins.byType<T>(params.type).reduce((plugins, plugin) => {\n /**\n * We expect op to be a string, that is why we cast.\n */\n const op = plugin[params.property] as unknown as string;\n plugins[op] = plugin;\n return plugins;\n }, {} as Record<string, T>);\n};\n\ninterface ExtractWhereArgsResult {\n field: string;\n operation: string;\n negate: boolean;\n}\nconst extractWhereArgs = (key: string): ExtractWhereArgsResult => {\n const result = key.split(\"_\");\n const field = result.shift() as string;\n const rawOp = result.length === 0 ? \"eq\" : result.join(\"_\");\n /**\n * When rawOp is not, it means it is equal negated so just return that.\n */\n if (rawOp === \"not\") {\n return {\n field,\n operation: \"eq\",\n negate: true\n };\n }\n const negate = rawOp.match(\"not_\") !== null;\n const operation = rawOp.replace(\"not_\", \"\");\n return {\n field,\n operation,\n negate\n };\n};\n\nconst findFilterPlugin = (\n plugins: Record<string, ValueFilterPlugin>,\n operation: string\n): ValueFilterPlugin => {\n if (plugins[operation]) {\n return plugins[operation];\n }\n throw new WebinyError(`Missing filter plugin definition.`, \"FILTER_PLUGIN_ERROR\", {\n operation\n });\n};\n\nconst multiSearchFieldOperations = [\"contains\", \"fuzzy\"];\n\nconst createFilters = (params: Omit<Params, \"items\">): Filter[] => {\n const { plugins, where, fields } = params;\n\n const keys = Object.keys(where);\n /**\n * Skip everything if there are no conditions to be applied.\n */\n if (keys.length === 0) {\n return [];\n }\n const filterPlugins = getMappedPlugins<ValueFilterPlugin>({\n plugins,\n type: ValueFilterPlugin.type,\n property: \"operation\"\n });\n\n return keys.reduce((filters, key) => {\n const compareValue = where[key];\n if (compareValue === undefined) {\n return filters;\n }\n /**\n * @see DynamoDbContainsFilter\n */\n if (multiSearchFieldOperations.includes(key) === true) {\n const data: DynamoDbContainsFilter = compareValue;\n let transformValue: TransformValue | undefined = undefined;\n const paths = data.fields.map(field => {\n const fieldPlugin = fields.find(plugin => plugin.getField() === field);\n if (fieldPlugin) {\n transformValue = (value: any) => {\n return fieldPlugin.transformValue(value);\n };\n return fieldPlugin.getPath();\n }\n return field;\n });\n\n const filterPlugin = findFilterPlugin(filterPlugins, key);\n filters.push({\n operation: filterPlugin.operation,\n compareValue: data.value,\n filterPlugin,\n transformValue,\n paths,\n negate: false\n });\n return filters;\n }\n\n const { field, operation, negate } = extractWhereArgs(key);\n\n const filterPlugin = findFilterPlugin(filterPlugins, operation);\n\n const fieldPlugin = fields.find(plugin => plugin.getField() === field);\n let path: string = field;\n let transformValue: TransformValue | undefined = undefined;\n if (fieldPlugin) {\n transformValue = (value: any) => {\n return fieldPlugin.transformValue(value);\n };\n path = fieldPlugin.getPath();\n }\n\n filters.push({\n operation: filterPlugin.operation,\n compareValue,\n filterPlugin,\n transformValue,\n paths: [path],\n negate\n });\n\n return filters;\n }, [] as Filter[]);\n};\n/**\n * Transforms the value with given transformer callable.\n */\nconst transform = (value: any, transformValue?: TransformValue): any => {\n if (!transformValue) {\n return value;\n }\n if (Array.isArray(value)) {\n return value.map(v => transformValue(v));\n }\n return transformValue(value);\n};\n/**\n * Creates a filter callable that we can send to the .filter() method of the array.\n */\nconst createFilterCallable = (params: Omit<Params, \"items\">): ((item: any) => boolean) | null => {\n const filters = createFilters(params);\n /**\n * Just return null so there are no filters to be applied.\n * Later in the code we check for null so we do not loop through the items.\n */\n if (filters.length === 0) {\n return null;\n }\n\n return (item: any) => {\n for (const filter of filters) {\n const result = filter.paths.some(path => {\n const value = transform(dotProp.get(item, path), filter.transformValue);\n const compareValue = transform(filter.compareValue, filter.transformValue);\n const matched = filter.filterPlugin.matches({\n value,\n compareValue\n });\n\n return filter.negate ? !matched : matched;\n });\n if (result === false) {\n return false;\n }\n }\n return true;\n };\n};\n\nexport function filterItems<T = any>(params: Params<T>): T[] {\n const filter = createFilterCallable(params);\n /**\n * No point in going through all the items when there are no filters to be applied.\n */\n if (!filter) {\n return params.items;\n }\n return params.items.filter(filter);\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_dotProp","_interopRequireDefault","require","_error","_ValueFilterPlugin","getMappedPlugins","params","plugins","byType","type","reduce","plugin","op","property","extractWhereArgs","key","result","split","field","shift","rawOp","length","join","operation","negate","match","replace","findFilterPlugin","WebinyError","multiSearchFieldOperations","createFilters","where","fields","keys","Object","filterPlugins","ValueFilterPlugin","filters","compareValue","undefined","includes","data","transformValue","paths","map","fieldPlugin","find","getField","value","getPath","filterPlugin","push","path","transform","Array","isArray","v","createFilterCallable","item","filter","some","dotProp","get","matched","matches","filterItems","items"],"sources":["filter.ts"],"sourcesContent":["import dotProp from \"dot-prop\";\nimport WebinyError from \"@webiny/error\";\nimport type { Plugin, PluginsContainer } from \"@webiny/plugins\";\nimport { ValueFilterPlugin } from \"~/plugins/definitions/ValueFilterPlugin\";\nimport type { FieldPlugin } from \"~/plugins/definitions/FieldPlugin\";\nimport type { DynamoDbContainsFilter } from \"~/types\";\n\ntype TransformValue = (value: any) => any;\n\nexport interface Params<T = any> {\n plugins: PluginsContainer;\n items: T[];\n where: Record<string, any>;\n /**\n * An array of fields that require some special operation.\n */\n fields: FieldPlugin[];\n}\n\ninterface MappedPluginParams<T extends Plugin = Plugin> {\n plugins: PluginsContainer;\n type: string;\n property: keyof T;\n}\n\ninterface Filter {\n operation: string;\n compareValue: any;\n filterPlugin: ValueFilterPlugin;\n transformValue?: TransformValue;\n paths: string[];\n negate: boolean;\n}\n\nconst getMappedPlugins = <T extends Plugin>(params: MappedPluginParams<T>): Record<string, T> => {\n return params.plugins.byType<T>(params.type).reduce((plugins, plugin) => {\n /**\n * We expect op to be a string, that is why we cast.\n */\n const op = plugin[params.property] as unknown as string;\n plugins[op] = plugin;\n return plugins;\n }, {} as Record<string, T>);\n};\n\ninterface ExtractWhereArgsResult {\n field: string;\n operation: string;\n negate: boolean;\n}\nconst extractWhereArgs = (key: string): ExtractWhereArgsResult => {\n const result = key.split(\"_\");\n const field = result.shift() as string;\n const rawOp = result.length === 0 ? \"eq\" : result.join(\"_\");\n /**\n * When rawOp is not, it means it is equal negated so just return that.\n */\n if (rawOp === \"not\") {\n return {\n field,\n operation: \"eq\",\n negate: true\n };\n }\n const negate = rawOp.match(\"not_\") !== null;\n const operation = rawOp.replace(\"not_\", \"\");\n return {\n field,\n operation,\n negate\n };\n};\n\nconst findFilterPlugin = (\n plugins: Record<string, ValueFilterPlugin>,\n operation: string\n): ValueFilterPlugin => {\n if (plugins[operation]) {\n return plugins[operation];\n }\n throw new WebinyError(`Missing filter plugin definition.`, \"FILTER_PLUGIN_ERROR\", {\n operation\n });\n};\n\nconst multiSearchFieldOperations = [\"contains\", \"fuzzy\"];\n\nconst createFilters = (params: Omit<Params, \"items\">): Filter[] => {\n const { plugins, where, fields } = params;\n\n const keys = Object.keys(where);\n /**\n * Skip everything if there are no conditions to be applied.\n */\n if (keys.length === 0) {\n return [];\n }\n const filterPlugins = getMappedPlugins<ValueFilterPlugin>({\n plugins,\n type: ValueFilterPlugin.type,\n property: \"operation\"\n });\n\n return keys.reduce((filters, key) => {\n const compareValue = where[key];\n if (compareValue === undefined) {\n return filters;\n }\n /**\n * @see DynamoDbContainsFilter\n */\n if (multiSearchFieldOperations.includes(key) === true) {\n const data: DynamoDbContainsFilter = compareValue;\n let transformValue: TransformValue | undefined = undefined;\n const paths = data.fields.map(field => {\n const fieldPlugin = fields.find(plugin => plugin.getField() === field);\n if (fieldPlugin) {\n transformValue = (value: any) => {\n return fieldPlugin.transformValue(value);\n };\n return fieldPlugin.getPath();\n }\n return field;\n });\n\n const filterPlugin = findFilterPlugin(filterPlugins, key);\n filters.push({\n operation: filterPlugin.operation,\n compareValue: data.value,\n filterPlugin,\n transformValue,\n paths,\n negate: false\n });\n return filters;\n }\n\n const { field, operation, negate } = extractWhereArgs(key);\n\n const filterPlugin = findFilterPlugin(filterPlugins, operation);\n\n const fieldPlugin = fields.find(plugin => plugin.getField() === field);\n let path: string = field;\n let transformValue: TransformValue | undefined = undefined;\n if (fieldPlugin) {\n transformValue = (value: any) => {\n return fieldPlugin.transformValue(value);\n };\n path = fieldPlugin.getPath();\n }\n\n filters.push({\n operation: filterPlugin.operation,\n compareValue,\n filterPlugin,\n transformValue,\n paths: [path],\n negate\n });\n\n return filters;\n }, [] as Filter[]);\n};\n/**\n * Transforms the value with given transformer callable.\n */\nconst transform = (value: any, transformValue?: TransformValue): any => {\n if (!transformValue) {\n return value;\n }\n if (Array.isArray(value)) {\n return value.map(v => transformValue(v));\n }\n return transformValue(value);\n};\n/**\n * Creates a filter callable that we can send to the .filter() method of the array.\n */\nconst createFilterCallable = (params: Omit<Params, \"items\">): ((item: any) => boolean) | null => {\n const filters = createFilters(params);\n /**\n * Just return null so there are no filters to be applied.\n * Later in the code we check for null so we do not loop through the items.\n */\n if (filters.length === 0) {\n return null;\n }\n\n return (item: any) => {\n for (const filter of filters) {\n const result = filter.paths.some(path => {\n const value = transform(dotProp.get(item, path), filter.transformValue);\n const compareValue = transform(filter.compareValue, filter.transformValue);\n const matched = filter.filterPlugin.matches({\n value,\n compareValue\n });\n\n return filter.negate ? !matched : matched;\n });\n if (result === false) {\n return false;\n }\n }\n return true;\n };\n};\n\nexport function filterItems<T = any>(params: Params<T>): T[] {\n const filter = createFilterCallable(params);\n /**\n * No point in going through all the items when there are no filters to be applied.\n */\n if (!filter) {\n return params.items;\n }\n return params.items.filter(filter);\n}\n"],"mappings":"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","ignoreList":[]}
package/utils/get.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { Entity } from "../toolbox";
1
+ import type { Entity } from "../toolbox";
2
2
  export interface GetRecordParamsKeys {
3
3
  PK: string;
4
4
  SK: string;
package/utils/get.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"names":["_cleanup","require","get","params","entity","keys","result","execute","Item","exports","getClean","cleanupItem"],"sources":["get.ts"],"sourcesContent":["import { Entity } from \"~/toolbox\";\nimport { cleanupItem } from \"~/utils/cleanup\";\n\nexport interface GetRecordParamsKeys {\n PK: string;\n SK: string;\n}\n\nexport interface GetRecordParams {\n entity: Entity;\n keys: GetRecordParamsKeys;\n}\n\n/**\n * Gets a single record from the DynamoDB table.\n * Returns either record or null.\n *\n * Be aware to wrap in try/catch to avoid the error killing your app.\n *\n * @throws\n */\nexport const get = async <T>(params: GetRecordParams): Promise<T | null> => {\n const { entity, keys } = params;\n\n const result = await entity.get(keys, {\n execute: true\n });\n\n if (!result?.Item) {\n return null;\n }\n return result.Item as T;\n};\n\nexport const getClean = async <T>(params: GetRecordParams): Promise<T | null> => {\n const result = await get<T>(params);\n if (!result) {\n return null;\n }\n return cleanupItem<T>(params.entity, result);\n};\n"],"mappings":";;;;;;AACA,IAAAA,QAAA,GAAAC,OAAA;AAYA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMC,GAAG,GAAG,MAAUC,MAAuB,IAAwB;EACxE,MAAM;IAAEC,MAAM;IAAEC;EAAK,CAAC,GAAGF,MAAM;EAE/B,MAAMG,MAAM,GAAG,MAAMF,MAAM,CAACF,GAAG,CAACG,IAAI,EAAE;IAClCE,OAAO,EAAE;EACb,CAAC,CAAC;EAEF,IAAI,CAACD,MAAM,EAAEE,IAAI,EAAE;IACf,OAAO,IAAI;EACf;EACA,OAAOF,MAAM,CAACE,IAAI;AACtB,CAAC;AAACC,OAAA,CAAAP,GAAA,GAAAA,GAAA;AAEK,MAAMQ,QAAQ,GAAG,MAAUP,MAAuB,IAAwB;EAC7E,MAAMG,MAAM,GAAG,MAAMJ,GAAG,CAAIC,MAAM,CAAC;EACnC,IAAI,CAACG,MAAM,EAAE;IACT,OAAO,IAAI;EACf;EACA,OAAO,IAAAK,oBAAW,EAAIR,MAAM,CAACC,MAAM,EAAEE,MAAM,CAAC;AAChD,CAAC;AAACG,OAAA,CAAAC,QAAA,GAAAA,QAAA","ignoreList":[]}
1
+ {"version":3,"names":["_cleanup","require","get","params","entity","keys","result","execute","Item","exports","getClean","cleanupItem"],"sources":["get.ts"],"sourcesContent":["import type { Entity } from \"~/toolbox\";\nimport { cleanupItem } from \"~/utils/cleanup\";\n\nexport interface GetRecordParamsKeys {\n PK: string;\n SK: string;\n}\n\nexport interface GetRecordParams {\n entity: Entity;\n keys: GetRecordParamsKeys;\n}\n\n/**\n * Gets a single record from the DynamoDB table.\n * Returns either record or null.\n *\n * Be aware to wrap in try/catch to avoid the error killing your app.\n *\n * @throws\n */\nexport const get = async <T>(params: GetRecordParams): Promise<T | null> => {\n const { entity, keys } = params;\n\n const result = await entity.get(keys, {\n execute: true\n });\n\n if (!result?.Item) {\n return null;\n }\n return result.Item as T;\n};\n\nexport const getClean = async <T>(params: GetRecordParams): Promise<T | null> => {\n const result = await get<T>(params);\n if (!result) {\n return null;\n }\n return cleanupItem<T>(params.entity, result);\n};\n"],"mappings":";;;;;;AACA,IAAAA,QAAA,GAAAC,OAAA;AAYA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMC,GAAG,GAAG,MAAUC,MAAuB,IAAwB;EACxE,MAAM;IAAEC,MAAM;IAAEC;EAAK,CAAC,GAAGF,MAAM;EAE/B,MAAMG,MAAM,GAAG,MAAMF,MAAM,CAACF,GAAG,CAACG,IAAI,EAAE;IAClCE,OAAO,EAAE;EACb,CAAC,CAAC;EAEF,IAAI,CAACD,MAAM,EAAEE,IAAI,EAAE;IACf,OAAO,IAAI;EACf;EACA,OAAOF,MAAM,CAACE,IAAI;AACtB,CAAC;AAACC,OAAA,CAAAP,GAAA,GAAAA,GAAA;AAEK,MAAMQ,QAAQ,GAAG,MAAUP,MAAuB,IAAwB;EAC7E,MAAMG,MAAM,GAAG,MAAMJ,GAAG,CAAIC,MAAM,CAAC;EACnC,IAAI,CAACG,MAAM,EAAE;IACT,OAAO,IAAI;EACf;EACA,OAAO,IAAAK,oBAAW,EAAIR,MAAM,CAACC,MAAM,EAAEE,MAAM,CAAC;AAChD,CAAC;AAACG,OAAA,CAAAC,QAAA,GAAAA,QAAA","ignoreList":[]}
package/utils/put.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import { Entity } from "../toolbox";
2
- import { GenericRecord } from "@webiny/api/types";
1
+ import type { Entity } from "../toolbox";
2
+ import type { GenericRecord } from "@webiny/api/types";
3
3
  export type IPutParamsItem<T extends GenericRecord = GenericRecord> = {
4
4
  PK: string;
5
5
  SK: string;
package/utils/put.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"names":["put","params","entity","item","execute","strictSchemaCheck","exports"],"sources":["put.ts"],"sourcesContent":["import { Entity } from \"~/toolbox\";\nimport { GenericRecord } from \"@webiny/api/types\";\n\nexport type IPutParamsItem<T extends GenericRecord = GenericRecord> = {\n PK: string;\n SK: string;\n [key: string]: any;\n} & T;\n\nexport interface IPutParams<T extends GenericRecord = GenericRecord> {\n entity: Entity;\n item: IPutParamsItem<T>;\n}\n\nexport const put = async <T extends GenericRecord = GenericRecord>(params: IPutParams<T>) => {\n const { entity, item } = params;\n\n return await entity.put(item, {\n execute: true,\n strictSchemaCheck: false\n });\n};\n"],"mappings":";;;;;;AAcO,MAAMA,GAAG,GAAG,MAAgDC,MAAqB,IAAK;EACzF,MAAM;IAAEC,MAAM;IAAEC;EAAK,CAAC,GAAGF,MAAM;EAE/B,OAAO,MAAMC,MAAM,CAACF,GAAG,CAACG,IAAI,EAAE;IAC1BC,OAAO,EAAE,IAAI;IACbC,iBAAiB,EAAE;EACvB,CAAC,CAAC;AACN,CAAC;AAACC,OAAA,CAAAN,GAAA,GAAAA,GAAA","ignoreList":[]}
1
+ {"version":3,"names":["put","params","entity","item","execute","strictSchemaCheck","exports"],"sources":["put.ts"],"sourcesContent":["import type { Entity } from \"~/toolbox\";\nimport type { GenericRecord } from \"@webiny/api/types\";\n\nexport type IPutParamsItem<T extends GenericRecord = GenericRecord> = {\n PK: string;\n SK: string;\n [key: string]: any;\n} & T;\n\nexport interface IPutParams<T extends GenericRecord = GenericRecord> {\n entity: Entity;\n item: IPutParamsItem<T>;\n}\n\nexport const put = async <T extends GenericRecord = GenericRecord>(params: IPutParams<T>) => {\n const { entity, item } = params;\n\n return await entity.put(item, {\n execute: true,\n strictSchemaCheck: false\n });\n};\n"],"mappings":";;;;;;AAcO,MAAMA,GAAG,GAAG,MAAgDC,MAAqB,IAAK;EACzF,MAAM;IAAEC,MAAM;IAAEC;EAAK,CAAC,GAAGF,MAAM;EAE/B,OAAO,MAAMC,MAAM,CAACF,GAAG,CAACG,IAAI,EAAE;IAC1BC,OAAO,EAAE,IAAI;IACbC,iBAAiB,EAAE;EACvB,CAAC,CAAC;AACN,CAAC;AAACC,OAAA,CAAAN,GAAA,GAAAA,GAAA","ignoreList":[]}
package/utils/query.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import { Entity, EntityQueryOptions } from "../toolbox";
2
- import { GenericRecord } from "@webiny/api/types";
1
+ import type { Entity, EntityQueryOptions } from "../toolbox";
2
+ import type { GenericRecord } from "@webiny/api/types";
3
3
  export interface QueryAllParams {
4
4
  entity: Entity<any>;
5
5
  partitionKey: string;
@@ -1 +1 @@
1
- {"version":3,"names":["_error","_interopRequireDefault","require","_cleanup","query","params","entity","previous","partitionKey","options","result","next","items","Items","Array","isArray","WebinyError","queryOne","limit","item","shift","exports","queryOneClean","cleanupItem","queryAll","results","previousResult","undefined","push","queryAllClean","cleanupItems","queryPerPage","lastEvaluatedKey","LastEvaluatedKey","queryPerPageClean","queryAllWithCallback","callback"],"sources":["query.ts"],"sourcesContent":["import WebinyError from \"@webiny/error\";\nimport { Entity, EntityQueryOptions } from \"~/toolbox\";\nimport { cleanupItem, cleanupItems } from \"~/utils/cleanup\";\nimport { GenericRecord } from \"@webiny/api/types\";\n\nexport interface QueryAllParams {\n entity: Entity<any>;\n partitionKey: string;\n options?: EntityQueryOptions;\n}\n\nexport interface QueryOneParams extends QueryAllParams {\n options?: Omit<EntityQueryOptions, \"limit\">;\n}\n\nexport interface QueryParams extends QueryAllParams {\n previous?: any;\n}\n\nexport interface QueryResult<T> {\n result: any | null;\n items: T[];\n}\n\nexport type DbItem<T> = T & {\n PK: string;\n SK: string;\n TYPE: string;\n GSI1_PK?: string;\n GSI1_SK?: string;\n};\n\n/**\n * Will run query only once. Pass the previous to run the query again to fetch new data.\n * It returns the result and the items it found.\n * Result is required to fetch the items that were not fetched in the previous run.\n */\nconst query = async <T>(params: QueryParams): Promise<QueryResult<T>> => {\n const { entity, previous, partitionKey, options } = params;\n let result;\n /**\n * In case there is no previous result we must make a new query.\n * This is the first query on the given partition key.\n */\n if (!previous) {\n result = await entity.query(partitionKey, options);\n } else if (typeof previous.next === \"function\") {\n /**\n * In case we have a previous result and it has a next method, we run it.\n * In case result of the next method is false, it means it has nothing else to read\n * and we return a null to keep the query from repeating.\n */\n result = await previous.next();\n if (result === false) {\n return {\n result: null,\n items: []\n };\n }\n } else {\n /**\n * This could probably never happen but keep it here just in case to break the query loop.\n * Basically, either previous does not exist or it exists and it does not have the next method\n * and at that point a result returned will be null and loop should not start again.\n */\n return {\n result: null,\n items: []\n };\n }\n /**\n * We expect the result to contain an Items array and if not, something went wrong, very wrong.\n */\n if (!result || !result.Items || !Array.isArray(result.Items)) {\n throw new WebinyError(\n \"Error when querying for content entries - no result.\",\n \"QUERY_ERROR\",\n {\n partitionKey,\n options\n }\n );\n }\n return {\n result,\n items: result.Items\n };\n};\n/**\n * Will run the query to fetch the first possible item from the database.\n */\nexport const queryOne = async <T>(params: QueryOneParams): Promise<DbItem<T> | null> => {\n const { items } = await query<DbItem<T>>({\n ...params,\n options: {\n ...(params.options || {}),\n limit: 1\n }\n });\n const item = items.shift();\n return item ? item : null;\n};\n\nexport const queryOneClean = async <T>(params: QueryOneParams): Promise<T | null> => {\n const result = await queryOne<T>(params);\n if (!result) {\n return null;\n }\n return cleanupItem(params.entity, result);\n};\n/**\n * Will run the query to fetch the results no matter how many iterations it needs to go through.\n */\nexport const queryAll = async <T>(params: QueryAllParams): Promise<DbItem<T>[]> => {\n const items: DbItem<T>[] = [];\n let results: QueryResult<DbItem<T>>;\n let previousResult: any = undefined;\n while ((results = await query({ ...params, previous: previousResult }))) {\n items.push(...results.items);\n if (!results.result) {\n return items;\n }\n previousResult = results.result;\n }\n return items;\n};\n\nexport const queryAllClean = async <T>(params: QueryAllParams): Promise<T[]> => {\n const results = await queryAll<T>(params);\n return cleanupItems(params.entity, results);\n};\n\nexport interface IQueryPageResponse<T> {\n items: T[];\n lastEvaluatedKey: GenericRecord;\n}\n\nexport const queryPerPage = async <T>(params: QueryAllParams): Promise<IQueryPageResponse<T>> => {\n const result = await query<T>({\n ...params,\n options: {\n ...params.options,\n limit: params.options?.limit || 50\n }\n });\n\n return {\n items: result.items,\n lastEvaluatedKey: result.result?.LastEvaluatedKey\n };\n};\n\nexport const queryPerPageClean = async <T>(\n params: QueryAllParams\n): Promise<IQueryPageResponse<T>> => {\n const result = await queryPerPage<T>(params);\n return {\n items: cleanupItems<T>(params.entity, result.items),\n lastEvaluatedKey: result.lastEvaluatedKey\n };\n};\n\n/**\n * Will run the query to fetch the results no matter how many iterations it needs to go through.\n * Results of each iteration will be passed to the provided callback\n */\nexport const queryAllWithCallback = async <T>(\n params: QueryAllParams,\n callback: (items: DbItem<T>[]) => Promise<void>\n): Promise<void> => {\n let results: QueryResult<DbItem<T>>;\n let previousResult: any = undefined;\n while ((results = await query({ ...params, previous: previousResult }))) {\n if (!results.result) {\n break;\n }\n await callback(results.items);\n previousResult = results.result;\n }\n};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_error","_interopRequireDefault","require","_cleanup","query","params","entity","previous","partitionKey","options","result","next","items","Items","Array","isArray","WebinyError","queryOne","limit","item","shift","exports","queryOneClean","cleanupItem","queryAll","results","previousResult","undefined","push","queryAllClean","cleanupItems","queryPerPage","lastEvaluatedKey","LastEvaluatedKey","queryPerPageClean","queryAllWithCallback","callback"],"sources":["query.ts"],"sourcesContent":["import WebinyError from \"@webiny/error\";\nimport type { Entity, EntityQueryOptions } from \"~/toolbox\";\nimport { cleanupItem, cleanupItems } from \"~/utils/cleanup\";\nimport type { GenericRecord } from \"@webiny/api/types\";\n\nexport interface QueryAllParams {\n entity: Entity<any>;\n partitionKey: string;\n options?: EntityQueryOptions;\n}\n\nexport interface QueryOneParams extends QueryAllParams {\n options?: Omit<EntityQueryOptions, \"limit\">;\n}\n\nexport interface QueryParams extends QueryAllParams {\n previous?: any;\n}\n\nexport interface QueryResult<T> {\n result: any | null;\n items: T[];\n}\n\nexport type DbItem<T> = T & {\n PK: string;\n SK: string;\n TYPE: string;\n GSI1_PK?: string;\n GSI1_SK?: string;\n};\n\n/**\n * Will run query only once. Pass the previous to run the query again to fetch new data.\n * It returns the result and the items it found.\n * Result is required to fetch the items that were not fetched in the previous run.\n */\nconst query = async <T>(params: QueryParams): Promise<QueryResult<T>> => {\n const { entity, previous, partitionKey, options } = params;\n let result;\n /**\n * In case there is no previous result we must make a new query.\n * This is the first query on the given partition key.\n */\n if (!previous) {\n result = await entity.query(partitionKey, options);\n } else if (typeof previous.next === \"function\") {\n /**\n * In case we have a previous result and it has a next method, we run it.\n * In case result of the next method is false, it means it has nothing else to read\n * and we return a null to keep the query from repeating.\n */\n result = await previous.next();\n if (result === false) {\n return {\n result: null,\n items: []\n };\n }\n } else {\n /**\n * This could probably never happen but keep it here just in case to break the query loop.\n * Basically, either previous does not exist or it exists and it does not have the next method\n * and at that point a result returned will be null and loop should not start again.\n */\n return {\n result: null,\n items: []\n };\n }\n /**\n * We expect the result to contain an Items array and if not, something went wrong, very wrong.\n */\n if (!result || !result.Items || !Array.isArray(result.Items)) {\n throw new WebinyError(\n \"Error when querying for content entries - no result.\",\n \"QUERY_ERROR\",\n {\n partitionKey,\n options\n }\n );\n }\n return {\n result,\n items: result.Items\n };\n};\n/**\n * Will run the query to fetch the first possible item from the database.\n */\nexport const queryOne = async <T>(params: QueryOneParams): Promise<DbItem<T> | null> => {\n const { items } = await query<DbItem<T>>({\n ...params,\n options: {\n ...(params.options || {}),\n limit: 1\n }\n });\n const item = items.shift();\n return item ? item : null;\n};\n\nexport const queryOneClean = async <T>(params: QueryOneParams): Promise<T | null> => {\n const result = await queryOne<T>(params);\n if (!result) {\n return null;\n }\n return cleanupItem(params.entity, result);\n};\n/**\n * Will run the query to fetch the results no matter how many iterations it needs to go through.\n */\nexport const queryAll = async <T>(params: QueryAllParams): Promise<DbItem<T>[]> => {\n const items: DbItem<T>[] = [];\n let results: QueryResult<DbItem<T>>;\n let previousResult: any = undefined;\n while ((results = await query({ ...params, previous: previousResult }))) {\n items.push(...results.items);\n if (!results.result) {\n return items;\n }\n previousResult = results.result;\n }\n return items;\n};\n\nexport const queryAllClean = async <T>(params: QueryAllParams): Promise<T[]> => {\n const results = await queryAll<T>(params);\n return cleanupItems(params.entity, results);\n};\n\nexport interface IQueryPageResponse<T> {\n items: T[];\n lastEvaluatedKey: GenericRecord;\n}\n\nexport const queryPerPage = async <T>(params: QueryAllParams): Promise<IQueryPageResponse<T>> => {\n const result = await query<T>({\n ...params,\n options: {\n ...params.options,\n limit: params.options?.limit || 50\n }\n });\n\n return {\n items: result.items,\n lastEvaluatedKey: result.result?.LastEvaluatedKey\n };\n};\n\nexport const queryPerPageClean = async <T>(\n params: QueryAllParams\n): Promise<IQueryPageResponse<T>> => {\n const result = await queryPerPage<T>(params);\n return {\n items: cleanupItems<T>(params.entity, result.items),\n lastEvaluatedKey: result.lastEvaluatedKey\n };\n};\n\n/**\n * Will run the query to fetch the results no matter how many iterations it needs to go through.\n * Results of each iteration will be passed to the provided callback\n */\nexport const queryAllWithCallback = async <T>(\n params: QueryAllParams,\n callback: (items: DbItem<T>[]) => Promise<void>\n): Promise<void> => {\n let results: QueryResult<DbItem<T>>;\n let previousResult: any = undefined;\n while ((results = await query({ ...params, previous: previousResult }))) {\n if (!results.result) {\n break;\n }\n await callback(results.items);\n previousResult = results.result;\n }\n};\n"],"mappings":"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","ignoreList":[]}
package/utils/scan.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import type { ScanInput, ScanOutput } from "@webiny/aws-sdk/client-dynamodb";
2
2
  import type { Entity, ScanOptions, TableDef } from "../toolbox";
3
- import { ExecuteWithRetryOptions } from "@webiny/utils";
3
+ import type { ExecuteWithRetryOptions } from "@webiny/utils";
4
4
  export type { ScanOptions, ScanInput, ScanOutput };
5
5
  export interface BaseScanParams {
6
6
  options?: ScanOptions;
package/utils/scan.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"names":["_utils","require","createNext","result","LastEvaluatedKey","next","undefined","response","convertResult","items","Items","count","Count","scannedCount","ScannedCount","lastEvaluatedKey","error","requestId","$response","scan","params","options","table","entity","Error","JSON","stringify","execute","exports","scanWithCallback","callback","usingRetry","Boolean","retry","retryOptions","executeScan","getInitialResult","executeWithRetry","length","callbackResult","mustBreak","executeNext","getNextResult"],"sources":["scan.ts"],"sourcesContent":["import type { ScanInput, ScanOutput } from \"@webiny/aws-sdk/client-dynamodb\";\nimport type { Entity, ScanOptions, TableDef } from \"~/toolbox\";\nimport { executeWithRetry, ExecuteWithRetryOptions } from \"@webiny/utils\";\n\nexport type { ScanOptions, ScanInput, ScanOutput };\n\nexport interface BaseScanParams {\n options?: ScanOptions;\n params?: Partial<ScanInput>;\n}\n\nexport interface ScanWithTable extends BaseScanParams {\n table: TableDef;\n entity?: never;\n}\n\nexport interface ScanWithEntity extends BaseScanParams {\n entity: Entity;\n table?: never;\n}\n\nexport type ScanParams = ScanWithTable | ScanWithEntity;\n\nexport interface ScanResponse<T = any> {\n items: T[];\n count?: number;\n scannedCount?: number;\n lastEvaluatedKey?: ScanOutput[\"LastEvaluatedKey\"];\n next?: () => Promise<ScanResponse<T>>;\n requestId: string;\n error: any;\n}\n\ninterface DdbScanResult<T> {\n Items?: T[];\n Count?: number;\n ScannedCount?: number;\n LastEvaluatedKey?: ScanOutput[\"LastEvaluatedKey\"];\n next?: () => Promise<DdbScanResult<T>>;\n error?: any;\n $response?: {\n requestId: string;\n };\n}\n\ntype NextCb<T> = () => Promise<ScanResponse<T>>;\n\nconst createNext = <T>(result: DdbScanResult<T>): NextCb<T> | undefined => {\n if (!result?.LastEvaluatedKey || !result.next) {\n return undefined;\n }\n return async () => {\n const response = await result!.next!();\n return convertResult(response);\n };\n};\n\nconst convertResult = <T>(result: DdbScanResult<T>): ScanResponse<T> => {\n return {\n items: result.Items || [],\n count: result.Count,\n scannedCount: result.ScannedCount,\n lastEvaluatedKey: result.LastEvaluatedKey || undefined,\n next: createNext<T>(result),\n error: result.error,\n requestId: result.$response?.requestId || \"\"\n };\n};\n\nexport type ScanDbItem<T> = T & {\n PK: string;\n SK: string;\n GSI1_PK: string;\n GSI1_SK: string;\n TYPE: string;\n};\n\nexport const scan = async <T>(params: ScanParams): Promise<ScanResponse<T>> => {\n const { options } = params;\n\n const table = params.table ? params.table : params.entity.table;\n if (!table) {\n throw new Error(`Missing table for scan: ${JSON.stringify(options)}`);\n }\n\n const result = await table.scan(\n {\n ...options,\n execute: true\n },\n params.params\n );\n\n return convertResult(result) as ScanResponse<T>;\n};\n\ninterface ScanWithCallbackOptions {\n retry?: true | ExecuteWithRetryOptions;\n}\n\nexport const scanWithCallback = async <T>(\n params: ScanParams,\n callback: (result: ScanResponse<ScanDbItem<T>>) => Promise<void | boolean>,\n options?: ScanWithCallbackOptions\n): Promise<void> => {\n // For backwards compatibility, we still allow for executing the scan without retries.\n const usingRetry = Boolean(options?.retry);\n const retryOptions = options?.retry === true ? {} : options?.retry;\n\n const executeScan = () => scan<ScanDbItem<T>>(params);\n const getInitialResult = () => {\n if (usingRetry) {\n return executeWithRetry(executeScan, retryOptions);\n }\n return executeScan();\n };\n\n let result = await getInitialResult();\n\n if (!result.items?.length && !result.lastEvaluatedKey) {\n return;\n }\n\n // If the result of the callback was `false`, that means the\n // user's intention was to stop further table scanning.\n const callbackResult = await callback(result);\n const mustBreak = callbackResult === false;\n if (mustBreak) {\n return;\n }\n\n while (result.next) {\n const executeNext = () => result.next!();\n const getNextResult = () => {\n if (usingRetry) {\n return executeWithRetry(executeNext, retryOptions);\n }\n return executeNext();\n };\n\n result = await getNextResult();\n\n // If the result of the callback was `false`, that means the\n // user's intention was to stop further table scanning.\n const callbackResult = await callback(result);\n const mustBreak = callbackResult === false;\n if (mustBreak) {\n break;\n }\n\n if (!result.next) {\n return;\n }\n }\n};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_utils","require","createNext","result","LastEvaluatedKey","next","undefined","response","convertResult","items","Items","count","Count","scannedCount","ScannedCount","lastEvaluatedKey","error","requestId","$response","scan","params","options","table","entity","Error","JSON","stringify","execute","exports","scanWithCallback","callback","usingRetry","Boolean","retry","retryOptions","executeScan","getInitialResult","executeWithRetry","length","callbackResult","mustBreak","executeNext","getNextResult"],"sources":["scan.ts"],"sourcesContent":["import type { ScanInput, ScanOutput } from \"@webiny/aws-sdk/client-dynamodb\";\nimport type { Entity, ScanOptions, TableDef } from \"~/toolbox\";\nimport type { ExecuteWithRetryOptions } from \"@webiny/utils\";\nimport { executeWithRetry } from \"@webiny/utils\";\n\nexport type { ScanOptions, ScanInput, ScanOutput };\n\nexport interface BaseScanParams {\n options?: ScanOptions;\n params?: Partial<ScanInput>;\n}\n\nexport interface ScanWithTable extends BaseScanParams {\n table: TableDef;\n entity?: never;\n}\n\nexport interface ScanWithEntity extends BaseScanParams {\n entity: Entity;\n table?: never;\n}\n\nexport type ScanParams = ScanWithTable | ScanWithEntity;\n\nexport interface ScanResponse<T = any> {\n items: T[];\n count?: number;\n scannedCount?: number;\n lastEvaluatedKey?: ScanOutput[\"LastEvaluatedKey\"];\n next?: () => Promise<ScanResponse<T>>;\n requestId: string;\n error: any;\n}\n\ninterface DdbScanResult<T> {\n Items?: T[];\n Count?: number;\n ScannedCount?: number;\n LastEvaluatedKey?: ScanOutput[\"LastEvaluatedKey\"];\n next?: () => Promise<DdbScanResult<T>>;\n error?: any;\n $response?: {\n requestId: string;\n };\n}\n\ntype NextCb<T> = () => Promise<ScanResponse<T>>;\n\nconst createNext = <T>(result: DdbScanResult<T>): NextCb<T> | undefined => {\n if (!result?.LastEvaluatedKey || !result.next) {\n return undefined;\n }\n return async () => {\n const response = await result!.next!();\n return convertResult(response);\n };\n};\n\nconst convertResult = <T>(result: DdbScanResult<T>): ScanResponse<T> => {\n return {\n items: result.Items || [],\n count: result.Count,\n scannedCount: result.ScannedCount,\n lastEvaluatedKey: result.LastEvaluatedKey || undefined,\n next: createNext<T>(result),\n error: result.error,\n requestId: result.$response?.requestId || \"\"\n };\n};\n\nexport type ScanDbItem<T> = T & {\n PK: string;\n SK: string;\n GSI1_PK: string;\n GSI1_SK: string;\n TYPE: string;\n};\n\nexport const scan = async <T>(params: ScanParams): Promise<ScanResponse<T>> => {\n const { options } = params;\n\n const table = params.table ? params.table : params.entity.table;\n if (!table) {\n throw new Error(`Missing table for scan: ${JSON.stringify(options)}`);\n }\n\n const result = await table.scan(\n {\n ...options,\n execute: true\n },\n params.params\n );\n\n return convertResult(result) as ScanResponse<T>;\n};\n\ninterface ScanWithCallbackOptions {\n retry?: true | ExecuteWithRetryOptions;\n}\n\nexport const scanWithCallback = async <T>(\n params: ScanParams,\n callback: (result: ScanResponse<ScanDbItem<T>>) => Promise<void | boolean>,\n options?: ScanWithCallbackOptions\n): Promise<void> => {\n // For backwards compatibility, we still allow for executing the scan without retries.\n const usingRetry = Boolean(options?.retry);\n const retryOptions = options?.retry === true ? {} : options?.retry;\n\n const executeScan = () => scan<ScanDbItem<T>>(params);\n const getInitialResult = () => {\n if (usingRetry) {\n return executeWithRetry(executeScan, retryOptions);\n }\n return executeScan();\n };\n\n let result = await getInitialResult();\n\n if (!result.items?.length && !result.lastEvaluatedKey) {\n return;\n }\n\n // If the result of the callback was `false`, that means the\n // user's intention was to stop further table scanning.\n const callbackResult = await callback(result);\n const mustBreak = callbackResult === false;\n if (mustBreak) {\n return;\n }\n\n while (result.next) {\n const executeNext = () => result.next!();\n const getNextResult = () => {\n if (usingRetry) {\n return executeWithRetry(executeNext, retryOptions);\n }\n return executeNext();\n };\n\n result = await getNextResult();\n\n // If the result of the callback was `false`, that means the\n // user's intention was to stop further table scanning.\n const callbackResult = await callback(result);\n const mustBreak = callbackResult === false;\n if (mustBreak) {\n break;\n }\n\n if (!result.next) {\n return;\n }\n }\n};\n"],"mappings":"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","ignoreList":[]}
package/utils/sort.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { FieldPlugin } from "../plugins/definitions/FieldPlugin";
1
+ import type { FieldPlugin } from "../plugins/definitions/FieldPlugin";
2
2
  interface Params<T> {
3
3
  /**
4
4
  * The items we are sorting.
package/utils/sort.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"names":["_orderBy","_interopRequireDefault","require","_error","extractSort","sortBy","fields","result","split","length","WebinyError","field","order","fieldPlugin","find","f","getField","isSortable","reverse","toUpperCase","sortItems","params","items","sort","initialSort","Array","isArray","info","sorters","orders","path","getPath","push","lodashOrderBy"],"sources":["sort.ts"],"sourcesContent":["import lodashOrderBy from \"lodash/orderBy\";\nimport WebinyError from \"@webiny/error\";\nimport { FieldPlugin } from \"~/plugins/definitions/FieldPlugin\";\n\ninterface Info {\n sorters: string[];\n orders: (boolean | \"asc\" | \"desc\")[];\n}\n\ninterface Response {\n reverse: boolean;\n field: string;\n}\n\nconst extractSort = (sortBy: string, fields: FieldPlugin[]): Response => {\n const result = sortBy.split(\"_\");\n if (result.length !== 2) {\n throw new WebinyError(\n \"Problem in determining the sorting for the entry items.\",\n \"SORT_ERROR\",\n {\n sortBy\n }\n );\n }\n const [field, order] = result;\n\n if (!field) {\n throw new WebinyError(\"Sorting field does not exist.\", \"SORTING_FIELD_ERROR\", {\n field,\n order,\n fields\n });\n }\n const fieldPlugin = fields.find(f => f.getField() === field);\n const isSortable = fieldPlugin ? fieldPlugin.isSortable() : true;\n if (isSortable === false) {\n throw new WebinyError(`Cannot sort by given field: \"${field}\".`, \"UNSUPPORTED_SORT_ERROR\", {\n fields,\n field\n });\n }\n\n return {\n field,\n reverse: order.toUpperCase() === \"DESC\"\n };\n};\n\ninterface Params<T> {\n /**\n * The items we are sorting.\n */\n items: T[];\n /**\n * Sort options. For example: [\"id_ASC\"]\n */\n sort?: string[];\n /**\n * Fields we can sort by.\n */\n fields?: FieldPlugin[];\n}\n\nexport function sortItems<T = any>(params: Params<T>): T[] {\n const { items, sort: initialSort = [], fields = [] } = params;\n /**\n * Skip sorting if nothing was passed to sort by or nothing to sort.\n */\n if (items.length <= 1 || Array.isArray(initialSort) === false || initialSort.length === 0) {\n return items;\n }\n\n const info: Info = {\n sorters: [],\n orders: []\n };\n\n for (const sort of initialSort) {\n /**\n * Possibly empty array item was passed.\n */\n if (!sort) {\n continue;\n }\n const { field, reverse } = extractSort(sort, fields);\n const fieldPlugin = fields.find(f => f.getField() === field);\n const path = fieldPlugin ? fieldPlugin.getPath() : field;\n\n info.sorters.push(path);\n info.orders.push(reverse === true ? \"desc\" : \"asc\");\n }\n\n if (info.sorters.length === 0) {\n return items;\n }\n\n return lodashOrderBy(items, info.sorters, info.orders);\n}\n"],"mappings":";;;;;;;AAAA,IAAAA,QAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,MAAA,GAAAF,sBAAA,CAAAC,OAAA;AAaA,MAAME,WAAW,GAAGA,CAACC,MAAc,EAAEC,MAAqB,KAAe;EACrE,MAAMC,MAAM,GAAGF,MAAM,CAACG,KAAK,CAAC,GAAG,CAAC;EAChC,IAAID,MAAM,CAACE,MAAM,KAAK,CAAC,EAAE;IACrB,MAAM,IAAIC,cAAW,CACjB,yDAAyD,EACzD,YAAY,EACZ;MACIL;IACJ,CACJ,CAAC;EACL;EACA,MAAM,CAACM,KAAK,EAAEC,KAAK,CAAC,GAAGL,MAAM;EAE7B,IAAI,CAACI,KAAK,EAAE;IACR,MAAM,IAAID,cAAW,CAAC,+BAA+B,EAAE,qBAAqB,EAAE;MAC1EC,KAAK;MACLC,KAAK;MACLN;IACJ,CAAC,CAAC;EACN;EACA,MAAMO,WAAW,GAAGP,MAAM,CAACQ,IAAI,CAACC,CAAC,IAAIA,CAAC,CAACC,QAAQ,CAAC,CAAC,KAAKL,KAAK,CAAC;EAC5D,MAAMM,UAAU,GAAGJ,WAAW,GAAGA,WAAW,CAACI,UAAU,CAAC,CAAC,GAAG,IAAI;EAChE,IAAIA,UAAU,KAAK,KAAK,EAAE;IACtB,MAAM,IAAIP,cAAW,CAAC,gCAAgCC,KAAK,IAAI,EAAE,wBAAwB,EAAE;MACvFL,MAAM;MACNK;IACJ,CAAC,CAAC;EACN;EAEA,OAAO;IACHA,KAAK;IACLO,OAAO,EAAEN,KAAK,CAACO,WAAW,CAAC,CAAC,KAAK;EACrC,CAAC;AACL,CAAC;AAiBM,SAASC,SAASA,CAAUC,MAAiB,EAAO;EACvD,MAAM;IAAEC,KAAK;IAAEC,IAAI,EAAEC,WAAW,GAAG,EAAE;IAAElB,MAAM,GAAG;EAAG,CAAC,GAAGe,MAAM;EAC7D;AACJ;AACA;EACI,IAAIC,KAAK,CAACb,MAAM,IAAI,CAAC,IAAIgB,KAAK,CAACC,OAAO,CAACF,WAAW,CAAC,KAAK,KAAK,IAAIA,WAAW,CAACf,MAAM,KAAK,CAAC,EAAE;IACvF,OAAOa,KAAK;EAChB;EAEA,MAAMK,IAAU,GAAG;IACfC,OAAO,EAAE,EAAE;IACXC,MAAM,EAAE;EACZ,CAAC;EAED,KAAK,MAAMN,IAAI,IAAIC,WAAW,EAAE;IAC5B;AACR;AACA;IACQ,IAAI,CAACD,IAAI,EAAE;MACP;IACJ;IACA,MAAM;MAAEZ,KAAK;MAAEO;IAAQ,CAAC,GAAGd,WAAW,CAACmB,IAAI,EAAEjB,MAAM,CAAC;IACpD,MAAMO,WAAW,GAAGP,MAAM,CAACQ,IAAI,CAACC,CAAC,IAAIA,CAAC,CAACC,QAAQ,CAAC,CAAC,KAAKL,KAAK,CAAC;IAC5D,MAAMmB,IAAI,GAAGjB,WAAW,GAAGA,WAAW,CAACkB,OAAO,CAAC,CAAC,GAAGpB,KAAK;IAExDgB,IAAI,CAACC,OAAO,CAACI,IAAI,CAACF,IAAI,CAAC;IACvBH,IAAI,CAACE,MAAM,CAACG,IAAI,CAACd,OAAO,KAAK,IAAI,GAAG,MAAM,GAAG,KAAK,CAAC;EACvD;EAEA,IAAIS,IAAI,CAACC,OAAO,CAACnB,MAAM,KAAK,CAAC,EAAE;IAC3B,OAAOa,KAAK;EAChB;EAEA,OAAO,IAAAW,gBAAa,EAACX,KAAK,EAAEK,IAAI,CAACC,OAAO,EAAED,IAAI,CAACE,MAAM,CAAC;AAC1D","ignoreList":[]}
1
+ {"version":3,"names":["_orderBy","_interopRequireDefault","require","_error","extractSort","sortBy","fields","result","split","length","WebinyError","field","order","fieldPlugin","find","f","getField","isSortable","reverse","toUpperCase","sortItems","params","items","sort","initialSort","Array","isArray","info","sorters","orders","path","getPath","push","lodashOrderBy"],"sources":["sort.ts"],"sourcesContent":["import lodashOrderBy from \"lodash/orderBy\";\nimport WebinyError from \"@webiny/error\";\nimport type { FieldPlugin } from \"~/plugins/definitions/FieldPlugin\";\n\ninterface Info {\n sorters: string[];\n orders: (boolean | \"asc\" | \"desc\")[];\n}\n\ninterface Response {\n reverse: boolean;\n field: string;\n}\n\nconst extractSort = (sortBy: string, fields: FieldPlugin[]): Response => {\n const result = sortBy.split(\"_\");\n if (result.length !== 2) {\n throw new WebinyError(\n \"Problem in determining the sorting for the entry items.\",\n \"SORT_ERROR\",\n {\n sortBy\n }\n );\n }\n const [field, order] = result;\n\n if (!field) {\n throw new WebinyError(\"Sorting field does not exist.\", \"SORTING_FIELD_ERROR\", {\n field,\n order,\n fields\n });\n }\n const fieldPlugin = fields.find(f => f.getField() === field);\n const isSortable = fieldPlugin ? fieldPlugin.isSortable() : true;\n if (isSortable === false) {\n throw new WebinyError(`Cannot sort by given field: \"${field}\".`, \"UNSUPPORTED_SORT_ERROR\", {\n fields,\n field\n });\n }\n\n return {\n field,\n reverse: order.toUpperCase() === \"DESC\"\n };\n};\n\ninterface Params<T> {\n /**\n * The items we are sorting.\n */\n items: T[];\n /**\n * Sort options. For example: [\"id_ASC\"]\n */\n sort?: string[];\n /**\n * Fields we can sort by.\n */\n fields?: FieldPlugin[];\n}\n\nexport function sortItems<T = any>(params: Params<T>): T[] {\n const { items, sort: initialSort = [], fields = [] } = params;\n /**\n * Skip sorting if nothing was passed to sort by or nothing to sort.\n */\n if (items.length <= 1 || Array.isArray(initialSort) === false || initialSort.length === 0) {\n return items;\n }\n\n const info: Info = {\n sorters: [],\n orders: []\n };\n\n for (const sort of initialSort) {\n /**\n * Possibly empty array item was passed.\n */\n if (!sort) {\n continue;\n }\n const { field, reverse } = extractSort(sort, fields);\n const fieldPlugin = fields.find(f => f.getField() === field);\n const path = fieldPlugin ? fieldPlugin.getPath() : field;\n\n info.sorters.push(path);\n info.orders.push(reverse === true ? \"desc\" : \"asc\");\n }\n\n if (info.sorters.length === 0) {\n return items;\n }\n\n return lodashOrderBy(items, info.sorters, info.orders);\n}\n"],"mappings":";;;;;;;AAAA,IAAAA,QAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,MAAA,GAAAF,sBAAA,CAAAC,OAAA;AAaA,MAAME,WAAW,GAAGA,CAACC,MAAc,EAAEC,MAAqB,KAAe;EACrE,MAAMC,MAAM,GAAGF,MAAM,CAACG,KAAK,CAAC,GAAG,CAAC;EAChC,IAAID,MAAM,CAACE,MAAM,KAAK,CAAC,EAAE;IACrB,MAAM,IAAIC,cAAW,CACjB,yDAAyD,EACzD,YAAY,EACZ;MACIL;IACJ,CACJ,CAAC;EACL;EACA,MAAM,CAACM,KAAK,EAAEC,KAAK,CAAC,GAAGL,MAAM;EAE7B,IAAI,CAACI,KAAK,EAAE;IACR,MAAM,IAAID,cAAW,CAAC,+BAA+B,EAAE,qBAAqB,EAAE;MAC1EC,KAAK;MACLC,KAAK;MACLN;IACJ,CAAC,CAAC;EACN;EACA,MAAMO,WAAW,GAAGP,MAAM,CAACQ,IAAI,CAACC,CAAC,IAAIA,CAAC,CAACC,QAAQ,CAAC,CAAC,KAAKL,KAAK,CAAC;EAC5D,MAAMM,UAAU,GAAGJ,WAAW,GAAGA,WAAW,CAACI,UAAU,CAAC,CAAC,GAAG,IAAI;EAChE,IAAIA,UAAU,KAAK,KAAK,EAAE;IACtB,MAAM,IAAIP,cAAW,CAAC,gCAAgCC,KAAK,IAAI,EAAE,wBAAwB,EAAE;MACvFL,MAAM;MACNK;IACJ,CAAC,CAAC;EACN;EAEA,OAAO;IACHA,KAAK;IACLO,OAAO,EAAEN,KAAK,CAACO,WAAW,CAAC,CAAC,KAAK;EACrC,CAAC;AACL,CAAC;AAiBM,SAASC,SAASA,CAAUC,MAAiB,EAAO;EACvD,MAAM;IAAEC,KAAK;IAAEC,IAAI,EAAEC,WAAW,GAAG,EAAE;IAAElB,MAAM,GAAG;EAAG,CAAC,GAAGe,MAAM;EAC7D;AACJ;AACA;EACI,IAAIC,KAAK,CAACb,MAAM,IAAI,CAAC,IAAIgB,KAAK,CAACC,OAAO,CAACF,WAAW,CAAC,KAAK,KAAK,IAAIA,WAAW,CAACf,MAAM,KAAK,CAAC,EAAE;IACvF,OAAOa,KAAK;EAChB;EAEA,MAAMK,IAAU,GAAG;IACfC,OAAO,EAAE,EAAE;IACXC,MAAM,EAAE;EACZ,CAAC;EAED,KAAK,MAAMN,IAAI,IAAIC,WAAW,EAAE;IAC5B;AACR;AACA;IACQ,IAAI,CAACD,IAAI,EAAE;MACP;IACJ;IACA,MAAM;MAAEZ,KAAK;MAAEO;IAAQ,CAAC,GAAGd,WAAW,CAACmB,IAAI,EAAEjB,MAAM,CAAC;IACpD,MAAMO,WAAW,GAAGP,MAAM,CAACQ,IAAI,CAACC,CAAC,IAAIA,CAAC,CAACC,QAAQ,CAAC,CAAC,KAAKL,KAAK,CAAC;IAC5D,MAAMmB,IAAI,GAAGjB,WAAW,GAAGA,WAAW,CAACkB,OAAO,CAAC,CAAC,GAAGpB,KAAK;IAExDgB,IAAI,CAACC,OAAO,CAACI,IAAI,CAACF,IAAI,CAAC;IACvBH,IAAI,CAACE,MAAM,CAACG,IAAI,CAACd,OAAO,KAAK,IAAI,GAAG,MAAM,GAAG,KAAK,CAAC;EACvD;EAEA,IAAIS,IAAI,CAACC,OAAO,CAACnB,MAAM,KAAK,CAAC,EAAE;IAC3B,OAAOa,KAAK;EAChB;EAEA,OAAO,IAAAW,gBAAa,EAACX,KAAK,EAAEK,IAAI,CAACC,OAAO,EAAED,IAAI,CAACE,MAAM,CAAC;AAC1D","ignoreList":[]}
package/utils/update.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { Entity } from "../toolbox";
1
+ import type { Entity } from "../toolbox";
2
2
  interface Params {
3
3
  entity: Entity;
4
4
  item: {
@@ -1 +1 @@
1
- {"version":3,"names":["update","params","entity","item","execute","strictSchemaCheck","exports"],"sources":["update.ts"],"sourcesContent":["import { Entity } from \"~/toolbox\";\n\ninterface Params {\n entity: Entity;\n item: {\n PK: string;\n SK: string;\n TYPE?: string;\n [key: string]: any;\n };\n}\n\nexport const update = async (params: Params) => {\n const { entity, item } = params;\n\n return await entity.update(item, {\n execute: true,\n strictSchemaCheck: false\n });\n};\n"],"mappings":";;;;;;AAYO,MAAMA,MAAM,GAAG,MAAOC,MAAc,IAAK;EAC5C,MAAM;IAAEC,MAAM;IAAEC;EAAK,CAAC,GAAGF,MAAM;EAE/B,OAAO,MAAMC,MAAM,CAACF,MAAM,CAACG,IAAI,EAAE;IAC7BC,OAAO,EAAE,IAAI;IACbC,iBAAiB,EAAE;EACvB,CAAC,CAAC;AACN,CAAC;AAACC,OAAA,CAAAN,MAAA,GAAAA,MAAA","ignoreList":[]}
1
+ {"version":3,"names":["update","params","entity","item","execute","strictSchemaCheck","exports"],"sources":["update.ts"],"sourcesContent":["import type { Entity } from \"~/toolbox\";\n\ninterface Params {\n entity: Entity;\n item: {\n PK: string;\n SK: string;\n TYPE?: string;\n [key: string]: any;\n };\n}\n\nexport const update = async (params: Params) => {\n const { entity, item } = params;\n\n return await entity.update(item, {\n execute: true,\n strictSchemaCheck: false\n });\n};\n"],"mappings":";;;;;;AAYO,MAAMA,MAAM,GAAG,MAAOC,MAAc,IAAK;EAC5C,MAAM;IAAEC,MAAM;IAAEC;EAAK,CAAC,GAAGF,MAAM;EAE/B,OAAO,MAAMC,MAAM,CAACF,MAAM,CAACG,IAAI,EAAE;IAC7BC,OAAO,EAAE,IAAI;IACbC,iBAAiB,EAAE;EACvB,CAAC,CAAC;AACN,CAAC;AAACC,OAAA,CAAAN,MAAA,GAAAA,MAAA","ignoreList":[]}