@webiny/api-prerendering-service-so-ddb 5.28.0 → 5.29.0-beta.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/definitions/render.js +3 -9
- package/definitions/render.js.map +1 -1
- package/definitions/renderLegacy.d.ts +8 -0
- package/definitions/renderLegacy.js +56 -0
- package/definitions/renderLegacy.js.map +1 -0
- package/definitions/settings.d.ts +8 -0
- package/definitions/settings.js +44 -0
- package/definitions/settings.js.map +1 -0
- package/definitions/table.js +7 -1
- package/definitions/table.js.map +1 -1
- package/definitions/tagPathLink.d.ts +9 -0
- package/definitions/tagPathLink.js +50 -0
- package/definitions/tagPathLink.js.map +1 -0
- package/definitions/{tagUrlLink.d.ts → tagPathLinkLegacy.d.ts} +0 -0
- package/definitions/{tagUrlLink.js → tagPathLinkLegacy.js} +0 -0
- package/definitions/tagPathLinkLegacy.js.map +1 -0
- package/index.js +17 -6
- package/index.js.map +1 -1
- package/operations/{queueJob/index.d.ts → queueJob.d.ts} +0 -0
- package/operations/{queueJob/index.js → queueJob.js} +0 -0
- package/operations/queueJob.js.map +1 -0
- package/operations/{render/index.d.ts → render.d.ts} +12 -7
- package/operations/{render/index.js → render.js} +120 -77
- package/operations/render.js.map +1 -0
- package/operations/settings.d.ts +6 -0
- package/operations/settings.js +79 -0
- package/operations/settings.js.map +1 -0
- package/package.json +9 -9
- package/types.d.ts +8 -2
- package/types.js +2 -1
- package/types.js.map +1 -1
- package/definitions/tagUrlLink.js.map +0 -1
- package/operations/queueJob/index.js.map +0 -1
- package/operations/render/index.js.map +0 -1
    
        package/definitions/render.js
    CHANGED
    
    | @@ -34,20 +34,14 @@ const createRenderEntity = params => { | |
| 34 34 | 
             
                  TYPE: {
         | 
| 35 35 | 
             
                    type: "string"
         | 
| 36 36 | 
             
                  },
         | 
| 37 | 
            -
                   | 
| 37 | 
            +
                  GSI1_PK: {
         | 
| 38 38 | 
             
                    type: "string"
         | 
| 39 39 | 
             
                  },
         | 
| 40 | 
            -
                   | 
| 40 | 
            +
                  GSI1_SK: {
         | 
| 41 41 | 
             
                    type: "string"
         | 
| 42 42 | 
             
                  },
         | 
| 43 | 
            -
                   | 
| 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,"names":["createRenderEntity","params","entityName","attributes","table","Entity","name","PK","partitionKey","SK","sortKey","TYPE","type"," | 
| 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"}
         | 
    
        package/definitions/table.js
    CHANGED
    
    | @@ -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);
         | 
    
        package/definitions/table.js.map
    CHANGED
    
    | @@ -1 +1 @@ | |
| 1 | 
            -
            {"version":3,"names":["createTable","params","table","documentClient","tableConfig","name","process","env","DB_TABLE_PRERENDERING_SERVICE","DB_TABLE","partitionKey","sortKey","DocumentClient","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    };\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; | 
| 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"}
         | 
| 
            File without changes
         | 
| 
            File without changes
         | 
| @@ -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  | 
| 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 | 
            -
                 | 
| 73 | 
            -
                  entityName: _types.ENTITIES. | 
| 81 | 
            +
                tagPathLink: (0, _tagPathLink.createTagPathLinkEntity)({
         | 
| 82 | 
            +
                  entityName: _types.ENTITIES.TAG_PATH_LINK,
         | 
| 74 83 | 
             
                  table: tableInstance,
         | 
| 75 | 
            -
                  attributes: attributes ? attributes[_types.ENTITIES. | 
| 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 | 
            -
                 | 
| 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,"names":["reservedFields","isReserved","name","includes","WebinyError","createPrerenderingServiceStorageOperations","params","attributes","table","documentClient","Object","values","forEach","attrs","keys","tableInstance","createTable","entities","render","createRenderEntity","entityName","ENTITIES","RENDER","queueJob","createQueueJobEntity","QUEUE_JOB"," | 
| 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
         | 
| 
            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/ | 
| 3 | 
            +
            import { Tag } from "@webiny/api-prerendering-service/types";
         | 
| 4 4 | 
             
            export interface CreateRenderStorageOperationsParams {
         | 
| 5 5 | 
             
                entity: Entity<any>;
         | 
| 6 | 
            -
                 | 
| 6 | 
            +
                tagPathLinkEntity: Entity<any>;
         | 
| 7 7 | 
             
            }
         | 
| 8 | 
            -
            export interface  | 
| 9 | 
            -
                 | 
| 10 | 
            -
                tag:  | 
| 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  | 
| 17 | 
            +
            export interface CreateTagPathLinkSortKeyParams {
         | 
| 13 18 | 
             
                tag: Tag;
         | 
| 14 | 
            -
                 | 
| 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 | 
            -
                 | 
| 31 | 
            +
                tagPathLinkEntity
         | 
| 32 32 | 
             
              } = params;
         | 
| 33 33 |  | 
| 34 | 
            -
              const createRenderPartitionKey =  | 
| 34 | 
            +
              const createRenderPartitionKey = (tenant, path) => {
         | 
| 35 35 | 
             
                /**
         | 
| 36 36 | 
             
                 * For backwards compatibility remove the T# if it exists.
         | 
| 37 37 | 
             
                 */
         | 
| 38 | 
            -
                if ( | 
| 39 | 
            -
                   | 
| 38 | 
            +
                if (tenant.startsWith("T#")) {
         | 
| 39 | 
            +
                  tenant = tenant.replace(/^T#/, "");
         | 
| 40 40 | 
             
                }
         | 
| 41 41 |  | 
| 42 | 
            -
                return `T#${ | 
| 42 | 
            +
                return `T#${tenant}#PS#RENDER#${path}`;
         | 
| 43 43 | 
             
              };
         | 
| 44 44 |  | 
| 45 | 
            -
              const createRenderSortKey =  | 
| 46 | 
            -
                return  | 
| 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  | 
| 57 | 
            +
              const createTagPathLinkPartitionKey = params => {
         | 
| 54 58 | 
             
                const {
         | 
| 55 | 
            -
                  tag
         | 
| 59 | 
            +
                  tag,
         | 
| 60 | 
            +
                  path
         | 
| 56 61 | 
             
                } = params;
         | 
| 57 62 | 
             
                let {
         | 
| 58 | 
            -
                   | 
| 63 | 
            +
                  tenant
         | 
| 59 64 | 
             
                } = params;
         | 
| 60 65 |  | 
| 61 | 
            -
                if ( | 
| 62 | 
            -
                   | 
| 66 | 
            +
                if (tenant.startsWith("T#")) {
         | 
| 67 | 
            +
                  tenant = tenant.replace(/^T#/, "");
         | 
| 63 68 | 
             
                }
         | 
| 64 69 |  | 
| 65 | 
            -
                return `T#${ | 
| 70 | 
            +
                return `T#${tenant}#PS#TAG#${tag.key}#${tag.value}#${path}`;
         | 
| 66 71 | 
             
              };
         | 
| 67 72 |  | 
| 68 | 
            -
              const  | 
| 73 | 
            +
              const createTagPathLinkSortKey = params => {
         | 
| 69 74 | 
             
                const {
         | 
| 70 75 | 
             
                  tag,
         | 
| 71 | 
            -
                   | 
| 76 | 
            +
                  path
         | 
| 72 77 | 
             
                } = params;
         | 
| 73 78 | 
             
                const values = [tag.value];
         | 
| 74 79 |  | 
| 75 | 
            -
                if ( | 
| 76 | 
            -
                  values.push( | 
| 80 | 
            +
                if (path) {
         | 
| 81 | 
            +
                  values.push(path);
         | 
| 77 82 | 
             
                }
         | 
| 78 83 |  | 
| 79 84 | 
             
                return values.join("#");
         | 
| 80 85 | 
             
              };
         | 
| 81 86 |  | 
| 82 | 
            -
              const  | 
| 83 | 
            -
                 | 
| 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. | 
| 92 | 
            -
                  SK: createRenderSortKey( | 
| 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 | 
            -
                   | 
| 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. | 
| 115 | 
            -
                  SK: createRenderSortKey( | 
| 140 | 
            +
                  PK: createRenderPartitionKey(render.tenant, render.path),
         | 
| 141 | 
            +
                  SK: createRenderSortKey()
         | 
| 116 142 | 
             
                };
         | 
| 117 143 |  | 
| 118 144 | 
             
                try {
         | 
| 119 | 
            -
                  await entity.put(_objectSpread(_objectSpread( | 
| 120 | 
            -
                     | 
| 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. | 
| 137 | 
            -
                  SK: createRenderSortKey( | 
| 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 | 
            -
                   | 
| 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  | 
| 195 | 
            +
                const links = await listTagPathLinks({
         | 
| 167 196 | 
             
                  where: {
         | 
| 168 | 
            -
                     | 
| 197 | 
            +
                    tenant,
         | 
| 169 198 | 
             
                    tag
         | 
| 170 199 | 
             
                  }
         | 
| 171 200 | 
             
                });
         | 
| 172 201 | 
             
                const items = links.map(link => {
         | 
| 173 202 | 
             
                  return entity.getBatch({
         | 
| 174 | 
            -
                    PK: createRenderPartitionKey( | 
| 175 | 
            -
                    SK: createRenderSortKey( | 
| 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 | 
            -
                   | 
| 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:  | 
| 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  | 
| 254 | 
            +
              const createTagPathLinks = async params => {
         | 
| 225 255 | 
             
                const {
         | 
| 226 | 
            -
                   | 
| 256 | 
            +
                  tagPathLinks
         | 
| 227 257 | 
             
                } = params;
         | 
| 228 | 
            -
                const items =  | 
| 229 | 
            -
                  return  | 
| 230 | 
            -
                     | 
| 231 | 
            -
                     | 
| 232 | 
            -
             | 
| 233 | 
            -
                       | 
| 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 | 
            -
                     | 
| 275 | 
            +
                    GSI1_SK: createTagPathLinkGSI1SortKey({
         | 
| 236 276 | 
             
                      tag: item,
         | 
| 237 | 
            -
                       | 
| 277 | 
            +
                      path: item.path
         | 
| 238 278 | 
             
                    })
         | 
| 239 | 
            -
                  }) | 
| 279 | 
            +
                  });
         | 
| 240 280 | 
             
                });
         | 
| 241 281 |  | 
| 242 282 | 
             
                try {
         | 
| 243 283 | 
             
                  await (0, _batchWrite.batchWriteAll)({
         | 
| 244 | 
            -
                    table:  | 
| 284 | 
            +
                    table: tagPathLinkEntity.table,
         | 
| 245 285 | 
             
                    items
         | 
| 246 286 | 
             
                  });
         | 
| 247 | 
            -
                  return  | 
| 287 | 
            +
                  return tagPathLinks;
         | 
| 248 288 | 
             
                } catch (ex) {
         | 
| 249 | 
            -
                  throw new _error.default(ex.message || "Could not create  | 
| 250 | 
            -
                     | 
| 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  | 
| 295 | 
            +
              const deleteTagPathLinks = async params => {
         | 
| 256 296 | 
             
                const {
         | 
| 257 | 
            -
                   | 
| 297 | 
            +
                  tenant,
         | 
| 258 298 | 
             
                  tags,
         | 
| 259 | 
            -
                   | 
| 299 | 
            +
                  path
         | 
| 260 300 | 
             
                } = params;
         | 
| 261 301 | 
             
                const items = tags.map(tag => {
         | 
| 262 | 
            -
                  return  | 
| 263 | 
            -
                    PK:  | 
| 302 | 
            +
                  return tagPathLinkEntity.deleteBatch({
         | 
| 303 | 
            +
                    PK: createTagPathLinkPartitionKey({
         | 
| 264 304 | 
             
                      tag,
         | 
| 265 | 
            -
                       | 
| 305 | 
            +
                      tenant,
         | 
| 306 | 
            +
                      path
         | 
| 266 307 | 
             
                    }),
         | 
| 267 | 
            -
                    SK:  | 
| 308 | 
            +
                    SK: createTagPathLinkSortKey({
         | 
| 268 309 | 
             
                      tag,
         | 
| 269 | 
            -
                       | 
| 310 | 
            +
                      path
         | 
| 270 311 | 
             
                    })
         | 
| 271 312 | 
             
                  });
         | 
| 272 313 | 
             
                });
         | 
| 273 314 |  | 
| 274 315 | 
             
                try {
         | 
| 275 316 | 
             
                  await (0, _batchWrite.batchWriteAll)({
         | 
| 276 | 
            -
                    table:  | 
| 317 | 
            +
                    table: tagPathLinkEntity.table,
         | 
| 277 318 | 
             
                    items
         | 
| 278 319 | 
             
                  });
         | 
| 279 320 | 
             
                } catch (ex) {
         | 
| 280 | 
            -
                  throw new _error.default(ex.message || "Could not delete  | 
| 321 | 
            +
                  throw new _error.default(ex.message || "Could not delete tagPathLink records.", ex.code || "DELETE_URL_TAG_LINKS_ERROR", {
         | 
| 281 322 | 
             
                    tags,
         | 
| 282 | 
            -
                     | 
| 283 | 
            -
                     | 
| 323 | 
            +
                    tenant,
         | 
| 324 | 
            +
                    path
         | 
| 284 325 | 
             
                  });
         | 
| 285 326 | 
             
                }
         | 
| 286 327 | 
             
              };
         | 
| 287 328 |  | 
| 288 | 
            -
              const  | 
| 329 | 
            +
              const listTagPathLinks = async params => {
         | 
| 289 330 | 
             
                const {
         | 
| 290 331 | 
             
                  where
         | 
| 291 332 | 
             
                } = params;
         | 
| 292 333 | 
             
                const {
         | 
| 293 | 
            -
                   | 
| 334 | 
            +
                  tenant,
         | 
| 294 335 | 
             
                  tag
         | 
| 295 336 | 
             
                } = where;
         | 
| 296 | 
            -
                const partitionKey =  | 
| 297 | 
            -
                   | 
| 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. | 
| 348 | 
            +
                  options.beginsWith = `${tag.key}#`;
         | 
| 306 349 | 
             
                }
         | 
| 307 350 |  | 
| 308 351 | 
             
                const queryAllParams = {
         | 
| 309 | 
            -
                  entity:  | 
| 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)( | 
| 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  | 
| 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 | 
            -
                 | 
| 331 | 
            -
                 | 
| 332 | 
            -
                 | 
| 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. | 
| 3 | 
            +
            	"version": "5.29.0-beta.2",
         | 
| 4 4 | 
             
            	"main": "index.js",
         | 
| 5 5 | 
             
            	"repository": {
         | 
| 6 6 | 
             
            		"type": "git",
         | 
| @@ -18,8 +18,8 @@ | |
| 18 18 | 
             
            	"license": "MIT",
         | 
| 19 19 | 
             
            	"dependencies": {
         | 
| 20 20 | 
             
            		"@babel/runtime": "7.18.3",
         | 
| 21 | 
            -
            		"@webiny/api-prerendering-service": "5. | 
| 22 | 
            -
            		"@webiny/error": "5. | 
| 21 | 
            +
            		"@webiny/api-prerendering-service": "5.29.0-beta.2",
         | 
| 22 | 
            +
            		"@webiny/error": "5.29.0-beta.2",
         | 
| 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. | 
| 32 | 
            -
            		"@webiny/db": "^5. | 
| 33 | 
            -
            		"@webiny/db-dynamodb": "^5. | 
| 34 | 
            -
            		"@webiny/handler-aws": "^5. | 
| 35 | 
            -
            		"@webiny/project-utils": "^5. | 
| 31 | 
            +
            		"@webiny/cli": "^5.29.0-beta.2",
         | 
| 32 | 
            +
            		"@webiny/db": "^5.29.0-beta.2",
         | 
| 33 | 
            +
            		"@webiny/db-dynamodb": "^5.29.0-beta.2",
         | 
| 34 | 
            +
            		"@webiny/handler-aws": "^5.29.0-beta.2",
         | 
| 35 | 
            +
            		"@webiny/project-utils": "^5.29.0-beta.2",
         | 
| 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": " | 
| 58 | 
            +
            	"gitHead": "3a8c701139cca39dc1316d2452c6a3afdd7c1867"
         | 
| 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 | 
            -
                 | 
| 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" | " | 
| 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[" | 
| 14 | 
            +
              ENTITIES["TAG_PATH_LINK"] = "PrerenderingServiceTagPathLink";
         | 
| 14 15 | 
             
            })(ENTITIES || (exports.ENTITIES = ENTITIES = {}));
         | 
    
        package/types.js.map
    CHANGED
    
    | @@ -1 +1 @@ | |
| 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    QUEUE_JOB = \"PrerenderingServiceQueueJob\",\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,"names":["createTagUrlLinkEntity","params","entityName","attributes","table","Entity","name","PK","partitionKey","SK","sortKey","TYPE","type","namespace","url","value","key"],"sources":["tagUrlLink.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"}
         | 
| @@ -1 +0,0 @@ | |
| 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":["index.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 +0,0 @@ | |
| 1 | 
            -
            {"version":3,"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","get","cleanupItem","ex","WebinyError","message","code","createRender","render","put","TYPE","deleteRender","delete","listRendersByTag","links","listTagUrlLinks","items","map","link","getBatch","results","batchReadAll","table","cleanupItems","listRenders","queryAllParams","partitionKey","options","gte","queryAll","createTagUrlLinks","tagUrlLinks","item","putBatch","batchWriteAll","deleteTagUrlLinks","tags","deleteBatch","beginsWith"],"sources":["index.ts"],"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"],"mappings":"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"}
         |