@webiny/api-headless-cms 5.41.2-beta.1 → 5.41.3-beta.0
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/crud/contentEntry.crud.js +1 -1
- package/crud/contentEntry.crud.js.map +1 -1
- package/fieldConverters/CmsModelDefaultFieldConverterPlugin.d.ts +3 -2
- package/fieldConverters/CmsModelDefaultFieldConverterPlugin.js.map +1 -1
- package/fieldConverters/CmsModelDynamicZoneFieldConverterPlugin.js.map +1 -1
- package/fieldConverters/CmsModelObjectFieldConverterPlugin.js.map +1 -1
- package/fieldConverters/index.d.ts +3 -0
- package/fieldConverters/index.js +4 -0
- package/fieldConverters/index.js.map +1 -1
- package/package.json +21 -21
- package/plugins/CmsModelFieldConverterPlugin.d.ts +3 -0
- package/plugins/CmsModelFieldConverterPlugin.js +4 -0
- package/plugins/CmsModelFieldConverterPlugin.js.map +1 -1
- package/plugins/StorageTransformPlugin.d.ts +3 -0
- package/plugins/StorageTransformPlugin.js +4 -0
- package/plugins/StorageTransformPlugin.js.map +1 -1
- package/storage/date.d.ts +3 -0
- package/storage/date.js +119 -0
- package/storage/date.js.map +1 -0
- package/storage/dynamicZone.d.ts +2 -0
- package/storage/dynamicZone.js +157 -0
- package/storage/dynamicZone.js.map +1 -0
- package/storage/index.js +7 -1
- package/storage/index.js.map +1 -1
- package/storage/object.js +16 -12
- package/storage/object.js.map +1 -1
- package/utils/entryStorage.d.ts +5 -0
- package/utils/entryStorage.js +2 -1
- package/utils/entryStorage.js.map +1 -1
package/fieldConverters/index.js
CHANGED
|
@@ -7,6 +7,10 @@ exports.createFieldConverters = void 0;
|
|
|
7
7
|
var _CmsModelObjectFieldConverterPlugin = require("./CmsModelObjectFieldConverterPlugin");
|
|
8
8
|
var _CmsModelDefaultFieldConverterPlugin = require("./CmsModelDefaultFieldConverterPlugin");
|
|
9
9
|
var _CmsModelDynamicZoneFieldConverterPlugin = require("./CmsModelDynamicZoneFieldConverterPlugin");
|
|
10
|
+
/**
|
|
11
|
+
* Field converters are used to convert the fieldId to storageId and vice versa.
|
|
12
|
+
*/
|
|
13
|
+
|
|
10
14
|
const createFieldConverters = () => {
|
|
11
15
|
return [new _CmsModelObjectFieldConverterPlugin.CmsModelObjectFieldConverterPlugin(), new _CmsModelDynamicZoneFieldConverterPlugin.CmsModelDynamicZoneFieldConverterPlugin(), new _CmsModelDefaultFieldConverterPlugin.CmsModelDefaultFieldConverterPlugin()];
|
|
12
16
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_CmsModelObjectFieldConverterPlugin","require","_CmsModelDefaultFieldConverterPlugin","_CmsModelDynamicZoneFieldConverterPlugin","createFieldConverters","CmsModelObjectFieldConverterPlugin","CmsModelDynamicZoneFieldConverterPlugin","CmsModelDefaultFieldConverterPlugin","exports"],"sources":["index.ts"],"sourcesContent":["
|
|
1
|
+
{"version":3,"names":["_CmsModelObjectFieldConverterPlugin","require","_CmsModelDefaultFieldConverterPlugin","_CmsModelDynamicZoneFieldConverterPlugin","createFieldConverters","CmsModelObjectFieldConverterPlugin","CmsModelDynamicZoneFieldConverterPlugin","CmsModelDefaultFieldConverterPlugin","exports"],"sources":["index.ts"],"sourcesContent":["/**\n * Field converters are used to convert the fieldId to storageId and vice versa.\n */\nimport { CmsModelObjectFieldConverterPlugin } from \"~/fieldConverters/CmsModelObjectFieldConverterPlugin\";\nimport { CmsModelDefaultFieldConverterPlugin } from \"~/fieldConverters/CmsModelDefaultFieldConverterPlugin\";\nimport { CmsModelDynamicZoneFieldConverterPlugin } from \"~/fieldConverters/CmsModelDynamicZoneFieldConverterPlugin\";\n\nexport const createFieldConverters = () => {\n return [\n new CmsModelObjectFieldConverterPlugin(),\n new CmsModelDynamicZoneFieldConverterPlugin(),\n new CmsModelDefaultFieldConverterPlugin()\n ];\n};\n"],"mappings":";;;;;;AAGA,IAAAA,mCAAA,GAAAC,OAAA;AACA,IAAAC,oCAAA,GAAAD,OAAA;AACA,IAAAE,wCAAA,GAAAF,OAAA;AALA;AACA;AACA;;AAKO,MAAMG,qBAAqB,GAAGA,CAAA,KAAM;EACvC,OAAO,CACH,IAAIC,sEAAkC,CAAC,CAAC,EACxC,IAAIC,gFAAuC,CAAC,CAAC,EAC7C,IAAIC,wEAAmC,CAAC,CAAC,CAC5C;AACL,CAAC;AAACC,OAAA,CAAAJ,qBAAA,GAAAA,qBAAA","ignoreList":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@webiny/api-headless-cms",
|
|
3
|
-
"version": "5.41.
|
|
3
|
+
"version": "5.41.3-beta.0",
|
|
4
4
|
"main": "index.js",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"cms:base"
|
|
@@ -22,20 +22,20 @@
|
|
|
22
22
|
"@babel/runtime": "7.24.1",
|
|
23
23
|
"@graphql-tools/merge": "9.0.8",
|
|
24
24
|
"@graphql-tools/schema": "10.0.7",
|
|
25
|
-
"@webiny/api": "5.41.
|
|
26
|
-
"@webiny/api-i18n": "5.41.
|
|
27
|
-
"@webiny/api-security": "5.41.
|
|
28
|
-
"@webiny/api-tenancy": "5.41.
|
|
29
|
-
"@webiny/error": "5.41.
|
|
30
|
-
"@webiny/handler": "5.41.
|
|
31
|
-
"@webiny/handler-aws": "5.41.
|
|
32
|
-
"@webiny/handler-db": "5.41.
|
|
33
|
-
"@webiny/handler-graphql": "5.41.
|
|
34
|
-
"@webiny/lexical-converter": "5.41.
|
|
35
|
-
"@webiny/plugins": "5.41.
|
|
36
|
-
"@webiny/pubsub": "5.41.
|
|
37
|
-
"@webiny/utils": "5.41.
|
|
38
|
-
"@webiny/validation": "5.41.
|
|
25
|
+
"@webiny/api": "5.41.3-beta.0",
|
|
26
|
+
"@webiny/api-i18n": "5.41.3-beta.0",
|
|
27
|
+
"@webiny/api-security": "5.41.3-beta.0",
|
|
28
|
+
"@webiny/api-tenancy": "5.41.3-beta.0",
|
|
29
|
+
"@webiny/error": "5.41.3-beta.0",
|
|
30
|
+
"@webiny/handler": "5.41.3-beta.0",
|
|
31
|
+
"@webiny/handler-aws": "5.41.3-beta.0",
|
|
32
|
+
"@webiny/handler-db": "5.41.3-beta.0",
|
|
33
|
+
"@webiny/handler-graphql": "5.41.3-beta.0",
|
|
34
|
+
"@webiny/lexical-converter": "5.41.3-beta.0",
|
|
35
|
+
"@webiny/plugins": "5.41.3-beta.0",
|
|
36
|
+
"@webiny/pubsub": "5.41.3-beta.0",
|
|
37
|
+
"@webiny/utils": "5.41.3-beta.0",
|
|
38
|
+
"@webiny/validation": "5.41.3-beta.0",
|
|
39
39
|
"dot-prop": "6.0.1",
|
|
40
40
|
"graphql": "15.8.0",
|
|
41
41
|
"graphql-tag": "2.12.6",
|
|
@@ -53,11 +53,11 @@
|
|
|
53
53
|
"@babel/core": "7.24.3",
|
|
54
54
|
"@babel/preset-env": "7.24.3",
|
|
55
55
|
"@types/babel__code-frame": "7.0.6",
|
|
56
|
-
"@webiny/api-wcp": "5.41.
|
|
57
|
-
"@webiny/aws-sdk": "5.41.
|
|
58
|
-
"@webiny/cli": "5.41.
|
|
59
|
-
"@webiny/db-dynamodb": "5.41.
|
|
60
|
-
"@webiny/project-utils": "5.41.
|
|
56
|
+
"@webiny/api-wcp": "5.41.3-beta.0",
|
|
57
|
+
"@webiny/aws-sdk": "5.41.3-beta.0",
|
|
58
|
+
"@webiny/cli": "5.41.3-beta.0",
|
|
59
|
+
"@webiny/db-dynamodb": "5.41.3-beta.0",
|
|
60
|
+
"@webiny/project-utils": "5.41.3-beta.0",
|
|
61
61
|
"apollo-graphql": "0.9.7",
|
|
62
62
|
"get-yarn-workspaces": "1.0.2",
|
|
63
63
|
"graphql": "15.8.0",
|
|
@@ -77,5 +77,5 @@
|
|
|
77
77
|
"build": "yarn webiny run build",
|
|
78
78
|
"watch": "yarn webiny run watch"
|
|
79
79
|
},
|
|
80
|
-
"gitHead": "
|
|
80
|
+
"gitHead": "a88d62467e51fe0bdec29360233fa1cb27359929"
|
|
81
81
|
}
|
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Field converters are used to convert the fieldId to storageId and vice versa.
|
|
3
|
+
*/
|
|
1
4
|
import { Plugin } from "@webiny/plugins";
|
|
2
5
|
import { CmsEntryValues, CmsModelFieldWithParent } from "../types";
|
|
3
6
|
import { ConverterCollection } from "../utils/converters/ConverterCollection";
|
|
@@ -5,6 +5,10 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.CmsModelFieldConverterPlugin = void 0;
|
|
7
7
|
var _plugins = require("@webiny/plugins");
|
|
8
|
+
/**
|
|
9
|
+
* Field converters are used to convert the fieldId to storageId and vice versa.
|
|
10
|
+
*/
|
|
11
|
+
|
|
8
12
|
class CmsModelFieldConverterPlugin extends _plugins.Plugin {
|
|
9
13
|
static type = "cms.field.converter";
|
|
10
14
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_plugins","require","CmsModelFieldConverterPlugin","Plugin","type","exports"],"sources":["CmsModelFieldConverterPlugin.ts"],"sourcesContent":["
|
|
1
|
+
{"version":3,"names":["_plugins","require","CmsModelFieldConverterPlugin","Plugin","type","exports"],"sources":["CmsModelFieldConverterPlugin.ts"],"sourcesContent":["/**\n * Field converters are used to convert the fieldId to storageId and vice versa.\n */\nimport { Plugin } from \"@webiny/plugins\";\nimport { CmsEntryValues, CmsModelFieldWithParent } from \"~/types\";\nimport { ConverterCollection } from \"~/utils/converters/ConverterCollection\";\n\nexport interface ConvertParams<F = CmsModelFieldWithParent> {\n field: F;\n value: any;\n converterCollection: ConverterCollection;\n}\n\nexport abstract class CmsModelFieldConverterPlugin extends Plugin {\n public static override type = \"cms.field.converter\";\n\n public abstract getFieldType(): string;\n\n public abstract convertToStorage(params: ConvertParams): CmsEntryValues;\n public abstract convertFromStorage(params: ConvertParams): CmsEntryValues;\n}\n"],"mappings":";;;;;;AAGA,IAAAA,QAAA,GAAAC,OAAA;AAHA;AACA;AACA;;AAWO,MAAeC,4BAA4B,SAASC,eAAM,CAAC;EAC9D,OAAuBC,IAAI,GAAG,qBAAqB;AAMvD;AAACC,OAAA,CAAAH,4BAAA,GAAAA,4BAAA","ignoreList":[]}
|
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Storage transforms are used to transform the data before it is saved to the database and after it is read from the database.
|
|
3
|
+
*/
|
|
1
4
|
import { Plugin } from "@webiny/plugins/Plugin";
|
|
2
5
|
import { CmsModel, CmsModelField, CmsModelFieldType } from "../types";
|
|
3
6
|
import { PluginsContainer } from "@webiny/plugins";
|
|
@@ -5,6 +5,10 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.StorageTransformPlugin = void 0;
|
|
7
7
|
var _Plugin = require("@webiny/plugins/Plugin");
|
|
8
|
+
/**
|
|
9
|
+
* Storage transforms are used to transform the data before it is saved to the database and after it is read from the database.
|
|
10
|
+
*/
|
|
11
|
+
|
|
8
12
|
class StorageTransformPlugin extends _Plugin.Plugin {
|
|
9
13
|
static type = "cms.storage.transform.plugin";
|
|
10
14
|
get fieldType() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_Plugin","require","StorageTransformPlugin","Plugin","type","fieldType","config","constructor","name","toStorage","params","fromStorage","exports"],"sources":["StorageTransformPlugin.ts"],"sourcesContent":["
|
|
1
|
+
{"version":3,"names":["_Plugin","require","StorageTransformPlugin","Plugin","type","fieldType","config","constructor","name","toStorage","params","fromStorage","exports"],"sources":["StorageTransformPlugin.ts"],"sourcesContent":["/**\n * Storage transforms are used to transform the data before it is saved to the database and after it is read from the database.\n */\nimport { Plugin } from \"@webiny/plugins/Plugin\";\nimport { CmsModel, CmsModelField, CmsModelFieldType } from \"~/types\";\nimport { PluginsContainer } from \"@webiny/plugins\";\n\nexport interface ToStorageParams<T, F extends CmsModelField> {\n model: CmsModel;\n field: F;\n value: T;\n getStoragePlugin(fieldType: string): StorageTransformPlugin<T>;\n plugins: PluginsContainer;\n}\n\nexport interface FromStorageParams<T, F extends CmsModelField> {\n model: CmsModel;\n field: Partial<F> & Pick<F, \"id\" | \"fieldId\" | \"storageId\" | \"type\" | \"settings\">;\n value: T;\n getStoragePlugin(fieldType: string): StorageTransformPlugin<T>;\n plugins: PluginsContainer;\n}\n\nexport interface StorageTransformPluginParams<T, R, F extends CmsModelField> {\n name?: string;\n fieldType: CmsModelFieldType;\n toStorage: (params: ToStorageParams<T, F>) => Promise<R>;\n fromStorage: (params: FromStorageParams<R, F>) => Promise<T>;\n}\nexport class StorageTransformPlugin<\n T = any,\n R = any,\n F extends CmsModelField = CmsModelField\n> extends Plugin {\n public static override readonly type: string = \"cms.storage.transform.plugin\";\n public get fieldType(): string {\n return this.config.fieldType;\n }\n\n private readonly config: StorageTransformPluginParams<T, R, F>;\n\n public constructor(config: StorageTransformPluginParams<T, R, F>) {\n super();\n this.name = config.name;\n this.config = config;\n }\n\n public toStorage(params: ToStorageParams<T, F>): Promise<R> {\n return this.config.toStorage(params);\n }\n\n public fromStorage(params: FromStorageParams<R, F>): Promise<T> {\n return this.config.fromStorage(params);\n }\n}\n"],"mappings":";;;;;;AAGA,IAAAA,OAAA,GAAAC,OAAA;AAHA;AACA;AACA;;AA2BO,MAAMC,sBAAsB,SAIzBC,cAAM,CAAC;EACb,OAAgCC,IAAI,GAAW,8BAA8B;EAC7E,IAAWC,SAASA,CAAA,EAAW;IAC3B,OAAO,IAAI,CAACC,MAAM,CAACD,SAAS;EAChC;EAIOE,WAAWA,CAACD,MAA6C,EAAE;IAC9D,KAAK,CAAC,CAAC;IACP,IAAI,CAACE,IAAI,GAAGF,MAAM,CAACE,IAAI;IACvB,IAAI,CAACF,MAAM,GAAGA,MAAM;EACxB;EAEOG,SAASA,CAACC,MAA6B,EAAc;IACxD,OAAO,IAAI,CAACJ,MAAM,CAACG,SAAS,CAACC,MAAM,CAAC;EACxC;EAEOC,WAAWA,CAACD,MAA+B,EAAc;IAC5D,OAAO,IAAI,CAACJ,MAAM,CAACK,WAAW,CAACD,MAAM,CAAC;EAC1C;AACJ;AAACE,OAAA,CAAAV,sBAAA,GAAAA,sBAAA","ignoreList":[]}
|
package/storage/date.js
ADDED
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.createDateStorageTransformPlugin = void 0;
|
|
8
|
+
var _error = _interopRequireDefault(require("@webiny/error"));
|
|
9
|
+
var _plugins = require("../plugins");
|
|
10
|
+
/**
|
|
11
|
+
* File is @internal
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
const excludeTypes = ["time", "dateTimeWithTimezone"];
|
|
15
|
+
const convertFromStorage = value => {
|
|
16
|
+
if (!value) {
|
|
17
|
+
return value === null ? null : undefined;
|
|
18
|
+
}
|
|
19
|
+
try {
|
|
20
|
+
const output = new Date(value);
|
|
21
|
+
if (isNaN(output.getTime())) {
|
|
22
|
+
if (process.env.DEBUG !== "true") {
|
|
23
|
+
return null;
|
|
24
|
+
}
|
|
25
|
+
console.warn(`Could not transform "${value}" to date.`);
|
|
26
|
+
return null;
|
|
27
|
+
}
|
|
28
|
+
return output;
|
|
29
|
+
} catch {
|
|
30
|
+
if (process.env.DEBUG !== "true") {
|
|
31
|
+
return null;
|
|
32
|
+
}
|
|
33
|
+
console.warn(`Could not transform "${value}" from storage for date field type.`);
|
|
34
|
+
return null;
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
const convertValueToStorage = (field, value) => {
|
|
38
|
+
if (value instanceof Date || value?.toISOString) {
|
|
39
|
+
return value.toISOString();
|
|
40
|
+
} else if (typeof value === "string") {
|
|
41
|
+
return value;
|
|
42
|
+
}
|
|
43
|
+
throw new _error.default("Error converting value to a storage type.", "TO_STORAGE_ERROR", {
|
|
44
|
+
value: value,
|
|
45
|
+
fieldId: field.fieldId,
|
|
46
|
+
storageId: field.storageId
|
|
47
|
+
});
|
|
48
|
+
};
|
|
49
|
+
const createDateStorageTransformPlugin = () => {
|
|
50
|
+
return new _plugins.StorageTransformPlugin({
|
|
51
|
+
fieldType: "datetime",
|
|
52
|
+
name: "headless-cms.storage-transform.date.default",
|
|
53
|
+
fromStorage: async ({
|
|
54
|
+
value,
|
|
55
|
+
field
|
|
56
|
+
}) => {
|
|
57
|
+
const {
|
|
58
|
+
type
|
|
59
|
+
} = field.settings || {};
|
|
60
|
+
if (!value || !type || excludeTypes.includes(type)) {
|
|
61
|
+
return value;
|
|
62
|
+
} else if (field.multipleValues) {
|
|
63
|
+
if (!Array.isArray(value)) {
|
|
64
|
+
return [];
|
|
65
|
+
}
|
|
66
|
+
const multipleValues = value;
|
|
67
|
+
const results = [];
|
|
68
|
+
for (const input of multipleValues) {
|
|
69
|
+
if (input instanceof Date) {
|
|
70
|
+
if (isNaN(input.getTime())) {
|
|
71
|
+
continue;
|
|
72
|
+
}
|
|
73
|
+
results.push(input);
|
|
74
|
+
continue;
|
|
75
|
+
} else if (!input || typeof input === "object" && Object.keys(input).length === 0) {
|
|
76
|
+
continue;
|
|
77
|
+
}
|
|
78
|
+
const output = convertFromStorage(input);
|
|
79
|
+
if (!output) {
|
|
80
|
+
continue;
|
|
81
|
+
}
|
|
82
|
+
results.push(output);
|
|
83
|
+
}
|
|
84
|
+
return results;
|
|
85
|
+
}
|
|
86
|
+
return convertFromStorage(value);
|
|
87
|
+
},
|
|
88
|
+
toStorage: async ({
|
|
89
|
+
value,
|
|
90
|
+
field
|
|
91
|
+
}) => {
|
|
92
|
+
const {
|
|
93
|
+
type
|
|
94
|
+
} = field.settings || {};
|
|
95
|
+
if (!value || !type || excludeTypes.includes(type)) {
|
|
96
|
+
return value;
|
|
97
|
+
}
|
|
98
|
+
if (field.multipleValues) {
|
|
99
|
+
const multipleValues = value;
|
|
100
|
+
const results = [];
|
|
101
|
+
for (const input of multipleValues) {
|
|
102
|
+
if (!input) {
|
|
103
|
+
continue;
|
|
104
|
+
}
|
|
105
|
+
const output = convertValueToStorage(field, input);
|
|
106
|
+
if (!output) {
|
|
107
|
+
continue;
|
|
108
|
+
}
|
|
109
|
+
results.push(output);
|
|
110
|
+
}
|
|
111
|
+
return results;
|
|
112
|
+
}
|
|
113
|
+
return convertValueToStorage(field, value);
|
|
114
|
+
}
|
|
115
|
+
});
|
|
116
|
+
};
|
|
117
|
+
exports.createDateStorageTransformPlugin = createDateStorageTransformPlugin;
|
|
118
|
+
|
|
119
|
+
//# sourceMappingURL=date.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_error","_interopRequireDefault","require","_plugins","excludeTypes","convertFromStorage","value","undefined","output","Date","isNaN","getTime","process","env","DEBUG","console","warn","convertValueToStorage","field","toISOString","WebinyError","fieldId","storageId","createDateStorageTransformPlugin","StorageTransformPlugin","fieldType","name","fromStorage","type","settings","includes","multipleValues","Array","isArray","results","input","push","Object","keys","length","toStorage","exports"],"sources":["date.ts"],"sourcesContent":["/**\n * File is @internal\n */\nimport WebinyError from \"@webiny/error\";\nimport { CmsModelField } from \"~/types\";\nimport { GenericRecord } from \"@webiny/api/types\";\nimport { StorageTransformPlugin } from \"~/plugins\";\n\nconst excludeTypes = [\"time\", \"dateTimeWithTimezone\"];\n\nconst convertFromStorage = (value: unknown): Date | unknown => {\n if (!value) {\n return value === null ? null : undefined;\n }\n try {\n const output = new Date(value as string);\n if (isNaN(output.getTime())) {\n if (process.env.DEBUG !== \"true\") {\n return null;\n }\n console.warn(`Could not transform \"${value}\" to date.`);\n return null;\n }\n return output;\n } catch {\n if (process.env.DEBUG !== \"true\") {\n return null;\n }\n console.warn(`Could not transform \"${value}\" from storage for date field type.`);\n return null;\n }\n};\n\nconst convertValueToStorage = (field: CmsModelField, value: Date | string | unknown): string => {\n if (value instanceof Date || (value as GenericRecord)?.toISOString) {\n return (value as Date).toISOString();\n } else if (typeof value === \"string\") {\n return value as string;\n }\n throw new WebinyError(\"Error converting value to a storage type.\", \"TO_STORAGE_ERROR\", {\n value: value,\n fieldId: field.fieldId,\n storageId: field.storageId\n });\n};\n\nexport const createDateStorageTransformPlugin = () => {\n return new StorageTransformPlugin({\n fieldType: \"datetime\",\n name: \"headless-cms.storage-transform.date.default\",\n fromStorage: async ({ value, field }) => {\n const { type } = field.settings || {};\n if (!value || !type || excludeTypes.includes(type)) {\n return value;\n } else if (field.multipleValues) {\n if (!Array.isArray(value)) {\n return [];\n }\n const multipleValues = value as unknown[];\n const results: (Date | unknown)[] = [];\n for (const input of multipleValues) {\n if (input instanceof Date) {\n if (isNaN(input.getTime())) {\n continue;\n }\n results.push(input);\n continue;\n } else if (\n !input ||\n (typeof input === \"object\" && Object.keys(input).length === 0)\n ) {\n continue;\n }\n const output = convertFromStorage(input);\n if (!output) {\n continue;\n }\n results.push(output);\n }\n return results;\n }\n return convertFromStorage(value);\n },\n toStorage: async ({ value, field }) => {\n const { type } = field.settings || {};\n if (!value || !type || excludeTypes.includes(type)) {\n return value;\n }\n if (field.multipleValues) {\n const multipleValues = value as (string | Date | null | undefined)[];\n const results: string[] = [];\n for (const input of multipleValues) {\n if (!input) {\n continue;\n }\n const output = convertValueToStorage(field, input);\n if (!output) {\n continue;\n }\n results.push(output);\n }\n return results;\n }\n return convertValueToStorage(field, value);\n }\n });\n};\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.createDynamicZoneStorageTransform = void 0;
|
|
8
|
+
var _plugins = require("../plugins");
|
|
9
|
+
var _pReduce = _interopRequireDefault(require("p-reduce"));
|
|
10
|
+
const processToStorage = async params => {
|
|
11
|
+
const {
|
|
12
|
+
model,
|
|
13
|
+
field: parentField,
|
|
14
|
+
value: input,
|
|
15
|
+
getStoragePlugin,
|
|
16
|
+
plugins
|
|
17
|
+
} = params;
|
|
18
|
+
const output = structuredClone(input);
|
|
19
|
+
if (!output._templateId) {
|
|
20
|
+
return output;
|
|
21
|
+
}
|
|
22
|
+
const template = parentField.settings.templates.find(t => t.id === output._templateId);
|
|
23
|
+
if (!template || !template.fields.length) {
|
|
24
|
+
return output;
|
|
25
|
+
}
|
|
26
|
+
return await (0, _pReduce.default)(template.fields, async (values, field) => {
|
|
27
|
+
const value = values[field.fieldId];
|
|
28
|
+
if (!value) {
|
|
29
|
+
values[field.fieldId] = value;
|
|
30
|
+
return values;
|
|
31
|
+
}
|
|
32
|
+
const plugin = getStoragePlugin(field.type);
|
|
33
|
+
if (!plugin) {
|
|
34
|
+
console.error(`Missing storage plugin for field type "${field.type}".`);
|
|
35
|
+
delete values[field.fieldId];
|
|
36
|
+
return values;
|
|
37
|
+
}
|
|
38
|
+
values[field.fieldId] = await plugin.toStorage({
|
|
39
|
+
plugins,
|
|
40
|
+
getStoragePlugin,
|
|
41
|
+
model,
|
|
42
|
+
field,
|
|
43
|
+
value
|
|
44
|
+
});
|
|
45
|
+
return values;
|
|
46
|
+
}, output);
|
|
47
|
+
};
|
|
48
|
+
const processFromStorage = async params => {
|
|
49
|
+
const {
|
|
50
|
+
model,
|
|
51
|
+
field: parentField,
|
|
52
|
+
value: input,
|
|
53
|
+
getStoragePlugin,
|
|
54
|
+
plugins
|
|
55
|
+
} = params;
|
|
56
|
+
const output = structuredClone(input);
|
|
57
|
+
if (!output._templateId) {
|
|
58
|
+
return output;
|
|
59
|
+
}
|
|
60
|
+
const template = parentField.settings.templates.find(t => t.id === output._templateId);
|
|
61
|
+
if (!template || !template.fields.length) {
|
|
62
|
+
return output;
|
|
63
|
+
}
|
|
64
|
+
return await (0, _pReduce.default)(template.fields, async (values, field) => {
|
|
65
|
+
const value = values[field.fieldId];
|
|
66
|
+
if (!value) {
|
|
67
|
+
return values;
|
|
68
|
+
}
|
|
69
|
+
const plugin = getStoragePlugin(field.type);
|
|
70
|
+
if (!plugin) {
|
|
71
|
+
console.error(`Missing storage plugin for field type "${field.type}".`);
|
|
72
|
+
delete values[field.fieldId];
|
|
73
|
+
return values;
|
|
74
|
+
}
|
|
75
|
+
values[field.fieldId] = await plugin.fromStorage({
|
|
76
|
+
plugins,
|
|
77
|
+
getStoragePlugin,
|
|
78
|
+
model,
|
|
79
|
+
field,
|
|
80
|
+
value
|
|
81
|
+
});
|
|
82
|
+
return values;
|
|
83
|
+
}, output);
|
|
84
|
+
};
|
|
85
|
+
const createDynamicZoneStorageTransform = () => {
|
|
86
|
+
return new _plugins.StorageTransformPlugin({
|
|
87
|
+
name: "headless-cms.storage-transform.dynamicZone.default",
|
|
88
|
+
fieldType: "dynamicZone",
|
|
89
|
+
toStorage: async ({
|
|
90
|
+
field,
|
|
91
|
+
value: input,
|
|
92
|
+
getStoragePlugin,
|
|
93
|
+
model,
|
|
94
|
+
plugins
|
|
95
|
+
}) => {
|
|
96
|
+
if (!input) {
|
|
97
|
+
return input;
|
|
98
|
+
} else if (field.multipleValues) {
|
|
99
|
+
if (!Array.isArray(input)) {
|
|
100
|
+
return input;
|
|
101
|
+
}
|
|
102
|
+
const values = input;
|
|
103
|
+
return Promise.all(values.map(async value => {
|
|
104
|
+
return await processToStorage({
|
|
105
|
+
model,
|
|
106
|
+
field: field,
|
|
107
|
+
value,
|
|
108
|
+
getStoragePlugin,
|
|
109
|
+
plugins
|
|
110
|
+
});
|
|
111
|
+
}));
|
|
112
|
+
}
|
|
113
|
+
return await processToStorage({
|
|
114
|
+
model,
|
|
115
|
+
field: field,
|
|
116
|
+
value: input,
|
|
117
|
+
getStoragePlugin,
|
|
118
|
+
plugins
|
|
119
|
+
});
|
|
120
|
+
},
|
|
121
|
+
fromStorage: async ({
|
|
122
|
+
field,
|
|
123
|
+
value: input,
|
|
124
|
+
getStoragePlugin,
|
|
125
|
+
model,
|
|
126
|
+
plugins
|
|
127
|
+
}) => {
|
|
128
|
+
if (!input) {
|
|
129
|
+
return input;
|
|
130
|
+
} else if (field.multipleValues) {
|
|
131
|
+
if (!Array.isArray(input)) {
|
|
132
|
+
return input;
|
|
133
|
+
}
|
|
134
|
+
const values = input;
|
|
135
|
+
return await Promise.all(values.map(async value => {
|
|
136
|
+
return await processFromStorage({
|
|
137
|
+
model,
|
|
138
|
+
field: field,
|
|
139
|
+
value,
|
|
140
|
+
getStoragePlugin,
|
|
141
|
+
plugins
|
|
142
|
+
});
|
|
143
|
+
}));
|
|
144
|
+
}
|
|
145
|
+
return await processFromStorage({
|
|
146
|
+
model,
|
|
147
|
+
field: field,
|
|
148
|
+
value: input,
|
|
149
|
+
getStoragePlugin,
|
|
150
|
+
plugins
|
|
151
|
+
});
|
|
152
|
+
}
|
|
153
|
+
});
|
|
154
|
+
};
|
|
155
|
+
exports.createDynamicZoneStorageTransform = createDynamicZoneStorageTransform;
|
|
156
|
+
|
|
157
|
+
//# sourceMappingURL=dynamicZone.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_plugins","require","_pReduce","_interopRequireDefault","processToStorage","params","model","field","parentField","value","input","getStoragePlugin","plugins","output","structuredClone","_templateId","template","settings","templates","find","t","id","fields","length","pReduce","values","fieldId","plugin","type","console","error","toStorage","processFromStorage","fromStorage","createDynamicZoneStorageTransform","StorageTransformPlugin","name","fieldType","multipleValues","Array","isArray","Promise","all","map","exports"],"sources":["dynamicZone.ts"],"sourcesContent":["import { StorageTransformPlugin, ToStorageParams } from \"~/plugins\";\nimport { GenericRecord } from \"@webiny/api/types\";\nimport { CmsModel, CmsModelDynamicZoneField, CmsModelField } from \"~/types\";\nimport { PluginsContainer } from \"@webiny/plugins\";\nimport pReduce from \"p-reduce\";\n\ninterface IProcessParams {\n model: CmsModel;\n field: CmsModelDynamicZoneField;\n value: GenericRecord;\n getStoragePlugin: ToStorageParams<GenericRecord, CmsModelField>[\"getStoragePlugin\"];\n plugins: PluginsContainer;\n}\n\nconst processToStorage = async (params: IProcessParams): Promise<GenericRecord> => {\n const { model, field: parentField, value: input, getStoragePlugin, plugins } = params;\n\n const output: GenericRecord = structuredClone(input);\n\n if (!output._templateId) {\n return output;\n }\n const template = parentField.settings.templates.find(t => t.id === output._templateId);\n if (!template || !template.fields.length) {\n return output;\n }\n\n return await pReduce(\n template.fields,\n async (values, field) => {\n const value = values[field.fieldId];\n\n if (!value) {\n values[field.fieldId] = value;\n return values;\n }\n const plugin = getStoragePlugin(field.type);\n if (!plugin) {\n console.error(`Missing storage plugin for field type \"${field.type}\".`);\n delete values[field.fieldId];\n return values;\n }\n values[field.fieldId] = await plugin.toStorage({\n plugins,\n getStoragePlugin,\n model,\n field,\n value\n });\n\n return values;\n },\n output\n );\n};\n\nconst processFromStorage = async (params: IProcessParams): Promise<GenericRecord> => {\n const { model, field: parentField, value: input, getStoragePlugin, plugins } = params;\n\n const output: GenericRecord = structuredClone(input);\n\n if (!output._templateId) {\n return output;\n }\n const template = parentField.settings.templates.find(t => t.id === output._templateId);\n if (!template || !template.fields.length) {\n return output;\n }\n\n return await pReduce(\n template.fields,\n async (values, field) => {\n const value = values[field.fieldId];\n\n if (!value) {\n return values;\n }\n const plugin = getStoragePlugin(field.type);\n if (!plugin) {\n console.error(`Missing storage plugin for field type \"${field.type}\".`);\n delete values[field.fieldId];\n return values;\n }\n values[field.fieldId] = await plugin.fromStorage({\n plugins,\n getStoragePlugin,\n model,\n field,\n value\n });\n\n return values;\n },\n output\n );\n};\n\nexport const createDynamicZoneStorageTransform = (): StorageTransformPlugin => {\n return new StorageTransformPlugin({\n name: \"headless-cms.storage-transform.dynamicZone.default\",\n fieldType: \"dynamicZone\",\n toStorage: async ({ field, value: input, getStoragePlugin, model, plugins }) => {\n if (!input) {\n return input;\n } else if (field.multipleValues) {\n if (!Array.isArray(input)) {\n return input;\n }\n const values = input as GenericRecord[];\n return Promise.all(\n values.map(async value => {\n return await processToStorage({\n model,\n field: field as CmsModelDynamicZoneField,\n value,\n getStoragePlugin,\n plugins\n });\n })\n );\n }\n return await processToStorage({\n model,\n field: field as CmsModelDynamicZoneField,\n value: input,\n getStoragePlugin,\n plugins\n });\n },\n fromStorage: async ({ field, value: input, getStoragePlugin, model, plugins }) => {\n if (!input) {\n return input;\n } else if (field.multipleValues) {\n if (!Array.isArray(input)) {\n return input;\n }\n const values = input as GenericRecord[];\n\n return await Promise.all(\n values.map(async value => {\n return await processFromStorage({\n model,\n field: field as CmsModelDynamicZoneField,\n value,\n getStoragePlugin,\n plugins\n });\n })\n );\n }\n return await processFromStorage({\n model,\n field: field as CmsModelDynamicZoneField,\n value: input,\n getStoragePlugin,\n plugins\n });\n }\n });\n};\n"],"mappings":"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","ignoreList":[]}
|
package/storage/index.js
CHANGED
|
@@ -7,8 +7,14 @@ exports.createStorageTransform = void 0;
|
|
|
7
7
|
var _default = require("./default");
|
|
8
8
|
var _object = require("./object");
|
|
9
9
|
var _json = require("./json");
|
|
10
|
+
var _dynamicZone = require("./dynamicZone");
|
|
11
|
+
var _date = require("./date");
|
|
12
|
+
/**
|
|
13
|
+
* Storage transforms are used to transform the data before it is saved to the database and after it is read from the database.
|
|
14
|
+
*/
|
|
15
|
+
|
|
10
16
|
const createStorageTransform = () => {
|
|
11
|
-
return [(0, _default.createDefaultStorageTransform)(), (0, _object.createObjectStorageTransform)(), (0, _json.createJsonStorageTransform)()];
|
|
17
|
+
return [(0, _default.createDefaultStorageTransform)(), (0, _date.createDateStorageTransformPlugin)(), (0, _object.createObjectStorageTransform)(), (0, _json.createJsonStorageTransform)(), (0, _dynamicZone.createDynamicZoneStorageTransform)()];
|
|
12
18
|
};
|
|
13
19
|
exports.createStorageTransform = createStorageTransform;
|
|
14
20
|
|
package/storage/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_default","require","_object","_json","createStorageTransform","createDefaultStorageTransform","createObjectStorageTransform","createJsonStorageTransform","exports"],"sources":["index.ts"],"sourcesContent":["
|
|
1
|
+
{"version":3,"names":["_default","require","_object","_json","_dynamicZone","_date","createStorageTransform","createDefaultStorageTransform","createDateStorageTransformPlugin","createObjectStorageTransform","createJsonStorageTransform","createDynamicZoneStorageTransform","exports"],"sources":["index.ts"],"sourcesContent":["/**\n * Storage transforms are used to transform the data before it is saved to the database and after it is read from the database.\n */\nimport { createDefaultStorageTransform } from \"./default\";\nimport { createObjectStorageTransform } from \"./object\";\nimport { createJsonStorageTransform } from \"./json\";\nimport { createDynamicZoneStorageTransform } from \"./dynamicZone\";\nimport { createDateStorageTransformPlugin } from \"./date\";\n\nexport const createStorageTransform = () => {\n return [\n createDefaultStorageTransform(),\n createDateStorageTransformPlugin(),\n createObjectStorageTransform(),\n createJsonStorageTransform(),\n createDynamicZoneStorageTransform()\n ];\n};\n"],"mappings":";;;;;;AAGA,IAAAA,QAAA,GAAAC,OAAA;AACA,IAAAC,OAAA,GAAAD,OAAA;AACA,IAAAE,KAAA,GAAAF,OAAA;AACA,IAAAG,YAAA,GAAAH,OAAA;AACA,IAAAI,KAAA,GAAAJ,OAAA;AAPA;AACA;AACA;;AAOO,MAAMK,sBAAsB,GAAGA,CAAA,KAAM;EACxC,OAAO,CACH,IAAAC,sCAA6B,EAAC,CAAC,EAC/B,IAAAC,sCAAgC,EAAC,CAAC,EAClC,IAAAC,oCAA4B,EAAC,CAAC,EAC9B,IAAAC,gCAA0B,EAAC,CAAC,EAC5B,IAAAC,8CAAiC,EAAC,CAAC,CACtC;AACL,CAAC;AAACC,OAAA,CAAAN,sBAAA,GAAAA,sBAAA","ignoreList":[]}
|
package/storage/object.js
CHANGED
|
@@ -24,11 +24,12 @@ const processValue = async params => {
|
|
|
24
24
|
if (!plugin) {
|
|
25
25
|
throw new Error(`Missing storage plugin for field type "${baseType}".`);
|
|
26
26
|
}
|
|
27
|
+
const input = sourceValue[field.fieldId];
|
|
27
28
|
const value = await plugin[operation]({
|
|
28
29
|
plugins,
|
|
29
30
|
model,
|
|
30
31
|
field,
|
|
31
|
-
value:
|
|
32
|
+
value: input,
|
|
32
33
|
getStoragePlugin
|
|
33
34
|
});
|
|
34
35
|
return {
|
|
@@ -73,27 +74,30 @@ const createObjectStorageTransform = () => {
|
|
|
73
74
|
},
|
|
74
75
|
fromStorage: async ({
|
|
75
76
|
field,
|
|
76
|
-
value,
|
|
77
|
+
value: input,
|
|
77
78
|
getStoragePlugin,
|
|
78
79
|
plugins,
|
|
79
80
|
model
|
|
80
81
|
}) => {
|
|
81
|
-
if (!
|
|
82
|
+
if (!input) {
|
|
82
83
|
return null;
|
|
83
84
|
}
|
|
84
85
|
const fields = field.settings?.fields || [];
|
|
85
86
|
if (field.multipleValues) {
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
87
|
+
const values = input;
|
|
88
|
+
return await Promise.all(values.map(async value => {
|
|
89
|
+
return await processValue({
|
|
90
|
+
sourceValue: value,
|
|
91
|
+
getStoragePlugin,
|
|
92
|
+
model,
|
|
93
|
+
plugins,
|
|
94
|
+
operation: "fromStorage",
|
|
95
|
+
fields
|
|
96
|
+
});
|
|
93
97
|
}));
|
|
94
98
|
}
|
|
95
|
-
return processValue({
|
|
96
|
-
sourceValue:
|
|
99
|
+
return await processValue({
|
|
100
|
+
sourceValue: input,
|
|
97
101
|
getStoragePlugin,
|
|
98
102
|
model,
|
|
99
103
|
plugins,
|
package/storage/object.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_pReduce","_interopRequireDefault","require","_pMap","_StorageTransformPlugin","_getBaseFieldType","processValue","params","fields","sourceValue","getStoragePlugin","plugins","model","operation","pReduce","values","field","baseType","getBaseFieldType","plugin","Error","
|
|
1
|
+
{"version":3,"names":["_pReduce","_interopRequireDefault","require","_pMap","_StorageTransformPlugin","_getBaseFieldType","processValue","params","fields","sourceValue","getStoragePlugin","plugins","model","operation","pReduce","values","field","baseType","getBaseFieldType","plugin","Error","input","fieldId","value","createObjectStorageTransform","StorageTransformPlugin","name","fieldType","toStorage","settings","multipleValues","pMap","fromStorage","Promise","all","map","exports"],"sources":["object.ts"],"sourcesContent":["import pReduce from \"p-reduce\";\nimport pMap from \"p-map\";\nimport { CmsModel, CmsModelField } from \"~/types\";\nimport { PluginsContainer } from \"@webiny/plugins\";\nimport { StorageTransformPlugin } from \"~/plugins/StorageTransformPlugin\";\nimport { getBaseFieldType } from \"~/utils/getBaseFieldType\";\nimport { GenericRecord } from \"@webiny/api/types\";\n\ninterface ProcessValueParams {\n fields: CmsModelField[];\n sourceValue: GenericRecord;\n getStoragePlugin: (fieldType: string) => StorageTransformPlugin;\n plugins: PluginsContainer;\n model: CmsModel;\n operation: \"toStorage\" | \"fromStorage\";\n}\ninterface ProcessValue {\n (params: ProcessValueParams): Promise<GenericRecord>;\n}\n\nconst processValue: ProcessValue = async params => {\n const { fields, sourceValue, getStoragePlugin, plugins, model, operation } = params;\n return await pReduce(\n fields,\n async (values, field) => {\n const baseType = getBaseFieldType(field);\n const plugin = getStoragePlugin(baseType);\n if (!plugin) {\n throw new Error(`Missing storage plugin for field type \"${baseType}\".`);\n }\n const input = sourceValue[field.fieldId];\n const value = await plugin[operation]({\n plugins,\n model,\n field,\n value: input,\n getStoragePlugin\n });\n return { ...values, [field.fieldId]: value };\n },\n {}\n );\n};\n\nexport const createObjectStorageTransform = (): StorageTransformPlugin => {\n return new StorageTransformPlugin({\n name: \"headless-cms.storage-transform.object.default\",\n fieldType: \"object\",\n toStorage: async ({ field, value, getStoragePlugin, model, plugins }) => {\n if (!value) {\n return null;\n }\n\n const fields = (field.settings?.fields || []) as CmsModelField[];\n\n if (field.multipleValues) {\n return await pMap(value as GenericRecord[], value =>\n processValue({\n sourceValue: value,\n getStoragePlugin,\n model,\n plugins,\n operation: \"toStorage\",\n fields\n })\n );\n }\n\n return await processValue({\n sourceValue: value,\n getStoragePlugin,\n model,\n plugins,\n operation: \"toStorage\",\n fields\n });\n },\n fromStorage: async ({ field, value: input, getStoragePlugin, plugins, model }) => {\n if (!input) {\n return null;\n }\n\n const fields = (field.settings?.fields || []) as CmsModelField[];\n\n if (field.multipleValues) {\n const values = input as GenericRecord[];\n\n return await Promise.all(\n values.map(async value => {\n return await processValue({\n sourceValue: value,\n getStoragePlugin,\n model,\n plugins,\n operation: \"fromStorage\",\n fields\n });\n })\n );\n }\n\n return await processValue({\n sourceValue: input,\n getStoragePlugin,\n model,\n plugins,\n operation: \"fromStorage\",\n fields\n });\n }\n });\n};\n"],"mappings":"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","ignoreList":[]}
|
package/utils/entryStorage.d.ts
CHANGED
|
@@ -1,4 +1,9 @@
|
|
|
1
|
+
import { StorageTransformPlugin } from "../plugins/StorageTransformPlugin";
|
|
1
2
|
import { CmsContext, CmsEntry, CmsModel, CmsModelField } from "../types";
|
|
3
|
+
export interface GetStoragePluginFactory {
|
|
4
|
+
(context: Pick<CmsContext, "plugins">): (fieldType: string) => StorageTransformPlugin<any>;
|
|
5
|
+
}
|
|
6
|
+
export declare const getStoragePluginFactory: GetStoragePluginFactory;
|
|
2
7
|
/**
|
|
3
8
|
* A function that is used in crud to transform entry into the storage type.
|
|
4
9
|
*/
|
package/utils/entryStorage.js
CHANGED
|
@@ -4,7 +4,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
4
4
|
Object.defineProperty(exports, "__esModule", {
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
|
-
exports.entryToStorageTransform = exports.entryFromStorageTransform = exports.entryFieldFromStorageTransform = void 0;
|
|
7
|
+
exports.getStoragePluginFactory = exports.entryToStorageTransform = exports.entryFromStorageTransform = exports.entryFieldFromStorageTransform = void 0;
|
|
8
8
|
var _error = _interopRequireDefault(require("@webiny/error"));
|
|
9
9
|
var _StorageTransformPlugin = require("../plugins/StorageTransformPlugin");
|
|
10
10
|
var _getBaseFieldType = require("./getBaseFieldType");
|
|
@@ -36,6 +36,7 @@ const getStoragePluginFactory = context => {
|
|
|
36
36
|
/**
|
|
37
37
|
* This should be used when transforming the whole entry.
|
|
38
38
|
*/
|
|
39
|
+
exports.getStoragePluginFactory = getStoragePluginFactory;
|
|
39
40
|
const entryStorageTransform = async (context, model, operation, entry) => {
|
|
40
41
|
const getStoragePlugin = getStoragePluginFactory(context);
|
|
41
42
|
const transformedValues = {};
|