@fgv/ts-json 1.9.6 → 2.0.2-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ts-json.d.ts +1826 -0
- package/dist/tsdoc-metadata.json +11 -0
- package/lib/index.d.ts +5 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +42 -0
- package/lib/index.js.map +1 -0
- package/lib/packlets/context/compositeJsonMap.d.ts +60 -0
- package/lib/packlets/context/compositeJsonMap.d.ts.map +1 -0
- package/lib/packlets/context/compositeJsonMap.js +105 -0
- package/lib/packlets/context/compositeJsonMap.js.map +1 -0
- package/lib/packlets/context/contextHelpers.d.ts +116 -0
- package/lib/packlets/context/contextHelpers.d.ts.map +1 -0
- package/lib/packlets/context/contextHelpers.js +191 -0
- package/lib/packlets/context/contextHelpers.js.map +1 -0
- package/lib/packlets/context/index.d.ts +4 -0
- package/lib/packlets/context/index.d.ts.map +1 -0
- package/lib/packlets/context/index.js +31 -0
- package/lib/packlets/context/index.js.map +1 -0
- package/lib/packlets/context/jsonContext.d.ts +84 -0
- package/lib/packlets/context/jsonContext.d.ts.map +1 -0
- package/lib/packlets/context/jsonContext.js +41 -0
- package/lib/packlets/context/jsonContext.js.map +1 -0
- package/lib/packlets/converters/converters.d.ts +54 -0
- package/lib/packlets/converters/converters.d.ts.map +1 -0
- package/lib/packlets/converters/converters.js +105 -0
- package/lib/packlets/converters/converters.js.map +1 -0
- package/lib/packlets/converters/file.d.ts +83 -0
- package/lib/packlets/converters/file.d.ts.map +1 -0
- package/lib/packlets/converters/file.js +162 -0
- package/lib/packlets/converters/file.js.map +1 -0
- package/lib/packlets/converters/index.d.ts +5 -0
- package/lib/packlets/converters/index.d.ts.map +1 -0
- package/lib/packlets/converters/index.js +56 -0
- package/lib/packlets/converters/index.js.map +1 -0
- package/lib/packlets/converters/jsonConverter.d.ts +276 -0
- package/lib/packlets/converters/jsonConverter.d.ts.map +1 -0
- package/lib/packlets/converters/jsonConverter.js +310 -0
- package/lib/packlets/converters/jsonConverter.js.map +1 -0
- package/lib/packlets/editor/common.d.ts +67 -0
- package/lib/packlets/editor/common.d.ts.map +1 -0
- package/lib/packlets/editor/common.js +3 -0
- package/lib/packlets/editor/common.js.map +1 -0
- package/lib/packlets/editor/index.d.ts +8 -0
- package/lib/packlets/editor/index.d.ts.map +1 -0
- package/{jsonEditor → lib/packlets/editor}/index.js +15 -9
- package/lib/packlets/editor/index.js.map +1 -0
- package/lib/packlets/editor/jsonEditor.d.ts +155 -0
- package/lib/packlets/editor/jsonEditor.d.ts.map +1 -0
- package/lib/packlets/editor/jsonEditor.js +332 -0
- package/lib/packlets/editor/jsonEditor.js.map +1 -0
- package/lib/packlets/editor/jsonEditorRule.d.ts +64 -0
- package/lib/packlets/editor/jsonEditorRule.d.ts.map +1 -0
- package/lib/packlets/editor/jsonEditorRule.js +54 -0
- package/lib/packlets/editor/jsonEditorRule.js.map +1 -0
- package/lib/packlets/editor/jsonEditorState.d.ts +125 -0
- package/lib/packlets/editor/jsonEditorState.d.ts.map +1 -0
- package/lib/packlets/editor/jsonEditorState.js +177 -0
- package/lib/packlets/editor/jsonEditorState.js.map +1 -0
- package/lib/packlets/editor/jsonReferenceMap.d.ts +303 -0
- package/lib/packlets/editor/jsonReferenceMap.d.ts.map +1 -0
- package/lib/packlets/editor/jsonReferenceMap.js +324 -0
- package/lib/packlets/editor/jsonReferenceMap.js.map +1 -0
- package/lib/packlets/editor/rules/conditional.d.ts +107 -0
- package/lib/packlets/editor/rules/conditional.d.ts.map +1 -0
- package/lib/packlets/editor/rules/conditional.js +167 -0
- package/lib/packlets/editor/rules/conditional.js.map +1 -0
- package/{jsonEditor → lib/packlets/editor}/rules/index.d.ts +1 -0
- package/lib/packlets/editor/rules/index.d.ts.map +1 -0
- package/lib/packlets/editor/rules/index.js +42 -0
- package/lib/packlets/editor/rules/index.js.map +1 -0
- package/lib/packlets/editor/rules/multivalue.d.ts +94 -0
- package/lib/packlets/editor/rules/multivalue.d.ts.map +1 -0
- package/lib/packlets/editor/rules/multivalue.js +141 -0
- package/lib/packlets/editor/rules/multivalue.js.map +1 -0
- package/lib/packlets/editor/rules/references.d.ts +69 -0
- package/lib/packlets/editor/rules/references.d.ts.map +1 -0
- package/lib/packlets/editor/rules/references.js +159 -0
- package/lib/packlets/editor/rules/references.js.map +1 -0
- package/lib/packlets/editor/rules/templates.d.ts +74 -0
- package/lib/packlets/editor/rules/templates.d.ts.map +1 -0
- package/lib/packlets/editor/rules/templates.js +127 -0
- package/lib/packlets/editor/rules/templates.js.map +1 -0
- package/lib/packlets/json/common.d.ts +85 -0
- package/lib/packlets/json/common.d.ts.map +1 -0
- package/lib/packlets/json/common.js +123 -0
- package/lib/packlets/json/common.js.map +1 -0
- package/lib/packlets/json/index.d.ts +2 -0
- package/lib/packlets/json/index.d.ts.map +1 -0
- package/lib/packlets/json/index.js +39 -0
- package/lib/packlets/json/index.js.map +1 -0
- package/package.json +58 -49
- package/common.d.ts +0 -58
- package/common.js +0 -116
- package/compositeJsonMap.d.ts +0 -47
- package/compositeJsonMap.js +0 -97
- package/contextHelpers.d.ts +0 -21
- package/contextHelpers.js +0 -101
- package/converters.d.ts +0 -37
- package/converters.js +0 -92
- package/file.d.ts +0 -60
- package/file.js +0 -140
- package/index.d.ts +0 -10
- package/index.js +0 -62
- package/jsonContext.d.ts +0 -74
- package/jsonContext.js +0 -40
- package/jsonConverter.d.ts +0 -229
- package/jsonConverter.js +0 -292
- package/jsonEditor/common.d.ts +0 -36
- package/jsonEditor/common.js +0 -3
- package/jsonEditor/index.d.ts +0 -5
- package/jsonEditor/jsonEditor.d.ts +0 -74
- package/jsonEditor/jsonEditor.js +0 -259
- package/jsonEditor/jsonEditorRule.d.ts +0 -47
- package/jsonEditor/jsonEditorRule.js +0 -44
- package/jsonEditor/jsonEditorState.d.ts +0 -24
- package/jsonEditor/jsonEditorState.js +0 -86
- package/jsonEditor/rules/conditional.d.ts +0 -84
- package/jsonEditor/rules/conditional.js +0 -146
- package/jsonEditor/rules/index.js +0 -21
- package/jsonEditor/rules/multivalue.d.ts +0 -78
- package/jsonEditor/rules/multivalue.js +0 -129
- package/jsonEditor/rules/references.d.ts +0 -62
- package/jsonEditor/rules/references.js +0 -158
- package/jsonEditor/rules/templates.d.ts +0 -56
- package/jsonEditor/rules/templates.js +0 -115
- package/jsonReferenceMap.d.ts +0 -138
- package/jsonReferenceMap.js +0 -202
package/common.d.ts
DELETED
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
import { Result } from '@fgv/ts-utils';
|
|
2
|
-
export type JsonPrimitive = boolean | number | string | null;
|
|
3
|
-
export interface JsonObject {
|
|
4
|
-
[key: string]: JsonValue;
|
|
5
|
-
}
|
|
6
|
-
export type JsonValue = JsonPrimitive | JsonObject | JsonArray;
|
|
7
|
-
export interface JsonArray extends Array<JsonValue> {
|
|
8
|
-
}
|
|
9
|
-
/**
|
|
10
|
-
* Classes of JSON value
|
|
11
|
-
*/
|
|
12
|
-
export type JsonValueType = 'primitive' | 'object' | 'array';
|
|
13
|
-
/**
|
|
14
|
-
* Test if an unknown is a JsonValue
|
|
15
|
-
* @param from The unknown to be tested
|
|
16
|
-
* @returns true if the supplied parameter is a valid JSON primitive,
|
|
17
|
-
* false otherwise.
|
|
18
|
-
*/
|
|
19
|
-
export declare function isJsonPrimitive(from: unknown): from is JsonPrimitive;
|
|
20
|
-
/**
|
|
21
|
-
* Test if an unknown is potentially a JsonObject
|
|
22
|
-
* @param from The unknown to be tested
|
|
23
|
-
* @returns true if the supplied parameter is a non-array object,
|
|
24
|
-
* false otherwise.
|
|
25
|
-
*/
|
|
26
|
-
export declare function isJsonObject(from: unknown): from is JsonObject;
|
|
27
|
-
/**
|
|
28
|
-
* Test if an unknown is potentially a JsonArary
|
|
29
|
-
* @param from The unknown to be tested
|
|
30
|
-
* @returns true if the supplied parameter is an array object,
|
|
31
|
-
* false otherwise
|
|
32
|
-
*/
|
|
33
|
-
export declare function isJsonArray(from: unknown): from is JsonArray;
|
|
34
|
-
/**
|
|
35
|
-
* Identifies whether some unknown value is a primitive,
|
|
36
|
-
* object or array. Fails for any value that cannot be
|
|
37
|
-
* converted to JSON (e.g. a function) _but_ this is a
|
|
38
|
-
* shallow test - it does not test the properties of an
|
|
39
|
-
* object or elements in an array.
|
|
40
|
-
* @param from The unknown value to be tested
|
|
41
|
-
*/
|
|
42
|
-
export declare function classifyJsonValue(from: unknown): Result<JsonValueType>;
|
|
43
|
-
/**
|
|
44
|
-
* Picks a nested field from a supplied JsonObject
|
|
45
|
-
* @param src The object from which the field is to be picked
|
|
46
|
-
* @param path Dot-separated path of the member to be picked
|
|
47
|
-
* @returns Success with the property if the path is valid, Failure
|
|
48
|
-
* otherwise.
|
|
49
|
-
*/
|
|
50
|
-
export declare function pickJsonValue(src: JsonObject, path: string): Result<JsonValue>;
|
|
51
|
-
/**
|
|
52
|
-
* Picks a nested JsonObject from a supplied JsonObject
|
|
53
|
-
* @param src The object from which the field is to be picked
|
|
54
|
-
* @param path Dot-separated path of the member to be picked
|
|
55
|
-
* @returns Success with the property if the path is valid and the value
|
|
56
|
-
* is an object. Returns failure with details if an error occurs.
|
|
57
|
-
*/
|
|
58
|
-
export declare function pickJsonObject(src: JsonObject, path: string): Result<JsonObject>;
|
package/common.js
DELETED
|
@@ -1,116 +0,0 @@
|
|
|
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.pickJsonObject = exports.pickJsonValue = exports.classifyJsonValue = exports.isJsonArray = exports.isJsonObject = exports.isJsonPrimitive = void 0;
|
|
25
|
-
const ts_utils_1 = require("@fgv/ts-utils");
|
|
26
|
-
/**
|
|
27
|
-
* Test if an unknown is a JsonValue
|
|
28
|
-
* @param from The unknown to be tested
|
|
29
|
-
* @returns true if the supplied parameter is a valid JSON primitive,
|
|
30
|
-
* false otherwise.
|
|
31
|
-
*/
|
|
32
|
-
function isJsonPrimitive(from) {
|
|
33
|
-
return ((typeof from === 'boolean') || (typeof from === 'number') || (typeof from === 'string') || (from === null));
|
|
34
|
-
}
|
|
35
|
-
exports.isJsonPrimitive = isJsonPrimitive;
|
|
36
|
-
/**
|
|
37
|
-
* Test if an unknown is potentially a JsonObject
|
|
38
|
-
* @param from The unknown to be tested
|
|
39
|
-
* @returns true if the supplied parameter is a non-array object,
|
|
40
|
-
* false otherwise.
|
|
41
|
-
*/
|
|
42
|
-
function isJsonObject(from) {
|
|
43
|
-
return ((typeof from === 'object') && (!Array.isArray(from)));
|
|
44
|
-
}
|
|
45
|
-
exports.isJsonObject = isJsonObject;
|
|
46
|
-
/**
|
|
47
|
-
* Test if an unknown is potentially a JsonArary
|
|
48
|
-
* @param from The unknown to be tested
|
|
49
|
-
* @returns true if the supplied parameter is an array object,
|
|
50
|
-
* false otherwise
|
|
51
|
-
*/
|
|
52
|
-
function isJsonArray(from) {
|
|
53
|
-
return (typeof from === 'object') && Array.isArray(from);
|
|
54
|
-
}
|
|
55
|
-
exports.isJsonArray = isJsonArray;
|
|
56
|
-
/**
|
|
57
|
-
* Identifies whether some unknown value is a primitive,
|
|
58
|
-
* object or array. Fails for any value that cannot be
|
|
59
|
-
* converted to JSON (e.g. a function) _but_ this is a
|
|
60
|
-
* shallow test - it does not test the properties of an
|
|
61
|
-
* object or elements in an array.
|
|
62
|
-
* @param from The unknown value to be tested
|
|
63
|
-
*/
|
|
64
|
-
function classifyJsonValue(from) {
|
|
65
|
-
if (isJsonPrimitive(from)) {
|
|
66
|
-
return (0, ts_utils_1.succeed)('primitive');
|
|
67
|
-
}
|
|
68
|
-
else if (isJsonObject(from)) {
|
|
69
|
-
return (0, ts_utils_1.succeed)('object');
|
|
70
|
-
}
|
|
71
|
-
else if (isJsonArray(from)) {
|
|
72
|
-
return (0, ts_utils_1.succeed)('array');
|
|
73
|
-
}
|
|
74
|
-
return (0, ts_utils_1.fail)(`Invalid JSON: ${from}`);
|
|
75
|
-
}
|
|
76
|
-
exports.classifyJsonValue = classifyJsonValue;
|
|
77
|
-
/**
|
|
78
|
-
* Picks a nested field from a supplied JsonObject
|
|
79
|
-
* @param src The object from which the field is to be picked
|
|
80
|
-
* @param path Dot-separated path of the member to be picked
|
|
81
|
-
* @returns Success with the property if the path is valid, Failure
|
|
82
|
-
* otherwise.
|
|
83
|
-
*/
|
|
84
|
-
function pickJsonValue(src, path) {
|
|
85
|
-
let result = src;
|
|
86
|
-
for (const part of path.split('.')) {
|
|
87
|
-
if (result && isJsonObject(result)) {
|
|
88
|
-
result = result[part];
|
|
89
|
-
if (result === undefined) {
|
|
90
|
-
return (0, ts_utils_1.fail)(`${path}: child '${part}' does not exist`);
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
else {
|
|
94
|
-
return (0, ts_utils_1.fail)(`${path}: child '${part}' does not exist`);
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
return (0, ts_utils_1.succeed)(result);
|
|
98
|
-
}
|
|
99
|
-
exports.pickJsonValue = pickJsonValue;
|
|
100
|
-
/**
|
|
101
|
-
* Picks a nested JsonObject from a supplied JsonObject
|
|
102
|
-
* @param src The object from which the field is to be picked
|
|
103
|
-
* @param path Dot-separated path of the member to be picked
|
|
104
|
-
* @returns Success with the property if the path is valid and the value
|
|
105
|
-
* is an object. Returns failure with details if an error occurs.
|
|
106
|
-
*/
|
|
107
|
-
function pickJsonObject(src, path) {
|
|
108
|
-
return pickJsonValue(src, path).onSuccess((v) => {
|
|
109
|
-
if (!isJsonObject(v)) {
|
|
110
|
-
return (0, ts_utils_1.fail)(`${path}: not an object`);
|
|
111
|
-
}
|
|
112
|
-
return (0, ts_utils_1.succeed)(v);
|
|
113
|
-
});
|
|
114
|
-
}
|
|
115
|
-
exports.pickJsonObject = pickJsonObject;
|
|
116
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NvbW1vbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBb0JHOzs7QUFFSCw0Q0FBc0Q7QUFnQnREOzs7OztHQUtHO0FBQ0gsU0FBZ0IsZUFBZSxDQUFDLElBQWE7SUFDekMsT0FBTyxDQUFDLENBQUMsT0FBTyxJQUFJLEtBQUssU0FBUyxDQUFDLElBQUksQ0FBQyxPQUFPLElBQUksS0FBSyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sSUFBSSxLQUFLLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDeEgsQ0FBQztBQUZELDBDQUVDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxTQUFnQixZQUFZLENBQUMsSUFBYTtJQUN0QyxPQUFPLENBQUMsQ0FBQyxPQUFPLElBQUksS0FBSyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDbEUsQ0FBQztBQUZELG9DQUVDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxTQUFnQixXQUFXLENBQUMsSUFBYTtJQUNyQyxPQUFPLENBQUMsT0FBTyxJQUFJLEtBQUssUUFBUSxDQUFDLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUM3RCxDQUFDO0FBRkQsa0NBRUM7QUFFRDs7Ozs7OztHQU9HO0FBQ0gsU0FBZ0IsaUJBQWlCLENBQUMsSUFBYTtJQUMzQyxJQUFJLGVBQWUsQ0FBQyxJQUFJLENBQUMsRUFBRTtRQUN2QixPQUFPLElBQUEsa0JBQU8sRUFBQyxXQUFXLENBQUMsQ0FBQztLQUMvQjtTQUNJLElBQUksWUFBWSxDQUFDLElBQUksQ0FBQyxFQUFFO1FBQ3pCLE9BQU8sSUFBQSxrQkFBTyxFQUFDLFFBQVEsQ0FBQyxDQUFDO0tBQzVCO1NBQ0ksSUFBSSxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUU7UUFDeEIsT0FBTyxJQUFBLGtCQUFPLEVBQUMsT0FBTyxDQUFDLENBQUM7S0FDM0I7SUFDRCxPQUFPLElBQUEsZUFBSSxFQUFDLGlCQUFpQixJQUFJLEVBQUUsQ0FBQyxDQUFDO0FBQ3pDLENBQUM7QUFYRCw4Q0FXQztBQUVEOzs7Ozs7R0FNRztBQUNILFNBQWdCLGFBQWEsQ0FBQyxHQUFlLEVBQUUsSUFBWTtJQUN2RCxJQUFJLE1BQU0sR0FBYyxHQUFHLENBQUM7SUFDNUIsS0FBSyxNQUFNLElBQUksSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1FBQ2hDLElBQUksTUFBTSxJQUFJLFlBQVksQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUNoQyxNQUFNLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3RCLElBQUksTUFBTSxLQUFLLFNBQVMsRUFBRTtnQkFDdEIsT0FBTyxJQUFBLGVBQUksRUFBQyxHQUFHLElBQUksWUFBWSxJQUFJLGtCQUFrQixDQUFDLENBQUM7YUFDMUQ7U0FDSjthQUNJO1lBQ0QsT0FBTyxJQUFBLGVBQUksRUFBQyxHQUFHLElBQUksWUFBWSxJQUFJLGtCQUFrQixDQUFDLENBQUM7U0FDMUQ7S0FDSjtJQUNELE9BQU8sSUFBQSxrQkFBTyxFQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQzNCLENBQUM7QUFkRCxzQ0FjQztBQUVEOzs7Ozs7R0FNRztBQUNILFNBQWdCLGNBQWMsQ0FBQyxHQUFlLEVBQUUsSUFBWTtJQUN4RCxPQUFPLGFBQWEsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7UUFDNUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUNsQixPQUFPLElBQUEsZUFBSSxFQUFDLEdBQUcsSUFBSSxpQkFBaUIsQ0FBQyxDQUFDO1NBQ3pDO1FBQ0QsT0FBTyxJQUFBLGtCQUFPLEVBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdEIsQ0FBQyxDQUFDLENBQUM7QUFDUCxDQUFDO0FBUEQsd0NBT0MiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDIwIEVyaWsgRm9ydHVuZVxuICpcbiAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbiAqIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbiAqIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbiAqIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbiAqXG4gKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGxcbiAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4gKlxuICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4gKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbiAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbiAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4gKiBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRVxuICogU09GVFdBUkUuXG4gKi9cblxuaW1wb3J0IHsgUmVzdWx0LCBmYWlsLCBzdWNjZWVkIH0gZnJvbSAnQGZndi90cy11dGlscyc7XG5cbi8qIGVzbGludC1kaXNhYmxlIG5vLXVzZS1iZWZvcmUtZGVmaW5lICovXG5cbmV4cG9ydCB0eXBlIEpzb25QcmltaXRpdmUgPSBib29sZWFuIHwgbnVtYmVyIHwgc3RyaW5nIHwgbnVsbDtcbmV4cG9ydCBpbnRlcmZhY2UgSnNvbk9iamVjdCB7IFtrZXk6IHN0cmluZ106IEpzb25WYWx1ZSB9XG5cbmV4cG9ydCB0eXBlIEpzb25WYWx1ZSA9IEpzb25QcmltaXRpdmUgfCBKc29uT2JqZWN0IHwgSnNvbkFycmF5O1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1pbnRlcmZhY2VcbmV4cG9ydCBpbnRlcmZhY2UgSnNvbkFycmF5IGV4dGVuZHMgQXJyYXk8SnNvblZhbHVlPiB7IH1cblxuLyoqXG4gKiBDbGFzc2VzIG9mIEpTT04gdmFsdWVcbiAqL1xuZXhwb3J0IHR5cGUgSnNvblZhbHVlVHlwZSA9ICdwcmltaXRpdmUnfCdvYmplY3QnfCdhcnJheSc7XG5cbi8qKlxuICogVGVzdCBpZiBhbiB1bmtub3duIGlzIGEgSnNvblZhbHVlXG4gKiBAcGFyYW0gZnJvbSBUaGUgdW5rbm93biB0byBiZSB0ZXN0ZWRcbiAqIEByZXR1cm5zIHRydWUgaWYgdGhlIHN1cHBsaWVkIHBhcmFtZXRlciBpcyBhIHZhbGlkIEpTT04gcHJpbWl0aXZlLFxuICogZmFsc2Ugb3RoZXJ3aXNlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNKc29uUHJpbWl0aXZlKGZyb206IHVua25vd24pOiBmcm9tIGlzIEpzb25QcmltaXRpdmUge1xuICAgIHJldHVybiAoKHR5cGVvZiBmcm9tID09PSAnYm9vbGVhbicpIHx8ICh0eXBlb2YgZnJvbSA9PT0gJ251bWJlcicpIHx8ICh0eXBlb2YgZnJvbSA9PT0gJ3N0cmluZycpIHx8IChmcm9tID09PSBudWxsKSk7XG59XG5cbi8qKlxuICogVGVzdCBpZiBhbiB1bmtub3duIGlzIHBvdGVudGlhbGx5IGEgSnNvbk9iamVjdFxuICogQHBhcmFtIGZyb20gVGhlIHVua25vd24gdG8gYmUgdGVzdGVkXG4gKiBAcmV0dXJucyB0cnVlIGlmIHRoZSBzdXBwbGllZCBwYXJhbWV0ZXIgaXMgYSBub24tYXJyYXkgb2JqZWN0LFxuICogZmFsc2Ugb3RoZXJ3aXNlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNKc29uT2JqZWN0KGZyb206IHVua25vd24pOiBmcm9tIGlzIEpzb25PYmplY3Qge1xuICAgIHJldHVybiAoKHR5cGVvZiBmcm9tID09PSAnb2JqZWN0JykgJiYgKCFBcnJheS5pc0FycmF5KGZyb20pKSk7XG59XG5cbi8qKlxuICogVGVzdCBpZiBhbiB1bmtub3duIGlzIHBvdGVudGlhbGx5IGEgSnNvbkFyYXJ5XG4gKiBAcGFyYW0gZnJvbSBUaGUgdW5rbm93biB0byBiZSB0ZXN0ZWRcbiAqIEByZXR1cm5zIHRydWUgaWYgdGhlIHN1cHBsaWVkIHBhcmFtZXRlciBpcyBhbiBhcnJheSBvYmplY3QsXG4gKiBmYWxzZSBvdGhlcndpc2VcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzSnNvbkFycmF5KGZyb206IHVua25vd24pOiBmcm9tIGlzIEpzb25BcnJheSB7XG4gICAgcmV0dXJuICh0eXBlb2YgZnJvbSA9PT0gJ29iamVjdCcpICYmIEFycmF5LmlzQXJyYXkoZnJvbSk7XG59XG5cbi8qKlxuICogSWRlbnRpZmllcyB3aGV0aGVyIHNvbWUgdW5rbm93biB2YWx1ZSBpcyBhIHByaW1pdGl2ZSxcbiAqIG9iamVjdCBvciBhcnJheS4gRmFpbHMgZm9yIGFueSB2YWx1ZSB0aGF0IGNhbm5vdCBiZVxuICogY29udmVydGVkIHRvIEpTT04gKGUuZy4gYSBmdW5jdGlvbikgX2J1dF8gdGhpcyBpcyBhXG4gKiBzaGFsbG93IHRlc3QgLSBpdCBkb2VzIG5vdCB0ZXN0IHRoZSBwcm9wZXJ0aWVzIG9mIGFuXG4gKiBvYmplY3Qgb3IgZWxlbWVudHMgaW4gYW4gYXJyYXkuXG4gKiBAcGFyYW0gZnJvbSBUaGUgdW5rbm93biB2YWx1ZSB0byBiZSB0ZXN0ZWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNsYXNzaWZ5SnNvblZhbHVlKGZyb206IHVua25vd24pOiBSZXN1bHQ8SnNvblZhbHVlVHlwZT4ge1xuICAgIGlmIChpc0pzb25QcmltaXRpdmUoZnJvbSkpIHtcbiAgICAgICAgcmV0dXJuIHN1Y2NlZWQoJ3ByaW1pdGl2ZScpO1xuICAgIH1cbiAgICBlbHNlIGlmIChpc0pzb25PYmplY3QoZnJvbSkpIHtcbiAgICAgICAgcmV0dXJuIHN1Y2NlZWQoJ29iamVjdCcpO1xuICAgIH1cbiAgICBlbHNlIGlmIChpc0pzb25BcnJheShmcm9tKSkge1xuICAgICAgICByZXR1cm4gc3VjY2VlZCgnYXJyYXknKTtcbiAgICB9XG4gICAgcmV0dXJuIGZhaWwoYEludmFsaWQgSlNPTjogJHtmcm9tfWApO1xufVxuXG4vKipcbiAqIFBpY2tzIGEgbmVzdGVkIGZpZWxkIGZyb20gYSBzdXBwbGllZCBKc29uT2JqZWN0XG4gKiBAcGFyYW0gc3JjIFRoZSBvYmplY3QgZnJvbSB3aGljaCB0aGUgZmllbGQgaXMgdG8gYmUgcGlja2VkXG4gKiBAcGFyYW0gcGF0aCBEb3Qtc2VwYXJhdGVkIHBhdGggb2YgdGhlIG1lbWJlciB0byBiZSBwaWNrZWRcbiAqIEByZXR1cm5zIFN1Y2Nlc3Mgd2l0aCB0aGUgcHJvcGVydHkgaWYgdGhlIHBhdGggaXMgdmFsaWQsIEZhaWx1cmVcbiAqIG90aGVyd2lzZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBpY2tKc29uVmFsdWUoc3JjOiBKc29uT2JqZWN0LCBwYXRoOiBzdHJpbmcpOiBSZXN1bHQ8SnNvblZhbHVlPiB7XG4gICAgbGV0IHJlc3VsdDogSnNvblZhbHVlID0gc3JjO1xuICAgIGZvciAoY29uc3QgcGFydCBvZiBwYXRoLnNwbGl0KCcuJykpIHtcbiAgICAgICAgaWYgKHJlc3VsdCAmJiBpc0pzb25PYmplY3QocmVzdWx0KSkge1xuICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0W3BhcnRdO1xuICAgICAgICAgICAgaWYgKHJlc3VsdCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhaWwoYCR7cGF0aH06IGNoaWxkICcke3BhcnR9JyBkb2VzIG5vdCBleGlzdGApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGZhaWwoYCR7cGF0aH06IGNoaWxkICcke3BhcnR9JyBkb2VzIG5vdCBleGlzdGApO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBzdWNjZWVkKHJlc3VsdCk7XG59XG5cbi8qKlxuICogUGlja3MgYSBuZXN0ZWQgSnNvbk9iamVjdCBmcm9tIGEgc3VwcGxpZWQgSnNvbk9iamVjdFxuICogQHBhcmFtIHNyYyBUaGUgb2JqZWN0IGZyb20gd2hpY2ggdGhlIGZpZWxkIGlzIHRvIGJlIHBpY2tlZFxuICogQHBhcmFtIHBhdGggRG90LXNlcGFyYXRlZCBwYXRoIG9mIHRoZSBtZW1iZXIgdG8gYmUgcGlja2VkXG4gKiBAcmV0dXJucyBTdWNjZXNzIHdpdGggdGhlIHByb3BlcnR5IGlmIHRoZSBwYXRoIGlzIHZhbGlkIGFuZCB0aGUgdmFsdWVcbiAqIGlzIGFuIG9iamVjdC4gUmV0dXJucyBmYWlsdXJlIHdpdGggZGV0YWlscyBpZiBhbiBlcnJvciBvY2N1cnMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwaWNrSnNvbk9iamVjdChzcmM6IEpzb25PYmplY3QsIHBhdGg6IHN0cmluZyk6IFJlc3VsdDxKc29uT2JqZWN0PiB7XG4gICAgcmV0dXJuIHBpY2tKc29uVmFsdWUoc3JjLCBwYXRoKS5vblN1Y2Nlc3MoKHYpID0+IHtcbiAgICAgICAgaWYgKCFpc0pzb25PYmplY3QodikpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWlsKGAke3BhdGh9OiBub3QgYW4gb2JqZWN0YCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHN1Y2NlZWQodik7XG4gICAgfSk7XG59XG4iXX0=
|
package/compositeJsonMap.d.ts
DELETED
|
@@ -1,47 +0,0 @@
|
|
|
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
|
-
}
|
package/compositeJsonMap.js
DELETED
|
@@ -1,97 +0,0 @@
|
|
|
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.d.ts
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import { JsonContext, JsonReferenceMap, TemplateVars, VariableValue } from './jsonContext';
|
|
2
|
-
import { Result } from '@fgv/ts-utils';
|
|
3
|
-
export declare class JsonContextHelper {
|
|
4
|
-
protected _context?: JsonContext;
|
|
5
|
-
constructor(context?: JsonContext);
|
|
6
|
-
static create(context?: JsonContext): Result<JsonContextHelper>;
|
|
7
|
-
static extendContextVars(baseContext: JsonContext | undefined, vars?: VariableValue[]): Result<TemplateVars | undefined>;
|
|
8
|
-
static extendContextRefs(baseContext: JsonContext | undefined, refs?: JsonReferenceMap[]): Result<JsonReferenceMap | undefined>;
|
|
9
|
-
static extendContext(baseContext?: JsonContext | undefined, add?: {
|
|
10
|
-
vars?: VariableValue[];
|
|
11
|
-
refs?: JsonReferenceMap[];
|
|
12
|
-
}): Result<JsonContext | undefined>;
|
|
13
|
-
static mergeContext(baseContext: JsonContext | undefined, add: JsonContext | undefined): Result<JsonContext | undefined>;
|
|
14
|
-
extendVars(vars?: VariableValue[]): Result<TemplateVars | undefined>;
|
|
15
|
-
extendRefs(refs?: JsonReferenceMap[]): Result<JsonReferenceMap | undefined>;
|
|
16
|
-
extendContext(add?: {
|
|
17
|
-
vars?: VariableValue[];
|
|
18
|
-
refs?: JsonReferenceMap[];
|
|
19
|
-
}): Result<JsonContext | undefined>;
|
|
20
|
-
mergeContext(merge?: JsonContext): Result<JsonContext | undefined>;
|
|
21
|
-
}
|
package/contextHelpers.js
DELETED
|
@@ -1,101 +0,0 @@
|
|
|
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.JsonContextHelper = void 0;
|
|
25
|
-
const jsonContext_1 = require("./jsonContext");
|
|
26
|
-
const ts_utils_1 = require("@fgv/ts-utils");
|
|
27
|
-
const compositeJsonMap_1 = require("./compositeJsonMap");
|
|
28
|
-
class JsonContextHelper {
|
|
29
|
-
constructor(context) {
|
|
30
|
-
this._context = context;
|
|
31
|
-
}
|
|
32
|
-
static create(context) {
|
|
33
|
-
return (0, ts_utils_1.captureResult)(() => new JsonContextHelper(context));
|
|
34
|
-
}
|
|
35
|
-
static extendContextVars(baseContext, vars) {
|
|
36
|
-
var _a, _b;
|
|
37
|
-
if (vars && (vars.length > 0)) {
|
|
38
|
-
const extend = (_a = baseContext === null || baseContext === void 0 ? void 0 : baseContext.extendVars) !== null && _a !== void 0 ? _a : jsonContext_1.defaultExtendVars;
|
|
39
|
-
return extend((_b = baseContext === null || baseContext === void 0 ? void 0 : baseContext.vars) !== null && _b !== void 0 ? _b : {}, vars);
|
|
40
|
-
}
|
|
41
|
-
return (0, ts_utils_1.succeed)(baseContext === null || baseContext === void 0 ? void 0 : baseContext.vars);
|
|
42
|
-
}
|
|
43
|
-
static extendContextRefs(baseContext, refs) {
|
|
44
|
-
if (refs && (refs.length > 0)) {
|
|
45
|
-
const full = (baseContext === null || baseContext === void 0 ? void 0 : baseContext.refs) ? [...refs, baseContext.refs] : refs;
|
|
46
|
-
if (full.length > 1) {
|
|
47
|
-
return compositeJsonMap_1.CompositeJsonMap.create(full);
|
|
48
|
-
}
|
|
49
|
-
return (0, ts_utils_1.succeed)(full[0]);
|
|
50
|
-
}
|
|
51
|
-
return (0, ts_utils_1.succeed)(baseContext === null || baseContext === void 0 ? void 0 : baseContext.refs);
|
|
52
|
-
}
|
|
53
|
-
static extendContext(baseContext, add) {
|
|
54
|
-
return JsonContextHelper.extendContextVars(baseContext, (add === null || add === void 0 ? void 0 : add.vars) || []).onSuccess((vars) => {
|
|
55
|
-
return JsonContextHelper.extendContextRefs(baseContext, (add === null || add === void 0 ? void 0 : add.refs) || []).onSuccess((refs) => {
|
|
56
|
-
if (!vars && !refs && !(baseContext === null || baseContext === void 0 ? void 0 : baseContext.extendVars)) {
|
|
57
|
-
return (0, ts_utils_1.succeed)(undefined);
|
|
58
|
-
}
|
|
59
|
-
const rtrn = { vars, refs };
|
|
60
|
-
if (baseContext === null || baseContext === void 0 ? void 0 : baseContext.extendVars) {
|
|
61
|
-
rtrn.extendVars = baseContext.extendVars;
|
|
62
|
-
}
|
|
63
|
-
return (0, ts_utils_1.succeed)(rtrn);
|
|
64
|
-
});
|
|
65
|
-
});
|
|
66
|
-
}
|
|
67
|
-
static mergeContext(baseContext, add) {
|
|
68
|
-
var _a, _b;
|
|
69
|
-
if (baseContext) {
|
|
70
|
-
if (add) {
|
|
71
|
-
const rtrn = {
|
|
72
|
-
vars: (_a = add.vars) !== null && _a !== void 0 ? _a : baseContext.vars,
|
|
73
|
-
refs: (_b = add.refs) !== null && _b !== void 0 ? _b : baseContext.refs,
|
|
74
|
-
};
|
|
75
|
-
if (add.hasOwnProperty('extendVars')) {
|
|
76
|
-
rtrn.extendVars = add.extendVars;
|
|
77
|
-
}
|
|
78
|
-
else if (baseContext.hasOwnProperty('extendVars')) {
|
|
79
|
-
rtrn.extendVars = baseContext.extendVars;
|
|
80
|
-
}
|
|
81
|
-
return (0, ts_utils_1.succeed)(rtrn);
|
|
82
|
-
}
|
|
83
|
-
return (0, ts_utils_1.succeed)(baseContext);
|
|
84
|
-
}
|
|
85
|
-
return (0, ts_utils_1.succeed)(add);
|
|
86
|
-
}
|
|
87
|
-
extendVars(vars) {
|
|
88
|
-
return JsonContextHelper.extendContextVars(this._context, vars);
|
|
89
|
-
}
|
|
90
|
-
extendRefs(refs) {
|
|
91
|
-
return JsonContextHelper.extendContextRefs(this._context, refs);
|
|
92
|
-
}
|
|
93
|
-
extendContext(add) {
|
|
94
|
-
return JsonContextHelper.extendContext(this._context, add);
|
|
95
|
-
}
|
|
96
|
-
mergeContext(merge) {
|
|
97
|
-
return JsonContextHelper.mergeContext(this._context, merge);
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
exports.JsonContextHelper = JsonContextHelper;
|
|
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/converters.d.ts
DELETED
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
import { ConditionalJsonConverterOptions, JsonConverter, RichJsonConverterOptions, TemplatedJsonConverterOptions } from './jsonConverter';
|
|
2
|
-
/**
|
|
3
|
-
* A simple validating JSON converter. Converts unknown to JSON or fails
|
|
4
|
-
* if the unknown contains any invalid JSON values.
|
|
5
|
-
*/
|
|
6
|
-
export declare const json: JsonConverter;
|
|
7
|
-
/**
|
|
8
|
-
* A simple validating JSON converter. Converts unknown to a JSON object
|
|
9
|
-
* or fails if the unknown contains invalid JSON or is not an object.
|
|
10
|
-
*/
|
|
11
|
-
export declare const jsonObject: import("@fgv/ts-utils").Converter<import("./common").JsonObject, import("./jsonContext").JsonContext>;
|
|
12
|
-
/**
|
|
13
|
-
* A simple validating JSON converter. Converts unknown to a JSON array
|
|
14
|
-
* or fails if the unknown contains invalid JSON or is not an array.
|
|
15
|
-
*/
|
|
16
|
-
export declare const jsonArray: import("@fgv/ts-utils").Converter<import("./common").JsonArray, import("./jsonContext").JsonContext>;
|
|
17
|
-
/**
|
|
18
|
-
* Converts the supplied unknown to JSON, rendering any property names
|
|
19
|
-
* or string values using mustache with the supplied context. See the
|
|
20
|
-
* mustache documentation for details of mustache syntax and view.
|
|
21
|
-
* @param options A @see TemplatedJsonConverterOptions with options and context for the conversion
|
|
22
|
-
*/
|
|
23
|
-
export declare function templatedJson(options?: Partial<TemplatedJsonConverterOptions>): JsonConverter;
|
|
24
|
-
/**
|
|
25
|
-
* Converts the supplied unknown to strongly-typed JSON, by first rendering any property
|
|
26
|
-
* names or string values using mustache with the supplied context, then applying
|
|
27
|
-
* multi-value property expansion and conditional flattening based on property names.
|
|
28
|
-
* @param options A @see ConditionalJsonConverterOptions with options and context for the conversion
|
|
29
|
-
*/
|
|
30
|
-
export declare function conditionalJson(options?: Partial<ConditionalJsonConverterOptions>): JsonConverter;
|
|
31
|
-
/**
|
|
32
|
-
* Converts the supplied unknown to strongly-typed JSON, by first rendering any property
|
|
33
|
-
* names or string values using mustache with the supplied context, then applying
|
|
34
|
-
* multi-value property expansion and conditional flattening based on property names.
|
|
35
|
-
* @param options A @see RichJsonConverterOptions with options and context for the conversion
|
|
36
|
-
*/
|
|
37
|
-
export declare function richJson(options?: Partial<RichJsonConverterOptions>): JsonConverter;
|
package/converters.js
DELETED
|
@@ -1,92 +0,0 @@
|
|
|
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.richJson = exports.conditionalJson = exports.templatedJson = exports.jsonArray = exports.jsonObject = exports.json = void 0;
|
|
25
|
-
const jsonConverter_1 = require("./jsonConverter");
|
|
26
|
-
/**
|
|
27
|
-
* A simple validating JSON converter. Converts unknown to JSON or fails
|
|
28
|
-
* if the unknown contains any invalid JSON values.
|
|
29
|
-
*/
|
|
30
|
-
exports.json = new jsonConverter_1.JsonConverter();
|
|
31
|
-
/**
|
|
32
|
-
* A simple validating JSON converter. Converts unknown to a JSON object
|
|
33
|
-
* or fails if the unknown contains invalid JSON or is not an object.
|
|
34
|
-
*/
|
|
35
|
-
exports.jsonObject = exports.json.object();
|
|
36
|
-
/**
|
|
37
|
-
* A simple validating JSON converter. Converts unknown to a JSON array
|
|
38
|
-
* or fails if the unknown contains invalid JSON or is not an array.
|
|
39
|
-
*/
|
|
40
|
-
exports.jsonArray = exports.json.array();
|
|
41
|
-
let templatedJsonDefault;
|
|
42
|
-
let conditionalJsonDefault;
|
|
43
|
-
let richJsonDefault;
|
|
44
|
-
/**
|
|
45
|
-
* Converts the supplied unknown to JSON, rendering any property names
|
|
46
|
-
* or string values using mustache with the supplied context. See the
|
|
47
|
-
* mustache documentation for details of mustache syntax and view.
|
|
48
|
-
* @param options A @see TemplatedJsonConverterOptions with options and context for the conversion
|
|
49
|
-
*/
|
|
50
|
-
function templatedJson(options) {
|
|
51
|
-
if (!options) {
|
|
52
|
-
if (!templatedJsonDefault) {
|
|
53
|
-
templatedJsonDefault = new jsonConverter_1.TemplatedJsonConverter();
|
|
54
|
-
}
|
|
55
|
-
return templatedJsonDefault;
|
|
56
|
-
}
|
|
57
|
-
return new jsonConverter_1.TemplatedJsonConverter(options);
|
|
58
|
-
}
|
|
59
|
-
exports.templatedJson = templatedJson;
|
|
60
|
-
/**
|
|
61
|
-
* Converts the supplied unknown to strongly-typed JSON, by first rendering any property
|
|
62
|
-
* names or string values using mustache with the supplied context, then applying
|
|
63
|
-
* multi-value property expansion and conditional flattening based on property names.
|
|
64
|
-
* @param options A @see ConditionalJsonConverterOptions with options and context for the conversion
|
|
65
|
-
*/
|
|
66
|
-
function conditionalJson(options) {
|
|
67
|
-
if (!options) {
|
|
68
|
-
if (!conditionalJsonDefault) {
|
|
69
|
-
conditionalJsonDefault = new jsonConverter_1.ConditionalJsonConverter();
|
|
70
|
-
}
|
|
71
|
-
return conditionalJsonDefault;
|
|
72
|
-
}
|
|
73
|
-
return new jsonConverter_1.ConditionalJsonConverter(options);
|
|
74
|
-
}
|
|
75
|
-
exports.conditionalJson = conditionalJson;
|
|
76
|
-
/**
|
|
77
|
-
* Converts the supplied unknown to strongly-typed JSON, by first rendering any property
|
|
78
|
-
* names or string values using mustache with the supplied context, then applying
|
|
79
|
-
* multi-value property expansion and conditional flattening based on property names.
|
|
80
|
-
* @param options A @see RichJsonConverterOptions with options and context for the conversion
|
|
81
|
-
*/
|
|
82
|
-
function richJson(options) {
|
|
83
|
-
if (!options) {
|
|
84
|
-
if (!richJsonDefault) {
|
|
85
|
-
richJsonDefault = new jsonConverter_1.RichJsonConverter();
|
|
86
|
-
}
|
|
87
|
-
return richJsonDefault;
|
|
88
|
-
}
|
|
89
|
-
return new jsonConverter_1.RichJsonConverter(options);
|
|
90
|
-
}
|
|
91
|
-
exports.richJson = richJson;
|
|
92
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udmVydGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9jb252ZXJ0ZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FvQkc7OztBQUVILG1EQVF5QjtBQUV6Qjs7O0dBR0c7QUFDVSxRQUFBLElBQUksR0FBRyxJQUFJLDZCQUFhLEVBQUUsQ0FBQztBQUV4Qzs7O0dBR0c7QUFDVSxRQUFBLFVBQVUsR0FBRyxZQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7QUFFeEM7OztHQUdHO0FBQ1UsUUFBQSxTQUFTLEdBQUcsWUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO0FBRXRDLElBQUksb0JBQTZDLENBQUM7QUFDbEQsSUFBSSxzQkFBK0MsQ0FBQztBQUNwRCxJQUFJLGVBQXdDLENBQUM7QUFFN0M7Ozs7O0dBS0c7QUFDSCxTQUFnQixhQUFhLENBQUMsT0FBZ0Q7SUFDMUUsSUFBSSxDQUFDLE9BQU8sRUFBRTtRQUNWLElBQUksQ0FBQyxvQkFBb0IsRUFBRTtZQUN2QixvQkFBb0IsR0FBRyxJQUFJLHNDQUFzQixFQUFFLENBQUM7U0FDdkQ7UUFDRCxPQUFPLG9CQUFvQixDQUFDO0tBQy9CO0lBQ0QsT0FBTyxJQUFJLHNDQUFzQixDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQy9DLENBQUM7QUFSRCxzQ0FRQztBQUVEOzs7OztHQUtHO0FBQ0gsU0FBZ0IsZUFBZSxDQUFDLE9BQWtEO0lBQzlFLElBQUksQ0FBQyxPQUFPLEVBQUU7UUFDVixJQUFJLENBQUMsc0JBQXNCLEVBQUU7WUFDekIsc0JBQXNCLEdBQUcsSUFBSSx3Q0FBd0IsRUFBRSxDQUFDO1NBQzNEO1FBQ0QsT0FBTyxzQkFBc0IsQ0FBQztLQUNqQztJQUNELE9BQU8sSUFBSSx3Q0FBd0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUNqRCxDQUFDO0FBUkQsMENBUUM7QUFFRDs7Ozs7R0FLRztBQUNILFNBQWdCLFFBQVEsQ0FBQyxPQUEyQztJQUNoRSxJQUFJLENBQUMsT0FBTyxFQUFFO1FBQ1YsSUFBSSxDQUFDLGVBQWUsRUFBRTtZQUNsQixlQUFlLEdBQUcsSUFBSSxpQ0FBaUIsRUFBRSxDQUFDO1NBQzdDO1FBQ0QsT0FBTyxlQUFlLENBQUM7S0FDMUI7SUFDRCxPQUFPLElBQUksaUNBQWlCLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDMUMsQ0FBQztBQVJELDRCQVFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAyMCBFcmlrIEZvcnR1bmVcbiAqXG4gKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4gKiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4gKiBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4gKiB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4gKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbiAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4gKlxuICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsXG4gKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuICpcbiAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1JcbiAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4gKiBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4gKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuICogT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEVcbiAqIFNPRlRXQVJFLlxuICovXG5cbmltcG9ydCB7XG4gICAgQ29uZGl0aW9uYWxKc29uQ29udmVydGVyLFxuICAgIENvbmRpdGlvbmFsSnNvbkNvbnZlcnRlck9wdGlvbnMsXG4gICAgSnNvbkNvbnZlcnRlcixcbiAgICBSaWNoSnNvbkNvbnZlcnRlcixcbiAgICBSaWNoSnNvbkNvbnZlcnRlck9wdGlvbnMsXG4gICAgVGVtcGxhdGVkSnNvbkNvbnZlcnRlcixcbiAgICBUZW1wbGF0ZWRKc29uQ29udmVydGVyT3B0aW9ucyxcbn0gZnJvbSAnLi9qc29uQ29udmVydGVyJztcblxuLyoqXG4gKiBBIHNpbXBsZSB2YWxpZGF0aW5nIEpTT04gY29udmVydGVyLiBDb252ZXJ0cyB1bmtub3duIHRvIEpTT04gb3IgZmFpbHNcbiAqIGlmIHRoZSB1bmtub3duIGNvbnRhaW5zIGFueSBpbnZhbGlkIEpTT04gdmFsdWVzLlxuICovXG5leHBvcnQgY29uc3QganNvbiA9IG5ldyBKc29uQ29udmVydGVyKCk7XG5cbi8qKlxuICogQSBzaW1wbGUgdmFsaWRhdGluZyBKU09OIGNvbnZlcnRlci4gQ29udmVydHMgdW5rbm93biB0byBhIEpTT04gb2JqZWN0XG4gKiBvciBmYWlscyBpZiB0aGUgdW5rbm93biBjb250YWlucyBpbnZhbGlkIEpTT04gb3IgaXMgbm90IGFuIG9iamVjdC5cbiAqL1xuZXhwb3J0IGNvbnN0IGpzb25PYmplY3QgPSBqc29uLm9iamVjdCgpO1xuXG4vKipcbiAqIEEgc2ltcGxlIHZhbGlkYXRpbmcgSlNPTiBjb252ZXJ0ZXIuIENvbnZlcnRzIHVua25vd24gdG8gYSBKU09OIGFycmF5XG4gKiBvciBmYWlscyBpZiB0aGUgdW5rbm93biBjb250YWlucyBpbnZhbGlkIEpTT04gb3IgaXMgbm90IGFuIGFycmF5LlxuICovXG5leHBvcnQgY29uc3QganNvbkFycmF5ID0ganNvbi5hcnJheSgpO1xuXG5sZXQgdGVtcGxhdGVkSnNvbkRlZmF1bHQ6IEpzb25Db252ZXJ0ZXJ8dW5kZWZpbmVkO1xubGV0IGNvbmRpdGlvbmFsSnNvbkRlZmF1bHQ6IEpzb25Db252ZXJ0ZXJ8dW5kZWZpbmVkO1xubGV0IHJpY2hKc29uRGVmYXVsdDogSnNvbkNvbnZlcnRlcnx1bmRlZmluZWQ7XG5cbi8qKlxuICogQ29udmVydHMgdGhlIHN1cHBsaWVkIHVua25vd24gdG8gSlNPTiwgcmVuZGVyaW5nIGFueSBwcm9wZXJ0eSBuYW1lc1xuICogb3Igc3RyaW5nIHZhbHVlcyB1c2luZyBtdXN0YWNoZSB3aXRoIHRoZSBzdXBwbGllZCBjb250ZXh0LiAgU2VlIHRoZVxuICogbXVzdGFjaGUgZG9jdW1lbnRhdGlvbiBmb3IgZGV0YWlscyBvZiBtdXN0YWNoZSBzeW50YXggYW5kIHZpZXcuXG4gKiBAcGFyYW0gb3B0aW9ucyBBIEBzZWUgVGVtcGxhdGVkSnNvbkNvbnZlcnRlck9wdGlvbnMgd2l0aCBvcHRpb25zIGFuZCBjb250ZXh0IGZvciB0aGUgY29udmVyc2lvblxuICovXG5leHBvcnQgZnVuY3Rpb24gdGVtcGxhdGVkSnNvbihvcHRpb25zPzogUGFydGlhbDxUZW1wbGF0ZWRKc29uQ29udmVydGVyT3B0aW9ucz4pOiBKc29uQ29udmVydGVyIHtcbiAgICBpZiAoIW9wdGlvbnMpIHtcbiAgICAgICAgaWYgKCF0ZW1wbGF0ZWRKc29uRGVmYXVsdCkge1xuICAgICAgICAgICAgdGVtcGxhdGVkSnNvbkRlZmF1bHQgPSBuZXcgVGVtcGxhdGVkSnNvbkNvbnZlcnRlcigpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0ZW1wbGF0ZWRKc29uRGVmYXVsdDtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBUZW1wbGF0ZWRKc29uQ29udmVydGVyKG9wdGlvbnMpO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIHRoZSBzdXBwbGllZCB1bmtub3duIHRvIHN0cm9uZ2x5LXR5cGVkIEpTT04sIGJ5IGZpcnN0IHJlbmRlcmluZyBhbnkgcHJvcGVydHlcbiAqIG5hbWVzIG9yIHN0cmluZyB2YWx1ZXMgdXNpbmcgbXVzdGFjaGUgd2l0aCB0aGUgc3VwcGxpZWQgY29udGV4dCwgdGhlbiBhcHBseWluZ1xuICogbXVsdGktdmFsdWUgcHJvcGVydHkgZXhwYW5zaW9uIGFuZCBjb25kaXRpb25hbCBmbGF0dGVuaW5nIGJhc2VkIG9uIHByb3BlcnR5IG5hbWVzLlxuICogQHBhcmFtIG9wdGlvbnMgQSBAc2VlIENvbmRpdGlvbmFsSnNvbkNvbnZlcnRlck9wdGlvbnMgd2l0aCBvcHRpb25zIGFuZCBjb250ZXh0IGZvciB0aGUgY29udmVyc2lvblxuICovXG5leHBvcnQgZnVuY3Rpb24gY29uZGl0aW9uYWxKc29uKG9wdGlvbnM/OiBQYXJ0aWFsPENvbmRpdGlvbmFsSnNvbkNvbnZlcnRlck9wdGlvbnM+KTogSnNvbkNvbnZlcnRlciB7XG4gICAgaWYgKCFvcHRpb25zKSB7XG4gICAgICAgIGlmICghY29uZGl0aW9uYWxKc29uRGVmYXVsdCkge1xuICAgICAgICAgICAgY29uZGl0aW9uYWxKc29uRGVmYXVsdCA9IG5ldyBDb25kaXRpb25hbEpzb25Db252ZXJ0ZXIoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY29uZGl0aW9uYWxKc29uRGVmYXVsdDtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBDb25kaXRpb25hbEpzb25Db252ZXJ0ZXIob3B0aW9ucyk7XG59XG5cbi8qKlxuICogQ29udmVydHMgdGhlIHN1cHBsaWVkIHVua25vd24gdG8gc3Ryb25nbHktdHlwZWQgSlNPTiwgYnkgZmlyc3QgcmVuZGVyaW5nIGFueSBwcm9wZXJ0eVxuICogbmFtZXMgb3Igc3RyaW5nIHZhbHVlcyB1c2luZyBtdXN0YWNoZSB3aXRoIHRoZSBzdXBwbGllZCBjb250ZXh0LCB0aGVuIGFwcGx5aW5nXG4gKiBtdWx0aS12YWx1ZSBwcm9wZXJ0eSBleHBhbnNpb24gYW5kIGNvbmRpdGlvbmFsIGZsYXR0ZW5pbmcgYmFzZWQgb24gcHJvcGVydHkgbmFtZXMuXG4gKiBAcGFyYW0gb3B0aW9ucyBBIEBzZWUgUmljaEpzb25Db252ZXJ0ZXJPcHRpb25zIHdpdGggb3B0aW9ucyBhbmQgY29udGV4dCBmb3IgdGhlIGNvbnZlcnNpb25cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJpY2hKc29uKG9wdGlvbnM/OiBQYXJ0aWFsPFJpY2hKc29uQ29udmVydGVyT3B0aW9ucz4pOiBKc29uQ29udmVydGVyIHtcbiAgICBpZiAoIW9wdGlvbnMpIHtcbiAgICAgICAgaWYgKCFyaWNoSnNvbkRlZmF1bHQpIHtcbiAgICAgICAgICAgIHJpY2hKc29uRGVmYXVsdCA9IG5ldyBSaWNoSnNvbkNvbnZlcnRlcigpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByaWNoSnNvbkRlZmF1bHQ7XG4gICAgfVxuICAgIHJldHVybiBuZXcgUmljaEpzb25Db252ZXJ0ZXIob3B0aW9ucyk7XG59XG4iXX0=
|