@webiny/api-headless-cms-ddb-es 5.32.0 → 5.33.0-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.
Files changed (33) hide show
  1. package/dynamoDb/index.js +4 -6
  2. package/dynamoDb/index.js.map +1 -1
  3. package/dynamoDb/storage/date.d.ts +1 -2
  4. package/dynamoDb/storage/date.js +78 -44
  5. package/dynamoDb/storage/date.js.map +1 -1
  6. package/dynamoDb/storage/longText.d.ts +6 -3
  7. package/dynamoDb/storage/longText.js +68 -55
  8. package/dynamoDb/storage/longText.js.map +1 -1
  9. package/dynamoDb/storage/richText.d.ts +1 -2
  10. package/dynamoDb/storage/richText.js +70 -72
  11. package/dynamoDb/storage/richText.js.map +1 -1
  12. package/elasticsearch/indexing/dateTimeIndexing.js +14 -0
  13. package/elasticsearch/indexing/dateTimeIndexing.js.map +1 -1
  14. package/elasticsearch/indexing/objectIndexing.d.ts +9 -0
  15. package/elasticsearch/indexing/objectIndexing.js +16 -7
  16. package/elasticsearch/indexing/objectIndexing.js.map +1 -1
  17. package/elasticsearch/search/refSearch.js +2 -2
  18. package/elasticsearch/search/refSearch.js.map +1 -1
  19. package/helpers/createElasticsearchQueryBody.js +74 -15
  20. package/helpers/createElasticsearchQueryBody.js.map +1 -1
  21. package/helpers/entryIndexHelpers.js +8 -8
  22. package/helpers/entryIndexHelpers.js.map +1 -1
  23. package/helpers/fields.d.ts +3 -1
  24. package/helpers/fields.js +27 -5
  25. package/helpers/fields.js.map +1 -1
  26. package/operations/entry/index.js +221 -59
  27. package/operations/entry/index.js.map +1 -1
  28. package/operations/model/index.js +2 -2
  29. package/operations/model/index.js.map +1 -1
  30. package/package.json +14 -14
  31. package/operations/entry/fields.d.ts +0 -3
  32. package/operations/entry/fields.js +0 -69
  33. package/operations/entry/fields.js.map +0 -1
package/dynamoDb/index.js CHANGED
@@ -1,18 +1,16 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
3
  Object.defineProperty(exports, "__esModule", {
6
4
  value: true
7
5
  });
8
6
  exports.default = void 0;
9
7
 
10
- var _richText = _interopRequireDefault(require("./storage/richText"));
8
+ var _richText = require("./storage/richText");
11
9
 
12
- var _longText = _interopRequireDefault(require("./storage/longText"));
10
+ var _longText = require("./storage/longText");
13
11
 
14
- var _date = _interopRequireDefault(require("./storage/date"));
12
+ var _date = require("./storage/date");
15
13
 
16
- var _default = () => [(0, _richText.default)(), (0, _longText.default)(), (0, _date.default)()];
14
+ var _default = () => [(0, _richText.createRichTextStorageTransformPlugin)(), (0, _longText.createLongTextStorageTransformPlugin)(), (0, _date.createDateStorageTransformPlugin)()];
17
15
 
18
16
  exports.default = _default;
@@ -1 +1 @@
1
- {"version":3,"names":["richTextStorage","longTextStorage","dateStorage"],"sources":["index.ts"],"sourcesContent":["import richTextStorage from \"./storage/richText\";\nimport longTextStorage from \"./storage/longText\";\nimport dateStorage from \"./storage/date\";\n\nexport default () => [richTextStorage(), longTextStorage(), dateStorage()];\n"],"mappings":";;;;;;;;;AAAA;;AACA;;AACA;;eAEe,MAAM,CAAC,IAAAA,iBAAA,GAAD,EAAoB,IAAAC,iBAAA,GAApB,EAAuC,IAAAC,aAAA,GAAvC,C"}
1
+ {"version":3,"names":["createRichTextStorageTransformPlugin","createLongTextStorageTransformPlugin","createDateStorageTransformPlugin"],"sources":["index.ts"],"sourcesContent":["import { createRichTextStorageTransformPlugin } from \"./storage/richText\";\nimport { createLongTextStorageTransformPlugin } from \"./storage/longText\";\nimport { createDateStorageTransformPlugin } from \"./storage/date\";\n\nexport default () => [\n createRichTextStorageTransformPlugin(),\n createLongTextStorageTransformPlugin(),\n createDateStorageTransformPlugin()\n];\n"],"mappings":";;;;;;;AAAA;;AACA;;AACA;;eAEe,MAAM,CACjB,IAAAA,8CAAA,GADiB,EAEjB,IAAAC,8CAAA,GAFiB,EAGjB,IAAAC,sCAAA,GAHiB,C"}
@@ -1,3 +1,2 @@
1
1
  import { StorageTransformPlugin } from "@webiny/api-headless-cms";
2
- declare const _default: () => StorageTransformPlugin<any, any>;
3
- export default _default;
2
+ export declare const createDateStorageTransformPlugin: () => StorageTransformPlugin<any, any>;
@@ -5,61 +5,95 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports.default = void 0;
8
+ exports.createDateStorageTransformPlugin = void 0;
9
9
 
10
10
  var _error = _interopRequireDefault(require("@webiny/error"));
11
11
 
12
12
  var _apiHeadlessCms = require("@webiny/api-headless-cms");
13
13
 
14
+ /**
15
+ * File is @internal
16
+ */
14
17
  const excludeTypes = ["time", "dateTimeWithTimezone"];
15
- const plugin = new _apiHeadlessCms.StorageTransformPlugin({
16
- fieldType: "datetime",
17
- fromStorage: async ({
18
- value,
19
- field
20
- }) => {
21
- const {
22
- type
23
- } = field.settings || {};
24
-
25
- if (!value || !type || excludeTypes.includes(type)) {
26
- return value;
27
- }
28
18
 
29
- try {
30
- return new Date(value);
31
- } catch {
32
- console.log(`Could not transform from storage for field type`);
33
- return value;
34
- }
35
- },
36
- toStorage: async ({
37
- value,
38
- field
39
- }) => {
40
- const {
41
- type
42
- } = field.settings || {};
43
-
44
- if (!value || !type || excludeTypes.includes(type)) {
45
- return value;
19
+ const convertFromStorage = (field, value) => {
20
+ try {
21
+ if (field.multipleValues) {
22
+ return (value || []).filter(v => !!v).map(v => {
23
+ return new Date(v);
24
+ });
46
25
  }
47
26
 
48
- if (value.toISOString) {
49
- return value.toISOString();
50
- } else if (typeof value === "string") {
51
- return value;
52
- }
27
+ return new Date(value);
28
+ } catch {
29
+ console.log(`Could not transform from storage for field type`);
30
+ return value;
31
+ }
32
+ };
53
33
 
54
- throw new _error.default("Error converting value to a storage type.", "TO_STORAGE_ERROR", {
55
- value,
56
- fieldId: field.fieldId
57
- });
34
+ const convertValueToStorage = (field, value) => {
35
+ if (value.toISOString) {
36
+ return value.toISOString();
37
+ } else if (typeof value === "string") {
38
+ return value;
58
39
  }
59
- });
60
40
 
61
- var _default = () => {
62
- return plugin;
41
+ throw new _error.default("Error converting value to a storage type.", "TO_STORAGE_ERROR", {
42
+ value: value,
43
+ fieldId: field.fieldId,
44
+ storageId: field.storageId
45
+ });
46
+ };
47
+
48
+ const createDateStorageTransformPlugin = () => {
49
+ return new _apiHeadlessCms.StorageTransformPlugin({
50
+ fieldType: "datetime",
51
+ fromStorage: async ({
52
+ value,
53
+ field
54
+ }) => {
55
+ const {
56
+ type
57
+ } = field.settings || {};
58
+
59
+ if (!value || !type || excludeTypes.includes(type)) {
60
+ return value;
61
+ }
62
+
63
+ return convertFromStorage(field, value);
64
+ },
65
+ toStorage: async ({
66
+ value,
67
+ field
68
+ }) => {
69
+ const {
70
+ type
71
+ } = field.settings || {};
72
+
73
+ if (!value || !type || excludeTypes.includes(type)) {
74
+ return value;
75
+ }
76
+
77
+ if (field.multipleValues) {
78
+ const multipleValues = value;
79
+ return (multipleValues || []).filter(v => !!v).map(v => {
80
+ return convertValueToStorage(field, v);
81
+ });
82
+ }
83
+
84
+ if (value.toISOString) {
85
+ return value.toISOString();
86
+ } else if (typeof value === "string") {
87
+ return value;
88
+ }
89
+
90
+ throw new _error.default("Error converting value to a storage type.", "TO_STORAGE_ERROR", {
91
+ value,
92
+ fieldId: field.fieldId,
93
+ storageId: field.storageId
94
+ });
95
+ }
96
+ });
63
97
  };
64
98
 
65
- exports.default = _default;
99
+ exports.createDateStorageTransformPlugin = createDateStorageTransformPlugin;
@@ -1 +1 @@
1
- {"version":3,"names":["excludeTypes","plugin","StorageTransformPlugin","fieldType","fromStorage","value","field","type","settings","includes","Date","console","log","toStorage","toISOString","WebinyError","fieldId"],"sources":["date.ts"],"sourcesContent":["import WebinyError from \"@webiny/error\";\nimport { StorageTransformPlugin } from \"@webiny/api-headless-cms\";\n\nconst excludeTypes = [\"time\", \"dateTimeWithTimezone\"];\n\nconst plugin = new StorageTransformPlugin({\n fieldType: \"datetime\",\n fromStorage: async ({ value, field }) => {\n const { type } = field.settings || {};\n if (!value || !type || excludeTypes.includes(type)) {\n return value;\n }\n try {\n return new Date(value);\n } catch {\n console.log(`Could not transform from storage for field type`);\n return value;\n }\n },\n toStorage: async ({ value, field }) => {\n const { type } = field.settings || {};\n if (!value || !type || excludeTypes.includes(type)) {\n return value;\n }\n if ((value as any).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,\n fieldId: field.fieldId\n });\n }\n});\n\nexport default () => {\n return plugin;\n};\n"],"mappings":";;;;;;;;;AAAA;;AACA;;AAEA,MAAMA,YAAY,GAAG,CAAC,MAAD,EAAS,sBAAT,CAArB;AAEA,MAAMC,MAAM,GAAG,IAAIC,sCAAJ,CAA2B;EACtCC,SAAS,EAAE,UAD2B;EAEtCC,WAAW,EAAE,OAAO;IAAEC,KAAF;IAASC;EAAT,CAAP,KAA4B;IACrC,MAAM;MAAEC;IAAF,IAAWD,KAAK,CAACE,QAAN,IAAkB,EAAnC;;IACA,IAAI,CAACH,KAAD,IAAU,CAACE,IAAX,IAAmBP,YAAY,CAACS,QAAb,CAAsBF,IAAtB,CAAvB,EAAoD;MAChD,OAAOF,KAAP;IACH;;IACD,IAAI;MACA,OAAO,IAAIK,IAAJ,CAASL,KAAT,CAAP;IACH,CAFD,CAEE,MAAM;MACJM,OAAO,CAACC,GAAR,CAAa,iDAAb;MACA,OAAOP,KAAP;IACH;EACJ,CAbqC;EActCQ,SAAS,EAAE,OAAO;IAAER,KAAF;IAASC;EAAT,CAAP,KAA4B;IACnC,MAAM;MAAEC;IAAF,IAAWD,KAAK,CAACE,QAAN,IAAkB,EAAnC;;IACA,IAAI,CAACH,KAAD,IAAU,CAACE,IAAX,IAAmBP,YAAY,CAACS,QAAb,CAAsBF,IAAtB,CAAvB,EAAoD;MAChD,OAAOF,KAAP;IACH;;IACD,IAAKA,KAAD,CAAeS,WAAnB,EAAgC;MAC5B,OAAQT,KAAD,CAAgBS,WAAhB,EAAP;IACH,CAFD,MAEO,IAAI,OAAOT,KAAP,KAAiB,QAArB,EAA+B;MAClC,OAAOA,KAAP;IACH;;IACD,MAAM,IAAIU,cAAJ,CAAgB,2CAAhB,EAA6D,kBAA7D,EAAiF;MACnFV,KADmF;MAEnFW,OAAO,EAAEV,KAAK,CAACU;IAFoE,CAAjF,CAAN;EAIH;AA5BqC,CAA3B,CAAf;;eA+Be,MAAM;EACjB,OAAOf,MAAP;AACH,C"}
1
+ {"version":3,"names":["excludeTypes","convertFromStorage","field","value","multipleValues","filter","v","map","Date","console","log","convertValueToStorage","toISOString","WebinyError","fieldId","storageId","createDateStorageTransformPlugin","StorageTransformPlugin","fieldType","fromStorage","type","settings","includes","toStorage"],"sources":["date.ts"],"sourcesContent":["/**\n * File is @internal\n */\nimport WebinyError from \"@webiny/error\";\nimport { StorageTransformPlugin } from \"@webiny/api-headless-cms\";\nimport { CmsModelField } from \"@webiny/api-headless-cms/types\";\n\nconst excludeTypes = [\"time\", \"dateTimeWithTimezone\"];\n\nconst convertFromStorage = (field: CmsModelField, value: string | string[]) => {\n try {\n if (field.multipleValues) {\n return ((value as string[]) || [])\n .filter(v => !!v)\n .map((v: string) => {\n return new Date(v);\n });\n }\n return new Date(value as string);\n } catch {\n console.log(`Could not transform from storage for field type`);\n return value;\n }\n};\n\nconst convertValueToStorage = (field: CmsModelField, value: any): any => {\n if ((value as any).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 fromStorage: async ({ value, field }) => {\n const { type } = field.settings || {};\n if (!value || !type || excludeTypes.includes(type)) {\n return value;\n }\n return convertFromStorage(field, 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 return (multipleValues || [])\n .filter(v => !!v)\n .map(v => {\n return convertValueToStorage(field, v);\n });\n }\n if ((value as any).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,\n fieldId: field.fieldId,\n storageId: field.storageId\n });\n }\n });\n};\n"],"mappings":";;;;;;;;;AAGA;;AACA;;AAJA;AACA;AACA;AAKA,MAAMA,YAAY,GAAG,CAAC,MAAD,EAAS,sBAAT,CAArB;;AAEA,MAAMC,kBAAkB,GAAG,CAACC,KAAD,EAAuBC,KAAvB,KAAoD;EAC3E,IAAI;IACA,IAAID,KAAK,CAACE,cAAV,EAA0B;MACtB,OAAO,CAAED,KAAD,IAAuB,EAAxB,EACFE,MADE,CACKC,CAAC,IAAI,CAAC,CAACA,CADZ,EAEFC,GAFE,CAEGD,CAAD,IAAe;QAChB,OAAO,IAAIE,IAAJ,CAASF,CAAT,CAAP;MACH,CAJE,CAAP;IAKH;;IACD,OAAO,IAAIE,IAAJ,CAASL,KAAT,CAAP;EACH,CATD,CASE,MAAM;IACJM,OAAO,CAACC,GAAR,CAAa,iDAAb;IACA,OAAOP,KAAP;EACH;AACJ,CAdD;;AAgBA,MAAMQ,qBAAqB,GAAG,CAACT,KAAD,EAAuBC,KAAvB,KAA2C;EACrE,IAAKA,KAAD,CAAeS,WAAnB,EAAgC;IAC5B,OAAQT,KAAD,CAAgBS,WAAhB,EAAP;EACH,CAFD,MAEO,IAAI,OAAOT,KAAP,KAAiB,QAArB,EAA+B;IAClC,OAAOA,KAAP;EACH;;EACD,MAAM,IAAIU,cAAJ,CAAgB,2CAAhB,EAA6D,kBAA7D,EAAiF;IACnFV,KAAK,EAAEA,KAD4E;IAEnFW,OAAO,EAAEZ,KAAK,CAACY,OAFoE;IAGnFC,SAAS,EAAEb,KAAK,CAACa;EAHkE,CAAjF,CAAN;AAKH,CAXD;;AAaO,MAAMC,gCAAgC,GAAG,MAAM;EAClD,OAAO,IAAIC,sCAAJ,CAA2B;IAC9BC,SAAS,EAAE,UADmB;IAE9BC,WAAW,EAAE,OAAO;MAAEhB,KAAF;MAASD;IAAT,CAAP,KAA4B;MACrC,MAAM;QAAEkB;MAAF,IAAWlB,KAAK,CAACmB,QAAN,IAAkB,EAAnC;;MACA,IAAI,CAAClB,KAAD,IAAU,CAACiB,IAAX,IAAmBpB,YAAY,CAACsB,QAAb,CAAsBF,IAAtB,CAAvB,EAAoD;QAChD,OAAOjB,KAAP;MACH;;MACD,OAAOF,kBAAkB,CAACC,KAAD,EAAQC,KAAR,CAAzB;IACH,CAR6B;IAS9BoB,SAAS,EAAE,OAAO;MAAEpB,KAAF;MAASD;IAAT,CAAP,KAA4B;MACnC,MAAM;QAAEkB;MAAF,IAAWlB,KAAK,CAACmB,QAAN,IAAkB,EAAnC;;MACA,IAAI,CAAClB,KAAD,IAAU,CAACiB,IAAX,IAAmBpB,YAAY,CAACsB,QAAb,CAAsBF,IAAtB,CAAvB,EAAoD;QAChD,OAAOjB,KAAP;MACH;;MACD,IAAID,KAAK,CAACE,cAAV,EAA0B;QACtB,MAAMA,cAAc,GAAGD,KAAvB;QACA,OAAO,CAACC,cAAc,IAAI,EAAnB,EACFC,MADE,CACKC,CAAC,IAAI,CAAC,CAACA,CADZ,EAEFC,GAFE,CAEED,CAAC,IAAI;UACN,OAAOK,qBAAqB,CAACT,KAAD,EAAQI,CAAR,CAA5B;QACH,CAJE,CAAP;MAKH;;MACD,IAAKH,KAAD,CAAeS,WAAnB,EAAgC;QAC5B,OAAQT,KAAD,CAAgBS,WAAhB,EAAP;MACH,CAFD,MAEO,IAAI,OAAOT,KAAP,KAAiB,QAArB,EAA+B;QAClC,OAAOA,KAAP;MACH;;MACD,MAAM,IAAIU,cAAJ,CAAgB,2CAAhB,EAA6D,kBAA7D,EAAiF;QACnFV,KADmF;QAEnFW,OAAO,EAAEZ,KAAK,CAACY,OAFoE;QAGnFC,SAAS,EAAEb,KAAK,CAACa;MAHkE,CAAjF,CAAN;IAKH;EAhC6B,CAA3B,CAAP;AAkCH,CAnCM"}
@@ -1,7 +1,10 @@
1
+ /**
2
+ * File is @internal
3
+ */
1
4
  import { StorageTransformPlugin } from "@webiny/api-headless-cms";
2
5
  export interface StorageValue {
3
6
  compression: string;
4
- value: any;
7
+ value: string;
8
+ isArray?: boolean;
5
9
  }
6
- declare const _default: () => StorageTransformPlugin<string, StorageValue>;
7
- export default _default;
10
+ export declare const createLongTextStorageTransformPlugin: () => StorageTransformPlugin<string | string[], StorageValue>;
@@ -5,7 +5,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports.default = void 0;
8
+ exports.createLongTextStorageTransformPlugin = void 0;
9
9
 
10
10
  var _error = _interopRequireDefault(require("@webiny/error"));
11
11
 
@@ -13,6 +13,9 @@ var _gzip = require("@webiny/utils/compression/gzip");
13
13
 
14
14
  var _apiHeadlessCms = require("@webiny/api-headless-cms");
15
15
 
16
+ /**
17
+ * File is @internal
18
+ */
16
19
  const GZIP = "gzip";
17
20
  const TO_STORAGE_ENCODING = "base64";
18
21
  const FROM_STORAGE_ENCODING = "utf8";
@@ -25,64 +28,74 @@ const convertToBuffer = value => {
25
28
  return value;
26
29
  };
27
30
 
28
- const plugin = new _apiHeadlessCms.StorageTransformPlugin({
29
- fieldType: "long-text",
30
- fromStorage: async ({
31
- field,
32
- value: storageValue
33
- }) => {
34
- const typeOf = typeof storageValue;
35
-
36
- if (!storageValue || typeOf === "string" || typeOf === "number") {
37
- return storageValue;
38
- } else if (typeof storageValue !== "object") {
39
- throw new _error.default(`LongText value received in "fromStorage" function is not an object in field "${field.fieldId}".`);
40
- }
31
+ const createLongTextStorageTransformPlugin = () => {
32
+ return new _apiHeadlessCms.StorageTransformPlugin({
33
+ fieldType: "long-text",
34
+ fromStorage: async ({
35
+ field,
36
+ value: storageValue
37
+ }) => {
38
+ const typeOf = typeof storageValue;
39
+
40
+ if (!storageValue || typeOf === "string" || typeOf === "number" || Array.isArray(storageValue) === true) {
41
+ return storageValue;
42
+ } else if (typeOf !== "object") {
43
+ throw new _error.default(`LongText value received in "fromStorage" function is not an object in field "${field.storageId}" - ${field.fieldId}.`);
44
+ }
41
45
 
42
- const {
43
- compression,
44
- value
45
- } = storageValue;
46
- /**
47
- * Check if possibly undefined, null, empty...
48
- */
49
-
50
- if (!compression) {
51
- throw new _error.default(`Missing compression in "fromStorage" function in field "${field.fieldId}": ${JSON.stringify(storageValue)}.`, "MISSING_COMPRESSION", {
52
- value: storageValue
53
- });
54
- } else if (compression !== GZIP) {
55
- throw new _error.default(`This plugin cannot transform something not compressed with "GZIP".`, "WRONG_COMPRESSION", {
56
- compression
57
- });
58
- }
46
+ const {
47
+ compression,
48
+ value,
49
+ isArray
50
+ } = storageValue;
51
+ /**
52
+ * Check if possibly undefined, null, empty...
53
+ */
54
+
55
+ if (!compression) {
56
+ throw new _error.default(`Missing compression in "fromStorage" function in field "${field.storageId}" - ${field.fieldId}.": ${JSON.stringify(storageValue)}.`, "MISSING_COMPRESSION", {
57
+ value: storageValue
58
+ });
59
+ } else if (compression !== GZIP) {
60
+ throw new _error.default(`This plugin cannot transform something not compressed with "GZIP".`, "WRONG_COMPRESSION", {
61
+ compression
62
+ });
63
+ }
64
+
65
+ try {
66
+ const buf = await (0, _gzip.decompress)(convertToBuffer(value));
67
+ const result = buf.toString(FROM_STORAGE_ENCODING);
59
68
 
60
- try {
61
- const buf = await (0, _gzip.decompress)(convertToBuffer(value));
62
- return buf.toString(FROM_STORAGE_ENCODING);
63
- } catch (ex) {
64
- if (process.env.DEBUG !== "true") {
65
- return null;
69
+ if (!isArray) {
70
+ return result;
71
+ }
72
+
73
+ return JSON.parse(result);
74
+ } catch (ex) {
75
+ console.log("Error while transforming long-text.");
76
+ console.log(ex.message);
77
+ return "";
78
+ }
79
+ },
80
+ toStorage: async ({
81
+ value: initialValue
82
+ }) => {
83
+ const isArray = Array.isArray(initialValue);
84
+ const value = isArray ? JSON.stringify(initialValue) : initialValue;
85
+ const compressedValue = await (0, _gzip.compress)(value);
86
+ const result = {
87
+ compression: GZIP,
88
+ value: compressedValue.toString(TO_STORAGE_ENCODING)
89
+ };
90
+
91
+ if (!isArray) {
92
+ return result;
66
93
  }
67
94
 
68
- console.log("Error while decompressing long-text.");
69
- console.log(ex.message);
70
- return null;
95
+ result.isArray = isArray;
96
+ return result;
71
97
  }
72
- },
73
- toStorage: async ({
74
- value
75
- }) => {
76
- const compressedValue = await (0, _gzip.compress)(value);
77
- return {
78
- compression: GZIP,
79
- value: compressedValue.toString(TO_STORAGE_ENCODING)
80
- };
81
- }
82
- });
83
-
84
- var _default = () => {
85
- return plugin;
98
+ });
86
99
  };
87
100
 
88
- exports.default = _default;
101
+ exports.createLongTextStorageTransformPlugin = createLongTextStorageTransformPlugin;
@@ -1 +1 @@
1
- {"version":3,"names":["GZIP","TO_STORAGE_ENCODING","FROM_STORAGE_ENCODING","convertToBuffer","value","Buffer","from","plugin","StorageTransformPlugin","fieldType","fromStorage","field","storageValue","typeOf","WebinyError","fieldId","compression","JSON","stringify","buf","ungzip","toString","ex","process","env","DEBUG","console","log","message","toStorage","compressedValue","gzip"],"sources":["longText.ts"],"sourcesContent":["import WebinyError from \"@webiny/error\";\nimport { compress as gzip, decompress as ungzip } from \"@webiny/utils/compression/gzip\";\nimport { StorageTransformPlugin } from \"@webiny/api-headless-cms\";\n\nconst GZIP = \"gzip\";\nconst TO_STORAGE_ENCODING = \"base64\";\nconst FROM_STORAGE_ENCODING = \"utf8\";\n\nconst convertToBuffer = (value: string | Buffer): Buffer => {\n if (typeof value === \"string\") {\n return Buffer.from(value, TO_STORAGE_ENCODING);\n }\n return value;\n};\n\nexport interface StorageValue {\n compression: string;\n value: any;\n}\n\nconst plugin = new StorageTransformPlugin<string, StorageValue>({\n fieldType: \"long-text\",\n fromStorage: async ({ field, value: storageValue }) => {\n const typeOf = typeof storageValue;\n if (!storageValue || typeOf === \"string\" || typeOf === \"number\") {\n return storageValue as any;\n } else if (typeof storageValue !== \"object\") {\n throw new WebinyError(\n `LongText value received in \"fromStorage\" function is not an object in field \"${field.fieldId}\".`\n );\n }\n const { compression, value } = storageValue;\n /**\n * Check if possibly undefined, null, empty...\n */\n if (!compression) {\n throw new WebinyError(\n `Missing compression in \"fromStorage\" function in field \"${\n field.fieldId\n }\": ${JSON.stringify(storageValue)}.`,\n \"MISSING_COMPRESSION\",\n {\n value: storageValue\n }\n );\n } else if (compression !== GZIP) {\n throw new WebinyError(\n `This plugin cannot transform something not compressed with \"GZIP\".`,\n \"WRONG_COMPRESSION\",\n {\n compression\n }\n );\n }\n try {\n const buf = await ungzip(convertToBuffer(value));\n return buf.toString(FROM_STORAGE_ENCODING);\n } catch (ex) {\n if (process.env.DEBUG !== \"true\") {\n return null;\n }\n console.log(\"Error while decompressing long-text.\");\n console.log(ex.message);\n return null;\n }\n },\n toStorage: async ({ value }) => {\n const compressedValue = await gzip(value);\n\n return {\n compression: GZIP,\n value: compressedValue.toString(TO_STORAGE_ENCODING)\n };\n }\n});\n\nexport default () => {\n return plugin;\n};\n"],"mappings":";;;;;;;;;AAAA;;AACA;;AACA;;AAEA,MAAMA,IAAI,GAAG,MAAb;AACA,MAAMC,mBAAmB,GAAG,QAA5B;AACA,MAAMC,qBAAqB,GAAG,MAA9B;;AAEA,MAAMC,eAAe,GAAIC,KAAD,IAAoC;EACxD,IAAI,OAAOA,KAAP,KAAiB,QAArB,EAA+B;IAC3B,OAAOC,MAAM,CAACC,IAAP,CAAYF,KAAZ,EAAmBH,mBAAnB,CAAP;EACH;;EACD,OAAOG,KAAP;AACH,CALD;;AAYA,MAAMG,MAAM,GAAG,IAAIC,sCAAJ,CAAiD;EAC5DC,SAAS,EAAE,WADiD;EAE5DC,WAAW,EAAE,OAAO;IAAEC,KAAF;IAASP,KAAK,EAAEQ;EAAhB,CAAP,KAA0C;IACnD,MAAMC,MAAM,GAAG,OAAOD,YAAtB;;IACA,IAAI,CAACA,YAAD,IAAiBC,MAAM,KAAK,QAA5B,IAAwCA,MAAM,KAAK,QAAvD,EAAiE;MAC7D,OAAOD,YAAP;IACH,CAFD,MAEO,IAAI,OAAOA,YAAP,KAAwB,QAA5B,EAAsC;MACzC,MAAM,IAAIE,cAAJ,CACD,gFAA+EH,KAAK,CAACI,OAAQ,IAD5F,CAAN;IAGH;;IACD,MAAM;MAAEC,WAAF;MAAeZ;IAAf,IAAyBQ,YAA/B;IACA;AACR;AACA;;IACQ,IAAI,CAACI,WAAL,EAAkB;MACd,MAAM,IAAIF,cAAJ,CACD,2DACGH,KAAK,CAACI,OACT,MAAKE,IAAI,CAACC,SAAL,CAAeN,YAAf,CAA6B,GAHjC,EAIF,qBAJE,EAKF;QACIR,KAAK,EAAEQ;MADX,CALE,CAAN;IASH,CAVD,MAUO,IAAII,WAAW,KAAKhB,IAApB,EAA0B;MAC7B,MAAM,IAAIc,cAAJ,CACD,oEADC,EAEF,mBAFE,EAGF;QACIE;MADJ,CAHE,CAAN;IAOH;;IACD,IAAI;MACA,MAAMG,GAAG,GAAG,MAAM,IAAAC,gBAAA,EAAOjB,eAAe,CAACC,KAAD,CAAtB,CAAlB;MACA,OAAOe,GAAG,CAACE,QAAJ,CAAanB,qBAAb,CAAP;IACH,CAHD,CAGE,OAAOoB,EAAP,EAAW;MACT,IAAIC,OAAO,CAACC,GAAR,CAAYC,KAAZ,KAAsB,MAA1B,EAAkC;QAC9B,OAAO,IAAP;MACH;;MACDC,OAAO,CAACC,GAAR,CAAY,sCAAZ;MACAD,OAAO,CAACC,GAAR,CAAYL,EAAE,CAACM,OAAf;MACA,OAAO,IAAP;IACH;EACJ,CA7C2D;EA8C5DC,SAAS,EAAE,OAAO;IAAEzB;EAAF,CAAP,KAAqB;IAC5B,MAAM0B,eAAe,GAAG,MAAM,IAAAC,cAAA,EAAK3B,KAAL,CAA9B;IAEA,OAAO;MACHY,WAAW,EAAEhB,IADV;MAEHI,KAAK,EAAE0B,eAAe,CAACT,QAAhB,CAAyBpB,mBAAzB;IAFJ,CAAP;EAIH;AArD2D,CAAjD,CAAf;;eAwDe,MAAM;EACjB,OAAOM,MAAP;AACH,C"}
1
+ {"version":3,"names":["GZIP","TO_STORAGE_ENCODING","FROM_STORAGE_ENCODING","convertToBuffer","value","Buffer","from","createLongTextStorageTransformPlugin","StorageTransformPlugin","fieldType","fromStorage","field","storageValue","typeOf","Array","isArray","WebinyError","storageId","fieldId","compression","JSON","stringify","buf","ungzip","result","toString","parse","ex","console","log","message","toStorage","initialValue","compressedValue","gzip"],"sources":["longText.ts"],"sourcesContent":["/**\n * File is @internal\n */\n\nimport WebinyError from \"@webiny/error\";\nimport { compress as gzip, decompress as ungzip } from \"@webiny/utils/compression/gzip\";\nimport { StorageTransformPlugin } from \"@webiny/api-headless-cms\";\n\nconst GZIP = \"gzip\";\nconst TO_STORAGE_ENCODING = \"base64\";\nconst FROM_STORAGE_ENCODING = \"utf8\";\n\nconst convertToBuffer = (value: string | Buffer): Buffer => {\n if (typeof value === \"string\") {\n return Buffer.from(value, TO_STORAGE_ENCODING);\n }\n return value;\n};\n\nexport interface StorageValue {\n compression: string;\n value: string;\n isArray?: boolean;\n}\n\nexport const createLongTextStorageTransformPlugin = () => {\n return new StorageTransformPlugin<string | string[], StorageValue>({\n fieldType: \"long-text\",\n fromStorage: async ({ field, value: storageValue }) => {\n const typeOf = typeof storageValue;\n if (\n !storageValue ||\n typeOf === \"string\" ||\n typeOf === \"number\" ||\n Array.isArray(storageValue) === true\n ) {\n return storageValue as unknown as string | string[];\n } else if (typeOf !== \"object\") {\n throw new WebinyError(\n `LongText value received in \"fromStorage\" function is not an object in field \"${field.storageId}\" - ${field.fieldId}.`\n );\n }\n const { compression, value, isArray } = storageValue;\n /**\n * Check if possibly undefined, null, empty...\n */\n if (!compression) {\n throw new WebinyError(\n `Missing compression in \"fromStorage\" function in field \"${\n field.storageId\n }\" - ${field.fieldId}.\": ${JSON.stringify(storageValue)}.`,\n \"MISSING_COMPRESSION\",\n {\n value: storageValue\n }\n );\n } else if (compression !== GZIP) {\n throw new WebinyError(\n `This plugin cannot transform something not compressed with \"GZIP\".`,\n \"WRONG_COMPRESSION\",\n {\n compression\n }\n );\n }\n try {\n const buf = await ungzip(convertToBuffer(value));\n const result = buf.toString(FROM_STORAGE_ENCODING);\n if (!isArray) {\n return result;\n }\n return JSON.parse(result);\n } catch (ex) {\n console.log(\"Error while transforming long-text.\");\n console.log(ex.message);\n return \"\";\n }\n },\n toStorage: async ({ value: initialValue }) => {\n const isArray = Array.isArray(initialValue);\n const value = isArray ? JSON.stringify(initialValue) : initialValue;\n const compressedValue = await gzip(value);\n\n const result: StorageValue = {\n compression: GZIP,\n value: compressedValue.toString(TO_STORAGE_ENCODING)\n };\n if (!isArray) {\n return result;\n }\n result.isArray = isArray;\n return result;\n }\n });\n};\n"],"mappings":";;;;;;;;;AAIA;;AACA;;AACA;;AANA;AACA;AACA;AAMA,MAAMA,IAAI,GAAG,MAAb;AACA,MAAMC,mBAAmB,GAAG,QAA5B;AACA,MAAMC,qBAAqB,GAAG,MAA9B;;AAEA,MAAMC,eAAe,GAAIC,KAAD,IAAoC;EACxD,IAAI,OAAOA,KAAP,KAAiB,QAArB,EAA+B;IAC3B,OAAOC,MAAM,CAACC,IAAP,CAAYF,KAAZ,EAAmBH,mBAAnB,CAAP;EACH;;EACD,OAAOG,KAAP;AACH,CALD;;AAaO,MAAMG,oCAAoC,GAAG,MAAM;EACtD,OAAO,IAAIC,sCAAJ,CAA4D;IAC/DC,SAAS,EAAE,WADoD;IAE/DC,WAAW,EAAE,OAAO;MAAEC,KAAF;MAASP,KAAK,EAAEQ;IAAhB,CAAP,KAA0C;MACnD,MAAMC,MAAM,GAAG,OAAOD,YAAtB;;MACA,IACI,CAACA,YAAD,IACAC,MAAM,KAAK,QADX,IAEAA,MAAM,KAAK,QAFX,IAGAC,KAAK,CAACC,OAAN,CAAcH,YAAd,MAAgC,IAJpC,EAKE;QACE,OAAOA,YAAP;MACH,CAPD,MAOO,IAAIC,MAAM,KAAK,QAAf,EAAyB;QAC5B,MAAM,IAAIG,cAAJ,CACD,gFAA+EL,KAAK,CAACM,SAAU,OAAMN,KAAK,CAACO,OAAQ,GADlH,CAAN;MAGH;;MACD,MAAM;QAAEC,WAAF;QAAef,KAAf;QAAsBW;MAAtB,IAAkCH,YAAxC;MACA;AACZ;AACA;;MACY,IAAI,CAACO,WAAL,EAAkB;QACd,MAAM,IAAIH,cAAJ,CACD,2DACGL,KAAK,CAACM,SACT,OAAMN,KAAK,CAACO,OAAQ,OAAME,IAAI,CAACC,SAAL,CAAeT,YAAf,CAA6B,GAHtD,EAIF,qBAJE,EAKF;UACIR,KAAK,EAAEQ;QADX,CALE,CAAN;MASH,CAVD,MAUO,IAAIO,WAAW,KAAKnB,IAApB,EAA0B;QAC7B,MAAM,IAAIgB,cAAJ,CACD,oEADC,EAEF,mBAFE,EAGF;UACIG;QADJ,CAHE,CAAN;MAOH;;MACD,IAAI;QACA,MAAMG,GAAG,GAAG,MAAM,IAAAC,gBAAA,EAAOpB,eAAe,CAACC,KAAD,CAAtB,CAAlB;QACA,MAAMoB,MAAM,GAAGF,GAAG,CAACG,QAAJ,CAAavB,qBAAb,CAAf;;QACA,IAAI,CAACa,OAAL,EAAc;UACV,OAAOS,MAAP;QACH;;QACD,OAAOJ,IAAI,CAACM,KAAL,CAAWF,MAAX,CAAP;MACH,CAPD,CAOE,OAAOG,EAAP,EAAW;QACTC,OAAO,CAACC,GAAR,CAAY,qCAAZ;QACAD,OAAO,CAACC,GAAR,CAAYF,EAAE,CAACG,OAAf;QACA,OAAO,EAAP;MACH;IACJ,CAnD8D;IAoD/DC,SAAS,EAAE,OAAO;MAAE3B,KAAK,EAAE4B;IAAT,CAAP,KAAmC;MAC1C,MAAMjB,OAAO,GAAGD,KAAK,CAACC,OAAN,CAAciB,YAAd,CAAhB;MACA,MAAM5B,KAAK,GAAGW,OAAO,GAAGK,IAAI,CAACC,SAAL,CAAeW,YAAf,CAAH,GAAkCA,YAAvD;MACA,MAAMC,eAAe,GAAG,MAAM,IAAAC,cAAA,EAAK9B,KAAL,CAA9B;MAEA,MAAMoB,MAAoB,GAAG;QACzBL,WAAW,EAAEnB,IADY;QAEzBI,KAAK,EAAE6B,eAAe,CAACR,QAAhB,CAAyBxB,mBAAzB;MAFkB,CAA7B;;MAIA,IAAI,CAACc,OAAL,EAAc;QACV,OAAOS,MAAP;MACH;;MACDA,MAAM,CAACT,OAAP,GAAiBA,OAAjB;MACA,OAAOS,MAAP;IACH;EAlE8D,CAA5D,CAAP;AAoEH,CArEM"}
@@ -4,5 +4,4 @@ export interface StorageValue {
4
4
  compression: string;
5
5
  value: any;
6
6
  }
7
- declare const _default: () => StorageTransformPlugin<any, any>;
8
- export default _default;
7
+ export declare const createRichTextStorageTransformPlugin: () => StorageTransformPlugin<any, any>;
@@ -5,7 +5,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports.default = void 0;
8
+ exports.createRichTextStorageTransformPlugin = void 0;
9
9
 
10
10
  var _jsonpack = _interopRequireDefault(require("jsonpack"));
11
11
 
@@ -41,90 +41,88 @@ const transformArray = value => {
41
41
  return value;
42
42
  };
43
43
 
44
- const plugin = new _apiHeadlessCms.StorageTransformPlugin({
45
- fieldType: "rich-text",
46
- fromStorage: async ({
47
- field,
48
- value: storageValue
49
- }) => {
50
- if (!storageValue) {
51
- return storageValue;
52
- } else if (typeof storageValue !== "object") {
53
- throw new _error.default(`RichText value received in "fromStorage" function is not an object in field "${field.fieldId}".`);
54
- }
55
- /**
56
- * This is to circumvent a bug introduced with 5.8.0 storage operations.
57
- * Do not remove.
58
- */
44
+ const createRichTextStorageTransformPlugin = () => {
45
+ return new _apiHeadlessCms.StorageTransformPlugin({
46
+ fieldType: "rich-text",
47
+ fromStorage: async ({
48
+ field,
49
+ value: storageValue
50
+ }) => {
51
+ if (!storageValue) {
52
+ return storageValue;
53
+ } else if (typeof storageValue !== "object") {
54
+ throw new _error.default(`RichText value received in "fromStorage" function is not an object in field "${field.storageId}".`);
55
+ }
56
+ /**
57
+ * This is to circumvent a bug introduced with 5.8.0 storage operations.
58
+ * Do not remove.
59
+ */
59
60
 
60
61
 
61
- if (storageValue.hasOwnProperty("compression") === false) {
62
- return storageValue;
63
- }
62
+ if (storageValue.hasOwnProperty("compression") === false) {
63
+ return storageValue;
64
+ }
64
65
 
65
- const {
66
- compression,
67
- value
68
- } = storageValue;
66
+ const {
67
+ compression,
68
+ value
69
+ } = storageValue;
69
70
 
70
- if (!compression) {
71
- throw new _error.default(`Missing compression in "fromStorage" function in field "${field.fieldId}": ${JSON.stringify(storageValue)}.`, "MISSING_COMPRESSION", {
72
- value: storageValue
73
- });
74
- }
71
+ if (!compression) {
72
+ throw new _error.default(`Missing compression in "fromStorage" function in field "${field.storageId}": ${JSON.stringify(storageValue)}.`, "MISSING_COMPRESSION", {
73
+ value: storageValue
74
+ });
75
+ }
75
76
 
76
- if (compression !== "jsonpack") {
77
- throw new _error.default(`This plugin cannot transform something not packed with "jsonpack".`, "WRONG_COMPRESSION", {
78
- compression
79
- });
80
- }
77
+ if (compression !== "jsonpack") {
78
+ throw new _error.default(`This plugin cannot transform something not packed with "jsonpack".`, "WRONG_COMPRESSION", {
79
+ compression
80
+ });
81
+ }
82
+
83
+ try {
84
+ return _jsonpack.default.unpack(value);
85
+ } catch (ex) {
86
+ if (process.env.DEBUG !== "true") {
87
+ return null;
88
+ }
81
89
 
82
- try {
83
- return _jsonpack.default.unpack(value);
84
- } catch (ex) {
85
- if (process.env.DEBUG !== "true") {
90
+ console.log("Error while decompressing rich-text.");
91
+ console.log(ex.message);
86
92
  return null;
87
93
  }
94
+ },
95
+ toStorage: async ({
96
+ value
97
+ }) => {
98
+ /**
99
+ * There is a possibility that we are trying to compress already compressed value.
100
+ * Introduced a bug with 5.8.0 storage operations, so just return the value to correct it.
101
+ */
102
+ if (value && value.hasOwnProperty("compression") === true) {
103
+ return value;
104
+ }
88
105
 
89
- console.log("Error while decompressing rich-text.");
90
- console.log(ex.message);
91
- return null;
92
- }
93
- },
94
- toStorage: async ({
95
- value
96
- }) => {
97
- /**
98
- * There is a possibility that we are trying to compress already compressed value.
99
- * Introduced a bug with 5.8.0 storage operations, so just return the value to correct it.
100
- */
101
- if (value && value.hasOwnProperty("compression") === true) {
102
- return value;
103
- }
106
+ value = transformArray(value);
107
+ let jsonValue = null;
104
108
 
105
- value = transformArray(value);
106
- let jsonValue = null;
109
+ try {
110
+ jsonValue = _jsonpack.default.pack(value);
111
+ } catch (ex) {
112
+ if (process.env.DEBUG !== "true") {
113
+ return null;
114
+ }
107
115
 
108
- try {
109
- jsonValue = _jsonpack.default.pack(value);
110
- } catch (ex) {
111
- if (process.env.DEBUG !== "true") {
112
- return null;
116
+ console.log("Error while compressing rich-text.");
117
+ console.log(ex.message);
113
118
  }
114
119
 
115
- console.log("Error while compressing rich-text.");
116
- console.log(ex.message);
120
+ return {
121
+ compression: "jsonpack",
122
+ value: jsonValue
123
+ };
117
124
  }
118
-
119
- return {
120
- compression: "jsonpack",
121
- value: jsonValue
122
- };
123
- }
124
- });
125
-
126
- var _default = () => {
127
- return plugin;
125
+ });
128
126
  };
129
127
 
130
- exports.default = _default;
128
+ exports.createRichTextStorageTransformPlugin = createRichTextStorageTransformPlugin;
@@ -1 +1 @@
1
- {"version":3,"names":["transformArray","value","isArray","Array","shouldBeArray","from","k","plugin","StorageTransformPlugin","fieldType","fromStorage","field","storageValue","WebinyError","fieldId","hasOwnProperty","compression","JSON","stringify","jsonpack","unpack","ex","process","env","DEBUG","console","log","message","toStorage","jsonValue","pack"],"sources":["richText.ts"],"sourcesContent":["import jsonpack from \"jsonpack\";\nimport WebinyError from \"@webiny/error\";\nimport { StorageTransformPlugin } from \"@webiny/api-headless-cms\";\n\nexport type OriginalValue = Record<string, any> | any[];\n\nexport interface StorageValue {\n compression: string;\n value: any;\n}\n\n/**\n * Remove when jsonpack gets PR with a fix merged\n * https://github.com/rgcl/jsonpack/pull/25/files\n * NOTE 2021-07-28: it seems PR is not going to be merged so keep this.\n */\n// TODO @ts-refactor figure better type\nconst transformArray = (value: any) => {\n if (!value) {\n return value;\n }\n let isArray = Array.isArray(value);\n const shouldBeArray = value instanceof Array === false && isArray;\n if (shouldBeArray) {\n value = Array.from(value as any);\n isArray = true;\n }\n if (typeof value === \"object\" || isArray) {\n for (const k in value) {\n value[k] = transformArray(value[k]);\n }\n }\n return value;\n};\n\nconst plugin = new StorageTransformPlugin({\n fieldType: \"rich-text\",\n fromStorage: async ({ field, value: storageValue }) => {\n if (!storageValue) {\n return storageValue;\n } else if (typeof storageValue !== \"object\") {\n throw new WebinyError(\n `RichText value received in \"fromStorage\" function is not an object in field \"${field.fieldId}\".`\n );\n }\n /**\n * This is to circumvent a bug introduced with 5.8.0 storage operations.\n * Do not remove.\n */\n if (storageValue.hasOwnProperty(\"compression\") === false) {\n return storageValue;\n }\n const { compression, value } = storageValue;\n if (!compression) {\n throw new WebinyError(\n `Missing compression in \"fromStorage\" function in field \"${\n field.fieldId\n }\": ${JSON.stringify(storageValue)}.`,\n \"MISSING_COMPRESSION\",\n {\n value: storageValue\n }\n );\n }\n if (compression !== \"jsonpack\") {\n throw new WebinyError(\n `This plugin cannot transform something not packed with \"jsonpack\".`,\n \"WRONG_COMPRESSION\",\n {\n compression\n }\n );\n }\n try {\n return jsonpack.unpack(value);\n } catch (ex) {\n if (process.env.DEBUG !== \"true\") {\n return null;\n }\n console.log(\"Error while decompressing rich-text.\");\n console.log(ex.message);\n return null;\n }\n },\n toStorage: async ({ value }) => {\n /**\n * There is a possibility that we are trying to compress already compressed value.\n * Introduced a bug with 5.8.0 storage operations, so just return the value to correct it.\n */\n if (value && value.hasOwnProperty(\"compression\") === true) {\n return value as any;\n }\n value = transformArray(value);\n\n let jsonValue: string | null = null;\n try {\n jsonValue = jsonpack.pack(value);\n } catch (ex) {\n if (process.env.DEBUG !== \"true\") {\n return null;\n }\n console.log(\"Error while compressing rich-text.\");\n console.log(ex.message);\n }\n return {\n compression: \"jsonpack\",\n value: jsonValue\n };\n }\n});\n\nexport default () => {\n return plugin;\n};\n"],"mappings":"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"}
1
+ {"version":3,"names":["transformArray","value","isArray","Array","shouldBeArray","from","k","createRichTextStorageTransformPlugin","StorageTransformPlugin","fieldType","fromStorage","field","storageValue","WebinyError","storageId","hasOwnProperty","compression","JSON","stringify","jsonpack","unpack","ex","process","env","DEBUG","console","log","message","toStorage","jsonValue","pack"],"sources":["richText.ts"],"sourcesContent":["import jsonpack from \"jsonpack\";\nimport WebinyError from \"@webiny/error\";\nimport { StorageTransformPlugin } from \"@webiny/api-headless-cms\";\n\nexport type OriginalValue = Record<string, any> | any[];\n\nexport interface StorageValue {\n compression: string;\n value: any;\n}\n\n/**\n * Remove when jsonpack gets PR with a fix merged\n * https://github.com/rgcl/jsonpack/pull/25/files\n * NOTE 2021-07-28: it seems PR is not going to be merged so keep this.\n */\n// TODO @ts-refactor figure better type\nconst transformArray = (value: any) => {\n if (!value) {\n return value;\n }\n let isArray = Array.isArray(value);\n const shouldBeArray = value instanceof Array === false && isArray;\n if (shouldBeArray) {\n value = Array.from(value as any);\n isArray = true;\n }\n if (typeof value === \"object\" || isArray) {\n for (const k in value) {\n value[k] = transformArray(value[k]);\n }\n }\n return value;\n};\n\nexport const createRichTextStorageTransformPlugin = () => {\n return new StorageTransformPlugin({\n fieldType: \"rich-text\",\n fromStorage: async ({ field, value: storageValue }) => {\n if (!storageValue) {\n return storageValue;\n } else if (typeof storageValue !== \"object\") {\n throw new WebinyError(\n `RichText value received in \"fromStorage\" function is not an object in field \"${field.storageId}\".`\n );\n }\n /**\n * This is to circumvent a bug introduced with 5.8.0 storage operations.\n * Do not remove.\n */\n if (storageValue.hasOwnProperty(\"compression\") === false) {\n return storageValue;\n }\n const { compression, value } = storageValue;\n if (!compression) {\n throw new WebinyError(\n `Missing compression in \"fromStorage\" function in field \"${\n field.storageId\n }\": ${JSON.stringify(storageValue)}.`,\n \"MISSING_COMPRESSION\",\n {\n value: storageValue\n }\n );\n }\n if (compression !== \"jsonpack\") {\n throw new WebinyError(\n `This plugin cannot transform something not packed with \"jsonpack\".`,\n \"WRONG_COMPRESSION\",\n {\n compression\n }\n );\n }\n try {\n return jsonpack.unpack(value);\n } catch (ex) {\n if (process.env.DEBUG !== \"true\") {\n return null;\n }\n console.log(\"Error while decompressing rich-text.\");\n console.log(ex.message);\n return null;\n }\n },\n toStorage: async ({ value }) => {\n /**\n * There is a possibility that we are trying to compress already compressed value.\n * Introduced a bug with 5.8.0 storage operations, so just return the value to correct it.\n */\n if (value && value.hasOwnProperty(\"compression\") === true) {\n return value as any;\n }\n value = transformArray(value);\n\n let jsonValue: string | null = null;\n try {\n jsonValue = jsonpack.pack(value);\n } catch (ex) {\n if (process.env.DEBUG !== \"true\") {\n return null;\n }\n console.log(\"Error while compressing rich-text.\");\n console.log(ex.message);\n }\n return {\n compression: \"jsonpack\",\n value: jsonValue\n };\n }\n });\n};\n"],"mappings":"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"}