@webiny/api-prerendering-service-so-ddb 5.27.0 → 5.29.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 (35) hide show
  1. package/definitions/queueJob.js.map +1 -1
  2. package/definitions/render.js +3 -9
  3. package/definitions/render.js.map +1 -1
  4. package/definitions/renderLegacy.d.ts +8 -0
  5. package/definitions/renderLegacy.js +56 -0
  6. package/definitions/renderLegacy.js.map +1 -0
  7. package/definitions/settings.d.ts +8 -0
  8. package/definitions/settings.js +44 -0
  9. package/definitions/settings.js.map +1 -0
  10. package/definitions/table.js +7 -1
  11. package/definitions/table.js.map +1 -1
  12. package/definitions/tagPathLink.d.ts +9 -0
  13. package/definitions/tagPathLink.js +50 -0
  14. package/definitions/tagPathLink.js.map +1 -0
  15. package/definitions/{tagUrlLink.d.ts → tagPathLinkLegacy.d.ts} +0 -0
  16. package/definitions/{tagUrlLink.js → tagPathLinkLegacy.js} +0 -0
  17. package/definitions/tagPathLinkLegacy.js.map +1 -0
  18. package/index.js +17 -6
  19. package/index.js.map +1 -1
  20. package/operations/{queueJob/index.d.ts → queueJob.d.ts} +0 -0
  21. package/operations/{queueJob/index.js → queueJob.js} +0 -0
  22. package/operations/queueJob.js.map +1 -0
  23. package/operations/{render/index.d.ts → render.d.ts} +12 -7
  24. package/operations/{render/index.js → render.js} +120 -77
  25. package/operations/render.js.map +1 -0
  26. package/operations/settings.d.ts +6 -0
  27. package/operations/settings.js +79 -0
  28. package/operations/settings.js.map +1 -0
  29. package/package.json +10 -10
  30. package/types.d.ts +8 -2
  31. package/types.js +2 -1
  32. package/types.js.map +1 -1
  33. package/definitions/tagUrlLink.js.map +0 -1
  34. package/operations/queueJob/index.js.map +0 -1
  35. package/operations/render/index.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["queueJob.ts"],"names":["createQueueJobEntity","params","entityName","attributes","table","Entity","name","PK","partitionKey","SK","sortKey","TYPE","type","id","args"],"mappings":";;;;;;;;;;;AAAA;;;;;;AASO,MAAMA,oBAAoB,GAAIC,MAAD,IAAqD;AACrF,QAAM;AAAEC,IAAAA,UAAF;AAAcC,IAAAA,UAAd;AAA0BC,IAAAA;AAA1B,MAAoCH,MAA1C;AACA,SAAO,IAAII,uBAAJ,CAAW;AACdC,IAAAA,IAAI,EAAEJ,UADQ;AAEdE,IAAAA,KAFc;AAGdD,IAAAA,UAAU;AACNI,MAAAA,EAAE,EAAE;AACAC,QAAAA,YAAY,EAAE;AADd,OADE;AAINC,MAAAA,EAAE,EAAE;AACAC,QAAAA,OAAO,EAAE;AADT,OAJE;AAONC,MAAAA,IAAI,EAAE;AACFC,QAAAA,IAAI,EAAE;AADJ,OAPA;AAUNC,MAAAA,EAAE,EAAE;AACAD,QAAAA,IAAI,EAAE;AADN,OAVE;AAaNE,MAAAA,IAAI,EAAE;AACFF,QAAAA,IAAI,EAAE;AADJ;AAbA,OAgBFT,UAAU,IAAI,EAhBZ;AAHI,GAAX,CAAP;AAsBH,CAxBM","sourcesContent":["import { Entity, Table } from \"dynamodb-toolbox\";\nimport { Attributes } from \"~/types\";\n\nexport interface CreateQueueJobEntityParams {\n table: Table;\n entityName: string;\n attributes: Attributes;\n}\n\nexport const createQueueJobEntity = (params: CreateQueueJobEntityParams): Entity<any> => {\n const { entityName, attributes, table } = params;\n return new Entity({\n name: entityName,\n table,\n attributes: {\n PK: {\n partitionKey: true\n },\n SK: {\n sortKey: true\n },\n TYPE: {\n type: \"string\"\n },\n id: {\n type: \"string\"\n },\n args: {\n type: \"map\"\n },\n ...(attributes || {})\n }\n });\n};\n"]}
1
+ {"version":3,"names":["createQueueJobEntity","params","entityName","attributes","table","Entity","name","PK","partitionKey","SK","sortKey","TYPE","type","id","args"],"sources":["queueJob.ts"],"sourcesContent":["import { Entity, Table } from \"dynamodb-toolbox\";\nimport { Attributes } from \"~/types\";\n\nexport interface CreateQueueJobEntityParams {\n table: Table;\n entityName: string;\n attributes: Attributes;\n}\n\nexport const createQueueJobEntity = (params: CreateQueueJobEntityParams): Entity<any> => {\n const { entityName, attributes, table } = params;\n return new Entity({\n name: entityName,\n table,\n attributes: {\n PK: {\n partitionKey: true\n },\n SK: {\n sortKey: true\n },\n TYPE: {\n type: \"string\"\n },\n id: {\n type: \"string\"\n },\n args: {\n type: \"map\"\n },\n ...(attributes || {})\n }\n });\n};\n"],"mappings":";;;;;;;;;;;AAAA;;;;;;AASO,MAAMA,oBAAoB,GAAIC,MAAD,IAAqD;EACrF,MAAM;IAAEC,UAAF;IAAcC,UAAd;IAA0BC;EAA1B,IAAoCH,MAA1C;EACA,OAAO,IAAII,uBAAJ,CAAW;IACdC,IAAI,EAAEJ,UADQ;IAEdE,KAFc;IAGdD,UAAU;MACNI,EAAE,EAAE;QACAC,YAAY,EAAE;MADd,CADE;MAINC,EAAE,EAAE;QACAC,OAAO,EAAE;MADT,CAJE;MAONC,IAAI,EAAE;QACFC,IAAI,EAAE;MADJ,CAPA;MAUNC,EAAE,EAAE;QACAD,IAAI,EAAE;MADN,CAVE;MAaNE,IAAI,EAAE;QACFF,IAAI,EAAE;MADJ;IAbA,GAgBFT,UAAU,IAAI,EAhBZ;EAHI,CAAX,CAAP;AAsBH,CAxBM"}
@@ -34,20 +34,14 @@ const createRenderEntity = params => {
34
34
  TYPE: {
35
35
  type: "string"
36
36
  },
37
- namespace: {
37
+ GSI1_PK: {
38
38
  type: "string"
39
39
  },
40
- url: {
40
+ GSI1_SK: {
41
41
  type: "string"
42
42
  },
43
- args: {
43
+ data: {
44
44
  type: "map"
45
- },
46
- configuration: {
47
- type: "map"
48
- },
49
- files: {
50
- type: "list"
51
45
  }
52
46
  }, attributes || {})
53
47
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["render.ts"],"names":["createRenderEntity","params","entityName","attributes","table","Entity","name","PK","partitionKey","SK","sortKey","TYPE","type","namespace","url","args","configuration","files"],"mappings":";;;;;;;;;;;AAAA;;;;;;AASO,MAAMA,kBAAkB,GAAIC,MAAD,IAAmD;AACjF,QAAM;AAAEC,IAAAA,UAAF;AAAcC,IAAAA,UAAd;AAA0BC,IAAAA;AAA1B,MAAoCH,MAA1C;AACA,SAAO,IAAII,uBAAJ,CAAW;AACdC,IAAAA,IAAI,EAAEJ,UADQ;AAEdE,IAAAA,KAFc;AAGdD,IAAAA,UAAU;AACNI,MAAAA,EAAE,EAAE;AACAC,QAAAA,YAAY,EAAE;AADd,OADE;AAINC,MAAAA,EAAE,EAAE;AACAC,QAAAA,OAAO,EAAE;AADT,OAJE;AAONC,MAAAA,IAAI,EAAE;AACFC,QAAAA,IAAI,EAAE;AADJ,OAPA;AAUNC,MAAAA,SAAS,EAAE;AACPD,QAAAA,IAAI,EAAE;AADC,OAVL;AAaNE,MAAAA,GAAG,EAAE;AACDF,QAAAA,IAAI,EAAE;AADL,OAbC;AAgBNG,MAAAA,IAAI,EAAE;AACFH,QAAAA,IAAI,EAAE;AADJ,OAhBA;AAmBNI,MAAAA,aAAa,EAAE;AACXJ,QAAAA,IAAI,EAAE;AADK,OAnBT;AAsBNK,MAAAA,KAAK,EAAE;AACHL,QAAAA,IAAI,EAAE;AADH;AAtBD,OAyBFT,UAAU,IAAI,EAzBZ;AAHI,GAAX,CAAP;AA+BH,CAjCM","sourcesContent":["import { Entity, Table } from \"dynamodb-toolbox\";\nimport { Attributes } from \"~/types\";\n\nexport interface CreateRenderEntityParams {\n table: Table;\n entityName: string;\n attributes: Attributes;\n}\n\nexport const createRenderEntity = (params: CreateRenderEntityParams): Entity<any> => {\n const { entityName, attributes, table } = params;\n return new Entity({\n name: entityName,\n table,\n attributes: {\n PK: {\n partitionKey: true\n },\n SK: {\n sortKey: true\n },\n TYPE: {\n type: \"string\"\n },\n namespace: {\n type: \"string\"\n },\n url: {\n type: \"string\"\n },\n args: {\n type: \"map\"\n },\n configuration: {\n type: \"map\"\n },\n files: {\n type: \"list\"\n },\n ...(attributes || {})\n }\n });\n};\n"]}
1
+ {"version":3,"names":["createRenderEntity","params","entityName","attributes","table","Entity","name","PK","partitionKey","SK","sortKey","TYPE","type","GSI1_PK","GSI1_SK","data"],"sources":["render.ts"],"sourcesContent":["import { Entity, Table } from \"dynamodb-toolbox\";\nimport { Attributes } from \"~/types\";\n\nexport interface CreateRenderEntityParams {\n table: Table;\n entityName: string;\n attributes: Attributes;\n}\n\nexport const createRenderEntity = (params: CreateRenderEntityParams): Entity<any> => {\n const { entityName, attributes, table } = params;\n return new Entity({\n name: entityName,\n table,\n attributes: {\n PK: {\n partitionKey: true\n },\n SK: {\n sortKey: true\n },\n TYPE: {\n type: \"string\"\n },\n GSI1_PK: {\n type: \"string\"\n },\n GSI1_SK: {\n type: \"string\"\n },\n data: {\n type: \"map\"\n },\n ...(attributes || {})\n }\n });\n};\n"],"mappings":";;;;;;;;;;;AAAA;;;;;;AASO,MAAMA,kBAAkB,GAAIC,MAAD,IAAmD;EACjF,MAAM;IAAEC,UAAF;IAAcC,UAAd;IAA0BC;EAA1B,IAAoCH,MAA1C;EACA,OAAO,IAAII,uBAAJ,CAAW;IACdC,IAAI,EAAEJ,UADQ;IAEdE,KAFc;IAGdD,UAAU;MACNI,EAAE,EAAE;QACAC,YAAY,EAAE;MADd,CADE;MAINC,EAAE,EAAE;QACAC,OAAO,EAAE;MADT,CAJE;MAONC,IAAI,EAAE;QACFC,IAAI,EAAE;MADJ,CAPA;MAUNC,OAAO,EAAE;QACLD,IAAI,EAAE;MADD,CAVH;MAaNE,OAAO,EAAE;QACLF,IAAI,EAAE;MADD,CAbH;MAgBNG,IAAI,EAAE;QACFH,IAAI,EAAE;MADJ;IAhBA,GAmBFT,UAAU,IAAI,EAnBZ;EAHI,CAAX,CAAP;AAyBH,CA3BM"}
@@ -0,0 +1,8 @@
1
+ import { Entity, Table } from "dynamodb-toolbox";
2
+ import { Attributes } from "../types";
3
+ export interface CreateRenderEntityParams {
4
+ table: Table;
5
+ entityName: string;
6
+ attributes: Attributes;
7
+ }
8
+ export declare const createRenderEntity: (params: CreateRenderEntityParams) => Entity<any>;
@@ -0,0 +1,56 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.createRenderEntity = void 0;
9
+
10
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
+
12
+ var _dynamodbToolbox = require("dynamodb-toolbox");
13
+
14
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
15
+
16
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
17
+
18
+ const createRenderEntity = params => {
19
+ const {
20
+ entityName,
21
+ attributes,
22
+ table
23
+ } = params;
24
+ return new _dynamodbToolbox.Entity({
25
+ name: entityName,
26
+ table,
27
+ attributes: _objectSpread({
28
+ PK: {
29
+ partitionKey: true
30
+ },
31
+ SK: {
32
+ sortKey: true
33
+ },
34
+ TYPE: {
35
+ type: "string"
36
+ },
37
+ namespace: {
38
+ type: "string"
39
+ },
40
+ url: {
41
+ type: "string"
42
+ },
43
+ args: {
44
+ type: "map"
45
+ },
46
+ configuration: {
47
+ type: "map"
48
+ },
49
+ files: {
50
+ type: "list"
51
+ }
52
+ }, attributes || {})
53
+ });
54
+ };
55
+
56
+ exports.createRenderEntity = createRenderEntity;
@@ -0,0 +1 @@
1
+ {"version":3,"names":["createRenderEntity","params","entityName","attributes","table","Entity","name","PK","partitionKey","SK","sortKey","TYPE","type","namespace","url","args","configuration","files"],"sources":["renderLegacy.ts"],"sourcesContent":["import { Entity, Table } from \"dynamodb-toolbox\";\nimport { Attributes } from \"~/types\";\n\nexport interface CreateRenderEntityParams {\n table: Table;\n entityName: string;\n attributes: Attributes;\n}\n\nexport const createRenderEntity = (params: CreateRenderEntityParams): Entity<any> => {\n const { entityName, attributes, table } = params;\n return new Entity({\n name: entityName,\n table,\n attributes: {\n PK: {\n partitionKey: true\n },\n SK: {\n sortKey: true\n },\n TYPE: {\n type: \"string\"\n },\n namespace: {\n type: \"string\"\n },\n url: {\n type: \"string\"\n },\n args: {\n type: \"map\"\n },\n configuration: {\n type: \"map\"\n },\n files: {\n type: \"list\"\n },\n ...(attributes || {})\n }\n });\n};\n"],"mappings":";;;;;;;;;;;AAAA;;;;;;AASO,MAAMA,kBAAkB,GAAIC,MAAD,IAAmD;EACjF,MAAM;IAAEC,UAAF;IAAcC,UAAd;IAA0BC;EAA1B,IAAoCH,MAA1C;EACA,OAAO,IAAII,uBAAJ,CAAW;IACdC,IAAI,EAAEJ,UADQ;IAEdE,KAFc;IAGdD,UAAU;MACNI,EAAE,EAAE;QACAC,YAAY,EAAE;MADd,CADE;MAINC,EAAE,EAAE;QACAC,OAAO,EAAE;MADT,CAJE;MAONC,IAAI,EAAE;QACFC,IAAI,EAAE;MADJ,CAPA;MAUNC,SAAS,EAAE;QACPD,IAAI,EAAE;MADC,CAVL;MAaNE,GAAG,EAAE;QACDF,IAAI,EAAE;MADL,CAbC;MAgBNG,IAAI,EAAE;QACFH,IAAI,EAAE;MADJ,CAhBA;MAmBNI,aAAa,EAAE;QACXJ,IAAI,EAAE;MADK,CAnBT;MAsBNK,KAAK,EAAE;QACHL,IAAI,EAAE;MADH;IAtBD,GAyBFT,UAAU,IAAI,EAzBZ;EAHI,CAAX,CAAP;AA+BH,CAjCM"}
@@ -0,0 +1,8 @@
1
+ import { Entity, Table } from "dynamodb-toolbox";
2
+ import { Attributes } from "../types";
3
+ export interface CreateSettingsEntityParams {
4
+ table: Table;
5
+ entityName: string;
6
+ attributes: Attributes;
7
+ }
8
+ export declare const createSettingsEntity: (params: CreateSettingsEntityParams) => Entity<any>;
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.createSettingsEntity = void 0;
9
+
10
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
+
12
+ var _dynamodbToolbox = require("dynamodb-toolbox");
13
+
14
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
15
+
16
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
17
+
18
+ const createSettingsEntity = params => {
19
+ const {
20
+ entityName,
21
+ attributes,
22
+ table
23
+ } = params;
24
+ return new _dynamodbToolbox.Entity({
25
+ name: entityName,
26
+ table,
27
+ attributes: _objectSpread({
28
+ PK: {
29
+ partitionKey: true
30
+ },
31
+ SK: {
32
+ sortKey: true
33
+ },
34
+ TYPE: {
35
+ type: "string"
36
+ },
37
+ data: {
38
+ type: "map"
39
+ }
40
+ }, attributes || {})
41
+ });
42
+ };
43
+
44
+ exports.createSettingsEntity = createSettingsEntity;
@@ -0,0 +1 @@
1
+ {"version":3,"names":["createSettingsEntity","params","entityName","attributes","table","Entity","name","PK","partitionKey","SK","sortKey","TYPE","type","data"],"sources":["settings.ts"],"sourcesContent":["import { Entity, Table } from \"dynamodb-toolbox\";\nimport { Attributes } from \"~/types\";\n\nexport interface CreateSettingsEntityParams {\n table: Table;\n entityName: string;\n attributes: Attributes;\n}\n\nexport const createSettingsEntity = (params: CreateSettingsEntityParams): Entity<any> => {\n const { entityName, attributes, table } = params;\n return new Entity({\n name: entityName,\n table,\n attributes: {\n PK: {\n partitionKey: true\n },\n SK: {\n sortKey: true\n },\n TYPE: {\n type: \"string\"\n },\n data: {\n type: \"map\"\n },\n ...(attributes || {})\n }\n });\n};\n"],"mappings":";;;;;;;;;;;AAAA;;;;;;AASO,MAAMA,oBAAoB,GAAIC,MAAD,IAAqD;EACrF,MAAM;IAAEC,UAAF;IAAcC,UAAd;IAA0BC;EAA1B,IAAoCH,MAA1C;EACA,OAAO,IAAII,uBAAJ,CAAW;IACdC,IAAI,EAAEJ,UADQ;IAEdE,KAFc;IAGdD,UAAU;MACNI,EAAE,EAAE;QACAC,YAAY,EAAE;MADd,CADE;MAINC,EAAE,EAAE;QACAC,OAAO,EAAE;MADT,CAJE;MAONC,IAAI,EAAE;QACFC,IAAI,EAAE;MADJ,CAPA;MAUNC,IAAI,EAAE;QACFD,IAAI,EAAE;MADJ;IAVA,GAaFT,UAAU,IAAI,EAbZ;EAHI,CAAX,CAAP;AAmBH,CArBM"}
@@ -16,7 +16,13 @@ const createTable = params => {
16
16
  name: process.env.DB_TABLE_PRERENDERING_SERVICE || process.env.DB_TABLE,
17
17
  partitionKey: "PK",
18
18
  sortKey: "SK",
19
- DocumentClient: documentClient
19
+ DocumentClient: documentClient,
20
+ indexes: {
21
+ GSI1: {
22
+ partitionKey: "GSI1_PK",
23
+ sortKey: "GSI1_SK"
24
+ }
25
+ }
20
26
  };
21
27
  const config = typeof table === "function" ? table(tableConfig) : tableConfig;
22
28
  return new _dynamodbToolbox.Table(config);
@@ -1 +1 @@
1
- {"version":3,"sources":["table.ts"],"names":["createTable","params","table","documentClient","tableConfig","name","process","env","DB_TABLE_PRERENDERING_SERVICE","DB_TABLE","partitionKey","sortKey","DocumentClient","config","Table"],"mappings":";;;;;;;AACA;;AASO,MAAMA,WAAW,GAAIC,MAAD,IAAsC;AAC7D,QAAM;AAAEC,IAAAA,KAAF;AAASC,IAAAA;AAAT,MAA4BF,MAAlC;AAEA,QAAMG,WAA6B,GAAG;AAClCC,IAAAA,IAAI,EAAGC,OAAO,CAACC,GAAR,CAAYC,6BAAZ,IAA6CF,OAAO,CAACC,GAAR,CAAYE,QAD9B;AAElCC,IAAAA,YAAY,EAAE,IAFoB;AAGlCC,IAAAA,OAAO,EAAE,IAHyB;AAIlCC,IAAAA,cAAc,EAAET;AAJkB,GAAtC;AAOA,QAAMU,MAAM,GAAG,OAAOX,KAAP,KAAiB,UAAjB,GAA8BA,KAAK,CAACE,WAAD,CAAnC,GAAmDA,WAAlE;AAEA,SAAO,IAAIU,sBAAJ,CAAUD,MAAV,CAAP;AACH,CAbM","sourcesContent":["import { DocumentClient } from \"aws-sdk/clients/dynamodb\";\nimport { Table } from \"dynamodb-toolbox\";\nimport { TableModifier } from \"~/types\";\nimport { TableConstructor } from \"dynamodb-toolbox/dist/classes/Table\";\n\ninterface CreateTableParams {\n table?: TableModifier;\n documentClient: DocumentClient;\n}\n\nexport const createTable = (params: CreateTableParams): Table => {\n const { table, documentClient } = params;\n\n const tableConfig: TableConstructor = {\n name: (process.env.DB_TABLE_PRERENDERING_SERVICE || process.env.DB_TABLE) as string,\n partitionKey: \"PK\",\n sortKey: \"SK\",\n DocumentClient: documentClient\n };\n\n const config = typeof table === \"function\" ? table(tableConfig) : tableConfig;\n\n return new Table(config);\n};\n"]}
1
+ {"version":3,"names":["createTable","params","table","documentClient","tableConfig","name","process","env","DB_TABLE_PRERENDERING_SERVICE","DB_TABLE","partitionKey","sortKey","DocumentClient","indexes","GSI1","config","Table"],"sources":["table.ts"],"sourcesContent":["import { DocumentClient } from \"aws-sdk/clients/dynamodb\";\nimport { Table } from \"dynamodb-toolbox\";\nimport { TableModifier } from \"~/types\";\nimport { TableConstructor } from \"dynamodb-toolbox/dist/classes/Table\";\n\ninterface CreateTableParams {\n table?: TableModifier;\n documentClient: DocumentClient;\n}\n\nexport const createTable = (params: CreateTableParams): Table => {\n const { table, documentClient } = params;\n\n const tableConfig: TableConstructor = {\n name: (process.env.DB_TABLE_PRERENDERING_SERVICE || process.env.DB_TABLE) as string,\n partitionKey: \"PK\",\n sortKey: \"SK\",\n DocumentClient: documentClient,\n indexes: {\n GSI1: {\n partitionKey: \"GSI1_PK\",\n sortKey: \"GSI1_SK\"\n }\n }\n };\n\n const config = typeof table === \"function\" ? table(tableConfig) : tableConfig;\n\n return new Table(config);\n};\n"],"mappings":";;;;;;;AACA;;AASO,MAAMA,WAAW,GAAIC,MAAD,IAAsC;EAC7D,MAAM;IAAEC,KAAF;IAASC;EAAT,IAA4BF,MAAlC;EAEA,MAAMG,WAA6B,GAAG;IAClCC,IAAI,EAAGC,OAAO,CAACC,GAAR,CAAYC,6BAAZ,IAA6CF,OAAO,CAACC,GAAR,CAAYE,QAD9B;IAElCC,YAAY,EAAE,IAFoB;IAGlCC,OAAO,EAAE,IAHyB;IAIlCC,cAAc,EAAET,cAJkB;IAKlCU,OAAO,EAAE;MACLC,IAAI,EAAE;QACFJ,YAAY,EAAE,SADZ;QAEFC,OAAO,EAAE;MAFP;IADD;EALyB,CAAtC;EAaA,MAAMI,MAAM,GAAG,OAAOb,KAAP,KAAiB,UAAjB,GAA8BA,KAAK,CAACE,WAAD,CAAnC,GAAmDA,WAAlE;EAEA,OAAO,IAAIY,sBAAJ,CAAUD,MAAV,CAAP;AACH,CAnBM"}
@@ -0,0 +1,9 @@
1
+ import { Entity, Table } from "dynamodb-toolbox";
2
+ import { Attributes } from "../types";
3
+ interface CreateTagPathLinkEntityParams {
4
+ table: Table;
5
+ entityName: string;
6
+ attributes: Attributes;
7
+ }
8
+ export declare const createTagPathLinkEntity: (params: CreateTagPathLinkEntityParams) => Entity<{}>;
9
+ export {};
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.createTagPathLinkEntity = void 0;
9
+
10
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
+
12
+ var _dynamodbToolbox = require("dynamodb-toolbox");
13
+
14
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
15
+
16
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
17
+
18
+ const createTagPathLinkEntity = params => {
19
+ const {
20
+ entityName,
21
+ attributes,
22
+ table
23
+ } = params;
24
+ return new _dynamodbToolbox.Entity({
25
+ name: entityName,
26
+ table,
27
+ attributes: _objectSpread({
28
+ PK: {
29
+ partitionKey: true
30
+ },
31
+ SK: {
32
+ sortKey: true
33
+ },
34
+ TYPE: {
35
+ type: "string"
36
+ },
37
+ GSI1_PK: {
38
+ type: "string"
39
+ },
40
+ GSI1_SK: {
41
+ type: "string"
42
+ },
43
+ data: {
44
+ type: "map"
45
+ }
46
+ }, attributes || {})
47
+ });
48
+ };
49
+
50
+ exports.createTagPathLinkEntity = createTagPathLinkEntity;
@@ -0,0 +1 @@
1
+ {"version":3,"names":["createTagPathLinkEntity","params","entityName","attributes","table","Entity","name","PK","partitionKey","SK","sortKey","TYPE","type","GSI1_PK","GSI1_SK","data"],"sources":["tagPathLink.ts"],"sourcesContent":["import { Entity, Table } from \"dynamodb-toolbox\";\nimport { Attributes } from \"~/types\";\n\ninterface CreateTagPathLinkEntityParams {\n table: Table;\n entityName: string;\n attributes: Attributes;\n}\n\nexport const createTagPathLinkEntity = (params: CreateTagPathLinkEntityParams) => {\n const { entityName, attributes, table } = params;\n return new Entity({\n name: entityName,\n table,\n attributes: {\n PK: {\n partitionKey: true\n },\n SK: {\n sortKey: true\n },\n TYPE: {\n type: \"string\"\n },\n GSI1_PK: {\n type: \"string\"\n },\n GSI1_SK: {\n type: \"string\"\n },\n data: {\n type: \"map\"\n },\n ...(attributes || {})\n }\n });\n};\n"],"mappings":";;;;;;;;;;;AAAA;;;;;;AASO,MAAMA,uBAAuB,GAAIC,MAAD,IAA2C;EAC9E,MAAM;IAAEC,UAAF;IAAcC,UAAd;IAA0BC;EAA1B,IAAoCH,MAA1C;EACA,OAAO,IAAII,uBAAJ,CAAW;IACdC,IAAI,EAAEJ,UADQ;IAEdE,KAFc;IAGdD,UAAU;MACNI,EAAE,EAAE;QACAC,YAAY,EAAE;MADd,CADE;MAINC,EAAE,EAAE;QACAC,OAAO,EAAE;MADT,CAJE;MAONC,IAAI,EAAE;QACFC,IAAI,EAAE;MADJ,CAPA;MAUNC,OAAO,EAAE;QACLD,IAAI,EAAE;MADD,CAVH;MAaNE,OAAO,EAAE;QACLF,IAAI,EAAE;MADD,CAbH;MAgBNG,IAAI,EAAE;QACFH,IAAI,EAAE;MADJ;IAhBA,GAmBFT,UAAU,IAAI,EAnBZ;EAHI,CAAX,CAAP;AAyBH,CA3BM"}
@@ -0,0 +1 @@
1
+ {"version":3,"names":["createTagUrlLinkEntity","params","entityName","attributes","table","Entity","name","PK","partitionKey","SK","sortKey","TYPE","type","namespace","url","value","key"],"sources":["tagPathLinkLegacy.ts"],"sourcesContent":["import { Entity, Table } from \"dynamodb-toolbox\";\nimport { Attributes } from \"~/types\";\n\ninterface CreateTagUrlLinkEntityParams {\n table: Table;\n entityName: string;\n attributes: Attributes;\n}\n\nexport const createTagUrlLinkEntity = (params: CreateTagUrlLinkEntityParams) => {\n const { entityName, attributes, table } = params;\n return new Entity({\n name: entityName,\n table,\n attributes: {\n PK: {\n partitionKey: true\n },\n SK: {\n sortKey: true\n },\n TYPE: {\n type: \"string\"\n },\n namespace: {\n type: \"string\"\n },\n url: {\n type: \"string\"\n },\n value: {\n type: \"string\"\n },\n key: {\n type: \"string\"\n },\n ...(attributes || {})\n }\n });\n};\n"],"mappings":";;;;;;;;;;;AAAA;;;;;;AASO,MAAMA,sBAAsB,GAAIC,MAAD,IAA0C;EAC5E,MAAM;IAAEC,UAAF;IAAcC,UAAd;IAA0BC;EAA1B,IAAoCH,MAA1C;EACA,OAAO,IAAII,uBAAJ,CAAW;IACdC,IAAI,EAAEJ,UADQ;IAEdE,KAFc;IAGdD,UAAU;MACNI,EAAE,EAAE;QACAC,YAAY,EAAE;MADd,CADE;MAINC,EAAE,EAAE;QACAC,OAAO,EAAE;MADT,CAJE;MAONC,IAAI,EAAE;QACFC,IAAI,EAAE;MADJ,CAPA;MAUNC,SAAS,EAAE;QACPD,IAAI,EAAE;MADC,CAVL;MAaNE,GAAG,EAAE;QACDF,IAAI,EAAE;MADL,CAbC;MAgBNG,KAAK,EAAE;QACHH,IAAI,EAAE;MADH,CAhBD;MAmBNI,GAAG,EAAE;QACDJ,IAAI,EAAE;MADL;IAnBC,GAsBFT,UAAU,IAAI,EAtBZ;EAHI,CAAX,CAAP;AA4BH,CA9BM"}
package/index.js CHANGED
@@ -17,13 +17,17 @@ var _table = require("./definitions/table");
17
17
 
18
18
  var _render = require("./definitions/render");
19
19
 
20
+ var _settings = require("./definitions/settings");
21
+
20
22
  var _queueJob = require("./definitions/queueJob");
21
23
 
22
24
  var _render2 = require("./operations/render");
23
25
 
26
+ var _settings2 = require("./operations/settings");
27
+
24
28
  var _queueJob2 = require("./operations/queueJob");
25
29
 
26
- var _tagUrlLink = require("./definitions/tagUrlLink");
30
+ var _tagPathLink = require("./definitions/tagPathLink");
27
31
 
28
32
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
29
33
 
@@ -64,25 +68,32 @@ const createPrerenderingServiceStorageOperations = params => {
64
68
  table: tableInstance,
65
69
  attributes: attributes ? attributes[_types.ENTITIES.RENDER] : {}
66
70
  }),
71
+ settings: (0, _settings.createSettingsEntity)({
72
+ entityName: _types.ENTITIES.SETTINGS,
73
+ table: tableInstance,
74
+ attributes: attributes ? attributes[_types.ENTITIES.SETTINGS] : {}
75
+ }),
67
76
  queueJob: (0, _queueJob.createQueueJobEntity)({
68
77
  entityName: _types.ENTITIES.QUEUE_JOB,
69
78
  table: tableInstance,
70
79
  attributes: attributes ? attributes[_types.ENTITIES.QUEUE_JOB] : {}
71
80
  }),
72
- tagUrlLink: (0, _tagUrlLink.createTagUrlLinkEntity)({
73
- entityName: _types.ENTITIES.TAG_URL_LINK,
81
+ tagPathLink: (0, _tagPathLink.createTagPathLinkEntity)({
82
+ entityName: _types.ENTITIES.TAG_PATH_LINK,
74
83
  table: tableInstance,
75
- attributes: attributes ? attributes[_types.ENTITIES.TAG_URL_LINK] : {}
84
+ attributes: attributes ? attributes[_types.ENTITIES.TAG_PATH_LINK] : {}
76
85
  })
77
86
  };
78
- return _objectSpread(_objectSpread({
87
+ return _objectSpread(_objectSpread(_objectSpread({
79
88
  getTable: () => tableInstance,
80
89
  getEntities: () => entities
81
90
  }, (0, _render2.createRenderStorageOperations)({
82
91
  entity: entities.render,
83
- tagUrlLinkEntity: entities.tagUrlLink
92
+ tagPathLinkEntity: entities.tagPathLink
84
93
  })), (0, _queueJob2.createQueueJobStorageOperations)({
85
94
  entity: entities.queueJob
95
+ })), (0, _settings2.createSettingsStorageOperations)({
96
+ entity: entities.settings
86
97
  }));
87
98
  };
88
99
 
package/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["index.ts"],"names":["reservedFields","isReserved","name","includes","WebinyError","createPrerenderingServiceStorageOperations","params","attributes","table","documentClient","Object","values","forEach","attrs","keys","tableInstance","entities","render","entityName","ENTITIES","RENDER","queueJob","QUEUE_JOB","tagUrlLink","TAG_URL_LINK","getTable","getEntities","entity","tagUrlLinkEntity"],"mappings":";;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;;;AAEA,MAAMA,cAAc,GAAG,CAAC,IAAD,EAAO,IAAP,EAAa,OAAb,EAAsB,MAAtB,EAA8B,MAA9B,EAAsC,QAAtC,EAAgD,SAAhD,EAA2D,SAA3D,CAAvB;;AAEA,MAAMC,UAAU,GAAIC,IAAD,IAAwB;AACvC,MAAIF,cAAc,CAACG,QAAf,CAAwBD,IAAxB,MAAkC,KAAtC,EAA6C;AACzC;AACH;;AACD,QAAM,IAAIE,cAAJ,CAAiB,mBAAkBF,IAAK,mBAAxC,EAA4D,uBAA5D,EAAqF;AACvFA,IAAAA;AADuF,GAArF,CAAN;AAGH,CAPD;;AASO,MAAMG,0CAAsE,GAC/EC,MADkF,IAEjF;AACD,QAAM;AAAEC,IAAAA,UAAF;AAAcC,IAAAA,KAAd;AAAqBC,IAAAA;AAArB,MAAwCH,MAA9C;;AAEA,MAAIC,UAAJ,EAAgB;AACZG,IAAAA,MAAM,CAACC,MAAP,CAAcJ,UAAd,EAA0BK,OAA1B,CAAkCC,KAAK,IAAI;AACvCH,MAAAA,MAAM,CAACI,IAAP,CAAYD,KAAZ,EAAmBD,OAAnB,CAA2BX,UAA3B;AACH,KAFD;AAGH;;AAED,QAAMc,aAAa,GAAG,wBAAY;AAAEP,IAAAA,KAAF;AAASC,IAAAA;AAAT,GAAZ,CAAtB;AAEA,QAAMO,QAAQ,GAAG;AACbC,IAAAA,MAAM,EAAE,gCAAmB;AACvBC,MAAAA,UAAU,EAAEC,gBAASC,MADE;AAEvBZ,MAAAA,KAAK,EAAEO,aAFgB;AAGvBR,MAAAA,UAAU,EAAEA,UAAU,GAAGA,UAAU,CAACY,gBAASC,MAAV,CAAb,GAAiC;AAHhC,KAAnB,CADK;AAMbC,IAAAA,QAAQ,EAAE,oCAAqB;AAC3BH,MAAAA,UAAU,EAAEC,gBAASG,SADM;AAE3Bd,MAAAA,KAAK,EAAEO,aAFoB;AAG3BR,MAAAA,UAAU,EAAEA,UAAU,GAAGA,UAAU,CAACY,gBAASG,SAAV,CAAb,GAAoC;AAH/B,KAArB,CANG;AAWbC,IAAAA,UAAU,EAAE,wCAAuB;AAC/BL,MAAAA,UAAU,EAAEC,gBAASK,YADU;AAE/BhB,MAAAA,KAAK,EAAEO,aAFwB;AAG/BR,MAAAA,UAAU,EAAEA,UAAU,GAAGA,UAAU,CAACY,gBAASK,YAAV,CAAb,GAAuC;AAH9B,KAAvB;AAXC,GAAjB;AAkBA;AACIC,IAAAA,QAAQ,EAAE,MAAMV,aADpB;AAEIW,IAAAA,WAAW,EAAE,MAAMV;AAFvB,KAGO,4CAA8B;AAC7BW,IAAAA,MAAM,EAAEX,QAAQ,CAACC,MADY;AAE7BW,IAAAA,gBAAgB,EAAEZ,QAAQ,CAACO;AAFE,GAA9B,CAHP,GAOO,gDAAgC;AAC/BI,IAAAA,MAAM,EAAEX,QAAQ,CAACK;AADc,GAAhC,CAPP;AAWH,CA1CM","sourcesContent":["import WebinyError from \"@webiny/error\";\nimport { ENTITIES, PrerenderingServiceFactory, PrerenderingServiceFactoryParams } from \"~/types\";\nimport { createTable } from \"~/definitions/table\";\nimport { createRenderEntity } from \"~/definitions/render\";\nimport { createQueueJobEntity } from \"~/definitions/queueJob\";\nimport { createRenderStorageOperations } from \"~/operations/render\";\nimport { createQueueJobStorageOperations } from \"~/operations/queueJob\";\nimport { createTagUrlLinkEntity } from \"~/definitions/tagUrlLink\";\n\nconst reservedFields = [\"PK\", \"SK\", \"index\", \"data\", \"TYPE\", \"__type\", \"GSI1_PK\", \"GSI1_SK\"];\n\nconst isReserved = (name: string): void => {\n if (reservedFields.includes(name) === false) {\n return;\n }\n throw new WebinyError(`Attribute name \"${name}\" is not allowed.`, \"ATTRIBUTE_NOT_ALLOWED\", {\n name\n });\n};\n\nexport const createPrerenderingServiceStorageOperations: PrerenderingServiceFactory = (\n params: PrerenderingServiceFactoryParams\n) => {\n const { attributes, table, documentClient } = params;\n\n if (attributes) {\n Object.values(attributes).forEach(attrs => {\n Object.keys(attrs).forEach(isReserved);\n });\n }\n\n const tableInstance = createTable({ table, documentClient });\n\n const entities = {\n render: createRenderEntity({\n entityName: ENTITIES.RENDER,\n table: tableInstance,\n attributes: attributes ? attributes[ENTITIES.RENDER] : {}\n }),\n queueJob: createQueueJobEntity({\n entityName: ENTITIES.QUEUE_JOB,\n table: tableInstance,\n attributes: attributes ? attributes[ENTITIES.QUEUE_JOB] : {}\n }),\n tagUrlLink: createTagUrlLinkEntity({\n entityName: ENTITIES.TAG_URL_LINK,\n table: tableInstance,\n attributes: attributes ? attributes[ENTITIES.TAG_URL_LINK] : {}\n })\n };\n\n return {\n getTable: () => tableInstance,\n getEntities: () => entities,\n ...createRenderStorageOperations({\n entity: entities.render,\n tagUrlLinkEntity: entities.tagUrlLink\n }),\n ...createQueueJobStorageOperations({\n entity: entities.queueJob\n })\n };\n};\n"]}
1
+ {"version":3,"names":["reservedFields","isReserved","name","includes","WebinyError","createPrerenderingServiceStorageOperations","params","attributes","table","documentClient","Object","values","forEach","attrs","keys","tableInstance","createTable","entities","render","createRenderEntity","entityName","ENTITIES","RENDER","settings","createSettingsEntity","SETTINGS","queueJob","createQueueJobEntity","QUEUE_JOB","tagPathLink","createTagPathLinkEntity","TAG_PATH_LINK","getTable","getEntities","createRenderStorageOperations","entity","tagPathLinkEntity","createQueueJobStorageOperations","createSettingsStorageOperations"],"sources":["index.ts"],"sourcesContent":["import WebinyError from \"@webiny/error\";\nimport { ENTITIES, PrerenderingServiceFactory, PrerenderingServiceFactoryParams } from \"~/types\";\nimport { createTable } from \"~/definitions/table\";\nimport { createRenderEntity } from \"~/definitions/render\";\nimport { createSettingsEntity } from \"~/definitions/settings\";\nimport { createQueueJobEntity } from \"~/definitions/queueJob\";\nimport { createRenderStorageOperations } from \"~/operations/render\";\nimport { createSettingsStorageOperations } from \"~/operations/settings\";\nimport { createQueueJobStorageOperations } from \"~/operations/queueJob\";\nimport { createTagPathLinkEntity } from \"~/definitions/tagPathLink\";\n\nconst reservedFields = [\"PK\", \"SK\", \"index\", \"data\", \"TYPE\", \"__type\", \"GSI1_PK\", \"GSI1_SK\"];\n\nconst isReserved = (name: string): void => {\n if (reservedFields.includes(name) === false) {\n return;\n }\n throw new WebinyError(`Attribute name \"${name}\" is not allowed.`, \"ATTRIBUTE_NOT_ALLOWED\", {\n name\n });\n};\n\nexport const createPrerenderingServiceStorageOperations: PrerenderingServiceFactory = (\n params: PrerenderingServiceFactoryParams\n) => {\n const { attributes, table, documentClient } = params;\n\n if (attributes) {\n Object.values(attributes).forEach(attrs => {\n Object.keys(attrs).forEach(isReserved);\n });\n }\n\n const tableInstance = createTable({ table, documentClient });\n\n const entities = {\n render: createRenderEntity({\n entityName: ENTITIES.RENDER,\n table: tableInstance,\n attributes: attributes ? attributes[ENTITIES.RENDER] : {}\n }),\n settings: createSettingsEntity({\n entityName: ENTITIES.SETTINGS,\n table: tableInstance,\n attributes: attributes ? attributes[ENTITIES.SETTINGS] : {}\n }),\n queueJob: createQueueJobEntity({\n entityName: ENTITIES.QUEUE_JOB,\n table: tableInstance,\n attributes: attributes ? attributes[ENTITIES.QUEUE_JOB] : {}\n }),\n tagPathLink: createTagPathLinkEntity({\n entityName: ENTITIES.TAG_PATH_LINK,\n table: tableInstance,\n attributes: attributes ? attributes[ENTITIES.TAG_PATH_LINK] : {}\n })\n };\n\n return {\n getTable: () => tableInstance,\n getEntities: () => entities,\n ...createRenderStorageOperations({\n entity: entities.render,\n tagPathLinkEntity: entities.tagPathLink\n }),\n ...createQueueJobStorageOperations({\n entity: entities.queueJob\n }),\n ...createSettingsStorageOperations({\n entity: entities.settings\n })\n };\n};\n"],"mappings":";;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;;;AAEA,MAAMA,cAAc,GAAG,CAAC,IAAD,EAAO,IAAP,EAAa,OAAb,EAAsB,MAAtB,EAA8B,MAA9B,EAAsC,QAAtC,EAAgD,SAAhD,EAA2D,SAA3D,CAAvB;;AAEA,MAAMC,UAAU,GAAIC,IAAD,IAAwB;EACvC,IAAIF,cAAc,CAACG,QAAf,CAAwBD,IAAxB,MAAkC,KAAtC,EAA6C;IACzC;EACH;;EACD,MAAM,IAAIE,cAAJ,CAAiB,mBAAkBF,IAAK,mBAAxC,EAA4D,uBAA5D,EAAqF;IACvFA;EADuF,CAArF,CAAN;AAGH,CAPD;;AASO,MAAMG,0CAAsE,GAC/EC,MADkF,IAEjF;EACD,MAAM;IAAEC,UAAF;IAAcC,KAAd;IAAqBC;EAArB,IAAwCH,MAA9C;;EAEA,IAAIC,UAAJ,EAAgB;IACZG,MAAM,CAACC,MAAP,CAAcJ,UAAd,EAA0BK,OAA1B,CAAkCC,KAAK,IAAI;MACvCH,MAAM,CAACI,IAAP,CAAYD,KAAZ,EAAmBD,OAAnB,CAA2BX,UAA3B;IACH,CAFD;EAGH;;EAED,MAAMc,aAAa,GAAG,IAAAC,kBAAA,EAAY;IAAER,KAAF;IAASC;EAAT,CAAZ,CAAtB;EAEA,MAAMQ,QAAQ,GAAG;IACbC,MAAM,EAAE,IAAAC,0BAAA,EAAmB;MACvBC,UAAU,EAAEC,eAAA,CAASC,MADE;MAEvBd,KAAK,EAAEO,aAFgB;MAGvBR,UAAU,EAAEA,UAAU,GAAGA,UAAU,CAACc,eAAA,CAASC,MAAV,CAAb,GAAiC;IAHhC,CAAnB,CADK;IAMbC,QAAQ,EAAE,IAAAC,8BAAA,EAAqB;MAC3BJ,UAAU,EAAEC,eAAA,CAASI,QADM;MAE3BjB,KAAK,EAAEO,aAFoB;MAG3BR,UAAU,EAAEA,UAAU,GAAGA,UAAU,CAACc,eAAA,CAASI,QAAV,CAAb,GAAmC;IAH9B,CAArB,CANG;IAWbC,QAAQ,EAAE,IAAAC,8BAAA,EAAqB;MAC3BP,UAAU,EAAEC,eAAA,CAASO,SADM;MAE3BpB,KAAK,EAAEO,aAFoB;MAG3BR,UAAU,EAAEA,UAAU,GAAGA,UAAU,CAACc,eAAA,CAASO,SAAV,CAAb,GAAoC;IAH/B,CAArB,CAXG;IAgBbC,WAAW,EAAE,IAAAC,oCAAA,EAAwB;MACjCV,UAAU,EAAEC,eAAA,CAASU,aADY;MAEjCvB,KAAK,EAAEO,aAF0B;MAGjCR,UAAU,EAAEA,UAAU,GAAGA,UAAU,CAACc,eAAA,CAASU,aAAV,CAAb,GAAwC;IAH7B,CAAxB;EAhBA,CAAjB;EAuBA;IACIC,QAAQ,EAAE,MAAMjB,aADpB;IAEIkB,WAAW,EAAE,MAAMhB;EAFvB,GAGO,IAAAiB,sCAAA,EAA8B;IAC7BC,MAAM,EAAElB,QAAQ,CAACC,MADY;IAE7BkB,iBAAiB,EAAEnB,QAAQ,CAACY;EAFC,CAA9B,CAHP,GAOO,IAAAQ,0CAAA,EAAgC;IAC/BF,MAAM,EAAElB,QAAQ,CAACS;EADc,CAAhC,CAPP,GAUO,IAAAY,0CAAA,EAAgC;IAC/BH,MAAM,EAAElB,QAAQ,CAACM;EADc,CAAhC,CAVP;AAcH,CAlDM"}
File without changes
@@ -0,0 +1 @@
1
+ {"version":3,"names":["createQueueJobStorageOperations","params","entity","createQueueJobPartitionKey","createQueueJobSortKey","id","createQueueJobType","createQueueJob","queueJob","keys","PK","SK","put","TYPE","ex","WebinyError","message","code","listQueueJobs","queryAllParams","partitionKey","options","gte","results","queryAll","cleanupItems","deleteQueueJobs","queueJobs","items","map","job","deleteBatch","batchWriteAll","table"],"sources":["queueJob.ts"],"sourcesContent":["import WebinyError from \"@webiny/error\";\nimport {\n PrerenderingServiceQueueJobStorageOperations,\n PrerenderingServiceStorageOperationsCreateQueueJobParams,\n PrerenderingServiceStorageOperationsDeleteQueueJobsParams,\n QueueJob\n} from \"@webiny/api-prerendering-service/types\";\nimport { Entity } from \"dynamodb-toolbox\";\nimport { batchWriteAll } from \"@webiny/db-dynamodb/utils/batchWrite\";\nimport { queryAll, QueryAllParams } from \"@webiny/db-dynamodb/utils/query\";\nimport { cleanupItems } from \"@webiny/db-dynamodb/utils/cleanup\";\n\nexport interface CreateQueueJobStorageOperationsParams {\n entity: Entity<any>;\n}\n\nexport const createQueueJobStorageOperations = (\n params: CreateQueueJobStorageOperationsParams\n): PrerenderingServiceQueueJobStorageOperations => {\n const { entity } = params;\n\n const createQueueJobPartitionKey = (): string => {\n return \"PS#Q#JOB\";\n };\n const createQueueJobSortKey = (id: string): string => {\n return id;\n };\n\n const createQueueJobType = () => {\n return \"ps.queue.job\";\n };\n\n const createQueueJob = async (\n params: PrerenderingServiceStorageOperationsCreateQueueJobParams\n ): Promise<QueueJob> => {\n const { queueJob } = params;\n const keys = {\n PK: createQueueJobPartitionKey(),\n SK: createQueueJobSortKey(queueJob.id)\n };\n\n try {\n await entity.put({\n ...queueJob,\n ...keys,\n TYPE: createQueueJobType()\n });\n return queueJob;\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not create render record.\",\n ex.code || \"CREATE_RENDER_ERROR\",\n {\n keys,\n queueJob\n }\n );\n }\n };\n\n const listQueueJobs = async () => {\n const queryAllParams: QueryAllParams = {\n entity,\n partitionKey: createQueueJobPartitionKey(),\n options: {\n gte: \" \"\n }\n };\n\n try {\n const results = await queryAll<QueueJob>(queryAllParams);\n\n return cleanupItems(entity, results);\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not list queue jobs records.\",\n ex.code || \"LIST_QUEUE_JOBS_ERROR\",\n {\n partitionKey: queryAllParams.partitionKey,\n options: queryAllParams.options\n }\n );\n }\n };\n\n const deleteQueueJobs = async (\n params: PrerenderingServiceStorageOperationsDeleteQueueJobsParams\n ) => {\n const { queueJobs } = params;\n\n const items = queueJobs.map(job => {\n return entity.deleteBatch({\n PK: createQueueJobPartitionKey(),\n SK: createQueueJobSortKey(job.id)\n });\n });\n\n try {\n await batchWriteAll({\n table: entity.table,\n items\n });\n return queueJobs;\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not delete queue jobs records.\",\n ex.code || \"DELETE_QUEUE_JOBS_ERROR\",\n {\n queueJobs\n }\n );\n }\n };\n\n return {\n createQueueJob,\n deleteQueueJobs,\n listQueueJobs\n };\n};\n"],"mappings":";;;;;;;;;;;AAAA;;AAQA;;AACA;;AACA;;;;;;AAMO,MAAMA,+BAA+B,GACxCC,MAD2C,IAEI;EAC/C,MAAM;IAAEC;EAAF,IAAaD,MAAnB;;EAEA,MAAME,0BAA0B,GAAG,MAAc;IAC7C,OAAO,UAAP;EACH,CAFD;;EAGA,MAAMC,qBAAqB,GAAIC,EAAD,IAAwB;IAClD,OAAOA,EAAP;EACH,CAFD;;EAIA,MAAMC,kBAAkB,GAAG,MAAM;IAC7B,OAAO,cAAP;EACH,CAFD;;EAIA,MAAMC,cAAc,GAAG,MACnBN,MADmB,IAEC;IACpB,MAAM;MAAEO;IAAF,IAAeP,MAArB;IACA,MAAMQ,IAAI,GAAG;MACTC,EAAE,EAAEP,0BAA0B,EADrB;MAETQ,EAAE,EAAEP,qBAAqB,CAACI,QAAQ,CAACH,EAAV;IAFhB,CAAb;;IAKA,IAAI;MACA,MAAMH,MAAM,CAACU,GAAP,+CACCJ,QADD,GAECC,IAFD;QAGFI,IAAI,EAAEP,kBAAkB;MAHtB,GAAN;MAKA,OAAOE,QAAP;IACH,CAPD,CAOE,OAAOM,EAAP,EAAW;MACT,MAAM,IAAIC,cAAJ,CACFD,EAAE,CAACE,OAAH,IAAc,iCADZ,EAEFF,EAAE,CAACG,IAAH,IAAW,qBAFT,EAGF;QACIR,IADJ;QAEID;MAFJ,CAHE,CAAN;IAQH;EACJ,CA1BD;;EA4BA,MAAMU,aAAa,GAAG,YAAY;IAC9B,MAAMC,cAA8B,GAAG;MACnCjB,MADmC;MAEnCkB,YAAY,EAAEjB,0BAA0B,EAFL;MAGnCkB,OAAO,EAAE;QACLC,GAAG,EAAE;MADA;IAH0B,CAAvC;;IAQA,IAAI;MACA,MAAMC,OAAO,GAAG,MAAM,IAAAC,eAAA,EAAmBL,cAAnB,CAAtB;MAEA,OAAO,IAAAM,qBAAA,EAAavB,MAAb,EAAqBqB,OAArB,CAAP;IACH,CAJD,CAIE,OAAOT,EAAP,EAAW;MACT,MAAM,IAAIC,cAAJ,CACFD,EAAE,CAACE,OAAH,IAAc,oCADZ,EAEFF,EAAE,CAACG,IAAH,IAAW,uBAFT,EAGF;QACIG,YAAY,EAAED,cAAc,CAACC,YADjC;QAEIC,OAAO,EAAEF,cAAc,CAACE;MAF5B,CAHE,CAAN;IAQH;EACJ,CAvBD;;EAyBA,MAAMK,eAAe,GAAG,MACpBzB,MADoB,IAEnB;IACD,MAAM;MAAE0B;IAAF,IAAgB1B,MAAtB;IAEA,MAAM2B,KAAK,GAAGD,SAAS,CAACE,GAAV,CAAcC,GAAG,IAAI;MAC/B,OAAO5B,MAAM,CAAC6B,WAAP,CAAmB;QACtBrB,EAAE,EAAEP,0BAA0B,EADR;QAEtBQ,EAAE,EAAEP,qBAAqB,CAAC0B,GAAG,CAACzB,EAAL;MAFH,CAAnB,CAAP;IAIH,CALa,CAAd;;IAOA,IAAI;MACA,MAAM,IAAA2B,yBAAA,EAAc;QAChBC,KAAK,EAAE/B,MAAM,CAAC+B,KADE;QAEhBL;MAFgB,CAAd,CAAN;MAIA,OAAOD,SAAP;IACH,CAND,CAME,OAAOb,EAAP,EAAW;MACT,MAAM,IAAIC,cAAJ,CACFD,EAAE,CAACE,OAAH,IAAc,sCADZ,EAEFF,EAAE,CAACG,IAAH,IAAW,yBAFT,EAGF;QACIU;MADJ,CAHE,CAAN;IAOH;EACJ,CA3BD;;EA6BA,OAAO;IACHpB,cADG;IAEHmB,eAFG;IAGHR;EAHG,CAAP;AAKH,CAvGM"}
@@ -1,16 +1,21 @@
1
1
  import { PrerenderingServiceRenderStorageOperations } from "@webiny/api-prerendering-service/types";
2
2
  import { Entity } from "dynamodb-toolbox";
3
- import { Tag } from "@webiny/api-prerendering-service/queue/add/types";
3
+ import { Tag } from "@webiny/api-prerendering-service/types";
4
4
  export interface CreateRenderStorageOperationsParams {
5
5
  entity: Entity<any>;
6
- tagUrlLinkEntity: Entity<any>;
6
+ tagPathLinkEntity: Entity<any>;
7
7
  }
8
- export interface CreateTagUrlLinkPartitionKeyParams {
9
- namespace: string;
10
- tag: Pick<Tag, "key">;
8
+ export interface CreateTagPathLinkPartitionKeyParams {
9
+ tenant: string;
10
+ tag: Tag;
11
+ path: string;
12
+ }
13
+ export interface CreateTagPathLinkGSI1PartitionKeyParams {
14
+ tenant: string;
15
+ tag: Tag;
11
16
  }
12
- export interface CreateTagUrlLinkSortKeyParams {
17
+ export interface CreateTagPathLinkSortKeyParams {
13
18
  tag: Tag;
14
- url?: string;
19
+ path?: string;
15
20
  }
16
21
  export declare const createRenderStorageOperations: (params: CreateRenderStorageOperationsParams) => PrerenderingServiceRenderStorageOperations;
@@ -28,59 +28,84 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
28
28
  const createRenderStorageOperations = params => {
29
29
  const {
30
30
  entity,
31
- tagUrlLinkEntity
31
+ tagPathLinkEntity
32
32
  } = params;
33
33
 
34
- const createRenderPartitionKey = namespace => {
34
+ const createRenderPartitionKey = (tenant, path) => {
35
35
  /**
36
36
  * For backwards compatibility remove the T# if it exists.
37
37
  */
38
- if (namespace.startsWith("T#")) {
39
- namespace = namespace.replace(/^T#/, "");
38
+ if (tenant.startsWith("T#")) {
39
+ tenant = tenant.replace(/^T#/, "");
40
40
  }
41
41
 
42
- return `T#${namespace}#PS#RENDER`;
42
+ return `T#${tenant}#PS#RENDER#${path}`;
43
43
  };
44
44
 
45
- const createRenderSortKey = url => {
46
- return url;
45
+ const createRenderSortKey = () => {
46
+ return "A";
47
+ };
48
+
49
+ const createRenderGSI1PartitionKey = tenant => {
50
+ return `T#${tenant}#PS#RENDER`;
47
51
  };
48
52
 
49
53
  const createRenderType = () => {
50
54
  return "ps.render";
51
55
  };
52
56
 
53
- const createTagUrlLinkPartitionKey = params => {
57
+ const createTagPathLinkPartitionKey = params => {
54
58
  const {
55
- tag
59
+ tag,
60
+ path
56
61
  } = params;
57
62
  let {
58
- namespace
63
+ tenant
59
64
  } = params;
60
65
 
61
- if (namespace.startsWith("T#")) {
62
- namespace = namespace.replace(/^T#/, "");
66
+ if (tenant.startsWith("T#")) {
67
+ tenant = tenant.replace(/^T#/, "");
63
68
  }
64
69
 
65
- return `T#${namespace}#PS#TAG#${tag.key}`;
70
+ return `T#${tenant}#PS#TAG#${tag.key}#${tag.value}#${path}`;
66
71
  };
67
72
 
68
- const createTagUrlLinkSortKey = params => {
73
+ const createTagPathLinkSortKey = params => {
69
74
  const {
70
75
  tag,
71
- url
76
+ path
72
77
  } = params;
73
78
  const values = [tag.value];
74
79
 
75
- if (url) {
76
- values.push(url);
80
+ if (path) {
81
+ values.push(path);
77
82
  }
78
83
 
79
84
  return values.join("#");
80
85
  };
81
86
 
82
- const createTagUrlLinkType = () => {
83
- return "ps.tagUrlLink";
87
+ const createTagPathLinkGSI1PartitionKey = params => {
88
+ let {
89
+ tenant
90
+ } = params;
91
+
92
+ if (tenant.startsWith("T#")) {
93
+ tenant = tenant.replace(/^T#/, "");
94
+ }
95
+
96
+ return `T#${tenant}#PS#TAG`;
97
+ };
98
+
99
+ const createTagPathLinkGSI1SortKey = params => {
100
+ const {
101
+ tag,
102
+ path
103
+ } = params;
104
+ return `${tag.key}#${tag.value}#${path}`;
105
+ };
106
+
107
+ const createTagPathLinkType = () => {
108
+ return "ps.tagPathLink";
84
109
  };
85
110
 
86
111
  const getRender = async params => {
@@ -88,8 +113,8 @@ const createRenderStorageOperations = params => {
88
113
  where
89
114
  } = params;
90
115
  const keys = {
91
- PK: createRenderPartitionKey(where.namespace),
92
- SK: createRenderSortKey(where.url)
116
+ PK: createRenderPartitionKey(where.tenant, where.path),
117
+ SK: createRenderSortKey()
93
118
  };
94
119
 
95
120
  try {
@@ -97,7 +122,8 @@ const createRenderStorageOperations = params => {
97
122
  entity,
98
123
  keys
99
124
  });
100
- return (0, _cleanup.cleanupItem)(entity, result);
125
+ const dbItem = (0, _cleanup.cleanupItem)(entity, result);
126
+ return dbItem ? dbItem.data : null;
101
127
  } catch (ex) {
102
128
  throw new _error.default(ex.message || "Could not get render record by given key.", ex.code || "GET_RENDER_ERROR", {
103
129
  keys,
@@ -111,13 +137,16 @@ const createRenderStorageOperations = params => {
111
137
  render
112
138
  } = params;
113
139
  const keys = {
114
- PK: createRenderPartitionKey(render.namespace),
115
- SK: createRenderSortKey(render.url)
140
+ PK: createRenderPartitionKey(render.tenant, render.path),
141
+ SK: createRenderSortKey()
116
142
  };
117
143
 
118
144
  try {
119
- await entity.put(_objectSpread(_objectSpread(_objectSpread({}, render), keys), {}, {
120
- TYPE: createRenderType()
145
+ await entity.put(_objectSpread(_objectSpread({}, keys), {}, {
146
+ data: render,
147
+ TYPE: createRenderType(),
148
+ GSI1_PK: createRenderGSI1PartitionKey(render.tenant),
149
+ GSI1_SK: render.path
121
150
  }));
122
151
  return render;
123
152
  } catch (ex) {
@@ -133,8 +162,8 @@ const createRenderStorageOperations = params => {
133
162
  render
134
163
  } = params;
135
164
  const keys = {
136
- PK: createRenderPartitionKey(render.namespace),
137
- SK: createRenderSortKey(render.url)
165
+ PK: createRenderPartitionKey(render.tenant, render.path),
166
+ SK: createRenderSortKey()
138
167
  };
139
168
 
140
169
  try {
@@ -152,7 +181,7 @@ const createRenderStorageOperations = params => {
152
181
  where
153
182
  } = params;
154
183
  const {
155
- namespace,
184
+ tenant,
156
185
  tag
157
186
  } = where;
158
187
  /**
@@ -163,16 +192,16 @@ const createRenderStorageOperations = params => {
163
192
  return [];
164
193
  }
165
194
 
166
- const links = await listTagUrlLinks({
195
+ const links = await listTagPathLinks({
167
196
  where: {
168
- namespace,
197
+ tenant,
169
198
  tag
170
199
  }
171
200
  });
172
201
  const items = links.map(link => {
173
202
  return entity.getBatch({
174
- PK: createRenderPartitionKey(namespace),
175
- SK: createRenderSortKey(link.url)
203
+ PK: createRenderPartitionKey(tenant, link.path),
204
+ SK: createRenderSortKey()
176
205
  });
177
206
  });
178
207
 
@@ -181,7 +210,7 @@ const createRenderStorageOperations = params => {
181
210
  table: entity.table,
182
211
  items
183
212
  });
184
- return (0, _cleanup.cleanupItems)(entity, results);
213
+ return (0, _cleanup.cleanupItems)(entity, results).map(item => item.data);
185
214
  } catch (ex) {
186
215
  throw new _error.default(ex.message || "Could not list render records after links.", ex.code || "LIST_LINKS_RENDER_ERROR", {
187
216
  links
@@ -194,7 +223,7 @@ const createRenderStorageOperations = params => {
194
223
  where
195
224
  } = params;
196
225
  const {
197
- namespace,
226
+ tenant,
198
227
  tag
199
228
  } = where;
200
229
 
@@ -204,15 +233,16 @@ const createRenderStorageOperations = params => {
204
233
 
205
234
  const queryAllParams = {
206
235
  entity,
207
- partitionKey: createRenderPartitionKey(namespace),
236
+ partitionKey: createRenderGSI1PartitionKey(tenant),
208
237
  options: {
238
+ index: "GSI1",
209
239
  gte: " "
210
240
  }
211
241
  };
212
242
 
213
243
  try {
214
244
  const results = await (0, _query.queryAll)(queryAllParams);
215
- return (0, _cleanup.cleanupItems)(entity, results);
245
+ return (0, _cleanup.cleanupItems)(entity, results).map(item => item.data);
216
246
  } catch (ex) {
217
247
  throw new _error.default(ex.message || "Could not list render records.", ex.code || "LIST_RENDER_ERROR", {
218
248
  partitionKey: queryAllParams.partitionKey,
@@ -221,101 +251,114 @@ const createRenderStorageOperations = params => {
221
251
  }
222
252
  };
223
253
 
224
- const createTagUrlLinks = async params => {
254
+ const createTagPathLinks = async params => {
225
255
  const {
226
- tagUrlLinks
256
+ tagPathLinks
227
257
  } = params;
228
- const items = tagUrlLinks.map(item => {
229
- return tagUrlLinkEntity.putBatch(_objectSpread(_objectSpread({}, item), {}, {
230
- TYPE: createTagUrlLinkType(),
231
- PK: createTagUrlLinkPartitionKey({
232
- namespace: item.namespace,
233
- tag: item
258
+ const items = tagPathLinks.map(item => {
259
+ return tagPathLinkEntity.putBatch({
260
+ data: item,
261
+ TYPE: createTagPathLinkType(),
262
+ PK: createTagPathLinkPartitionKey({
263
+ tenant: item.tenant,
264
+ tag: item,
265
+ path: item.path
266
+ }),
267
+ SK: createTagPathLinkSortKey({
268
+ tag: item,
269
+ path: item.path
270
+ }),
271
+ GSI1_PK: createTagPathLinkGSI1PartitionKey({
272
+ tag: item,
273
+ tenant: item.tenant
234
274
  }),
235
- SK: createTagUrlLinkSortKey({
275
+ GSI1_SK: createTagPathLinkGSI1SortKey({
236
276
  tag: item,
237
- url: item.url
277
+ path: item.path
238
278
  })
239
- }));
279
+ });
240
280
  });
241
281
 
242
282
  try {
243
283
  await (0, _batchWrite.batchWriteAll)({
244
- table: tagUrlLinkEntity.table,
284
+ table: tagPathLinkEntity.table,
245
285
  items
246
286
  });
247
- return tagUrlLinks;
287
+ return tagPathLinks;
248
288
  } catch (ex) {
249
- throw new _error.default(ex.message || "Could not create tagUrlLink records.", ex.code || "CREATE_URL_TAG_LINKS_ERROR", {
250
- tagUrlLinks
289
+ throw new _error.default(ex.message || "Could not create tagPathLink records.", ex.code || "CREATE_URL_TAG_LINKS_ERROR", {
290
+ tagPathLinks
251
291
  });
252
292
  }
253
293
  };
254
294
 
255
- const deleteTagUrlLinks = async params => {
295
+ const deleteTagPathLinks = async params => {
256
296
  const {
257
- namespace,
297
+ tenant,
258
298
  tags,
259
- url
299
+ path
260
300
  } = params;
261
301
  const items = tags.map(tag => {
262
- return tagUrlLinkEntity.deleteBatch({
263
- PK: createTagUrlLinkPartitionKey({
302
+ return tagPathLinkEntity.deleteBatch({
303
+ PK: createTagPathLinkPartitionKey({
264
304
  tag,
265
- namespace
305
+ tenant,
306
+ path
266
307
  }),
267
- SK: createTagUrlLinkSortKey({
308
+ SK: createTagPathLinkSortKey({
268
309
  tag,
269
- url
310
+ path
270
311
  })
271
312
  });
272
313
  });
273
314
 
274
315
  try {
275
316
  await (0, _batchWrite.batchWriteAll)({
276
- table: tagUrlLinkEntity.table,
317
+ table: tagPathLinkEntity.table,
277
318
  items
278
319
  });
279
320
  } catch (ex) {
280
- throw new _error.default(ex.message || "Could not delete tagUrlLink records.", ex.code || "DELETE_URL_TAG_LINKS_ERROR", {
321
+ throw new _error.default(ex.message || "Could not delete tagPathLink records.", ex.code || "DELETE_URL_TAG_LINKS_ERROR", {
281
322
  tags,
282
- namespace,
283
- url
323
+ tenant,
324
+ path
284
325
  });
285
326
  }
286
327
  };
287
328
 
288
- const listTagUrlLinks = async params => {
329
+ const listTagPathLinks = async params => {
289
330
  const {
290
331
  where
291
332
  } = params;
292
333
  const {
293
- namespace,
334
+ tenant,
294
335
  tag
295
336
  } = where;
296
- const partitionKey = createTagUrlLinkPartitionKey({
297
- namespace,
337
+ const partitionKey = createTagPathLinkGSI1PartitionKey({
338
+ tenant,
298
339
  tag
299
340
  });
300
- const options = {};
341
+ const options = {
342
+ index: "GSI1"
343
+ };
301
344
 
302
345
  if (tag.value) {
303
- options.beginsWith = `${tag.value}#`;
346
+ options.beginsWith = `${tag.key}#${tag.value}#`;
304
347
  } else {
305
- options.gte = " ";
348
+ options.beginsWith = `${tag.key}#`;
306
349
  }
307
350
 
308
351
  const queryAllParams = {
309
- entity: tagUrlLinkEntity,
352
+ entity: tagPathLinkEntity,
310
353
  partitionKey,
311
354
  options
312
355
  };
313
356
 
314
357
  try {
315
358
  const results = await (0, _query.queryAll)(queryAllParams);
316
- return (0, _cleanup.cleanupItems)(tagUrlLinkEntity, results);
359
+ return (0, _cleanup.cleanupItems)(tagPathLinkEntity, results).map(item => item.data);
317
360
  } catch (ex) {
318
- throw new _error.default(ex.message || "Could not list tagUrlLink records.", ex.code || "LIST_TAG_URL_LINK_ERROR", {
361
+ throw new _error.default(ex.message || "Could not list tagPathLink records.", ex.code || "LIST_TAG_PATH_LINK_ERROR", {
319
362
  partitionKey,
320
363
  options
321
364
  });
@@ -327,9 +370,9 @@ const createRenderStorageOperations = params => {
327
370
  deleteRender,
328
371
  listRenders,
329
372
  getRender,
330
- createTagUrlLinks,
331
- deleteTagUrlLinks,
332
- listTagUrlLinks
373
+ createTagPathLinks,
374
+ deleteTagPathLinks,
375
+ listTagPathLinks
333
376
  };
334
377
  };
335
378
 
@@ -0,0 +1 @@
1
+ {"version":3,"names":["createRenderStorageOperations","params","entity","tagPathLinkEntity","createRenderPartitionKey","tenant","path","startsWith","replace","createRenderSortKey","createRenderGSI1PartitionKey","createRenderType","createTagPathLinkPartitionKey","tag","key","value","createTagPathLinkSortKey","values","push","join","createTagPathLinkGSI1PartitionKey","createTagPathLinkGSI1SortKey","createTagPathLinkType","getRender","where","keys","PK","SK","result","get","dbItem","cleanupItem","data","ex","WebinyError","message","code","createRender","render","put","TYPE","GSI1_PK","GSI1_SK","deleteRender","delete","listRendersByTag","links","listTagPathLinks","items","map","link","getBatch","results","batchReadAll","table","cleanupItems","item","listRenders","queryAllParams","partitionKey","options","index","gte","queryAll","createTagPathLinks","tagPathLinks","putBatch","batchWriteAll","deleteTagPathLinks","tags","deleteBatch","beginsWith"],"sources":["render.ts"],"sourcesContent":["import WebinyError from \"@webiny/error\";\nimport {\n PrerenderingServiceRenderStorageOperations,\n PrerenderingServiceStorageOperationsCreateRenderParams,\n PrerenderingServiceStorageOperationsCreateTagPathLinksParams,\n PrerenderingServiceStorageOperationsDeleteRenderParams,\n PrerenderingServiceStorageOperationsDeleteTagPathLinksParams,\n PrerenderingServiceStorageOperationsGetRenderParams,\n PrerenderingServiceStorageOperationsListRendersParams,\n PrerenderingServiceStorageOperationsListTagPathLinksParams,\n Render,\n TagPathLink\n} from \"@webiny/api-prerendering-service/types\";\nimport { Entity } from \"dynamodb-toolbox\";\nimport { get } from \"@webiny/db-dynamodb/utils/get\";\nimport { queryAll, QueryAllParams } from \"@webiny/db-dynamodb/utils/query\";\nimport { batchReadAll } from \"@webiny/db-dynamodb/utils/batchRead\";\nimport { batchWriteAll } from \"@webiny/db-dynamodb/utils/batchWrite\";\nimport { Tag } from \"@webiny/api-prerendering-service/types\";\nimport { cleanupItem, cleanupItems } from \"@webiny/db-dynamodb/utils/cleanup\";\nimport { queryOptions as DynamoDBToolboxQueryOptions } from \"dynamodb-toolbox/dist/classes/Table\";\nimport { DataContainer } from \"~/types\";\n\nexport interface CreateRenderStorageOperationsParams {\n entity: Entity<any>;\n tagPathLinkEntity: Entity<any>;\n}\n\nexport interface CreateTagPathLinkPartitionKeyParams {\n tenant: string;\n tag: Tag;\n path: string;\n}\n\nexport interface CreateTagPathLinkGSI1PartitionKeyParams {\n tenant: string;\n tag: Tag;\n}\n\nexport interface CreateTagPathLinkSortKeyParams {\n tag: Tag;\n path?: string;\n}\n\nexport const createRenderStorageOperations = (\n params: CreateRenderStorageOperationsParams\n): PrerenderingServiceRenderStorageOperations => {\n const { entity, tagPathLinkEntity } = params;\n\n const createRenderPartitionKey = (tenant: string, path: string): string => {\n /**\n * For backwards compatibility remove the T# if it exists.\n */\n if (tenant.startsWith(\"T#\")) {\n tenant = tenant.replace(/^T#/, \"\");\n }\n return `T#${tenant}#PS#RENDER#${path}`;\n };\n\n const createRenderSortKey = (): string => {\n return \"A\";\n };\n\n const createRenderGSI1PartitionKey = (tenant: string): string => {\n return `T#${tenant}#PS#RENDER`;\n };\n\n const createRenderType = (): string => {\n return \"ps.render\";\n };\n\n const createTagPathLinkPartitionKey = (params: CreateTagPathLinkPartitionKeyParams): string => {\n const { tag, path } = params;\n let { tenant } = params;\n if (tenant.startsWith(\"T#\")) {\n tenant = tenant.replace(/^T#/, \"\");\n }\n return `T#${tenant}#PS#TAG#${tag.key}#${tag.value}#${path}`;\n };\n\n const createTagPathLinkSortKey = (params: CreateTagPathLinkSortKeyParams): string => {\n const { tag, path } = params;\n const values = [tag.value];\n if (path) {\n values.push(path);\n }\n return values.join(\"#\");\n };\n\n const createTagPathLinkGSI1PartitionKey = (\n params: CreateTagPathLinkGSI1PartitionKeyParams\n ): string => {\n let { tenant } = params;\n if (tenant.startsWith(\"T#\")) {\n tenant = tenant.replace(/^T#/, \"\");\n }\n return `T#${tenant}#PS#TAG`;\n };\n\n const createTagPathLinkGSI1SortKey = (params: CreateTagPathLinkSortKeyParams): string => {\n const { tag, path } = params;\n\n return `${tag.key}#${tag.value}#${path}`;\n };\n\n const createTagPathLinkType = (): string => {\n return \"ps.tagPathLink\";\n };\n\n const getRender = async (\n params: PrerenderingServiceStorageOperationsGetRenderParams\n ): Promise<Render | null> => {\n const { where } = params;\n\n const keys = {\n PK: createRenderPartitionKey(where.tenant, where.path),\n SK: createRenderSortKey()\n };\n\n try {\n const result = await get<DataContainer<Render>>({\n entity,\n keys\n });\n\n const dbItem = cleanupItem(entity, result);\n\n return dbItem ? dbItem.data : null;\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not get render record by given key.\",\n ex.code || \"GET_RENDER_ERROR\",\n {\n keys,\n params\n }\n );\n }\n };\n const createRender = async (params: PrerenderingServiceStorageOperationsCreateRenderParams) => {\n const { render } = params;\n\n const keys = {\n PK: createRenderPartitionKey(render.tenant, render.path),\n SK: createRenderSortKey()\n };\n\n try {\n await entity.put({\n ...keys,\n data: render,\n TYPE: createRenderType(),\n GSI1_PK: createRenderGSI1PartitionKey(render.tenant),\n GSI1_SK: render.path\n });\n\n return render;\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not create render record.\",\n ex.code || \"CREATE_RENDER_ERROR\",\n {\n keys,\n render\n }\n );\n }\n };\n const deleteRender = async (\n params: PrerenderingServiceStorageOperationsDeleteRenderParams\n ): Promise<void> => {\n const { render } = params;\n\n const keys = {\n PK: createRenderPartitionKey(render.tenant, render.path),\n SK: createRenderSortKey()\n };\n\n try {\n await entity.delete(keys);\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not delete render record.\",\n ex.code || \"DELETE_RENDER_ERROR\",\n {\n keys,\n render\n }\n );\n }\n };\n\n const listRendersByTag = async (\n params: PrerenderingServiceStorageOperationsListRendersParams\n ) => {\n const { where } = params;\n const { tenant, tag } = where;\n /**\n * Possibly there is no tag.key so no need to go further\n */\n if (!tag || !tag.key) {\n return [];\n }\n\n const links = await listTagPathLinks({\n where: {\n tenant,\n tag\n }\n });\n\n const items = links.map(link => {\n return entity.getBatch({\n PK: createRenderPartitionKey(tenant, link.path),\n SK: createRenderSortKey()\n });\n });\n try {\n const results = await batchReadAll<DataContainer<Render>>({\n table: entity.table,\n items\n });\n return cleanupItems(entity, results).map(item => item.data);\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not list render records after links.\",\n ex.code || \"LIST_LINKS_RENDER_ERROR\",\n {\n links\n }\n );\n }\n };\n\n const listRenders = async (params: PrerenderingServiceStorageOperationsListRendersParams) => {\n const { where } = params;\n const { tenant, tag } = where;\n\n if (tag) {\n return listRendersByTag(params);\n }\n\n const queryAllParams: QueryAllParams = {\n entity,\n partitionKey: createRenderGSI1PartitionKey(tenant),\n options: {\n index: \"GSI1\",\n gte: \" \"\n }\n };\n\n try {\n const results = await queryAll<DataContainer<Render>>(queryAllParams);\n\n return cleanupItems(entity, results).map(item => item.data);\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not list render records.\",\n ex.code || \"LIST_RENDER_ERROR\",\n {\n partitionKey: queryAllParams.partitionKey,\n options: queryAllParams.options\n }\n );\n }\n };\n\n const createTagPathLinks = async (\n params: PrerenderingServiceStorageOperationsCreateTagPathLinksParams\n ) => {\n const { tagPathLinks } = params;\n\n const items = tagPathLinks.map(item => {\n return tagPathLinkEntity.putBatch({\n data: item,\n TYPE: createTagPathLinkType(),\n PK: createTagPathLinkPartitionKey({\n tenant: item.tenant,\n tag: item,\n path: item.path\n }),\n SK: createTagPathLinkSortKey({\n tag: item,\n path: item.path\n }),\n GSI1_PK: createTagPathLinkGSI1PartitionKey({ tag: item, tenant: item.tenant }),\n GSI1_SK: createTagPathLinkGSI1SortKey({ tag: item, path: item.path })\n });\n });\n\n try {\n await batchWriteAll({\n table: tagPathLinkEntity.table,\n items\n });\n return tagPathLinks;\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not create tagPathLink records.\",\n ex.code || \"CREATE_URL_TAG_LINKS_ERROR\",\n {\n tagPathLinks\n }\n );\n }\n };\n\n const deleteTagPathLinks = async (\n params: PrerenderingServiceStorageOperationsDeleteTagPathLinksParams\n ): Promise<void> => {\n const { tenant, tags, path } = params;\n const items = tags.map(tag => {\n return tagPathLinkEntity.deleteBatch({\n PK: createTagPathLinkPartitionKey({\n tag,\n tenant,\n path\n }),\n SK: createTagPathLinkSortKey({\n tag,\n path\n })\n });\n });\n\n try {\n await batchWriteAll({\n table: tagPathLinkEntity.table,\n items\n });\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not delete tagPathLink records.\",\n ex.code || \"DELETE_URL_TAG_LINKS_ERROR\",\n {\n tags,\n tenant,\n path\n }\n );\n }\n };\n\n const listTagPathLinks = async (\n params: PrerenderingServiceStorageOperationsListTagPathLinksParams\n ) => {\n const { where } = params;\n const { tenant, tag } = where;\n\n const partitionKey = createTagPathLinkGSI1PartitionKey({\n tenant,\n tag\n });\n\n const options: DynamoDBToolboxQueryOptions = { index: \"GSI1\" };\n\n if (tag.value) {\n options.beginsWith = `${tag.key}#${tag.value}#`;\n } else {\n options.beginsWith = `${tag.key}#`;\n }\n\n const queryAllParams: QueryAllParams = {\n entity: tagPathLinkEntity,\n partitionKey,\n options\n };\n\n try {\n const results = await queryAll<DataContainer<TagPathLink>>(queryAllParams);\n\n return cleanupItems(tagPathLinkEntity, results).map(item => item.data);\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not list tagPathLink records.\",\n ex.code || \"LIST_TAG_PATH_LINK_ERROR\",\n {\n partitionKey,\n options\n }\n );\n }\n };\n\n return {\n createRender,\n deleteRender,\n listRenders,\n getRender,\n createTagPathLinks,\n deleteTagPathLinks,\n listTagPathLinks\n };\n};\n"],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import { PrerenderingServiceSettingsStorageOperations } from "@webiny/api-prerendering-service/types";
2
+ import { Entity } from "dynamodb-toolbox";
3
+ export interface CreateSettingsStorageOperationsParams {
4
+ entity: Entity<any>;
5
+ }
6
+ export declare const createSettingsStorageOperations: (params: CreateSettingsStorageOperationsParams) => PrerenderingServiceSettingsStorageOperations;
@@ -0,0 +1,79 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.createSettingsStorageOperations = void 0;
9
+
10
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
+
12
+ var _error = _interopRequireDefault(require("@webiny/error"));
13
+
14
+ var _get = require("@webiny/db-dynamodb/utils/get");
15
+
16
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
17
+
18
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
19
+
20
+ const createSettingsStorageOperations = params => {
21
+ const {
22
+ entity
23
+ } = params;
24
+
25
+ const getSettings = async (variant = "default") => {
26
+ const keys = {
27
+ PK: "PS#SETTINGS",
28
+ SK: variant
29
+ };
30
+
31
+ try {
32
+ const result = await (0, _get.get)({
33
+ entity,
34
+ keys
35
+ });
36
+
37
+ if (!result) {
38
+ throw Error();
39
+ }
40
+
41
+ return result.data;
42
+ } catch (ex) {
43
+ throw new _error.default(ex.message || "Could not load prerendering settings!", ex.code || "GET_SETTINGS_ERROR", {
44
+ keys,
45
+ params
46
+ });
47
+ }
48
+ };
49
+
50
+ const saveSettings = async params => {
51
+ const {
52
+ settings,
53
+ variant = "default"
54
+ } = params;
55
+ const keys = {
56
+ PK: "PS#SETTINGS",
57
+ SK: variant
58
+ };
59
+
60
+ try {
61
+ await entity.put(_objectSpread(_objectSpread({}, keys), {}, {
62
+ TYPE: "ps.settings",
63
+ data: settings
64
+ }));
65
+ return settings;
66
+ } catch (ex) {
67
+ throw new _error.default(ex.message || "Could not save settings.", ex.code || "SAVE_SETTINGS_ERROR", {
68
+ keys
69
+ });
70
+ }
71
+ };
72
+
73
+ return {
74
+ getSettings,
75
+ saveSettings
76
+ };
77
+ };
78
+
79
+ exports.createSettingsStorageOperations = createSettingsStorageOperations;
@@ -0,0 +1 @@
1
+ {"version":3,"names":["createSettingsStorageOperations","params","entity","getSettings","variant","keys","PK","SK","result","get","Error","data","ex","WebinyError","message","code","saveSettings","settings","put","TYPE"],"sources":["settings.ts"],"sourcesContent":["import WebinyError from \"@webiny/error\";\nimport {\n PrerenderingServiceSaveSettingsParams,\n PrerenderingServiceSettingsStorageOperations,\n PrerenderingSettings\n} from \"@webiny/api-prerendering-service/types\";\nimport { Entity } from \"dynamodb-toolbox\";\nimport { get } from \"@webiny/db-dynamodb/utils/get\";\n\nexport interface CreateSettingsStorageOperationsParams {\n entity: Entity<any>;\n}\n\nexport const createSettingsStorageOperations = (\n params: CreateSettingsStorageOperationsParams\n): PrerenderingServiceSettingsStorageOperations => {\n const { entity } = params;\n\n const getSettings = async (variant = \"default\"): Promise<PrerenderingSettings> => {\n const keys = {\n PK: \"PS#SETTINGS\",\n SK: variant\n };\n\n try {\n const result = await get<{ data: PrerenderingSettings }>({\n entity,\n keys\n });\n\n if (!result) {\n throw Error();\n }\n\n return result.data;\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not load prerendering settings!\",\n ex.code || \"GET_SETTINGS_ERROR\",\n {\n keys,\n params\n }\n );\n }\n };\n\n const saveSettings = async (params: PrerenderingServiceSaveSettingsParams) => {\n const { settings, variant = \"default\" } = params;\n const keys = {\n PK: \"PS#SETTINGS\",\n SK: variant\n };\n\n try {\n await entity.put({\n ...keys,\n TYPE: \"ps.settings\",\n data: settings\n });\n\n return settings;\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not save settings.\",\n ex.code || \"SAVE_SETTINGS_ERROR\",\n {\n keys\n }\n );\n }\n };\n\n return {\n getSettings,\n saveSettings\n };\n};\n"],"mappings":";;;;;;;;;;;AAAA;;AAOA;;;;;;AAMO,MAAMA,+BAA+B,GACxCC,MAD2C,IAEI;EAC/C,MAAM;IAAEC;EAAF,IAAaD,MAAnB;;EAEA,MAAME,WAAW,GAAG,OAAOC,OAAO,GAAG,SAAjB,KAA8D;IAC9E,MAAMC,IAAI,GAAG;MACTC,EAAE,EAAE,aADK;MAETC,EAAE,EAAEH;IAFK,CAAb;;IAKA,IAAI;MACA,MAAMI,MAAM,GAAG,MAAM,IAAAC,QAAA,EAAoC;QACrDP,MADqD;QAErDG;MAFqD,CAApC,CAArB;;MAKA,IAAI,CAACG,MAAL,EAAa;QACT,MAAME,KAAK,EAAX;MACH;;MAED,OAAOF,MAAM,CAACG,IAAd;IACH,CAXD,CAWE,OAAOC,EAAP,EAAW;MACT,MAAM,IAAIC,cAAJ,CACFD,EAAE,CAACE,OAAH,IAAc,uCADZ,EAEFF,EAAE,CAACG,IAAH,IAAW,oBAFT,EAGF;QACIV,IADJ;QAEIJ;MAFJ,CAHE,CAAN;IAQH;EACJ,CA3BD;;EA6BA,MAAMe,YAAY,GAAG,MAAOf,MAAP,IAAyD;IAC1E,MAAM;MAAEgB,QAAF;MAAYb,OAAO,GAAG;IAAtB,IAAoCH,MAA1C;IACA,MAAMI,IAAI,GAAG;MACTC,EAAE,EAAE,aADK;MAETC,EAAE,EAAEH;IAFK,CAAb;;IAKA,IAAI;MACA,MAAMF,MAAM,CAACgB,GAAP,iCACCb,IADD;QAEFc,IAAI,EAAE,aAFJ;QAGFR,IAAI,EAAEM;MAHJ,GAAN;MAMA,OAAOA,QAAP;IACH,CARD,CAQE,OAAOL,EAAP,EAAW;MACT,MAAM,IAAIC,cAAJ,CACFD,EAAE,CAACE,OAAH,IAAc,0BADZ,EAEFF,EAAE,CAACG,IAAH,IAAW,qBAFT,EAGF;QACIV;MADJ,CAHE,CAAN;IAOH;EACJ,CAxBD;;EA0BA,OAAO;IACHF,WADG;IAEHa;EAFG,CAAP;AAIH,CAhEM"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@webiny/api-prerendering-service-so-ddb",
3
- "version": "5.27.0",
3
+ "version": "5.29.0-beta.0",
4
4
  "main": "index.js",
5
5
  "repository": {
6
6
  "type": "git",
@@ -17,9 +17,9 @@
17
17
  "author": "Webiny Ltd",
18
18
  "license": "MIT",
19
19
  "dependencies": {
20
- "@babel/runtime": "7.16.7",
21
- "@webiny/api-prerendering-service": "5.27.0",
22
- "@webiny/error": "5.27.0",
20
+ "@babel/runtime": "7.18.3",
21
+ "@webiny/api-prerendering-service": "5.29.0-beta.0",
22
+ "@webiny/error": "5.29.0-beta.0",
23
23
  "dynamodb-toolbox": "0.3.5"
24
24
  },
25
25
  "devDependencies": {
@@ -28,11 +28,11 @@
28
28
  "@babel/plugin-proposal-export-default-from": "^7.16.0",
29
29
  "@babel/preset-env": "^7.16.4",
30
30
  "@babel/preset-typescript": "^7.16.0",
31
- "@webiny/cli": "^5.27.0",
32
- "@webiny/db": "^5.27.0",
33
- "@webiny/db-dynamodb": "^5.27.0",
34
- "@webiny/handler-aws": "^5.27.0",
35
- "@webiny/project-utils": "^5.27.0",
31
+ "@webiny/cli": "^5.29.0-beta.0",
32
+ "@webiny/db": "^5.29.0-beta.0",
33
+ "@webiny/db-dynamodb": "^5.29.0-beta.0",
34
+ "@webiny/handler-aws": "^5.29.0-beta.0",
35
+ "@webiny/project-utils": "^5.29.0-beta.0",
36
36
  "jest-dynalite": "^3.3.1",
37
37
  "jest-environment-node": "^27.3.0",
38
38
  "prettier": "^2.3.2",
@@ -55,5 +55,5 @@
55
55
  ]
56
56
  }
57
57
  },
58
- "gitHead": "0f2b0b65639d2e1a79cf9189c8fe5cea2c32d302"
58
+ "gitHead": "e221dc575942c512548be142e20c5bd1231edcda"
59
59
  }
package/types.d.ts CHANGED
@@ -7,15 +7,16 @@ export declare type AttributeDefinition = DynamoDBTypes | EntityAttributeConfig
7
7
  export declare type Attributes = Record<string, AttributeDefinition>;
8
8
  export declare enum ENTITIES {
9
9
  RENDER = "PrerenderingServiceRender",
10
+ SETTINGS = "PrerenderingServiceSettings",
10
11
  QUEUE_JOB = "PrerenderingServiceQueueJob",
11
- TAG_URL_LINK = "PrerenderingServiceTagUrlLink"
12
+ TAG_PATH_LINK = "PrerenderingServiceTagPathLink"
12
13
  }
13
14
  export interface PrerenderingServiceFactoryParams {
14
15
  documentClient: DocumentClient;
15
16
  table?: TableModifier;
16
17
  attributes?: Record<ENTITIES, Attributes>;
17
18
  }
18
- export declare type Entities = "render" | "queueJob" | "tagUrlLink";
19
+ export declare type Entities = "render" | "queueJob" | "tagPathLink";
19
20
  export interface PrerenderingServiceStorageOperations extends BasePrerenderingServiceStorageOperations {
20
21
  getTable(): Table;
21
22
  getEntities(): Record<Entities, Entity<any>>;
@@ -26,3 +27,8 @@ export interface PrerenderingServiceFactory {
26
27
  export interface TableModifier {
27
28
  (table: TableConstructor): TableConstructor;
28
29
  }
30
+ export interface DataContainer<T> {
31
+ PK: string;
32
+ SK: string;
33
+ data: T;
34
+ }
package/types.js CHANGED
@@ -9,6 +9,7 @@ exports.ENTITIES = ENTITIES;
9
9
 
10
10
  (function (ENTITIES) {
11
11
  ENTITIES["RENDER"] = "PrerenderingServiceRender";
12
+ ENTITIES["SETTINGS"] = "PrerenderingServiceSettings";
12
13
  ENTITIES["QUEUE_JOB"] = "PrerenderingServiceQueueJob";
13
- ENTITIES["TAG_URL_LINK"] = "PrerenderingServiceTagUrlLink";
14
+ ENTITIES["TAG_PATH_LINK"] = "PrerenderingServiceTagPathLink";
14
15
  })(ENTITIES || (exports.ENTITIES = ENTITIES = {}));
package/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["types.ts"],"names":["ENTITIES"],"mappings":";;;;;;IAaYA,Q;;;WAAAA,Q;AAAAA,EAAAA,Q;AAAAA,EAAAA,Q;AAAAA,EAAAA,Q;GAAAA,Q,wBAAAA,Q","sourcesContent":["import { DocumentClient } from \"aws-sdk/clients/dynamodb\";\nimport { Table, Entity } from \"dynamodb-toolbox\";\nimport { DynamoDBTypes, TableConstructor } from \"dynamodb-toolbox/dist/classes/Table\";\nimport {\n EntityAttributeConfig,\n EntityCompositeAttributes\n} from \"dynamodb-toolbox/dist/classes/Entity\";\nimport { PrerenderingServiceStorageOperations as BasePrerenderingServiceStorageOperations } from \"@webiny/api-prerendering-service/types\";\n\nexport type AttributeDefinition = DynamoDBTypes | EntityAttributeConfig | EntityCompositeAttributes;\n\nexport type Attributes = Record<string, AttributeDefinition>;\n\nexport enum ENTITIES {\n RENDER = \"PrerenderingServiceRender\",\n QUEUE_JOB = \"PrerenderingServiceQueueJob\",\n TAG_URL_LINK = \"PrerenderingServiceTagUrlLink\"\n}\n\nexport interface PrerenderingServiceFactoryParams {\n documentClient: DocumentClient;\n table?: TableModifier;\n attributes?: Record<ENTITIES, Attributes>;\n}\n\nexport type Entities = \"render\" | \"queueJob\" | \"tagUrlLink\";\n\nexport interface PrerenderingServiceStorageOperations\n extends BasePrerenderingServiceStorageOperations {\n getTable(): Table;\n getEntities(): Record<Entities, Entity<any>>;\n}\n\nexport interface PrerenderingServiceFactory {\n (params: PrerenderingServiceFactoryParams): PrerenderingServiceStorageOperations;\n}\n\nexport interface TableModifier {\n (table: TableConstructor): TableConstructor;\n}\n"]}
1
+ {"version":3,"names":["ENTITIES"],"sources":["types.ts"],"sourcesContent":["import { DocumentClient } from \"aws-sdk/clients/dynamodb\";\nimport { Table, Entity } from \"dynamodb-toolbox\";\nimport { DynamoDBTypes, TableConstructor } from \"dynamodb-toolbox/dist/classes/Table\";\nimport {\n EntityAttributeConfig,\n EntityCompositeAttributes\n} from \"dynamodb-toolbox/dist/classes/Entity\";\nimport { PrerenderingServiceStorageOperations as BasePrerenderingServiceStorageOperations } from \"@webiny/api-prerendering-service/types\";\n\nexport type AttributeDefinition = DynamoDBTypes | EntityAttributeConfig | EntityCompositeAttributes;\n\nexport type Attributes = Record<string, AttributeDefinition>;\n\nexport enum ENTITIES {\n RENDER = \"PrerenderingServiceRender\",\n SETTINGS = \"PrerenderingServiceSettings\",\n QUEUE_JOB = \"PrerenderingServiceQueueJob\",\n TAG_PATH_LINK = \"PrerenderingServiceTagPathLink\"\n}\n\nexport interface PrerenderingServiceFactoryParams {\n documentClient: DocumentClient;\n table?: TableModifier;\n attributes?: Record<ENTITIES, Attributes>;\n}\n\nexport type Entities = \"render\" | \"queueJob\" | \"tagPathLink\";\n\nexport interface PrerenderingServiceStorageOperations\n extends BasePrerenderingServiceStorageOperations {\n getTable(): Table;\n getEntities(): Record<Entities, Entity<any>>;\n}\n\nexport interface PrerenderingServiceFactory {\n (params: PrerenderingServiceFactoryParams): PrerenderingServiceStorageOperations;\n}\n\nexport interface TableModifier {\n (table: TableConstructor): TableConstructor;\n}\n\nexport interface DataContainer<T> {\n PK: string;\n SK: string;\n data: T;\n}\n"],"mappings":";;;;;;IAaYA,Q;;;WAAAA,Q;EAAAA,Q;EAAAA,Q;EAAAA,Q;EAAAA,Q;GAAAA,Q,wBAAAA,Q"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["tagUrlLink.ts"],"names":["createTagUrlLinkEntity","params","entityName","attributes","table","Entity","name","PK","partitionKey","SK","sortKey","TYPE","type","namespace","url","value","key"],"mappings":";;;;;;;;;;;AAAA;;;;;;AASO,MAAMA,sBAAsB,GAAIC,MAAD,IAA0C;AAC5E,QAAM;AAAEC,IAAAA,UAAF;AAAcC,IAAAA,UAAd;AAA0BC,IAAAA;AAA1B,MAAoCH,MAA1C;AACA,SAAO,IAAII,uBAAJ,CAAW;AACdC,IAAAA,IAAI,EAAEJ,UADQ;AAEdE,IAAAA,KAFc;AAGdD,IAAAA,UAAU;AACNI,MAAAA,EAAE,EAAE;AACAC,QAAAA,YAAY,EAAE;AADd,OADE;AAINC,MAAAA,EAAE,EAAE;AACAC,QAAAA,OAAO,EAAE;AADT,OAJE;AAONC,MAAAA,IAAI,EAAE;AACFC,QAAAA,IAAI,EAAE;AADJ,OAPA;AAUNC,MAAAA,SAAS,EAAE;AACPD,QAAAA,IAAI,EAAE;AADC,OAVL;AAaNE,MAAAA,GAAG,EAAE;AACDF,QAAAA,IAAI,EAAE;AADL,OAbC;AAgBNG,MAAAA,KAAK,EAAE;AACHH,QAAAA,IAAI,EAAE;AADH,OAhBD;AAmBNI,MAAAA,GAAG,EAAE;AACDJ,QAAAA,IAAI,EAAE;AADL;AAnBC,OAsBFT,UAAU,IAAI,EAtBZ;AAHI,GAAX,CAAP;AA4BH,CA9BM","sourcesContent":["import { Entity, Table } from \"dynamodb-toolbox\";\nimport { Attributes } from \"~/types\";\n\ninterface CreateTagUrlLinkEntityParams {\n table: Table;\n entityName: string;\n attributes: Attributes;\n}\n\nexport const createTagUrlLinkEntity = (params: CreateTagUrlLinkEntityParams) => {\n const { entityName, attributes, table } = params;\n return new Entity({\n name: entityName,\n table,\n attributes: {\n PK: {\n partitionKey: true\n },\n SK: {\n sortKey: true\n },\n TYPE: {\n type: \"string\"\n },\n namespace: {\n type: \"string\"\n },\n url: {\n type: \"string\"\n },\n value: {\n type: \"string\"\n },\n key: {\n type: \"string\"\n },\n ...(attributes || {})\n }\n });\n};\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["index.ts"],"names":["createQueueJobStorageOperations","params","entity","createQueueJobPartitionKey","createQueueJobSortKey","id","createQueueJobType","createQueueJob","queueJob","keys","PK","SK","put","TYPE","ex","WebinyError","message","code","listQueueJobs","queryAllParams","partitionKey","options","gte","results","deleteQueueJobs","queueJobs","items","map","job","deleteBatch","table"],"mappings":";;;;;;;;;;;AAAA;;AAQA;;AACA;;AACA;;;;;;AAMO,MAAMA,+BAA+B,GACxCC,MAD2C,IAEI;AAC/C,QAAM;AAAEC,IAAAA;AAAF,MAAaD,MAAnB;;AAEA,QAAME,0BAA0B,GAAG,MAAc;AAC7C,WAAO,UAAP;AACH,GAFD;;AAGA,QAAMC,qBAAqB,GAAIC,EAAD,IAAwB;AAClD,WAAOA,EAAP;AACH,GAFD;;AAIA,QAAMC,kBAAkB,GAAG,MAAM;AAC7B,WAAO,cAAP;AACH,GAFD;;AAIA,QAAMC,cAAc,GAAG,MACnBN,MADmB,IAEC;AACpB,UAAM;AAAEO,MAAAA;AAAF,QAAeP,MAArB;AACA,UAAMQ,IAAI,GAAG;AACTC,MAAAA,EAAE,EAAEP,0BAA0B,EADrB;AAETQ,MAAAA,EAAE,EAAEP,qBAAqB,CAACI,QAAQ,CAACH,EAAV;AAFhB,KAAb;;AAKA,QAAI;AACA,YAAMH,MAAM,CAACU,GAAP,+CACCJ,QADD,GAECC,IAFD;AAGFI,QAAAA,IAAI,EAAEP,kBAAkB;AAHtB,SAAN;AAKA,aAAOE,QAAP;AACH,KAPD,CAOE,OAAOM,EAAP,EAAW;AACT,YAAM,IAAIC,cAAJ,CACFD,EAAE,CAACE,OAAH,IAAc,iCADZ,EAEFF,EAAE,CAACG,IAAH,IAAW,qBAFT,EAGF;AACIR,QAAAA,IADJ;AAEID,QAAAA;AAFJ,OAHE,CAAN;AAQH;AACJ,GA1BD;;AA4BA,QAAMU,aAAa,GAAG,YAAY;AAC9B,UAAMC,cAA8B,GAAG;AACnCjB,MAAAA,MADmC;AAEnCkB,MAAAA,YAAY,EAAEjB,0BAA0B,EAFL;AAGnCkB,MAAAA,OAAO,EAAE;AACLC,QAAAA,GAAG,EAAE;AADA;AAH0B,KAAvC;;AAQA,QAAI;AACA,YAAMC,OAAO,GAAG,MAAM,qBAAmBJ,cAAnB,CAAtB;AAEA,aAAO,2BAAajB,MAAb,EAAqBqB,OAArB,CAAP;AACH,KAJD,CAIE,OAAOT,EAAP,EAAW;AACT,YAAM,IAAIC,cAAJ,CACFD,EAAE,CAACE,OAAH,IAAc,oCADZ,EAEFF,EAAE,CAACG,IAAH,IAAW,uBAFT,EAGF;AACIG,QAAAA,YAAY,EAAED,cAAc,CAACC,YADjC;AAEIC,QAAAA,OAAO,EAAEF,cAAc,CAACE;AAF5B,OAHE,CAAN;AAQH;AACJ,GAvBD;;AAyBA,QAAMG,eAAe,GAAG,MACpBvB,MADoB,IAEnB;AACD,UAAM;AAAEwB,MAAAA;AAAF,QAAgBxB,MAAtB;AAEA,UAAMyB,KAAK,GAAGD,SAAS,CAACE,GAAV,CAAcC,GAAG,IAAI;AAC/B,aAAO1B,MAAM,CAAC2B,WAAP,CAAmB;AACtBnB,QAAAA,EAAE,EAAEP,0BAA0B,EADR;AAEtBQ,QAAAA,EAAE,EAAEP,qBAAqB,CAACwB,GAAG,CAACvB,EAAL;AAFH,OAAnB,CAAP;AAIH,KALa,CAAd;;AAOA,QAAI;AACA,YAAM,+BAAc;AAChByB,QAAAA,KAAK,EAAE5B,MAAM,CAAC4B,KADE;AAEhBJ,QAAAA;AAFgB,OAAd,CAAN;AAIA,aAAOD,SAAP;AACH,KAND,CAME,OAAOX,EAAP,EAAW;AACT,YAAM,IAAIC,cAAJ,CACFD,EAAE,CAACE,OAAH,IAAc,sCADZ,EAEFF,EAAE,CAACG,IAAH,IAAW,yBAFT,EAGF;AACIQ,QAAAA;AADJ,OAHE,CAAN;AAOH;AACJ,GA3BD;;AA6BA,SAAO;AACHlB,IAAAA,cADG;AAEHiB,IAAAA,eAFG;AAGHN,IAAAA;AAHG,GAAP;AAKH,CAvGM","sourcesContent":["import WebinyError from \"@webiny/error\";\nimport {\n PrerenderingServiceQueueJobStorageOperations,\n PrerenderingServiceStorageOperationsCreateQueueJobParams,\n PrerenderingServiceStorageOperationsDeleteQueueJobsParams,\n QueueJob\n} from \"@webiny/api-prerendering-service/types\";\nimport { Entity } from \"dynamodb-toolbox\";\nimport { batchWriteAll } from \"@webiny/db-dynamodb/utils/batchWrite\";\nimport { queryAll, QueryAllParams } from \"@webiny/db-dynamodb/utils/query\";\nimport { cleanupItems } from \"@webiny/db-dynamodb/utils/cleanup\";\n\nexport interface CreateQueueJobStorageOperationsParams {\n entity: Entity<any>;\n}\n\nexport const createQueueJobStorageOperations = (\n params: CreateQueueJobStorageOperationsParams\n): PrerenderingServiceQueueJobStorageOperations => {\n const { entity } = params;\n\n const createQueueJobPartitionKey = (): string => {\n return \"PS#Q#JOB\";\n };\n const createQueueJobSortKey = (id: string): string => {\n return id;\n };\n\n const createQueueJobType = () => {\n return \"ps.queue.job\";\n };\n\n const createQueueJob = async (\n params: PrerenderingServiceStorageOperationsCreateQueueJobParams\n ): Promise<QueueJob> => {\n const { queueJob } = params;\n const keys = {\n PK: createQueueJobPartitionKey(),\n SK: createQueueJobSortKey(queueJob.id)\n };\n\n try {\n await entity.put({\n ...queueJob,\n ...keys,\n TYPE: createQueueJobType()\n });\n return queueJob;\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not create render record.\",\n ex.code || \"CREATE_RENDER_ERROR\",\n {\n keys,\n queueJob\n }\n );\n }\n };\n\n const listQueueJobs = async () => {\n const queryAllParams: QueryAllParams = {\n entity,\n partitionKey: createQueueJobPartitionKey(),\n options: {\n gte: \" \"\n }\n };\n\n try {\n const results = await queryAll<QueueJob>(queryAllParams);\n\n return cleanupItems(entity, results);\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not list queue jobs records.\",\n ex.code || \"LIST_QUEUE_JOBS_ERROR\",\n {\n partitionKey: queryAllParams.partitionKey,\n options: queryAllParams.options\n }\n );\n }\n };\n\n const deleteQueueJobs = async (\n params: PrerenderingServiceStorageOperationsDeleteQueueJobsParams\n ) => {\n const { queueJobs } = params;\n\n const items = queueJobs.map(job => {\n return entity.deleteBatch({\n PK: createQueueJobPartitionKey(),\n SK: createQueueJobSortKey(job.id)\n });\n });\n\n try {\n await batchWriteAll({\n table: entity.table,\n items\n });\n return queueJobs;\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not delete queue jobs records.\",\n ex.code || \"DELETE_QUEUE_JOBS_ERROR\",\n {\n queueJobs\n }\n );\n }\n };\n\n return {\n createQueueJob,\n deleteQueueJobs,\n listQueueJobs\n };\n};\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["index.ts"],"names":["createRenderStorageOperations","params","entity","tagUrlLinkEntity","createRenderPartitionKey","namespace","startsWith","replace","createRenderSortKey","url","createRenderType","createTagUrlLinkPartitionKey","tag","key","createTagUrlLinkSortKey","values","value","push","join","createTagUrlLinkType","getRender","where","keys","PK","SK","result","ex","WebinyError","message","code","createRender","render","put","TYPE","deleteRender","delete","listRendersByTag","links","listTagUrlLinks","items","map","link","getBatch","results","table","listRenders","queryAllParams","partitionKey","options","gte","createTagUrlLinks","tagUrlLinks","item","putBatch","deleteTagUrlLinks","tags","deleteBatch","beginsWith"],"mappings":";;;;;;;;;;;AAAA;;AAcA;;AACA;;AACA;;AACA;;AAEA;;;;;;AAkBO,MAAMA,6BAA6B,GACtCC,MADyC,IAEI;AAC7C,QAAM;AAAEC,IAAAA,MAAF;AAAUC,IAAAA;AAAV,MAA+BF,MAArC;;AAEA,QAAMG,wBAAwB,GAAIC,SAAD,IAA+B;AAC5D;AACR;AACA;AACQ,QAAIA,SAAS,CAACC,UAAV,CAAqB,IAArB,CAAJ,EAAgC;AAC5BD,MAAAA,SAAS,GAAGA,SAAS,CAACE,OAAV,CAAkB,KAAlB,EAAyB,EAAzB,CAAZ;AACH;;AACD,WAAQ,KAAIF,SAAU,YAAtB;AACH,GARD;;AAUA,QAAMG,mBAAmB,GAAIC,GAAD,IAAyB;AACjD,WAAOA,GAAP;AACH,GAFD;;AAIA,QAAMC,gBAAgB,GAAG,MAAc;AACnC,WAAO,WAAP;AACH,GAFD;;AAIA,QAAMC,4BAA4B,GAAIV,MAAD,IAAwD;AACzF,UAAM;AAAEW,MAAAA;AAAF,QAAUX,MAAhB;AACA,QAAI;AAAEI,MAAAA;AAAF,QAAgBJ,MAApB;;AACA,QAAII,SAAS,CAACC,UAAV,CAAqB,IAArB,CAAJ,EAAgC;AAC5BD,MAAAA,SAAS,GAAGA,SAAS,CAACE,OAAV,CAAkB,KAAlB,EAAyB,EAAzB,CAAZ;AACH;;AACD,WAAQ,KAAIF,SAAU,WAAUO,GAAG,CAACC,GAAI,EAAxC;AACH,GAPD;;AASA,QAAMC,uBAAuB,GAAIb,MAAD,IAAmD;AAC/E,UAAM;AAAEW,MAAAA,GAAF;AAAOH,MAAAA;AAAP,QAAeR,MAArB;AACA,UAAMc,MAAM,GAAG,CAACH,GAAG,CAACI,KAAL,CAAf;;AACA,QAAIP,GAAJ,EAAS;AACLM,MAAAA,MAAM,CAACE,IAAP,CAAYR,GAAZ;AACH;;AACD,WAAOM,MAAM,CAACG,IAAP,CAAY,GAAZ,CAAP;AACH,GAPD;;AASA,QAAMC,oBAAoB,GAAG,MAAc;AACvC,WAAO,eAAP;AACH,GAFD;;AAIA,QAAMC,SAAS,GAAG,MACdnB,MADc,IAEW;AACzB,UAAM;AAAEoB,MAAAA;AAAF,QAAYpB,MAAlB;AAEA,UAAMqB,IAAI,GAAG;AACTC,MAAAA,EAAE,EAAEnB,wBAAwB,CAACiB,KAAK,CAAChB,SAAP,CADnB;AAETmB,MAAAA,EAAE,EAAEhB,mBAAmB,CAACa,KAAK,CAACZ,GAAP;AAFd,KAAb;;AAKA,QAAI;AACA,YAAMgB,MAAM,GAAG,MAAM,cAAY;AAC7BvB,QAAAA,MAD6B;AAE7BoB,QAAAA;AAF6B,OAAZ,CAArB;AAIA,aAAO,0BAAYpB,MAAZ,EAAoBuB,MAApB,CAAP;AACH,KAND,CAME,OAAOC,EAAP,EAAW;AACT,YAAM,IAAIC,cAAJ,CACFD,EAAE,CAACE,OAAH,IAAc,2CADZ,EAEFF,EAAE,CAACG,IAAH,IAAW,kBAFT,EAGF;AACIP,QAAAA,IADJ;AAEIrB,QAAAA;AAFJ,OAHE,CAAN;AAQH;AACJ,GA1BD;;AA2BA,QAAM6B,YAAY,GAAG,MAAO7B,MAAP,IAA0E;AAC3F,UAAM;AAAE8B,MAAAA;AAAF,QAAa9B,MAAnB;AAEA,UAAMqB,IAAI,GAAG;AACTC,MAAAA,EAAE,EAAEnB,wBAAwB,CAAC2B,MAAM,CAAC1B,SAAR,CADnB;AAETmB,MAAAA,EAAE,EAAEhB,mBAAmB,CAACuB,MAAM,CAACtB,GAAR;AAFd,KAAb;;AAKA,QAAI;AACA,YAAMP,MAAM,CAAC8B,GAAP,+CACCD,MADD,GAECT,IAFD;AAGFW,QAAAA,IAAI,EAAEvB,gBAAgB;AAHpB,SAAN;AAKA,aAAOqB,MAAP;AACH,KAPD,CAOE,OAAOL,EAAP,EAAW;AACT,YAAM,IAAIC,cAAJ,CACFD,EAAE,CAACE,OAAH,IAAc,iCADZ,EAEFF,EAAE,CAACG,IAAH,IAAW,qBAFT,EAGF;AACIP,QAAAA,IADJ;AAEIS,QAAAA;AAFJ,OAHE,CAAN;AAQH;AACJ,GAzBD;;AA0BA,QAAMG,YAAY,GAAG,MACjBjC,MADiB,IAED;AAChB,UAAM;AAAE8B,MAAAA;AAAF,QAAa9B,MAAnB;AAEA,UAAMqB,IAAI,GAAG;AACTC,MAAAA,EAAE,EAAEnB,wBAAwB,CAAC2B,MAAM,CAAC1B,SAAR,CADnB;AAETmB,MAAAA,EAAE,EAAEhB,mBAAmB,CAACuB,MAAM,CAACtB,GAAR;AAFd,KAAb;;AAKA,QAAI;AACA,YAAMP,MAAM,CAACiC,MAAP,CAAcb,IAAd,CAAN;AACH,KAFD,CAEE,OAAOI,EAAP,EAAW;AACT,YAAM,IAAIC,cAAJ,CACFD,EAAE,CAACE,OAAH,IAAc,iCADZ,EAEFF,EAAE,CAACG,IAAH,IAAW,qBAFT,EAGF;AACIP,QAAAA,IADJ;AAEIS,QAAAA;AAFJ,OAHE,CAAN;AAQH;AACJ,GAtBD;;AAwBA,QAAMK,gBAAgB,GAAG,MACrBnC,MADqB,IAEpB;AACD,UAAM;AAAEoB,MAAAA;AAAF,QAAYpB,MAAlB;AACA,UAAM;AAAEI,MAAAA,SAAF;AAAaO,MAAAA;AAAb,QAAqBS,KAA3B;AACA;AACR;AACA;;AACQ,QAAI,CAACT,GAAD,IAAQ,CAACA,GAAG,CAACC,GAAjB,EAAsB;AAClB,aAAO,EAAP;AACH;;AAED,UAAMwB,KAAK,GAAG,MAAMC,eAAe,CAAC;AAChCjB,MAAAA,KAAK,EAAE;AACHhB,QAAAA,SADG;AAEHO,QAAAA;AAFG;AADyB,KAAD,CAAnC;AAOA,UAAM2B,KAAK,GAAGF,KAAK,CAACG,GAAN,CAAUC,IAAI,IAAI;AAC5B,aAAOvC,MAAM,CAACwC,QAAP,CAAgB;AACnBnB,QAAAA,EAAE,EAAEnB,wBAAwB,CAACC,SAAD,CADT;AAEnBmB,QAAAA,EAAE,EAAEhB,mBAAmB,CAACiC,IAAI,CAAChC,GAAN;AAFJ,OAAhB,CAAP;AAIH,KALa,CAAd;;AAMA,QAAI;AACA,YAAMkC,OAAO,GAAG,MAAM,6BAAqB;AACvCC,QAAAA,KAAK,EAAE1C,MAAM,CAAC0C,KADyB;AAEvCL,QAAAA;AAFuC,OAArB,CAAtB;AAIA,aAAO,2BAAarC,MAAb,EAAqByC,OAArB,CAAP;AACH,KAND,CAME,OAAOjB,EAAP,EAAW;AACT,YAAM,IAAIC,cAAJ,CACFD,EAAE,CAACE,OAAH,IAAc,4CADZ,EAEFF,EAAE,CAACG,IAAH,IAAW,yBAFT,EAGF;AACIQ,QAAAA;AADJ,OAHE,CAAN;AAOH;AACJ,GAxCD;;AA0CA,QAAMQ,WAAW,GAAG,MAAO5C,MAAP,IAAyE;AACzF,UAAM;AAAEoB,MAAAA;AAAF,QAAYpB,MAAlB;AACA,UAAM;AAAEI,MAAAA,SAAF;AAAaO,MAAAA;AAAb,QAAqBS,KAA3B;;AAEA,QAAIT,GAAJ,EAAS;AACL,aAAOwB,gBAAgB,CAACnC,MAAD,CAAvB;AACH;;AAED,UAAM6C,cAA8B,GAAG;AACnC5C,MAAAA,MADmC;AAEnC6C,MAAAA,YAAY,EAAE3C,wBAAwB,CAACC,SAAD,CAFH;AAGnC2C,MAAAA,OAAO,EAAE;AACLC,QAAAA,GAAG,EAAE;AADA;AAH0B,KAAvC;;AAQA,QAAI;AACA,YAAMN,OAAO,GAAG,MAAM,qBAAiBG,cAAjB,CAAtB;AAEA,aAAO,2BAAa5C,MAAb,EAAqByC,OAArB,CAAP;AACH,KAJD,CAIE,OAAOjB,EAAP,EAAW;AACT,YAAM,IAAIC,cAAJ,CACFD,EAAE,CAACE,OAAH,IAAc,gCADZ,EAEFF,EAAE,CAACG,IAAH,IAAW,mBAFT,EAGF;AACIkB,QAAAA,YAAY,EAAED,cAAc,CAACC,YADjC;AAEIC,QAAAA,OAAO,EAAEF,cAAc,CAACE;AAF5B,OAHE,CAAN;AAQH;AACJ,GA9BD;;AAgCA,QAAME,iBAAiB,GAAG,MACtBjD,MADsB,IAErB;AACD,UAAM;AAAEkD,MAAAA;AAAF,QAAkBlD,MAAxB;AAEA,UAAMsC,KAAK,GAAGY,WAAW,CAACX,GAAZ,CAAgBY,IAAI,IAAI;AAClC,aAAOjD,gBAAgB,CAACkD,QAAjB,iCACAD,IADA;AAEHnB,QAAAA,IAAI,EAAEd,oBAAoB,EAFvB;AAGHI,QAAAA,EAAE,EAAEZ,4BAA4B,CAAC;AAC7BN,UAAAA,SAAS,EAAE+C,IAAI,CAAC/C,SADa;AAE7BO,UAAAA,GAAG,EAAEwC;AAFwB,SAAD,CAH7B;AAOH5B,QAAAA,EAAE,EAAEV,uBAAuB,CAAC;AACxBF,UAAAA,GAAG,EAAEwC,IADmB;AAExB3C,UAAAA,GAAG,EAAE2C,IAAI,CAAC3C;AAFc,SAAD;AAPxB,SAAP;AAYH,KAba,CAAd;;AAeA,QAAI;AACA,YAAM,+BAAc;AAChBmC,QAAAA,KAAK,EAAEzC,gBAAgB,CAACyC,KADR;AAEhBL,QAAAA;AAFgB,OAAd,CAAN;AAIA,aAAOY,WAAP;AACH,KAND,CAME,OAAOzB,EAAP,EAAW;AACT,YAAM,IAAIC,cAAJ,CACFD,EAAE,CAACE,OAAH,IAAc,sCADZ,EAEFF,EAAE,CAACG,IAAH,IAAW,4BAFT,EAGF;AACIsB,QAAAA;AADJ,OAHE,CAAN;AAOH;AACJ,GAnCD;;AAqCA,QAAMG,iBAAiB,GAAG,MACtBrD,MADsB,IAEN;AAChB,UAAM;AAAEI,MAAAA,SAAF;AAAakD,MAAAA,IAAb;AAAmB9C,MAAAA;AAAnB,QAA2BR,MAAjC;AACA,UAAMsC,KAAK,GAAGgB,IAAI,CAACf,GAAL,CAAS5B,GAAG,IAAI;AAC1B,aAAOT,gBAAgB,CAACqD,WAAjB,CAA6B;AAChCjC,QAAAA,EAAE,EAAEZ,4BAA4B,CAAC;AAC7BC,UAAAA,GAD6B;AAE7BP,UAAAA;AAF6B,SAAD,CADA;AAKhCmB,QAAAA,EAAE,EAAEV,uBAAuB,CAAC;AACxBF,UAAAA,GADwB;AAExBH,UAAAA;AAFwB,SAAD;AALK,OAA7B,CAAP;AAUH,KAXa,CAAd;;AAaA,QAAI;AACA,YAAM,+BAAc;AAChBmC,QAAAA,KAAK,EAAEzC,gBAAgB,CAACyC,KADR;AAEhBL,QAAAA;AAFgB,OAAd,CAAN;AAIH,KALD,CAKE,OAAOb,EAAP,EAAW;AACT,YAAM,IAAIC,cAAJ,CACFD,EAAE,CAACE,OAAH,IAAc,sCADZ,EAEFF,EAAE,CAACG,IAAH,IAAW,4BAFT,EAGF;AACI0B,QAAAA,IADJ;AAEIlD,QAAAA,SAFJ;AAGII,QAAAA;AAHJ,OAHE,CAAN;AASH;AACJ,GAjCD;;AAmCA,QAAM6B,eAAe,GAAG,MACpBrC,MADoB,IAEnB;AACD,UAAM;AAAEoB,MAAAA;AAAF,QAAYpB,MAAlB;AACA,UAAM;AAAEI,MAAAA,SAAF;AAAaO,MAAAA;AAAb,QAAqBS,KAA3B;AAEA,UAAM0B,YAAY,GAAGpC,4BAA4B,CAAC;AAC9CN,MAAAA,SAD8C;AAE9CO,MAAAA;AAF8C,KAAD,CAAjD;AAKA,UAAMoC,OAAoC,GAAG,EAA7C;;AACA,QAAIpC,GAAG,CAACI,KAAR,EAAe;AACXgC,MAAAA,OAAO,CAACS,UAAR,GAAsB,GAAE7C,GAAG,CAACI,KAAM,GAAlC;AACH,KAFD,MAEO;AACHgC,MAAAA,OAAO,CAACC,GAAR,GAAc,GAAd;AACH;;AAED,UAAMH,cAA8B,GAAG;AACnC5C,MAAAA,MAAM,EAAEC,gBAD2B;AAEnC4C,MAAAA,YAFmC;AAGnCC,MAAAA;AAHmC,KAAvC;;AAMA,QAAI;AACA,YAAML,OAAO,GAAG,MAAM,qBAAqBG,cAArB,CAAtB;AAEA,aAAO,2BAAa3C,gBAAb,EAA+BwC,OAA/B,CAAP;AACH,KAJD,CAIE,OAAOjB,EAAP,EAAW;AACT,YAAM,IAAIC,cAAJ,CACFD,EAAE,CAACE,OAAH,IAAc,oCADZ,EAEFF,EAAE,CAACG,IAAH,IAAW,yBAFT,EAGF;AACIkB,QAAAA,YADJ;AAEIC,QAAAA;AAFJ,OAHE,CAAN;AAQH;AACJ,GAtCD;;AAwCA,SAAO;AACHlB,IAAAA,YADG;AAEHI,IAAAA,YAFG;AAGHW,IAAAA,WAHG;AAIHzB,IAAAA,SAJG;AAKH8B,IAAAA,iBALG;AAMHI,IAAAA,iBANG;AAOHhB,IAAAA;AAPG,GAAP;AASH,CA7TM","sourcesContent":["import WebinyError from \"@webiny/error\";\nimport {\n PrerenderingServiceRenderStorageOperations,\n PrerenderingServiceStorageOperationsCreateRenderParams,\n PrerenderingServiceStorageOperationsCreateTagUrlLinksParams,\n PrerenderingServiceStorageOperationsDeleteRenderParams,\n PrerenderingServiceStorageOperationsDeleteTagUrlLinksParams,\n PrerenderingServiceStorageOperationsGetRenderParams,\n PrerenderingServiceStorageOperationsListRendersParams,\n PrerenderingServiceStorageOperationsListTagUrlLinksParams,\n Render,\n TagUrlLink\n} from \"@webiny/api-prerendering-service/types\";\nimport { Entity } from \"dynamodb-toolbox\";\nimport { get } from \"@webiny/db-dynamodb/utils/get\";\nimport { queryAll, QueryAllParams } from \"@webiny/db-dynamodb/utils/query\";\nimport { batchReadAll } from \"@webiny/db-dynamodb/utils/batchRead\";\nimport { batchWriteAll } from \"@webiny/db-dynamodb/utils/batchWrite\";\nimport { Tag } from \"@webiny/api-prerendering-service/queue/add/types\";\nimport { cleanupItem, cleanupItems } from \"@webiny/db-dynamodb/utils/cleanup\";\nimport { queryOptions as DynamoDBToolboxQueryOptions } from \"dynamodb-toolbox/dist/classes/Table\";\n\nexport interface CreateRenderStorageOperationsParams {\n entity: Entity<any>;\n tagUrlLinkEntity: Entity<any>;\n}\n\nexport interface CreateTagUrlLinkPartitionKeyParams {\n namespace: string;\n tag: Pick<Tag, \"key\">;\n}\n\nexport interface CreateTagUrlLinkSortKeyParams {\n tag: Tag;\n url?: string;\n}\n\nexport const createRenderStorageOperations = (\n params: CreateRenderStorageOperationsParams\n): PrerenderingServiceRenderStorageOperations => {\n const { entity, tagUrlLinkEntity } = params;\n\n const createRenderPartitionKey = (namespace: string): string => {\n /**\n * For backwards compatibility remove the T# if it exists.\n */\n if (namespace.startsWith(\"T#\")) {\n namespace = namespace.replace(/^T#/, \"\");\n }\n return `T#${namespace}#PS#RENDER`;\n };\n\n const createRenderSortKey = (url: string): string => {\n return url;\n };\n\n const createRenderType = (): string => {\n return \"ps.render\";\n };\n\n const createTagUrlLinkPartitionKey = (params: CreateTagUrlLinkPartitionKeyParams): string => {\n const { tag } = params;\n let { namespace } = params;\n if (namespace.startsWith(\"T#\")) {\n namespace = namespace.replace(/^T#/, \"\");\n }\n return `T#${namespace}#PS#TAG#${tag.key}`;\n };\n\n const createTagUrlLinkSortKey = (params: CreateTagUrlLinkSortKeyParams): string => {\n const { tag, url } = params;\n const values = [tag.value];\n if (url) {\n values.push(url);\n }\n return values.join(\"#\");\n };\n\n const createTagUrlLinkType = (): string => {\n return \"ps.tagUrlLink\";\n };\n\n const getRender = async (\n params: PrerenderingServiceStorageOperationsGetRenderParams\n ): Promise<Render | null> => {\n const { where } = params;\n\n const keys = {\n PK: createRenderPartitionKey(where.namespace),\n SK: createRenderSortKey(where.url)\n };\n\n try {\n const result = await get<Render>({\n entity,\n keys\n });\n return cleanupItem(entity, result);\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not get render record by given key.\",\n ex.code || \"GET_RENDER_ERROR\",\n {\n keys,\n params\n }\n );\n }\n };\n const createRender = async (params: PrerenderingServiceStorageOperationsCreateRenderParams) => {\n const { render } = params;\n\n const keys = {\n PK: createRenderPartitionKey(render.namespace),\n SK: createRenderSortKey(render.url)\n };\n\n try {\n await entity.put({\n ...render,\n ...keys,\n TYPE: createRenderType()\n });\n return render;\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not create render record.\",\n ex.code || \"CREATE_RENDER_ERROR\",\n {\n keys,\n render\n }\n );\n }\n };\n const deleteRender = async (\n params: PrerenderingServiceStorageOperationsDeleteRenderParams\n ): Promise<void> => {\n const { render } = params;\n\n const keys = {\n PK: createRenderPartitionKey(render.namespace),\n SK: createRenderSortKey(render.url)\n };\n\n try {\n await entity.delete(keys);\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not delete render record.\",\n ex.code || \"DELETE_RENDER_ERROR\",\n {\n keys,\n render\n }\n );\n }\n };\n\n const listRendersByTag = async (\n params: PrerenderingServiceStorageOperationsListRendersParams\n ) => {\n const { where } = params;\n const { namespace, tag } = where;\n /**\n * Possibly there is no tag.key so no need to go further\n */\n if (!tag || !tag.key) {\n return [];\n }\n\n const links = await listTagUrlLinks({\n where: {\n namespace,\n tag\n }\n });\n\n const items = links.map(link => {\n return entity.getBatch({\n PK: createRenderPartitionKey(namespace),\n SK: createRenderSortKey(link.url)\n });\n });\n try {\n const results = await batchReadAll<Render>({\n table: entity.table,\n items\n });\n return cleanupItems(entity, results);\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not list render records after links.\",\n ex.code || \"LIST_LINKS_RENDER_ERROR\",\n {\n links\n }\n );\n }\n };\n\n const listRenders = async (params: PrerenderingServiceStorageOperationsListRendersParams) => {\n const { where } = params;\n const { namespace, tag } = where;\n\n if (tag) {\n return listRendersByTag(params);\n }\n\n const queryAllParams: QueryAllParams = {\n entity,\n partitionKey: createRenderPartitionKey(namespace),\n options: {\n gte: \" \"\n }\n };\n\n try {\n const results = await queryAll<Render>(queryAllParams);\n\n return cleanupItems(entity, results);\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not list render records.\",\n ex.code || \"LIST_RENDER_ERROR\",\n {\n partitionKey: queryAllParams.partitionKey,\n options: queryAllParams.options\n }\n );\n }\n };\n\n const createTagUrlLinks = async (\n params: PrerenderingServiceStorageOperationsCreateTagUrlLinksParams\n ) => {\n const { tagUrlLinks } = params;\n\n const items = tagUrlLinks.map(item => {\n return tagUrlLinkEntity.putBatch({\n ...item,\n TYPE: createTagUrlLinkType(),\n PK: createTagUrlLinkPartitionKey({\n namespace: item.namespace,\n tag: item\n }),\n SK: createTagUrlLinkSortKey({\n tag: item,\n url: item.url\n })\n });\n });\n\n try {\n await batchWriteAll({\n table: tagUrlLinkEntity.table,\n items\n });\n return tagUrlLinks;\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not create tagUrlLink records.\",\n ex.code || \"CREATE_URL_TAG_LINKS_ERROR\",\n {\n tagUrlLinks\n }\n );\n }\n };\n\n const deleteTagUrlLinks = async (\n params: PrerenderingServiceStorageOperationsDeleteTagUrlLinksParams\n ): Promise<void> => {\n const { namespace, tags, url } = params;\n const items = tags.map(tag => {\n return tagUrlLinkEntity.deleteBatch({\n PK: createTagUrlLinkPartitionKey({\n tag,\n namespace\n }),\n SK: createTagUrlLinkSortKey({\n tag,\n url\n })\n });\n });\n\n try {\n await batchWriteAll({\n table: tagUrlLinkEntity.table,\n items\n });\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not delete tagUrlLink records.\",\n ex.code || \"DELETE_URL_TAG_LINKS_ERROR\",\n {\n tags,\n namespace,\n url\n }\n );\n }\n };\n\n const listTagUrlLinks = async (\n params: PrerenderingServiceStorageOperationsListTagUrlLinksParams\n ) => {\n const { where } = params;\n const { namespace, tag } = where;\n\n const partitionKey = createTagUrlLinkPartitionKey({\n namespace,\n tag\n });\n\n const options: DynamoDBToolboxQueryOptions = {};\n if (tag.value) {\n options.beginsWith = `${tag.value}#`;\n } else {\n options.gte = \" \";\n }\n\n const queryAllParams: QueryAllParams = {\n entity: tagUrlLinkEntity,\n partitionKey,\n options\n };\n\n try {\n const results = await queryAll<TagUrlLink>(queryAllParams);\n\n return cleanupItems(tagUrlLinkEntity, results);\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not list tagUrlLink records.\",\n ex.code || \"LIST_TAG_URL_LINK_ERROR\",\n {\n partitionKey,\n options\n }\n );\n }\n };\n\n return {\n createRender,\n deleteRender,\n listRenders,\n getRender,\n createTagUrlLinks,\n deleteTagUrlLinks,\n listTagUrlLinks\n };\n};\n"]}