@webiny/api-prerendering-service-so-ddb 0.0.0-mt-3 → 0.0.0-unstable.1e66d121db
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/queueJob.d.ts +2 -2
- package/definitions/queueJob.js +3 -7
- package/definitions/queueJob.js.map +1 -0
- package/definitions/render.d.ts +2 -2
- package/definitions/render.js +6 -16
- package/definitions/render.js.map +1 -0
- package/definitions/{tagUrlLink.d.ts → renderLegacy.d.ts} +2 -2
- package/definitions/renderLegacy.js +52 -0
- package/definitions/renderLegacy.js.map +1 -0
- package/definitions/settings.d.ts +8 -0
- package/definitions/settings.js +40 -0
- package/definitions/settings.js.map +1 -0
- package/definitions/table.d.ts +3 -2
- package/definitions/table.js +7 -1
- package/definitions/table.js.map +1 -0
- package/definitions/tagPathLink.d.ts +9 -0
- package/definitions/tagPathLink.js +46 -0
- package/definitions/tagPathLink.js.map +1 -0
- package/definitions/tagPathLinkLegacy.d.ts +9 -0
- package/definitions/tagPathLinkLegacy.js +49 -0
- package/definitions/tagPathLinkLegacy.js.map +1 -0
- package/index.js +22 -15
- package/index.js.map +1 -0
- package/operations/queueJob.d.ts +6 -0
- package/operations/{queueJob/index.js → queueJob.js} +5 -10
- package/operations/queueJob.js.map +1 -0
- package/operations/render.d.ts +21 -0
- package/operations/{render/index.js → render.js} +122 -83
- package/operations/render.js.map +1 -0
- package/operations/settings.d.ts +6 -0
- package/operations/settings.js +75 -0
- package/operations/settings.js.map +1 -0
- package/package.json +17 -17
- package/types.d.ts +8 -2
- package/types.js +2 -1
- package/types.js.map +1 -0
- package/definitions/tagUrlLink.js +0 -53
- package/operations/queueJob/index.d.ts +0 -6
- package/operations/render/index.d.ts +0 -16
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
4
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", {
|
|
6
6
|
value: true
|
|
7
7
|
});
|
|
8
8
|
exports.createRenderStorageOperations = void 0;
|
|
9
9
|
|
|
10
|
-
var
|
|
10
|
+
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
|
|
11
11
|
|
|
12
12
|
var _error = _interopRequireDefault(require("@webiny/error"));
|
|
13
13
|
|
|
@@ -21,66 +21,87 @@ var _batchWrite = require("@webiny/db-dynamodb/utils/batchWrite");
|
|
|
21
21
|
|
|
22
22
|
var _cleanup = require("@webiny/db-dynamodb/utils/cleanup");
|
|
23
23
|
|
|
24
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
|
|
25
|
-
|
|
26
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
27
|
-
|
|
28
24
|
const createRenderStorageOperations = params => {
|
|
29
25
|
const {
|
|
30
26
|
entity,
|
|
31
|
-
|
|
27
|
+
tagPathLinkEntity
|
|
32
28
|
} = params;
|
|
33
29
|
|
|
34
|
-
const createRenderPartitionKey =
|
|
30
|
+
const createRenderPartitionKey = (tenant, path) => {
|
|
35
31
|
/**
|
|
36
32
|
* For backwards compatibility remove the T# if it exists.
|
|
37
33
|
*/
|
|
38
|
-
if (
|
|
39
|
-
|
|
34
|
+
if (tenant.startsWith("T#")) {
|
|
35
|
+
tenant = tenant.replace(/^T#/, "");
|
|
40
36
|
}
|
|
41
37
|
|
|
42
|
-
return `T#${
|
|
38
|
+
return `T#${tenant}#PS#RENDER#${path}`;
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
const createRenderSortKey = () => {
|
|
42
|
+
return "A";
|
|
43
43
|
};
|
|
44
44
|
|
|
45
|
-
const
|
|
46
|
-
return
|
|
45
|
+
const createRenderGSI1PartitionKey = tenant => {
|
|
46
|
+
return `T#${tenant}#PS#RENDER`;
|
|
47
47
|
};
|
|
48
48
|
|
|
49
49
|
const createRenderType = () => {
|
|
50
50
|
return "ps.render";
|
|
51
51
|
};
|
|
52
52
|
|
|
53
|
-
const
|
|
53
|
+
const createTagPathLinkPartitionKey = params => {
|
|
54
54
|
const {
|
|
55
|
-
tag
|
|
55
|
+
tag,
|
|
56
|
+
path
|
|
56
57
|
} = params;
|
|
57
58
|
let {
|
|
58
|
-
|
|
59
|
+
tenant
|
|
59
60
|
} = params;
|
|
60
61
|
|
|
61
|
-
if (
|
|
62
|
-
|
|
62
|
+
if (tenant.startsWith("T#")) {
|
|
63
|
+
tenant = tenant.replace(/^T#/, "");
|
|
63
64
|
}
|
|
64
65
|
|
|
65
|
-
return `T#${
|
|
66
|
+
return `T#${tenant}#PS#TAG#${tag.key}#${tag.value}#${path}`;
|
|
66
67
|
};
|
|
67
68
|
|
|
68
|
-
const
|
|
69
|
+
const createTagPathLinkSortKey = params => {
|
|
69
70
|
const {
|
|
70
71
|
tag,
|
|
71
|
-
|
|
72
|
+
path
|
|
72
73
|
} = params;
|
|
73
74
|
const values = [tag.value];
|
|
74
75
|
|
|
75
|
-
if (
|
|
76
|
-
values.push(
|
|
76
|
+
if (path) {
|
|
77
|
+
values.push(path);
|
|
77
78
|
}
|
|
78
79
|
|
|
79
80
|
return values.join("#");
|
|
80
81
|
};
|
|
81
82
|
|
|
82
|
-
const
|
|
83
|
-
|
|
83
|
+
const createTagPathLinkGSI1PartitionKey = params => {
|
|
84
|
+
let {
|
|
85
|
+
tenant
|
|
86
|
+
} = params;
|
|
87
|
+
|
|
88
|
+
if (tenant.startsWith("T#")) {
|
|
89
|
+
tenant = tenant.replace(/^T#/, "");
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
return `T#${tenant}#PS#TAG`;
|
|
93
|
+
};
|
|
94
|
+
|
|
95
|
+
const createTagPathLinkGSI1SortKey = params => {
|
|
96
|
+
const {
|
|
97
|
+
tag,
|
|
98
|
+
path
|
|
99
|
+
} = params;
|
|
100
|
+
return `${tag.key}#${tag.value}#${path}`;
|
|
101
|
+
};
|
|
102
|
+
|
|
103
|
+
const createTagPathLinkType = () => {
|
|
104
|
+
return "ps.tagPathLink";
|
|
84
105
|
};
|
|
85
106
|
|
|
86
107
|
const getRender = async params => {
|
|
@@ -88,8 +109,8 @@ const createRenderStorageOperations = params => {
|
|
|
88
109
|
where
|
|
89
110
|
} = params;
|
|
90
111
|
const keys = {
|
|
91
|
-
PK: createRenderPartitionKey(where.
|
|
92
|
-
SK: createRenderSortKey(
|
|
112
|
+
PK: createRenderPartitionKey(where.tenant, where.path),
|
|
113
|
+
SK: createRenderSortKey()
|
|
93
114
|
};
|
|
94
115
|
|
|
95
116
|
try {
|
|
@@ -97,7 +118,8 @@ const createRenderStorageOperations = params => {
|
|
|
97
118
|
entity,
|
|
98
119
|
keys
|
|
99
120
|
});
|
|
100
|
-
|
|
121
|
+
const dbItem = (0, _cleanup.cleanupItem)(entity, result);
|
|
122
|
+
return dbItem ? dbItem.data : null;
|
|
101
123
|
} catch (ex) {
|
|
102
124
|
throw new _error.default(ex.message || "Could not get render record by given key.", ex.code || "GET_RENDER_ERROR", {
|
|
103
125
|
keys,
|
|
@@ -111,13 +133,16 @@ const createRenderStorageOperations = params => {
|
|
|
111
133
|
render
|
|
112
134
|
} = params;
|
|
113
135
|
const keys = {
|
|
114
|
-
PK: createRenderPartitionKey(render.
|
|
115
|
-
SK: createRenderSortKey(
|
|
136
|
+
PK: createRenderPartitionKey(render.tenant, render.path),
|
|
137
|
+
SK: createRenderSortKey()
|
|
116
138
|
};
|
|
117
139
|
|
|
118
140
|
try {
|
|
119
|
-
await entity.put(
|
|
120
|
-
|
|
141
|
+
await entity.put((0, _objectSpread2.default)((0, _objectSpread2.default)({}, keys), {}, {
|
|
142
|
+
data: render,
|
|
143
|
+
TYPE: createRenderType(),
|
|
144
|
+
GSI1_PK: createRenderGSI1PartitionKey(render.tenant),
|
|
145
|
+
GSI1_SK: render.path
|
|
121
146
|
}));
|
|
122
147
|
return render;
|
|
123
148
|
} catch (ex) {
|
|
@@ -133,8 +158,8 @@ const createRenderStorageOperations = params => {
|
|
|
133
158
|
render
|
|
134
159
|
} = params;
|
|
135
160
|
const keys = {
|
|
136
|
-
PK: createRenderPartitionKey(render.
|
|
137
|
-
SK: createRenderSortKey(
|
|
161
|
+
PK: createRenderPartitionKey(render.tenant, render.path),
|
|
162
|
+
SK: createRenderSortKey()
|
|
138
163
|
};
|
|
139
164
|
|
|
140
165
|
try {
|
|
@@ -152,7 +177,7 @@ const createRenderStorageOperations = params => {
|
|
|
152
177
|
where
|
|
153
178
|
} = params;
|
|
154
179
|
const {
|
|
155
|
-
|
|
180
|
+
tenant,
|
|
156
181
|
tag
|
|
157
182
|
} = where;
|
|
158
183
|
/**
|
|
@@ -163,16 +188,16 @@ const createRenderStorageOperations = params => {
|
|
|
163
188
|
return [];
|
|
164
189
|
}
|
|
165
190
|
|
|
166
|
-
const links = await
|
|
191
|
+
const links = await listTagPathLinks({
|
|
167
192
|
where: {
|
|
168
|
-
|
|
193
|
+
tenant,
|
|
169
194
|
tag
|
|
170
195
|
}
|
|
171
196
|
});
|
|
172
197
|
const items = links.map(link => {
|
|
173
198
|
return entity.getBatch({
|
|
174
|
-
PK: createRenderPartitionKey(
|
|
175
|
-
SK: createRenderSortKey(
|
|
199
|
+
PK: createRenderPartitionKey(tenant, link.path),
|
|
200
|
+
SK: createRenderSortKey()
|
|
176
201
|
});
|
|
177
202
|
});
|
|
178
203
|
|
|
@@ -181,7 +206,7 @@ const createRenderStorageOperations = params => {
|
|
|
181
206
|
table: entity.table,
|
|
182
207
|
items
|
|
183
208
|
});
|
|
184
|
-
return (0, _cleanup.cleanupItems)(entity, results);
|
|
209
|
+
return (0, _cleanup.cleanupItems)(entity, results).map(item => item.data);
|
|
185
210
|
} catch (ex) {
|
|
186
211
|
throw new _error.default(ex.message || "Could not list render records after links.", ex.code || "LIST_LINKS_RENDER_ERROR", {
|
|
187
212
|
links
|
|
@@ -194,7 +219,7 @@ const createRenderStorageOperations = params => {
|
|
|
194
219
|
where
|
|
195
220
|
} = params;
|
|
196
221
|
const {
|
|
197
|
-
|
|
222
|
+
tenant,
|
|
198
223
|
tag
|
|
199
224
|
} = where;
|
|
200
225
|
|
|
@@ -204,15 +229,16 @@ const createRenderStorageOperations = params => {
|
|
|
204
229
|
|
|
205
230
|
const queryAllParams = {
|
|
206
231
|
entity,
|
|
207
|
-
partitionKey:
|
|
232
|
+
partitionKey: createRenderGSI1PartitionKey(tenant),
|
|
208
233
|
options: {
|
|
234
|
+
index: "GSI1",
|
|
209
235
|
gte: " "
|
|
210
236
|
}
|
|
211
237
|
};
|
|
212
238
|
|
|
213
239
|
try {
|
|
214
240
|
const results = await (0, _query.queryAll)(queryAllParams);
|
|
215
|
-
return (0, _cleanup.cleanupItems)(entity, results);
|
|
241
|
+
return (0, _cleanup.cleanupItems)(entity, results).map(item => item.data);
|
|
216
242
|
} catch (ex) {
|
|
217
243
|
throw new _error.default(ex.message || "Could not list render records.", ex.code || "LIST_RENDER_ERROR", {
|
|
218
244
|
partitionKey: queryAllParams.partitionKey,
|
|
@@ -221,101 +247,114 @@ const createRenderStorageOperations = params => {
|
|
|
221
247
|
}
|
|
222
248
|
};
|
|
223
249
|
|
|
224
|
-
const
|
|
250
|
+
const createTagPathLinks = async params => {
|
|
225
251
|
const {
|
|
226
|
-
|
|
252
|
+
tagPathLinks
|
|
227
253
|
} = params;
|
|
228
|
-
const items =
|
|
229
|
-
return
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
254
|
+
const items = tagPathLinks.map(item => {
|
|
255
|
+
return tagPathLinkEntity.putBatch({
|
|
256
|
+
data: item,
|
|
257
|
+
TYPE: createTagPathLinkType(),
|
|
258
|
+
PK: createTagPathLinkPartitionKey({
|
|
259
|
+
tenant: item.tenant,
|
|
260
|
+
tag: item,
|
|
261
|
+
path: item.path
|
|
234
262
|
}),
|
|
235
|
-
SK:
|
|
263
|
+
SK: createTagPathLinkSortKey({
|
|
236
264
|
tag: item,
|
|
237
|
-
|
|
265
|
+
path: item.path
|
|
266
|
+
}),
|
|
267
|
+
GSI1_PK: createTagPathLinkGSI1PartitionKey({
|
|
268
|
+
tag: item,
|
|
269
|
+
tenant: item.tenant
|
|
270
|
+
}),
|
|
271
|
+
GSI1_SK: createTagPathLinkGSI1SortKey({
|
|
272
|
+
tag: item,
|
|
273
|
+
path: item.path
|
|
238
274
|
})
|
|
239
|
-
})
|
|
275
|
+
});
|
|
240
276
|
});
|
|
241
277
|
|
|
242
278
|
try {
|
|
243
279
|
await (0, _batchWrite.batchWriteAll)({
|
|
244
|
-
table:
|
|
280
|
+
table: tagPathLinkEntity.table,
|
|
245
281
|
items
|
|
246
282
|
});
|
|
247
|
-
return
|
|
283
|
+
return tagPathLinks;
|
|
248
284
|
} catch (ex) {
|
|
249
|
-
throw new _error.default(ex.message || "Could not create
|
|
250
|
-
|
|
285
|
+
throw new _error.default(ex.message || "Could not create tagPathLink records.", ex.code || "CREATE_URL_TAG_LINKS_ERROR", {
|
|
286
|
+
tagPathLinks
|
|
251
287
|
});
|
|
252
288
|
}
|
|
253
289
|
};
|
|
254
290
|
|
|
255
|
-
const
|
|
291
|
+
const deleteTagPathLinks = async params => {
|
|
256
292
|
const {
|
|
257
|
-
|
|
293
|
+
tenant,
|
|
258
294
|
tags,
|
|
259
|
-
|
|
295
|
+
path
|
|
260
296
|
} = params;
|
|
261
297
|
const items = tags.map(tag => {
|
|
262
|
-
return
|
|
263
|
-
PK:
|
|
298
|
+
return tagPathLinkEntity.deleteBatch({
|
|
299
|
+
PK: createTagPathLinkPartitionKey({
|
|
264
300
|
tag,
|
|
265
|
-
|
|
301
|
+
tenant,
|
|
302
|
+
path
|
|
266
303
|
}),
|
|
267
|
-
SK:
|
|
304
|
+
SK: createTagPathLinkSortKey({
|
|
268
305
|
tag,
|
|
269
|
-
|
|
306
|
+
path
|
|
270
307
|
})
|
|
271
308
|
});
|
|
272
309
|
});
|
|
273
310
|
|
|
274
311
|
try {
|
|
275
312
|
await (0, _batchWrite.batchWriteAll)({
|
|
276
|
-
table:
|
|
313
|
+
table: tagPathLinkEntity.table,
|
|
277
314
|
items
|
|
278
315
|
});
|
|
279
316
|
} catch (ex) {
|
|
280
|
-
throw new _error.default(ex.message || "Could not delete
|
|
317
|
+
throw new _error.default(ex.message || "Could not delete tagPathLink records.", ex.code || "DELETE_URL_TAG_LINKS_ERROR", {
|
|
281
318
|
tags,
|
|
282
|
-
|
|
283
|
-
|
|
319
|
+
tenant,
|
|
320
|
+
path
|
|
284
321
|
});
|
|
285
322
|
}
|
|
286
323
|
};
|
|
287
324
|
|
|
288
|
-
const
|
|
325
|
+
const listTagPathLinks = async params => {
|
|
289
326
|
const {
|
|
290
327
|
where
|
|
291
328
|
} = params;
|
|
292
329
|
const {
|
|
293
|
-
|
|
330
|
+
tenant,
|
|
294
331
|
tag
|
|
295
332
|
} = where;
|
|
296
|
-
const partitionKey =
|
|
297
|
-
|
|
333
|
+
const partitionKey = createTagPathLinkGSI1PartitionKey({
|
|
334
|
+
tenant,
|
|
298
335
|
tag
|
|
299
336
|
});
|
|
300
|
-
const options = {
|
|
337
|
+
const options = {
|
|
338
|
+
index: "GSI1"
|
|
339
|
+
};
|
|
301
340
|
|
|
302
341
|
if (tag.value) {
|
|
303
|
-
options.beginsWith = `${tag.value}#`;
|
|
342
|
+
options.beginsWith = `${tag.key}#${tag.value}#`;
|
|
304
343
|
} else {
|
|
305
|
-
options.
|
|
344
|
+
options.beginsWith = `${tag.key}#`;
|
|
306
345
|
}
|
|
307
346
|
|
|
308
347
|
const queryAllParams = {
|
|
309
|
-
entity:
|
|
348
|
+
entity: tagPathLinkEntity,
|
|
310
349
|
partitionKey,
|
|
311
350
|
options
|
|
312
351
|
};
|
|
313
352
|
|
|
314
353
|
try {
|
|
315
354
|
const results = await (0, _query.queryAll)(queryAllParams);
|
|
316
|
-
return (0, _cleanup.cleanupItems)(
|
|
355
|
+
return (0, _cleanup.cleanupItems)(tagPathLinkEntity, results).map(item => item.data);
|
|
317
356
|
} catch (ex) {
|
|
318
|
-
throw new _error.default(ex.message || "Could not list
|
|
357
|
+
throw new _error.default(ex.message || "Could not list tagPathLink records.", ex.code || "LIST_TAG_PATH_LINK_ERROR", {
|
|
319
358
|
partitionKey,
|
|
320
359
|
options
|
|
321
360
|
});
|
|
@@ -327,9 +366,9 @@ const createRenderStorageOperations = params => {
|
|
|
327
366
|
deleteRender,
|
|
328
367
|
listRenders,
|
|
329
368
|
getRender,
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
369
|
+
createTagPathLinks,
|
|
370
|
+
deleteTagPathLinks,
|
|
371
|
+
listTagPathLinks
|
|
333
372
|
};
|
|
334
373
|
};
|
|
335
374
|
|
|
@@ -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,75 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.createSettingsStorageOperations = void 0;
|
|
9
|
+
|
|
10
|
+
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
|
|
11
|
+
|
|
12
|
+
var _error = _interopRequireDefault(require("@webiny/error"));
|
|
13
|
+
|
|
14
|
+
var _get = require("@webiny/db-dynamodb/utils/get");
|
|
15
|
+
|
|
16
|
+
const createSettingsStorageOperations = params => {
|
|
17
|
+
const {
|
|
18
|
+
entity
|
|
19
|
+
} = params;
|
|
20
|
+
|
|
21
|
+
const getSettings = async (variant = "default") => {
|
|
22
|
+
const keys = {
|
|
23
|
+
PK: "PS#SETTINGS",
|
|
24
|
+
SK: variant
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
try {
|
|
28
|
+
const result = await (0, _get.get)({
|
|
29
|
+
entity,
|
|
30
|
+
keys
|
|
31
|
+
});
|
|
32
|
+
|
|
33
|
+
if (!result) {
|
|
34
|
+
throw Error();
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
return result.data;
|
|
38
|
+
} catch (ex) {
|
|
39
|
+
throw new _error.default(ex.message || "Could not load prerendering settings!", ex.code || "GET_SETTINGS_ERROR", {
|
|
40
|
+
keys,
|
|
41
|
+
params
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
const saveSettings = async params => {
|
|
47
|
+
const {
|
|
48
|
+
settings,
|
|
49
|
+
variant = "default"
|
|
50
|
+
} = params;
|
|
51
|
+
const keys = {
|
|
52
|
+
PK: "PS#SETTINGS",
|
|
53
|
+
SK: variant
|
|
54
|
+
};
|
|
55
|
+
|
|
56
|
+
try {
|
|
57
|
+
await entity.put((0, _objectSpread2.default)((0, _objectSpread2.default)({}, keys), {}, {
|
|
58
|
+
TYPE: "ps.settings",
|
|
59
|
+
data: settings
|
|
60
|
+
}));
|
|
61
|
+
return settings;
|
|
62
|
+
} catch (ex) {
|
|
63
|
+
throw new _error.default(ex.message || "Could not save settings.", ex.code || "SAVE_SETTINGS_ERROR", {
|
|
64
|
+
keys
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
};
|
|
68
|
+
|
|
69
|
+
return {
|
|
70
|
+
getSettings,
|
|
71
|
+
saveSettings
|
|
72
|
+
};
|
|
73
|
+
};
|
|
74
|
+
|
|
75
|
+
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,6DACCb,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": "0.0.0-
|
|
3
|
+
"version": "0.0.0-unstable.1e66d121db",
|
|
4
4
|
"main": "index.js",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -17,28 +17,28 @@
|
|
|
17
17
|
"author": "Webiny Ltd",
|
|
18
18
|
"license": "MIT",
|
|
19
19
|
"dependencies": {
|
|
20
|
-
"@babel/runtime": "7.
|
|
21
|
-
"@webiny/api-prerendering-service": "0.0.0-
|
|
22
|
-
"@webiny/error": "0.0.0-
|
|
23
|
-
"dynamodb-toolbox": "0.3.
|
|
20
|
+
"@babel/runtime": "7.19.0",
|
|
21
|
+
"@webiny/api-prerendering-service": "0.0.0-unstable.1e66d121db",
|
|
22
|
+
"@webiny/error": "0.0.0-unstable.1e66d121db",
|
|
23
|
+
"dynamodb-toolbox": "0.3.5"
|
|
24
24
|
},
|
|
25
25
|
"devDependencies": {
|
|
26
|
-
"@babel/cli": "^7.
|
|
27
|
-
"@babel/core": "^7.
|
|
28
|
-
"@babel/plugin-proposal-export-default-from": "^7.
|
|
29
|
-
"@babel/preset-env": "^7.
|
|
30
|
-
"@babel/preset-typescript": "^7.
|
|
31
|
-
"@webiny/cli": "^0.0.0-
|
|
32
|
-
"@webiny/db": "^0.0.0-
|
|
33
|
-
"@webiny/db-dynamodb": "^0.0.0-
|
|
34
|
-
"@webiny/handler-aws": "^0.0.0-
|
|
35
|
-
"@webiny/project-utils": "^0.0.0-
|
|
26
|
+
"@babel/cli": "^7.19.3",
|
|
27
|
+
"@babel/core": "^7.19.3",
|
|
28
|
+
"@babel/plugin-proposal-export-default-from": "^7.16.0",
|
|
29
|
+
"@babel/preset-env": "^7.19.4",
|
|
30
|
+
"@babel/preset-typescript": "^7.18.6",
|
|
31
|
+
"@webiny/cli": "^0.0.0-unstable.1e66d121db",
|
|
32
|
+
"@webiny/db": "^0.0.0-unstable.1e66d121db",
|
|
33
|
+
"@webiny/db-dynamodb": "^0.0.0-unstable.1e66d121db",
|
|
34
|
+
"@webiny/handler-aws": "^0.0.0-unstable.1e66d121db",
|
|
35
|
+
"@webiny/project-utils": "^0.0.0-unstable.1e66d121db",
|
|
36
36
|
"jest-dynalite": "^3.3.1",
|
|
37
37
|
"jest-environment-node": "^27.3.0",
|
|
38
38
|
"prettier": "^2.3.2",
|
|
39
39
|
"rimraf": "^3.0.2",
|
|
40
40
|
"ttypescript": "^1.5.12",
|
|
41
|
-
"typescript": "
|
|
41
|
+
"typescript": "4.7.4"
|
|
42
42
|
},
|
|
43
43
|
"publishConfig": {
|
|
44
44
|
"access": "public",
|
|
@@ -55,5 +55,5 @@
|
|
|
55
55
|
]
|
|
56
56
|
}
|
|
57
57
|
},
|
|
58
|
-
"gitHead": "
|
|
58
|
+
"gitHead": "b670bf27c5039de1a2b0be764a09ba4cb94ad5e2"
|
|
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
ADDED
|
@@ -0,0 +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 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"}
|