@decaf-ts/utils 0.2.8 → 0.2.9

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 (152) hide show
  1. package/LICENSE.md +0 -0
  2. package/README.md +0 -0
  3. package/bin/build-scripts.cjs +286 -567
  4. package/bin/tag-release.cjs +68 -505
  5. package/bin/tag-release.sh +0 -0
  6. package/bin/update-scripts.cjs +68 -505
  7. package/dist/assets/slogans.json +0 -0
  8. package/dist/utils.cjs +152 -934
  9. package/dist/utils.esm.cjs +148 -933
  10. package/lib/assets/slogans.json +0 -0
  11. package/lib/bin/build-scripts.cjs +2 -2
  12. package/lib/bin/build-scripts.d.ts +0 -0
  13. package/lib/bin/tag-release.cjs +2 -2
  14. package/lib/bin/tag-release.d.ts +0 -0
  15. package/lib/bin/update-scripts.cjs +2 -2
  16. package/lib/bin/update-scripts.d.ts +0 -0
  17. package/lib/cli/command.cjs +5 -5
  18. package/lib/cli/command.d.ts +0 -0
  19. package/lib/cli/commands/build-scripts.cjs +203 -30
  20. package/lib/cli/commands/build-scripts.d.ts +3 -1
  21. package/lib/cli/commands/index.cjs +1 -1
  22. package/lib/cli/commands/index.d.ts +0 -0
  23. package/lib/cli/commands/tag-release.cjs +5 -5
  24. package/lib/cli/commands/tag-release.d.ts +0 -0
  25. package/lib/cli/commands/update-scripts.cjs +4 -4
  26. package/lib/cli/commands/update-scripts.d.ts +0 -0
  27. package/lib/cli/constants.cjs +0 -0
  28. package/lib/cli/constants.d.ts +0 -0
  29. package/lib/cli/index.cjs +1 -2
  30. package/lib/cli/index.d.ts +0 -1
  31. package/lib/cli/types.cjs +0 -0
  32. package/lib/cli/types.d.ts +0 -0
  33. package/lib/esm/assets/slogans.json +0 -0
  34. package/lib/esm/bin/build-scripts.d.ts +0 -0
  35. package/lib/esm/bin/build-scripts.js +0 -0
  36. package/lib/esm/bin/tag-release.d.ts +0 -0
  37. package/lib/esm/bin/tag-release.js +0 -0
  38. package/lib/esm/bin/update-scripts.d.ts +0 -0
  39. package/lib/esm/bin/update-scripts.js +0 -0
  40. package/lib/esm/cli/command.d.ts +0 -0
  41. package/lib/esm/cli/command.js +0 -0
  42. package/lib/esm/cli/commands/build-scripts.d.ts +3 -1
  43. package/lib/esm/cli/commands/build-scripts.js +167 -27
  44. package/lib/esm/cli/commands/index.d.ts +0 -0
  45. package/lib/esm/cli/commands/index.js +0 -0
  46. package/lib/esm/cli/commands/tag-release.d.ts +0 -0
  47. package/lib/esm/cli/commands/tag-release.js +0 -0
  48. package/lib/esm/cli/commands/update-scripts.d.ts +0 -0
  49. package/lib/esm/cli/commands/update-scripts.js +0 -0
  50. package/lib/esm/cli/constants.d.ts +0 -0
  51. package/lib/esm/cli/constants.js +0 -0
  52. package/lib/esm/cli/index.d.ts +0 -1
  53. package/lib/esm/cli/index.js +1 -2
  54. package/lib/esm/cli/types.d.ts +0 -0
  55. package/lib/esm/cli/types.js +0 -0
  56. package/lib/esm/index.d.ts +2 -2
  57. package/lib/esm/index.js +2 -2
  58. package/lib/esm/input/index.d.ts +0 -0
  59. package/lib/esm/input/index.js +0 -0
  60. package/lib/esm/input/input.d.ts +0 -0
  61. package/lib/esm/input/input.js +0 -0
  62. package/lib/esm/input/types.d.ts +0 -0
  63. package/lib/esm/input/types.js +0 -0
  64. package/lib/esm/output/common.d.ts +0 -0
  65. package/lib/esm/output/common.js +0 -0
  66. package/lib/esm/output/index.d.ts +0 -0
  67. package/lib/esm/output/index.js +0 -0
  68. package/lib/esm/utils/accumulator.d.ts +105 -0
  69. package/lib/esm/utils/accumulator.js +144 -0
  70. package/lib/esm/utils/constants.d.ts +0 -0
  71. package/lib/esm/utils/constants.js +0 -0
  72. package/lib/esm/utils/environment.d.ts +1 -1
  73. package/lib/esm/utils/environment.js +2 -2
  74. package/lib/esm/utils/fs.d.ts +0 -0
  75. package/lib/esm/utils/fs.js +0 -0
  76. package/lib/esm/utils/http.d.ts +0 -0
  77. package/lib/esm/utils/http.js +0 -0
  78. package/lib/esm/utils/index.d.ts +0 -0
  79. package/lib/esm/utils/index.js +0 -0
  80. package/lib/esm/utils/md.d.ts +0 -0
  81. package/lib/esm/utils/md.js +0 -0
  82. package/lib/esm/utils/tests.d.ts +0 -0
  83. package/lib/esm/utils/tests.js +0 -0
  84. package/lib/esm/utils/text.d.ts +0 -0
  85. package/lib/esm/utils/text.js +0 -0
  86. package/lib/esm/utils/timeout.d.ts +0 -0
  87. package/lib/esm/utils/timeout.js +0 -0
  88. package/lib/esm/utils/types.d.ts +0 -0
  89. package/lib/esm/utils/types.js +0 -0
  90. package/lib/esm/utils/utils.d.ts +0 -0
  91. package/lib/esm/utils/utils.js +0 -0
  92. package/lib/esm/utils/web.d.ts +0 -0
  93. package/lib/esm/utils/web.js +0 -0
  94. package/lib/esm/writers/OutputWriter.d.ts +0 -0
  95. package/lib/esm/writers/OutputWriter.js +0 -0
  96. package/lib/esm/writers/RegexpOutputWriter.d.ts +0 -0
  97. package/lib/esm/writers/RegexpOutputWriter.js +0 -0
  98. package/lib/esm/writers/StandardOutputWriter.d.ts +0 -0
  99. package/lib/esm/writers/StandardOutputWriter.js +0 -0
  100. package/lib/esm/writers/index.d.ts +0 -0
  101. package/lib/esm/writers/index.js +0 -0
  102. package/lib/esm/writers/types.d.ts +0 -0
  103. package/lib/esm/writers/types.js +0 -0
  104. package/lib/index.cjs +3 -3
  105. package/lib/index.d.ts +2 -2
  106. package/lib/input/index.cjs +1 -1
  107. package/lib/input/index.d.ts +0 -0
  108. package/lib/input/input.cjs +0 -0
  109. package/lib/input/input.d.ts +0 -0
  110. package/lib/input/types.cjs +0 -0
  111. package/lib/input/types.d.ts +0 -0
  112. package/lib/output/common.cjs +0 -0
  113. package/lib/output/common.d.ts +0 -0
  114. package/lib/output/index.cjs +1 -1
  115. package/lib/output/index.d.ts +0 -0
  116. package/lib/utils/accumulator.cjs +148 -0
  117. package/lib/utils/accumulator.d.ts +105 -0
  118. package/lib/utils/constants.cjs +0 -0
  119. package/lib/utils/constants.d.ts +0 -0
  120. package/lib/utils/environment.cjs +3 -3
  121. package/lib/utils/environment.d.ts +1 -1
  122. package/lib/utils/fs.cjs +1 -1
  123. package/lib/utils/fs.d.ts +0 -0
  124. package/lib/utils/http.cjs +0 -0
  125. package/lib/utils/http.d.ts +0 -0
  126. package/lib/utils/index.cjs +1 -1
  127. package/lib/utils/index.d.ts +0 -0
  128. package/lib/utils/md.cjs +0 -0
  129. package/lib/utils/md.d.ts +0 -0
  130. package/lib/utils/tests.cjs +1 -1
  131. package/lib/utils/tests.d.ts +0 -0
  132. package/lib/utils/text.cjs +0 -0
  133. package/lib/utils/text.d.ts +0 -0
  134. package/lib/utils/timeout.cjs +0 -0
  135. package/lib/utils/timeout.d.ts +0 -0
  136. package/lib/utils/types.cjs +0 -0
  137. package/lib/utils/types.d.ts +0 -0
  138. package/lib/utils/utils.cjs +2 -2
  139. package/lib/utils/utils.d.ts +0 -0
  140. package/lib/utils/web.cjs +0 -0
  141. package/lib/utils/web.d.ts +0 -0
  142. package/lib/writers/OutputWriter.cjs +0 -0
  143. package/lib/writers/OutputWriter.d.ts +0 -0
  144. package/lib/writers/RegexpOutputWriter.cjs +1 -1
  145. package/lib/writers/RegexpOutputWriter.d.ts +0 -0
  146. package/lib/writers/StandardOutputWriter.cjs +2 -2
  147. package/lib/writers/StandardOutputWriter.d.ts +0 -0
  148. package/lib/writers/index.cjs +1 -1
  149. package/lib/writers/index.d.ts +0 -0
  150. package/lib/writers/types.cjs +0 -0
  151. package/lib/writers/types.d.ts +0 -0
  152. package/package.json +2 -3
@@ -0,0 +1,144 @@
1
+ /**
2
+ * @class ObjectAccumulator
3
+ * @template T - The type of the accumulated object, extends object
4
+ * @description A class that accumulates objects and provides type-safe access to their properties.
5
+ * It allows for dynamic addition of properties while maintaining type information.
6
+ * @summary Accumulates objects and maintains type information for accumulated properties
7
+ * @memberOf utils
8
+ */
9
+ export class ObjectAccumulator {
10
+ constructor() {
11
+ Object.defineProperty(this, "__size", {
12
+ value: 0,
13
+ writable: true,
14
+ configurable: false,
15
+ enumerable: false,
16
+ });
17
+ }
18
+ /**
19
+ * @protected
20
+ * @description Expands the accumulator with properties from a new object
21
+ * @summary Adds new properties to the accumulator
22
+ * @template V - The type of the object being expanded
23
+ * @param {V} value - The object to expand with
24
+ * @returns {void}
25
+ */
26
+ expand(value) {
27
+ Object.entries(value).forEach(([k, v]) => {
28
+ Object.defineProperty(this, k, {
29
+ get: () => v,
30
+ set: (val) => {
31
+ v = val;
32
+ },
33
+ configurable: true,
34
+ enumerable: true,
35
+ });
36
+ });
37
+ }
38
+ /**
39
+ * @description Accumulates a new object into the accumulator
40
+ * @summary Adds properties from a new object to the accumulator, maintaining type information
41
+ * @template V - The type of the object being accumulated
42
+ * @param {V} value - The object to accumulate
43
+ * @returns A new ObjectAccumulator instance with updated type information
44
+ * @mermaid
45
+ * sequenceDiagram
46
+ * participant A as Accumulator
47
+ * participant O as Object
48
+ * A->>O: Get entries
49
+ * loop For each entry
50
+ * A->>A: Define property
51
+ * end
52
+ * A->>A: Update size
53
+ * A->>A: Return updated accumulator
54
+ */
55
+ accumulate(value) {
56
+ this.expand(value);
57
+ this.__size = this.__size + Object.keys(value).length;
58
+ return this;
59
+ }
60
+ /**
61
+ * @description Retrieves a value from the accumulator by its key
62
+ * @summary Gets a value from the accumulated object using a type-safe key
63
+ * @template K - The key type, must be a key of this
64
+ * @param {K} key - The key of the value to retrieve
65
+ * @returns {any | undefined} The value associated with the key, or undefined if not found
66
+ */
67
+ get(key) {
68
+ return this[key];
69
+ }
70
+ /**
71
+ * @description Checks if a key exists in the accumulator
72
+ * @summary Determines whether the accumulator contains a specific key
73
+ * @param {string} key - The key to check for existence
74
+ * @returns {boolean} True if the key exists, false otherwise
75
+ */
76
+ has(key) {
77
+ return !!this[key];
78
+ }
79
+ /**
80
+ * @description Removes a key-value pair from the accumulator
81
+ * @summary Deletes a property from the accumulated object
82
+ * @param {string} key - The key of the property to remove
83
+ * @returns {} The accumulator instance with the specified property removed
84
+ */
85
+ remove(key) {
86
+ if (!(key in this))
87
+ return this;
88
+ delete this[key];
89
+ this.__size--;
90
+ return this;
91
+ }
92
+ /**
93
+ * @description Retrieves all keys from the accumulator
94
+ * @summary Gets an array of all accumulated property keys
95
+ * @returns {string[]} An array of keys as strings
96
+ */
97
+ keys() {
98
+ return Object.keys(this);
99
+ }
100
+ /**
101
+ * @description Retrieves all values from the accumulator
102
+ * @summary Gets an array of all accumulated property values
103
+ * @returns An array of values
104
+ */
105
+ values() {
106
+ return Object.values(this);
107
+ }
108
+ /**
109
+ * @description Gets the number of key-value pairs in the accumulator
110
+ * @summary Returns the count of accumulated properties
111
+ * @returns {number} The number of key-value pairs
112
+ */
113
+ size() {
114
+ return this.__size;
115
+ }
116
+ /**
117
+ * @description Clears all accumulated key-value pairs
118
+ * @summary Removes all properties from the accumulator and returns a new empty instance
119
+ * @returns {ObjectAccumulator<never>} A new empty ObjectAccumulator instance
120
+ */
121
+ clear() {
122
+ return new ObjectAccumulator();
123
+ }
124
+ /**
125
+ * @description Executes a callback for each key-value pair in the accumulator
126
+ * @summary Iterates over all accumulated properties, calling a function for each
127
+ * @param {function(any, string, number): void} callback - The function to execute for each entry
128
+ * @returns {void}
129
+ */
130
+ forEach(callback) {
131
+ Object.entries(this).forEach(([key, value], i) => callback(value, key, i));
132
+ }
133
+ /**
134
+ * @description Creates a new array with the results of calling a provided function on every element in the accumulator
135
+ * @summary Maps each accumulated property to a new value using a callback function
136
+ * @template R - The type of the mapped values
137
+ * @param {function(any, string,number): R} callback - Function that produces an element of the new array
138
+ * @returns {R[]} A new array with each element being the result of the callback function
139
+ */
140
+ map(callback) {
141
+ return Object.entries(this).map(([key, value], i) => callback(value, key, i));
142
+ }
143
+ }
144
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjdW11bGF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdXRpbHMvYWNjdW11bGF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7R0FPRztBQUNILE1BQU0sT0FBTyxpQkFBaUI7SUFRNUI7UUFDRSxNQUFNLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUU7WUFDcEMsS0FBSyxFQUFFLENBQUM7WUFDUixRQUFRLEVBQUUsSUFBSTtZQUNkLFlBQVksRUFBRSxLQUFLO1lBQ25CLFVBQVUsRUFBRSxLQUFLO1NBQ2xCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ08sTUFBTSxDQUFtQixLQUFRO1FBQ3pDLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUN2QyxNQUFNLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUU7Z0JBQzdCLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO2dCQUNaLEdBQUcsRUFBRSxDQUFDLEdBQWUsRUFBRSxFQUFFO29CQUN2QixDQUFDLEdBQUcsR0FBRyxDQUFDO2dCQUNWLENBQUM7Z0JBQ0QsWUFBWSxFQUFFLElBQUk7Z0JBQ2xCLFVBQVUsRUFBRSxJQUFJO2FBQ2pCLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOzs7Ozs7Ozs7Ozs7Ozs7O09BZ0JHO0lBQ0gsVUFBVSxDQUFtQixLQUFRO1FBQ25DLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbkIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDO1FBQ3RELE9BQU8sSUFBbUQsQ0FBQztJQUM3RCxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsR0FBRyxDQUF1QixHQUFNO1FBQzlCLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ25CLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILEdBQUcsQ0FBQyxHQUFXO1FBQ2IsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQWlCLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxNQUFNLENBQ0osR0FBd0I7UUFJeEIsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLElBQUksQ0FBQztZQUFFLE9BQU8sSUFBSSxDQUFDO1FBRWhDLE9BQU8sSUFBSSxDQUFDLEdBQWlCLENBQUMsQ0FBQztRQUMvQixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDZCxPQUFPLElBQ29DLENBQUM7SUFDOUMsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxJQUFJO1FBQ0YsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzNCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsTUFBTTtRQUNKLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILElBQUk7UUFDRixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDckIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxLQUFLO1FBQ0gsT0FBTyxJQUFJLGlCQUFpQixFQUFFLENBQUM7SUFDakMsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsT0FBTyxDQUNMLFFBQXVFO1FBRXZFLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FDL0MsUUFBUSxDQUFDLEtBQUssRUFBRSxHQUFpQixFQUFFLENBQUMsQ0FBQyxDQUN0QyxDQUFDO0lBQ0osQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILEdBQUcsQ0FDRCxRQUFvRTtRQUVwRSxPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FDbEQsUUFBUSxDQUFDLEtBQUssRUFBRSxHQUFpQixFQUFFLENBQUMsQ0FBQyxDQUN0QyxDQUFDO0lBQ0osQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAY2xhc3MgT2JqZWN0QWNjdW11bGF0b3JcbiAqIEB0ZW1wbGF0ZSBUIC0gVGhlIHR5cGUgb2YgdGhlIGFjY3VtdWxhdGVkIG9iamVjdCwgZXh0ZW5kcyBvYmplY3RcbiAqIEBkZXNjcmlwdGlvbiBBIGNsYXNzIHRoYXQgYWNjdW11bGF0ZXMgb2JqZWN0cyBhbmQgcHJvdmlkZXMgdHlwZS1zYWZlIGFjY2VzcyB0byB0aGVpciBwcm9wZXJ0aWVzLlxuICogSXQgYWxsb3dzIGZvciBkeW5hbWljIGFkZGl0aW9uIG9mIHByb3BlcnRpZXMgd2hpbGUgbWFpbnRhaW5pbmcgdHlwZSBpbmZvcm1hdGlvbi5cbiAqIEBzdW1tYXJ5IEFjY3VtdWxhdGVzIG9iamVjdHMgYW5kIG1haW50YWlucyB0eXBlIGluZm9ybWF0aW9uIGZvciBhY2N1bXVsYXRlZCBwcm9wZXJ0aWVzXG4gKiBAbWVtYmVyT2YgdXRpbHNcbiAqL1xuZXhwb3J0IGNsYXNzIE9iamVjdEFjY3VtdWxhdG9yPFQgZXh0ZW5kcyBvYmplY3Q+IHtcbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqIEBkZXNjcmlwdGlvbiBUaGUgc2l6ZSBvZiB0aGUgYWNjdW11bGF0ZWQgb2JqZWN0XG4gICAqIEB0eXBlIHtudW1iZXJ9XG4gICAqL1xuICBwcml2YXRlIF9fc2l6ZSE6IG51bWJlcjtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywgXCJfX3NpemVcIiwge1xuICAgICAgdmFsdWU6IDAsXG4gICAgICB3cml0YWJsZTogdHJ1ZSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogZmFsc2UsXG4gICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcHJvdGVjdGVkXG4gICAqIEBkZXNjcmlwdGlvbiBFeHBhbmRzIHRoZSBhY2N1bXVsYXRvciB3aXRoIHByb3BlcnRpZXMgZnJvbSBhIG5ldyBvYmplY3RcbiAgICogQHN1bW1hcnkgQWRkcyBuZXcgcHJvcGVydGllcyB0byB0aGUgYWNjdW11bGF0b3JcbiAgICogQHRlbXBsYXRlIFYgLSBUaGUgdHlwZSBvZiB0aGUgb2JqZWN0IGJlaW5nIGV4cGFuZGVkXG4gICAqIEBwYXJhbSB7Vn0gdmFsdWUgLSBUaGUgb2JqZWN0IHRvIGV4cGFuZCB3aXRoXG4gICAqIEByZXR1cm5zIHt2b2lkfVxuICAgKi9cbiAgcHJvdGVjdGVkIGV4cGFuZDxWIGV4dGVuZHMgb2JqZWN0Pih2YWx1ZTogVik6IHZvaWQge1xuICAgIE9iamVjdC5lbnRyaWVzKHZhbHVlKS5mb3JFYWNoKChbaywgdl0pID0+IHtcbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCBrLCB7XG4gICAgICAgIGdldDogKCkgPT4gdixcbiAgICAgICAgc2V0OiAodmFsOiBWW2tleW9mIFZdKSA9PiB7XG4gICAgICAgICAgdiA9IHZhbDtcbiAgICAgICAgfSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEFjY3VtdWxhdGVzIGEgbmV3IG9iamVjdCBpbnRvIHRoZSBhY2N1bXVsYXRvclxuICAgKiBAc3VtbWFyeSBBZGRzIHByb3BlcnRpZXMgZnJvbSBhIG5ldyBvYmplY3QgdG8gdGhlIGFjY3VtdWxhdG9yLCBtYWludGFpbmluZyB0eXBlIGluZm9ybWF0aW9uXG4gICAqIEB0ZW1wbGF0ZSBWIC0gVGhlIHR5cGUgb2YgdGhlIG9iamVjdCBiZWluZyBhY2N1bXVsYXRlZFxuICAgKiBAcGFyYW0ge1Z9IHZhbHVlIC0gVGhlIG9iamVjdCB0byBhY2N1bXVsYXRlXG4gICAqIEByZXR1cm5zIEEgbmV3IE9iamVjdEFjY3VtdWxhdG9yIGluc3RhbmNlIHdpdGggdXBkYXRlZCB0eXBlIGluZm9ybWF0aW9uXG4gICAqIEBtZXJtYWlkXG4gICAqIHNlcXVlbmNlRGlhZ3JhbVxuICAgKiAgIHBhcnRpY2lwYW50IEEgYXMgQWNjdW11bGF0b3JcbiAgICogICBwYXJ0aWNpcGFudCBPIGFzIE9iamVjdFxuICAgKiAgIEEtPj5POiBHZXQgZW50cmllc1xuICAgKiAgIGxvb3AgRm9yIGVhY2ggZW50cnlcbiAgICogICAgIEEtPj5BOiBEZWZpbmUgcHJvcGVydHlcbiAgICogICBlbmRcbiAgICogICBBLT4+QTogVXBkYXRlIHNpemVcbiAgICogICBBLT4+QTogUmV0dXJuIHVwZGF0ZWQgYWNjdW11bGF0b3JcbiAgICovXG4gIGFjY3VtdWxhdGU8ViBleHRlbmRzIG9iamVjdD4odmFsdWU6IFYpOiBUICYgViAmIE9iamVjdEFjY3VtdWxhdG9yPFQgJiBWPiB7XG4gICAgdGhpcy5leHBhbmQodmFsdWUpO1xuICAgIHRoaXMuX19zaXplID0gdGhpcy5fX3NpemUgKyBPYmplY3Qua2V5cyh2YWx1ZSkubGVuZ3RoO1xuICAgIHJldHVybiB0aGlzIGFzIHVua25vd24gYXMgVCAmIFYgJiBPYmplY3RBY2N1bXVsYXRvcjxUICYgVj47XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFJldHJpZXZlcyBhIHZhbHVlIGZyb20gdGhlIGFjY3VtdWxhdG9yIGJ5IGl0cyBrZXlcbiAgICogQHN1bW1hcnkgR2V0cyBhIHZhbHVlIGZyb20gdGhlIGFjY3VtdWxhdGVkIG9iamVjdCB1c2luZyBhIHR5cGUtc2FmZSBrZXlcbiAgICogQHRlbXBsYXRlIEsgLSBUaGUga2V5IHR5cGUsIG11c3QgYmUgYSBrZXkgb2YgdGhpc1xuICAgKiBAcGFyYW0ge0t9IGtleSAtIFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIHJldHJpZXZlXG4gICAqIEByZXR1cm5zIHthbnkgfCB1bmRlZmluZWR9IFRoZSB2YWx1ZSBhc3NvY2lhdGVkIHdpdGggdGhlIGtleSwgb3IgdW5kZWZpbmVkIGlmIG5vdCBmb3VuZFxuICAgKi9cbiAgZ2V0PEsgZXh0ZW5kcyBrZXlvZiB0aGlzPihrZXk6IEspOiB0aGlzW0tdIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpc1trZXldO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBDaGVja3MgaWYgYSBrZXkgZXhpc3RzIGluIHRoZSBhY2N1bXVsYXRvclxuICAgKiBAc3VtbWFyeSBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIGFjY3VtdWxhdG9yIGNvbnRhaW5zIGEgc3BlY2lmaWMga2V5XG4gICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgLSBUaGUga2V5IHRvIGNoZWNrIGZvciBleGlzdGVuY2VcbiAgICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdGhlIGtleSBleGlzdHMsIGZhbHNlIG90aGVyd2lzZVxuICAgKi9cbiAgaGFzKGtleTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpc1trZXkgYXMga2V5b2YgdGhpc107XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFJlbW92ZXMgYSBrZXktdmFsdWUgcGFpciBmcm9tIHRoZSBhY2N1bXVsYXRvclxuICAgKiBAc3VtbWFyeSBEZWxldGVzIGEgcHJvcGVydHkgZnJvbSB0aGUgYWNjdW11bGF0ZWQgb2JqZWN0XG4gICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgLSBUaGUga2V5IG9mIHRoZSBwcm9wZXJ0eSB0byByZW1vdmVcbiAgICogQHJldHVybnMge30gVGhlIGFjY3VtdWxhdG9yIGluc3RhbmNlIHdpdGggdGhlIHNwZWNpZmllZCBwcm9wZXJ0eSByZW1vdmVkXG4gICAqL1xuICByZW1vdmUoXG4gICAga2V5OiBrZXlvZiB0aGlzIHwgc3RyaW5nXG4gICk6XG4gICAgfCAoT21pdDx0aGlzLCB0eXBlb2Yga2V5PiAmIE9iamVjdEFjY3VtdWxhdG9yPE9taXQ8dGhpcywgdHlwZW9mIGtleT4+KVxuICAgIHwgdGhpcyB7XG4gICAgaWYgKCEoa2V5IGluIHRoaXMpKSByZXR1cm4gdGhpcztcblxuICAgIGRlbGV0ZSB0aGlzW2tleSBhcyBrZXlvZiB0aGlzXTtcbiAgICB0aGlzLl9fc2l6ZS0tO1xuICAgIHJldHVybiB0aGlzIGFzIHVua25vd24gYXMgT21pdDx0aGlzLCB0eXBlb2Yga2V5PiAmXG4gICAgICBPYmplY3RBY2N1bXVsYXRvcjxPbWl0PHRoaXMsIHR5cGVvZiBrZXk+PjtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gUmV0cmlldmVzIGFsbCBrZXlzIGZyb20gdGhlIGFjY3VtdWxhdG9yXG4gICAqIEBzdW1tYXJ5IEdldHMgYW4gYXJyYXkgb2YgYWxsIGFjY3VtdWxhdGVkIHByb3BlcnR5IGtleXNcbiAgICogQHJldHVybnMge3N0cmluZ1tdfSBBbiBhcnJheSBvZiBrZXlzIGFzIHN0cmluZ3NcbiAgICovXG4gIGtleXMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiBPYmplY3Qua2V5cyh0aGlzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gUmV0cmlldmVzIGFsbCB2YWx1ZXMgZnJvbSB0aGUgYWNjdW11bGF0b3JcbiAgICogQHN1bW1hcnkgR2V0cyBhbiBhcnJheSBvZiBhbGwgYWNjdW11bGF0ZWQgcHJvcGVydHkgdmFsdWVzXG4gICAqIEByZXR1cm5zIEFuIGFycmF5IG9mIHZhbHVlc1xuICAgKi9cbiAgdmFsdWVzKCk6IFRba2V5b2YgVF1bXSB7XG4gICAgcmV0dXJuIE9iamVjdC52YWx1ZXModGhpcyk7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEdldHMgdGhlIG51bWJlciBvZiBrZXktdmFsdWUgcGFpcnMgaW4gdGhlIGFjY3VtdWxhdG9yXG4gICAqIEBzdW1tYXJ5IFJldHVybnMgdGhlIGNvdW50IG9mIGFjY3VtdWxhdGVkIHByb3BlcnRpZXNcbiAgICogQHJldHVybnMge251bWJlcn0gVGhlIG51bWJlciBvZiBrZXktdmFsdWUgcGFpcnNcbiAgICovXG4gIHNpemUoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fX3NpemU7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIENsZWFycyBhbGwgYWNjdW11bGF0ZWQga2V5LXZhbHVlIHBhaXJzXG4gICAqIEBzdW1tYXJ5IFJlbW92ZXMgYWxsIHByb3BlcnRpZXMgZnJvbSB0aGUgYWNjdW11bGF0b3IgYW5kIHJldHVybnMgYSBuZXcgZW1wdHkgaW5zdGFuY2VcbiAgICogQHJldHVybnMge09iamVjdEFjY3VtdWxhdG9yPG5ldmVyPn0gQSBuZXcgZW1wdHkgT2JqZWN0QWNjdW11bGF0b3IgaW5zdGFuY2VcbiAgICovXG4gIGNsZWFyKCk6IE9iamVjdEFjY3VtdWxhdG9yPG5ldmVyPiB7XG4gICAgcmV0dXJuIG5ldyBPYmplY3RBY2N1bXVsYXRvcigpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBFeGVjdXRlcyBhIGNhbGxiYWNrIGZvciBlYWNoIGtleS12YWx1ZSBwYWlyIGluIHRoZSBhY2N1bXVsYXRvclxuICAgKiBAc3VtbWFyeSBJdGVyYXRlcyBvdmVyIGFsbCBhY2N1bXVsYXRlZCBwcm9wZXJ0aWVzLCBjYWxsaW5nIGEgZnVuY3Rpb24gZm9yIGVhY2hcbiAgICogQHBhcmFtIHtmdW5jdGlvbihhbnksIHN0cmluZywgbnVtYmVyKTogdm9pZH0gY2FsbGJhY2sgLSBUaGUgZnVuY3Rpb24gdG8gZXhlY3V0ZSBmb3IgZWFjaCBlbnRyeVxuICAgKiBAcmV0dXJucyB7dm9pZH1cbiAgICovXG4gIGZvckVhY2goXG4gICAgY2FsbGJhY2s6ICh2YWx1ZTogdGhpc1trZXlvZiB0aGlzXSwga2V5OiBrZXlvZiB0aGlzLCBpOiBudW1iZXIpID0+IHZvaWRcbiAgKTogdm9pZCB7XG4gICAgT2JqZWN0LmVudHJpZXModGhpcykuZm9yRWFjaCgoW2tleSwgdmFsdWVdLCBpKSA9PlxuICAgICAgY2FsbGJhY2sodmFsdWUsIGtleSBhcyBrZXlvZiB0aGlzLCBpKVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIENyZWF0ZXMgYSBuZXcgYXJyYXkgd2l0aCB0aGUgcmVzdWx0cyBvZiBjYWxsaW5nIGEgcHJvdmlkZWQgZnVuY3Rpb24gb24gZXZlcnkgZWxlbWVudCBpbiB0aGUgYWNjdW11bGF0b3JcbiAgICogQHN1bW1hcnkgTWFwcyBlYWNoIGFjY3VtdWxhdGVkIHByb3BlcnR5IHRvIGEgbmV3IHZhbHVlIHVzaW5nIGEgY2FsbGJhY2sgZnVuY3Rpb25cbiAgICogQHRlbXBsYXRlIFIgLSBUaGUgdHlwZSBvZiB0aGUgbWFwcGVkIHZhbHVlc1xuICAgKiBAcGFyYW0ge2Z1bmN0aW9uKGFueSwgc3RyaW5nLG51bWJlcik6IFJ9IGNhbGxiYWNrIC0gRnVuY3Rpb24gdGhhdCBwcm9kdWNlcyBhbiBlbGVtZW50IG9mIHRoZSBuZXcgYXJyYXlcbiAgICogQHJldHVybnMge1JbXX0gQSBuZXcgYXJyYXkgd2l0aCBlYWNoIGVsZW1lbnQgYmVpbmcgdGhlIHJlc3VsdCBvZiB0aGUgY2FsbGJhY2sgZnVuY3Rpb25cbiAgICovXG4gIG1hcDxSPihcbiAgICBjYWxsYmFjazogKHZhbHVlOiB0aGlzW2tleW9mIHRoaXNdLCBrZXk6IGtleW9mIHRoaXMsIGk6IG51bWJlcikgPT4gUlxuICApOiBSW10ge1xuICAgIHJldHVybiBPYmplY3QuZW50cmllcyh0aGlzKS5tYXAoKFtrZXksIHZhbHVlXSwgaSkgPT5cbiAgICAgIGNhbGxiYWNrKHZhbHVlLCBrZXkgYXMga2V5b2YgdGhpcywgaSlcbiAgICApO1xuICB9XG59XG4iXX0=
File without changes
File without changes
@@ -1,5 +1,5 @@
1
+ import { ObjectAccumulator } from "./accumulator";
1
2
  import { EnvironmentFactory } from "./types";
2
- import { ObjectAccumulator } from "typed-object-accumulator";
3
3
  /**
4
4
  * @class Environment
5
5
  * @extends {ObjectAccumulator<T>}
@@ -1,6 +1,6 @@
1
1
  import { toENVFormat } from "./text";
2
+ import { ObjectAccumulator } from "./accumulator";
2
3
  import { isBrowser } from "./web";
3
- import { ObjectAccumulator } from "typed-object-accumulator";
4
4
  /**
5
5
  * @class Environment
6
6
  * @extends {ObjectAccumulator<T>}
@@ -87,4 +87,4 @@ export class Environment extends ObjectAccumulator {
87
87
  .map((k) => (toEnv ? toENVFormat(k) : k));
88
88
  }
89
89
  }
90
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52aXJvbm1lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdXRpbHMvZW52aXJvbm1lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUVyQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBQ2xDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRTdEOzs7Ozs7O0dBT0c7QUFDSCxNQUFNLE9BQU8sV0FBOEIsU0FBUSxpQkFBb0I7SUFDckU7Ozs7OztPQU1HO2FBQ2MsWUFBTyxHQUN0QixHQUFxQixFQUFFLENBQUMsSUFBSSxXQUFXLEVBQUUsQ0FBQztJQVU1QztRQUNFLEtBQUssRUFBRSxDQUFDO0lBQ1YsQ0FBQztJQUVTLE9BQU8sQ0FBQyxDQUFTO1FBQ3pCLElBQUksR0FBNEIsQ0FBQztRQUNqQyxJQUFJLFNBQVMsRUFBRSxFQUFFLENBQUM7WUFDaEIsR0FBRyxHQUFJLFVBQStELENBQ3BFLEtBQUssQ0FDTixDQUFDO1FBQ0osQ0FBQzthQUFNLENBQUM7WUFDTixHQUFHLEdBQUcsVUFBVSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUM7WUFDN0IsQ0FBQyxHQUFHLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNyQixDQUFDO1FBQ0QsT0FBTyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDaEIsQ0FBQztJQUVTLE1BQU0sQ0FBbUIsS0FBUTtRQUN6QyxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDdkMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFO2dCQUM3QixHQUFHLEVBQUUsR0FBRyxFQUFFO29CQUNSLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQ2hDLE9BQU8sT0FBTyxPQUFPLEtBQUssV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQztnQkFDdEQsQ0FBQztnQkFDRCxHQUFHLEVBQUUsQ0FBQyxHQUFlLEVBQUUsRUFBRTtvQkFDdkIsQ0FBQyxHQUFHLEdBQUcsQ0FBQztnQkFDVixDQUFDO2dCQUNELFlBQVksRUFBRSxJQUFJO2dCQUNsQixVQUFVLEVBQUUsSUFBSTthQUNqQixDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7Ozs7Ozs7T0FRRztJQUNPLE1BQU0sQ0FBQyxRQUFRLENBQTZCLEdBQUcsSUFBZTtRQUN0RSxXQUFXLENBQUMsU0FBUyxHQUFHLENBQUMsV0FBVyxDQUFDLFNBQVM7WUFDNUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsR0FBRyxJQUFJLENBQUM7WUFDOUIsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUM7UUFDMUIsT0FBTyxXQUFXLENBQUMsU0FBYyxDQUFDO0lBQ3BDLENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0gsTUFBTSxDQUFDLFVBQVUsQ0FDZixLQUFRO1FBSVIsTUFBTSxRQUFRLEdBQUcsV0FBVyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ3hDLE9BQU8sUUFBUSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFpQixJQUFJO1FBQy9CLE9BQU8sV0FBVyxDQUFDLFFBQVEsRUFBRTthQUMxQixJQUFJLEVBQUU7YUFDTixHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDOUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHRvRU5WRm9ybWF0IH0gZnJvbSBcIi4vdGV4dFwiO1xuaW1wb3J0IHsgRW52aXJvbm1lbnRGYWN0b3J5IH0gZnJvbSBcIi4vdHlwZXNcIjtcbmltcG9ydCB7IGlzQnJvd3NlciB9IGZyb20gXCIuL3dlYlwiO1xuaW1wb3J0IHsgT2JqZWN0QWNjdW11bGF0b3IgfSBmcm9tIFwidHlwZWQtb2JqZWN0LWFjY3VtdWxhdG9yXCI7XG5cbi8qKlxuICogQGNsYXNzIEVudmlyb25tZW50XG4gKiBAZXh0ZW5kcyB7T2JqZWN0QWNjdW11bGF0b3I8VD59XG4gKiBAdGVtcGxhdGUgVFxuICogQGRlc2NyaXB0aW9uIEEgY2xhc3MgcmVwcmVzZW50aW5nIGFuIGVudmlyb25tZW50IHdpdGggYWNjdW11bGF0aW9uIGNhcGFiaWxpdGllcy5cbiAqIEBzdW1tYXJ5IE1hbmFnZXMgZW52aXJvbm1lbnQtcmVsYXRlZCBkYXRhIGFuZCBwcm92aWRlcyBtZXRob2RzIGZvciBhY2N1bXVsYXRpb24gYW5kIGtleSByZXRyaWV2YWwuXG4gKiBAcGFyYW0ge1R9IFtpbml0aWFsRGF0YV0gLSBUaGUgaW5pdGlhbCBkYXRhIHRvIHBvcHVsYXRlIHRoZSBlbnZpcm9ubWVudCB3aXRoLlxuICovXG5leHBvcnQgY2xhc3MgRW52aXJvbm1lbnQ8VCBleHRlbmRzIG9iamVjdD4gZXh0ZW5kcyBPYmplY3RBY2N1bXVsYXRvcjxUPiB7XG4gIC8qKlxuICAgKiBAc3RhdGljXG4gICAqIEBwcm90ZWN0ZWRcbiAgICogQGRlc2NyaXB0aW9uIEEgZmFjdG9yeSBmdW5jdGlvbiBmb3IgY3JlYXRpbmcgRW52aXJvbm1lbnQgaW5zdGFuY2VzLlxuICAgKiBAc3VtbWFyeSBEZWZpbmVzIGhvdyBuZXcgaW5zdGFuY2VzIG9mIHRoZSBFbnZpcm9ubWVudCBjbGFzcyBzaG91bGQgYmUgY3JlYXRlZC5cbiAgICogQHJldHVybiB7RW52aXJvbm1lbnQ8YW55Pn0gQSBuZXcgaW5zdGFuY2Ugb2YgdGhlIEVudmlyb25tZW50IGNsYXNzLlxuICAgKi9cbiAgcHJvdGVjdGVkIHN0YXRpYyBmYWN0b3J5OiBFbnZpcm9ubWVudEZhY3Rvcnk8YW55LCBhbnk+ID1cbiAgICAoKTogRW52aXJvbm1lbnQ8YW55PiA9PiBuZXcgRW52aXJvbm1lbnQoKTtcblxuICAvKipcbiAgICogQHN0YXRpY1xuICAgKiBAcHJpdmF0ZVxuICAgKiBAZGVzY3JpcHRpb24gVGhlIHNpbmdsZXRvbiBpbnN0YW5jZSBvZiB0aGUgRW52aXJvbm1lbnQgY2xhc3MuXG4gICAqIEB0eXBlIHtFbnZpcm9ubWVudDxhbnk+fVxuICAgKi9cbiAgcHJpdmF0ZSBzdGF0aWMgX2luc3RhbmNlOiBFbnZpcm9ubWVudDxhbnk+O1xuXG4gIHByb3RlY3RlZCBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGZyb21FbnYoazogc3RyaW5nKSB7XG4gICAgbGV0IGVudjogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gICAgaWYgKGlzQnJvd3NlcigpKSB7XG4gICAgICBlbnYgPSAoZ2xvYmFsVGhpcyBhcyB0eXBlb2YgZ2xvYmFsVGhpcyAmIHsgRU5WOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IH0pW1xuICAgICAgICBcIkVOVlwiXG4gICAgICBdO1xuICAgIH0gZWxzZSB7XG4gICAgICBlbnYgPSBnbG9iYWxUaGlzLnByb2Nlc3MuZW52O1xuICAgICAgayA9IHRvRU5WRm9ybWF0KGspO1xuICAgIH1cbiAgICByZXR1cm4gZW52W2tdO1xuICB9XG5cbiAgcHJvdGVjdGVkIGV4cGFuZDxWIGV4dGVuZHMgb2JqZWN0Pih2YWx1ZTogVik6IHZvaWQge1xuICAgIE9iamVjdC5lbnRyaWVzKHZhbHVlKS5mb3JFYWNoKChbaywgdl0pID0+IHtcbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCBrLCB7XG4gICAgICAgIGdldDogKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGZyb21FbnYgPSB0aGlzLmZyb21FbnYoayk7XG4gICAgICAgICAgcmV0dXJuIHR5cGVvZiBmcm9tRW52ID09PSBcInVuZGVmaW5lZFwiID8gdiA6IGZyb21FbnY7XG4gICAgICAgIH0sXG4gICAgICAgIHNldDogKHZhbDogVltrZXlvZiBWXSkgPT4ge1xuICAgICAgICAgIHYgPSB2YWw7XG4gICAgICAgIH0sXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwcm90ZWN0ZWRcbiAgICogQHN0YXRpY1xuICAgKiBAZGVzY3JpcHRpb24gUmV0cmlldmVzIG9yIGNyZWF0ZXMgdGhlIHNpbmdsZXRvbiBpbnN0YW5jZSBvZiB0aGUgRW52aXJvbm1lbnQgY2xhc3MuXG4gICAqIEBzdW1tYXJ5IEVuc3VyZXMgb25seSBvbmUgaW5zdGFuY2Ugb2YgdGhlIEVudmlyb25tZW50IGNsYXNzIGV4aXN0cy5cbiAgICogQHRlbXBsYXRlIEVcbiAgICogQHBhcmFtIHsuLi51bmtub3duW119IGFyZ3MgLSBBcmd1bWVudHMgdG8gcGFzcyB0byB0aGUgZmFjdG9yeSBmdW5jdGlvbiBpZiBhIG5ldyBpbnN0YW5jZSBpcyBjcmVhdGVkLlxuICAgKiBAcmV0dXJuIHtFfSBUaGUgc2luZ2xldG9uIGluc3RhbmNlIG9mIHRoZSBFbnZpcm9ubWVudCBjbGFzcy5cbiAgICovXG4gIHByb3RlY3RlZCBzdGF0aWMgaW5zdGFuY2U8RSBleHRlbmRzIEVudmlyb25tZW50PGFueT4+KC4uLmFyZ3M6IHVua25vd25bXSk6IEUge1xuICAgIEVudmlyb25tZW50Ll9pbnN0YW5jZSA9ICFFbnZpcm9ubWVudC5faW5zdGFuY2VcbiAgICAgID8gRW52aXJvbm1lbnQuZmFjdG9yeSguLi5hcmdzKVxuICAgICAgOiBFbnZpcm9ubWVudC5faW5zdGFuY2U7XG4gICAgcmV0dXJuIEVudmlyb25tZW50Ll9pbnN0YW5jZSBhcyBFO1xuICB9XG5cbiAgLyoqXG4gICAqIEBzdGF0aWNcbiAgICogQGRlc2NyaXB0aW9uIEFjY3VtdWxhdGVzIHRoZSBnaXZlbiB2YWx1ZSBpbnRvIHRoZSBlbnZpcm9ubWVudC5cbiAgICogQHN1bW1hcnkgQWRkcyBuZXcgcHJvcGVydGllcyB0byB0aGUgZW52aXJvbm1lbnQgZnJvbSB0aGUgcHJvdmlkZWQgb2JqZWN0LlxuICAgKiBAdGVtcGxhdGUgVlxuICAgKiBAcGFyYW0ge1Z9IHZhbHVlIC0gVGhlIG9iamVjdCB0byBhY2N1bXVsYXRlIGludG8gdGhlIGVudmlyb25tZW50LlxuICAgKiBAcmV0dXJuIHtWfSBUaGUgdXBkYXRlZCBlbnZpcm9ubWVudCBpbnN0YW5jZS5cbiAgICovXG4gIHN0YXRpYyBhY2N1bXVsYXRlPFYgZXh0ZW5kcyBvYmplY3Q+KFxuICAgIHZhbHVlOiBWXG4gICk6IHR5cGVvZiBFbnZpcm9ubWVudC5faW5zdGFuY2UgJlxuICAgIFYgJlxuICAgIE9iamVjdEFjY3VtdWxhdG9yPHR5cGVvZiBFbnZpcm9ubWVudC5faW5zdGFuY2UgJiBWPiB7XG4gICAgY29uc3QgaW5zdGFuY2UgPSBFbnZpcm9ubWVudC5pbnN0YW5jZSgpO1xuICAgIHJldHVybiBpbnN0YW5jZS5hY2N1bXVsYXRlKHZhbHVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAc3RhdGljXG4gICAqIEBkZXNjcmlwdGlvbiBSZXRyaWV2ZXMgdGhlIGtleXMgb2YgdGhlIGVudmlyb25tZW50LCBvcHRpb25hbGx5IGNvbnZlcnRpbmcgdGhlbSB0byBFTlYgZm9ybWF0LlxuICAgKiBAc3VtbWFyeSBHZXRzIGFsbCBrZXlzIGluIHRoZSBlbnZpcm9ubWVudCwgd2l0aCBhbiBvcHRpb24gdG8gZm9ybWF0IHRoZW0gZm9yIGVudmlyb25tZW50IHZhcmlhYmxlcy5cbiAgICogQHBhcmFtIHtib29sZWFufSBbdG9FbnY9dHJ1ZV0gLSBXaGV0aGVyIHRvIGNvbnZlcnQgdGhlIGtleXMgdG8gRU5WIGZvcm1hdC5cbiAgICogQHJldHVybiB7c3RyaW5nW119IEFuIGFycmF5IG9mIGtleXMgZnJvbSB0aGUgZW52aXJvbm1lbnQuXG4gICAqL1xuICBzdGF0aWMga2V5cyh0b0VudjogYm9vbGVhbiA9IHRydWUpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIEVudmlyb25tZW50Lmluc3RhbmNlKClcbiAgICAgIC5rZXlzKClcbiAgICAgIC5tYXAoKGspID0+ICh0b0VudiA/IHRvRU5WRm9ybWF0KGspIDogaykpO1xuICB9XG59XG4iXX0=
90
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52aXJvbm1lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdXRpbHMvZW52aXJvbm1lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUNyQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFbEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUVsQzs7Ozs7OztHQU9HO0FBQ0gsTUFBTSxPQUFPLFdBQThCLFNBQVEsaUJBQW9CO0lBQ3JFOzs7Ozs7T0FNRzthQUNjLFlBQU8sR0FDdEIsR0FBcUIsRUFBRSxDQUFDLElBQUksV0FBVyxFQUFFLENBQUM7SUFVNUM7UUFDRSxLQUFLLEVBQUUsQ0FBQztJQUNWLENBQUM7SUFFUyxPQUFPLENBQUMsQ0FBUztRQUN6QixJQUFJLEdBQTRCLENBQUM7UUFDakMsSUFBSSxTQUFTLEVBQUUsRUFBRSxDQUFDO1lBQ2hCLEdBQUcsR0FBSSxVQUErRCxDQUNwRSxLQUFLLENBQ04sQ0FBQztRQUNKLENBQUM7YUFBTSxDQUFDO1lBQ04sR0FBRyxHQUFHLFVBQVUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDO1lBQzdCLENBQUMsR0FBRyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDckIsQ0FBQztRQUNELE9BQU8sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2hCLENBQUM7SUFFUyxNQUFNLENBQW1CLEtBQVE7UUFDekMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQ3ZDLE1BQU0sQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRTtnQkFDN0IsR0FBRyxFQUFFLEdBQUcsRUFBRTtvQkFDUixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUNoQyxPQUFPLE9BQU8sT0FBTyxLQUFLLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUM7Z0JBQ3RELENBQUM7Z0JBQ0QsR0FBRyxFQUFFLENBQUMsR0FBZSxFQUFFLEVBQUU7b0JBQ3ZCLENBQUMsR0FBRyxHQUFHLENBQUM7Z0JBQ1YsQ0FBQztnQkFDRCxZQUFZLEVBQUUsSUFBSTtnQkFDbEIsVUFBVSxFQUFFLElBQUk7YUFDakIsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDTyxNQUFNLENBQUMsUUFBUSxDQUE2QixHQUFHLElBQWU7UUFDdEUsV0FBVyxDQUFDLFNBQVMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxTQUFTO1lBQzVDLENBQUMsQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLEdBQUcsSUFBSSxDQUFDO1lBQzlCLENBQUMsQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDO1FBQzFCLE9BQU8sV0FBVyxDQUFDLFNBQWMsQ0FBQztJQUNwQyxDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNILE1BQU0sQ0FBQyxVQUFVLENBQ2YsS0FBUTtRQUlSLE1BQU0sUUFBUSxHQUFHLFdBQVcsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUN4QyxPQUFPLFFBQVEsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBaUIsSUFBSTtRQUMvQixPQUFPLFdBQVcsQ0FBQyxRQUFRLEVBQUU7YUFDMUIsSUFBSSxFQUFFO2FBQ04sR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzlDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB0b0VOVkZvcm1hdCB9IGZyb20gXCIuL3RleHRcIjtcbmltcG9ydCB7IE9iamVjdEFjY3VtdWxhdG9yIH0gZnJvbSBcIi4vYWNjdW11bGF0b3JcIjtcbmltcG9ydCB7IEVudmlyb25tZW50RmFjdG9yeSB9IGZyb20gXCIuL3R5cGVzXCI7XG5pbXBvcnQgeyBpc0Jyb3dzZXIgfSBmcm9tIFwiLi93ZWJcIjtcblxuLyoqXG4gKiBAY2xhc3MgRW52aXJvbm1lbnRcbiAqIEBleHRlbmRzIHtPYmplY3RBY2N1bXVsYXRvcjxUPn1cbiAqIEB0ZW1wbGF0ZSBUXG4gKiBAZGVzY3JpcHRpb24gQSBjbGFzcyByZXByZXNlbnRpbmcgYW4gZW52aXJvbm1lbnQgd2l0aCBhY2N1bXVsYXRpb24gY2FwYWJpbGl0aWVzLlxuICogQHN1bW1hcnkgTWFuYWdlcyBlbnZpcm9ubWVudC1yZWxhdGVkIGRhdGEgYW5kIHByb3ZpZGVzIG1ldGhvZHMgZm9yIGFjY3VtdWxhdGlvbiBhbmQga2V5IHJldHJpZXZhbC5cbiAqIEBwYXJhbSB7VH0gW2luaXRpYWxEYXRhXSAtIFRoZSBpbml0aWFsIGRhdGEgdG8gcG9wdWxhdGUgdGhlIGVudmlyb25tZW50IHdpdGguXG4gKi9cbmV4cG9ydCBjbGFzcyBFbnZpcm9ubWVudDxUIGV4dGVuZHMgb2JqZWN0PiBleHRlbmRzIE9iamVjdEFjY3VtdWxhdG9yPFQ+IHtcbiAgLyoqXG4gICAqIEBzdGF0aWNcbiAgICogQHByb3RlY3RlZFxuICAgKiBAZGVzY3JpcHRpb24gQSBmYWN0b3J5IGZ1bmN0aW9uIGZvciBjcmVhdGluZyBFbnZpcm9ubWVudCBpbnN0YW5jZXMuXG4gICAqIEBzdW1tYXJ5IERlZmluZXMgaG93IG5ldyBpbnN0YW5jZXMgb2YgdGhlIEVudmlyb25tZW50IGNsYXNzIHNob3VsZCBiZSBjcmVhdGVkLlxuICAgKiBAcmV0dXJuIHtFbnZpcm9ubWVudDxhbnk+fSBBIG5ldyBpbnN0YW5jZSBvZiB0aGUgRW52aXJvbm1lbnQgY2xhc3MuXG4gICAqL1xuICBwcm90ZWN0ZWQgc3RhdGljIGZhY3Rvcnk6IEVudmlyb25tZW50RmFjdG9yeTxhbnksIGFueT4gPVxuICAgICgpOiBFbnZpcm9ubWVudDxhbnk+ID0+IG5ldyBFbnZpcm9ubWVudCgpO1xuXG4gIC8qKlxuICAgKiBAc3RhdGljXG4gICAqIEBwcml2YXRlXG4gICAqIEBkZXNjcmlwdGlvbiBUaGUgc2luZ2xldG9uIGluc3RhbmNlIG9mIHRoZSBFbnZpcm9ubWVudCBjbGFzcy5cbiAgICogQHR5cGUge0Vudmlyb25tZW50PGFueT59XG4gICAqL1xuICBwcml2YXRlIHN0YXRpYyBfaW5zdGFuY2U6IEVudmlyb25tZW50PGFueT47XG5cbiAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZnJvbUVudihrOiBzdHJpbmcpIHtcbiAgICBsZXQgZW52OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgICBpZiAoaXNCcm93c2VyKCkpIHtcbiAgICAgIGVudiA9IChnbG9iYWxUaGlzIGFzIHR5cGVvZiBnbG9iYWxUaGlzICYgeyBFTlY6IFJlY29yZDxzdHJpbmcsIGFueT4gfSlbXG4gICAgICAgIFwiRU5WXCJcbiAgICAgIF07XG4gICAgfSBlbHNlIHtcbiAgICAgIGVudiA9IGdsb2JhbFRoaXMucHJvY2Vzcy5lbnY7XG4gICAgICBrID0gdG9FTlZGb3JtYXQoayk7XG4gICAgfVxuICAgIHJldHVybiBlbnZba107XG4gIH1cblxuICBwcm90ZWN0ZWQgZXhwYW5kPFYgZXh0ZW5kcyBvYmplY3Q+KHZhbHVlOiBWKTogdm9pZCB7XG4gICAgT2JqZWN0LmVudHJpZXModmFsdWUpLmZvckVhY2goKFtrLCB2XSkgPT4ge1xuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsIGssIHtcbiAgICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgICAgY29uc3QgZnJvbUVudiA9IHRoaXMuZnJvbUVudihrKTtcbiAgICAgICAgICByZXR1cm4gdHlwZW9mIGZyb21FbnYgPT09IFwidW5kZWZpbmVkXCIgPyB2IDogZnJvbUVudjtcbiAgICAgICAgfSxcbiAgICAgICAgc2V0OiAodmFsOiBWW2tleW9mIFZdKSA9PiB7XG4gICAgICAgICAgdiA9IHZhbDtcbiAgICAgICAgfSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQHByb3RlY3RlZFxuICAgKiBAc3RhdGljXG4gICAqIEBkZXNjcmlwdGlvbiBSZXRyaWV2ZXMgb3IgY3JlYXRlcyB0aGUgc2luZ2xldG9uIGluc3RhbmNlIG9mIHRoZSBFbnZpcm9ubWVudCBjbGFzcy5cbiAgICogQHN1bW1hcnkgRW5zdXJlcyBvbmx5IG9uZSBpbnN0YW5jZSBvZiB0aGUgRW52aXJvbm1lbnQgY2xhc3MgZXhpc3RzLlxuICAgKiBAdGVtcGxhdGUgRVxuICAgKiBAcGFyYW0gey4uLnVua25vd25bXX0gYXJncyAtIEFyZ3VtZW50cyB0byBwYXNzIHRvIHRoZSBmYWN0b3J5IGZ1bmN0aW9uIGlmIGEgbmV3IGluc3RhbmNlIGlzIGNyZWF0ZWQuXG4gICAqIEByZXR1cm4ge0V9IFRoZSBzaW5nbGV0b24gaW5zdGFuY2Ugb2YgdGhlIEVudmlyb25tZW50IGNsYXNzLlxuICAgKi9cbiAgcHJvdGVjdGVkIHN0YXRpYyBpbnN0YW5jZTxFIGV4dGVuZHMgRW52aXJvbm1lbnQ8YW55Pj4oLi4uYXJnczogdW5rbm93bltdKTogRSB7XG4gICAgRW52aXJvbm1lbnQuX2luc3RhbmNlID0gIUVudmlyb25tZW50Ll9pbnN0YW5jZVxuICAgICAgPyBFbnZpcm9ubWVudC5mYWN0b3J5KC4uLmFyZ3MpXG4gICAgICA6IEVudmlyb25tZW50Ll9pbnN0YW5jZTtcbiAgICByZXR1cm4gRW52aXJvbm1lbnQuX2luc3RhbmNlIGFzIEU7XG4gIH1cblxuICAvKipcbiAgICogQHN0YXRpY1xuICAgKiBAZGVzY3JpcHRpb24gQWNjdW11bGF0ZXMgdGhlIGdpdmVuIHZhbHVlIGludG8gdGhlIGVudmlyb25tZW50LlxuICAgKiBAc3VtbWFyeSBBZGRzIG5ldyBwcm9wZXJ0aWVzIHRvIHRoZSBlbnZpcm9ubWVudCBmcm9tIHRoZSBwcm92aWRlZCBvYmplY3QuXG4gICAqIEB0ZW1wbGF0ZSBWXG4gICAqIEBwYXJhbSB7Vn0gdmFsdWUgLSBUaGUgb2JqZWN0IHRvIGFjY3VtdWxhdGUgaW50byB0aGUgZW52aXJvbm1lbnQuXG4gICAqIEByZXR1cm4ge1Z9IFRoZSB1cGRhdGVkIGVudmlyb25tZW50IGluc3RhbmNlLlxuICAgKi9cbiAgc3RhdGljIGFjY3VtdWxhdGU8ViBleHRlbmRzIG9iamVjdD4oXG4gICAgdmFsdWU6IFZcbiAgKTogdHlwZW9mIEVudmlyb25tZW50Ll9pbnN0YW5jZSAmXG4gICAgViAmXG4gICAgT2JqZWN0QWNjdW11bGF0b3I8dHlwZW9mIEVudmlyb25tZW50Ll9pbnN0YW5jZSAmIFY+IHtcbiAgICBjb25zdCBpbnN0YW5jZSA9IEVudmlyb25tZW50Lmluc3RhbmNlKCk7XG4gICAgcmV0dXJuIGluc3RhbmNlLmFjY3VtdWxhdGUodmFsdWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBzdGF0aWNcbiAgICogQGRlc2NyaXB0aW9uIFJldHJpZXZlcyB0aGUga2V5cyBvZiB0aGUgZW52aXJvbm1lbnQsIG9wdGlvbmFsbHkgY29udmVydGluZyB0aGVtIHRvIEVOViBmb3JtYXQuXG4gICAqIEBzdW1tYXJ5IEdldHMgYWxsIGtleXMgaW4gdGhlIGVudmlyb25tZW50LCB3aXRoIGFuIG9wdGlvbiB0byBmb3JtYXQgdGhlbSBmb3IgZW52aXJvbm1lbnQgdmFyaWFibGVzLlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IFt0b0Vudj10cnVlXSAtIFdoZXRoZXIgdG8gY29udmVydCB0aGUga2V5cyB0byBFTlYgZm9ybWF0LlxuICAgKiBAcmV0dXJuIHtzdHJpbmdbXX0gQW4gYXJyYXkgb2Yga2V5cyBmcm9tIHRoZSBlbnZpcm9ubWVudC5cbiAgICovXG4gIHN0YXRpYyBrZXlzKHRvRW52OiBib29sZWFuID0gdHJ1ZSk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gRW52aXJvbm1lbnQuaW5zdGFuY2UoKVxuICAgICAgLmtleXMoKVxuICAgICAgLm1hcCgoaykgPT4gKHRvRW52ID8gdG9FTlZGb3JtYXQoaykgOiBrKSk7XG4gIH1cbn1cbiJdfQ==
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
package/lib/index.cjs CHANGED
@@ -48,10 +48,10 @@ __exportStar(require("./writers/index.cjs"), exports);
48
48
  * @description Represents the current version of the module.
49
49
  * @summary This constant stores the version number of the @asdasdasd/utils module.
50
50
  * The actual version number is replaced during the build process,
51
- * with the placeholder "0.2.7" being substituted with the current version.
51
+ * with the placeholder "0.2.9" being substituted with the current version.
52
52
  *
53
53
  * @const VERSION
54
54
  * @memberOf module:@decaf-ts/utils
55
55
  */
56
- exports.VERSION = "0.2.7";
57
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSx3Q0FBc0I7QUFDdEIsMENBQXdCO0FBQ3hCLDJDQUF5QjtBQUN6QiwwQ0FBd0I7QUFDeEIsNENBQTBCO0FBRTFCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXVCRztBQUVIOzs7Ozs7OztHQVFHO0FBQ1UsUUFBQSxPQUFPLEdBQUcsYUFBYSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSBcIi4vY2xpXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9pbnB1dFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vb3V0cHV0XCI7XG5leHBvcnQgKiBmcm9tIFwiLi91dGlsc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vd3JpdGVyc1wiO1xuXG4vKipcbiAqIEBtb2R1bGUgQGRlY2FmLXRzL3V0aWxzXG4gKiBAZGVzY3JpcHRpb25cbiAqIFRoaXMgbW9kdWxlIHNlcnZlcyBhIGxpZ2h0IHZlcnNpb24gb2YgRGVjYWYgQ0xJIHRvb2wsIHByb3ZpZGluZyBhIGNvbXByZWhlbnNpdmUgc2V0IG9mIHV0aWxpdGllc1xuICogYW5kIGZ1bmN0aW9uYWxpdGllcyBmb3IgY29tbWFuZC1saW5lIGludGVyZmFjZSBvcGVyYXRpb25zLiBJdCBlbmNvbXBhc3NlcyBzZXZlcmFsIGtleSBjb21wb25lbnRzOlxuICpcbiAqIDEuIElucHV0IEhhbmRsaW5nOiBNYW5hZ2VzIHVzZXIgaW5wdXQgYW5kIGNvbW1hbmQtbGluZSBhcmd1bWVudHMgcHJvY2Vzc2luZy5cbiAqIDIuIFV0aWxpdHkgRnVuY3Rpb25zOiBPZmZlcnMgYSBjb2xsZWN0aW9uIG9mIGhlbHBlciBmdW5jdGlvbnMgYW5kIGNvbnN0YW50cyBmb3IgdmFyaW91cyBvcGVyYXRpb25zLlxuICogMy4gVHlwZSBEZWZpbml0aW9uczogRGVmaW5lcyBjdXN0b20gdHlwZXMgYW5kIGludGVyZmFjZXMgdXNlZCB0aHJvdWdob3V0IHRoZSBtb2R1bGUuXG4gKiA0LiBPdXRwdXQgTWFuYWdlbWVudDogUHJvdmlkZXMgZGlmZmVyZW50IG91dHB1dCB3cml0aW5nIHN0cmF0ZWdpZXMgZm9yIGZsZXhpYmxlIGNvbnNvbGUgb3V0cHV0IGhhbmRsaW5nLlxuICpcbiAqIFRoZSBtb2R1bGUgaXMgZGVzaWduZWQgdG8gZmFjaWxpdGF0ZSB0aGUgY3JlYXRpb24gb2Ygcm9idXN0IENMSSBhcHBsaWNhdGlvbnMgYnkgb2ZmZXJpbmc6XG4gKiAtIFN0YW5kYXJkaXplZCBpbnB1dCBwYXJzaW5nIGFuZCB2YWxpZGF0aW9uXG4gKiAtIENvbnNpc3RlbnQgb3V0cHV0IGZvcm1hdHRpbmcgYW5kIGhhbmRsaW5nXG4gKiAtIFJldXNhYmxlIHV0aWxpdHkgZnVuY3Rpb25zIGZvciBjb21tb24gQ0xJIHRhc2tzXG4gKiAtIEV4dGVuc2libGUgYXJjaGl0ZWN0dXJlIGZvciBhZGRpbmcgbmV3IGNvbW1hbmRzIGFuZCBmZWF0dXJlc1xuICpcbiAqIEl0IHN1cHBvcnRzIHZhcmlvdXMgb3V0cHV0IG1vZGVzLCBpbmNsdWRpbmcgc3RhbmRhcmQgY29uc29sZSBvdXRwdXQgYW5kIHJlZ3VsYXIgZXhwcmVzc2lvbi1iYXNlZCBvdXRwdXQsXG4gKiBhbGxvd2luZyBmb3IgdmVyc2F0aWxlIGRhdGEgcHJlc2VudGF0aW9uIGFuZCBwcm9jZXNzaW5nLiBUaGUgbW9kdWxhciBzdHJ1Y3R1cmUgZW5hYmxlcyBlYXN5IG1haW50ZW5hbmNlXG4gKiBhbmQgZXh0ZW5zaW9uIG9mIHRoZSBDTEkgZnVuY3Rpb25hbGl0eS5cbiAqXG4gKiBUaGlzIG1vZHVsZSBpcyBwYXJ0aWN1bGFybHkgdXNlZnVsIGZvciBkZXZlbG9wZXJzIGJ1aWxkaW5nIGNvbXBsZXggY29tbWFuZC1saW5lIHRvb2xzIHRoYXQgcmVxdWlyZVxuICogc3RydWN0dXJlZCBpbnB1dCBoYW5kbGluZywgZmxleGlibGUgb3V0cHV0IGZvcm1hdHRpbmcsIGFuZCBhIHJpY2ggc2V0IG9mIHV0aWxpdHkgZnVuY3Rpb25zLlxuICovXG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIFJlcHJlc2VudHMgdGhlIGN1cnJlbnQgdmVyc2lvbiBvZiB0aGUgbW9kdWxlLlxuICogQHN1bW1hcnkgVGhpcyBjb25zdGFudCBzdG9yZXMgdGhlIHZlcnNpb24gbnVtYmVyIG9mIHRoZSBAYXNkYXNkYXNkL3V0aWxzIG1vZHVsZS5cbiAqIFRoZSBhY3R1YWwgdmVyc2lvbiBudW1iZXIgaXMgcmVwbGFjZWQgZHVyaW5nIHRoZSBidWlsZCBwcm9jZXNzLFxuICogd2l0aCB0aGUgcGxhY2Vob2xkZXIgXCIjI1ZFUlNJT04jI1wiIGJlaW5nIHN1YnN0aXR1dGVkIHdpdGggdGhlIGN1cnJlbnQgdmVyc2lvbi5cbiAqXG4gKiBAY29uc3QgVkVSU0lPTlxuICogQG1lbWJlck9mIG1vZHVsZTpAZGVjYWYtdHMvdXRpbHNcbiAqL1xuZXhwb3J0IGNvbnN0IFZFUlNJT04gPSBcIiMjVkVSU0lPTiMjXCI7XG4iXX0=
56
+ exports.VERSION = "0.2.9";
57
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxrREFBc0I7QUFDdEIsb0RBQXdCO0FBQ3hCLHFEQUF5QjtBQUN6QixvREFBd0I7QUFDeEIsc0RBQTBCO0FBRTFCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXVCRztBQUVIOzs7Ozs7OztHQVFHO0FBQ1UsUUFBQSxPQUFPLEdBQUcsYUFBYSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSBcIi4vY2xpXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9pbnB1dFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vb3V0cHV0XCI7XG5leHBvcnQgKiBmcm9tIFwiLi91dGlsc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vd3JpdGVyc1wiO1xuXG4vKipcbiAqIEBtb2R1bGUgQGRlY2FmLXRzL3V0aWxzXG4gKiBAZGVzY3JpcHRpb25cbiAqIFRoaXMgbW9kdWxlIHNlcnZlcyBhIGxpZ2h0IHZlcnNpb24gb2YgRGVjYWYgQ0xJIHRvb2wsIHByb3ZpZGluZyBhIGNvbXByZWhlbnNpdmUgc2V0IG9mIHV0aWxpdGllc1xuICogYW5kIGZ1bmN0aW9uYWxpdGllcyBmb3IgY29tbWFuZC1saW5lIGludGVyZmFjZSBvcGVyYXRpb25zLiBJdCBlbmNvbXBhc3NlcyBzZXZlcmFsIGtleSBjb21wb25lbnRzOlxuICpcbiAqIDEuIElucHV0IEhhbmRsaW5nOiBNYW5hZ2VzIHVzZXIgaW5wdXQgYW5kIGNvbW1hbmQtbGluZSBhcmd1bWVudHMgcHJvY2Vzc2luZy5cbiAqIDIuIFV0aWxpdHkgRnVuY3Rpb25zOiBPZmZlcnMgYSBjb2xsZWN0aW9uIG9mIGhlbHBlciBmdW5jdGlvbnMgYW5kIGNvbnN0YW50cyBmb3IgdmFyaW91cyBvcGVyYXRpb25zLlxuICogMy4gVHlwZSBEZWZpbml0aW9uczogRGVmaW5lcyBjdXN0b20gdHlwZXMgYW5kIGludGVyZmFjZXMgdXNlZCB0aHJvdWdob3V0IHRoZSBtb2R1bGUuXG4gKiA0LiBPdXRwdXQgTWFuYWdlbWVudDogUHJvdmlkZXMgZGlmZmVyZW50IG91dHB1dCB3cml0aW5nIHN0cmF0ZWdpZXMgZm9yIGZsZXhpYmxlIGNvbnNvbGUgb3V0cHV0IGhhbmRsaW5nLlxuICpcbiAqIFRoZSBtb2R1bGUgaXMgZGVzaWduZWQgdG8gZmFjaWxpdGF0ZSB0aGUgY3JlYXRpb24gb2Ygcm9idXN0IENMSSBhcHBsaWNhdGlvbnMgYnkgb2ZmZXJpbmc6XG4gKiAtIFN0YW5kYXJkaXplZCBpbnB1dCBwYXJzaW5nIGFuZCB2YWxpZGF0aW9uXG4gKiAtIENvbnNpc3RlbnQgb3V0cHV0IGZvcm1hdHRpbmcgYW5kIGhhbmRsaW5nXG4gKiAtIFJldXNhYmxlIHV0aWxpdHkgZnVuY3Rpb25zIGZvciBjb21tb24gQ0xJIHRhc2tzXG4gKiAtIEV4dGVuc2libGUgYXJjaGl0ZWN0dXJlIGZvciBhZGRpbmcgbmV3IGNvbW1hbmRzIGFuZCBmZWF0dXJlc1xuICpcbiAqIEl0IHN1cHBvcnRzIHZhcmlvdXMgb3V0cHV0IG1vZGVzLCBpbmNsdWRpbmcgc3RhbmRhcmQgY29uc29sZSBvdXRwdXQgYW5kIHJlZ3VsYXIgZXhwcmVzc2lvbi1iYXNlZCBvdXRwdXQsXG4gKiBhbGxvd2luZyBmb3IgdmVyc2F0aWxlIGRhdGEgcHJlc2VudGF0aW9uIGFuZCBwcm9jZXNzaW5nLiBUaGUgbW9kdWxhciBzdHJ1Y3R1cmUgZW5hYmxlcyBlYXN5IG1haW50ZW5hbmNlXG4gKiBhbmQgZXh0ZW5zaW9uIG9mIHRoZSBDTEkgZnVuY3Rpb25hbGl0eS5cbiAqXG4gKiBUaGlzIG1vZHVsZSBpcyBwYXJ0aWN1bGFybHkgdXNlZnVsIGZvciBkZXZlbG9wZXJzIGJ1aWxkaW5nIGNvbXBsZXggY29tbWFuZC1saW5lIHRvb2xzIHRoYXQgcmVxdWlyZVxuICogc3RydWN0dXJlZCBpbnB1dCBoYW5kbGluZywgZmxleGlibGUgb3V0cHV0IGZvcm1hdHRpbmcsIGFuZCBhIHJpY2ggc2V0IG9mIHV0aWxpdHkgZnVuY3Rpb25zLlxuICovXG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIFJlcHJlc2VudHMgdGhlIGN1cnJlbnQgdmVyc2lvbiBvZiB0aGUgbW9kdWxlLlxuICogQHN1bW1hcnkgVGhpcyBjb25zdGFudCBzdG9yZXMgdGhlIHZlcnNpb24gbnVtYmVyIG9mIHRoZSBAYXNkYXNkYXNkL3V0aWxzIG1vZHVsZS5cbiAqIFRoZSBhY3R1YWwgdmVyc2lvbiBudW1iZXIgaXMgcmVwbGFjZWQgZHVyaW5nIHRoZSBidWlsZCBwcm9jZXNzLFxuICogd2l0aCB0aGUgcGxhY2Vob2xkZXIgXCIjI1ZFUlNJT04jI1wiIGJlaW5nIHN1YnN0aXR1dGVkIHdpdGggdGhlIGN1cnJlbnQgdmVyc2lvbi5cbiAqXG4gKiBAY29uc3QgVkVSU0lPTlxuICogQG1lbWJlck9mIG1vZHVsZTpAZGVjYWYtdHMvdXRpbHNcbiAqL1xuZXhwb3J0IGNvbnN0IFZFUlNJT04gPSBcIiMjVkVSU0lPTiMjXCI7XG4iXX0=
package/lib/index.d.ts CHANGED
@@ -31,9 +31,9 @@ export * from "./writers";
31
31
  * @description Represents the current version of the module.
32
32
  * @summary This constant stores the version number of the @asdasdasd/utils module.
33
33
  * The actual version number is replaced during the build process,
34
- * with the placeholder "0.2.7" being substituted with the current version.
34
+ * with the placeholder "0.2.9" being substituted with the current version.
35
35
  *
36
36
  * @const VERSION
37
37
  * @memberOf module:@decaf-ts/utils
38
38
  */
39
- export declare const VERSION = "0.2.7";
39
+ export declare const VERSION = "0.2.9";
@@ -16,4 +16,4 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./input.cjs"), exports);
18
18
  __exportStar(require("./types.cjs"), exports);
19
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5wdXQvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDBDQUF3QjtBQUN4QiwwQ0FBd0IiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2lucHV0JztcbmV4cG9ydCAqIGZyb20gJy4vdHlwZXMnO1xuIl19
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5wdXQvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDhDQUF3QjtBQUN4Qiw4Q0FBd0IiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2lucHV0JztcbmV4cG9ydCAqIGZyb20gJy4vdHlwZXMnO1xuIl19
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -15,4 +15,4 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./common.cjs"), exports);
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvb3V0cHV0L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwyQ0FBeUIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tIFwiLi9jb21tb25cIjtcbiJdfQ==
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvb3V0cHV0L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwrQ0FBeUIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tIFwiLi9jb21tb25cIjtcbiJdfQ==
File without changes
@@ -0,0 +1,148 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ObjectAccumulator = void 0;
4
+ /**
5
+ * @class ObjectAccumulator
6
+ * @template T - The type of the accumulated object, extends object
7
+ * @description A class that accumulates objects and provides type-safe access to their properties.
8
+ * It allows for dynamic addition of properties while maintaining type information.
9
+ * @summary Accumulates objects and maintains type information for accumulated properties
10
+ * @memberOf utils
11
+ */
12
+ class ObjectAccumulator {
13
+ constructor() {
14
+ Object.defineProperty(this, "__size", {
15
+ value: 0,
16
+ writable: true,
17
+ configurable: false,
18
+ enumerable: false,
19
+ });
20
+ }
21
+ /**
22
+ * @protected
23
+ * @description Expands the accumulator with properties from a new object
24
+ * @summary Adds new properties to the accumulator
25
+ * @template V - The type of the object being expanded
26
+ * @param {V} value - The object to expand with
27
+ * @returns {void}
28
+ */
29
+ expand(value) {
30
+ Object.entries(value).forEach(([k, v]) => {
31
+ Object.defineProperty(this, k, {
32
+ get: () => v,
33
+ set: (val) => {
34
+ v = val;
35
+ },
36
+ configurable: true,
37
+ enumerable: true,
38
+ });
39
+ });
40
+ }
41
+ /**
42
+ * @description Accumulates a new object into the accumulator
43
+ * @summary Adds properties from a new object to the accumulator, maintaining type information
44
+ * @template V - The type of the object being accumulated
45
+ * @param {V} value - The object to accumulate
46
+ * @returns A new ObjectAccumulator instance with updated type information
47
+ * @mermaid
48
+ * sequenceDiagram
49
+ * participant A as Accumulator
50
+ * participant O as Object
51
+ * A->>O: Get entries
52
+ * loop For each entry
53
+ * A->>A: Define property
54
+ * end
55
+ * A->>A: Update size
56
+ * A->>A: Return updated accumulator
57
+ */
58
+ accumulate(value) {
59
+ this.expand(value);
60
+ this.__size = this.__size + Object.keys(value).length;
61
+ return this;
62
+ }
63
+ /**
64
+ * @description Retrieves a value from the accumulator by its key
65
+ * @summary Gets a value from the accumulated object using a type-safe key
66
+ * @template K - The key type, must be a key of this
67
+ * @param {K} key - The key of the value to retrieve
68
+ * @returns {any | undefined} The value associated with the key, or undefined if not found
69
+ */
70
+ get(key) {
71
+ return this[key];
72
+ }
73
+ /**
74
+ * @description Checks if a key exists in the accumulator
75
+ * @summary Determines whether the accumulator contains a specific key
76
+ * @param {string} key - The key to check for existence
77
+ * @returns {boolean} True if the key exists, false otherwise
78
+ */
79
+ has(key) {
80
+ return !!this[key];
81
+ }
82
+ /**
83
+ * @description Removes a key-value pair from the accumulator
84
+ * @summary Deletes a property from the accumulated object
85
+ * @param {string} key - The key of the property to remove
86
+ * @returns {} The accumulator instance with the specified property removed
87
+ */
88
+ remove(key) {
89
+ if (!(key in this))
90
+ return this;
91
+ delete this[key];
92
+ this.__size--;
93
+ return this;
94
+ }
95
+ /**
96
+ * @description Retrieves all keys from the accumulator
97
+ * @summary Gets an array of all accumulated property keys
98
+ * @returns {string[]} An array of keys as strings
99
+ */
100
+ keys() {
101
+ return Object.keys(this);
102
+ }
103
+ /**
104
+ * @description Retrieves all values from the accumulator
105
+ * @summary Gets an array of all accumulated property values
106
+ * @returns An array of values
107
+ */
108
+ values() {
109
+ return Object.values(this);
110
+ }
111
+ /**
112
+ * @description Gets the number of key-value pairs in the accumulator
113
+ * @summary Returns the count of accumulated properties
114
+ * @returns {number} The number of key-value pairs
115
+ */
116
+ size() {
117
+ return this.__size;
118
+ }
119
+ /**
120
+ * @description Clears all accumulated key-value pairs
121
+ * @summary Removes all properties from the accumulator and returns a new empty instance
122
+ * @returns {ObjectAccumulator<never>} A new empty ObjectAccumulator instance
123
+ */
124
+ clear() {
125
+ return new ObjectAccumulator();
126
+ }
127
+ /**
128
+ * @description Executes a callback for each key-value pair in the accumulator
129
+ * @summary Iterates over all accumulated properties, calling a function for each
130
+ * @param {function(any, string, number): void} callback - The function to execute for each entry
131
+ * @returns {void}
132
+ */
133
+ forEach(callback) {
134
+ Object.entries(this).forEach(([key, value], i) => callback(value, key, i));
135
+ }
136
+ /**
137
+ * @description Creates a new array with the results of calling a provided function on every element in the accumulator
138
+ * @summary Maps each accumulated property to a new value using a callback function
139
+ * @template R - The type of the mapped values
140
+ * @param {function(any, string,number): R} callback - Function that produces an element of the new array
141
+ * @returns {R[]} A new array with each element being the result of the callback function
142
+ */
143
+ map(callback) {
144
+ return Object.entries(this).map(([key, value], i) => callback(value, key, i));
145
+ }
146
+ }
147
+ exports.ObjectAccumulator = ObjectAccumulator;
148
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjdW11bGF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvYWNjdW11bGF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUE7Ozs7Ozs7R0FPRztBQUNILE1BQWEsaUJBQWlCO0lBUTVCO1FBQ0UsTUFBTSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFO1lBQ3BDLEtBQUssRUFBRSxDQUFDO1lBQ1IsUUFBUSxFQUFFLElBQUk7WUFDZCxZQUFZLEVBQUUsS0FBSztZQUNuQixVQUFVLEVBQUUsS0FBSztTQUNsQixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNPLE1BQU0sQ0FBbUIsS0FBUTtRQUN6QyxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDdkMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFO2dCQUM3QixHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztnQkFDWixHQUFHLEVBQUUsQ0FBQyxHQUFlLEVBQUUsRUFBRTtvQkFDdkIsQ0FBQyxHQUFHLEdBQUcsQ0FBQztnQkFDVixDQUFDO2dCQUNELFlBQVksRUFBRSxJQUFJO2dCQUNsQixVQUFVLEVBQUUsSUFBSTthQUNqQixDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7Ozs7Ozs7Ozs7Ozs7OztPQWdCRztJQUNILFVBQVUsQ0FBbUIsS0FBUTtRQUNuQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ25CLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQztRQUN0RCxPQUFPLElBQW1ELENBQUM7SUFDN0QsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILEdBQUcsQ0FBdUIsR0FBTTtRQUM5QixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNuQixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxHQUFHLENBQUMsR0FBVztRQUNiLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFpQixDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsTUFBTSxDQUNKLEdBQXdCO1FBSXhCLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxJQUFJLENBQUM7WUFBRSxPQUFPLElBQUksQ0FBQztRQUVoQyxPQUFPLElBQUksQ0FBQyxHQUFpQixDQUFDLENBQUM7UUFDL0IsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ2QsT0FBTyxJQUNvQyxDQUFDO0lBQzlDLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsSUFBSTtRQUNGLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMzQixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILE1BQU07UUFDSixPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxJQUFJO1FBQ0YsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3JCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsS0FBSztRQUNILE9BQU8sSUFBSSxpQkFBaUIsRUFBRSxDQUFDO0lBQ2pDLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILE9BQU8sQ0FDTCxRQUF1RTtRQUV2RSxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQy9DLFFBQVEsQ0FBQyxLQUFLLEVBQUUsR0FBaUIsRUFBRSxDQUFDLENBQUMsQ0FDdEMsQ0FBQztJQUNKLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxHQUFHLENBQ0QsUUFBb0U7UUFFcEUsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQ2xELFFBQVEsQ0FBQyxLQUFLLEVBQUUsR0FBaUIsRUFBRSxDQUFDLENBQUMsQ0FDdEMsQ0FBQztJQUNKLENBQUM7Q0FDRjtBQXJLRCw4Q0FxS0MiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBjbGFzcyBPYmplY3RBY2N1bXVsYXRvclxuICogQHRlbXBsYXRlIFQgLSBUaGUgdHlwZSBvZiB0aGUgYWNjdW11bGF0ZWQgb2JqZWN0LCBleHRlbmRzIG9iamVjdFxuICogQGRlc2NyaXB0aW9uIEEgY2xhc3MgdGhhdCBhY2N1bXVsYXRlcyBvYmplY3RzIGFuZCBwcm92aWRlcyB0eXBlLXNhZmUgYWNjZXNzIHRvIHRoZWlyIHByb3BlcnRpZXMuXG4gKiBJdCBhbGxvd3MgZm9yIGR5bmFtaWMgYWRkaXRpb24gb2YgcHJvcGVydGllcyB3aGlsZSBtYWludGFpbmluZyB0eXBlIGluZm9ybWF0aW9uLlxuICogQHN1bW1hcnkgQWNjdW11bGF0ZXMgb2JqZWN0cyBhbmQgbWFpbnRhaW5zIHR5cGUgaW5mb3JtYXRpb24gZm9yIGFjY3VtdWxhdGVkIHByb3BlcnRpZXNcbiAqIEBtZW1iZXJPZiB1dGlsc1xuICovXG5leHBvcnQgY2xhc3MgT2JqZWN0QWNjdW11bGF0b3I8VCBleHRlbmRzIG9iamVjdD4ge1xuICAvKipcbiAgICogQHByaXZhdGVcbiAgICogQGRlc2NyaXB0aW9uIFRoZSBzaXplIG9mIHRoZSBhY2N1bXVsYXRlZCBvYmplY3RcbiAgICogQHR5cGUge251bWJlcn1cbiAgICovXG4gIHByaXZhdGUgX19zaXplITogbnVtYmVyO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCBcIl9fc2l6ZVwiLCB7XG4gICAgICB2YWx1ZTogMCxcbiAgICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgICAgY29uZmlndXJhYmxlOiBmYWxzZSxcbiAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwcm90ZWN0ZWRcbiAgICogQGRlc2NyaXB0aW9uIEV4cGFuZHMgdGhlIGFjY3VtdWxhdG9yIHdpdGggcHJvcGVydGllcyBmcm9tIGEgbmV3IG9iamVjdFxuICAgKiBAc3VtbWFyeSBBZGRzIG5ldyBwcm9wZXJ0aWVzIHRvIHRoZSBhY2N1bXVsYXRvclxuICAgKiBAdGVtcGxhdGUgViAtIFRoZSB0eXBlIG9mIHRoZSBvYmplY3QgYmVpbmcgZXhwYW5kZWRcbiAgICogQHBhcmFtIHtWfSB2YWx1ZSAtIFRoZSBvYmplY3QgdG8gZXhwYW5kIHdpdGhcbiAgICogQHJldHVybnMge3ZvaWR9XG4gICAqL1xuICBwcm90ZWN0ZWQgZXhwYW5kPFYgZXh0ZW5kcyBvYmplY3Q+KHZhbHVlOiBWKTogdm9pZCB7XG4gICAgT2JqZWN0LmVudHJpZXModmFsdWUpLmZvckVhY2goKFtrLCB2XSkgPT4ge1xuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsIGssIHtcbiAgICAgICAgZ2V0OiAoKSA9PiB2LFxuICAgICAgICBzZXQ6ICh2YWw6IFZba2V5b2YgVl0pID0+IHtcbiAgICAgICAgICB2ID0gdmFsO1xuICAgICAgICB9LFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gQWNjdW11bGF0ZXMgYSBuZXcgb2JqZWN0IGludG8gdGhlIGFjY3VtdWxhdG9yXG4gICAqIEBzdW1tYXJ5IEFkZHMgcHJvcGVydGllcyBmcm9tIGEgbmV3IG9iamVjdCB0byB0aGUgYWNjdW11bGF0b3IsIG1haW50YWluaW5nIHR5cGUgaW5mb3JtYXRpb25cbiAgICogQHRlbXBsYXRlIFYgLSBUaGUgdHlwZSBvZiB0aGUgb2JqZWN0IGJlaW5nIGFjY3VtdWxhdGVkXG4gICAqIEBwYXJhbSB7Vn0gdmFsdWUgLSBUaGUgb2JqZWN0IHRvIGFjY3VtdWxhdGVcbiAgICogQHJldHVybnMgQSBuZXcgT2JqZWN0QWNjdW11bGF0b3IgaW5zdGFuY2Ugd2l0aCB1cGRhdGVkIHR5cGUgaW5mb3JtYXRpb25cbiAgICogQG1lcm1haWRcbiAgICogc2VxdWVuY2VEaWFncmFtXG4gICAqICAgcGFydGljaXBhbnQgQSBhcyBBY2N1bXVsYXRvclxuICAgKiAgIHBhcnRpY2lwYW50IE8gYXMgT2JqZWN0XG4gICAqICAgQS0+Pk86IEdldCBlbnRyaWVzXG4gICAqICAgbG9vcCBGb3IgZWFjaCBlbnRyeVxuICAgKiAgICAgQS0+PkE6IERlZmluZSBwcm9wZXJ0eVxuICAgKiAgIGVuZFxuICAgKiAgIEEtPj5BOiBVcGRhdGUgc2l6ZVxuICAgKiAgIEEtPj5BOiBSZXR1cm4gdXBkYXRlZCBhY2N1bXVsYXRvclxuICAgKi9cbiAgYWNjdW11bGF0ZTxWIGV4dGVuZHMgb2JqZWN0Pih2YWx1ZTogVik6IFQgJiBWICYgT2JqZWN0QWNjdW11bGF0b3I8VCAmIFY+IHtcbiAgICB0aGlzLmV4cGFuZCh2YWx1ZSk7XG4gICAgdGhpcy5fX3NpemUgPSB0aGlzLl9fc2l6ZSArIE9iamVjdC5rZXlzKHZhbHVlKS5sZW5ndGg7XG4gICAgcmV0dXJuIHRoaXMgYXMgdW5rbm93biBhcyBUICYgViAmIE9iamVjdEFjY3VtdWxhdG9yPFQgJiBWPjtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gUmV0cmlldmVzIGEgdmFsdWUgZnJvbSB0aGUgYWNjdW11bGF0b3IgYnkgaXRzIGtleVxuICAgKiBAc3VtbWFyeSBHZXRzIGEgdmFsdWUgZnJvbSB0aGUgYWNjdW11bGF0ZWQgb2JqZWN0IHVzaW5nIGEgdHlwZS1zYWZlIGtleVxuICAgKiBAdGVtcGxhdGUgSyAtIFRoZSBrZXkgdHlwZSwgbXVzdCBiZSBhIGtleSBvZiB0aGlzXG4gICAqIEBwYXJhbSB7S30ga2V5IC0gVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gcmV0cmlldmVcbiAgICogQHJldHVybnMge2FueSB8IHVuZGVmaW5lZH0gVGhlIHZhbHVlIGFzc29jaWF0ZWQgd2l0aCB0aGUga2V5LCBvciB1bmRlZmluZWQgaWYgbm90IGZvdW5kXG4gICAqL1xuICBnZXQ8SyBleHRlbmRzIGtleW9mIHRoaXM+KGtleTogSyk6IHRoaXNbS10gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzW2tleV07XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIENoZWNrcyBpZiBhIGtleSBleGlzdHMgaW4gdGhlIGFjY3VtdWxhdG9yXG4gICAqIEBzdW1tYXJ5IERldGVybWluZXMgd2hldGhlciB0aGUgYWNjdW11bGF0b3IgY29udGFpbnMgYSBzcGVjaWZpYyBrZXlcbiAgICogQHBhcmFtIHtzdHJpbmd9IGtleSAtIFRoZSBrZXkgdG8gY2hlY2sgZm9yIGV4aXN0ZW5jZVxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB0aGUga2V5IGV4aXN0cywgZmFsc2Ugb3RoZXJ3aXNlXG4gICAqL1xuICBoYXMoa2V5OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzW2tleSBhcyBrZXlvZiB0aGlzXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gUmVtb3ZlcyBhIGtleS12YWx1ZSBwYWlyIGZyb20gdGhlIGFjY3VtdWxhdG9yXG4gICAqIEBzdW1tYXJ5IERlbGV0ZXMgYSBwcm9wZXJ0eSBmcm9tIHRoZSBhY2N1bXVsYXRlZCBvYmplY3RcbiAgICogQHBhcmFtIHtzdHJpbmd9IGtleSAtIFRoZSBrZXkgb2YgdGhlIHByb3BlcnR5IHRvIHJlbW92ZVxuICAgKiBAcmV0dXJucyB7fSBUaGUgYWNjdW11bGF0b3IgaW5zdGFuY2Ugd2l0aCB0aGUgc3BlY2lmaWVkIHByb3BlcnR5IHJlbW92ZWRcbiAgICovXG4gIHJlbW92ZShcbiAgICBrZXk6IGtleW9mIHRoaXMgfCBzdHJpbmdcbiAgKTpcbiAgICB8IChPbWl0PHRoaXMsIHR5cGVvZiBrZXk+ICYgT2JqZWN0QWNjdW11bGF0b3I8T21pdDx0aGlzLCB0eXBlb2Yga2V5Pj4pXG4gICAgfCB0aGlzIHtcbiAgICBpZiAoIShrZXkgaW4gdGhpcykpIHJldHVybiB0aGlzO1xuXG4gICAgZGVsZXRlIHRoaXNba2V5IGFzIGtleW9mIHRoaXNdO1xuICAgIHRoaXMuX19zaXplLS07XG4gICAgcmV0dXJuIHRoaXMgYXMgdW5rbm93biBhcyBPbWl0PHRoaXMsIHR5cGVvZiBrZXk+ICZcbiAgICAgIE9iamVjdEFjY3VtdWxhdG9yPE9taXQ8dGhpcywgdHlwZW9mIGtleT4+O1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBSZXRyaWV2ZXMgYWxsIGtleXMgZnJvbSB0aGUgYWNjdW11bGF0b3JcbiAgICogQHN1bW1hcnkgR2V0cyBhbiBhcnJheSBvZiBhbGwgYWNjdW11bGF0ZWQgcHJvcGVydHkga2V5c1xuICAgKiBAcmV0dXJucyB7c3RyaW5nW119IEFuIGFycmF5IG9mIGtleXMgYXMgc3RyaW5nc1xuICAgKi9cbiAga2V5cygpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKHRoaXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBSZXRyaWV2ZXMgYWxsIHZhbHVlcyBmcm9tIHRoZSBhY2N1bXVsYXRvclxuICAgKiBAc3VtbWFyeSBHZXRzIGFuIGFycmF5IG9mIGFsbCBhY2N1bXVsYXRlZCBwcm9wZXJ0eSB2YWx1ZXNcbiAgICogQHJldHVybnMgQW4gYXJyYXkgb2YgdmFsdWVzXG4gICAqL1xuICB2YWx1ZXMoKTogVFtrZXlvZiBUXVtdIHtcbiAgICByZXR1cm4gT2JqZWN0LnZhbHVlcyh0aGlzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gR2V0cyB0aGUgbnVtYmVyIG9mIGtleS12YWx1ZSBwYWlycyBpbiB0aGUgYWNjdW11bGF0b3JcbiAgICogQHN1bW1hcnkgUmV0dXJucyB0aGUgY291bnQgb2YgYWNjdW11bGF0ZWQgcHJvcGVydGllc1xuICAgKiBAcmV0dXJucyB7bnVtYmVyfSBUaGUgbnVtYmVyIG9mIGtleS12YWx1ZSBwYWlyc1xuICAgKi9cbiAgc2l6ZSgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9fc2l6ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gQ2xlYXJzIGFsbCBhY2N1bXVsYXRlZCBrZXktdmFsdWUgcGFpcnNcbiAgICogQHN1bW1hcnkgUmVtb3ZlcyBhbGwgcHJvcGVydGllcyBmcm9tIHRoZSBhY2N1bXVsYXRvciBhbmQgcmV0dXJucyBhIG5ldyBlbXB0eSBpbnN0YW5jZVxuICAgKiBAcmV0dXJucyB7T2JqZWN0QWNjdW11bGF0b3I8bmV2ZXI+fSBBIG5ldyBlbXB0eSBPYmplY3RBY2N1bXVsYXRvciBpbnN0YW5jZVxuICAgKi9cbiAgY2xlYXIoKTogT2JqZWN0QWNjdW11bGF0b3I8bmV2ZXI+IHtcbiAgICByZXR1cm4gbmV3IE9iamVjdEFjY3VtdWxhdG9yKCk7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEV4ZWN1dGVzIGEgY2FsbGJhY2sgZm9yIGVhY2gga2V5LXZhbHVlIHBhaXIgaW4gdGhlIGFjY3VtdWxhdG9yXG4gICAqIEBzdW1tYXJ5IEl0ZXJhdGVzIG92ZXIgYWxsIGFjY3VtdWxhdGVkIHByb3BlcnRpZXMsIGNhbGxpbmcgYSBmdW5jdGlvbiBmb3IgZWFjaFxuICAgKiBAcGFyYW0ge2Z1bmN0aW9uKGFueSwgc3RyaW5nLCBudW1iZXIpOiB2b2lkfSBjYWxsYmFjayAtIFRoZSBmdW5jdGlvbiB0byBleGVjdXRlIGZvciBlYWNoIGVudHJ5XG4gICAqIEByZXR1cm5zIHt2b2lkfVxuICAgKi9cbiAgZm9yRWFjaChcbiAgICBjYWxsYmFjazogKHZhbHVlOiB0aGlzW2tleW9mIHRoaXNdLCBrZXk6IGtleW9mIHRoaXMsIGk6IG51bWJlcikgPT4gdm9pZFxuICApOiB2b2lkIHtcbiAgICBPYmplY3QuZW50cmllcyh0aGlzKS5mb3JFYWNoKChba2V5LCB2YWx1ZV0sIGkpID0+XG4gICAgICBjYWxsYmFjayh2YWx1ZSwga2V5IGFzIGtleW9mIHRoaXMsIGkpXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gQ3JlYXRlcyBhIG5ldyBhcnJheSB3aXRoIHRoZSByZXN1bHRzIG9mIGNhbGxpbmcgYSBwcm92aWRlZCBmdW5jdGlvbiBvbiBldmVyeSBlbGVtZW50IGluIHRoZSBhY2N1bXVsYXRvclxuICAgKiBAc3VtbWFyeSBNYXBzIGVhY2ggYWNjdW11bGF0ZWQgcHJvcGVydHkgdG8gYSBuZXcgdmFsdWUgdXNpbmcgYSBjYWxsYmFjayBmdW5jdGlvblxuICAgKiBAdGVtcGxhdGUgUiAtIFRoZSB0eXBlIG9mIHRoZSBtYXBwZWQgdmFsdWVzXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb24oYW55LCBzdHJpbmcsbnVtYmVyKTogUn0gY2FsbGJhY2sgLSBGdW5jdGlvbiB0aGF0IHByb2R1Y2VzIGFuIGVsZW1lbnQgb2YgdGhlIG5ldyBhcnJheVxuICAgKiBAcmV0dXJucyB7UltdfSBBIG5ldyBhcnJheSB3aXRoIGVhY2ggZWxlbWVudCBiZWluZyB0aGUgcmVzdWx0IG9mIHRoZSBjYWxsYmFjayBmdW5jdGlvblxuICAgKi9cbiAgbWFwPFI+KFxuICAgIGNhbGxiYWNrOiAodmFsdWU6IHRoaXNba2V5b2YgdGhpc10sIGtleToga2V5b2YgdGhpcywgaTogbnVtYmVyKSA9PiBSXG4gICk6IFJbXSB7XG4gICAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHRoaXMpLm1hcCgoW2tleSwgdmFsdWVdLCBpKSA9PlxuICAgICAgY2FsbGJhY2sodmFsdWUsIGtleSBhcyBrZXlvZiB0aGlzLCBpKVxuICAgICk7XG4gIH1cbn1cbiJdfQ==