cmp-aws-database 1.7.1-dev.27 → 1.7.1-dev.29
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-dynamoose-dao.d.ts +31 -5
- package/dist/base-dynamoose-dao.js +97 -10
- package/dist/base-dynamoose-model.d.ts +10 -3
- package/dist/base-dynamoose-model.js +1 -1
- package/dist/customer-user/platter-fit-module/platter-fit-dao.d.ts +2 -2
- package/dist/customer-user/platter-fit-module/platter-fit-dao.js +3 -3
- package/dist/customer-user/platter-fit-module/platter-fit-model.d.ts +6 -1
- package/dist/customer-user/platter-fit-module/platter-fit-model.js +11 -6
- package/package.json +1 -1
|
@@ -12,15 +12,32 @@ type DynamooseModelLike = {
|
|
|
12
12
|
export declare class GenericDynamooseDAO<T extends BaseDynamooseModel> {
|
|
13
13
|
protected readonly model: DynamooseModelLike;
|
|
14
14
|
protected readonly primaryKeyName: keyof T & string;
|
|
15
|
+
protected readonly sortKeyName?: (keyof T & string) | undefined;
|
|
15
16
|
/**
|
|
16
17
|
* @param model Dynamoose model instance for the target table.
|
|
17
18
|
* @param primaryKeyName Attribute name used as the table hash key.
|
|
18
19
|
*/
|
|
19
|
-
constructor(model: DynamooseModelLike, primaryKeyName: keyof T & string);
|
|
20
|
+
constructor(model: DynamooseModelLike, primaryKeyName: keyof T & string, sortKeyName?: (keyof T & string) | undefined);
|
|
20
21
|
/**
|
|
21
22
|
* Builds a DynamoDB key object from a single primary key value.
|
|
22
23
|
*/
|
|
23
|
-
protected getKeyObject(primaryKeyValue: string): DynamoKey;
|
|
24
|
+
protected getKeyObject(primaryKeyValue: string, sortKeyValue?: string): DynamoKey;
|
|
25
|
+
/**
|
|
26
|
+
* Extracts and validates string primary key value from an item.
|
|
27
|
+
*/
|
|
28
|
+
protected getPrimaryKeyValueFromItem(item: T): string;
|
|
29
|
+
/**
|
|
30
|
+
* Extracts and validates sort key value from an item when sort key is configured.
|
|
31
|
+
*/
|
|
32
|
+
protected getSortKeyValueFromItem(item: T): string | undefined;
|
|
33
|
+
/**
|
|
34
|
+
* Builds complete key object (hash + optional sort) from an item.
|
|
35
|
+
*/
|
|
36
|
+
protected getItemKeyObject(item: T): DynamoKey;
|
|
37
|
+
/**
|
|
38
|
+
* Serializes key object for stable set/map comparisons.
|
|
39
|
+
*/
|
|
40
|
+
protected serializeKey(key: DynamoKey): string;
|
|
24
41
|
/**
|
|
25
42
|
* Creates a new record and automatically stamps created audit fields.
|
|
26
43
|
*/
|
|
@@ -28,23 +45,32 @@ export declare class GenericDynamooseDAO<T extends BaseDynamooseModel> {
|
|
|
28
45
|
/**
|
|
29
46
|
* Updates an existing record and automatically stamps updated audit fields.
|
|
30
47
|
*/
|
|
31
|
-
update(primaryKeyValue: string, updates: Partial<T>, authContext?: AuthContext): Promise<T>;
|
|
48
|
+
update(primaryKeyValue: string, updates: Partial<T>, authContext?: AuthContext, sortKeyValue?: string): Promise<T>;
|
|
32
49
|
/**
|
|
33
50
|
* Deletes one record by primary key.
|
|
34
51
|
*/
|
|
35
|
-
delete(primaryKeyValue: string): Promise<T | undefined>;
|
|
52
|
+
delete(primaryKeyValue: string, sortKeyValue?: string): Promise<T | undefined>;
|
|
36
53
|
/**
|
|
37
54
|
* Fetches one record by primary key. Returns null when not found.
|
|
38
55
|
*/
|
|
39
|
-
get(primaryKeyValue: string): Promise<T | null>;
|
|
56
|
+
get(primaryKeyValue: string, sortKeyValue?: string): Promise<T | null>;
|
|
40
57
|
/**
|
|
41
58
|
* Writes multiple records in a batch and throws if any item is left unprocessed.
|
|
42
59
|
*/
|
|
43
60
|
batchSave(items: T[], authContext?: AuthContext): Promise<T[]>;
|
|
61
|
+
/**
|
|
62
|
+
* Upserts multiple records by primary key.
|
|
63
|
+
* New keys are created (created_* fields), existing keys are updated (updated_* fields).
|
|
64
|
+
*/
|
|
65
|
+
batchUpsert(items: T[], authContext?: AuthContext): Promise<T[]>;
|
|
44
66
|
/**
|
|
45
67
|
* Fetches multiple records by primary keys.
|
|
46
68
|
*/
|
|
47
69
|
batchGet(primaryKeyValues: string[]): Promise<T[]>;
|
|
70
|
+
/**
|
|
71
|
+
* Fetches multiple records by key objects (supports hash + optional sort key).
|
|
72
|
+
*/
|
|
73
|
+
batchGetByKeys(keys: DynamoKey[]): Promise<T[]>;
|
|
48
74
|
/**
|
|
49
75
|
* Decodes a base64 continuation token into DynamoDB last evaluated key.
|
|
50
76
|
*/
|
|
@@ -6,15 +6,65 @@ class GenericDynamooseDAO {
|
|
|
6
6
|
* @param model Dynamoose model instance for the target table.
|
|
7
7
|
* @param primaryKeyName Attribute name used as the table hash key.
|
|
8
8
|
*/
|
|
9
|
-
constructor(model, primaryKeyName) {
|
|
9
|
+
constructor(model, primaryKeyName, sortKeyName) {
|
|
10
10
|
this.model = model;
|
|
11
11
|
this.primaryKeyName = primaryKeyName;
|
|
12
|
+
this.sortKeyName = sortKeyName;
|
|
12
13
|
}
|
|
13
14
|
/**
|
|
14
15
|
* Builds a DynamoDB key object from a single primary key value.
|
|
15
16
|
*/
|
|
16
|
-
getKeyObject(primaryKeyValue) {
|
|
17
|
-
|
|
17
|
+
getKeyObject(primaryKeyValue, sortKeyValue) {
|
|
18
|
+
const keyObject = { [this.primaryKeyName]: primaryKeyValue };
|
|
19
|
+
if (this.sortKeyName) {
|
|
20
|
+
if (!sortKeyValue) {
|
|
21
|
+
throw new Error(`Missing sort key value for '${this.sortKeyName}'`);
|
|
22
|
+
}
|
|
23
|
+
keyObject[this.sortKeyName] = sortKeyValue;
|
|
24
|
+
}
|
|
25
|
+
return keyObject;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Extracts and validates string primary key value from an item.
|
|
29
|
+
*/
|
|
30
|
+
getPrimaryKeyValueFromItem(item) {
|
|
31
|
+
const keyRecord = item;
|
|
32
|
+
const keyValue = keyRecord[this.primaryKeyName];
|
|
33
|
+
if (typeof keyValue !== "string" || keyValue.length === 0) {
|
|
34
|
+
throw new Error(`Missing or invalid primary key value for '${this.primaryKeyName}'`);
|
|
35
|
+
}
|
|
36
|
+
return keyValue;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Extracts and validates sort key value from an item when sort key is configured.
|
|
40
|
+
*/
|
|
41
|
+
getSortKeyValueFromItem(item) {
|
|
42
|
+
if (!this.sortKeyName) {
|
|
43
|
+
return undefined;
|
|
44
|
+
}
|
|
45
|
+
const keyRecord = item;
|
|
46
|
+
const keyValue = keyRecord[this.sortKeyName];
|
|
47
|
+
if (typeof keyValue !== "string" || keyValue.length === 0) {
|
|
48
|
+
throw new Error(`Missing or invalid sort key value for '${this.sortKeyName}'`);
|
|
49
|
+
}
|
|
50
|
+
return keyValue;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Builds complete key object (hash + optional sort) from an item.
|
|
54
|
+
*/
|
|
55
|
+
getItemKeyObject(item) {
|
|
56
|
+
const primaryKeyValue = this.getPrimaryKeyValueFromItem(item);
|
|
57
|
+
const sortKeyValue = this.getSortKeyValueFromItem(item);
|
|
58
|
+
return this.getKeyObject(primaryKeyValue, sortKeyValue);
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Serializes key object for stable set/map comparisons.
|
|
62
|
+
*/
|
|
63
|
+
serializeKey(key) {
|
|
64
|
+
if (!this.sortKeyName) {
|
|
65
|
+
return `${key[this.primaryKeyName]}`;
|
|
66
|
+
}
|
|
67
|
+
return `${key[this.primaryKeyName]}#${key[this.sortKeyName]}`;
|
|
18
68
|
}
|
|
19
69
|
/**
|
|
20
70
|
* Creates a new record and automatically stamps created audit fields.
|
|
@@ -31,9 +81,9 @@ class GenericDynamooseDAO {
|
|
|
31
81
|
/**
|
|
32
82
|
* Updates an existing record and automatically stamps updated audit fields.
|
|
33
83
|
*/
|
|
34
|
-
async update(primaryKeyValue, updates, authContext) {
|
|
84
|
+
async update(primaryKeyValue, updates, authContext, sortKeyValue) {
|
|
35
85
|
const updateFn = this.model.update;
|
|
36
|
-
const updated = await updateFn(this.getKeyObject(primaryKeyValue), {
|
|
86
|
+
const updated = await updateFn(this.getKeyObject(primaryKeyValue, sortKeyValue), {
|
|
37
87
|
...updates,
|
|
38
88
|
updated_time: new Date(),
|
|
39
89
|
updated_user: authContext?.userSub
|
|
@@ -43,17 +93,17 @@ class GenericDynamooseDAO {
|
|
|
43
93
|
/**
|
|
44
94
|
* Deletes one record by primary key.
|
|
45
95
|
*/
|
|
46
|
-
async delete(primaryKeyValue) {
|
|
96
|
+
async delete(primaryKeyValue, sortKeyValue) {
|
|
47
97
|
const deleteFn = this.model.delete;
|
|
48
|
-
const deleted = await deleteFn(this.getKeyObject(primaryKeyValue));
|
|
98
|
+
const deleted = await deleteFn(this.getKeyObject(primaryKeyValue, sortKeyValue));
|
|
49
99
|
return deleted;
|
|
50
100
|
}
|
|
51
101
|
/**
|
|
52
102
|
* Fetches one record by primary key. Returns null when not found.
|
|
53
103
|
*/
|
|
54
|
-
async get(primaryKeyValue) {
|
|
104
|
+
async get(primaryKeyValue, sortKeyValue) {
|
|
55
105
|
const getFn = this.model.get;
|
|
56
|
-
const item = await getFn(this.getKeyObject(primaryKeyValue));
|
|
106
|
+
const item = await getFn(this.getKeyObject(primaryKeyValue, sortKeyValue));
|
|
57
107
|
return item ?? null;
|
|
58
108
|
}
|
|
59
109
|
/**
|
|
@@ -73,11 +123,48 @@ class GenericDynamooseDAO {
|
|
|
73
123
|
}
|
|
74
124
|
return inputItems;
|
|
75
125
|
}
|
|
126
|
+
/**
|
|
127
|
+
* Upserts multiple records by primary key.
|
|
128
|
+
* New keys are created (created_* fields), existing keys are updated (updated_* fields).
|
|
129
|
+
*/
|
|
130
|
+
async batchUpsert(items, authContext) {
|
|
131
|
+
const now = new Date();
|
|
132
|
+
const keys = items.map((item) => this.getItemKeyObject(item));
|
|
133
|
+
const existingItems = await this.batchGetByKeys(keys);
|
|
134
|
+
const existingKeySet = new Set(existingItems.map((item) => this.serializeKey(this.getItemKeyObject(item))));
|
|
135
|
+
const upsertItems = items.map((item) => {
|
|
136
|
+
const itemKey = this.getItemKeyObject(item);
|
|
137
|
+
if (existingKeySet.has(this.serializeKey(itemKey))) {
|
|
138
|
+
return {
|
|
139
|
+
...item,
|
|
140
|
+
updated_time: now,
|
|
141
|
+
updated_user: authContext?.userSub
|
|
142
|
+
};
|
|
143
|
+
}
|
|
144
|
+
return {
|
|
145
|
+
...item,
|
|
146
|
+
created_time: now,
|
|
147
|
+
created_user: authContext?.userSub
|
|
148
|
+
};
|
|
149
|
+
});
|
|
150
|
+
const batchPutFn = this.model.batchPut;
|
|
151
|
+
const result = await batchPutFn(upsertItems);
|
|
152
|
+
if (result.unprocessedItems.length > 0) {
|
|
153
|
+
throw new Error(`Batch upsert partially failed. Unprocessed items: ${result.unprocessedItems.length}`);
|
|
154
|
+
}
|
|
155
|
+
return upsertItems;
|
|
156
|
+
}
|
|
76
157
|
/**
|
|
77
158
|
* Fetches multiple records by primary keys.
|
|
78
159
|
*/
|
|
79
160
|
async batchGet(primaryKeyValues) {
|
|
80
161
|
const keys = primaryKeyValues.map((value) => this.getKeyObject(value));
|
|
162
|
+
return this.batchGetByKeys(keys);
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* Fetches multiple records by key objects (supports hash + optional sort key).
|
|
166
|
+
*/
|
|
167
|
+
async batchGetByKeys(keys) {
|
|
81
168
|
const batchGetFn = this.model.batchGet;
|
|
82
169
|
const items = await batchGetFn(keys);
|
|
83
170
|
return items;
|
|
@@ -107,4 +194,4 @@ class GenericDynamooseDAO {
|
|
|
107
194
|
}
|
|
108
195
|
}
|
|
109
196
|
exports.GenericDynamooseDAO = GenericDynamooseDAO;
|
|
110
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1keW5hbW9vc2UtZGFvLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2Jhc2UtZHluYW1vb3NlLWRhby50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUF5QkEsTUFBYSxtQkFBbUI7SUFDNUI7OztPQUdHO0lBQ0gsWUFDdUIsS0FBeUIsRUFDekIsY0FBZ0M7UUFEaEMsVUFBSyxHQUFMLEtBQUssQ0FBb0I7UUFDekIsbUJBQWMsR0FBZCxjQUFjLENBQWtCO0lBQ25ELENBQUM7SUFFTDs7T0FFRztJQUNPLFlBQVksQ0FBQyxlQUF1QjtRQUMxQyxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLEVBQUUsZUFBZSxFQUFFLENBQUM7SUFDdEQsQ0FBQztJQUVEOztPQUVHO0lBQ0gsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFPLEVBQUUsV0FBeUI7UUFDekMsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFxQixDQUFDO1FBQ2xELE1BQU0sT0FBTyxHQUFHLE1BQU0sUUFBUSxDQUFDO1lBQzNCLEdBQUcsSUFBSTtZQUNQLFlBQVksRUFBRSxJQUFJLElBQUksRUFBRTtZQUN4QixZQUFZLEVBQUUsV0FBVyxFQUFFLE9BQU87U0FDckMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxPQUFZLENBQUM7SUFDeEIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsS0FBSyxDQUFDLE1BQU0sQ0FBQyxlQUF1QixFQUFFLE9BQW1CLEVBQUUsV0FBeUI7UUFDaEYsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFxQixDQUFDO1FBQ2xELE1BQU0sT0FBTyxHQUFHLE1BQU0sUUFBUSxDQUMxQixJQUFJLENBQUMsWUFBWSxDQUFDLGVBQWUsQ0FBQyxFQUNsQztZQUNJLEdBQUcsT0FBTztZQUNWLFlBQVksRUFBRSxJQUFJLElBQUksRUFBRTtZQUN4QixZQUFZLEVBQUUsV0FBVyxFQUFFLE9BQU87U0FDckMsQ0FDSixD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Q0FDSjtBQXZIRCxrREF1SEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCYXNlRHluYW1vb3NlTW9kZWwsIEF1dGhDb250ZXh0IH0gZnJvbSBcIi4vYmFzZS1keW5hbW9vc2UtbW9kZWxcIjtcblxudHlwZSBEeW5hbW9LZXlWYWx1ZSA9IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCBudWxsO1xuZXhwb3J0IHR5cGUgRHluYW1vS2V5ID0gUmVjb3JkPHN0cmluZywgRHluYW1vS2V5VmFsdWU+O1xuXG50eXBlIEJhdGNoUHV0UmVzcG9uc2U8VD4gPSB7XG4gICAgdW5wcm9jZXNzZWRJdGVtczogUGFydGlhbDxUPltdO1xufTtcblxudHlwZSBDcmVhdGVGbjxUPiA9IChpdGVtOiBQYXJ0aWFsPFQ+KSA9PiBQcm9taXNlPG9iamVjdD47XG50eXBlIFVwZGF0ZUZuPFQ+ID0gKGtleTogRHluYW1vS2V5LCB1cGRhdGU6IFBhcnRpYWw8VD4pID0+IFByb21pc2U8b2JqZWN0PjtcbnR5cGUgRGVsZXRlRm4gPSAoa2V5OiBEeW5hbW9LZXkpID0+IFByb21pc2U8b2JqZWN0IHwgdW5kZWZpbmVkPjtcbnR5cGUgR2V0Rm4gPSAoa2V5OiBEeW5hbW9LZXkpID0+IFByb21pc2U8b2JqZWN0IHwgdW5kZWZpbmVkPjtcbnR5cGUgQmF0Y2hQdXRGbjxUPiA9IChpdGVtczogUGFydGlhbDxUPltdKSA9PiBQcm9taXNlPEJhdGNoUHV0UmVzcG9uc2U8VD4+O1xudHlwZSBCYXRjaEdldEZuID0gKGtleXM6IER5bmFtb0tleVtdKSA9PiBQcm9taXNlPG9iamVjdFtdPjtcblxudHlwZSBEeW5hbW9vc2VNb2RlbExpa2UgPSB7XG4gICAgY3JlYXRlOiBGdW5jdGlvbjtcbiAgICB1cGRhdGU6IEZ1bmN0aW9uO1xuICAgIGdldDogRnVuY3Rpb247XG4gICAgZGVsZXRlOiBGdW5jdGlvbjtcbiAgICBiYXRjaFB1dDogRnVuY3Rpb247XG4gICAgYmF0Y2hHZXQ6IEZ1bmN0aW9uO1xufTtcblxuZXhwb3J0IGNsYXNzIEdlbmVyaWNEeW5hbW9vc2VEQU88VCBleHRlbmRzIEJhc2VEeW5hbW9vc2VNb2RlbD4ge1xuICAgIC8qKlxuICAgICAqIEBwYXJhbSBtb2RlbCBEeW5hbW9vc2UgbW9kZWwgaW5zdGFuY2UgZm9yIHRoZSB0YXJnZXQgdGFibGUuXG4gICAgICogQHBhcmFtIHByaW1hcnlLZXlOYW1lIEF0dHJpYnV0ZSBuYW1lIHVzZWQgYXMgdGhlIHRhYmxlIGhhc2gga2V5LlxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgbW9kZWw6IER5bmFtb29zZU1vZGVsTGlrZSxcbiAgICAgICAgcHJvdGVjdGVkIHJlYWRvbmx5IHByaW1hcnlLZXlOYW1lOiBrZXlvZiBUICYgc3RyaW5nXG4gICAgKSB7IH1cblxuICAgIC8qKlxuICAgICAqIEJ1aWxkcyBhIER5bmFtb0RCIGtleSBvYmplY3QgZnJvbSBhIHNpbmdsZSBwcmltYXJ5IGtleSB2YWx1ZS5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgZ2V0S2V5T2JqZWN0KHByaW1hcnlLZXlWYWx1ZTogc3RyaW5nKTogRHluYW1vS2V5IHtcbiAgICAgICAgcmV0dXJuIHsgW3RoaXMucHJpbWFyeUtleU5hbWVdOiBwcmltYXJ5S2V5VmFsdWUgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgbmV3IHJlY29yZCBhbmQgYXV0b21hdGljYWxseSBzdGFtcHMgY3JlYXRlZCBhdWRpdCBmaWVsZHMuXG4gICAgICovXG4gICAgYXN5bmMgc2F2ZShpdGVtOiBULCBhdXRoQ29udGV4dD86IEF1dGhDb250ZXh0KTogUHJvbWlzZTxUPiB7XG4gICAgICAgIGNvbnN0IGNyZWF0ZUZuID0gdGhpcy5tb2RlbC5jcmVhdGUgYXMgQ3JlYXRlRm48VD47XG4gICAgICAgIGNvbnN0IGNyZWF0ZWQgPSBhd2FpdCBjcmVhdGVGbih7XG4gICAgICAgICAgICAuLi5pdGVtLFxuICAgICAgICAgICAgY3JlYXRlZF90aW1lOiBuZXcgRGF0ZSgpLFxuICAgICAgICAgICAgY3JlYXRlZF91c2VyOiBhdXRoQ29udGV4dD8udXNlclN1YlxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIGNyZWF0ZWQgYXMgVDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBVcGRhdGVzIGFuIGV4aXN0aW5nIHJlY29yZCBhbmQgYXV0b21hdGljYWxseSBzdGFtcHMgdXBkYXRlZCBhdWRpdCBmaWVsZHMuXG4gICAgICovXG4gICAgYXN5bmMgdXBkYXRlKHByaW1hcnlLZXlWYWx1ZTogc3RyaW5nLCB1cGRhdGVzOiBQYXJ0aWFsPFQ+LCBhdXRoQ29udGV4dD86IEF1dGhDb250ZXh0KTogUHJvbWlzZTxUPiB7XG4gICAgICAgIGNvbnN0IHVwZGF0ZUZuID0gdGhpcy5tb2RlbC51cGRhdGUgYXMgVXBkYXRlRm48VD47XG4gICAgICAgIGNvbnN0IHVwZGF0ZWQgPSBhd2FpdCB1cGRhdGVGbihcbiAgICAgICAgICAgIHRoaXMuZ2V0S2V5T2JqZWN0KHByaW1hcnlLZXlWYWx1ZSksXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgLi4udXBkYXRlcyxcbiAgICAgICAgICAgICAgICB1cGRhdGVkX3RpbWU6IG5ldyBEYXRlKCksXG4gICAgICAgICAgICAgICAgdXBkYXRlZF91c2VyOiBhdXRoQ29udGV4dD8udXNlclN1YlxuICAgICAgICAgICAgfVxuICAgICAgICApO1xuICAgICAgICByZXR1cm4gdXBkYXRlZCBhcyBUO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERlbGV0ZXMgb25lIHJlY29yZCBieSBwcmltYXJ5IGtleS5cbiAgICAgKi9cbiAgICBhc3luYyBkZWxldGUocHJpbWFyeUtleVZhbHVlOiBzdHJpbmcpOiBQcm9taXNlPFQgfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgY29uc3QgZGVsZXRlRm4gPSB0aGlzLm1vZGVsLmRlbGV0ZSBhcyBEZWxldGVGbjtcbiAgICAgICAgY29uc3QgZGVsZXRlZCA9IGF3YWl0IGRlbGV0ZUZuKHRoaXMuZ2V0S2V5T2JqZWN0KHByaW1hcnlLZXlWYWx1ZSkpO1xuICAgICAgICByZXR1cm4gZGVsZXRlZCBhcyBUIHwgdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEZldGNoZXMgb25lIHJlY29yZCBieSBwcmltYXJ5IGtleS4gUmV0dXJucyBudWxsIHdoZW4gbm90IGZvdW5kLlxuICAgICAqL1xuICAgIGFzeW5jIGdldChwcmltYXJ5S2V5VmFsdWU6IHN0cmluZyk6IFByb21pc2U8VCB8IG51bGw+IHtcbiAgICAgICAgY29uc3QgZ2V0Rm4gPSB0aGlzLm1vZGVsLmdldCBhcyBHZXRGbjtcbiAgICAgICAgY29uc3QgaXRlbSA9IGF3YWl0IGdldEZuKHRoaXMuZ2V0S2V5T2JqZWN0KHByaW1hcnlLZXlWYWx1ZSkpO1xuICAgICAgICByZXR1cm4gKGl0ZW0gYXMgVCB8IHVuZGVmaW5lZCkgPz8gbnVsbDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBXcml0ZXMgbXVsdGlwbGUgcmVjb3JkcyBpbiBhIGJhdGNoIGFuZCB0aHJvd3MgaWYgYW55IGl0ZW0gaXMgbGVmdCB1bnByb2Nlc3NlZC5cbiAgICAgKi9cbiAgICBhc3luYyBiYXRjaFNhdmUoaXRlbXM6IFRbXSwgYXV0aENvbnRleHQ/OiBBdXRoQ29udGV4dCk6IFByb21pc2U8VFtdPiB7XG4gICAgICAgIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCk7XG4gICAgICAgIGNvbnN0IGlucHV0SXRlbXMgPSBpdGVtcy5tYXAoKGl0ZW0pID0+ICh7XG4gICAgICAgICAgICAuLi5pdGVtLFxuICAgICAgICAgICAgY3JlYXRlZF90aW1lOiBub3csXG4gICAgICAgICAgICBjcmVhdGVkX3VzZXI6IGF1dGhDb250ZXh0Py51c2VyU3ViXG4gICAgICAgIH0pKSBhcyBUW107XG5cbiAgICAgICAgY29uc3QgYmF0Y2hQdXRGbiA9IHRoaXMubW9kZWwuYmF0Y2hQdXQgYXMgQmF0Y2hQdXRGbjxUPjtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgYmF0Y2hQdXRGbihpbnB1dEl0ZW1zKTtcbiAgICAgICAgaWYgKHJlc3VsdC51bnByb2Nlc3NlZEl0ZW1zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgQmF0Y2ggc2F2ZSBwYXJ0aWFsbHkgZmFpbGVkLiBVbnByb2Nlc3NlZCBpdGVtczogJHtyZXN1bHQudW5wcm9jZXNzZWRJdGVtcy5sZW5ndGh9YCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gaW5wdXRJdGVtcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBGZXRjaGVzIG11bHRpcGxlIHJlY29yZHMgYnkgcHJpbWFyeSBrZXlzLlxuICAgICAqL1xuICAgIGFzeW5jIGJhdGNoR2V0KHByaW1hcnlLZXlWYWx1ZXM6IHN0cmluZ1tdKTogUHJvbWlzZTxUW10+IHtcbiAgICAgICAgY29uc3Qga2V5cyA9IHByaW1hcnlLZXlWYWx1ZXMubWFwKCh2YWx1ZSkgPT4gdGhpcy5nZXRLZXlPYmplY3QodmFsdWUpKTtcbiAgICAgICAgY29uc3QgYmF0Y2hHZXRGbiA9IHRoaXMubW9kZWwuYmF0Y2hHZXQgYXMgQmF0Y2hHZXRGbjtcbiAgICAgICAgY29uc3QgaXRlbXMgPSBhd2FpdCBiYXRjaEdldEZuKGtleXMpO1xuICAgICAgICByZXR1cm4gaXRlbXMgYXMgVFtdO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERlY29kZXMgYSBiYXNlNjQgY29udGludWF0aW9uIHRva2VuIGludG8gRHluYW1vREIgbGFzdCBldmFsdWF0ZWQga2V5LlxuICAgICAqL1xuICAgIGRlY29kZShjb250aW51YXRpb25Ub2tlbjogc3RyaW5nIHwgdW5kZWZpbmVkKTogRHluYW1vS2V5IHwgdW5kZWZpbmVkIHtcbiAgICAgICAgaWYgKCFjb250aW51YXRpb25Ub2tlbikge1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICByZXR1cm4gSlNPTi5wYXJzZShCdWZmZXIuZnJvbShjb250aW51YXRpb25Ub2tlbiwgXCJiYXNlNjRcIikudG9TdHJpbmcoXCJ1dGY4XCIpKSBhcyBEeW5hbW9LZXk7XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIGNvbnRpbnVhdGlvblRva2VuXCIpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRW5jb2RlcyBEeW5hbW9EQiBsYXN0IGV2YWx1YXRlZCBrZXkgaW50byBhIGJhc2U2NCBjb250aW51YXRpb24gdG9rZW4uXG4gICAgICovXG4gICAgYXN5bmMgZW5jb2RlKGxhc3RFdmFsdWF0ZWRLZXk6IER5bmFtb0tleSB8IHVuZGVmaW5lZCk6IFByb21pc2U8c3RyaW5nIHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIGlmICghbGFzdEV2YWx1YXRlZEtleSkge1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBCdWZmZXIuZnJvbShKU09OLnN0cmluZ2lmeShsYXN0RXZhbHVhdGVkS2V5KSkudG9TdHJpbmcoXCJiYXNlNjRcIik7XG4gICAgfVxufVxuIl19
|
|
197
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1keW5hbW9vc2UtZGFvLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2Jhc2UtZHluYW1vb3NlLWRhby50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUF5QkEsTUFBYSxtQkFBbUI7SUFDNUI7OztPQUdHO0lBQ0gsWUFDdUIsS0FBeUIsRUFDekIsY0FBZ0MsRUFDaEMsV0FBOEI7UUFGOUIsVUFBSyxHQUFMLEtBQUssQ0FBb0I7UUFDekIsbUJBQWMsR0FBZCxjQUFjLENBQWtCO1FBQ2hDLGdCQUFXLEdBQVgsV0FBVyxDQUFtQjtJQUNqRCxDQUFDO0lBRUw7O09BRUc7SUFDTyxZQUFZLENBQUMsZUFBdUIsRUFBRSxZQUFxQjtRQUNqRSxNQUFNLFNBQVMsR0FBYyxFQUFFLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxFQUFFLGVBQWUsRUFBRSxDQUFDO1FBQ3hFLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ25CLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztnQkFDaEIsTUFBTSxJQUFJLEtBQUssQ0FBQywrQkFBK0IsSUFBSSxDQUFDLFdBQVcsR0FBRyxDQUFDLENBQUM7WUFDeEUsQ0FBQztZQUNELFNBQVMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsWUFBWSxDQUFDO1FBQy9DLENBQUM7UUFDRCxPQUFPLFNBQVMsQ0FBQztJQUNyQixDQUFDO0lBRUQ7O09BRUc7SUFDTywwQkFBMEIsQ0FBQyxJQUFPO1FBQ3hDLE1BQU0sU0FBUyxHQUFHLElBQTZELENBQUM7UUFDaEYsTUFBTSxRQUFRLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUNoRCxJQUFJLE9BQU8sUUFBUSxLQUFLLFFBQVEsSUFBSSxRQUFRLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3hELE1BQU0sSUFBSSxLQUFLLENBQUMsNkNBQTZDLElBQUksQ0FBQyxjQUFjLEdBQUcsQ0FBQyxDQUFDO1FBQ3pGLENBQUM7UUFDRCxPQUFPLFFBQVEsQ0FBQztJQUNwQixDQUFDO0lBRUQ7O09BRUc7SUFDTyx1QkFBdUIsQ0FBQyxJQUFPO1FBQ3JDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDcEIsT0FBTyxTQUFTLENBQUM7UUFDckIsQ0FBQztRQUNELE1BQU0sU0FBUyxHQUFHLElBQTZELENBQUM7UUFDaEYsTUFBTSxRQUFRLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUM3QyxJQUFJLE9BQU8sUUFBUSxLQUFLLFFBQVEsSUFBSSxRQUFRLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3hELE1BQU0sSUFBSSxLQUFLLENBQUMsMENBQTBDLElBQUksQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDO1FBQ25GLENBQUM7UUFDRCxPQUFPLFFBQVEsQ0FBQztJQUNwQixDQUFDO0lBRUQ7O09BRUc7SUFDTyxnQkFBZ0IsQ0FBQyxJQUFPO1FBQzlCLE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM5RCxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDeEQsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLGVBQWUsRUFBRSxZQUFZLENBQUMsQ0FBQztJQUM1RCxDQUFDO0lBRUQ7O09BRUc7SUFDTyxZQUFZLENBQUMsR0FBYztRQUNqQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3BCLE9BQU8sR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUM7UUFDekMsQ0FBQztRQUNELE9BQU8sR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQztJQUNsRSxDQUFDO0lBRUQ7O09BRUc7SUFDSCxLQUFLLENBQUMsSUFBSSxDQUFDLElBQU8sRUFBRSxXQUF5QjtRQUN6QyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQXFCLENBQUM7UUFDbEQsTUFBTSxPQUFPLEdBQUcsTUFBTSxRQUFRLENBQUM7WUFDM0IsR0FBRyxJQUFJO1lBQ1AsWUFBWSxFQUFFLElBQUksSUFBSSxFQUFFO1lBQ3hCLFlBQVksRUFBRSxXQUFXLEVBQUUsT0FBTztTQUNyQyxDQUFDLENBQUM7UUFDSCxPQUFPLE9BQVksQ0FBQztJQUN4QixDQUFDO0lBRUQ7O09BRUc7SUFDSCxLQUFLLENBQUMsTUFBTSxDQUFDLGVBQXVCLEVBQUUsT0FBbUIsRUFBRSxXQUF5QixFQUFFLFlBQXFCO1FBQ3ZHLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBcUIsQ0FBQztRQUNsRCxNQUFNLE9BQU8sR0FBRyxNQUFNLFFBQVEsQ0FDMUIsSUFBSSxDQUFDLFlBQVksQ0FBQyxlQUFlLEVBQUUsWUFBWSxDQUFDLEVBQ2hEO1lBQ0ksR0FBRyxPQUFPO1lBQ1YsWUFBWSxFQUFFLElBQUksSUFBSSxFQUFFO1lBQ3hCLFlBQVksRUFBRSxXQUFXLEVBQUUsT0FBTztTQUNyQyxDQUNKLENBQUM7UUFDRixPQUFPLE9BQVksQ0FBQztJQUN4QixDQUFDO0lBRUQ7O09BRUc7SUFDSCxLQUFLLENBQUMsTUFBTSxDQUFDLGVBQXVCLEVBQUUsWUFBcUI7UUFDdkQsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFrQixDQUFDO1FBQy9DLE1BQU0sT0FBTyxHQUFHLE1BQU0sUUFBUSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsZUFBZSxFQUFFLFlBQVksQ0FBQyxDQUFDLENBQUM7UUFDakYsT0FBTyxPQUF3QixDQUFDO0lBQ3BDLENBQUM7SUFFRDs7T0FFRztJQUNILEtBQUssQ0FBQyxHQUFHLENBQUMsZUFBdUIsRUFBRSxZQUFxQjtRQUNwRCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQVksQ0FBQztRQUN0QyxNQUFNLElBQUksR0FBRyxNQUFNLEtBQUssQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLGVBQWUsRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDO1FBQzNFLE9BQVEsSUFBc0IsSUFBSSxJQUFJLENBQUM7SUFDM0MsQ0FBQztJQUVEOztPQUVHO0lBQ0gsS0FBSyxDQUFDLFNBQVMsQ0FBQyxLQUFVLEVBQUUsV0FBeUI7UUFDakQsTUFBTSxHQUFHLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUN2QixNQUFNLFVBQVUsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ3BDLEdBQUcsSUFBSTtZQUNQLFlBQVksRUFBRSxHQUFHO1lBQ2pCLFlBQVksRUFBRSxXQUFXLEVBQUUsT0FBTztTQUNyQyxDQUFDLENBQVEsQ0FBQztRQUVYLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBeUIsQ0FBQztRQUN4RCxNQUFNLE1BQU0sR0FBRyxNQUFNLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUM1QyxJQUFJLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDckMsTUFBTSxJQUFJLEtBQUssQ0FBQyxtREFBbUQsTUFBTSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFDekcsQ0FBQztRQUVELE9BQU8sVUFBVSxDQUFDO0lBQ3RCLENBQUM7SUFFRDs7O09BR0c7SUFDSCxLQUFLLENBQUMsV0FBVyxDQUFDLEtBQVUsRUFBRSxXQUF5QjtRQUNuRCxNQUFNLEdBQUcsR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ3ZCLE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQzlELE1BQU0sYUFBYSxHQUFHLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUV0RCxNQUFNLGNBQWMsR0FBRyxJQUFJLEdBQUcsQ0FDMUIsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUM5RSxDQUFDO1FBRUYsTUFBTSxXQUFXLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQ25DLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUM1QyxJQUFJLGNBQWMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBQ2pELE9BQU87b0JBQ0gsR0FBRyxJQUFJO29CQUNQLFlBQVksRUFBRSxHQUFHO29CQUNqQixZQUFZLEVBQUUsV0FBVyxFQUFFLE9BQU87aUJBQ3JDLENBQUM7WUFDTixDQUFDO1lBRUQsT0FBTztnQkFDSCxHQUFHLElBQUk7Z0JBQ1AsWUFBWSxFQUFFLEdBQUc7Z0JBQ2pCLFlBQVksRUFBRSxXQUFXLEVBQUUsT0FBTzthQUNyQyxDQUFDO1FBQ04sQ0FBQyxDQUFRLENBQUM7UUFFVixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQXlCLENBQUM7UUFDeEQsTUFBTSxNQUFNLEdBQUcsTUFBTSxVQUFVLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDN0MsSUFBSSxNQUFNLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3JDLE1BQU0sSUFBSSxLQUFLLENBQUMscURBQXFELE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO1FBQzNHLENBQUM7UUFFRCxPQUFPLFdBQVcsQ0FBQztJQUN2QixDQUFDO0lBRUQ7O09BRUc7SUFDSCxLQUFLLENBQUMsUUFBUSxDQUFDLGdCQUEwQjtRQUNyQyxNQUFNLElBQUksR0FBRyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUN2RSxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsS0FBSyxDQUFDLGNBQWMsQ0FBQyxJQUFpQjtRQUNsQyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQXNCLENBQUM7UUFDckQsTUFBTSxLQUFLLEdBQUcsTUFBTSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDckMsT0FBTyxLQUFZLENBQUM7SUFDeEIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsTUFBTSxDQUFDLGlCQUFxQztRQUN4QyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUNyQixPQUFPLFNBQVMsQ0FBQztRQUNyQixDQUFDO1FBRUQsSUFBSSxDQUFDO1lBQ0QsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFjLENBQUM7UUFDOUYsQ0FBQztRQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7WUFDYixNQUFNLElBQUksS0FBSyxDQUFDLDJCQUEyQixDQUFDLENBQUM7UUFDakQsQ0FBQztJQUNMLENBQUM7SUFFRDs7T0FFRztJQUNILEtBQUssQ0FBQyxNQUFNLENBQUMsZ0JBQXVDO1FBQ2hELElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQ3BCLE9BQU8sU0FBUyxDQUFDO1FBQ3JCLENBQUM7UUFFRCxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzVFLENBQUM7Q0FDSjtBQTNORCxrREEyTkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCYXNlRHluYW1vb3NlTW9kZWwsIEF1dGhDb250ZXh0IH0gZnJvbSBcIi4vYmFzZS1keW5hbW9vc2UtbW9kZWxcIjtcblxudHlwZSBEeW5hbW9LZXlWYWx1ZSA9IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCBudWxsO1xuZXhwb3J0IHR5cGUgRHluYW1vS2V5ID0gUmVjb3JkPHN0cmluZywgRHluYW1vS2V5VmFsdWU+O1xuXG50eXBlIEJhdGNoUHV0UmVzcG9uc2U8VD4gPSB7XG4gICAgdW5wcm9jZXNzZWRJdGVtczogUGFydGlhbDxUPltdO1xufTtcblxudHlwZSBDcmVhdGVGbjxUPiA9IChpdGVtOiBQYXJ0aWFsPFQ+KSA9PiBQcm9taXNlPG9iamVjdD47XG50eXBlIFVwZGF0ZUZuPFQ+ID0gKGtleTogRHluYW1vS2V5LCB1cGRhdGU6IFBhcnRpYWw8VD4pID0+IFByb21pc2U8b2JqZWN0PjtcbnR5cGUgRGVsZXRlRm4gPSAoa2V5OiBEeW5hbW9LZXkpID0+IFByb21pc2U8b2JqZWN0IHwgdW5kZWZpbmVkPjtcbnR5cGUgR2V0Rm4gPSAoa2V5OiBEeW5hbW9LZXkpID0+IFByb21pc2U8b2JqZWN0IHwgdW5kZWZpbmVkPjtcbnR5cGUgQmF0Y2hQdXRGbjxUPiA9IChpdGVtczogUGFydGlhbDxUPltdKSA9PiBQcm9taXNlPEJhdGNoUHV0UmVzcG9uc2U8VD4+O1xudHlwZSBCYXRjaEdldEZuID0gKGtleXM6IER5bmFtb0tleVtdKSA9PiBQcm9taXNlPG9iamVjdFtdPjtcblxudHlwZSBEeW5hbW9vc2VNb2RlbExpa2UgPSB7XG4gICAgY3JlYXRlOiBGdW5jdGlvbjtcbiAgICB1cGRhdGU6IEZ1bmN0aW9uO1xuICAgIGdldDogRnVuY3Rpb247XG4gICAgZGVsZXRlOiBGdW5jdGlvbjtcbiAgICBiYXRjaFB1dDogRnVuY3Rpb247XG4gICAgYmF0Y2hHZXQ6IEZ1bmN0aW9uO1xufTtcblxuZXhwb3J0IGNsYXNzIEdlbmVyaWNEeW5hbW9vc2VEQU88VCBleHRlbmRzIEJhc2VEeW5hbW9vc2VNb2RlbD4ge1xuICAgIC8qKlxuICAgICAqIEBwYXJhbSBtb2RlbCBEeW5hbW9vc2UgbW9kZWwgaW5zdGFuY2UgZm9yIHRoZSB0YXJnZXQgdGFibGUuXG4gICAgICogQHBhcmFtIHByaW1hcnlLZXlOYW1lIEF0dHJpYnV0ZSBuYW1lIHVzZWQgYXMgdGhlIHRhYmxlIGhhc2gga2V5LlxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgbW9kZWw6IER5bmFtb29zZU1vZGVsTGlrZSxcbiAgICAgICAgcHJvdGVjdGVkIHJlYWRvbmx5IHByaW1hcnlLZXlOYW1lOiBrZXlvZiBUICYgc3RyaW5nLFxuICAgICAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgc29ydEtleU5hbWU/OiBrZXlvZiBUICYgc3RyaW5nXG4gICAgKSB7IH1cblxuICAgIC8qKlxuICAgICAqIEJ1aWxkcyBhIER5bmFtb0RCIGtleSBvYmplY3QgZnJvbSBhIHNpbmdsZSBwcmltYXJ5IGtleSB2YWx1ZS5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgZ2V0S2V5T2JqZWN0KHByaW1hcnlLZXlWYWx1ZTogc3RyaW5nLCBzb3J0S2V5VmFsdWU/OiBzdHJpbmcpOiBEeW5hbW9LZXkge1xuICAgICAgICBjb25zdCBrZXlPYmplY3Q6IER5bmFtb0tleSA9IHsgW3RoaXMucHJpbWFyeUtleU5hbWVdOiBwcmltYXJ5S2V5VmFsdWUgfTtcbiAgICAgICAgaWYgKHRoaXMuc29ydEtleU5hbWUpIHtcbiAgICAgICAgICAgIGlmICghc29ydEtleVZhbHVlKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBNaXNzaW5nIHNvcnQga2V5IHZhbHVlIGZvciAnJHt0aGlzLnNvcnRLZXlOYW1lfSdgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGtleU9iamVjdFt0aGlzLnNvcnRLZXlOYW1lXSA9IHNvcnRLZXlWYWx1ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ga2V5T2JqZWN0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEV4dHJhY3RzIGFuZCB2YWxpZGF0ZXMgc3RyaW5nIHByaW1hcnkga2V5IHZhbHVlIGZyb20gYW4gaXRlbS5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgZ2V0UHJpbWFyeUtleVZhbHVlRnJvbUl0ZW0oaXRlbTogVCk6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IGtleVJlY29yZCA9IGl0ZW0gYXMgdW5rbm93biBhcyBSZWNvcmQ8c3RyaW5nLCBEeW5hbW9LZXlWYWx1ZSB8IHVuZGVmaW5lZD47XG4gICAgICAgIGNvbnN0IGtleVZhbHVlID0ga2V5UmVjb3JkW3RoaXMucHJpbWFyeUtleU5hbWVdO1xuICAgICAgICBpZiAodHlwZW9mIGtleVZhbHVlICE9PSBcInN0cmluZ1wiIHx8IGtleVZhbHVlLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBNaXNzaW5nIG9yIGludmFsaWQgcHJpbWFyeSBrZXkgdmFsdWUgZm9yICcke3RoaXMucHJpbWFyeUtleU5hbWV9J2ApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBrZXlWYWx1ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBFeHRyYWN0cyBhbmQgdmFsaWRhdGVzIHNvcnQga2V5IHZhbHVlIGZyb20gYW4gaXRlbSB3aGVuIHNvcnQga2V5IGlzIGNvbmZpZ3VyZWQuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIGdldFNvcnRLZXlWYWx1ZUZyb21JdGVtKGl0ZW06IFQpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgICAgICBpZiAoIXRoaXMuc29ydEtleU5hbWUpIHtcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qga2V5UmVjb3JkID0gaXRlbSBhcyB1bmtub3duIGFzIFJlY29yZDxzdHJpbmcsIER5bmFtb0tleVZhbHVlIHwgdW5kZWZpbmVkPjtcbiAgICAgICAgY29uc3Qga2V5VmFsdWUgPSBrZXlSZWNvcmRbdGhpcy5zb3J0S2V5TmFtZV07XG4gICAgICAgIGlmICh0eXBlb2Yga2V5VmFsdWUgIT09IFwic3RyaW5nXCIgfHwga2V5VmFsdWUubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYE1pc3Npbmcgb3IgaW52YWxpZCBzb3J0IGtleSB2YWx1ZSBmb3IgJyR7dGhpcy5zb3J0S2V5TmFtZX0nYCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGtleVZhbHVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEJ1aWxkcyBjb21wbGV0ZSBrZXkgb2JqZWN0IChoYXNoICsgb3B0aW9uYWwgc29ydCkgZnJvbSBhbiBpdGVtLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCBnZXRJdGVtS2V5T2JqZWN0KGl0ZW06IFQpOiBEeW5hbW9LZXkge1xuICAgICAgICBjb25zdCBwcmltYXJ5S2V5VmFsdWUgPSB0aGlzLmdldFByaW1hcnlLZXlWYWx1ZUZyb21JdGVtKGl0ZW0pO1xuICAgICAgICBjb25zdCBzb3J0S2V5VmFsdWUgPSB0aGlzLmdldFNvcnRLZXlWYWx1ZUZyb21JdGVtKGl0ZW0pO1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRLZXlPYmplY3QocHJpbWFyeUtleVZhbHVlLCBzb3J0S2V5VmFsdWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNlcmlhbGl6ZXMga2V5IG9iamVjdCBmb3Igc3RhYmxlIHNldC9tYXAgY29tcGFyaXNvbnMuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHNlcmlhbGl6ZUtleShrZXk6IER5bmFtb0tleSk6IHN0cmluZyB7XG4gICAgICAgIGlmICghdGhpcy5zb3J0S2V5TmFtZSkge1xuICAgICAgICAgICAgcmV0dXJuIGAke2tleVt0aGlzLnByaW1hcnlLZXlOYW1lXX1gO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBgJHtrZXlbdGhpcy5wcmltYXJ5S2V5TmFtZV19IyR7a2V5W3RoaXMuc29ydEtleU5hbWVdfWA7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIG5ldyByZWNvcmQgYW5kIGF1dG9tYXRpY2FsbHkgc3RhbXBzIGNyZWF0ZWQgYXVkaXQgZmllbGRzLlxuICAgICAqL1xuICAgIGFzeW5jIHNhdmUoaXRlbTogVCwgYXV0aENvbnRleHQ/OiBBdXRoQ29udGV4dCk6IFByb21pc2U8VD4ge1xuICAgICAgICBjb25zdCBjcmVhdGVGbiA9IHRoaXMubW9kZWwuY3JlYXRlIGFzIENyZWF0ZUZuPFQ+O1xuICAgICAgICBjb25zdCBjcmVhdGVkID0gYXdhaXQgY3JlYXRlRm4oe1xuICAgICAgICAgICAgLi4uaXRlbSxcbiAgICAgICAgICAgIGNyZWF0ZWRfdGltZTogbmV3IERhdGUoKSxcbiAgICAgICAgICAgIGNyZWF0ZWRfdXNlcjogYXV0aENvbnRleHQ/LnVzZXJTdWJcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBjcmVhdGVkIGFzIFQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVXBkYXRlcyBhbiBleGlzdGluZyByZWNvcmQgYW5kIGF1dG9tYXRpY2FsbHkgc3RhbXBzIHVwZGF0ZWQgYXVkaXQgZmllbGRzLlxuICAgICAqL1xuICAgIGFzeW5jIHVwZGF0ZShwcmltYXJ5S2V5VmFsdWU6IHN0cmluZywgdXBkYXRlczogUGFydGlhbDxUPiwgYXV0aENvbnRleHQ/OiBBdXRoQ29udGV4dCwgc29ydEtleVZhbHVlPzogc3RyaW5nKTogUHJvbWlzZTxUPiB7XG4gICAgICAgIGNvbnN0IHVwZGF0ZUZuID0gdGhpcy5tb2RlbC51cGRhdGUgYXMgVXBkYXRlRm48VD47XG4gICAgICAgIGNvbnN0IHVwZGF0ZWQgPSBhd2FpdCB1cGRhdGVGbihcbiAgICAgICAgICAgIHRoaXMuZ2V0S2V5T2JqZWN0KHByaW1hcnlLZXlWYWx1ZSwgc29ydEtleVZhbHVlKSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAuLi51cGRhdGVzLFxuICAgICAgICAgICAgICAgIHVwZGF0ZWRfdGltZTogbmV3IERhdGUoKSxcbiAgICAgICAgICAgICAgICB1cGRhdGVkX3VzZXI6IGF1dGhDb250ZXh0Py51c2VyU3ViXG4gICAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiB1cGRhdGVkIGFzIFQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGVsZXRlcyBvbmUgcmVjb3JkIGJ5IHByaW1hcnkga2V5LlxuICAgICAqL1xuICAgIGFzeW5jIGRlbGV0ZShwcmltYXJ5S2V5VmFsdWU6IHN0cmluZywgc29ydEtleVZhbHVlPzogc3RyaW5nKTogUHJvbWlzZTxUIHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIGNvbnN0IGRlbGV0ZUZuID0gdGhpcy5tb2RlbC5kZWxldGUgYXMgRGVsZXRlRm47XG4gICAgICAgIGNvbnN0IGRlbGV0ZWQgPSBhd2FpdCBkZWxldGVGbih0aGlzLmdldEtleU9iamVjdChwcmltYXJ5S2V5VmFsdWUsIHNvcnRLZXlWYWx1ZSkpO1xuICAgICAgICByZXR1cm4gZGVsZXRlZCBhcyBUIHwgdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEZldGNoZXMgb25lIHJlY29yZCBieSBwcmltYXJ5IGtleS4gUmV0dXJucyBudWxsIHdoZW4gbm90IGZvdW5kLlxuICAgICAqL1xuICAgIGFzeW5jIGdldChwcmltYXJ5S2V5VmFsdWU6IHN0cmluZywgc29ydEtleVZhbHVlPzogc3RyaW5nKTogUHJvbWlzZTxUIHwgbnVsbD4ge1xuICAgICAgICBjb25zdCBnZXRGbiA9IHRoaXMubW9kZWwuZ2V0IGFzIEdldEZuO1xuICAgICAgICBjb25zdCBpdGVtID0gYXdhaXQgZ2V0Rm4odGhpcy5nZXRLZXlPYmplY3QocHJpbWFyeUtleVZhbHVlLCBzb3J0S2V5VmFsdWUpKTtcbiAgICAgICAgcmV0dXJuIChpdGVtIGFzIFQgfCB1bmRlZmluZWQpID8/IG51bGw7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogV3JpdGVzIG11bHRpcGxlIHJlY29yZHMgaW4gYSBiYXRjaCBhbmQgdGhyb3dzIGlmIGFueSBpdGVtIGlzIGxlZnQgdW5wcm9jZXNzZWQuXG4gICAgICovXG4gICAgYXN5bmMgYmF0Y2hTYXZlKGl0ZW1zOiBUW10sIGF1dGhDb250ZXh0PzogQXV0aENvbnRleHQpOiBQcm9taXNlPFRbXT4ge1xuICAgICAgICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpO1xuICAgICAgICBjb25zdCBpbnB1dEl0ZW1zID0gaXRlbXMubWFwKChpdGVtKSA9PiAoe1xuICAgICAgICAgICAgLi4uaXRlbSxcbiAgICAgICAgICAgIGNyZWF0ZWRfdGltZTogbm93LFxuICAgICAgICAgICAgY3JlYXRlZF91c2VyOiBhdXRoQ29udGV4dD8udXNlclN1YlxuICAgICAgICB9KSkgYXMgVFtdO1xuXG4gICAgICAgIGNvbnN0IGJhdGNoUHV0Rm4gPSB0aGlzLm1vZGVsLmJhdGNoUHV0IGFzIEJhdGNoUHV0Rm48VD47XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGJhdGNoUHV0Rm4oaW5wdXRJdGVtcyk7XG4gICAgICAgIGlmIChyZXN1bHQudW5wcm9jZXNzZWRJdGVtcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEJhdGNoIHNhdmUgcGFydGlhbGx5IGZhaWxlZC4gVW5wcm9jZXNzZWQgaXRlbXM6ICR7cmVzdWx0LnVucHJvY2Vzc2VkSXRlbXMubGVuZ3RofWApO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGlucHV0SXRlbXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVXBzZXJ0cyBtdWx0aXBsZSByZWNvcmRzIGJ5IHByaW1hcnkga2V5LlxuICAgICAqIE5ldyBrZXlzIGFyZSBjcmVhdGVkIChjcmVhdGVkXyogZmllbGRzKSwgZXhpc3Rpbmcga2V5cyBhcmUgdXBkYXRlZCAodXBkYXRlZF8qIGZpZWxkcykuXG4gICAgICovXG4gICAgYXN5bmMgYmF0Y2hVcHNlcnQoaXRlbXM6IFRbXSwgYXV0aENvbnRleHQ/OiBBdXRoQ29udGV4dCk6IFByb21pc2U8VFtdPiB7XG4gICAgICAgIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCk7XG4gICAgICAgIGNvbnN0IGtleXMgPSBpdGVtcy5tYXAoKGl0ZW0pID0+IHRoaXMuZ2V0SXRlbUtleU9iamVjdChpdGVtKSk7XG4gICAgICAgIGNvbnN0IGV4aXN0aW5nSXRlbXMgPSBhd2FpdCB0aGlzLmJhdGNoR2V0QnlLZXlzKGtleXMpO1xuXG4gICAgICAgIGNvbnN0IGV4aXN0aW5nS2V5U2V0ID0gbmV3IFNldChcbiAgICAgICAgICAgIGV4aXN0aW5nSXRlbXMubWFwKChpdGVtKSA9PiB0aGlzLnNlcmlhbGl6ZUtleSh0aGlzLmdldEl0ZW1LZXlPYmplY3QoaXRlbSkpKVxuICAgICAgICApO1xuXG4gICAgICAgIGNvbnN0IHVwc2VydEl0ZW1zID0gaXRlbXMubWFwKChpdGVtKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBpdGVtS2V5ID0gdGhpcy5nZXRJdGVtS2V5T2JqZWN0KGl0ZW0pO1xuICAgICAgICAgICAgaWYgKGV4aXN0aW5nS2V5U2V0Lmhhcyh0aGlzLnNlcmlhbGl6ZUtleShpdGVtS2V5KSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAuLi5pdGVtLFxuICAgICAgICAgICAgICAgICAgICB1cGRhdGVkX3RpbWU6IG5vdyxcbiAgICAgICAgICAgICAgICAgICAgdXBkYXRlZF91c2VyOiBhdXRoQ29udGV4dD8udXNlclN1YlxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgLi4uaXRlbSxcbiAgICAgICAgICAgICAgICBjcmVhdGVkX3RpbWU6IG5vdyxcbiAgICAgICAgICAgICAgICBjcmVhdGVkX3VzZXI6IGF1dGhDb250ZXh0Py51c2VyU3ViXG4gICAgICAgICAgICB9O1xuICAgICAgICB9KSBhcyBUW107XG5cbiAgICAgICAgY29uc3QgYmF0Y2hQdXRGbiA9IHRoaXMubW9kZWwuYmF0Y2hQdXQgYXMgQmF0Y2hQdXRGbjxUPjtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgYmF0Y2hQdXRGbih1cHNlcnRJdGVtcyk7XG4gICAgICAgIGlmIChyZXN1bHQudW5wcm9jZXNzZWRJdGVtcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEJhdGNoIHVwc2VydCBwYXJ0aWFsbHkgZmFpbGVkLiBVbnByb2Nlc3NlZCBpdGVtczogJHtyZXN1bHQudW5wcm9jZXNzZWRJdGVtcy5sZW5ndGh9YCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdXBzZXJ0SXRlbXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRmV0Y2hlcyBtdWx0aXBsZSByZWNvcmRzIGJ5IHByaW1hcnkga2V5cy5cbiAgICAgKi9cbiAgICBhc3luYyBiYXRjaEdldChwcmltYXJ5S2V5VmFsdWVzOiBzdHJpbmdbXSk6IFByb21pc2U8VFtdPiB7XG4gICAgICAgIGNvbnN0IGtleXMgPSBwcmltYXJ5S2V5VmFsdWVzLm1hcCgodmFsdWUpID0+IHRoaXMuZ2V0S2V5T2JqZWN0KHZhbHVlKSk7XG4gICAgICAgIHJldHVybiB0aGlzLmJhdGNoR2V0QnlLZXlzKGtleXMpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEZldGNoZXMgbXVsdGlwbGUgcmVjb3JkcyBieSBrZXkgb2JqZWN0cyAoc3VwcG9ydHMgaGFzaCArIG9wdGlvbmFsIHNvcnQga2V5KS5cbiAgICAgKi9cbiAgICBhc3luYyBiYXRjaEdldEJ5S2V5cyhrZXlzOiBEeW5hbW9LZXlbXSk6IFByb21pc2U8VFtdPiB7XG4gICAgICAgIGNvbnN0IGJhdGNoR2V0Rm4gPSB0aGlzLm1vZGVsLmJhdGNoR2V0IGFzIEJhdGNoR2V0Rm47XG4gICAgICAgIGNvbnN0IGl0ZW1zID0gYXdhaXQgYmF0Y2hHZXRGbihrZXlzKTtcbiAgICAgICAgcmV0dXJuIGl0ZW1zIGFzIFRbXTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEZWNvZGVzIGEgYmFzZTY0IGNvbnRpbnVhdGlvbiB0b2tlbiBpbnRvIER5bmFtb0RCIGxhc3QgZXZhbHVhdGVkIGtleS5cbiAgICAgKi9cbiAgICBkZWNvZGUoY29udGludWF0aW9uVG9rZW46IHN0cmluZyB8IHVuZGVmaW5lZCk6IER5bmFtb0tleSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGlmICghY29udGludWF0aW9uVG9rZW4pIHtcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cblxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgcmV0dXJuIEpTT04ucGFyc2UoQnVmZmVyLmZyb20oY29udGludWF0aW9uVG9rZW4sIFwiYmFzZTY0XCIpLnRvU3RyaW5nKFwidXRmOFwiKSkgYXMgRHluYW1vS2V5O1xuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBjb250aW51YXRpb25Ub2tlblwiKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEVuY29kZXMgRHluYW1vREIgbGFzdCBldmFsdWF0ZWQga2V5IGludG8gYSBiYXNlNjQgY29udGludWF0aW9uIHRva2VuLlxuICAgICAqL1xuICAgIGFzeW5jIGVuY29kZShsYXN0RXZhbHVhdGVkS2V5OiBEeW5hbW9LZXkgfCB1bmRlZmluZWQpOiBQcm9taXNlPHN0cmluZyB8IHVuZGVmaW5lZD4ge1xuICAgICAgICBpZiAoIWxhc3RFdmFsdWF0ZWRLZXkpIHtcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gQnVmZmVyLmZyb20oSlNPTi5zdHJpbmdpZnkobGFzdEV2YWx1YXRlZEtleSkpLnRvU3RyaW5nKFwiYmFzZTY0XCIpO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -1,13 +1,20 @@
|
|
|
1
|
+
import { Item } from "dynamoose/dist/Item";
|
|
1
2
|
/**
|
|
2
|
-
* Shared audit fields for Dynamoose entities.
|
|
3
|
-
*
|
|
3
|
+
* Shared audit fields contract for Dynamoose entities.
|
|
4
|
+
* Combine with `Item` so module models satisfy Dynamoose generic constraints.
|
|
4
5
|
*/
|
|
5
|
-
export interface
|
|
6
|
+
export interface BaseDynamooseFields {
|
|
6
7
|
created_time?: Date;
|
|
7
8
|
updated_time?: Date;
|
|
8
9
|
created_user?: string;
|
|
9
10
|
updated_user?: string;
|
|
10
11
|
}
|
|
12
|
+
/**
|
|
13
|
+
* Base Dynamoose model that all module models should extend.
|
|
14
|
+
* Provides Dynamoose Item methods plus shared audit fields.
|
|
15
|
+
*/
|
|
16
|
+
export interface BaseDynamooseModel extends Item, BaseDynamooseFields {
|
|
17
|
+
}
|
|
11
18
|
/**
|
|
12
19
|
* Reusable runtime schema fragment for audit fields.
|
|
13
20
|
* Spread this into Dynamoose schema definitions to avoid duplication.
|
|
@@ -11,4 +11,4 @@ exports.BASE_DYNAMOOSE_AUDIT_SCHEMA = {
|
|
|
11
11
|
created_user: String,
|
|
12
12
|
updated_user: String
|
|
13
13
|
};
|
|
14
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1keW5hbW9vc2UtbW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvYmFzZS1keW5hbW9vc2UtbW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBbUJBOzs7R0FHRztBQUNVLFFBQUEsMkJBQTJCLEdBQUc7SUFDdkMsWUFBWSxFQUFFLElBQUk7SUFDbEIsWUFBWSxFQUFFLElBQUk7SUFDbEIsWUFBWSxFQUFFLE1BQU07SUFDcEIsWUFBWSxFQUFFLE1BQU07Q0FDZCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSXRlbSB9IGZyb20gXCJkeW5hbW9vc2UvZGlzdC9JdGVtXCI7XG5cbi8qKlxuICogU2hhcmVkIGF1ZGl0IGZpZWxkcyBjb250cmFjdCBmb3IgRHluYW1vb3NlIGVudGl0aWVzLlxuICogQ29tYmluZSB3aXRoIGBJdGVtYCBzbyBtb2R1bGUgbW9kZWxzIHNhdGlzZnkgRHluYW1vb3NlIGdlbmVyaWMgY29uc3RyYWludHMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQmFzZUR5bmFtb29zZUZpZWxkcyB7XG4gICAgY3JlYXRlZF90aW1lPzogRGF0ZTtcbiAgICB1cGRhdGVkX3RpbWU/OiBEYXRlO1xuICAgIGNyZWF0ZWRfdXNlcj86IHN0cmluZztcbiAgICB1cGRhdGVkX3VzZXI/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogQmFzZSBEeW5hbW9vc2UgbW9kZWwgdGhhdCBhbGwgbW9kdWxlIG1vZGVscyBzaG91bGQgZXh0ZW5kLlxuICogUHJvdmlkZXMgRHluYW1vb3NlIEl0ZW0gbWV0aG9kcyBwbHVzIHNoYXJlZCBhdWRpdCBmaWVsZHMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQmFzZUR5bmFtb29zZU1vZGVsIGV4dGVuZHMgSXRlbSwgQmFzZUR5bmFtb29zZUZpZWxkcyB7IH1cblxuLyoqXG4gKiBSZXVzYWJsZSBydW50aW1lIHNjaGVtYSBmcmFnbWVudCBmb3IgYXVkaXQgZmllbGRzLlxuICogU3ByZWFkIHRoaXMgaW50byBEeW5hbW9vc2Ugc2NoZW1hIGRlZmluaXRpb25zIHRvIGF2b2lkIGR1cGxpY2F0aW9uLlxuICovXG5leHBvcnQgY29uc3QgQkFTRV9EWU5BTU9PU0VfQVVESVRfU0NIRU1BID0ge1xuICAgIGNyZWF0ZWRfdGltZTogRGF0ZSxcbiAgICB1cGRhdGVkX3RpbWU6IERhdGUsXG4gICAgY3JlYXRlZF91c2VyOiBTdHJpbmcsXG4gICAgdXBkYXRlZF91c2VyOiBTdHJpbmdcbn0gYXMgY29uc3Q7XG5cbi8qKlxuICogQXV0aCBwYXlsb2FkIHVzZWQgYnkgREFPIG1ldGhvZHMgZm9yIGF1ZGl0IHN0YW1waW5nLlxuICovXG5leHBvcnQgdHlwZSBBdXRoQ29udGV4dCA9IHtcbiAgICB1c2VyU3ViPzogc3RyaW5nO1xufTtcbiJdfQ==
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { GenericDynamooseDAO } from "../../base-dynamoose-dao";
|
|
2
2
|
import { AuthContext } from "../../base-dynamoose-model";
|
|
3
|
-
import {
|
|
3
|
+
import { PlatterFit } from "./platter-fit-model";
|
|
4
4
|
type ListResult = {
|
|
5
5
|
items: PlatterFit[];
|
|
6
6
|
nextToken?: string;
|
|
@@ -14,7 +14,7 @@ declare class PlatterFitDao extends GenericDynamooseDAO<PlatterFit> {
|
|
|
14
14
|
* Creates one platter-fit record.
|
|
15
15
|
* If platterFitId is not passed, Dynamoose auto-generates it from schema default.
|
|
16
16
|
*/
|
|
17
|
-
save: (item:
|
|
17
|
+
save: (item: PlatterFit, authContext?: AuthContext) => Promise<PlatterFit>;
|
|
18
18
|
/**
|
|
19
19
|
* Updates one platter-fit record by id with conditional existence check.
|
|
20
20
|
*/
|
|
@@ -76,7 +76,7 @@ class PlatterFitDao extends base_dynamoose_dao_1.GenericDynamooseDAO {
|
|
|
76
76
|
}
|
|
77
77
|
const queryResult = await queryBuilder.exec();
|
|
78
78
|
return {
|
|
79
|
-
items: queryResult
|
|
79
|
+
items: queryResult,
|
|
80
80
|
nextToken: await this.encode(queryResult.lastKey)
|
|
81
81
|
};
|
|
82
82
|
};
|
|
@@ -97,11 +97,11 @@ class PlatterFitDao extends base_dynamoose_dao_1.GenericDynamooseDAO {
|
|
|
97
97
|
}
|
|
98
98
|
const queryResult = await queryBuilder.exec();
|
|
99
99
|
return {
|
|
100
|
-
items: queryResult
|
|
100
|
+
items: queryResult,
|
|
101
101
|
nextToken: await this.encode(queryResult.lastKey)
|
|
102
102
|
};
|
|
103
103
|
};
|
|
104
104
|
}
|
|
105
105
|
}
|
|
106
106
|
exports.platterFitDao = new PlatterFitDao();
|
|
107
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhdHRlci1maXQtZGFvLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2N1c3RvbWVyLXVzZXIvcGxhdHRlci1maXQtbW9kdWxlL3BsYXR0ZXItZml0LWRhby50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSwwREFBa0M7QUFDbEMsaUVBQTBFO0FBRTFFLDJEQUF5RjtBQU96RixNQUFNLGFBQWMsU0FBUSx3Q0FBK0I7SUFDdkQ7O09BRUc7SUFDSDtRQUNJLEtBQUssQ0FBQyxtQ0FBZSxFQUFFLGNBQWMsQ0FBQyxDQUFDO1FBRzNDOzs7V0FHRztRQUNILFNBQUksR0FBRyxLQUFLLEVBQUUsSUFBMkIsRUFBRSxXQUF5QixFQUF1QixFQUFFO1lBQ3pGLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFrQixFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBQ3ZELENBQUMsQ0FBQztRQUVGOztXQUVHO1FBQ0gsV0FBTSxHQUFHLEtBQUssRUFDVixZQUFvQixFQUNwQixPQUE0QixFQUM1QixXQUF5QixFQUNOLEVBQUU7WUFDckIsTUFBTSxPQUFPLEdBQUcsTUFBTSxtQ0FBZSxDQUFDLE1BQU0sQ0FDeEMsRUFBRSxZQUFZLEVBQUUsRUFDaEI7Z0JBQ0ksR0FBRyxPQUFPO2dCQUNWLFlBQVksRUFBRSxJQUFJLElBQUksRUFBRTtnQkFDeEIsWUFBWSxFQUFFLFdBQVcsRUFBRSxPQUFPO2FBQ3JDLEVBQ0Q7Z0JBQ0ksU0FBUyxFQUFFLElBQUksbUJBQVMsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQzthQUM5RSxDQUNKLENBQUM7WUFDRixPQUFPLEVBQUUsR0FBSSxPQUFrQixFQUFnQixDQUFDO1FBQ3BELENBQUMsQ0FBQztRQUVGOztXQUVHO1FBQ0gsWUFBTyxHQUFHLEtBQUssRUFBRSxZQUFvQixFQUE4QixFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FB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Q0FBQztZQUM3QyxDQUFDO1lBRUQsTUFBTSxXQUFXLEdBQUcsTUFBTSxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUM7WUFFOUMsT0FBTztnQkFDSCxLQUFLLEVBQUUsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUksSUFBZSxFQUFpQixDQUFBLENBQUM7Z0JBQ3pFLFNBQVMsRUFBRSxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLE9BQWdDLENBQUM7YUFDN0UsQ0FBQztRQUNOLENBQUMsQ0FBQztJQS9HRixDQUFDO0NBZ0hKO0FBRVksUUFBQSxhQUFhLEdBQUcsSUFBSSxhQUFhLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBkeW5hbW9vc2UgZnJvbSBcImR5bmFtb29zZVwiO1xuaW1wb3J0IHsgRHluYW1vS2V5LCBHZW5lcmljRHluYW1vb3NlREFPIH0gZnJvbSBcIi4uLy4uL2Jhc2UtZHluYW1vb3NlLWRhb1wiO1xuaW1wb3J0IHsgQXV0aENvbnRleHQgfSBmcm9tIFwiLi4vLi4vYmFzZS1keW5hbW9vc2UtbW9kZWxcIjtcbmltcG9ydCB7IENyZWF0ZVBsYXR0ZXJGaXRJbnB1dCwgUGxhdHRlckZpdCwgUGxhdHRlckZpdE1vZGVsIH0gZnJvbSBcIi4vcGxhdHRlci1maXQtbW9kZWxcIjtcblxudHlwZSBMaXN0UmVzdWx0ID0ge1xuICAgIGl0ZW1zOiBQbGF0dGVyRml0W107XG4gICAgbmV4dFRva2VuPzogc3RyaW5nO1xufTtcblxuY2xhc3MgUGxhdHRlckZpdERhbyBleHRlbmRzIEdlbmVyaWNEeW5hbW9vc2VEQU88UGxhdHRlckZpdD4ge1xuICAgIC8qKlxuICAgICAqIENvbm5lY3RzIHBsYXR0ZXItZml0IERBTyB0byB0aGUgdGFibGUgbW9kZWwgYW5kIGl0cyBwcmltYXJ5IGtleS5cbiAgICAgKi9cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoUGxhdHRlckZpdE1vZGVsLCBcInBsYXR0ZXJGaXRJZFwiKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIG9uZSBwbGF0dGVyLWZpdCByZWNvcmQuXG4gICAgICogSWYgcGxhdHRlckZpdElkIGlzIG5vdCBwYXNzZWQsIER5bmFtb29zZSBhdXRvLWdlbmVyYXRlcyBpdCBmcm9tIHNjaGVtYSBkZWZhdWx0LlxuICAgICAqL1xuICAgIHNhdmUgPSBhc3luYyAoaXRlbTogQ3JlYXRlUGxhdHRlckZpdElucHV0LCBhdXRoQ29udGV4dD86IEF1dGhDb250ZXh0KTogUHJvbWlzZTxQbGF0dGVyRml0PiA9PiB7XG4gICAgICAgIHJldHVybiBzdXBlci5zYXZlKGl0ZW0gYXMgUGxhdHRlckZpdCwgYXV0aENvbnRleHQpO1xuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBVcGRhdGVzIG9uZSBwbGF0dGVyLWZpdCByZWNvcmQgYnkgaWQgd2l0aCBjb25kaXRpb25hbCBleGlzdGVuY2UgY2hlY2suXG4gICAgICovXG4gICAgdXBkYXRlID0gYXN5bmMgKFxuICAgICAgICBwbGF0dGVyRml0SWQ6IHN0cmluZyxcbiAgICAgICAgdXBkYXRlczogUGFydGlhbDxQbGF0dGVyRml0PixcbiAgICAgICAgYXV0aENvbnRleHQ/OiBBdXRoQ29udGV4dFxuICAgICk6IFByb21pc2U8UGxhdHRlckZpdD4gPT4ge1xuICAgICAgICBjb25zdCB1cGRhdGVkID0gYXdhaXQgUGxhdHRlckZpdE1vZGVsLnVwZGF0ZShcbiAgICAgICAgICAgIHsgcGxhdHRlckZpdElkIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgLi4udXBkYXRlcyxcbiAgICAgICAgICAgICAgICB1cGRhdGVkX3RpbWU6IG5ldyBEYXRlKCksXG4gICAgICAgICAgICAgICAgdXBkYXRlZF91c2VyOiBhdXRoQ29udGV4dD8udXNlclN1YlxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjb25kaXRpb246IG5ldyBkeW5hbW9vc2UuQ29uZGl0aW9uKCkud2hlcmUoXCJwbGF0dGVyRml0SWRcIikuZXEocGxhdHRlckZpdElkKVxuICAgICAgICAgICAgfVxuICAgICAgICApO1xuICAgICAgICByZXR1cm4geyAuLi4odXBkYXRlZCBhcyBvYmplY3QpIH0gYXMgUGxhdHRlckZpdDtcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyBvbmUgcGxhdHRlci1maXQgcmVjb3JkIGJ5IHByaW1hcnkga2V5LlxuICAgICAqL1xuICAgIGdldEJ5SWQgPSBhc3luYyAocGxhdHRlckZpdElkOiBzdHJpbmcpOiBQcm9taXNlPFBsYXR0ZXJGaXQgfCBudWxsPiA9PiB0aGlzLmdldChwbGF0dGVyRml0SWQpO1xuXG4gICAgLyoqXG4gICAgICogTGlzdHMgcmVjb3JkcyBieSBzdGF0dXMgdXNpbmcgdG9rZW4tYmFzZWQgcGFnaW5hdGlvbi5cbiAgICAgKiBQYXNzIHJldHVybmVkIG5leHRUb2tlbiBpbiB0aGUgbmV4dCBjYWxsIHRvIGNvbnRpbnVlLlxuICAgICAqL1xuICAgIGxpc3RCeVN0YXR1cyA9IGFzeW5jIChzdGF0dXM6IHN0cmluZywgbGltaXQ/OiBudW1iZXIsIHRva2VuPzogc3RyaW5nKTogUHJvbWlzZTxMaXN0UmVzdWx0PiA9PiB7XG4gICAgICAgIGNvbnN0IGRlY29kZWRUb2tlbiA9IHRoaXMuZGVjb2RlKHRva2VuKTtcbiAgICAgICAgbGV0IHF1ZXJ5QnVpbGRlciA9IFBsYXR0ZXJGaXRNb2RlbFxuICAgICAgICAgICAgLnF1ZXJ5KFwic3RhdHVzXCIpXG4gICAgICAgICAgICAuZXEoc3RhdHVzKVxuICAgICAgICAgICAgLnVzaW5nKFwic3RhdHVzSW5kZXhcIik7XG4gICAgICAgIGlmIChkZWNvZGVkVG9rZW4pIHtcbiAgICAgICAgICAgIHF1ZXJ5QnVpbGRlciA9IHF1ZXJ5QnVpbGRlci5zdGFydEF0KGRlY29kZWRUb2tlbik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGVvZiBsaW1pdCA9PT0gXCJudW1iZXJcIikge1xuICAgICAgICAgICAgcXVlcnlCdWlsZGVyID0gcXVlcnlCdWlsZGVyLmxpbWl0KGxpbWl0KTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBxdWVyeVJlc3VsdCA9IGF3YWl0IHF1ZXJ5QnVpbGRlci5leGVjKCk7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGl0ZW1zOiBxdWVyeVJlc3VsdC5tYXAoKGl0ZW0pID0+ICh7IC4uLihpdGVtIGFzIG9iamVjdCkgfSBhcyBQbGF0dGVyRml0KSksXG4gICAgICAgICAgICBuZXh0VG9rZW46IGF3YWl0IHRoaXMuZW5jb2RlKHF1ZXJ5UmVzdWx0Lmxhc3RLZXkgYXMgRHluYW1vS2V5IHwgdW5kZWZpbmVkKVxuICAgICAgICB9O1xuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBMaXN0cyByZWNvcmRzIGJ5IG9jY2FzaW9uVHlwZSB1c2luZyB0b2tlbi1iYXNlZCBwYWdpbmF0aW9uLlxuICAgICAqL1xuICAgIGxpc3RCeU9jY2FzaW9uVHlwZSA9IGFzeW5jIChvY2Nhc2lvblR5cGU6IHN0cmluZywgbGltaXQ/OiBudW1iZXIsIHRva2VuPzogc3RyaW5nKTogUHJvbWlzZTxMaXN0UmVzdWx0PiA9PiB7XG4gICAgICAgIGNvbnN0IGRlY29kZWRUb2tlbiA9IHRoaXMuZGVjb2RlKHRva2VuKTtcbiAgICAgICAgbGV0IHF1ZXJ5QnVpbGRlciA9IFBsYXR0ZXJGaXRNb2RlbFxuICAgICAgICAgICAgLnF1ZXJ5KFwib2NjYXNpb25UeXBlXCIpXG4gICAgICAgICAgICAuZXEob2NjYXNpb25UeXBlKVxuICAgICAgICAgICAgLnVzaW5nKFwib2NjYXNpb25UeXBlSW5kZXhcIik7XG5cbiAgICAgICAgaWYgKGRlY29kZWRUb2tlbikge1xuICAgICAgICAgICAgcXVlcnlCdWlsZGVyID0gcXVlcnlCdWlsZGVyLnN0YXJ0QXQoZGVjb2RlZFRva2VuKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0eXBlb2YgbGltaXQgPT09IFwibnVtYmVyXCIpIHtcbiAgICAgICAgICAgIHF1ZXJ5QnVpbGRlciA9IHF1ZXJ5QnVpbGRlci5saW1pdChsaW1pdCk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBxdWVyeVJlc3VsdCA9IGF3YWl0IHF1ZXJ5QnVpbGRlci5leGVjKCk7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGl0ZW1zOiBxdWVyeVJlc3VsdC5tYXAoKGl0ZW0pID0+ICh7IC4uLihpdGVtIGFzIG9iamVjdCkgfSBhcyBQbGF0dGVyRml0KSksXG4gICAgICAgICAgICBuZXh0VG9rZW46IGF3YWl0IHRoaXMuZW5jb2RlKHF1ZXJ5UmVzdWx0Lmxhc3RLZXkgYXMgRHluYW1vS2V5IHwgdW5kZWZpbmVkKVxuICAgICAgICB9O1xuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBMaXN0cyByZWNvcmRzIGJ5IHBsYXR0ZXJJZCB1c2luZyB0b2tlbi1iYXNlZCBwYWdpbmF0aW9uLlxuICAgICAqL1xuICAgIGxpc3RCeVBsYXR0ZXJJZCA9IGFzeW5jIChwbGF0dGVySWQ6IHN0cmluZywgbGltaXQ/OiBudW1iZXIsIHRva2VuPzogc3RyaW5nKTogUHJvbWlzZTxMaXN0UmVzdWx0PiA9PiB7XG4gICAgICAgIGNvbnN0IGRlY29kZWRUb2tlbiA9IHRoaXMuZGVjb2RlKHRva2VuKTtcbiAgICAgICAgbGV0IHF1ZXJ5QnVpbGRlciA9IFBsYXR0ZXJGaXRNb2RlbFxuICAgICAgICAgICAgLnF1ZXJ5KFwicGxhdHRlcklkXCIpXG4gICAgICAgICAgICAuZXEocGxhdHRlcklkKVxuICAgICAgICAgICAgLnVzaW5nKFwicGxhdHRlcklkSW5kZXhcIik7XG5cbiAgICAgICAgaWYgKGRlY29kZWRUb2tlbikge1xuICAgICAgICAgICAgcXVlcnlCdWlsZGVyID0gcXVlcnlCdWlsZGVyLnN0YXJ0QXQoZGVjb2RlZFRva2VuKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0eXBlb2YgbGltaXQgPT09IFwibnVtYmVyXCIpIHtcbiAgICAgICAgICAgIHF1ZXJ5QnVpbGRlciA9IHF1ZXJ5QnVpbGRlci5saW1pdChsaW1pdCk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBxdWVyeVJlc3VsdCA9IGF3YWl0IHF1ZXJ5QnVpbGRlci5leGVjKCk7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGl0ZW1zOiBxdWVyeVJlc3VsdC5tYXAoKGl0ZW0pID0+ICh7IC4uLihpdGVtIGFzIG9iamVjdCkgfSBhcyBQbGF0dGVyRml0KSksXG4gICAgICAgICAgICBuZXh0VG9rZW46IGF3YWl0IHRoaXMuZW5jb2RlKHF1ZXJ5UmVzdWx0Lmxhc3RLZXkgYXMgRHluYW1vS2V5IHwgdW5kZWZpbmVkKVxuICAgICAgICB9O1xuICAgIH07XG59XG5cbmV4cG9ydCBjb25zdCBwbGF0dGVyRml0RGFvID0gbmV3IFBsYXR0ZXJGaXREYW8oKTtcbiJdfQ==
|
|
107
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhdHRlci1maXQtZGFvLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2N1c3RvbWVyLXVzZXIvcGxhdHRlci1maXQtbW9kdWxlL3BsYXR0ZXItZml0LWRhby50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSwwREFBa0M7QUFDbEMsaUVBQTBFO0FBRTFFLDJEQUFrRTtBQU9sRSxNQUFNLGFBQWMsU0FBUSx3Q0FBK0I7SUFDdkQ7O09BRUc7SUFDSDtRQUNJLEtBQUssQ0FBQyxtQ0FBZSxFQUFFLGNBQWMsQ0FBQyxDQUFDO1FBRzNDOzs7V0FHRztRQUNILFNBQUksR0FBRyxLQUFLLEVBQUUsSUFBZ0IsRUFBRSxXQUF5QixFQUF1QixFQUFFO1lBQzlFLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFDekMsQ0FBQyxDQUFDO1FBRUY7O1dBRUc7UUFDSCxXQUFNLEdBQUcsS0FBSyxFQUNWLFlBQW9CLEVBQ3BCLE9BQTRCLEVBQzVCLFdBQXlCLEVBQ04sRUFBRTtZQUNyQixNQUFNLE9BQU8sR0FBRyxNQUFNLG1DQUFlLENBQUMsTUFBTSxDQUN4QyxFQUFFLFlBQVksRUFBRSxFQUNoQjtnQkFDSSxHQUFHLE9BQU87Z0JBQ1YsWUFBWSxFQUFFLElBQUksSUFBSSxFQUFFO2dCQUN4QixZQUFZLEVBQUUsV0FBVyxFQUFFLE9BQU87YUFDckMsRUFDRDtnQkFDSSxTQUFTLEVBQUUsSUFBSSxtQkFBUyxDQUFDLFNBQVMsRUFBRSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDO2FBQzlFLENBQ0osQ0FBQztZQUNGLE9BQU8sRUFBRSxHQUFJLE9BQWtCLEVBQWdCLENBQUM7UUFDcEQsQ0FBQyxDQUFDO1FBRUY7O1dBRUc7UUFDSCxZQUFPLEdBQUcsS0FBSyxFQUFFLFlBQW9CLEVBQThCLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBRTdGOzs7V0FHRztRQUNILGlCQUFZLEdBQUcsS0FBSyxFQUFFLE1BQWMsRUFBRSxLQUFjLEVBQUUsS0FBYyxFQUF1QixFQUFFO1lBQ3pGLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDeEMsSUFBSSxZQUFZLEdBQUcsbUNBQWU7aUJBQzdCLEtBQUssQ0FBQyxRQUFRLENBQUM7aUJBQ2YsRUFBRSxDQUFDLE1BQU0sQ0FBQztpQkFDVixLQUFLLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDMUIsSUFBSSxZQUFZLEVBQUUsQ0FBQztnQkFDZixZQUFZLEdBQUcsWUFBWSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUN0RCxDQUFDO1lBQ0QsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUUsQ0FBQztnQkFDNUIsWUFBWSxHQUFHLFlBQVksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDN0MsQ0FBQztZQUNELE1BQU0sV0FBVyxHQUFHLE1BQU0sWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDO1lBRTlDLE9BQU87Z0JBQ0gsS0FBSyxFQUFFLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFJLElBQWUsRUFBaUIsQ0FBQSxDQUFDO2dCQUN6RSxTQUFTLEVBQUUsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxPQUFnQyxDQUFDO2FBQzdFLENBQUM7UUFDTixDQUFDLENBQUM7UUFFRjs7V0FFRztRQUNILHVCQUFrQixHQUFHLEtBQUssRUFBRSxZQUFvQixFQUFFLEtBQWMsRUFBRSxLQUFjLEVBQXVCLEVBQUU7WUFDckcsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN4QyxJQUFJLFlBQVksR0FBRyxtQ0FBZTtpQkFDN0IsS0FBSyxDQUFDLGNBQWMsQ0FBQztpQkFDckIsRUFBRSxDQUFDLFlBQVksQ0FBQztpQkFDaEIsS0FBSyxDQUFDLG1CQUFtQixDQUFDLENBQUM7WUFFaEMsSUFBSSxZQUFZLEVBQUUsQ0FBQztnQkFDZixZQUFZLEdBQUcsWUFBWSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUN0RCxDQUFDO1lBRUQsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUUsQ0FBQztnQkFDNUIsWUFBWSxHQUFHLFlBQVksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDN0MsQ0FBQztZQUVELE1BQU0sV0FBVyxHQUFHLE1BQU0sWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDO1lBRTlDLE9BQU87Z0JBQ0gsS0FBSyxFQUFFLFdBQTJCO2dCQUNsQyxTQUFTLEVBQUUsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxPQUFnQyxDQUFDO2FBQzdFLENBQUM7UUFDTixDQUFDLENBQUM7UUFFRjs7V0FFRztRQUNILG9CQUFlLEdBQUcsS0FBSyxFQUFFLFNBQWlCLEVBQUUsS0FBYyxFQUFFLEtBQWMsRUFBdUIsRUFBRTtZQUMvRixNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3hDLElBQUksWUFBWSxHQUFHLG1DQUFlO2lCQUM3QixLQUFLLENBQUMsV0FBVyxDQUFDO2lCQUNsQixFQUFFLENBQUMsU0FBUyxDQUFDO2lCQUNiLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1lBRTdCLElBQUksWUFBWSxFQUFFLENBQUM7Z0JBQ2YsWUFBWSxHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUM7WUFDdEQsQ0FBQztZQUVELElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFLENBQUM7Z0JBQzVCLFlBQVksR0FBRyxZQUFZLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzdDLENBQUM7WUFFRCxNQUFNLFdBQVcsR0FBRyxNQUFNLFlBQVksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUU5QyxPQUFPO2dCQUNILEtBQUssRUFBRSxXQUFXO2dCQUNsQixTQUFTLEVBQUUsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxPQUFnQyxDQUFDO2FBQzdFLENBQUM7UUFDTixDQUFDLENBQUM7SUEvR0YsQ0FBQztDQWdISjtBQUVZLFFBQUEsYUFBYSxHQUFHLElBQUksYUFBYSxFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZHluYW1vb3NlIGZyb20gXCJkeW5hbW9vc2VcIjtcbmltcG9ydCB7IER5bmFtb0tleSwgR2VuZXJpY0R5bmFtb29zZURBTyB9IGZyb20gXCIuLi8uLi9iYXNlLWR5bmFtb29zZS1kYW9cIjtcbmltcG9ydCB7IEF1dGhDb250ZXh0IH0gZnJvbSBcIi4uLy4uL2Jhc2UtZHluYW1vb3NlLW1vZGVsXCI7XG5pbXBvcnQgeyBQbGF0dGVyRml0LCBQbGF0dGVyRml0TW9kZWwgfSBmcm9tIFwiLi9wbGF0dGVyLWZpdC1tb2RlbFwiO1xuXG50eXBlIExpc3RSZXN1bHQgPSB7XG4gICAgaXRlbXM6IFBsYXR0ZXJGaXRbXTtcbiAgICBuZXh0VG9rZW4/OiBzdHJpbmc7XG59O1xuXG5jbGFzcyBQbGF0dGVyRml0RGFvIGV4dGVuZHMgR2VuZXJpY0R5bmFtb29zZURBTzxQbGF0dGVyRml0PiB7XG4gICAgLyoqXG4gICAgICogQ29ubmVjdHMgcGxhdHRlci1maXQgREFPIHRvIHRoZSB0YWJsZSBtb2RlbCBhbmQgaXRzIHByaW1hcnkga2V5LlxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlcihQbGF0dGVyRml0TW9kZWwsIFwicGxhdHRlckZpdElkXCIpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgb25lIHBsYXR0ZXItZml0IHJlY29yZC5cbiAgICAgKiBJZiBwbGF0dGVyRml0SWQgaXMgbm90IHBhc3NlZCwgRHluYW1vb3NlIGF1dG8tZ2VuZXJhdGVzIGl0IGZyb20gc2NoZW1hIGRlZmF1bHQuXG4gICAgICovXG4gICAgc2F2ZSA9IGFzeW5jIChpdGVtOiBQbGF0dGVyRml0LCBhdXRoQ29udGV4dD86IEF1dGhDb250ZXh0KTogUHJvbWlzZTxQbGF0dGVyRml0PiA9PiB7XG4gICAgICAgIHJldHVybiBzdXBlci5zYXZlKGl0ZW0sIGF1dGhDb250ZXh0KTtcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogVXBkYXRlcyBvbmUgcGxhdHRlci1maXQgcmVjb3JkIGJ5IGlkIHdpdGggY29uZGl0aW9uYWwgZXhpc3RlbmNlIGNoZWNrLlxuICAgICAqL1xuICAgIHVwZGF0ZSA9IGFzeW5jIChcbiAgICAgICAgcGxhdHRlckZpdElkOiBzdHJpbmcsXG4gICAgICAgIHVwZGF0ZXM6IFBhcnRpYWw8UGxhdHRlckZpdD4sXG4gICAgICAgIGF1dGhDb250ZXh0PzogQXV0aENvbnRleHRcbiAgICApOiBQcm9taXNlPFBsYXR0ZXJGaXQ+ID0+IHtcbiAgICAgICAgY29uc3QgdXBkYXRlZCA9IGF3YWl0IFBsYXR0ZXJGaXRNb2RlbC51cGRhdGUoXG4gICAgICAgICAgICB7IHBsYXR0ZXJGaXRJZCB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIC4uLnVwZGF0ZXMsXG4gICAgICAgICAgICAgICAgdXBkYXRlZF90aW1lOiBuZXcgRGF0ZSgpLFxuICAgICAgICAgICAgICAgIHVwZGF0ZWRfdXNlcjogYXV0aENvbnRleHQ/LnVzZXJTdWJcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY29uZGl0aW9uOiBuZXcgZHluYW1vb3NlLkNvbmRpdGlvbigpLndoZXJlKFwicGxhdHRlckZpdElkXCIpLmVxKHBsYXR0ZXJGaXRJZClcbiAgICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuIHsgLi4uKHVwZGF0ZWQgYXMgb2JqZWN0KSB9IGFzIFBsYXR0ZXJGaXQ7XG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgb25lIHBsYXR0ZXItZml0IHJlY29yZCBieSBwcmltYXJ5IGtleS5cbiAgICAgKi9cbiAgICBnZXRCeUlkID0gYXN5bmMgKHBsYXR0ZXJGaXRJZDogc3RyaW5nKTogUHJvbWlzZTxQbGF0dGVyRml0IHwgbnVsbD4gPT4gdGhpcy5nZXQocGxhdHRlckZpdElkKTtcblxuICAgIC8qKlxuICAgICAqIExpc3RzIHJlY29yZHMgYnkgc3RhdHVzIHVzaW5nIHRva2VuLWJhc2VkIHBhZ2luYXRpb24uXG4gICAgICogUGFzcyByZXR1cm5lZCBuZXh0VG9rZW4gaW4gdGhlIG5leHQgY2FsbCB0byBjb250aW51ZS5cbiAgICAgKi9cbiAgICBsaXN0QnlTdGF0dXMgPSBhc3luYyAoc3RhdHVzOiBzdHJpbmcsIGxpbWl0PzogbnVtYmVyLCB0b2tlbj86IHN0cmluZyk6IFByb21pc2U8TGlzdFJlc3VsdD4gPT4ge1xuICAgICAgICBjb25zdCBkZWNvZGVkVG9rZW4gPSB0aGlzLmRlY29kZSh0b2tlbik7XG4gICAgICAgIGxldCBxdWVyeUJ1aWxkZXIgPSBQbGF0dGVyRml0TW9kZWxcbiAgICAgICAgICAgIC5xdWVyeShcInN0YXR1c1wiKVxuICAgICAgICAgICAgLmVxKHN0YXR1cylcbiAgICAgICAgICAgIC51c2luZyhcInN0YXR1c0luZGV4XCIpO1xuICAgICAgICBpZiAoZGVjb2RlZFRva2VuKSB7XG4gICAgICAgICAgICBxdWVyeUJ1aWxkZXIgPSBxdWVyeUJ1aWxkZXIuc3RhcnRBdChkZWNvZGVkVG9rZW4pO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlb2YgbGltaXQgPT09IFwibnVtYmVyXCIpIHtcbiAgICAgICAgICAgIHF1ZXJ5QnVpbGRlciA9IHF1ZXJ5QnVpbGRlci5saW1pdChsaW1pdCk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcXVlcnlSZXN1bHQgPSBhd2FpdCBxdWVyeUJ1aWxkZXIuZXhlYygpO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBpdGVtczogcXVlcnlSZXN1bHQubWFwKChpdGVtKSA9PiAoeyAuLi4oaXRlbSBhcyBvYmplY3QpIH0gYXMgUGxhdHRlckZpdCkpLFxuICAgICAgICAgICAgbmV4dFRva2VuOiBhd2FpdCB0aGlzLmVuY29kZShxdWVyeVJlc3VsdC5sYXN0S2V5IGFzIER5bmFtb0tleSB8IHVuZGVmaW5lZClcbiAgICAgICAgfTtcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogTGlzdHMgcmVjb3JkcyBieSBvY2Nhc2lvblR5cGUgdXNpbmcgdG9rZW4tYmFzZWQgcGFnaW5hdGlvbi5cbiAgICAgKi9cbiAgICBsaXN0QnlPY2Nhc2lvblR5cGUgPSBhc3luYyAob2NjYXNpb25UeXBlOiBzdHJpbmcsIGxpbWl0PzogbnVtYmVyLCB0b2tlbj86IHN0cmluZyk6IFByb21pc2U8TGlzdFJlc3VsdD4gPT4ge1xuICAgICAgICBjb25zdCBkZWNvZGVkVG9rZW4gPSB0aGlzLmRlY29kZSh0b2tlbik7XG4gICAgICAgIGxldCBxdWVyeUJ1aWxkZXIgPSBQbGF0dGVyRml0TW9kZWxcbiAgICAgICAgICAgIC5xdWVyeShcIm9jY2FzaW9uVHlwZVwiKVxuICAgICAgICAgICAgLmVxKG9jY2FzaW9uVHlwZSlcbiAgICAgICAgICAgIC51c2luZyhcIm9jY2FzaW9uVHlwZUluZGV4XCIpO1xuXG4gICAgICAgIGlmIChkZWNvZGVkVG9rZW4pIHtcbiAgICAgICAgICAgIHF1ZXJ5QnVpbGRlciA9IHF1ZXJ5QnVpbGRlci5zdGFydEF0KGRlY29kZWRUb2tlbik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodHlwZW9mIGxpbWl0ID09PSBcIm51bWJlclwiKSB7XG4gICAgICAgICAgICBxdWVyeUJ1aWxkZXIgPSBxdWVyeUJ1aWxkZXIubGltaXQobGltaXQpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcXVlcnlSZXN1bHQgPSBhd2FpdCBxdWVyeUJ1aWxkZXIuZXhlYygpO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBpdGVtczogcXVlcnlSZXN1bHQgYXMgUGxhdHRlckZpdFtdLFxuICAgICAgICAgICAgbmV4dFRva2VuOiBhd2FpdCB0aGlzLmVuY29kZShxdWVyeVJlc3VsdC5sYXN0S2V5IGFzIER5bmFtb0tleSB8IHVuZGVmaW5lZClcbiAgICAgICAgfTtcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogTGlzdHMgcmVjb3JkcyBieSBwbGF0dGVySWQgdXNpbmcgdG9rZW4tYmFzZWQgcGFnaW5hdGlvbi5cbiAgICAgKi9cbiAgICBsaXN0QnlQbGF0dGVySWQgPSBhc3luYyAocGxhdHRlcklkOiBzdHJpbmcsIGxpbWl0PzogbnVtYmVyLCB0b2tlbj86IHN0cmluZyk6IFByb21pc2U8TGlzdFJlc3VsdD4gPT4ge1xuICAgICAgICBjb25zdCBkZWNvZGVkVG9rZW4gPSB0aGlzLmRlY29kZSh0b2tlbik7XG4gICAgICAgIGxldCBxdWVyeUJ1aWxkZXIgPSBQbGF0dGVyRml0TW9kZWxcbiAgICAgICAgICAgIC5xdWVyeShcInBsYXR0ZXJJZFwiKVxuICAgICAgICAgICAgLmVxKHBsYXR0ZXJJZClcbiAgICAgICAgICAgIC51c2luZyhcInBsYXR0ZXJJZEluZGV4XCIpO1xuXG4gICAgICAgIGlmIChkZWNvZGVkVG9rZW4pIHtcbiAgICAgICAgICAgIHF1ZXJ5QnVpbGRlciA9IHF1ZXJ5QnVpbGRlci5zdGFydEF0KGRlY29kZWRUb2tlbik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodHlwZW9mIGxpbWl0ID09PSBcIm51bWJlclwiKSB7XG4gICAgICAgICAgICBxdWVyeUJ1aWxkZXIgPSBxdWVyeUJ1aWxkZXIubGltaXQobGltaXQpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcXVlcnlSZXN1bHQgPSBhd2FpdCBxdWVyeUJ1aWxkZXIuZXhlYygpO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBpdGVtczogcXVlcnlSZXN1bHQsXG4gICAgICAgICAgICBuZXh0VG9rZW46IGF3YWl0IHRoaXMuZW5jb2RlKHF1ZXJ5UmVzdWx0Lmxhc3RLZXkgYXMgRHluYW1vS2V5IHwgdW5kZWZpbmVkKVxuICAgICAgICB9O1xuICAgIH07XG59XG5cbmV4cG9ydCBjb25zdCBwbGF0dGVyRml0RGFvID0gbmV3IFBsYXR0ZXJGaXREYW8oKTtcbiJdfQ==
|
|
@@ -20,4 +20,9 @@ export interface PlatterFit extends BaseDynamooseModel {
|
|
|
20
20
|
export type CreatePlatterFitInput = Omit<PlatterFit, "platterFitId"> & {
|
|
21
21
|
platterFitId?: string;
|
|
22
22
|
};
|
|
23
|
-
export declare const PlatterFitModel: import("dynamoose/dist/General").ModelType<
|
|
23
|
+
export declare const PlatterFitModel: import("dynamoose/dist/General").ModelType<PlatterFit>;
|
|
24
|
+
/**
|
|
25
|
+
* Converts a plain platter-fit payload into a Dynamoose model instance.
|
|
26
|
+
* Use this before persistence when you want model-level normalization.
|
|
27
|
+
*/
|
|
28
|
+
export declare const convertToPlatterFitModel: (platterFit: CreatePlatterFitInput | PlatterFit) => PlatterFit;
|
|
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.PlatterFitModel = exports.PLATTER_FIT_TABLE_NAME = void 0;
|
|
6
|
+
exports.convertToPlatterFitModel = exports.PlatterFitModel = exports.PLATTER_FIT_TABLE_NAME = void 0;
|
|
7
7
|
const dynamoose_1 = __importDefault(require("dynamoose"));
|
|
8
8
|
const crypto_1 = require("crypto");
|
|
9
9
|
const base_dynamoose_model_1 = require("../../base-dynamoose-model");
|
|
@@ -72,8 +72,13 @@ const platterFitSchema = new dynamoose_1.default.Schema({
|
|
|
72
72
|
}, {
|
|
73
73
|
saveUnknown: false
|
|
74
74
|
});
|
|
75
|
-
exports.PlatterFitModel = dynamoose_1.default.model(exports.PLATTER_FIT_TABLE_NAME, platterFitSchema, {
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
75
|
+
exports.PlatterFitModel = dynamoose_1.default.model(exports.PLATTER_FIT_TABLE_NAME, platterFitSchema, { create: false, waitForActive: false });
|
|
76
|
+
/**
|
|
77
|
+
* Converts a plain platter-fit payload into a Dynamoose model instance.
|
|
78
|
+
* Use this before persistence when you want model-level normalization.
|
|
79
|
+
*/
|
|
80
|
+
const convertToPlatterFitModel = (platterFit) => {
|
|
81
|
+
return new exports.PlatterFitModel(platterFit);
|
|
82
|
+
};
|
|
83
|
+
exports.convertToPlatterFitModel = convertToPlatterFitModel;
|
|
84
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhdHRlci1maXQtbW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY3VzdG9tZXItdXNlci9wbGF0dGVyLWZpdC1tb2R1bGUvcGxhdHRlci1maXQtbW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsMERBQWtDO0FBQ2xDLG1DQUFvQztBQUNwQyxxRUFBNkY7QUFFaEYsUUFBQSxzQkFBc0IsR0FBRyxpQkFBaUIsQ0FBQztBQXdCeEQsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLG1CQUFTLENBQUMsTUFBTSxDQUN6QztJQUNJLFlBQVksRUFBRTtRQUNWLElBQUksRUFBRSxNQUFNO1FBQ1osT0FBTyxFQUFFLElBQUk7UUFDYixRQUFRLEVBQUUsSUFBSTtRQUNkLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFBLG1CQUFVLEdBQUU7S0FDOUI7SUFDRCxZQUFZLEVBQUU7UUFDVixJQUFJLEVBQUUsTUFBTTtRQUNaLFFBQVEsRUFBRSxJQUFJO0tBQ2pCO0lBQ0QsWUFBWSxFQUFFO1FBQ1YsSUFBSSxFQUFFLE1BQU07UUFDWixRQUFRLEVBQUUsSUFBSTtRQUNkLEtBQUssRUFBRTtZQUNILElBQUksRUFBRSxtQkFBbUI7WUFDekIsSUFBSSxFQUFFLFFBQVE7U0FDakI7S0FDSjtJQUNELGVBQWUsRUFBRSxNQUFNO0lBQ3ZCLE1BQU0sRUFBRTtRQUNKLElBQUksRUFBRSxNQUFNO1FBQ1osUUFBUSxFQUFFLElBQUk7S0FDakI7SUFDRCxNQUFNLEVBQUU7UUFDSixJQUFJLEVBQUUsTUFBTTtRQUNaLFFBQVEsRUFBRSxJQUFJO0tBQ2pCO0lBQ0QsVUFBVSxFQUFFO1FBQ1IsSUFBSSxFQUFFLE1BQU07UUFDWixRQUFRLEVBQUUsSUFBSTtLQUNqQjtJQUNELElBQUksRUFBRTtRQUNGLElBQUksRUFBRSxNQUFNO1FBQ1osUUFBUSxFQUFFLElBQUk7S0FDakI7SUFDRCxPQUFPLEVBQUUsTUFBTTtJQUNmLFNBQVMsRUFBRTtRQUNQLElBQUksRUFBRSxNQUFNO1FBQ1osUUFBUSxFQUFFLElBQUk7UUFDZCxLQUFLLEVBQUU7WUFDSCxJQUFJLEVBQUUsZ0JBQWdCO1lBQ3RCLElBQUksRUFBRSxRQUFRO1NBQ2pCO0tBQ0o7SUFDRCxXQUFXLEVBQUU7UUFDVCxJQUFJLEVBQUUsTUFBTTtRQUNaLFFBQVEsRUFBRSxJQUFJO0tBQ2pCO0lBQ0Qsb0JBQW9CLEVBQUUsTUFBTTtJQUM1QixtQkFBbUIsRUFBRSxNQUFNO0lBQzNCLGlCQUFpQixFQUFFLE1BQU07SUFDekIsTUFBTSxFQUFFO1FBQ0osSUFBSSxFQUFFLE1BQU07UUFDWixRQUFRLEVBQUUsSUFBSTtRQUNkLEtBQUssRUFBRTtZQUNILElBQUksRUFBRSxhQUFhO1lBQ25CLElBQUksRUFBRSxRQUFRO1NBQ2pCO0tBQ0o7SUFDRCxHQUFHLGtEQUEyQjtDQUNqQyxFQUNEO0lBQ0ksV0FBVyxFQUFFLEtBQUs7Q0FDckIsQ0FDSixDQUFDO0FBRVcsUUFBQSxlQUFlLEdBQUcsbUJBQVMsQ0FBQyxLQUFLLENBQzFDLDhCQUFzQixFQUN0QixnQkFBZ0IsRUFDaEIsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQUUsQ0FDMUMsQ0FBQztBQUVGOzs7R0FHRztBQUNJLE1BQU0sd0JBQXdCLEdBQUcsQ0FBQyxVQUE4QyxFQUFFLEVBQUU7SUFDdkYsT0FBTyxJQUFJLHVCQUFlLENBQUMsVUFBVSxDQUFDLENBQUM7QUFDM0MsQ0FBQyxDQUFDO0FBRlcsUUFBQSx3QkFBd0IsNEJBRW5DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGR5bmFtb29zZSBmcm9tIFwiZHluYW1vb3NlXCI7XG5pbXBvcnQgeyByYW5kb21VVUlEIH0gZnJvbSBcImNyeXB0b1wiO1xuaW1wb3J0IHsgQkFTRV9EWU5BTU9PU0VfQVVESVRfU0NIRU1BLCBCYXNlRHluYW1vb3NlTW9kZWwgfSBmcm9tIFwiLi4vLi4vYmFzZS1keW5hbW9vc2UtbW9kZWxcIjtcblxuZXhwb3J0IGNvbnN0IFBMQVRURVJfRklUX1RBQkxFX05BTUUgPSBcIlBsYXR0ZXJGaXRUYWJsZVwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFBsYXR0ZXJGaXQgZXh0ZW5kcyBCYXNlRHluYW1vb3NlTW9kZWwge1xuICAgIHBsYXR0ZXJGaXRJZDogc3RyaW5nO1xuICAgIG9jY2FzaW9uTmFtZTogc3RyaW5nO1xuICAgIG9jY2FzaW9uVHlwZTogc3RyaW5nO1xuICAgIG9jY2FzaW9uU3ViVHlwZT86IHN0cmluZztcbiAgICBtaW5QYXg6IG51bWJlcjtcbiAgICBtYXhQYXg6IG51bWJlcjtcbiAgICBidWRnZXRUaWVyOiBzdHJpbmc7XG4gICAgcmFuazogbnVtYmVyO1xuICAgIHJhbmtUYWc/OiBzdHJpbmc7XG4gICAgcGxhdHRlcklkOiBzdHJpbmc7XG4gICAgcGxhdHRlck5hbWU6IHN0cmluZztcbiAgICBidWNrZXRQYXhEZXNjcmlwdGlvbj86IHN0cmluZztcbiAgICBvY2Nhc2lvbkRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICAgIG90aGVyc0Rlc2NyaXB0aW9uPzogc3RyaW5nO1xuICAgIHN0YXR1czogc3RyaW5nO1xufVxuXG5leHBvcnQgdHlwZSBDcmVhdGVQbGF0dGVyRml0SW5wdXQgPSBPbWl0PFBsYXR0ZXJGaXQsIFwicGxhdHRlckZpdElkXCI+ICYge1xuICAgIHBsYXR0ZXJGaXRJZD86IHN0cmluZztcbn07XG5cbmNvbnN0IHBsYXR0ZXJGaXRTY2hlbWEgPSBuZXcgZHluYW1vb3NlLlNjaGVtYShcbiAgICB7XG4gICAgICAgIHBsYXR0ZXJGaXRJZDoge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgaGFzaEtleTogdHJ1ZSxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICAgICAgZGVmYXVsdDogKCkgPT4gcmFuZG9tVVVJRCgpXG4gICAgICAgIH0sXG4gICAgICAgIG9jY2FzaW9uTmFtZToge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAgb2NjYXNpb25UeXBlOiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgICAgIGluZGV4OiB7XG4gICAgICAgICAgICAgICAgbmFtZTogXCJvY2Nhc2lvblR5cGVJbmRleFwiLFxuICAgICAgICAgICAgICAgIHR5cGU6IFwiZ2xvYmFsXCJcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgb2NjYXNpb25TdWJUeXBlOiBTdHJpbmcsXG4gICAgICAgIG1pblBheDoge1xuICAgICAgICAgICAgdHlwZTogTnVtYmVyLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAgbWF4UGF4OiB7XG4gICAgICAgICAgICB0eXBlOiBOdW1iZXIsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICBidWRnZXRUaWVyOiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICByYW5rOiB7XG4gICAgICAgICAgICB0eXBlOiBOdW1iZXIsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICByYW5rVGFnOiBTdHJpbmcsXG4gICAgICAgIHBsYXR0ZXJJZDoge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgICAgICBpbmRleDoge1xuICAgICAgICAgICAgICAgIG5hbWU6IFwicGxhdHRlcklkSW5kZXhcIixcbiAgICAgICAgICAgICAgICB0eXBlOiBcImdsb2JhbFwiXG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHBsYXR0ZXJOYW1lOiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICBidWNrZXRQYXhEZXNjcmlwdGlvbjogU3RyaW5nLFxuICAgICAgICBvY2Nhc2lvbkRlc2NyaXB0aW9uOiBTdHJpbmcsXG4gICAgICAgIG90aGVyc0Rlc2NyaXB0aW9uOiBTdHJpbmcsXG4gICAgICAgIHN0YXR1czoge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgICAgICBpbmRleDoge1xuICAgICAgICAgICAgICAgIG5hbWU6IFwic3RhdHVzSW5kZXhcIixcbiAgICAgICAgICAgICAgICB0eXBlOiBcImdsb2JhbFwiXG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIC4uLkJBU0VfRFlOQU1PT1NFX0FVRElUX1NDSEVNQVxuICAgIH0sXG4gICAge1xuICAgICAgICBzYXZlVW5rbm93bjogZmFsc2VcbiAgICB9XG4pO1xuXG5leHBvcnQgY29uc3QgUGxhdHRlckZpdE1vZGVsID0gZHluYW1vb3NlLm1vZGVsPFBsYXR0ZXJGaXQ+KFxuICAgIFBMQVRURVJfRklUX1RBQkxFX05BTUUsXG4gICAgcGxhdHRlckZpdFNjaGVtYSxcbiAgICB7IGNyZWF0ZTogZmFsc2UsIHdhaXRGb3JBY3RpdmU6IGZhbHNlIH1cbik7XG5cbi8qKlxuICogQ29udmVydHMgYSBwbGFpbiBwbGF0dGVyLWZpdCBwYXlsb2FkIGludG8gYSBEeW5hbW9vc2UgbW9kZWwgaW5zdGFuY2UuXG4gKiBVc2UgdGhpcyBiZWZvcmUgcGVyc2lzdGVuY2Ugd2hlbiB5b3Ugd2FudCBtb2RlbC1sZXZlbCBub3JtYWxpemF0aW9uLlxuICovXG5leHBvcnQgY29uc3QgY29udmVydFRvUGxhdHRlckZpdE1vZGVsID0gKHBsYXR0ZXJGaXQ6IENyZWF0ZVBsYXR0ZXJGaXRJbnB1dCB8IFBsYXR0ZXJGaXQpID0+IHtcbiAgICByZXR1cm4gbmV3IFBsYXR0ZXJGaXRNb2RlbChwbGF0dGVyRml0KTtcbn07XG4iXX0=
|