@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.
- package/README.md +6 -20
- package/definitions/entry.d.ts +4 -6
- package/definitions/entry.js +8 -185
- package/definitions/entry.js.map +1 -1
- package/definitions/group.d.ts +4 -6
- package/definitions/group.js +8 -63
- package/definitions/group.js.map +1 -1
- package/definitions/model.d.ts +4 -6
- package/definitions/model.js +8 -107
- package/definitions/model.js.map +1 -1
- package/definitions/table.d.ts +3 -5
- package/definitions/table.js +6 -29
- package/definitions/table.js.map +1 -1
- package/definitions/types.d.ts +65 -0
- package/definitions/types.js +0 -0
- package/dynamoDb/index.d.ts +1 -1
- package/dynamoDb/index.js +7 -13
- package/dynamoDb/index.js.map +1 -1
- package/index.d.ts +2 -3
- package/index.js +85 -121
- package/index.js.map +1 -1
- package/operations/entry/dataLoader/DataLoaderCache.d.ts +1 -2
- package/operations/entry/dataLoader/DataLoaderCache.js +21 -35
- package/operations/entry/dataLoader/DataLoaderCache.js.map +1 -1
- package/operations/entry/dataLoader/constants.js +2 -7
- package/operations/entry/dataLoader/constants.js.map +1 -1
- package/operations/entry/dataLoader/createBatchScheduleFn.js +7 -22
- package/operations/entry/dataLoader/createBatchScheduleFn.js.map +1 -1
- package/operations/entry/dataLoader/getAllEntryRevisions.d.ts +3 -3
- package/operations/entry/dataLoader/getAllEntryRevisions.js +20 -41
- package/operations/entry/dataLoader/getAllEntryRevisions.js.map +1 -1
- package/operations/entry/dataLoader/getLatestRevisionByEntryId.d.ts +3 -3
- package/operations/entry/dataLoader/getLatestRevisionByEntryId.js +36 -52
- package/operations/entry/dataLoader/getLatestRevisionByEntryId.js.map +1 -1
- package/operations/entry/dataLoader/getPublishedRevisionByEntryId.d.ts +3 -3
- package/operations/entry/dataLoader/getPublishedRevisionByEntryId.js +36 -52
- package/operations/entry/dataLoader/getPublishedRevisionByEntryId.js.map +1 -1
- package/operations/entry/dataLoader/getRevisionById.d.ts +3 -3
- package/operations/entry/dataLoader/getRevisionById.js +38 -58
- package/operations/entry/dataLoader/getRevisionById.js.map +1 -1
- package/operations/entry/dataLoader/index.d.ts +3 -3
- package/operations/entry/dataLoader/index.js +13 -35
- package/operations/entry/dataLoader/index.js.map +1 -1
- package/operations/entry/dataLoader/types.d.ts +4 -4
- package/operations/entry/dataLoader/types.js +0 -7
- package/operations/entry/dataLoaders.d.ts +11 -12
- package/operations/entry/dataLoaders.js +83 -109
- package/operations/entry/dataLoaders.js.map +1 -1
- package/operations/entry/index.d.ts +4 -3
- package/operations/entry/index.js +908 -1277
- package/operations/entry/index.js.map +1 -1
- package/operations/entry/keys.d.ts +46 -2
- package/operations/entry/keys.js +52 -49
- package/operations/entry/keys.js.map +1 -1
- package/operations/group/index.d.ts +4 -5
- package/operations/group/index.js +113 -166
- package/operations/group/index.js.map +1 -1
- package/operations/model/index.d.ts +3 -3
- package/operations/model/index.js +99 -143
- package/operations/model/index.js.map +1 -1
- package/package.json +29 -25
- package/plugins/index.d.ts +2 -4
- package/plugins/index.js +1 -51
- package/types.d.ts +19 -42
- package/types.js +6 -12
- package/types.js.map +1 -1
- package/definitions/system.d.ts +0 -10
- package/definitions/system.js +0 -42
- package/definitions/system.js.map +0 -1
- package/dynamoDb/path/locationFolderId.d.ts +0 -2
- package/dynamoDb/path/locationFolderId.js +0 -43
- package/dynamoDb/path/locationFolderId.js.map +0 -1
- package/dynamoDb/path/plainObject.d.ts +0 -2
- package/dynamoDb/path/plainObject.js +0 -35
- package/dynamoDb/path/plainObject.js.map +0 -1
- package/dynamoDb/storage/longText.d.ts +0 -10
- package/dynamoDb/storage/longText.js +0 -94
- package/dynamoDb/storage/longText.js.map +0 -1
- package/dynamoDb/storage/richText.d.ts +0 -2
- package/dynamoDb/storage/richText.js +0 -61
- package/dynamoDb/storage/richText.js.map +0 -1
- package/dynamoDb/transformValue/datetime.d.ts +0 -5
- package/dynamoDb/transformValue/datetime.js +0 -47
- package/dynamoDb/transformValue/datetime.js.map +0 -1
- package/operations/entry/dataLoader/types.js.map +0 -1
- package/operations/entry/filtering/createExpressions.d.ts +0 -26
- package/operations/entry/filtering/createExpressions.js +0 -178
- package/operations/entry/filtering/createExpressions.js.map +0 -1
- package/operations/entry/filtering/createFields.d.ts +0 -16
- package/operations/entry/filtering/createFields.js +0 -108
- package/operations/entry/filtering/createFields.js.map +0 -1
- package/operations/entry/filtering/extractSort.d.ts +0 -17
- package/operations/entry/filtering/extractSort.js +0 -69
- package/operations/entry/filtering/extractSort.js.map +0 -1
- package/operations/entry/filtering/filter.d.ts +0 -15
- package/operations/entry/filtering/filter.js +0 -158
- package/operations/entry/filtering/filter.js.map +0 -1
- package/operations/entry/filtering/fullTextSearch.d.ts +0 -14
- package/operations/entry/filtering/fullTextSearch.js +0 -50
- package/operations/entry/filtering/fullTextSearch.js.map +0 -1
- package/operations/entry/filtering/getValue.d.ts +0 -5
- package/operations/entry/filtering/getValue.js +0 -66
- package/operations/entry/filtering/getValue.js.map +0 -1
- package/operations/entry/filtering/index.d.ts +0 -2
- package/operations/entry/filtering/index.js +0 -21
- package/operations/entry/filtering/index.js.map +0 -1
- package/operations/entry/filtering/mapPlugins.d.ts +0 -8
- package/operations/entry/filtering/mapPlugins.js +0 -33
- package/operations/entry/filtering/mapPlugins.js.map +0 -1
- package/operations/entry/filtering/plugins/defaultFilterCreate.d.ts +0 -2
- package/operations/entry/filtering/plugins/defaultFilterCreate.js +0 -45
- package/operations/entry/filtering/plugins/defaultFilterCreate.js.map +0 -1
- package/operations/entry/filtering/plugins/index.d.ts +0 -1
- package/operations/entry/filtering/plugins/index.js +0 -16
- package/operations/entry/filtering/plugins/index.js.map +0 -1
- package/operations/entry/filtering/plugins/objectFilterCreate.d.ts +0 -2
- package/operations/entry/filtering/plugins/objectFilterCreate.js +0 -90
- package/operations/entry/filtering/plugins/objectFilterCreate.js.map +0 -1
- package/operations/entry/filtering/plugins/refFilterCreate.d.ts +0 -3
- package/operations/entry/filtering/plugins/refFilterCreate.js +0 -80
- package/operations/entry/filtering/plugins/refFilterCreate.js.map +0 -1
- package/operations/entry/filtering/plugins/searchableJsonFilterCreate.d.ts +0 -2
- package/operations/entry/filtering/plugins/searchableJsonFilterCreate.js +0 -65
- package/operations/entry/filtering/plugins/searchableJsonFilterCreate.js.map +0 -1
- package/operations/entry/filtering/sort.d.ts +0 -12
- package/operations/entry/filtering/sort.js +0 -71
- package/operations/entry/filtering/sort.js.map +0 -1
- package/operations/entry/filtering/systemFields.d.ts +0 -4
- package/operations/entry/filtering/systemFields.js +0 -90
- package/operations/entry/filtering/systemFields.js.map +0 -1
- package/operations/entry/filtering/transform.d.ts +0 -6
- package/operations/entry/filtering/transform.js +0 -18
- package/operations/entry/filtering/transform.js.map +0 -1
- package/operations/entry/filtering/types.d.ts +0 -40
- package/operations/entry/filtering/types.js +0 -7
- package/operations/entry/filtering/types.js.map +0 -1
- package/operations/entry/filtering/values.d.ts +0 -2
- package/operations/entry/filtering/values.js +0 -24
- package/operations/entry/filtering/values.js.map +0 -1
- package/operations/entry/filtering/where.d.ts +0 -5
- package/operations/entry/filtering/where.js +0 -35
- package/operations/entry/filtering/where.js.map +0 -1
- package/operations/system/index.d.ts +0 -7
- package/operations/system/index.js +0 -94
- package/operations/system/index.js.map +0 -1
- package/plugins/CmsEntryFieldFilterPathPlugin.d.ts +0 -23
- package/plugins/CmsEntryFieldFilterPathPlugin.js +0 -48
- package/plugins/CmsEntryFieldFilterPathPlugin.js.map +0 -1
- package/plugins/CmsEntryFieldFilterPlugin.d.ts +0 -43
- package/plugins/CmsEntryFieldFilterPlugin.js +0 -27
- package/plugins/CmsEntryFieldFilterPlugin.js.map +0 -1
- package/plugins/CmsEntryFieldSortingPlugin.d.ts +0 -42
- package/plugins/CmsEntryFieldSortingPlugin.js +0 -27
- package/plugins/CmsEntryFieldSortingPlugin.js.map +0 -1
- package/plugins/CmsFieldFilterValueTransformPlugin.d.ts +0 -11
- package/plugins/CmsFieldFilterValueTransformPlugin.js +0 -23
- package/plugins/CmsFieldFilterValueTransformPlugin.js.map +0 -1
- package/plugins/index.js.map +0 -1
package/dynamoDb/index.js
CHANGED
|
@@ -1,15 +1,9 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
var _longText = require("./storage/longText");
|
|
9
|
-
var _plainObject = require("./path/plainObject");
|
|
10
|
-
var _datetime = require("./transformValue/datetime");
|
|
11
|
-
var _locationFolderId = require("./path/locationFolderId");
|
|
12
|
-
var _default = () => [(0, _richText.createRichTextStorageTransformPlugin)(), (0, _longText.createLongTextStorageTransformPlugin)(), (0, _plainObject.createPlainObjectPathPlugin)(), (0, _locationFolderId.createLocationFolderIdPathPlugin)(), (0, _datetime.createDatetimeTransformValuePlugin)()];
|
|
13
|
-
exports.default = _default;
|
|
1
|
+
import { createDatetimeTransformValuePlugin, createLocationFolderIdPathPlugin, createPlainObjectPathPlugin } from "@webiny/api-headless-cms-storage";
|
|
2
|
+
const dynamoDb = ()=>[
|
|
3
|
+
createPlainObjectPathPlugin(),
|
|
4
|
+
createLocationFolderIdPathPlugin(),
|
|
5
|
+
createDatetimeTransformValuePlugin()
|
|
6
|
+
];
|
|
7
|
+
export default dynamoDb;
|
|
14
8
|
|
|
15
9
|
//# sourceMappingURL=index.js.map
|
package/dynamoDb/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"dynamoDb/index.js","sources":["../../src/dynamoDb/index.ts"],"sourcesContent":["import { createPlainObjectPathPlugin } from \"@webiny/api-headless-cms-storage\";\nimport { createLocationFolderIdPathPlugin } from \"@webiny/api-headless-cms-storage\";\nimport { createDatetimeTransformValuePlugin } from \"@webiny/api-headless-cms-storage\";\n\nexport default () => [\n createPlainObjectPathPlugin(),\n createLocationFolderIdPathPlugin(),\n createDatetimeTransformValuePlugin()\n];\n"],"names":["createPlainObjectPathPlugin","createLocationFolderIdPathPlugin","createDatetimeTransformValuePlugin"],"mappings":";AAIA,iBAAgB,IAAK;QACjBA;QACAC;QACAC;KACJ"}
|
package/index.d.ts
CHANGED
|
@@ -1,3 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
export
|
|
3
|
-
export declare const createStorageOperations: StorageOperationsFactory;
|
|
1
|
+
export * from "./plugins/index.js";
|
|
2
|
+
export declare const registerDynamoDbStorageOperations: () => import("@webiny/handler").RegisterExtensionPlugin<import("@webiny/handler/types.js").Context>[];
|
package/index.js
CHANGED
|
@@ -1,127 +1,91 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
}
|
|
7
|
-
|
|
8
|
-
|
|
1
|
+
import dynamoDb from "./dynamoDb/index.js";
|
|
2
|
+
import { ENTITIES } from "./types.js";
|
|
3
|
+
import { createGroupEntity } from "./definitions/group.js";
|
|
4
|
+
import { createModelEntity } from "./definitions/model.js";
|
|
5
|
+
import { createEntryEntity } from "./definitions/entry.js";
|
|
6
|
+
import { createGroupsStorageOperations } from "./operations/group/index.js";
|
|
7
|
+
import { createModelsStorageOperations } from "./operations/model/index.js";
|
|
8
|
+
import { createEntriesStorageOperations } from "./operations/entry/index.js";
|
|
9
|
+
import { createFilterCreatePlugins } from "@webiny/api-headless-cms-storage";
|
|
10
|
+
import { createTable } from "./definitions/table.js";
|
|
11
|
+
import { createRegisterExtensionPlugin } from "@webiny/handler";
|
|
12
|
+
import { createFeature } from "@webiny/feature/api/index.js";
|
|
13
|
+
import { StorageOperationsFactory } from "@webiny/api-headless-cms/exports/api/cms/storage.js";
|
|
14
|
+
import { DynamoDBClient } from "@webiny/db-dynamodb";
|
|
15
|
+
export * from "./plugins/index.js";
|
|
16
|
+
const createDynamoDbStorageOperations = (params)=>{
|
|
17
|
+
const { table, plugins, container } = params;
|
|
18
|
+
const db = container.resolve(DynamoDBClient);
|
|
19
|
+
const documentClient = db.client;
|
|
20
|
+
const tableInstance = createTable({
|
|
21
|
+
name: table,
|
|
22
|
+
documentClient
|
|
23
|
+
});
|
|
24
|
+
const entities = {
|
|
25
|
+
groups: createGroupEntity({
|
|
26
|
+
entityName: ENTITIES.GROUPS,
|
|
27
|
+
table: tableInstance
|
|
28
|
+
}),
|
|
29
|
+
models: createModelEntity({
|
|
30
|
+
entityName: ENTITIES.MODELS,
|
|
31
|
+
table: tableInstance
|
|
32
|
+
}),
|
|
33
|
+
entries: createEntryEntity({
|
|
34
|
+
entityName: ENTITIES.ENTRIES,
|
|
35
|
+
table: tableInstance
|
|
36
|
+
})
|
|
37
|
+
};
|
|
38
|
+
plugins.register([
|
|
39
|
+
dynamoDb(),
|
|
40
|
+
createFilterCreatePlugins()
|
|
41
|
+
]);
|
|
42
|
+
const entries = createEntriesStorageOperations({
|
|
43
|
+
entity: entities.entries,
|
|
44
|
+
container,
|
|
45
|
+
plugins
|
|
46
|
+
});
|
|
47
|
+
return {
|
|
48
|
+
name: "dynamodb",
|
|
49
|
+
beforeInit: async ()=>{
|
|
50
|
+
entries.dataLoaders.clearAll();
|
|
51
|
+
},
|
|
52
|
+
getEntities: ()=>entities,
|
|
53
|
+
getTable: ()=>tableInstance,
|
|
54
|
+
groups: createGroupsStorageOperations({
|
|
55
|
+
entity: entities.groups,
|
|
56
|
+
container
|
|
57
|
+
}),
|
|
58
|
+
models: createModelsStorageOperations({
|
|
59
|
+
entity: entities.models
|
|
60
|
+
}),
|
|
61
|
+
entries
|
|
62
|
+
};
|
|
9
63
|
};
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
Object.keys(_plugins3).forEach(function (key) {
|
|
27
|
-
if (key === "default" || key === "__esModule") return;
|
|
28
|
-
if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
|
|
29
|
-
if (key in exports && exports[key] === _plugins3[key]) return;
|
|
30
|
-
Object.defineProperty(exports, key, {
|
|
31
|
-
enumerable: true,
|
|
32
|
-
get: function () {
|
|
33
|
-
return _plugins3[key];
|
|
64
|
+
class DynamoDbStorageOperationsFactoryImpl {
|
|
65
|
+
async create(context) {
|
|
66
|
+
return createDynamoDbStorageOperations({
|
|
67
|
+
plugins: context.plugins,
|
|
68
|
+
container: context.container
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
const DynamoDbStorageOperationsFactory = StorageOperationsFactory.createImplementation({
|
|
73
|
+
implementation: DynamoDbStorageOperationsFactoryImpl,
|
|
74
|
+
dependencies: []
|
|
75
|
+
});
|
|
76
|
+
const storageOperationsFeature = createFeature({
|
|
77
|
+
name: "cms.storageOperations.openSearch",
|
|
78
|
+
register: (container)=>{
|
|
79
|
+
container.register(DynamoDbStorageOperationsFactory).inSingletonScope();
|
|
34
80
|
}
|
|
35
|
-
});
|
|
36
81
|
});
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
table,
|
|
44
|
-
documentClient,
|
|
45
|
-
plugins: userPlugins
|
|
46
|
-
} = params;
|
|
47
|
-
const tableInstance = (0, _table.createTable)({
|
|
48
|
-
table,
|
|
49
|
-
documentClient
|
|
50
|
-
});
|
|
51
|
-
const entities = {
|
|
52
|
-
system: (0, _system.createSystemEntity)({
|
|
53
|
-
entityName: _types.ENTITIES.SYSTEM,
|
|
54
|
-
table: tableInstance,
|
|
55
|
-
attributes: attributes ? attributes[_types.ENTITIES.SYSTEM] : {}
|
|
56
|
-
}),
|
|
57
|
-
groups: (0, _group.createGroupEntity)({
|
|
58
|
-
entityName: _types.ENTITIES.GROUPS,
|
|
59
|
-
table: tableInstance,
|
|
60
|
-
attributes: attributes ? attributes[_types.ENTITIES.GROUPS] : {}
|
|
61
|
-
}),
|
|
62
|
-
models: (0, _model.createModelEntity)({
|
|
63
|
-
entityName: _types.ENTITIES.MODELS,
|
|
64
|
-
table: tableInstance,
|
|
65
|
-
attributes: attributes ? attributes[_types.ENTITIES.MODELS] : {}
|
|
66
|
-
}),
|
|
67
|
-
entries: (0, _entry.createEntryEntity)({
|
|
68
|
-
entityName: _types.ENTITIES.ENTRIES,
|
|
69
|
-
table: tableInstance,
|
|
70
|
-
attributes: attributes ? attributes[_types.ENTITIES.ENTRIES] : {}
|
|
71
|
-
})
|
|
72
|
-
};
|
|
73
|
-
const plugins = new _plugins.PluginsContainer([
|
|
74
|
-
/**
|
|
75
|
-
* DynamoDB filter plugins for the where conditions.
|
|
76
|
-
*/
|
|
77
|
-
(0, _filters.default)(),
|
|
78
|
-
/**
|
|
79
|
-
* Field plugins for DynamoDB.
|
|
80
|
-
*/
|
|
81
|
-
(0, _dynamoDb.default)(),
|
|
82
|
-
/**
|
|
83
|
-
* Filter create plugins.
|
|
84
|
-
*/
|
|
85
|
-
(0, _plugins2.createFilterCreatePlugins)(),
|
|
86
|
-
/**
|
|
87
|
-
* User defined custom plugins.
|
|
88
|
-
*/
|
|
89
|
-
...(userPlugins || [])]);
|
|
90
|
-
const entries = (0, _entry2.createEntriesStorageOperations)({
|
|
91
|
-
entity: entities.entries,
|
|
92
|
-
plugins
|
|
93
|
-
});
|
|
94
|
-
return {
|
|
95
|
-
name: "dynamodb",
|
|
96
|
-
beforeInit: async context => {
|
|
97
|
-
const types = ["cms-model-field-to-graphql", _plugins3.CmsEntryFieldFilterPathPlugin.type, _plugins3.CmsFieldFilterValueTransformPlugin.type, _plugins3.CmsEntryFieldFilterPlugin.type, _plugins3.CmsEntryFieldSortingPlugin.type, _ValueFilterPlugin.ValueFilterPlugin.type, _apiHeadlessCms.StorageOperationsCmsModelPlugin.type, _apiHeadlessCms.StorageTransformPlugin.type, _api.CompressorPlugin.type];
|
|
98
|
-
/**
|
|
99
|
-
* Collect all required plugins from parent context.
|
|
100
|
-
*/
|
|
101
|
-
for (const type of types) {
|
|
102
|
-
plugins.mergeByType(context.plugins, type);
|
|
103
|
-
}
|
|
104
|
-
/**
|
|
105
|
-
* Pass the plugins to the parent context.
|
|
106
|
-
*/
|
|
107
|
-
context.plugins.register([(0, _dynamoDb.default)()]);
|
|
108
|
-
entries.dataLoaders.clearAll();
|
|
109
|
-
},
|
|
110
|
-
getEntities: () => entities,
|
|
111
|
-
getTable: () => tableInstance,
|
|
112
|
-
system: (0, _system2.createSystemStorageOperations)({
|
|
113
|
-
entity: entities.system
|
|
114
|
-
}),
|
|
115
|
-
groups: (0, _group2.createGroupsStorageOperations)({
|
|
116
|
-
entity: entities.groups,
|
|
117
|
-
plugins
|
|
118
|
-
}),
|
|
119
|
-
models: (0, _model2.createModelsStorageOperations)({
|
|
120
|
-
entity: entities.models
|
|
121
|
-
}),
|
|
122
|
-
entries
|
|
123
|
-
};
|
|
82
|
+
const registerDynamoDbStorageOperations = ()=>{
|
|
83
|
+
const plugin = createRegisterExtensionPlugin((context)=>storageOperationsFeature.register(context.container));
|
|
84
|
+
plugin.name = "cms.registerDynamoDbStorageOperations";
|
|
85
|
+
return [
|
|
86
|
+
plugin
|
|
87
|
+
];
|
|
124
88
|
};
|
|
125
|
-
|
|
89
|
+
export { registerDynamoDbStorageOperations };
|
|
126
90
|
|
|
127
91
|
//# sourceMappingURL=index.js.map
|
package/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/index.ts"],"sourcesContent":["import dynamoDbPlugins from \"./dynamoDb/index.js\";\nimport type { CmsContext, StorageOperationsFactory } from \"~/types.js\";\nimport { ENTITIES } from \"~/types.js\";\nimport { createGroupEntity } from \"~/definitions/group.js\";\nimport { createModelEntity } from \"~/definitions/model.js\";\nimport { createEntryEntity } from \"~/definitions/entry.js\";\nimport { createGroupsStorageOperations } from \"~/operations/group/index.js\";\nimport { createModelsStorageOperations } from \"~/operations/model/index.js\";\nimport { createEntriesStorageOperations } from \"./operations/entry/index.js\";\nimport { createFilterCreatePlugins } from \"@webiny/api-headless-cms-storage\";\nimport { createTable } from \"~/definitions/table.js\";\nimport { createRegisterExtensionPlugin } from \"@webiny/handler\";\nimport { createFeature } from \"@webiny/feature/api/index.js\";\nimport { StorageOperationsFactory as StorageOperationsFactoryAbstraction } from \"@webiny/api-headless-cms/exports/api/cms/storage.js\";\nimport { DynamoDBClient } from \"@webiny/db-dynamodb\";\n\nexport * from \"./plugins/index.js\";\n\nconst createDynamoDbStorageOperations: StorageOperationsFactory = params => {\n const { table, plugins, container } = params;\n\n const db = container.resolve(DynamoDBClient);\n const documentClient = db.client;\n\n const tableInstance = createTable({\n name: table,\n documentClient\n });\n\n const entities = {\n groups: createGroupEntity({\n entityName: ENTITIES.GROUPS,\n table: tableInstance\n }),\n models: createModelEntity({\n entityName: ENTITIES.MODELS,\n table: tableInstance\n }),\n entries: createEntryEntity({\n entityName: ENTITIES.ENTRIES,\n table: tableInstance\n })\n };\n\n plugins.register([\n /**\n * Field plugins for DynamoDB.\n */\n dynamoDbPlugins(),\n /**\n * Filter create plugins.\n */\n createFilterCreatePlugins()\n ]);\n\n const entries = createEntriesStorageOperations({\n entity: entities.entries,\n container,\n plugins\n });\n\n return {\n name: \"dynamodb\",\n beforeInit: async () => {\n entries.dataLoaders.clearAll();\n },\n getEntities: () => entities,\n getTable: () => tableInstance,\n groups: createGroupsStorageOperations({\n entity: entities.groups,\n container\n }),\n models: createModelsStorageOperations({\n entity: entities.models\n }),\n entries\n };\n};\n\nclass DynamoDbStorageOperationsFactoryImpl\n implements StorageOperationsFactoryAbstraction.Interface\n{\n public async create(context: CmsContext) {\n return createDynamoDbStorageOperations({\n plugins: context.plugins,\n container: context.container\n });\n }\n}\n\nconst DynamoDbStorageOperationsFactory = StorageOperationsFactoryAbstraction.createImplementation({\n implementation: DynamoDbStorageOperationsFactoryImpl,\n dependencies: []\n});\n\nconst storageOperationsFeature = createFeature({\n name: \"cms.storageOperations.openSearch\",\n register: container => {\n container.register(DynamoDbStorageOperationsFactory).inSingletonScope();\n }\n});\n\nexport const registerDynamoDbStorageOperations = () => {\n const plugin = createRegisterExtensionPlugin(context => {\n return storageOperationsFeature.register(context.container);\n });\n plugin.name = \"cms.registerDynamoDbStorageOperations\";\n\n return [plugin];\n};\n"],"names":["createDynamoDbStorageOperations","params","table","plugins","container","db","DynamoDBClient","documentClient","tableInstance","createTable","entities","createGroupEntity","ENTITIES","createModelEntity","createEntryEntity","dynamoDbPlugins","createFilterCreatePlugins","entries","createEntriesStorageOperations","createGroupsStorageOperations","createModelsStorageOperations","DynamoDbStorageOperationsFactoryImpl","context","DynamoDbStorageOperationsFactory","StorageOperationsFactoryAbstraction","storageOperationsFeature","createFeature","registerDynamoDbStorageOperations","plugin","createRegisterExtensionPlugin"],"mappings":";;;;;;;;;;;;;;;AAkBA,MAAMA,kCAA4DC,CAAAA;IAC9D,MAAM,EAAEC,KAAK,EAAEC,OAAO,EAAEC,SAAS,EAAE,GAAGH;IAEtC,MAAMI,KAAKD,UAAU,OAAO,CAACE;IAC7B,MAAMC,iBAAiBF,GAAG,MAAM;IAEhC,MAAMG,gBAAgBC,YAAY;QAC9B,MAAMP;QACNK;IACJ;IAEA,MAAMG,WAAW;QACb,QAAQC,kBAAkB;YACtB,YAAYC,SAAS,MAAM;YAC3B,OAAOJ;QACX;QACA,QAAQK,kBAAkB;YACtB,YAAYD,SAAS,MAAM;YAC3B,OAAOJ;QACX;QACA,SAASM,kBAAkB;YACvB,YAAYF,SAAS,OAAO;YAC5B,OAAOJ;QACX;IACJ;IAEAL,QAAQ,QAAQ,CAAC;QAIbY;QAIAC;KACH;IAED,MAAMC,UAAUC,+BAA+B;QAC3C,QAAQR,SAAS,OAAO;QACxBN;QACAD;IACJ;IAEA,OAAO;QACH,MAAM;QACN,YAAY;YACRc,QAAQ,WAAW,CAAC,QAAQ;QAChC;QACA,aAAa,IAAMP;QACnB,UAAU,IAAMF;QAChB,QAAQW,8BAA8B;YAClC,QAAQT,SAAS,MAAM;YACvBN;QACJ;QACA,QAAQgB,8BAA8B;YAClC,QAAQV,SAAS,MAAM;QAC3B;QACAO;IACJ;AACJ;AAEA,MAAMI;IAGF,MAAa,OAAOC,OAAmB,EAAE;QACrC,OAAOtB,gCAAgC;YACnC,SAASsB,QAAQ,OAAO;YACxB,WAAWA,QAAQ,SAAS;QAChC;IACJ;AACJ;AAEA,MAAMC,mCAAmCC,yBAAAA,oBAAwD,CAAC;IAC9F,gBAAgBH;IAChB,cAAc,EAAE;AACpB;AAEA,MAAMI,2BAA2BC,cAAc;IAC3C,MAAM;IACN,UAAUtB,CAAAA;QACNA,UAAU,QAAQ,CAACmB,kCAAkC,gBAAgB;IACzE;AACJ;AAEO,MAAMI,oCAAoC;IAC7C,MAAMC,SAASC,8BAA8BP,CAAAA,UAClCG,yBAAyB,QAAQ,CAACH,QAAQ,SAAS;IAE9DM,OAAO,IAAI,GAAG;IAEd,OAAO;QAACA;KAAO;AACnB"}
|
|
@@ -2,11 +2,10 @@ import type DataLoader from "dataloader";
|
|
|
2
2
|
export interface CacheKeyParams {
|
|
3
3
|
name: string;
|
|
4
4
|
tenant: string;
|
|
5
|
-
|
|
5
|
+
modelId: string;
|
|
6
6
|
}
|
|
7
7
|
export interface ClearAllParams {
|
|
8
8
|
tenant: string;
|
|
9
|
-
locale: string;
|
|
10
9
|
}
|
|
11
10
|
export declare class DataLoaderCache {
|
|
12
11
|
private readonly cache;
|
|
@@ -1,41 +1,27 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.DataLoaderCache = void 0;
|
|
7
1
|
class DataLoaderCache {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
2
|
+
getDataLoader(params) {
|
|
3
|
+
const key = this.createKey(params);
|
|
4
|
+
return this.cache[key] || null;
|
|
5
|
+
}
|
|
6
|
+
setDataLoader(params, dataLoader) {
|
|
7
|
+
const key = this.createKey(params);
|
|
8
|
+
this.cache[key] = dataLoader;
|
|
9
|
+
}
|
|
10
|
+
clearAll(params) {
|
|
11
|
+
if (!params) {
|
|
12
|
+
for(const current in this.cache)this.cache[current].clearAll();
|
|
13
|
+
return;
|
|
14
|
+
}
|
|
15
|
+
const key = `${params.tenant}_`;
|
|
16
|
+
for(const current in this.cache)if (false !== current.startsWith(key)) this.cache[current].clearAll();
|
|
17
|
+
}
|
|
18
|
+
createKey(params) {
|
|
19
|
+
return `${params.tenant}_${params.modelId}_${params.name}`;
|
|
23
20
|
}
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
name: ""
|
|
27
|
-
});
|
|
28
|
-
for (const current in this.cache) {
|
|
29
|
-
if (current.startsWith(key) === false) {
|
|
30
|
-
continue;
|
|
31
|
-
}
|
|
32
|
-
this.cache[current].clearAll();
|
|
21
|
+
constructor(){
|
|
22
|
+
this.cache = {};
|
|
33
23
|
}
|
|
34
|
-
}
|
|
35
|
-
createKey(params) {
|
|
36
|
-
return `${params.tenant}_${params.locale}_${params.name}`;
|
|
37
|
-
}
|
|
38
24
|
}
|
|
39
|
-
|
|
25
|
+
export { DataLoaderCache };
|
|
40
26
|
|
|
41
27
|
//# sourceMappingURL=DataLoaderCache.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"operations/entry/dataLoader/DataLoaderCache.js","sources":["../../../../src/operations/entry/dataLoader/DataLoaderCache.ts"],"sourcesContent":["import type DataLoader from \"dataloader\";\n\nexport interface CacheKeyParams {\n name: string;\n tenant: string;\n modelId: string;\n}\n\nexport interface ClearAllParams {\n tenant: string;\n}\n\nexport class DataLoaderCache {\n private readonly cache: Record<string, DataLoader<any, any>> = {};\n\n public getDataLoader<I = any, R = any>(params: CacheKeyParams): DataLoader<I, R> | null {\n const key = this.createKey(params);\n\n return this.cache[key] || null;\n }\n\n public setDataLoader(params: CacheKeyParams, dataLoader: DataLoader<any, any>): void {\n const key = this.createKey(params);\n this.cache[key] = dataLoader;\n }\n\n public clearAll(params?: ClearAllParams): void {\n if (!params) {\n for (const current in this.cache) {\n this.cache[current].clearAll();\n }\n return;\n }\n const key = `${params.tenant}_`;\n for (const current in this.cache) {\n if (current.startsWith(key) === false) {\n continue;\n }\n this.cache[current].clearAll();\n }\n }\n\n private createKey(params: CacheKeyParams): string {\n return `${params.tenant}_${params.modelId}_${params.name}`;\n }\n}\n"],"names":["DataLoaderCache","params","key","dataLoader","current"],"mappings":"AAYO,MAAMA;IAGF,cAAgCC,MAAsB,EAA2B;QACpF,MAAMC,MAAM,IAAI,CAAC,SAAS,CAACD;QAE3B,OAAO,IAAI,CAAC,KAAK,CAACC,IAAI,IAAI;IAC9B;IAEO,cAAcD,MAAsB,EAAEE,UAAgC,EAAQ;QACjF,MAAMD,MAAM,IAAI,CAAC,SAAS,CAACD;QAC3B,IAAI,CAAC,KAAK,CAACC,IAAI,GAAGC;IACtB;IAEO,SAASF,MAAuB,EAAQ;QAC3C,IAAI,CAACA,QAAQ;YACT,IAAK,MAAMG,WAAW,IAAI,CAAC,KAAK,CAC5B,IAAI,CAAC,KAAK,CAACA,QAAQ,CAAC,QAAQ;YAEhC;QACJ;QACA,MAAMF,MAAM,GAAGD,OAAO,MAAM,CAAC,CAAC,CAAC;QAC/B,IAAK,MAAMG,WAAW,IAAI,CAAC,KAAK,CAC5B,IAAIA,AAA4B,UAA5BA,QAAQ,UAAU,CAACF,MAGvB,IAAI,CAAC,KAAK,CAACE,QAAQ,CAAC,QAAQ;IAEpC;IAEQ,UAAUH,MAAsB,EAAU;QAC9C,OAAO,GAAGA,OAAO,MAAM,CAAC,CAAC,EAAEA,OAAO,OAAO,CAAC,CAAC,EAAEA,OAAO,IAAI,EAAE;IAC9D;;aA/BiB,KAAK,GAAyC,CAAC;;AAgCpE"}
|
|
@@ -1,10 +1,5 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.CMS_ENTRY_BATCH_SCHEDULE_WAIT = void 0;
|
|
7
1
|
const batchScheduleWaitEnv = Number(process.env.WEBINY_API_CMS_ENTRY_BATCH_SCHEDULE_WAIT || "0");
|
|
8
|
-
const CMS_ENTRY_BATCH_SCHEDULE_WAIT =
|
|
2
|
+
const CMS_ENTRY_BATCH_SCHEDULE_WAIT = isNaN(batchScheduleWaitEnv) ? 0 : batchScheduleWaitEnv;
|
|
3
|
+
export { CMS_ENTRY_BATCH_SCHEDULE_WAIT };
|
|
9
4
|
|
|
10
5
|
//# sourceMappingURL=constants.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"operations/entry/dataLoader/constants.js","sources":["../../../../src/operations/entry/dataLoader/constants.ts"],"sourcesContent":["const batchScheduleWaitEnv = Number(process.env.WEBINY_API_CMS_ENTRY_BATCH_SCHEDULE_WAIT || \"0\");\nexport const CMS_ENTRY_BATCH_SCHEDULE_WAIT = isNaN(batchScheduleWaitEnv) ? 0 : batchScheduleWaitEnv;\n"],"names":["batchScheduleWaitEnv","Number","process","CMS_ENTRY_BATCH_SCHEDULE_WAIT","isNaN"],"mappings":"AAAA,MAAMA,uBAAuBC,OAAOC,QAAQ,GAAG,CAAC,wCAAwC,IAAI;AACrF,MAAMC,gCAAgCC,MAAMJ,wBAAwB,IAAIA"}
|
|
@@ -1,25 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
var _constants = require("./constants");
|
|
8
|
-
/**
|
|
9
|
-
* This is to be used when user wants to wait for a number of milliseconds before the batch is executed.
|
|
10
|
-
* Intended to be used internally or for a specific user case.
|
|
11
|
-
* Not to be documented and exposed to publish as it can slow the data loading a lot.
|
|
12
|
-
*
|
|
13
|
-
* https://github.com/graphql/dataloader#batch-scheduling
|
|
14
|
-
*/
|
|
15
|
-
const createBatchScheduleFn = () => {
|
|
16
|
-
if (_constants.CMS_ENTRY_BATCH_SCHEDULE_WAIT <= 0) {
|
|
17
|
-
return undefined;
|
|
18
|
-
}
|
|
19
|
-
return callback => {
|
|
20
|
-
setTimeout(callback, _constants.CMS_ENTRY_BATCH_SCHEDULE_WAIT);
|
|
21
|
-
};
|
|
1
|
+
import { CMS_ENTRY_BATCH_SCHEDULE_WAIT } from "./constants.js";
|
|
2
|
+
const createBatchScheduleFn = ()=>{
|
|
3
|
+
if (CMS_ENTRY_BATCH_SCHEDULE_WAIT <= 0) return;
|
|
4
|
+
return (callback)=>{
|
|
5
|
+
setTimeout(callback, CMS_ENTRY_BATCH_SCHEDULE_WAIT);
|
|
6
|
+
};
|
|
22
7
|
};
|
|
23
|
-
|
|
8
|
+
export { createBatchScheduleFn };
|
|
24
9
|
|
|
25
10
|
//# sourceMappingURL=createBatchScheduleFn.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"operations/entry/dataLoader/createBatchScheduleFn.js","sources":["../../../../src/operations/entry/dataLoader/createBatchScheduleFn.ts"],"sourcesContent":["import { CMS_ENTRY_BATCH_SCHEDULE_WAIT } from \"./constants.js\";\n\n/**\n * This is to be used when user wants to wait for a number of milliseconds before the batch is executed.\n * Intended to be used internally or for a specific user case.\n * Not to be documented and exposed to publish as it can slow the data loading a lot.\n *\n * https://github.com/graphql/dataloader#batch-scheduling\n */\nexport const createBatchScheduleFn = () => {\n if (CMS_ENTRY_BATCH_SCHEDULE_WAIT <= 0) {\n return undefined;\n }\n return (callback: () => void) => {\n setTimeout(callback, CMS_ENTRY_BATCH_SCHEDULE_WAIT);\n };\n};\n"],"names":["createBatchScheduleFn","CMS_ENTRY_BATCH_SCHEDULE_WAIT","callback","setTimeout"],"mappings":";AASO,MAAMA,wBAAwB;IACjC,IAAIC,iCAAiC,GACjC;IAEJ,OAAO,CAACC;QACJC,WAAWD,UAAUD;IACzB;AACJ"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import DataLoader from "dataloader";
|
|
2
|
-
import type { CmsStorageEntry } from "@webiny/api-headless-cms/types";
|
|
3
|
-
import type {
|
|
4
|
-
export declare const createGetAllEntryRevisions: (params:
|
|
2
|
+
import type { CmsStorageEntry } from "@webiny/api-headless-cms/types/index.js";
|
|
3
|
+
import type { IDataLoaderParams } from "./types.js";
|
|
4
|
+
export declare const createGetAllEntryRevisions: (params: IDataLoaderParams) => DataLoader<string, CmsStorageEntry<import("@webiny/api-headless-cms/types/types.js").CmsEntryValues>[], string>;
|
|
@@ -1,45 +1,24 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
const results = {};
|
|
21
|
-
for (const id of ids) {
|
|
22
|
-
const queryAllParams = {
|
|
23
|
-
entity,
|
|
24
|
-
partitionKey: (0, _keys.createPartitionKey)({
|
|
25
|
-
tenant,
|
|
26
|
-
locale,
|
|
27
|
-
id
|
|
28
|
-
}),
|
|
29
|
-
options: {
|
|
30
|
-
beginsWith: "REV#"
|
|
31
|
-
}
|
|
32
|
-
};
|
|
33
|
-
const items = await (0, _query.queryAll)(queryAllParams);
|
|
34
|
-
results[id] = (0, _cleanup.cleanupItems)(entity, items);
|
|
35
|
-
}
|
|
36
|
-
return ids.map(id => {
|
|
37
|
-
return results[id] || [];
|
|
1
|
+
import dataloader from "dataloader";
|
|
2
|
+
import { createPartitionKey } from "../keys.js";
|
|
3
|
+
import { createBatchScheduleFn } from "./createBatchScheduleFn.js";
|
|
4
|
+
const createGetAllEntryRevisions = (params)=>{
|
|
5
|
+
const { entity, tenant, modelId } = params;
|
|
6
|
+
return new dataloader(async (ids)=>{
|
|
7
|
+
const results = {};
|
|
8
|
+
for (const id of ids)results[id] = (await entity.queryAllClean({
|
|
9
|
+
partitionKey: createPartitionKey({
|
|
10
|
+
tenant,
|
|
11
|
+
id
|
|
12
|
+
}),
|
|
13
|
+
options: {
|
|
14
|
+
beginsWith: "REV#"
|
|
15
|
+
}
|
|
16
|
+
})).map((result)=>result.data);
|
|
17
|
+
return ids.map((id)=>(results[id] || []).filter((item)=>item.modelId === modelId));
|
|
18
|
+
}, {
|
|
19
|
+
batchScheduleFn: createBatchScheduleFn()
|
|
38
20
|
});
|
|
39
|
-
}, {
|
|
40
|
-
batchScheduleFn: (0, _createBatchScheduleFn.createBatchScheduleFn)()
|
|
41
|
-
});
|
|
42
21
|
};
|
|
43
|
-
|
|
22
|
+
export { createGetAllEntryRevisions };
|
|
44
23
|
|
|
45
24
|
//# sourceMappingURL=getAllEntryRevisions.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"operations/entry/dataLoader/getAllEntryRevisions.js","sources":["../../../../src/operations/entry/dataLoader/getAllEntryRevisions.ts"],"sourcesContent":["import DataLoader from \"dataloader\";\nimport type { CmsStorageEntry } from \"@webiny/api-headless-cms/types/index.js\";\nimport { createPartitionKey } from \"~/operations/entry/keys.js\";\nimport type { IDataLoaderParams } from \"./types.js\";\nimport { createBatchScheduleFn } from \"./createBatchScheduleFn.js\";\n\nexport const createGetAllEntryRevisions = (params: IDataLoaderParams) => {\n const { entity, tenant, modelId } = params;\n return new DataLoader<string, CmsStorageEntry[]>(\n async ids => {\n const results: Record<string, CmsStorageEntry[]> = {};\n\n for (const id of ids) {\n results[id] = (\n await entity.queryAllClean({\n partitionKey: createPartitionKey({\n tenant,\n id\n }),\n options: {\n beginsWith: \"REV#\"\n }\n })\n ).map(result => {\n return result.data;\n });\n }\n\n return ids.map(id => {\n return (results[id] || []).filter(item => {\n return item.modelId === modelId;\n });\n });\n },\n {\n batchScheduleFn: createBatchScheduleFn()\n }\n );\n};\n"],"names":["createGetAllEntryRevisions","params","entity","tenant","modelId","DataLoader","ids","results","id","createPartitionKey","result","item","createBatchScheduleFn"],"mappings":";;;AAMO,MAAMA,6BAA6B,CAACC;IACvC,MAAM,EAAEC,MAAM,EAAEC,MAAM,EAAEC,OAAO,EAAE,GAAGH;IACpC,OAAO,IAAII,WACP,OAAMC;QACF,MAAMC,UAA6C,CAAC;QAEpD,KAAK,MAAMC,MAAMF,IACbC,OAAO,CAACC,GAAG,GACP,OAAMN,OAAO,aAAa,CAAC;YACvB,cAAcO,mBAAmB;gBAC7BN;gBACAK;YACJ;YACA,SAAS;gBACL,YAAY;YAChB;QACJ,EAAC,EACH,GAAG,CAACE,CAAAA,SACKA,OAAO,IAAI;QAI1B,OAAOJ,IAAI,GAAG,CAACE,CAAAA,KACHD,AAAAA,CAAAA,OAAO,CAACC,GAAG,IAAI,EAAC,EAAG,MAAM,CAACG,CAAAA,OACvBA,KAAK,OAAO,KAAKP;IAGpC,GACA;QACI,iBAAiBQ;IACrB;AAER"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import DataLoader from "dataloader";
|
|
2
|
-
import type { CmsStorageEntry } from "@webiny/api-headless-cms/types";
|
|
3
|
-
import type {
|
|
4
|
-
export declare const createGetLatestRevisionByEntryId: (params:
|
|
2
|
+
import type { CmsStorageEntry } from "@webiny/api-headless-cms/types/index.js";
|
|
3
|
+
import type { IDataLoaderParams } from "./types.js";
|
|
4
|
+
export declare const createGetLatestRevisionByEntryId: (params: IDataLoaderParams) => DataLoader<string, CmsStorageEntry<import("@webiny/api-headless-cms/types/types.js").CmsEntryValues>[], string>;
|