@pipeline-builder/pipeline-core 3.4.106 → 3.4.108
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/lib/config/app-config.d.ts +10 -3
- package/lib/config/app-config.js +25 -5
- package/lib/config/billing-config.js +11 -11
- package/lib/handlers/plugin-lookup-handler.js +6 -2
- package/lib/pipeline/pipeline-builder.js +208 -195
- package/lib/template/index.d.ts +0 -1
- package/lib/template/index.js +7 -4
- package/lib/template/tokenizer.js +4 -2
- package/lib/template/validate.d.ts +1 -1
- package/lib/template/validate.js +2 -2
- package/lib/template/walker.d.ts +12 -2
- package/lib/template/walker.js +20 -22
- package/package.json +3 -3
- package/lib/template/cache.d.ts +0 -18
- package/lib/template/cache.js +0 -57
package/lib/template/index.d.ts
CHANGED
|
@@ -2,7 +2,6 @@ export { tokenize, hasTemplate, TokenizerError, MAX_FIELD_SIZE_BYTES, MAX_PATH_D
|
|
|
2
2
|
export { resolve, lookupPath, dependencies, type Scope, type EvalError, } from './evaluator.js';
|
|
3
3
|
export { walkAndBind, type WalkEntry, type FieldPredicate, } from './walker.js';
|
|
4
4
|
export { topoSort, type TopoNode, type TopoResult, } from './topo-sort.js';
|
|
5
|
-
export { TokenCache, } from './cache.js';
|
|
6
5
|
export { validateTemplates, detectCycles, allowedScopeRoots, type TemplateError, type ValidationResult, } from './validate.js';
|
|
7
6
|
export { recordResolution, templateResolutionsTotal, templateResolutionDurationMs, } from './metrics.js';
|
|
8
7
|
import { ErrorCode } from '@pipeline-builder/api-core';
|
package/lib/template/index.js
CHANGED
|
@@ -4,7 +4,6 @@ export { tokenize, hasTemplate, TokenizerError, MAX_FIELD_SIZE_BYTES, MAX_PATH_D
|
|
|
4
4
|
export { resolve, lookupPath, dependencies, } from './evaluator.js';
|
|
5
5
|
export { walkAndBind, } from './walker.js';
|
|
6
6
|
export { topoSort, } from './topo-sort.js';
|
|
7
|
-
export { TokenCache, } from './cache.js';
|
|
8
7
|
export { validateTemplates, detectCycles, allowedScopeRoots, } from './validate.js';
|
|
9
8
|
export { recordResolution, templateResolutionsTotal, templateResolutionDurationMs, } from './metrics.js';
|
|
10
9
|
// -- Convenience: high-level resolve() that walks + resolves + measures
|
|
@@ -23,7 +22,9 @@ import { walkAndBind } from './walker.js';
|
|
|
23
22
|
export function resolveTemplates(doc, scope, isTemplatable, docType = 'plugin') {
|
|
24
23
|
const start = Date.now();
|
|
25
24
|
const errors = [];
|
|
26
|
-
|
|
25
|
+
// includeLiteralOnly: literal-only fields (a bare `{{{{` escape) still need
|
|
26
|
+
// rewriting so the tokenizer's `{{{{` → `{{` unescape lands in the document.
|
|
27
|
+
const entries = walkAndBind(doc, isTemplatable, true);
|
|
27
28
|
let success = true;
|
|
28
29
|
for (const entry of entries) {
|
|
29
30
|
try {
|
|
@@ -54,7 +55,9 @@ export function resolveTemplates(doc, scope, isTemplatable, docType = 'plugin')
|
|
|
54
55
|
*/
|
|
55
56
|
export function resolveSelfReferencing(doc, scope, isTemplatable, fieldToScopePath, docType = 'pipeline') {
|
|
56
57
|
const start = Date.now();
|
|
57
|
-
|
|
58
|
+
// includeLiteralOnly: a self-referencing field that is only a `{{{{` escape
|
|
59
|
+
// still needs its unescape written back (same rationale as resolveTemplates).
|
|
60
|
+
const entries = walkAndBind(doc, isTemplatable, true);
|
|
58
61
|
// Build topo nodes keyed by target scope path
|
|
59
62
|
const nodes = entries
|
|
60
63
|
.map(e => {
|
|
@@ -112,4 +115,4 @@ export function resolveSelfReferencing(doc, scope, isTemplatable, fieldToScopePa
|
|
|
112
115
|
recordResolution(docType, Date.now() - start, success);
|
|
113
116
|
return { errors };
|
|
114
117
|
}
|
|
115
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdGVtcGxhdGUvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQUV0QyxPQUFPLEVBQ0wsUUFBUSxFQUNSLFdBQVcsRUFDWCxjQUFjLEVBQ2Qsb0JBQW9CLEVBQ3BCLGNBQWMsRUFDZCxxQkFBcUIsR0FLdEIsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QixPQUFPLEVBQ0wsT0FBTyxFQUNQLFVBQVUsRUFDVixZQUFZLEdBR2IsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QixPQUFPLEVBQ0wsV0FBVyxHQUdaLE1BQU0sYUFBYSxDQUFDO0FBRXJCLE9BQU8sRUFDTCxRQUFRLEdBR1QsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QixPQUFPLEVBQ0wsVUFBVSxHQUNYLE1BQU0sWUFBWSxDQUFDO0FBRXBCLE9BQU8sRUFDTCxpQkFBaUIsRUFDakIsWUFBWSxFQUNaLGlCQUFpQixHQUdsQixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQ0wsZ0JBQWdCLEVBQ2hCLHdCQUF3QixFQUN4Qiw0QkFBNEIsR0FDN0IsTUFBTSxjQUFjLENBQUM7QUFFdEIsd0VBQXdFO0FBRXhFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsT0FBTyxJQUFJLGdCQUFnQixFQUFjLE1BQU0sZ0JBQWdCLENBQUM7QUFDekUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ2hELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMxQyxPQUFPLEVBQUUsV0FBVyxFQUF1QixNQUFNLGFBQWEsQ0FBQztBQU0vRDs7Ozs7O0dBTUc7QUFDSCxNQUFNLFVBQVUsZ0JBQWdCLENBQzlCLEdBQU0sRUFDTixLQUFZLEVBQ1osYUFBNkIsRUFDN0IsVUFBaUMsUUFBUTtJQUV6QyxNQUFNLEtB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LE9BQU8sR0FBRyxFQUFFLENBQUM7Z0JBQ2IsT0FBTyxHQUFHLEtBQUssQ0FBQztnQkFDaEIsTUFBTSxDQUFDLEdBQUcsR0FBa0QsQ0FBQztnQkFDN0QsTUFBTSxDQUFDLElBQUksQ0FBQztvQkFDVixJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksSUFBSSxTQUFTLENBQUMsb0JBQW9CO29CQUM5QyxPQUFPLEVBQUUsQ0FBQyxDQUFDLE9BQU87b0JBQ2xCLEtBQUssRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUs7b0JBQ3BCLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSTtpQkFDYixDQUFDLENBQUM7WUFDTCxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFDRCxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztJQUN2RCxPQUFPLEVBQUUsTUFBTSxFQUFFLENBQUM7QUFDcEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG5leHBvcnQge1xuICB0b2tlbml6ZSxcbiAgaGFzVGVtcGxhdGUsXG4gIFRva2VuaXplckVycm9yLFxuICBNQVhfRklFTERfU0laRV9CWVRFUyxcbiAgTUFYX1BBVEhfREVQVEgsXG4gIE1BWF9JREVOVElGSUVSX0xFTkdUSCxcbiAgdHlwZSBUb2tlbixcbiAgdHlwZSBMaXRlcmFsVG9rZW4sXG4gIHR5cGUgRXhwclRva2VuLFxuICB0eXBlIFNvdXJjZVBvc2l0aW9uLFxufSBmcm9tICcuL3Rva2VuaXplci5qcyc7XG5cbmV4cG9ydCB7XG4gIHJlc29sdmUsXG4gIGxvb2t1cFBhdGgsXG4gIGRlcGVuZGVuY2llcyxcbiAgdHlwZSBTY29wZSxcbiAgdHlwZSBFdmFsRXJyb3IsXG59IGZyb20gJy4vZXZhbHVhdG9yLmpzJztcblxuZXhwb3J0IHtcbiAgd2Fsa0FuZEJpbmQsXG4gIHR5cGUgV2Fsa0VudHJ5LFxuICB0eXBlIEZpZWxkUHJlZGljYXRlLFxufSBmcm9tICcuL3dhbGtlci5qcyc7XG5cbmV4cG9ydCB7XG4gIHRvcG9Tb3J0LFxuICB0eXBlIFRvcG9Ob2RlLFxuICB0eXBlIFRvcG9SZXN1bHQsXG59IGZyb20gJy4vdG9wby1zb3J0LmpzJztcblxuZXhwb3J0IHtcbiAgVG9rZW5DYWNoZSxcbn0gZnJvbSAnLi9jYWNoZS5qcyc7XG5cbmV4cG9ydCB7XG4gIHZhbGlkYXRlVGVtcGxhdGVzLFxuICBkZXRlY3RDeWNsZXMsXG4gIGFsbG93ZWRTY29wZVJvb3RzLFxuICB0eXBlIFRlbXBsYXRlRXJyb3IsXG4gIHR5cGUgVmFsaWRhdGlvblJlc3VsdCxcbn0gZnJvbSAnLi92YWxpZGF0ZS5qcyc7XG5cbmV4cG9ydCB7XG4gIHJlY29yZFJlc29sdXRpb24sXG4gIHRlbXBsYXRlUmVzb2x1dGlvbnNUb3RhbCxcbiAgdGVtcGxhdGVSZXNvbHV0aW9uRHVyYXRpb25Ncyxcbn0gZnJvbSAnLi9tZXRyaWNzLmpzJztcblxuLy8gLS0gQ29udmVuaWVuY2U6IGhpZ2gtbGV2ZWwgcmVzb2x2ZSgpIHRoYXQgd2Fsa3MgKyByZXNvbHZlcyArIG1lYXN1cmVzXG5cbmltcG9ydCB7IEVycm9yQ29kZSB9IGZyb20gJ0BwaXBlbGluZS1idWlsZGVyL2FwaS1jb3JlJztcbmltcG9ydCB7IHJlc29sdmUgYXMgZXZhbHVhdG9yUmVzb2x2ZSwgdHlwZSBTY29wZSB9IGZyb20gJy4vZXZhbHVhdG9yLmpzJztcbmltcG9ydCB7IHJlY29yZFJlc29sdXRpb24gfSBmcm9tICcuL21ldHJpY3MuanMnO1xuaW1wb3J0IHsgdG9wb1NvcnQgfSBmcm9tICcuL3RvcG8tc29ydC5qcyc7XG5pbXBvcnQgeyB3YWxrQW5kQmluZCwgdHlwZSBGaWVsZFByZWRpY2F0ZSB9IGZyb20gJy4vd2Fsa2VyLmpzJztcblxuZXhwb3J0IGludGVyZmFjZSBSZXNvbHZlUmVzdWx0IHtcbiAgZXJyb3JzOiBBcnJheTx7IGNvZGU6IEVycm9yQ29kZTsgbWVzc2FnZTogc3RyaW5nOyBmaWVsZD86IHN0cmluZzsgcGF0aD86IHN0cmluZyB9Pjtcbn1cblxuLyoqXG4gKiBSZXNvbHZlIGFsbCB0ZW1wbGF0ZXMgaW5zaWRlIGBkb2NgIGJ5IG11dGF0aW5nIHN0cmluZyBmaWVsZHMgaW4gcGxhY2UuXG4gKiBgZG9jYCBpcyB0cmVhdGVkIGFzIG9wYXF1ZSDigJQgb25seSBzdHJpbmcgZmllbGRzIHRoYXQgbWF0Y2ggYGlzVGVtcGxhdGFibGVgXG4gKiBhcmUgcmV3cml0dGVuLiBSZXR1cm5zIGNvbGxlY3RlZCBlcnJvcnMgKGVtcHR5IGFycmF5IG9uIHN1Y2Nlc3MpLlxuICpcbiAqIGBkb2NUeXBlYCBpcyB1c2VkIGZvciBtZXRyaWNzOyBwYXNzICdwaXBlbGluZScgb3IgJ3BsdWdpbicuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlVGVtcGxhdGVzPFQgZXh0ZW5kcyBvYmplY3Q+KFxuICBkb2M6IFQsXG4gIHNjb3BlOiBTY29wZSxcbiAgaXNUZW1wbGF0YWJsZTogRmllbGRQcmVkaWNhdGUsXG4gIGRvY1R5cGU6ICdwaXBlbGluZScgfCAncGx1Z2luJyA9ICdwbHVnaW4nLFxuKTogUmVzb2x2ZVJlc3VsdCB7XG4gIGNvbnN0IHN0YXJ0ID0gRGF0ZS5ub3coKTtcbiAgY29uc3QgZXJyb3JzOiBSZXNvbHZlUmVzdWx0WydlcnJvcnMnXSA9IFtdO1xuICBjb25zdCBlbnRyaWVzID0gd2Fsa0FuZEJpbmQoZG9jLCBpc1RlbXBsYXRhYmxlKTtcbiAgbGV0IHN1Y2Nlc3MgPSB0cnVlO1xuICBmb3IgKGNvbnN0IGVudHJ5IG9mIGVudHJpZXMpIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgdmFsdWUgPSBldmFsdWF0b3JSZXNvbHZlKGVudHJ5LnRva2Vucywgc2NvcGUsIGVudHJ5LmZpZWxkKTtcbiAgICAgIGVudHJ5LnNldCh2YWx1ZSk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBzdWNjZXNzID0gZmFsc2U7XG4gICAgICBjb25zdCBlID0gZXJyIGFzIEVycm9yICYgeyBjb2RlPzogRXJyb3JDb2RlOyBwYXRoPzogc3RyaW5nIH07XG4gICAgICBlcnJvcnMucHVzaCh7XG4gICAgICAgIGNvZGU6IGUuY29kZSA/PyBFcnJvckNvZGUuVEVNUExBVEVfUEFSU0VfRVJST1IsXG4gICAgICAgIG1lc3NhZ2U6IGUubWVzc2FnZSxcbiAgICAgICAgZmllbGQ6IGVudHJ5LmZpZWxkLFxuICAgICAgICBwYXRoOiBlLnBhdGgsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cbiAgcmVjb3JkUmVzb2x1dGlvbihkb2NUeXBlLCBEYXRlLm5vdygpIC0gc3RhcnQsIHN1Y2Nlc3MpO1xuICByZXR1cm4geyBlcnJvcnMgfTtcbn1cblxuLyoqXG4gKiBSZXNvbHZlIGEgc2VsZi1yZWZlcmVuY2luZyBkb2N1bWVudCAoZS5nLiBwaXBlbGluZS5qc29uIHdoZXJlXG4gKiBtZXRhZGF0YSBmaWVsZHMgcmVmZXJlbmNlIGVhY2ggb3RoZXIpLiBUb3BvbG9naWNhbGx5IG9yZGVycyB0aGVcbiAqIHJlc29sdXRpb24gc28gZGVwZW5kZW5jaWVzIGNvbWUgZmlyc3QuIE11dGF0ZXMgYGRvY2AgaW4gcGxhY2UuXG4gKlxuICogYGZpZWxkVG9TY29wZVBhdGhgIG1hcHMgZWFjaCBmaWVsZCAoZS5nLiBgbWV0YWRhdGEuZW52YCkgdG8gdGhlIHNjb3BlXG4gKiBwYXRoIGl0IHBvcHVsYXRlcyAodHlwaWNhbGx5IHRoZSBzYW1lLCBzYW5zIGFueSBhcnJheSBpbmRpY2VzKS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVTZWxmUmVmZXJlbmNpbmc8VCBleHRlbmRzIG9iamVjdD4oXG4gIGRvYzogVCxcbiAgc2NvcGU6IFNjb3BlLFxuICBpc1RlbXBsYXRhYmxlOiBGaWVsZFByZWRpY2F0ZSxcbiAgZmllbGRUb1Njb3BlUGF0aDogKGZpZWxkOiBzdHJpbmcpID0+IHN0cmluZyB8IG51bGwsXG4gIGRvY1R5cGU6ICdwaXBlbGluZScgfCAncGx1Z2luJyA9ICdwaXBlbGluZScsXG4pOiBSZXNvbHZlUmVzdWx0IHtcbiAgY29uc3Qgc3RhcnQgPSBEYXRlLm5vdygpO1xuICBjb25zdCBlbnRyaWVzID0gd2Fsa0FuZEJpbmQoZG9jLCBpc1RlbXBsYXRhYmxlKTtcbiAgLy8gQnVpbGQgdG9wbyBub2RlcyBrZXllZCBieSB0YXJnZXQgc2NvcGUgcGF0aFxuICBjb25zdCBub2RlcyA9IGVudHJpZXNcbiAgICAubWFwKGUgPT4ge1xuICAgICAgY29uc3Qga2V5ID0gZmllbGRUb1Njb3BlUGF0aChlLmZpZWxkKTtcbiAgICAgIGlmICgha2V5KSByZXR1cm4gbnVsbDtcbiAgICAgIGNvbnN0IGRlcHM6IHN0cmluZ1tdID0gW107XG4gICAgICBmb3IgKGNvbnN0IHQgb2YgZS50b2tlbnMpIGlmICh0LmtpbmQgPT09ICdleHByJykgZGVwcy5wdXNoKHQucGF0aC5qb2luKCcuJykpO1xuICAgICAgcmV0dXJuIHsga2V5LCBkZXBzLCBlbnRyeTogZSB9O1xuICAgIH0pXG4gICAgLmZpbHRlcigobik6IG4gaXMgTm9uTnVsbGFibGU8dHlwZW9mIG4+ID0+IG4gIT09IG51bGwpO1xuXG4gIGNvbnN0IHsgb3JkZXJlZCwgY3ljbGVzIH0gPSB0b3BvU29ydChub2Rlcy5tYXAobiA9PiAoeyBrZXk6IG4ua2V5LCBkZXBzOiBuLmRlcHMgfSkpKTtcbiAgY29uc3QgZXJyb3JzOiBSZXNvbHZlUmVzdWx0WydlcnJvcnMnXSA9IFtdO1xuICBpZiAoY3ljbGVzLmxlbmd0aCkge1xuICAgIGZvciAoY29uc3QgYyBvZiBjeWNsZXMpIHtcbiAgICAgIGVycm9ycy5wdXNoKHtcbiAgICAgICAgY29kZTogRXJyb3JDb2RlLlRFTVBMQVRFX0NZQ0xFLFxuICAgICAgICBtZXNzYWdlOiBgVGVtcGxhdGUgY3ljbGUgZGV0ZWN0ZWQ6ICR7Yy5qb2luKCcgLT4gJyl9YCxcbiAgICAgICAgcGF0aDogYy5qb2luKCcgLT4gJyksXG4gICAgICB9KTtcbiAgICB9XG4gICAgcmVjb3JkUmVzb2x1dGlvbihkb2NUeXBlLCBEYXRlLm5vdygpIC0gc3RhcnQsIGZhbHNlKTtcbiAgICByZXR1cm4geyBlcnJvcnMgfTtcbiAgfVxuXG4gIC8vIFJlc29sdmUgaW4gdG9wbyBvcmRlcjsgbXVsdGlwbGUgZW50cmllcyBtYXkgc2hhcmUgYSBzY29wZSBrZXkgKGUuZy4gb25lXG4gIC8vIHBpcGVsaW5lIGZpZWxkIGNvdWxkIG1hcCB0byB0aGUgc2FtZSBzY29wZSBwYXRoIOKAlCB1bmxpa2VseSBoZXJlKSwgc29cbiAgLy8gaXRlcmF0ZSBhbGwgZW50cmllcyB3aG9zZSBrZXkgPT0gb3JkZXJlZFtpXS5cbiAgY29uc3QgYnlLZXkgPSBuZXcgTWFwPHN0cmluZywgdHlwZW9mIG5vZGVzPigpO1xuICBmb3IgKGNvbnN0IG4gb2Ygbm9kZXMpIHtcbiAgICBjb25zdCBsaXN0ID0gYnlLZXkuZ2V0KG4ua2V5KSA/PyBbXTtcbiAgICBsaXN0LnB1c2gobik7XG4gICAgYnlLZXkuc2V0KG4ua2V5LCBsaXN0KTtcbiAgfVxuXG4gIGxldCBzdWNjZXNzID0gdHJ1ZTtcbiAgZm9yIChjb25zdCBrZXkgb2Ygb3JkZXJlZCkge1xuICAgIGZvciAoY29uc3QgbiBvZiBieUtleS5nZXQoa2V5KSA/PyBbXSkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSBldmFsdWF0b3JSZXNvbHZlKG4uZW50cnkudG9rZW5zLCBzY29wZSwgbi5lbnRyeS5maWVsZCk7XG4gICAgICAgIG4uZW50cnkuc2V0KHZhbHVlKTtcbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICBzdWNjZXNzID0gZmFsc2U7XG4gICAgICAgIGNvbnN0IGUgPSBlcnIgYXMgRXJyb3IgJiB7IGNvZGU/OiBFcnJvckNvZGU7IHBhdGg/OiBzdHJpbmcgfTtcbiAgICAgICAgZXJyb3JzLnB1c2goe1xuICAgICAgICAgIGNvZGU6IGUuY29kZSA/PyBFcnJvckNvZGUuVEVNUExBVEVfUEFSU0VfRVJST1IsXG4gICAgICAgICAgbWVzc2FnZTogZS5tZXNzYWdlLFxuICAgICAgICAgIGZpZWxkOiBuLmVudHJ5LmZpZWxkLFxuICAgICAgICAgIHBhdGg6IGUucGF0aCxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJlY29yZFJlc29sdXRpb24oZG9jVHlwZSwgRGF0ZS5ub3coKSAtIHN0YXJ0LCBzdWNjZXNzKTtcbiAgcmV0dXJuIHsgZXJyb3JzIH07XG59XG5cbiJdfQ==
|
|
118
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdGVtcGxhdGUvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQUV0QyxPQUFPLEVBQ0wsUUFBUSxFQUNSLFdBQVcsRUFDWCxjQUFjLEVBQ2Qsb0JBQW9CLEVBQ3BCLGNBQWMsRUFDZCxxQkFBcUIsR0FLdEIsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QixPQUFPLEVBQ0wsT0FBTyxFQUNQLFVBQVUsRUFDVixZQUFZLEdBR2IsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QixPQUFPLEVBQ0wsV0FBVyxHQUdaLE1BQU0sYUFBYSxDQUFDO0FBRXJCLE9BQU8sRUFDTCxRQUFRLEdBR1QsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QixPQUFPLEVBQ0wsaUJBQWlCLEVBQ2pCLFlBQVksRUFDWixpQkFBaUIsR0FHbEIsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUNMLGdCQUFnQixFQUNoQix3QkFBd0IsRUFDeEIsNEJBQTRCLEdBQzdCLE1BQU0sY0FBYyxDQUFDO0FBRXRCLHdFQUF3RTtBQUV4RSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDdkQsT0FBTyxFQUFFLE9BQU8sSUFBSSxnQkFBZ0IsRUFBYyxNQUFNLGdCQUFnQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUNoRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDMUMsT0FBTyxFQUFFLFdBQVcsRUFBdUIsTUFBTSxhQUFhLENBQUM7QUFNL0Q7Ozs7OztHQU1HO0FBQ0gsTUFBTSxVQUFVLGdCQUFnQixDQUM5QixHQUFNLEVBQ04sS0FBWSxFQUNaLGFBQTZCLEVBQzdCLFVBQWlDLFFBQVE7SUFFekMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO0lBQ3pCLE1B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LEtBQUssQ0FBQyxDQUFDO1lBQ3JCLENBQUM7WUFBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO2dCQUNiLE9BQU8sR0FBRyxLQUFLLENBQUM7Z0JBQ2hCLE1BQU0sQ0FBQyxHQUFHLEdBQWtELENBQUM7Z0JBQzdELE1BQU0sQ0FBQyxJQUFJLENBQUM7b0JBQ1YsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLElBQUksU0FBUyxDQUFDLG9CQUFvQjtvQkFDOUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxPQUFPO29CQUNsQixLQUFLLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLO29CQUNwQixJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUk7aUJBQ2IsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBQ0QsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDdkQsT0FBTyxFQUFFLE1BQU0sRUFBRSxDQUFDO0FBQ3BCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuZXhwb3J0IHtcbiAgdG9rZW5pemUsXG4gIGhhc1RlbXBsYXRlLFxuICBUb2tlbml6ZXJFcnJvcixcbiAgTUFYX0ZJRUxEX1NJWkVfQllURVMsXG4gIE1BWF9QQVRIX0RFUFRILFxuICBNQVhfSURFTlRJRklFUl9MRU5HVEgsXG4gIHR5cGUgVG9rZW4sXG4gIHR5cGUgTGl0ZXJhbFRva2VuLFxuICB0eXBlIEV4cHJUb2tlbixcbiAgdHlwZSBTb3VyY2VQb3NpdGlvbixcbn0gZnJvbSAnLi90b2tlbml6ZXIuanMnO1xuXG5leHBvcnQge1xuICByZXNvbHZlLFxuICBsb29rdXBQYXRoLFxuICBkZXBlbmRlbmNpZXMsXG4gIHR5cGUgU2NvcGUsXG4gIHR5cGUgRXZhbEVycm9yLFxufSBmcm9tICcuL2V2YWx1YXRvci5qcyc7XG5cbmV4cG9ydCB7XG4gIHdhbGtBbmRCaW5kLFxuICB0eXBlIFdhbGtFbnRyeSxcbiAgdHlwZSBGaWVsZFByZWRpY2F0ZSxcbn0gZnJvbSAnLi93YWxrZXIuanMnO1xuXG5leHBvcnQge1xuICB0b3BvU29ydCxcbiAgdHlwZSBUb3BvTm9kZSxcbiAgdHlwZSBUb3BvUmVzdWx0LFxufSBmcm9tICcuL3RvcG8tc29ydC5qcyc7XG5cbmV4cG9ydCB7XG4gIHZhbGlkYXRlVGVtcGxhdGVzLFxuICBkZXRlY3RDeWNsZXMsXG4gIGFsbG93ZWRTY29wZVJvb3RzLFxuICB0eXBlIFRlbXBsYXRlRXJyb3IsXG4gIHR5cGUgVmFsaWRhdGlvblJlc3VsdCxcbn0gZnJvbSAnLi92YWxpZGF0ZS5qcyc7XG5cbmV4cG9ydCB7XG4gIHJlY29yZFJlc29sdXRpb24sXG4gIHRlbXBsYXRlUmVzb2x1dGlvbnNUb3RhbCxcbiAgdGVtcGxhdGVSZXNvbHV0aW9uRHVyYXRpb25Ncyxcbn0gZnJvbSAnLi9tZXRyaWNzLmpzJztcblxuLy8gLS0gQ29udmVuaWVuY2U6IGhpZ2gtbGV2ZWwgcmVzb2x2ZSgpIHRoYXQgd2Fsa3MgKyByZXNvbHZlcyArIG1lYXN1cmVzXG5cbmltcG9ydCB7IEVycm9yQ29kZSB9IGZyb20gJ0BwaXBlbGluZS1idWlsZGVyL2FwaS1jb3JlJztcbmltcG9ydCB7IHJlc29sdmUgYXMgZXZhbHVhdG9yUmVzb2x2ZSwgdHlwZSBTY29wZSB9IGZyb20gJy4vZXZhbHVhdG9yLmpzJztcbmltcG9ydCB7IHJlY29yZFJlc29sdXRpb24gfSBmcm9tICcuL21ldHJpY3MuanMnO1xuaW1wb3J0IHsgdG9wb1NvcnQgfSBmcm9tICcuL3RvcG8tc29ydC5qcyc7XG5pbXBvcnQgeyB3YWxrQW5kQmluZCwgdHlwZSBGaWVsZFByZWRpY2F0ZSB9IGZyb20gJy4vd2Fsa2VyLmpzJztcblxuZXhwb3J0IGludGVyZmFjZSBSZXNvbHZlUmVzdWx0IHtcbiAgZXJyb3JzOiBBcnJheTx7IGNvZGU6IEVycm9yQ29kZTsgbWVzc2FnZTogc3RyaW5nOyBmaWVsZD86IHN0cmluZzsgcGF0aD86IHN0cmluZyB9Pjtcbn1cblxuLyoqXG4gKiBSZXNvbHZlIGFsbCB0ZW1wbGF0ZXMgaW5zaWRlIGBkb2NgIGJ5IG11dGF0aW5nIHN0cmluZyBmaWVsZHMgaW4gcGxhY2UuXG4gKiBgZG9jYCBpcyB0cmVhdGVkIGFzIG9wYXF1ZSDigJQgb25seSBzdHJpbmcgZmllbGRzIHRoYXQgbWF0Y2ggYGlzVGVtcGxhdGFibGVgXG4gKiBhcmUgcmV3cml0dGVuLiBSZXR1cm5zIGNvbGxlY3RlZCBlcnJvcnMgKGVtcHR5IGFycmF5IG9uIHN1Y2Nlc3MpLlxuICpcbiAqIGBkb2NUeXBlYCBpcyB1c2VkIGZvciBtZXRyaWNzOyBwYXNzICdwaXBlbGluZScgb3IgJ3BsdWdpbicuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlVGVtcGxhdGVzPFQgZXh0ZW5kcyBvYmplY3Q+KFxuICBkb2M6IFQsXG4gIHNjb3BlOiBTY29wZSxcbiAgaXNUZW1wbGF0YWJsZTogRmllbGRQcmVkaWNhdGUsXG4gIGRvY1R5cGU6ICdwaXBlbGluZScgfCAncGx1Z2luJyA9ICdwbHVnaW4nLFxuKTogUmVzb2x2ZVJlc3VsdCB7XG4gIGNvbnN0IHN0YXJ0ID0gRGF0ZS5ub3coKTtcbiAgY29uc3QgZXJyb3JzOiBSZXNvbHZlUmVzdWx0WydlcnJvcnMnXSA9IFtdO1xuICAvLyBpbmNsdWRlTGl0ZXJhbE9ubHk6IGxpdGVyYWwtb25seSBmaWVsZHMgKGEgYmFyZSBge3t7e2AgZXNjYXBlKSBzdGlsbCBuZWVkXG4gIC8vIHJld3JpdGluZyBzbyB0aGUgdG9rZW5pemVyJ3MgYHt7e3tgIOKGkiBge3tgIHVuZXNjYXBlIGxhbmRzIGluIHRoZSBkb2N1bWVudC5cbiAgY29uc3QgZW50cmllcyA9IHdhbGtBbmRCaW5kKGRvYywgaXNUZW1wbGF0YWJsZSwgdHJ1ZSk7XG4gIGxldCBzdWNjZXNzID0gdHJ1ZTtcbiAgZm9yIChjb25zdCBlbnRyeSBvZiBlbnRyaWVzKSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHZhbHVlID0gZXZhbHVhdG9yUmVzb2x2ZShlbnRyeS50b2tlbnMsIHNjb3BlLCBlbnRyeS5maWVsZCk7XG4gICAgICBlbnRyeS5zZXQodmFsdWUpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgc3VjY2VzcyA9IGZhbHNlO1xuICAgICAgY29uc3QgZSA9IGVyciBhcyBFcnJvciAmIHsgY29kZT86IEVycm9yQ29kZTsgcGF0aD86IHN0cmluZyB9O1xuICAgICAgZXJyb3JzLnB1c2goe1xuICAgICAgICBjb2RlOiBlLmNvZGUgPz8gRXJyb3JDb2RlLlRFTVBMQVRFX1BBUlNFX0VSUk9SLFxuICAgICAgICBtZXNzYWdlOiBlLm1lc3NhZ2UsXG4gICAgICAgIGZpZWxkOiBlbnRyeS5maWVsZCxcbiAgICAgICAgcGF0aDogZS5wYXRoLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG4gIHJlY29yZFJlc29sdXRpb24oZG9jVHlwZSwgRGF0ZS5ub3coKSAtIHN0YXJ0LCBzdWNjZXNzKTtcbiAgcmV0dXJuIHsgZXJyb3JzIH07XG59XG5cbi8qKlxuICogUmVzb2x2ZSBhIHNlbGYtcmVmZXJlbmNpbmcgZG9jdW1lbnQgKGUuZy4gcGlwZWxpbmUuanNvbiB3aGVyZVxuICogbWV0YWRhdGEgZmllbGRzIHJlZmVyZW5jZSBlYWNoIG90aGVyKS4gVG9wb2xvZ2ljYWxseSBvcmRlcnMgdGhlXG4gKiByZXNvbHV0aW9uIHNvIGRlcGVuZGVuY2llcyBjb21lIGZpcnN0LiBNdXRhdGVzIGBkb2NgIGluIHBsYWNlLlxuICpcbiAqIGBmaWVsZFRvU2NvcGVQYXRoYCBtYXBzIGVhY2ggZmllbGQgKGUuZy4gYG1ldGFkYXRhLmVudmApIHRvIHRoZSBzY29wZVxuICogcGF0aCBpdCBwb3B1bGF0ZXMgKHR5cGljYWxseSB0aGUgc2FtZSwgc2FucyBhbnkgYXJyYXkgaW5kaWNlcykuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlU2VsZlJlZmVyZW5jaW5nPFQgZXh0ZW5kcyBvYmplY3Q+KFxuICBkb2M6IFQsXG4gIHNjb3BlOiBTY29wZSxcbiAgaXNUZW1wbGF0YWJsZTogRmllbGRQcmVkaWNhdGUsXG4gIGZpZWxkVG9TY29wZVBhdGg6IChmaWVsZDogc3RyaW5nKSA9PiBzdHJpbmcgfCBudWxsLFxuICBkb2NUeXBlOiAncGlwZWxpbmUnIHwgJ3BsdWdpbicgPSAncGlwZWxpbmUnLFxuKTogUmVzb2x2ZVJlc3VsdCB7XG4gIGNvbnN0IHN0YXJ0ID0gRGF0ZS5ub3coKTtcbiAgLy8gaW5jbHVkZUxpdGVyYWxPbmx5OiBhIHNlbGYtcmVmZXJlbmNpbmcgZmllbGQgdGhhdCBpcyBvbmx5IGEgYHt7e3tgIGVzY2FwZVxuICAvLyBzdGlsbCBuZWVkcyBpdHMgdW5lc2NhcGUgd3JpdHRlbiBiYWNrIChzYW1lIHJhdGlvbmFsZSBhcyByZXNvbHZlVGVtcGxhdGVzKS5cbiAgY29uc3QgZW50cmllcyA9IHdhbGtBbmRCaW5kKGRvYywgaXNUZW1wbGF0YWJsZSwgdHJ1ZSk7XG4gIC8vIEJ1aWxkIHRvcG8gbm9kZXMga2V5ZWQgYnkgdGFyZ2V0IHNjb3BlIHBhdGhcbiAgY29uc3Qgbm9kZXMgPSBlbnRyaWVzXG4gICAgLm1hcChlID0+IHtcbiAgICAgIGNvbnN0IGtleSA9IGZpZWxkVG9TY29wZVBhdGgoZS5maWVsZCk7XG4gICAgICBpZiAoIWtleSkgcmV0dXJuIG51bGw7XG4gICAgICBjb25zdCBkZXBzOiBzdHJpbmdbXSA9IFtdO1xuICAgICAgZm9yIChjb25zdCB0IG9mIGUudG9rZW5zKSBpZiAodC5raW5kID09PSAnZXhwcicpIGRlcHMucHVzaCh0LnBhdGguam9pbignLicpKTtcbiAgICAgIHJldHVybiB7IGtleSwgZGVwcywgZW50cnk6IGUgfTtcbiAgICB9KVxuICAgIC5maWx0ZXIoKG4pOiBuIGlzIE5vbk51bGxhYmxlPHR5cGVvZiBuPiA9PiBuICE9PSBudWxsKTtcblxuICBjb25zdCB7IG9yZGVyZWQsIGN5Y2xlcyB9ID0gdG9wb1NvcnQobm9kZXMubWFwKG4gPT4gKHsga2V5OiBuLmtleSwgZGVwczogbi5kZXBzIH0pKSk7XG4gIGNvbnN0IGVycm9yczogUmVzb2x2ZVJlc3VsdFsnZXJyb3JzJ10gPSBbXTtcbiAgaWYgKGN5Y2xlcy5sZW5ndGgpIHtcbiAgICBmb3IgKGNvbnN0IGMgb2YgY3ljbGVzKSB7XG4gICAgICBlcnJvcnMucHVzaCh7XG4gICAgICAgIGNvZGU6IEVycm9yQ29kZS5URU1QTEFURV9DWUNMRSxcbiAgICAgICAgbWVzc2FnZTogYFRlbXBsYXRlIGN5Y2xlIGRldGVjdGVkOiAke2Muam9pbignIC0+ICcpfWAsXG4gICAgICAgIHBhdGg6IGMuam9pbignIC0+ICcpLFxuICAgICAgfSk7XG4gICAgfVxuICAgIHJlY29yZFJlc29sdXRpb24oZG9jVHlwZSwgRGF0ZS5ub3coKSAtIHN0YXJ0LCBmYWxzZSk7XG4gICAgcmV0dXJuIHsgZXJyb3JzIH07XG4gIH1cblxuICAvLyBSZXNvbHZlIGluIHRvcG8gb3JkZXI7IG11bHRpcGxlIGVudHJpZXMgbWF5IHNoYXJlIGEgc2NvcGUga2V5IChlLmcuIG9uZVxuICAvLyBwaXBlbGluZSBmaWVsZCBjb3VsZCBtYXAgdG8gdGhlIHNhbWUgc2NvcGUgcGF0aCDigJQgdW5saWtlbHkgaGVyZSksIHNvXG4gIC8vIGl0ZXJhdGUgYWxsIGVudHJpZXMgd2hvc2Uga2V5ID09IG9yZGVyZWRbaV0uXG4gIGNvbnN0IGJ5S2V5ID0gbmV3IE1hcDxzdHJpbmcsIHR5cGVvZiBub2Rlcz4oKTtcbiAgZm9yIChjb25zdCBuIG9mIG5vZGVzKSB7XG4gICAgY29uc3QgbGlzdCA9IGJ5S2V5LmdldChuLmtleSkgPz8gW107XG4gICAgbGlzdC5wdXNoKG4pO1xuICAgIGJ5S2V5LnNldChuLmtleSwgbGlzdCk7XG4gIH1cblxuICBsZXQgc3VjY2VzcyA9IHRydWU7XG4gIGZvciAoY29uc3Qga2V5IG9mIG9yZGVyZWQpIHtcbiAgICBmb3IgKGNvbnN0IG4gb2YgYnlLZXkuZ2V0KGtleSkgPz8gW10pIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gZXZhbHVhdG9yUmVzb2x2ZShuLmVudHJ5LnRva2Vucywgc2NvcGUsIG4uZW50cnkuZmllbGQpO1xuICAgICAgICBuLmVudHJ5LnNldCh2YWx1ZSk7XG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgc3VjY2VzcyA9IGZhbHNlO1xuICAgICAgICBjb25zdCBlID0gZXJyIGFzIEVycm9yICYgeyBjb2RlPzogRXJyb3JDb2RlOyBwYXRoPzogc3RyaW5nIH07XG4gICAgICAgIGVycm9ycy5wdXNoKHtcbiAgICAgICAgICBjb2RlOiBlLmNvZGUgPz8gRXJyb3JDb2RlLlRFTVBMQVRFX1BBUlNFX0VSUk9SLFxuICAgICAgICAgIG1lc3NhZ2U6IGUubWVzc2FnZSxcbiAgICAgICAgICBmaWVsZDogbi5lbnRyeS5maWVsZCxcbiAgICAgICAgICBwYXRoOiBlLnBhdGgsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZWNvcmRSZXNvbHV0aW9uKGRvY1R5cGUsIERhdGUubm93KCkgLSBzdGFydCwgc3VjY2Vzcyk7XG4gIHJldHVybiB7IGVycm9ycyB9O1xufVxuXG4iXX0=
|
|
@@ -29,7 +29,9 @@ export class TokenizerError extends Error {
|
|
|
29
29
|
* throws `TokenizerError` with source position on malformed templates.
|
|
30
30
|
*/
|
|
31
31
|
export function tokenize(source) {
|
|
32
|
-
|
|
32
|
+
// Byte count, not `.length` (UTF-16 code units): the cap is stated in bytes,
|
|
33
|
+
// and multi-byte characters (emoji, non-ASCII) would otherwise be undercounted.
|
|
34
|
+
if (Buffer.byteLength(source, 'utf8') > MAX_FIELD_SIZE_BYTES) {
|
|
33
35
|
throw new TokenizerError(`Field exceeds max size of ${MAX_FIELD_SIZE_BYTES} bytes`, { line: 1, col: 1 });
|
|
34
36
|
}
|
|
35
37
|
const tokens = [];
|
|
@@ -228,4 +230,4 @@ export function hasTemplate(source) {
|
|
|
228
230
|
// tokenize() will produce a literal-only token list and round-trip correctly.
|
|
229
231
|
return source.includes('{{');
|
|
230
232
|
}
|
|
231
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW5pemVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3RlbXBsYXRlL3Rva2VuaXplci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBRXRDOzs7Ozs7Ozs7Ozs7R0FZRztBQUVILE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHLENBQUMsR0FBRyxJQUFJLENBQUM7QUFDN0MsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLENBQUMsQ0FBQztBQUNoQyxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyxFQUFFLENBQUM7QUEwQnhDLE1BQU0sT0FBTyxjQUFlLFNBQVEsS0FBSztJQUdyQjtJQUZsQixZQUNFLE9BQWUsRUFDQyxHQUFtQjtRQUVuQyxLQUFLLENBQUMsR0FBRyxPQUFPLFlBQVksR0FBRyxDQUFDLElBQUksU0FBUyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztRQUZ4QyxRQUFHLEdBQUgsR0FBRyxDQUFnQjtRQUduQyxJQUFJLENBQUMsSUFBSSxHQUFHLGdCQUFnQixDQUFDO0lBQy9CLENBQUM7Q0FDRjtBQUVEOzs7R0FHRztBQUNILE1BQU0sVUFBVSxRQUFRLENBQUMsTUFBYztJQUNyQyxJQUFJLE1BQU0sQ0FBQyxNQUFNLEdBQUcsb0JBQW9CLEVBQUUsQ0FBQztRQUN6QyxNQUFNLElBQUksY0FBYyxDQUN0Qiw2QkFBNkIsb0JBQW9CLFFBQVEsRUFDekQsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FDcEIsQ0FBQztJQUNKLENBQUM7SUFFRCxNQUFNLE1BQU0sR0FBWSxFQUFFLENBQUM7SUFDM0IsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ1YsSUFBSSxJQUFJLEdBQUcsQ0FBQyxDQUFDO0lBQ2IsSUFBSSxHQUFHLEdBQUcsQ0FBQyxDQUFDO0lBQ1osSUFBSSxZQUFZLEdBQUcsQ0FBQyxDQUFDO0lBQ3JCLElBQUks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Q0FBQztBQUNuRCxDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLFdBQVcsQ0FBQyxNQUFjO0lBQ3hDLDhFQUE4RTtJQUM5RSw4RUFBOEU7SUFDOUUsT0FBTyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQy9CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuLyoqXG4gKiBUb2tlbml6ZXIgZm9yIHRoZSBwaXBlbGluZS1idWlsZGVyIHRlbXBsYXRlIGdyYW1tYXIuXG4gKlxuICogR3JhbW1hcjpcbiAqICAgVGVtcGxhdGUgICA6PSAoTGl0ZXJhbCB8IEV4cHIpKlxuICogICBFeHByICAgICAgIDo9IFwie3tcIiB3cyBQYXRoICh3cyBGaWx0ZXIpPyB3cyBcIn19XCJcbiAqICAgUGF0aCAgICAgICA6PSBJZGVudGlmaWVyIChcIi5cIiBJZGVudGlmaWVyKSpcbiAqICAgSWRlbnRpZmllciA6PSBbYS16QS1aX11bYS16QS1aMC05X117MCw2M31cbiAqICAgRmlsdGVyICAgICA6PSBcInxcIiB3cyBcImRlZmF1bHRcIiB3cyBcIjpcIiB3cyBRdW90ZWRcbiAqICAgUXVvdGVkICAgICA6PSBcIidcIiAuLi4gXCInXCIgfCBcIlxcXCJcIiAuLi4gXCJcXFwiXCJcbiAqXG4gKiBge3t7e2AgaXMgdGhlIGVzY2FwZSBzZXF1ZW5jZSBmb3IgYSBsaXRlcmFsIGB7e2AuXG4gKi9cblxuZXhwb3J0IGNvbnN0IE1BWF9GSUVMRF9TSVpFX0JZVEVTID0gNCAqIDEwMjQ7XG5leHBvcnQgY29uc3QgTUFYX1BBVEhfREVQVEggPSA1O1xuZXhwb3J0IGNvbnN0IE1BWF9JREVOVElGSUVSX0xFTkdUSCA9IDY0O1xuXG5leHBvcnQgaW50ZXJmYWNlIFNvdXJjZVBvc2l0aW9uIHtcbiAgbGluZTogbnVtYmVyO1xuICBjb2w6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMaXRlcmFsVG9rZW4ge1xuICBraW5kOiAnbGl0ZXJhbCc7XG4gIHZhbHVlOiBzdHJpbmc7XG4gIHBvczogU291cmNlUG9zaXRpb247XG59XG5cbmV4cG9ydCB0eXBlIENvZXJjZUtpbmQgPSAnbnVtYmVyJyB8ICdib29sJyB8ICdqc29uJztcblxuZXhwb3J0IGludGVyZmFjZSBFeHByVG9rZW4ge1xuICBraW5kOiAnZXhwcic7XG4gIHBhdGg6IHN0cmluZ1tdOyAvLyBlLmcuIFsncGlwZWxpbmUnLCAnbWV0YWRhdGEnLCAnZW52J11cbiAgZGVmYXVsdFZhbHVlPzogc3RyaW5nOyAvLyB2YWx1ZSBmb3IgYHwgZGVmYXVsdDogJy4uLidgIGZpbHRlclxuICBjb2VyY2U/OiBDb2VyY2VLaW5kOyAvLyBgfCBudW1iZXJgLCBgfCBib29sYCwgYHwganNvbmBcbiAgc291cmNlOiBzdHJpbmc7IC8vIG9yaWdpbmFsIFwie3sgLi4uIH19XCIgdGV4dCAoZm9yIGVycm9yIG1lc3NhZ2VzKVxuICBwb3M6IFNvdXJjZVBvc2l0aW9uO1xufVxuXG5leHBvcnQgdHlwZSBUb2tlbiA9IExpdGVyYWxUb2tlbiB8IEV4cHJUb2tlbjtcblxuZXhwb3J0IGNsYXNzIFRva2VuaXplckVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICBjb25zdHJ1Y3RvcihcbiAgICBtZXNzYWdlOiBzdHJpbmcsXG4gICAgcHVibGljIHJlYWRvbmx5IHBvczogU291cmNlUG9zaXRpb24sXG4gICkge1xuICAgIHN1cGVyKGAke21lc3NhZ2V9IGF0IGxpbmUgJHtwb3MubGluZX0sIGNvbCAke3Bvcy5jb2x9YCk7XG4gICAgdGhpcy5uYW1lID0gJ1Rva2VuaXplckVycm9yJztcbiAgfVxufVxuXG4vKipcbiAqIFRva2VuaXplIGEgdGVtcGxhdGUgc291cmNlIHN0cmluZy4gTmV2ZXIgdGhyb3dzIG9uIHZhbGlkIGlucHV0O1xuICogdGhyb3dzIGBUb2tlbml6ZXJFcnJvcmAgd2l0aCBzb3VyY2UgcG9zaXRpb24gb24gbWFsZm9ybWVkIHRlbXBsYXRlcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRva2VuaXplKHNvdXJjZTogc3RyaW5nKTogVG9rZW5bXSB7XG4gIGlmIChzb3VyY2UubGVuZ3RoID4gTUFYX0ZJRUxEX1NJWkVfQllURVMpIHtcbiAgICB0aHJvdyBuZXcgVG9rZW5pemVyRXJyb3IoXG4gICAgICBgRmllbGQgZXhjZWVkcyBtYXggc2l6ZSBvZiAke01BWF9GSUVMRF9TSVpFX0JZVEVTfSBieXRlc2AsXG4gICAgICB7IGxpbmU6IDEsIGNvbDogMSB9LFxuICAgICk7XG4gIH1cblxuICBjb25zdCB0b2tlbnM6IFRva2VuW10gPSBbXTtcbiAgbGV0IGkgPSAwO1xuICBsZXQgbGluZSA9IDE7XG4gIGxldCBjb2wgPSAxO1xuICBsZXQgbGl0ZXJhbFN0YXJ0ID0gMDtcbiAgbGV0IGxpdGVyYWxTdGFydFBvczogU291cmNlUG9zaXRpb24gPSB7IGxpbmU6IDEsIGNvbDogMSB9O1xuXG4gIGNvbnN0IGFkdmFuY2UgPSAobjogbnVtYmVyKTogdm9pZCA9PiB7XG4gICAgZm9yIChsZXQgayA9IDA7IGsgPCBuOyBrKyspIHtcbiAgICAgIGlmIChzb3VyY2VbaSArIGtdID09PSAnXFxuJykge1xuICAgICAgICBsaW5lKys7XG4gICAgICAgIGNvbCA9IDE7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb2wrKztcbiAgICAgIH1cbiAgICB9XG4gICAgaSArPSBuO1xuICB9O1xuXG4gIGNvbnN0IGZsdXNoTGl0ZXJhbCA9IChlbmRJZHg6IG51bWJlcik6IHZvaWQgPT4ge1xuICAgIGlmIChlbmRJZHggPiBsaXRlcmFsU3RhcnQpIHtcbiAgICAgIC8vIFVuZXNjYXBlIGB7e3t7YCDihpIgYHt7YFxuICAgICAgY29uc3QgcmF3ID0gc291cmNlLnNsaWNlKGxpdGVyYWxTdGFydCwgZW5kSWR4KTtcbiAgICAgIGNvbnN0IHZhbHVlID0gcmF3LnJlcGxhY2UoL1xce1xce1xce1xcey9nLCAne3snKTtcbiAgICAgIHRva2Vucy5wdXNoKHsga2luZDogJ2xpdGVyYWwnLCB2YWx1ZSwgcG9zOiBsaXRlcmFsU3RhcnRQb3MgfSk7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IHN0YXJ0TGl0ZXJhbCA9ICgpOiB2b2lkID0+IHtcbiAgICBsaXRlcmFsU3RhcnQgPSBpO1xuICAgIGxpdGVyYWxTdGFydFBvcyA9IHsgbGluZSwgY29sIH07XG4gIH07XG5cbiAgc3RhcnRMaXRlcmFsKCk7XG5cbiAgd2hpbGUgKGkgPCBzb3VyY2UubGVuZ3RoKSB7XG4gICAgLy8gRXNjYXBlOiBge3t7e2Ag4oaSIGxpdGVyYWwgYHt7YFxuICAgIGlmIChzb3VyY2Uuc3RhcnRzV2l0aCgne3t7eycsIGkpKSB7XG4gICAgICBhZHZhbmNlKDQpO1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIC8vIEV4cHJlc3Npb24gc3RhcnRcbiAgICBpZiAoc291cmNlLnN0YXJ0c1dpdGgoJ3t7JywgaSkpIHtcbiAgICAgIGZsdXNoTGl0ZXJhbChpKTtcbiAgICAgIGNvbnN0IGV4cHJQb3M6IFNvdXJjZVBvc2l0aW9uID0geyBsaW5lLCBjb2wgfTtcbiAgICAgIGFkdmFuY2UoMik7XG4gICAgICBjb25zdCBleHByID0gcmVhZEV4cHJlc3Npb24oc291cmNlLCBpLCBsaW5lLCBjb2wpO1xuICAgICAgdG9rZW5zLnB1c2goe1xuICAgICAgICBraW5kOiAnZXhwcicsXG4gICAgICAgIHBhdGg6IGV4cHIucGF0aCxcbiAgICAgICAgZGVmYXVsdFZhbHVlOiBleHByLmRlZmF1bHRWYWx1ZSxcbiAgICAgICAgY29lcmNlOiBleHByLmNvZXJjZSxcbiAgICAgICAgc291cmNlOiBzb3VyY2Uuc2xpY2UoaSAtIDIsIGV4cHIuZW5kSWR4KSxcbiAgICAgICAgcG9zOiBleHByUG9zLFxuICAgICAgfSk7XG4gICAgICBhZHZhbmNlKGV4cHIuZW5kSWR4IC0gaSk7XG4gICAgICBzdGFydExpdGVyYWwoKTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICAvLyBTdHJheSBgfX1gIG91dHNpZGUgYW4gZXhwcmVzc2lvblxuICAgIGlmIChzb3VyY2Uuc3RhcnRzV2l0aCgnfX0nLCBpKSkge1xuICAgICAgdGhyb3cgbmV3IFRva2VuaXplckVycm9yKFwiVW5leHBlY3RlZCAnfX0nIG91dHNpZGUgZXhwcmVzc2lvblwiLCB7IGxpbmUsIGNvbCB9KTtcbiAgICB9XG4gICAgYWR2YW5jZSgxKTtcbiAgfVxuXG4gIGZsdXNoTGl0ZXJhbChpKTtcbiAgcmV0dXJuIHRva2Vucztcbn1cblxuaW50ZXJmYWNlIFBhcnNlZEV4cHIge1xuICBwYXRoOiBzdHJpbmdbXTtcbiAgZGVmYXVsdFZhbHVlPzogc3RyaW5nO1xuICBjb2VyY2U/OiBDb2VyY2VLaW5kO1xuICBlbmRJZHg6IG51bWJlcjtcbn1cblxuZnVuY3Rpb24gcmVhZEV4cHJlc3Npb24oXG4gIHNvdXJjZTogc3RyaW5nLFxuICBzdGFydElkeDogbnVtYmVyLFxuICBzdGFydExpbmU6IG51bWJlcixcbiAgc3RhcnRDb2w6IG51bWJlcixcbik6IFBhcnNlZEV4cHIge1xuICBsZXQgaSA9IHN0YXJ0SWR4O1xuICBsZXQgbGluZSA9IHN0YXJ0TGluZTtcbiAgbGV0IGNvbCA9IHN0YXJ0Q29sO1xuXG4gIGNvbnN0IHNraXBXcyA9ICgpOiB2b2lkID0+IHtcbiAgICB3aGlsZSAoaSA8IHNvdXJjZS5sZW5ndGggJiYgKHNvdXJjZVtpXSA9PT0gJyAnIHx8IHNvdXJjZVtpXSA9PT0gJ1xcdCcpKSB7XG4gICAgICBpKys7XG4gICAgICBjb2wrKztcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgcmVhZElkZW50aWZpZXIgPSAoKTogc3RyaW5nID0+IHtcbiAgICBjb25zdCBzdGFydEkgPSBpO1xuICAgIGlmIChpID49IHNvdXJjZS5sZW5ndGggfHwgIS9bYS16QS1aX10vLnRlc3Qoc291cmNlW2ldISkpIHtcbiAgICAgIHRocm93IG5ldyBUb2tlbml6ZXJFcnJvcihcbiAgICAgICAgJ0V4cGVjdGVkIGlkZW50aWZpZXIgaW5zaWRlIHRlbXBsYXRlIGV4cHJlc3Npb24nLFxuICAgICAgICB7IGxpbmUsIGNvbCB9LFxuICAgICAgKTtcbiAgICB9XG4gICAgd2hpbGUgKGkgPCBzb3VyY2UubGVuZ3RoICYmIC9bYS16QS1aMC05X10vLnRlc3Qoc291cmNlW2ldISkpIHtcbiAgICAgIGkrKztcbiAgICAgIGNvbCsrO1xuICAgIH1cbiAgICBjb25zdCBpZGVudCA9IHNvdXJjZS5zbGljZShzdGFydEksIGkpO1xuICAgIGlmIChpZGVudC5sZW5ndGggPiBNQVhfSURFTlRJRklFUl9MRU5HVEgpIHtcbiAgICAgIHRocm93IG5ldyBUb2tlbml6ZXJFcnJvcihcbiAgICAgICAgYElkZW50aWZpZXIgZXhjZWVkcyBtYXggbGVuZ3RoIG9mICR7TUFYX0lERU5USUZJRVJfTEVOR1RIfWAsXG4gICAgICAgIHsgbGluZSwgY29sOiBjb2wgLSBpZGVudC5sZW5ndGggfSxcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiBpZGVudDtcbiAgfTtcblxuICBjb25zdCByZWFkUXVvdGVkID0gKCk6IHN0cmluZyA9PiB7XG4gICAgY29uc3QgcXVvdGUgPSBzb3VyY2VbaV07XG4gICAgaWYgKHF1b3RlICE9PSAnXCInICYmIHF1b3RlICE9PSBcIidcIikge1xuICAgICAgdGhyb3cgbmV3IFRva2VuaXplckVycm9yKCdFeHBlY3RlZCBxdW90ZWQgc3RyaW5nJywgeyBsaW5lLCBjb2wgfSk7XG4gICAgfVxuICAgIGkrKzsgY29sKys7XG4gICAgY29uc3QgcGFydHM6IHN0cmluZ1tdID0gW107XG4gICAgd2hpbGUgKGkgPCBzb3VyY2UubGVuZ3RoICYmIHNvdXJjZVtpXSAhPT0gcXVvdGUpIHtcbiAgICAgIGlmIChzb3VyY2VbaV0gPT09ICdcXFxcJykge1xuICAgICAgICBjb25zdCBuZXh0ID0gc291cmNlW2kgKyAxXTtcbiAgICAgICAgaWYgKG5leHQgPT09ICdcXFxcJyB8fCBuZXh0ID09PSBxdW90ZSkge1xuICAgICAgICAgIHBhcnRzLnB1c2gobmV4dCk7XG4gICAgICAgICAgaSArPSAyO1xuICAgICAgICAgIGNvbCArPSAyO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIHRocm93IG5ldyBUb2tlbml6ZXJFcnJvcihcbiAgICAgICAgICBgSW52YWxpZCBlc2NhcGUgJ1xcXFwke25leHQgPz8gJyd9JyBpbiBxdW90ZWQgc3RyaW5nYCxcbiAgICAgICAgICB7IGxpbmUsIGNvbCB9LFxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgaWYgKHNvdXJjZVtpXSA9PT0gJ1xcbicpIHtcbiAgICAgICAgdGhyb3cgbmV3IFRva2VuaXplckVycm9yKCdVbnRlcm1pbmF0ZWQgcXVvdGVkIHN0cmluZycsIHsgbGluZSwgY29sIH0pO1xuICAgICAgfVxuICAgICAgcGFydHMucHVzaChzb3VyY2VbaV0hKTtcbiAgICAgIGkrKzsgY29sKys7XG4gICAgfVxuICAgIGlmIChpID49IHNvdXJjZS5sZW5ndGgpIHtcbiAgICAgIHRocm93IG5ldyBUb2tlbml6ZXJFcnJvcignVW50ZXJtaW5hdGVkIHF1b3RlZCBzdHJpbmcnLCB7IGxpbmUsIGNvbCB9KTtcbiAgICB9XG4gICAgaSsrOyBjb2wrKzsgLy8gY29uc3VtZSBjbG9zaW5nIHF1b3RlXG4gICAgcmV0dXJuIHBhcnRzLmpvaW4oJycpO1xuICB9O1xuXG4gIHNraXBXcygpO1xuICBjb25zdCBwYXRoOiBzdHJpbmdbXSA9IFtyZWFkSWRlbnRpZmllcigpXTtcbiAgd2hpbGUgKGkgPCBzb3VyY2UubGVuZ3RoICYmIHNvdXJjZVtpXSA9PT0gJy4nKSB7XG4gICAgaSsrOyBjb2wrKztcbiAgICBwYXRoLnB1c2gocmVhZElkZW50aWZpZXIoKSk7XG4gICAgaWYgKHBhdGgubGVuZ3RoID4gTUFYX1BBVEhfREVQVEgpIHtcbiAgICAgIHRocm93IG5ldyBUb2tlbml6ZXJFcnJvcihcbiAgICAgICAgYFBhdGggZGVwdGggZXhjZWVkcyBtYXggb2YgJHtNQVhfUEFUSF9ERVBUSH1gLFxuICAgICAgICB7IGxpbmUsIGNvbCB9LFxuICAgICAgKTtcbiAgICB9XG4gIH1cbiAgc2tpcFdzKCk7XG5cbiAgbGV0IGRlZmF1bHRWYWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBsZXQgY29lcmNlOiBDb2VyY2VLaW5kIHwgdW5kZWZpbmVkO1xuXG4gIC8vIEZpbHRlcnMgY2hhaW46IGB8IGRlZmF1bHQ6ICd4JyB8IG51bWJlcmAsIGB8IGJvb2xgLCBgfCBqc29uYCwgZXRjLlxuICAvLyAtIGBkZWZhdWx0YCB0YWtlcyBhIHF1b3RlZCBhcmd1bWVudCDigJQgYXBwbGllZCBmaXJzdCAoYmVmb3JlIGNvZXJjaW9uKVxuICAvLyAtIGBudW1iZXJgLCBgYm9vbGAsIGBqc29uYCBhcmUgYXJndW1lbnQtbGVzcyBjb2VyY2lvbiBmaWx0ZXJzIOKAlCBhcHBsaWVkIGxhc3RcbiAgd2hpbGUgKHNvdXJjZVtpXSA9PT0gJ3wnKSB7XG4gICAgaSsrOyBjb2wrKztcbiAgICBza2lwV3MoKTtcblxuICAgIGlmIChzb3VyY2Uuc3RhcnRzV2l0aCgnZGVmYXVsdCcsIGkpKSB7XG4gICAgICBpZiAoZGVmYXVsdFZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhyb3cgbmV3IFRva2VuaXplckVycm9yKFwiJ2RlZmF1bHQnIGZpbHRlciBtYXkgb25seSBhcHBlYXIgb25jZVwiLCB7IGxpbmUsIGNvbCB9KTtcbiAgICAgIH1cbiAgICAgIGkgKz0gJ2RlZmF1bHQnLmxlbmd0aDtcbiAgICAgIGNvbCArPSAnZGVmYXVsdCcubGVuZ3RoO1xuICAgICAgc2tpcFdzKCk7XG4gICAgICBpZiAoc291cmNlW2ldICE9PSAnOicpIHtcbiAgICAgICAgdGhyb3cgbmV3IFRva2VuaXplckVycm9yKFwiRXhwZWN0ZWQgJzonIGFmdGVyICdkZWZhdWx0J1wiLCB7IGxpbmUsIGNvbCB9KTtcbiAgICAgIH1cbiAgICAgIGkrKzsgY29sKys7XG4gICAgICBza2lwV3MoKTtcbiAgICAgIGRlZmF1bHRWYWx1ZSA9IHJlYWRRdW90ZWQoKTtcbiAgICAgIHNraXBXcygpO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgbGV0IG1hdGNoZWRDb2VyY2U6IENvZXJjZUtpbmQgfCBudWxsID0gbnVsbDtcbiAgICBmb3IgKGNvbnN0IGtpbmQgb2YgWydudW1iZXInLCAnYm9vbCcsICdqc29uJ10gYXMgY29uc3QpIHtcbiAgICAgIGlmIChzb3VyY2Uuc3RhcnRzV2l0aChraW5kLCBpKSkge1xuICAgICAgICAvLyBFbnN1cmUgaWRlbnRpZmllciBib3VuZGFyeSDigJQgYG51bWJlcmlzaGAgbXVzdCBub3QgbWF0Y2ggYG51bWJlcmBcbiAgICAgICAgY29uc3QgbmV4dCA9IHNvdXJjZVtpICsga2luZC5sZW5ndGhdO1xuICAgICAgICBpZiAoIW5leHQgfHwgIS9bYS16QS1aMC05X10vLnRlc3QobmV4dCkpIHtcbiAgICAgICAgICBtYXRjaGVkQ29lcmNlID0ga2luZDtcbiAgICAgICAgICBpICs9IGtpbmQubGVuZ3RoO1xuICAgICAgICAgIGNvbCArPSBraW5kLmxlbmd0aDtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmICghbWF0Y2hlZENvZXJjZSkge1xuICAgICAgdGhyb3cgbmV3IFRva2VuaXplckVycm9yKFxuICAgICAgICBcIlVua25vd24gZmlsdGVyIOKAlCBzdXBwb3J0ZWQ6ICdkZWZhdWx0JywgJ251bWJlcicsICdib29sJywgJ2pzb24nXCIsXG4gICAgICAgIHsgbGluZSwgY29sIH0sXG4gICAgICApO1xuICAgIH1cbiAgICBpZiAoY29lcmNlKSB7XG4gICAgICB0aHJvdyBuZXcgVG9rZW5pemVyRXJyb3IoJ09ubHkgb25lIGNvZXJjaW9uIGZpbHRlciBpcyBhbGxvd2VkIHBlciBleHByZXNzaW9uJywgeyBsaW5lLCBjb2wgfSk7XG4gICAgfVxuICAgIGNvZXJjZSA9IG1hdGNoZWRDb2VyY2U7XG4gICAgc2tpcFdzKCk7XG4gIH1cblxuICBpZiAoIXNvdXJjZS5zdGFydHNXaXRoKCd9fScsIGkpKSB7XG4gICAgdGhyb3cgbmV3IFRva2VuaXplckVycm9yKFwiRXhwZWN0ZWQgJ319J1wiLCB7IGxpbmUsIGNvbCB9KTtcbiAgfVxuICBpICs9IDI7XG4gIHJldHVybiB7IHBhdGgsIGRlZmF1bHRWYWx1ZSwgY29lcmNlLCBlbmRJZHg6IGkgfTtcbn1cblxuLyoqXG4gKiBDb252ZW5pZW5jZTogcmV0dXJucyB0cnVlIGlmIHRoZSBzb3VyY2UgY29udGFpbnMgYW55IHRlbXBsYXRlcy5cbiAqIFVzZWQgYXMgYSBmYXN0LXBhdGggdG8gc2tpcCB0b2tlbml6YXRpb24gZm9yIHN0cmluZ3MgdGhhdCBhcmUgb2J2aW91c2x5IGxpdGVyYWwuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBoYXNUZW1wbGF0ZShzb3VyY2U6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAvLyBOb3QgY29tcGxldGVseSBhY2N1cmF0ZSAoYSBsb25lIGB7e3t7YCB3b3VsZCByZXR1cm4gdHJ1ZSkgYnV0IHRoYXQncyBmaW5lIOKAlFxuICAvLyB0b2tlbml6ZSgpIHdpbGwgcHJvZHVjZSBhIGxpdGVyYWwtb25seSB0b2tlbiBsaXN0IGFuZCByb3VuZC10cmlwIGNvcnJlY3RseS5cbiAgcmV0dXJuIHNvdXJjZS5pbmNsdWRlcygne3snKTtcbn1cbiJdfQ==
|
|
233
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW5pemVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3RlbXBsYXRlL3Rva2VuaXplci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBRXRDOzs7Ozs7Ozs7Ozs7R0FZRztBQUVILE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHLENBQUMsR0FBRyxJQUFJLENBQUM7QUFDN0MsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLENBQUMsQ0FBQztBQUNoQyxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyxFQUFFLENBQUM7QUEwQnhDLE1BQU0sT0FBTyxjQUFlLFNBQVEsS0FBSztJQUdyQjtJQUZsQixZQUNFLE9BQWUsRUFDQyxHQUFtQjtRQUVuQyxLQUFLLENBQUMsR0FBRyxPQUFPLFlBQVksR0FBRyxDQUFDLElBQUksU0FBUyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztRQUZ4QyxRQUFHLEdBQUgsR0FBRyxDQUFnQjtRQUduQyxJQUFJLENBQUMsSUFBSSxHQUFHLGdCQUFnQixDQUFDO0lBQy9CLENBQUM7Q0FDRjtBQUVEOzs7R0FHRztBQUNILE1BQU0sVUFBVSxRQUFRLENBQUMsTUFBYztJQUNyQyw2RUFBNkU7SUFDN0UsZ0ZBQWdGO0lBQ2hGLElBQUksTUFBTSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLEdBQUcsb0JBQW9CLEVBQUUsQ0FBQztRQUM3RCxNQUFNLElBQUksY0FBYyxDQUN0Qiw2QkFBNkIsb0JBQW9CLFFBQVEsRUFDekQsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FDcEIsQ0FBQztJQUNKLENBQUM7SUFFRCxNQUFNLE1BQU0sR0FBWSxFQUFFLENBQUM7SUFDM0IsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ1YsSUFBSSxJQUFJLEdBQUcsQ0FBQyxDQUFDO0lBQ2IsSUFBSSxHQUFHLEdBQUcs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LElBQUksRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQztBQUNuRCxDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLFdBQVcsQ0FBQyxNQUFjO0lBQ3hDLDhFQUE4RTtJQUM5RSw4RUFBOEU7SUFDOUUsT0FBTyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQy9CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuLyoqXG4gKiBUb2tlbml6ZXIgZm9yIHRoZSBwaXBlbGluZS1idWlsZGVyIHRlbXBsYXRlIGdyYW1tYXIuXG4gKlxuICogR3JhbW1hcjpcbiAqICAgVGVtcGxhdGUgICA6PSAoTGl0ZXJhbCB8IEV4cHIpKlxuICogICBFeHByICAgICAgIDo9IFwie3tcIiB3cyBQYXRoICh3cyBGaWx0ZXIpPyB3cyBcIn19XCJcbiAqICAgUGF0aCAgICAgICA6PSBJZGVudGlmaWVyIChcIi5cIiBJZGVudGlmaWVyKSpcbiAqICAgSWRlbnRpZmllciA6PSBbYS16QS1aX11bYS16QS1aMC05X117MCw2M31cbiAqICAgRmlsdGVyICAgICA6PSBcInxcIiB3cyBcImRlZmF1bHRcIiB3cyBcIjpcIiB3cyBRdW90ZWRcbiAqICAgUXVvdGVkICAgICA6PSBcIidcIiAuLi4gXCInXCIgfCBcIlxcXCJcIiAuLi4gXCJcXFwiXCJcbiAqXG4gKiBge3t7e2AgaXMgdGhlIGVzY2FwZSBzZXF1ZW5jZSBmb3IgYSBsaXRlcmFsIGB7e2AuXG4gKi9cblxuZXhwb3J0IGNvbnN0IE1BWF9GSUVMRF9TSVpFX0JZVEVTID0gNCAqIDEwMjQ7XG5leHBvcnQgY29uc3QgTUFYX1BBVEhfREVQVEggPSA1O1xuZXhwb3J0IGNvbnN0IE1BWF9JREVOVElGSUVSX0xFTkdUSCA9IDY0O1xuXG5leHBvcnQgaW50ZXJmYWNlIFNvdXJjZVBvc2l0aW9uIHtcbiAgbGluZTogbnVtYmVyO1xuICBjb2w6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMaXRlcmFsVG9rZW4ge1xuICBraW5kOiAnbGl0ZXJhbCc7XG4gIHZhbHVlOiBzdHJpbmc7XG4gIHBvczogU291cmNlUG9zaXRpb247XG59XG5cbmV4cG9ydCB0eXBlIENvZXJjZUtpbmQgPSAnbnVtYmVyJyB8ICdib29sJyB8ICdqc29uJztcblxuZXhwb3J0IGludGVyZmFjZSBFeHByVG9rZW4ge1xuICBraW5kOiAnZXhwcic7XG4gIHBhdGg6IHN0cmluZ1tdOyAvLyBlLmcuIFsncGlwZWxpbmUnLCAnbWV0YWRhdGEnLCAnZW52J11cbiAgZGVmYXVsdFZhbHVlPzogc3RyaW5nOyAvLyB2YWx1ZSBmb3IgYHwgZGVmYXVsdDogJy4uLidgIGZpbHRlclxuICBjb2VyY2U/OiBDb2VyY2VLaW5kOyAvLyBgfCBudW1iZXJgLCBgfCBib29sYCwgYHwganNvbmBcbiAgc291cmNlOiBzdHJpbmc7IC8vIG9yaWdpbmFsIFwie3sgLi4uIH19XCIgdGV4dCAoZm9yIGVycm9yIG1lc3NhZ2VzKVxuICBwb3M6IFNvdXJjZVBvc2l0aW9uO1xufVxuXG5leHBvcnQgdHlwZSBUb2tlbiA9IExpdGVyYWxUb2tlbiB8IEV4cHJUb2tlbjtcblxuZXhwb3J0IGNsYXNzIFRva2VuaXplckVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICBjb25zdHJ1Y3RvcihcbiAgICBtZXNzYWdlOiBzdHJpbmcsXG4gICAgcHVibGljIHJlYWRvbmx5IHBvczogU291cmNlUG9zaXRpb24sXG4gICkge1xuICAgIHN1cGVyKGAke21lc3NhZ2V9IGF0IGxpbmUgJHtwb3MubGluZX0sIGNvbCAke3Bvcy5jb2x9YCk7XG4gICAgdGhpcy5uYW1lID0gJ1Rva2VuaXplckVycm9yJztcbiAgfVxufVxuXG4vKipcbiAqIFRva2VuaXplIGEgdGVtcGxhdGUgc291cmNlIHN0cmluZy4gTmV2ZXIgdGhyb3dzIG9uIHZhbGlkIGlucHV0O1xuICogdGhyb3dzIGBUb2tlbml6ZXJFcnJvcmAgd2l0aCBzb3VyY2UgcG9zaXRpb24gb24gbWFsZm9ybWVkIHRlbXBsYXRlcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRva2VuaXplKHNvdXJjZTogc3RyaW5nKTogVG9rZW5bXSB7XG4gIC8vIEJ5dGUgY291bnQsIG5vdCBgLmxlbmd0aGAgKFVURi0xNiBjb2RlIHVuaXRzKTogdGhlIGNhcCBpcyBzdGF0ZWQgaW4gYnl0ZXMsXG4gIC8vIGFuZCBtdWx0aS1ieXRlIGNoYXJhY3RlcnMgKGVtb2ppLCBub24tQVNDSUkpIHdvdWxkIG90aGVyd2lzZSBiZSB1bmRlcmNvdW50ZWQuXG4gIGlmIChCdWZmZXIuYnl0ZUxlbmd0aChzb3VyY2UsICd1dGY4JykgPiBNQVhfRklFTERfU0laRV9CWVRFUykge1xuICAgIHRocm93IG5ldyBUb2tlbml6ZXJFcnJvcihcbiAgICAgIGBGaWVsZCBleGNlZWRzIG1heCBzaXplIG9mICR7TUFYX0ZJRUxEX1NJWkVfQllURVN9IGJ5dGVzYCxcbiAgICAgIHsgbGluZTogMSwgY29sOiAxIH0sXG4gICAgKTtcbiAgfVxuXG4gIGNvbnN0IHRva2VuczogVG9rZW5bXSA9IFtdO1xuICBsZXQgaSA9IDA7XG4gIGxldCBsaW5lID0gMTtcbiAgbGV0IGNvbCA9IDE7XG4gIGxldCBsaXRlcmFsU3RhcnQgPSAwO1xuICBsZXQgbGl0ZXJhbFN0YXJ0UG9zOiBTb3VyY2VQb3NpdGlvbiA9IHsgbGluZTogMSwgY29sOiAxIH07XG5cbiAgY29uc3QgYWR2YW5jZSA9IChuOiBudW1iZXIpOiB2b2lkID0+IHtcbiAgICBmb3IgKGxldCBrID0gMDsgayA8IG47IGsrKykge1xuICAgICAgaWYgKHNvdXJjZVtpICsga10gPT09ICdcXG4nKSB7XG4gICAgICAgIGxpbmUrKztcbiAgICAgICAgY29sID0gMTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbCsrO1xuICAgICAgfVxuICAgIH1cbiAgICBpICs9IG47XG4gIH07XG5cbiAgY29uc3QgZmx1c2hMaXRlcmFsID0gKGVuZElkeDogbnVtYmVyKTogdm9pZCA9PiB7XG4gICAgaWYgKGVuZElkeCA+IGxpdGVyYWxTdGFydCkge1xuICAgICAgLy8gVW5lc2NhcGUgYHt7e3tgIOKGkiBge3tgXG4gICAgICBjb25zdCByYXcgPSBzb3VyY2Uuc2xpY2UobGl0ZXJhbFN0YXJ0LCBlbmRJZHgpO1xuICAgICAgY29uc3QgdmFsdWUgPSByYXcucmVwbGFjZSgvXFx7XFx7XFx7XFx7L2csICd7eycpO1xuICAgICAgdG9rZW5zLnB1c2goeyBraW5kOiAnbGl0ZXJhbCcsIHZhbHVlLCBwb3M6IGxpdGVyYWxTdGFydFBvcyB9KTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3Qgc3RhcnRMaXRlcmFsID0gKCk6IHZvaWQgPT4ge1xuICAgIGxpdGVyYWxTdGFydCA9IGk7XG4gICAgbGl0ZXJhbFN0YXJ0UG9zID0geyBsaW5lLCBjb2wgfTtcbiAgfTtcblxuICBzdGFydExpdGVyYWwoKTtcblxuICB3aGlsZSAoaSA8IHNvdXJjZS5sZW5ndGgpIHtcbiAgICAvLyBFc2NhcGU6IGB7e3t7YCDihpIgbGl0ZXJhbCBge3tgXG4gICAgaWYgKHNvdXJjZS5zdGFydHNXaXRoKCd7e3t7JywgaSkpIHtcbiAgICAgIGFkdmFuY2UoNCk7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgLy8gRXhwcmVzc2lvbiBzdGFydFxuICAgIGlmIChzb3VyY2Uuc3RhcnRzV2l0aCgne3snLCBpKSkge1xuICAgICAgZmx1c2hMaXRlcmFsKGkpO1xuICAgICAgY29uc3QgZXhwclBvczogU291cmNlUG9zaXRpb24gPSB7IGxpbmUsIGNvbCB9O1xuICAgICAgYWR2YW5jZSgyKTtcbiAgICAgIGNvbnN0IGV4cHIgPSByZWFkRXhwcmVzc2lvbihzb3VyY2UsIGksIGxpbmUsIGNvbCk7XG4gICAgICB0b2tlbnMucHVzaCh7XG4gICAgICAgIGtpbmQ6ICdleHByJyxcbiAgICAgICAgcGF0aDogZXhwci5wYXRoLFxuICAgICAgICBkZWZhdWx0VmFsdWU6IGV4cHIuZGVmYXVsdFZhbHVlLFxuICAgICAgICBjb2VyY2U6IGV4cHIuY29lcmNlLFxuICAgICAgICBzb3VyY2U6IHNvdXJjZS5zbGljZShpIC0gMiwgZXhwci5lbmRJZHgpLFxuICAgICAgICBwb3M6IGV4cHJQb3MsXG4gICAgICB9KTtcbiAgICAgIGFkdmFuY2UoZXhwci5lbmRJZHggLSBpKTtcbiAgICAgIHN0YXJ0TGl0ZXJhbCgpO1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIC8vIFN0cmF5IGB9fWAgb3V0c2lkZSBhbiBleHByZXNzaW9uXG4gICAgaWYgKHNvdXJjZS5zdGFydHNXaXRoKCd9fScsIGkpKSB7XG4gICAgICB0aHJvdyBuZXcgVG9rZW5pemVyRXJyb3IoXCJVbmV4cGVjdGVkICd9fScgb3V0c2lkZSBleHByZXNzaW9uXCIsIHsgbGluZSwgY29sIH0pO1xuICAgIH1cbiAgICBhZHZhbmNlKDEpO1xuICB9XG5cbiAgZmx1c2hMaXRlcmFsKGkpO1xuICByZXR1cm4gdG9rZW5zO1xufVxuXG5pbnRlcmZhY2UgUGFyc2VkRXhwciB7XG4gIHBhdGg6IHN0cmluZ1tdO1xuICBkZWZhdWx0VmFsdWU/OiBzdHJpbmc7XG4gIGNvZXJjZT86IENvZXJjZUtpbmQ7XG4gIGVuZElkeDogbnVtYmVyO1xufVxuXG5mdW5jdGlvbiByZWFkRXhwcmVzc2lvbihcbiAgc291cmNlOiBzdHJpbmcsXG4gIHN0YXJ0SWR4OiBudW1iZXIsXG4gIHN0YXJ0TGluZTogbnVtYmVyLFxuICBzdGFydENvbDogbnVtYmVyLFxuKTogUGFyc2VkRXhwciB7XG4gIGxldCBpID0gc3RhcnRJZHg7XG4gIGxldCBsaW5lID0gc3RhcnRMaW5lO1xuICBsZXQgY29sID0gc3RhcnRDb2w7XG5cbiAgY29uc3Qgc2tpcFdzID0gKCk6IHZvaWQgPT4ge1xuICAgIHdoaWxlIChpIDwgc291cmNlLmxlbmd0aCAmJiAoc291cmNlW2ldID09PSAnICcgfHwgc291cmNlW2ldID09PSAnXFx0JykpIHtcbiAgICAgIGkrKztcbiAgICAgIGNvbCsrO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCByZWFkSWRlbnRpZmllciA9ICgpOiBzdHJpbmcgPT4ge1xuICAgIGNvbnN0IHN0YXJ0SSA9IGk7XG4gICAgaWYgKGkgPj0gc291cmNlLmxlbmd0aCB8fCAhL1thLXpBLVpfXS8udGVzdChzb3VyY2VbaV0hKSkge1xuICAgICAgdGhyb3cgbmV3IFRva2VuaXplckVycm9yKFxuICAgICAgICAnRXhwZWN0ZWQgaWRlbnRpZmllciBpbnNpZGUgdGVtcGxhdGUgZXhwcmVzc2lvbicsXG4gICAgICAgIHsgbGluZSwgY29sIH0sXG4gICAgICApO1xuICAgIH1cbiAgICB3aGlsZSAoaSA8IHNvdXJjZS5sZW5ndGggJiYgL1thLXpBLVowLTlfXS8udGVzdChzb3VyY2VbaV0hKSkge1xuICAgICAgaSsrO1xuICAgICAgY29sKys7XG4gICAgfVxuICAgIGNvbnN0IGlkZW50ID0gc291cmNlLnNsaWNlKHN0YXJ0SSwgaSk7XG4gICAgaWYgKGlkZW50Lmxlbmd0aCA+IE1BWF9JREVOVElGSUVSX0xFTkdUSCkge1xuICAgICAgdGhyb3cgbmV3IFRva2VuaXplckVycm9yKFxuICAgICAgICBgSWRlbnRpZmllciBleGNlZWRzIG1heCBsZW5ndGggb2YgJHtNQVhfSURFTlRJRklFUl9MRU5HVEh9YCxcbiAgICAgICAgeyBsaW5lLCBjb2w6IGNvbCAtIGlkZW50Lmxlbmd0aCB9LFxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIGlkZW50O1xuICB9O1xuXG4gIGNvbnN0IHJlYWRRdW90ZWQgPSAoKTogc3RyaW5nID0+IHtcbiAgICBjb25zdCBxdW90ZSA9IHNvdXJjZVtpXTtcbiAgICBpZiAocXVvdGUgIT09ICdcIicgJiYgcXVvdGUgIT09IFwiJ1wiKSB7XG4gICAgICB0aHJvdyBuZXcgVG9rZW5pemVyRXJyb3IoJ0V4cGVjdGVkIHF1b3RlZCBzdHJpbmcnLCB7IGxpbmUsIGNvbCB9KTtcbiAgICB9XG4gICAgaSsrOyBjb2wrKztcbiAgICBjb25zdCBwYXJ0czogc3RyaW5nW10gPSBbXTtcbiAgICB3aGlsZSAoaSA8IHNvdXJjZS5sZW5ndGggJiYgc291cmNlW2ldICE9PSBxdW90ZSkge1xuICAgICAgaWYgKHNvdXJjZVtpXSA9PT0gJ1xcXFwnKSB7XG4gICAgICAgIGNvbnN0IG5leHQgPSBzb3VyY2VbaSArIDFdO1xuICAgICAgICBpZiAobmV4dCA9PT0gJ1xcXFwnIHx8IG5leHQgPT09IHF1b3RlKSB7XG4gICAgICAgICAgcGFydHMucHVzaChuZXh0KTtcbiAgICAgICAgICBpICs9IDI7XG4gICAgICAgICAgY29sICs9IDI7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgdGhyb3cgbmV3IFRva2VuaXplckVycm9yKFxuICAgICAgICAgIGBJbnZhbGlkIGVzY2FwZSAnXFxcXCR7bmV4dCA/PyAnJ30nIGluIHF1b3RlZCBzdHJpbmdgLFxuICAgICAgICAgIHsgbGluZSwgY29sIH0sXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBpZiAoc291cmNlW2ldID09PSAnXFxuJykge1xuICAgICAgICB0aHJvdyBuZXcgVG9rZW5pemVyRXJyb3IoJ1VudGVybWluYXRlZCBxdW90ZWQgc3RyaW5nJywgeyBsaW5lLCBjb2wgfSk7XG4gICAgICB9XG4gICAgICBwYXJ0cy5wdXNoKHNvdXJjZVtpXSEpO1xuICAgICAgaSsrOyBjb2wrKztcbiAgICB9XG4gICAgaWYgKGkgPj0gc291cmNlLmxlbmd0aCkge1xuICAgICAgdGhyb3cgbmV3IFRva2VuaXplckVycm9yKCdVbnRlcm1pbmF0ZWQgcXVvdGVkIHN0cmluZycsIHsgbGluZSwgY29sIH0pO1xuICAgIH1cbiAgICBpKys7IGNvbCsrOyAvLyBjb25zdW1lIGNsb3NpbmcgcXVvdGVcbiAgICByZXR1cm4gcGFydHMuam9pbignJyk7XG4gIH07XG5cbiAgc2tpcFdzKCk7XG4gIGNvbnN0IHBhdGg6IHN0cmluZ1tdID0gW3JlYWRJZGVudGlmaWVyKCldO1xuICB3aGlsZSAoaSA8IHNvdXJjZS5sZW5ndGggJiYgc291cmNlW2ldID09PSAnLicpIHtcbiAgICBpKys7IGNvbCsrO1xuICAgIHBhdGgucHVzaChyZWFkSWRlbnRpZmllcigpKTtcbiAgICBpZiAocGF0aC5sZW5ndGggPiBNQVhfUEFUSF9ERVBUSCkge1xuICAgICAgdGhyb3cgbmV3IFRva2VuaXplckVycm9yKFxuICAgICAgICBgUGF0aCBkZXB0aCBleGNlZWRzIG1heCBvZiAke01BWF9QQVRIX0RFUFRIfWAsXG4gICAgICAgIHsgbGluZSwgY29sIH0sXG4gICAgICApO1xuICAgIH1cbiAgfVxuICBza2lwV3MoKTtcblxuICBsZXQgZGVmYXVsdFZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIGxldCBjb2VyY2U6IENvZXJjZUtpbmQgfCB1bmRlZmluZWQ7XG5cbiAgLy8gRmlsdGVycyBjaGFpbjogYHwgZGVmYXVsdDogJ3gnIHwgbnVtYmVyYCwgYHwgYm9vbGAsIGB8IGpzb25gLCBldGMuXG4gIC8vIC0gYGRlZmF1bHRgIHRha2VzIGEgcXVvdGVkIGFyZ3VtZW50IOKAlCBhcHBsaWVkIGZpcnN0IChiZWZvcmUgY29lcmNpb24pXG4gIC8vIC0gYG51bWJlcmAsIGBib29sYCwgYGpzb25gIGFyZSBhcmd1bWVudC1sZXNzIGNvZXJjaW9uIGZpbHRlcnMg4oCUIGFwcGxpZWQgbGFzdFxuICB3aGlsZSAoc291cmNlW2ldID09PSAnfCcpIHtcbiAgICBpKys7IGNvbCsrO1xuICAgIHNraXBXcygpO1xuXG4gICAgaWYgKHNvdXJjZS5zdGFydHNXaXRoKCdkZWZhdWx0JywgaSkpIHtcbiAgICAgIGlmIChkZWZhdWx0VmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICB0aHJvdyBuZXcgVG9rZW5pemVyRXJyb3IoXCInZGVmYXVsdCcgZmlsdGVyIG1heSBvbmx5IGFwcGVhciBvbmNlXCIsIHsgbGluZSwgY29sIH0pO1xuICAgICAgfVxuICAgICAgaSArPSAnZGVmYXVsdCcubGVuZ3RoO1xuICAgICAgY29sICs9ICdkZWZhdWx0Jy5sZW5ndGg7XG4gICAgICBza2lwV3MoKTtcbiAgICAgIGlmIChzb3VyY2VbaV0gIT09ICc6Jykge1xuICAgICAgICB0aHJvdyBuZXcgVG9rZW5pemVyRXJyb3IoXCJFeHBlY3RlZCAnOicgYWZ0ZXIgJ2RlZmF1bHQnXCIsIHsgbGluZSwgY29sIH0pO1xuICAgICAgfVxuICAgICAgaSsrOyBjb2wrKztcbiAgICAgIHNraXBXcygpO1xuICAgICAgZGVmYXVsdFZhbHVlID0gcmVhZFF1b3RlZCgpO1xuICAgICAgc2tpcFdzKCk7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBsZXQgbWF0Y2hlZENvZXJjZTogQ29lcmNlS2luZCB8IG51bGwgPSBudWxsO1xuICAgIGZvciAoY29uc3Qga2luZCBvZiBbJ251bWJlcicsICdib29sJywgJ2pzb24nXSBhcyBjb25zdCkge1xuICAgICAgaWYgKHNvdXJjZS5zdGFydHNXaXRoKGtpbmQsIGkpKSB7XG4gICAgICAgIC8vIEVuc3VyZSBpZGVudGlmaWVyIGJvdW5kYXJ5IOKAlCBgbnVtYmVyaXNoYCBtdXN0IG5vdCBtYXRjaCBgbnVtYmVyYFxuICAgICAgICBjb25zdCBuZXh0ID0gc291cmNlW2kgKyBraW5kLmxlbmd0aF07XG4gICAgICAgIGlmICghbmV4dCB8fCAhL1thLXpBLVowLTlfXS8udGVzdChuZXh0KSkge1xuICAgICAgICAgIG1hdGNoZWRDb2VyY2UgPSBraW5kO1xuICAgICAgICAgIGkgKz0ga2luZC5sZW5ndGg7XG4gICAgICAgICAgY29sICs9IGtpbmQubGVuZ3RoO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCFtYXRjaGVkQ29lcmNlKSB7XG4gICAgICB0aHJvdyBuZXcgVG9rZW5pemVyRXJyb3IoXG4gICAgICAgIFwiVW5rbm93biBmaWx0ZXIg4oCUIHN1cHBvcnRlZDogJ2RlZmF1bHQnLCAnbnVtYmVyJywgJ2Jvb2wnLCAnanNvbidcIixcbiAgICAgICAgeyBsaW5lLCBjb2wgfSxcbiAgICAgICk7XG4gICAgfVxuICAgIGlmIChjb2VyY2UpIHtcbiAgICAgIHRocm93IG5ldyBUb2tlbml6ZXJFcnJvcignT25seSBvbmUgY29lcmNpb24gZmlsdGVyIGlzIGFsbG93ZWQgcGVyIGV4cHJlc3Npb24nLCB7IGxpbmUsIGNvbCB9KTtcbiAgICB9XG4gICAgY29lcmNlID0gbWF0Y2hlZENvZXJjZTtcbiAgICBza2lwV3MoKTtcbiAgfVxuXG4gIGlmICghc291cmNlLnN0YXJ0c1dpdGgoJ319JywgaSkpIHtcbiAgICB0aHJvdyBuZXcgVG9rZW5pemVyRXJyb3IoXCJFeHBlY3RlZCAnfX0nXCIsIHsgbGluZSwgY29sIH0pO1xuICB9XG4gIGkgKz0gMjtcbiAgcmV0dXJuIHsgcGF0aCwgZGVmYXVsdFZhbHVlLCBjb2VyY2UsIGVuZElkeDogaSB9O1xufVxuXG4vKipcbiAqIENvbnZlbmllbmNlOiByZXR1cm5zIHRydWUgaWYgdGhlIHNvdXJjZSBjb250YWlucyBhbnkgdGVtcGxhdGVzLlxuICogVXNlZCBhcyBhIGZhc3QtcGF0aCB0byBza2lwIHRva2VuaXphdGlvbiBmb3Igc3RyaW5ncyB0aGF0IGFyZSBvYnZpb3VzbHkgbGl0ZXJhbC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGhhc1RlbXBsYXRlKHNvdXJjZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gIC8vIE5vdCBjb21wbGV0ZWx5IGFjY3VyYXRlIChhIGxvbmUgYHt7e3tgIHdvdWxkIHJldHVybiB0cnVlKSBidXQgdGhhdCdzIGZpbmUg4oCUXG4gIC8vIHRva2VuaXplKCkgd2lsbCBwcm9kdWNlIGEgbGl0ZXJhbC1vbmx5IHRva2VuIGxpc3QgYW5kIHJvdW5kLXRyaXAgY29ycmVjdGx5LlxuICByZXR1cm4gc291cmNlLmluY2x1ZGVzKCd7eycpO1xufVxuIl19
|
|
@@ -30,7 +30,7 @@ export declare function allowedScopeRoots(roots: string[]): (path: string[]) =>
|
|
|
30
30
|
*
|
|
31
31
|
* Caller supplies `isTemplatable` (the schema allow-list) and
|
|
32
32
|
* `isKnownPath` (the scope-shape predicate). Template text is parsed
|
|
33
|
-
* fresh
|
|
33
|
+
* fresh on each call.
|
|
34
34
|
*/
|
|
35
35
|
export declare function validateTemplates<T extends object>(doc: T, isTemplatable: FieldPredicate, isKnownPath: (path: string[]) => boolean): ValidationResult;
|
|
36
36
|
/**
|
package/lib/template/validate.js
CHANGED
|
@@ -28,7 +28,7 @@ export function allowedScopeRoots(roots) {
|
|
|
28
28
|
*
|
|
29
29
|
* Caller supplies `isTemplatable` (the schema allow-list) and
|
|
30
30
|
* `isKnownPath` (the scope-shape predicate). Template text is parsed
|
|
31
|
-
* fresh
|
|
31
|
+
* fresh on each call.
|
|
32
32
|
*/
|
|
33
33
|
export function validateTemplates(doc, isTemplatable, isKnownPath) {
|
|
34
34
|
const errors = [];
|
|
@@ -93,4 +93,4 @@ export function detectCycles(doc, isTemplatable, fieldToScopePath) {
|
|
|
93
93
|
function mkErr(field, pos, code, message, path) {
|
|
94
94
|
return { field, line: pos.line, col: pos.col, code, message, ...(path && { path }) };
|
|
95
95
|
}
|
|
96
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdGVtcGxhdGUvdmFsaWRhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQUV0QyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlDLE9BQU8sRUFBbUMsY0FBYyxFQUFFLFFBQVEsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNGLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMxQyxPQUFPLEVBQXVCLFlBQVksRUFBRSxXQUFXLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFpQjdFOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxVQUFVLGlCQUFpQixDQUFDLEtBQWU7SUFDL0MsTUFBTSxPQUFPLEdBQUcsSUFBSSxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDL0IsT0FBTyxDQUFDLElBQUksRUFBRSxFQUFFO1FBQ2QsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3JCLE9BQU8sQ0FBQyxDQUFDLElBQUksSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3JDLENBQUMsQ0FBQztBQUNKLENBQUM7QUFFRDs7Ozs7Ozs7R0FRRztBQUNILE1BQU0sVUFBVSxpQkFBaUIsQ0FDL0IsR0FBTSxFQUNOLGFBQTZCLEVBQzdCLFdBQXdDO0lBRXhDLE1BQU0sTUFBTSxHQUFvQixFQUFFLENBQUM7SUFDbkMsTUFBTSxPQUFPLEdBQXlDLEVBQUUsQ0FBQztJQUV6RCx5RUFBeUU7SUFDekUsZ0NBQWdDO0lBQ2hDLFlBQVksQ0FBQyxHQUFHLEVBQUUsYUFBYSxFQUFFLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxFQUFFO1FBQ2pELElBQUksQ0FBQztZQUNILE9B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Q1osSUFBSSxFQUFFLFNBQVMsQ0FBQyxjQUFjO1FBQzlCLE9BQU8sRUFBRSw0QkFBNEIsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRTtRQUNyRCxLQUFLLEVBQUUsQ0FBQztLQUNULENBQUMsQ0FBQyxDQUFDO0FBQ04sQ0FBQztBQUVELCtFQUErRTtBQUUvRSxTQUFTLEtBQUssQ0FDWixLQUFhLEVBQ2IsR0FBbUIsRUFDbkIsSUFBZSxFQUNmLE9BQWUsRUFDZixJQUFhO0lBRWIsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDLElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLEdBQUcsQ0FBQyxJQUFJLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUM7QUFDdkYsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG5pbXBvcnQgeyBFcnJvckNvZGUgfSBmcm9tICdAcGlwZWxpbmUtYnVpbGRlci9hcGktY29yZSc7XG5pbXBvcnQgeyBkZXBlbmRlbmNpZXMgfSBmcm9tICcuL2V2YWx1YXRvci5qcyc7XG5pbXBvcnQgeyB0eXBlIFNvdXJjZVBvc2l0aW9uLCB0eXBlIFRva2VuLCBUb2tlbml6ZXJFcnJvciwgdG9rZW5pemUgfSBmcm9tICcuL3Rva2VuaXplci5qcyc7XG5pbXBvcnQgeyB0b3BvU29ydCB9IGZyb20gJy4vdG9wby1zb3J0LmpzJztcbmltcG9ydCB7IHR5cGUgRmllbGRQcmVkaWNhdGUsIHZpc2l0U3RyaW5ncywgd2Fsa0FuZEJpbmQgfSBmcm9tICcuL3dhbGtlci5qcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGVtcGxhdGVFcnJvciB7XG4gIGZpZWxkOiBzdHJpbmc7XG4gIGxpbmU/OiBudW1iZXI7XG4gIGNvbD86IG51bWJlcjtcbiAgY29kZTogRXJyb3JDb2RlO1xuICBtZXNzYWdlOiBzdHJpbmc7XG4gIHBhdGg/OiBzdHJpbmc7XG4gIGN5Y2xlPzogc3RyaW5nW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVmFsaWRhdGlvblJlc3VsdCB7XG4gIHZhbGlkOiBib29sZWFuO1xuICBlcnJvcnM6IFRlbXBsYXRlRXJyb3JbXTtcbn1cblxuLyoqXG4gKiBCdWlsZCBhIHByZWRpY2F0ZSB0aGF0IGFjY2VwdHMgYSB0ZW1wbGF0ZSBwYXRoIHdoZW4gaXRzIHJvb3QgaXMgaW4gdGhlXG4gKiBnaXZlbiBhbGxvdy1saXN0LiBVc2VkIGJ5IHRoZSB2YWxpZGF0b3IgdG8gY2hlY2sgdGhhdCBldmVyeSBge3sgcGF0aCB9fWBcbiAqIHJlc29sdmVzIHRvIGEga25vd24gc2NvcGUgcm9vdCAoYHBpcGVsaW5lYCwgYHBsdWdpbmAsIGBlbnZgLCDigKYpLlxuICpcbiAqIE9ubHkgdGhlIHJvb3Qgc2VnbWVudCBpcyBjaGVja2VkIOKAlCB3ZSBkb24ndCBlbmZvcmNlIGV4YWN0IG5lc3RlZC1rZXlcbiAqIGV4aXN0ZW5jZSBoZXJlIGJlY2F1c2UgbWV0YWRhdGEgLyB2YXJzIGtleXMgYXJlIHVzZXItcHJvdmlkZWQgcGVyIHBpcGVsaW5lXG4gKiBhbmQgbm90IGtub3duIGF0IHBsdWdpbiB1cGxvYWQgdGltZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFsbG93ZWRTY29wZVJvb3RzKHJvb3RzOiBzdHJpbmdbXSk6IChwYXRoOiBzdHJpbmdbXSkgPT4gYm9vbGVhbiB7XG4gIGNvbnN0IGFsbG93ZWQgPSBuZXcgU2V0KHJvb3RzKTtcbiAgcmV0dXJuIChwYXRoKSA9PiB7XG4gICAgY29uc3Qgcm9vdCA9IHBhdGhbMF07XG4gICAgcmV0dXJuICEhcm9vdCAmJiBhbGxvd2VkLmhhcyhyb290KTtcbiAgfTtcbn1cblxuLyoqXG4gKiBWYWxpZGF0ZSBhbGwgdGVtcGxhdGUgdG9rZW5zIGluIGEgZG9jdW1lbnQgaGF2ZSB3ZWxsLWZvcm1lZCBwYXRocyBhbmRcbiAqIHBvaW50IGF0IGFsbG93ZWQgc2NvcGUgcm9vdHMuIFJldHVybnMgYWxsIGVycm9ycyBmb3VuZCDigJQgZG9lcyBOT1Qgc3RvcFxuICogb24gZmlyc3QuXG4gKlxuICogQ2FsbGVyIHN1cHBsaWVzIGBpc1RlbXBsYXRhYmxlYCAodGhlIHNjaGVtYSBhbGxvdy1saXN0KSBhbmRcbiAqIGBpc0tub3duUGF0aGAgKHRoZSBzY29wZS1zaGFwZSBwcmVkaWNhdGUpLiBUZW1wbGF0ZSB0ZXh0IGlzIHBhcnNlZFxuICogZnJlc2g7IHVzZSBhIFRva2VuQ2FjaGUgZXh0ZXJuYWxseSBpZiByZXBlYXRlZCBwYXJzaW5nIGlzIGEgY29uY2Vybi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlVGVtcGxhdGVzPFQgZXh0ZW5kcyBvYmplY3Q+KFxuICBkb2M6IFQsXG4gIGlzVGVtcGxhdGFibGU6IEZpZWxkUHJlZGljYXRlLFxuICBpc0tub3duUGF0aDogKHBhdGg6IHN0cmluZ1tdKSA9PiBib29sZWFuLFxuKTogVmFsaWRhdGlvblJlc3VsdCB7XG4gIGNvbnN0IGVycm9yczogVGVtcGxhdGVFcnJvcltdID0gW107XG4gIGNvbnN0IGVudHJpZXM6IHsgZmllbGQ6IHN0cmluZzsgdG9rZW5zOiBUb2tlbltdIH1bXSA9IFtdO1xuXG4gIC8vIFBhc3MgMTogcGFyc2UgZXZlcnkgdGVtcGxhdGFibGUgZmllbGQsIGNvbGxlY3RpbmcgcGFyc2UgZXJyb3JzIGluc3RlYWRcbiAgLy8gb2YgdGhyb3dpbmcgb24gdGhlIGZpcnN0IG9uZS5cbiAgdmlzaXRTdHJpbmdzKGRvYywgaXNUZW1wbGF0YWJsZSwgKGZpZWxkLCBzb3VyY2UpID0+IHtcbiAgICB0cnkge1xuICAgICAgZW50cmllcy5wdXNoKHsgZmllbGQsIHRva2VuczogdG9rZW5pemUoc291cmNlKSB9KTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGlmIChlcnIgaW5zdGFuY2VvZiBUb2tlbml6ZXJFcnJvcikge1xuICAgICAgICBlcnJvcnMucHVzaCh7IGZpZWxkLCBsaW5lOiBlcnIucG9zLmxpbmUsIGNvbDogZXJyLnBvcy5jb2wsIGNvZGU6IEVycm9yQ29kZS5URU1QTEFURV9QQVJTRV9FUlJPUiwgbWVzc2FnZTogZXJyLm1lc3NhZ2UgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBlcnJvcnMucHVzaCh7IGZpZWxkLCBjb2RlOiBFcnJvckNvZGUuVEVNUExBVEVfUEFSU0VfRVJST1IsIG1lc3NhZ2U6IFN0cmluZyhlcnIpIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG5cbiAgLy8gUGFzcyAyOiB2YWxpZGF0ZSBlYWNoIGV4cHIncyBwYXRoIGlzIHNoYXBlLWFsbG93ZWQgYW5kIG5vdCByZXNlcnZlZFxuICBmb3IgKGNvbnN0IHsgZmllbGQsIHRva2VucyB9IG9mIGVudHJpZXMpIHtcbiAgICBmb3IgKGNvbnN0IHRvayBvZiB0b2tlbnMpIHtcbiAgICAgIGlmICh0b2sua2luZCAhPT0gJ2V4cHInKSBjb250aW51ZTtcbiAgICAgIGlmICh0b2sucGF0aFswXSA9PT0gJ3NlY3JldHMnKSB7XG4gICAgICAgIGVycm9ycy5wdXNoKG1rRXJyKGZpZWxkLCB0b2sucG9zLCBFcnJvckNvZGUuVEVNUExBVEVfU0VDUkVUU19SRVNFUlZFRCxcbiAgICAgICAgICAnXFwnc2VjcmV0c1xcJyBpcyBhIHJlc2VydmVkIHNjb3BlIOKAlCB1c2UgdGhlIHBsdWdpblxcJ3MgXFwnc2VjcmV0czpcXCcgZmllbGQgaW5zdGVhZCcsXG4gICAgICAgICAgdG9rLnBhdGguam9pbignLicpKSk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgaWYgKCFpc0tub3duUGF0aCh0b2sucGF0aCkpIHtcbiAgICAgICAgZXJyb3JzLnB1c2gobWtFcnIoZmllbGQsIHRvay5wb3MsIEVycm9yQ29kZS5URU1QTEFURV9VTktOT1dOX1BBVEgsXG4gICAgICAgICAgYFRlbXBsYXRlIHJlZmVyZW5jZXMgdW5rbm93biBzY29wZSByb290ICcke3Rvay5wYXRoWzBdfSdgLFxuICAgICAgICAgIHRvay5wYXRoLmpvaW4oJy4nKSkpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7IHZhbGlkOiBlcnJvcnMubGVuZ3RoID09PSAwLCBlcnJvcnMgfTtcbn1cblxuLyoqXG4gKiBEZXRlY3QgY3ljbGVzIGluIGEgc2VsZi1yZWZlcmVuY2luZyBkb2N1bWVudC4gQ2FsbGVyIHN1cHBsaWVzIHRoZVxuICogdGVtcGxhdGFibGUgcHJlZGljYXRlIGFuZCBhIGZ1bmN0aW9uIHRvIGV4dHJhY3QgdGhlIHNjb3BlLXBhdGggdGhhdFxuICogZWFjaCB0ZW1wbGF0ZSBmaWVsZCB3cml0ZXMgdG8gKHNhbWUgdmFsdWUgdXNlZCBhcyBhIGtleSBpbiBkZXBzKS5cbiAqXG4gKiBFeGFtcGxlIGZvciBwaXBlbGluZS5qc29uOiB0aGUgZmllbGQgYG1ldGFkYXRhLmVudmAgd3JpdGVzIHRvIHNjb3BlXG4gKiBwYXRoIGBtZXRhZGF0YS5lbnZgOyBhIHRlbXBsYXRlIGB7eyBtZXRhZGF0YS5yZWdpb24gfX1gIGluIHRoYXQgZmllbGRcbiAqIGRlY2xhcmVzIGEgZGVwZW5kZW5jeSBvbiBgbWV0YWRhdGEucmVnaW9uYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRldGVjdEN5Y2xlczxUIGV4dGVuZHMgb2JqZWN0PihcbiAgZG9jOiBULFxuICBpc1RlbXBsYXRhYmxlOiBGaWVsZFByZWRpY2F0ZSxcbiAgZmllbGRUb1Njb3BlUGF0aDogKGZpZWxkOiBzdHJpbmcpID0+IHN0cmluZyB8IG51bGwsXG4pOiBUZW1wbGF0ZUVycm9yW10ge1xuICBjb25zdCBub2RlcyA9IFtdO1xuICBmb3IgKGNvbnN0IGVudHJ5IG9mIHdhbGtBbmRCaW5kKGRvYywgaXNUZW1wbGF0YWJsZSkpIHtcbiAgICBjb25zdCBrZXkgPSBmaWVsZFRvU2NvcGVQYXRoKGVudHJ5LmZpZWxkKTtcbiAgICBpZiAoIWtleSkgY29udGludWU7XG4gICAgbm9kZXMucHVzaCh7IGtleSwgZGVwczogZGVwZW5kZW5jaWVzKGVudHJ5LnRva2VucykgfSk7XG4gIH1cbiAgY29uc3QgeyBjeWNsZXMgfSA9IHRvcG9Tb3J0KG5vZGVzKTtcbiAgcmV0dXJuIGN5Y2xlcy5tYXAoYyA9PiAoe1xuICAgIGZpZWxkOiBjWzBdISxcbiAgICBjb2RlOiBFcnJvckNvZGUuVEVNUExBVEVfQ1lDTEUsXG4gICAgbWVzc2FnZTogYFRlbXBsYXRlIGN5Y2xlIGRldGVjdGVkOiAke2Muam9pbignIC0+ICcpfWAsXG4gICAgY3ljbGU6IGMsXG4gIH0pKTtcbn1cblxuLy8gLS0gaGVscGVycyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5mdW5jdGlvbiBta0VycihcbiAgZmllbGQ6IHN0cmluZyxcbiAgcG9zOiBTb3VyY2VQb3NpdGlvbixcbiAgY29kZTogRXJyb3JDb2RlLFxuICBtZXNzYWdlOiBzdHJpbmcsXG4gIHBhdGg/OiBzdHJpbmcsXG4pOiBUZW1wbGF0ZUVycm9yIHtcbiAgcmV0dXJuIHsgZmllbGQsIGxpbmU6IHBvcy5saW5lLCBjb2w6IHBvcy5jb2wsIGNvZGUsIG1lc3NhZ2UsIC4uLihwYXRoICYmIHsgcGF0aCB9KSB9O1xufVxuXG4iXX0=
|
|
96
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdGVtcGxhdGUvdmFsaWRhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQUV0QyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlDLE9BQU8sRUFBbUMsY0FBYyxFQUFFLFFBQVEsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNGLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMxQyxPQUFPLEVBQXVCLFlBQVksRUFBRSxXQUFXLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFpQjdFOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxVQUFVLGlCQUFpQixDQUFDLEtBQWU7SUFDL0MsTUFBTSxPQUFPLEdBQUcsSUFBSSxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDL0IsT0FBTyxDQUFDLElBQUksRUFBRSxFQUFFO1FBQ2QsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3JCLE9BQU8sQ0FBQyxDQUFDLElBQUksSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3JDLENBQUMsQ0FBQztBQUNKLENBQUM7QUFFRDs7Ozs7Ozs7R0FRRztBQUNILE1BQU0sVUFBVSxpQkFBaUIsQ0FDL0IsR0FBTSxFQUNOLGFBQTZCLEVBQzdCLFdBQXdDO0lBRXhDLE1BQU0sTUFBTSxHQUFvQixFQUFFLENBQUM7SUFDbkMsTUFBTSxPQUFPLEdBQXlDLEVBQUUsQ0FBQztJQUV6RCx5RUFBeUU7SUFDekUsZ0NBQWdDO0lBQ2hDLFlBQVksQ0FBQyxHQUFHLEVBQUUsYUFBYSxFQUFFLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxFQUFFO1FBQ2pELElBQUksQ0FBQztZQUNILE9B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Q1osSUFBSSxFQUFFLFNBQVMsQ0FBQyxjQUFjO1FBQzlCLE9BQU8sRUFBRSw0QkFBNEIsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRTtRQUNyRCxLQUFLLEVBQUUsQ0FBQztLQUNULENBQUMsQ0FBQyxDQUFDO0FBQ04sQ0FBQztBQUVELCtFQUErRTtBQUUvRSxTQUFTLEtBQUssQ0FDWixLQUFhLEVBQ2IsR0FBbUIsRUFDbkIsSUFBZSxFQUNmLE9BQWUsRUFDZixJQUFhO0lBRWIsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDLElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLEdBQUcsQ0FBQyxJQUFJLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUM7QUFDdkYsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG5pbXBvcnQgeyBFcnJvckNvZGUgfSBmcm9tICdAcGlwZWxpbmUtYnVpbGRlci9hcGktY29yZSc7XG5pbXBvcnQgeyBkZXBlbmRlbmNpZXMgfSBmcm9tICcuL2V2YWx1YXRvci5qcyc7XG5pbXBvcnQgeyB0eXBlIFNvdXJjZVBvc2l0aW9uLCB0eXBlIFRva2VuLCBUb2tlbml6ZXJFcnJvciwgdG9rZW5pemUgfSBmcm9tICcuL3Rva2VuaXplci5qcyc7XG5pbXBvcnQgeyB0b3BvU29ydCB9IGZyb20gJy4vdG9wby1zb3J0LmpzJztcbmltcG9ydCB7IHR5cGUgRmllbGRQcmVkaWNhdGUsIHZpc2l0U3RyaW5ncywgd2Fsa0FuZEJpbmQgfSBmcm9tICcuL3dhbGtlci5qcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGVtcGxhdGVFcnJvciB7XG4gIGZpZWxkOiBzdHJpbmc7XG4gIGxpbmU/OiBudW1iZXI7XG4gIGNvbD86IG51bWJlcjtcbiAgY29kZTogRXJyb3JDb2RlO1xuICBtZXNzYWdlOiBzdHJpbmc7XG4gIHBhdGg/OiBzdHJpbmc7XG4gIGN5Y2xlPzogc3RyaW5nW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVmFsaWRhdGlvblJlc3VsdCB7XG4gIHZhbGlkOiBib29sZWFuO1xuICBlcnJvcnM6IFRlbXBsYXRlRXJyb3JbXTtcbn1cblxuLyoqXG4gKiBCdWlsZCBhIHByZWRpY2F0ZSB0aGF0IGFjY2VwdHMgYSB0ZW1wbGF0ZSBwYXRoIHdoZW4gaXRzIHJvb3QgaXMgaW4gdGhlXG4gKiBnaXZlbiBhbGxvdy1saXN0LiBVc2VkIGJ5IHRoZSB2YWxpZGF0b3IgdG8gY2hlY2sgdGhhdCBldmVyeSBge3sgcGF0aCB9fWBcbiAqIHJlc29sdmVzIHRvIGEga25vd24gc2NvcGUgcm9vdCAoYHBpcGVsaW5lYCwgYHBsdWdpbmAsIGBlbnZgLCDigKYpLlxuICpcbiAqIE9ubHkgdGhlIHJvb3Qgc2VnbWVudCBpcyBjaGVja2VkIOKAlCB3ZSBkb24ndCBlbmZvcmNlIGV4YWN0IG5lc3RlZC1rZXlcbiAqIGV4aXN0ZW5jZSBoZXJlIGJlY2F1c2UgbWV0YWRhdGEgLyB2YXJzIGtleXMgYXJlIHVzZXItcHJvdmlkZWQgcGVyIHBpcGVsaW5lXG4gKiBhbmQgbm90IGtub3duIGF0IHBsdWdpbiB1cGxvYWQgdGltZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFsbG93ZWRTY29wZVJvb3RzKHJvb3RzOiBzdHJpbmdbXSk6IChwYXRoOiBzdHJpbmdbXSkgPT4gYm9vbGVhbiB7XG4gIGNvbnN0IGFsbG93ZWQgPSBuZXcgU2V0KHJvb3RzKTtcbiAgcmV0dXJuIChwYXRoKSA9PiB7XG4gICAgY29uc3Qgcm9vdCA9IHBhdGhbMF07XG4gICAgcmV0dXJuICEhcm9vdCAmJiBhbGxvd2VkLmhhcyhyb290KTtcbiAgfTtcbn1cblxuLyoqXG4gKiBWYWxpZGF0ZSBhbGwgdGVtcGxhdGUgdG9rZW5zIGluIGEgZG9jdW1lbnQgaGF2ZSB3ZWxsLWZvcm1lZCBwYXRocyBhbmRcbiAqIHBvaW50IGF0IGFsbG93ZWQgc2NvcGUgcm9vdHMuIFJldHVybnMgYWxsIGVycm9ycyBmb3VuZCDigJQgZG9lcyBOT1Qgc3RvcFxuICogb24gZmlyc3QuXG4gKlxuICogQ2FsbGVyIHN1cHBsaWVzIGBpc1RlbXBsYXRhYmxlYCAodGhlIHNjaGVtYSBhbGxvdy1saXN0KSBhbmRcbiAqIGBpc0tub3duUGF0aGAgKHRoZSBzY29wZS1zaGFwZSBwcmVkaWNhdGUpLiBUZW1wbGF0ZSB0ZXh0IGlzIHBhcnNlZFxuICogZnJlc2ggb24gZWFjaCBjYWxsLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVUZW1wbGF0ZXM8VCBleHRlbmRzIG9iamVjdD4oXG4gIGRvYzogVCxcbiAgaXNUZW1wbGF0YWJsZTogRmllbGRQcmVkaWNhdGUsXG4gIGlzS25vd25QYXRoOiAocGF0aDogc3RyaW5nW10pID0+IGJvb2xlYW4sXG4pOiBWYWxpZGF0aW9uUmVzdWx0IHtcbiAgY29uc3QgZXJyb3JzOiBUZW1wbGF0ZUVycm9yW10gPSBbXTtcbiAgY29uc3QgZW50cmllczogeyBmaWVsZDogc3RyaW5nOyB0b2tlbnM6IFRva2VuW10gfVtdID0gW107XG5cbiAgLy8gUGFzcyAxOiBwYXJzZSBldmVyeSB0ZW1wbGF0YWJsZSBmaWVsZCwgY29sbGVjdGluZyBwYXJzZSBlcnJvcnMgaW5zdGVhZFxuICAvLyBvZiB0aHJvd2luZyBvbiB0aGUgZmlyc3Qgb25lLlxuICB2aXNpdFN0cmluZ3MoZG9jLCBpc1RlbXBsYXRhYmxlLCAoZmllbGQsIHNvdXJjZSkgPT4ge1xuICAgIHRyeSB7XG4gICAgICBlbnRyaWVzLnB1c2goeyBmaWVsZCwgdG9rZW5zOiB0b2tlbml6ZShzb3VyY2UpIH0pO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgaWYgKGVyciBpbnN0YW5jZW9mIFRva2VuaXplckVycm9yKSB7XG4gICAgICAgIGVycm9ycy5wdXNoKHsgZmllbGQsIGxpbmU6IGVyci5wb3MubGluZSwgY29sOiBlcnIucG9zLmNvbCwgY29kZTogRXJyb3JDb2RlLlRFTVBMQVRFX1BBUlNFX0VSUk9SLCBtZXNzYWdlOiBlcnIubWVzc2FnZSB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGVycm9ycy5wdXNoKHsgZmllbGQsIGNvZGU6IEVycm9yQ29kZS5URU1QTEFURV9QQVJTRV9FUlJPUiwgbWVzc2FnZTogU3RyaW5nKGVycikgfSk7XG4gICAgICB9XG4gICAgfVxuICB9KTtcblxuICAvLyBQYXNzIDI6IHZhbGlkYXRlIGVhY2ggZXhwcidzIHBhdGggaXMgc2hhcGUtYWxsb3dlZCBhbmQgbm90IHJlc2VydmVkXG4gIGZvciAoY29uc3QgeyBmaWVsZCwgdG9rZW5zIH0gb2YgZW50cmllcykge1xuICAgIGZvciAoY29uc3QgdG9rIG9mIHRva2Vucykge1xuICAgICAgaWYgKHRvay5raW5kICE9PSAnZXhwcicpIGNvbnRpbnVlO1xuICAgICAgaWYgKHRvay5wYXRoWzBdID09PSAnc2VjcmV0cycpIHtcbiAgICAgICAgZXJyb3JzLnB1c2gobWtFcnIoZmllbGQsIHRvay5wb3MsIEVycm9yQ29kZS5URU1QTEFURV9TRUNSRVRTX1JFU0VSVkVELFxuICAgICAgICAgICdcXCdzZWNyZXRzXFwnIGlzIGEgcmVzZXJ2ZWQgc2NvcGUg4oCUIHVzZSB0aGUgcGx1Z2luXFwncyBcXCdzZWNyZXRzOlxcJyBmaWVsZCBpbnN0ZWFkJyxcbiAgICAgICAgICB0b2sucGF0aC5qb2luKCcuJykpKTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBpZiAoIWlzS25vd25QYXRoKHRvay5wYXRoKSkge1xuICAgICAgICBlcnJvcnMucHVzaChta0VycihmaWVsZCwgdG9rLnBvcywgRXJyb3JDb2RlLlRFTVBMQVRFX1VOS05PV05fUEFUSCxcbiAgICAgICAgICBgVGVtcGxhdGUgcmVmZXJlbmNlcyB1bmtub3duIHNjb3BlIHJvb3QgJyR7dG9rLnBhdGhbMF19J2AsXG4gICAgICAgICAgdG9rLnBhdGguam9pbignLicpKSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHsgdmFsaWQ6IGVycm9ycy5sZW5ndGggPT09IDAsIGVycm9ycyB9O1xufVxuXG4vKipcbiAqIERldGVjdCBjeWNsZXMgaW4gYSBzZWxmLXJlZmVyZW5jaW5nIGRvY3VtZW50LiBDYWxsZXIgc3VwcGxpZXMgdGhlXG4gKiB0ZW1wbGF0YWJsZSBwcmVkaWNhdGUgYW5kIGEgZnVuY3Rpb24gdG8gZXh0cmFjdCB0aGUgc2NvcGUtcGF0aCB0aGF0XG4gKiBlYWNoIHRlbXBsYXRlIGZpZWxkIHdyaXRlcyB0byAoc2FtZSB2YWx1ZSB1c2VkIGFzIGEga2V5IGluIGRlcHMpLlxuICpcbiAqIEV4YW1wbGUgZm9yIHBpcGVsaW5lLmpzb246IHRoZSBmaWVsZCBgbWV0YWRhdGEuZW52YCB3cml0ZXMgdG8gc2NvcGVcbiAqIHBhdGggYG1ldGFkYXRhLmVudmA7IGEgdGVtcGxhdGUgYHt7IG1ldGFkYXRhLnJlZ2lvbiB9fWAgaW4gdGhhdCBmaWVsZFxuICogZGVjbGFyZXMgYSBkZXBlbmRlbmN5IG9uIGBtZXRhZGF0YS5yZWdpb25gLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZGV0ZWN0Q3ljbGVzPFQgZXh0ZW5kcyBvYmplY3Q+KFxuICBkb2M6IFQsXG4gIGlzVGVtcGxhdGFibGU6IEZpZWxkUHJlZGljYXRlLFxuICBmaWVsZFRvU2NvcGVQYXRoOiAoZmllbGQ6IHN0cmluZykgPT4gc3RyaW5nIHwgbnVsbCxcbik6IFRlbXBsYXRlRXJyb3JbXSB7XG4gIGNvbnN0IG5vZGVzID0gW107XG4gIGZvciAoY29uc3QgZW50cnkgb2Ygd2Fsa0FuZEJpbmQoZG9jLCBpc1RlbXBsYXRhYmxlKSkge1xuICAgIGNvbnN0IGtleSA9IGZpZWxkVG9TY29wZVBhdGgoZW50cnkuZmllbGQpO1xuICAgIGlmICgha2V5KSBjb250aW51ZTtcbiAgICBub2Rlcy5wdXNoKHsga2V5LCBkZXBzOiBkZXBlbmRlbmNpZXMoZW50cnkudG9rZW5zKSB9KTtcbiAgfVxuICBjb25zdCB7IGN5Y2xlcyB9ID0gdG9wb1NvcnQobm9kZXMpO1xuICByZXR1cm4gY3ljbGVzLm1hcChjID0+ICh7XG4gICAgZmllbGQ6IGNbMF0hLFxuICAgIGNvZGU6IEVycm9yQ29kZS5URU1QTEFURV9DWUNMRSxcbiAgICBtZXNzYWdlOiBgVGVtcGxhdGUgY3ljbGUgZGV0ZWN0ZWQ6ICR7Yy5qb2luKCcgLT4gJyl9YCxcbiAgICBjeWNsZTogYyxcbiAgfSkpO1xufVxuXG4vLyAtLSBoZWxwZXJzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbmZ1bmN0aW9uIG1rRXJyKFxuICBmaWVsZDogc3RyaW5nLFxuICBwb3M6IFNvdXJjZVBvc2l0aW9uLFxuICBjb2RlOiBFcnJvckNvZGUsXG4gIG1lc3NhZ2U6IHN0cmluZyxcbiAgcGF0aD86IHN0cmluZyxcbik6IFRlbXBsYXRlRXJyb3Ige1xuICByZXR1cm4geyBmaWVsZCwgbGluZTogcG9zLmxpbmUsIGNvbDogcG9zLmNvbCwgY29kZSwgbWVzc2FnZSwgLi4uKHBhdGggJiYgeyBwYXRoIH0pIH07XG59XG5cbiJdfQ==
|
package/lib/template/walker.d.ts
CHANGED
|
@@ -15,10 +15,20 @@ export type FieldPredicate = (field: string) => boolean;
|
|
|
15
15
|
* for each string whose field path satisfies `isTemplatable` and contains `{{`.
|
|
16
16
|
* Does NOT tokenize — callers decide whether to throw or collect errors.
|
|
17
17
|
*/
|
|
18
|
-
export declare function visitStrings(root: unknown, isTemplatable: FieldPredicate, handler: (field: string, source: string) => void): void;
|
|
18
|
+
export declare function visitStrings(root: unknown, isTemplatable: FieldPredicate, handler: (field: string, source: string, keyPath: Array<string | number>) => void): void;
|
|
19
19
|
/**
|
|
20
20
|
* Walk all templatable string fields under `root`, returning one entry per
|
|
21
21
|
* templated field with a bound `set()` that mutates `root` in place.
|
|
22
22
|
* Tokenization happens eagerly here — parse errors throw.
|
|
23
|
+
*
|
|
24
|
+
* By default only fields containing at least one `{{ expr }}` are returned.
|
|
25
|
+
* Pass `includeLiteralOnly` to also return fields whose only template content
|
|
26
|
+
* is a `{{{{` escape sequence — these still need rewriting so the tokenizer's
|
|
27
|
+
* `{{{{` → `{{` unescape actually materializes into the document.
|
|
28
|
+
*
|
|
29
|
+
* The bound `set()` writes back via the exact key path captured during the
|
|
30
|
+
* walk (the real `Object.entries` keys), so document keys containing `.`,
|
|
31
|
+
* `[`, or `]` (e.g. `env["FOO.BAR"]`) are written correctly rather than being
|
|
32
|
+
* silently dropped by re-parsing a flattened dotted field string.
|
|
23
33
|
*/
|
|
24
|
-
export declare function walkAndBind<T extends object>(root: T, isTemplatable: FieldPredicate): WalkEntry[];
|
|
34
|
+
export declare function walkAndBind<T extends object>(root: T, isTemplatable: FieldPredicate, includeLiteralOnly?: boolean): WalkEntry[];
|
package/lib/template/walker.js
CHANGED
|
@@ -7,55 +7,53 @@ import { hasTemplate, tokenize } from './tokenizer.js';
|
|
|
7
7
|
* Does NOT tokenize — callers decide whether to throw or collect errors.
|
|
8
8
|
*/
|
|
9
9
|
export function visitStrings(root, isTemplatable, handler) {
|
|
10
|
-
step(root, '', isTemplatable, handler);
|
|
10
|
+
step(root, '', [], isTemplatable, handler);
|
|
11
11
|
}
|
|
12
|
-
function step(node, field, isTemplatable, handler) {
|
|
12
|
+
function step(node, field, keyPath, isTemplatable, handler) {
|
|
13
13
|
if (Array.isArray(node)) {
|
|
14
|
-
node.forEach((child, idx) => step(child, `${field}[${idx}]`, isTemplatable, handler));
|
|
14
|
+
node.forEach((child, idx) => step(child, `${field}[${idx}]`, [...keyPath, idx], isTemplatable, handler));
|
|
15
15
|
return;
|
|
16
16
|
}
|
|
17
17
|
if (node !== null && typeof node === 'object') {
|
|
18
18
|
for (const [key, child] of Object.entries(node)) {
|
|
19
|
-
step(child, field ? `${field}.${key}` : key, isTemplatable, handler);
|
|
19
|
+
step(child, field ? `${field}.${key}` : key, [...keyPath, key], isTemplatable, handler);
|
|
20
20
|
}
|
|
21
21
|
return;
|
|
22
22
|
}
|
|
23
23
|
if (typeof node === 'string' && isTemplatable(field) && hasTemplate(node)) {
|
|
24
|
-
handler(field, node);
|
|
24
|
+
handler(field, node, keyPath);
|
|
25
25
|
}
|
|
26
26
|
}
|
|
27
27
|
/**
|
|
28
28
|
* Walk all templatable string fields under `root`, returning one entry per
|
|
29
29
|
* templated field with a bound `set()` that mutates `root` in place.
|
|
30
30
|
* Tokenization happens eagerly here — parse errors throw.
|
|
31
|
+
*
|
|
32
|
+
* By default only fields containing at least one `{{ expr }}` are returned.
|
|
33
|
+
* Pass `includeLiteralOnly` to also return fields whose only template content
|
|
34
|
+
* is a `{{{{` escape sequence — these still need rewriting so the tokenizer's
|
|
35
|
+
* `{{{{` → `{{` unescape actually materializes into the document.
|
|
36
|
+
*
|
|
37
|
+
* The bound `set()` writes back via the exact key path captured during the
|
|
38
|
+
* walk (the real `Object.entries` keys), so document keys containing `.`,
|
|
39
|
+
* `[`, or `]` (e.g. `env["FOO.BAR"]`) are written correctly rather than being
|
|
40
|
+
* silently dropped by re-parsing a flattened dotted field string.
|
|
31
41
|
*/
|
|
32
|
-
export function walkAndBind(root, isTemplatable) {
|
|
42
|
+
export function walkAndBind(root, isTemplatable, includeLiteralOnly = false) {
|
|
33
43
|
const entries = [];
|
|
34
|
-
visitStrings(root, isTemplatable, (field, source) => {
|
|
44
|
+
visitStrings(root, isTemplatable, (field, source, keyPath) => {
|
|
35
45
|
const tokens = tokenize(source);
|
|
36
|
-
if (!tokens.some(t => t.kind === 'expr'))
|
|
46
|
+
if (!includeLiteralOnly && !tokens.some(t => t.kind === 'expr'))
|
|
37
47
|
return;
|
|
38
48
|
entries.push({
|
|
39
49
|
field,
|
|
40
50
|
source,
|
|
41
51
|
tokens,
|
|
42
|
-
set: (value) => writeField(root,
|
|
52
|
+
set: (value) => writeField(root, keyPath, value),
|
|
43
53
|
});
|
|
44
54
|
});
|
|
45
55
|
return entries;
|
|
46
56
|
}
|
|
47
|
-
function parseFieldPath(field) {
|
|
48
|
-
const parts = [];
|
|
49
|
-
const re = /([^.\[\]]+)|\[(\d+)\]/g;
|
|
50
|
-
let m;
|
|
51
|
-
while ((m = re.exec(field)) !== null) {
|
|
52
|
-
if (m[1] !== undefined)
|
|
53
|
-
parts.push(m[1]);
|
|
54
|
-
else if (m[2] !== undefined)
|
|
55
|
-
parts.push(Number(m[2]));
|
|
56
|
-
}
|
|
57
|
-
return parts;
|
|
58
|
-
}
|
|
59
57
|
function writeField(root, parts, value) {
|
|
60
58
|
if (parts.length === 0)
|
|
61
59
|
return;
|
|
@@ -69,4 +67,4 @@ function writeField(root, parts, value) {
|
|
|
69
67
|
return;
|
|
70
68
|
cur[parts[parts.length - 1]] = value;
|
|
71
69
|
}
|
|
72
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
70
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2Fsa2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3RlbXBsYXRlL3dhbGtlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBRXRDLE9BQU8sRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFjLE1BQU0sZ0JBQWdCLENBQUM7QUFlbkU7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSxZQUFZLENBQzFCLElBQWEsRUFDYixhQUE2QixFQUM3QixPQUFpRjtJQUVqRixJQUFJLENBQUMsSUFBSSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsYUFBYSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQzdDLENBQUM7QUFFRCxTQUFTLElBQUksQ0FDWCxJQUFhLEVBQ2IsS0FBYSxFQUNiLE9BQStCLEVBQy9CLGFBQTZCLEVBQzdCLE9BQWlGO0lBRWpGLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLEdBQUcsS0FBSyxJQUFJLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxPQUFPLEVBQUUsR0FBRyxDQUFDLEVBQUUsYUFBYSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFDekcsT0FBTztJQUNULENBQUM7SUFDRCxJQUFJLElBQUksS0FBSyxJQUFJLElBQUksT0FBTyxJQUFJLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDOUMsS0FBSyxNQUFNLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBK0IsQ0FBQyxFQUFFLENBQUM7WUFDM0UsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxJQUFJLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLE9BQU8sRUFBRSxHQUFHLENBQUMsRUFBRSxhQUFhLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDMUYsQ0FBQztRQUNELE9BQU87SUFDVCxDQUFDO0lBQ0QsSUFBSSxPQUFPLElBQUksS0FBSyxRQUFRLElBQUksYUFBYSxDQUFDLEtBQUssQ0FBQyxJQUFJLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQzFFLE9BQU8sQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ2hDLENBQUM7QUFDSCxDQUFDO0FBRUQ7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFDSCxNQUFNLFVBQVUsV0FBVyxDQUN6QixJQUFPLEVBQ1AsYUFBNkIsRUFDN0Isa0JBQWtCLEdBQUcsS0FBSztJQUUxQixNQUFNLE9BQU8sR0FBZ0IsRUFBRSxDQUFDO0lBQ2hDLFlBQVksQ0FBQyxJQUFJLEVBQUUsYUFBYSxFQUFFLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsRUFBRTtRQUMzRCxNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDaEMsSUFBSSxDQUFDLGtCQUFrQixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssTUFBTSxDQUFDO1lBQUUsT0FBTztRQUN4RSxPQUFPLENBQUMsSUFBSSxDQUFDO1lBQ1gsS0FBSztZQUNMLE1BQU07WUFDTixNQUFNO1lBQ04sR0FBRyxFQUFFLENBQUMsS0FBYyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxLQUFLLENBQUM7U0FDMUQsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDSCxPQUFPLE9BQU8sQ0FBQztBQUNqQixDQUFDO0FBRUQsU0FBUyxVQUFVLENBQUMsSUFBYSxFQUFFLEtBQTZCLEVBQUUsS0FBYztJQUM5RSxJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQztRQUFFLE9BQU87SUFDL0IsSUFBSSxHQUFHLEdBQVksSUFBSSxDQUFDO0lBQ3hCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQzFDLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxPQUFPLEdBQUcsS0FBSyxRQUFRO1lBQUUsT0FBTztRQUNuRCxHQUFHLEdBQUksR0FBd0MsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFFLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBQ0QsSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLE9BQU8sR0FBRyxLQUFLLFFBQVE7UUFBRSxPQUFPO0lBQ2xELEdBQXdDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFFLENBQUMsR0FBRyxLQUFLLENBQUM7QUFDOUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG5pbXBvcnQgeyBoYXNUZW1wbGF0ZSwgdG9rZW5pemUsIHR5cGUgVG9rZW4gfSBmcm9tICcuL3Rva2VuaXplci5qcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgV2Fsa0VudHJ5IHtcbiAgLyoqIERvdHRlZCBwYXRoIHRvIHRoZSBmaWVsZCBpbnNpZGUgdGhlIGRvY3VtZW50LCBlLmcuICdjb21tYW5kc1szXScgb3IgJ2Vudi5TVEFHRScgKi9cbiAgZmllbGQ6IHN0cmluZztcbiAgLyoqIFJhdyBzb3VyY2Ugc3RyaW5nIGNvbnRhaW5pbmcgdGVtcGxhdGUgdG9rZW5zICovXG4gIHNvdXJjZTogc3RyaW5nO1xuICAvKiogUGFyc2VkIHRva2VuIHN0cmVhbSAqL1xuICB0b2tlbnM6IFRva2VuW107XG4gIC8qKiBTZXR0ZXIgdG8gd3JpdGUgYmFjayBhIHJlc29sdmVkIHZhbHVlIGludG8gdGhlIG9yaWdpbmFsIGByb290YCBvYmplY3QgKi9cbiAgc2V0OiAodmFsdWU6IHVua25vd24pID0+IHZvaWQ7XG59XG5cbmV4cG9ydCB0eXBlIEZpZWxkUHJlZGljYXRlID0gKGZpZWxkOiBzdHJpbmcpID0+IGJvb2xlYW47XG5cbi8qKlxuICogVmlzaXQgZXZlcnkgdGVtcGxhdGFibGUgc3RyaW5nIGxlYWYgdW5kZXIgYHJvb3RgLiBDYWxscyBgaGFuZGxlcihmaWVsZCwgc291cmNlKWBcbiAqIGZvciBlYWNoIHN0cmluZyB3aG9zZSBmaWVsZCBwYXRoIHNhdGlzZmllcyBgaXNUZW1wbGF0YWJsZWAgYW5kIGNvbnRhaW5zIGB7e2AuXG4gKiBEb2VzIE5PVCB0b2tlbml6ZSDigJQgY2FsbGVycyBkZWNpZGUgd2hldGhlciB0byB0aHJvdyBvciBjb2xsZWN0IGVycm9ycy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHZpc2l0U3RyaW5ncyhcbiAgcm9vdDogdW5rbm93bixcbiAgaXNUZW1wbGF0YWJsZTogRmllbGRQcmVkaWNhdGUsXG4gIGhhbmRsZXI6IChmaWVsZDogc3RyaW5nLCBzb3VyY2U6IHN0cmluZywga2V5UGF0aDogQXJyYXk8c3RyaW5nIHwgbnVtYmVyPikgPT4gdm9pZCxcbik6IHZvaWQge1xuICBzdGVwKHJvb3QsICcnLCBbXSwgaXNUZW1wbGF0YWJsZSwgaGFuZGxlcik7XG59XG5cbmZ1bmN0aW9uIHN0ZXAoXG4gIG5vZGU6IHVua25vd24sXG4gIGZpZWxkOiBzdHJpbmcsXG4gIGtleVBhdGg6IEFycmF5PHN0cmluZyB8IG51bWJlcj4sXG4gIGlzVGVtcGxhdGFibGU6IEZpZWxkUHJlZGljYXRlLFxuICBoYW5kbGVyOiAoZmllbGQ6IHN0cmluZywgc291cmNlOiBzdHJpbmcsIGtleVBhdGg6IEFycmF5PHN0cmluZyB8IG51bWJlcj4pID0+IHZvaWQsXG4pOiB2b2lkIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkobm9kZSkpIHtcbiAgICBub2RlLmZvckVhY2goKGNoaWxkLCBpZHgpID0+IHN0ZXAoY2hpbGQsIGAke2ZpZWxkfVske2lkeH1dYCwgWy4uLmtleVBhdGgsIGlkeF0sIGlzVGVtcGxhdGFibGUsIGhhbmRsZXIpKTtcbiAgICByZXR1cm47XG4gIH1cbiAgaWYgKG5vZGUgIT09IG51bGwgJiYgdHlwZW9mIG5vZGUgPT09ICdvYmplY3QnKSB7XG4gICAgZm9yIChjb25zdCBba2V5LCBjaGlsZF0gb2YgT2JqZWN0LmVudHJpZXMobm9kZSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPikpIHtcbiAgICAgIHN0ZXAoY2hpbGQsIGZpZWxkID8gYCR7ZmllbGR9LiR7a2V5fWAgOiBrZXksIFsuLi5rZXlQYXRoLCBrZXldLCBpc1RlbXBsYXRhYmxlLCBoYW5kbGVyKTtcbiAgICB9XG4gICAgcmV0dXJuO1xuICB9XG4gIGlmICh0eXBlb2Ygbm9kZSA9PT0gJ3N0cmluZycgJiYgaXNUZW1wbGF0YWJsZShmaWVsZCkgJiYgaGFzVGVtcGxhdGUobm9kZSkpIHtcbiAgICBoYW5kbGVyKGZpZWxkLCBub2RlLCBrZXlQYXRoKTtcbiAgfVxufVxuXG4vKipcbiAqIFdhbGsgYWxsIHRlbXBsYXRhYmxlIHN0cmluZyBmaWVsZHMgdW5kZXIgYHJvb3RgLCByZXR1cm5pbmcgb25lIGVudHJ5IHBlclxuICogdGVtcGxhdGVkIGZpZWxkIHdpdGggYSBib3VuZCBgc2V0KClgIHRoYXQgbXV0YXRlcyBgcm9vdGAgaW4gcGxhY2UuXG4gKiBUb2tlbml6YXRpb24gaGFwcGVucyBlYWdlcmx5IGhlcmUg4oCUIHBhcnNlIGVycm9ycyB0aHJvdy5cbiAqXG4gKiBCeSBkZWZhdWx0IG9ubHkgZmllbGRzIGNvbnRhaW5pbmcgYXQgbGVhc3Qgb25lIGB7eyBleHByIH19YCBhcmUgcmV0dXJuZWQuXG4gKiBQYXNzIGBpbmNsdWRlTGl0ZXJhbE9ubHlgIHRvIGFsc28gcmV0dXJuIGZpZWxkcyB3aG9zZSBvbmx5IHRlbXBsYXRlIGNvbnRlbnRcbiAqIGlzIGEgYHt7e3tgIGVzY2FwZSBzZXF1ZW5jZSDigJQgdGhlc2Ugc3RpbGwgbmVlZCByZXdyaXRpbmcgc28gdGhlIHRva2VuaXplcidzXG4gKiBge3t7e2Ag4oaSIGB7e2AgdW5lc2NhcGUgYWN0dWFsbHkgbWF0ZXJpYWxpemVzIGludG8gdGhlIGRvY3VtZW50LlxuICpcbiAqIFRoZSBib3VuZCBgc2V0KClgIHdyaXRlcyBiYWNrIHZpYSB0aGUgZXhhY3Qga2V5IHBhdGggY2FwdHVyZWQgZHVyaW5nIHRoZVxuICogd2FsayAodGhlIHJlYWwgYE9iamVjdC5lbnRyaWVzYCBrZXlzKSwgc28gZG9jdW1lbnQga2V5cyBjb250YWluaW5nIGAuYCxcbiAqIGBbYCwgb3IgYF1gIChlLmcuIGBlbnZbXCJGT08uQkFSXCJdYCkgYXJlIHdyaXR0ZW4gY29ycmVjdGx5IHJhdGhlciB0aGFuIGJlaW5nXG4gKiBzaWxlbnRseSBkcm9wcGVkIGJ5IHJlLXBhcnNpbmcgYSBmbGF0dGVuZWQgZG90dGVkIGZpZWxkIHN0cmluZy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHdhbGtBbmRCaW5kPFQgZXh0ZW5kcyBvYmplY3Q+KFxuICByb290OiBULFxuICBpc1RlbXBsYXRhYmxlOiBGaWVsZFByZWRpY2F0ZSxcbiAgaW5jbHVkZUxpdGVyYWxPbmx5ID0gZmFsc2UsXG4pOiBXYWxrRW50cnlbXSB7XG4gIGNvbnN0IGVudHJpZXM6IFdhbGtFbnRyeVtdID0gW107XG4gIHZpc2l0U3RyaW5ncyhyb290LCBpc1RlbXBsYXRhYmxlLCAoZmllbGQsIHNvdXJjZSwga2V5UGF0aCkgPT4ge1xuICAgIGNvbnN0IHRva2VucyA9IHRva2VuaXplKHNvdXJjZSk7XG4gICAgaWYgKCFpbmNsdWRlTGl0ZXJhbE9ubHkgJiYgIXRva2Vucy5zb21lKHQgPT4gdC5raW5kID09PSAnZXhwcicpKSByZXR1cm47XG4gICAgZW50cmllcy5wdXNoKHtcbiAgICAgIGZpZWxkLFxuICAgICAgc291cmNlLFxuICAgICAgdG9rZW5zLFxuICAgICAgc2V0OiAodmFsdWU6IHVua25vd24pID0+IHdyaXRlRmllbGQocm9vdCwga2V5UGF0aCwgdmFsdWUpLFxuICAgIH0pO1xuICB9KTtcbiAgcmV0dXJuIGVudHJpZXM7XG59XG5cbmZ1bmN0aW9uIHdyaXRlRmllbGQocm9vdDogdW5rbm93biwgcGFydHM6IEFycmF5PHN0cmluZyB8IG51bWJlcj4sIHZhbHVlOiB1bmtub3duKTogdm9pZCB7XG4gIGlmIChwYXJ0cy5sZW5ndGggPT09IDApIHJldHVybjtcbiAgbGV0IGN1cjogdW5rbm93biA9IHJvb3Q7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgcGFydHMubGVuZ3RoIC0gMTsgaSsrKSB7XG4gICAgaWYgKGN1ciA9PSBudWxsIHx8IHR5cGVvZiBjdXIgIT09ICdvYmplY3QnKSByZXR1cm47XG4gICAgY3VyID0gKGN1ciBhcyBSZWNvcmQ8c3RyaW5nIHwgbnVtYmVyLCB1bmtub3duPilbcGFydHNbaV0hXTtcbiAgfVxuICBpZiAoY3VyID09IG51bGwgfHwgdHlwZW9mIGN1ciAhPT0gJ29iamVjdCcpIHJldHVybjtcbiAgKGN1ciBhcyBSZWNvcmQ8c3RyaW5nIHwgbnVtYmVyLCB1bmtub3duPilbcGFydHNbcGFydHMubGVuZ3RoIC0gMV0hXSA9IHZhbHVlO1xufVxuIl19
|
package/package.json
CHANGED
|
@@ -29,8 +29,8 @@
|
|
|
29
29
|
"constructs": "10.7.0",
|
|
30
30
|
"jsonwebtoken": "9.0.3",
|
|
31
31
|
"uuid": "14.0.1",
|
|
32
|
-
"@pipeline-builder/api-core": "3.4.
|
|
33
|
-
"@pipeline-builder/pipeline-data": "3.4.
|
|
32
|
+
"@pipeline-builder/api-core": "3.4.91",
|
|
33
|
+
"@pipeline-builder/pipeline-data": "3.4.94"
|
|
34
34
|
},
|
|
35
35
|
"keywords": [
|
|
36
36
|
"ci-cd",
|
|
@@ -86,7 +86,7 @@
|
|
|
86
86
|
"access": "public",
|
|
87
87
|
"registry": "https://registry.npmjs.org/"
|
|
88
88
|
},
|
|
89
|
-
"version": "3.4.
|
|
89
|
+
"version": "3.4.108",
|
|
90
90
|
"bugs": {
|
|
91
91
|
"url": "https://github.com/mwashburn160/pipeline-builder/issues"
|
|
92
92
|
},
|
package/lib/template/cache.d.ts
DELETED
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { type Token } from './tokenizer.js';
|
|
2
|
-
/**
|
|
3
|
-
* Small LRU cache for parsed token streams. Keys are caller-chosen
|
|
4
|
-
* (typically `${pluginId}:${version}:${fieldPath}`). Capacity is bounded
|
|
5
|
-
* so synth-time resolution in long-running services doesn't leak.
|
|
6
|
-
*/
|
|
7
|
-
export declare class TokenCache {
|
|
8
|
-
private readonly max;
|
|
9
|
-
private readonly map;
|
|
10
|
-
constructor(max?: number);
|
|
11
|
-
get(key: string): Token[] | undefined;
|
|
12
|
-
set(key: string, tokens: Token[]): void;
|
|
13
|
-
invalidate(key: string): void;
|
|
14
|
-
invalidatePrefix(prefix: string): void;
|
|
15
|
-
parse(key: string, source: string): Token[];
|
|
16
|
-
clear(): void;
|
|
17
|
-
get size(): number;
|
|
18
|
-
}
|
package/lib/template/cache.js
DELETED
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
// Copyright 2026 Pipeline Builder Contributors
|
|
2
|
-
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
-
import { tokenize } from './tokenizer.js';
|
|
4
|
-
/**
|
|
5
|
-
* Small LRU cache for parsed token streams. Keys are caller-chosen
|
|
6
|
-
* (typically `${pluginId}:${version}:${fieldPath}`). Capacity is bounded
|
|
7
|
-
* so synth-time resolution in long-running services doesn't leak.
|
|
8
|
-
*/
|
|
9
|
-
export class TokenCache {
|
|
10
|
-
max;
|
|
11
|
-
map = new Map();
|
|
12
|
-
constructor(max = 100) {
|
|
13
|
-
this.max = max;
|
|
14
|
-
}
|
|
15
|
-
get(key) {
|
|
16
|
-
const hit = this.map.get(key);
|
|
17
|
-
if (!hit)
|
|
18
|
-
return undefined;
|
|
19
|
-
// Refresh recency by re-inserting
|
|
20
|
-
this.map.delete(key);
|
|
21
|
-
this.map.set(key, hit);
|
|
22
|
-
return hit;
|
|
23
|
-
}
|
|
24
|
-
set(key, tokens) {
|
|
25
|
-
if (this.map.has(key))
|
|
26
|
-
this.map.delete(key);
|
|
27
|
-
this.map.set(key, tokens);
|
|
28
|
-
if (this.map.size > this.max) {
|
|
29
|
-
const oldest = this.map.keys().next().value;
|
|
30
|
-
this.map.delete(oldest);
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
invalidate(key) {
|
|
34
|
-
this.map.delete(key);
|
|
35
|
-
}
|
|
36
|
-
invalidatePrefix(prefix) {
|
|
37
|
-
for (const k of Array.from(this.map.keys())) {
|
|
38
|
-
if (k.startsWith(prefix))
|
|
39
|
-
this.map.delete(k);
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
parse(key, source) {
|
|
43
|
-
const hit = this.get(key);
|
|
44
|
-
if (hit)
|
|
45
|
-
return hit;
|
|
46
|
-
const tokens = tokenize(source);
|
|
47
|
-
this.set(key, tokens);
|
|
48
|
-
return tokens;
|
|
49
|
-
}
|
|
50
|
-
clear() {
|
|
51
|
-
this.map.clear();
|
|
52
|
-
}
|
|
53
|
-
get size() {
|
|
54
|
-
return this.map.size;
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FjaGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdGVtcGxhdGUvY2FjaGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQUV0QyxPQUFPLEVBQUUsUUFBUSxFQUFjLE1BQU0sZ0JBQWdCLENBQUM7QUFFdEQ7Ozs7R0FJRztBQUNILE1BQU0sT0FBTyxVQUFVO0lBQ0osR0FBRyxDQUFTO0lBQ1osR0FBRyxHQUFHLElBQUksR0FBRyxFQUFtQixDQUFDO0lBRWxELFlBQVksR0FBRyxHQUFHLEdBQUc7UUFDbkIsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7SUFDakIsQ0FBQztJQUVELEdBQUcsQ0FBQyxHQUFXO1FBQ2IsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDOUIsSUFBSSxDQUFDLEdBQUc7WUFBRSxPQUFPLFNBQVMsQ0FBQztRQUMzQixrQ0FBa0M7UUFDbEMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDckIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ3ZCLE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztJQUVELEdBQUcsQ0FBQyxHQUFXLEVBQUUsTUFBZTtRQUM5QixJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQztZQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzVDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUMxQixJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUM3QixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDLEtBQWUsQ0FBQztZQUN0RCxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMxQixDQUFDO0lBQ0gsQ0FBQztJQUVELFVBQVUsQ0FBQyxHQUFXO1FBQ3BCLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxNQUFjO1FBQzdCLEtBQUssTUFBTSxDQUFDLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQztZQUM1QyxJQUFJLENBQUMsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDO2dCQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQy9DLENBQUM7SUFDSCxDQUFDO0lBRUQsS0FBSyxDQUFDLEdBQVcsRUFBRSxNQUFjO1FBQy9CLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDMUIsSUFBSSxHQUFHO1lBQUUsT0FBTyxHQUFHLENBQUM7UUFDcEIsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ3RCLE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxLQUFLO1FBQ0gsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNuQixDQUFDO0lBRUQsSUFBSSxJQUFJO1FBQ04sT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQztJQUN2QixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuaW1wb3J0IHsgdG9rZW5pemUsIHR5cGUgVG9rZW4gfSBmcm9tICcuL3Rva2VuaXplci5qcyc7XG5cbi8qKlxuICogU21hbGwgTFJVIGNhY2hlIGZvciBwYXJzZWQgdG9rZW4gc3RyZWFtcy4gS2V5cyBhcmUgY2FsbGVyLWNob3NlblxuICogKHR5cGljYWxseSBgJHtwbHVnaW5JZH06JHt2ZXJzaW9ufToke2ZpZWxkUGF0aH1gKS4gQ2FwYWNpdHkgaXMgYm91bmRlZFxuICogc28gc3ludGgtdGltZSByZXNvbHV0aW9uIGluIGxvbmctcnVubmluZyBzZXJ2aWNlcyBkb2Vzbid0IGxlYWsuXG4gKi9cbmV4cG9ydCBjbGFzcyBUb2tlbkNhY2hlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBtYXg6IG51bWJlcjtcbiAgcHJpdmF0ZSByZWFkb25seSBtYXAgPSBuZXcgTWFwPHN0cmluZywgVG9rZW5bXT4oKTtcblxuICBjb25zdHJ1Y3RvcihtYXggPSAxMDApIHtcbiAgICB0aGlzLm1heCA9IG1heDtcbiAgfVxuXG4gIGdldChrZXk6IHN0cmluZyk6IFRva2VuW10gfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IGhpdCA9IHRoaXMubWFwLmdldChrZXkpO1xuICAgIGlmICghaGl0KSByZXR1cm4gdW5kZWZpbmVkO1xuICAgIC8vIFJlZnJlc2ggcmVjZW5jeSBieSByZS1pbnNlcnRpbmdcbiAgICB0aGlzLm1hcC5kZWxldGUoa2V5KTtcbiAgICB0aGlzLm1hcC5zZXQoa2V5LCBoaXQpO1xuICAgIHJldHVybiBoaXQ7XG4gIH1cblxuICBzZXQoa2V5OiBzdHJpbmcsIHRva2VuczogVG9rZW5bXSk6IHZvaWQge1xuICAgIGlmICh0aGlzLm1hcC5oYXMoa2V5KSkgdGhpcy5tYXAuZGVsZXRlKGtleSk7XG4gICAgdGhpcy5tYXAuc2V0KGtleSwgdG9rZW5zKTtcbiAgICBpZiAodGhpcy5tYXAuc2l6ZSA+IHRoaXMubWF4KSB7XG4gICAgICBjb25zdCBvbGRlc3QgPSB0aGlzLm1hcC5rZXlzKCkubmV4dCgpLnZhbHVlIGFzIHN0cmluZztcbiAgICAgIHRoaXMubWFwLmRlbGV0ZShvbGRlc3QpO1xuICAgIH1cbiAgfVxuXG4gIGludmFsaWRhdGUoa2V5OiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLm1hcC5kZWxldGUoa2V5KTtcbiAgfVxuXG4gIGludmFsaWRhdGVQcmVmaXgocHJlZml4OiBzdHJpbmcpOiB2b2lkIHtcbiAgICBmb3IgKGNvbnN0IGsgb2YgQXJyYXkuZnJvbSh0aGlzLm1hcC5rZXlzKCkpKSB7XG4gICAgICBpZiAoay5zdGFydHNXaXRoKHByZWZpeCkpIHRoaXMubWFwLmRlbGV0ZShrKTtcbiAgICB9XG4gIH1cblxuICBwYXJzZShrZXk6IHN0cmluZywgc291cmNlOiBzdHJpbmcpOiBUb2tlbltdIHtcbiAgICBjb25zdCBoaXQgPSB0aGlzLmdldChrZXkpO1xuICAgIGlmIChoaXQpIHJldHVybiBoaXQ7XG4gICAgY29uc3QgdG9rZW5zID0gdG9rZW5pemUoc291cmNlKTtcbiAgICB0aGlzLnNldChrZXksIHRva2Vucyk7XG4gICAgcmV0dXJuIHRva2VucztcbiAgfVxuXG4gIGNsZWFyKCk6IHZvaWQge1xuICAgIHRoaXMubWFwLmNsZWFyKCk7XG4gIH1cblxuICBnZXQgc2l6ZSgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLm1hcC5zaXplO1xuICB9XG59XG4iXX0=
|