@fgv/ts-json 1.9.5 → 1.9.7
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/compositeJsonMap.d.ts +47 -0
- package/compositeJsonMap.js +97 -0
- package/contextHelpers.js +3 -3
- package/index.d.ts +2 -1
- package/index.js +3 -2
- package/jsonEditor/jsonEditorState.js +1 -1
- package/jsonReferenceMap.d.ts +1 -45
- package/jsonReferenceMap.js +3 -73
- package/package.json +15 -15
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { DetailedResult, Result } from '@fgv/ts-utils';
|
|
2
|
+
import { JsonContext, JsonReferenceMap, JsonReferenceMapFailureReason } from './jsonContext';
|
|
3
|
+
import { JsonObject, JsonValue } from './common';
|
|
4
|
+
/**
|
|
5
|
+
* A CompositeJsonMap presents a composed view of one or more other
|
|
6
|
+
* JsonReferenceMaps.
|
|
7
|
+
*/
|
|
8
|
+
export declare class CompositeJsonMap implements JsonReferenceMap {
|
|
9
|
+
protected _maps: JsonReferenceMap[];
|
|
10
|
+
protected constructor(maps: JsonReferenceMap[]);
|
|
11
|
+
/**
|
|
12
|
+
* Creates a new @see CompositeJsonMap from the supplied maps
|
|
13
|
+
* @param maps one or more object maps to be composed
|
|
14
|
+
*/
|
|
15
|
+
static create(maps: JsonReferenceMap[]): Result<CompositeJsonMap>;
|
|
16
|
+
/**
|
|
17
|
+
* Determine if a key might be valid for this map but does not determine
|
|
18
|
+
* if key actually exists. Allows key range to be constrained.
|
|
19
|
+
* @param key key to be tested
|
|
20
|
+
* @returns true if the key is in the valid range, false otherwise.
|
|
21
|
+
*/
|
|
22
|
+
keyIsInRange(key: string): boolean;
|
|
23
|
+
/**
|
|
24
|
+
* Determines if an object with the specified key actually exists in the map.
|
|
25
|
+
* @param key key to be tested
|
|
26
|
+
* @returns true if an object with the specified key exists, false otherwise.
|
|
27
|
+
*/
|
|
28
|
+
has(key: string): boolean;
|
|
29
|
+
/**
|
|
30
|
+
* Gets a JSON object specified by key.
|
|
31
|
+
* @param key key of the object to be retrieved
|
|
32
|
+
* @param context optional @see JsonContext used to format the object
|
|
33
|
+
* @returns Success with the formatted object if successful. Failure with detail 'unknown'
|
|
34
|
+
* if no such object exists, or failure with detail 'error' if the object was found but
|
|
35
|
+
* could not be formatted.
|
|
36
|
+
*/
|
|
37
|
+
getJsonObject(key: string, context?: JsonContext): DetailedResult<JsonObject, JsonReferenceMapFailureReason>;
|
|
38
|
+
/**
|
|
39
|
+
* Gets a JSON value specified by key.
|
|
40
|
+
* @param key key of the object to be retrieved
|
|
41
|
+
* @param context Optional @see JsonContext used to format the value
|
|
42
|
+
* @returns Success with the formatted object if successful. Failure with detail 'unknown'
|
|
43
|
+
* if no such object exists, or failure with detail 'error' if the object was found but
|
|
44
|
+
* could not be formatted.
|
|
45
|
+
*/
|
|
46
|
+
getJsonValue(key: string, context?: JsonContext): DetailedResult<JsonValue, JsonReferenceMapFailureReason>;
|
|
47
|
+
}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/*
|
|
3
|
+
* Copyright (c) 2020 Erik Fortune
|
|
4
|
+
*
|
|
5
|
+
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
* of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
* in the Software without restriction, including without limitation the rights
|
|
8
|
+
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
* copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
* furnished to do so, subject to the following conditions:
|
|
11
|
+
*
|
|
12
|
+
* The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
* copies or substantial portions of the Software.
|
|
14
|
+
*
|
|
15
|
+
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
* SOFTWARE.
|
|
22
|
+
*/
|
|
23
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
24
|
+
exports.CompositeJsonMap = void 0;
|
|
25
|
+
const ts_utils_1 = require("@fgv/ts-utils");
|
|
26
|
+
const common_1 = require("./common");
|
|
27
|
+
/**
|
|
28
|
+
* A CompositeJsonMap presents a composed view of one or more other
|
|
29
|
+
* JsonReferenceMaps.
|
|
30
|
+
*/
|
|
31
|
+
class CompositeJsonMap {
|
|
32
|
+
constructor(maps) {
|
|
33
|
+
this._maps = maps;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Creates a new @see CompositeJsonMap from the supplied maps
|
|
37
|
+
* @param maps one or more object maps to be composed
|
|
38
|
+
*/
|
|
39
|
+
static create(maps) {
|
|
40
|
+
return (0, ts_utils_1.captureResult)(() => new CompositeJsonMap(maps));
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Determine if a key might be valid for this map but does not determine
|
|
44
|
+
* if key actually exists. Allows key range to be constrained.
|
|
45
|
+
* @param key key to be tested
|
|
46
|
+
* @returns true if the key is in the valid range, false otherwise.
|
|
47
|
+
*/
|
|
48
|
+
keyIsInRange(key) {
|
|
49
|
+
return this._maps.find((map) => map.keyIsInRange(key)) !== undefined;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Determines if an object with the specified key actually exists in the map.
|
|
53
|
+
* @param key key to be tested
|
|
54
|
+
* @returns true if an object with the specified key exists, false otherwise.
|
|
55
|
+
*/
|
|
56
|
+
has(key) {
|
|
57
|
+
return this._maps.find((map) => map.has(key)) !== undefined;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Gets a JSON object specified by key.
|
|
61
|
+
* @param key key of the object to be retrieved
|
|
62
|
+
* @param context optional @see JsonContext used to format the object
|
|
63
|
+
* @returns Success with the formatted object if successful. Failure with detail 'unknown'
|
|
64
|
+
* if no such object exists, or failure with detail 'error' if the object was found but
|
|
65
|
+
* could not be formatted.
|
|
66
|
+
*/
|
|
67
|
+
getJsonObject(key, context) {
|
|
68
|
+
return this.getJsonValue(key, context).onSuccess((jv) => {
|
|
69
|
+
if (!(0, common_1.isJsonObject)(jv)) {
|
|
70
|
+
return (0, ts_utils_1.failWithDetail)(`${key}: not an object`, 'error');
|
|
71
|
+
}
|
|
72
|
+
return (0, ts_utils_1.succeedWithDetail)(jv);
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Gets a JSON value specified by key.
|
|
77
|
+
* @param key key of the object to be retrieved
|
|
78
|
+
* @param context Optional @see JsonContext used to format the value
|
|
79
|
+
* @returns Success with the formatted object if successful. Failure with detail 'unknown'
|
|
80
|
+
* if no such object exists, or failure with detail 'error' if the object was found but
|
|
81
|
+
* could not be formatted.
|
|
82
|
+
*/
|
|
83
|
+
// eslint-disable-next-line no-use-before-define
|
|
84
|
+
getJsonValue(key, context) {
|
|
85
|
+
for (const map of this._maps) {
|
|
86
|
+
if (map.keyIsInRange(key)) {
|
|
87
|
+
const result = map.getJsonValue(key, context);
|
|
88
|
+
if (result.isSuccess() || (result.detail === 'error')) {
|
|
89
|
+
return result;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
return (0, ts_utils_1.failWithDetail)(`${key}: value not found`, 'unknown');
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
exports.CompositeJsonMap = CompositeJsonMap;
|
|
97
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9zaXRlSnNvbk1hcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9jb21wb3NpdGVKc29uTWFwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FvQkc7OztBQUVILDRDQUF5RztBQUV6RyxxQ0FBK0Q7QUFFL0Q7OztHQUdHO0FBQ0gsTUFBYSxnQkFBZ0I7SUFHekIsWUFBc0IsSUFBd0I7UUFDMUMsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7SUFDdEIsQ0FBQztJQUVEOzs7T0FHRztJQUNJLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBd0I7UUFDekMsT0FBTyxJQUFBLHdCQUFhLEVBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLFlBQVksQ0FBQyxHQUFXO1FBQzNCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxTQUFTLENBQUM7SUFDekUsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxHQUFHLENBQUMsR0FBVztRQUNsQixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssU0FBUyxDQUFDO0lBQ2hFLENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0ksYUFBYSxDQUFDLEdBQVcsRUFBRSxPQUFxQjtRQUNuRCxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFO1lBQ3BELElBQUksQ0FBQyxJQUFBLHFCQUFZLEVBQUMsRUFBRSxDQUFDLEVBQUU7Z0JBQ25CLE9BQU8sSUFBQSx5QkFBYyxFQUFDLEdBQUcsR0FBRyxpQkFBaUIsRUFBRSxPQUFPLENBQUMsQ0FBQzthQUMzRDtZQUNELE9BQU8sSUFBQSw0QkFBaUIsRUFBQyxFQUFFLENBQUMsQ0FBQztRQUNqQyxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0gsZ0RBQWdEO0lBQ3pDLFlBQVksQ0FBQyxHQUFXLEVBQUUsT0FBcUI7UUFDbEQsS0FBSyxNQUFNLEdBQUcsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQzFCLElBQUksR0FBRyxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsRUFBRTtnQkFDdkIsTUFBTSxNQUFNLEdBQUcsR0FBRyxDQUFDLFlBQVksQ0FBQyxHQUFHLEVBQUUsT0FBTyxDQUFDLENBQUM7Z0JBQzlDLElBQUksTUFBTSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sS0FBSyxPQUFPLENBQUMsRUFBRTtvQkFDbkQsT0FBTyxNQUFNLENBQUM7aUJBQ2pCO2FBQ0o7U0FDSjtRQUNELE9BQU8sSUFBQSx5QkFBYyxFQUFDLEdBQUcsR0FBRyxtQkFBbUIsRUFBRSxTQUFTLENBQUMsQ0FBQztJQUNoRSxDQUFDO0NBQ0o7QUF2RUQsNENBdUVDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAyMCBFcmlrIEZvcnR1bmVcbiAqXG4gKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4gKiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4gKiBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4gKiB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4gKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbiAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4gKlxuICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsXG4gKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuICpcbiAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1JcbiAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4gKiBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4gKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuICogT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEVcbiAqIFNPRlRXQVJFLlxuICovXG5cbmltcG9ydCB7IERldGFpbGVkUmVzdWx0LCBSZXN1bHQsIGNhcHR1cmVSZXN1bHQsIGZhaWxXaXRoRGV0YWlsLCBzdWNjZWVkV2l0aERldGFpbCB9IGZyb20gJ0BmZ3YvdHMtdXRpbHMnO1xuaW1wb3J0IHsgSnNvbkNvbnRleHQsIEpzb25SZWZlcmVuY2VNYXAsIEpzb25SZWZlcmVuY2VNYXBGYWlsdXJlUmVhc29uIH0gZnJvbSAnLi9qc29uQ29udGV4dCc7XG5pbXBvcnQgeyBKc29uT2JqZWN0LCBKc29uVmFsdWUsIGlzSnNvbk9iamVjdCB9IGZyb20gJy4vY29tbW9uJztcblxuLyoqXG4gKiBBIENvbXBvc2l0ZUpzb25NYXAgcHJlc2VudHMgYSBjb21wb3NlZCB2aWV3IG9mIG9uZSBvciBtb3JlIG90aGVyXG4gKiBKc29uUmVmZXJlbmNlTWFwcy5cbiAqL1xuZXhwb3J0IGNsYXNzIENvbXBvc2l0ZUpzb25NYXAgaW1wbGVtZW50cyBKc29uUmVmZXJlbmNlTWFwIHtcbiAgICBwcm90ZWN0ZWQgX21hcHM6IEpzb25SZWZlcmVuY2VNYXBbXTtcblxuICAgIHByb3RlY3RlZCBjb25zdHJ1Y3RvcihtYXBzOiBKc29uUmVmZXJlbmNlTWFwW10pIHtcbiAgICAgICAgdGhpcy5fbWFwcyA9IG1hcHM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIG5ldyBAc2VlIENvbXBvc2l0ZUpzb25NYXAgZnJvbSB0aGUgc3VwcGxpZWQgbWFwc1xuICAgICAqIEBwYXJhbSBtYXBzIG9uZSBvciBtb3JlIG9iamVjdCBtYXBzIHRvIGJlIGNvbXBvc2VkXG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyBjcmVhdGUobWFwczogSnNvblJlZmVyZW5jZU1hcFtdKTogUmVzdWx0PENvbXBvc2l0ZUpzb25NYXA+IHtcbiAgICAgICAgcmV0dXJuIGNhcHR1cmVSZXN1bHQoKCkgPT4gbmV3IENvbXBvc2l0ZUpzb25NYXAobWFwcykpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERldGVybWluZSBpZiBhIGtleSBtaWdodCBiZSB2YWxpZCBmb3IgdGhpcyBtYXAgYnV0IGRvZXMgbm90IGRldGVybWluZVxuICAgICAqIGlmIGtleSBhY3R1YWxseSBleGlzdHMuIEFsbG93cyBrZXkgcmFuZ2UgdG8gYmUgY29uc3RyYWluZWQuXG4gICAgICogQHBhcmFtIGtleSBrZXkgdG8gYmUgdGVzdGVkXG4gICAgICogQHJldHVybnMgdHJ1ZSBpZiB0aGUga2V5IGlzIGluIHRoZSB2YWxpZCByYW5nZSwgZmFsc2Ugb3RoZXJ3aXNlLlxuICAgICAqL1xuICAgIHB1YmxpYyBrZXlJc0luUmFuZ2Uoa2V5OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX21hcHMuZmluZCgobWFwKSA9PiBtYXAua2V5SXNJblJhbmdlKGtleSkpICE9PSB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGV0ZXJtaW5lcyBpZiBhbiBvYmplY3Qgd2l0aCB0aGUgc3BlY2lmaWVkIGtleSBhY3R1YWxseSBleGlzdHMgaW4gdGhlIG1hcC5cbiAgICAgKiBAcGFyYW0ga2V5IGtleSB0byBiZSB0ZXN0ZWRcbiAgICAgKiBAcmV0dXJucyB0cnVlIGlmIGFuIG9iamVjdCB3aXRoIHRoZSBzcGVjaWZpZWQga2V5IGV4aXN0cywgZmFsc2Ugb3RoZXJ3aXNlLlxuICAgICAqL1xuICAgIHB1YmxpYyBoYXMoa2V5OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX21hcHMuZmluZCgobWFwKSA9PiBtYXAuaGFzKGtleSkpICE9PSB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyBhIEpTT04gb2JqZWN0IHNwZWNpZmllZCBieSBrZXkuXG4gICAgICogQHBhcmFtIGtleSBrZXkgb2YgdGhlIG9iamVjdCB0byBiZSByZXRyaWV2ZWRcbiAgICAgKiBAcGFyYW0gY29udGV4dCBvcHRpb25hbCBAc2VlIEpzb25Db250ZXh0IHVzZWQgdG8gZm9ybWF0IHRoZSBvYmplY3RcbiAgICAgKiBAcmV0dXJucyBTdWNjZXNzIHdpdGggdGhlIGZvcm1hdHRlZCBvYmplY3QgaWYgc3VjY2Vzc2Z1bC4gRmFpbHVyZSB3aXRoIGRldGFpbCAndW5rbm93bidcbiAgICAgKiBpZiBubyBzdWNoIG9iamVjdCBleGlzdHMsIG9yIGZhaWx1cmUgd2l0aCBkZXRhaWwgJ2Vycm9yJyBpZiB0aGUgb2JqZWN0IHdhcyBmb3VuZCBidXRcbiAgICAgKiBjb3VsZCBub3QgYmUgZm9ybWF0dGVkLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRKc29uT2JqZWN0KGtleTogc3RyaW5nLCBjb250ZXh0PzogSnNvbkNvbnRleHQpOiBEZXRhaWxlZFJlc3VsdDxKc29uT2JqZWN0LCBKc29uUmVmZXJlbmNlTWFwRmFpbHVyZVJlYXNvbj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRKc29uVmFsdWUoa2V5LCBjb250ZXh0KS5vblN1Y2Nlc3MoKGp2KSA9PiB7XG4gICAgICAgICAgICBpZiAoIWlzSnNvbk9iamVjdChqdikpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFpbFdpdGhEZXRhaWwoYCR7a2V5fTogbm90IGFuIG9iamVjdGAsICdlcnJvcicpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHN1Y2NlZWRXaXRoRGV0YWlsKGp2KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyBhIEpTT04gdmFsdWUgc3BlY2lmaWVkIGJ5IGtleS5cbiAgICAgKiBAcGFyYW0ga2V5IGtleSBvZiB0aGUgb2JqZWN0IHRvIGJlIHJldHJpZXZlZFxuICAgICAqIEBwYXJhbSBjb250ZXh0IE9wdGlvbmFsIEBzZWUgSnNvbkNvbnRleHQgdXNlZCB0byBmb3JtYXQgdGhlIHZhbHVlXG4gICAgICogQHJldHVybnMgU3VjY2VzcyB3aXRoIHRoZSBmb3JtYXR0ZWQgb2JqZWN0IGlmIHN1Y2Nlc3NmdWwuIEZhaWx1cmUgd2l0aCBkZXRhaWwgJ3Vua25vd24nXG4gICAgICogaWYgbm8gc3VjaCBvYmplY3QgZXhpc3RzLCBvciBmYWlsdXJlIHdpdGggZGV0YWlsICdlcnJvcicgaWYgdGhlIG9iamVjdCB3YXMgZm91bmQgYnV0XG4gICAgICogY291bGQgbm90IGJlIGZvcm1hdHRlZC5cbiAgICAgKi9cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdXNlLWJlZm9yZS1kZWZpbmVcbiAgICBwdWJsaWMgZ2V0SnNvblZhbHVlKGtleTogc3RyaW5nLCBjb250ZXh0PzogSnNvbkNvbnRleHQpOiBEZXRhaWxlZFJlc3VsdDxKc29uVmFsdWUsIEpzb25SZWZlcmVuY2VNYXBGYWlsdXJlUmVhc29uPiB7XG4gICAgICAgIGZvciAoY29uc3QgbWFwIG9mIHRoaXMuX21hcHMpIHtcbiAgICAgICAgICAgIGlmIChtYXAua2V5SXNJblJhbmdlKGtleSkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCByZXN1bHQgPSBtYXAuZ2V0SnNvblZhbHVlKGtleSwgY29udGV4dCk7XG4gICAgICAgICAgICAgICAgaWYgKHJlc3VsdC5pc1N1Y2Nlc3MoKSB8fCAocmVzdWx0LmRldGFpbCA9PT0gJ2Vycm9yJykpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhaWxXaXRoRGV0YWlsKGAke2tleX06IHZhbHVlIG5vdCBmb3VuZGAsICd1bmtub3duJyk7XG4gICAgfVxufVxuIl19
|
package/contextHelpers.js
CHANGED
|
@@ -24,7 +24,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
24
24
|
exports.JsonContextHelper = void 0;
|
|
25
25
|
const jsonContext_1 = require("./jsonContext");
|
|
26
26
|
const ts_utils_1 = require("@fgv/ts-utils");
|
|
27
|
-
const
|
|
27
|
+
const compositeJsonMap_1 = require("./compositeJsonMap");
|
|
28
28
|
class JsonContextHelper {
|
|
29
29
|
constructor(context) {
|
|
30
30
|
this._context = context;
|
|
@@ -44,7 +44,7 @@ class JsonContextHelper {
|
|
|
44
44
|
if (refs && (refs.length > 0)) {
|
|
45
45
|
const full = (baseContext === null || baseContext === void 0 ? void 0 : baseContext.refs) ? [...refs, baseContext.refs] : refs;
|
|
46
46
|
if (full.length > 1) {
|
|
47
|
-
return
|
|
47
|
+
return compositeJsonMap_1.CompositeJsonMap.create(full);
|
|
48
48
|
}
|
|
49
49
|
return (0, ts_utils_1.succeed)(full[0]);
|
|
50
50
|
}
|
|
@@ -98,4 +98,4 @@ class JsonContextHelper {
|
|
|
98
98
|
}
|
|
99
99
|
}
|
|
100
100
|
exports.JsonContextHelper = JsonContextHelper;
|
|
101
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dEhlbHBlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvY29udGV4dEhlbHBlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW9CRzs7O0FBRUgsK0NBQThHO0FBQzlHLDRDQUErRDtBQUMvRCx5REFBc0Q7QUFFdEQsTUFBYSxpQkFBaUI7SUFHMUIsWUFBbUIsT0FBcUI7UUFDcEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUM7SUFDNUIsQ0FBQztJQUVNLE1BQU0sQ0FBQyxNQUFNLENBQUMsT0FBcUI7UUFDdEMsT0FBTyxJQUFBLHdCQUFhLEVBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQy9ELENBQUM7SUFFTSxNQUFNLENBQUMsaUJBQWlCLENBQUMsV0FBa0MsRUFBRSxJQUFzQjs7UUFDdEYsSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxFQUFFO1lBQzNCLE1BQU0sTUFBTSxHQUFHLE1BQUEsV0FBVyxhQUFYLFdBQVcsdUJBQVgsV0FBVyxDQUFFLFVBQVUsbUNBQUksK0JBQWlCLENBQUM7WUFDNUQsT0FBTyxNQUFNLENBQUMsTUFBQSxXQUFXLGFBQVgsV0FBVyx1QkFBWCxXQUFXLENBQUUsSUFBSSxtQ0FBSSxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUM7U0FDaEQ7UUFDRCxPQUFPLElBQUEsa0JBQU8sRUFBQyxXQUFXLGFBQVgsV0FBVyx1QkFBWCxXQUFXLENBQUUsSUFBSSxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVNLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxXQUFrQyxFQUFFLElBQXlCO1FBQ3pGLElBQUksSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsRUFBRTtZQUMzQixNQUFNLElBQUksR0FBRyxDQUFBLFdBQVcsYUFB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QyxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3BFLENBQUM7SUFFTSxhQUFhLENBQUMsR0FBMkQ7UUFDNUUsT0FBTyxpQkFBaUIsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUMvRCxDQUFDO0lBRU0sWUFBWSxDQUFDLEtBQW1CO1FBQ25DLE9BQU8saUJBQWlCLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDaEUsQ0FBQztDQUNKO0FBaEZELDhDQWdGQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMjAgRXJpayBGb3J0dW5lXG4gKlxuICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuICogb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuICogaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuICogdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4gKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuICpcbiAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbFxuICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbiAqXG4gKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4gKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbiAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuICogQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbiAqIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFXG4gKiBTT0ZUV0FSRS5cbiAqL1xuXG5pbXBvcnQgeyBKc29uQ29udGV4dCwgSnNvblJlZmVyZW5jZU1hcCwgVGVtcGxhdGVWYXJzLCBWYXJpYWJsZVZhbHVlLCBkZWZhdWx0RXh0ZW5kVmFycyB9IGZyb20gJy4vanNvbkNvbnRleHQnO1xuaW1wb3J0IHsgUmVzdWx0LCBjYXB0dXJlUmVzdWx0LCBzdWNjZWVkIH0gZnJvbSAnQGZndi90cy11dGlscyc7XG5pbXBvcnQgeyBDb21wb3NpdGVKc29uTWFwIH0gZnJvbSAnLi9qc29uUmVmZXJlbmNlTWFwJztcblxuZXhwb3J0IGNsYXNzIEpzb25Db250ZXh0SGVscGVyIHtcbiAgICBwcm90ZWN0ZWQgX2NvbnRleHQ/OiBKc29uQ29udGV4dDtcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3Rvcihjb250ZXh0PzogSnNvbkNvbnRleHQpIHtcbiAgICAgICAgdGhpcy5fY29udGV4dCA9IGNvbnRleHQ7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBjcmVhdGUoY29udGV4dD86IEpzb25Db250ZXh0KTogUmVzdWx0PEpzb25Db250ZXh0SGVscGVyPiB7XG4gICAgICAgIHJldHVybiBjYXB0dXJlUmVzdWx0KCgpID0+IG5ldyBKc29uQ29udGV4dEhlbHBlcihjb250ZXh0KSk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBleHRlbmRDb250ZXh0VmFycyhiYXNlQ29udGV4dDogSnNvbkNvbnRleHR8dW5kZWZpbmVkLCB2YXJzPzogVmFyaWFibGVWYWx1ZVtdKTogUmVzdWx0PFRlbXBsYXRlVmFyc3x1bmRlZmluZWQ+IHtcbiAgICAgICAgaWYgKHZhcnMgJiYgKHZhcnMubGVuZ3RoID4gMCkpIHtcbiAgICAgICAgICAgIGNvbnN0IGV4dGVuZCA9IGJhc2VDb250ZXh0Py5leHRlbmRWYXJzID8/IGRlZmF1bHRFeHRlbmRWYXJzO1xuICAgICAgICAgICAgcmV0dXJuIGV4dGVuZChiYXNlQ29udGV4dD8udmFycyA/PyB7fSwgdmFycyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHN1Y2NlZWQoYmFzZUNvbnRleHQ/LnZhcnMpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZXh0ZW5kQ29udGV4dFJlZnMoYmFzZUNvbnRleHQ6IEpzb25Db250ZXh0fHVuZGVmaW5lZCwgcmVmcz86IEpzb25SZWZlcmVuY2VNYXBbXSk6IFJlc3VsdDxKc29uUmVmZXJlbmNlTWFwfHVuZGVmaW5lZD4ge1xuICAgICAgICBpZiAocmVmcyAmJiAocmVmcy5sZW5ndGggPiAwKSkge1xuICAgICAgICAgICAgY29uc3QgZnVsbCA9IGJhc2VDb250ZXh0Py5yZWZzID8gWy4uLnJlZnMsIGJhc2VDb250ZXh0LnJlZnNdIDogcmVmcztcbiAgICAgICAgICAgIGlmIChmdWxsLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gQ29tcG9zaXRlSnNvbk1hcC5jcmVhdGUoZnVsbCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gc3VjY2VlZChmdWxsWzBdKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc3VjY2VlZChiYXNlQ29udGV4dD8ucmVmcyk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBleHRlbmRDb250ZXh0KGJhc2VDb250ZXh0PzogSnNvbkNvbnRleHR8dW5kZWZpbmVkLCBhZGQ/OiB7IHZhcnM/OiBWYXJpYWJsZVZhbHVlW10sIHJlZnM/OiBKc29uUmVmZXJlbmNlTWFwW10gfSk6IFJlc3VsdDxKc29uQ29udGV4dHx1bmRlZmluZWQ+IHtcbiAgICAgICAgcmV0dXJuIEpzb25Db250ZXh0SGVscGVyLmV4dGVuZENvbnRleHRWYXJzKGJhc2VDb250ZXh0LCBhZGQ/LnZhcnMgfHwgW10pLm9uU3VjY2VzcygodmFycykgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIEpzb25Db250ZXh0SGVscGVyLmV4dGVuZENvbnRleHRSZWZzKGJhc2VDb250ZXh0LCBhZGQ/LnJlZnMgfHwgW10pLm9uU3VjY2VzcygocmVmcykgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghdmFycyAmJiAhcmVmcyAmJiAhYmFzZUNvbnRleHQ/LmV4dGVuZFZhcnMpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN1Y2NlZWQodW5kZWZpbmVkKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgcnRybjogSnNvbkNvbnRleHQgPSB7IHZhcnMsIHJlZnMgfTtcbiAgICAgICAgICAgICAgICBpZiAoYmFzZUNvbnRleHQ/LmV4dGVuZFZhcnMpIHtcbiAgICAgICAgICAgICAgICAgICAgcnRybi5leHRlbmRWYXJzID0gYmFzZUNvbnRleHQuZXh0ZW5kVmFycztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHN1Y2NlZWQocnRybik7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBtZXJnZUNvbnRleHQoYmFzZUNvbnRleHQ6IEpzb25Db250ZXh0fHVuZGVmaW5lZCwgYWRkOiBKc29uQ29udGV4dHx1bmRlZmluZWQpOiBSZXN1bHQ8SnNvbkNvbnRleHR8dW5kZWZpbmVkPiB7XG4gICAgICAgIGlmIChiYXNlQ29udGV4dCkge1xuICAgICAgICAgICAgaWYgKGFkZCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJ0cm46IEpzb25Db250ZXh0ID0ge1xuICAgICAgICAgICAgICAgICAgICB2YXJzOiBhZGQudmFycyA/PyBiYXNlQ29udGV4dC52YXJzLFxuICAgICAgICAgICAgICAgICAgICByZWZzOiBhZGQucmVmcyA/PyBiYXNlQ29udGV4dC5yZWZzLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgaWYgKGFkZC5oYXNPd25Qcm9wZXJ0eSgnZXh0ZW5kVmFycycpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJ0cm4uZXh0ZW5kVmFycyA9IGFkZC5leHRlbmRWYXJzO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmIChiYXNlQ29udGV4dC5oYXNPd25Qcm9wZXJ0eSgnZXh0ZW5kVmFycycpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJ0cm4uZXh0ZW5kVmFycyA9IGJhc2VDb250ZXh0LmV4dGVuZFZhcnM7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBzdWNjZWVkKHJ0cm4pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHN1Y2NlZWQoYmFzZUNvbnRleHQpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzdWNjZWVkKGFkZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGV4dGVuZFZhcnModmFycz86IFZhcmlhYmxlVmFsdWVbXSk6IFJlc3VsdDxUZW1wbGF0ZVZhcnN8dW5kZWZpbmVkPiB7XG4gICAgICAgIHJldHVybiBKc29uQ29udGV4dEhlbHBlci5leHRlbmRDb250ZXh0VmFycyh0aGlzLl9jb250ZXh0LCB2YXJzKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZXh0ZW5kUmVmcyhyZWZzPzogSnNvblJlZmVyZW5jZU1hcFtdKTogUmVzdWx0PEpzb25SZWZlcmVuY2VNYXB8dW5kZWZpbmVkPiB7XG4gICAgICAgIHJldHVybiBKc29uQ29udGV4dEhlbHBlci5leHRlbmRDb250ZXh0UmVmcyh0aGlzLl9jb250ZXh0LCByZWZzKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZXh0ZW5kQ29udGV4dChhZGQ/OiB7IHZhcnM/OiBWYXJpYWJsZVZhbHVlW10sIHJlZnM/OiBKc29uUmVmZXJlbmNlTWFwW10gfSk6IFJlc3VsdDxKc29uQ29udGV4dHx1bmRlZmluZWQ+IHtcbiAgICAgICAgcmV0dXJuIEpzb25Db250ZXh0SGVscGVyLmV4dGVuZENvbnRleHQodGhpcy5fY29udGV4dCwgYWRkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbWVyZ2VDb250ZXh0KG1lcmdlPzogSnNvbkNvbnRleHQpOiBSZXN1bHQ8SnNvbkNvbnRleHR8dW5kZWZpbmVkPiB7XG4gICAgICAgIHJldHVybiBKc29uQ29udGV4dEhlbHBlci5tZXJnZUNvbnRleHQodGhpcy5fY29udGV4dCwgbWVyZ2UpO1xuICAgIH1cbn1cbiJdfQ==
|
|
101
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dEhlbHBlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvY29udGV4dEhlbHBlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW9CRzs7O0FBRUgsK0NBQThHO0FBQzlHLDRDQUErRDtBQUMvRCx5REFBc0Q7QUFFdEQsTUFBYSxpQkFBaUI7SUFHMUIsWUFBbUIsT0FBcUI7UUFDcEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUM7SUFDNUIsQ0FBQztJQUVNLE1BQU0sQ0FBQyxNQUFNLENBQUMsT0FBcUI7UUFDdEMsT0FBTyxJQUFBLHdCQUFhLEVBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQy9ELENBQUM7SUFFTSxNQUFNLENBQUMsaUJBQWlCLENBQUMsV0FBa0MsRUFBRSxJQUFzQjs7UUFDdEYsSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxFQUFFO1lBQzNCLE1BQU0sTUFBTSxHQUFHLE1BQUEsV0FBVyxhQUFYLFdBQVcsdUJBQVgsV0FBVyxDQUFFLFVBQVUsbUNBQUksK0JBQWlCLENBQUM7WUFDNUQsT0FBTyxNQUFNLENBQUMsTUFBQSxXQUFXLGFBQVgsV0FBVyx1QkFBWCxXQUFXLENBQUUsSUFBSSxtQ0FBSSxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUM7U0FDaEQ7UUFDRCxPQUFPLElBQUEsa0JBQU8sRUFBQyxXQUFXLGFBQVgsV0FBVyx1QkFBWCxXQUFXLENBQUUsSUFBSSxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVNLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxXQUFrQyxFQUFFLElBQXlCO1FBQ3pGLElBQUksSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsRUFBRTtZQUMzQixNQUFNLElBQUksR0FBRyxDQUFBLFdBQVcsYUFBWCxXQUFXLHVCQUFYLFdBQVcsQ0FBRSxJQUFJLEVBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLEVBQUUsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7WUFDcEUsSUFBSSxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtnQkFDakIsT0FBTyxtQ0FBZ0IsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDeEM7WUFDRCxPQUFPLElBQUEsa0JBQU8sRUFBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUMzQjtRQUNELE9BQU8sSUFBQSxrQkFBTyxFQUFDLFdBQVcsYUFBWCxXQUFXLHVCQUFYLFdBQVcsQ0FBRSxJQUFJLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRU0sTUFBTSxDQUFDLGFBQWEsQ0FBQyxXQUFtQyxFQUFFLEdBQTJEO1FBQ3hILE9BQU8saUJBQWlCLENBQUMsaUJBQWlCLENBQUMsV0FBVyxFQUFFLENBQUEsR0FBRyxhQUFILEdBQUcsdUJBQUgsR0FBRyxDQUFFLElBQUksS0FBSSxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUN4RixPQUFPLGlCQUFpQixDQUFDLGlCQUFpQixDQUFDLFdBQVcsRUFBRSxDQUFBLEdBQUcsYUFBSCxHQUFHLHVCQUFILEdBQUcsQ0FBRSxJQUFJLEtBQUksRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7Z0JBQ3hGLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFBLFdBQVcsYUFBWCxXQUFXLHVCQUFYLFdBQVcsQ0FBRSxVQUFVLENBQUEsRUFBRTtvQkFDNUMsT0FBTyxJQUFBLGtCQUFPLEVBQUMsU0FBUyxDQUFDLENBQUM7aUJBQzdCO2dCQUNELE1BQU0sSUFBSSxHQUFnQixFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQztnQkFDekMsSUFBSSxXQUFXLGFBQVgsV0FBVyx1QkFBWCxXQUFXLENBQUUsVUFBVSxFQUFFO29CQUN6QixJQUFJLENBQUMsVUFBVSxHQUFHLFdBQVcsQ0FBQyxVQUFVLENBQUM7aUJBQzVDO2dCQUNELE9BQU8sSUFBQSxrQkFBTyxFQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3pCLENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU0sTUFBTSxDQUFDLFlBQVksQ0FBQyxXQUFrQyxFQUFFLEdBQTBCOztRQUNyRixJQUFJLFdBQVcsRUFBRTtZQUNiLElBQUksR0FBRyxFQUFFO2dCQUNMLE1BQU0sSUFBSSxHQUFnQjtvQkFDdEIsSUFBSSxFQUFFLE1BQUEsR0FBRyxDQUFDLElBQUksbUNBQUksV0FBVyxDQUFDLElBQUk7b0JBQ2xDLElBQUksRUFBRSxNQUFBLEdBQUcsQ0FBQyxJQUFJLG1DQUFJLFdBQVcsQ0FBQyxJQUFJO2lCQUNyQyxDQUFDO2dCQUNGLElBQUksR0FBRyxDQUFDLGNBQWMsQ0FBQyxZQUFZLENBQUMsRUFBRTtvQkFDbEMsSUFBSSxDQUFDLFVBQVUsR0FBRyxHQUFHLENBQUMsVUFBVSxDQUFDO2lCQUNwQztxQkFDSSxJQUFJLFdBQVcsQ0FBQyxjQUFjLENBQUMsWUFBWSxDQUFDLEVBQUU7b0JBQy9DLElBQUksQ0FBQyxVQUFVLEdBQUcsV0FBVyxDQUFDLFVBQVUsQ0FBQztpQkFDNUM7Z0JBQ0QsT0FBTyxJQUFBLGtCQUFPLEVBQUMsSUFBSSxDQUFDLENBQUM7YUFDeEI7WUFDRCxPQUFPLElBQUEsa0JBQU8sRUFBQyxXQUFXLENBQUMsQ0FBQztTQUMvQjtRQUNELE9BQU8sSUFBQSxrQkFBTyxFQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3hCLENBQUM7SUFFTSxVQUFVLENBQUMsSUFBc0I7UUFDcEMsT0FBTyxpQkFBaUIsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3BFLENBQUM7SUFFTSxVQUFVLENBQUMsSUFBeUI7UUFDdkMsT0FBTyxpQkFBaUIsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3BFLENBQUM7SUFFTSxhQUFhLENBQUMsR0FBMkQ7UUFDNUUsT0FBTyxpQkFBaUIsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUMvRCxDQUFDO0lBRU0sWUFBWSxDQUFDLEtBQW1CO1FBQ25DLE9BQU8saUJBQWlCLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDaEUsQ0FBQztDQUNKO0FBaEZELDhDQWdGQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMjAgRXJpayBGb3J0dW5lXG4gKlxuICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuICogb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuICogaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuICogdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4gKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuICpcbiAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbFxuICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbiAqXG4gKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4gKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbiAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuICogQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbiAqIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFXG4gKiBTT0ZUV0FSRS5cbiAqL1xuXG5pbXBvcnQgeyBKc29uQ29udGV4dCwgSnNvblJlZmVyZW5jZU1hcCwgVGVtcGxhdGVWYXJzLCBWYXJpYWJsZVZhbHVlLCBkZWZhdWx0RXh0ZW5kVmFycyB9IGZyb20gJy4vanNvbkNvbnRleHQnO1xuaW1wb3J0IHsgUmVzdWx0LCBjYXB0dXJlUmVzdWx0LCBzdWNjZWVkIH0gZnJvbSAnQGZndi90cy11dGlscyc7XG5pbXBvcnQgeyBDb21wb3NpdGVKc29uTWFwIH0gZnJvbSAnLi9jb21wb3NpdGVKc29uTWFwJztcblxuZXhwb3J0IGNsYXNzIEpzb25Db250ZXh0SGVscGVyIHtcbiAgICBwcm90ZWN0ZWQgX2NvbnRleHQ/OiBKc29uQ29udGV4dDtcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3Rvcihjb250ZXh0PzogSnNvbkNvbnRleHQpIHtcbiAgICAgICAgdGhpcy5fY29udGV4dCA9IGNvbnRleHQ7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBjcmVhdGUoY29udGV4dD86IEpzb25Db250ZXh0KTogUmVzdWx0PEpzb25Db250ZXh0SGVscGVyPiB7XG4gICAgICAgIHJldHVybiBjYXB0dXJlUmVzdWx0KCgpID0+IG5ldyBKc29uQ29udGV4dEhlbHBlcihjb250ZXh0KSk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBleHRlbmRDb250ZXh0VmFycyhiYXNlQ29udGV4dDogSnNvbkNvbnRleHR8dW5kZWZpbmVkLCB2YXJzPzogVmFyaWFibGVWYWx1ZVtdKTogUmVzdWx0PFRlbXBsYXRlVmFyc3x1bmRlZmluZWQ+IHtcbiAgICAgICAgaWYgKHZhcnMgJiYgKHZhcnMubGVuZ3RoID4gMCkpIHtcbiAgICAgICAgICAgIGNvbnN0IGV4dGVuZCA9IGJhc2VDb250ZXh0Py5leHRlbmRWYXJzID8/IGRlZmF1bHRFeHRlbmRWYXJzO1xuICAgICAgICAgICAgcmV0dXJuIGV4dGVuZChiYXNlQ29udGV4dD8udmFycyA/PyB7fSwgdmFycyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHN1Y2NlZWQoYmFzZUNvbnRleHQ/LnZhcnMpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZXh0ZW5kQ29udGV4dFJlZnMoYmFzZUNvbnRleHQ6IEpzb25Db250ZXh0fHVuZGVmaW5lZCwgcmVmcz86IEpzb25SZWZlcmVuY2VNYXBbXSk6IFJlc3VsdDxKc29uUmVmZXJlbmNlTWFwfHVuZGVmaW5lZD4ge1xuICAgICAgICBpZiAocmVmcyAmJiAocmVmcy5sZW5ndGggPiAwKSkge1xuICAgICAgICAgICAgY29uc3QgZnVsbCA9IGJhc2VDb250ZXh0Py5yZWZzID8gWy4uLnJlZnMsIGJhc2VDb250ZXh0LnJlZnNdIDogcmVmcztcbiAgICAgICAgICAgIGlmIChmdWxsLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gQ29tcG9zaXRlSnNvbk1hcC5jcmVhdGUoZnVsbCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gc3VjY2VlZChmdWxsWzBdKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc3VjY2VlZChiYXNlQ29udGV4dD8ucmVmcyk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBleHRlbmRDb250ZXh0KGJhc2VDb250ZXh0PzogSnNvbkNvbnRleHR8dW5kZWZpbmVkLCBhZGQ/OiB7IHZhcnM/OiBWYXJpYWJsZVZhbHVlW10sIHJlZnM/OiBKc29uUmVmZXJlbmNlTWFwW10gfSk6IFJlc3VsdDxKc29uQ29udGV4dHx1bmRlZmluZWQ+IHtcbiAgICAgICAgcmV0dXJuIEpzb25Db250ZXh0SGVscGVyLmV4dGVuZENvbnRleHRWYXJzKGJhc2VDb250ZXh0LCBhZGQ/LnZhcnMgfHwgW10pLm9uU3VjY2VzcygodmFycykgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIEpzb25Db250ZXh0SGVscGVyLmV4dGVuZENvbnRleHRSZWZzKGJhc2VDb250ZXh0LCBhZGQ/LnJlZnMgfHwgW10pLm9uU3VjY2VzcygocmVmcykgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghdmFycyAmJiAhcmVmcyAmJiAhYmFzZUNvbnRleHQ/LmV4dGVuZFZhcnMpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN1Y2NlZWQodW5kZWZpbmVkKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgcnRybjogSnNvbkNvbnRleHQgPSB7IHZhcnMsIHJlZnMgfTtcbiAgICAgICAgICAgICAgICBpZiAoYmFzZUNvbnRleHQ/LmV4dGVuZFZhcnMpIHtcbiAgICAgICAgICAgICAgICAgICAgcnRybi5leHRlbmRWYXJzID0gYmFzZUNvbnRleHQuZXh0ZW5kVmFycztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHN1Y2NlZWQocnRybik7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBtZXJnZUNvbnRleHQoYmFzZUNvbnRleHQ6IEpzb25Db250ZXh0fHVuZGVmaW5lZCwgYWRkOiBKc29uQ29udGV4dHx1bmRlZmluZWQpOiBSZXN1bHQ8SnNvbkNvbnRleHR8dW5kZWZpbmVkPiB7XG4gICAgICAgIGlmIChiYXNlQ29udGV4dCkge1xuICAgICAgICAgICAgaWYgKGFkZCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJ0cm46IEpzb25Db250ZXh0ID0ge1xuICAgICAgICAgICAgICAgICAgICB2YXJzOiBhZGQudmFycyA/PyBiYXNlQ29udGV4dC52YXJzLFxuICAgICAgICAgICAgICAgICAgICByZWZzOiBhZGQucmVmcyA/PyBiYXNlQ29udGV4dC5yZWZzLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgaWYgKGFkZC5oYXNPd25Qcm9wZXJ0eSgnZXh0ZW5kVmFycycpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJ0cm4uZXh0ZW5kVmFycyA9IGFkZC5leHRlbmRWYXJzO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmIChiYXNlQ29udGV4dC5oYXNPd25Qcm9wZXJ0eSgnZXh0ZW5kVmFycycpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJ0cm4uZXh0ZW5kVmFycyA9IGJhc2VDb250ZXh0LmV4dGVuZFZhcnM7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBzdWNjZWVkKHJ0cm4pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHN1Y2NlZWQoYmFzZUNvbnRleHQpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzdWNjZWVkKGFkZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGV4dGVuZFZhcnModmFycz86IFZhcmlhYmxlVmFsdWVbXSk6IFJlc3VsdDxUZW1wbGF0ZVZhcnN8dW5kZWZpbmVkPiB7XG4gICAgICAgIHJldHVybiBKc29uQ29udGV4dEhlbHBlci5leHRlbmRDb250ZXh0VmFycyh0aGlzLl9jb250ZXh0LCB2YXJzKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZXh0ZW5kUmVmcyhyZWZzPzogSnNvblJlZmVyZW5jZU1hcFtdKTogUmVzdWx0PEpzb25SZWZlcmVuY2VNYXB8dW5kZWZpbmVkPiB7XG4gICAgICAgIHJldHVybiBKc29uQ29udGV4dEhlbHBlci5leHRlbmRDb250ZXh0UmVmcyh0aGlzLl9jb250ZXh0LCByZWZzKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZXh0ZW5kQ29udGV4dChhZGQ/OiB7IHZhcnM/OiBWYXJpYWJsZVZhbHVlW10sIHJlZnM/OiBKc29uUmVmZXJlbmNlTWFwW10gfSk6IFJlc3VsdDxKc29uQ29udGV4dHx1bmRlZmluZWQ+IHtcbiAgICAgICAgcmV0dXJuIEpzb25Db250ZXh0SGVscGVyLmV4dGVuZENvbnRleHQodGhpcy5fY29udGV4dCwgYWRkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbWVyZ2VDb250ZXh0KG1lcmdlPzogSnNvbkNvbnRleHQpOiBSZXN1bHQ8SnNvbkNvbnRleHR8dW5kZWZpbmVkPiB7XG4gICAgICAgIHJldHVybiBKc29uQ29udGV4dEhlbHBlci5tZXJnZUNvbnRleHQodGhpcy5fY29udGV4dCwgbWVyZ2UpO1xuICAgIH1cbn1cbiJdfQ==
|
package/index.d.ts
CHANGED
|
@@ -3,7 +3,8 @@ export * from './jsonConverter';
|
|
|
3
3
|
export * from './jsonEditor/jsonEditor';
|
|
4
4
|
export { JsonEditorOptions, JsonEditorValidationOptions } from './jsonEditor/common';
|
|
5
5
|
export * as EditorRules from './jsonEditor/rules';
|
|
6
|
-
export { CompositeJsonMap,
|
|
6
|
+
export { CompositeJsonMap, } from './compositeJsonMap';
|
|
7
|
+
export { PrefixedJsonMap, SimpleJsonMap, } from './jsonReferenceMap';
|
|
7
8
|
export { JsonReferenceMap, JsonReferenceMapFailureReason, TemplateVars, JsonContext, } from './jsonContext';
|
|
8
9
|
export * as Converters from './converters';
|
|
9
10
|
export * as File from './file';
|
package/index.js
CHANGED
|
@@ -52,10 +52,11 @@ __exportStar(require("./common"), exports);
|
|
|
52
52
|
__exportStar(require("./jsonConverter"), exports);
|
|
53
53
|
__exportStar(require("./jsonEditor/jsonEditor"), exports);
|
|
54
54
|
exports.EditorRules = __importStar(require("./jsonEditor/rules"));
|
|
55
|
+
var compositeJsonMap_1 = require("./compositeJsonMap");
|
|
56
|
+
Object.defineProperty(exports, "CompositeJsonMap", { enumerable: true, get: function () { return compositeJsonMap_1.CompositeJsonMap; } });
|
|
55
57
|
var jsonReferenceMap_1 = require("./jsonReferenceMap");
|
|
56
|
-
Object.defineProperty(exports, "CompositeJsonMap", { enumerable: true, get: function () { return jsonReferenceMap_1.CompositeJsonMap; } });
|
|
57
58
|
Object.defineProperty(exports, "PrefixedJsonMap", { enumerable: true, get: function () { return jsonReferenceMap_1.PrefixedJsonMap; } });
|
|
58
59
|
Object.defineProperty(exports, "SimpleJsonMap", { enumerable: true, get: function () { return jsonReferenceMap_1.SimpleJsonMap; } });
|
|
59
60
|
exports.Converters = __importStar(require("./converters"));
|
|
60
61
|
exports.File = __importStar(require("./file"));
|
|
61
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
62
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW9CRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFSCwyQ0FBeUI7QUFDekIsa0RBQWdDO0FBQ2hDLDBEQUF3QztBQUV4QyxrRUFBa0Q7QUFDbEQsdURBRTRCO0FBRHhCLG9IQUFBLGdCQUFnQixPQUFBO0FBRXBCLHVEQUc0QjtBQUZ4QixtSEFBQSxlQUFlLE9BQUE7QUFDZixpSEFBQSxhQUFhLE9BQUE7QUFRakIsMkRBQTJDO0FBQzNDLCtDQUErQiIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMjAgRXJpayBGb3J0dW5lXG4gKlxuICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuICogb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuICogaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuICogdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4gKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuICpcbiAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbFxuICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbiAqXG4gKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4gKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbiAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuICogQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbiAqIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFXG4gKiBTT0ZUV0FSRS5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2NvbW1vbic7XG5leHBvcnQgKiBmcm9tICcuL2pzb25Db252ZXJ0ZXInO1xuZXhwb3J0ICogZnJvbSAnLi9qc29uRWRpdG9yL2pzb25FZGl0b3InO1xuZXhwb3J0IHsgSnNvbkVkaXRvck9wdGlvbnMsIEpzb25FZGl0b3JWYWxpZGF0aW9uT3B0aW9ucyB9IGZyb20gJy4vanNvbkVkaXRvci9jb21tb24nO1xuZXhwb3J0ICogYXMgRWRpdG9yUnVsZXMgZnJvbSAnLi9qc29uRWRpdG9yL3J1bGVzJztcbmV4cG9ydCB7XG4gICAgQ29tcG9zaXRlSnNvbk1hcCxcbn0gZnJvbSAnLi9jb21wb3NpdGVKc29uTWFwJztcbmV4cG9ydCB7XG4gICAgUHJlZml4ZWRKc29uTWFwLFxuICAgIFNpbXBsZUpzb25NYXAsXG59IGZyb20gJy4vanNvblJlZmVyZW5jZU1hcCc7XG5leHBvcnQge1xuICAgIEpzb25SZWZlcmVuY2VNYXAsXG4gICAgSnNvblJlZmVyZW5jZU1hcEZhaWx1cmVSZWFzb24sXG4gICAgVGVtcGxhdGVWYXJzLFxuICAgIEpzb25Db250ZXh0LFxufSBmcm9tICcuL2pzb25Db250ZXh0JztcbmV4cG9ydCAqIGFzIENvbnZlcnRlcnMgZnJvbSAnLi9jb252ZXJ0ZXJzJztcbmV4cG9ydCAqIGFzIEZpbGUgZnJvbSAnLi9maWxlJztcbiJdfQ==
|
|
@@ -83,4 +83,4 @@ class JsonEditorState {
|
|
|
83
83
|
}
|
|
84
84
|
exports.JsonEditorState = JsonEditorState;
|
|
85
85
|
JsonEditorState._nextId = 0;
|
|
86
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
86
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNvbkVkaXRvclN0YXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2pzb25FZGl0b3IvanNvbkVkaXRvclN0YXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FvQkc7OztBQUVILDRDQUFpRjtBQUlqRixzREFBc0Q7QUFHdEQsTUFBYSxlQUFlO0lBU3hCLFlBQW1CLE1BQXdCLEVBQUUsV0FBOEIsRUFBRSxjQUE0QjtRQUh0RixjQUFTLEdBQWlCLEVBQUUsQ0FBQztRQUk1QyxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUNyQixJQUFJLENBQUMsT0FBTyxHQUFHLGVBQWUsQ0FBQyxvQkFBb0IsQ0FBQyxXQUFXLEVBQUUsY0FBYyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDM0YsSUFBSSxDQUFDLEdBQUcsR0FBRyxlQUFlLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDekMsQ0FBQztJQUVELElBQVcsT0FBTyxLQUE0QixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUU1RSxJQUFXLFFBQVE7UUFDZixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDMUIsQ0FBQztJQUVTLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxPQUEwQixFQUFFLE9BQXFCO1FBQ25GLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDVixPQUFPLElBQUEsa0JBQU8sRUFBQyxPQUFPLENBQUMsQ0FBQztTQUMzQjtRQUNELE9BQU8sa0NBQWlCLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7WUFDakYsT0FBTyxJQUFBLGtCQUFPLEVBQUMsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxPQUFPLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQztRQUN4RSxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTSxLQUFLLENBQUMsR0FBZTtRQUN4QixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRU0sT0FBTyxDQUFDLGNBQTRCOztRQUN2QyxPQUFPLE1BQUEsTUFBQSxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sMENBQUUsSUFBSSxtQ0FBSSxjQUFjLGFBQWQsY0FBYyx1QkFBZCxjQUFjLENBQUUsSUFBSSxDQUFDO0lBQzlELENBQUM7SUFFTSxPQUFPLENBQUMsY0FBNEI7O1FBQ3ZDLE9BQU8sTUFBQSxNQUFBLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTywwQ0FBRSxJQUFJLG1DQUFJLGNBQWMsYUFBZCxjQUFjLHVCQUFkLGNBQWMsQ0FBRSxJQUFJLENBQUM7SUFDOUQsQ0FBQztJQUVNLFVBQVUsQ0FBQyxjQUE0QjtRQUMxQyxPQUFPLGtDQUFpQixDQUFDLFlBQVksQ0FBQyxjQUFjLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUM1RixDQUFDO0lBRU0sYUFBYSxDQUFDLFdBQWtDLEVBQUUsR0FBMEQ7UUFDL0csTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUM3QyxPQUFPLGtDQUFpQixDQUFDLGFBQWEsQ0FBQyxPQUFPLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDekQsQ0FBQztJQUVNLGNBQWMsQ0FDakIsSUFBK0IsRUFDL0IsT0FBZ0IsRUFDaEIsVUFBd0M7UUFFeEMsSUFBSSxNQUFNLEdBQWtDLE9BQU8sQ0FBQztRQUNwRCxNQUFNLFNBQVMsR0FBRyxVQUFVLGFBQVYsVUFBVSxjQUFWLFVBQVUsR0FBSSxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQztRQUN4RCxRQUFRLElBQUksRUFBRTtZQUNWLEtBQUsscUJBQXFCO2dCQUN0QixNQUFNLEdBQUcsQ0FBQyxTQUFTLENBQUMscUJBQXFCLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDO2dCQUNuRixNQUFNO1lBQ1YsS0FBSyxzQkFBc0I7Z0JBQ3ZCLE1BQU0sR0FBRyxDQUFDLFNBQVMsQ0FBQyxzQkFBc0IsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUM7Z0JBQzlFLE1BQU07WUFDVixLQUFLLHdCQUF3QjtnQkFDekIsTUFBTSxHQUFHLENBQUMsU0FBUyxDQUFDLHdCQUF3QixLQUFLLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQztnQkFDL0UsdUJBQXVCO2dCQUN2QixPQUFPLEdBQUcsT0FBTyxhQUFQLE9BQU8sY0FBUCxPQUFPLEdBQUksa0NBQWtDLENBQUM7Z0JBQ3hELE1BQU07U0FDYjtRQUNELHVCQUF1QjtRQUN2QixPQUFPLElBQUEseUJBQWMsRUFBQyxPQUFPLGFBQVAsT0FBTyxjQUFQLE9BQU8sR0FBSSxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDbkQsQ0FBQzs7QUF6RUwsMENBMEVDO0FBekVvQix1QkFBTyxHQUFHLENBQUMsQUFBSixDQUFLIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAyMCBFcmlrIEZvcnR1bmVcbiAqXG4gKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4gKiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4gKiBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4gKiB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4gKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbiAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4gKlxuICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsXG4gKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuICpcbiAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1JcbiAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4gKiBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4gKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuICogT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEVcbiAqIFNPRlRXQVJFLlxuICovXG5cbmltcG9ydCB7IERldGFpbGVkRmFpbHVyZSwgUmVzdWx0LCBmYWlsV2l0aERldGFpbCwgc3VjY2VlZCB9IGZyb20gJ0BmZ3YvdHMtdXRpbHMnO1xuaW1wb3J0IHsgSUpzb25DbG9uZUVkaXRvciwgSnNvbkVkaXRGYWlsdXJlUmVhc29uLCBKc29uRWRpdG9yT3B0aW9ucywgSnNvbkVkaXRvclZhbGlkYXRpb25PcHRpb25zLCBKc29uRWRpdG9yVmFsaWRhdGlvblJ1bGVzLCBKc29uUHJvcGVydHlFZGl0RmFpbHVyZVJlYXNvbiB9IGZyb20gJy4vY29tbW9uJztcbmltcG9ydCB7IEpzb25Db250ZXh0LCBKc29uUmVmZXJlbmNlTWFwLCBUZW1wbGF0ZVZhcnMsIFZhcmlhYmxlVmFsdWUgfSBmcm9tICcuLi9qc29uQ29udGV4dCc7XG5cbmltcG9ydCB7IEpzb25Db250ZXh0SGVscGVyIH0gZnJvbSAnLi4vY29udGV4dEhlbHBlcnMnO1xuaW1wb3J0IHsgSnNvbk9iamVjdCB9IGZyb20gJy4uL2NvbW1vbic7XG5cbmV4cG9ydCBjbGFzcyBKc29uRWRpdG9yU3RhdGUge1xuICAgIHByb3RlY3RlZCBzdGF0aWMgX25leHRJZCA9IDA7XG5cbiAgICBwdWJsaWMgcmVhZG9ubHkgZWRpdG9yOiBJSnNvbkNsb25lRWRpdG9yO1xuXG4gICAgcHVibGljIHJlYWRvbmx5IG9wdGlvbnM6IEpzb25FZGl0b3JPcHRpb25zO1xuICAgIHByb3RlY3RlZCByZWFkb25seSBfZGVmZXJyZWQ6IEpzb25PYmplY3RbXSA9IFtdO1xuICAgIHByb3RlY3RlZCByZWFkb25seSBfaWQ6IG51bWJlcjtcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihlZGl0b3I6IElKc29uQ2xvbmVFZGl0b3IsIGJhc2VPcHRpb25zOiBKc29uRWRpdG9yT3B0aW9ucywgcnVudGltZUNvbnRleHQ/OiBKc29uQ29udGV4dCkge1xuICAgICAgICB0aGlzLmVkaXRvciA9IGVkaXRvcjtcbiAgICAgICAgdGhpcy5vcHRpb25zID0gSnNvbkVkaXRvclN0YXRlLl9nZXRFZmZlY3RpdmVPcHRpb25zKGJhc2VPcHRpb25zLCBydW50aW1lQ29udGV4dCkub3JUaHJvdygpO1xuICAgICAgICB0aGlzLl9pZCA9IEpzb25FZGl0b3JTdGF0ZS5fbmV4dElkKys7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBjb250ZXh0KCk6IEpzb25Db250ZXh0fHVuZGVmaW5lZCB7IHJldHVybiB0aGlzLm9wdGlvbnMuY29udGV4dDsgfVxuXG4gICAgcHVibGljIGdldCBkZWZlcnJlZCgpOiBKc29uT2JqZWN0W10ge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGVmZXJyZWQ7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIHN0YXRpYyBfZ2V0RWZmZWN0aXZlT3B0aW9ucyhvcHRpb25zOiBKc29uRWRpdG9yT3B0aW9ucywgY29udGV4dD86IEpzb25Db250ZXh0KTogUmVzdWx0PEpzb25FZGl0b3JPcHRpb25zPiB7XG4gICAgICAgIGlmICghY29udGV4dCkge1xuICAgICAgICAgICAgcmV0dXJuIHN1Y2NlZWQob3B0aW9ucyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIEpzb25Db250ZXh0SGVscGVyLm1lcmdlQ29udGV4dChvcHRpb25zLmNvbnRleHQsIGNvbnRleHQpLm9uU3VjY2VzcygobWVyZ2VkKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gc3VjY2VlZCh7IGNvbnRleHQ6IG1lcmdlZCwgdmFsaWRhdGlvbjogb3B0aW9ucy52YWxpZGF0aW9uIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZGVmZXIob2JqOiBKc29uT2JqZWN0KTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2RlZmVycmVkLnB1c2gob2JqKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0VmFycyhkZWZhdWx0Q29udGV4dD86IEpzb25Db250ZXh0KTogVGVtcGxhdGVWYXJzfHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wdGlvbnMuY29udGV4dD8udmFycyA/PyBkZWZhdWx0Q29udGV4dD8udmFycztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0UmVmcyhkZWZhdWx0Q29udGV4dD86IEpzb25Db250ZXh0KTogSnNvblJlZmVyZW5jZU1hcHx1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gdGhpcy5vcHRpb25zLmNvbnRleHQ/LnJlZnMgPz8gZGVmYXVsdENvbnRleHQ/LnJlZnM7XG4gICAgfVxuXG4gICAgcHVibGljIGdldENvbnRleHQoZGVmYXVsdENvbnRleHQ/OiBKc29uQ29udGV4dCk6IEpzb25Db250ZXh0fHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiBKc29uQ29udGV4dEhlbHBlci5tZXJnZUNvbnRleHQoZGVmYXVsdENvbnRleHQsIHRoaXMub3B0aW9ucy5jb250ZXh0KS5vckRlZmF1bHQoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZXh0ZW5kQ29udGV4dChiYXNlQ29udGV4dDogSnNvbkNvbnRleHR8dW5kZWZpbmVkLCBhZGQ6IHsgdmFycz86IFZhcmlhYmxlVmFsdWVbXSwgcmVmcz86IEpzb25SZWZlcmVuY2VNYXBbXSB9KTogUmVzdWx0PEpzb25Db250ZXh0fHVuZGVmaW5lZD4ge1xuICAgICAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KGJhc2VDb250ZXh0KTtcbiAgICAgICAgcmV0dXJuIEpzb25Db250ZXh0SGVscGVyLmV4dGVuZENvbnRleHQoY29udGV4dCwgYWRkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZmFpbFZhbGlkYXRpb248VD1Kc29uT2JqZWN0PihcbiAgICAgICAgcnVsZTogSnNvbkVkaXRvclZhbGlkYXRpb25SdWxlcyxcbiAgICAgICAgbWVzc2FnZT86IHN0cmluZyxcbiAgICAgICAgdmFsaWRhdGlvbj86IEpzb25FZGl0b3JWYWxpZGF0aW9uT3B0aW9ucyxcbiAgICApOiBEZXRhaWxlZEZhaWx1cmU8VCwgSnNvbkVkaXRGYWlsdXJlUmVhc29uPiB7XG4gICAgICAgIGxldCBkZXRhaWw6IEpzb25Qcm9wZXJ0eUVkaXRGYWlsdXJlUmVhc29uID0gJ2Vycm9yJztcbiAgICAgICAgY29uc3QgZWZmZWN0aXZlID0gdmFsaWRhdGlvbiA/PyB0aGlzLm9wdGlvbnMudmFsaWRhdGlvbjtcbiAgICAgICAgc3dpdGNoIChydWxlKSB7XG4gICAgICAgICAgICBjYXNlICdpbnZhbGlkUHJvcGVydHlOYW1lJzpcbiAgICAgICAgICAgICAgICBkZXRhaWwgPSAoZWZmZWN0aXZlLm9uSW52YWxpZFByb3BlcnR5TmFtZSAhPT0gJ2lnbm9yZScpID8gJ2Vycm9yJyA6ICdpbmFwcGxpY2FibGUnO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnaW52YWxpZFByb3BlcnR5VmFsdWUnOlxuICAgICAgICAgICAgICAgIGRldGFpbCA9IChlZmZlY3RpdmUub25JbnZhbGlkUHJvcGVydHlWYWx1ZSAhPT0gJ2lnbm9yZScpID8gJ2Vycm9yJyA6ICdpZ25vcmUnO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAndW5kZWZpbmVkUHJvcGVydHlWYWx1ZSc6XG4gICAgICAgICAgICAgICAgZGV0YWlsID0gKGVmZmVjdGl2ZS5vblVuZGVmaW5lZFByb3BlcnR5VmFsdWUgIT09ICdlcnJvcicpID8gJ2lnbm9yZScgOiAnZXJyb3InO1xuICAgICAgICAgICAgICAgIC8vIGlzdGFuYnVsIGlnbm9yZSBuZXh0XG4gICAgICAgICAgICAgICAgbWVzc2FnZSA9IG1lc3NhZ2UgPz8gJ0Nhbm5vdCBjb252ZXJ0IHVuZGVmaW5lZCB0byBKU09OJztcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICAvLyBpc3RhbmJ1bCBpZ25vcmUgbmV4dFxuICAgICAgICByZXR1cm4gZmFpbFdpdGhEZXRhaWwobWVzc2FnZSA/PyBydWxlLCBkZXRhaWwpO1xuICAgIH1cbn1cbiJdfQ==
|
package/jsonReferenceMap.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { DetailedResult, Result } from '@fgv/ts-utils';
|
|
2
2
|
import { JsonContext, JsonReferenceMap, JsonReferenceMapFailureReason } from './jsonContext';
|
|
3
3
|
import { JsonObject, JsonValue } from './common';
|
|
4
|
-
import { JsonEditor } from './jsonEditor';
|
|
4
|
+
import { JsonEditor } from './jsonEditor/jsonEditor';
|
|
5
5
|
export interface ReferenceMapKeyPolicyValidateOptions {
|
|
6
6
|
makeValid?: boolean;
|
|
7
7
|
}
|
|
@@ -136,47 +136,3 @@ export declare class PrefixedJsonMap extends SimpleJsonMap {
|
|
|
136
136
|
static createPrefixed(prefixOptions: KeyPrefixOptions, values?: MapOrRecord<JsonValue>, context?: JsonContext, editor?: JsonEditor): Result<PrefixedJsonMap>;
|
|
137
137
|
protected static _toPolicy(prefixOptions: string | KeyPrefixOptions): ReferenceMapKeyPolicy<JsonValue>;
|
|
138
138
|
}
|
|
139
|
-
/**
|
|
140
|
-
* A CompositeJsonMap presents a composed view of one or more other
|
|
141
|
-
* JsonReferenceMaps.
|
|
142
|
-
*/
|
|
143
|
-
export declare class CompositeJsonMap implements JsonReferenceMap {
|
|
144
|
-
protected _maps: JsonReferenceMap[];
|
|
145
|
-
protected constructor(maps: JsonReferenceMap[]);
|
|
146
|
-
/**
|
|
147
|
-
* Creates a new @see CompositeJsonMap from the supplied maps
|
|
148
|
-
* @param maps one or more object maps to be composed
|
|
149
|
-
*/
|
|
150
|
-
static create(maps: JsonReferenceMap[]): Result<CompositeJsonMap>;
|
|
151
|
-
/**
|
|
152
|
-
* Determine if a key might be valid for this map but does not determine
|
|
153
|
-
* if key actually exists. Allows key range to be constrained.
|
|
154
|
-
* @param key key to be tested
|
|
155
|
-
* @returns true if the key is in the valid range, false otherwise.
|
|
156
|
-
*/
|
|
157
|
-
keyIsInRange(key: string): boolean;
|
|
158
|
-
/**
|
|
159
|
-
* Determines if an object with the specified key actually exists in the map.
|
|
160
|
-
* @param key key to be tested
|
|
161
|
-
* @returns true if an object with the specified key exists, false otherwise.
|
|
162
|
-
*/
|
|
163
|
-
has(key: string): boolean;
|
|
164
|
-
/**
|
|
165
|
-
* Gets a JSON object specified by key.
|
|
166
|
-
* @param key key of the object to be retrieved
|
|
167
|
-
* @param context optional @see JsonContext used to format the object
|
|
168
|
-
* @returns Success with the formatted object if successful. Failure with detail 'unknown'
|
|
169
|
-
* if no such object exists, or failure with detail 'error' if the object was found but
|
|
170
|
-
* could not be formatted.
|
|
171
|
-
*/
|
|
172
|
-
getJsonObject(key: string, context?: JsonContext): DetailedResult<JsonObject, JsonReferenceMapFailureReason>;
|
|
173
|
-
/**
|
|
174
|
-
* Gets a JSON value specified by key.
|
|
175
|
-
* @param key key of the object to be retrieved
|
|
176
|
-
* @param context Optional @see JsonContext used to format the value
|
|
177
|
-
* @returns Success with the formatted object if successful. Failure with detail 'unknown'
|
|
178
|
-
* if no such object exists, or failure with detail 'error' if the object was found but
|
|
179
|
-
* could not be formatted.
|
|
180
|
-
*/
|
|
181
|
-
getJsonValue(key: string, context?: JsonContext): DetailedResult<JsonValue, JsonReferenceMapFailureReason>;
|
|
182
|
-
}
|
package/jsonReferenceMap.js
CHANGED
|
@@ -21,10 +21,10 @@
|
|
|
21
21
|
* SOFTWARE.
|
|
22
22
|
*/
|
|
23
23
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
24
|
-
exports.
|
|
24
|
+
exports.PrefixedJsonMap = exports.SimpleJsonMap = exports.SimpleJsonMapBase = exports.PrefixKeyPolicy = exports.ReferenceMapKeyPolicy = void 0;
|
|
25
25
|
const ts_utils_1 = require("@fgv/ts-utils");
|
|
26
26
|
const common_1 = require("./common");
|
|
27
|
-
const jsonEditor_1 = require("./jsonEditor");
|
|
27
|
+
const jsonEditor_1 = require("./jsonEditor/jsonEditor");
|
|
28
28
|
/**
|
|
29
29
|
* Policy object responsible for validating or correcting
|
|
30
30
|
* keys in a reference map
|
|
@@ -199,74 +199,4 @@ class PrefixedJsonMap extends SimpleJsonMap {
|
|
|
199
199
|
}
|
|
200
200
|
}
|
|
201
201
|
exports.PrefixedJsonMap = PrefixedJsonMap;
|
|
202
|
-
/**
|
|
203
|
-
* A CompositeJsonMap presents a composed view of one or more other
|
|
204
|
-
* JsonReferenceMaps.
|
|
205
|
-
*/
|
|
206
|
-
class CompositeJsonMap {
|
|
207
|
-
constructor(maps) {
|
|
208
|
-
this._maps = maps;
|
|
209
|
-
}
|
|
210
|
-
/**
|
|
211
|
-
* Creates a new @see CompositeJsonMap from the supplied maps
|
|
212
|
-
* @param maps one or more object maps to be composed
|
|
213
|
-
*/
|
|
214
|
-
static create(maps) {
|
|
215
|
-
return (0, ts_utils_1.captureResult)(() => new CompositeJsonMap(maps));
|
|
216
|
-
}
|
|
217
|
-
/**
|
|
218
|
-
* Determine if a key might be valid for this map but does not determine
|
|
219
|
-
* if key actually exists. Allows key range to be constrained.
|
|
220
|
-
* @param key key to be tested
|
|
221
|
-
* @returns true if the key is in the valid range, false otherwise.
|
|
222
|
-
*/
|
|
223
|
-
keyIsInRange(key) {
|
|
224
|
-
return this._maps.find((map) => map.keyIsInRange(key)) !== undefined;
|
|
225
|
-
}
|
|
226
|
-
/**
|
|
227
|
-
* Determines if an object with the specified key actually exists in the map.
|
|
228
|
-
* @param key key to be tested
|
|
229
|
-
* @returns true if an object with the specified key exists, false otherwise.
|
|
230
|
-
*/
|
|
231
|
-
has(key) {
|
|
232
|
-
return this._maps.find((map) => map.has(key)) !== undefined;
|
|
233
|
-
}
|
|
234
|
-
/**
|
|
235
|
-
* Gets a JSON object specified by key.
|
|
236
|
-
* @param key key of the object to be retrieved
|
|
237
|
-
* @param context optional @see JsonContext used to format the object
|
|
238
|
-
* @returns Success with the formatted object if successful. Failure with detail 'unknown'
|
|
239
|
-
* if no such object exists, or failure with detail 'error' if the object was found but
|
|
240
|
-
* could not be formatted.
|
|
241
|
-
*/
|
|
242
|
-
getJsonObject(key, context) {
|
|
243
|
-
return this.getJsonValue(key, context).onSuccess((jv) => {
|
|
244
|
-
if (!(0, common_1.isJsonObject)(jv)) {
|
|
245
|
-
return (0, ts_utils_1.failWithDetail)(`${key}: not an object`, 'error');
|
|
246
|
-
}
|
|
247
|
-
return (0, ts_utils_1.succeedWithDetail)(jv);
|
|
248
|
-
});
|
|
249
|
-
}
|
|
250
|
-
/**
|
|
251
|
-
* Gets a JSON value specified by key.
|
|
252
|
-
* @param key key of the object to be retrieved
|
|
253
|
-
* @param context Optional @see JsonContext used to format the value
|
|
254
|
-
* @returns Success with the formatted object if successful. Failure with detail 'unknown'
|
|
255
|
-
* if no such object exists, or failure with detail 'error' if the object was found but
|
|
256
|
-
* could not be formatted.
|
|
257
|
-
*/
|
|
258
|
-
// eslint-disable-next-line no-use-before-define
|
|
259
|
-
getJsonValue(key, context) {
|
|
260
|
-
for (const map of this._maps) {
|
|
261
|
-
if (map.keyIsInRange(key)) {
|
|
262
|
-
const result = map.getJsonValue(key, context);
|
|
263
|
-
if (result.isSuccess() || (result.detail === 'error')) {
|
|
264
|
-
return result;
|
|
265
|
-
}
|
|
266
|
-
}
|
|
267
|
-
}
|
|
268
|
-
return (0, ts_utils_1.failWithDetail)(`${key}: value not found`, 'unknown');
|
|
269
|
-
}
|
|
270
|
-
}
|
|
271
|
-
exports.CompositeJsonMap = CompositeJsonMap;
|
|
272
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNvblJlZmVyZW5jZU1hcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9qc29uUmVmZXJlbmNlTWFwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FvQkc7OztBQUVILDRDQVV1QjtBQUd2QixxQ0FBK0Q7QUFDL0QsNkNBQTBDO0FBTTFDOzs7R0FHRztBQUNILE1BQWEscUJBQXFCO0lBSTlCLFlBQW1CLE9BQThDLEVBQUUsT0FBNEM7UUFDM0csSUFBSSxDQUFDLGVBQWUsR0FBRyxPQUFPLENBQUM7UUFDL0IsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLGFBQVAsT0FBTyxjQUFQLE9BQU8sR0FBSSxxQkFBcUIsQ0FBQyxtQkFBbUIsQ0FBQztJQUN6RSxDQUFDO0lBRU0sTUFBTSxDQUFDLG1CQUFtQixDQUFDLEdBQVc7UUFDekMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQy9FLENBQUM7SUFFTSxPQUFPLENBQUMsR0FBVyxFQUFFLElBQVE7UUFDaEMsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRU0sUUFBUSxDQUFDLEdBQVcsRUFBRSxJQUFRLEVBQUUsUUFBK0M7UUFDbEYsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBQSxrQkFBTyxFQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFBLGVBQUksRUFBQyxHQUFHLEdBQUcsZUFBZSxDQUFDLENBQUM7SUFDaEYsQ0FBQztJQUVNLGFBQWEsQ0FBQyxLQUFvQixFQUFFLE9BQThD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S0FBSyxFQUFFO1lBQzFCLElBQUksR0FBRyxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsRUFBRTtnQkFDdkIsTUFBTSxNQUFNLEdBQUcsR0FBRyxDQUFDLFlBQVksQ0FBQyxHQUFHLEVBQUUsT0FBTyxDQUFDLENBQUM7Z0JBQzlDLElBQUksTUFBTSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sS0FBSyxPQUFPLENBQUMsRUFBRTtvQkFDbkQsT0FBTyxNQUFNLENBQUM7aUJBQ2pCO2FBQ0o7U0FDSjtRQUNELE9BQU8sSUFBQSx5QkFBYyxFQUFDLEdBQUcsR0FBRyxtQkFBbUIsRUFBRSxTQUFTLENBQUMsQ0FBQztJQUNoRSxDQUFDO0NBQ0o7QUF2RUQsNENBdUVDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAyMCBFcmlrIEZvcnR1bmVcbiAqXG4gKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4gKiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4gKiBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4gKiB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4gKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbiAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4gKlxuICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsXG4gKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuICpcbiAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1JcbiAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4gKiBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4gKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuICogT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEVcbiAqIFNPRlRXQVJFLlxuICovXG5cbmltcG9ydCB7XG4gICAgRGV0YWlsZWRSZXN1bHQsXG4gICAgUmVzdWx0LFxuICAgIGNhcHR1cmVSZXN1bHQsXG4gICAgZmFpbCxcbiAgICBmYWlsV2l0aERldGFpbCxcbiAgICBtYXBSZXN1bHRzLFxuICAgIHJlY29yZFRvTWFwLFxuICAgIHN1Y2NlZWQsXG4gICAgc3VjY2VlZFdpdGhEZXRhaWwsXG59IGZyb20gJ0BmZ3YvdHMtdXRpbHMnO1xuXG5pbXBvcnQgeyBKc29uQ29udGV4dCwgSnNvblJlZmVyZW5jZU1hcCwgSnNvblJlZmVyZW5jZU1hcEZhaWx1cmVSZWFzb24gfSBmcm9tICcuL2pzb25Db250ZXh0JztcbmltcG9ydCB7IEpzb25PYmplY3QsIEpzb25WYWx1ZSwgaXNKc29uT2JqZWN0IH0gZnJvbSAnLi9jb21tb24nO1xuaW1wb3J0IHsgSnNvbkVkaXRvciB9IGZyb20gJy4vanNvbkVkaXRvcic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVmZXJlbmNlTWFwS2V5UG9saWN5VmFsaWRhdGVPcHRpb25zIHtcbiAgICBtYWtlVmFsaWQ/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIFBvbGljeSBvYmplY3QgcmVzcG9uc2libGUgZm9yIHZhbGlkYXRpbmcgb3IgY29ycmVjdGluZ1xuICoga2V5cyBpbiBhIHJlZmVyZW5jZSBtYXBcbiAqL1xuZXhwb3J0IGNsYXNzIFJlZmVyZW5jZU1hcEtleVBvbGljeTxUPiB7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IF9kZWZhdWx0T3B0aW9ucz86IFJlZmVyZW5jZU1hcEtleVBvbGljeVZhbGlkYXRlT3B0aW9ucztcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgX2lzVmFsaWQ6IChrZXk6IHN0cmluZywgaXRlbT86IFQpID0+IGJvb2xlYW47XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3Iob3B0aW9ucz86IFJlZmVyZW5jZU1hcEtleVBvbGljeVZhbGlkYXRlT3B0aW9ucywgaXNWYWxpZD86IChrZXk6IHN0cmluZywgaXRlbT86IFQpID0+IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5fZGVmYXVsdE9wdGlvbnMgPSBvcHRpb25zO1xuICAgICAgICB0aGlzLl9pc1ZhbGlkID0gaXNWYWxpZCA/PyBSZWZlcmVuY2VNYXBLZXlQb2xpY3kuZGVmYXVsdEtleVByZWRpY2F0ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGRlZmF1bHRLZXlQcmVkaWNhdGUoa2V5OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIChrZXkubGVuZ3RoID4gMCkgJiYgKCFrZXkuaW5jbHVkZXMoJ3t7JykpICYmICgha2V5LnN0YXJ0c1dpdGgoJz8nKSk7XG4gICAgfVxuXG4gICAgcHVibGljIGlzVmFsaWQoa2V5OiBzdHJpbmcsIGl0ZW0/OiBUKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pc1ZhbGlkKGtleSwgaXRlbSk7XG4gICAgfVxuXG4gICAgcHVibGljIHZhbGlkYXRlKGtleTogc3RyaW5nLCBpdGVtPzogVCwgX29wdGlvbnM/OiBSZWZlcmVuY2VNYXBLZXlQb2xpY3lWYWxpZGF0ZU9wdGlvbnMpOiBSZXN1bHQ8c3RyaW5nPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQoa2V5LCBpdGVtKSA/IHN1Y2NlZWQoa2V5KSA6IGZhaWwoYCR7a2V5fTogaW52YWxpZCBrZXlgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgdmFsaWRhdGVJdGVtcyhpdGVtczogW3N0cmluZywgVF1bXSwgb3B0aW9ucz86IFJlZmVyZW5jZU1hcEtleVBvbGljeVZhbGlkYXRlT3B0aW9ucyk6IFJlc3VsdDxbc3RyaW5nLCBUXVtdPiB7XG4gICAgICAgIHJldHVybiBtYXBSZXN1bHRzKGl0ZW1zLm1hcCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMudmFsaWRhdGUoLi4uaXRlbSwgb3B0aW9ucykub25TdWNjZXNzKCh2YWxpZCkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBzdWNjZWVkKFt2YWxpZCwgaXRlbVsxXV0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgdmFsaWRhdGVNYXAobWFwOiBNYXA8c3RyaW5nLCBUPiwgb3B0aW9ucz86IFJlZmVyZW5jZU1hcEtleVBvbGljeVZhbGlkYXRlT3B0aW9ucyk6IFJlc3VsdDxNYXA8c3RyaW5nLCBUPj4ge1xuICAgICAgICByZXR1cm4gdGhpcy52YWxpZGF0ZUl0ZW1zKEFycmF5LmZyb20obWFwLmVudHJpZXMoKSksIG9wdGlvbnMpLm9uU3VjY2VzcygodmFsaWQpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBjYXB0dXJlUmVzdWx0KCgpID0+IG5ldyBNYXAodmFsaWQpKTtcbiAgICAgICAgfSk7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgUHJlZml4S2V5UG9saWN5PFQ+IGV4dGVuZHMgUmVmZXJlbmNlTWFwS2V5UG9saWN5PFQ+IHtcbiAgICBwdWJsaWMgcmVhZG9ubHkgcHJlZml4OiBzdHJpbmc7XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IocHJlZml4OiBzdHJpbmcsIG9wdGlvbnM/OiBSZWZlcmVuY2VNYXBLZXlQb2xpY3lWYWxpZGF0ZU9wdGlvbnMpIHtcbiAgICAgICAgc3VwZXIob3B0aW9ucyk7XG4gICAgICAgIHRoaXMucHJlZml4ID0gcHJlZml4O1xuICAgIH1cblxuICAgIHB1YmxpYyBpc1ZhbGlkKGtleTogc3RyaW5nLCBfaXRlbT86IFQpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIGtleS5zdGFydHNXaXRoKHRoaXMucHJlZml4KSAmJiAoa2V5ICE9PSB0aGlzLnByZWZpeCkgJiYgUmVmZXJlbmNlTWFwS2V5UG9saWN5LmRlZmF1bHRLZXlQcmVkaWNhdGUoa2V5KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgdmFsaWRhdGUoa2V5OiBzdHJpbmcsIGl0ZW0/OiBULCBvcHRpb25zPzogUmVmZXJlbmNlTWFwS2V5UG9saWN5VmFsaWRhdGVPcHRpb25zKTogUmVzdWx0PHN0cmluZz4ge1xuICAgICAgICAvLyBpc3RhbmJ1bCBpZ25vcmUgbmV4dFxuICAgICAgICBjb25zdCBtYWtlVmFsaWQgPSAob3B0aW9ucyA/PyB0aGlzLl9kZWZhdWx0T3B0aW9ucyk/Lm1ha2VWYWxpZCA9PT0gdHJ1ZTtcbiAgICAgICAgaWYgKHRoaXMuaXNWYWxpZChrZXksIGl0ZW0pKSB7XG4gICAgICAgICAgICByZXR1cm4gc3VjY2VlZChrZXkpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKG1ha2VWYWxpZCAmJiBSZWZlcmVuY2VNYXBLZXlQb2xpY3kuZGVmYXVsdEtleVByZWRpY2F0ZShrZXkpKSB7XG4gICAgICAgICAgICByZXR1cm4gc3VjY2VlZChgJHt0aGlzLnByZWZpeH0ke2tleX1gKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFpbChgJHtrZXl9OiBpbnZhbGlkIGtleWApO1xuICAgIH1cbn1cblxuZXhwb3J0IHR5cGUgTWFwT3JSZWNvcmQ8VD4gPSBNYXA8c3RyaW5nLCBUPnxSZWNvcmQ8c3RyaW5nLCBUPjtcblxuLyoqXG4gKiBBIFNpbXBsZUpzb25NYXAgcHJlc2VudHMgYSB2aWV3IG9mIGEgc2ltcGxlIG1hcCBvZiBAc2VlIEpzb25WYWx1ZVxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgU2ltcGxlSnNvbk1hcEJhc2U8VD4gaW1wbGVtZW50cyBKc29uUmVmZXJlbmNlTWFwIHtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgX2tleVBvbGljeTogUmVmZXJlbmNlTWFwS2V5UG9saWN5PFQ+O1xuICAgIHByb3RlY3RlZCByZWFkb25seSBfdmFsdWVzOiBNYXA8c3RyaW5nLCBUPjtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgX2NvbnRleHQ/OiBKc29uQ29udGV4dDtcblxuICAgIHByb3RlY3RlZCBjb25zdHJ1Y3Rvcih2YWx1ZXM/OiBNYXBPclJlY29yZDxUPiwgY29udGV4dD86IEpzb25Db250ZXh0LCBrZXlQb2xpY3k/OiBSZWZlcmVuY2VNYXBLZXlQb2xpY3k8VD4pIHtcbiAgICAgICAgdmFsdWVzID0gU2ltcGxlSnNvbk1hcEJhc2UuX3RvTWFwKHZhbHVlcykub3JUaHJvdygpO1xuICAgICAgICB0aGlzLl9rZXlQb2xpY3kgPSBrZXlQb2xpY3kgPz8gbmV3IFJlZmVyZW5jZU1hcEtleVBvbGljeSgpO1xuICAgICAgICB0aGlzLl92YWx1ZXMgPSB0aGlzLl9rZXlQb2xpY3kudmFsaWRhdGVNYXAodmFsdWVzKS5vclRocm93KCk7XG4gICAgICAgIHRoaXMuX2NvbnRleHQgPSBjb250ZXh0O1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBzdGF0aWMgX3RvTWFwPFQ+KHZhbHVlcz86IE1hcE9yUmVjb3JkPFQ+KTogUmVzdWx0PE1hcDxzdHJpbmcsIFQ+PiB7XG4gICAgICAgIGlmICh2YWx1ZXMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuIGNhcHR1cmVSZXN1bHQoKCkgPT4gbmV3IE1hcDxzdHJpbmcsIFQ+KCkpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKCEodmFsdWVzIGluc3RhbmNlb2YgTWFwKSkge1xuICAgICAgICAgICAgcmV0dXJuIHJlY29yZFRvTWFwKHZhbHVlcywgKF9rLCB2KSA9PiBzdWNjZWVkKHYpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc3VjY2VlZCh2YWx1ZXMpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERldGVybWluZSBpZiBhIGtleSBtaWdodCBiZSB2YWxpZCBmb3IgdGhpcyBtYXAgYnV0IGRvZXMgbm90IGRldGVybWluZSBpZiBrZXkgYWN0dWFsbHlcbiAgICAgKiBleGlzdHMuIEFsbG93cyBrZXkgcmFuZ2UgdG8gYmUgY29uc3RyYWluZWQuXG4gICAgICogQHBhcmFtIGtleSBrZXkgdG8gYmUgdGVzdGVkXG4gICAgICogQHJldHVybnMgdHJ1ZSBpZiB0aGUga2V5IGlzIGluIHRoZSB2YWxpZCByYW5nZSwgZmFsc2Ugb3RoZXJ3aXNlLlxuICAgICAqL1xuICAgIHB1YmxpYyBrZXlJc0luUmFuZ2Uoa2V5OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2tleVBvbGljeS5pc1ZhbGlkKGtleSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGV0ZXJtaW5lcyBpZiBhbiBvYmplY3Qgd2l0aCB0aGUgc3BlY2lmaWVkIGtleSBhY3R1YWxseSBleGlzdHMgaW4gdGhlIG1hcC5cbiAgICAgKiBAcGFyYW0ga2V5IGtleSB0byBiZSB0ZXN0ZWRcbiAgICAgKiBAcmV0dXJucyB0cnVlIGlmIGFuIG9iamVjdCB3aXRoIHRoZSBzcGVjaWZpZWQga2V5IGV4aXN0cywgZmFsc2Ugb3RoZXJ3aXNlLlxuICAgICAqL1xuICAgIHB1YmxpYyBoYXMoa2V5OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3ZhbHVlcy5oYXMoa2V5KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIGEgSlNPTiBvYmplY3Qgc3BlY2lmaWVkIGJ5IGtleS5cbiAgICAgKiBAcGFyYW0ga2V5IGtleSBvZiB0aGUgb2JqZWN0IHRvIGJlIHJldHJpZXZlZFxuICAgICAqIEBwYXJhbSBjb250ZXh0IG9wdGlvbmFsIEBzZWUgSnNvbkNvbnRleHQgdXNlZCB0byBmb3JtYXQgdGhlIG9iamVjdFxuICAgICAqIEByZXR1cm5zIFN1Y2Nlc3Mgd2l0aCB0aGUgZm9ybWF0dGVkIG9iamVjdCBpZiBzdWNjZXNzZnVsLiBGYWlsdXJlIHdpdGggZGV0YWlsICd1bmtub3duJ1xuICAgICAqIGlmIG5vIHN1Y2ggb2JqZWN0IGV4aXN0cywgb3IgZmFpbHVyZSB3aXRoIGRldGFpbCAnZXJyb3InIGlmIHRoZSBvYmplY3Qgd2FzIGZvdW5kIGJ1dFxuICAgICAqIGNvdWxkIG5vdCBiZSBmb3JtYXR0ZWQuXG4gICAgICovXG4gICAgcHVibGljIGdldEpzb25PYmplY3Qoa2V5OiBzdHJpbmcsIGNvbnRleHQ/OiBKc29uQ29udGV4dCk6IERldGFpbGVkUmVzdWx0PEpzb25PYmplY3QsIEpzb25SZWZlcmVuY2VNYXBGYWlsdXJlUmVhc29uPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldEpzb25WYWx1ZShrZXksIGNvbnRleHQpLm9uU3VjY2VzcygoanYpID0+IHtcbiAgICAgICAgICAgIGlmICghaXNKc29uT2JqZWN0KGp2KSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWlsV2l0aERldGFpbChgJHtrZXl9OiBub3QgYW4gb2JqZWN0YCwgJ2Vycm9yJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gc3VjY2VlZFdpdGhEZXRhaWwoanYpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIGEgSlNPTiB2YWx1ZSBzcGVjaWZpZWQgYnkga2V5LlxuICAgICAqIEBwYXJhbSBrZXkga2V5IG9mIHRoZSBvYmplY3QgdG8gYmUgcmV0cmlldmVkXG4gICAgICogQHBhcmFtIGNvbnRleHQgT3B0aW9uYWwgQHNlZSBKc29uQ29udGV4dCB1c2VkIHRvIGZvcm1hdCB0aGUgdmFsdWVcbiAgICAgKiBAcmV0dXJucyBTdWNjZXNzIHdpdGggdGhlIGZvcm1hdHRlZCBvYmplY3QgaWYgc3VjY2Vzc2Z1bC4gRmFpbHVyZSB3aXRoIGRldGFpbCAndW5rbm93bidcbiAgICAgKiBpZiBubyBzdWNoIG9iamVjdCBleGlzdHMsIG9yIGZhaWx1cmUgd2l0aCBkZXRhaWwgJ2Vycm9yJyBpZiB0aGUgb2JqZWN0IHdhcyBmb3VuZCBidXRcbiAgICAgKiBjb3VsZCBub3QgYmUgZm9ybWF0dGVkLlxuICAgICAqL1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11c2UtYmVmb3JlLWRlZmluZVxuICAgIHB1YmxpYyBhYnN0cmFjdCBnZXRKc29uVmFsdWUoa2V5OiBzdHJpbmcsIGNvbnRleHQ/OiBKc29uQ29udGV4dCk6IERldGFpbGVkUmVzdWx0PEpzb25WYWx1ZSwgSnNvblJlZmVyZW5jZU1hcEZhaWx1cmVSZWFzb24+O1xufVxuXG4vKipcbiAqIEluaXRpYWxpemF0aW9uIG9wdGlvbnMgZm9yIGEgQHNlZSBTaW1wbGVKc29uTWFwXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2ltcGxlSnNvbk1hcE9wdGlvbnMge1xuICAgIGtleVBvbGljeT86IFJlZmVyZW5jZU1hcEtleVBvbGljeTxKc29uVmFsdWU+LFxuICAgIGVkaXRvcj86IEpzb25FZGl0b3IsXG59XG5cbi8qKlxuICogQSBTaW1wbGVKc29uTWFwIHByZXNlbnRzIGEgdmlldyBvZiBhIHNpbXBsZSBtYXAgb2YgQHNlZSBKc29uVmFsdWVcbiAqL1xuZXhwb3J0IGNsYXNzIFNpbXBsZUpzb25NYXAgZXh0ZW5kcyBTaW1wbGVKc29uTWFwQmFzZTxKc29uVmFsdWU+IHtcbiAgICBwcm90ZWN0ZWQgX2VkaXRvcj86IEpzb25FZGl0b3I7XG5cbiAgICBwcm90ZWN0ZWQgY29uc3RydWN0b3IodmFsdWVzPzogTWFwT3JSZWNvcmQ8SnNvblZhbHVlPiwgY29udGV4dD86IEpzb25Db250ZXh0LCBvcHRpb25zPzogU2ltcGxlSnNvbk1hcE9wdGlvbnMpIHtcbiAgICAgICAgc3VwZXIodmFsdWVzLCBjb250ZXh0LCBvcHRpb25zPy5rZXlQb2xpY3kpO1xuICAgICAgICB0aGlzLl9lZGl0b3IgPSBvcHRpb25zPy5lZGl0b3I7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIG5ldyBAc2VlIFNpbXBsZUpzb25NYXAgZnJvbSB0aGUgc3VwcGxpZWQgb2JqZWN0c1xuICAgICAqIEBwYXJhbSB2YWx1ZXMgQSBzdHJpbmcta2V5ZWQgTWFwIG9yIFJlY29yZCBvZiB0aGUgQHNlZSBKc29uT2JqZWN0IHRvIGJlIHJldHVybmVkXG4gICAgICogQHBhcmFtIGNvbnRleHQgT3B0aW9uYWwgQHNlZSBKc29uQ29udGV4dCB1c2VkIHRvIGZvcm1hdCByZXR1cm5lZCB2YWx1ZXNcbiAgICAgKiBAcGFyYW0gb3B0aW9ucyBPcHRpb25hbCBAc2VlIFNpbXBsZUpzb25NYXBPcHRpb25zIGZvciBpbml0aWFsaXphdGlvblxuICAgICAqL1xuICAgIHB1YmxpYyBzdGF0aWMgY3JlYXRlU2ltcGxlKHZhbHVlcz86IE1hcE9yUmVjb3JkPEpzb25WYWx1ZT4sIGNvbnRleHQ/OiBKc29uQ29udGV4dCwgb3B0aW9ucz86IFNpbXBsZUpzb25NYXBPcHRpb25zKTogUmVzdWx0PFNpbXBsZUpzb25NYXA+IHtcbiAgICAgICAgcmV0dXJuIGNhcHR1cmVSZXN1bHQoKCkgPT4gbmV3IFNpbXBsZUpzb25NYXAodmFsdWVzLCBjb250ZXh0LCBvcHRpb25zKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyBhIEpTT04gdmFsdWUgc3BlY2lmaWVkIGJ5IGtleS5cbiAgICAgKiBAcGFyYW0ga2V5IGtleSBvZiB0aGUgb2JqZWN0IHRvIGJlIHJldHJpZXZlZFxuICAgICAqIEBwYXJhbSBjb250ZXh0IE9wdGlvbmFsIEBzZWUgSnNvbkNvbnRleHQgdXNlZCB0byBmb3JtYXQgdGhlIHZhbHVlXG4gICAgICogQHJldHVybnMgU3VjY2VzcyB3aXRoIHRoZSBmb3JtYXR0ZWQgb2JqZWN0IGlmIHN1Y2Nlc3NmdWwuIEZhaWx1cmUgd2l0aCBkZXRhaWwgJ3Vua25vd24nXG4gICAgICogaWYgbm8gc3VjaCBvYmplY3QgZXhpc3RzLCBvciBmYWlsdXJlIHdpdGggZGV0YWlsICdlcnJvcicgaWYgdGhlIG9iamVjdCB3YXMgZm91bmQgYnV0XG4gICAgICogY291bGQgbm90IGJlIGZvcm1hdHRlZC5cbiAgICAgKi9cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdXNlLWJlZm9yZS1kZWZpbmVcbiAgICBwdWJsaWMgZ2V0SnNvblZhbHVlKGtleTogc3RyaW5nLCBjb250ZXh0PzogSnNvbkNvbnRleHQpOiBEZXRhaWxlZFJlc3VsdDxKc29uVmFsdWUsIEpzb25SZWZlcmVuY2VNYXBGYWlsdXJlUmVhc29uPiB7XG4gICAgICAgIGNvbnRleHQgPSBjb250ZXh0ID8/IHRoaXMuX2NvbnRleHQ7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5fdmFsdWVzLmdldChrZXkpO1xuICAgICAgICBpZiAoIXZhbHVlKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFpbFdpdGhEZXRhaWwoYCR7a2V5fTogSlNPTiB2YWx1ZSBub3QgZm91bmRgLCAndW5rbm93bicpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLl9jbG9uZSh2YWx1ZSwgY29udGV4dCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF9jbG9uZSh2YWx1ZTogSnNvblZhbHVlLCBjb250ZXh0PzogSnNvbkNvbnRleHQpOiBEZXRhaWxlZFJlc3VsdDxKc29uVmFsdWUsIEpzb25SZWZlcmVuY2VNYXBGYWlsdXJlUmVhc29uPiB7XG4gICAgICAgIGlmICghdGhpcy5fZWRpdG9yKSB7XG4gICAgICAgICAgICBjb25zdCByZXN1bHQgPSBKc29uRWRpdG9yLmNyZWF0ZSgpO1xuICAgICAgICAgICAgLy8gaXN0YW5idWwgaWdub3JlIG5leHQ6IG5lYXJseSBpbXBvc3NpYmxlIHRvIHJlcHJvZHVjZVxuICAgICAgICAgICAgaWYgKHJlc3VsdC5pc0ZhaWx1cmUoKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWlsV2l0aERldGFpbChyZXN1bHQubWVzc2FnZSwgJ2Vycm9yJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLl9lZGl0b3IgPSByZXN1bHQudmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuX2VkaXRvci5jbG9uZSh2YWx1ZSwgY29udGV4dCkud2l0aEZhaWx1cmVEZXRhaWwoJ2Vycm9yJyk7XG4gICAgfVxufVxuXG4vKipcbiAqIEluaXRpYWxpemF0aW9uIG9wdGlvbnMgZm9yIGEgUHJlZml4ZWRKc29uTWFwXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgS2V5UHJlZml4T3B0aW9ucyB7XG4gICAgLyoqXG4gICAgICogSW5kaWNhdGVzIHdoZXRoZXIgdGhlIHByZWZpeCBzaG91bGQgYmUgYWRkZWQgYXV0b21hdGljYWxseSBhcyBuZWVkZWQgKGRlZmF1bHQgdHJ1ZSlcbiAgICAgKi9cbiAgICBhZGRQcmVmaXg/OiBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICogVGhlIHByZWZpeCB0byBiZSBlbmZvcmNlZFxuICAgICAqL1xuICAgIHByZWZpeDogc3RyaW5nO1xufVxuXG4vKipcbiAqIEEgUHJlZml4ZWRKc29uTWFwIGVuZm9yY2VzIGEgc3VwcGxpZWQgcHJlZml4IGZvciBhbGwgY29udGFpbmVkIHZhbHVlcywgb3B0aW9uYWxseVxuICogYWRkaW5nIHRoZSBwcmVmaXggYXMgbmVjZXNzYXJ5IChkZWZhdWx0IHRydWUpLlxuICovXG5leHBvcnQgY2xhc3MgUHJlZml4ZWRKc29uTWFwIGV4dGVuZHMgU2ltcGxlSnNvbk1hcCB7XG4gICAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKHZhbHVlcz86IE1hcE9yUmVjb3JkPEpzb25WYWx1ZT4sIGNvbnRleHQ/OiBKc29uQ29udGV4dCwgb3B0aW9ucz86IFNpbXBsZUpzb25NYXBPcHRpb25zKSB7XG4gICAgICAgIHN1cGVyKHZhbHVlcywgY29udGV4dCwgb3B0aW9ucyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIG5ldyBAc2VlIFByZWZpeGVkSnNvbk1hcCBmcm9tIHRoZSBzdXBwbGllZCB2YWx1ZXNcbiAgICAgKiBAcGFyYW0gcHJlZml4IEEgc3RyaW5nIHByZWZpeCB0byBiZSBlbmZvcmNlZCBmb3IgYW5kIGFkZGVkIHRvIGtleSBuYW1lcyBhcyBuZWNlc3NhcnlcbiAgICAgKiBAcGFyYW0gdmFsdWVzIEEgc3RyaW5nLWtleWVkIE1hcCBvciBSZWNvcmQgb2YgdGhlIEBzZWUgSnNvblZhbHVlIHRvIGJlIHJldHVybmVkXG4gICAgICogQHBhcmFtIGNvbnRleHQgT3B0aW9uYWwgQHNlZSBKc29uQ29udGV4dCB1c2VkIHRvIGZvcm1hdCByZXR1cm5lZCB2YWx1ZXNcbiAgICAgKiBAcGFyYW0gZWRpdG9yIE9wdGlvbmFsIEBzZWUgSnNvbkVkaXRvciB1c2VkIHRvIGZvcm1hdCByZXR1cm5lZCB2YWx1ZXNcbiAgICAgKi9cbiAgICBwdWJsaWMgc3RhdGljIGNyZWF0ZVByZWZpeGVkKHByZWZpeDogc3RyaW5nLCB2YWx1ZXM/OiBNYXBPclJlY29yZDxKc29uVmFsdWU+LCBjb250ZXh0PzogSnNvbkNvbnRleHQsIGVkaXRvcj86IEpzb25FZGl0b3IpOiBSZXN1bHQ8UHJlZml4ZWRKc29uTWFwPjtcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBuZXcgQHNlZSBQcmVmaXhlZEpzb25NYXAgZnJvbSB0aGUgc3VwcGxpZWQgdmFsdWVzXG4gICAgICogQHBhcmFtIHByZWZpeE9wdGlvbnMgQSBLZXlQcmVmaXhPcHRpb25zIGluZGljYXRpbmcgdGhlIHByZWZpeCB0byBlbmZvcmNlIGFuZCB3aGV0aGVyIHRoYXQgcHJlZml4IHNob3VsZFxuICAgICAqIGJlIGFkZGVkIGF1dG9tYXRpY2FsbHkgaWYgbmVjZXNzYXJ5IChkZWZhdWx0IHRydWUpXG4gICAgICogQHBhcmFtIHZhbHVlcyBBIHN0cmluZy1rZXllZCBNYXAgb3IgcmVjb3JkIG9mIHRoZSBAc2VlIEpzb25WYWx1ZSB0byBiZSByZXR1cm5lZFxuICAgICAqIEBwYXJhbSBjb250ZXh0IE9wdGlvbmFsIEBzZWUgSnNvbkNvbnRleHQgdXNlZCB0byBmb3JtYXQgcmV0dXJuZWQgdmFsdWVzXG4gICAgICogQHBhcmFtIGVkaXRvciBPcHRpb25hbCBAc2VlIEpzb25FZGl0b3IgdXNlZCB0byBmb3JtYXQgcmV0dXJuZWQgdmFsdWVzXG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyBjcmVhdGVQcmVmaXhlZChwcmVmaXhPcHRpb25zOiBLZXlQcmVmaXhPcHRpb25zLCB2YWx1ZXM/OiBNYXBPclJlY29yZDxKc29uVmFsdWU+LCBjb250ZXh0PzogSnNvbkNvbnRleHQsIGVkaXRvcj86IEpzb25FZGl0b3IpOiBSZXN1bHQ8UHJlZml4ZWRKc29uTWFwPjtcbiAgICBwdWJsaWMgc3RhdGljIGNyZWF0ZVByZWZpeGVkKHByZWZpeE9wdGlvbnM6IHN0cmluZ3xLZXlQcmVmaXhPcHRpb25zLCB2YWx1ZXM/OiBNYXBPclJlY29yZDxKc29uVmFsdWU+LCBjb250ZXh0PzogSnNvbkNvbnRleHQsIGVkaXRvcj86IEpzb25FZGl0b3IpOiBSZXN1bHQ8UHJlZml4ZWRKc29uTWFwPiB7XG4gICAgICAgIHJldHVybiBjYXB0dXJlUmVzdWx0KCgpID0+IG5ldyBQcmVmaXhlZEpzb25NYXAodmFsdWVzLCBjb250ZXh0LCB7IGtleVBvbGljeTogdGhpcy5fdG9Qb2xpY3kocHJlZml4T3B0aW9ucyksIGVkaXRvciB9KSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIHN0YXRpYyBfdG9Qb2xpY3kocHJlZml4T3B0aW9uczogc3RyaW5nfEtleVByZWZpeE9wdGlvbnMpOiBSZWZlcmVuY2VNYXBLZXlQb2xpY3k8SnNvblZhbHVlPiB7XG4gICAgICAgIGlmICh0eXBlb2YgcHJlZml4T3B0aW9ucyA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgUHJlZml4S2V5UG9saWN5KHByZWZpeE9wdGlvbnMsIHsgbWFrZVZhbGlkOiB0cnVlIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZXcgUHJlZml4S2V5UG9saWN5KHByZWZpeE9wdGlvbnMucHJlZml4LCB7IG1ha2VWYWxpZDogKHByZWZpeE9wdGlvbnMuYWRkUHJlZml4ICE9PSBmYWxzZSkgfSk7XG4gICAgfVxufVxuXG4vKipcbiAqIEEgQ29tcG9zaXRlSnNvbk1hcCBwcmVzZW50cyBhIGNvbXBvc2VkIHZpZXcgb2Ygb25lIG9yIG1vcmUgb3RoZXJcbiAqIEpzb25SZWZlcmVuY2VNYXBzLlxuICovXG5leHBvcnQgY2xhc3MgQ29tcG9zaXRlSnNvbk1hcCBpbXBsZW1lbnRzIEpzb25SZWZlcmVuY2VNYXAge1xuICAgIHByb3RlY3RlZCBfbWFwczogSnNvblJlZmVyZW5jZU1hcFtdO1xuXG4gICAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKG1hcHM6IEpzb25SZWZlcmVuY2VNYXBbXSkge1xuICAgICAgICB0aGlzLl9tYXBzID0gbWFwcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgbmV3IEBzZWUgQ29tcG9zaXRlSnNvbk1hcCBmcm9tIHRoZSBzdXBwbGllZCBtYXBzXG4gICAgICogQHBhcmFtIG1hcHMgb25lIG9yIG1vcmUgb2JqZWN0IG1hcHMgdG8gYmUgY29tcG9zZWRcbiAgICAgKi9cbiAgICBwdWJsaWMgc3RhdGljIGNyZWF0ZShtYXBzOiBKc29uUmVmZXJlbmNlTWFwW10pOiBSZXN1bHQ8Q29tcG9zaXRlSnNvbk1hcD4ge1xuICAgICAgICByZXR1cm4gY2FwdHVyZVJlc3VsdCgoKSA9PiBuZXcgQ29tcG9zaXRlSnNvbk1hcChtYXBzKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGV0ZXJtaW5lIGlmIGEga2V5IG1pZ2h0IGJlIHZhbGlkIGZvciB0aGlzIG1hcCBidXQgZG9lcyBub3QgZGV0ZXJtaW5lXG4gICAgICogaWYga2V5IGFjdHVhbGx5IGV4aXN0cy4gQWxsb3dzIGtleSByYW5nZSB0byBiZSBjb25zdHJhaW5lZC5cbiAgICAgKiBAcGFyYW0ga2V5IGtleSB0byBiZSB0ZXN0ZWRcbiAgICAgKiBAcmV0dXJucyB0cnVlIGlmIHRoZSBrZXkgaXMgaW4gdGhlIHZhbGlkIHJhbmdlLCBmYWxzZSBvdGhlcndpc2UuXG4gICAgICovXG4gICAgcHVibGljIGtleUlzSW5SYW5nZShrZXk6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fbWFwcy5maW5kKChtYXApID0+IG1hcC5rZXlJc0luUmFuZ2Uoa2V5KSkgIT09IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEZXRlcm1pbmVzIGlmIGFuIG9iamVjdCB3aXRoIHRoZSBzcGVjaWZpZWQga2V5IGFjdHVhbGx5IGV4aXN0cyBpbiB0aGUgbWFwLlxuICAgICAqIEBwYXJhbSBrZXkga2V5IHRvIGJlIHRlc3RlZFxuICAgICAqIEByZXR1cm5zIHRydWUgaWYgYW4gb2JqZWN0IHdpdGggdGhlIHNwZWNpZmllZCBrZXkgZXhpc3RzLCBmYWxzZSBvdGhlcndpc2UuXG4gICAgICovXG4gICAgcHVibGljIGhhcyhrZXk6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fbWFwcy5maW5kKChtYXApID0+IG1hcC5oYXMoa2V5KSkgIT09IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIGEgSlNPTiBvYmplY3Qgc3BlY2lmaWVkIGJ5IGtleS5cbiAgICAgKiBAcGFyYW0ga2V5IGtleSBvZiB0aGUgb2JqZWN0IHRvIGJlIHJldHJpZXZlZFxuICAgICAqIEBwYXJhbSBjb250ZXh0IG9wdGlvbmFsIEBzZWUgSnNvbkNvbnRleHQgdXNlZCB0byBmb3JtYXQgdGhlIG9iamVjdFxuICAgICAqIEByZXR1cm5zIFN1Y2Nlc3Mgd2l0aCB0aGUgZm9ybWF0dGVkIG9iamVjdCBpZiBzdWNjZXNzZnVsLiBGYWlsdXJlIHdpdGggZGV0YWlsICd1bmtub3duJ1xuICAgICAqIGlmIG5vIHN1Y2ggb2JqZWN0IGV4aXN0cywgb3IgZmFpbHVyZSB3aXRoIGRldGFpbCAnZXJyb3InIGlmIHRoZSBvYmplY3Qgd2FzIGZvdW5kIGJ1dFxuICAgICAqIGNvdWxkIG5vdCBiZSBmb3JtYXR0ZWQuXG4gICAgICovXG4gICAgcHVibGljIGdldEpzb25PYmplY3Qoa2V5OiBzdHJpbmcsIGNvbnRleHQ/OiBKc29uQ29udGV4dCk6IERldGFpbGVkUmVzdWx0PEpzb25PYmplY3QsIEpzb25SZWZlcmVuY2VNYXBGYWlsdXJlUmVhc29uPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldEpzb25WYWx1ZShrZXksIGNvbnRleHQpLm9uU3VjY2VzcygoanYpID0+IHtcbiAgICAgICAgICAgIGlmICghaXNKc29uT2JqZWN0KGp2KSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWlsV2l0aERldGFpbChgJHtrZXl9OiBub3QgYW4gb2JqZWN0YCwgJ2Vycm9yJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gc3VjY2VlZFdpdGhEZXRhaWwoanYpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIGEgSlNPTiB2YWx1ZSBzcGVjaWZpZWQgYnkga2V5LlxuICAgICAqIEBwYXJhbSBrZXkga2V5IG9mIHRoZSBvYmplY3QgdG8gYmUgcmV0cmlldmVkXG4gICAgICogQHBhcmFtIGNvbnRleHQgT3B0aW9uYWwgQHNlZSBKc29uQ29udGV4dCB1c2VkIHRvIGZvcm1hdCB0aGUgdmFsdWVcbiAgICAgKiBAcmV0dXJucyBTdWNjZXNzIHdpdGggdGhlIGZvcm1hdHRlZCBvYmplY3QgaWYgc3VjY2Vzc2Z1bC4gRmFpbHVyZSB3aXRoIGRldGFpbCAndW5rbm93bidcbiAgICAgKiBpZiBubyBzdWNoIG9iamVjdCBleGlzdHMsIG9yIGZhaWx1cmUgd2l0aCBkZXRhaWwgJ2Vycm9yJyBpZiB0aGUgb2JqZWN0IHdhcyBmb3VuZCBidXRcbiAgICAgKiBjb3VsZCBub3QgYmUgZm9ybWF0dGVkLlxuICAgICAqL1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11c2UtYmVmb3JlLWRlZmluZVxuICAgIHB1YmxpYyBnZXRKc29uVmFsdWUoa2V5OiBzdHJpbmcsIGNvbnRleHQ/OiBKc29uQ29udGV4dCk6IERldGFpbGVkUmVzdWx0PEpzb25WYWx1ZSwgSnNvblJlZmVyZW5jZU1hcEZhaWx1cmVSZWFzb24+IHtcbiAgICAgICAgZm9yIChjb25zdCBtYXAgb2YgdGhpcy5fbWFwcykge1xuICAgICAgICAgICAgaWYgKG1hcC5rZXlJc0luUmFuZ2Uoa2V5KSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IG1hcC5nZXRKc29uVmFsdWUoa2V5LCBjb250ZXh0KTtcbiAgICAgICAgICAgICAgICBpZiAocmVzdWx0LmlzU3VjY2VzcygpIHx8IChyZXN1bHQuZGV0YWlsID09PSAnZXJyb3InKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFpbFdpdGhEZXRhaWwoYCR7a2V5fTogdmFsdWUgbm90IGZvdW5kYCwgJ3Vua25vd24nKTtcbiAgICB9XG59XG4iXX0=
|
|
202
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNvblJlZmVyZW5jZU1hcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9qc29uUmVmZXJlbmNlTWFwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FvQkc7OztBQUVILDRDQVV1QjtBQUd2QixxQ0FBK0Q7QUFDL0Qsd0RBQXFEO0FBTXJEOzs7R0FHRztBQUNILE1BQWEscUJBQXFCO0lBSTlCLFlBQW1CLE9BQThDLEVBQUUsT0FBNEM7UUFDM0csSUFBSSxDQUFDLGVBQWUsR0FBRyxPQUFPLENBQUM7UUFDL0IsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLGFBQVAsT0FBTyxjQUFQLE9BQU8sR0FBSSxxQkFBcUIsQ0FBQyxtQkFBbUIsQ0FBQztJQUN6RSxDQUFDO0lBRU0sTUFBTSxDQUFDLG1CQUFtQixDQUFDLEdBQVc7UUFDekMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQy9FLENBQUM7SUFFTSxPQUFPLENBQUMsR0FBVyxFQUFFLElBQVE7UUFDaEMsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRU0sUUFBUSxDQUFDLEdBQVcsRUFBRSxJQUFRLEVBQUUsUUFBK0M7UUFDbEYsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBQSxrQkFBTyxFQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFBLGVBQUksRUFBQyxHQUFHLEdBQUcsZUFBZSxDQUFDLENBQUM7SUFDaEYsQ0FBQztJQUVNLGFBQWEsQ0FBQyxLQUFvQixFQUFFLE9BQThD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QzthQUNsRDtZQUNELElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQztTQUMvQjtRQUNELE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3pFLENBQUM7Q0FDSjtBQS9DRCxzQ0ErQ0M7QUFpQkQ7OztHQUdHO0FBQ0gsTUFBYSxlQUFnQixTQUFRLGFBQWE7SUFDOUMsWUFBc0IsTUFBK0IsRUFBRSxPQUFxQixFQUFFLE9BQThCO1FBQ3hHLEtBQUssQ0FBQyxNQUFNLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFvQk0sTUFBTSxDQUFDLGNBQWMsQ0FBQyxhQUFzQyxFQUFFLE1BQStCLEVBQUUsT0FBcUIsRUFBRSxNQUFtQjtRQUM1SSxPQUFPLElBQUEsd0JBQWEsRUFBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLGVBQWUsQ0FBQyxNQUFNLEVBQUUsT0FBTyxFQUFFLEVBQUUsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzNILENBQUM7SUFFUyxNQUFNLENBQUMsU0FBUyxDQUFDLGFBQXNDO1FBQzdELElBQUksT0FBTyxhQUFhLEtBQUssUUFBUSxFQUFFO1lBQ25DLE9BQU8sSUFBSSxlQUFlLENBQUMsYUFBYSxFQUFFLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7U0FDbEU7UUFDRCxPQUFPLElBQUksZUFBZSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEVBQUUsRUFBRSxTQUFTLEVBQUUsQ0FBQyxhQUFhLENBQUMsU0FBUyxLQUFLLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN6RyxDQUFDO0NBQ0o7QUFqQ0QsMENBaUNDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAyMCBFcmlrIEZvcnR1bmVcbiAqXG4gKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4gKiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4gKiBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4gKiB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4gKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbiAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4gKlxuICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsXG4gKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuICpcbiAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1JcbiAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4gKiBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4gKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuICogT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEVcbiAqIFNPRlRXQVJFLlxuICovXG5cbmltcG9ydCB7XG4gICAgRGV0YWlsZWRSZXN1bHQsXG4gICAgUmVzdWx0LFxuICAgIGNhcHR1cmVSZXN1bHQsXG4gICAgZmFpbCxcbiAgICBmYWlsV2l0aERldGFpbCxcbiAgICBtYXBSZXN1bHRzLFxuICAgIHJlY29yZFRvTWFwLFxuICAgIHN1Y2NlZWQsXG4gICAgc3VjY2VlZFdpdGhEZXRhaWwsXG59IGZyb20gJ0BmZ3YvdHMtdXRpbHMnO1xuXG5pbXBvcnQgeyBKc29uQ29udGV4dCwgSnNvblJlZmVyZW5jZU1hcCwgSnNvblJlZmVyZW5jZU1hcEZhaWx1cmVSZWFzb24gfSBmcm9tICcuL2pzb25Db250ZXh0JztcbmltcG9ydCB7IEpzb25PYmplY3QsIEpzb25WYWx1ZSwgaXNKc29uT2JqZWN0IH0gZnJvbSAnLi9jb21tb24nO1xuaW1wb3J0IHsgSnNvbkVkaXRvciB9IGZyb20gJy4vanNvbkVkaXRvci9qc29uRWRpdG9yJztcblxuZXhwb3J0IGludGVyZmFjZSBSZWZlcmVuY2VNYXBLZXlQb2xpY3lWYWxpZGF0ZU9wdGlvbnMge1xuICAgIG1ha2VWYWxpZD86IGJvb2xlYW47XG59XG5cbi8qKlxuICogUG9saWN5IG9iamVjdCByZXNwb25zaWJsZSBmb3IgdmFsaWRhdGluZyBvciBjb3JyZWN0aW5nXG4gKiBrZXlzIGluIGEgcmVmZXJlbmNlIG1hcFxuICovXG5leHBvcnQgY2xhc3MgUmVmZXJlbmNlTWFwS2V5UG9saWN5PFQ+IHtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgX2RlZmF1bHRPcHRpb25zPzogUmVmZXJlbmNlTWFwS2V5UG9saWN5VmFsaWRhdGVPcHRpb25zO1xuICAgIHByb3RlY3RlZCByZWFkb25seSBfaXNWYWxpZDogKGtleTogc3RyaW5nLCBpdGVtPzogVCkgPT4gYm9vbGVhbjtcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihvcHRpb25zPzogUmVmZXJlbmNlTWFwS2V5UG9saWN5VmFsaWRhdGVPcHRpb25zLCBpc1ZhbGlkPzogKGtleTogc3RyaW5nLCBpdGVtPzogVCkgPT4gYm9vbGVhbikge1xuICAgICAgICB0aGlzLl9kZWZhdWx0T3B0aW9ucyA9IG9wdGlvbnM7XG4gICAgICAgIHRoaXMuX2lzVmFsaWQgPSBpc1ZhbGlkID8/IFJlZmVyZW5jZU1hcEtleVBvbGljeS5kZWZhdWx0S2V5UHJlZGljYXRlO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZGVmYXVsdEtleVByZWRpY2F0ZShrZXk6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gKGtleS5sZW5ndGggPiAwKSAmJiAoIWtleS5pbmNsdWRlcygne3snKSkgJiYgKCFrZXkuc3RhcnRzV2l0aCgnPycpKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgaXNWYWxpZChrZXk6IHN0cmluZywgaXRlbT86IFQpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzVmFsaWQoa2V5LCBpdGVtKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgdmFsaWRhdGUoa2V5OiBzdHJpbmcsIGl0ZW0/OiBULCBfb3B0aW9ucz86IFJlZmVyZW5jZU1hcEtleVBvbGljeVZhbGlkYXRlT3B0aW9ucyk6IFJlc3VsdDxzdHJpbmc+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZChrZXksIGl0ZW0pID8gc3VjY2VlZChrZXkpIDogZmFpbChgJHtrZXl9OiBpbnZhbGlkIGtleWApO1xuICAgIH1cblxuICAgIHB1YmxpYyB2YWxpZGF0ZUl0ZW1zKGl0ZW1zOiBbc3RyaW5nLCBUXVtdLCBvcHRpb25zPzogUmVmZXJlbmNlTWFwS2V5UG9saWN5VmFsaWRhdGVPcHRpb25zKTogUmVzdWx0PFtzdHJpbmcsIFRdW10+IHtcbiAgICAgICAgcmV0dXJuIG1hcFJlc3VsdHMoaXRlbXMubWFwKChpdGVtKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy52YWxpZGF0ZSguLi5pdGVtLCBvcHRpb25zKS5vblN1Y2Nlc3MoKHZhbGlkKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHN1Y2NlZWQoW3ZhbGlkLCBpdGVtWzFdXSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSkpO1xuICAgIH1cblxuICAgIHB1YmxpYyB2YWxpZGF0ZU1hcChtYXA6IE1hcDxzdHJpbmcsIFQ+LCBvcHRpb25zPzogUmVmZXJlbmNlTWFwS2V5UG9saWN5VmFsaWRhdGVPcHRpb25zKTogUmVzdWx0PE1hcDxzdHJpbmcsIFQ+PiB7XG4gICAgICAgIHJldHVybiB0aGlzLnZhbGlkYXRlSXRlbXMoQXJyYXkuZnJvbShtYXAuZW50cmllcygpKSwgb3B0aW9ucykub25TdWNjZXNzKCh2YWxpZCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGNhcHR1cmVSZXN1bHQoKCkgPT4gbmV3IE1hcCh2YWxpZCkpO1xuICAgICAgICB9KTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBQcmVmaXhLZXlQb2xpY3k8VD4gZXh0ZW5kcyBSZWZlcmVuY2VNYXBLZXlQb2xpY3k8VD4ge1xuICAgIHB1YmxpYyByZWFkb25seSBwcmVmaXg6IHN0cmluZztcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihwcmVmaXg6IHN0cmluZywgb3B0aW9ucz86IFJlZmVyZW5jZU1hcEtleVBvbGljeVZhbGlkYXRlT3B0aW9ucykge1xuICAgICAgICBzdXBlcihvcHRpb25zKTtcbiAgICAgICAgdGhpcy5wcmVmaXggPSBwcmVmaXg7XG4gICAgfVxuXG4gICAgcHVibGljIGlzVmFsaWQoa2V5OiBzdHJpbmcsIF9pdGVtPzogVCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4ga2V5LnN0YXJ0c1dpdGgodGhpcy5wcmVmaXgpICYmIChrZXkgIT09IHRoaXMucHJlZml4KSAmJiBSZWZlcmVuY2VNYXBLZXlQb2xpY3kuZGVmYXVsdEtleVByZWRpY2F0ZShrZXkpO1xuICAgIH1cblxuICAgIHB1YmxpYyB2YWxpZGF0ZShrZXk6IHN0cmluZywgaXRlbT86IFQsIG9wdGlvbnM/OiBSZWZlcmVuY2VNYXBLZXlQb2xpY3lWYWxpZGF0ZU9wdGlvbnMpOiBSZXN1bHQ8c3RyaW5nPiB7XG4gICAgICAgIC8vIGlzdGFuYnVsIGlnbm9yZSBuZXh0XG4gICAgICAgIGNvbnN0IG1ha2VWYWxpZCA9IChvcHRpb25zID8/IHRoaXMuX2RlZmF1bHRPcHRpb25zKT8ubWFrZVZhbGlkID09PSB0cnVlO1xuICAgICAgICBpZiAodGhpcy5pc1ZhbGlkKGtleSwgaXRlbSkpIHtcbiAgICAgICAgICAgIHJldHVybiBzdWNjZWVkKGtleSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAobWFrZVZhbGlkICYmIFJlZmVyZW5jZU1hcEtleVBvbGljeS5kZWZhdWx0S2V5UHJlZGljYXRlKGtleSkpIHtcbiAgICAgICAgICAgIHJldHVybiBzdWNjZWVkKGAke3RoaXMucHJlZml4fSR7a2V5fWApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWlsKGAke2tleX06IGludmFsaWQga2V5YCk7XG4gICAgfVxufVxuXG5leHBvcnQgdHlwZSBNYXBPclJlY29yZDxUPiA9IE1hcDxzdHJpbmcsIFQ+fFJlY29yZDxzdHJpbmcsIFQ+O1xuXG4vKipcbiAqIEEgU2ltcGxlSnNvbk1hcCBwcmVzZW50cyBhIHZpZXcgb2YgYSBzaW1wbGUgbWFwIG9mIEBzZWUgSnNvblZhbHVlXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBTaW1wbGVKc29uTWFwQmFzZTxUPiBpbXBsZW1lbnRzIEpzb25SZWZlcmVuY2VNYXAge1xuICAgIHByb3RlY3RlZCByZWFkb25seSBfa2V5UG9saWN5OiBSZWZlcmVuY2VNYXBLZXlQb2xpY3k8VD47XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IF92YWx1ZXM6IE1hcDxzdHJpbmcsIFQ+O1xuICAgIHByb3RlY3RlZCByZWFkb25seSBfY29udGV4dD86IEpzb25Db250ZXh0O1xuXG4gICAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKHZhbHVlcz86IE1hcE9yUmVjb3JkPFQ+LCBjb250ZXh0PzogSnNvbkNvbnRleHQsIGtleVBvbGljeT86IFJlZmVyZW5jZU1hcEtleVBvbGljeTxUPikge1xuICAgICAgICB2YWx1ZXMgPSBTaW1wbGVKc29uTWFwQmFzZS5fdG9NYXAodmFsdWVzKS5vclRocm93KCk7XG4gICAgICAgIHRoaXMuX2tleVBvbGljeSA9IGtleVBvbGljeSA/PyBuZXcgUmVmZXJlbmNlTWFwS2V5UG9saWN5KCk7XG4gICAgICAgIHRoaXMuX3ZhbHVlcyA9IHRoaXMuX2tleVBvbGljeS52YWxpZGF0ZU1hcCh2YWx1ZXMpLm9yVGhyb3coKTtcbiAgICAgICAgdGhpcy5fY29udGV4dCA9IGNvbnRleHQ7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIHN0YXRpYyBfdG9NYXA8VD4odmFsdWVzPzogTWFwT3JSZWNvcmQ8VD4pOiBSZXN1bHQ8TWFwPHN0cmluZywgVD4+IHtcbiAgICAgICAgaWYgKHZhbHVlcyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gY2FwdHVyZVJlc3VsdCgoKSA9PiBuZXcgTWFwPHN0cmluZywgVD4oKSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoISh2YWx1ZXMgaW5zdGFuY2VvZiBNYXApKSB7XG4gICAgICAgICAgICByZXR1cm4gcmVjb3JkVG9NYXAodmFsdWVzLCAoX2ssIHYpID0+IHN1Y2NlZWQodikpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzdWNjZWVkKHZhbHVlcyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGV0ZXJtaW5lIGlmIGEga2V5IG1pZ2h0IGJlIHZhbGlkIGZvciB0aGlzIG1hcCBidXQgZG9lcyBub3QgZGV0ZXJtaW5lIGlmIGtleSBhY3R1YWxseVxuICAgICAqIGV4aXN0cy4gQWxsb3dzIGtleSByYW5nZSB0byBiZSBjb25zdHJhaW5lZC5cbiAgICAgKiBAcGFyYW0ga2V5IGtleSB0byBiZSB0ZXN0ZWRcbiAgICAgKiBAcmV0dXJucyB0cnVlIGlmIHRoZSBrZXkgaXMgaW4gdGhlIHZhbGlkIHJhbmdlLCBmYWxzZSBvdGhlcndpc2UuXG4gICAgICovXG4gICAgcHVibGljIGtleUlzSW5SYW5nZShrZXk6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fa2V5UG9saWN5LmlzVmFsaWQoa2V5KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEZXRlcm1pbmVzIGlmIGFuIG9iamVjdCB3aXRoIHRoZSBzcGVjaWZpZWQga2V5IGFjdHVhbGx5IGV4aXN0cyBpbiB0aGUgbWFwLlxuICAgICAqIEBwYXJhbSBrZXkga2V5IHRvIGJlIHRlc3RlZFxuICAgICAqIEByZXR1cm5zIHRydWUgaWYgYW4gb2JqZWN0IHdpdGggdGhlIHNwZWNpZmllZCBrZXkgZXhpc3RzLCBmYWxzZSBvdGhlcndpc2UuXG4gICAgICovXG4gICAgcHVibGljIGhhcyhrZXk6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fdmFsdWVzLmhhcyhrZXkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgYSBKU09OIG9iamVjdCBzcGVjaWZpZWQgYnkga2V5LlxuICAgICAqIEBwYXJhbSBrZXkga2V5IG9mIHRoZSBvYmplY3QgdG8gYmUgcmV0cmlldmVkXG4gICAgICogQHBhcmFtIGNvbnRleHQgb3B0aW9uYWwgQHNlZSBKc29uQ29udGV4dCB1c2VkIHRvIGZvcm1hdCB0aGUgb2JqZWN0XG4gICAgICogQHJldHVybnMgU3VjY2VzcyB3aXRoIHRoZSBmb3JtYXR0ZWQgb2JqZWN0IGlmIHN1Y2Nlc3NmdWwuIEZhaWx1cmUgd2l0aCBkZXRhaWwgJ3Vua25vd24nXG4gICAgICogaWYgbm8gc3VjaCBvYmplY3QgZXhpc3RzLCBvciBmYWlsdXJlIHdpdGggZGV0YWlsICdlcnJvcicgaWYgdGhlIG9iamVjdCB3YXMgZm91bmQgYnV0XG4gICAgICogY291bGQgbm90IGJlIGZvcm1hdHRlZC5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0SnNvbk9iamVjdChrZXk6IHN0cmluZywgY29udGV4dD86IEpzb25Db250ZXh0KTogRGV0YWlsZWRSZXN1bHQ8SnNvbk9iamVjdCwgSnNvblJlZmVyZW5jZU1hcEZhaWx1cmVSZWFzb24+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0SnNvblZhbHVlKGtleSwgY29udGV4dCkub25TdWNjZXNzKChqdikgPT4ge1xuICAgICAgICAgICAgaWYgKCFpc0pzb25PYmplY3QoanYpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhaWxXaXRoRGV0YWlsKGAke2tleX06IG5vdCBhbiBvYmplY3RgLCAnZXJyb3InKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBzdWNjZWVkV2l0aERldGFpbChqdik7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgYSBKU09OIHZhbHVlIHNwZWNpZmllZCBieSBrZXkuXG4gICAgICogQHBhcmFtIGtleSBrZXkgb2YgdGhlIG9iamVjdCB0byBiZSByZXRyaWV2ZWRcbiAgICAgKiBAcGFyYW0gY29udGV4dCBPcHRpb25hbCBAc2VlIEpzb25Db250ZXh0IHVzZWQgdG8gZm9ybWF0IHRoZSB2YWx1ZVxuICAgICAqIEByZXR1cm5zIFN1Y2Nlc3Mgd2l0aCB0aGUgZm9ybWF0dGVkIG9iamVjdCBpZiBzdWNjZXNzZnVsLiBGYWlsdXJlIHdpdGggZGV0YWlsICd1bmtub3duJ1xuICAgICAqIGlmIG5vIHN1Y2ggb2JqZWN0IGV4aXN0cywgb3IgZmFpbHVyZSB3aXRoIGRldGFpbCAnZXJyb3InIGlmIHRoZSBvYmplY3Qgd2FzIGZvdW5kIGJ1dFxuICAgICAqIGNvdWxkIG5vdCBiZSBmb3JtYXR0ZWQuXG4gICAgICovXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVzZS1iZWZvcmUtZGVmaW5lXG4gICAgcHVibGljIGFic3RyYWN0IGdldEpzb25WYWx1ZShrZXk6IHN0cmluZywgY29udGV4dD86IEpzb25Db250ZXh0KTogRGV0YWlsZWRSZXN1bHQ8SnNvblZhbHVlLCBKc29uUmVmZXJlbmNlTWFwRmFpbHVyZVJlYXNvbj47XG59XG5cbi8qKlxuICogSW5pdGlhbGl6YXRpb24gb3B0aW9ucyBmb3IgYSBAc2VlIFNpbXBsZUpzb25NYXBcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTaW1wbGVKc29uTWFwT3B0aW9ucyB7XG4gICAga2V5UG9saWN5PzogUmVmZXJlbmNlTWFwS2V5UG9saWN5PEpzb25WYWx1ZT4sXG4gICAgZWRpdG9yPzogSnNvbkVkaXRvcixcbn1cblxuLyoqXG4gKiBBIFNpbXBsZUpzb25NYXAgcHJlc2VudHMgYSB2aWV3IG9mIGEgc2ltcGxlIG1hcCBvZiBAc2VlIEpzb25WYWx1ZVxuICovXG5leHBvcnQgY2xhc3MgU2ltcGxlSnNvbk1hcCBleHRlbmRzIFNpbXBsZUpzb25NYXBCYXNlPEpzb25WYWx1ZT4ge1xuICAgIHByb3RlY3RlZCBfZWRpdG9yPzogSnNvbkVkaXRvcjtcblxuICAgIHByb3RlY3RlZCBjb25zdHJ1Y3Rvcih2YWx1ZXM/OiBNYXBPclJlY29yZDxKc29uVmFsdWU+LCBjb250ZXh0PzogSnNvbkNvbnRleHQsIG9wdGlvbnM/OiBTaW1wbGVKc29uTWFwT3B0aW9ucykge1xuICAgICAgICBzdXBlcih2YWx1ZXMsIGNvbnRleHQsIG9wdGlvbnM/LmtleVBvbGljeSk7XG4gICAgICAgIHRoaXMuX2VkaXRvciA9IG9wdGlvbnM/LmVkaXRvcjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgbmV3IEBzZWUgU2ltcGxlSnNvbk1hcCBmcm9tIHRoZSBzdXBwbGllZCBvYmplY3RzXG4gICAgICogQHBhcmFtIHZhbHVlcyBBIHN0cmluZy1rZXllZCBNYXAgb3IgUmVjb3JkIG9mIHRoZSBAc2VlIEpzb25PYmplY3QgdG8gYmUgcmV0dXJuZWRcbiAgICAgKiBAcGFyYW0gY29udGV4dCBPcHRpb25hbCBAc2VlIEpzb25Db250ZXh0IHVzZWQgdG8gZm9ybWF0IHJldHVybmVkIHZhbHVlc1xuICAgICAqIEBwYXJhbSBvcHRpb25zIE9wdGlvbmFsIEBzZWUgU2ltcGxlSnNvbk1hcE9wdGlvbnMgZm9yIGluaXRpYWxpemF0aW9uXG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyBjcmVhdGVTaW1wbGUodmFsdWVzPzogTWFwT3JSZWNvcmQ8SnNvblZhbHVlPiwgY29udGV4dD86IEpzb25Db250ZXh0LCBvcHRpb25zPzogU2ltcGxlSnNvbk1hcE9wdGlvbnMpOiBSZXN1bHQ8U2ltcGxlSnNvbk1hcD4ge1xuICAgICAgICByZXR1cm4gY2FwdHVyZVJlc3VsdCgoKSA9PiBuZXcgU2ltcGxlSnNvbk1hcCh2YWx1ZXMsIGNvbnRleHQsIG9wdGlvbnMpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIGEgSlNPTiB2YWx1ZSBzcGVjaWZpZWQgYnkga2V5LlxuICAgICAqIEBwYXJhbSBrZXkga2V5IG9mIHRoZSBvYmplY3QgdG8gYmUgcmV0cmlldmVkXG4gICAgICogQHBhcmFtIGNvbnRleHQgT3B0aW9uYWwgQHNlZSBKc29uQ29udGV4dCB1c2VkIHRvIGZvcm1hdCB0aGUgdmFsdWVcbiAgICAgKiBAcmV0dXJucyBTdWNjZXNzIHdpdGggdGhlIGZvcm1hdHRlZCBvYmplY3QgaWYgc3VjY2Vzc2Z1bC4gRmFpbHVyZSB3aXRoIGRldGFpbCAndW5rbm93bidcbiAgICAgKiBpZiBubyBzdWNoIG9iamVjdCBleGlzdHMsIG9yIGZhaWx1cmUgd2l0aCBkZXRhaWwgJ2Vycm9yJyBpZiB0aGUgb2JqZWN0IHdhcyBmb3VuZCBidXRcbiAgICAgKiBjb3VsZCBub3QgYmUgZm9ybWF0dGVkLlxuICAgICAqL1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11c2UtYmVmb3JlLWRlZmluZVxuICAgIHB1YmxpYyBnZXRKc29uVmFsdWUoa2V5OiBzdHJpbmcsIGNvbnRleHQ/OiBKc29uQ29udGV4dCk6IERldGFpbGVkUmVzdWx0PEpzb25WYWx1ZSwgSnNvblJlZmVyZW5jZU1hcEZhaWx1cmVSZWFzb24+IHtcbiAgICAgICAgY29udGV4dCA9IGNvbnRleHQgPz8gdGhpcy5fY29udGV4dDtcbiAgICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLl92YWx1ZXMuZ2V0KGtleSk7XG4gICAgICAgIGlmICghdmFsdWUpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWlsV2l0aERldGFpbChgJHtrZXl9OiBKU09OIHZhbHVlIG5vdCBmb3VuZGAsICd1bmtub3duJyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuX2Nsb25lKHZhbHVlLCBjb250ZXh0KTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgX2Nsb25lKHZhbHVlOiBKc29uVmFsdWUsIGNvbnRleHQ/OiBKc29uQ29udGV4dCk6IERldGFpbGVkUmVzdWx0PEpzb25WYWx1ZSwgSnNvblJlZmVyZW5jZU1hcEZhaWx1cmVSZWFzb24+IHtcbiAgICAgICAgaWYgKCF0aGlzLl9lZGl0b3IpIHtcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IEpzb25FZGl0b3IuY3JlYXRlKCk7XG4gICAgICAgICAgICAvLyBpc3RhbmJ1bCBpZ25vcmUgbmV4dDogbmVhcmx5IGltcG9zc2libGUgdG8gcmVwcm9kdWNlXG4gICAgICAgICAgICBpZiAocmVzdWx0LmlzRmFpbHVyZSgpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhaWxXaXRoRGV0YWlsKHJlc3VsdC5tZXNzYWdlLCAnZXJyb3InKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuX2VkaXRvciA9IHJlc3VsdC52YWx1ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5fZWRpdG9yLmNsb25lKHZhbHVlLCBjb250ZXh0KS53aXRoRmFpbHVyZURldGFpbCgnZXJyb3InKTtcbiAgICB9XG59XG5cbi8qKlxuICogSW5pdGlhbGl6YXRpb24gb3B0aW9ucyBmb3IgYSBQcmVmaXhlZEpzb25NYXBcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBLZXlQcmVmaXhPcHRpb25zIHtcbiAgICAvKipcbiAgICAgKiBJbmRpY2F0ZXMgd2hldGhlciB0aGUgcHJlZml4IHNob3VsZCBiZSBhZGRlZCBhdXRvbWF0aWNhbGx5IGFzIG5lZWRlZCAoZGVmYXVsdCB0cnVlKVxuICAgICAqL1xuICAgIGFkZFByZWZpeD86IGJvb2xlYW47XG5cbiAgICAvKipcbiAgICAgKiBUaGUgcHJlZml4IHRvIGJlIGVuZm9yY2VkXG4gICAgICovXG4gICAgcHJlZml4OiBzdHJpbmc7XG59XG5cbi8qKlxuICogQSBQcmVmaXhlZEpzb25NYXAgZW5mb3JjZXMgYSBzdXBwbGllZCBwcmVmaXggZm9yIGFsbCBjb250YWluZWQgdmFsdWVzLCBvcHRpb25hbGx5XG4gKiBhZGRpbmcgdGhlIHByZWZpeCBhcyBuZWNlc3NhcnkgKGRlZmF1bHQgdHJ1ZSkuXG4gKi9cbmV4cG9ydCBjbGFzcyBQcmVmaXhlZEpzb25NYXAgZXh0ZW5kcyBTaW1wbGVKc29uTWFwIHtcbiAgICBwcm90ZWN0ZWQgY29uc3RydWN0b3IodmFsdWVzPzogTWFwT3JSZWNvcmQ8SnNvblZhbHVlPiwgY29udGV4dD86IEpzb25Db250ZXh0LCBvcHRpb25zPzogU2ltcGxlSnNvbk1hcE9wdGlvbnMpIHtcbiAgICAgICAgc3VwZXIodmFsdWVzLCBjb250ZXh0LCBvcHRpb25zKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgbmV3IEBzZWUgUHJlZml4ZWRKc29uTWFwIGZyb20gdGhlIHN1cHBsaWVkIHZhbHVlc1xuICAgICAqIEBwYXJhbSBwcmVmaXggQSBzdHJpbmcgcHJlZml4IHRvIGJlIGVuZm9yY2VkIGZvciBhbmQgYWRkZWQgdG8ga2V5IG5hbWVzIGFzIG5lY2Vzc2FyeVxuICAgICAqIEBwYXJhbSB2YWx1ZXMgQSBzdHJpbmcta2V5ZWQgTWFwIG9yIFJlY29yZCBvZiB0aGUgQHNlZSBKc29uVmFsdWUgdG8gYmUgcmV0dXJuZWRcbiAgICAgKiBAcGFyYW0gY29udGV4dCBPcHRpb25hbCBAc2VlIEpzb25Db250ZXh0IHVzZWQgdG8gZm9ybWF0IHJldHVybmVkIHZhbHVlc1xuICAgICAqIEBwYXJhbSBlZGl0b3IgT3B0aW9uYWwgQHNlZSBKc29uRWRpdG9yIHVzZWQgdG8gZm9ybWF0IHJldHVybmVkIHZhbHVlc1xuICAgICAqL1xuICAgIHB1YmxpYyBzdGF0aWMgY3JlYXRlUHJlZml4ZWQocHJlZml4OiBzdHJpbmcsIHZhbHVlcz86IE1hcE9yUmVjb3JkPEpzb25WYWx1ZT4sIGNvbnRleHQ/OiBKc29uQ29udGV4dCwgZWRpdG9yPzogSnNvbkVkaXRvcik6IFJlc3VsdDxQcmVmaXhlZEpzb25NYXA+O1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIG5ldyBAc2VlIFByZWZpeGVkSnNvbk1hcCBmcm9tIHRoZSBzdXBwbGllZCB2YWx1ZXNcbiAgICAgKiBAcGFyYW0gcHJlZml4T3B0aW9ucyBBIEtleVByZWZpeE9wdGlvbnMgaW5kaWNhdGluZyB0aGUgcHJlZml4IHRvIGVuZm9yY2UgYW5kIHdoZXRoZXIgdGhhdCBwcmVmaXggc2hvdWxkXG4gICAgICogYmUgYWRkZWQgYXV0b21hdGljYWxseSBpZiBuZWNlc3NhcnkgKGRlZmF1bHQgdHJ1ZSlcbiAgICAgKiBAcGFyYW0gdmFsdWVzIEEgc3RyaW5nLWtleWVkIE1hcCBvciByZWNvcmQgb2YgdGhlIEBzZWUgSnNvblZhbHVlIHRvIGJlIHJldHVybmVkXG4gICAgICogQHBhcmFtIGNvbnRleHQgT3B0aW9uYWwgQHNlZSBKc29uQ29udGV4dCB1c2VkIHRvIGZvcm1hdCByZXR1cm5lZCB2YWx1ZXNcbiAgICAgKiBAcGFyYW0gZWRpdG9yIE9wdGlvbmFsIEBzZWUgSnNvbkVkaXRvciB1c2VkIHRvIGZvcm1hdCByZXR1cm5lZCB2YWx1ZXNcbiAgICAgKi9cbiAgICBwdWJsaWMgc3RhdGljIGNyZWF0ZVByZWZpeGVkKHByZWZpeE9wdGlvbnM6IEtleVByZWZpeE9wdGlvbnMsIHZhbHVlcz86IE1hcE9yUmVjb3JkPEpzb25WYWx1ZT4sIGNvbnRleHQ/OiBKc29uQ29udGV4dCwgZWRpdG9yPzogSnNvbkVkaXRvcik6IFJlc3VsdDxQcmVmaXhlZEpzb25NYXA+O1xuICAgIHB1YmxpYyBzdGF0aWMgY3JlYXRlUHJlZml4ZWQocHJlZml4T3B0aW9uczogc3RyaW5nfEtleVByZWZpeE9wdGlvbnMsIHZhbHVlcz86IE1hcE9yUmVjb3JkPEpzb25WYWx1ZT4sIGNvbnRleHQ/OiBKc29uQ29udGV4dCwgZWRpdG9yPzogSnNvbkVkaXRvcik6IFJlc3VsdDxQcmVmaXhlZEpzb25NYXA+IHtcbiAgICAgICAgcmV0dXJuIGNhcHR1cmVSZXN1bHQoKCkgPT4gbmV3IFByZWZpeGVkSnNvbk1hcCh2YWx1ZXMsIGNvbnRleHQsIHsga2V5UG9saWN5OiB0aGlzLl90b1BvbGljeShwcmVmaXhPcHRpb25zKSwgZWRpdG9yIH0pKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgc3RhdGljIF90b1BvbGljeShwcmVmaXhPcHRpb25zOiBzdHJpbmd8S2V5UHJlZml4T3B0aW9ucyk6IFJlZmVyZW5jZU1hcEtleVBvbGljeTxKc29uVmFsdWU+IHtcbiAgICAgICAgaWYgKHR5cGVvZiBwcmVmaXhPcHRpb25zID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBQcmVmaXhLZXlQb2xpY3kocHJlZml4T3B0aW9ucywgeyBtYWtlVmFsaWQ6IHRydWUgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5ldyBQcmVmaXhLZXlQb2xpY3kocHJlZml4T3B0aW9ucy5wcmVmaXgsIHsgbWFrZVZhbGlkOiAocHJlZml4T3B0aW9ucy5hZGRQcmVmaXggIT09IGZhbHNlKSB9KTtcbiAgICB9XG59XG5cbiJdfQ==
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fgv/ts-json",
|
|
3
|
-
"version": "1.9.
|
|
3
|
+
"version": "1.9.7",
|
|
4
4
|
"description": "Typescript utilities for working with JSON",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"scripts": {
|
|
@@ -24,25 +24,25 @@
|
|
|
24
24
|
"author": "Erik Fortune",
|
|
25
25
|
"license": "MIT",
|
|
26
26
|
"devDependencies": {
|
|
27
|
-
"@fgv/ts-utils": "^1.9.
|
|
28
|
-
"@fgv/ts-utils-jest": "^1.9.
|
|
29
|
-
"@types/jest": "^29.5.
|
|
27
|
+
"@fgv/ts-utils": "^1.9.6",
|
|
28
|
+
"@fgv/ts-utils-jest": "^1.9.7",
|
|
29
|
+
"@types/jest": "^29.5.3",
|
|
30
30
|
"@types/mustache": "^4.2.2",
|
|
31
|
-
"@types/node": "^
|
|
32
|
-
"@typescript-eslint/eslint-plugin": "^
|
|
33
|
-
"@typescript-eslint/parser": "^
|
|
34
|
-
"eslint": "^8.
|
|
35
|
-
"eslint-config-standard": "^17.
|
|
36
|
-
"eslint-plugin-import": "^2.
|
|
31
|
+
"@types/node": "^20.4.5",
|
|
32
|
+
"@typescript-eslint/eslint-plugin": "^6.2.1",
|
|
33
|
+
"@typescript-eslint/parser": "^6.2.1",
|
|
34
|
+
"eslint": "^8.46.0",
|
|
35
|
+
"eslint-config-standard": "^17.1.0",
|
|
36
|
+
"eslint-plugin-import": "^2.28.0",
|
|
37
37
|
"eslint-plugin-node": "^11.1.0",
|
|
38
38
|
"eslint-plugin-promise": "^6.1.1",
|
|
39
|
-
"jest": "^29.
|
|
40
|
-
"jest-extended": "^
|
|
39
|
+
"jest": "^29.6.2",
|
|
40
|
+
"jest-extended": "^4.0.0",
|
|
41
41
|
"mustache": "^4.2.0",
|
|
42
|
-
"rimraf": "^
|
|
43
|
-
"ts-jest": "^29.
|
|
42
|
+
"rimraf": "^5.0.1",
|
|
43
|
+
"ts-jest": "^29.1.1",
|
|
44
44
|
"ts-node": "^10.9.1",
|
|
45
|
-
"typescript": "^
|
|
45
|
+
"typescript": "^5.1.6"
|
|
46
46
|
},
|
|
47
47
|
"peerDependencies": {
|
|
48
48
|
"@fgv/ts-utils": "^1.9.3",
|