@decaf-ts/utils 0.2.12 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE.md +21 -157
- package/README.md +403 -12
- package/bin/build-scripts.cjs +236 -52
- package/bin/tag-release.cjs +168 -47
- package/bin/update-scripts.cjs +207 -47
- package/dist/utils.cjs +364 -70
- package/dist/utils.esm.cjs +364 -70
- package/lib/cli/command.cjs +2 -2
- package/lib/cli/command.d.ts +1 -1
- package/lib/cli/commands/build-scripts.cjs +8 -6
- package/lib/cli/constants.cjs +3 -1
- package/lib/cli/constants.d.ts +2 -0
- package/lib/cli/types.cjs +1 -1
- package/lib/cli/types.d.ts +2 -0
- package/lib/esm/bin/build-scripts.js +2 -2
- package/lib/esm/bin/tag-release.js +2 -2
- package/lib/esm/bin/update-scripts.js +2 -2
- package/lib/esm/cli/command.d.ts +1 -1
- package/lib/esm/cli/command.js +7 -7
- package/lib/esm/cli/commands/build-scripts.js +11 -9
- package/lib/esm/cli/commands/index.js +4 -4
- package/lib/esm/cli/commands/tag-release.js +5 -5
- package/lib/esm/cli/commands/update-scripts.js +4 -4
- package/lib/esm/cli/constants.d.ts +2 -0
- package/lib/esm/cli/constants.js +3 -1
- package/lib/esm/cli/index.js +4 -4
- package/lib/esm/cli/types.d.ts +2 -0
- package/lib/esm/cli/types.js +1 -1
- package/lib/esm/index.d.ts +4 -4
- package/lib/esm/index.js +10 -10
- package/lib/esm/input/index.js +3 -3
- package/lib/esm/input/input.d.ts +65 -19
- package/lib/esm/input/input.js +61 -22
- package/lib/esm/input/types.d.ts +7 -7
- package/lib/esm/input/types.js +1 -1
- package/lib/esm/output/common.d.ts +2 -0
- package/lib/esm/output/common.js +4 -1
- package/lib/esm/output/index.js +2 -2
- package/lib/esm/utils/constants.d.ts +12 -6
- package/lib/esm/utils/constants.js +13 -7
- package/lib/esm/utils/environment.d.ts +13 -0
- package/lib/esm/utils/environment.js +16 -3
- package/lib/esm/utils/fs.d.ts +111 -5
- package/lib/esm/utils/fs.js +114 -8
- package/lib/esm/utils/http.d.ts +1 -1
- package/lib/esm/utils/http.js +2 -2
- package/lib/esm/utils/index.js +8 -8
- package/lib/esm/utils/md.d.ts +15 -15
- package/lib/esm/utils/md.js +1 -1
- package/lib/esm/utils/tests.d.ts +26 -3
- package/lib/esm/utils/tests.js +40 -2
- package/lib/esm/utils/text.d.ts +33 -7
- package/lib/esm/utils/text.js +34 -8
- package/lib/esm/utils/timeout.d.ts +11 -0
- package/lib/esm/utils/timeout.js +12 -1
- package/lib/esm/utils/types.d.ts +33 -2
- package/lib/esm/utils/types.js +1 -1
- package/lib/esm/utils/utils.d.ts +44 -2
- package/lib/esm/utils/utils.js +23 -5
- package/lib/esm/utils/web.d.ts +3 -2
- package/lib/esm/utils/web.js +4 -3
- package/lib/esm/writers/OutputWriter.d.ts +2 -2
- package/lib/esm/writers/OutputWriter.js +1 -1
- package/lib/esm/writers/RegexpOutputWriter.d.ts +51 -10
- package/lib/esm/writers/RegexpOutputWriter.js +53 -12
- package/lib/esm/writers/StandardOutputWriter.d.ts +49 -10
- package/lib/esm/writers/StandardOutputWriter.js +51 -12
- package/lib/esm/writers/index.js +5 -5
- package/lib/esm/writers/types.d.ts +2 -2
- package/lib/esm/writers/types.js +1 -1
- package/lib/index.cjs +5 -5
- package/lib/index.d.ts +4 -4
- package/lib/input/input.cjs +61 -22
- package/lib/input/input.d.ts +65 -19
- package/lib/input/types.cjs +1 -1
- package/lib/input/types.d.ts +7 -7
- package/lib/output/common.cjs +4 -1
- package/lib/output/common.d.ts +2 -0
- package/lib/utils/constants.cjs +13 -7
- package/lib/utils/constants.d.ts +12 -6
- package/lib/utils/environment.cjs +14 -1
- package/lib/utils/environment.d.ts +13 -0
- package/lib/utils/fs.cjs +112 -6
- package/lib/utils/fs.d.ts +111 -5
- package/lib/utils/http.cjs +2 -2
- package/lib/utils/http.d.ts +1 -1
- package/lib/utils/md.cjs +1 -1
- package/lib/utils/md.d.ts +15 -15
- package/lib/utils/tests.cjs +39 -1
- package/lib/utils/tests.d.ts +26 -3
- package/lib/utils/text.cjs +34 -8
- package/lib/utils/text.d.ts +33 -7
- package/lib/utils/timeout.cjs +12 -1
- package/lib/utils/timeout.d.ts +11 -0
- package/lib/utils/types.cjs +1 -1
- package/lib/utils/types.d.ts +33 -2
- package/lib/utils/utils.cjs +21 -3
- package/lib/utils/utils.d.ts +44 -2
- package/lib/utils/web.cjs +4 -3
- package/lib/utils/web.d.ts +3 -2
- package/lib/writers/OutputWriter.cjs +1 -1
- package/lib/writers/OutputWriter.d.ts +2 -2
- package/lib/writers/RegexpOutputWriter.cjs +52 -11
- package/lib/writers/RegexpOutputWriter.d.ts +51 -10
- package/lib/writers/StandardOutputWriter.cjs +50 -11
- package/lib/writers/StandardOutputWriter.d.ts +49 -10
- package/lib/writers/types.cjs +1 -1
- package/lib/writers/types.d.ts +2 -2
- package/package.json +2 -2
package/lib/esm/utils/tests.d.ts
CHANGED
|
@@ -3,7 +3,7 @@ import { MdTableDefinition } from "./md";
|
|
|
3
3
|
* @interface AddAttachParams
|
|
4
4
|
* @description Parameters for adding an attachment to a report
|
|
5
5
|
* @summary Interface for attachment parameters
|
|
6
|
-
* @memberOf module
|
|
6
|
+
* @memberOf module:utils
|
|
7
7
|
*/
|
|
8
8
|
export interface AddAttachParams {
|
|
9
9
|
attach: string | Buffer;
|
|
@@ -15,7 +15,7 @@ export interface AddAttachParams {
|
|
|
15
15
|
* @interface AddMsgParams
|
|
16
16
|
* @description Parameters for adding a message to a report
|
|
17
17
|
* @summary Interface for message parameters
|
|
18
|
-
* @memberOf module
|
|
18
|
+
* @memberOf module:utils
|
|
19
19
|
*/
|
|
20
20
|
export interface AddMsgParams {
|
|
21
21
|
message: string | object;
|
|
@@ -25,9 +25,15 @@ export interface AddMsgParams {
|
|
|
25
25
|
* @typedef {("json"|"image"|"text"|"md")} PayloadType
|
|
26
26
|
* @description Types of payloads that can be handled
|
|
27
27
|
* @summary Union type for payload types
|
|
28
|
-
* @memberOf module
|
|
28
|
+
* @memberOf module:utils
|
|
29
29
|
*/
|
|
30
30
|
export type PayloadType = "json" | "image" | "text" | "md";
|
|
31
|
+
/**
|
|
32
|
+
* @description Environment variable key for Jest HTML reporters temporary directory path
|
|
33
|
+
* @summary Constant defining the environment variable key for Jest HTML reporters
|
|
34
|
+
* @const JestReportersTempPathEnvKey
|
|
35
|
+
* @memberOf module:utils
|
|
36
|
+
*/
|
|
31
37
|
export declare const JestReportersTempPathEnvKey = "JEST_HTML_REPORTERS_TEMP_DIR_PATH";
|
|
32
38
|
/**
|
|
33
39
|
* @description Test reporting utility class for managing test results and evidence
|
|
@@ -141,7 +147,24 @@ export declare class TestReporter {
|
|
|
141
147
|
* @return {Promise<void>} Promise that resolves when data is reported
|
|
142
148
|
*/
|
|
143
149
|
protected report(reference: string, data: string | number | object | Buffer, type: PayloadType, trim?: boolean): Promise<void>;
|
|
150
|
+
/**
|
|
151
|
+
* @description Reports data with a specified type
|
|
152
|
+
* @summary Wrapper method for reporting various types of data
|
|
153
|
+
* @param {string} reference - Reference identifier for the data
|
|
154
|
+
* @param {string | number | object} data - Data to be reported
|
|
155
|
+
* @param {PayloadType} [type="json"] - Type of the payload
|
|
156
|
+
* @param {boolean} [trim=false] - Whether to trim the data
|
|
157
|
+
* @return {Promise<void>} Promise that resolves when data is reported
|
|
158
|
+
*/
|
|
144
159
|
reportData(reference: string, data: string | number | object, type?: PayloadType, trim?: boolean): Promise<void>;
|
|
160
|
+
/**
|
|
161
|
+
* @description Reports a JSON object
|
|
162
|
+
* @summary Convenience method for reporting JSON objects
|
|
163
|
+
* @param {string} reference - Reference identifier for the object
|
|
164
|
+
* @param {object} json - JSON object to be reported
|
|
165
|
+
* @param {boolean} [trim=false] - Whether to trim the object
|
|
166
|
+
* @return {Promise<void>} Promise that resolves when object is reported
|
|
167
|
+
*/
|
|
145
168
|
reportObject(reference: string, json: object, trim?: boolean): Promise<void>;
|
|
146
169
|
/**
|
|
147
170
|
* @description Reports a table in markdown format
|
package/lib/esm/utils/tests.js
CHANGED
|
@@ -1,8 +1,29 @@
|
|
|
1
1
|
import path from "path";
|
|
2
2
|
import fs from "fs";
|
|
3
|
-
import { installIfNotAvailable } from "./fs";
|
|
3
|
+
import { installIfNotAvailable } from "./fs.js";
|
|
4
|
+
/**
|
|
5
|
+
* @description Environment variable key for Jest HTML reporters temporary directory path
|
|
6
|
+
* @summary Constant defining the environment variable key for Jest HTML reporters
|
|
7
|
+
* @const JestReportersTempPathEnvKey
|
|
8
|
+
* @memberOf module:utils
|
|
9
|
+
*/
|
|
4
10
|
export const JestReportersTempPathEnvKey = "JEST_HTML_REPORTERS_TEMP_DIR_PATH";
|
|
11
|
+
/**
|
|
12
|
+
* @description Array of dependencies required by the test reporter
|
|
13
|
+
* @summary List of npm packages needed for reporting functionality
|
|
14
|
+
* @const dependencies
|
|
15
|
+
* @memberOf module:utils
|
|
16
|
+
*/
|
|
5
17
|
const dependencies = ["jest-html-reporters", "json2md", "chartjs-node-canvas"];
|
|
18
|
+
/**
|
|
19
|
+
* @description Normalizes imports to handle both CommonJS and ESModule formats
|
|
20
|
+
* @summary Utility function to handle module import differences between formats
|
|
21
|
+
* @template T - Type of the imported module
|
|
22
|
+
* @param {Promise<T>} importPromise - Promise returned by dynamic import
|
|
23
|
+
* @return {Promise<T>} Normalized module
|
|
24
|
+
* @function normalizeImport
|
|
25
|
+
* @memberOf module:utils
|
|
26
|
+
*/
|
|
6
27
|
async function normalizeImport(importPromise) {
|
|
7
28
|
// CommonJS's `module.exports` is wrapped as `default` in ESModule.
|
|
8
29
|
return importPromise.then((m) => (m.default || m));
|
|
@@ -162,9 +183,26 @@ export class TestReporter {
|
|
|
162
183
|
throw new Error(`Could not store attach artifact ${reference} under to test report ${this.testCase} - ${e}`);
|
|
163
184
|
}
|
|
164
185
|
}
|
|
186
|
+
/**
|
|
187
|
+
* @description Reports data with a specified type
|
|
188
|
+
* @summary Wrapper method for reporting various types of data
|
|
189
|
+
* @param {string} reference - Reference identifier for the data
|
|
190
|
+
* @param {string | number | object} data - Data to be reported
|
|
191
|
+
* @param {PayloadType} [type="json"] - Type of the payload
|
|
192
|
+
* @param {boolean} [trim=false] - Whether to trim the data
|
|
193
|
+
* @return {Promise<void>} Promise that resolves when data is reported
|
|
194
|
+
*/
|
|
165
195
|
async reportData(reference, data, type = "json", trim = false) {
|
|
166
196
|
return this.report(reference, data, type, trim);
|
|
167
197
|
}
|
|
198
|
+
/**
|
|
199
|
+
* @description Reports a JSON object
|
|
200
|
+
* @summary Convenience method for reporting JSON objects
|
|
201
|
+
* @param {string} reference - Reference identifier for the object
|
|
202
|
+
* @param {object} json - JSON object to be reported
|
|
203
|
+
* @param {boolean} [trim=false] - Whether to trim the object
|
|
204
|
+
* @return {Promise<void>} Promise that resolves when object is reported
|
|
205
|
+
*/
|
|
168
206
|
async reportObject(reference, json, trim = false) {
|
|
169
207
|
return this.report(reference, json, "json", trim);
|
|
170
208
|
}
|
|
@@ -219,4 +257,4 @@ export class TestReporter {
|
|
|
219
257
|
return this.report(reference, buffer, "image");
|
|
220
258
|
}
|
|
221
259
|
}
|
|
222
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdXRpbHMvdGVzdHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxJQUFJLE1BQU0sTUFBTSxDQUFDO0FBQ3hCLE9BQU8sRUFBRSxNQUFNLElBQUksQ0FBQztBQUVwQixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFtQzdDLE1BQU0sQ0FBQyxNQUFNLDJCQUEyQixHQUFHLG1DQUFtQyxDQUFDO0FBRS9FLE1BQU0sWUFBWSxHQUFHLENBQUMscUJBQXFCLEVBQUUsU0FBUyxFQUFFLHFCQUFxQixDQUFDLENBQUM7QUFFL0UsS0FBSyxVQUFVLGVBQWUsQ0FBSSxhQUF5QjtJQUN6RCxtRUFBbUU7SUFDbkUsT0FBTyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxDQUFNLENBQUMsQ0FBQztBQUMvRCxDQUFDO0FBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXlERztBQUNILE1BQU0sT0FBTyxZQUFZO0lBd0J2QixZQUNZLFdBQW1CLE9BQU8sRUFDMUIsV0FBVyxJQUFJLENBQUMsSUFBSSxDQUM1QixPQUFPLENBQUMsR0FBRyxFQUFFLEVBQ2IsVUFBVSxFQUNWLFNBQVMsRUFDVCxXQUFXLENBQ1o7UUFOUyxhQUFRLEdBQVIsUUFBUSxDQUFrQjtRQUMxQixhQUFRLEdBQVIsUUFBUSxDQUtqQjtRQUVELElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ25ELElBQUksQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1lBQ2xDLEVBQUUsQ0FBQyxTQUFT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QWlCLEVBQUUsTUFBYztRQUNqRCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNqRCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiO1xuaW1wb3J0IGZzIGZyb20gXCJmc1wiO1xuaW1wb3J0IHsgTWRUYWJsZURlZmluaXRpb24gfSBmcm9tIFwiLi9tZFwiO1xuaW1wb3J0IHsgaW5zdGFsbElmTm90QXZhaWxhYmxlIH0gZnJvbSBcIi4vZnNcIjtcbmltcG9ydCB7IFNpbXBsZURlcGVuZGVuY3lNYXAgfSBmcm9tIFwiLi90eXBlc1wiO1xuXG4vKipcbiAqIEBpbnRlcmZhY2UgQWRkQXR0YWNoUGFyYW1zXG4gKiBAZGVzY3JpcHRpb24gUGFyYW1ldGVycyBmb3IgYWRkaW5nIGFuIGF0dGFjaG1lbnQgdG8gYSByZXBvcnRcbiAqIEBzdW1tYXJ5IEludGVyZmFjZSBmb3IgYXR0YWNobWVudCBwYXJhbWV0ZXJzXG4gKiBAbWVtYmVyT2YgbW9kdWxlOkBkZWNhZi10cy91dGlsc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIEFkZEF0dGFjaFBhcmFtcyB7XG4gIGF0dGFjaDogc3RyaW5nIHwgQnVmZmVyO1xuICBkZXNjcmlwdGlvbjogc3RyaW5nIHwgb2JqZWN0O1xuICBjb250ZXh0PzogYW55O1xuICBidWZmZXJGb3JtYXQ/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogQGludGVyZmFjZSBBZGRNc2dQYXJhbXNcbiAqIEBkZXNjcmlwdGlvbiBQYXJhbWV0ZXJzIGZvciBhZGRpbmcgYSBtZXNzYWdlIHRvIGEgcmVwb3J0XG4gKiBAc3VtbWFyeSBJbnRlcmZhY2UgZm9yIG1lc3NhZ2UgcGFyYW1ldGVyc1xuICogQG1lbWJlck9mIG1vZHVsZTpAZGVjYWYtdHMvdXRpbHNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBZGRNc2dQYXJhbXMge1xuICBtZXNzYWdlOiBzdHJpbmcgfCBvYmplY3Q7XG4gIGNvbnRleHQ/OiBhbnk7XG59XG5cbi8qKlxuICogQHR5cGVkZWYgeyhcImpzb25cInxcImltYWdlXCJ8XCJ0ZXh0XCJ8XCJtZFwiKX0gUGF5bG9hZFR5cGVcbiAqIEBkZXNjcmlwdGlvbiBUeXBlcyBvZiBwYXlsb2FkcyB0aGF0IGNhbiBiZSBoYW5kbGVkXG4gKiBAc3VtbWFyeSBVbmlvbiB0eXBlIGZvciBwYXlsb2FkIHR5cGVzXG4gKiBAbWVtYmVyT2YgbW9kdWxlOkBkZWNhZi10cy91dGlsc1xuICovXG5leHBvcnQgdHlwZSBQYXlsb2FkVHlwZSA9IFwianNvblwiIHwgXCJpbWFnZVwiIHwgXCJ0ZXh0XCIgfCBcIm1kXCI7XG5cbmV4cG9ydCBjb25zdCBKZXN0UmVwb3J0ZXJzVGVtcFBhdGhFbnZLZXkgPSBcIkpFU1RfSFRNTF9SRVBPUlRFUlNfVEVNUF9ESVJfUEFUSFwiO1xuXG5jb25zdCBkZXBlbmRlbmNpZXMgPSBbXCJqZXN0LWh0bWwtcmVwb3J0ZXJzXCIsIFwianNvbjJtZFwiLCBcImNoYXJ0anMtbm9kZS1jYW52YXNcIl07XG5cbmFzeW5jIGZ1bmN0aW9uIG5vcm1hbGl6ZUltcG9ydDxUPihpbXBvcnRQcm9taXNlOiBQcm9taXNlPFQ+KTogUHJvbWlzZTxUPiB7XG4gIC8vIENvbW1vbkpTJ3MgYG1vZHVsZS5leHBvcnRzYCBpcyB3cmFwcGVkIGFzIGBkZWZhdWx0YCBpbiBFU01vZHVsZS5cbiAgcmV0dXJuIGltcG9ydFByb21pc2UudGhlbigobTogYW55KSA9PiAobS5kZWZhdWx0IHx8IG0pIGFzIFQpO1xufVxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBUZXN0IHJlcG9ydGluZyB1dGlsaXR5IGNsYXNzIGZvciBtYW5hZ2luZyB0ZXN0IHJlc3VsdHMgYW5kIGV2aWRlbmNlXG4gKiBAc3VtbWFyeSBBIGNvbXByZWhlbnNpdmUgdGVzdCByZXBvcnRlciB0aGF0IGhhbmRsZXMgdmFyaW91cyB0eXBlcyBvZiB0ZXN0IGFydGlmYWN0cyBpbmNsdWRpbmcgbWVzc2FnZXMsXG4gKiBhdHRhY2htZW50cywgZGF0YSwgaW1hZ2VzLCB0YWJsZXMsIGFuZCBncmFwaHMuIEl0IHByb3ZpZGVzIG1ldGhvZHMgdG8gcmVwb3J0IGFuZCBzdG9yZSB0ZXN0IGV2aWRlbmNlXG4gKiBpbiBkaWZmZXJlbnQgZm9ybWF0cyBhbmQgbWFuYWdlcyBkZXBlbmRlbmNpZXMgZm9yIHJlcG9ydGluZyBmdW5jdGlvbmFsaXR5LlxuICpcbiAqIEB0ZW1wbGF0ZSBUIC0gVHlwZSBvZiBkYXRhIGJlaW5nIHJlcG9ydGVkXG4gKiBAcGFyYW0ge3N0cmluZ30gW3Rlc3RDYXNlPVwidGVzdHNcIl0gLSBOYW1lIG9mIHRoZSB0ZXN0IGNhc2VcbiAqIEBwYXJhbSB7c3RyaW5nfSBbYmFzZVBhdGhdIC0gQmFzZSBwYXRoIGZvciBzdG9yaW5nIHRlc3QgcmVwb3J0c1xuICogQGNsYXNzXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IHJlcG9ydGVyID0gbmV3IFRlc3RSZXBvcnRlcignbG9naW4tdGVzdCcpO1xuICpcbiAqIC8vIFJlcG9ydCB0ZXN0IG1lc3NhZ2VzXG4gKiBhd2FpdCByZXBvcnRlci5yZXBvcnRNZXNzYWdlKCdUZXN0IFN0YXJ0ZWQnLCAnTG9naW4gZmxvdyBpbml0aWF0ZWQnKTtcbiAqXG4gKiAvLyBSZXBvcnQgdGVzdCBkYXRhXG4gKiBhd2FpdCByZXBvcnRlci5yZXBvcnREYXRhKCd1c2VyLWNyZWRlbnRpYWxzJywgeyB1c2VybmFtZTogJ3Rlc3QnIH0sICdqc29uJyk7XG4gKlxuICogLy8gUmVwb3J0IHRlc3QgcmVzdWx0cyB0YWJsZVxuICogYXdhaXQgcmVwb3J0ZXIucmVwb3J0VGFibGUoJ3Rlc3QtcmVzdWx0cycsIHtcbiAqICAgaGVhZGVyczogWydTdGVwJywgJ1N0YXR1cyddLFxuICogICByb3dzOiBbXG4gKiAgICAgeyBTdGVwOiAnTG9naW4nLCBTdGF0dXM6ICdQYXNzJyB9LFxuICogICAgIHsgU3RlcDogJ1ZhbGlkYXRpb24nLCBTdGF0dXM6ICdQYXNzJyB9XG4gKiAgIF1cbiAqIH0pO1xuICpcbiAqIC8vIFJlcG9ydCB0ZXN0IGV2aWRlbmNlXG4gKiBhd2FpdCByZXBvcnRlci5yZXBvcnRBdHRhY2htZW50KCdTY3JlZW5zaG90Jywgc2NyZWVuc2hvdEJ1ZmZlcik7XG4gKiBgYGBcbiAqXG4gKiBAbWVybWFpZFxuICogc2VxdWVuY2VEaWFncmFtXG4gKiAgIHBhcnRpY2lwYW50IENsaWVudFxuICogICBwYXJ0aWNpcGFudCBUZXN0UmVwb3J0ZXJcbiAqICAgcGFydGljaXBhbnQgRmlsZVN5c3RlbVxuICogICBwYXJ0aWNpcGFudCBEZXBlbmRlbmNpZXNcbiAqXG4gKiAgIENsaWVudC0+PlRlc3RSZXBvcnRlcjogbmV3IFRlc3RSZXBvcnRlcih0ZXN0Q2FzZSwgYmFzZVBhdGgpXG4gKiAgIFRlc3RSZXBvcnRlci0+PkZpbGVTeXN0ZW06IENyZWF0ZSByZXBvcnQgZGlyZWN0b3J5XG4gKlxuICogICBhbHQgUmVwb3J0IE1lc3NhZ2VcbiAqICAgICBDbGllbnQtPj5UZXN0UmVwb3J0ZXI6IHJlcG9ydE1lc3NhZ2UodGl0bGUsIG1lc3NhZ2UpXG4gKiAgICAgVGVzdFJlcG9ydGVyLT4+RGVwZW5kZW5jaWVzOiBJbXBvcnQgaGVscGVyc1xuICogICAgIFRlc3RSZXBvcnRlci0+PkZpbGVTeXN0ZW06IFN0b3JlIG1lc3NhZ2VcbiAqICAgZWxzZSBSZXBvcnQgRGF0YVxuICogICAgIENsaWVudC0+PlRlc3RSZXBvcnRlcjogcmVwb3J0RGF0YShyZWZlcmVuY2UsIGRhdGEsIHR5cGUpXG4gKiAgICAgVGVzdFJlcG9ydGVyLT4+RGVwZW5kZW5jaWVzOiBQcm9jZXNzIGRhdGFcbiAqICAgICBUZXN0UmVwb3J0ZXItPj5GaWxlU3lzdGVtOiBTdG9yZSBmb3JtYXR0ZWQgZGF0YVxuICogICBlbHNlIFJlcG9ydCBUYWJsZVxuICogICAgIENsaWVudC0+PlRlc3RSZXBvcnRlcjogcmVwb3J0VGFibGUocmVmZXJlbmNlLCB0YWJsZURlZilcbiAqICAgICBUZXN0UmVwb3J0ZXItPj5EZXBlbmRlbmNpZXM6IENvbnZlcnQgdG8gTUQgZm9ybWF0XG4gKiAgICAgVGVzdFJlcG9ydGVyLT4+RmlsZVN5c3RlbTogU3RvcmUgdGFibGVcbiAqICAgZW5kXG4gKi9cbmV4cG9ydCBjbGFzcyBUZXN0UmVwb3J0ZXIge1xuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEZ1bmN0aW9uIGZvciBhZGRpbmcgbWVzc2FnZXMgdG8gdGhlIHRlc3QgcmVwb3J0XG4gICAqIEBzdW1tYXJ5IFN0YXRpYyBoYW5kbGVyIGZvciBwcm9jZXNzaW5nIGFuZCBzdG9yaW5nIHRlc3QgbWVzc2FnZXNcbiAgICogQHR5cGUge2Z1bmN0aW9uKEFkZE1zZ1BhcmFtcyk6IFByb21pc2U8dm9pZD59XG4gICAqL1xuICBwcm90ZWN0ZWQgc3RhdGljIGFkZE1zZ0Z1bmN0aW9uOiAocGFyYW1zOiBBZGRNc2dQYXJhbXMpID0+IFByb21pc2U8dm9pZD47XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBGdW5jdGlvbiBmb3IgYWRkaW5nIGF0dGFjaG1lbnRzIHRvIHRoZSB0ZXN0IHJlcG9ydFxuICAgKiBAc3VtbWFyeSBTdGF0aWMgaGFuZGxlciBmb3IgcHJvY2Vzc2luZyBhbmQgc3RvcmluZyB0ZXN0IGF0dGFjaG1lbnRzXG4gICAqIEB0eXBlIHtmdW5jdGlvbihBZGRBdHRhY2hQYXJhbXMpOiBQcm9taXNlPHZvaWQ+fVxuICAgKi9cbiAgcHJvdGVjdGVkIHN0YXRpYyBhZGRBdHRhY2hGdW5jdGlvbjogKFxuICAgIHBhcmFtczogQWRkQXR0YWNoUGFyYW1zXG4gICkgPT4gUHJvbWlzZTx2b2lkPjtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIE1hcCBvZiBkZXBlbmRlbmNpZXMgcmVxdWlyZWQgYnkgdGhlIHJlcG9ydGVyXG4gICAqIEBzdW1tYXJ5IFN0b3JlcyB0aGUgY3VycmVudCBzdGF0ZSBvZiBkZXBlbmRlbmNpZXNcbiAgICogQHR5cGUge1NpbXBsZURlcGVuZGVuY3lNYXB9XG4gICAqL1xuICBwcml2YXRlIGRlcHM/OiBTaW1wbGVEZXBlbmRlbmN5TWFwO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCB0ZXN0Q2FzZTogc3RyaW5nID0gXCJ0ZXN0c1wiLFxuICAgIHByb3RlY3RlZCBiYXNlUGF0aCA9IHBhdGguam9pbihcbiAgICAgIHByb2Nlc3MuY3dkKCksXG4gICAgICBcIndvcmtkb2NzXCIsXG4gICAgICBcInJlcG9ydHNcIixcbiAgICAgIFwiZXZpZGVuY2VzXCJcbiAgICApXG4gICkge1xuICAgIHRoaXMuYmFzZVBhdGggPSBwYXRoLmpvaW4oYmFzZVBhdGgsIHRoaXMudGVzdENhc2UpO1xuICAgIGlmICghZnMuZXhpc3RzU3luYyh0aGlzLmJhc2VQYXRoKSkge1xuICAgICAgZnMubWtkaXJTeW5jKGJhc2VQYXRoLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEltcG9ydHMgcmVxdWlyZWQgaGVscGVyIGZ1bmN0aW9uc1xuICAgKiBAc3VtbWFyeSBFbnN1cmVzIGFsbCBuZWNlc3NhcnkgZGVwZW5kZW5jaWVzIGFyZSBhdmFpbGFibGUgYW5kIGltcG9ydHMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKiBAcmV0dXJuIHtQcm9taXNlPHZvaWQ+fSBQcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiBoZWxwZXJzIGFyZSBpbXBvcnRlZFxuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyBpbXBvcnRIZWxwZXJzKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMuZGVwcyA9IGF3YWl0IGluc3RhbGxJZk5vdEF2YWlsYWJsZShbZGVwZW5kZW5jaWVzWzBdXSwgdGhpcy5kZXBzKTtcbiAgICAvLyBpZiAoIXByb2Nlc3MuZW52W0plc3RSZXBvcnRlcnNUZW1wUGF0aEVudktleV0pXG4gICAgLy8gICBwcm9jZXNzLmVudltKZXN0UmVwb3J0ZXJzVGVtcFBhdGhFbnZLZXldID0gJy4vd29ya2RvY3MvcmVwb3J0cyc7XG4gICAgY29uc3QgeyBhZGRNc2csIGFkZEF0dGFjaCB9ID0gYXdhaXQgbm9ybWFsaXplSW1wb3J0KFxuICAgICAgaW1wb3J0KGAke2RlcGVuZGVuY2llc1swXX0vaGVscGVyYClcbiAgICApO1xuICAgIFRlc3RSZXBvcnRlci5hZGRNc2dGdW5jdGlvbiA9IGFkZE1zZztcbiAgICBUZXN0UmVwb3J0ZXIuYWRkQXR0YWNoRnVuY3Rpb24gPSBhZGRBdHRhY2g7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFJlcG9ydHMgYSBtZXNzYWdlIHRvIHRoZSB0ZXN0IHJlcG9ydFxuICAgKiBAc3VtbWFyeSBBZGRzIGEgZm9ybWF0dGVkIG1lc3NhZ2UgdG8gdGhlIHRlc3QgcmVwb3J0IHdpdGggYW4gb3B0aW9uYWwgdGl0bGVcbiAgICogQHBhcmFtIHtzdHJpbmd9IHRpdGxlIC0gVGl0bGUgb2YgdGhlIG1lc3NhZ2VcbiAgICogQHBhcmFtIHtzdHJpbmcgfCBvYmplY3R9IG1lc3NhZ2UgLSBDb250ZW50IG9mIHRoZSBtZXNzYWdlXG4gICAqIEByZXR1cm4ge1Byb21pc2U8dm9pZD59IFByb21pc2UgdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBtZXNzYWdlIGlzIHJlcG9ydGVkXG4gICAqL1xuICBhc3luYyByZXBvcnRNZXNzYWdlKHRpdGxlOiBzdHJpbmcsIG1lc3NhZ2U6IHN0cmluZyB8IG9iamVjdCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICghVGVzdFJlcG9ydGVyLmFkZE1zZ0Z1bmN0aW9uKSBhd2FpdCB0aGlzLmltcG9ydEhlbHBlcnMoKTtcbiAgICBjb25zdCBtc2cgPSBgJHt0aXRsZX0ke21lc3NhZ2UgPyBgXFxuJHttZXNzYWdlfWAgOiBcIlwifWA7XG4gICAgYXdhaXQgVGVzdFJlcG9ydGVyLmFkZE1zZ0Z1bmN0aW9uKHsgbWVzc2FnZTogbXNnIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBSZXBvcnRzIGFuIGF0dGFjaG1lbnQgdG8gdGhlIHRlc3QgcmVwb3J0XG4gICAqIEBzdW1tYXJ5IEFkZHMgYSBmb3JtYXR0ZWQgbWVzc2FnZSB0byB0aGUgdGVzdCByZXBvcnQgd2l0aCBhbiBvcHRpb25hbCB0aXRsZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gdGl0bGUgLSBUaXRsZSBvZiB0aGUgbWVzc2FnZVxuICAgKiBAcGFyYW0ge3N0cmluZyB8IEJ1ZmZlcn0gYXR0YWNobWVudCAtIENvbnRlbnQgb2YgdGhlIG1lc3NhZ2VcbiAgICogQHJldHVybiB7UHJvbWlzZTx2b2lkPn0gUHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIG1lc3NhZ2UgaXMgcmVwb3J0ZWRcbiAgICovXG4gIGFzeW5jIHJlcG9ydEF0dGFjaG1lbnQoXG4gICAgdGl0bGU6IHN0cmluZyxcbiAgICBhdHRhY2htZW50OiBzdHJpbmcgfCBCdWZmZXJcbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKCFUZXN0UmVwb3J0ZXIuYWRkQXR0YWNoRnVuY3Rpb24pIGF3YWl0IHRoaXMuaW1wb3J0SGVscGVycygpO1xuICAgIGF3YWl0IFRlc3RSZXBvcnRlci5hZGRBdHRhY2hGdW5jdGlvbih7XG4gICAgICBhdHRhY2g6IGF0dGFjaG1lbnQsXG4gICAgICBkZXNjcmlwdGlvbjogdGl0bGUsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFJlcG9ydHMgZGF0YSB3aXRoIHNwZWNpZmllZCB0eXBlXG4gICAqIEBzdW1tYXJ5IFByb2Nlc3NlcyBhbmQgc3RvcmVzIGRhdGEgaW4gdGhlIHRlc3QgcmVwb3J0IHdpdGggZm9ybWF0dGluZ1xuICAgKiBAcGFyYW0ge3N0cmluZ30gcmVmZXJlbmNlIC0gUmVmZXJlbmNlIGlkZW50aWZpZXIgZm9yIHRoZSBkYXRhXG4gICAqIEBwYXJhbSB7c3RyaW5nIHwgbnVtYmVyIHwgb2JqZWN0fSBkYXRhIC0gRGF0YSB0byBiZSByZXBvcnRlZFxuICAgKiBAcGFyYW0ge1BheWxvYWRUeXBlfSB0eXBlIC0gVHlwZSBvZiB0aGUgcGF5bG9hZFxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IFt0cmltPWZhbHNlXSAtIFdoZXRoZXIgdG8gdHJpbSB0aGUgZGF0YVxuICAgKiBAcmV0dXJuIHtQcm9taXNlPHZvaWQ+fSBQcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiBkYXRhIGlzIHJlcG9ydGVkXG4gICAqL1xuICBwcm90ZWN0ZWQgYXN5bmMgcmVwb3J0KFxuICAgIHJlZmVyZW5jZTogc3RyaW5nLFxuICAgIGRhdGE6IHN0cmluZyB8IG51bWJlciB8IG9iamVjdCB8IEJ1ZmZlcixcbiAgICB0eXBlOiBQYXlsb2FkVHlwZSxcbiAgICB0cmltOiBib29sZWFuID0gZmFsc2VcbiAgKSB7XG4gICAgdHJ5IHtcbiAgICAgIGxldCBhdHRhY2hGdW5jdGlvbjpcbiAgICAgICAgfCB0eXBlb2YgdGhpcy5yZXBvcnRNZXNzYWdlXG4gICAgICAgIHwgdHlwZW9mIHRoaXMucmVwb3J0QXR0YWNobWVudCA9IHRoaXMucmVwb3J0TWVzc2FnZS5iaW5kKHRoaXMpO1xuICAgICAgbGV0IGV4dGVuc2lvbjogXCIucG5nXCIgfCBcIi50eHRcIiB8IFwiLm1kXCIgfCBcIi5qc29uXCIgPSBcIi50eHRcIjtcblxuICAgICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICAgIGNhc2UgXCJpbWFnZVwiOlxuICAgICAgICAgIGRhdGEgPSBCdWZmZXIuZnJvbShkYXRhIGFzIEJ1ZmZlcik7XG4gICAgICAgICAgZXh0ZW5zaW9uID0gXCIucG5nXCI7XG4gICAgICAgICAgYXR0YWNoRnVuY3Rpb24gPSB0aGlzLnJlcG9ydEF0dGFjaG1lbnQuYmluZCh0aGlzKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcImpzb25cIjpcbiAgICAgICAgICBpZiAodHJpbSkge1xuICAgICAgICAgICAgaWYgKChkYXRhIGFzIHsgcmVxdWVzdD86IHVua25vd24gfSkucmVxdWVzdClcbiAgICAgICAgICAgICAgZGVsZXRlIChkYXRhIGFzIHsgcmVxdWVzdD86IHVua25vd24gfSlbXCJyZXF1ZXN0XCJdO1xuICAgICAgICAgICAgaWYgKChkYXRhIGFzIHsgY29uZmlnPzogdW5rbm93biB9KS5jb25maWcpXG4gICAgICAgICAgICAgIGRlbGV0ZSAoZGF0YSBhcyB7IGNvbmZpZz86IHVua25vd24gfSlbXCJjb25maWdcIl07XG4gICAgICAgICAgfVxuICAgICAgICAgIGRhdGEgPSBKU09OLnN0cmluZ2lmeShkYXRhLCBudWxsLCAyKTtcbiAgICAgICAgICBleHRlbnNpb24gPSBcIi5qc29uXCI7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJtZFwiOlxuICAgICAgICAgIGV4dGVuc2lvbiA9IFwiLm1kXCI7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJ0ZXh0XCI6XG4gICAgICAgICAgZXh0ZW5zaW9uID0gXCIudHh0XCI7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgY29uc29sZS5sb2coYFVuc3VwcG9ydGVkIHR5cGUgJHt0eXBlfS4gYXNzdW1pbmcgdGV4dGApO1xuICAgICAgfVxuICAgICAgcmVmZXJlbmNlID0gcmVmZXJlbmNlLmluY2x1ZGVzKFwiXFxuXCIpXG4gICAgICAgID8gcmVmZXJlbmNlXG4gICAgICAgIDogYCR7cmVmZXJlbmNlfSR7ZXh0ZW5zaW9ufWA7XG4gICAgICBhd2FpdCBhdHRhY2hGdW5jdGlvbihyZWZlcmVuY2UsIGRhdGEgYXMgQnVmZmVyIHwgc3RyaW5nKTtcbiAgICB9IGNhdGNoIChlOiB1bmtub3duKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBDb3VsZCBub3Qgc3RvcmUgYXR0YWNoIGFydGlmYWN0ICR7cmVmZXJlbmNlfSB1bmRlciB0byB0ZXN0IHJlcG9ydCAke3RoaXMudGVzdENhc2V9IC0gJHtlfWBcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgcmVwb3J0RGF0YShcbiAgICByZWZlcmVuY2U6IHN0cmluZyxcbiAgICBkYXRhOiBzdHJpbmcgfCBudW1iZXIgfCBvYmplY3QsXG4gICAgdHlwZTogUGF5bG9hZFR5cGUgPSBcImpzb25cIixcbiAgICB0cmltID0gZmFsc2VcbiAgKSB7XG4gICAgcmV0dXJuIHRoaXMucmVwb3J0KHJlZmVyZW5jZSwgZGF0YSwgdHlwZSwgdHJpbSk7XG4gIH1cblxuICBhc3luYyByZXBvcnRPYmplY3QocmVmZXJlbmNlOiBzdHJpbmcsIGpzb246IG9iamVjdCwgdHJpbSA9IGZhbHNlKSB7XG4gICAgcmV0dXJuIHRoaXMucmVwb3J0KHJlZmVyZW5jZSwganNvbiwgXCJqc29uXCIsIHRyaW0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBSZXBvcnRzIGEgdGFibGUgaW4gbWFya2Rvd24gZm9ybWF0XG4gICAqIEBzdW1tYXJ5IENvbnZlcnRzIGFuZCBzdG9yZXMgYSB0YWJsZSBkZWZpbml0aW9uIGluIG1hcmtkb3duIGZvcm1hdFxuICAgKiBAcGFyYW0ge3N0cmluZ30gcmVmZXJlbmNlIC0gUmVmZXJlbmNlIGlkZW50aWZpZXIgZm9yIHRoZSB0YWJsZVxuICAgKiBAcGFyYW0ge01kVGFibGVEZWZpbml0aW9ufSB0YWJsZURlZiAtIFRhYmxlIGRlZmluaXRpb24gb2JqZWN0XG4gICAqIEByZXR1cm4ge1Byb21pc2U8dm9pZD59IFByb21pc2UgdGhhdCByZXNvbHZlcyB3aGVuIHRhYmxlIGlzIHJlcG9ydGVkXG4gICAqL1xuICBhc3luYyByZXBvcnRUYWJsZShyZWZlcmVuY2U6IHN0cmluZywgdGFibGVEZWY6IE1kVGFibGVEZWZpbml0aW9uKSB7XG4gICAgdGhpcy5kZXBzID0gYXdhaXQgaW5zdGFsbElmTm90QXZhaWxhYmxlKFtkZXBlbmRlbmNpZXNbMV1dLCB0aGlzLmRlcHMpO1xuICAgIGxldCB0eHQ6IHN0cmluZztcbiAgICB0cnkge1xuICAgICAgY29uc3QganNvbjJtZCA9IGF3YWl0IG5vcm1hbGl6ZUltcG9ydChpbXBvcnQoYCR7ZGVwZW5kZW5jaWVzWzFdfWApKTtcbiAgICAgIHR4dCA9IGpzb24ybWQodGFibGVEZWYpO1xuICAgIH0gY2F0Y2ggKGU6IHVua25vd24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQ291bGQgbm90IGNvbnZlcnQgSlNPTiB0byBNYXJrZG93biAtICR7ZX1gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5yZXBvcnQocmVmZXJlbmNlLCB0eHQsIFwibWRcIik7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFJlcG9ydHMgYSBncmFwaCB1c2luZyBDaGFydC5qc1xuICAgKiBAc3VtbWFyeSBHZW5lcmF0ZXMgYW5kIHN0b3JlcyBhIGdyYXBoIHZpc3VhbGl6YXRpb25cbiAgICogQHBhcmFtIHtzdHJpbmd9IHJlZmVyZW5jZSAtIFJlZmVyZW5jZSBpZGVudGlmaWVyIGZvciB0aGUgZ3JhcGhcbiAgICogQHBhcmFtIHthbnl9IGNvbmZpZyAtIENoYXJ0LmpzIGNvbmZpZ3VyYXRpb24gb2JqZWN0XG4gICAqIEByZXR1cm4ge1Byb21pc2U8dm9pZD59IFByb21pc2UgdGhhdCByZXNvbHZlcyB3aGVuIGdyYXBoIGlzIHJlcG9ydGVkXG4gICAqL1xuICBhc3luYyByZXBvcnRHcmFwaChyZWZlcmVuY2U6IHN0cmluZywgY29uZmlnOiBhbnkpIHtcbiAgICB0aGlzLmRlcHMgPSBhd2FpdCBpbnN0YWxsSWZOb3RBdmFpbGFibGUoW2RlcGVuZGVuY2llc1syXV0sIHRoaXMuZGVwcyk7XG4gICAgY29uc3QgeyBDaGFydEpTTm9kZUNhbnZhcyB9ID0gYXdhaXQgbm9ybWFsaXplSW1wb3J0KFxuICAgICAgaW1wb3J0KGRlcGVuZGVuY2llc1syXSlcbiAgICApO1xuXG4gICAgY29uc3Qgd2lkdGggPSA2MDA7IC8vcHhcbiAgICBjb25zdCBoZWlnaHQgPSA4MDA7IC8vcHhcbiAgICBjb25zdCBiYWNrZ3JvdW5kQ29sb3VyID0gXCJ3aGl0ZVwiOyAvLyBVc2VzIGh0dHBzOi8vd3d3Lnczc2Nob29scy5jb20vdGFncy9jYW52YXNfZmlsbHN0eWxlLmFzcFxuICAgIGNvbnN0IGNoYXJ0SlNOb2RlQ2FudmFzID0gbmV3IENoYXJ0SlNOb2RlQ2FudmFzKHtcbiAgICAgIHdpZHRoLFxuICAgICAgaGVpZ2h0LFxuICAgICAgYmFja2dyb3VuZENvbG91cixcbiAgICB9KTtcblxuICAgIGNvbnN0IGltYWdlID0gYXdhaXQgY2hhcnRKU05vZGVDYW52YXMucmVuZGVyVG9CdWZmZXIoY29uZmlnKTtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5yZXBvcnRJbWFnZShyZWZlcmVuY2UsIGltYWdlKTtcbiAgfVxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFJlcG9ydHMgYW4gaW1hZ2UgdG8gdGhlIHRlc3QgcmVwb3J0XG4gICAqIEBzdW1tYXJ5IFN0b3JlcyBhbiBpbWFnZSBidWZmZXIgaW4gdGhlIHRlc3QgcmVwb3J0XG4gICAqIEBwYXJhbSB7c3RyaW5nfSByZWZlcmVuY2UgLSBSZWZlcmVuY2UgaWRlbnRpZmllciBmb3IgdGhlIGltYWdlXG4gICAqIEBwYXJhbSB7QnVmZmVyfSBidWZmZXIgLSBJbWFnZSBkYXRhIGJ1ZmZlclxuICAgKiBAcmV0dXJuIHtQcm9taXNlPHZvaWQ+fSBQcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiBpbWFnZSBpcyByZXBvcnRlZFxuICAgKi9cbiAgYXN5bmMgcmVwb3J0SW1hZ2UocmVmZXJlbmNlOiBzdHJpbmcsIGJ1ZmZlcjogQnVmZmVyKSB7XG4gICAgcmV0dXJuIHRoaXMucmVwb3J0KHJlZmVyZW5jZSwgYnVmZmVyLCBcImltYWdlXCIpO1xuICB9XG59XG4iXX0=
|
|
260
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdXRpbHMvdGVzdHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxJQUFJLE1BQU0sTUFBTSxDQUFDO0FBQ3hCLE9BQU8sRUFBRSxNQUFNLElBQUksQ0FBQztBQUVwQixPQUFPLEVBQUUscUJBQXFCLEVBQUUsZ0JBQWE7QUFtQzdDOzs7OztHQUtHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sMkJBQTJCLEdBQUcsbUNBQW1DLENBQUM7QUFFL0U7Ozs7O0dBS0c7QUFDSCxNQUFNLFlBQVksR0FBRyxDQUFDLHFCQUFxQixFQUFFLFNBQVMsRUFBRSxxQkFBcUIsQ0FBQyxDQUFDO0FBRS9FOzs7Ozs7OztHQVFHO0FBQ0gsS0FBSyxVQUFVLGVBQWUsQ0FBSSxhQUF5QjtJQUN6RCxtRUFBbUU7SUFDbkUsT0FBTyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxDQUFNLENBQUMsQ0FBQztBQUMvRCxDQUFDO0FBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXlERztBQUNILE1BQU0sT0FBTyxZQUFZO0lBd0J2QixZQUNZLFdBQW1CLE9BQU8sRUFDMUIsV0FBVyxJQUFJLENBQUMsSUFBSSxDQUM1QixPQUFPLENBQUMsR0FBRyxFQUFFLEVBQ2IsVUFBVSxFQUNWLFNBQVMsRUFDVCxXQUFXLENBQ1o7UUFOUyxhQUFRLEdBQVIsUUFBUSxDQUFrQjtRQUMxQixhQUFRLEdBQVIsUUFBUSxDQUtqQjtRQUVELElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ25ELElBQUksQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxRQUFR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LEtBQUssQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFDRDs7Ozs7O09BTUc7SUFDSCxLQUFLLENBQUMsV0FBVyxDQUFDLFNBQWlCLEVBQUUsTUFBYztRQUNqRCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNqRCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiO1xuaW1wb3J0IGZzIGZyb20gXCJmc1wiO1xuaW1wb3J0IHsgTWRUYWJsZURlZmluaXRpb24gfSBmcm9tIFwiLi9tZFwiO1xuaW1wb3J0IHsgaW5zdGFsbElmTm90QXZhaWxhYmxlIH0gZnJvbSBcIi4vZnNcIjtcbmltcG9ydCB7IFNpbXBsZURlcGVuZGVuY3lNYXAgfSBmcm9tIFwiLi90eXBlc1wiO1xuXG4vKipcbiAqIEBpbnRlcmZhY2UgQWRkQXR0YWNoUGFyYW1zXG4gKiBAZGVzY3JpcHRpb24gUGFyYW1ldGVycyBmb3IgYWRkaW5nIGFuIGF0dGFjaG1lbnQgdG8gYSByZXBvcnRcbiAqIEBzdW1tYXJ5IEludGVyZmFjZSBmb3IgYXR0YWNobWVudCBwYXJhbWV0ZXJzXG4gKiBAbWVtYmVyT2YgbW9kdWxlOnV0aWxzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQWRkQXR0YWNoUGFyYW1zIHtcbiAgYXR0YWNoOiBzdHJpbmcgfCBCdWZmZXI7XG4gIGRlc2NyaXB0aW9uOiBzdHJpbmcgfCBvYmplY3Q7XG4gIGNvbnRleHQ/OiBhbnk7XG4gIGJ1ZmZlckZvcm1hdD86IHN0cmluZztcbn1cblxuLyoqXG4gKiBAaW50ZXJmYWNlIEFkZE1zZ1BhcmFtc1xuICogQGRlc2NyaXB0aW9uIFBhcmFtZXRlcnMgZm9yIGFkZGluZyBhIG1lc3NhZ2UgdG8gYSByZXBvcnRcbiAqIEBzdW1tYXJ5IEludGVyZmFjZSBmb3IgbWVzc2FnZSBwYXJhbWV0ZXJzXG4gKiBAbWVtYmVyT2YgbW9kdWxlOnV0aWxzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQWRkTXNnUGFyYW1zIHtcbiAgbWVzc2FnZTogc3RyaW5nIHwgb2JqZWN0O1xuICBjb250ZXh0PzogYW55O1xufVxuXG4vKipcbiAqIEB0eXBlZGVmIHsoXCJqc29uXCJ8XCJpbWFnZVwifFwidGV4dFwifFwibWRcIil9IFBheWxvYWRUeXBlXG4gKiBAZGVzY3JpcHRpb24gVHlwZXMgb2YgcGF5bG9hZHMgdGhhdCBjYW4gYmUgaGFuZGxlZFxuICogQHN1bW1hcnkgVW5pb24gdHlwZSBmb3IgcGF5bG9hZCB0eXBlc1xuICogQG1lbWJlck9mIG1vZHVsZTp1dGlsc1xuICovXG5leHBvcnQgdHlwZSBQYXlsb2FkVHlwZSA9IFwianNvblwiIHwgXCJpbWFnZVwiIHwgXCJ0ZXh0XCIgfCBcIm1kXCI7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIEVudmlyb25tZW50IHZhcmlhYmxlIGtleSBmb3IgSmVzdCBIVE1MIHJlcG9ydGVycyB0ZW1wb3JhcnkgZGlyZWN0b3J5IHBhdGhcbiAqIEBzdW1tYXJ5IENvbnN0YW50IGRlZmluaW5nIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBrZXkgZm9yIEplc3QgSFRNTCByZXBvcnRlcnNcbiAqIEBjb25zdCBKZXN0UmVwb3J0ZXJzVGVtcFBhdGhFbnZLZXlcbiAqIEBtZW1iZXJPZiBtb2R1bGU6dXRpbHNcbiAqL1xuZXhwb3J0IGNvbnN0IEplc3RSZXBvcnRlcnNUZW1wUGF0aEVudktleSA9IFwiSkVTVF9IVE1MX1JFUE9SVEVSU19URU1QX0RJUl9QQVRIXCI7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIEFycmF5IG9mIGRlcGVuZGVuY2llcyByZXF1aXJlZCBieSB0aGUgdGVzdCByZXBvcnRlclxuICogQHN1bW1hcnkgTGlzdCBvZiBucG0gcGFja2FnZXMgbmVlZGVkIGZvciByZXBvcnRpbmcgZnVuY3Rpb25hbGl0eVxuICogQGNvbnN0IGRlcGVuZGVuY2llc1xuICogQG1lbWJlck9mIG1vZHVsZTp1dGlsc1xuICovXG5jb25zdCBkZXBlbmRlbmNpZXMgPSBbXCJqZXN0LWh0bWwtcmVwb3J0ZXJzXCIsIFwianNvbjJtZFwiLCBcImNoYXJ0anMtbm9kZS1jYW52YXNcIl07XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIE5vcm1hbGl6ZXMgaW1wb3J0cyB0byBoYW5kbGUgYm90aCBDb21tb25KUyBhbmQgRVNNb2R1bGUgZm9ybWF0c1xuICogQHN1bW1hcnkgVXRpbGl0eSBmdW5jdGlvbiB0byBoYW5kbGUgbW9kdWxlIGltcG9ydCBkaWZmZXJlbmNlcyBiZXR3ZWVuIGZvcm1hdHNcbiAqIEB0ZW1wbGF0ZSBUIC0gVHlwZSBvZiB0aGUgaW1wb3J0ZWQgbW9kdWxlXG4gKiBAcGFyYW0ge1Byb21pc2U8VD59IGltcG9ydFByb21pc2UgLSBQcm9taXNlIHJldHVybmVkIGJ5IGR5bmFtaWMgaW1wb3J0XG4gKiBAcmV0dXJuIHtQcm9taXNlPFQ+fSBOb3JtYWxpemVkIG1vZHVsZVxuICogQGZ1bmN0aW9uIG5vcm1hbGl6ZUltcG9ydFxuICogQG1lbWJlck9mIG1vZHVsZTp1dGlsc1xuICovXG5hc3luYyBmdW5jdGlvbiBub3JtYWxpemVJbXBvcnQ8VD4oaW1wb3J0UHJvbWlzZTogUHJvbWlzZTxUPik6IFByb21pc2U8VD4ge1xuICAvLyBDb21tb25KUydzIGBtb2R1bGUuZXhwb3J0c2AgaXMgd3JhcHBlZCBhcyBgZGVmYXVsdGAgaW4gRVNNb2R1bGUuXG4gIHJldHVybiBpbXBvcnRQcm9taXNlLnRoZW4oKG06IGFueSkgPT4gKG0uZGVmYXVsdCB8fCBtKSBhcyBUKTtcbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gVGVzdCByZXBvcnRpbmcgdXRpbGl0eSBjbGFzcyBmb3IgbWFuYWdpbmcgdGVzdCByZXN1bHRzIGFuZCBldmlkZW5jZVxuICogQHN1bW1hcnkgQSBjb21wcmVoZW5zaXZlIHRlc3QgcmVwb3J0ZXIgdGhhdCBoYW5kbGVzIHZhcmlvdXMgdHlwZXMgb2YgdGVzdCBhcnRpZmFjdHMgaW5jbHVkaW5nIG1lc3NhZ2VzLFxuICogYXR0YWNobWVudHMsIGRhdGEsIGltYWdlcywgdGFibGVzLCBhbmQgZ3JhcGhzLiBJdCBwcm92aWRlcyBtZXRob2RzIHRvIHJlcG9ydCBhbmQgc3RvcmUgdGVzdCBldmlkZW5jZVxuICogaW4gZGlmZmVyZW50IGZvcm1hdHMgYW5kIG1hbmFnZXMgZGVwZW5kZW5jaWVzIGZvciByZXBvcnRpbmcgZnVuY3Rpb25hbGl0eS5cbiAqXG4gKiBAdGVtcGxhdGUgVCAtIFR5cGUgb2YgZGF0YSBiZWluZyByZXBvcnRlZFxuICogQHBhcmFtIHtzdHJpbmd9IFt0ZXN0Q2FzZT1cInRlc3RzXCJdIC0gTmFtZSBvZiB0aGUgdGVzdCBjYXNlXG4gKiBAcGFyYW0ge3N0cmluZ30gW2Jhc2VQYXRoXSAtIEJhc2UgcGF0aCBmb3Igc3RvcmluZyB0ZXN0IHJlcG9ydHNcbiAqIEBjbGFzc1xuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCByZXBvcnRlciA9IG5ldyBUZXN0UmVwb3J0ZXIoJ2xvZ2luLXRlc3QnKTtcbiAqXG4gKiAvLyBSZXBvcnQgdGVzdCBtZXNzYWdlc1xuICogYXdhaXQgcmVwb3J0ZXIucmVwb3J0TWVzc2FnZSgnVGVzdCBTdGFydGVkJywgJ0xvZ2luIGZsb3cgaW5pdGlhdGVkJyk7XG4gKlxuICogLy8gUmVwb3J0IHRlc3QgZGF0YVxuICogYXdhaXQgcmVwb3J0ZXIucmVwb3J0RGF0YSgndXNlci1jcmVkZW50aWFscycsIHsgdXNlcm5hbWU6ICd0ZXN0JyB9LCAnanNvbicpO1xuICpcbiAqIC8vIFJlcG9ydCB0ZXN0IHJlc3VsdHMgdGFibGVcbiAqIGF3YWl0IHJlcG9ydGVyLnJlcG9ydFRhYmxlKCd0ZXN0LXJlc3VsdHMnLCB7XG4gKiAgIGhlYWRlcnM6IFsnU3RlcCcsICdTdGF0dXMnXSxcbiAqICAgcm93czogW1xuICogICAgIHsgU3RlcDogJ0xvZ2luJywgU3RhdHVzOiAnUGFzcycgfSxcbiAqICAgICB7IFN0ZXA6ICdWYWxpZGF0aW9uJywgU3RhdHVzOiAnUGFzcycgfVxuICogICBdXG4gKiB9KTtcbiAqXG4gKiAvLyBSZXBvcnQgdGVzdCBldmlkZW5jZVxuICogYXdhaXQgcmVwb3J0ZXIucmVwb3J0QXR0YWNobWVudCgnU2NyZWVuc2hvdCcsIHNjcmVlbnNob3RCdWZmZXIpO1xuICogYGBgXG4gKlxuICogQG1lcm1haWRcbiAqIHNlcXVlbmNlRGlhZ3JhbVxuICogICBwYXJ0aWNpcGFudCBDbGllbnRcbiAqICAgcGFydGljaXBhbnQgVGVzdFJlcG9ydGVyXG4gKiAgIHBhcnRpY2lwYW50IEZpbGVTeXN0ZW1cbiAqICAgcGFydGljaXBhbnQgRGVwZW5kZW5jaWVzXG4gKlxuICogICBDbGllbnQtPj5UZXN0UmVwb3J0ZXI6IG5ldyBUZXN0UmVwb3J0ZXIodGVzdENhc2UsIGJhc2VQYXRoKVxuICogICBUZXN0UmVwb3J0ZXItPj5GaWxlU3lzdGVtOiBDcmVhdGUgcmVwb3J0IGRpcmVjdG9yeVxuICpcbiAqICAgYWx0IFJlcG9ydCBNZXNzYWdlXG4gKiAgICAgQ2xpZW50LT4+VGVzdFJlcG9ydGVyOiByZXBvcnRNZXNzYWdlKHRpdGxlLCBtZXNzYWdlKVxuICogICAgIFRlc3RSZXBvcnRlci0+PkRlcGVuZGVuY2llczogSW1wb3J0IGhlbHBlcnNcbiAqICAgICBUZXN0UmVwb3J0ZXItPj5GaWxlU3lzdGVtOiBTdG9yZSBtZXNzYWdlXG4gKiAgIGVsc2UgUmVwb3J0IERhdGFcbiAqICAgICBDbGllbnQtPj5UZXN0UmVwb3J0ZXI6IHJlcG9ydERhdGEocmVmZXJlbmNlLCBkYXRhLCB0eXBlKVxuICogICAgIFRlc3RSZXBvcnRlci0+PkRlcGVuZGVuY2llczogUHJvY2VzcyBkYXRhXG4gKiAgICAgVGVzdFJlcG9ydGVyLT4+RmlsZVN5c3RlbTogU3RvcmUgZm9ybWF0dGVkIGRhdGFcbiAqICAgZWxzZSBSZXBvcnQgVGFibGVcbiAqICAgICBDbGllbnQtPj5UZXN0UmVwb3J0ZXI6IHJlcG9ydFRhYmxlKHJlZmVyZW5jZSwgdGFibGVEZWYpXG4gKiAgICAgVGVzdFJlcG9ydGVyLT4+RGVwZW5kZW5jaWVzOiBDb252ZXJ0IHRvIE1EIGZvcm1hdFxuICogICAgIFRlc3RSZXBvcnRlci0+PkZpbGVTeXN0ZW06IFN0b3JlIHRhYmxlXG4gKiAgIGVuZFxuICovXG5leHBvcnQgY2xhc3MgVGVzdFJlcG9ydGVyIHtcbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBGdW5jdGlvbiBmb3IgYWRkaW5nIG1lc3NhZ2VzIHRvIHRoZSB0ZXN0IHJlcG9ydFxuICAgKiBAc3VtbWFyeSBTdGF0aWMgaGFuZGxlciBmb3IgcHJvY2Vzc2luZyBhbmQgc3RvcmluZyB0ZXN0IG1lc3NhZ2VzXG4gICAqIEB0eXBlIHtmdW5jdGlvbihBZGRNc2dQYXJhbXMpOiBQcm9taXNlPHZvaWQ+fVxuICAgKi9cbiAgcHJvdGVjdGVkIHN0YXRpYyBhZGRNc2dGdW5jdGlvbjogKHBhcmFtczogQWRkTXNnUGFyYW1zKSA9PiBQcm9taXNlPHZvaWQ+O1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gRnVuY3Rpb24gZm9yIGFkZGluZyBhdHRhY2htZW50cyB0byB0aGUgdGVzdCByZXBvcnRcbiAgICogQHN1bW1hcnkgU3RhdGljIGhhbmRsZXIgZm9yIHByb2Nlc3NpbmcgYW5kIHN0b3JpbmcgdGVzdCBhdHRhY2htZW50c1xuICAgKiBAdHlwZSB7ZnVuY3Rpb24oQWRkQXR0YWNoUGFyYW1zKTogUHJvbWlzZTx2b2lkPn1cbiAgICovXG4gIHByb3RlY3RlZCBzdGF0aWMgYWRkQXR0YWNoRnVuY3Rpb246IChcbiAgICBwYXJhbXM6IEFkZEF0dGFjaFBhcmFtc1xuICApID0+IFByb21pc2U8dm9pZD47XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBNYXAgb2YgZGVwZW5kZW5jaWVzIHJlcXVpcmVkIGJ5IHRoZSByZXBvcnRlclxuICAgKiBAc3VtbWFyeSBTdG9yZXMgdGhlIGN1cnJlbnQgc3RhdGUgb2YgZGVwZW5kZW5jaWVzXG4gICAqIEB0eXBlIHtTaW1wbGVEZXBlbmRlbmN5TWFwfVxuICAgKi9cbiAgcHJpdmF0ZSBkZXBzPzogU2ltcGxlRGVwZW5kZW5jeU1hcDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgdGVzdENhc2U6IHN0cmluZyA9IFwidGVzdHNcIixcbiAgICBwcm90ZWN0ZWQgYmFzZVBhdGggPSBwYXRoLmpvaW4oXG4gICAgICBwcm9jZXNzLmN3ZCgpLFxuICAgICAgXCJ3b3JrZG9jc1wiLFxuICAgICAgXCJyZXBvcnRzXCIsXG4gICAgICBcImV2aWRlbmNlc1wiXG4gICAgKVxuICApIHtcbiAgICB0aGlzLmJhc2VQYXRoID0gcGF0aC5qb2luKGJhc2VQYXRoLCB0aGlzLnRlc3RDYXNlKTtcbiAgICBpZiAoIWZzLmV4aXN0c1N5bmModGhpcy5iYXNlUGF0aCkpIHtcbiAgICAgIGZzLm1rZGlyU3luYyhiYXNlUGF0aCwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBJbXBvcnRzIHJlcXVpcmVkIGhlbHBlciBmdW5jdGlvbnNcbiAgICogQHN1bW1hcnkgRW5zdXJlcyBhbGwgbmVjZXNzYXJ5IGRlcGVuZGVuY2llcyBhcmUgYXZhaWxhYmxlIGFuZCBpbXBvcnRzIGhlbHBlciBmdW5jdGlvbnNcbiAgICogQHJldHVybiB7UHJvbWlzZTx2b2lkPn0gUHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gaGVscGVycyBhcmUgaW1wb3J0ZWRcbiAgICovXG4gIHByaXZhdGUgYXN5bmMgaW1wb3J0SGVscGVycygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0aGlzLmRlcHMgPSBhd2FpdCBpbnN0YWxsSWZOb3RBdmFpbGFibGUoW2RlcGVuZGVuY2llc1swXV0sIHRoaXMuZGVwcyk7XG4gICAgLy8gaWYgKCFwcm9jZXNzLmVudltKZXN0UmVwb3J0ZXJzVGVtcFBhdGhFbnZLZXldKVxuICAgIC8vICAgcHJvY2Vzcy5lbnZbSmVzdFJlcG9ydGVyc1RlbXBQYXRoRW52S2V5XSA9ICcuL3dvcmtkb2NzL3JlcG9ydHMnO1xuICAgIGNvbnN0IHsgYWRkTXNnLCBhZGRBdHRhY2ggfSA9IGF3YWl0IG5vcm1hbGl6ZUltcG9ydChcbiAgICAgIGltcG9ydChgJHtkZXBlbmRlbmNpZXNbMF19L2hlbHBlcmApXG4gICAgKTtcbiAgICBUZXN0UmVwb3J0ZXIuYWRkTXNnRnVuY3Rpb24gPSBhZGRNc2c7XG4gICAgVGVzdFJlcG9ydGVyLmFkZEF0dGFjaEZ1bmN0aW9uID0gYWRkQXR0YWNoO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBSZXBvcnRzIGEgbWVzc2FnZSB0byB0aGUgdGVzdCByZXBvcnRcbiAgICogQHN1bW1hcnkgQWRkcyBhIGZvcm1hdHRlZCBtZXNzYWdlIHRvIHRoZSB0ZXN0IHJlcG9ydCB3aXRoIGFuIG9wdGlvbmFsIHRpdGxlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB0aXRsZSAtIFRpdGxlIG9mIHRoZSBtZXNzYWdlXG4gICAqIEBwYXJhbSB7c3RyaW5nIHwgb2JqZWN0fSBtZXNzYWdlIC0gQ29udGVudCBvZiB0aGUgbWVzc2FnZVxuICAgKiBAcmV0dXJuIHtQcm9taXNlPHZvaWQ+fSBQcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgbWVzc2FnZSBpcyByZXBvcnRlZFxuICAgKi9cbiAgYXN5bmMgcmVwb3J0TWVzc2FnZSh0aXRsZTogc3RyaW5nLCBtZXNzYWdlOiBzdHJpbmcgfCBvYmplY3QpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoIVRlc3RSZXBvcnRlci5hZGRNc2dGdW5jdGlvbikgYXdhaXQgdGhpcy5pbXBvcnRIZWxwZXJzKCk7XG4gICAgY29uc3QgbXNnID0gYCR7dGl0bGV9JHttZXNzYWdlID8gYFxcbiR7bWVzc2FnZX1gIDogXCJcIn1gO1xuICAgIGF3YWl0IFRlc3RSZXBvcnRlci5hZGRNc2dGdW5jdGlvbih7IG1lc3NhZ2U6IG1zZyB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gUmVwb3J0cyBhbiBhdHRhY2htZW50IHRvIHRoZSB0ZXN0IHJlcG9ydFxuICAgKiBAc3VtbWFyeSBBZGRzIGEgZm9ybWF0dGVkIG1lc3NhZ2UgdG8gdGhlIHRlc3QgcmVwb3J0IHdpdGggYW4gb3B0aW9uYWwgdGl0bGVcbiAgICogQHBhcmFtIHtzdHJpbmd9IHRpdGxlIC0gVGl0bGUgb2YgdGhlIG1lc3NhZ2VcbiAgICogQHBhcmFtIHtzdHJpbmcgfCBCdWZmZXJ9IGF0dGFjaG1lbnQgLSBDb250ZW50IG9mIHRoZSBtZXNzYWdlXG4gICAqIEByZXR1cm4ge1Byb21pc2U8dm9pZD59IFByb21pc2UgdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBtZXNzYWdlIGlzIHJlcG9ydGVkXG4gICAqL1xuICBhc3luYyByZXBvcnRBdHRhY2htZW50KFxuICAgIHRpdGxlOiBzdHJpbmcsXG4gICAgYXR0YWNobWVudDogc3RyaW5nIHwgQnVmZmVyXG4gICk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICghVGVzdFJlcG9ydGVyLmFkZEF0dGFjaEZ1bmN0aW9uKSBhd2FpdCB0aGlzLmltcG9ydEhlbHBlcnMoKTtcbiAgICBhd2FpdCBUZXN0UmVwb3J0ZXIuYWRkQXR0YWNoRnVuY3Rpb24oe1xuICAgICAgYXR0YWNoOiBhdHRhY2htZW50LFxuICAgICAgZGVzY3JpcHRpb246IHRpdGxlLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBSZXBvcnRzIGRhdGEgd2l0aCBzcGVjaWZpZWQgdHlwZVxuICAgKiBAc3VtbWFyeSBQcm9jZXNzZXMgYW5kIHN0b3JlcyBkYXRhIGluIHRoZSB0ZXN0IHJlcG9ydCB3aXRoIGZvcm1hdHRpbmdcbiAgICogQHBhcmFtIHtzdHJpbmd9IHJlZmVyZW5jZSAtIFJlZmVyZW5jZSBpZGVudGlmaWVyIGZvciB0aGUgZGF0YVxuICAgKiBAcGFyYW0ge3N0cmluZyB8IG51bWJlciB8IG9iamVjdH0gZGF0YSAtIERhdGEgdG8gYmUgcmVwb3J0ZWRcbiAgICogQHBhcmFtIHtQYXlsb2FkVHlwZX0gdHlwZSAtIFR5cGUgb2YgdGhlIHBheWxvYWRcbiAgICogQHBhcmFtIHtib29sZWFufSBbdHJpbT1mYWxzZV0gLSBXaGV0aGVyIHRvIHRyaW0gdGhlIGRhdGFcbiAgICogQHJldHVybiB7UHJvbWlzZTx2b2lkPn0gUHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gZGF0YSBpcyByZXBvcnRlZFxuICAgKi9cbiAgcHJvdGVjdGVkIGFzeW5jIHJlcG9ydChcbiAgICByZWZlcmVuY2U6IHN0cmluZyxcbiAgICBkYXRhOiBzdHJpbmcgfCBudW1iZXIgfCBvYmplY3QgfCBCdWZmZXIsXG4gICAgdHlwZTogUGF5bG9hZFR5cGUsXG4gICAgdHJpbTogYm9vbGVhbiA9IGZhbHNlXG4gICkge1xuICAgIHRyeSB7XG4gICAgICBsZXQgYXR0YWNoRnVuY3Rpb246XG4gICAgICAgIHwgdHlwZW9mIHRoaXMucmVwb3J0TWVzc2FnZVxuICAgICAgICB8IHR5cGVvZiB0aGlzLnJlcG9ydEF0dGFjaG1lbnQgPSB0aGlzLnJlcG9ydE1lc3NhZ2UuYmluZCh0aGlzKTtcbiAgICAgIGxldCBleHRlbnNpb246IFwiLnBuZ1wiIHwgXCIudHh0XCIgfCBcIi5tZFwiIHwgXCIuanNvblwiID0gXCIudHh0XCI7XG5cbiAgICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgICBjYXNlIFwiaW1hZ2VcIjpcbiAgICAgICAgICBkYXRhID0gQnVmZmVyLmZyb20oZGF0YSBhcyBCdWZmZXIpO1xuICAgICAgICAgIGV4dGVuc2lvbiA9IFwiLnBuZ1wiO1xuICAgICAgICAgIGF0dGFjaEZ1bmN0aW9uID0gdGhpcy5yZXBvcnRBdHRhY2htZW50LmJpbmQodGhpcyk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJqc29uXCI6XG4gICAgICAgICAgaWYgKHRyaW0pIHtcbiAgICAgICAgICAgIGlmICgoZGF0YSBhcyB7IHJlcXVlc3Q/OiB1bmtub3duIH0pLnJlcXVlc3QpXG4gICAgICAgICAgICAgIGRlbGV0ZSAoZGF0YSBhcyB7IHJlcXVlc3Q/OiB1bmtub3duIH0pW1wicmVxdWVzdFwiXTtcbiAgICAgICAgICAgIGlmICgoZGF0YSBhcyB7IGNvbmZpZz86IHVua25vd24gfSkuY29uZmlnKVxuICAgICAgICAgICAgICBkZWxldGUgKGRhdGEgYXMgeyBjb25maWc/OiB1bmtub3duIH0pW1wiY29uZmlnXCJdO1xuICAgICAgICAgIH1cbiAgICAgICAgICBkYXRhID0gSlNPTi5zdHJpbmdpZnkoZGF0YSwgbnVsbCwgMik7XG4gICAgICAgICAgZXh0ZW5zaW9uID0gXCIuanNvblwiO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwibWRcIjpcbiAgICAgICAgICBleHRlbnNpb24gPSBcIi5tZFwiO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwidGV4dFwiOlxuICAgICAgICAgIGV4dGVuc2lvbiA9IFwiLnR4dFwiO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIGNvbnNvbGUubG9nKGBVbnN1cHBvcnRlZCB0eXBlICR7dHlwZX0uIGFzc3VtaW5nIHRleHRgKTtcbiAgICAgIH1cbiAgICAgIHJlZmVyZW5jZSA9IHJlZmVyZW5jZS5pbmNsdWRlcyhcIlxcblwiKVxuICAgICAgICA/IHJlZmVyZW5jZVxuICAgICAgICA6IGAke3JlZmVyZW5jZX0ke2V4dGVuc2lvbn1gO1xuICAgICAgYXdhaXQgYXR0YWNoRnVuY3Rpb24ocmVmZXJlbmNlLCBkYXRhIGFzIEJ1ZmZlciB8IHN0cmluZyk7XG4gICAgfSBjYXRjaCAoZTogdW5rbm93bikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgQ291bGQgbm90IHN0b3JlIGF0dGFjaCBhcnRpZmFjdCAke3JlZmVyZW5jZX0gdW5kZXIgdG8gdGVzdCByZXBvcnQgJHt0aGlzLnRlc3RDYXNlfSAtICR7ZX1gXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gUmVwb3J0cyBkYXRhIHdpdGggYSBzcGVjaWZpZWQgdHlwZVxuICAgKiBAc3VtbWFyeSBXcmFwcGVyIG1ldGhvZCBmb3IgcmVwb3J0aW5nIHZhcmlvdXMgdHlwZXMgb2YgZGF0YVxuICAgKiBAcGFyYW0ge3N0cmluZ30gcmVmZXJlbmNlIC0gUmVmZXJlbmNlIGlkZW50aWZpZXIgZm9yIHRoZSBkYXRhXG4gICAqIEBwYXJhbSB7c3RyaW5nIHwgbnVtYmVyIHwgb2JqZWN0fSBkYXRhIC0gRGF0YSB0byBiZSByZXBvcnRlZFxuICAgKiBAcGFyYW0ge1BheWxvYWRUeXBlfSBbdHlwZT1cImpzb25cIl0gLSBUeXBlIG9mIHRoZSBwYXlsb2FkXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gW3RyaW09ZmFsc2VdIC0gV2hldGhlciB0byB0cmltIHRoZSBkYXRhXG4gICAqIEByZXR1cm4ge1Byb21pc2U8dm9pZD59IFByb21pc2UgdGhhdCByZXNvbHZlcyB3aGVuIGRhdGEgaXMgcmVwb3J0ZWRcbiAgICovXG4gIGFzeW5jIHJlcG9ydERhdGEoXG4gICAgcmVmZXJlbmNlOiBzdHJpbmcsXG4gICAgZGF0YTogc3RyaW5nIHwgbnVtYmVyIHwgb2JqZWN0LFxuICAgIHR5cGU6IFBheWxvYWRUeXBlID0gXCJqc29uXCIsXG4gICAgdHJpbSA9IGZhbHNlXG4gICkge1xuICAgIHJldHVybiB0aGlzLnJlcG9ydChyZWZlcmVuY2UsIGRhdGEsIHR5cGUsIHRyaW0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBSZXBvcnRzIGEgSlNPTiBvYmplY3RcbiAgICogQHN1bW1hcnkgQ29udmVuaWVuY2UgbWV0aG9kIGZvciByZXBvcnRpbmcgSlNPTiBvYmplY3RzXG4gICAqIEBwYXJhbSB7c3RyaW5nfSByZWZlcmVuY2UgLSBSZWZlcmVuY2UgaWRlbnRpZmllciBmb3IgdGhlIG9iamVjdFxuICAgKiBAcGFyYW0ge29iamVjdH0ganNvbiAtIEpTT04gb2JqZWN0IHRvIGJlIHJlcG9ydGVkXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gW3RyaW09ZmFsc2VdIC0gV2hldGhlciB0byB0cmltIHRoZSBvYmplY3RcbiAgICogQHJldHVybiB7UHJvbWlzZTx2b2lkPn0gUHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gb2JqZWN0IGlzIHJlcG9ydGVkXG4gICAqL1xuICBhc3luYyByZXBvcnRPYmplY3QocmVmZXJlbmNlOiBzdHJpbmcsIGpzb246IG9iamVjdCwgdHJpbSA9IGZhbHNlKSB7XG4gICAgcmV0dXJuIHRoaXMucmVwb3J0KHJlZmVyZW5jZSwganNvbiwgXCJqc29uXCIsIHRyaW0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBSZXBvcnRzIGEgdGFibGUgaW4gbWFya2Rvd24gZm9ybWF0XG4gICAqIEBzdW1tYXJ5IENvbnZlcnRzIGFuZCBzdG9yZXMgYSB0YWJsZSBkZWZpbml0aW9uIGluIG1hcmtkb3duIGZvcm1hdFxuICAgKiBAcGFyYW0ge3N0cmluZ30gcmVmZXJlbmNlIC0gUmVmZXJlbmNlIGlkZW50aWZpZXIgZm9yIHRoZSB0YWJsZVxuICAgKiBAcGFyYW0ge01kVGFibGVEZWZpbml0aW9ufSB0YWJsZURlZiAtIFRhYmxlIGRlZmluaXRpb24gb2JqZWN0XG4gICAqIEByZXR1cm4ge1Byb21pc2U8dm9pZD59IFByb21pc2UgdGhhdCByZXNvbHZlcyB3aGVuIHRhYmxlIGlzIHJlcG9ydGVkXG4gICAqL1xuICBhc3luYyByZXBvcnRUYWJsZShyZWZlcmVuY2U6IHN0cmluZywgdGFibGVEZWY6IE1kVGFibGVEZWZpbml0aW9uKSB7XG4gICAgdGhpcy5kZXBzID0gYXdhaXQgaW5zdGFsbElmTm90QXZhaWxhYmxlKFtkZXBlbmRlbmNpZXNbMV1dLCB0aGlzLmRlcHMpO1xuICAgIGxldCB0eHQ6IHN0cmluZztcbiAgICB0cnkge1xuICAgICAgY29uc3QganNvbjJtZCA9IGF3YWl0IG5vcm1hbGl6ZUltcG9ydChpbXBvcnQoYCR7ZGVwZW5kZW5jaWVzWzFdfWApKTtcbiAgICAgIHR4dCA9IGpzb24ybWQodGFibGVEZWYpO1xuICAgIH0gY2F0Y2ggKGU6IHVua25vd24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQ291bGQgbm90IGNvbnZlcnQgSlNPTiB0byBNYXJrZG93biAtICR7ZX1gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5yZXBvcnQocmVmZXJlbmNlLCB0eHQsIFwibWRcIik7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFJlcG9ydHMgYSBncmFwaCB1c2luZyBDaGFydC5qc1xuICAgKiBAc3VtbWFyeSBHZW5lcmF0ZXMgYW5kIHN0b3JlcyBhIGdyYXBoIHZpc3VhbGl6YXRpb25cbiAgICogQHBhcmFtIHtzdHJpbmd9IHJlZmVyZW5jZSAtIFJlZmVyZW5jZSBpZGVudGlmaWVyIGZvciB0aGUgZ3JhcGhcbiAgICogQHBhcmFtIHthbnl9IGNvbmZpZyAtIENoYXJ0LmpzIGNvbmZpZ3VyYXRpb24gb2JqZWN0XG4gICAqIEByZXR1cm4ge1Byb21pc2U8dm9pZD59IFByb21pc2UgdGhhdCByZXNvbHZlcyB3aGVuIGdyYXBoIGlzIHJlcG9ydGVkXG4gICAqL1xuICBhc3luYyByZXBvcnRHcmFwaChyZWZlcmVuY2U6IHN0cmluZywgY29uZmlnOiBhbnkpIHtcbiAgICB0aGlzLmRlcHMgPSBhd2FpdCBpbnN0YWxsSWZOb3RBdmFpbGFibGUoW2RlcGVuZGVuY2llc1syXV0sIHRoaXMuZGVwcyk7XG4gICAgY29uc3QgeyBDaGFydEpTTm9kZUNhbnZhcyB9ID0gYXdhaXQgbm9ybWFsaXplSW1wb3J0KFxuICAgICAgaW1wb3J0KGRlcGVuZGVuY2llc1syXSlcbiAgICApO1xuXG4gICAgY29uc3Qgd2lkdGggPSA2MDA7IC8vcHhcbiAgICBjb25zdCBoZWlnaHQgPSA4MDA7IC8vcHhcbiAgICBjb25zdCBiYWNrZ3JvdW5kQ29sb3VyID0gXCJ3aGl0ZVwiOyAvLyBVc2VzIGh0dHBzOi8vd3d3Lnczc2Nob29scy5jb20vdGFncy9jYW52YXNfZmlsbHN0eWxlLmFzcFxuICAgIGNvbnN0IGNoYXJ0SlNOb2RlQ2FudmFzID0gbmV3IENoYXJ0SlNOb2RlQ2FudmFzKHtcbiAgICAgIHdpZHRoLFxuICAgICAgaGVpZ2h0LFxuICAgICAgYmFja2dyb3VuZENvbG91cixcbiAgICB9KTtcblxuICAgIGNvbnN0IGltYWdlID0gYXdhaXQgY2hhcnRKU05vZGVDYW52YXMucmVuZGVyVG9CdWZmZXIoY29uZmlnKTtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5yZXBvcnRJbWFnZShyZWZlcmVuY2UsIGltYWdlKTtcbiAgfVxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFJlcG9ydHMgYW4gaW1hZ2UgdG8gdGhlIHRlc3QgcmVwb3J0XG4gICAqIEBzdW1tYXJ5IFN0b3JlcyBhbiBpbWFnZSBidWZmZXIgaW4gdGhlIHRlc3QgcmVwb3J0XG4gICAqIEBwYXJhbSB7c3RyaW5nfSByZWZlcmVuY2UgLSBSZWZlcmVuY2UgaWRlbnRpZmllciBmb3IgdGhlIGltYWdlXG4gICAqIEBwYXJhbSB7QnVmZmVyfSBidWZmZXIgLSBJbWFnZSBkYXRhIGJ1ZmZlclxuICAgKiBAcmV0dXJuIHtQcm9taXNlPHZvaWQ+fSBQcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiBpbWFnZSBpcyByZXBvcnRlZFxuICAgKi9cbiAgYXN5bmMgcmVwb3J0SW1hZ2UocmVmZXJlbmNlOiBzdHJpbmcsIGJ1ZmZlcjogQnVmZmVyKSB7XG4gICAgcmV0dXJuIHRoaXMucmVwb3J0KHJlZmVyZW5jZSwgYnVmZmVyLCBcImltYWdlXCIpO1xuICB9XG59XG4iXX0=
|
package/lib/esm/utils/text.d.ts
CHANGED
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
*
|
|
12
12
|
* @function padEnd
|
|
13
13
|
*
|
|
14
|
-
* @memberOf module:
|
|
14
|
+
* @memberOf module:utils
|
|
15
15
|
*/
|
|
16
16
|
export declare function padEnd(str: string, length: number, char?: string): string;
|
|
17
17
|
/**
|
|
@@ -36,9 +36,23 @@ export declare function padEnd(str: string, length: number, char?: string): stri
|
|
|
36
36
|
* String.replace->>patchString: Return replaced string
|
|
37
37
|
* patchString-->>Caller: Return patched string
|
|
38
38
|
*
|
|
39
|
-
* @memberOf module:
|
|
39
|
+
* @memberOf module:utils
|
|
40
40
|
*/
|
|
41
41
|
export declare function patchPlaceholders(input: string, values: Record<string, number | string>): string;
|
|
42
|
+
/**
|
|
43
|
+
* @description Replaces occurrences of keys with their corresponding values in a string.
|
|
44
|
+
* @summary Iterates through a set of key-value pairs and replaces all occurrences of each key
|
|
45
|
+
* in the input string with its corresponding value. Supports regular expression flags for customized replacement.
|
|
46
|
+
*
|
|
47
|
+
* @param {string} input - The input string in which replacements will be made.
|
|
48
|
+
* @param {Record<string, number | string>} values - An object containing key-value pairs for replacement.
|
|
49
|
+
* @param {string} [flags="g"] - Regular expression flags to control the replacement behavior.
|
|
50
|
+
* @return {string} The string with all specified replacements applied.
|
|
51
|
+
*
|
|
52
|
+
* @function patchString
|
|
53
|
+
*
|
|
54
|
+
* @memberOf module:utils
|
|
55
|
+
*/
|
|
42
56
|
export declare function patchString(input: string, values: Record<string, number | string>, flags?: string): string;
|
|
43
57
|
/**
|
|
44
58
|
* @description Converts a string to camelCase.
|
|
@@ -50,7 +64,7 @@ export declare function patchString(input: string, values: Record<string, number
|
|
|
50
64
|
*
|
|
51
65
|
* @function toCamelCase
|
|
52
66
|
*
|
|
53
|
-
* @memberOf module:
|
|
67
|
+
* @memberOf module:utils
|
|
54
68
|
*/
|
|
55
69
|
export declare function toCamelCase(text: string): string;
|
|
56
70
|
/**
|
|
@@ -63,7 +77,7 @@ export declare function toCamelCase(text: string): string;
|
|
|
63
77
|
*
|
|
64
78
|
* @function toENVFormat
|
|
65
79
|
*
|
|
66
|
-
* @memberOf module:
|
|
80
|
+
* @memberOf module:utils
|
|
67
81
|
*/
|
|
68
82
|
export declare function toENVFormat(text: string): string;
|
|
69
83
|
/**
|
|
@@ -75,7 +89,7 @@ export declare function toENVFormat(text: string): string;
|
|
|
75
89
|
*
|
|
76
90
|
* @function toSnakeCase
|
|
77
91
|
*
|
|
78
|
-
* @memberOf module:
|
|
92
|
+
* @memberOf module:utils
|
|
79
93
|
*/
|
|
80
94
|
export declare function toSnakeCase(text: string): string;
|
|
81
95
|
/**
|
|
@@ -87,7 +101,7 @@ export declare function toSnakeCase(text: string): string;
|
|
|
87
101
|
*
|
|
88
102
|
* @function toKebabCase
|
|
89
103
|
*
|
|
90
|
-
* @memberOf module:
|
|
104
|
+
* @memberOf module:utils
|
|
91
105
|
*/
|
|
92
106
|
export declare function toKebabCase(text: string): string;
|
|
93
107
|
/**
|
|
@@ -100,7 +114,19 @@ export declare function toKebabCase(text: string): string;
|
|
|
100
114
|
*
|
|
101
115
|
* @function toPascalCase
|
|
102
116
|
*
|
|
103
|
-
* @memberOf module:
|
|
117
|
+
* @memberOf module:utils
|
|
104
118
|
*/
|
|
105
119
|
export declare function toPascalCase(text: string): string;
|
|
120
|
+
/**
|
|
121
|
+
* @description Escapes special characters in a string for use in a regular expression.
|
|
122
|
+
* @summary Adds backslashes before characters that have special meaning in regular expressions,
|
|
123
|
+
* allowing the string to be used as a literal match in a RegExp.
|
|
124
|
+
*
|
|
125
|
+
* @param {string} string - The string to escape for regular expression use.
|
|
126
|
+
* @return {string} The escaped string safe for use in regular expressions.
|
|
127
|
+
*
|
|
128
|
+
* @function escapeRegExp
|
|
129
|
+
*
|
|
130
|
+
* @memberOf module:utils
|
|
131
|
+
*/
|
|
106
132
|
export declare function escapeRegExp(string: string): string;
|
package/lib/esm/utils/text.js
CHANGED
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
*
|
|
12
12
|
* @function padEnd
|
|
13
13
|
*
|
|
14
|
-
* @memberOf module:
|
|
14
|
+
* @memberOf module:utils
|
|
15
15
|
*/
|
|
16
16
|
export function padEnd(str, length, char = " ") {
|
|
17
17
|
if (char.length !== 1)
|
|
@@ -40,11 +40,25 @@ export function padEnd(str, length, char = " ") {
|
|
|
40
40
|
* String.replace->>patchString: Return replaced string
|
|
41
41
|
* patchString-->>Caller: Return patched string
|
|
42
42
|
*
|
|
43
|
-
* @memberOf module:
|
|
43
|
+
* @memberOf module:utils
|
|
44
44
|
*/
|
|
45
45
|
export function patchPlaceholders(input, values) {
|
|
46
46
|
return input.replace(/\$\{([a-zA-Z0-9_]+)\}/g, (match, variable) => values[variable] || match);
|
|
47
47
|
}
|
|
48
|
+
/**
|
|
49
|
+
* @description Replaces occurrences of keys with their corresponding values in a string.
|
|
50
|
+
* @summary Iterates through a set of key-value pairs and replaces all occurrences of each key
|
|
51
|
+
* in the input string with its corresponding value. Supports regular expression flags for customized replacement.
|
|
52
|
+
*
|
|
53
|
+
* @param {string} input - The input string in which replacements will be made.
|
|
54
|
+
* @param {Record<string, number | string>} values - An object containing key-value pairs for replacement.
|
|
55
|
+
* @param {string} [flags="g"] - Regular expression flags to control the replacement behavior.
|
|
56
|
+
* @return {string} The string with all specified replacements applied.
|
|
57
|
+
*
|
|
58
|
+
* @function patchString
|
|
59
|
+
*
|
|
60
|
+
* @memberOf module:utils
|
|
61
|
+
*/
|
|
48
62
|
export function patchString(input, values, flags = "g") {
|
|
49
63
|
Object.entries(values).forEach(([key, val]) => {
|
|
50
64
|
const regexp = new RegExp(escapeRegExp(key), flags);
|
|
@@ -62,7 +76,7 @@ export function patchString(input, values, flags = "g") {
|
|
|
62
76
|
*
|
|
63
77
|
* @function toCamelCase
|
|
64
78
|
*
|
|
65
|
-
* @memberOf module:
|
|
79
|
+
* @memberOf module:utils
|
|
66
80
|
*/
|
|
67
81
|
export function toCamelCase(text) {
|
|
68
82
|
return text
|
|
@@ -79,7 +93,7 @@ export function toCamelCase(text) {
|
|
|
79
93
|
*
|
|
80
94
|
* @function toENVFormat
|
|
81
95
|
*
|
|
82
|
-
* @memberOf module:
|
|
96
|
+
* @memberOf module:utils
|
|
83
97
|
*/
|
|
84
98
|
export function toENVFormat(text) {
|
|
85
99
|
return toSnakeCase(text).toUpperCase();
|
|
@@ -93,7 +107,7 @@ export function toENVFormat(text) {
|
|
|
93
107
|
*
|
|
94
108
|
* @function toSnakeCase
|
|
95
109
|
*
|
|
96
|
-
* @memberOf module:
|
|
110
|
+
* @memberOf module:utils
|
|
97
111
|
*/
|
|
98
112
|
export function toSnakeCase(text) {
|
|
99
113
|
return text
|
|
@@ -110,7 +124,7 @@ export function toSnakeCase(text) {
|
|
|
110
124
|
*
|
|
111
125
|
* @function toKebabCase
|
|
112
126
|
*
|
|
113
|
-
* @memberOf module:
|
|
127
|
+
* @memberOf module:utils
|
|
114
128
|
*/
|
|
115
129
|
export function toKebabCase(text) {
|
|
116
130
|
return text
|
|
@@ -128,14 +142,26 @@ export function toKebabCase(text) {
|
|
|
128
142
|
*
|
|
129
143
|
* @function toPascalCase
|
|
130
144
|
*
|
|
131
|
-
* @memberOf module:
|
|
145
|
+
* @memberOf module:utils
|
|
132
146
|
*/
|
|
133
147
|
export function toPascalCase(text) {
|
|
134
148
|
return text
|
|
135
149
|
.replace(/(?:^\w|[A-Z]|\b\w)/g, (word) => word.toUpperCase())
|
|
136
150
|
.replace(/\s+/g, "");
|
|
137
151
|
}
|
|
152
|
+
/**
|
|
153
|
+
* @description Escapes special characters in a string for use in a regular expression.
|
|
154
|
+
* @summary Adds backslashes before characters that have special meaning in regular expressions,
|
|
155
|
+
* allowing the string to be used as a literal match in a RegExp.
|
|
156
|
+
*
|
|
157
|
+
* @param {string} string - The string to escape for regular expression use.
|
|
158
|
+
* @return {string} The escaped string safe for use in regular expressions.
|
|
159
|
+
*
|
|
160
|
+
* @function escapeRegExp
|
|
161
|
+
*
|
|
162
|
+
* @memberOf module:utils
|
|
163
|
+
*/
|
|
138
164
|
export function escapeRegExp(string) {
|
|
139
165
|
return string.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"); // $& means the whole matched string
|
|
140
166
|
}
|
|
141
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy91dGlscy90ZXh0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBQ0gsTUFBTSxVQUFVLE1BQU0sQ0FDcEIsR0FBVyxFQUNYLE1BQWMsRUFDZCxPQUFlLEdBQUc7SUFFbEIsSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLENBQUM7UUFDbkIsTUFBTSxJQUFJLEtBQUssQ0FBQyxvREFBb0QsQ0FBQyxDQUFDO0lBQ3hFLE9BQU8sR0FBRyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDbEMsQ0FBQztBQUVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXVCRztBQUNILE1BQU0sVUFBVSxpQkFBaUIsQ0FDL0IsS0FBYSxFQUNiLE1BQXVDO0lBRXZDLE9BQU8sS0FBSyxDQUFDLE9BQU8sQ0FDbEIsd0JBQXdCLEVBQ3hCLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxFQUFFLENBQUUsTUFBTSxDQUFDLFFBQWtCLENBQVksSUFBSSxLQUFLLENBQ3JFLENBQUM7QUFDSixDQUFDO0FBRUQsTUFBTSxVQUFVLFdBQVcsQ0FDekIsS0FBYSxFQUNiLE1BQXVDLEVBQ3ZDLFFBQWdCLEdBQUc7SUFFbkIsTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsRUFBRSxFQUFFO1FBQzVDLE1BQU0sTUFBTSxHQUFHLElBQUksTUFBTSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUNwRCxLQUFLLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsR0FBYSxDQUFDLENBQUM7SUFDL0MsQ0FBQyxDQUFDLENBQUM7SUFDSCxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUM7QUFFRDs7Ozs7Ozs7Ozs7R0FXRztBQUNILE1BQU0sVUFBVSxXQUFXLENBQUMsSUFBWTtJQUN0QyxPQUFPLElBQUk7U0FDUixPQUFPLENBQUMscUJBQXFCLEVBQUUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FDOUMsS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQ3REO1NBQ0EsT0FBTyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQztBQUN6QixDQUFDO0FBRUQ7Ozs7Ozs7Ozs7O0dBV0c7QUFDSCxNQUFNLFVBQVUsV0FBVyxDQUFDLElBQVk7SUFDdEMsT0FBTyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7QUFDekMsQ0FBQztBQUVEOzs7Ozs7Ozs7O0dBVUc7QUFDSCxNQUFNLFVBQVUsV0FBVyxDQUFDLElBQVk7SUFDdEMsT0FBTyxJQUFJO1NBQ1IsT0FBTyxDQUFDLGlCQUFpQixFQUFFLE9BQU8sQ0FBQztTQUNuQyxPQUFPLENBQUMsU0FBUyxFQUFFLEdBQUcsQ0FBQztTQUN2QixXQUFXLEVBQUUsQ0FBQztBQUNuQixDQUFDO0FBRUQ7Ozs7Ozs7Ozs7R0FVRztBQUNILE1BQU0sVUFBVSxXQUFXLENBQUMsSUFBWTtJQUN0QyxPQUFPLElBQUk7U0FDUixPQUFPLENBQUMsaUJBQWlCLEVBQUUsT0FBTyxDQUFDO1NBQ25DLE9BQU8sQ0FBQyxTQUFTLEVBQUUsR0FBRyxDQUFDO1NBQ3ZCLFdBQVcsRUFBRSxDQUFDO0FBQ25CLENBQUM7QUFFRDs7Ozs7Ozs7Ozs7R0FXRztBQUNILE1BQU0sVUFBVSxZQUFZLENBQUMsSUFBWTtJQUN2QyxPQUFPLElBQUk7U0FDUixPQUFPLENBQUMscUJBQXFCLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUM1RCxPQUFPLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ3pCLENBQUM7QUFFRCxNQUFNLFVBQVUsWUFBWSxDQUFDLE1BQWM7SUFDekMsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLHFCQUFxQixFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsb0NBQW9DO0FBQzVGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBkZXNjcmlwdGlvbiBQYWRzIHRoZSBlbmQgb2YgYSBzdHJpbmcgd2l0aCBhIHNwZWNpZmllZCBjaGFyYWN0ZXIuXG4gKiBAc3VtbWFyeSBFeHRlbmRzIHRoZSBpbnB1dCBzdHJpbmcgdG8gYSBzcGVjaWZpZWQgbGVuZ3RoIGJ5IGFkZGluZyBhIHBhZGRpbmcgY2hhcmFjdGVyIHRvIHRoZSBlbmQuXG4gKiBJZiB0aGUgaW5wdXQgc3RyaW5nIGlzIGFscmVhZHkgbG9uZ2VyIHRoYW4gdGhlIHNwZWNpZmllZCBsZW5ndGgsIGl0IGlzIHJldHVybmVkIHVuY2hhbmdlZC5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gc3RyIC0gVGhlIGlucHV0IHN0cmluZyB0byBiZSBwYWRkZWQuXG4gKiBAcGFyYW0ge251bWJlcn0gbGVuZ3RoIC0gVGhlIGRlc2lyZWQgdG90YWwgbGVuZ3RoIG9mIHRoZSByZXN1bHRpbmcgc3RyaW5nLlxuICogQHBhcmFtIHtzdHJpbmd9IFtjaGFyPVwiIFwiXSAtIFRoZSBjaGFyYWN0ZXIgdG8gdXNlIGZvciBwYWRkaW5nLiBEZWZhdWx0cyB0byBhIHNwYWNlLlxuICogQHJldHVybiB7c3RyaW5nfSBUaGUgcGFkZGVkIHN0cmluZy5cbiAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGUgcGFkZGluZyBjaGFyYWN0ZXIgaXMgbm90IGV4YWN0bHkgb25lIGNoYXJhY3RlciBsb25nLlxuICpcbiAqIEBmdW5jdGlvbiBwYWRFbmRcbiAqXG4gKiBAbWVtYmVyT2YgbW9kdWxlOlRleHRVdGlsc1xuICovXG5leHBvcnQgZnVuY3Rpb24gcGFkRW5kKFxuICBzdHI6IHN0cmluZyxcbiAgbGVuZ3RoOiBudW1iZXIsXG4gIGNoYXI6IHN0cmluZyA9IFwiIFwiXG4pOiBzdHJpbmcge1xuICBpZiAoY2hhci5sZW5ndGggIT09IDEpXG4gICAgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBjaGFyYWN0ZXIgbGVuZ3RoIGZvciBwYWRkaW5nLiBtdXN0IGJlIG9uZSFcIik7XG4gIHJldHVybiBzdHIucGFkRW5kKGxlbmd0aCwgY2hhcik7XG59XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIFJlcGxhY2VzIHBsYWNlaG9sZGVycyBpbiBhIHN0cmluZyB3aXRoIHByb3ZpZGVkIHZhbHVlcy5cbiAqIEBzdW1tYXJ5IEludGVycG9sYXRlcyBhIHN0cmluZyBieSByZXBsYWNpbmcgcGxhY2Vob2xkZXJzIG9mIHRoZSBmb3JtICR7dmFyaWFibGVOYW1lfVxuICogd2l0aCBjb3JyZXNwb25kaW5nIHZhbHVlcyBmcm9tIHRoZSBwcm92aWRlZCBvYmplY3QuIElmIGEgcGxhY2Vob2xkZXIgZG9lc24ndCBoYXZlXG4gKiBhIGNvcnJlc3BvbmRpbmcgdmFsdWUsIGl0IGlzIGxlZnQgdW5jaGFuZ2VkIGluIHRoZSBzdHJpbmcuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGlucHV0IC0gVGhlIGlucHV0IHN0cmluZyBjb250YWluaW5nIHBsYWNlaG9sZGVycyB0byBiZSByZXBsYWNlZC5cbiAqIEBwYXJhbSB7UmVjb3JkPHN0cmluZywgbnVtYmVyIHwgc3RyaW5nPn0gdmFsdWVzIC0gQW4gb2JqZWN0IGNvbnRhaW5pbmcga2V5LXZhbHVlIHBhaXJzIGZvciByZXBsYWNlbWVudC5cbiAqIEByZXR1cm4ge3N0cmluZ30gVGhlIGludGVycG9sYXRlZCBzdHJpbmcgd2l0aCBwbGFjZWhvbGRlcnMgcmVwbGFjZWQgYnkgdGhlaXIgY29ycmVzcG9uZGluZyB2YWx1ZXMuXG4gKlxuICogQGZ1bmN0aW9uIHBhdGNoUGxhY2Vob2xkZXJzXG4gKlxuICogQG1lcm1haWRcbiAqIHNlcXVlbmNlRGlhZ3JhbVxuICogICBwYXJ0aWNpcGFudCBDYWxsZXJcbiAqICAgcGFydGljaXBhbnQgcGF0Y2hTdHJpbmdcbiAqICAgcGFydGljaXBhbnQgU3RyaW5nLnJlcGxhY2VcbiAqICAgQ2FsbGVyLT4+cGF0Y2hTdHJpbmc6IENhbGwgd2l0aCBpbnB1dCBhbmQgdmFsdWVzXG4gKiAgIHBhdGNoU3RyaW5nLT4+U3RyaW5nLnJlcGxhY2U6IENhbGwgd2l0aCByZWdleCBhbmQgcmVwbGFjZW1lbnQgZnVuY3Rpb25cbiAqICAgU3RyaW5nLnJlcGxhY2UtPj5wYXRjaFN0cmluZzogUmV0dXJuIHJlcGxhY2VkIHN0cmluZ1xuICogICBwYXRjaFN0cmluZy0tPj5DYWxsZXI6IFJldHVybiBwYXRjaGVkIHN0cmluZ1xuICpcbiAqIEBtZW1iZXJPZiBtb2R1bGU6VGV4dFV0aWxzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXRjaFBsYWNlaG9sZGVycyhcbiAgaW5wdXQ6IHN0cmluZyxcbiAgdmFsdWVzOiBSZWNvcmQ8c3RyaW5nLCBudW1iZXIgfCBzdHJpbmc+XG4pOiBzdHJpbmcge1xuICByZXR1cm4gaW5wdXQucmVwbGFjZShcbiAgICAvXFwkXFx7KFthLXpBLVowLTlfXSspXFx9L2csXG4gICAgKG1hdGNoLCB2YXJpYWJsZSkgPT4gKHZhbHVlc1t2YXJpYWJsZSBhcyBzdHJpbmddIGFzIHN0cmluZykgfHwgbWF0Y2hcbiAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhdGNoU3RyaW5nKFxuICBpbnB1dDogc3RyaW5nLFxuICB2YWx1ZXM6IFJlY29yZDxzdHJpbmcsIG51bWJlciB8IHN0cmluZz4sXG4gIGZsYWdzOiBzdHJpbmcgPSBcImdcIlxuKTogc3RyaW5nIHtcbiAgT2JqZWN0LmVudHJpZXModmFsdWVzKS5mb3JFYWNoKChba2V5LCB2YWxdKSA9PiB7XG4gICAgY29uc3QgcmVnZXhwID0gbmV3IFJlZ0V4cChlc2NhcGVSZWdFeHAoa2V5KSwgZmxhZ3MpO1xuICAgIGlucHV0ID0gaW5wdXQucmVwbGFjZShyZWdleHAsIHZhbCBhcyBzdHJpbmcpO1xuICB9KTtcbiAgcmV0dXJuIGlucHV0O1xufVxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBDb252ZXJ0cyBhIHN0cmluZyB0byBjYW1lbENhc2UuXG4gKiBAc3VtbWFyeSBUcmFuc2Zvcm1zIHRoZSBpbnB1dCBzdHJpbmcgaW50byBjYW1lbENhc2UgZm9ybWF0LCB3aGVyZSB3b3JkcyBhcmUgam9pbmVkIHdpdGhvdXQgc3BhY2VzXG4gKiBhbmQgZWFjaCB3b3JkIGFmdGVyIHRoZSBmaXJzdCBzdGFydHMgd2l0aCBhIGNhcGl0YWwgbGV0dGVyLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSB0ZXh0IC0gVGhlIGlucHV0IHN0cmluZyB0byBiZSBjb252ZXJ0ZWQuXG4gKiBAcmV0dXJuIHtzdHJpbmd9IFRoZSBpbnB1dCBzdHJpbmcgY29udmVydGVkIHRvIGNhbWVsQ2FzZS5cbiAqXG4gKiBAZnVuY3Rpb24gdG9DYW1lbENhc2VcbiAqXG4gKiBAbWVtYmVyT2YgbW9kdWxlOlRleHRVdGlsc1xuICovXG5leHBvcnQgZnVuY3Rpb24gdG9DYW1lbENhc2UodGV4dDogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHRleHRcbiAgICAucmVwbGFjZSgvKD86Xlxcd3xbQS1aXXxcXGJcXHcpL2csICh3b3JkLCBpbmRleCkgPT5cbiAgICAgIGluZGV4ID09PSAwID8gd29yZC50b0xvd2VyQ2FzZSgpIDogd29yZC50b1VwcGVyQ2FzZSgpXG4gICAgKVxuICAgIC5yZXBsYWNlKC9cXHMrL2csIFwiXCIpO1xufVxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBDb252ZXJ0cyBhIHN0cmluZyB0byBFTlZJUk9OTUVOVF9WQVJJQUJMRSBmb3JtYXQuXG4gKiBAc3VtbWFyeSBUcmFuc2Zvcm1zIHRoZSBpbnB1dCBzdHJpbmcgaW50byB1cHBlcmNhc2Ugd2l0aCB3b3JkcyBzZXBhcmF0ZWQgYnkgdW5kZXJzY29yZXMsXG4gKiB0eXBpY2FsbHkgdXNlZCBmb3IgZW52aXJvbm1lbnQgdmFyaWFibGUgbmFtZXMuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHRleHQgLSBUaGUgaW5wdXQgc3RyaW5nIHRvIGJlIGNvbnZlcnRlZC5cbiAqIEByZXR1cm4ge3N0cmluZ30gVGhlIGlucHV0IHN0cmluZyBjb252ZXJ0ZWQgdG8gRU5WSVJPTk1FTlRfVkFSSUFCTEUgZm9ybWF0LlxuICpcbiAqIEBmdW5jdGlvbiB0b0VOVkZvcm1hdFxuICpcbiAqIEBtZW1iZXJPZiBtb2R1bGU6VGV4dFV0aWxzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0VOVkZvcm1hdCh0ZXh0OiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gdG9TbmFrZUNhc2UodGV4dCkudG9VcHBlckNhc2UoKTtcbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gQ29udmVydHMgYSBzdHJpbmcgdG8gc25ha2VfY2FzZS5cbiAqIEBzdW1tYXJ5IFRyYW5zZm9ybXMgdGhlIGlucHV0IHN0cmluZyBpbnRvIGxvd2VyY2FzZSB3aXRoIHdvcmRzIHNlcGFyYXRlZCBieSB1bmRlcnNjb3Jlcy5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gdGV4dCAtIFRoZSBpbnB1dCBzdHJpbmcgdG8gYmUgY29udmVydGVkLlxuICogQHJldHVybiB7c3RyaW5nfSBUaGUgaW5wdXQgc3RyaW5nIGNvbnZlcnRlZCB0byBzbmFrZV9jYXNlLlxuICpcbiAqIEBmdW5jdGlvbiB0b1NuYWtlQ2FzZVxuICpcbiAqIEBtZW1iZXJPZiBtb2R1bGU6VGV4dFV0aWxzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b1NuYWtlQ2FzZSh0ZXh0OiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gdGV4dFxuICAgIC5yZXBsYWNlKC8oW2Etel0pKFtBLVpdKS9nLCBcIiQxXyQyXCIpXG4gICAgLnJlcGxhY2UoL1tcXHMtXSsvZywgXCJfXCIpXG4gICAgLnRvTG93ZXJDYXNlKCk7XG59XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIENvbnZlcnRzIGEgc3RyaW5nIHRvIGtlYmFiLWNhc2UuXG4gKiBAc3VtbWFyeSBUcmFuc2Zvcm1zIHRoZSBpbnB1dCBzdHJpbmcgaW50byBsb3dlcmNhc2Ugd2l0aCB3b3JkcyBzZXBhcmF0ZWQgYnkgaHlwaGVucy5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gdGV4dCAtIFRoZSBpbnB1dCBzdHJpbmcgdG8gYmUgY29udmVydGVkLlxuICogQHJldHVybiB7c3RyaW5nfSBUaGUgaW5wdXQgc3RyaW5nIGNvbnZlcnRlZCB0byBrZWJhYi1jYXNlLlxuICpcbiAqIEBmdW5jdGlvbiB0b0tlYmFiQ2FzZVxuICpcbiAqIEBtZW1iZXJPZiBtb2R1bGU6VGV4dFV0aWxzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0tlYmFiQ2FzZSh0ZXh0OiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gdGV4dFxuICAgIC5yZXBsYWNlKC8oW2Etel0pKFtBLVpdKS9nLCBcIiQxLSQyXCIpXG4gICAgLnJlcGxhY2UoL1tcXHNfXSsvZywgXCItXCIpXG4gICAgLnRvTG93ZXJDYXNlKCk7XG59XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIENvbnZlcnRzIGEgc3RyaW5nIHRvIFBhc2NhbENhc2UuXG4gKiBAc3VtbWFyeSBUcmFuc2Zvcm1zIHRoZSBpbnB1dCBzdHJpbmcgaW50byBQYXNjYWxDYXNlIGZvcm1hdCwgd2hlcmUgd29yZHMgYXJlIGpvaW5lZCB3aXRob3V0IHNwYWNlc1xuICogYW5kIGVhY2ggd29yZCBzdGFydHMgd2l0aCBhIGNhcGl0YWwgbGV0dGVyLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSB0ZXh0IC0gVGhlIGlucHV0IHN0cmluZyB0byBiZSBjb252ZXJ0ZWQuXG4gKiBAcmV0dXJuIHtzdHJpbmd9IFRoZSBpbnB1dCBzdHJpbmcgY29udmVydGVkIHRvIFBhc2NhbENhc2UuXG4gKlxuICogQGZ1bmN0aW9uIHRvUGFzY2FsQ2FzZVxuICpcbiAqIEBtZW1iZXJPZiBtb2R1bGU6VGV4dFV0aWxzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b1Bhc2NhbENhc2UodGV4dDogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHRleHRcbiAgICAucmVwbGFjZSgvKD86Xlxcd3xbQS1aXXxcXGJcXHcpL2csICh3b3JkKSA9PiB3b3JkLnRvVXBwZXJDYXNlKCkpXG4gICAgLnJlcGxhY2UoL1xccysvZywgXCJcIik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlc2NhcGVSZWdFeHAoc3RyaW5nOiBzdHJpbmcpIHtcbiAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKC9bLiorP14ke30oKXxbXFxdXFxcXF0vZywgXCJcXFxcJCZcIik7IC8vICQmIG1lYW5zIHRoZSB3aG9sZSBtYXRjaGVkIHN0cmluZ1xufVxuIl19
|
|
167
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy91dGlscy90ZXh0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBQ0gsTUFBTSxVQUFVLE1BQU0sQ0FDcEIsR0FBVyxFQUNYLE1BQWMsRUFDZCxPQUFlLEdBQUc7SUFFbEIsSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLENBQUM7UUFDbkIsTUFBTSxJQUFJLEtBQUssQ0FBQyxvREFBb0QsQ0FBQyxDQUFDO0lBQ3hFLE9BQU8sR0FBRyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDbEMsQ0FBQztBQUVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXVCRztBQUNILE1BQU0sVUFBVSxpQkFBaUIsQ0FDL0IsS0FBYSxFQUNiLE1BQXVDO0lBRXZDLE9BQU8sS0FBSyxDQUFDLE9BQU8sQ0FDbEIsd0JBQXdCLEVBQ3hCLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxFQUFFLENBQUUsTUFBTSxDQUFDLFFBQWtCLENBQVksSUFBSSxLQUFLLENBQ3JFLENBQUM7QUFDSixDQUFDO0FBRUQ7Ozs7Ozs7Ozs7Ozs7R0FhRztBQUNILE1BQU0sVUFBVSxXQUFXLENBQ3pCLEtBQWEsRUFDYixNQUF1QyxFQUN2QyxRQUFnQixHQUFHO0lBRW5CLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLEVBQUUsRUFBRTtRQUM1QyxNQUFNLE1BQU0sR0FBRyxJQUFJLE1BQU0sQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDcEQsS0FBSyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLEdBQWEsQ0FBQyxDQUFDO0lBQy9DLENBQUMsQ0FBQyxDQUFDO0lBQ0gsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDO0FBRUQ7Ozs7Ozs7Ozs7O0dBV0c7QUFDSCxNQUFNLFVBQVUsV0FBVyxDQUFDLElBQVk7SUFDdEMsT0FBTyxJQUFJO1NBQ1IsT0FBTyxDQUFDLHFCQUFxQixFQUFFLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFLENBQzlDLEtBQUssS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUN0RDtTQUNBLE9BQU8sQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDekIsQ0FBQztBQUVEOzs7Ozs7Ozs7OztHQVdHO0FBQ0gsTUFBTSxVQUFVLFdBQVcsQ0FBQyxJQUFZO0lBQ3RDLE9BQU8sV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO0FBQ3pDLENBQUM7QUFFRDs7Ozs7Ozs7OztHQVVHO0FBQ0gsTUFBTSxVQUFVLFdBQVcsQ0FBQyxJQUFZO0lBQ3RDLE9BQU8sSUFBSTtTQUNSLE9BQU8sQ0FBQyxpQkFBaUIsRUFBRSxPQUFPLENBQUM7U0FDbkMsT0FBTyxDQUFDLFNBQVMsRUFBRSxHQUFHLENBQUM7U0FDdkIsV0FBVyxFQUFFLENBQUM7QUFDbkIsQ0FBQztBQUVEOzs7Ozs7Ozs7O0dBVUc7QUFDSCxNQUFNLFVBQVUsV0FBVyxDQUFDLElBQVk7SUFDdEMsT0FBTyxJQUFJO1NBQ1IsT0FBTyxDQUFDLGlCQUFpQixFQUFFLE9BQU8sQ0FBQztTQUNuQyxPQUFPLENBQUMsU0FBUyxFQUFFLEdBQUcsQ0FBQztTQUN2QixXQUFXLEVBQUUsQ0FBQztBQUNuQixDQUFDO0FBRUQ7Ozs7Ozs7Ozs7O0dBV0c7QUFDSCxNQUFNLFVBQVUsWUFBWSxDQUFDLElBQVk7SUFDdkMsT0FBTyxJQUFJO1NBQ1IsT0FBTyxDQUFDLHFCQUFxQixFQUFFLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7U0FDNUQsT0FBTyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQztBQUN6QixDQUFDO0FBRUQ7Ozs7Ozs7Ozs7O0dBV0c7QUFDSCxNQUFNLFVBQVUsWUFBWSxDQUFDLE1BQWM7SUFDekMsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLHFCQUFxQixFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsb0NBQW9DO0FBQzVGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBkZXNjcmlwdGlvbiBQYWRzIHRoZSBlbmQgb2YgYSBzdHJpbmcgd2l0aCBhIHNwZWNpZmllZCBjaGFyYWN0ZXIuXG4gKiBAc3VtbWFyeSBFeHRlbmRzIHRoZSBpbnB1dCBzdHJpbmcgdG8gYSBzcGVjaWZpZWQgbGVuZ3RoIGJ5IGFkZGluZyBhIHBhZGRpbmcgY2hhcmFjdGVyIHRvIHRoZSBlbmQuXG4gKiBJZiB0aGUgaW5wdXQgc3RyaW5nIGlzIGFscmVhZHkgbG9uZ2VyIHRoYW4gdGhlIHNwZWNpZmllZCBsZW5ndGgsIGl0IGlzIHJldHVybmVkIHVuY2hhbmdlZC5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gc3RyIC0gVGhlIGlucHV0IHN0cmluZyB0byBiZSBwYWRkZWQuXG4gKiBAcGFyYW0ge251bWJlcn0gbGVuZ3RoIC0gVGhlIGRlc2lyZWQgdG90YWwgbGVuZ3RoIG9mIHRoZSByZXN1bHRpbmcgc3RyaW5nLlxuICogQHBhcmFtIHtzdHJpbmd9IFtjaGFyPVwiIFwiXSAtIFRoZSBjaGFyYWN0ZXIgdG8gdXNlIGZvciBwYWRkaW5nLiBEZWZhdWx0cyB0byBhIHNwYWNlLlxuICogQHJldHVybiB7c3RyaW5nfSBUaGUgcGFkZGVkIHN0cmluZy5cbiAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGUgcGFkZGluZyBjaGFyYWN0ZXIgaXMgbm90IGV4YWN0bHkgb25lIGNoYXJhY3RlciBsb25nLlxuICpcbiAqIEBmdW5jdGlvbiBwYWRFbmRcbiAqXG4gKiBAbWVtYmVyT2YgbW9kdWxlOnV0aWxzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYWRFbmQoXG4gIHN0cjogc3RyaW5nLFxuICBsZW5ndGg6IG51bWJlcixcbiAgY2hhcjogc3RyaW5nID0gXCIgXCJcbik6IHN0cmluZyB7XG4gIGlmIChjaGFyLmxlbmd0aCAhPT0gMSlcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIGNoYXJhY3RlciBsZW5ndGggZm9yIHBhZGRpbmcuIG11c3QgYmUgb25lIVwiKTtcbiAgcmV0dXJuIHN0ci5wYWRFbmQobGVuZ3RoLCBjaGFyKTtcbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gUmVwbGFjZXMgcGxhY2Vob2xkZXJzIGluIGEgc3RyaW5nIHdpdGggcHJvdmlkZWQgdmFsdWVzLlxuICogQHN1bW1hcnkgSW50ZXJwb2xhdGVzIGEgc3RyaW5nIGJ5IHJlcGxhY2luZyBwbGFjZWhvbGRlcnMgb2YgdGhlIGZvcm0gJHt2YXJpYWJsZU5hbWV9XG4gKiB3aXRoIGNvcnJlc3BvbmRpbmcgdmFsdWVzIGZyb20gdGhlIHByb3ZpZGVkIG9iamVjdC4gSWYgYSBwbGFjZWhvbGRlciBkb2Vzbid0IGhhdmVcbiAqIGEgY29ycmVzcG9uZGluZyB2YWx1ZSwgaXQgaXMgbGVmdCB1bmNoYW5nZWQgaW4gdGhlIHN0cmluZy5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gaW5wdXQgLSBUaGUgaW5wdXQgc3RyaW5nIGNvbnRhaW5pbmcgcGxhY2Vob2xkZXJzIHRvIGJlIHJlcGxhY2VkLlxuICogQHBhcmFtIHtSZWNvcmQ8c3RyaW5nLCBudW1iZXIgfCBzdHJpbmc+fSB2YWx1ZXMgLSBBbiBvYmplY3QgY29udGFpbmluZyBrZXktdmFsdWUgcGFpcnMgZm9yIHJlcGxhY2VtZW50LlxuICogQHJldHVybiB7c3RyaW5nfSBUaGUgaW50ZXJwb2xhdGVkIHN0cmluZyB3aXRoIHBsYWNlaG9sZGVycyByZXBsYWNlZCBieSB0aGVpciBjb3JyZXNwb25kaW5nIHZhbHVlcy5cbiAqXG4gKiBAZnVuY3Rpb24gcGF0Y2hQbGFjZWhvbGRlcnNcbiAqXG4gKiBAbWVybWFpZFxuICogc2VxdWVuY2VEaWFncmFtXG4gKiAgIHBhcnRpY2lwYW50IENhbGxlclxuICogICBwYXJ0aWNpcGFudCBwYXRjaFN0cmluZ1xuICogICBwYXJ0aWNpcGFudCBTdHJpbmcucmVwbGFjZVxuICogICBDYWxsZXItPj5wYXRjaFN0cmluZzogQ2FsbCB3aXRoIGlucHV0IGFuZCB2YWx1ZXNcbiAqICAgcGF0Y2hTdHJpbmctPj5TdHJpbmcucmVwbGFjZTogQ2FsbCB3aXRoIHJlZ2V4IGFuZCByZXBsYWNlbWVudCBmdW5jdGlvblxuICogICBTdHJpbmcucmVwbGFjZS0+PnBhdGNoU3RyaW5nOiBSZXR1cm4gcmVwbGFjZWQgc3RyaW5nXG4gKiAgIHBhdGNoU3RyaW5nLS0+PkNhbGxlcjogUmV0dXJuIHBhdGNoZWQgc3RyaW5nXG4gKlxuICogQG1lbWJlck9mIG1vZHVsZTp1dGlsc1xuICovXG5leHBvcnQgZnVuY3Rpb24gcGF0Y2hQbGFjZWhvbGRlcnMoXG4gIGlucHV0OiBzdHJpbmcsXG4gIHZhbHVlczogUmVjb3JkPHN0cmluZywgbnVtYmVyIHwgc3RyaW5nPlxuKTogc3RyaW5nIHtcbiAgcmV0dXJuIGlucHV0LnJlcGxhY2UoXG4gICAgL1xcJFxceyhbYS16QS1aMC05X10rKVxcfS9nLFxuICAgIChtYXRjaCwgdmFyaWFibGUpID0+ICh2YWx1ZXNbdmFyaWFibGUgYXMgc3RyaW5nXSBhcyBzdHJpbmcpIHx8IG1hdGNoXG4gICk7XG59XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIFJlcGxhY2VzIG9jY3VycmVuY2VzIG9mIGtleXMgd2l0aCB0aGVpciBjb3JyZXNwb25kaW5nIHZhbHVlcyBpbiBhIHN0cmluZy5cbiAqIEBzdW1tYXJ5IEl0ZXJhdGVzIHRocm91Z2ggYSBzZXQgb2Yga2V5LXZhbHVlIHBhaXJzIGFuZCByZXBsYWNlcyBhbGwgb2NjdXJyZW5jZXMgb2YgZWFjaCBrZXlcbiAqIGluIHRoZSBpbnB1dCBzdHJpbmcgd2l0aCBpdHMgY29ycmVzcG9uZGluZyB2YWx1ZS4gU3VwcG9ydHMgcmVndWxhciBleHByZXNzaW9uIGZsYWdzIGZvciBjdXN0b21pemVkIHJlcGxhY2VtZW50LlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBpbnB1dCAtIFRoZSBpbnB1dCBzdHJpbmcgaW4gd2hpY2ggcmVwbGFjZW1lbnRzIHdpbGwgYmUgbWFkZS5cbiAqIEBwYXJhbSB7UmVjb3JkPHN0cmluZywgbnVtYmVyIHwgc3RyaW5nPn0gdmFsdWVzIC0gQW4gb2JqZWN0IGNvbnRhaW5pbmcga2V5LXZhbHVlIHBhaXJzIGZvciByZXBsYWNlbWVudC5cbiAqIEBwYXJhbSB7c3RyaW5nfSBbZmxhZ3M9XCJnXCJdIC0gUmVndWxhciBleHByZXNzaW9uIGZsYWdzIHRvIGNvbnRyb2wgdGhlIHJlcGxhY2VtZW50IGJlaGF2aW9yLlxuICogQHJldHVybiB7c3RyaW5nfSBUaGUgc3RyaW5nIHdpdGggYWxsIHNwZWNpZmllZCByZXBsYWNlbWVudHMgYXBwbGllZC5cbiAqXG4gKiBAZnVuY3Rpb24gcGF0Y2hTdHJpbmdcbiAqXG4gKiBAbWVtYmVyT2YgbW9kdWxlOnV0aWxzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXRjaFN0cmluZyhcbiAgaW5wdXQ6IHN0cmluZyxcbiAgdmFsdWVzOiBSZWNvcmQ8c3RyaW5nLCBudW1iZXIgfCBzdHJpbmc+LFxuICBmbGFnczogc3RyaW5nID0gXCJnXCJcbik6IHN0cmluZyB7XG4gIE9iamVjdC5lbnRyaWVzKHZhbHVlcykuZm9yRWFjaCgoW2tleSwgdmFsXSkgPT4ge1xuICAgIGNvbnN0IHJlZ2V4cCA9IG5ldyBSZWdFeHAoZXNjYXBlUmVnRXhwKGtleSksIGZsYWdzKTtcbiAgICBpbnB1dCA9IGlucHV0LnJlcGxhY2UocmVnZXhwLCB2YWwgYXMgc3RyaW5nKTtcbiAgfSk7XG4gIHJldHVybiBpbnB1dDtcbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gQ29udmVydHMgYSBzdHJpbmcgdG8gY2FtZWxDYXNlLlxuICogQHN1bW1hcnkgVHJhbnNmb3JtcyB0aGUgaW5wdXQgc3RyaW5nIGludG8gY2FtZWxDYXNlIGZvcm1hdCwgd2hlcmUgd29yZHMgYXJlIGpvaW5lZCB3aXRob3V0IHNwYWNlc1xuICogYW5kIGVhY2ggd29yZCBhZnRlciB0aGUgZmlyc3Qgc3RhcnRzIHdpdGggYSBjYXBpdGFsIGxldHRlci5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gdGV4dCAtIFRoZSBpbnB1dCBzdHJpbmcgdG8gYmUgY29udmVydGVkLlxuICogQHJldHVybiB7c3RyaW5nfSBUaGUgaW5wdXQgc3RyaW5nIGNvbnZlcnRlZCB0byBjYW1lbENhc2UuXG4gKlxuICogQGZ1bmN0aW9uIHRvQ2FtZWxDYXNlXG4gKlxuICogQG1lbWJlck9mIG1vZHVsZTp1dGlsc1xuICovXG5leHBvcnQgZnVuY3Rpb24gdG9DYW1lbENhc2UodGV4dDogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHRleHRcbiAgICAucmVwbGFjZSgvKD86Xlxcd3xbQS1aXXxcXGJcXHcpL2csICh3b3JkLCBpbmRleCkgPT5cbiAgICAgIGluZGV4ID09PSAwID8gd29yZC50b0xvd2VyQ2FzZSgpIDogd29yZC50b1VwcGVyQ2FzZSgpXG4gICAgKVxuICAgIC5yZXBsYWNlKC9cXHMrL2csIFwiXCIpO1xufVxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBDb252ZXJ0cyBhIHN0cmluZyB0byBFTlZJUk9OTUVOVF9WQVJJQUJMRSBmb3JtYXQuXG4gKiBAc3VtbWFyeSBUcmFuc2Zvcm1zIHRoZSBpbnB1dCBzdHJpbmcgaW50byB1cHBlcmNhc2Ugd2l0aCB3b3JkcyBzZXBhcmF0ZWQgYnkgdW5kZXJzY29yZXMsXG4gKiB0eXBpY2FsbHkgdXNlZCBmb3IgZW52aXJvbm1lbnQgdmFyaWFibGUgbmFtZXMuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHRleHQgLSBUaGUgaW5wdXQgc3RyaW5nIHRvIGJlIGNvbnZlcnRlZC5cbiAqIEByZXR1cm4ge3N0cmluZ30gVGhlIGlucHV0IHN0cmluZyBjb252ZXJ0ZWQgdG8gRU5WSVJPTk1FTlRfVkFSSUFCTEUgZm9ybWF0LlxuICpcbiAqIEBmdW5jdGlvbiB0b0VOVkZvcm1hdFxuICpcbiAqIEBtZW1iZXJPZiBtb2R1bGU6dXRpbHNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvRU5WRm9ybWF0KHRleHQ6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiB0b1NuYWtlQ2FzZSh0ZXh0KS50b1VwcGVyQ2FzZSgpO1xufVxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBDb252ZXJ0cyBhIHN0cmluZyB0byBzbmFrZV9jYXNlLlxuICogQHN1bW1hcnkgVHJhbnNmb3JtcyB0aGUgaW5wdXQgc3RyaW5nIGludG8gbG93ZXJjYXNlIHdpdGggd29yZHMgc2VwYXJhdGVkIGJ5IHVuZGVyc2NvcmVzLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSB0ZXh0IC0gVGhlIGlucHV0IHN0cmluZyB0byBiZSBjb252ZXJ0ZWQuXG4gKiBAcmV0dXJuIHtzdHJpbmd9IFRoZSBpbnB1dCBzdHJpbmcgY29udmVydGVkIHRvIHNuYWtlX2Nhc2UuXG4gKlxuICogQGZ1bmN0aW9uIHRvU25ha2VDYXNlXG4gKlxuICogQG1lbWJlck9mIG1vZHVsZTp1dGlsc1xuICovXG5leHBvcnQgZnVuY3Rpb24gdG9TbmFrZUNhc2UodGV4dDogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHRleHRcbiAgICAucmVwbGFjZSgvKFthLXpdKShbQS1aXSkvZywgXCIkMV8kMlwiKVxuICAgIC5yZXBsYWNlKC9bXFxzLV0rL2csIFwiX1wiKVxuICAgIC50b0xvd2VyQ2FzZSgpO1xufVxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBDb252ZXJ0cyBhIHN0cmluZyB0byBrZWJhYi1jYXNlLlxuICogQHN1bW1hcnkgVHJhbnNmb3JtcyB0aGUgaW5wdXQgc3RyaW5nIGludG8gbG93ZXJjYXNlIHdpdGggd29yZHMgc2VwYXJhdGVkIGJ5IGh5cGhlbnMuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHRleHQgLSBUaGUgaW5wdXQgc3RyaW5nIHRvIGJlIGNvbnZlcnRlZC5cbiAqIEByZXR1cm4ge3N0cmluZ30gVGhlIGlucHV0IHN0cmluZyBjb252ZXJ0ZWQgdG8ga2ViYWItY2FzZS5cbiAqXG4gKiBAZnVuY3Rpb24gdG9LZWJhYkNhc2VcbiAqXG4gKiBAbWVtYmVyT2YgbW9kdWxlOnV0aWxzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0tlYmFiQ2FzZSh0ZXh0OiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gdGV4dFxuICAgIC5yZXBsYWNlKC8oW2Etel0pKFtBLVpdKS9nLCBcIiQxLSQyXCIpXG4gICAgLnJlcGxhY2UoL1tcXHNfXSsvZywgXCItXCIpXG4gICAgLnRvTG93ZXJDYXNlKCk7XG59XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIENvbnZlcnRzIGEgc3RyaW5nIHRvIFBhc2NhbENhc2UuXG4gKiBAc3VtbWFyeSBUcmFuc2Zvcm1zIHRoZSBpbnB1dCBzdHJpbmcgaW50byBQYXNjYWxDYXNlIGZvcm1hdCwgd2hlcmUgd29yZHMgYXJlIGpvaW5lZCB3aXRob3V0IHNwYWNlc1xuICogYW5kIGVhY2ggd29yZCBzdGFydHMgd2l0aCBhIGNhcGl0YWwgbGV0dGVyLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSB0ZXh0IC0gVGhlIGlucHV0IHN0cmluZyB0byBiZSBjb252ZXJ0ZWQuXG4gKiBAcmV0dXJuIHtzdHJpbmd9IFRoZSBpbnB1dCBzdHJpbmcgY29udmVydGVkIHRvIFBhc2NhbENhc2UuXG4gKlxuICogQGZ1bmN0aW9uIHRvUGFzY2FsQ2FzZVxuICpcbiAqIEBtZW1iZXJPZiBtb2R1bGU6dXRpbHNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvUGFzY2FsQ2FzZSh0ZXh0OiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gdGV4dFxuICAgIC5yZXBsYWNlKC8oPzpeXFx3fFtBLVpdfFxcYlxcdykvZywgKHdvcmQpID0+IHdvcmQudG9VcHBlckNhc2UoKSlcbiAgICAucmVwbGFjZSgvXFxzKy9nLCBcIlwiKTtcbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gRXNjYXBlcyBzcGVjaWFsIGNoYXJhY3RlcnMgaW4gYSBzdHJpbmcgZm9yIHVzZSBpbiBhIHJlZ3VsYXIgZXhwcmVzc2lvbi5cbiAqIEBzdW1tYXJ5IEFkZHMgYmFja3NsYXNoZXMgYmVmb3JlIGNoYXJhY3RlcnMgdGhhdCBoYXZlIHNwZWNpYWwgbWVhbmluZyBpbiByZWd1bGFyIGV4cHJlc3Npb25zLFxuICogYWxsb3dpbmcgdGhlIHN0cmluZyB0byBiZSB1c2VkIGFzIGEgbGl0ZXJhbCBtYXRjaCBpbiBhIFJlZ0V4cC5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nIC0gVGhlIHN0cmluZyB0byBlc2NhcGUgZm9yIHJlZ3VsYXIgZXhwcmVzc2lvbiB1c2UuXG4gKiBAcmV0dXJuIHtzdHJpbmd9IFRoZSBlc2NhcGVkIHN0cmluZyBzYWZlIGZvciB1c2UgaW4gcmVndWxhciBleHByZXNzaW9ucy5cbiAqXG4gKiBAZnVuY3Rpb24gZXNjYXBlUmVnRXhwXG4gKlxuICogQG1lbWJlck9mIG1vZHVsZTp1dGlsc1xuICovXG5leHBvcnQgZnVuY3Rpb24gZXNjYXBlUmVnRXhwKHN0cmluZzogc3RyaW5nKSB7XG4gIHJldHVybiBzdHJpbmcucmVwbGFjZSgvWy4qKz9eJHt9KCl8W1xcXVxcXFxdL2csIFwiXFxcXCQmXCIpOyAvLyAkJiBtZWFucyB0aGUgd2hvbGUgbWF0Y2hlZCBzdHJpbmdcbn1cbiJdfQ==
|
|
@@ -1 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @description Creates a promise that resolves after a specified time.
|
|
3
|
+
* @summary Utility function that pauses execution for a given number of milliseconds.
|
|
4
|
+
*
|
|
5
|
+
* @param {number} ms - The number of milliseconds to wait.
|
|
6
|
+
* @return {Promise<void>} A promise that resolves after the specified timeout.
|
|
7
|
+
*
|
|
8
|
+
* @function awaitTimeout
|
|
9
|
+
*
|
|
10
|
+
* @memberOf module:utils
|
|
11
|
+
*/
|
|
1
12
|
export declare function awaitTimeout(ms: number): Promise<void>;
|
package/lib/esm/utils/timeout.js
CHANGED
|
@@ -1,4 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @description Creates a promise that resolves after a specified time.
|
|
3
|
+
* @summary Utility function that pauses execution for a given number of milliseconds.
|
|
4
|
+
*
|
|
5
|
+
* @param {number} ms - The number of milliseconds to wait.
|
|
6
|
+
* @return {Promise<void>} A promise that resolves after the specified timeout.
|
|
7
|
+
*
|
|
8
|
+
* @function awaitTimeout
|
|
9
|
+
*
|
|
10
|
+
* @memberOf module:utils
|
|
11
|
+
*/
|
|
1
12
|
export async function awaitTimeout(ms) {
|
|
2
13
|
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
3
14
|
}
|
|
4
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
15
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZW91dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy91dGlscy90aW1lb3V0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7O0dBVUc7QUFDSCxNQUFNLENBQUMsS0FBSyxVQUFVLFlBQVksQ0FBQyxFQUFVO0lBQzNDLE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUMzRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAZGVzY3JpcHRpb24gQ3JlYXRlcyBhIHByb21pc2UgdGhhdCByZXNvbHZlcyBhZnRlciBhIHNwZWNpZmllZCB0aW1lLlxuICogQHN1bW1hcnkgVXRpbGl0eSBmdW5jdGlvbiB0aGF0IHBhdXNlcyBleGVjdXRpb24gZm9yIGEgZ2l2ZW4gbnVtYmVyIG9mIG1pbGxpc2Vjb25kcy5cbiAqXG4gKiBAcGFyYW0ge251bWJlcn0gbXMgLSBUaGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyB0byB3YWl0LlxuICogQHJldHVybiB7UHJvbWlzZTx2b2lkPn0gQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgYWZ0ZXIgdGhlIHNwZWNpZmllZCB0aW1lb3V0LlxuICpcbiAqIEBmdW5jdGlvbiBhd2FpdFRpbWVvdXRcbiAqXG4gKiBAbWVtYmVyT2YgbW9kdWxlOnV0aWxzXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBhd2FpdFRpbWVvdXQobXM6IG51bWJlcik6IFByb21pc2U8dm9pZD4ge1xuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgbXMpKTtcbn1cbiJdfQ==
|
package/lib/esm/utils/types.d.ts
CHANGED
|
@@ -8,7 +8,7 @@ import { Environment } from "./environment";
|
|
|
8
8
|
* @typedef {Object} PromiseExecutor
|
|
9
9
|
* @property {function(R): void} resolve - Function to resolve the promise.
|
|
10
10
|
* @property {function(E): void} reject - Function to reject the promise.
|
|
11
|
-
* @memberOf
|
|
11
|
+
* @memberOf module:utils
|
|
12
12
|
*/
|
|
13
13
|
export interface PromiseExecutor<R, E = Error> {
|
|
14
14
|
resolve: (value: R | PromiseLike<R>) => void;
|
|
@@ -24,7 +24,7 @@ export interface PromiseExecutor<R, E = Error> {
|
|
|
24
24
|
* @template R - The type of the resolved value, defaulting to void.
|
|
25
25
|
* @interface CommandResult
|
|
26
26
|
* @extends Promise<R>
|
|
27
|
-
* @memberOf
|
|
27
|
+
* @memberOf module:utils
|
|
28
28
|
*/
|
|
29
29
|
export interface CommandResult<R = void> {
|
|
30
30
|
promise: Promise<R>;
|
|
@@ -59,7 +59,27 @@ export interface CommandResult<R = void> {
|
|
|
59
59
|
*/
|
|
60
60
|
pipe: <E>(cb: (r: R) => E) => Promise<E>;
|
|
61
61
|
}
|
|
62
|
+
/**
|
|
63
|
+
* @description Factory type for creating Environment instances.
|
|
64
|
+
* @summary Defines a function type that creates and returns Environment instances.
|
|
65
|
+
*
|
|
66
|
+
* @template T - The type of object the Environment will accumulate.
|
|
67
|
+
* @template E - The specific Environment type to be created, extending Environment<T>.
|
|
68
|
+
* @typedef {function(...unknown[]): E} EnvironmentFactory
|
|
69
|
+
* @memberOf module:utils
|
|
70
|
+
*/
|
|
62
71
|
export type EnvironmentFactory<T extends object, E extends Environment<T>> = (...args: unknown[]) => E;
|
|
72
|
+
/**
|
|
73
|
+
* @description Map of project dependencies with detailed information.
|
|
74
|
+
* @summary Represents the structure of project dependencies categorized by type (production, development, peer).
|
|
75
|
+
* Each category contains an array of objects with name and version information.
|
|
76
|
+
*
|
|
77
|
+
* @typedef {Object} DependencyMap
|
|
78
|
+
* @property {Array<{name: string, version: string}>} prod - Production dependencies with name and version.
|
|
79
|
+
* @property {Array<{name: string, version: string}>} dev - Development dependencies with name and version.
|
|
80
|
+
* @property {Array<{name: string, version: string}>} peer - Peer dependencies with name and version.
|
|
81
|
+
* @memberOf module:utils
|
|
82
|
+
*/
|
|
63
83
|
export type DependencyMap = {
|
|
64
84
|
prod: {
|
|
65
85
|
name: string;
|
|
@@ -74,6 +94,17 @@ export type DependencyMap = {
|
|
|
74
94
|
version: string;
|
|
75
95
|
}[];
|
|
76
96
|
};
|
|
97
|
+
/**
|
|
98
|
+
* @description Simplified map of project dependencies.
|
|
99
|
+
* @summary Represents a simplified structure of project dependencies categorized by type.
|
|
100
|
+
* Each category contains an optional array of dependency names without version information.
|
|
101
|
+
*
|
|
102
|
+
* @typedef {Object} SimpleDependencyMap
|
|
103
|
+
* @property {string[]} [prod] - Optional array of production dependency names.
|
|
104
|
+
* @property {string[]} [dev] - Optional array of development dependency names.
|
|
105
|
+
* @property {string[]} [peer] - Optional array of peer dependency names.
|
|
106
|
+
* @memberOf module:utils
|
|
107
|
+
*/
|
|
77
108
|
export type SimpleDependencyMap = {
|
|
78
109
|
prod?: string[];
|
|
79
110
|
dev?: string[];
|
package/lib/esm/utils/types.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdXRpbHMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoaWxkUHJvY2Vzc1dpdGhvdXROdWxsU3RyZWFtcyB9IGZyb20gXCJjaGlsZF9wcm9jZXNzXCI7XG5pbXBvcnQgeyBFbnZpcm9ubWVudCB9IGZyb20gXCIuL2Vudmlyb25tZW50XCI7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIERlZmluZXMgdGhlIHN0cnVjdHVyZSBmb3IgcHJvbWlzZSByZXNvbHV0aW9uIGFuZCByZWplY3Rpb24uXG4gKiBAc3VtbWFyeSBQcm92aWRlcyBtZXRob2RzIHRvIHJlc29sdmUgb3IgcmVqZWN0IGEgcHJvbWlzZS5cbiAqIEB0ZW1wbGF0ZSBSIC0gVGhlIHR5cGUgb2YgdGhlIHJlc29sdmVkIHZhbHVlLlxuICogQHRlbXBsYXRlIEUgLSBUaGUgdHlwZSBvZiB0aGUgZXJyb3IgdmFsdWUsIGRlZmF1bHRpbmcgdG8gRXJyb3IuXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBQcm9taXNlRXhlY3V0b3JcbiAqIEBwcm9wZXJ0eSB7ZnVuY3Rpb24oUik6IHZvaWR9IHJlc29sdmUgLSBGdW5jdGlvbiB0byByZXNvbHZlIHRoZSBwcm9taXNlLlxuICogQHByb3BlcnR5IHtmdW5jdGlvbihFKTogdm9pZH0gcmVqZWN0IC0gRnVuY3Rpb24gdG8gcmVqZWN0IHRoZSBwcm9taXNlLlxuICogQG1lbWJlck9mIG1vZHVsZTp1dGlsc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFByb21pc2VFeGVjdXRvcjxSLCBFID0gRXJyb3I+IHtcbiAgcmVzb2x2ZTogKHZhbHVlOiBSIHwgUHJvbWlzZUxpa2U8Uj4pID0+IHZvaWQ7XG4gIHJlamVjdDogKGVycm9yOiBFKSA9PiB2b2lkO1xufVxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBSZXByZXNlbnRzIHRoZSByZXN1bHQgb2YgYSBjb21tYW5kIGV4ZWN1dGlvbi5cbiAqIEBzdW1tYXJ5IEV4dGVuZHMgUHJvbWlzZSB3aXRoIGFkZGl0aW9uYWwgcHJvcGVydGllcyByZWxhdGVkIHRvIHRoZSBjb21tYW5kIGV4ZWN1dGlvbi5cbiAqIFRoaXMgaW50ZXJmYWNlIHByb3ZpZGVzIGEgY29tcHJlaGVuc2l2ZSB3YXkgdG8gaGFuZGxlIGFuZCBpbnRlcmFjdCB3aXRoIHRoZSByZXN1bHRzXG4gKiBvZiBhbiBhc3luY2hyb25vdXMgY29tbWFuZCBleGVjdXRpb24sIGluY2x1ZGluZyBhY2Nlc3MgdG8gdGhlIGNvbW1hbmQgZGV0YWlscyxcbiAqIG91dHB1dCBsb2dzLCBhbmQgdGhlIGFiaWxpdHkgdG8gYWJvcnQgdGhlIGV4ZWN1dGlvbi5cbiAqXG4gKiBAdGVtcGxhdGUgUiAtIFRoZSB0eXBlIG9mIHRoZSByZXNvbHZlZCB2YWx1ZSwgZGVmYXVsdGluZyB0byB2b2lkLlxuICogQGludGVyZmFjZSBDb21tYW5kUmVzdWx0XG4gKiBAZXh0ZW5kcyBQcm9taXNlPFI+XG4gKiBAbWVtYmVyT2YgbW9kdWxlOnV0aWxzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29tbWFuZFJlc3VsdDxSID0gdm9pZD4ge1xuICBwcm9taXNlOiBQcm9taXNlPFI+O1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gQ29udHJvbGxlciB0byBhYm9ydCB0aGUgY29tbWFuZCBleGVjdXRpb24uXG4gICAqIEBzdW1tYXJ5IFByb3ZpZGVzIGEgbWVjaGFuaXNtIHRvIGNhbmNlbCB0aGUgb25nb2luZyBjb21tYW5kIGV4ZWN1dGlvbi5cbiAgICovXG4gIGFib3J0OiBBYm9ydENvbnRyb2xsZXI7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBUaGUgZXhlY3V0ZWQgY29tbWFuZCBzdHJpbmcuXG4gICAqIEBzdW1tYXJ5IENvbnRhaW5zIHRoZSBhY3R1YWwgY29tbWFuZCB0aGF0IHdhcyBleGVjdXRlZC5cbiAgICovXG4gIGNvbW1hbmQ6IHN0cmluZztcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFRoZSBjaGlsZCBwcm9jZXNzIG9iamVjdC5cbiAgICogQHN1bW1hcnkgUmVwcmVzZW50cyB0aGUgTm9kZS5qcyBjaGlsZCBwcm9jZXNzIHRoYXQgd2FzIHNwYXduZWQgdG8gZXhlY3V0ZSB0aGUgY29tbWFuZC5cbiAgICovXG4gIGNtZD86IENoaWxkUHJvY2Vzc1dpdGhvdXROdWxsU3RyZWFtcztcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEFycmF5IG9mIHN0ZG91dCBsb2dzLlxuICAgKiBAc3VtbWFyeSBDb250YWlucyBhbGwgdGhlIHN0YW5kYXJkIG91dHB1dCBtZXNzYWdlcyBwcm9kdWNlZCBkdXJpbmcgdGhlIGNvbW1hbmQgZXhlY3V0aW9uLlxuICAgKi9cbiAgbG9nczogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBBcnJheSBvZiBzdGRlcnIgbG9ncy5cbiAgICogQHN1bW1hcnkgQ29udGFpbnMgYWxsIHRoZSBzdGFuZGFyZCBlcnJvciBtZXNzYWdlcyBwcm9kdWNlZCBkdXJpbmcgdGhlIGNvbW1hbmQgZXhlY3V0aW9uLlxuICAgKi9cbiAgZXJyczogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBhbGxvd3MgY2hhaW5pbmcgY29tbWFuZHMuXG4gICAqIEBzdW1tYXJ5IGFsbG93cyBjaGFpbmluZyBjb21tYW5kcyAob3IgcGlwaW5nKS5cbiAgICovXG4gIHBpcGU6IDxFPihjYjogKHI6IFIpID0+IEUpID0+IFByb21pc2U8RT47XG59XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIEZhY3RvcnkgdHlwZSBmb3IgY3JlYXRpbmcgRW52aXJvbm1lbnQgaW5zdGFuY2VzLlxuICogQHN1bW1hcnkgRGVmaW5lcyBhIGZ1bmN0aW9uIHR5cGUgdGhhdCBjcmVhdGVzIGFuZCByZXR1cm5zIEVudmlyb25tZW50IGluc3RhbmNlcy5cbiAqXG4gKiBAdGVtcGxhdGUgVCAtIFRoZSB0eXBlIG9mIG9iamVjdCB0aGUgRW52aXJvbm1lbnQgd2lsbCBhY2N1bXVsYXRlLlxuICogQHRlbXBsYXRlIEUgLSBUaGUgc3BlY2lmaWMgRW52aXJvbm1lbnQgdHlwZSB0byBiZSBjcmVhdGVkLCBleHRlbmRpbmcgRW52aXJvbm1lbnQ8VD4uXG4gKiBAdHlwZWRlZiB7ZnVuY3Rpb24oLi4udW5rbm93bltdKTogRX0gRW52aXJvbm1lbnRGYWN0b3J5XG4gKiBAbWVtYmVyT2YgbW9kdWxlOnV0aWxzXG4gKi9cbmV4cG9ydCB0eXBlIEVudmlyb25tZW50RmFjdG9yeTxUIGV4dGVuZHMgb2JqZWN0LCBFIGV4dGVuZHMgRW52aXJvbm1lbnQ8VD4+ID0gKFxuICAuLi5hcmdzOiB1bmtub3duW11cbikgPT4gRTtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gTWFwIG9mIHByb2plY3QgZGVwZW5kZW5jaWVzIHdpdGggZGV0YWlsZWQgaW5mb3JtYXRpb24uXG4gKiBAc3VtbWFyeSBSZXByZXNlbnRzIHRoZSBzdHJ1Y3R1cmUgb2YgcHJvamVjdCBkZXBlbmRlbmNpZXMgY2F0ZWdvcml6ZWQgYnkgdHlwZSAocHJvZHVjdGlvbiwgZGV2ZWxvcG1lbnQsIHBlZXIpLlxuICogRWFjaCBjYXRlZ29yeSBjb250YWlucyBhbiBhcnJheSBvZiBvYmplY3RzIHdpdGggbmFtZSBhbmQgdmVyc2lvbiBpbmZvcm1hdGlvbi5cbiAqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBEZXBlbmRlbmN5TWFwXG4gKiBAcHJvcGVydHkge0FycmF5PHtuYW1lOiBzdHJpbmcsIHZlcnNpb246IHN0cmluZ30+fSBwcm9kIC0gUHJvZHVjdGlvbiBkZXBlbmRlbmNpZXMgd2l0aCBuYW1lIGFuZCB2ZXJzaW9uLlxuICogQHByb3BlcnR5IHtBcnJheTx7bmFtZTogc3RyaW5nLCB2ZXJzaW9uOiBzdHJpbmd9Pn0gZGV2IC0gRGV2ZWxvcG1lbnQgZGVwZW5kZW5jaWVzIHdpdGggbmFtZSBhbmQgdmVyc2lvbi5cbiAqIEBwcm9wZXJ0eSB7QXJyYXk8e25hbWU6IHN0cmluZywgdmVyc2lvbjogc3RyaW5nfT59IHBlZXIgLSBQZWVyIGRlcGVuZGVuY2llcyB3aXRoIG5hbWUgYW5kIHZlcnNpb24uXG4gKiBAbWVtYmVyT2YgbW9kdWxlOnV0aWxzXG4gKi9cbmV4cG9ydCB0eXBlIERlcGVuZGVuY3lNYXAgPSB7XG4gIHByb2Q6IHsgbmFtZTogc3RyaW5nOyB2ZXJzaW9uOiBzdHJpbmcgfVtdO1xuICBkZXY6IHsgbmFtZTogc3RyaW5nOyB2ZXJzaW9uOiBzdHJpbmcgfVtdO1xuICBwZWVyOiB7IG5hbWU6IHN0cmluZzsgdmVyc2lvbjogc3RyaW5nIH1bXTtcbn07XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIFNpbXBsaWZpZWQgbWFwIG9mIHByb2plY3QgZGVwZW5kZW5jaWVzLlxuICogQHN1bW1hcnkgUmVwcmVzZW50cyBhIHNpbXBsaWZpZWQgc3RydWN0dXJlIG9mIHByb2plY3QgZGVwZW5kZW5jaWVzIGNhdGVnb3JpemVkIGJ5IHR5cGUuXG4gKiBFYWNoIGNhdGVnb3J5IGNvbnRhaW5zIGFuIG9wdGlvbmFsIGFycmF5IG9mIGRlcGVuZGVuY3kgbmFtZXMgd2l0aG91dCB2ZXJzaW9uIGluZm9ybWF0aW9uLlxuICpcbiAqIEB0eXBlZGVmIHtPYmplY3R9IFNpbXBsZURlcGVuZGVuY3lNYXBcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nW119IFtwcm9kXSAtIE9wdGlvbmFsIGFycmF5IG9mIHByb2R1Y3Rpb24gZGVwZW5kZW5jeSBuYW1lcy5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nW119IFtkZXZdIC0gT3B0aW9uYWwgYXJyYXkgb2YgZGV2ZWxvcG1lbnQgZGVwZW5kZW5jeSBuYW1lcy5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nW119IFtwZWVyXSAtIE9wdGlvbmFsIGFycmF5IG9mIHBlZXIgZGVwZW5kZW5jeSBuYW1lcy5cbiAqIEBtZW1iZXJPZiBtb2R1bGU6dXRpbHNcbiAqL1xuZXhwb3J0IHR5cGUgU2ltcGxlRGVwZW5kZW5jeU1hcCA9IHtcbiAgcHJvZD86IHN0cmluZ1tdO1xuICBkZXY/OiBzdHJpbmdbXTtcbiAgcGVlcj86IHN0cmluZ1tdO1xufTtcbiJdfQ==
|
package/lib/esm/utils/utils.d.ts
CHANGED
|
@@ -37,11 +37,53 @@ import { Logger } from "@decaf-ts/logging";
|
|
|
37
37
|
* end
|
|
38
38
|
* LockedFunction->>LockedFunction: Update lock
|
|
39
39
|
*
|
|
40
|
-
* @memberOf
|
|
40
|
+
* @memberOf module:utils
|
|
41
41
|
*/
|
|
42
42
|
export declare function lockify<R>(f: (...params: unknown[]) => R): (...params: unknown[]) => Promise<R>;
|
|
43
|
+
/**
|
|
44
|
+
* @description Chains multiple abort signals to a controller.
|
|
45
|
+
* @summary Creates a mechanism where multiple abort signals can trigger a single abort controller.
|
|
46
|
+
* This is useful for coordinating cancellation across multiple asynchronous operations.
|
|
47
|
+
*
|
|
48
|
+
* @param {AbortController} controller - The abort controller to be triggered by signals.
|
|
49
|
+
* @param {...AbortSignal} signals - One or more abort signals that can trigger the controller.
|
|
50
|
+
* @return {AbortController} The input controller, now connected to the signals.
|
|
51
|
+
*
|
|
52
|
+
* @function chainAbortController
|
|
53
|
+
*
|
|
54
|
+
* @memberOf module:utils
|
|
55
|
+
*/
|
|
43
56
|
export declare function chainAbortController(controller: AbortController, ...signals: AbortSignal[]): AbortController;
|
|
57
|
+
/**
|
|
58
|
+
* @description Creates a new controller chained to multiple abort signals.
|
|
59
|
+
* @summary Creates a new abort controller that will be triggered if any of the provided signals are aborted.
|
|
60
|
+
*
|
|
61
|
+
* @param {...AbortSignal} signals - One or more abort signals that can trigger the new controller.
|
|
62
|
+
* @return {AbortController} A new abort controller connected to the signals.
|
|
63
|
+
*
|
|
64
|
+
* @function chainAbortController
|
|
65
|
+
*
|
|
66
|
+
* @memberOf module:utils
|
|
67
|
+
*/
|
|
44
68
|
export declare function chainAbortController(...signals: AbortSignal[]): AbortController;
|
|
69
|
+
/**
|
|
70
|
+
* @description Spawns a command as a child process with output handling.
|
|
71
|
+
* @summary Creates a child process to execute a command with support for piping multiple commands,
|
|
72
|
+
* custom output handling, and abort control. This function handles the low-level details of
|
|
73
|
+
* spawning processes and connecting their inputs/outputs when piping is used.
|
|
74
|
+
*
|
|
75
|
+
* @template R - The type of the processed output, defaulting to string.
|
|
76
|
+
* @param {StandardOutputWriter<R>} output - The output writer to handle command output.
|
|
77
|
+
* @param {string} command - The command to execute, can include pipe operators.
|
|
78
|
+
* @param {SpawnOptionsWithoutStdio} opts - Options for the spawned process.
|
|
79
|
+
* @param {AbortController} abort - Controller to abort the command execution.
|
|
80
|
+
* @param {Logger} logger - Logger for recording command execution details.
|
|
81
|
+
* @return {ChildProcessWithoutNullStreams} The spawned child process.
|
|
82
|
+
*
|
|
83
|
+
* @function spawnCommand
|
|
84
|
+
*
|
|
85
|
+
* @memberOf module:utils
|
|
86
|
+
*/
|
|
45
87
|
export declare function spawnCommand<R = string>(output: StandardOutputWriter<R>, command: string, opts: SpawnOptionsWithoutStdio, abort: AbortController, logger: Logger): ChildProcessWithoutNullStreams;
|
|
46
88
|
/**
|
|
47
89
|
* @description Executes a command asynchronously with customizable output handling.
|
|
@@ -86,6 +128,6 @@ export declare function spawnCommand<R = string>(output: StandardOutputWriter<R>
|
|
|
86
128
|
* OutputWriter-->>runCommand: Resolve or reject promise
|
|
87
129
|
* runCommand-->>Caller: Return CommandResult
|
|
88
130
|
*
|
|
89
|
-
* @memberOf
|
|
131
|
+
* @memberOf module:utils
|
|
90
132
|
*/
|
|
91
133
|
export declare function runCommand<R = string>(command: string, opts?: SpawnOptionsWithoutStdio, outputConstructor?: OutputWriterConstructor<R, StandardOutputWriter<R>, Error>, ...args: unknown[]): CommandResult<R>;
|