@webiny/api-headless-cms-ddb 5.17.4 → 5.18.0-beta.3

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 (91) hide show
  1. package/definitions/entry.d.ts +6 -4
  2. package/definitions/entry.js +19 -8
  3. package/definitions/group.d.ts +8 -0
  4. package/definitions/group.js +74 -0
  5. package/definitions/model.d.ts +8 -0
  6. package/definitions/model.js +96 -0
  7. package/definitions/settings.d.ts +8 -0
  8. package/definitions/settings.js +62 -0
  9. package/definitions/system.d.ts +8 -0
  10. package/definitions/system.js +50 -0
  11. package/definitions/table.d.ts +6 -12
  12. package/definitions/table.js +15 -15
  13. package/dynamoDb/index.d.ts +1 -1
  14. package/dynamoDb/index.js +4 -3
  15. package/dynamoDb/path/plainObject.js +1 -2
  16. package/dynamoDb/path/ref.js +1 -2
  17. package/dynamoDb/storage/date.d.ts +2 -2
  18. package/dynamoDb/storage/date.js +17 -21
  19. package/dynamoDb/storage/longText.d.ts +7 -0
  20. package/dynamoDb/storage/longText.js +83 -0
  21. package/dynamoDb/storage/richText.d.ts +2 -2
  22. package/dynamoDb/storage/richText.js +69 -67
  23. package/dynamoDb/transformValue/datetime.d.ts +1 -1
  24. package/dynamoDb/transformValue/datetime.js +1 -2
  25. package/index.d.ts +2 -6
  26. package/index.js +108 -13
  27. package/operations/entry/dataLoaders.d.ts +34 -19
  28. package/operations/entry/dataLoaders.js +158 -138
  29. package/operations/entry/index.d.ts +8 -4
  30. package/operations/entry/index.js +812 -16
  31. package/operations/entry/keys.d.ts +25 -0
  32. package/operations/entry/keys.js +62 -0
  33. package/operations/entry/systemFields.d.ts +2 -2
  34. package/operations/entry/systemFields.js +1 -2
  35. package/operations/entry/utils.d.ts +13 -9
  36. package/operations/entry/utils.js +62 -18
  37. package/operations/group/index.d.ts +8 -0
  38. package/operations/group/index.js +198 -0
  39. package/operations/model/index.d.ts +6 -3
  40. package/operations/model/index.js +153 -18
  41. package/operations/settings/index.d.ts +6 -3
  42. package/operations/settings/index.js +132 -16
  43. package/operations/system/index.d.ts +6 -3
  44. package/operations/system/index.js +94 -14
  45. package/package.json +11 -11
  46. package/types.d.ts +38 -8
  47. package/types.js +11 -1
  48. package/configurations.d.ts +0 -18
  49. package/configurations.js +0 -24
  50. package/configurations.js.map +0 -1
  51. package/definitions/entry.js.map +0 -1
  52. package/definitions/table.js.map +0 -1
  53. package/dynamoDb/index.js.map +0 -1
  54. package/dynamoDb/path/plainObject.js.map +0 -1
  55. package/dynamoDb/path/ref.js.map +0 -1
  56. package/dynamoDb/storage/date.js.map +0 -1
  57. package/dynamoDb/storage/richText.js.map +0 -1
  58. package/dynamoDb/transformValue/datetime.js.map +0 -1
  59. package/index.js.map +0 -1
  60. package/operations/entry/CmsContentEntryDynamo.d.ts +0 -86
  61. package/operations/entry/CmsContentEntryDynamo.js +0 -972
  62. package/operations/entry/CmsContentEntryDynamo.js.map +0 -1
  63. package/operations/entry/dataLoaders.js.map +0 -1
  64. package/operations/entry/index.js.map +0 -1
  65. package/operations/entry/systemFields.js.map +0 -1
  66. package/operations/entry/utils.js.map +0 -1
  67. package/operations/helpers.d.ts +0 -5
  68. package/operations/helpers.js +0 -96
  69. package/operations/helpers.js.map +0 -1
  70. package/operations/model/CmsContentModelDynamo.d.ts +0 -18
  71. package/operations/model/CmsContentModelDynamo.js +0 -234
  72. package/operations/model/CmsContentModelDynamo.js.map +0 -1
  73. package/operations/model/index.js.map +0 -1
  74. package/operations/modelGroup/CmsContentModelGroupDynamo.d.ts +0 -42
  75. package/operations/modelGroup/CmsContentModelGroupDynamo.js +0 -230
  76. package/operations/modelGroup/CmsContentModelGroupDynamo.js.map +0 -1
  77. package/operations/modelGroup/index.d.ts +0 -3
  78. package/operations/modelGroup/index.js +0 -26
  79. package/operations/modelGroup/index.js.map +0 -1
  80. package/operations/settings/CmsSettingsDynamo.d.ts +0 -16
  81. package/operations/settings/CmsSettingsDynamo.js +0 -145
  82. package/operations/settings/CmsSettingsDynamo.js.map +0 -1
  83. package/operations/settings/index.js.map +0 -1
  84. package/operations/system/CmsSystemDynamo.d.ts +0 -16
  85. package/operations/system/CmsSystemDynamo.js +0 -126
  86. package/operations/system/CmsSystemDynamo.js.map +0 -1
  87. package/operations/system/index.js.map +0 -1
  88. package/types.js.map +0 -1
  89. package/utils.d.ts +0 -5
  90. package/utils.js +0 -62
  91. package/utils.js.map +0 -1
@@ -1,126 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
- Object.defineProperty(exports, "__esModule", {
6
- value: true
7
- });
8
- exports.default = void 0;
9
-
10
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
-
12
- var _configurations = _interopRequireDefault(require("../../configurations"));
13
-
14
- var _error = _interopRequireDefault(require("@webiny/error"));
15
-
16
- var _dynamodbToolbox = require("dynamodb-toolbox");
17
-
18
- var _helpers = require("../helpers");
19
-
20
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
21
-
22
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
23
-
24
- const SYSTEM_SORT_KEY = "CMS";
25
-
26
- class CmsSystemDynamo {
27
- get context() {
28
- return this._context;
29
- }
30
-
31
- get partitionKey() {
32
- const tenant = this._context.tenancy.getCurrentTenant();
33
-
34
- if (!tenant) {
35
- throw new _error.default("Tenant missing.", "TENANT_NOT_FOUND");
36
- }
37
-
38
- return `T#${tenant.id}#SYSTEM`;
39
- }
40
-
41
- constructor({
42
- context
43
- }) {
44
- (0, _defineProperty2.default)(this, "_context", void 0);
45
- (0, _defineProperty2.default)(this, "_table", void 0);
46
- (0, _defineProperty2.default)(this, "_entity", void 0);
47
- this._context = context;
48
- this._table = new _dynamodbToolbox.Table({
49
- name: _configurations.default.db().table || (0, _helpers.getTable)(context),
50
- partitionKey: "PK",
51
- sortKey: "SK",
52
- DocumentClient: (0, _helpers.getDocumentClient)(context)
53
- });
54
- this._entity = new _dynamodbToolbox.Entity({
55
- name: "System",
56
- table: this._table,
57
- attributes: {
58
- PK: {
59
- partitionKey: true
60
- },
61
- SK: {
62
- sortKey: true
63
- },
64
- version: {
65
- type: "string"
66
- },
67
- readAPIKey: {
68
- type: "string"
69
- }
70
- }
71
- });
72
- }
73
-
74
- async get() {
75
- const response = await this._entity.get({
76
- PK: this.partitionKey,
77
- SK: SYSTEM_SORT_KEY
78
- });
79
-
80
- if (!response || !response.Item) {
81
- return null;
82
- }
83
-
84
- return response.Item;
85
- }
86
-
87
- async create(data) {
88
- try {
89
- const result = await this._entity.put(_objectSpread({
90
- PK: this.partitionKey,
91
- SK: SYSTEM_SORT_KEY
92
- }, data));
93
-
94
- if (!result) {
95
- throw new _error.default("Could not create the system data - no result.", "CREATE_SYSTEM_ERROR");
96
- }
97
- } catch (ex) {
98
- throw new _error.default(ex.message || "Could not create the system data.", ex.code || "CREATE_SYSTEM_ERROR", {
99
- error: ex,
100
- data
101
- });
102
- }
103
- }
104
-
105
- async update(data) {
106
- try {
107
- const result = await this._entity.update(_objectSpread({
108
- PK: this.partitionKey,
109
- SK: SYSTEM_SORT_KEY
110
- }, data));
111
-
112
- if (!result) {
113
- throw new _error.default("Could not update the system data - no result.", "CREATE_SYSTEM_ERROR");
114
- }
115
- } catch (ex) {
116
- throw new _error.default(ex.message || "Could not update the system data.", ex.code || "UPDATE_SYSTEM_ERROR", {
117
- error: ex,
118
- data
119
- });
120
- }
121
- }
122
-
123
- }
124
-
125
- exports.default = CmsSystemDynamo;
126
- //# sourceMappingURL=CmsSystemDynamo.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/operations/system/CmsSystemDynamo.ts"],"names":["SYSTEM_SORT_KEY","CmsSystemDynamo","context","_context","partitionKey","tenant","tenancy","getCurrentTenant","WebinyError","id","constructor","_table","Table","name","configurations","db","table","sortKey","DocumentClient","_entity","Entity","attributes","PK","SK","version","type","readAPIKey","get","response","Item","create","data","result","put","ex","message","code","error","update"],"mappings":";;;;;;;;;;;AACA;;AACA;;AACA;;AACA;;;;;;AAMA,MAAMA,eAAe,GAAG,KAAxB;;AAEe,MAAMC,eAAN,CAA4D;AAKpD,MAAPC,OAAO,GAAe;AAC9B,WAAO,KAAKC,QAAZ;AACH;;AAEuB,MAAZC,YAAY,GAAW;AAC/B,UAAMC,MAAM,GAAG,KAAKF,QAAL,CAAcG,OAAd,CAAsBC,gBAAtB,EAAf;;AACA,QAAI,CAACF,MAAL,EAAa;AACT,YAAM,IAAIG,cAAJ,CAAgB,iBAAhB,EAAmC,kBAAnC,CAAN;AACH;;AACD,WAAQ,KAAIH,MAAM,CAACI,EAAG,SAAtB;AACH;;AAEMC,EAAAA,WAAW,CAAC;AAAER,IAAAA;AAAF,GAAD,EAA+B;AAAA;AAAA;AAAA;AAC7C,SAAKC,QAAL,GAAgBD,OAAhB;AACA,SAAKS,MAAL,GAAc,IAAIC,sBAAJ,CAAU;AACpBC,MAAAA,IAAI,EAAEC,wBAAeC,EAAf,GAAoBC,KAApB,IAA6B,uBAASd,OAAT,CADf;AAEpBE,MAAAA,YAAY,EAAE,IAFM;AAGpBa,MAAAA,OAAO,EAAE,IAHW;AAIpBC,MAAAA,cAAc,EAAE,gCAAkBhB,OAAlB;AAJI,KAAV,CAAd;AAOA,SAAKiB,OAAL,GAAe,IAAIC,uBAAJ,CAAW;AACtBP,MAAAA,IAAI,EAAE,QADgB;AAEtBG,MAAAA,KAAK,EAAE,KAAKL,MAFU;AAGtBU,MAAAA,UAAU,EAAE;AACRC,QAAAA,EAAE,EAAE;AACAlB,UAAAA,YAAY,EAAE;AADd,SADI;AAIRmB,QAAAA,EAAE,EAAE;AACAN,UAAAA,OAAO,EAAE;AADT,SAJI;AAORO,QAAAA,OAAO,EAAE;AACLC,UAAAA,IAAI,EAAE;AADD,SAPD;AAURC,QAAAA,UAAU,EAAE;AACRD,UAAAA,IAAI,EAAE;AADE;AAVJ;AAHU,KAAX,CAAf;AAkBH;;AAEe,QAAHE,GAAG,GAAuB;AACnC,UAAMC,QAAQ,GAAG,MAAM,KAAKT,OAAL,CAAaQ,GAAb,CAAiB;AACpCL,MAAAA,EAAE,EAAE,KAAKlB,YAD2B;AAEpCmB,MAAAA,EAAE,EAAEvB;AAFgC,KAAjB,CAAvB;;AAKA,QAAI,CAAC4B,QAAD,IAAa,CAACA,QAAQ,CAACC,IAA3B,EAAiC;AAC7B,aAAO,IAAP;AACH;;AACD,WAAOD,QAAQ,CAACC,IAAhB;AACH;;AAEkB,QAANC,MAAM,CAACC,IAAD,EAAiC;AAChD,QAAI;AACA,YAAMC,MAAM,GAAG,MAAM,KAAKb,OAAL,CAAac,GAAb;AACjBX,QAAAA,EAAE,EAAE,KAAKlB,YADQ;AAEjBmB,QAAAA,EAAE,EAAEvB;AAFa,SAGd+B,IAHc,EAArB;;AAKA,UAAI,CAACC,MAAL,EAAa;AACT,cAAM,IAAIxB,cAAJ,CACF,+CADE,EAEF,qBAFE,CAAN;AAIH;AACJ,KAZD,CAYE,OAAO0B,EAAP,EAAW;AACT,YAAM,IAAI1B,cAAJ,CACF0B,EAAE,CAACC,OAAH,IAAc,mCADZ,EAEFD,EAAE,CAACE,IAAH,IAAW,qBAFT,EAGF;AACIC,QAAAA,KAAK,EAAEH,EADX;AAEIH,QAAAA;AAFJ,OAHE,CAAN;AAQH;AACJ;;AAEkB,QAANO,MAAM,CAACP,IAAD,EAAiC;AAChD,QAAI;AACA,YAAMC,MAAM,GAAG,MAAM,KAAKb,OAAL,CAAamB,MAAb;AACjBhB,QAAAA,EAAE,EAAE,KAAKlB,YADQ;AAEjBmB,QAAAA,EAAE,EAAEvB;AAFa,SAGd+B,IAHc,EAArB;;AAKA,UAAI,CAACC,MAAL,EAAa;AACT,cAAM,IAAIxB,cAAJ,CACF,+CADE,EAEF,qBAFE,CAAN;AAIH;AACJ,KAZD,CAYE,OAAO0B,EAAP,EAAW;AACT,YAAM,IAAI1B,cAAJ,CACF0B,EAAE,CAACC,OAAH,IAAc,mCADZ,EAEFD,EAAE,CAACE,IAAH,IAAW,qBAFT,EAGF;AACIC,QAAAA,KAAK,EAAEH,EADX;AAEIH,QAAAA;AAFJ,OAHE,CAAN;AAQH;AACJ;;AA1GsE","sourcesContent":["import { CmsContext, CmsSystem, CmsSystemStorageOperations } from \"@webiny/api-headless-cms/types\";\nimport configurations from \"../../configurations\";\nimport WebinyError from \"@webiny/error\";\nimport { Entity, Table } from \"dynamodb-toolbox\";\nimport { getDocumentClient, getTable } from \"../helpers\";\n\ninterface ConstructorArgs {\n context: CmsContext;\n}\n\nconst SYSTEM_SORT_KEY = \"CMS\";\n\nexport default class CmsSystemDynamo implements CmsSystemStorageOperations {\n private readonly _context: CmsContext;\n private readonly _table: Table;\n private readonly _entity: Entity<any>;\n\n private get context(): CmsContext {\n return this._context;\n }\n\n private get partitionKey(): string {\n const tenant = this._context.tenancy.getCurrentTenant();\n if (!tenant) {\n throw new WebinyError(\"Tenant missing.\", \"TENANT_NOT_FOUND\");\n }\n return `T#${tenant.id}#SYSTEM`;\n }\n\n public constructor({ context }: ConstructorArgs) {\n this._context = context;\n this._table = new Table({\n name: configurations.db().table || getTable(context),\n partitionKey: \"PK\",\n sortKey: \"SK\",\n DocumentClient: getDocumentClient(context)\n });\n\n this._entity = new Entity({\n name: \"System\",\n table: this._table,\n attributes: {\n PK: {\n partitionKey: true\n },\n SK: {\n sortKey: true\n },\n version: {\n type: \"string\"\n },\n readAPIKey: {\n type: \"string\"\n }\n }\n });\n }\n\n public async get(): Promise<CmsSystem> {\n const response = await this._entity.get({\n PK: this.partitionKey,\n SK: SYSTEM_SORT_KEY\n });\n\n if (!response || !response.Item) {\n return null;\n }\n return response.Item;\n }\n\n public async create(data: CmsSystem): Promise<void> {\n try {\n const result = await this._entity.put({\n PK: this.partitionKey,\n SK: SYSTEM_SORT_KEY,\n ...data\n });\n if (!result) {\n throw new WebinyError(\n \"Could not create the system data - no result.\",\n \"CREATE_SYSTEM_ERROR\"\n );\n }\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not create the system data.\",\n ex.code || \"CREATE_SYSTEM_ERROR\",\n {\n error: ex,\n data\n }\n );\n }\n }\n\n public async update(data: CmsSystem): Promise<void> {\n try {\n const result = await this._entity.update({\n PK: this.partitionKey,\n SK: SYSTEM_SORT_KEY,\n ...data\n });\n if (!result) {\n throw new WebinyError(\n \"Could not update the system data - no result.\",\n \"CREATE_SYSTEM_ERROR\"\n );\n }\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not update the system data.\",\n ex.code || \"UPDATE_SYSTEM_ERROR\",\n {\n error: ex,\n data\n }\n );\n }\n }\n}\n"],"file":"CmsSystemDynamo.js"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/operations/system/index.ts"],"names":["type","name","provide","context","CmsSystemDynamo"],"mappings":";;;;;;;;;AAAA;;eAGe,OAAiD;AAC5DA,EAAAA,IAAI,EAAE,wCADsD;AAE5DC,EAAAA,IAAI,EAAE,wCAFsD;AAG5DC,EAAAA,OAAO,EAAE,OAAO;AAAEC,IAAAA;AAAF,GAAP,KAAuB;AAC5B,WAAO,IAAIC,wBAAJ,CAAoB;AACvBD,MAAAA;AADuB,KAApB,CAAP;AAGH;AAP2D,CAAjD,C","sourcesContent":["import CmsSystemDynamo from \"./CmsSystemDynamo\";\nimport { CmsSystemStorageOperationsProviderPlugin } from \"@webiny/api-headless-cms/types\";\n\nexport default (): CmsSystemStorageOperationsProviderPlugin => ({\n type: \"cms-system-storage-operations-provider\",\n name: \"cms-system-storage-operations-ddb-crud\",\n provide: async ({ context }) => {\n return new CmsSystemDynamo({\n context\n });\n }\n});\n"],"file":"index.js"}
package/types.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","sourcesContent":[],"file":"types.js"}
package/utils.d.ts DELETED
@@ -1,5 +0,0 @@
1
- import { CmsContext } from "@webiny/api-headless-cms/types";
2
- export declare const createBasePartitionKey: ({ tenancy, cms }: CmsContext) => string;
3
- export declare const encodePaginationCursor: (cursor?: any) => string;
4
- export declare const decodePaginationCursor: (cursor?: string) => any;
5
- export declare const paginateBatch: <T = Record<string, any>>(items: T[], perPage: number, execute: (items: T[]) => Promise<any>) => Promise<void>;
package/utils.js DELETED
@@ -1,62 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
- Object.defineProperty(exports, "__esModule", {
6
- value: true
7
- });
8
- exports.paginateBatch = exports.encodePaginationCursor = exports.decodePaginationCursor = exports.createBasePartitionKey = void 0;
9
-
10
- var _error = _interopRequireDefault(require("@webiny/error"));
11
-
12
- const createBasePartitionKey = ({
13
- tenancy,
14
- cms
15
- }) => {
16
- const tenant = tenancy.getCurrentTenant();
17
-
18
- if (!tenant) {
19
- throw new _error.default("Tenant missing.", "TENANT_NOT_FOUND");
20
- }
21
-
22
- const locale = cms.getLocale();
23
-
24
- if (!locale) {
25
- throw new _error.default("Locale missing.", "LOCALE_NOT_FOUND");
26
- }
27
-
28
- return `T#${tenant.id}#L#${locale.code}#CMS`;
29
- };
30
-
31
- exports.createBasePartitionKey = createBasePartitionKey;
32
-
33
- const encodePaginationCursor = cursor => {
34
- if (!cursor) {
35
- return null;
36
- }
37
-
38
- return Buffer.from(JSON.stringify(cursor)).toString("base64");
39
- };
40
-
41
- exports.encodePaginationCursor = encodePaginationCursor;
42
-
43
- const decodePaginationCursor = cursor => {
44
- if (!cursor) {
45
- return null;
46
- }
47
-
48
- return JSON.parse(Buffer.from(cursor, "base64").toString("ascii"));
49
- };
50
-
51
- exports.decodePaginationCursor = decodePaginationCursor;
52
-
53
- const paginateBatch = async (items, perPage, execute) => {
54
- const pages = Math.ceil(items.length / perPage);
55
-
56
- for (let i = 0; i < pages; i++) {
57
- await execute(items.slice(i * perPage, i * perPage + perPage));
58
- }
59
- };
60
-
61
- exports.paginateBatch = paginateBatch;
62
- //# sourceMappingURL=utils.js.map
package/utils.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/utils.ts"],"names":["createBasePartitionKey","tenancy","cms","tenant","getCurrentTenant","WebinyError","locale","getLocale","id","code","encodePaginationCursor","cursor","Buffer","from","JSON","stringify","toString","decodePaginationCursor","parse","paginateBatch","items","perPage","execute","pages","Math","ceil","length","i","slice"],"mappings":";;;;;;;;;AAAA;;AAGO,MAAMA,sBAAsB,GAAG,CAAC;AAAEC,EAAAA,OAAF;AAAWC,EAAAA;AAAX,CAAD,KAA0C;AAC5E,QAAMC,MAAM,GAAGF,OAAO,CAACG,gBAAR,EAAf;;AACA,MAAI,CAACD,MAAL,EAAa;AACT,UAAM,IAAIE,cAAJ,CAAgB,iBAAhB,EAAmC,kBAAnC,CAAN;AACH;;AAED,QAAMC,MAAM,GAAGJ,GAAG,CAACK,SAAJ,EAAf;;AACA,MAAI,CAACD,MAAL,EAAa;AACT,UAAM,IAAID,cAAJ,CAAgB,iBAAhB,EAAmC,kBAAnC,CAAN;AACH;;AAED,SAAQ,KAAIF,MAAM,CAACK,EAAG,MAAKF,MAAM,CAACG,IAAK,MAAvC;AACH,CAZM;;;;AAcA,MAAMC,sBAAsB,GAAIC,MAAD,IAAkB;AACpD,MAAI,CAACA,MAAL,EAAa;AACT,WAAO,IAAP;AACH;;AAED,SAAOC,MAAM,CAACC,IAAP,CAAYC,IAAI,CAACC,SAAL,CAAeJ,MAAf,CAAZ,EAAoCK,QAApC,CAA6C,QAA7C,CAAP;AACH,CANM;;;;AAQA,MAAMC,sBAAsB,GAAIN,MAAD,IAAqB;AACvD,MAAI,CAACA,MAAL,EAAa;AACT,WAAO,IAAP;AACH;;AAED,SAAOG,IAAI,CAACI,KAAL,CAAWN,MAAM,CAACC,IAAP,CAAYF,MAAZ,EAAoB,QAApB,EAA8BK,QAA9B,CAAuC,OAAvC,CAAX,CAAP;AACH,CANM;;;;AAQA,MAAMG,aAAa,GAAG,OACzBC,KADyB,EAEzBC,OAFyB,EAGzBC,OAHyB,KAIxB;AACD,QAAMC,KAAK,GAAGC,IAAI,CAACC,IAAL,CAAUL,KAAK,CAACM,MAAN,GAAeL,OAAzB,CAAd;;AACA,OAAK,IAAIM,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGJ,KAApB,EAA2BI,CAAC,EAA5B,EAAgC;AAC5B,UAAML,OAAO,CAACF,KAAK,CAACQ,KAAN,CAAYD,CAAC,GAAGN,OAAhB,EAAyBM,CAAC,GAAGN,OAAJ,GAAcA,OAAvC,CAAD,CAAb;AACH;AACJ,CATM","sourcesContent":["import WebinyError from \"@webiny/error\";\nimport { CmsContext } from \"@webiny/api-headless-cms/types\";\n\nexport const createBasePartitionKey = ({ tenancy, cms }: CmsContext): string => {\n const tenant = tenancy.getCurrentTenant();\n if (!tenant) {\n throw new WebinyError(\"Tenant missing.\", \"TENANT_NOT_FOUND\");\n }\n\n const locale = cms.getLocale();\n if (!locale) {\n throw new WebinyError(\"Locale missing.\", \"LOCALE_NOT_FOUND\");\n }\n\n return `T#${tenant.id}#L#${locale.code}#CMS`;\n};\n\nexport const encodePaginationCursor = (cursor?: any) => {\n if (!cursor) {\n return null;\n }\n\n return Buffer.from(JSON.stringify(cursor)).toString(\"base64\");\n};\n\nexport const decodePaginationCursor = (cursor?: string) => {\n if (!cursor) {\n return null;\n }\n\n return JSON.parse(Buffer.from(cursor, \"base64\").toString(\"ascii\"));\n};\n\nexport const paginateBatch = async <T = Record<string, any>>(\n items: T[],\n perPage: number,\n execute: (items: T[]) => Promise<any>\n) => {\n const pages = Math.ceil(items.length / perPage);\n for (let i = 0; i < pages; i++) {\n await execute(items.slice(i * perPage, i * perPage + perPage));\n }\n};\n"],"file":"utils.js"}