cmp-aws-database 1.2.0-dev.78 → 1.2.0-dev.79
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/dist/base-dao-dynamoose.d.ts +27 -0
- package/dist/base-dao-dynamoose.js +250 -0
- package/dist/base-model-dynamoose.d.ts +7 -0
- package/dist/base-model-dynamoose.js +29 -0
- package/dist/customer-user/default-platter/default-platters-model.d.ts +1 -0
- package/dist/customer-user/default-platter/default-platters-model.js +5 -1
- package/dist/customer-user/example-dao.d.ts +21 -0
- package/dist/customer-user/example-dao.js +76 -0
- package/dist/customer-user/example-model.d.ts +5 -4
- package/dist/customer-user/example-model.js +67 -33
- package/dist/customer-user/findmyplatter/find-my-platter-model.d.ts +0 -1
- package/dist/customer-user/findmyplatter/find-my-platter-model.js +1 -5
- package/package.json +2 -1
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { BaseModel } from './base-model';
|
|
2
|
+
export interface AuthContext {
|
|
3
|
+
userSub: string;
|
|
4
|
+
clientId?: string;
|
|
5
|
+
}
|
|
6
|
+
export declare const dynamoDB: import("@aws-sdk/client-dynamodb").DynamoDB;
|
|
7
|
+
export declare class GenericDAO<T extends BaseModel> {
|
|
8
|
+
protected model: any;
|
|
9
|
+
constructor(model: any);
|
|
10
|
+
batchUpdate(items: T[], batchSize?: number, authContext?: AuthContext): Promise<T[]>;
|
|
11
|
+
parallelBatchPut(inputItems: T[], batchSize?: number, maxConcurrentSegments?: number, authContext?: AuthContext): Promise<T[]>;
|
|
12
|
+
parallelBatchDelete(inputItems: T[], batchSize?: number, maxConcurrentSegments?: number): Promise<T[]>;
|
|
13
|
+
parallelScan(options?: Record<string, unknown>): Promise<T[]>;
|
|
14
|
+
scan(options?: Record<string, unknown>): Promise<T[]>;
|
|
15
|
+
save(item: T, authContext?: AuthContext): Promise<T>;
|
|
16
|
+
update(item: T, authContext?: AuthContext): Promise<T>;
|
|
17
|
+
delete(item: T): Promise<T | undefined>;
|
|
18
|
+
get(item: T): Promise<T>;
|
|
19
|
+
batchPut(items: T[], authContext?: AuthContext): Promise<T[]>;
|
|
20
|
+
batchDelete(items: T[]): Promise<T[]>;
|
|
21
|
+
batchGet(items: T[]): Promise<T[]>;
|
|
22
|
+
parallelBatchGet(inputItems: T[], batchSize?: number, maxConcurrentSegments?: number): Promise<T[]>;
|
|
23
|
+
parallelQuery(keyConditions: Record<string, unknown>[], maxConcurrentCalls?: number, options?: Record<string, unknown>): Promise<T[]>;
|
|
24
|
+
private customQuery;
|
|
25
|
+
decode(continuationToken: string | undefined): Record<string, unknown> | undefined;
|
|
26
|
+
encode(lastEvaluatedKey: Record<string, unknown>): Promise<string>;
|
|
27
|
+
}
|
|
@@ -0,0 +1,250 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.GenericDAO = exports.dynamoDB = void 0;
|
|
7
|
+
const dynamoose_1 = __importDefault(require("dynamoose"));
|
|
8
|
+
exports.dynamoDB = new dynamoose_1.default.aws.ddb.DynamoDB({
|
|
9
|
+
maxAttempts: 10
|
|
10
|
+
});
|
|
11
|
+
class GenericDAO {
|
|
12
|
+
constructor(model) {
|
|
13
|
+
this.model = model;
|
|
14
|
+
}
|
|
15
|
+
async batchUpdate(items, batchSize = 100, authContext) {
|
|
16
|
+
let success = 0, totalToUpdate = items.length;
|
|
17
|
+
let updateItems = [];
|
|
18
|
+
while (items.length > 0) {
|
|
19
|
+
let promises = [];
|
|
20
|
+
let batch = items.splice(0, batchSize);
|
|
21
|
+
promises = batch.map(item => this.update(item, authContext));
|
|
22
|
+
let results = await Promise.allSettled(promises);
|
|
23
|
+
results.forEach(result => {
|
|
24
|
+
if (result.status === "fulfilled") {
|
|
25
|
+
success += 1;
|
|
26
|
+
updateItems.push(result.value);
|
|
27
|
+
}
|
|
28
|
+
});
|
|
29
|
+
console.log(`${success}/${totalToUpdate}`);
|
|
30
|
+
}
|
|
31
|
+
return updateItems;
|
|
32
|
+
}
|
|
33
|
+
async parallelBatchPut(inputItems, batchSize = 1000, maxConcurrentSegments = 20, authContext) {
|
|
34
|
+
let startTime = Date.now();
|
|
35
|
+
let items = [];
|
|
36
|
+
items = items.concat(inputItems);
|
|
37
|
+
items = items.map(item => {
|
|
38
|
+
item.created_time = new Date();
|
|
39
|
+
if (authContext) {
|
|
40
|
+
item.created_user = authContext.userSub;
|
|
41
|
+
}
|
|
42
|
+
return item;
|
|
43
|
+
});
|
|
44
|
+
let maxSegments = [];
|
|
45
|
+
let putItems = [];
|
|
46
|
+
while (items.length > 0) {
|
|
47
|
+
let batch = items.splice(0, batchSize * maxConcurrentSegments);
|
|
48
|
+
let segment = [];
|
|
49
|
+
while (batch.length > 0) {
|
|
50
|
+
segment.push(batch.splice(0, batchSize));
|
|
51
|
+
}
|
|
52
|
+
maxSegments.push(segment);
|
|
53
|
+
}
|
|
54
|
+
for (const segment of maxSegments) {
|
|
55
|
+
let startTime = Date.now();
|
|
56
|
+
let promises = [];
|
|
57
|
+
console.log(`batch length = ${segment.length}`);
|
|
58
|
+
for (const batch of segment) {
|
|
59
|
+
promises.push(this.batchPut(batch, authContext));
|
|
60
|
+
}
|
|
61
|
+
let result = await Promise.all(promises);
|
|
62
|
+
console.log("segment complete");
|
|
63
|
+
result.forEach((res) => {
|
|
64
|
+
putItems = putItems.concat(res);
|
|
65
|
+
});
|
|
66
|
+
console.log(`time for segment put ${Date.now() - startTime}`);
|
|
67
|
+
}
|
|
68
|
+
console.log(`total time for complete parallel put ${Date.now() - startTime}`);
|
|
69
|
+
return putItems;
|
|
70
|
+
}
|
|
71
|
+
async parallelBatchDelete(inputItems, batchSize = 1000, maxConcurrentSegments = 20) {
|
|
72
|
+
let startTime = Date.now();
|
|
73
|
+
let items = [];
|
|
74
|
+
items = items.concat(inputItems);
|
|
75
|
+
let maxSegments = [];
|
|
76
|
+
let deletedItems = [];
|
|
77
|
+
while (items.length > 0) {
|
|
78
|
+
let batch = items.splice(0, batchSize * maxConcurrentSegments);
|
|
79
|
+
let segment = [];
|
|
80
|
+
while (batch.length > 0) {
|
|
81
|
+
segment.push(batch.splice(0, batchSize));
|
|
82
|
+
}
|
|
83
|
+
maxSegments.push(segment);
|
|
84
|
+
}
|
|
85
|
+
for (const segment of maxSegments) {
|
|
86
|
+
let startTime = Date.now();
|
|
87
|
+
let promises = [];
|
|
88
|
+
console.log(`batch length = ${segment.length}`);
|
|
89
|
+
for (const batch of segment) {
|
|
90
|
+
promises.push(this.batchDelete(batch));
|
|
91
|
+
}
|
|
92
|
+
let result = await Promise.all(promises);
|
|
93
|
+
console.log("segment complete");
|
|
94
|
+
result.forEach((res) => {
|
|
95
|
+
deletedItems = deletedItems.concat(res);
|
|
96
|
+
});
|
|
97
|
+
console.log(`time for segment delete ${Date.now() - startTime}`);
|
|
98
|
+
}
|
|
99
|
+
console.log(`total time for complete parallel delete ${Date.now() - startTime}`);
|
|
100
|
+
return deletedItems;
|
|
101
|
+
}
|
|
102
|
+
async parallelScan(options) {
|
|
103
|
+
let items = [];
|
|
104
|
+
const scan = this.model.scan().all();
|
|
105
|
+
for await (const item of scan) {
|
|
106
|
+
items.push(item);
|
|
107
|
+
if (items.length % 100000 === 0) {
|
|
108
|
+
console.log("read 100K");
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
return items;
|
|
112
|
+
}
|
|
113
|
+
async scan(options) {
|
|
114
|
+
let items = [];
|
|
115
|
+
const scan = this.model.scan();
|
|
116
|
+
for await (const item of scan) {
|
|
117
|
+
items.push(item);
|
|
118
|
+
}
|
|
119
|
+
return items;
|
|
120
|
+
}
|
|
121
|
+
async save(item, authContext) {
|
|
122
|
+
item.created_time = new Date();
|
|
123
|
+
if (authContext) {
|
|
124
|
+
item.created_user = authContext.userSub;
|
|
125
|
+
}
|
|
126
|
+
const res = await this.model.create(item);
|
|
127
|
+
return res;
|
|
128
|
+
}
|
|
129
|
+
async update(item, authContext) {
|
|
130
|
+
item.updated_time = new Date();
|
|
131
|
+
if (authContext) {
|
|
132
|
+
item.updated_user = authContext.userSub;
|
|
133
|
+
}
|
|
134
|
+
const res = await this.model.update(item);
|
|
135
|
+
return res;
|
|
136
|
+
}
|
|
137
|
+
async delete(item) {
|
|
138
|
+
return await this.model.delete(item);
|
|
139
|
+
}
|
|
140
|
+
async get(item) {
|
|
141
|
+
const res = await this.model.get(item);
|
|
142
|
+
return res;
|
|
143
|
+
}
|
|
144
|
+
async batchPut(items, authContext) {
|
|
145
|
+
let finalItems = [];
|
|
146
|
+
items = items.map(item => {
|
|
147
|
+
item.created_time = new Date();
|
|
148
|
+
if (authContext) {
|
|
149
|
+
item.created_user = authContext.userSub;
|
|
150
|
+
}
|
|
151
|
+
return item;
|
|
152
|
+
});
|
|
153
|
+
for await (const item of this.model.batchPut(items)) {
|
|
154
|
+
console.log(item);
|
|
155
|
+
finalItems.push(item);
|
|
156
|
+
}
|
|
157
|
+
return finalItems;
|
|
158
|
+
}
|
|
159
|
+
async batchDelete(items) {
|
|
160
|
+
let deleteItems = [];
|
|
161
|
+
for await (const item of this.model.batchDelete(items)) {
|
|
162
|
+
deleteItems.push(item);
|
|
163
|
+
}
|
|
164
|
+
return deleteItems;
|
|
165
|
+
}
|
|
166
|
+
async batchGet(items) {
|
|
167
|
+
let getItems = [];
|
|
168
|
+
for await (const item of this.model.batchGet(items)) {
|
|
169
|
+
getItems.push(item);
|
|
170
|
+
}
|
|
171
|
+
return getItems;
|
|
172
|
+
}
|
|
173
|
+
async parallelBatchGet(inputItems, batchSize = 1000, maxConcurrentSegments = 20) {
|
|
174
|
+
let startTime = Date.now();
|
|
175
|
+
let items = [];
|
|
176
|
+
items = items.concat(inputItems);
|
|
177
|
+
let maxSegments = [];
|
|
178
|
+
let resultItems = [];
|
|
179
|
+
while (items.length > 0) {
|
|
180
|
+
let batch = items.splice(0, batchSize * maxConcurrentSegments);
|
|
181
|
+
let segment = [];
|
|
182
|
+
while (batch.length > 0) {
|
|
183
|
+
segment.push(batch.splice(0, batchSize));
|
|
184
|
+
}
|
|
185
|
+
maxSegments.push(segment);
|
|
186
|
+
}
|
|
187
|
+
for (const segment of maxSegments) {
|
|
188
|
+
let startTime = Date.now();
|
|
189
|
+
let promises = [];
|
|
190
|
+
console.log(`batch length = ${segment.length}`);
|
|
191
|
+
for (const batch of segment) {
|
|
192
|
+
promises.push(this.batchGet(batch));
|
|
193
|
+
}
|
|
194
|
+
let result = await Promise.all(promises);
|
|
195
|
+
console.log("segment complete");
|
|
196
|
+
result.forEach((res) => {
|
|
197
|
+
resultItems = resultItems.concat(res);
|
|
198
|
+
});
|
|
199
|
+
console.log(`time for segment get ${Date.now() - startTime}`);
|
|
200
|
+
}
|
|
201
|
+
console.log(`total time for complete parallel get ${Date.now() - startTime}`);
|
|
202
|
+
return resultItems;
|
|
203
|
+
}
|
|
204
|
+
async parallelQuery(keyConditions, maxConcurrentCalls = 20, options) {
|
|
205
|
+
const startTime = Date.now();
|
|
206
|
+
const results = [];
|
|
207
|
+
while (keyConditions.length > 0) {
|
|
208
|
+
const segmentConditions = keyConditions.splice(0, maxConcurrentCalls);
|
|
209
|
+
const queryPromises = segmentConditions.map((keyCondition) => {
|
|
210
|
+
return this.customQuery(keyCondition, options);
|
|
211
|
+
});
|
|
212
|
+
const queryResults = await Promise.all(queryPromises);
|
|
213
|
+
for (const queryResult of queryResults) {
|
|
214
|
+
results.push(...queryResult);
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
console.log(`total time for complete parallel query ${Date.now() - startTime}`);
|
|
218
|
+
return results;
|
|
219
|
+
}
|
|
220
|
+
async customQuery(keyConditions, options) {
|
|
221
|
+
const startTime = Date.now();
|
|
222
|
+
const items = [];
|
|
223
|
+
const query = this.model.query(keyConditions);
|
|
224
|
+
if (options?.limit)
|
|
225
|
+
query.limit(options.limit);
|
|
226
|
+
for await (const item of query) {
|
|
227
|
+
items.push(item);
|
|
228
|
+
}
|
|
229
|
+
console.log(`total time for complete query ${Date.now() - startTime}`);
|
|
230
|
+
return items;
|
|
231
|
+
}
|
|
232
|
+
decode(continuationToken) {
|
|
233
|
+
if (continuationToken) {
|
|
234
|
+
try {
|
|
235
|
+
let lastEvaluatedKey = JSON.parse(Buffer.from(continuationToken, 'base64').toString('utf8'));
|
|
236
|
+
console.log("Incoming Last Evaluated Key " + lastEvaluatedKey);
|
|
237
|
+
return lastEvaluatedKey;
|
|
238
|
+
}
|
|
239
|
+
catch (error) {
|
|
240
|
+
throw new Error('Invalid continuationToken');
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
return undefined;
|
|
244
|
+
}
|
|
245
|
+
async encode(lastEvaluatedKey) {
|
|
246
|
+
return Buffer.from(JSON.stringify(lastEvaluatedKey)).toString('base64');
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
exports.GenericDAO = GenericDAO;
|
|
250
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1kYW8tZHluYW1vb3NlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2Jhc2UtZGFvLWR5bmFtb29zZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSwwREFBa0M7QUFRckIsUUFBQSxRQUFRLEdBQUcsSUFBSSxtQkFBUyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDO0lBQ25ELFdBQVcsRUFBRSxFQUFFO0NBQ2xCLENBQUMsQ0FBQztBQUVILE1BQWEsVUFBVTtJQUNuQixZQUFzQixLQUFVO1FBQVYsVUFBSyxHQUFMLEtBQUssQ0FBSztJQUFJLENBQUM7SUFFckMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxLQUFVLEVBQUUsU0FBUyxHQUFHLEdBQUcsRUFBRSxXQUF5QjtRQUNwRSxJQUFJLE9BQU8sR0FBRyxDQUFDLEVBQUUsYUFBYSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUM7UUFDOUMsSUFBSSxXQUFXLEdBQVEsRUFBRSxDQUFDO1FBRTFCLE9BQU8sS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUN0QixJQUFJLFFBQVEsR0FBaUIsRUFBRSxDQUFDO1lBQ2hDLElBQUksS0FBSyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1lBQ3ZDLFFBQVEsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQztZQUM3RCxJQUFJLE9BQU8sR0FBRyxNQUFNLE9BQU8sQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7WUFFakQsT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRTtnQkFDckIsSUFBSSxNQUFNLENBQUMsTUFBTSxLQUFLLFdBQVcsRUFBRSxDQUFDO29CQUNoQyxPQUFPLElBQUksQ0FBQyxDQUFDO29CQUNi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Z0IsQ0FBQyxDQUFDO2dCQUMvRCxPQUFPLGdCQUFnQixDQUFDO1lBQzVCLENBQUM7WUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO2dCQUNiLE1BQU0sSUFBSSxLQUFLLENBQUMsMkJBQTJCLENBQUMsQ0FBQztZQUNqRCxDQUFDO1FBQ0wsQ0FBQztRQUNELE9BQU8sU0FBUyxDQUFDO0lBQ3JCLENBQUM7SUFFRCxLQUFLLENBQUMsTUFBTSxDQUFDLGdCQUF5QztRQUNsRCxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzVFLENBQUM7Q0FDSjtBQXpSRCxnQ0F5UkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZHluYW1vb3NlIGZyb20gJ2R5bmFtb29zZSc7XG5pbXBvcnQgeyBCYXNlTW9kZWwgfSBmcm9tICcuL2Jhc2UtbW9kZWwnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEF1dGhDb250ZXh0IHtcbiAgICB1c2VyU3ViOiBzdHJpbmc7XG4gICAgY2xpZW50SWQ/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjb25zdCBkeW5hbW9EQiA9IG5ldyBkeW5hbW9vc2UuYXdzLmRkYi5EeW5hbW9EQih7XG4gICAgbWF4QXR0ZW1wdHM6IDEwXG59KTtcblxuZXhwb3J0IGNsYXNzIEdlbmVyaWNEQU88VCBleHRlbmRzIEJhc2VNb2RlbD4ge1xuICAgIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBtb2RlbDogYW55KSB7IH1cblxuICAgIGFzeW5jIGJhdGNoVXBkYXRlKGl0ZW1zOiBUW10sIGJhdGNoU2l6ZSA9IDEwMCwgYXV0aENvbnRleHQ/OiBBdXRoQ29udGV4dCk6IFByb21pc2U8VFtdPiB7XG4gICAgICAgIGxldCBzdWNjZXNzID0gMCwgdG90YWxUb1VwZGF0ZSA9IGl0ZW1zLmxlbmd0aDtcbiAgICAgICAgbGV0IHVwZGF0ZUl0ZW1zOiBUW10gPSBbXTtcblxuICAgICAgICB3aGlsZSAoaXRlbXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgbGV0IHByb21pc2VzOiBQcm9taXNlPFQ+W10gPSBbXTtcbiAgICAgICAgICAgIGxldCBiYXRjaCA9IGl0ZW1zLnNwbGljZSgwLCBiYXRjaFNpemUpO1xuICAgICAgICAgICAgcHJvbWlzZXMgPSBiYXRjaC5tYXAoaXRlbSA9PiB0aGlzLnVwZGF0ZShpdGVtLCBhdXRoQ29udGV4dCkpO1xuICAgICAgICAgICAgbGV0IHJlc3VsdHMgPSBhd2FpdCBQcm9taXNlLmFsbFNldHRsZWQocHJvbWlzZXMpO1xuXG4gICAgICAgICAgICByZXN1bHRzLmZvckVhY2gocmVzdWx0ID0+IHtcbiAgICAgICAgICAgICAgICBpZiAocmVzdWx0LnN0YXR1cyA9PT0gXCJmdWxmaWxsZWRcIikge1xuICAgICAgICAgICAgICAgICAgICBzdWNjZXNzICs9IDE7XG4gICAgICAgICAgICAgICAgICAgIHVwZGF0ZUl0ZW1zLnB1c2gocmVzdWx0LnZhbHVlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGAke3N1Y2Nlc3N9LyR7dG90YWxUb1VwZGF0ZX1gKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdXBkYXRlSXRlbXM7XG4gICAgfVxuXG4gICAgYXN5bmMgcGFyYWxsZWxCYXRjaFB1dChpbnB1dEl0ZW1zOiBUW10sIGJhdGNoU2l6ZTogbnVtYmVyID0gMTAwMCwgbWF4Q29uY3VycmVudFNlZ21lbnRzOiBudW1iZXIgPSAyMCwgYXV0aENvbnRleHQ/OiBBdXRoQ29udGV4dCk6IFByb21pc2U8VFtdPiB7XG4gICAgICAgIGxldCBzdGFydFRpbWUgPSBEYXRlLm5vdygpO1xuICAgICAgICBsZXQgaXRlbXM6IFRbXSA9IFtdO1xuICAgICAgICBpdGVtcyA9IGl0ZW1zLmNvbmNhdChpbnB1dEl0ZW1zKTtcbiAgICAgICAgaXRlbXMgPSBpdGVtcy5tYXAoaXRlbSA9PiB7XG4gICAgICAgICAgICBpdGVtLmNyZWF0ZWRfdGltZSA9IG5ldyBEYXRlKCk7XG4gICAgICAgICAgICBpZiAoYXV0aENvbnRleHQpIHtcbiAgICAgICAgICAgICAgICBpdGVtLmNyZWF0ZWRfdXNlciA9IGF1dGhDb250ZXh0LnVzZXJTdWI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gaXRlbTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgbGV0IG1heFNlZ21lbnRzOiBUW11bXVtdID0gW107XG4gICAgICAgIGxldCBwdXRJdGVtczogVFtdID0gW107XG5cbiAgICAgICAgd2hpbGUgKGl0ZW1zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGxldCBiYXRjaCA9IGl0ZW1zLnNwbGljZSgwLCBiYXRjaFNpemUgKiBtYXhDb25jdXJyZW50U2VnbWVudHMpO1xuICAgICAgICAgICAgbGV0IHNlZ21lbnQ6IFRbXVtdID0gW107XG4gICAgICAgICAgICB3aGlsZSAoYmF0Y2gubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIHNlZ21lbnQucHVzaChiYXRjaC5zcGxpY2UoMCwgYmF0Y2hTaXplKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBtYXhTZWdtZW50cy5wdXNoKHNlZ21lbnQpO1xuICAgICAgICB9XG5cbiAgICAgICAgZm9yIChjb25zdCBzZWdtZW50IG9mIG1heFNlZ21lbnRzKSB7XG4gICAgICAgICAgICBsZXQgc3RhcnRUaW1lID0gRGF0ZS5ub3coKTtcbiAgICAgICAgICAgIGxldCBwcm9taXNlczogUHJvbWlzZTxUW10+W10gPSBbXTtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGBiYXRjaCBsZW5ndGggPSAke3NlZ21lbnQubGVuZ3RofWApO1xuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGJhdGNoIG9mIHNlZ21lbnQpIHtcbiAgICAgICAgICAgICAgICBwcm9taXNlcy5wdXNoKHRoaXMuYmF0Y2hQdXQoYmF0Y2gsIGF1dGhDb250ZXh0KSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGxldCByZXN1bHQgPSBhd2FpdCBQcm9taXNlLmFsbChwcm9taXNlcyk7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcInNlZ21lbnQgY29tcGxldGVcIik7XG4gICAgICAgICAgICByZXN1bHQuZm9yRWFjaCgocmVzKSA9PiB7XG4gICAgICAgICAgICAgICAgcHV0SXRlbXMgPSBwdXRJdGVtcy5jb25jYXQocmVzKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgY29uc29sZS5sb2coYHRpbWUgZm9yIHNlZ21lbnQgcHV0ICR7RGF0ZS5ub3coKSAtIHN0YXJ0VGltZX1gKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnNvbGUubG9nKGB0b3RhbCB0aW1lIGZvciBjb21wbGV0ZSBwYXJhbGxlbCBwdXQgJHtEYXRlLm5vdygpIC0gc3RhcnRUaW1lfWApO1xuICAgICAgICByZXR1cm4gcHV0SXRlbXM7XG4gICAgfVxuXG4gICAgYXN5bmMgcGFyYWxsZWxCYXRjaERlbGV0ZShpbnB1dEl0ZW1zOiBUW10sIGJhdGNoU2l6ZTogbnVtYmVyID0gMTAwMCwgbWF4Q29uY3VycmVudFNlZ21lbnRzOiBudW1iZXIgPSAyMCk6IFByb21pc2U8VFtdPiB7XG4gICAgICAgIGxldCBzdGFydFRpbWUgPSBEYXRlLm5vdygpO1xuICAgICAgICBsZXQgaXRlbXM6IFRbXSA9IFtdO1xuICAgICAgICBpdGVtcyA9IGl0ZW1zLmNvbmNhdChpbnB1dEl0ZW1zKTtcbiAgICAgICAgbGV0IG1heFNlZ21lbnRzOiBUW11bXVtdID0gW107XG4gICAgICAgIGxldCBkZWxldGVkSXRlbXM6IFRbXSA9IFtdO1xuXG4gICAgICAgIHdoaWxlIChpdGVtcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBsZXQgYmF0Y2ggPSBpdGVtcy5zcGxpY2UoMCwgYmF0Y2hTaXplICogbWF4Q29uY3VycmVudFNlZ21lbnRzKTtcbiAgICAgICAgICAgIGxldCBzZWdtZW50OiBUW11bXSA9IFtdO1xuICAgICAgICAgICAgd2hpbGUgKGJhdGNoLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICBzZWdtZW50LnB1c2goYmF0Y2guc3BsaWNlKDAsIGJhdGNoU2l6ZSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbWF4U2VnbWVudHMucHVzaChzZWdtZW50KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAoY29uc3Qgc2VnbWVudCBvZiBtYXhTZWdtZW50cykge1xuICAgICAgICAgICAgbGV0IHN0YXJ0VGltZSA9IERhdGUubm93KCk7XG4gICAgICAgICAgICBsZXQgcHJvbWlzZXM6IFByb21pc2U8VFtdPltdID0gW107XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgYmF0Y2ggbGVuZ3RoID0gJHtzZWdtZW50Lmxlbmd0aH1gKTtcblxuICAgICAgICAgICAgZm9yIChjb25zdCBiYXRjaCBvZiBzZWdtZW50KSB7XG4gICAgICAgICAgICAgICAgcHJvbWlzZXMucHVzaCh0aGlzLmJhdGNoRGVsZXRlKGJhdGNoKSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGxldCByZXN1bHQgPSBhd2FpdCBQcm9taXNlLmFsbChwcm9taXNlcyk7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcInNlZ21lbnQgY29tcGxldGVcIik7XG4gICAgICAgICAgICByZXN1bHQuZm9yRWFjaCgocmVzKSA9PiB7XG4gICAgICAgICAgICAgICAgZGVsZXRlZEl0ZW1zID0gZGVsZXRlZEl0ZW1zLmNvbmNhdChyZXMpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgdGltZSBmb3Igc2VnbWVudCBkZWxldGUgJHtEYXRlLm5vdygpIC0gc3RhcnRUaW1lfWApO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc29sZS5sb2coYHRvdGFsIHRpbWUgZm9yIGNvbXBsZXRlIHBhcmFsbGVsIGRlbGV0ZSAke0RhdGUubm93KCkgLSBzdGFydFRpbWV9YCk7XG4gICAgICAgIHJldHVybiBkZWxldGVkSXRlbXM7XG4gICAgfVxuXG4gICAgYXN5bmMgcGFyYWxsZWxTY2FuKG9wdGlvbnM/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPik6IFByb21pc2U8VFtdPiB7XG4gICAgICAgIGxldCBpdGVtczogVFtdID0gW107XG4gICAgICAgIGNvbnN0IHNjYW4gPSB0aGlzLm1vZGVsLnNjYW4oKS5hbGwoKTtcblxuICAgICAgICBmb3IgYXdhaXQgKGNvbnN0IGl0ZW0gb2Ygc2Nhbikge1xuICAgICAgICAgICAgaXRlbXMucHVzaChpdGVtKTtcbiAgICAgICAgICAgIGlmIChpdGVtcy5sZW5ndGggJSAxMDAwMDAgPT09IDApIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcInJlYWQgMTAwS1wiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaXRlbXM7XG4gICAgfVxuXG4gICAgYXN5bmMgc2NhbihvcHRpb25zPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pOiBQcm9taXNlPFRbXT4ge1xuICAgICAgICBsZXQgaXRlbXM6IFRbXSA9IFtdO1xuICAgICAgICBjb25zdCBzY2FuID0gdGhpcy5tb2RlbC5zY2FuKCk7XG5cbiAgICAgICAgZm9yIGF3YWl0IChjb25zdCBpdGVtIG9mIHNjYW4pIHtcbiAgICAgICAgICAgIGl0ZW1zLnB1c2goaXRlbSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGl0ZW1zO1xuICAgIH1cblxuICAgIGFzeW5jIHNhdmUoaXRlbTogVCwgYXV0aENvbnRleHQ/OiBBdXRoQ29udGV4dCk6IFByb21pc2U8VD4ge1xuICAgICAgICBpdGVtLmNyZWF0ZWRfdGltZSA9IG5ldyBEYXRlKCk7XG4gICAgICAgIGlmIChhdXRoQ29udGV4dCkge1xuICAgICAgICAgICAgaXRlbS5jcmVhdGVkX3VzZXIgPSBhdXRoQ29udGV4dC51c2VyU3ViO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IHRoaXMubW9kZWwuY3JlYXRlKGl0ZW0pO1xuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH1cblxuICAgIGFzeW5jIHVwZGF0ZShpdGVtOiBULCBhdXRoQ29udGV4dD86IEF1dGhDb250ZXh0KTogUHJvbWlzZTxUPiB7XG4gICAgICAgIGl0ZW0udXBkYXRlZF90aW1lID0gbmV3IERhdGUoKTtcbiAgICAgICAgaWYgKGF1dGhDb250ZXh0KSB7XG4gICAgICAgICAgICBpdGVtLnVwZGF0ZWRfdXNlciA9IGF1dGhDb250ZXh0LnVzZXJTdWI7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcmVzID0gYXdhaXQgdGhpcy5tb2RlbC51cGRhdGUoaXRlbSk7XG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfVxuXG4gICAgYXN5bmMgZGVsZXRlKGl0ZW06IFQpOiBQcm9taXNlPFQgfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMubW9kZWwuZGVsZXRlKGl0ZW0pO1xuICAgIH1cblxuICAgIGFzeW5jIGdldChpdGVtOiBUKTogUHJvbWlzZTxUPiB7XG4gICAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IHRoaXMubW9kZWwuZ2V0KGl0ZW0pO1xuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH1cblxuICAgIGFzeW5jIGJhdGNoUHV0KGl0ZW1zOiBUW10sIGF1dGhDb250ZXh0PzogQXV0aENvbnRleHQpOiBQcm9taXNlPFRbXT4ge1xuICAgICAgICBsZXQgZmluYWxJdGVtczogVFtdID0gW107XG4gICAgICAgIGl0ZW1zID0gaXRlbXMubWFwKGl0ZW0gPT4ge1xuICAgICAgICAgICAgaXRlbS5jcmVhdGVkX3RpbWUgPSBuZXcgRGF0ZSgpO1xuICAgICAgICAgICAgaWYgKGF1dGhDb250ZXh0KSB7XG4gICAgICAgICAgICAgICAgaXRlbS5jcmVhdGVkX3VzZXIgPSBhdXRoQ29udGV4dC51c2VyU3ViO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGl0ZW07XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGZvciBhd2FpdCAoY29uc3QgaXRlbSBvZiB0aGlzLm1vZGVsLmJhdGNoUHV0KGl0ZW1zKSkge1xuICAgICAgICAgICAgY29uc29sZS5sb2coaXRlbSk7XG4gICAgICAgICAgICBmaW5hbEl0ZW1zLnB1c2goaXRlbSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZpbmFsSXRlbXM7XG4gICAgfVxuXG4gICAgYXN5bmMgYmF0Y2hEZWxldGUoaXRlbXM6IFRbXSk6IFByb21pc2U8VFtdPiB7XG4gICAgICAgIGxldCBkZWxldGVJdGVtczogVFtdID0gW107XG4gICAgICAgIGZvciBhd2FpdCAoY29uc3QgaXRlbSBvZiB0aGlzLm1vZGVsLmJhdGNoRGVsZXRlKGl0ZW1zKSkge1xuICAgICAgICAgICAgZGVsZXRlSXRlbXMucHVzaChpdGVtKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZGVsZXRlSXRlbXM7XG4gICAgfVxuXG4gICAgYXN5bmMgYmF0Y2hHZXQoaXRlbXM6IFRbXSk6IFByb21pc2U8VFtdPiB7XG4gICAgICAgIGxldCBnZXRJdGVtczogVFtdID0gW107XG4gICAgICAgIGZvciBhd2FpdCAoY29uc3QgaXRlbSBvZiB0aGlzLm1vZGVsLmJhdGNoR2V0KGl0ZW1zKSkge1xuICAgICAgICAgICAgZ2V0SXRlbXMucHVzaChpdGVtKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZ2V0SXRlbXM7XG4gICAgfVxuXG4gICAgYXN5bmMgcGFyYWxsZWxCYXRjaEdldChpbnB1dEl0ZW1zOiBUW10sIGJhdGNoU2l6ZTogbnVtYmVyID0gMTAwMCwgbWF4Q29uY3VycmVudFNlZ21lbnRzOiBudW1iZXIgPSAyMCk6IFByb21pc2U8VFtdPiB7XG4gICAgICAgIGxldCBzdGFydFRpbWUgPSBEYXRlLm5vdygpO1xuICAgICAgICBsZXQgaXRlbXM6IFRbXSA9IFtdO1xuICAgICAgICBpdGVtcyA9IGl0ZW1zLmNvbmNhdChpbnB1dEl0ZW1zKTtcbiAgICAgICAgbGV0IG1heFNlZ21lbnRzOiBUW11bXVtdID0gW107XG4gICAgICAgIGxldCByZXN1bHRJdGVtczogVFtdID0gW107XG5cbiAgICAgICAgd2hpbGUgKGl0ZW1zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGxldCBiYXRjaCA9IGl0ZW1zLnNwbGljZSgwLCBiYXRjaFNpemUgKiBtYXhDb25jdXJyZW50U2VnbWVudHMpO1xuICAgICAgICAgICAgbGV0IHNlZ21lbnQ6IFRbXVtdID0gW107XG4gICAgICAgICAgICB3aGlsZSAoYmF0Y2gubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIHNlZ21lbnQucHVzaChiYXRjaC5zcGxpY2UoMCwgYmF0Y2hTaXplKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBtYXhTZWdtZW50cy5wdXNoKHNlZ21lbnQpO1xuICAgICAgICB9XG5cbiAgICAgICAgZm9yIChjb25zdCBzZWdtZW50IG9mIG1heFNlZ21lbnRzKSB7XG4gICAgICAgICAgICBsZXQgc3RhcnRUaW1lID0gRGF0ZS5ub3coKTtcbiAgICAgICAgICAgIGxldCBwcm9taXNlczogUHJvbWlzZTxUW10+W10gPSBbXTtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGBiYXRjaCBsZW5ndGggPSAke3NlZ21lbnQubGVuZ3RofWApO1xuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGJhdGNoIG9mIHNlZ21lbnQpIHtcbiAgICAgICAgICAgICAgICBwcm9taXNlcy5wdXNoKHRoaXMuYmF0Y2hHZXQoYmF0Y2gpKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbGV0IHJlc3VsdCA9IGF3YWl0IFByb21pc2UuYWxsKHByb21pc2VzKTtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwic2VnbWVudCBjb21wbGV0ZVwiKTtcbiAgICAgICAgICAgIHJlc3VsdC5mb3JFYWNoKChyZXMpID0+IHtcbiAgICAgICAgICAgICAgICByZXN1bHRJdGVtcyA9IHJlc3VsdEl0ZW1zLmNvbmNhdChyZXMpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgdGltZSBmb3Igc2VnbWVudCBnZXQgJHtEYXRlLm5vdygpIC0gc3RhcnRUaW1lfWApO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc29sZS5sb2coYHRvdGFsIHRpbWUgZm9yIGNvbXBsZXRlIHBhcmFsbGVsIGdldCAke0RhdGUubm93KCkgLSBzdGFydFRpbWV9YCk7XG4gICAgICAgIHJldHVybiByZXN1bHRJdGVtcztcbiAgICB9XG5cbiAgICBhc3luYyBwYXJhbGxlbFF1ZXJ5KFxuICAgICAgICBrZXlDb25kaXRpb25zOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPltdLFxuICAgICAgICBtYXhDb25jdXJyZW50Q2FsbHM6IG51bWJlciA9IDIwLFxuICAgICAgICBvcHRpb25zPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbiAgICApOiBQcm9taXNlPFRbXT4ge1xuICAgICAgICBjb25zdCBzdGFydFRpbWUgPSBEYXRlLm5vdygpO1xuICAgICAgICBjb25zdCByZXN1bHRzOiBUW10gPSBbXTtcblxuICAgICAgICB3aGlsZSAoa2V5Q29uZGl0aW9ucy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBjb25zdCBzZWdtZW50Q29uZGl0aW9ucyA9IGtleUNvbmRpdGlvbnMuc3BsaWNlKDAsIG1heENvbmN1cnJlbnRDYWxscyk7XG4gICAgICAgICAgICBjb25zdCBxdWVyeVByb21pc2VzID0gc2VnbWVudENvbmRpdGlvbnMubWFwKChrZXlDb25kaXRpb24pID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jdXN0b21RdWVyeShrZXlDb25kaXRpb24sIG9wdGlvbnMpO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGNvbnN0IHF1ZXJ5UmVzdWx0cyA9IGF3YWl0IFByb21pc2UuYWxsKHF1ZXJ5UHJvbWlzZXMpO1xuICAgICAgICAgICAgZm9yIChjb25zdCBxdWVyeVJlc3VsdCBvZiBxdWVyeVJlc3VsdHMpIHtcbiAgICAgICAgICAgICAgICByZXN1bHRzLnB1c2goLi4ucXVlcnlSZXN1bHQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc29sZS5sb2coYHRvdGFsIHRpbWUgZm9yIGNvbXBsZXRlIHBhcmFsbGVsIHF1ZXJ5ICR7RGF0ZS5ub3coKSAtIHN0YXJ0VGltZX1gKTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdHM7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBjdXN0b21RdWVyeShrZXlDb25kaXRpb25zOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiwgb3B0aW9ucz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+KTogUHJvbWlzZTxUW10+IHtcbiAgICAgICAgY29uc3Qgc3RhcnRUaW1lID0gRGF0ZS5ub3coKTtcbiAgICAgICAgY29uc3QgaXRlbXM6IFRbXSA9IFtdO1xuXG4gICAgICAgIGNvbnN0IHF1ZXJ5ID0gdGhpcy5tb2RlbC5xdWVyeShrZXlDb25kaXRpb25zKTtcbiAgICAgICAgaWYgKG9wdGlvbnM/LmxpbWl0KSBxdWVyeS5saW1pdChvcHRpb25zLmxpbWl0KTtcblxuICAgICAgICBmb3IgYXdhaXQgKGNvbnN0IGl0ZW0gb2YgcXVlcnkpIHtcbiAgICAgICAgICAgIGl0ZW1zLnB1c2goaXRlbSk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zb2xlLmxvZyhgdG90YWwgdGltZSBmb3IgY29tcGxldGUgcXVlcnkgJHtEYXRlLm5vdygpIC0gc3RhcnRUaW1lfWApO1xuICAgICAgICByZXR1cm4gaXRlbXM7XG4gICAgfVxuXG4gICAgZGVjb2RlKGNvbnRpbnVhdGlvblRva2VuOiBzdHJpbmcgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGlmIChjb250aW51YXRpb25Ub2tlbikge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBsZXQgbGFzdEV2YWx1YXRlZEtleSA9IEpTT04ucGFyc2UoQnVmZmVyLmZyb20oY29udGludWF0aW9uVG9rZW4sICdiYXNlNjQnKS50b1N0cmluZygndXRmOCcpKTtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIkluY29taW5nIExhc3QgRXZhbHVhdGVkIEtleSBcIiArIGxhc3RFdmFsdWF0ZWRLZXkpO1xuICAgICAgICAgICAgICAgIHJldHVybiBsYXN0RXZhbHVhdGVkS2V5O1xuICAgICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgY29udGludWF0aW9uVG9rZW4nKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGFzeW5jIGVuY29kZShsYXN0RXZhbHVhdGVkS2V5OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPik6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgICAgIHJldHVybiBCdWZmZXIuZnJvbShKU09OLnN0cmluZ2lmeShsYXN0RXZhbHVhdGVkS2V5KSkudG9TdHJpbmcoJ2Jhc2U2NCcpO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.BaseModel = exports.BaseSchema = void 0;
|
|
4
|
+
const dynamoose_1 = require("dynamoose");
|
|
5
|
+
exports.BaseSchema = new dynamoose_1.Schema({
|
|
6
|
+
created_time: {
|
|
7
|
+
type: Date,
|
|
8
|
+
default: () => new Date()
|
|
9
|
+
},
|
|
10
|
+
updated_time: {
|
|
11
|
+
type: Date,
|
|
12
|
+
default: () => new Date()
|
|
13
|
+
},
|
|
14
|
+
created_user: {
|
|
15
|
+
type: String
|
|
16
|
+
},
|
|
17
|
+
updated_user: {
|
|
18
|
+
type: String
|
|
19
|
+
}
|
|
20
|
+
}, {
|
|
21
|
+
timestamps: {
|
|
22
|
+
createdAt: 'created_time',
|
|
23
|
+
updatedAt: 'updated_time'
|
|
24
|
+
}
|
|
25
|
+
});
|
|
26
|
+
class BaseModel {
|
|
27
|
+
}
|
|
28
|
+
exports.BaseModel = BaseModel;
|
|
29
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1tb2RlbC1keW5hbW9vc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvYmFzZS1tb2RlbC1keW5hbW9vc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEseUNBQW1DO0FBRXRCLFFBQUEsVUFBVSxHQUFHLElBQUksa0JBQU0sQ0FBQztJQUNqQyxZQUFZLEVBQUU7UUFDVixJQUFJLEVBQUUsSUFBSTtRQUNWLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLElBQUksRUFBRTtLQUM1QjtJQUNELFlBQVksRUFBRTtRQUNWLElBQUksRUFBRSxJQUFJO1FBQ1YsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksSUFBSSxFQUFFO0tBQzVCO0lBQ0QsWUFBWSxFQUFFO1FBQ1YsSUFBSSxFQUFFLE1BQU07S0FDZjtJQUNELFlBQVksRUFBRTtRQUNWLElBQUksRUFBRSxNQUFNO0tBQ2Y7Q0FDSixFQUFFO0lBQ0MsVUFBVSxFQUFFO1FBQ1IsU0FBUyxFQUFFLGNBQWM7UUFDekIsU0FBUyxFQUFFLGNBQWM7S0FDNUI7Q0FDSixDQUFDLENBQUM7QUFFSCxNQUFhLFNBQVM7Q0FLckI7QUFMRCw4QkFLQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNjaGVtYSB9IGZyb20gJ2R5bmFtb29zZSc7XG5cbmV4cG9ydCBjb25zdCBCYXNlU2NoZW1hID0gbmV3IFNjaGVtYSh7XG4gICAgY3JlYXRlZF90aW1lOiB7XG4gICAgICAgIHR5cGU6IERhdGUsXG4gICAgICAgIGRlZmF1bHQ6ICgpID0+IG5ldyBEYXRlKClcbiAgICB9LFxuICAgIHVwZGF0ZWRfdGltZToge1xuICAgICAgICB0eXBlOiBEYXRlLFxuICAgICAgICBkZWZhdWx0OiAoKSA9PiBuZXcgRGF0ZSgpXG4gICAgfSxcbiAgICBjcmVhdGVkX3VzZXI6IHtcbiAgICAgICAgdHlwZTogU3RyaW5nXG4gICAgfSxcbiAgICB1cGRhdGVkX3VzZXI6IHtcbiAgICAgICAgdHlwZTogU3RyaW5nXG4gICAgfVxufSwge1xuICAgIHRpbWVzdGFtcHM6IHtcbiAgICAgICAgY3JlYXRlZEF0OiAnY3JlYXRlZF90aW1lJyxcbiAgICAgICAgdXBkYXRlZEF0OiAndXBkYXRlZF90aW1lJ1xuICAgIH1cbn0pO1xuXG5leHBvcnQgY2xhc3MgQmFzZU1vZGVsIHtcbiAgICBjcmVhdGVkX3RpbWU/OiBEYXRlO1xuICAgIHVwZGF0ZWRfdGltZT86IERhdGU7XG4gICAgY3JlYXRlZF91c2VyPzogc3RyaW5nO1xuICAgIHVwZGF0ZWRfdXNlcj86IHN0cmluZztcbn1cbiJdfQ==
|
|
@@ -96,7 +96,11 @@ __decorate([
|
|
|
96
96
|
(0, annotations_1.attribute)(),
|
|
97
97
|
__metadata("design:type", Number)
|
|
98
98
|
], DefaultPlatterModel.prototype, "plateFactorValue", void 0);
|
|
99
|
+
__decorate([
|
|
100
|
+
(0, annotations_1.attribute)(),
|
|
101
|
+
__metadata("design:type", Number)
|
|
102
|
+
], DefaultPlatterModel.prototype, "discountPercentage", void 0);
|
|
99
103
|
exports.DefaultPlatterModel = DefaultPlatterModel = __decorate([
|
|
100
104
|
(0, annotations_1.table)("DefaultPlattersTable")
|
|
101
105
|
], DefaultPlatterModel);
|
|
102
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
106
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdC1wbGF0dGVycy1tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jdXN0b21lci11c2VyL2RlZmF1bHQtcGxhdHRlci9kZWZhdWx0LXBsYXR0ZXJzLW1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUFBLHVEQUErRTtBQUMvRSxpREFBNkM7QUFHdEMsSUFBTSxtQkFBbUIsR0FBekIsTUFBTSxtQkFBb0IsU0FBUSxzQkFBUztDQWtEakQsQ0FBQTtBQWxEWSxrREFBbUI7QUFFNUI7SUFEQyxJQUFBLGtDQUFvQixFQUFDLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxDQUFDOztzREFDdkI7QUFFbEI7SUFEQyxJQUFBLHVCQUFTLEdBQUU7O3dEQUNRO0FBRXBCO0lBREMsSUFBQSx1QkFBUyxHQUFFOzs0REFDYztBQUUxQjtJQURDLElBQUEsdUJBQVMsRUFBQyxFQUFFLHNCQUFzQixFQUFFLEVBQUUsMkJBQTJCLEVBQUUsT0FBTyxFQUFFLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxDQUFDOztzREFDOUU7QUFFbEI7SUFEQyxJQUFBLHVCQUFTLEdBQUU7O3VEQUNPO0FBRW5CO0lBREMsSUFBQSx1QkFBUyxHQUFFOzt1REFDTztBQUVuQjtJQURDLElBQUEsdUJBQVMsR0FBRTs7cURBQ0s7QUFFakI7SUFEQyxJQUFBLHVCQUFTLEVBQUMsRUFBRSxzQkFBc0IsRUFBRSxFQUFFLG9CQUFvQixFQUFFLE1BQU0sRUFBRSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsQ0FBQzs7MERBQ2xFO0FBRXRCO0lBREMsSUFBQSx1QkFBUyxHQUFFOztxREFDSztBQUVqQjtJQURDLElBQUEsdUJBQVMsRUFBQyxFQUFFLHNCQUFzQixFQUFFLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxFQUFFLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsYUFBYTs7O3NEQUNoRjtBQUVsQjtJQURDLElBQUEsdUJBQVMsR0FBRTs7eURBQ1c7QUFFdkI7SUFEQyxJQUFBLHVCQUFTLEdBQUU7O3FEQUNLO0FBRWpCO0lBREMsSUFBQSx1QkFBUyxFQUFDLEVBQUUsc0JBQXNCLEVBQUUsRUFBRSwyQkFBMkIsRUFBRSxNQUFNLEVBQUUsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLENBQUM7O3dEQUMzRTtBQUVwQjtJQURDLElBQUEsdUJBQVMsR0FBRTs7b0RBQ0k7QUFHaEI7SUFEQyxJQUFBLHVCQUFTLEVBQUMsRUFBRSxzQkFBc0IsRUFBRSxFQUFFLHFCQUFxQixFQUFFLE1BQU0sRUFBRSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsQ0FBQzs7MkRBQ2xFO0FBR3ZCO0lBREMsSUFBQSx1QkFBUyxHQUFFOzt5REFDUztBQUdyQjtJQURDLElBQUEsdUJBQVMsR0FBRTs7MkRBQ1c7QUFHdkI7SUFEQyxJQUFBLHVCQUFTLEdBQUU7OzJEQUNXO0FBR3ZCO0lBREMsSUFBQSx1QkFBUyxHQUFFOzs2REFDYztBQUcxQjtJQURDLElBQUEsdUJBQVMsR0FBRTs7NkRBQ2M7QUFHMUI7SUFEQyxJQUFBLHVCQUFTLEdBQUU7OytEQUNnQjs4QkFqRG5CLG1CQUFtQjtJQUQvQixJQUFBLG1CQUFLLEVBQUMsc0JBQXNCLENBQUM7R0FDakIsbUJBQW1CLENBa0QvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGF0dHJpYnV0ZSwgYXV0b0dlbmVyYXRlZEhhc2hLZXksIHRhYmxlIH0gZnJvbSBcIkBub3ZhLW9kbS9hbm5vdGF0aW9uc1wiO1xuaW1wb3J0IHsgQmFzZU1vZGVsIH0gZnJvbSBcIi4uLy4uL2Jhc2UtbW9kZWxcIjtcblxuQHRhYmxlKFwiRGVmYXVsdFBsYXR0ZXJzVGFibGVcIilcbmV4cG9ydCBjbGFzcyBEZWZhdWx0UGxhdHRlck1vZGVsIGV4dGVuZHMgQmFzZU1vZGVsIHtcbiAgICBAYXV0b0dlbmVyYXRlZEhhc2hLZXkoeyB0eXBlOiAnU3RyaW5nJyB9KVxuICAgIHBsYXR0ZXJJZDogc3RyaW5nO1xuICAgIEBhdHRyaWJ1dGUoKVxuICAgIHBsYXR0ZXJOYW1lOiBzdHJpbmc7XG4gICAgQGF0dHJpYnV0ZSgpXG4gICAgZXZlbnRDYXRlZ29yaWVzOiBzdHJpbmdbXTtcbiAgICBAYXR0cmlidXRlKHsgaW5kZXhLZXlDb25maWd1cmF0aW9uczogeyBcInBsYXR0ZXJUeXBlQmFzZVByaWNlSW5kZXhcIjogXCJSQU5HRVwiIH0sIHR5cGU6ICdOdW1iZXInIH0pXG4gICAgYmFzZVByaWNlOiBudW1iZXI7XG4gICAgQGF0dHJpYnV0ZSgpXG4gICAgbWluaW11bVBheDogbnVtYmVyO1xuICAgIEBhdHRyaWJ1dGUoKVxuICAgIG1heGltdW1QYXg6IG51bWJlcjtcbiAgICBAYXR0cmlidXRlKClcbiAgICBtaW5QcmljZTogbnVtYmVyO1xuICAgIEBhdHRyaWJ1dGUoeyBpbmRleEtleUNvbmZpZ3VyYXRpb25zOiB7IFwicGxhdHRlckFjdGl2ZUluZGV4XCI6IFwiSEFTSFwiIH0sIHR5cGU6ICdTdHJpbmcnIH0pXG4gICAgcGxhdHRlckFjdGl2ZTogc3RyaW5nO1xuICAgIEBhdHRyaWJ1dGUoKVxuICAgIGltYWdlVXJsOiBzdHJpbmc7XG4gICAgQGF0dHJpYnV0ZSh7IGluZGV4S2V5Q29uZmlndXJhdGlvbnM6IHsgXCJtZWFsVGltZXNJbmRleFwiOiBcIkhBU0hcIiB9LCB0eXBlOiAnU3RyaW5nJyB9KSAvLyBWMiBVcGRhdGVkXG4gICAgbWVhbFRpbWVzOiBzdHJpbmc7XG4gICAgQGF0dHJpYnV0ZSgpXG4gICAgbWVudUxvY2F0aW9uOiBzdHJpbmdbXTtcbiAgICBAYXR0cmlidXRlKClcbiAgICBtZW51VHlwZTogc3RyaW5nO1xuICAgIEBhdHRyaWJ1dGUoeyBpbmRleEtleUNvbmZpZ3VyYXRpb25zOiB7IFwicGxhdHRlclR5cGVCYXNlUHJpY2VJbmRleFwiOiBcIkhBU0hcIiB9LCB0eXBlOiAnU3RyaW5nJyB9KVxuICAgIHBsYXR0ZXJUeXBlOiBzdHJpbmc7XG4gICAgQGF0dHJpYnV0ZSgpXG4gICAgcG9wdWxhcjogc3RyaW5nO1xuXG4gICAgQGF0dHJpYnV0ZSh7IGluZGV4S2V5Q29uZmlndXJhdGlvbnM6IHsgXCJwbGF0dGVyU3ViVHlwZUluZGV4XCI6IFwiSEFTSFwiIH0sIHR5cGU6ICdTdHJpbmcnIH0pXG4gICAgcGxhdHRlclN1YlR5cGU6IHN0cmluZzsgLy8gVjJcblxuICAgIEBhdHRyaWJ1dGUoKVxuICAgIGljb25JbWFnZVRhZzogc3RyaW5nOyAvLyBWMlxuXG4gICAgQGF0dHJpYnV0ZSgpXG4gICAgcGxhdHRlclRleHRUYWc6IHN0cmluZzsgLy8gVjJcblxuICAgIEBhdHRyaWJ1dGUoKVxuICAgIHBsYXR0ZXJDdWlzaW5lOiBzdHJpbmc7IC8vIFYyXG5cbiAgICBAYXR0cmlidXRlKClcbiAgICBwbGF0dGVyRXZlbnRUeXBlPzogc3RyaW5nOyAvLyBWMlxuXG4gICAgQGF0dHJpYnV0ZSgpXG4gICAgcGxhdGVGYWN0b3JWYWx1ZT86IG51bWJlcjsgLy8gVjJcblxuICAgIEBhdHRyaWJ1dGUoKVxuICAgIGRpc2NvdW50UGVyY2VudGFnZT86IG51bWJlcjsgLy8gVjJcbn1cbiJdfQ==
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { GenericDAO, AuthContext } from '../base-dao-dynamoose';
|
|
2
|
+
import { Example } from './example-model';
|
|
3
|
+
export declare class ExampleDAO extends GenericDAO<Example> {
|
|
4
|
+
constructor();
|
|
5
|
+
findByExampleStringProperty(value: string): Promise<Example[]>;
|
|
6
|
+
findByExampleNumberProperty(value: number): Promise<Example[]>;
|
|
7
|
+
findByExampleBooleanProperty(value: boolean): Promise<Example[]>;
|
|
8
|
+
findByCreatedUser(userSub: string): Promise<Example[]>;
|
|
9
|
+
createExample(exampleStringProperty: string, exampleNumberProperty: number, exampleBooleanProperty: boolean, authContext?: AuthContext): Promise<Example>;
|
|
10
|
+
updateExample(id: string, updates: Partial<Example>, authContext?: AuthContext): Promise<Example>;
|
|
11
|
+
deleteExample(id: string): Promise<void>;
|
|
12
|
+
getExampleById(id: string): Promise<Example>;
|
|
13
|
+
getAllExamples(): Promise<Example[]>;
|
|
14
|
+
batchCreateExamples(examples: Array<{
|
|
15
|
+
exampleStringProperty: string;
|
|
16
|
+
exampleNumberProperty: number;
|
|
17
|
+
exampleBooleanProperty: boolean;
|
|
18
|
+
}>, authContext?: AuthContext): Promise<Example[]>;
|
|
19
|
+
batchDeleteExamples(ids: string[]): Promise<void>;
|
|
20
|
+
batchGetExamples(ids: string[]): Promise<Example[]>;
|
|
21
|
+
}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ExampleDAO = void 0;
|
|
4
|
+
const base_dao_dynamoose_1 = require("../base-dao-dynamoose");
|
|
5
|
+
const example_model_1 = require("./example-model");
|
|
6
|
+
class ExampleDAO extends base_dao_dynamoose_1.GenericDAO {
|
|
7
|
+
constructor() {
|
|
8
|
+
super(example_model_1.ExampleModel);
|
|
9
|
+
}
|
|
10
|
+
async findByExampleStringProperty(value) {
|
|
11
|
+
return await this.model.scan('exampleStringProperty').eq(value).exec();
|
|
12
|
+
}
|
|
13
|
+
async findByExampleNumberProperty(value) {
|
|
14
|
+
return await this.model.scan('exampleNumberProperty').eq(value).exec();
|
|
15
|
+
}
|
|
16
|
+
async findByExampleBooleanProperty(value) {
|
|
17
|
+
return await this.model.scan('exampleBooleanProperty').eq(value).exec();
|
|
18
|
+
}
|
|
19
|
+
async findByCreatedUser(userSub) {
|
|
20
|
+
return await this.model.scan('created_user').eq(userSub).exec();
|
|
21
|
+
}
|
|
22
|
+
async createExample(exampleStringProperty, exampleNumberProperty, exampleBooleanProperty, authContext) {
|
|
23
|
+
const example = new example_model_1.Example();
|
|
24
|
+
example.exampleStringProperty = exampleStringProperty;
|
|
25
|
+
example.exampleNumberProperty = exampleNumberProperty;
|
|
26
|
+
example.exampleBooleanProperty = exampleBooleanProperty;
|
|
27
|
+
return await this.save(example, authContext);
|
|
28
|
+
}
|
|
29
|
+
async updateExample(id, updates, authContext) {
|
|
30
|
+
const example = new example_model_1.Example();
|
|
31
|
+
example.id = id;
|
|
32
|
+
Object.assign(example, updates);
|
|
33
|
+
return await this.update(example, authContext);
|
|
34
|
+
}
|
|
35
|
+
async deleteExample(id) {
|
|
36
|
+
const example = new example_model_1.Example();
|
|
37
|
+
example.id = id;
|
|
38
|
+
await this.delete(example);
|
|
39
|
+
}
|
|
40
|
+
async getExampleById(id) {
|
|
41
|
+
const example = new example_model_1.Example();
|
|
42
|
+
example.id = id;
|
|
43
|
+
return await this.get(example);
|
|
44
|
+
}
|
|
45
|
+
async getAllExamples() {
|
|
46
|
+
return await this.scan();
|
|
47
|
+
}
|
|
48
|
+
async batchCreateExamples(examples, authContext) {
|
|
49
|
+
const exampleObjects = examples.map(ex => {
|
|
50
|
+
const example = new example_model_1.Example();
|
|
51
|
+
example.exampleStringProperty = ex.exampleStringProperty;
|
|
52
|
+
example.exampleNumberProperty = ex.exampleNumberProperty;
|
|
53
|
+
example.exampleBooleanProperty = ex.exampleBooleanProperty;
|
|
54
|
+
return example;
|
|
55
|
+
});
|
|
56
|
+
return await this.batchPut(exampleObjects, authContext);
|
|
57
|
+
}
|
|
58
|
+
async batchDeleteExamples(ids) {
|
|
59
|
+
const examples = ids.map(id => {
|
|
60
|
+
const example = new example_model_1.Example();
|
|
61
|
+
example.id = id;
|
|
62
|
+
return example;
|
|
63
|
+
});
|
|
64
|
+
await this.batchDelete(examples);
|
|
65
|
+
}
|
|
66
|
+
async batchGetExamples(ids) {
|
|
67
|
+
const examples = ids.map(id => {
|
|
68
|
+
const example = new example_model_1.Example();
|
|
69
|
+
example.id = id;
|
|
70
|
+
return example;
|
|
71
|
+
});
|
|
72
|
+
return await this.batchGet(examples);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
exports.ExampleDAO = ExampleDAO;
|
|
76
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhhbXBsZS1kYW8uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY3VzdG9tZXItdXNlci9leGFtcGxlLWRhby50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw4REFBZ0U7QUFDaEUsbURBQXdEO0FBRXhELE1BQWEsVUFBVyxTQUFRLCtCQUFtQjtJQUMvQztRQUNJLEtBQUssQ0FBQyw0QkFBWSxDQUFDLENBQUM7SUFDeEIsQ0FBQztJQUVELEtBQUssQ0FBQywyQkFBMkIsQ0FBQyxLQUFhO1FBQzNDLE9BQU8sTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUMzRSxDQUFDO0lBRUQsS0FBSyxDQUFDLDJCQUEyQixDQUFDLEtBQWE7UUFDM0MsT0FBTyxNQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLHVCQUF1QixDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzNFLENBQUM7SUFFRCxLQUFLLENBQUMsNEJBQTRCLENBQUMsS0FBYztRQUM3QyxPQUFPLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsd0JBQXdCLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDNUUsQ0FBQztJQUVELEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxPQUFlO1FBQ25DLE9BQU8sTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDcEUsQ0FBQztJQUVELEtBQUssQ0FBQyxhQUFhLENBQ2YscUJBQTZCLEVBQzdCLHFCQUE2QixFQUM3QixzQkFBK0IsRUFDL0IsV0FBeUI7UUFFekIsTUFBTSxPQUFP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QyxDQUFDO0lBQ3pDLENBQUM7Q0FDSjtBQW5HRCxnQ0FtR0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBHZW5lcmljREFPLCBBdXRoQ29udGV4dCB9IGZyb20gJy4uL2Jhc2UtZGFvLWR5bmFtb29zZSc7XG5pbXBvcnQgeyBFeGFtcGxlTW9kZWwsIEV4YW1wbGUgfSBmcm9tICcuL2V4YW1wbGUtbW9kZWwnO1xuXG5leHBvcnQgY2xhc3MgRXhhbXBsZURBTyBleHRlbmRzIEdlbmVyaWNEQU88RXhhbXBsZT4ge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlcihFeGFtcGxlTW9kZWwpO1xuICAgIH1cblxuICAgIGFzeW5jIGZpbmRCeUV4YW1wbGVTdHJpbmdQcm9wZXJ0eSh2YWx1ZTogc3RyaW5nKTogUHJvbWlzZTxFeGFtcGxlW10+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMubW9kZWwuc2NhbignZXhhbXBsZVN0cmluZ1Byb3BlcnR5JykuZXEodmFsdWUpLmV4ZWMoKTtcbiAgICB9XG5cbiAgICBhc3luYyBmaW5kQnlFeGFtcGxlTnVtYmVyUHJvcGVydHkodmFsdWU6IG51bWJlcik6IFByb21pc2U8RXhhbXBsZVtdPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLm1vZGVsLnNjYW4oJ2V4YW1wbGVOdW1iZXJQcm9wZXJ0eScpLmVxKHZhbHVlKS5leGVjKCk7XG4gICAgfVxuXG4gICAgYXN5bmMgZmluZEJ5RXhhbXBsZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZTogYm9vbGVhbik6IFByb21pc2U8RXhhbXBsZVtdPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLm1vZGVsLnNjYW4oJ2V4YW1wbGVCb29sZWFuUHJvcGVydHknKS5lcSh2YWx1ZSkuZXhlYygpO1xuICAgIH1cblxuICAgIGFzeW5jIGZpbmRCeUNyZWF0ZWRVc2VyKHVzZXJTdWI6IHN0cmluZyk6IFByb21pc2U8RXhhbXBsZVtdPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLm1vZGVsLnNjYW4oJ2NyZWF0ZWRfdXNlcicpLmVxKHVzZXJTdWIpLmV4ZWMoKTtcbiAgICB9XG5cbiAgICBhc3luYyBjcmVhdGVFeGFtcGxlKFxuICAgICAgICBleGFtcGxlU3RyaW5nUHJvcGVydHk6IHN0cmluZyxcbiAgICAgICAgZXhhbXBsZU51bWJlclByb3BlcnR5OiBudW1iZXIsXG4gICAgICAgIGV4YW1wbGVCb29sZWFuUHJvcGVydHk6IGJvb2xlYW4sXG4gICAgICAgIGF1dGhDb250ZXh0PzogQXV0aENvbnRleHRcbiAgICApOiBQcm9taXNlPEV4YW1wbGU+IHtcbiAgICAgICAgY29uc3QgZXhhbXBsZSA9IG5ldyBFeGFtcGxlKCk7XG4gICAgICAgIGV4YW1wbGUuZXhhbXBsZVN0cmluZ1Byb3BlcnR5ID0gZXhhbXBsZVN0cmluZ1Byb3BlcnR5O1xuICAgICAgICBleGFtcGxlLmV4YW1wbGVOdW1iZXJQcm9wZXJ0eSA9IGV4YW1wbGVOdW1iZXJQcm9wZXJ0eTtcbiAgICAgICAgZXhhbXBsZS5leGFtcGxlQm9vbGVhblByb3BlcnR5ID0gZXhhbXBsZUJvb2xlYW5Qcm9wZXJ0eTtcblxuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5zYXZlKGV4YW1wbGUsIGF1dGhDb250ZXh0KTtcbiAgICB9XG5cbiAgICBhc3luYyB1cGRhdGVFeGFtcGxlKFxuICAgICAgICBpZDogc3RyaW5nLFxuICAgICAgICB1cGRhdGVzOiBQYXJ0aWFsPEV4YW1wbGU+LFxuICAgICAgICBhdXRoQ29udGV4dD86IEF1dGhDb250ZXh0XG4gICAgKTogUHJvbWlzZTxFeGFtcGxlPiB7XG4gICAgICAgIGNvbnN0IGV4YW1wbGUgPSBuZXcgRXhhbXBsZSgpO1xuICAgICAgICBleGFtcGxlLmlkID0gaWQ7XG4gICAgICAgIE9iamVjdC5hc3NpZ24oZXhhbXBsZSwgdXBkYXRlcyk7XG5cbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMudXBkYXRlKGV4YW1wbGUsIGF1dGhDb250ZXh0KTtcbiAgICB9XG5cbiAgICBhc3luYyBkZWxldGVFeGFtcGxlKGlkOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgY29uc3QgZXhhbXBsZSA9IG5ldyBFeGFtcGxlKCk7XG4gICAgICAgIGV4YW1wbGUuaWQgPSBpZDtcbiAgICAgICAgYXdhaXQgdGhpcy5kZWxldGUoZXhhbXBsZSk7XG4gICAgfVxuXG4gICAgYXN5bmMgZ2V0RXhhbXBsZUJ5SWQoaWQ6IHN0cmluZyk6IFByb21pc2U8RXhhbXBsZT4ge1xuICAgICAgICBjb25zdCBleGFtcGxlID0gbmV3IEV4YW1wbGUoKTtcbiAgICAgICAgZXhhbXBsZS5pZCA9IGlkO1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5nZXQoZXhhbXBsZSk7XG4gICAgfVxuXG4gICAgYXN5bmMgZ2V0QWxsRXhhbXBsZXMoKTogUHJvbWlzZTxFeGFtcGxlW10+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuc2NhbigpO1xuICAgIH1cblxuICAgIGFzeW5jIGJhdGNoQ3JlYXRlRXhhbXBsZXMoXG4gICAgICAgIGV4YW1wbGVzOiBBcnJheTx7XG4gICAgICAgICAgICBleGFtcGxlU3RyaW5nUHJvcGVydHk6IHN0cmluZztcbiAgICAgICAgICAgIGV4YW1wbGVOdW1iZXJQcm9wZXJ0eTogbnVtYmVyO1xuICAgICAgICAgICAgZXhhbXBsZUJvb2xlYW5Qcm9wZXJ0eTogYm9vbGVhbjtcbiAgICAgICAgfT4sXG4gICAgICAgIGF1dGhDb250ZXh0PzogQXV0aENvbnRleHRcbiAgICApOiBQcm9taXNlPEV4YW1wbGVbXT4ge1xuICAgICAgICBjb25zdCBleGFtcGxlT2JqZWN0cyA9IGV4YW1wbGVzLm1hcChleCA9PiB7XG4gICAgICAgICAgICBjb25zdCBleGFtcGxlID0gbmV3IEV4YW1wbGUoKTtcbiAgICAgICAgICAgIGV4YW1wbGUuZXhhbXBsZVN0cmluZ1Byb3BlcnR5ID0gZXguZXhhbXBsZVN0cmluZ1Byb3BlcnR5O1xuICAgICAgICAgICAgZXhhbXBsZS5leGFtcGxlTnVtYmVyUHJvcGVydHkgPSBleC5leGFtcGxlTnVtYmVyUHJvcGVydHk7XG4gICAgICAgICAgICBleGFtcGxlLmV4YW1wbGVCb29sZWFuUHJvcGVydHkgPSBleC5leGFtcGxlQm9vbGVhblByb3BlcnR5O1xuICAgICAgICAgICAgcmV0dXJuIGV4YW1wbGU7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmJhdGNoUHV0KGV4YW1wbGVPYmplY3RzLCBhdXRoQ29udGV4dCk7XG4gICAgfVxuXG4gICAgYXN5bmMgYmF0Y2hEZWxldGVFeGFtcGxlcyhpZHM6IHN0cmluZ1tdKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGNvbnN0IGV4YW1wbGVzID0gaWRzLm1hcChpZCA9PiB7XG4gICAgICAgICAgICBjb25zdCBleGFtcGxlID0gbmV3IEV4YW1wbGUoKTtcbiAgICAgICAgICAgIGV4YW1wbGUuaWQgPSBpZDtcbiAgICAgICAgICAgIHJldHVybiBleGFtcGxlO1xuICAgICAgICB9KTtcbiAgICAgICAgYXdhaXQgdGhpcy5iYXRjaERlbGV0ZShleGFtcGxlcyk7XG4gICAgfVxuXG4gICAgYXN5bmMgYmF0Y2hHZXRFeGFtcGxlcyhpZHM6IHN0cmluZ1tdKTogUHJvbWlzZTxFeGFtcGxlW10+IHtcbiAgICAgICAgY29uc3QgZXhhbXBsZXMgPSBpZHMubWFwKGlkID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGV4YW1wbGUgPSBuZXcgRXhhbXBsZSgpO1xuICAgICAgICAgICAgZXhhbXBsZS5pZCA9IGlkO1xuICAgICAgICAgICAgcmV0dXJuIGV4YW1wbGU7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5iYXRjaEdldChleGFtcGxlcyk7XG4gICAgfVxufVxuIl19
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import { BaseModel } from
|
|
2
|
-
export declare
|
|
3
|
-
|
|
1
|
+
import { BaseModel } from '../base-model';
|
|
2
|
+
export declare const ExampleModel: import("dynamoose/dist/General").ModelType<import("dynamoose/dist/Item").AnyItem>;
|
|
3
|
+
export declare class Example extends BaseModel {
|
|
4
|
+
id?: string;
|
|
4
5
|
exampleStringProperty: string;
|
|
5
6
|
exampleNumberProperty: number;
|
|
6
|
-
exampleBooleanProperty:
|
|
7
|
+
exampleBooleanProperty: boolean;
|
|
7
8
|
}
|
|
@@ -1,37 +1,71 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
10
24
|
};
|
|
11
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
exports.ExampleModel = void 0;
|
|
13
|
-
const
|
|
26
|
+
exports.Example = exports.ExampleModel = void 0;
|
|
27
|
+
const dynamoose_1 = __importStar(require("dynamoose"));
|
|
14
28
|
const base_model_1 = require("../base-model");
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
29
|
+
const ExampleSchema = new dynamoose_1.Schema({
|
|
30
|
+
id: {
|
|
31
|
+
type: String,
|
|
32
|
+
hashKey: true,
|
|
33
|
+
default: () => require('crypto').randomUUID()
|
|
34
|
+
},
|
|
35
|
+
exampleStringProperty: {
|
|
36
|
+
type: String,
|
|
37
|
+
required: true
|
|
38
|
+
},
|
|
39
|
+
exampleNumberProperty: {
|
|
40
|
+
type: Number,
|
|
41
|
+
required: true
|
|
42
|
+
},
|
|
43
|
+
exampleBooleanProperty: {
|
|
44
|
+
type: Boolean,
|
|
45
|
+
required: true
|
|
46
|
+
},
|
|
47
|
+
created_time: {
|
|
48
|
+
type: Date,
|
|
49
|
+
default: () => new Date()
|
|
50
|
+
},
|
|
51
|
+
updated_time: {
|
|
52
|
+
type: Date,
|
|
53
|
+
default: () => new Date()
|
|
54
|
+
},
|
|
55
|
+
created_user: {
|
|
56
|
+
type: String
|
|
57
|
+
},
|
|
58
|
+
updated_user: {
|
|
59
|
+
type: String
|
|
60
|
+
}
|
|
61
|
+
}, {
|
|
62
|
+
timestamps: {
|
|
63
|
+
createdAt: 'created_time',
|
|
64
|
+
updatedAt: 'updated_time'
|
|
65
|
+
}
|
|
66
|
+
});
|
|
67
|
+
exports.ExampleModel = dynamoose_1.default.model('example', ExampleSchema);
|
|
68
|
+
class Example extends base_model_1.BaseModel {
|
|
69
|
+
}
|
|
70
|
+
exports.Example = Example;
|
|
71
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhhbXBsZS1tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jdXN0b21lci11c2VyL2V4YW1wbGUtbW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSx1REFBOEM7QUFDOUMsOENBQTBDO0FBRTFDLE1BQU0sYUFBYSxHQUFHLElBQUksa0JBQU0sQ0FBQztJQUM3QixFQUFFLEVBQUU7UUFDQSxJQUFJLEVBQUUsTUFBTTtRQUNaLE9BQU8sRUFBRSxJQUFJO1FBQ2IsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxVQUFVLEVBQUU7S0FDaEQ7SUFDRCxxQkFBcUIsRUFBRTtRQUNuQixJQUFJLEVBQUUsTUFBTTtRQUNaLFFBQVEsRUFBRSxJQUFJO0tBQ2pCO0lBQ0QscUJBQXFCLEVBQUU7UUFDbkIsSUFBSSxFQUFFLE1BQU07UUFDWixRQUFRLEVBQUUsSUFBSTtLQUNqQjtJQUNELHNCQUFzQixFQUFFO1FBQ3BCLElBQUksRUFBRSxPQUFPO1FBQ2IsUUFBUSxFQUFFLElBQUk7S0FDakI7SUFDRCxZQUFZLEVBQUU7UUFDVixJQUFJLEVBQUUsSUFBSTtRQUNWLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLElBQUksRUFBRTtLQUM1QjtJQUNELFlBQVksRUFBRTtRQUNWLElBQUksRUFBRSxJQUFJO1FBQ1YsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksSUFBSSxFQUFFO0tBQzVCO0lBQ0QsWUFBWSxFQUFFO1FBQ1YsSUFBSSxFQUFFLE1BQU07S0FDZjtJQUNELFlBQVksRUFBRTtRQUNWLElBQUksRUFBRSxNQUFNO0tBQ2Y7Q0FDSixFQUFFO0lBQ0MsVUFBVSxFQUFFO1FBQ1IsU0FBUyxFQUFFLGNBQWM7UUFDekIsU0FBUyxFQUFFLGNBQWM7S0FDNUI7Q0FDSixDQUFDLENBQUM7QUFFVSxRQUFBLFlBQVksR0FBRyxtQkFBUyxDQUFDLEtBQUssQ0FBQyxTQUFTLEVBQUUsYUFBYSxDQUFDLENBQUM7QUFFdEUsTUFBYSxPQUFRLFNBQVEsc0JBQVM7Q0FLckM7QUFMRCwwQkFLQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBkeW5hbW9vc2UsIHsgU2NoZW1hIH0gZnJvbSAnZHluYW1vb3NlJztcbmltcG9ydCB7IEJhc2VNb2RlbCB9IGZyb20gJy4uL2Jhc2UtbW9kZWwnO1xuXG5jb25zdCBFeGFtcGxlU2NoZW1hID0gbmV3IFNjaGVtYSh7XG4gICAgaWQ6IHtcbiAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICBoYXNoS2V5OiB0cnVlLFxuICAgICAgICBkZWZhdWx0OiAoKSA9PiByZXF1aXJlKCdjcnlwdG8nKS5yYW5kb21VVUlEKClcbiAgICB9LFxuICAgIGV4YW1wbGVTdHJpbmdQcm9wZXJ0eToge1xuICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgIHJlcXVpcmVkOiB0cnVlXG4gICAgfSxcbiAgICBleGFtcGxlTnVtYmVyUHJvcGVydHk6IHtcbiAgICAgICAgdHlwZTogTnVtYmVyLFxuICAgICAgICByZXF1aXJlZDogdHJ1ZVxuICAgIH0sXG4gICAgZXhhbXBsZUJvb2xlYW5Qcm9wZXJ0eToge1xuICAgICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgICByZXF1aXJlZDogdHJ1ZVxuICAgIH0sXG4gICAgY3JlYXRlZF90aW1lOiB7XG4gICAgICAgIHR5cGU6IERhdGUsXG4gICAgICAgIGRlZmF1bHQ6ICgpID0+IG5ldyBEYXRlKClcbiAgICB9LFxuICAgIHVwZGF0ZWRfdGltZToge1xuICAgICAgICB0eXBlOiBEYXRlLFxuICAgICAgICBkZWZhdWx0OiAoKSA9PiBuZXcgRGF0ZSgpXG4gICAgfSxcbiAgICBjcmVhdGVkX3VzZXI6IHtcbiAgICAgICAgdHlwZTogU3RyaW5nXG4gICAgfSxcbiAgICB1cGRhdGVkX3VzZXI6IHtcbiAgICAgICAgdHlwZTogU3RyaW5nXG4gICAgfVxufSwge1xuICAgIHRpbWVzdGFtcHM6IHtcbiAgICAgICAgY3JlYXRlZEF0OiAnY3JlYXRlZF90aW1lJyxcbiAgICAgICAgdXBkYXRlZEF0OiAndXBkYXRlZF90aW1lJ1xuICAgIH1cbn0pO1xuXG5leHBvcnQgY29uc3QgRXhhbXBsZU1vZGVsID0gZHluYW1vb3NlLm1vZGVsKCdleGFtcGxlJywgRXhhbXBsZVNjaGVtYSk7XG5cbmV4cG9ydCBjbGFzcyBFeGFtcGxlIGV4dGVuZHMgQmFzZU1vZGVsIHtcbiAgICBpZD86IHN0cmluZztcbiAgICBleGFtcGxlU3RyaW5nUHJvcGVydHk6IHN0cmluZztcbiAgICBleGFtcGxlTnVtYmVyUHJvcGVydHk6IG51bWJlcjtcbiAgICBleGFtcGxlQm9vbGVhblByb3BlcnR5OiBib29sZWFuO1xufSJdfQ==
|
|
@@ -87,11 +87,7 @@ __decorate([
|
|
|
87
87
|
(0, annotations_1.attribute)(),
|
|
88
88
|
__metadata("design:type", Boolean)
|
|
89
89
|
], FindMyPlatterModel.prototype, "hasMutton", void 0);
|
|
90
|
-
__decorate([
|
|
91
|
-
(0, annotations_1.attribute)(),
|
|
92
|
-
__metadata("design:type", Number)
|
|
93
|
-
], FindMyPlatterModel.prototype, "discountPercentage", void 0);
|
|
94
90
|
exports.FindMyPlatterModel = FindMyPlatterModel = __decorate([
|
|
95
91
|
(0, annotations_1.table)("FindMyPlatterTable")
|
|
96
92
|
], FindMyPlatterModel);
|
|
97
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
93
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmluZC1teS1wbGF0dGVyLW1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2N1c3RvbWVyLXVzZXIvZmluZG15cGxhdHRlci9maW5kLW15LXBsYXR0ZXItbW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQUEsdURBQStFO0FBQy9FLGlEQUE2QztBQUd0QyxJQUFNLGtCQUFrQixHQUF4QixNQUFNLGtCQUFtQixTQUFRLHNCQUFTO0NBcUNoRCxDQUFBO0FBckNZLGdEQUFrQjtBQUUzQjtJQURDLElBQUEsa0NBQW9CLEVBQUMsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLENBQUM7OzJEQUNqQjtBQUV4QjtJQURDLElBQUEsdUJBQVMsRUFBQyxFQUFFLHNCQUFzQixFQUFFLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxFQUFFLEVBQUUsQ0FBQzs7cURBQ2xEO0FBRWxCO0lBREMsSUFBQSx1QkFBUyxHQUFFOzt1REFDUTtBQUVwQjtJQURDLElBQUEsdUJBQVMsR0FBRTs7cURBQ007QUFFbEI7SUFEQyxJQUFBLHVCQUFTLEdBQUU7O3NEQUNPO0FBRW5CO0lBREMsSUFBQSx1QkFBUyxHQUFFOztzREFDTztBQUVuQjtJQURDLElBQUEsdUJBQVMsR0FBRTs7b0RBQ0s7QUFFakI7SUFEQyxJQUFBLHVCQUFTLEVBQUMsRUFBRSxzQkFBc0IsRUFBRSxFQUFFLDBCQUEwQixFQUFFLE9BQU8sRUFBRSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsQ0FBQzs7b0RBQzlFO0FBRWpCO0lBREMsSUFBQSx1QkFBUyxFQUFDLEVBQUUsc0JBQXNCLEVBQUUsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLEVBQUUsRUFBRSxDQUFDOzt5REFDbEQ7QUFFdEI7SUFEQyxJQUFBLHVCQUFTLEVBQUMsRUFBRSxzQkFBc0IsRUFBRSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sRUFBRSxFQUFFLENBQUM7O3FEQUNsRDtBQUVsQjtJQURDLElBQUEsdUJBQVMsR0FBRTs7b0RBQ0s7QUFFakI7SUFEQyxJQUFBLHVCQUFTLEVBQUMsRUFBRSxzQkFBc0IsRUFBRSxFQUFFLGtCQUFrQixFQUFFLE1BQU0sRUFBRSxFQUFFLENBQUM7O3VEQUNsRDtBQUVwQjtJQURDLElBQUEsdUJBQVMsRUFBQyxFQUFFLHNCQUFzQixFQUFFLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxFQUFFLEVBQUUsQ0FBQzs7MERBQ2xEO0FBRXZCO0lBREMsSUFBQSx1QkFBUyxHQUFFOzt1REFDUTtBQUVwQjtJQURDLElBQUEsdUJBQVMsR0FBRTs7cURBQ087QUFFbkI7SUFEQyxJQUFBLHVCQUFTLEdBQUU7O2tEQUNJO0FBRWhCO0lBREMsSUFBQSx1QkFBUyxHQUFFOztzREFDUTtBQUVwQjtJQURDLElBQUEsdUJBQVMsR0FBRTs7cURBQ087NkJBcENWLGtCQUFrQjtJQUQ5QixJQUFBLG1CQUFLLEVBQUMsb0JBQW9CLENBQUM7R0FDZixrQkFBa0IsQ0FxQzlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYXR0cmlidXRlLCBhdXRvR2VuZXJhdGVkSGFzaEtleSwgdGFibGUgfSBmcm9tIFwiQG5vdmEtb2RtL2Fubm90YXRpb25zXCI7XG5pbXBvcnQgeyBCYXNlTW9kZWwgfSBmcm9tIFwiLi4vLi4vYmFzZS1tb2RlbFwiO1xuXG5AdGFibGUoXCJGaW5kTXlQbGF0dGVyVGFibGVcIilcbmV4cG9ydCBjbGFzcyBGaW5kTXlQbGF0dGVyTW9kZWwgZXh0ZW5kcyBCYXNlTW9kZWwge1xuICAgIEBhdXRvR2VuZXJhdGVkSGFzaEtleSh7IHR5cGU6ICdTdHJpbmcnIH0pXG4gICAgZmluZE15UGxhdHRlcklkOiBzdHJpbmc7XG4gICAgQGF0dHJpYnV0ZSh7IGluZGV4S2V5Q29uZmlndXJhdGlvbnM6IHsgXCJwbGF0dGVySWRJbmRleFwiOiBcIkhBU0hcIiB9IH0pXG4gICAgcGxhdHRlcklkOiBzdHJpbmc7XG4gICAgQGF0dHJpYnV0ZSgpXG4gICAgcGxhdHRlck5hbWU6IHN0cmluZztcbiAgICBAYXR0cmlidXRlKClcbiAgICBiYXNlUHJpY2U6IG51bWJlcjtcbiAgICBAYXR0cmlidXRlKClcbiAgICBtaW5pbXVtUGF4OiBudW1iZXI7XG4gICAgQGF0dHJpYnV0ZSgpXG4gICAgbWF4aW11bVBheDogbnVtYmVyO1xuICAgIEBhdHRyaWJ1dGUoKVxuICAgIGltYWdlVXJsOiBzdHJpbmc7XG4gICAgQGF0dHJpYnV0ZSh7IGluZGV4S2V5Q29uZmlndXJhdGlvbnM6IHsgXCJwbGF0dGVyVHlwZU1pblByaWNlSW5kZXhcIjogXCJSQU5HRVwiIH0sIHR5cGU6ICdOdW1iZXInIH0pXG4gICAgbWluUHJpY2U6IG51bWJlcjtcbiAgICBAYXR0cmlidXRlKHsgaW5kZXhLZXlDb25maWd1cmF0aW9uczogeyBcInBsYXR0ZXJBY3RpdmVJbmRleFwiOiBcIkhBU0hcIiB9IH0pXG4gICAgcGxhdHRlckFjdGl2ZTogc3RyaW5nO1xuICAgIEBhdHRyaWJ1dGUoeyBpbmRleEtleUNvbmZpZ3VyYXRpb25zOiB7IFwibWVhbFRpbWVzSW5kZXhcIjogXCJIQVNIXCIgfSB9KVxuICAgIG1lYWxUaW1lczogc3RyaW5nO1xuICAgIEBhdHRyaWJ1dGUoKVxuICAgIG1lbnVUeXBlOiBzdHJpbmc7XG4gICAgQGF0dHJpYnV0ZSh7IGluZGV4S2V5Q29uZmlndXJhdGlvbnM6IHsgXCJwbGF0dGVyVHlwZUluZGV4XCI6IFwiSEFTSFwiIH0gfSlcbiAgICBwbGF0dGVyVHlwZTogc3RyaW5nO1xuICAgIEBhdHRyaWJ1dGUoeyBpbmRleEtleUNvbmZpZ3VyYXRpb25zOiB7IFwicGxhdHRlclN1YlR5cGVJbmRleFwiOiBcIkhBU0hcIiB9IH0pXG4gICAgcGxhdHRlclN1YlR5cGU6IHN0cmluZztcbiAgICBAYXR0cmlidXRlKClcbiAgICBwbGF0dGVyTGluazogc3RyaW5nO1xuICAgIEBhdHRyaWJ1dGUoKVxuICAgIGhhc1BhbmVlcjogYm9vbGVhbjtcbiAgICBAYXR0cmlidXRlKClcbiAgICBoYXNFZ2c6IGJvb2xlYW47XG4gICAgQGF0dHJpYnV0ZSgpXG4gICAgaGFzQ2hpY2tlbjogYm9vbGVhbjtcbiAgICBAYXR0cmlidXRlKClcbiAgICBoYXNNdXR0b246IGJvb2xlYW47XG59Il19
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "cmp-aws-database",
|
|
3
|
-
"version": "1.2.0-dev.
|
|
3
|
+
"version": "1.2.0-dev.79",
|
|
4
4
|
"bin": {
|
|
5
5
|
"craft-my-plate-database": "bin/craft-my-plate-database.js"
|
|
6
6
|
},
|
|
@@ -33,6 +33,7 @@
|
|
|
33
33
|
"@nova-odm/annotations": "^0.8.7",
|
|
34
34
|
"aws-cdk-lib": "2.176.0",
|
|
35
35
|
"constructs": "^10.0.0",
|
|
36
|
+
"dynamoose": "^4.1.5",
|
|
36
37
|
"reflect-metadata": "^0.1.14"
|
|
37
38
|
},
|
|
38
39
|
"description": "The package \"cmp-aws-database\" is for its database, which defines global tables. These tables are designed to be imported and used across multiple applications of \"craft-my-plate.\"",
|