@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.
Files changed (127) hide show
  1. package/dist/ts-json.d.ts +1826 -0
  2. package/dist/tsdoc-metadata.json +11 -0
  3. package/lib/index.d.ts +5 -0
  4. package/lib/index.d.ts.map +1 -0
  5. package/lib/index.js +42 -0
  6. package/lib/index.js.map +1 -0
  7. package/lib/packlets/context/compositeJsonMap.d.ts +60 -0
  8. package/lib/packlets/context/compositeJsonMap.d.ts.map +1 -0
  9. package/lib/packlets/context/compositeJsonMap.js +105 -0
  10. package/lib/packlets/context/compositeJsonMap.js.map +1 -0
  11. package/lib/packlets/context/contextHelpers.d.ts +116 -0
  12. package/lib/packlets/context/contextHelpers.d.ts.map +1 -0
  13. package/lib/packlets/context/contextHelpers.js +191 -0
  14. package/lib/packlets/context/contextHelpers.js.map +1 -0
  15. package/lib/packlets/context/index.d.ts +4 -0
  16. package/lib/packlets/context/index.d.ts.map +1 -0
  17. package/lib/packlets/context/index.js +31 -0
  18. package/lib/packlets/context/index.js.map +1 -0
  19. package/lib/packlets/context/jsonContext.d.ts +84 -0
  20. package/lib/packlets/context/jsonContext.d.ts.map +1 -0
  21. package/lib/packlets/context/jsonContext.js +41 -0
  22. package/lib/packlets/context/jsonContext.js.map +1 -0
  23. package/lib/packlets/converters/converters.d.ts +54 -0
  24. package/lib/packlets/converters/converters.d.ts.map +1 -0
  25. package/lib/packlets/converters/converters.js +105 -0
  26. package/lib/packlets/converters/converters.js.map +1 -0
  27. package/lib/packlets/converters/file.d.ts +83 -0
  28. package/lib/packlets/converters/file.d.ts.map +1 -0
  29. package/lib/packlets/converters/file.js +162 -0
  30. package/lib/packlets/converters/file.js.map +1 -0
  31. package/lib/packlets/converters/index.d.ts +5 -0
  32. package/lib/packlets/converters/index.d.ts.map +1 -0
  33. package/lib/packlets/converters/index.js +56 -0
  34. package/lib/packlets/converters/index.js.map +1 -0
  35. package/lib/packlets/converters/jsonConverter.d.ts +276 -0
  36. package/lib/packlets/converters/jsonConverter.d.ts.map +1 -0
  37. package/lib/packlets/converters/jsonConverter.js +310 -0
  38. package/lib/packlets/converters/jsonConverter.js.map +1 -0
  39. package/lib/packlets/editor/common.d.ts +67 -0
  40. package/lib/packlets/editor/common.d.ts.map +1 -0
  41. package/lib/packlets/editor/common.js +3 -0
  42. package/lib/packlets/editor/common.js.map +1 -0
  43. package/lib/packlets/editor/index.d.ts +8 -0
  44. package/lib/packlets/editor/index.d.ts.map +1 -0
  45. package/{jsonEditor → lib/packlets/editor}/index.js +15 -9
  46. package/lib/packlets/editor/index.js.map +1 -0
  47. package/lib/packlets/editor/jsonEditor.d.ts +155 -0
  48. package/lib/packlets/editor/jsonEditor.d.ts.map +1 -0
  49. package/lib/packlets/editor/jsonEditor.js +332 -0
  50. package/lib/packlets/editor/jsonEditor.js.map +1 -0
  51. package/lib/packlets/editor/jsonEditorRule.d.ts +64 -0
  52. package/lib/packlets/editor/jsonEditorRule.d.ts.map +1 -0
  53. package/lib/packlets/editor/jsonEditorRule.js +54 -0
  54. package/lib/packlets/editor/jsonEditorRule.js.map +1 -0
  55. package/lib/packlets/editor/jsonEditorState.d.ts +125 -0
  56. package/lib/packlets/editor/jsonEditorState.d.ts.map +1 -0
  57. package/lib/packlets/editor/jsonEditorState.js +177 -0
  58. package/lib/packlets/editor/jsonEditorState.js.map +1 -0
  59. package/lib/packlets/editor/jsonReferenceMap.d.ts +303 -0
  60. package/lib/packlets/editor/jsonReferenceMap.d.ts.map +1 -0
  61. package/lib/packlets/editor/jsonReferenceMap.js +324 -0
  62. package/lib/packlets/editor/jsonReferenceMap.js.map +1 -0
  63. package/lib/packlets/editor/rules/conditional.d.ts +107 -0
  64. package/lib/packlets/editor/rules/conditional.d.ts.map +1 -0
  65. package/lib/packlets/editor/rules/conditional.js +167 -0
  66. package/lib/packlets/editor/rules/conditional.js.map +1 -0
  67. package/{jsonEditor → lib/packlets/editor}/rules/index.d.ts +1 -0
  68. package/lib/packlets/editor/rules/index.d.ts.map +1 -0
  69. package/lib/packlets/editor/rules/index.js +42 -0
  70. package/lib/packlets/editor/rules/index.js.map +1 -0
  71. package/lib/packlets/editor/rules/multivalue.d.ts +94 -0
  72. package/lib/packlets/editor/rules/multivalue.d.ts.map +1 -0
  73. package/lib/packlets/editor/rules/multivalue.js +141 -0
  74. package/lib/packlets/editor/rules/multivalue.js.map +1 -0
  75. package/lib/packlets/editor/rules/references.d.ts +69 -0
  76. package/lib/packlets/editor/rules/references.d.ts.map +1 -0
  77. package/lib/packlets/editor/rules/references.js +159 -0
  78. package/lib/packlets/editor/rules/references.js.map +1 -0
  79. package/lib/packlets/editor/rules/templates.d.ts +74 -0
  80. package/lib/packlets/editor/rules/templates.d.ts.map +1 -0
  81. package/lib/packlets/editor/rules/templates.js +127 -0
  82. package/lib/packlets/editor/rules/templates.js.map +1 -0
  83. package/lib/packlets/json/common.d.ts +85 -0
  84. package/lib/packlets/json/common.d.ts.map +1 -0
  85. package/lib/packlets/json/common.js +123 -0
  86. package/lib/packlets/json/common.js.map +1 -0
  87. package/lib/packlets/json/index.d.ts +2 -0
  88. package/lib/packlets/json/index.d.ts.map +1 -0
  89. package/lib/packlets/json/index.js +39 -0
  90. package/lib/packlets/json/index.js.map +1 -0
  91. package/package.json +58 -49
  92. package/common.d.ts +0 -58
  93. package/common.js +0 -116
  94. package/compositeJsonMap.d.ts +0 -47
  95. package/compositeJsonMap.js +0 -97
  96. package/contextHelpers.d.ts +0 -21
  97. package/contextHelpers.js +0 -101
  98. package/converters.d.ts +0 -37
  99. package/converters.js +0 -92
  100. package/file.d.ts +0 -60
  101. package/file.js +0 -140
  102. package/index.d.ts +0 -10
  103. package/index.js +0 -62
  104. package/jsonContext.d.ts +0 -74
  105. package/jsonContext.js +0 -40
  106. package/jsonConverter.d.ts +0 -229
  107. package/jsonConverter.js +0 -292
  108. package/jsonEditor/common.d.ts +0 -36
  109. package/jsonEditor/common.js +0 -3
  110. package/jsonEditor/index.d.ts +0 -5
  111. package/jsonEditor/jsonEditor.d.ts +0 -74
  112. package/jsonEditor/jsonEditor.js +0 -259
  113. package/jsonEditor/jsonEditorRule.d.ts +0 -47
  114. package/jsonEditor/jsonEditorRule.js +0 -44
  115. package/jsonEditor/jsonEditorState.d.ts +0 -24
  116. package/jsonEditor/jsonEditorState.js +0 -86
  117. package/jsonEditor/rules/conditional.d.ts +0 -84
  118. package/jsonEditor/rules/conditional.js +0 -146
  119. package/jsonEditor/rules/index.js +0 -21
  120. package/jsonEditor/rules/multivalue.d.ts +0 -78
  121. package/jsonEditor/rules/multivalue.js +0 -129
  122. package/jsonEditor/rules/references.d.ts +0 -62
  123. package/jsonEditor/rules/references.js +0 -158
  124. package/jsonEditor/rules/templates.d.ts +0 -56
  125. package/jsonEditor/rules/templates.js +0 -115
  126. package/jsonReferenceMap.d.ts +0 -138
  127. 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=
@@ -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
- }
@@ -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
@@ -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=