cmp-aws-database 1.2.0-dev.79 → 1.2.0-dev.80
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/customer-user/example-model.d.ts +4 -5
- package/dist/customer-user/example-model.js +33 -67
- package/dist/customer-user/occastion/occasion-model.d.ts +1 -0
- package/dist/customer-user/occastion/occasion-model.js +5 -58
- package/package.json +1 -1
- package/dist/base-dao-dynamoose.d.ts +0 -27
- package/dist/base-dao-dynamoose.js +0 -250
- package/dist/base-model-dynamoose.d.ts +0 -7
- package/dist/base-model-dynamoose.js +0 -29
- package/dist/customer-user/example-dao.d.ts +0 -21
- package/dist/customer-user/example-dao.js +0 -76
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
import { BaseModel } from
|
|
2
|
-
export declare
|
|
3
|
-
|
|
4
|
-
id?: string;
|
|
1
|
+
import { BaseModel } from "../base-model";
|
|
2
|
+
export declare class ExampleModel extends BaseModel {
|
|
3
|
+
id: string;
|
|
5
4
|
exampleStringProperty: string;
|
|
6
5
|
exampleNumberProperty: number;
|
|
7
|
-
exampleBooleanProperty:
|
|
6
|
+
exampleBooleanProperty: string;
|
|
8
7
|
}
|
|
@@ -1,71 +1,37 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
if (
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
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;
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
24
10
|
};
|
|
25
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
-
exports.
|
|
27
|
-
const
|
|
12
|
+
exports.ExampleModel = void 0;
|
|
13
|
+
const annotations_1 = require("@nova-odm/annotations");
|
|
28
14
|
const base_model_1 = require("../base-model");
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
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==
|
|
15
|
+
let ExampleModel = class ExampleModel extends base_model_1.BaseModel {
|
|
16
|
+
};
|
|
17
|
+
exports.ExampleModel = ExampleModel;
|
|
18
|
+
__decorate([
|
|
19
|
+
(0, annotations_1.autoGeneratedHashKey)({ type: "String" }),
|
|
20
|
+
__metadata("design:type", String)
|
|
21
|
+
], ExampleModel.prototype, "id", void 0);
|
|
22
|
+
__decorate([
|
|
23
|
+
(0, annotations_1.attribute)(),
|
|
24
|
+
__metadata("design:type", String)
|
|
25
|
+
], ExampleModel.prototype, "exampleStringProperty", void 0);
|
|
26
|
+
__decorate([
|
|
27
|
+
(0, annotations_1.attribute)(),
|
|
28
|
+
__metadata("design:type", Number)
|
|
29
|
+
], ExampleModel.prototype, "exampleNumberProperty", void 0);
|
|
30
|
+
__decorate([
|
|
31
|
+
(0, annotations_1.attribute)(),
|
|
32
|
+
__metadata("design:type", String)
|
|
33
|
+
], ExampleModel.prototype, "exampleBooleanProperty", void 0);
|
|
34
|
+
exports.ExampleModel = ExampleModel = __decorate([
|
|
35
|
+
(0, annotations_1.table)("example")
|
|
36
|
+
], ExampleModel);
|
|
37
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhhbXBsZS1tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jdXN0b21lci11c2VyL2V4YW1wbGUtbW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQUEsdURBQXdGO0FBQ3hGLDhDQUEwQztBQUduQyxJQUFNLFlBQVksR0FBbEIsTUFBTSxZQUFhLFNBQVEsc0JBQVM7Q0FTMUMsQ0FBQTtBQVRZLG9DQUFZO0FBRXJCO0lBREMsSUFBQSxrQ0FBb0IsRUFBQyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsQ0FBQzs7d0NBQzlCO0FBRVg7SUFEQyxJQUFBLHVCQUFTLEdBQUU7OzJEQUNrQjtBQUU5QjtJQURDLElBQUEsdUJBQVMsR0FBRTs7MkRBQ2tCO0FBRTlCO0lBREMsSUFBQSx1QkFBUyxHQUFFOzs0REFDbUI7dUJBUnRCLFlBQVk7SUFEeEIsSUFBQSxtQkFBSyxFQUFDLFNBQVMsQ0FBQztHQUNKLFlBQVksQ0FTeEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhdHRyaWJ1dGUsIGF1dG9HZW5lcmF0ZWRIYXNoS2V5LCBoYXNoS2V5LCB0YWJsZSB9IGZyb20gXCJAbm92YS1vZG0vYW5ub3RhdGlvbnNcIjtcbmltcG9ydCB7IEJhc2VNb2RlbCB9IGZyb20gXCIuLi9iYXNlLW1vZGVsXCI7XG5cbkB0YWJsZShcImV4YW1wbGVcIilcbmV4cG9ydCBjbGFzcyBFeGFtcGxlTW9kZWwgZXh0ZW5kcyBCYXNlTW9kZWwge1xuICAgIEBhdXRvR2VuZXJhdGVkSGFzaEtleSh7IHR5cGU6IFwiU3RyaW5nXCIgfSlcbiAgICBpZDogc3RyaW5nO1xuICAgIEBhdHRyaWJ1dGUoKVxuICAgIGV4YW1wbGVTdHJpbmdQcm9wZXJ0eTogc3RyaW5nO1xuICAgIEBhdHRyaWJ1dGUoKVxuICAgIGV4YW1wbGVOdW1iZXJQcm9wZXJ0eTogbnVtYmVyO1xuICAgIEBhdHRyaWJ1dGUoKVxuICAgIGV4YW1wbGVCb29sZWFuUHJvcGVydHk6IHN0cmluZztcbn0iXX0=
|
|
@@ -43,64 +43,11 @@ __decorate([
|
|
|
43
43
|
(0, annotations_1.attribute)(),
|
|
44
44
|
__metadata("design:type", Boolean)
|
|
45
45
|
], OccasionModel.prototype, "isBbqOccasion", void 0);
|
|
46
|
+
__decorate([
|
|
47
|
+
(0, annotations_1.attribute)(),
|
|
48
|
+
__metadata("design:type", Number)
|
|
49
|
+
], OccasionModel.prototype, "occasionOrder", void 0);
|
|
46
50
|
exports.OccasionModel = OccasionModel = __decorate([
|
|
47
51
|
(0, annotations_1.table)("OccasionEventTable")
|
|
48
52
|
], OccasionModel);
|
|
49
|
-
|
|
50
|
-
// {
|
|
51
|
-
// "House Warming": [
|
|
52
|
-
// "PARTY_AND_CELEBRATIONS",
|
|
53
|
-
// "PUJA_AND_TRADITIONAL_FESTIVALS",
|
|
54
|
-
// "WEDDING_CEREMONIES"
|
|
55
|
-
// ],
|
|
56
|
-
// "Kitty Party": [
|
|
57
|
-
// "PARTY_AND_CELEBRATIONS"
|
|
58
|
-
// ],
|
|
59
|
-
// "Cocktail Party": [
|
|
60
|
-
// "PARTY_AND_CELEBRATIONS",
|
|
61
|
-
// "FORMAL_AND_CORPORATE_EVENTS",
|
|
62
|
-
// "WEDDING_CEREMONIES"
|
|
63
|
-
// ],
|
|
64
|
-
// "Farm House Party": [
|
|
65
|
-
// "PARTY_AND_CELEBRATIONS"
|
|
66
|
-
// ],
|
|
67
|
-
// "Family Get-Together": [
|
|
68
|
-
// "PARTY_AND_CELEBRATIONS",
|
|
69
|
-
// "FORMAL_AND_CORPORATE_EVENTS",
|
|
70
|
-
// "PUJA_AND_TRADITIONAL_FESTIVALS"
|
|
71
|
-
// ],
|
|
72
|
-
// "Birthday Party": [
|
|
73
|
-
// "PARTY_AND_CELEBRATIONS"
|
|
74
|
-
// ],
|
|
75
|
-
// "House Party": [
|
|
76
|
-
// "PARTY_AND_CELEBRATIONS",
|
|
77
|
-
// "FORMAL_AND_CORPORATE_EVENTS"
|
|
78
|
-
// ],
|
|
79
|
-
// "Engagement": [
|
|
80
|
-
// "PARTY_AND_CELEBRATIONS",
|
|
81
|
-
// "WEDDING_CEREMONIES"
|
|
82
|
-
// ],
|
|
83
|
-
// "Reception": [
|
|
84
|
-
// "PARTY_AND_CELEBRATIONS",
|
|
85
|
-
// "PUJA_AND_TRADITIONAL_FESTIVALS",
|
|
86
|
-
// "WEDDING_CEREMONIES"
|
|
87
|
-
// ],
|
|
88
|
-
// "Workshops": [
|
|
89
|
-
// "FORMAL_AND_CORPORATE_EVENTS"
|
|
90
|
-
// ],
|
|
91
|
-
// "Corporate Events": [
|
|
92
|
-
// "FORMAL_AND_CORPORATE_EVENTS"
|
|
93
|
-
// ],
|
|
94
|
-
// "Puja": [
|
|
95
|
-
// "PUJA_AND_TRADITIONAL_FESTIVALS"
|
|
96
|
-
// ],
|
|
97
|
-
// "Wedding": [
|
|
98
|
-
// "PUJA_AND_TRADITIONAL_FESTIVALS",
|
|
99
|
-
// "WEDDING_CEREMONIES"
|
|
100
|
-
// ],
|
|
101
|
-
// "Haldi": [
|
|
102
|
-
// "PUJA_AND_TRADITIONAL_FESTIVALS",
|
|
103
|
-
// "WEDDING_CEREMONIES"
|
|
104
|
-
// ]
|
|
105
|
-
// }
|
|
106
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2NjYXNpb24tbW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY3VzdG9tZXItdXNlci9vY2Nhc3Rpb24vb2NjYXNpb24tbW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQUEsdURBQStFO0FBQy9FLGlEQUE2QztBQUl0QyxJQUFNLGFBQWEsR0FBbkIsTUFBTSxhQUFjLFNBQVEsc0JBQVM7Q0FxQjNDLENBQUE7QUFyQlksc0NBQWE7QUFFdEI7SUFEQyxJQUFBLGtDQUFvQixFQUFDLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxDQUFDOztpREFDdEI7QUFHbkI7SUFEQyxJQUFBLHVCQUFTLEdBQUU7O21EQUNTO0FBR3JCO0lBREMsSUFBQSx1QkFBUyxHQUFFOzt1REFDYTtBQUd6QjtJQURDLElBQUEsdUJBQVMsRUFBQyxFQUFFLHNCQUFzQixFQUFFLEVBQUUsZUFBZSxFQUFFLE1BQU0sRUFBRSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsQ0FBQzs7K0NBQ2xFO0FBR2pCO0lBREMsSUFBQSx1QkFBUyxFQUFDLEVBQUUsc0JBQXNCLEVBQUUsRUFBRSxxQkFBcUIsRUFBRSxPQUFPLEVBQUUsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLENBQUM7O3FEQUNuRTtBQUd2QjtJQURDLElBQUEsdUJBQVMsR0FBRTs7cURBQ2E7QUFHekI7SUFEQyxJQUFBLHVCQUFTLEdBQUU7O29EQUNZO3dCQXBCZixhQUFhO0lBRHpCLElBQUEsbUJBQUssRUFBQyxvQkFBb0IsQ0FBQztHQUNmLGFBQWEsQ0FxQnpCO0FBRUQsNkJBQTZCO0FBQzdCLElBQUk7QUFDSix5QkFBeUI7QUFDekIsa0NBQWtDO0FBQ2xDLDBDQUEwQztBQUMxQyw2QkFBNkI7QUFDN0IsU0FBUztBQUNULHVCQUF1QjtBQUN2QixpQ0FBaUM7QUFDakMsU0FBUztBQUNULDBCQUEwQjtBQUMxQixrQ0FBa0M7QUFDbEMsdUNBQXVDO0FBQ3ZDLDZCQUE2QjtBQUM3QixTQUFTO0FBQ1QsNEJBQTRCO0FBQzVCLGlDQUFpQztBQUNqQyxTQUFTO0FBQ1QsK0JBQStCO0FBQy9CLGtDQUFrQztBQUNsQyx1Q0FBdUM7QUFDdkMseUNBQXlDO0FBQ3pDLFNBQVM7QUFDVCwwQkFBMEI7QUFDMUIsaUNBQWlDO0FBQ2pDLFNBQVM7QUFDVCx1QkFBdUI7QUFDdkIsa0NBQWtDO0FBQ2xDLHNDQUFzQztBQUN0QyxTQUFTO0FBQ1Qsc0JBQXNCO0FBQ3RCLGtDQUFrQztBQUNsQyw2QkFBNkI7QUFDN0IsU0FBUztBQUNULHFCQUFxQjtBQUNyQixrQ0FBa0M7QUFDbEMsMENBQTBDO0FBQzFDLDZCQUE2QjtBQUM3QixTQUFTO0FBQ1QscUJBQXFCO0FBQ3JCLHNDQUFzQztBQUN0QyxTQUFTO0FBQ1QsNEJBQTRCO0FBQzVCLHNDQUFzQztBQUN0QyxTQUFTO0FBQ1QsZ0JBQWdCO0FBQ2hCLHlDQUF5QztBQUN6QyxTQUFTO0FBQ1QsbUJBQW1CO0FBQ25CLDBDQUEwQztBQUMxQyw2QkFBNkI7QUFDN0IsU0FBUztBQUNULGlCQUFpQjtBQUNqQiwwQ0FBMEM7QUFDMUMsNkJBQTZCO0FBQzdCLFFBQVE7QUFDUixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYXR0cmlidXRlLCBhdXRvR2VuZXJhdGVkSGFzaEtleSwgdGFibGUgfSBmcm9tIFwiQG5vdmEtb2RtL2Fubm90YXRpb25zXCI7XG5pbXBvcnQgeyBCYXNlTW9kZWwgfSBmcm9tIFwiLi4vLi4vYmFzZS1tb2RlbFwiO1xuXG5cbkB0YWJsZShcIk9jY2FzaW9uRXZlbnRUYWJsZVwiKVxuZXhwb3J0IGNsYXNzIE9jY2FzaW9uTW9kZWwgZXh0ZW5kcyBCYXNlTW9kZWwge1xuICAgIEBhdXRvR2VuZXJhdGVkSGFzaEtleSh7IHR5cGU6IFwiU3RyaW5nXCIgfSlcbiAgICBvY2Nhc2lvbklkOiBzdHJpbmc7XG5cbiAgICBAYXR0cmlidXRlKClcbiAgICBvY2Nhc2lvbk5hbWU6IHN0cmluZztcblxuICAgIEBhdHRyaWJ1dGUoKVxuICAgIG9jY2FzaW9uSW1hZ2VVcmw6IHN0cmluZztcblxuICAgIEBhdHRyaWJ1dGUoeyBpbmRleEtleUNvbmZpZ3VyYXRpb25zOiB7IFwiY2F0ZWdvcnlJbmRleFwiOiBcIkhBU0hcIiB9LCB0eXBlOiAnU3RyaW5nJyB9KVxuICAgIGNhdGVnb3J5OiBzdHJpbmc7XG5cbiAgICBAYXR0cmlidXRlKHsgaW5kZXhLZXlDb25maWd1cmF0aW9uczogeyBcIm9jY2FzaW9uU3RhdHVzSW5kZXhcIjogXCJSQU5HRVwiIH0sIHR5cGU6ICdTdHJpbmcnIH0pXG4gICAgb2NjYXNpb25TdGF0dXM6IHN0cmluZztcblxuICAgIEBhdHRyaWJ1dGUoKVxuICAgIGZpbHRlckNhdGVnb3J5OiBzdHJpbmdbXTsgLy8gVjJcblxuICAgIEBhdHRyaWJ1dGUoKVxuICAgIGlzQmJxT2NjYXNpb24/OiBib29sZWFuOyAvLyBOZXcgQWRkZWQgMjItMTItMjAyNVxufVxuXG4vLyBmb3IgZmlsdGVyIGNhdGVnb3J5IHZhbHVlc1xuLy8ge1xuLy8gICAgIFwiSG91c2UgV2FybWluZ1wiOiBbXG4vLyAgICAgICBcIlBBUlRZX0FORF9DRUxFQlJBVElPTlNcIixcbi8vICAgICAgIFwiUFVKQV9BTkRfVFJBRElUSU9OQUxfRkVTVElWQUxTXCIsXG4vLyAgICAgICBcIldFRERJTkdfQ0VSRU1PTklFU1wiXG4vLyAgICAgXSxcbi8vICAgICBcIktpdHR5IFBhcnR5XCI6IFtcbi8vICAgICAgIFwiUEFSVFlfQU5EX0NFTEVCUkFUSU9OU1wiXG4vLyAgICAgXSxcbi8vICAgICBcIkNvY2t0YWlsIFBhcnR5XCI6IFtcbi8vICAgICAgIFwiUEFSVFlfQU5EX0NFTEVCUkFUSU9OU1wiLFxuLy8gICAgICAgXCJGT1JNQUxfQU5EX0NPUlBPUkFURV9FVkVOVFNcIixcbi8vICAgICAgIFwiV0VERElOR19DRVJFTU9OSUVTXCJcbi8vICAgICBdLFxuLy8gICAgIFwiRmFybSBIb3VzZSBQYXJ0eVwiOiBbXG4vLyAgICAgICBcIlBBUlRZX0FORF9DRUxFQlJBVElPTlNcIlxuLy8gICAgIF0sXG4vLyAgICAgXCJGYW1pbHkgR2V0LVRvZ2V0aGVyXCI6IFtcbi8vICAgICAgIFwiUEFSVFlfQU5EX0NFTEVCUkFUSU9OU1wiLFxuLy8gICAgICAgXCJGT1JNQUxfQU5EX0NPUlBPUkFURV9FVkVOVFNcIixcbi8vICAgICAgIFwiUFVKQV9BTkRfVFJBRElUSU9OQUxfRkVTVElWQUxTXCJcbi8vICAgICBdLFxuLy8gICAgIFwiQmlydGhkYXkgUGFydHlcIjogW1xuLy8gICAgICAgXCJQQVJUWV9BTkRfQ0VMRUJSQVRJT05TXCJcbi8vICAgICBdLFxuLy8gICAgIFwiSG91c2UgUGFydHlcIjogW1xuLy8gICAgICAgXCJQQVJUWV9BTkRfQ0VMRUJSQVRJT05TXCIsXG4vLyAgICAgICBcIkZPUk1BTF9BTkRfQ09SUE9SQVRFX0VWRU5UU1wiXG4vLyAgICAgXSxcbi8vICAgICBcIkVuZ2FnZW1lbnRcIjogW1xuLy8gICAgICAgXCJQQVJUWV9BTkRfQ0VMRUJSQVRJT05TXCIsXG4vLyAgICAgICBcIldFRERJTkdfQ0VSRU1PTklFU1wiXG4vLyAgICAgXSxcbi8vICAgICBcIlJlY2VwdGlvblwiOiBbXG4vLyAgICAgICBcIlBBUlRZX0FORF9DRUxFQlJBVElPTlNcIixcbi8vICAgICAgIFwiUFVKQV9BTkRfVFJBRElUSU9OQUxfRkVTVElWQUxTXCIsXG4vLyAgICAgICBcIldFRERJTkdfQ0VSRU1PTklFU1wiXG4vLyAgICAgXSxcbi8vICAgICBcIldvcmtzaG9wc1wiOiBbXG4vLyAgICAgICBcIkZPUk1BTF9BTkRfQ09SUE9SQVRFX0VWRU5UU1wiXG4vLyAgICAgXSxcbi8vICAgICBcIkNvcnBvcmF0ZSBFdmVudHNcIjogW1xuLy8gICAgICAgXCJGT1JNQUxfQU5EX0NPUlBPUkFURV9FVkVOVFNcIlxuLy8gICAgIF0sXG4vLyAgICAgXCJQdWphXCI6IFtcbi8vICAgICAgIFwiUFVKQV9BTkRfVFJBRElUSU9OQUxfRkVTVElWQUxTXCJcbi8vICAgICBdLFxuLy8gICAgIFwiV2VkZGluZ1wiOiBbXG4vLyAgICAgICBcIlBVSkFfQU5EX1RSQURJVElPTkFMX0ZFU1RJVkFMU1wiLFxuLy8gICAgICAgXCJXRURESU5HX0NFUkVNT05JRVNcIlxuLy8gICAgIF0sXG4vLyAgICAgXCJIYWxkaVwiOiBbXG4vLyAgICAgICBcIlBVSkFfQU5EX1RSQURJVElPTkFMX0ZFU1RJVkFMU1wiLFxuLy8gICAgICAgXCJXRURESU5HX0NFUkVNT05JRVNcIlxuLy8gICAgIF1cbi8vICAgfVxuIl19
|
|
53
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2NjYXNpb24tbW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY3VzdG9tZXItdXNlci9vY2Nhc3Rpb24vb2NjYXNpb24tbW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQUEsdURBQStFO0FBQy9FLGlEQUE2QztBQUl0QyxJQUFNLGFBQWEsR0FBbkIsTUFBTSxhQUFjLFNBQVEsc0JBQVM7Q0F3QjNDLENBQUE7QUF4Qlksc0NBQWE7QUFFdEI7SUFEQyxJQUFBLGtDQUFvQixFQUFDLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxDQUFDOztpREFDdEI7QUFHbkI7SUFEQyxJQUFBLHVCQUFTLEdBQUU7O21EQUNTO0FBR3JCO0lBREMsSUFBQSx1QkFBUyxHQUFFOzt1REFDYTtBQUd6QjtJQURDLElBQUEsdUJBQVMsRUFBQyxFQUFFLHNCQUFzQixFQUFFLEVBQUUsZUFBZSxFQUFFLE1BQU0sRUFBRSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsQ0FBQzs7K0NBQ2xFO0FBR2pCO0lBREMsSUFBQSx1QkFBUyxFQUFDLEVBQUUsc0JBQXNCLEVBQUUsRUFBRSxxQkFBcUIsRUFBRSxPQUFPLEVBQUUsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLENBQUM7O3FEQUNuRTtBQUd2QjtJQURDLElBQUEsdUJBQVMsR0FBRTs7cURBQ2E7QUFHekI7SUFEQyxJQUFBLHVCQUFTLEdBQUU7O29EQUNZO0FBR3hCO0lBREMsSUFBQSx1QkFBUyxHQUFFOztvREFDVzt3QkF2QmQsYUFBYTtJQUR6QixJQUFBLG1CQUFLLEVBQUMsb0JBQW9CLENBQUM7R0FDZixhQUFhLENBd0J6QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGF0dHJpYnV0ZSwgYXV0b0dlbmVyYXRlZEhhc2hLZXksIHRhYmxlIH0gZnJvbSBcIkBub3ZhLW9kbS9hbm5vdGF0aW9uc1wiO1xuaW1wb3J0IHsgQmFzZU1vZGVsIH0gZnJvbSBcIi4uLy4uL2Jhc2UtbW9kZWxcIjtcblxuXG5AdGFibGUoXCJPY2Nhc2lvbkV2ZW50VGFibGVcIilcbmV4cG9ydCBjbGFzcyBPY2Nhc2lvbk1vZGVsIGV4dGVuZHMgQmFzZU1vZGVsIHtcbiAgICBAYXV0b0dlbmVyYXRlZEhhc2hLZXkoeyB0eXBlOiBcIlN0cmluZ1wiIH0pXG4gICAgb2NjYXNpb25JZDogc3RyaW5nO1xuXG4gICAgQGF0dHJpYnV0ZSgpXG4gICAgb2NjYXNpb25OYW1lOiBzdHJpbmc7XG5cbiAgICBAYXR0cmlidXRlKClcbiAgICBvY2Nhc2lvbkltYWdlVXJsOiBzdHJpbmc7XG5cbiAgICBAYXR0cmlidXRlKHsgaW5kZXhLZXlDb25maWd1cmF0aW9uczogeyBcImNhdGVnb3J5SW5kZXhcIjogXCJIQVNIXCIgfSwgdHlwZTogJ1N0cmluZycgfSlcbiAgICBjYXRlZ29yeTogc3RyaW5nO1xuXG4gICAgQGF0dHJpYnV0ZSh7IGluZGV4S2V5Q29uZmlndXJhdGlvbnM6IHsgXCJvY2Nhc2lvblN0YXR1c0luZGV4XCI6IFwiUkFOR0VcIiB9LCB0eXBlOiAnU3RyaW5nJyB9KVxuICAgIG9jY2FzaW9uU3RhdHVzOiBzdHJpbmc7XG5cbiAgICBAYXR0cmlidXRlKClcbiAgICBmaWx0ZXJDYXRlZ29yeTogc3RyaW5nW107IC8vIFYyXG5cbiAgICBAYXR0cmlidXRlKClcbiAgICBpc0JicU9jY2FzaW9uPzogYm9vbGVhbjsgLy8gTmV3IEFkZGVkIDIyLTEyLTIwMjVcblxuICAgIEBhdHRyaWJ1dGUoKVxuICAgIG9jY2FzaW9uT3JkZXI/OiBudW1iZXI7IC8vIE5ldyBBZGRlZCAyMi0xMi0yMDI1XG59Il19
|
package/package.json
CHANGED
|
@@ -1,27 +0,0 @@
|
|
|
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
|
-
}
|
|
@@ -1,250 +0,0 @@
|
|
|
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==
|
|
@@ -1,29 +0,0 @@
|
|
|
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==
|
|
@@ -1,21 +0,0 @@
|
|
|
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
|
-
}
|
|
@@ -1,76 +0,0 @@
|
|
|
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
|