@webiny/api-headless-cms-ddb 0.0.0-unstable.a4637c5ce6 → 0.0.0-unstable.a4f3e4ea8b

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 (158) hide show
  1. package/README.md +6 -20
  2. package/definitions/entry.d.ts +4 -6
  3. package/definitions/entry.js +8 -185
  4. package/definitions/entry.js.map +1 -1
  5. package/definitions/group.d.ts +4 -6
  6. package/definitions/group.js +8 -63
  7. package/definitions/group.js.map +1 -1
  8. package/definitions/model.d.ts +4 -6
  9. package/definitions/model.js +8 -107
  10. package/definitions/model.js.map +1 -1
  11. package/definitions/table.d.ts +3 -5
  12. package/definitions/table.js +6 -29
  13. package/definitions/table.js.map +1 -1
  14. package/definitions/types.d.ts +65 -0
  15. package/definitions/types.js +0 -0
  16. package/dynamoDb/index.d.ts +1 -1
  17. package/dynamoDb/index.js +7 -13
  18. package/dynamoDb/index.js.map +1 -1
  19. package/index.d.ts +2 -3
  20. package/index.js +85 -121
  21. package/index.js.map +1 -1
  22. package/operations/entry/dataLoader/DataLoaderCache.d.ts +1 -2
  23. package/operations/entry/dataLoader/DataLoaderCache.js +21 -35
  24. package/operations/entry/dataLoader/DataLoaderCache.js.map +1 -1
  25. package/operations/entry/dataLoader/constants.js +2 -7
  26. package/operations/entry/dataLoader/constants.js.map +1 -1
  27. package/operations/entry/dataLoader/createBatchScheduleFn.js +7 -22
  28. package/operations/entry/dataLoader/createBatchScheduleFn.js.map +1 -1
  29. package/operations/entry/dataLoader/getAllEntryRevisions.d.ts +3 -3
  30. package/operations/entry/dataLoader/getAllEntryRevisions.js +20 -41
  31. package/operations/entry/dataLoader/getAllEntryRevisions.js.map +1 -1
  32. package/operations/entry/dataLoader/getLatestRevisionByEntryId.d.ts +3 -3
  33. package/operations/entry/dataLoader/getLatestRevisionByEntryId.js +36 -52
  34. package/operations/entry/dataLoader/getLatestRevisionByEntryId.js.map +1 -1
  35. package/operations/entry/dataLoader/getPublishedRevisionByEntryId.d.ts +3 -3
  36. package/operations/entry/dataLoader/getPublishedRevisionByEntryId.js +36 -52
  37. package/operations/entry/dataLoader/getPublishedRevisionByEntryId.js.map +1 -1
  38. package/operations/entry/dataLoader/getRevisionById.d.ts +3 -3
  39. package/operations/entry/dataLoader/getRevisionById.js +38 -58
  40. package/operations/entry/dataLoader/getRevisionById.js.map +1 -1
  41. package/operations/entry/dataLoader/index.d.ts +3 -3
  42. package/operations/entry/dataLoader/index.js +13 -35
  43. package/operations/entry/dataLoader/index.js.map +1 -1
  44. package/operations/entry/dataLoader/types.d.ts +4 -4
  45. package/operations/entry/dataLoader/types.js +0 -7
  46. package/operations/entry/dataLoaders.d.ts +11 -12
  47. package/operations/entry/dataLoaders.js +83 -109
  48. package/operations/entry/dataLoaders.js.map +1 -1
  49. package/operations/entry/index.d.ts +4 -3
  50. package/operations/entry/index.js +908 -1277
  51. package/operations/entry/index.js.map +1 -1
  52. package/operations/entry/keys.d.ts +46 -2
  53. package/operations/entry/keys.js +52 -49
  54. package/operations/entry/keys.js.map +1 -1
  55. package/operations/group/index.d.ts +4 -5
  56. package/operations/group/index.js +113 -166
  57. package/operations/group/index.js.map +1 -1
  58. package/operations/model/index.d.ts +3 -3
  59. package/operations/model/index.js +99 -143
  60. package/operations/model/index.js.map +1 -1
  61. package/package.json +29 -25
  62. package/plugins/index.d.ts +2 -4
  63. package/plugins/index.js +1 -51
  64. package/types.d.ts +19 -42
  65. package/types.js +6 -12
  66. package/types.js.map +1 -1
  67. package/definitions/system.d.ts +0 -10
  68. package/definitions/system.js +0 -42
  69. package/definitions/system.js.map +0 -1
  70. package/dynamoDb/path/locationFolderId.d.ts +0 -2
  71. package/dynamoDb/path/locationFolderId.js +0 -43
  72. package/dynamoDb/path/locationFolderId.js.map +0 -1
  73. package/dynamoDb/path/plainObject.d.ts +0 -2
  74. package/dynamoDb/path/plainObject.js +0 -35
  75. package/dynamoDb/path/plainObject.js.map +0 -1
  76. package/dynamoDb/storage/longText.d.ts +0 -10
  77. package/dynamoDb/storage/longText.js +0 -94
  78. package/dynamoDb/storage/longText.js.map +0 -1
  79. package/dynamoDb/storage/richText.d.ts +0 -2
  80. package/dynamoDb/storage/richText.js +0 -61
  81. package/dynamoDb/storage/richText.js.map +0 -1
  82. package/dynamoDb/transformValue/datetime.d.ts +0 -5
  83. package/dynamoDb/transformValue/datetime.js +0 -47
  84. package/dynamoDb/transformValue/datetime.js.map +0 -1
  85. package/operations/entry/dataLoader/types.js.map +0 -1
  86. package/operations/entry/filtering/createExpressions.d.ts +0 -26
  87. package/operations/entry/filtering/createExpressions.js +0 -178
  88. package/operations/entry/filtering/createExpressions.js.map +0 -1
  89. package/operations/entry/filtering/createFields.d.ts +0 -16
  90. package/operations/entry/filtering/createFields.js +0 -108
  91. package/operations/entry/filtering/createFields.js.map +0 -1
  92. package/operations/entry/filtering/extractSort.d.ts +0 -17
  93. package/operations/entry/filtering/extractSort.js +0 -69
  94. package/operations/entry/filtering/extractSort.js.map +0 -1
  95. package/operations/entry/filtering/filter.d.ts +0 -15
  96. package/operations/entry/filtering/filter.js +0 -158
  97. package/operations/entry/filtering/filter.js.map +0 -1
  98. package/operations/entry/filtering/fullTextSearch.d.ts +0 -14
  99. package/operations/entry/filtering/fullTextSearch.js +0 -50
  100. package/operations/entry/filtering/fullTextSearch.js.map +0 -1
  101. package/operations/entry/filtering/getValue.d.ts +0 -5
  102. package/operations/entry/filtering/getValue.js +0 -66
  103. package/operations/entry/filtering/getValue.js.map +0 -1
  104. package/operations/entry/filtering/index.d.ts +0 -2
  105. package/operations/entry/filtering/index.js +0 -21
  106. package/operations/entry/filtering/index.js.map +0 -1
  107. package/operations/entry/filtering/mapPlugins.d.ts +0 -8
  108. package/operations/entry/filtering/mapPlugins.js +0 -33
  109. package/operations/entry/filtering/mapPlugins.js.map +0 -1
  110. package/operations/entry/filtering/plugins/defaultFilterCreate.d.ts +0 -2
  111. package/operations/entry/filtering/plugins/defaultFilterCreate.js +0 -45
  112. package/operations/entry/filtering/plugins/defaultFilterCreate.js.map +0 -1
  113. package/operations/entry/filtering/plugins/index.d.ts +0 -1
  114. package/operations/entry/filtering/plugins/index.js +0 -16
  115. package/operations/entry/filtering/plugins/index.js.map +0 -1
  116. package/operations/entry/filtering/plugins/objectFilterCreate.d.ts +0 -2
  117. package/operations/entry/filtering/plugins/objectFilterCreate.js +0 -90
  118. package/operations/entry/filtering/plugins/objectFilterCreate.js.map +0 -1
  119. package/operations/entry/filtering/plugins/refFilterCreate.d.ts +0 -3
  120. package/operations/entry/filtering/plugins/refFilterCreate.js +0 -80
  121. package/operations/entry/filtering/plugins/refFilterCreate.js.map +0 -1
  122. package/operations/entry/filtering/plugins/searchableJsonFilterCreate.d.ts +0 -2
  123. package/operations/entry/filtering/plugins/searchableJsonFilterCreate.js +0 -65
  124. package/operations/entry/filtering/plugins/searchableJsonFilterCreate.js.map +0 -1
  125. package/operations/entry/filtering/sort.d.ts +0 -12
  126. package/operations/entry/filtering/sort.js +0 -71
  127. package/operations/entry/filtering/sort.js.map +0 -1
  128. package/operations/entry/filtering/systemFields.d.ts +0 -4
  129. package/operations/entry/filtering/systemFields.js +0 -90
  130. package/operations/entry/filtering/systemFields.js.map +0 -1
  131. package/operations/entry/filtering/transform.d.ts +0 -6
  132. package/operations/entry/filtering/transform.js +0 -18
  133. package/operations/entry/filtering/transform.js.map +0 -1
  134. package/operations/entry/filtering/types.d.ts +0 -40
  135. package/operations/entry/filtering/types.js +0 -7
  136. package/operations/entry/filtering/types.js.map +0 -1
  137. package/operations/entry/filtering/values.d.ts +0 -2
  138. package/operations/entry/filtering/values.js +0 -24
  139. package/operations/entry/filtering/values.js.map +0 -1
  140. package/operations/entry/filtering/where.d.ts +0 -5
  141. package/operations/entry/filtering/where.js +0 -35
  142. package/operations/entry/filtering/where.js.map +0 -1
  143. package/operations/system/index.d.ts +0 -7
  144. package/operations/system/index.js +0 -94
  145. package/operations/system/index.js.map +0 -1
  146. package/plugins/CmsEntryFieldFilterPathPlugin.d.ts +0 -23
  147. package/plugins/CmsEntryFieldFilterPathPlugin.js +0 -48
  148. package/plugins/CmsEntryFieldFilterPathPlugin.js.map +0 -1
  149. package/plugins/CmsEntryFieldFilterPlugin.d.ts +0 -43
  150. package/plugins/CmsEntryFieldFilterPlugin.js +0 -27
  151. package/plugins/CmsEntryFieldFilterPlugin.js.map +0 -1
  152. package/plugins/CmsEntryFieldSortingPlugin.d.ts +0 -42
  153. package/plugins/CmsEntryFieldSortingPlugin.js +0 -27
  154. package/plugins/CmsEntryFieldSortingPlugin.js.map +0 -1
  155. package/plugins/CmsFieldFilterValueTransformPlugin.d.ts +0 -11
  156. package/plugins/CmsFieldFilterValueTransformPlugin.js +0 -23
  157. package/plugins/CmsFieldFilterValueTransformPlugin.js.map +0 -1
  158. package/plugins/index.js.map +0 -1
@@ -1,116 +1,90 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
- Object.defineProperty(exports, "__esModule", {
5
- value: true
6
- });
7
- exports.DataLoadersHandler = void 0;
8
- var _error = _interopRequireDefault(require("@webiny/error"));
9
- var _DataLoaderCache = require("./dataLoader/DataLoaderCache");
10
- var _dataLoader = require("./dataLoader");
11
- var _utils = require("@webiny/utils");
1
+ import error from "@webiny/error";
2
+ import { DataLoaderCache } from "./dataLoader/DataLoaderCache.js";
3
+ import { getDataLoaderFactory } from "./dataLoader/index.js";
4
+ import { parseIdentifier } from "@webiny/utils";
12
5
  class DataLoadersHandler {
13
- cache = new _DataLoaderCache.DataLoaderCache();
14
- constructor(params) {
15
- this.entity = params.entity;
16
- }
17
- async getAllEntryRevisions(params) {
18
- const ids = params.ids.map(id => {
19
- const {
20
- id: entryId
21
- } = (0, _utils.parseIdentifier)(id);
22
- return entryId;
23
- });
24
- return await this.loadMany("getAllEntryRevisions", params, ids);
25
- }
26
- async getRevisionById(params) {
27
- return await this.loadMany("getRevisionById", params, params.ids);
28
- }
29
- async getPublishedRevisionByEntryId(params) {
30
- const ids = params.ids.map(id => {
31
- const {
32
- id: entryId
33
- } = (0, _utils.parseIdentifier)(id);
34
- return entryId;
35
- });
36
- return await this.loadMany("getPublishedRevisionByEntryId", params, ids);
37
- }
38
- async getLatestRevisionByEntryId(params) {
39
- const ids = params.ids.map(id => {
40
- const {
41
- id: entryId
42
- } = (0, _utils.parseIdentifier)(id);
43
- return entryId;
44
- });
45
- return await this.loadMany("getLatestRevisionByEntryId", params, ids);
46
- }
47
-
48
- /**
49
- * TODO @ts-refactor
50
- * Maybe pass on the generics to DataLoader definition?
51
- */
52
- getLoader(name, params) {
53
- const {
54
- model
55
- } = params;
56
- const cacheParams = {
57
- tenant: model.tenant,
58
- locale: model.locale,
59
- name
60
- };
61
- let loader = this.cache.getDataLoader(cacheParams);
62
- if (loader) {
63
- return loader;
6
+ constructor(params){
7
+ this.cache = new DataLoaderCache();
8
+ this.entity = params.entity;
9
+ }
10
+ async getAllEntryRevisions(params) {
11
+ const ids = params.ids.map((id)=>{
12
+ const { id: entryId } = parseIdentifier(id);
13
+ return entryId;
14
+ });
15
+ return await this.loadMany("getAllEntryRevisions", params, ids);
16
+ }
17
+ async getRevisionById(params) {
18
+ return await this.loadMany("getRevisionById", params, params.ids);
64
19
  }
65
- const factory = (0, _dataLoader.getDataLoaderFactory)(name);
66
- loader = factory({
67
- entity: this.entity,
68
- tenant: model.tenant,
69
- locale: model.locale
70
- });
71
- this.cache.setDataLoader(cacheParams, loader);
72
- return loader;
73
- }
74
- async loadMany(loader, params, ids) {
75
- let results = [];
76
- try {
77
- results = await this.getLoader(loader, params).loadMany(ids);
78
- if (Array.isArray(results) === true) {
79
- return results.reduce((acc, res) => {
80
- if (Array.isArray(res) === false) {
81
- if (res && res.message) {
82
- throw new _error.default(res.message, res.code, {
83
- ...res,
84
- data: JSON.stringify(res.data || {})
85
- });
86
- }
87
- throw new _error.default("Result from the data loader must be an array of arrays which contain requested items.", "DATA_LOADER_RESULTS_ERROR", {
88
- ...params,
89
- loader
20
+ async getPublishedRevisionByEntryId(params) {
21
+ const ids = params.ids.map((id)=>{
22
+ const { id: entryId } = parseIdentifier(id);
23
+ return entryId;
24
+ });
25
+ return await this.loadMany("getPublishedRevisionByEntryId", params, ids);
26
+ }
27
+ async getLatestRevisionByEntryId(params) {
28
+ const ids = params.ids.map((id)=>{
29
+ const { id: entryId } = parseIdentifier(id);
30
+ return entryId;
31
+ });
32
+ return await this.loadMany("getLatestRevisionByEntryId", params, ids);
33
+ }
34
+ getLoader(name, params) {
35
+ const { model } = params;
36
+ const cacheParams = {
37
+ tenant: model.tenant,
38
+ modelId: model.modelId,
39
+ name
40
+ };
41
+ let loader = this.cache.getDataLoader(cacheParams);
42
+ if (loader) return loader;
43
+ const factory = getDataLoaderFactory(name);
44
+ loader = factory({
45
+ entity: this.entity,
46
+ tenant: model.tenant,
47
+ modelId: model.modelId
48
+ });
49
+ this.cache.setDataLoader(cacheParams, loader);
50
+ return loader;
51
+ }
52
+ async loadMany(loader, params, ids) {
53
+ let results = [];
54
+ try {
55
+ results = await this.getLoader(loader, params).loadMany(ids);
56
+ if (true === Array.isArray(results)) return results.reduce((acc, res)=>{
57
+ if (false === Array.isArray(res)) {
58
+ if (res && res.message) throw new error(res.message, res.code, {
59
+ ...res,
60
+ data: JSON.stringify(res.data || {})
61
+ });
62
+ throw new error("Result from the data loader must be an array of arrays which contain requested items.", "DATA_LOADER_RESULTS_ERROR", {
63
+ ...params,
64
+ loader
65
+ });
66
+ }
67
+ acc.push(...res);
68
+ return acc;
69
+ }, []);
70
+ } catch (ex) {
71
+ throw new error(ex.message || "Data loader error.", ex.code || "DATA_LOADER_ERROR", {
72
+ error: ex,
73
+ ...params,
74
+ loader,
75
+ ids
90
76
  });
91
- }
92
- acc.push(...res);
93
- return acc;
94
- }, []);
95
- }
96
- } catch (ex) {
97
- throw new _error.default(ex.message || "Data loader error.", ex.code || "DATA_LOADER_ERROR", {
98
- error: ex,
99
- ...params,
100
- loader,
101
- ids
102
- });
77
+ }
78
+ throw new error("Data loader did not return array of items or empty array.", "INVALID_DATA_LOADER_RESULT", {
79
+ loader,
80
+ ids,
81
+ results
82
+ });
83
+ }
84
+ clearAll(params) {
85
+ this.cache.clearAll(params);
103
86
  }
104
- throw new _error.default(`Data loader did not return array of items or empty array.`, "INVALID_DATA_LOADER_RESULT", {
105
- loader,
106
- ids,
107
- results
108
- });
109
- }
110
- clearAll(params) {
111
- this.cache.clearAll(params?.model);
112
- }
113
87
  }
114
- exports.DataLoadersHandler = DataLoadersHandler;
88
+ export { DataLoadersHandler };
115
89
 
116
90
  //# sourceMappingURL=dataLoaders.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_error","_interopRequireDefault","require","_DataLoaderCache","_dataLoader","_utils","DataLoadersHandler","cache","DataLoaderCache","constructor","params","entity","getAllEntryRevisions","ids","map","id","entryId","parseIdentifier","loadMany","getRevisionById","getPublishedRevisionByEntryId","getLatestRevisionByEntryId","getLoader","name","model","cacheParams","tenant","locale","loader","getDataLoader","factory","getDataLoaderFactory","setDataLoader","results","Array","isArray","reduce","acc","res","message","WebinyError","code","data","JSON","stringify","push","ex","error","clearAll","exports"],"sources":["dataLoaders.ts"],"sourcesContent":["import type DataLoader from \"dataloader\";\nimport WebinyError from \"@webiny/error\";\nimport type { CmsModel, CmsStorageEntry } from \"@webiny/api-headless-cms/types\";\nimport type { CacheKeyParams } from \"~/operations/entry/dataLoader/DataLoaderCache\";\nimport { DataLoaderCache } from \"~/operations/entry/dataLoader/DataLoaderCache\";\nimport type { Entity } from \"@webiny/db-dynamodb/toolbox\";\nimport type { DataLoaders } from \"~/operations/entry/dataLoader\";\nimport { getDataLoaderFactory } from \"~/operations/entry/dataLoader\";\nimport { parseIdentifier } from \"@webiny/utils\";\nimport type {\n DataLoadersHandlerInterface,\n DataLoadersHandlerInterfaceClearAllParams\n} from \"~/types\";\n\ninterface DataLoaderParams {\n model: Pick<CmsModel, \"tenant\" | \"locale\" | \"modelId\">;\n ids: readonly string[];\n}\n\ninterface GetLoaderParams {\n model: Pick<CmsModel, \"tenant\" | \"locale\" | \"modelId\">;\n}\n\ninterface DataLoadersHandlerParams {\n entity: Entity<any>;\n}\n\nexport class DataLoadersHandler implements DataLoadersHandlerInterface {\n private readonly entity: Entity<any>;\n private readonly cache: DataLoaderCache = new DataLoaderCache();\n\n public constructor(params: DataLoadersHandlerParams) {\n this.entity = params.entity;\n }\n\n public async getAllEntryRevisions(params: DataLoaderParams): Promise<CmsStorageEntry[]> {\n const ids = params.ids.map(id => {\n const { id: entryId } = parseIdentifier(id);\n return entryId;\n });\n return await this.loadMany(\"getAllEntryRevisions\", params, ids);\n }\n\n public async getRevisionById(params: DataLoaderParams): Promise<CmsStorageEntry[]> {\n return await this.loadMany(\"getRevisionById\", params, params.ids);\n }\n\n public async getPublishedRevisionByEntryId(\n params: DataLoaderParams\n ): Promise<CmsStorageEntry[]> {\n const ids = params.ids.map(id => {\n const { id: entryId } = parseIdentifier(id);\n return entryId;\n });\n return await this.loadMany(\"getPublishedRevisionByEntryId\", params, ids);\n }\n\n public async getLatestRevisionByEntryId(params: DataLoaderParams): Promise<CmsStorageEntry[]> {\n const ids = params.ids.map(id => {\n const { id: entryId } = parseIdentifier(id);\n return entryId;\n });\n return await this.loadMany(\"getLatestRevisionByEntryId\", params, ids);\n }\n\n /**\n * TODO @ts-refactor\n * Maybe pass on the generics to DataLoader definition?\n */\n private getLoader(name: DataLoaders, params: GetLoaderParams): DataLoader<any, any> {\n const { model } = params;\n const cacheParams: CacheKeyParams = {\n tenant: model.tenant,\n locale: model.locale,\n name\n };\n let loader = this.cache.getDataLoader(cacheParams);\n if (loader) {\n return loader;\n }\n const factory = getDataLoaderFactory(name);\n loader = factory({\n entity: this.entity,\n tenant: model.tenant,\n locale: model.locale\n });\n this.cache.setDataLoader(cacheParams, loader);\n return loader;\n }\n\n private async loadMany(\n loader: DataLoaders,\n params: GetLoaderParams,\n ids: readonly string[]\n ): Promise<CmsStorageEntry[]> {\n let results: any[] = [];\n try {\n results = await this.getLoader(loader, params).loadMany(ids);\n if (Array.isArray(results) === true) {\n return results.reduce((acc, res) => {\n if (Array.isArray(res) === false) {\n if (res && res.message) {\n throw new WebinyError(res.message, res.code, {\n ...res,\n data: JSON.stringify(res.data || {})\n });\n }\n throw new WebinyError(\n \"Result from the data loader must be an array of arrays which contain requested items.\",\n \"DATA_LOADER_RESULTS_ERROR\",\n {\n ...params,\n loader\n }\n );\n }\n acc.push(...res);\n return acc;\n }, []);\n }\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Data loader error.\",\n ex.code || \"DATA_LOADER_ERROR\",\n {\n error: ex,\n ...params,\n loader,\n ids\n }\n );\n }\n throw new WebinyError(\n `Data loader did not return array of items or empty array.`,\n \"INVALID_DATA_LOADER_RESULT\",\n {\n loader,\n ids,\n results\n }\n );\n }\n\n public clearAll(params?: DataLoadersHandlerInterfaceClearAllParams): void {\n this.cache.clearAll(params?.model);\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"operations/entry/dataLoaders.js","sources":["../../../src/operations/entry/dataLoaders.ts"],"sourcesContent":["import type DataLoader from \"dataloader\";\nimport WebinyError from \"@webiny/error\";\nimport type {\n CmsEntryValues,\n CmsModel,\n CmsStorageEntry\n} from \"@webiny/api-headless-cms/types/index.js\";\nimport type { CacheKeyParams } from \"~/operations/entry/dataLoader/DataLoaderCache.js\";\nimport { DataLoaderCache } from \"~/operations/entry/dataLoader/DataLoaderCache.js\";\nimport type { DataLoaders } from \"~/operations/entry/dataLoader/index.js\";\nimport { getDataLoaderFactory } from \"~/operations/entry/dataLoader/index.js\";\nimport { parseIdentifier } from \"@webiny/utils\";\nimport type {\n DataLoadersHandlerInterfaceClearAllParams,\n IDataLoadersHandler,\n IEntryEntity\n} from \"~/types.js\";\n\ninterface DataLoaderParams {\n model: Pick<CmsModel, \"tenant\" | \"modelId\">;\n ids: readonly string[];\n}\n\ninterface GetLoaderParams {\n model: Pick<CmsModel, \"tenant\" | \"modelId\">;\n}\n\ninterface IDataLoadersHandlerParams {\n entity: IEntryEntity;\n}\n\nexport class DataLoadersHandler implements IDataLoadersHandler {\n private readonly entity;\n private readonly cache = new DataLoaderCache();\n\n public constructor(params: IDataLoadersHandlerParams) {\n this.entity = params.entity;\n }\n\n public async getAllEntryRevisions<T extends CmsEntryValues = CmsEntryValues>(\n params: DataLoaderParams\n ): Promise<CmsStorageEntry<T>[]> {\n const ids = params.ids.map(id => {\n const { id: entryId } = parseIdentifier(id);\n return entryId;\n });\n return await this.loadMany<T>(\"getAllEntryRevisions\", params, ids);\n }\n\n public async getRevisionById<T extends CmsEntryValues = CmsEntryValues>(\n params: DataLoaderParams\n ): Promise<CmsStorageEntry<T>[]> {\n return await this.loadMany<T>(\"getRevisionById\", params, params.ids);\n }\n\n public async getPublishedRevisionByEntryId<T extends CmsEntryValues = CmsEntryValues>(\n params: DataLoaderParams\n ): Promise<CmsStorageEntry<T>[]> {\n const ids = params.ids.map(id => {\n const { id: entryId } = parseIdentifier(id);\n return entryId;\n });\n return await this.loadMany<T>(\"getPublishedRevisionByEntryId\", params, ids);\n }\n\n public async getLatestRevisionByEntryId<T extends CmsEntryValues = CmsEntryValues>(\n params: DataLoaderParams\n ): Promise<CmsStorageEntry<T>[]> {\n const ids = params.ids.map(id => {\n const { id: entryId } = parseIdentifier(id);\n return entryId;\n });\n return await this.loadMany<T>(\"getLatestRevisionByEntryId\", params, ids);\n }\n\n /**\n * TODO @ts-refactor\n * Maybe pass on the generics to DataLoader definition?\n */\n private getLoader(name: DataLoaders, params: GetLoaderParams): DataLoader<any, any> {\n const { model } = params;\n const cacheParams: CacheKeyParams = {\n tenant: model.tenant,\n modelId: model.modelId,\n name\n };\n let loader = this.cache.getDataLoader(cacheParams);\n if (loader) {\n return loader;\n }\n const factory = getDataLoaderFactory(name);\n loader = factory({\n entity: this.entity,\n tenant: model.tenant,\n modelId: model.modelId\n });\n this.cache.setDataLoader(cacheParams, loader);\n return loader;\n }\n\n private async loadMany<T extends CmsEntryValues = CmsEntryValues>(\n loader: DataLoaders,\n params: GetLoaderParams,\n ids: readonly string[]\n ): Promise<CmsStorageEntry<T>[]> {\n let results: any[] = [];\n try {\n results = await this.getLoader(loader, params).loadMany(ids);\n if (Array.isArray(results) === true) {\n return results.reduce((acc, res) => {\n if (Array.isArray(res) === false) {\n if (res && res.message) {\n throw new WebinyError(res.message, res.code, {\n ...res,\n data: JSON.stringify(res.data || {})\n });\n }\n throw new WebinyError(\n \"Result from the data loader must be an array of arrays which contain requested items.\",\n \"DATA_LOADER_RESULTS_ERROR\",\n {\n ...params,\n loader\n }\n );\n }\n acc.push(...res);\n return acc;\n }, []);\n }\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Data loader error.\",\n ex.code || \"DATA_LOADER_ERROR\",\n {\n error: ex,\n ...params,\n loader,\n ids\n }\n );\n }\n throw new WebinyError(\n `Data loader did not return array of items or empty array.`,\n \"INVALID_DATA_LOADER_RESULT\",\n {\n loader,\n ids,\n results\n }\n );\n }\n\n public clearAll(params?: DataLoadersHandlerInterfaceClearAllParams): void {\n this.cache.clearAll(params);\n }\n}\n"],"names":["DataLoadersHandler","params","DataLoaderCache","ids","id","entryId","parseIdentifier","name","model","cacheParams","loader","factory","getDataLoaderFactory","results","Array","acc","res","WebinyError","JSON","ex"],"mappings":";;;;AA+BO,MAAMA;IAIT,YAAmBC,MAAiC,CAAE;aAFrC,KAAK,GAAG,IAAIC;QAGzB,IAAI,CAAC,MAAM,GAAGD,OAAO,MAAM;IAC/B;IAEA,MAAa,qBACTA,MAAwB,EACK;QAC7B,MAAME,MAAMF,OAAO,GAAG,CAAC,GAAG,CAACG,CAAAA;YACvB,MAAM,EAAE,IAAIC,OAAO,EAAE,GAAGC,gBAAgBF;YACxC,OAAOC;QACX;QACA,OAAO,MAAM,IAAI,CAAC,QAAQ,CAAI,wBAAwBJ,QAAQE;IAClE;IAEA,MAAa,gBACTF,MAAwB,EACK;QAC7B,OAAO,MAAM,IAAI,CAAC,QAAQ,CAAI,mBAAmBA,QAAQA,OAAO,GAAG;IACvE;IAEA,MAAa,8BACTA,MAAwB,EACK;QAC7B,MAAME,MAAMF,OAAO,GAAG,CAAC,GAAG,CAACG,CAAAA;YACvB,MAAM,EAAE,IAAIC,OAAO,EAAE,GAAGC,gBAAgBF;YACxC,OAAOC;QACX;QACA,OAAO,MAAM,IAAI,CAAC,QAAQ,CAAI,iCAAiCJ,QAAQE;IAC3E;IAEA,MAAa,2BACTF,MAAwB,EACK;QAC7B,MAAME,MAAMF,OAAO,GAAG,CAAC,GAAG,CAACG,CAAAA;YACvB,MAAM,EAAE,IAAIC,OAAO,EAAE,GAAGC,gBAAgBF;YACxC,OAAOC;QACX;QACA,OAAO,MAAM,IAAI,CAAC,QAAQ,CAAI,8BAA8BJ,QAAQE;IACxE;IAMQ,UAAUI,IAAiB,EAAEN,MAAuB,EAAwB;QAChF,MAAM,EAAEO,KAAK,EAAE,GAAGP;QAClB,MAAMQ,cAA8B;YAChC,QAAQD,MAAM,MAAM;YACpB,SAASA,MAAM,OAAO;YACtBD;QACJ;QACA,IAAIG,SAAS,IAAI,CAAC,KAAK,CAAC,aAAa,CAACD;QACtC,IAAIC,QACA,OAAOA;QAEX,MAAMC,UAAUC,qBAAqBL;QACrCG,SAASC,QAAQ;YACb,QAAQ,IAAI,CAAC,MAAM;YACnB,QAAQH,MAAM,MAAM;YACpB,SAASA,MAAM,OAAO;QAC1B;QACA,IAAI,CAAC,KAAK,CAAC,aAAa,CAACC,aAAaC;QACtC,OAAOA;IACX;IAEA,MAAc,SACVA,MAAmB,EACnBT,MAAuB,EACvBE,GAAsB,EACO;QAC7B,IAAIU,UAAiB,EAAE;QACvB,IAAI;YACAA,UAAU,MAAM,IAAI,CAAC,SAAS,CAACH,QAAQT,QAAQ,QAAQ,CAACE;YACxD,IAAIW,AAA2B,SAA3BA,MAAM,OAAO,CAACD,UACd,OAAOA,QAAQ,MAAM,CAAC,CAACE,KAAKC;gBACxB,IAAIF,AAAuB,UAAvBA,MAAM,OAAO,CAACE,MAAgB;oBAC9B,IAAIA,OAAOA,IAAI,OAAO,EAClB,MAAM,IAAIC,MAAYD,IAAI,OAAO,EAAEA,IAAI,IAAI,EAAE;wBACzC,GAAGA,GAAG;wBACN,MAAME,KAAK,SAAS,CAACF,IAAI,IAAI,IAAI,CAAC;oBACtC;oBAEJ,MAAM,IAAIC,MACN,yFACA,6BACA;wBACI,GAAGhB,MAAM;wBACTS;oBACJ;gBAER;gBACAK,IAAI,IAAI,IAAIC;gBACZ,OAAOD;YACX,GAAG,EAAE;QAEb,EAAE,OAAOI,IAAI;YACT,MAAM,IAAIF,MACNE,GAAG,OAAO,IAAI,sBACdA,GAAG,IAAI,IAAI,qBACX;gBACI,OAAOA;gBACP,GAAGlB,MAAM;gBACTS;gBACAP;YACJ;QAER;QACA,MAAM,IAAIc,MACN,6DACA,8BACA;YACIP;YACAP;YACAU;QACJ;IAER;IAEO,SAASZ,MAAkD,EAAQ;QACtE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAACA;IACxB;AACJ"}
@@ -1,8 +1,9 @@
1
- import type { Entity } from "@webiny/db-dynamodb/toolbox";
1
+ import type { CmsContext } from "@webiny/api-headless-cms/types/index.js";
2
2
  import type { PluginsContainer } from "@webiny/plugins";
3
- import type { CmsEntryStorageOperations } from "../../types";
3
+ import type { CmsEntryStorageOperations, IEntryEntity } from "../../types.js";
4
4
  export interface CreateEntriesStorageOperationsParams {
5
- entity: Entity<any>;
5
+ entity: IEntryEntity;
6
+ container: CmsContext["container"];
6
7
  plugins: PluginsContainer;
7
8
  }
8
9
  export declare const createEntriesStorageOperations: (params: CreateEntriesStorageOperationsParams) => CmsEntryStorageOperations;