@plumile/filter-query 0.1.38 → 0.1.43
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/README.md +33 -0
- package/lib/esm/mutate.d.ts +7 -0
- package/lib/esm/mutate.d.ts.map +1 -1
- package/lib/esm/mutate.js +11 -1
- package/lib/esm/parse.js +4 -1
- package/lib/esm/schema.d.ts +11 -2
- package/lib/esm/schema.d.ts.map +1 -1
- package/lib/esm/schema.js +54 -1
- package/lib/esm/stringify.d.ts.map +1 -1
- package/lib/esm/stringify.js +51 -22
- package/lib/esm/types.d.ts +15 -17
- package/lib/esm/types.d.ts.map +1 -1
- package/lib/esm/types.js +1 -1
- package/lib/mutate.d.ts +7 -0
- package/lib/mutate.d.ts.map +1 -1
- package/lib/mutate.js +11 -1
- package/lib/parse.js +4 -1
- package/lib/schema.d.ts +11 -2
- package/lib/schema.d.ts.map +1 -1
- package/lib/schema.js +54 -1
- package/lib/stringify.d.ts.map +1 -1
- package/lib/stringify.js +51 -22
- package/lib/tsconfig.esm.tsbuildinfo +1 -1
- package/lib/types/mutate.d.ts +7 -0
- package/lib/types/mutate.d.ts.map +1 -1
- package/lib/types/schema.d.ts +11 -2
- package/lib/types/schema.d.ts.map +1 -1
- package/lib/types/stringify.d.ts.map +1 -1
- package/lib/types/types.d.ts +15 -17
- package/lib/types/types.d.ts.map +1 -1
- package/lib/types.d.ts +15 -17
- package/lib/types.d.ts.map +1 -1
- package/lib/types.js +1 -1
- package/package.json +3 -3
package/lib/esm/types.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRGlhZ25vc3RpYyB9IGZyb20gJy4vZXJyb3JzLmpzJztcblxuLyoqXG4gKiBPcGVyYXRvcnMgdGhhdCB0YWtlIGEgc2luZ2xlIHNjYWxhciB2YWx1ZSAobnVtYmVycyBvciBzdHJpbmdzKSBpbiB0aGUgZmlsdGVyIHNjaGVtYS5cbiAqL1xuZXhwb3J0IHR5cGUgU2NhbGFyT3BlcmF0b3IgPVxuICB8ICdndCdcbiAgfCAnZ3RlJ1xuICB8ICdsdCdcbiAgfCAnbHRlJ1xuICB8ICdlcSdcbiAgfCAnbmVxJ1xuICB8ICdjb250YWlucydcbiAgfCAnc3cnXG4gIHwgJ2V3Jztcbi8qKiBPcGVyYXRvciByZXByZXNlbnRpbmcgYSByYW5nZSBvZiB0d28gdmFsdWVzLiAqL1xuZXhwb3J0IHR5cGUgQmV0d2Vlbk9wZXJhdG9yID0gJ2JldHdlZW4nO1xuLyoqIE9wZXJhdG9ycyB3aG9zZSB2YWx1ZXMgYXJlIGxpc3RzLiAqL1xuZXhwb3J0IHR5cGUgTGlzdE9wZXJhdG9yID0gJ2luJyB8ICduaW4nO1xuLyoqIEFsbCBzdXBwb3J0ZWQgb3BlcmF0b3Iga2luZHMuICovXG5leHBvcnQgdHlwZSBPcGVyYXRvciA9IFNjYWxhck9wZXJhdG9yIHwgQmV0d2Vlbk9wZXJhdG9yIHwgTGlzdE9wZXJhdG9yO1xuXG4vKiogUHJpbWl0aXZlIGZpZWxkIGtpbmRzIHN1cHBvcnRlZCBieSB0aGUgc2NoZW1hLiAqL1xuZXhwb3J0IHR5cGUgUHJpbWl0aXZlS2luZCA9ICdudW1iZXInIHwgJ3N0cmluZycgfCAnYm9vbGVhbicgfCAnZW51bScgfCAnY3VzdG9tJztcblxuLyoqXG4gKiBCYXNlIGRlc2NyaXB0b3Igc2hhcmVkIGJ5IG51bWJlciBhbmQgc3RyaW5nIGZpZWxkcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGaWVsZERlc2NyaXB0b3JCYXNlPFRLaW5kIGV4dGVuZHMgUHJpbWl0aXZlS2luZCwgVFZhbHVlPiB7XG4gIHJlYWRvbmx5IGtpbmQ6IFRLaW5kO1xuICByZWFkb25seSBvcGVyYXRvcnM6IHJlYWRvbmx5IE9wZXJhdG9yW107XG4gIHJlYWRvbmx5IHBhcnNlPzogKHJhdzogc3RyaW5nKSA9PiBUVmFsdWUgfCB1bmRlZmluZWQ7XG4gIHJlYWRvbmx5IHNlcmlhbGl6ZT86ICh2YWx1ZTogVFZhbHVlKSA9PiBzdHJpbmc7XG59XG5cbi8qKiBEZXNjcmlwdG9yIGZvciBudW1lcmljIGZpZWxkcy4gUHJvdmlkZXMgbnVtZXJpYyBwYXJzaW5nL3NlcmlhbGlzYXRpb24gaG9va3MuICovXG5leHBvcnQgdHlwZSBOdW1iZXJGaWVsZERlc2NyaXB0b3IgPSBGaWVsZERlc2NyaXB0b3JCYXNlPCdudW1iZXInLCBudW1iZXI+O1xuLyoqIERlc2NyaXB0b3IgZm9yIHN0cmluZyBmaWVsZHMuIFByb3ZpZGVzIHN0cmluZyBwYXJzaW5nL3NlcmlhbGlzYXRpb24gaG9va3MuICovXG5leHBvcnQgdHlwZSBTdHJpbmdGaWVsZERlc2NyaXB0b3IgPSBGaWVsZERlc2NyaXB0b3JCYXNlPCdzdHJpbmcnLCBzdHJpbmc+O1xuLyoqIERlc2NyaXB0b3IgZm9yIGJvb2xlYW4gZmllbGRzLiAqL1xuZXhwb3J0IHR5cGUgQm9vbGVhbkZpZWxkRGVzY3JpcHRvciA9IEZpZWxkRGVzY3JpcHRvckJhc2U8J2Jvb2xlYW4nLCBib29sZWFuPjtcbi8qKiBEZXNjcmlwdG9yIGZvciBlbnVtIHN0cmluZyBmaWVsZHMuICovXG5leHBvcnQgdHlwZSBFbnVtRmllbGREZXNjcmlwdG9yPFQgZXh0ZW5kcyBzdHJpbmc+ID0gRmllbGREZXNjcmlwdG9yQmFzZTxcbiAgJ2VudW0nLFxuICBUXG4+O1xuLyoqIERlc2NyaXB0b3IgZm9yIGN1c3RvbSBmaWVsZHMuICovXG5leHBvcnQgdHlwZSBDdXN0b21GaWVsZERlc2NyaXB0b3I8VD4gPSBGaWVsZERlc2NyaXB0b3JCYXNlPCdjdXN0b20nLCBUPjtcblxuLyoqIERlc2NyaXB0b3IgYWNjZXB0ZWQgYnkgdGhlIHNjaGVtYS4gKi9cbmV4cG9ydCB0eXBlIEZpZWxkRGVzY3JpcHRvciA9XG4gIHwgTnVtYmVyRmllbGREZXNjcmlwdG9yXG4gIHwgU3RyaW5nRmllbGREZXNjcmlwdG9yXG4gIHwgQm9vbGVhbkZpZWxkRGVzY3JpcHRvclxuICB8IEVudW1GaWVsZERlc2NyaXB0b3I8c3RyaW5nPlxuICB8IEN1c3RvbUZpZWxkRGVzY3JpcHRvcjx1bmtub3duPjtcblxuLyoqIEltbXV0YWJsZSBtYXBwaW5nIGJldHdlZW4gZmllbGQga2V5cyBhbmQgdGhlaXIgZGVzY3JpcHRvcnMuICovXG5leHBvcnQgdHlwZSBTY2hlbWEgPSBSZWFkb25seTxSZWNvcmQ8c3RyaW5nLCBGaWVsZERlc2NyaXB0b3I+PjtcblxuLy8gSW5mZXIgb3BlcmF0b3IgbWFwcGluZyBmb3IgYSBzaW5nbGUgZmllbGQgZGVzY3JpcHRvclxudHlwZSBPcGVyYXRvcktleXM8RCBleHRlbmRzIEZpZWxkRGVzY3JpcHRvcj4gPSBFeHRyYWN0PFxuICBEWydvcGVyYXRvcnMnXVtudW1iZXJdLFxuICBTY2FsYXJPcGVyYXRvclxuPjtcbnR5cGUgRmllbGRWYWx1ZTxEIGV4dGVuZHMgRmllbGREZXNjcmlwdG9yPiA9XG4gIEQgZXh0ZW5kcyBGaWVsZERlc2NyaXB0b3JCYXNlPFByaW1pdGl2ZUtpbmQsIGluZmVyIFRWYWx1ZT4gPyBUVmFsdWUgOiBuZXZlcjtcbnR5cGUgU2NhbGFyTWFwPEQgZXh0ZW5kcyBGaWVsZERlc2NyaXB0b3I+ID0gUmVjb3JkPFxuICBPcGVyYXRvcktleXM8RD4sXG4gIEZpZWxkVmFsdWU8RD4gfCB1bmRlZmluZWRcbj47XG5cbnR5cGUgQmV0d2Vlbk1hcDxEIGV4dGVuZHMgRmllbGREZXNjcmlwdG9yPiA9XG4gICdiZXR3ZWVuJyBleHRlbmRzIERbJ29wZXJhdG9ycyddW251bWJlcl1cbiAgICA/IHtcbiAgICAgICAgYmV0d2Vlbj86IHJlYWRvbmx5IFtGaWVsZFZhbHVlPEQ+LCBGaWVsZFZhbHVlPEQ+XTtcbiAgICAgIH1cbiAgICA6IFJlY29yZDxuZXZlciwgbmV2ZXI+O1xuXG50eXBlIExpc3RPcHM8RCBleHRlbmRzIEZpZWxkRGVzY3JpcHRvcj4gPSBFeHRyYWN0PFxuICBEWydvcGVyYXRvcnMnXVtudW1iZXJdLFxuICBMaXN0T3BlcmF0b3Jcbj47XG50eXBlIExpc3RNYXA8RCBleHRlbmRzIEZpZWxkRGVzY3JpcHRvcj4gPSAoJ2luJyBleHRlbmRzIExpc3RPcHM8RD5cbiAgPyB7XG4gICAgICBpbj86IHJlYWRvbmx5IEZpZWxkVmFsdWU8RD5bXTtcbiAgICB9XG4gIDogUmVjb3JkPG5ldmVyLCBuZXZlcj4pICZcbiAgKCduaW4nIGV4dGVuZHMgTGlzdE9wczxEPlxuICAgID8ge1xuICAgICAgICBuaW4/OiByZWFkb25seSBGaWVsZFZhbHVlPEQ+W107XG4gICAgICB9XG4gICAgOiBSZWNvcmQ8bmV2ZXIsIG5ldmVyPik7XG5cbmV4cG9ydCB0eXBlIEluZmVyRmllbGQ8RCBleHRlbmRzIEZpZWxkRGVzY3JpcHRvcj4gPSBQYXJ0aWFsPFxuICBTY2FsYXJNYXA8RD4gJiBCZXR3ZWVuTWFwPEQ+ICYgTGlzdE1hcDxEPlxuPjtcblxuLyoqIEZpbHRlcnMgbWFwIGluZmVycmVkIGZyb20gYSBzY2hlbWEgZGVmaW5pdGlvbi4gKi9cbmV4cG9ydCB0eXBlIEluZmVyRmlsdGVyczxTIGV4dGVuZHMgU2NoZW1hPiA9IHtcbiAgW0sgaW4ga2V5b2YgU10/OiBJbmZlckZpZWxkPFNbS10+O1xufTtcblxuLyoqIFJlc3VsdCByZXR1cm5lZCBieSB0aGUgYHBhcnNlYCBmdW5jdGlvbjogcGFyc2VkIGZpbHRlcnMgcGx1cyBkaWFnbm9zdGljcy4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGFyc2VSZXN1bHQ8UyBleHRlbmRzIFNjaGVtYT4ge1xuICByZWFkb25seSBmaWx0ZXJzOiBJbmZlckZpbHRlcnM8Uz47XG4gIHJlYWRvbmx5IGRpYWdub3N0aWNzOiBEaWFnbm9zdGljW107XG59XG4iXX0=
|
package/lib/mutate.d.ts
CHANGED
|
@@ -1,4 +1,11 @@
|
|
|
1
1
|
import type { InferFilters, Schema } from './types.js';
|
|
2
|
+
export type EqInput<S extends Schema> = Partial<{
|
|
3
|
+
[K in keyof S as 'eq' extends keyof NonNullable<InferFilters<S>[K]> ? K : never]: NonNullable<InferFilters<S>[K]> extends {
|
|
4
|
+
eq?: infer V;
|
|
5
|
+
} ? V : never;
|
|
6
|
+
}>;
|
|
7
|
+
export declare function eq<S extends Schema>(input: EqInput<S>): InferFilters<S>;
|
|
8
|
+
export declare const buildEqFilters: typeof eq;
|
|
2
9
|
export declare function setFilter<S extends Schema, F extends keyof S, O extends keyof NonNullable<InferFilters<S>[F]>>(filters: Readonly<InferFilters<S>>, _schema: S, field: F, operator: O, value: NonNullable<InferFilters<S>[F]>[O] | undefined): InferFilters<S>;
|
|
3
10
|
export declare function removeFilter<S extends Schema, F extends keyof S>(filters: Readonly<InferFilters<S>>, field: F, operator?: keyof NonNullable<InferFilters<S>[F]>): InferFilters<S>;
|
|
4
11
|
export declare function mergeFilters<S extends Schema>(base: Readonly<InferFilters<S>>, patch: Readonly<InferFilters<S>>): InferFilters<S>;
|
package/lib/mutate.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mutate.d.ts","sourceRoot":"","sources":["../src/mutate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"mutate.d.ts","sourceRoot":"","sources":["../src/mutate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAgCvD,MAAM,MAAM,OAAO,CAAC,CAAC,SAAS,MAAM,IAAI,OAAO,CAAC;KAC7C,CAAC,IAAI,MAAM,CAAC,IAAI,IAAI,SAAS,MAAM,WAAW,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAC/D,CAAC,GACD,KAAK,GAAG,WAAW,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS;QAAE,EAAE,CAAC,EAAE,MAAM,CAAC,CAAA;KAAE,GAChE,CAAC,GACD,KAAK;CACV,CAAC,CAAC;AAOH,wBAAgB,EAAE,CAAC,CAAC,SAAS,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAQvE;AAKD,eAAO,MAAM,cAAc,WAAK,CAAC;AAYjC,wBAAgB,SAAS,CACvB,CAAC,SAAS,MAAM,EAChB,CAAC,SAAS,MAAM,CAAC,EACjB,CAAC,SAAS,MAAM,WAAW,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAE/C,OAAO,EAAE,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAClC,OAAO,EAAE,CAAC,EACV,KAAK,EAAE,CAAC,EACR,QAAQ,EAAE,CAAC,EACX,KAAK,EAAE,WAAW,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS,GACpD,YAAY,CAAC,CAAC,CAAC,CAwBjB;AASD,wBAAgB,YAAY,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,MAAM,CAAC,EAC9D,OAAO,EAAE,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAClC,KAAK,EAAE,CAAC,EACR,QAAQ,CAAC,EAAE,MAAM,WAAW,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAC/C,YAAY,CAAC,CAAC,CAAC,CAkBjB;AASD,wBAAgB,YAAY,CAAC,CAAC,SAAS,MAAM,EAC3C,IAAI,EAAE,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAC/B,KAAK,EAAE,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,GAC/B,YAAY,CAAC,CAAC,CAAC,CAoBjB;AAOD,wBAAgB,OAAO,CAAC,CAAC,SAAS,MAAM,EACtC,OAAO,EAAE,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,GACjC,OAAO,CAET"}
|
package/lib/mutate.js
CHANGED
|
@@ -22,6 +22,16 @@ function shallowEqual(a, b) {
|
|
|
22
22
|
}
|
|
23
23
|
return true;
|
|
24
24
|
}
|
|
25
|
+
export function eq(input) {
|
|
26
|
+
const filters = {};
|
|
27
|
+
for (const [key, value] of Object.entries(input)) {
|
|
28
|
+
if (value !== undefined) {
|
|
29
|
+
filters[key] = { eq: value };
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
return filters;
|
|
33
|
+
}
|
|
34
|
+
export const buildEqFilters = eq;
|
|
25
35
|
export function setFilter(filters, _schema, field, operator, value) {
|
|
26
36
|
const currentField = filters[field];
|
|
27
37
|
if (value === undefined) {
|
|
@@ -85,4 +95,4 @@ export function mergeFilters(base, patch) {
|
|
|
85
95
|
export function isEmpty(filters) {
|
|
86
96
|
return Object.keys(filters).length === 0;
|
|
87
97
|
}
|
|
88
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXV0YXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL211dGF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFLQSxTQUFTLFlBQVksQ0FBQyxDQUFVLEVBQUUsQ0FBVTtJQUMxQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUNaLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUNELElBQ0UsT0FBTyxDQUFDLEtBQUssUUFBUTtRQUNyQixDQUFDLEtBQUssSUFBSTtRQUNWLE9BQU8sQ0FBQyxLQUFLLFFBQVE7UUFDckIsQ0FBQyxLQUFLLElBQUksRUFDVixDQUFDO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBQ0QsTUFBTSxJQUFJLEdBQUcsQ0FBNEIsQ0FBQztJQUMxQyxNQUFNLElBQUksR0FBRyxDQUE0QixDQUFDO0lBQzFDLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDaEMsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNoQyxJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ2xDLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUNELEtBQUssTUFBTSxDQUFDLElBQUksS0FBSyxFQUFFLENBQUM7UUFDdEIsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDeEIsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO0lBQ0gsQ0FBQztJQUNELE9BQU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQztBQVlELE1BQU0sVUFBVSxTQUFTLENBS3ZCLE9BQWtDLEVBQ2xDLE9BQVUsRUFDVixLQUFRLEVBQ1IsUUFBVyxFQUNYLEtBQXFEO0lBRXJELE1BQU0sWUFBWSxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztJ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QUFZLENBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUM7WUFDN0MsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLFFBQXVDLENBQUM7WUFDdEQsT0FBTyxHQUFHLElBQUksQ0FBQztRQUNqQixDQUFDO0lBQ0gsQ0FBQztJQUNELElBQUksT0FBTyxFQUFFLENBQUM7UUFDWixPQUFPLE1BQXlCLENBQUM7SUFDbkMsQ0FBQztJQUNELE9BQU8sSUFBdUIsQ0FBQztBQUNqQyxDQUFDO0FBT0QsTUFBTSxVQUFVLE9BQU8sQ0FDckIsT0FBa0M7SUFFbEMsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUM7QUFDM0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgSW5mZXJGaWx0ZXJzLCBTY2hlbWEgfSBmcm9tICcuL3R5cGVzLmpzJztcblxuLyoqXG4gKiBDaGVja3Mgc2hhbGxvdyBlcXVhbGl0eSBiZXR3ZWVuIHR3byBwbGFpbiBvYmplY3RzIChvd24gZW51bWVyYWJsZSBzdHJpbmcga2V5cyBvbmx5KS5cbiAqL1xuZnVuY3Rpb24gc2hhbGxvd0VxdWFsKGE6IHVua25vd24sIGI6IHVua25vd24pOiBib29sZWFuIHtcbiAgaWYgKGEgPT09IGIpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICBpZiAoXG4gICAgdHlwZW9mIGEgIT09ICdvYmplY3QnIHx8XG4gICAgYSA9PT0gbnVsbCB8fFxuICAgIHR5cGVvZiBiICE9PSAnb2JqZWN0JyB8fFxuICAgIGIgPT09IG51bGxcbiAgKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGNvbnN0IGFPYmogPSBhIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICBjb25zdCBiT2JqID0gYiBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgY29uc3QgYUtleXMgPSBPYmplY3Qua2V5cyhhT2JqKTtcbiAgY29uc3QgYktleXMgPSBPYmplY3Qua2V5cyhiT2JqKTtcbiAgaWYgKGFLZXlzLmxlbmd0aCAhPT0gYktleXMubGVuZ3RoKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGZvciAoY29uc3QgayBvZiBhS2V5cykge1xuICAgIGlmIChhT2JqW2tdICE9PSBiT2JqW2tdKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG4gIHJldHVybiB0cnVlO1xufVxuXG4vKipcbiAqIFNldHMgb3IgdW5zZXRzIGEgc3BlY2lmaWMgb3BlcmF0b3IgdmFsdWUgb24gYSBmaWVsZCB3aGlsZSBwcmVzZXJ2aW5nIHJlZmVyZW5jZVxuICogZXF1YWxpdHkgd2hlbiBub3RoaW5nIGNoYW5nZXMuXG4gKlxuICogQHBhcmFtIGZpbHRlcnMgLSBDdXJyZW50IGZpbHRlcnMgb2JqZWN0IHRoYXQgd2lsbCBiZSB0cmVhdGVkIGFzIGltbXV0YWJsZSBpbnB1dC5cbiAqIEBwYXJhbSBfc2NoZW1hIC0gU2NoZW1hIHJlZmVyZW5jZSAocmVzZXJ2ZWQgZm9yIGZ1dHVyZSB2YWxpZGF0aW9uIGhvb2tzKS5cbiAqIEBwYXJhbSBmaWVsZCAtIEZpZWxkIGtleSB0byB1cGRhdGUuXG4gKiBAcGFyYW0gb3BlcmF0b3IgLSBPcGVyYXRvciBuYW1lIHRvIHNldCBvciByZW1vdmUuXG4gKiBAcGFyYW0gdmFsdWUgLSBOZXcgb3BlcmF0b3IgdmFsdWU7IHBhc3MgYHVuZGVmaW5lZGAgdG8gcmVtb3ZlIGl0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gc2V0RmlsdGVyPFxuICBTIGV4dGVuZHMgU2NoZW1hLFxuICBGIGV4dGVuZHMga2V5b2YgUyxcbiAgTyBleHRlbmRzIGtleW9mIE5vbk51bGxhYmxlPEluZmVyRmlsdGVyczxTPltGXT4sXG4+KFxuICBmaWx0ZXJzOiBSZWFkb25seTxJbmZlckZpbHRlcnM8Uz4+LFxuICBfc2NoZW1hOiBTLCAvLyByZXNlcnZlZCBmb3IgZnV0dXJlIHZhbGlkYXRpb24gaG9va3NcbiAgZmllbGQ6IEYsXG4gIG9wZXJhdG9yOiBPLFxuICB2YWx1ZTogTm9uTnVsbGFibGU8SW5mZXJGaWx0ZXJzPFM+W0ZdPltPXSB8IHVuZGVmaW5lZCxcbik6IEluZmVyRmlsdGVyczxTPiB7XG4gIGNvbnN0IGN1cnJlbnRGaWVsZCA9IGZpbHRlcnNbZmllbGRdO1xuICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgIGlmIChjdXJyZW50RmllbGQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIGZpbHRlcnMgYXMgSW5mZXJGaWx0ZXJzPFM+O1xuICAgIH1cbiAgICBjb25zdCB7IFtvcGVyYXRvcl06IF9yZW1vdmVkLCAuLi5yZXN0IH0gPSBjdXJyZW50RmllbGQgYXMgUmVjb3JkPFxuICAgICAgc3RyaW5nLFxuICAgICAgdW5rbm93blxuICAgID47XG4gICAgaWYgKE9iamVjdC5rZXlzKHJlc3QpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgY29uc3QgeyBbZmllbGRdOiBfZiwgLi4uY2xvbmUgfSA9IGZpbHRlcnMgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gICAgICByZXR1cm4gY2xvbmUgYXMgSW5mZXJGaWx0ZXJzPFM+O1xuICAgIH1cbiAgICByZXR1cm4geyAuLi5maWx0ZXJzLCBbZmllbGRdOiByZXN0IH0gYXMgSW5mZXJGaWx0ZXJzPFM+O1xuICB9XG4gIGNvbnN0IG5ld0ZpZWxkID0ge1xuICAgIC4uLihjdXJyZW50RmllbGQgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4gfCB1bmRlZmluZWQpLFxuICAgIFtvcGVyYXRvcl06IHZhbHVlLFxuICB9O1xuICBpZiAoY3VycmVudEZpZWxkICE9PSB1bmRlZmluZWQgJiYgc2hhbGxvd0VxdWFsKGN1cnJlbnRGaWVsZCwgbmV3RmllbGQpKSB7XG4gICAgcmV0dXJuIGZpbHRlcnMgYXMgSW5mZXJGaWx0ZXJzPFM+O1xuICB9XG4gIHJldHVybiB7IC4uLmZpbHRlcnMsIFtmaWVsZF06IG5ld0ZpZWxkIH0gYXMgSW5mZXJGaWx0ZXJzPFM+O1xufVxuXG4vKipcbiAqIFJlbW92ZXMgZWl0aGVyIGFuIGVudGlyZSBmaWVsZCBvciBhIHNwZWNpZmljIG9wZXJhdG9yIGZyb20gdGhlIGZpbHRlcnMgb2JqZWN0LlxuICpcbiAqIEBwYXJhbSBmaWx0ZXJzIC0gQ3VycmVudCBmaWx0ZXJzIG9iamVjdCAodHJlYXRlZCBpbW11dGFibHkpLlxuICogQHBhcmFtIGZpZWxkIC0gRmllbGQgbmFtZSB0byBhbHRlci5cbiAqIEBwYXJhbSBvcGVyYXRvciAtIE9wdGlvbmFsIG9wZXJhdG9yIHRvIHJlbW92ZTsgb21pdCB0byBkcm9wIHRoZSB3aG9sZSBmaWVsZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZUZpbHRlcjxTIGV4dGVuZHMgU2NoZW1hLCBGIGV4dGVuZHMga2V5b2YgUz4oXG4gIGZpbHRlcnM6IFJlYWRvbmx5PEluZmVyRmlsdGVyczxTPj4sXG4gIGZpZWxkOiBGLFxuICBvcGVyYXRvcj86IGtleW9mIE5vbk51bGxhYmxlPEluZmVyRmlsdGVyczxTPltGXT4sXG4pOiBJbmZlckZpbHRlcnM8Uz4ge1xuICBjb25zdCBjdXJyZW50RmllbGQgPSBmaWx0ZXJzW2ZpZWxkXTtcbiAgaWYgKGN1cnJlbnRGaWVsZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIGZpbHRlcnMgYXMgSW5mZXJGaWx0ZXJzPFM+O1xuICB9XG4gIGlmIChvcGVyYXRvciA9PT0gdW5kZWZpbmVkKSB7XG4gICAgY29uc3QgeyBbZmllbGRdOiBfcmVtb3ZlZCwgLi4uY2xvbmUgfSA9IGZpbHRlcnMgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gICAgcmV0dXJuIGNsb25lIGFzIEluZmVyRmlsdGVyczxTPjtcbiAgfVxuICBjb25zdCB7IFtvcGVyYXRvcl06IF9vcFJlbW92ZWQsIC4uLnJlc3QgfSA9IGN1cnJlbnRGaWVsZCBhcyBSZWNvcmQ8XG4gICAgc3RyaW5nLFxuICAgIHVua25vd25cbiAgPjtcbiAgaWYgKE9iamVjdC5rZXlzKHJlc3QpLmxlbmd0aCA9PT0gMCkge1xuICAgIGNvbnN0IHsgW2ZpZWxkXTogX2YsIC4uLmNsb25lIH0gPSBmaWx0ZXJzIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICAgIHJldHVybiBjbG9uZSBhcyBJbmZlckZpbHRlcnM8Uz47XG4gIH1cbiAgcmV0dXJuIHsgLi4uZmlsdGVycywgW2ZpZWxkXTogcmVzdCB9IGFzIEluZmVyRmlsdGVyczxTPjtcbn1cblxuLyoqXG4gKiBNZXJnZXMgYSBwYXRjaCBvZiBmaWx0ZXJzIGludG8gYW4gZXhpc3RpbmcgZmlsdGVycyBvYmplY3Qgd2hpbGUgcHJlc2VydmluZyByZWZlcmVuY2VcbiAqIGlkZW50aXR5IGZvciB1bmNoYW5nZWQgZmllbGRzLlxuICpcbiAqIEBwYXJhbSBiYXNlIC0gT3JpZ2luYWwgZmlsdGVycy5cbiAqIEBwYXJhbSBwYXRjaCAtIEZpbHRlcnMgdG8gb3ZlcmxheS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1lcmdlRmlsdGVyczxTIGV4dGVuZHMgU2NoZW1hPihcbiAgYmFzZTogUmVhZG9ubHk8SW5mZXJGaWx0ZXJzPFM+PixcbiAgcGF0Y2g6IFJlYWRvbmx5PEluZmVyRmlsdGVyczxTPj4sXG4pOiBJbmZlckZpbHRlcnM8Uz4ge1xuICBsZXQgY2hhbmdlZCA9IGZhbHNlO1xuICBjb25zdCByZXN1bHQ6IFBhcnRpYWw8SW5mZXJGaWx0ZXJzPFM+PiA9IHsgLi4uYmFzZSB9O1xuICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhwYXRjaCkgYXMgKGtleW9mIFMpW10pIHtcbiAgICBjb25zdCBleGlzdGluZyA9IGJhc2Vba2V5XTtcbiAgICBjb25zdCBpbmNvbWluZyA9IHBhdGNoW2tleV07XG4gICAgaWYgKGluY29taW5nID09PSB1bmRlZmluZWQpIHtcbiAgICAgIC8vIHNraXAgdW5kZWZpbmVkIGluY29taW5nXG4gICAgfSBlbHNlIGlmIChleGlzdGluZyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXN1bHRba2V5XSA9IGluY29taW5nIGFzIEluZmVyRmlsdGVyczxTPlt0eXBlb2Yga2V5XTtcbiAgICAgIGNoYW5nZWQgPSB0cnVlO1xuICAgIH0gZWxzZSBpZiAoIXNoYWxsb3dFcXVhbChleGlzdGluZywgaW5jb21pbmcpKSB7XG4gICAgICByZXN1bHRba2V5XSA9IGluY29taW5nIGFzIEluZmVyRmlsdGVyczxTPlt0eXBlb2Yga2V5XTtcbiAgICAgIGNoYW5nZWQgPSB0cnVlO1xuICAgIH1cbiAgfVxuICBpZiAoY2hhbmdlZCkge1xuICAgIHJldHVybiByZXN1bHQgYXMgSW5mZXJGaWx0ZXJzPFM+O1xuICB9XG4gIHJldHVybiBiYXNlIGFzIEluZmVyRmlsdGVyczxTPjtcbn1cblxuLyoqXG4gKiBEZXRlcm1pbmVzIGlmIHRoZSBmaWx0ZXJzIG9iamVjdCBpcyBlbXB0eSAobm8gZmllbGRzIHByZXNlbnQpLlxuICpcbiAqIEBwYXJhbSBmaWx0ZXJzIC0gRmlsdGVycyB0byBpbnNwZWN0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNFbXB0eTxTIGV4dGVuZHMgU2NoZW1hPihcbiAgZmlsdGVyczogUmVhZG9ubHk8SW5mZXJGaWx0ZXJzPFM+Pixcbik6IGJvb2xlYW4ge1xuICByZXR1cm4gT2JqZWN0LmtleXMoZmlsdGVycykubGVuZ3RoID09PSAwO1xufVxuIl19
|
|
98
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXV0YXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL211dGF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFLQSxTQUFTLFlBQVksQ0FBQyxDQUFVLEVBQUUsQ0FBVTtJQUMxQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUNaLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUNELElBQ0UsT0FBTyxDQUFDLEtBQUssUUFBUTtRQUNyQixDQUFDLEtBQUssSUFBSTtRQUNWLE9BQU8sQ0FBQyxLQUFLLFFBQVE7UUFDckIsQ0FBQyxLQUFLLElBQUksRUFDVixDQUFDO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBQ0QsTUFBTSxJQUFJLEdBQUcsQ0FBNEIsQ0FBQztJQUMxQyxNQUFNLElBQUksR0FBRyxDQUE0QixDQUFDO0lBQzFDLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDaEMsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNoQyxJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ2xDLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUNELEtBQUssTUFBTSxDQUFDLElBQUksS0FBSyxFQUFFLENBQUM7UUFDdEIsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDeEIsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO0lBQ0gsQ0FBQztJQUNELE9BQU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQztBQWVELE1BQU0sVUFBVSxFQUFFLENBQW1CLEtBQWlCO0lBQ3BELE1BQU0sT0FBTyxHQUE0QixFQUFFLENBQUM7SUFDNUMsS0FBSyxNQUFNLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxJQUFJLE1BQU0sQ0FBQyxP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Q0FBQztJQUNyRCxLQUFLLE1BQU0sR0FBRyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFnQixFQUFFLENBQUM7UUFDcEQsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzNCLE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM1QixJQUFJLFFBQVEsS0FBSyxTQUFTLEVBQUUsQ0FBQztRQUU3QixDQUFDO2FBQU0sSUFBSSxRQUFRLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDbEMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLFFBQXVDLENBQUM7WUFDdEQsT0FBTyxHQUFHLElBQUksQ0FBQztRQUNqQixDQUFDO2FBQU0sSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLEVBQUUsQ0FBQztZQUM3QyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsUUFBdUMsQ0FBQztZQUN0RCxPQUFPLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLENBQUM7SUFDSCxDQUFDO0lBQ0QsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUNaLE9BQU8sTUFBeUIsQ0FBQztJQUNuQyxDQUFDO0lBQ0QsT0FBTyxJQUF1QixDQUFDO0FBQ2pDLENBQUM7QUFPRCxNQUFNLFVBQVUsT0FBTyxDQUNyQixPQUFrQztJQUVsQyxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQztBQUMzQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBJbmZlckZpbHRlcnMsIFNjaGVtYSB9IGZyb20gJy4vdHlwZXMuanMnO1xuXG4vKipcbiAqIENoZWNrcyBzaGFsbG93IGVxdWFsaXR5IGJldHdlZW4gdHdvIHBsYWluIG9iamVjdHMgKG93biBlbnVtZXJhYmxlIHN0cmluZyBrZXlzIG9ubHkpLlxuICovXG5mdW5jdGlvbiBzaGFsbG93RXF1YWwoYTogdW5rbm93biwgYjogdW5rbm93bik6IGJvb2xlYW4ge1xuICBpZiAoYSA9PT0gYikge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIGlmIChcbiAgICB0eXBlb2YgYSAhPT0gJ29iamVjdCcgfHxcbiAgICBhID09PSBudWxsIHx8XG4gICAgdHlwZW9mIGIgIT09ICdvYmplY3QnIHx8XG4gICAgYiA9PT0gbnVsbFxuICApIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgY29uc3QgYU9iaiA9IGEgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIGNvbnN0IGJPYmogPSBiIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICBjb25zdCBhS2V5cyA9IE9iamVjdC5rZXlzKGFPYmopO1xuICBjb25zdCBiS2V5cyA9IE9iamVjdC5rZXlzKGJPYmopO1xuICBpZiAoYUtleXMubGVuZ3RoICE9PSBiS2V5cy5sZW5ndGgpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgZm9yIChjb25zdCBrIG9mIGFLZXlzKSB7XG4gICAgaWYgKGFPYmpba10gIT09IGJPYmpba10pIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHRydWU7XG59XG5cbmV4cG9ydCB0eXBlIEVxSW5wdXQ8UyBleHRlbmRzIFNjaGVtYT4gPSBQYXJ0aWFsPHtcbiAgW0sgaW4ga2V5b2YgUyBhcyAnZXEnIGV4dGVuZHMga2V5b2YgTm9uTnVsbGFibGU8SW5mZXJGaWx0ZXJzPFM+W0tdPlxuICAgID8gS1xuICAgIDogbmV2ZXJdOiBOb25OdWxsYWJsZTxJbmZlckZpbHRlcnM8Uz5bS10+IGV4dGVuZHMgeyBlcT86IGluZmVyIFYgfVxuICAgID8gVlxuICAgIDogbmV2ZXI7XG59PjtcblxuLyoqXG4gKiBCdWlsZHMgYSBmaWx0ZXJzIG9iamVjdCB1c2luZyBpbXBsaWNpdCBlcXVhbGl0eSBmb3IgZWFjaCBwcm92aWRlZCBmaWVsZC5cbiAqXG4gKiBAcGFyYW0gaW5wdXQgLSBSZWNvcmQgb2YgZmllbGQgdmFsdWVzIHRvIGVuY29kZSBhcyBgeyBlcTogdmFsdWUgfWAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBlcTxTIGV4dGVuZHMgU2NoZW1hPihpbnB1dDogRXFJbnB1dDxTPik6IEluZmVyRmlsdGVyczxTPiB7XG4gIGNvbnN0IGZpbHRlcnM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge307XG4gIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKGlucHV0KSkge1xuICAgIGlmICh2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBmaWx0ZXJzW2tleV0gPSB7IGVxOiB2YWx1ZSB9O1xuICAgIH1cbiAgfVxuICByZXR1cm4gZmlsdGVycyBhcyBJbmZlckZpbHRlcnM8Uz47XG59XG5cbi8qKlxuICogQWxpYXMgZm9yIHtAbGluayBlcX0gZm9yIGNhbGxlcnMgd2hvIHByZWZlciBhIG1vcmUgZGVzY3JpcHRpdmUgbmFtZS5cbiAqL1xuZXhwb3J0IGNvbnN0IGJ1aWxkRXFGaWx0ZXJzID0gZXE7XG5cbi8qKlxuICogU2V0cyBvciB1bnNldHMgYSBzcGVjaWZpYyBvcGVyYXRvciB2YWx1ZSBvbiBhIGZpZWxkIHdoaWxlIHByZXNlcnZpbmcgcmVmZXJlbmNlXG4gKiBlcXVhbGl0eSB3aGVuIG5vdGhpbmcgY2hhbmdlcy5cbiAqXG4gKiBAcGFyYW0gZmlsdGVycyAtIEN1cnJlbnQgZmlsdGVycyBvYmplY3QgdGhhdCB3aWxsIGJlIHRyZWF0ZWQgYXMgaW1tdXRhYmxlIGlucHV0LlxuICogQHBhcmFtIF9zY2hlbWEgLSBTY2hlbWEgcmVmZXJlbmNlIChyZXNlcnZlZCBmb3IgZnV0dXJlIHZhbGlkYXRpb24gaG9va3MpLlxuICogQHBhcmFtIGZpZWxkIC0gRmllbGQga2V5IHRvIHVwZGF0ZS5cbiAqIEBwYXJhbSBvcGVyYXRvciAtIE9wZXJhdG9yIG5hbWUgdG8gc2V0IG9yIHJlbW92ZS5cbiAqIEBwYXJhbSB2YWx1ZSAtIE5ldyBvcGVyYXRvciB2YWx1ZTsgcGFzcyBgdW5kZWZpbmVkYCB0byByZW1vdmUgaXQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXRGaWx0ZXI8XG4gIFMgZXh0ZW5kcyBTY2hlbWEsXG4gIEYgZXh0ZW5kcyBrZXlvZiBTLFxuICBPIGV4dGVuZHMga2V5b2YgTm9uTnVsbGFibGU8SW5mZXJGaWx0ZXJzPFM+W0ZdPixcbj4oXG4gIGZpbHRlcnM6IFJlYWRvbmx5PEluZmVyRmlsdGVyczxTPj4sXG4gIF9zY2hlbWE6IFMsIC8vIHJlc2VydmVkIGZvciBmdXR1cmUgdmFsaWRhdGlvbiBob29rc1xuICBmaWVsZDogRixcbiAgb3BlcmF0b3I6IE8sXG4gIHZhbHVlOiBOb25OdWxsYWJsZTxJbmZlckZpbHRlcnM8Uz5bRl0+W09dIHwgdW5kZWZpbmVkLFxuKTogSW5mZXJGaWx0ZXJzPFM+IHtcbiAgY29uc3QgY3VycmVudEZpZWxkID0gZmlsdGVyc1tmaWVsZF07XG4gIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgaWYgKGN1cnJlbnRGaWVsZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gZmlsdGVycyBhcyBJbmZlckZpbHRlcnM8Uz47XG4gICAgfVxuICAgIGNvbnN0IHsgW29wZXJhdG9yXTogX3JlbW92ZWQsIC4uLnJlc3QgfSA9IGN1cnJlbnRGaWVsZCBhcyBSZWNvcmQ8XG4gICAgICBzdHJpbmcsXG4gICAgICB1bmtub3duXG4gICAgPjtcbiAgICBpZiAoT2JqZWN0LmtleXMocmVzdCkubGVuZ3RoID09PSAwKSB7XG4gICAgICBjb25zdCB7IFtmaWVsZF06IF9mLCAuLi5jbG9uZSB9ID0gZmlsdGVycyBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgICAgIHJldHVybiBjbG9uZSBhcyBJbmZlckZpbHRlcnM8Uz47XG4gICAgfVxuICAgIHJldHVybiB7IC4uLmZpbHRlcnMsIFtmaWVsZF06IHJlc3QgfSBhcyBJbmZlckZpbHRlcnM8Uz47XG4gIH1cbiAgY29uc3QgbmV3RmllbGQgPSB7XG4gICAgLi4uKGN1cnJlbnRGaWVsZCBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB8IHVuZGVmaW5lZCksXG4gICAgW29wZXJhdG9yXTogdmFsdWUsXG4gIH07XG4gIGlmIChjdXJyZW50RmllbGQgIT09IHVuZGVmaW5lZCAmJiBzaGFsbG93RXF1YWwoY3VycmVudEZpZWxkLCBuZXdGaWVsZCkpIHtcbiAgICByZXR1cm4gZmlsdGVycyBhcyBJbmZlckZpbHRlcnM8Uz47XG4gIH1cbiAgcmV0dXJuIHsgLi4uZmlsdGVycywgW2ZpZWxkXTogbmV3RmllbGQgfSBhcyBJbmZlckZpbHRlcnM8Uz47XG59XG5cbi8qKlxuICogUmVtb3ZlcyBlaXRoZXIgYW4gZW50aXJlIGZpZWxkIG9yIGEgc3BlY2lmaWMgb3BlcmF0b3IgZnJvbSB0aGUgZmlsdGVycyBvYmplY3QuXG4gKlxuICogQHBhcmFtIGZpbHRlcnMgLSBDdXJyZW50IGZpbHRlcnMgb2JqZWN0ICh0cmVhdGVkIGltbXV0YWJseSkuXG4gKiBAcGFyYW0gZmllbGQgLSBGaWVsZCBuYW1lIHRvIGFsdGVyLlxuICogQHBhcmFtIG9wZXJhdG9yIC0gT3B0aW9uYWwgb3BlcmF0b3IgdG8gcmVtb3ZlOyBvbWl0IHRvIGRyb3AgdGhlIHdob2xlIGZpZWxkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVtb3ZlRmlsdGVyPFMgZXh0ZW5kcyBTY2hlbWEsIEYgZXh0ZW5kcyBrZXlvZiBTPihcbiAgZmlsdGVyczogUmVhZG9ubHk8SW5mZXJGaWx0ZXJzPFM+PixcbiAgZmllbGQ6IEYsXG4gIG9wZXJhdG9yPzoga2V5b2YgTm9uTnVsbGFibGU8SW5mZXJGaWx0ZXJzPFM+W0ZdPixcbik6IEluZmVyRmlsdGVyczxTPiB7XG4gIGNvbnN0IGN1cnJlbnRGaWVsZCA9IGZpbHRlcnNbZmllbGRdO1xuICBpZiAoY3VycmVudEZpZWxkID09PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gZmlsdGVycyBhcyBJbmZlckZpbHRlcnM8Uz47XG4gIH1cbiAgaWYgKG9wZXJhdG9yID09PSB1bmRlZmluZWQpIHtcbiAgICBjb25zdCB7IFtmaWVsZF06IF9yZW1vdmVkLCAuLi5jbG9uZSB9ID0gZmlsdGVycyBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgICByZXR1cm4gY2xvbmUgYXMgSW5mZXJGaWx0ZXJzPFM+O1xuICB9XG4gIGNvbnN0IHsgW29wZXJhdG9yXTogX29wUmVtb3ZlZCwgLi4ucmVzdCB9ID0gY3VycmVudEZpZWxkIGFzIFJlY29yZDxcbiAgICBzdHJpbmcsXG4gICAgdW5rbm93blxuICA+O1xuICBpZiAoT2JqZWN0LmtleXMocmVzdCkubGVuZ3RoID09PSAwKSB7XG4gICAgY29uc3QgeyBbZmllbGRdOiBfZiwgLi4uY2xvbmUgfSA9IGZpbHRlcnMgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gICAgcmV0dXJuIGNsb25lIGFzIEluZmVyRmlsdGVyczxTPjtcbiAgfVxuICByZXR1cm4geyAuLi5maWx0ZXJzLCBbZmllbGRdOiByZXN0IH0gYXMgSW5mZXJGaWx0ZXJzPFM+O1xufVxuXG4vKipcbiAqIE1lcmdlcyBhIHBhdGNoIG9mIGZpbHRlcnMgaW50byBhbiBleGlzdGluZyBmaWx0ZXJzIG9iamVjdCB3aGlsZSBwcmVzZXJ2aW5nIHJlZmVyZW5jZVxuICogaWRlbnRpdHkgZm9yIHVuY2hhbmdlZCBmaWVsZHMuXG4gKlxuICogQHBhcmFtIGJhc2UgLSBPcmlnaW5hbCBmaWx0ZXJzLlxuICogQHBhcmFtIHBhdGNoIC0gRmlsdGVycyB0byBvdmVybGF5LlxuICovXG5leHBvcnQgZnVuY3Rpb24gbWVyZ2VGaWx0ZXJzPFMgZXh0ZW5kcyBTY2hlbWE+KFxuICBiYXNlOiBSZWFkb25seTxJbmZlckZpbHRlcnM8Uz4+LFxuICBwYXRjaDogUmVhZG9ubHk8SW5mZXJGaWx0ZXJzPFM+Pixcbik6IEluZmVyRmlsdGVyczxTPiB7XG4gIGxldCBjaGFuZ2VkID0gZmFsc2U7XG4gIGNvbnN0IHJlc3VsdDogUGFydGlhbDxJbmZlckZpbHRlcnM8Uz4+ID0geyAuLi5iYXNlIH07XG4gIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKHBhdGNoKSBhcyAoa2V5b2YgUylbXSkge1xuICAgIGNvbnN0IGV4aXN0aW5nID0gYmFzZVtrZXldO1xuICAgIGNvbnN0IGluY29taW5nID0gcGF0Y2hba2V5XTtcbiAgICBpZiAoaW5jb21pbmcgPT09IHVuZGVmaW5lZCkge1xuICAgICAgLy8gc2tpcCB1bmRlZmluZWQgaW5jb21pbmdcbiAgICB9IGVsc2UgaWYgKGV4aXN0aW5nID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJlc3VsdFtrZXldID0gaW5jb21pbmcgYXMgSW5mZXJGaWx0ZXJzPFM+W3R5cGVvZiBrZXldO1xuICAgICAgY2hhbmdlZCA9IHRydWU7XG4gICAgfSBlbHNlIGlmICghc2hhbGxvd0VxdWFsKGV4aXN0aW5nLCBpbmNvbWluZykpIHtcbiAgICAgIHJlc3VsdFtrZXldID0gaW5jb21pbmcgYXMgSW5mZXJGaWx0ZXJzPFM+W3R5cGVvZiBrZXldO1xuICAgICAgY2hhbmdlZCA9IHRydWU7XG4gICAgfVxuICB9XG4gIGlmIChjaGFuZ2VkKSB7XG4gICAgcmV0dXJuIHJlc3VsdCBhcyBJbmZlckZpbHRlcnM8Uz47XG4gIH1cbiAgcmV0dXJuIGJhc2UgYXMgSW5mZXJGaWx0ZXJzPFM+O1xufVxuXG4vKipcbiAqIERldGVybWluZXMgaWYgdGhlIGZpbHRlcnMgb2JqZWN0IGlzIGVtcHR5IChubyBmaWVsZHMgcHJlc2VudCkuXG4gKlxuICogQHBhcmFtIGZpbHRlcnMgLSBGaWx0ZXJzIHRvIGluc3BlY3QuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0VtcHR5PFMgZXh0ZW5kcyBTY2hlbWE+KFxuICBmaWx0ZXJzOiBSZWFkb25seTxJbmZlckZpbHRlcnM8Uz4+LFxuKTogYm9vbGVhbiB7XG4gIHJldHVybiBPYmplY3Qua2V5cyhmaWx0ZXJzKS5sZW5ndGggPT09IDA7XG59XG4iXX0=
|
package/lib/parse.js
CHANGED
|
@@ -25,6 +25,9 @@ function decodeValue(value, field, operator, diagnostics) {
|
|
|
25
25
|
}
|
|
26
26
|
}
|
|
27
27
|
function parseSingleValue(descriptor, raw) {
|
|
28
|
+
if (descriptor.parse != null) {
|
|
29
|
+
return descriptor.parse(raw);
|
|
30
|
+
}
|
|
28
31
|
if (descriptor.kind === 'number') {
|
|
29
32
|
if (raw === '') {
|
|
30
33
|
return undefined;
|
|
@@ -178,4 +181,4 @@ export function parse(rawSearch, schema) {
|
|
|
178
181
|
}
|
|
179
182
|
return acc;
|
|
180
183
|
}
|
|
181
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvcGFyc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBV0EsTUFBTSxPQUFPLEdBQW9CLFNBQVMsQ0FBQztBQUMzQyxNQUFNLFFBQVEsR0FBNEIsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFReEQsU0FBUyxpQkFBaUIsQ0FDeEIsT0FBd0IsRUFDeEIsS0FBYTtJQUViLE1BQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxLQUFnQixDQUU1QixDQUFDO0lBQ2QsSUFBSSxRQUFRLEtBQUssU0FBUyxFQUFFLENBQUM7UUFDM0IsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxDQUFDO0lBQ2xELENBQUM7SUFDRCxNQUFNLEtBQUssR0FBb0IsRUFBRSxHQUFHLE9BQU8sRUFBRSxDQUFDO0lBQzlDLE1BQU0sT0FBTyxHQUE0QixFQUFFLENBQUM7SUFDM0MsS0FBaUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxPQUFPLENBQUM7SUFDcEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxDQUFDO0FBQy9DLENBQUM7QUFHRCxTQUFTLFdBQVcsQ0FDbEIsS0FBYSxFQUNiLEtBQWEsRUFDYixRQUFnQixFQUNoQixXQUF5QjtJQUV6QixJQUFJLENBQUM7UUFDSCxPQUFPLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFBQyxNQUFNLENBQUM7UUFDUCxXQUFXLENBQUMsSUFBSSxDQUFDO1lBQ2YsSUFBSSxFQUFFLGFBQWE7WUFDbkIsS0FBSztZQUNMLFFBQVE7WUFDUixNQUFNLEVBQUUsa0JBQWtCO1NBQzNCLENBQUMsQ0FBQztRQUNILE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7QUFDSCxDQUFDO0FBR0QsU0FBUyxnQkFBZ0IsQ0FDdkIsVUFBMkIsRUFDM0IsR0FBVztJQUVYLElB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QUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLEdBQUcsQ0FBQyxDQUFDO29CQUMxRCxDQUFDO2dCQUNILENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFDRCxPQUFPLEdBQUcsQ0FBQztBQUNiLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7XG4gIFNjaGVtYSxcbiAgT3BlcmF0b3IsXG4gIExpc3RPcGVyYXRvcixcbiAgQmV0d2Vlbk9wZXJhdG9yLFxuICBJbmZlckZpbHRlcnMsXG4gIEZpZWxkRGVzY3JpcHRvcixcbiAgUGFyc2VSZXN1bHQsXG59IGZyb20gJy4vdHlwZXMuanMnO1xuaW1wb3J0IHR5cGUgeyBEaWFnbm9zdGljIH0gZnJvbSAnLi9lcnJvcnMuanMnO1xuXG5jb25zdCBCRVRXRUVOOiBCZXR3ZWVuT3BlcmF0b3IgPSAnYmV0d2Vlbic7XG5jb25zdCBMSVNUX09QUzogcmVhZG9ubHkgTGlzdE9wZXJhdG9yW10gPSBbJ2luJywgJ25pbiddO1xuXG5pbnRlcmZhY2UgSW50ZXJuYWxBY2N1bXVsYXRvcjxTIGV4dGVuZHMgU2NoZW1hPiB7XG4gIGZpbHRlcnM6IEluZmVyRmlsdGVyczxTPjtcbiAgZGlhZ25vc3RpY3M6IERpYWdub3N0aWNbXTtcbn1cblxuLyoqIFNoYWxsb3cgY2xvbmUgcGx1cyBlbnN1cmUgZmllbGQgb2JqZWN0IGhlbHBlciAoaW1tdXRhYmxlIHVwZGF0ZSkuICovXG5mdW5jdGlvbiBlbnN1cmVGaWVsZE9iamVjdDxTIGV4dGVuZHMgU2NoZW1hPihcbiAgZmlsdGVyczogSW5mZXJGaWx0ZXJzPFM+LFxuICBmaWVsZDogc3RyaW5nLFxuKTogeyBjb250YWluZXI6IEluZmVyRmlsdGVyczxTPjsgdGFyZ2V0OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB9IHtcbiAgY29uc3QgZXhpc3RpbmcgPSBmaWx0ZXJzW2ZpZWxkIGFzIGtleW9mIFNdIGFzXG4gICAgfCBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuICAgIHwgdW5kZWZpbmVkO1xuICBpZiAoZXhpc3RpbmcgIT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiB7IGNvbnRhaW5lcjogZmlsdGVycywgdGFyZ2V0OiBleGlzdGluZyB9O1xuICB9XG4gIGNvbnN0IGNsb25lOiBJbmZlckZpbHRlcnM8Uz4gPSB7IC4uLmZpbHRlcnMgfTtcbiAgY29uc3QgY3JlYXRlZDogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7fTtcbiAgKGNsb25lIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KVtmaWVsZF0gPSBjcmVhdGVkO1xuICByZXR1cm4geyBjb250YWluZXI6IGNsb25lLCB0YXJnZXQ6IGNyZWF0ZWQgfTtcbn1cblxuLyoqIERlY29kZSBjb21wb25lbnQsIHJlY29yZGluZyBhIGRpYWdub3N0aWMgb24gZmFpbHVyZS4gKi9cbmZ1bmN0aW9uIGRlY29kZVZhbHVlKFxuICB2YWx1ZTogc3RyaW5nLFxuICBmaWVsZDogc3RyaW5nLFxuICBvcGVyYXRvcjogc3RyaW5nLFxuICBkaWFnbm9zdGljczogRGlhZ25vc3RpY1tdLFxuKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KHZhbHVlKTtcbiAgfSBjYXRjaCB7XG4gICAgZGlhZ25vc3RpY3MucHVzaCh7XG4gICAgICBraW5kOiAnRGVjb2RlRXJyb3InLFxuICAgICAgZmllbGQsXG4gICAgICBvcGVyYXRvcixcbiAgICAgIGRldGFpbDogJ0ZhaWxlZCB0byBkZWNvZGUnLFxuICAgIH0pO1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbn1cblxuLyoqIFBhcnNlIGEgc2luZ2xlIHJhdyB2YWx1ZSBhY2NvcmRpbmcgdG8gZmllbGQga2luZC4gKi9cbmZ1bmN0aW9uIHBhcnNlU2luZ2xlVmFsdWUoXG4gIGRlc2NyaXB0b3I6IEZpZWxkRGVzY3JpcHRvcixcbiAgcmF3OiBzdHJpbmcsXG4pOiBzdHJpbmcgfCBudW1iZXIgfCB1bmRlZmluZWQge1xuICBpZiAoZGVzY3JpcHRvci5raW5kID09PSAnbnVtYmVyJykge1xuICAgIGlmIChyYXcgPT09ICcnKSB7XG4gICAgICAvLyBUcmVhdCBlbXB0eSBzdHJpbmcgYXMgaW52YWxpZCBmb3IgbnVtZXJpYyBmaWVsZHMgKHJlamVjdCBpbnN0ZWFkIG9mIGNvZXJjaW5nIHRvIDApXG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICBjb25zdCBuID0gTnVtYmVyKHJhdyk7XG4gICAgaWYgKCFOdW1iZXIuaXNGaW5pdGUobikpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIHJldHVybiBuO1xuICB9XG4gIHJldHVybiByYXc7XG59XG5cbi8qKiBIYW5kbGUgYSBiZXR3ZWVuIG9wZXJhdG9yIHZhbHVlLiAqL1xuZnVuY3Rpb24gaGFuZGxlQmV0d2VlbjxTIGV4dGVuZHMgU2NoZW1hPihcbiAgZGVzY3JpcHRvcjogRmllbGREZXNjcmlwdG9yLFxuICBkZWNvZGVkOiBzdHJpbmcsXG4gIGZpZWxkOiBzdHJpbmcsXG4gIG9wZXJhdG9yOiBzdHJpbmcsXG4gIGFjYzogSW50ZXJuYWxBY2N1bXVsYXRvcjxTPixcbik6IHZvaWQge1xuICBjb25zdCBwYXJ0czogc3RyaW5nW10gPSBkZWNvZGVkLnNwbGl0KCcsJyk7XG4gIGlmIChwYXJ0cy5sZW5ndGggIT09IDIpIHtcbiAgICBhY2MuZGlhZ25vc3RpY3MucHVzaCh7XG4gICAgICBraW5kOiAnSW52YWxpZEFyaXR5JyxcbiAgICAgIGZpZWxkLFxuICAgICAgb3BlcmF0b3IsXG4gICAgICBkZXRhaWw6ICdFeHBlY3RlZCBleGFjdGx5IDIgdmFsdWVzJyxcbiAgICB9KTtcbiAgICByZXR1cm47XG4gIH1cbiAgY29uc3QgW2FSYXcsIGJSYXddID0gcGFydHMgYXMgW3N0cmluZywgc3RyaW5nXTtcbiAgY29uc3QgYSA9IHBhcnNlU2luZ2xlVmFsdWUoZGVzY3JpcHRvciwgYVJhdyk7XG4gIGNvbnN0IGIgPSBwYXJzZVNpbmdsZVZhbHVlKGRlc2NyaXB0b3IsIGJSYXcpO1xuICBpZiAoYSA9PT0gdW5kZWZpbmVkIHx8IGIgPT09IHVuZGVmaW5lZCkge1xuICAgIGFjYy5kaWFnbm9zdGljcy5wdXNoKHtcbiAgICAgIGtpbmQ6ICdJbnZhbGlkVmFsdWUnLFxuICAgICAgZmllbGQsXG4gICAgICBvcGVyYXRvcixcbiAgICAgIGRldGFpbDogJ09uZSBvZiB0aGUgYmV0d2VlbiB2YWx1ZXMgaW52YWxpZCcsXG4gICAgfSk7XG4gICAgcmV0dXJuO1xuICB9XG4gIGNvbnN0IGVuc3VyZWQgPSBlbnN1cmVGaWVsZE9iamVjdChhY2MuZmlsdGVycywgZmllbGQpO1xuICBhY2MuZmlsdGVycyA9IGVuc3VyZWQuY29udGFpbmVyO1xuICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGVuc3VyZWQudGFyZ2V0LCAnYmV0d2VlbicpKSB7XG4gICAgYWNjLmRpYWdub3N0aWNzLnB1c2goeyBraW5kOiAnRHVwbGljYXRlQmV0d2VlbicsIGZpZWxkIH0pO1xuICAgIHJldHVybjtcbiAgfVxuICBlbnN1cmVkLnRhcmdldC5iZXR3ZWVuID0gW2EsIGJdIGFzIHVua25vd247XG59XG5cbi8qKiBIYW5kbGUgbGlzdCBvcGVyYXRvcnMgKGluLCBuaW4pLiAqL1xuZnVuY3Rpb24gaGFuZGxlTGlzdDxTIGV4dGVuZHMgU2NoZW1hPihcbiAgZGVzY3JpcHRvcjogRmllbGREZXNjcmlwdG9yLFxuICBkZWNvZGVkOiBzdHJpbmcsXG4gIGZpZWxkOiBzdHJpbmcsXG4gIG9wZXJhdG9yOiBzdHJpbmcsXG4gIGFjYzogSW50ZXJuYWxBY2N1bXVsYXRvcjxTPixcbik6IHZvaWQge1xuICBjb25zdCBsaXN0UmF3ID0gZGVjb2RlZC5zcGxpdCgnLCcpO1xuICBjb25zdCBwYXJzZWRMaXN0OiAoc3RyaW5nIHwgbnVtYmVyKVtdID0gW107XG4gIGZvciAoY29uc3QgaXRlbSBvZiBsaXN0UmF3KSB7XG4gICAgY29uc3QgcGFyc2VkID0gcGFyc2VTaW5nbGVWYWx1ZShkZXNjcmlwdG9yLCBpdGVtKTtcbiAgICBpZiAocGFyc2VkID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGFjYy5kaWFnbm9zdGljcy5wdXNoKHtcbiAgICAgICAga2luZDogJ0ludmFsaWRWYWx1ZScsXG4gICAgICAgIGZpZWxkLFxuICAgICAgICBvcGVyYXRvcixcbiAgICAgICAgZGV0YWlsOiAnTGlzdCBpdGVtIGludmFsaWQnLFxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHBhcnNlZExpc3QucHVzaChwYXJzZWQpO1xuICAgIH1cbiAgfVxuICBpZiAocGFyc2VkTGlzdC5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm47XG4gIH1cbiAgY29uc3QgZW5zdXJlZCA9IGVuc3VyZUZpZWxkT2JqZWN0KGFjYy5maWx0ZXJzLCBmaWVsZCk7XG4gIGFjYy5maWx0ZXJzID0gZW5zdXJlZC5jb250YWluZXI7XG4gIGNvbnN0IHRhcmdldE9iajogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSBlbnN1cmVkLnRhcmdldDtcbiAgY29uc3QgZXhpc3RpbmcgPSB0YXJnZXRPYmpbb3BlcmF0b3JdO1xuICBpZiAoQXJyYXkuaXNBcnJheShleGlzdGluZykpIHtcbiAgICB0YXJnZXRPYmpbb3BlcmF0b3JdID0gWy4uLmV4aXN0aW5nLCAuLi5wYXJzZWRMaXN0XTtcbiAgfSBlbHNlIHtcbiAgICB0YXJnZXRPYmpbb3BlcmF0b3JdID0gcGFyc2VkTGlzdDtcbiAgfVxufVxuXG4vKiogSGFuZGxlIHNjYWxhciBvcGVyYXRvciB2YWx1ZXMuICovXG5mdW5jdGlvbiBoYW5kbGVTY2FsYXI8UyBleHRlbmRzIFNjaGVtYT4oXG4gIGRlc2NyaXB0b3I6IEZpZWxkRGVzY3JpcHRvcixcbiAgZGVjb2RlZDogc3RyaW5nLFxuICBmaWVsZDogc3RyaW5nLFxuICBvcGVyYXRvcjogc3RyaW5nLFxuICBhY2M6IEludGVybmFsQWNjdW11bGF0b3I8Uz4sXG4pOiB2b2lkIHtcbiAgY29uc3Qgc2NhbGFyID0gcGFyc2VTaW5nbGVWYWx1ZShkZXNjcmlwdG9yLCBkZWNvZGVkKTtcbiAgaWYgKHNjYWxhciA9PT0gdW5kZWZpbmVkKSB7XG4gICAgYWNjLmRpYWdub3N0aWNzLnB1c2goeyBraW5kOiAnSW52YWxpZFZhbHVlJywgZmllbGQsIG9wZXJhdG9yIH0pO1xuICAgIHJldHVybjtcbiAgfVxuICBjb25zdCBlbnN1cmVkID0gZW5zdXJlRmllbGRPYmplY3QoYWNjLmZpbHRlcnMsIGZpZWxkKTtcbiAgYWNjLmZpbHRlcnMgPSBlbnN1cmVkLmNvbnRhaW5lcjtcbiAgY29uc3Qgc2NhbGFyVGFyZ2V0OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IGVuc3VyZWQudGFyZ2V0O1xuICBzY2FsYXJUYXJnZXRbb3BlcmF0b3JdID0gc2NhbGFyO1xufVxuXG4vKipcbiAqIFBhcnNlcyBhIHJhdyBzZWFyY2ggc3RyaW5nIChsZWFkaW5nIGA/YCBvcHRpb25hbCkgYWNjb3JkaW5nIHRvIHRoZSBwcm92aWRlZCBzY2hlbWFcbiAqIGFuZCByZXR1cm5zIHRoZSBmaWx0ZXJzIHBsdXMgZGlhZ25vc3RpY3MuXG4gKlxuICogQHBhcmFtIHJhd1NlYXJjaCAtIFF1ZXJ5IHN0cmluZyB0byBwYXJzZSAod2l0aCBvciB3aXRob3V0IHRoZSBsZWFkaW5nIHF1ZXN0aW9uIG1hcmspLlxuICogQHBhcmFtIHNjaGVtYSAtIFNjaGVtYSBkZXNjcmliaW5nIGFsbG93ZWQgZmllbGRzIGFuZCBvcGVyYXRvcnMuXG4gKiBAcmV0dXJucyBQYXJzZWQgZmlsdGVycyBhbG9uZ3NpZGUgbm9uLWJsb2NraW5nIGRpYWdub3N0aWNzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2U8UyBleHRlbmRzIFNjaGVtYT4oXG4gIHJhd1NlYXJjaDogc3RyaW5nLFxuICBzY2hlbWE6IFMsXG4pOiBQYXJzZVJlc3VsdDxTPiB7XG4gIGNvbnN0IGFjYzogSW50ZXJuYWxBY2N1bXVsYXRvcjxTPiA9IHsgZmlsdGVyczoge30sIGRpYWdub3N0aWNzOiBbXSB9O1xuICBsZXQgc2VhcmNoID0gcmF3U2VhcmNoO1xuICBpZiAoc2VhcmNoLnN0YXJ0c1dpdGgoJz8nKSkge1xuICAgIHNlYXJjaCA9IHNlYXJjaC5zbGljZSgxKTtcbiAgfVxuICBpZiAoc2VhcmNoLnRyaW0oKSA9PT0gJycpIHtcbiAgICByZXR1cm4gYWNjO1xuICB9XG4gIGNvbnN0IHNlZ21lbnRzID0gc2VhcmNoLnNwbGl0KCcmJyk7XG4gIGZvciAoY29uc3Qgc2VnIG9mIHNlZ21lbnRzKSB7XG4gICAgY29uc3QgZXFJZHggPSBzZWcuaW5kZXhPZignPScpO1xuICAgIGNvbnN0IHZhbGlkQmFzaWMgPSBzZWcgIT09ICcnICYmIGVxSWR4ICE9PSAtMTtcbiAgICBpZiAodmFsaWRCYXNpYykge1xuICAgICAgY29uc3QgcmF3S2V5ID0gc2VnLnNsaWNlKDAsIGVxSWR4KTtcbiAgICAgIGNvbnN0IHJhd1ZhbCA9IHNlZy5zbGljZShlcUlkeCArIDEpO1xuICAgICAgY29uc3QgbGFzdERvdCA9IHJhd0tleS5sYXN0SW5kZXhPZignLicpO1xuICAgICAgLy8gQ2FzZSAxOiBrZXkgd2l0aCBleHBsaWNpdCBvcGVyYXRvciAoZmllbGQub3ApXG4gICAgICBjb25zdCBleHBsaWNpdFNoYXBlID0gIShsYXN0RG90IDw9IDAgfHwgbGFzdERvdCA9PT0gcmF3S2V5Lmxlbmd0aCAtIDEpO1xuICAgICAgaWYgKGV4cGxpY2l0U2hhcGUpIHtcbiAgICAgICAgY29uc3QgZmllbGQgPSByYXdLZXkuc2xpY2UoMCwgbGFzdERvdCk7XG4gICAgICAgIGNvbnN0IG9wZXJhdG9yID0gcmF3S2V5LnNsaWNlKGxhc3REb3QgKyAxKSBhcyBPcGVyYXRvcjtcbiAgICAgICAgY29uc3QgZGVzY3JpcHRvciA9IHNjaGVtYVtmaWVsZF07XG4gICAgICAgIGNvbnN0IGRlc2NPayA9IGRlc2NyaXB0b3I/Lm9wZXJhdG9ycy5pbmNsdWRlcyhvcGVyYXRvcikgPT09IHRydWU7XG4gICAgICAgIGlmICghZGVzY09rKSB7XG4gICAgICAgICAgaWYgKGRlc2NyaXB0b3IgPT0gbnVsbCkge1xuICAgICAgICAgICAgYWNjLmRpYWdub3N0aWNzLnB1c2goeyBraW5kOiAnVW5rbm93bkZpZWxkJywgZmllbGQgfSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGFjYy5kaWFnbm9zdGljcy5wdXNoKHsga2luZDogJ1Vua25vd25PcGVyYXRvcicsIGZpZWxkLCBvcGVyYXRvciB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3QgZGVjb2RlZCA9IGRlY29kZVZhbHVlKHJhd1ZhbCwgZmllbGQsIG9wZXJhdG9yLCBhY2MuZGlhZ25vc3RpY3MpO1xuICAgICAgICAgIGlmIChkZWNvZGVkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGNvbnN0IGlzTGlzdCA9IChMSVNUX09QUyBhcyByZWFkb25seSBzdHJpbmdbXSkuaW5jbHVkZXMob3BlcmF0b3IpO1xuICAgICAgICAgICAgaWYgKG9wZXJhdG9yID09PSBCRVRXRUVOKSB7XG4gICAgICAgICAgICAgIGhhbmRsZUJldHdlZW4oZGVzY3JpcHRvciwgZGVjb2RlZCwgZmllbGQsIG9wZXJhdG9yLCBhY2MpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChpc0xpc3QpIHtcbiAgICAgICAgICAgICAgaGFuZGxlTGlzdChkZXNjcmlwdG9yLCBkZWNvZGVkLCBmaWVsZCwgb3BlcmF0b3IsIGFjYyk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBoYW5kbGVTY2FsYXIoZGVzY3JpcHRvciwgZGVjb2RlZCwgZmllbGQsIG9wZXJhdG9yLCBhY2MpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChsYXN0RG90ID09PSAtMSkge1xuICAgICAgICAvLyBpbXBsaWNpdCBlcXVhbGl0eSAobm8gZG90KSA9PiBvcGVyYXRvciAnZXEnXG4gICAgICAgIGNvbnN0IGZpZWxkID0gcmF3S2V5O1xuICAgICAgICBjb25zdCBvcGVyYXRvcjogT3BlcmF0b3IgPSAnZXEnO1xuICAgICAgICBjb25zdCBkZXNjcmlwdG9yID0gc2NoZW1hW2ZpZWxkXTtcbiAgICAgICAgaWYgKGRlc2NyaXB0b3IgPT0gbnVsbCkge1xuICAgICAgICAgIGFjYy5kaWFnbm9zdGljcy5wdXNoKHsga2luZDogJ1Vua25vd25GaWVsZCcsIGZpZWxkIH0pO1xuICAgICAgICB9IGVsc2UgaWYgKCFkZXNjcmlwdG9yLm9wZXJhdG9ycy5pbmNsdWRlcyhvcGVyYXRvcikpIHtcbiAgICAgICAgICBhY2MuZGlhZ25vc3RpY3MucHVzaCh7IGtpbmQ6ICdVbmtub3duT3BlcmF0b3InLCBmaWVsZCwgb3BlcmF0b3IgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3QgZGVjb2RlZCA9IGRlY29kZVZhbHVlKHJhd1ZhbCwgZmllbGQsIG9wZXJhdG9yLCBhY2MuZGlhZ25vc3RpY3MpO1xuICAgICAgICAgIGlmIChkZWNvZGVkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGhhbmRsZVNjYWxhcihkZXNjcmlwdG9yLCBkZWNvZGVkLCBmaWVsZCwgb3BlcmF0b3IsIGFjYyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiBhY2M7XG59XG4iXX0=
|
|
184
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvcGFyc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBV0EsTUFBTSxPQUFPLEdBQW9CLFNBQVMsQ0FBQztBQUMzQyxNQUFNLFFBQVEsR0FBNEIsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFReEQsU0FBUyxpQkFBaUIsQ0FDeEIsT0FBd0IsRUFDeEIsS0FBYTtJQUViLE1BQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxLQUFnQixDQUU1QixDQUFDO0lBQ2QsSUFBSSxRQUFRLEtBQUssU0FBUyxFQUFFLENBQUM7UUFDM0IsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxDQUFDO0lBQ2xELENBQUM7SUFDRCxNQUFNLEtBQUssR0FBb0IsRUFBRSxHQUFHLE9BQU8sRUFBRSxDQUFDO0lBQzlDLE1BQU0sT0FBTyxHQUE0QixFQUFFLENBQUM7SUFDM0MsS0FBaUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxPQUFPLENBQUM7SUFDcEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxDQUFDO0FBQy9DLENBQUM7QUFHRCxTQUFTLFdBQVcsQ0FDbEIsS0FBYSxFQUNiLEtBQWEsRUFDYixRQUFnQixFQUNoQixXQUF5QjtJQUV6QixJQUFJLENBQUM7UUFDSCxPQUFPLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFBQyxNQUFNLENBQUM7UUFDUCxXQUFXLENBQUMsSUFBSSxDQUFDO1lBQ2YsSUFBSSxFQUFFLGFBQWE7WUFDbkIsS0FBSztZQUNMLFFBQVE7WUFDUixNQUFNLEVBQUUsa0JBQWtCO1NBQzNCLENBQUMsQ0FBQztRQUNILE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7QUFDSCxDQUFDO0FBR0QsU0FBUyxnQkFBZ0IsQ0FBQyxVQUEyQixFQUFFLEdBQVc7SUFDaEUsSUFB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RUFBRSxRQUFRLEVBQUUsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDO29CQUN0RSxJQUFJLE9BQU8sS0FBSyxTQUFTLEVBQUUsQ0FBQzt3QkFDMUIsWUFBWSxDQUFDLFVBQVUsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxHQUFHLENBQUMsQ0FBQztvQkFDMUQsQ0FBQztnQkFDSCxDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBQ0QsT0FBTyxHQUFHLENBQUM7QUFDYixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUge1xuICBTY2hlbWEsXG4gIE9wZXJhdG9yLFxuICBMaXN0T3BlcmF0b3IsXG4gIEJldHdlZW5PcGVyYXRvcixcbiAgSW5mZXJGaWx0ZXJzLFxuICBGaWVsZERlc2NyaXB0b3IsXG4gIFBhcnNlUmVzdWx0LFxufSBmcm9tICcuL3R5cGVzLmpzJztcbmltcG9ydCB0eXBlIHsgRGlhZ25vc3RpYyB9IGZyb20gJy4vZXJyb3JzLmpzJztcblxuY29uc3QgQkVUV0VFTjogQmV0d2Vlbk9wZXJhdG9yID0gJ2JldHdlZW4nO1xuY29uc3QgTElTVF9PUFM6IHJlYWRvbmx5IExpc3RPcGVyYXRvcltdID0gWydpbicsICduaW4nXTtcblxuaW50ZXJmYWNlIEludGVybmFsQWNjdW11bGF0b3I8UyBleHRlbmRzIFNjaGVtYT4ge1xuICBmaWx0ZXJzOiBJbmZlckZpbHRlcnM8Uz47XG4gIGRpYWdub3N0aWNzOiBEaWFnbm9zdGljW107XG59XG5cbi8qKiBTaGFsbG93IGNsb25lIHBsdXMgZW5zdXJlIGZpZWxkIG9iamVjdCBoZWxwZXIgKGltbXV0YWJsZSB1cGRhdGUpLiAqL1xuZnVuY3Rpb24gZW5zdXJlRmllbGRPYmplY3Q8UyBleHRlbmRzIFNjaGVtYT4oXG4gIGZpbHRlcnM6IEluZmVyRmlsdGVyczxTPixcbiAgZmllbGQ6IHN0cmluZyxcbik6IHsgY29udGFpbmVyOiBJbmZlckZpbHRlcnM8Uz47IHRhcmdldDogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gfSB7XG4gIGNvbnN0IGV4aXN0aW5nID0gZmlsdGVyc1tmaWVsZCBhcyBrZXlvZiBTXSBhc1xuICAgIHwgUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbiAgICB8IHVuZGVmaW5lZDtcbiAgaWYgKGV4aXN0aW5nICE9PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4geyBjb250YWluZXI6IGZpbHRlcnMsIHRhcmdldDogZXhpc3RpbmcgfTtcbiAgfVxuICBjb25zdCBjbG9uZTogSW5mZXJGaWx0ZXJzPFM+ID0geyAuLi5maWx0ZXJzIH07XG4gIGNvbnN0IGNyZWF0ZWQ6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge307XG4gIChjbG9uZSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPilbZmllbGRdID0gY3JlYXRlZDtcbiAgcmV0dXJuIHsgY29udGFpbmVyOiBjbG9uZSwgdGFyZ2V0OiBjcmVhdGVkIH07XG59XG5cbi8qKiBEZWNvZGUgY29tcG9uZW50LCByZWNvcmRpbmcgYSBkaWFnbm9zdGljIG9uIGZhaWx1cmUuICovXG5mdW5jdGlvbiBkZWNvZGVWYWx1ZShcbiAgdmFsdWU6IHN0cmluZyxcbiAgZmllbGQ6IHN0cmluZyxcbiAgb3BlcmF0b3I6IHN0cmluZyxcbiAgZGlhZ25vc3RpY3M6IERpYWdub3N0aWNbXSxcbik6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudCh2YWx1ZSk7XG4gIH0gY2F0Y2gge1xuICAgIGRpYWdub3N0aWNzLnB1c2goe1xuICAgICAga2luZDogJ0RlY29kZUVycm9yJyxcbiAgICAgIGZpZWxkLFxuICAgICAgb3BlcmF0b3IsXG4gICAgICBkZXRhaWw6ICdGYWlsZWQgdG8gZGVjb2RlJyxcbiAgICB9KTtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG59XG5cbi8qKiBQYXJzZSBhIHNpbmdsZSByYXcgdmFsdWUgYWNjb3JkaW5nIHRvIGZpZWxkIGtpbmQuICovXG5mdW5jdGlvbiBwYXJzZVNpbmdsZVZhbHVlKGRlc2NyaXB0b3I6IEZpZWxkRGVzY3JpcHRvciwgcmF3OiBzdHJpbmcpOiB1bmtub3duIHtcbiAgaWYgKGRlc2NyaXB0b3IucGFyc2UgIT0gbnVsbCkge1xuICAgIHJldHVybiBkZXNjcmlwdG9yLnBhcnNlKHJhdyk7XG4gIH1cbiAgaWYgKGRlc2NyaXB0b3Iua2luZCA9PT0gJ251bWJlcicpIHtcbiAgICBpZiAocmF3ID09PSAnJykge1xuICAgICAgLy8gVHJlYXQgZW1wdHkgc3RyaW5nIGFzIGludmFsaWQgZm9yIG51bWVyaWMgZmllbGRzIChyZWplY3QgaW5zdGVhZCBvZiBjb2VyY2luZyB0byAwKVxuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgY29uc3QgbiA9IE51bWJlcihyYXcpO1xuICAgIGlmICghTnVtYmVyLmlzRmluaXRlKG4pKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICByZXR1cm4gbjtcbiAgfVxuICByZXR1cm4gcmF3O1xufVxuXG4vKiogSGFuZGxlIGEgYmV0d2VlbiBvcGVyYXRvciB2YWx1ZS4gKi9cbmZ1bmN0aW9uIGhhbmRsZUJldHdlZW48UyBleHRlbmRzIFNjaGVtYT4oXG4gIGRlc2NyaXB0b3I6IEZpZWxkRGVzY3JpcHRvcixcbiAgZGVjb2RlZDogc3RyaW5nLFxuICBmaWVsZDogc3RyaW5nLFxuICBvcGVyYXRvcjogc3RyaW5nLFxuICBhY2M6IEludGVybmFsQWNjdW11bGF0b3I8Uz4sXG4pOiB2b2lkIHtcbiAgY29uc3QgcGFydHM6IHN0cmluZ1tdID0gZGVjb2RlZC5zcGxpdCgnLCcpO1xuICBpZiAocGFydHMubGVuZ3RoICE9PSAyKSB7XG4gICAgYWNjLmRpYWdub3N0aWNzLnB1c2goe1xuICAgICAga2luZDogJ0ludmFsaWRBcml0eScsXG4gICAgICBmaWVsZCxcbiAgICAgIG9wZXJhdG9yLFxuICAgICAgZGV0YWlsOiAnRXhwZWN0ZWQgZXhhY3RseSAyIHZhbHVlcycsXG4gICAgfSk7XG4gICAgcmV0dXJuO1xuICB9XG4gIGNvbnN0IFthUmF3LCBiUmF3XSA9IHBhcnRzIGFzIFtzdHJpbmcsIHN0cmluZ107XG4gIGNvbnN0IGEgPSBwYXJzZVNpbmdsZVZhbHVlKGRlc2NyaXB0b3IsIGFSYXcpO1xuICBjb25zdCBiID0gcGFyc2VTaW5nbGVWYWx1ZShkZXNjcmlwdG9yLCBiUmF3KTtcbiAgaWYgKGEgPT09IHVuZGVmaW5lZCB8fCBiID09PSB1bmRlZmluZWQpIHtcbiAgICBhY2MuZGlhZ25vc3RpY3MucHVzaCh7XG4gICAgICBraW5kOiAnSW52YWxpZFZhbHVlJyxcbiAgICAgIGZpZWxkLFxuICAgICAgb3BlcmF0b3IsXG4gICAgICBkZXRhaWw6ICdPbmUgb2YgdGhlIGJldHdlZW4gdmFsdWVzIGludmFsaWQnLFxuICAgIH0pO1xuICAgIHJldHVybjtcbiAgfVxuICBjb25zdCBlbnN1cmVkID0gZW5zdXJlRmllbGRPYmplY3QoYWNjLmZpbHRlcnMsIGZpZWxkKTtcbiAgYWNjLmZpbHRlcnMgPSBlbnN1cmVkLmNvbnRhaW5lcjtcbiAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlbnN1cmVkLnRhcmdldCwgJ2JldHdlZW4nKSkge1xuICAgIGFjYy5kaWFnbm9zdGljcy5wdXNoKHsga2luZDogJ0R1cGxpY2F0ZUJldHdlZW4nLCBmaWVsZCB9KTtcbiAgICByZXR1cm47XG4gIH1cbiAgZW5zdXJlZC50YXJnZXQuYmV0d2VlbiA9IFthLCBiXSBhcyB1bmtub3duO1xufVxuXG4vKiogSGFuZGxlIGxpc3Qgb3BlcmF0b3JzIChpbiwgbmluKS4gKi9cbmZ1bmN0aW9uIGhhbmRsZUxpc3Q8UyBleHRlbmRzIFNjaGVtYT4oXG4gIGRlc2NyaXB0b3I6IEZpZWxkRGVzY3JpcHRvcixcbiAgZGVjb2RlZDogc3RyaW5nLFxuICBmaWVsZDogc3RyaW5nLFxuICBvcGVyYXRvcjogc3RyaW5nLFxuICBhY2M6IEludGVybmFsQWNjdW11bGF0b3I8Uz4sXG4pOiB2b2lkIHtcbiAgY29uc3QgbGlzdFJhdyA9IGRlY29kZWQuc3BsaXQoJywnKTtcbiAgY29uc3QgcGFyc2VkTGlzdDogdW5rbm93bltdID0gW107XG4gIGZvciAoY29uc3QgaXRlbSBvZiBsaXN0UmF3KSB7XG4gICAgY29uc3QgcGFyc2VkID0gcGFyc2VTaW5nbGVWYWx1ZShkZXNjcmlwdG9yLCBpdGVtKTtcbiAgICBpZiAocGFyc2VkID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGFjYy5kaWFnbm9zdGljcy5wdXNoKHtcbiAgICAgICAga2luZDogJ0ludmFsaWRWYWx1ZScsXG4gICAgICAgIGZpZWxkLFxuICAgICAgICBvcGVyYXRvcixcbiAgICAgICAgZGV0YWlsOiAnTGlzdCBpdGVtIGludmFsaWQnLFxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHBhcnNlZExpc3QucHVzaChwYXJzZWQpO1xuICAgIH1cbiAgfVxuICBpZiAocGFyc2VkTGlzdC5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm47XG4gIH1cbiAgY29uc3QgZW5zdXJlZCA9IGVuc3VyZUZpZWxkT2JqZWN0KGFjYy5maWx0ZXJzLCBmaWVsZCk7XG4gIGFjYy5maWx0ZXJzID0gZW5zdXJlZC5jb250YWluZXI7XG4gIGNvbnN0IHRhcmdldE9iajogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSBlbnN1cmVkLnRhcmdldDtcbiAgY29uc3QgZXhpc3RpbmcgPSB0YXJnZXRPYmpbb3BlcmF0b3JdO1xuICBpZiAoQXJyYXkuaXNBcnJheShleGlzdGluZykpIHtcbiAgICB0YXJnZXRPYmpbb3BlcmF0b3JdID0gWy4uLmV4aXN0aW5nLCAuLi5wYXJzZWRMaXN0XTtcbiAgfSBlbHNlIHtcbiAgICB0YXJnZXRPYmpbb3BlcmF0b3JdID0gcGFyc2VkTGlzdDtcbiAgfVxufVxuXG4vKiogSGFuZGxlIHNjYWxhciBvcGVyYXRvciB2YWx1ZXMuICovXG5mdW5jdGlvbiBoYW5kbGVTY2FsYXI8UyBleHRlbmRzIFNjaGVtYT4oXG4gIGRlc2NyaXB0b3I6IEZpZWxkRGVzY3JpcHRvcixcbiAgZGVjb2RlZDogc3RyaW5nLFxuICBmaWVsZDogc3RyaW5nLFxuICBvcGVyYXRvcjogc3RyaW5nLFxuICBhY2M6IEludGVybmFsQWNjdW11bGF0b3I8Uz4sXG4pOiB2b2lkIHtcbiAgY29uc3Qgc2NhbGFyID0gcGFyc2VTaW5nbGVWYWx1ZShkZXNjcmlwdG9yLCBkZWNvZGVkKTtcbiAgaWYgKHNjYWxhciA9PT0gdW5kZWZpbmVkKSB7XG4gICAgYWNjLmRpYWdub3N0aWNzLnB1c2goeyBraW5kOiAnSW52YWxpZFZhbHVlJywgZmllbGQsIG9wZXJhdG9yIH0pO1xuICAgIHJldHVybjtcbiAgfVxuICBjb25zdCBlbnN1cmVkID0gZW5zdXJlRmllbGRPYmplY3QoYWNjLmZpbHRlcnMsIGZpZWxkKTtcbiAgYWNjLmZpbHRlcnMgPSBlbnN1cmVkLmNvbnRhaW5lcjtcbiAgY29uc3Qgc2NhbGFyVGFyZ2V0OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IGVuc3VyZWQudGFyZ2V0O1xuICBzY2FsYXJUYXJnZXRbb3BlcmF0b3JdID0gc2NhbGFyO1xufVxuXG4vKipcbiAqIFBhcnNlcyBhIHJhdyBzZWFyY2ggc3RyaW5nIChsZWFkaW5nIGA/YCBvcHRpb25hbCkgYWNjb3JkaW5nIHRvIHRoZSBwcm92aWRlZCBzY2hlbWFcbiAqIGFuZCByZXR1cm5zIHRoZSBmaWx0ZXJzIHBsdXMgZGlhZ25vc3RpY3MuXG4gKlxuICogQHBhcmFtIHJhd1NlYXJjaCAtIFF1ZXJ5IHN0cmluZyB0byBwYXJzZSAod2l0aCBvciB3aXRob3V0IHRoZSBsZWFkaW5nIHF1ZXN0aW9uIG1hcmspLlxuICogQHBhcmFtIHNjaGVtYSAtIFNjaGVtYSBkZXNjcmliaW5nIGFsbG93ZWQgZmllbGRzIGFuZCBvcGVyYXRvcnMuXG4gKiBAcmV0dXJucyBQYXJzZWQgZmlsdGVycyBhbG9uZ3NpZGUgbm9uLWJsb2NraW5nIGRpYWdub3N0aWNzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2U8UyBleHRlbmRzIFNjaGVtYT4oXG4gIHJhd1NlYXJjaDogc3RyaW5nLFxuICBzY2hlbWE6IFMsXG4pOiBQYXJzZVJlc3VsdDxTPiB7XG4gIGNvbnN0IGFjYzogSW50ZXJuYWxBY2N1bXVsYXRvcjxTPiA9IHsgZmlsdGVyczoge30sIGRpYWdub3N0aWNzOiBbXSB9O1xuICBsZXQgc2VhcmNoID0gcmF3U2VhcmNoO1xuICBpZiAoc2VhcmNoLnN0YXJ0c1dpdGgoJz8nKSkge1xuICAgIHNlYXJjaCA9IHNlYXJjaC5zbGljZSgxKTtcbiAgfVxuICBpZiAoc2VhcmNoLnRyaW0oKSA9PT0gJycpIHtcbiAgICByZXR1cm4gYWNjO1xuICB9XG4gIGNvbnN0IHNlZ21lbnRzID0gc2VhcmNoLnNwbGl0KCcmJyk7XG4gIGZvciAoY29uc3Qgc2VnIG9mIHNlZ21lbnRzKSB7XG4gICAgY29uc3QgZXFJZHggPSBzZWcuaW5kZXhPZignPScpO1xuICAgIGNvbnN0IHZhbGlkQmFzaWMgPSBzZWcgIT09ICcnICYmIGVxSWR4ICE9PSAtMTtcbiAgICBpZiAodmFsaWRCYXNpYykge1xuICAgICAgY29uc3QgcmF3S2V5ID0gc2VnLnNsaWNlKDAsIGVxSWR4KTtcbiAgICAgIGNvbnN0IHJhd1ZhbCA9IHNlZy5zbGljZShlcUlkeCArIDEpO1xuICAgICAgY29uc3QgbGFzdERvdCA9IHJhd0tleS5sYXN0SW5kZXhPZignLicpO1xuICAgICAgLy8gQ2FzZSAxOiBrZXkgd2l0aCBleHBsaWNpdCBvcGVyYXRvciAoZmllbGQub3ApXG4gICAgICBjb25zdCBleHBsaWNpdFNoYXBlID0gIShsYXN0RG90IDw9IDAgfHwgbGFzdERvdCA9PT0gcmF3S2V5Lmxlbmd0aCAtIDEpO1xuICAgICAgaWYgKGV4cGxpY2l0U2hhcGUpIHtcbiAgICAgICAgY29uc3QgZmllbGQgPSByYXdLZXkuc2xpY2UoMCwgbGFzdERvdCk7XG4gICAgICAgIGNvbnN0IG9wZXJhdG9yID0gcmF3S2V5LnNsaWNlKGxhc3REb3QgKyAxKSBhcyBPcGVyYXRvcjtcbiAgICAgICAgY29uc3QgZGVzY3JpcHRvciA9IHNjaGVtYVtmaWVsZF07XG4gICAgICAgIGNvbnN0IGRlc2NPayA9IGRlc2NyaXB0b3I/Lm9wZXJhdG9ycy5pbmNsdWRlcyhvcGVyYXRvcikgPT09IHRydWU7XG4gICAgICAgIGlmICghZGVzY09rKSB7XG4gICAgICAgICAgaWYgKGRlc2NyaXB0b3IgPT0gbnVsbCkge1xuICAgICAgICAgICAgYWNjLmRpYWdub3N0aWNzLnB1c2goeyBraW5kOiAnVW5rbm93bkZpZWxkJywgZmllbGQgfSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGFjYy5kaWFnbm9zdGljcy5wdXNoKHsga2luZDogJ1Vua25vd25PcGVyYXRvcicsIGZpZWxkLCBvcGVyYXRvciB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3QgZGVjb2RlZCA9IGRlY29kZVZhbHVlKHJhd1ZhbCwgZmllbGQsIG9wZXJhdG9yLCBhY2MuZGlhZ25vc3RpY3MpO1xuICAgICAgICAgIGlmIChkZWNvZGVkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGNvbnN0IGlzTGlzdCA9IChMSVNUX09QUyBhcyByZWFkb25seSBzdHJpbmdbXSkuaW5jbHVkZXMob3BlcmF0b3IpO1xuICAgICAgICAgICAgaWYgKG9wZXJhdG9yID09PSBCRVRXRUVOKSB7XG4gICAgICAgICAgICAgIGhhbmRsZUJldHdlZW4oZGVzY3JpcHRvciwgZGVjb2RlZCwgZmllbGQsIG9wZXJhdG9yLCBhY2MpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChpc0xpc3QpIHtcbiAgICAgICAgICAgICAgaGFuZGxlTGlzdChkZXNjcmlwdG9yLCBkZWNvZGVkLCBmaWVsZCwgb3BlcmF0b3IsIGFjYyk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBoYW5kbGVTY2FsYXIoZGVzY3JpcHRvciwgZGVjb2RlZCwgZmllbGQsIG9wZXJhdG9yLCBhY2MpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChsYXN0RG90ID09PSAtMSkge1xuICAgICAgICAvLyBpbXBsaWNpdCBlcXVhbGl0eSAobm8gZG90KSA9PiBvcGVyYXRvciAnZXEnXG4gICAgICAgIGNvbnN0IGZpZWxkID0gcmF3S2V5O1xuICAgICAgICBjb25zdCBvcGVyYXRvcjogT3BlcmF0b3IgPSAnZXEnO1xuICAgICAgICBjb25zdCBkZXNjcmlwdG9yID0gc2NoZW1hW2ZpZWxkXTtcbiAgICAgICAgaWYgKGRlc2NyaXB0b3IgPT0gbnVsbCkge1xuICAgICAgICAgIGFjYy5kaWFnbm9zdGljcy5wdXNoKHsga2luZDogJ1Vua25vd25GaWVsZCcsIGZpZWxkIH0pO1xuICAgICAgICB9IGVsc2UgaWYgKCFkZXNjcmlwdG9yLm9wZXJhdG9ycy5pbmNsdWRlcyhvcGVyYXRvcikpIHtcbiAgICAgICAgICBhY2MuZGlhZ25vc3RpY3MucHVzaCh7IGtpbmQ6ICdVbmtub3duT3BlcmF0b3InLCBmaWVsZCwgb3BlcmF0b3IgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3QgZGVjb2RlZCA9IGRlY29kZVZhbHVlKHJhd1ZhbCwgZmllbGQsIG9wZXJhdG9yLCBhY2MuZGlhZ25vc3RpY3MpO1xuICAgICAgICAgIGlmIChkZWNvZGVkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGhhbmRsZVNjYWxhcihkZXNjcmlwdG9yLCBkZWNvZGVkLCBmaWVsZCwgb3BlcmF0b3IsIGFjYyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiBhY2M7XG59XG4iXX0=
|
package/lib/schema.d.ts
CHANGED
|
@@ -1,5 +1,14 @@
|
|
|
1
|
-
import type { FieldDescriptor, NumberFieldDescriptor,
|
|
1
|
+
import type { FieldDescriptor, NumberFieldDescriptor, StringFieldDescriptor, BooleanFieldDescriptor, EnumFieldDescriptor, CustomFieldDescriptor, Operator } from './types.js';
|
|
2
2
|
export declare function numberField(ops?: readonly Operator[]): NumberFieldDescriptor;
|
|
3
3
|
export declare function stringField(ops?: readonly Operator[]): StringFieldDescriptor;
|
|
4
|
-
export declare function
|
|
4
|
+
export declare function booleanField(ops?: readonly Operator[]): BooleanFieldDescriptor;
|
|
5
|
+
export declare function enumField<const T extends string>(values: readonly T[], ops?: readonly Operator[]): EnumFieldDescriptor<T>;
|
|
6
|
+
type CustomFieldOptions<T> = {
|
|
7
|
+
operators: readonly Operator[];
|
|
8
|
+
parse: (raw: string) => T | undefined;
|
|
9
|
+
serialize?: (value: T) => string;
|
|
10
|
+
};
|
|
11
|
+
export declare function customField<T>(options: CustomFieldOptions<T>): CustomFieldDescriptor<T>;
|
|
12
|
+
export declare function defineSchema<S extends Record<string, FieldDescriptor>>(schema: S): S;
|
|
13
|
+
export {};
|
|
5
14
|
//# sourceMappingURL=schema.d.ts.map
|
package/lib/schema.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EACf,qBAAqB,EACrB,
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EACf,qBAAqB,EACrB,qBAAqB,EACrB,sBAAsB,EACtB,mBAAmB,EACnB,qBAAqB,EACrB,QAAQ,EACT,MAAM,YAAY,CAAC;AAiCpB,wBAAgB,WAAW,CACzB,GAAG,GAAE,SAAS,QAAQ,EAA6B,GAClD,qBAAqB,CAmBvB;AAKD,wBAAgB,WAAW,CACzB,GAAG,GAAE,SAAS,QAAQ,EAA6B,GAClD,qBAAqB,CAWvB;AAKD,wBAAgB,YAAY,CAC1B,GAAG,GAAE,SAAS,QAAQ,EAA8B,GACnD,sBAAsB,CAqBxB;AAKD,wBAAgB,SAAS,CAAC,KAAK,CAAC,CAAC,SAAS,MAAM,EAC9C,MAAM,EAAE,SAAS,CAAC,EAAE,EACpB,GAAG,GAAE,SAAS,QAAQ,EAA2B,GAChD,mBAAmB,CAAC,CAAC,CAAC,CAexB;AAED,KAAK,kBAAkB,CAAC,CAAC,IAAI;IAC3B,SAAS,EAAE,SAAS,QAAQ,EAAE,CAAC;IAC/B,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,CAAC,GAAG,SAAS,CAAC;IACtC,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,MAAM,CAAC;CAClC,CAAC;AAKF,wBAAgB,WAAW,CAAC,CAAC,EAC3B,OAAO,EAAE,kBAAkB,CAAC,CAAC,CAAC,GAC7B,qBAAqB,CAAC,CAAC,CAAC,CAO1B;AAKD,wBAAgB,YAAY,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,EACpE,MAAM,EAAE,CAAC,GACR,CAAC,CAEH"}
|
package/lib/schema.js
CHANGED
|
@@ -18,6 +18,13 @@ const DEFAULT_STRING_OPERATORS = [
|
|
|
18
18
|
'in',
|
|
19
19
|
'nin',
|
|
20
20
|
];
|
|
21
|
+
const DEFAULT_BOOLEAN_OPERATORS = [
|
|
22
|
+
'eq',
|
|
23
|
+
'neq',
|
|
24
|
+
'in',
|
|
25
|
+
'nin',
|
|
26
|
+
];
|
|
27
|
+
const DEFAULT_ENUM_OPERATORS = ['eq', 'neq', 'in', 'nin'];
|
|
21
28
|
export function numberField(ops = DEFAULT_NUMBER_OPERATORS) {
|
|
22
29
|
return {
|
|
23
30
|
kind: 'number',
|
|
@@ -49,7 +56,53 @@ export function stringField(ops = DEFAULT_STRING_OPERATORS) {
|
|
|
49
56
|
},
|
|
50
57
|
};
|
|
51
58
|
}
|
|
59
|
+
export function booleanField(ops = DEFAULT_BOOLEAN_OPERATORS) {
|
|
60
|
+
return {
|
|
61
|
+
kind: 'boolean',
|
|
62
|
+
operators: ops,
|
|
63
|
+
parse(raw) {
|
|
64
|
+
const normalized = raw.trim().toLowerCase();
|
|
65
|
+
if (normalized === 'true' || normalized === '1') {
|
|
66
|
+
return true;
|
|
67
|
+
}
|
|
68
|
+
if (normalized === 'false' || normalized === '0') {
|
|
69
|
+
return false;
|
|
70
|
+
}
|
|
71
|
+
return undefined;
|
|
72
|
+
},
|
|
73
|
+
serialize(value) {
|
|
74
|
+
if (value === true) {
|
|
75
|
+
return 'true';
|
|
76
|
+
}
|
|
77
|
+
return 'false';
|
|
78
|
+
},
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
export function enumField(values, ops = DEFAULT_ENUM_OPERATORS) {
|
|
82
|
+
const valueSet = new Set(values);
|
|
83
|
+
return {
|
|
84
|
+
kind: 'enum',
|
|
85
|
+
operators: ops,
|
|
86
|
+
parse(raw) {
|
|
87
|
+
if (valueSet.has(raw)) {
|
|
88
|
+
return raw;
|
|
89
|
+
}
|
|
90
|
+
return undefined;
|
|
91
|
+
},
|
|
92
|
+
serialize(value) {
|
|
93
|
+
return String(value);
|
|
94
|
+
},
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
export function customField(options) {
|
|
98
|
+
return {
|
|
99
|
+
kind: 'custom',
|
|
100
|
+
operators: options.operators,
|
|
101
|
+
parse: options.parse,
|
|
102
|
+
serialize: options.serialize,
|
|
103
|
+
};
|
|
104
|
+
}
|
|
52
105
|
export function defineSchema(schema) {
|
|
53
106
|
return Object.freeze({ ...schema });
|
|
54
107
|
}
|
|
55
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
108
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZW1hLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3NjaGVtYS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFVQSxNQUFNLHdCQUF3QixHQUF3QjtJQUNwRCxJQUFJO0lBQ0osS0FBSztJQUNMLElBQUk7SUFDSixLQUFLO0lBQ0wsSUFBSTtJQUNKLEtBQUs7SUFDTCxTQUFTO0lBQ1QsSUFBSTtJQUNKLEtBQUs7Q0FDTixDQUFDO0FBQ0YsTUFBTSx3QkFBd0IsR0FBd0I7SUFDcEQsVUFBVTtJQUNWLElBQUk7SUFDSixJQUFJO0lBQ0osSUFBSTtJQUNKLEtBQUs7SUFDTCxJQUFJO0lBQ0osS0FBSztDQUNOLENBQUM7QUFDRixNQUFNLHlCQUF5QixHQUF3QjtJQUNyRCxJQUFJO0lBQ0osS0FBSztJQUNMLElBQUk7SUFDSixLQUFLO0NBQ04sQ0FBQztBQUNGLE1BQU0sc0JBQXNCLEdBQXdCLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFLL0UsTUFBTSxVQUFVLFdBQVcsQ0FDekIsTUFBMkIsd0JBQXdCO0lBRW5ELE9BQU87UUFDTCxJQUFJLEVBQUUsUUFBUTtRQUNkLFNBQVMsRUFBRSxHQUFHO1FBQ2QsS0FBSyxDQUFDLEdBQVc7WUFDZixJQUFJLEdBQUcsS0FBSyxFQUFFLEVBQUUsQ0FBQztnQkFDZixPQUFPLFNBQVMsQ0FBQztZQUNuQixDQUFDO1lBQ0QsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3RCLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO2dCQUN2QixPQUFPLENBQUMsQ0FBQztZQUNYLENBQUM7WUFDRCxPQUFPLFNBQVMsQ0FBQztRQUNuQixDQUFDO1FBRUQsU0FBUyxDQUFDLEtBQWM7WUFDdEIsT0FBTyxNQUFNLENBQUMsS0FBZSxDQUFDLENBQUM7UUFDakMsQ0FBQztLQUN1QixDQUFDO0FBQzdCLENBQUM7QUFLRCxNQUFNLFVBQVUsV0FBVyxDQUN6QixNQUEyQix3QkFBd0I7SUFFbkQsT0FBTztRQUNMLElBQUksRUFBRSxRQUFRO1FBQ2QsU0FBUyxFQUFFLEdBQUc7UUFDZCxLQUFLLENBQUMsR0FBVztZQUNmLE9BQU8sR0FBRyxDQUFDO1FBQ2IsQ0FBQztRQUNELFNBQVMsQ0FBQyxLQUFjO1lBQ3RCLE9BQU8sTUFBTSxDQUFDLEtBQWUsQ0FBQyxDQUFDO1FBQ2pDLENBQUM7S0FDdUIsQ0FBQztBQUM3QixDQUFDO0FBS0QsTUFBTSxVQUFVLFlBQVksQ0FDMUIsTUFBMkIseUJBQXlCO0lBRXBELE9BQU87UUFDTCxJQUFJLEVBQUUsU0FBUztRQUNmLFNBQVMsRUFBRSxHQUFHO1FBQ2QsS0FBSyxDQUFDLEdBQVc7WUFDZixNQUFNLFVBQVUsR0FBRyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDNUMsSUFBSSxVQUFVLEtBQUssTUFBTSxJQUFJLFVBQVUsS0FBSyxHQUFHLEVBQUUsQ0FBQztnQkFDaEQsT0FBTyxJQUFJLENBQUM7WUFDZCxDQUFDO1lBQ0QsSUFBSSxVQUFVLEtBQUssT0FBTyxJQUFJLFVBQVUsS0FBSyxHQUFHLEVBQUUsQ0FBQztnQkFDakQsT0FBTyxLQUFLLENBQUM7WUFDZixDQUFDO1lBQ0QsT0FBTyxTQUFTLENBQUM7UUFDbkIsQ0FBQztRQUNELFNBQVMsQ0FBQyxLQUFjO1lBQ3RCLElBQUksS0FBSyxLQUFLLElBQUksRUFBRSxDQUFDO2dCQUNuQixPQUFPLE1BQU0sQ0FBQztZQUNoQixDQUFDO1lBQ0QsT0FBTyxPQUFPLENBQUM7UUFDakIsQ0FBQztLQUN3QixDQUFDO0FBQzlCLENBQUM7QUFLRCxNQUFNLFVBQVUsU0FBUyxDQUN2QixNQUFvQixFQUNwQixNQUEyQixzQkFBc0I7SUFFakQsTUFBTSxRQUFRLEdBQUcsSUFBSSxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDakMsT0FBTztRQUNMLElBQUksRUFBRSxNQUFNO1FBQ1osU0FBUyxFQUFFLEdBQUc7UUFDZCxLQUFLLENBQUMsR0FBVztZQUNmLElBQUksUUFBUSxDQUFDLEdBQUcsQ0FBQyxHQUFRLENBQUMsRUFBRSxDQUFDO2dCQUMzQixPQUFPLEdBQVEsQ0FBQztZQUNsQixDQUFDO1lBQ0QsT0FBTyxTQUFTLENBQUM7UUFDbkIsQ0FBQztRQUNELFNBQVMsQ0FBQyxLQUFjO1lBQ3RCLE9BQU8sTUFBTSxDQUFDLEtBQVUsQ0FBQyxDQUFDO1FBQzVCLENBQUM7S0FDd0IsQ0FBQztBQUM5QixDQUFDO0FBV0QsTUFBTSxVQUFVLFdBQVcsQ0FDekIsT0FBOEI7SUFFOUIsT0FBTztRQUNMLElBQUksRUFBRSxRQUFRO1FBQ2QsU0FBUyxFQUFFLE9BQU8sQ0FBQyxTQUFTO1FBQzVCLEtBQUssRUFBRSxPQUFPLENBQUMsS0FBSztRQUNwQixTQUFTLEVBQUUsT0FBTyxDQUFDLFNBQVM7S0FDRCxDQUFDO0FBQ2hDLENBQUM7QUFLRCxNQUFNLFVBQVUsWUFBWSxDQUMxQixNQUFTO0lBRVQsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsR0FBRyxNQUFNLEVBQUUsQ0FBQyxDQUFDO0FBQ3RDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7XG4gIEZpZWxkRGVzY3JpcHRvcixcbiAgTnVtYmVyRmllbGREZXNjcmlwdG9yLFxuICBTdHJpbmdGaWVsZERlc2NyaXB0b3IsXG4gIEJvb2xlYW5GaWVsZERlc2NyaXB0b3IsXG4gIEVudW1GaWVsZERlc2NyaXB0b3IsXG4gIEN1c3RvbUZpZWxkRGVzY3JpcHRvcixcbiAgT3BlcmF0b3IsXG59IGZyb20gJy4vdHlwZXMuanMnO1xuXG5jb25zdCBERUZBVUxUX05VTUJFUl9PUEVSQVRPUlM6IHJlYWRvbmx5IE9wZXJhdG9yW10gPSBbXG4gICdndCcsXG4gICdndGUnLFxuICAnbHQnLFxuICAnbHRlJyxcbiAgJ2VxJyxcbiAgJ25lcScsXG4gICdiZXR3ZWVuJyxcbiAgJ2luJyxcbiAgJ25pbicsXG5dO1xuY29uc3QgREVGQVVMVF9TVFJJTkdfT1BFUkFUT1JTOiByZWFkb25seSBPcGVyYXRvcltdID0gW1xuICAnY29udGFpbnMnLFxuICAnc3cnLFxuICAnZXcnLFxuICAnZXEnLFxuICAnbmVxJyxcbiAgJ2luJyxcbiAgJ25pbicsXG5dO1xuY29uc3QgREVGQVVMVF9CT09MRUFOX09QRVJBVE9SUzogcmVhZG9ubHkgT3BlcmF0b3JbXSA9IFtcbiAgJ2VxJyxcbiAgJ25lcScsXG4gICdpbicsXG4gICduaW4nLFxuXTtcbmNvbnN0IERFRkFVTFRfRU5VTV9PUEVSQVRPUlM6IHJlYWRvbmx5IE9wZXJhdG9yW10gPSBbJ2VxJywgJ25lcScsICdpbicsICduaW4nXTtcblxuLyoqXG4gKiBDcmVhdGUgYSBudW1lcmljIGZpZWxkIGRlc2NyaXB0b3Igd2l0aCBhIGdpdmVuIG9wZXJhdG9yIHdoaXRlbGlzdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG51bWJlckZpZWxkKFxuICBvcHM6IHJlYWRvbmx5IE9wZXJhdG9yW10gPSBERUZBVUxUX05VTUJFUl9PUEVSQVRPUlMsXG4pOiBOdW1iZXJGaWVsZERlc2NyaXB0b3Ige1xuICByZXR1cm4ge1xuICAgIGtpbmQ6ICdudW1iZXInLFxuICAgIG9wZXJhdG9yczogb3BzLFxuICAgIHBhcnNlKHJhdzogc3RyaW5nKTogbnVtYmVyIHwgdW5kZWZpbmVkIHtcbiAgICAgIGlmIChyYXcgPT09ICcnKSB7XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgICBjb25zdCBuID0gTnVtYmVyKHJhdyk7XG4gICAgICBpZiAoTnVtYmVyLmlzRmluaXRlKG4pKSB7XG4gICAgICAgIHJldHVybiBuO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9LFxuICAgIC8vIEFjY2VwdCB1bmtub3duIHRvIHNhdGlzZnkgYmFzZSBpbnRlcmZhY2UgaW50ZXJzZWN0aW9uOyBjYWxsZXIgZW5zdXJlcyB0eXBlIGNvcnJlY3RuZXNzXG4gICAgc2VyaWFsaXplKHZhbHVlOiB1bmtub3duKTogc3RyaW5nIHtcbiAgICAgIHJldHVybiBTdHJpbmcodmFsdWUgYXMgbnVtYmVyKTtcbiAgICB9LFxuICB9IGFzIE51bWJlckZpZWxkRGVzY3JpcHRvcjtcbn1cblxuLyoqXG4gKiBDcmVhdGUgYSBzdHJpbmcgZmllbGQgZGVzY3JpcHRvciB3aXRoIGEgZ2l2ZW4gb3BlcmF0b3Igd2hpdGVsaXN0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gc3RyaW5nRmllbGQoXG4gIG9wczogcmVhZG9ubHkgT3BlcmF0b3JbXSA9IERFRkFVTFRfU1RSSU5HX09QRVJBVE9SUyxcbik6IFN0cmluZ0ZpZWxkRGVzY3JpcHRvciB7XG4gIHJldHVybiB7XG4gICAga2luZDogJ3N0cmluZycsXG4gICAgb3BlcmF0b3JzOiBvcHMsXG4gICAgcGFyc2UocmF3OiBzdHJpbmcpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgICAgcmV0dXJuIHJhdztcbiAgICB9LFxuICAgIHNlcmlhbGl6ZSh2YWx1ZTogdW5rbm93bik6IHN0cmluZyB7XG4gICAgICByZXR1cm4gU3RyaW5nKHZhbHVlIGFzIHN0cmluZyk7XG4gICAgfSxcbiAgfSBhcyBTdHJpbmdGaWVsZERlc2NyaXB0b3I7XG59XG5cbi8qKlxuICogQ3JlYXRlIGEgYm9vbGVhbiBmaWVsZCBkZXNjcmlwdG9yIHdpdGggYSBnaXZlbiBvcGVyYXRvciB3aGl0ZWxpc3QuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBib29sZWFuRmllbGQoXG4gIG9wczogcmVhZG9ubHkgT3BlcmF0b3JbXSA9IERFRkFVTFRfQk9PTEVBTl9PUEVSQVRPUlMsXG4pOiBCb29sZWFuRmllbGREZXNjcmlwdG9yIHtcbiAgcmV0dXJuIHtcbiAgICBraW5kOiAnYm9vbGVhbicsXG4gICAgb3BlcmF0b3JzOiBvcHMsXG4gICAgcGFyc2UocmF3OiBzdHJpbmcpOiBib29sZWFuIHwgdW5kZWZpbmVkIHtcbiAgICAgIGNvbnN0IG5vcm1hbGl6ZWQgPSByYXcudHJpbSgpLnRvTG93ZXJDYXNlKCk7XG4gICAgICBpZiAobm9ybWFsaXplZCA9PT0gJ3RydWUnIHx8IG5vcm1hbGl6ZWQgPT09ICcxJykge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIGlmIChub3JtYWxpemVkID09PSAnZmFsc2UnIHx8IG5vcm1hbGl6ZWQgPT09ICcwJykge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH0sXG4gICAgc2VyaWFsaXplKHZhbHVlOiB1bmtub3duKTogc3RyaW5nIHtcbiAgICAgIGlmICh2YWx1ZSA9PT0gdHJ1ZSkge1xuICAgICAgICByZXR1cm4gJ3RydWUnO1xuICAgICAgfVxuICAgICAgcmV0dXJuICdmYWxzZSc7XG4gICAgfSxcbiAgfSBhcyBCb29sZWFuRmllbGREZXNjcmlwdG9yO1xufVxuXG4vKipcbiAqIENyZWF0ZSBhbiBlbnVtIGZpZWxkIGRlc2NyaXB0b3Igd2l0aCBhIGdpdmVuIG9wZXJhdG9yIHdoaXRlbGlzdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGVudW1GaWVsZDxjb25zdCBUIGV4dGVuZHMgc3RyaW5nPihcbiAgdmFsdWVzOiByZWFkb25seSBUW10sXG4gIG9wczogcmVhZG9ubHkgT3BlcmF0b3JbXSA9IERFRkFVTFRfRU5VTV9PUEVSQVRPUlMsXG4pOiBFbnVtRmllbGREZXNjcmlwdG9yPFQ+IHtcbiAgY29uc3QgdmFsdWVTZXQgPSBuZXcgU2V0KHZhbHVlcyk7XG4gIHJldHVybiB7XG4gICAga2luZDogJ2VudW0nLFxuICAgIG9wZXJhdG9yczogb3BzLFxuICAgIHBhcnNlKHJhdzogc3RyaW5nKTogVCB8IHVuZGVmaW5lZCB7XG4gICAgICBpZiAodmFsdWVTZXQuaGFzKHJhdyBhcyBUKSkge1xuICAgICAgICByZXR1cm4gcmF3IGFzIFQ7XG4gICAgICB9XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH0sXG4gICAgc2VyaWFsaXplKHZhbHVlOiB1bmtub3duKTogc3RyaW5nIHtcbiAgICAgIHJldHVybiBTdHJpbmcodmFsdWUgYXMgVCk7XG4gICAgfSxcbiAgfSBhcyBFbnVtRmllbGREZXNjcmlwdG9yPFQ+O1xufVxuXG50eXBlIEN1c3RvbUZpZWxkT3B0aW9uczxUPiA9IHtcbiAgb3BlcmF0b3JzOiByZWFkb25seSBPcGVyYXRvcltdO1xuICBwYXJzZTogKHJhdzogc3RyaW5nKSA9PiBUIHwgdW5kZWZpbmVkO1xuICBzZXJpYWxpemU/OiAodmFsdWU6IFQpID0+IHN0cmluZztcbn07XG5cbi8qKlxuICogQ3JlYXRlIGEgY3VzdG9tIGZpZWxkIGRlc2NyaXB0b3Igd2l0aCBleHBsaWNpdCBwYXJzZS9zZXJpYWxpemUgZnVuY3Rpb25zLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY3VzdG9tRmllbGQ8VD4oXG4gIG9wdGlvbnM6IEN1c3RvbUZpZWxkT3B0aW9uczxUPixcbik6IEN1c3RvbUZpZWxkRGVzY3JpcHRvcjxUPiB7XG4gIHJldHVybiB7XG4gICAga2luZDogJ2N1c3RvbScsXG4gICAgb3BlcmF0b3JzOiBvcHRpb25zLm9wZXJhdG9ycyxcbiAgICBwYXJzZTogb3B0aW9ucy5wYXJzZSxcbiAgICBzZXJpYWxpemU6IG9wdGlvbnMuc2VyaWFsaXplLFxuICB9IGFzIEN1c3RvbUZpZWxkRGVzY3JpcHRvcjxUPjtcbn1cblxuLyoqXG4gKiBGcmVlemUgYW5kIHJldHVybiB0aGUgc2NoZW1hIChpbW11dGFiaWxpdHkgZ3VhcmQgZm9yIGNvbnN1bWVycykuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZWZpbmVTY2hlbWE8UyBleHRlbmRzIFJlY29yZDxzdHJpbmcsIEZpZWxkRGVzY3JpcHRvcj4+KFxuICBzY2hlbWE6IFMsXG4pOiBTIHtcbiAgcmV0dXJuIE9iamVjdC5mcmVlemUoeyAuLi5zY2hlbWEgfSk7XG59XG4iXX0=
|
package/lib/stringify.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stringify.d.ts","sourceRoot":"","sources":["../src/stringify.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"stringify.d.ts","sourceRoot":"","sources":["../src/stringify.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,YAAY,EACZ,MAAM,EAGP,MAAM,YAAY,CAAC;AAmDpB,wBAAgB,SAAS,CAAC,CAAC,SAAS,MAAM,EACxC,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,EACxB,MAAM,EAAE,CAAC,GACR,MAAM,CAkER"}
|
package/lib/stringify.js
CHANGED
|
@@ -3,6 +3,34 @@ function encodeKey(field, op) {
|
|
|
3
3
|
return field;
|
|
4
4
|
return `${field}.${op}`;
|
|
5
5
|
}
|
|
6
|
+
function serializeScalar(descriptor, value) {
|
|
7
|
+
if (value === undefined) {
|
|
8
|
+
return undefined;
|
|
9
|
+
}
|
|
10
|
+
const isPrimitive = typeof value === 'string' ||
|
|
11
|
+
typeof value === 'number' ||
|
|
12
|
+
typeof value === 'boolean';
|
|
13
|
+
if (isPrimitive) {
|
|
14
|
+
if (descriptor.serialize != null) {
|
|
15
|
+
try {
|
|
16
|
+
return descriptor.serialize(value);
|
|
17
|
+
}
|
|
18
|
+
catch {
|
|
19
|
+
return undefined;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
return String(value);
|
|
23
|
+
}
|
|
24
|
+
if (descriptor.kind === 'custom' && descriptor.serialize != null) {
|
|
25
|
+
try {
|
|
26
|
+
return descriptor.serialize(value);
|
|
27
|
+
}
|
|
28
|
+
catch {
|
|
29
|
+
return undefined;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
return JSON.stringify(value);
|
|
33
|
+
}
|
|
6
34
|
export function stringify(filters, schema) {
|
|
7
35
|
const parts = [];
|
|
8
36
|
for (const field of Object.keys(schema)) {
|
|
@@ -14,21 +42,19 @@ export function stringify(filters, schema) {
|
|
|
14
42
|
for (const op of descriptor.operators) {
|
|
15
43
|
if (op === 'eq') {
|
|
16
44
|
const scalar = value[op];
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
typeof printable !== 'number') {
|
|
21
|
-
printable = JSON.stringify(printable);
|
|
22
|
-
}
|
|
23
|
-
parts.push(`${encodeKey(field, op)}=${encodeURIComponent(String(printable))}`);
|
|
45
|
+
const printable = serializeScalar(descriptor, scalar);
|
|
46
|
+
if (printable !== undefined) {
|
|
47
|
+
parts.push(`${encodeKey(field, op)}=${encodeURIComponent(printable)}`);
|
|
24
48
|
}
|
|
25
49
|
}
|
|
26
50
|
else if (op === 'between') {
|
|
27
51
|
const tuple = value.between;
|
|
28
52
|
if (Array.isArray(tuple) && tuple.length === 2) {
|
|
29
|
-
const first =
|
|
30
|
-
const second =
|
|
31
|
-
|
|
53
|
+
const first = serializeScalar(descriptor, tuple[0]);
|
|
54
|
+
const second = serializeScalar(descriptor, tuple[1]);
|
|
55
|
+
if (first !== undefined && second !== undefined) {
|
|
56
|
+
parts.push(`${encodeKey(field, op)}=${encodeURIComponent(first)},${encodeURIComponent(second)}`);
|
|
57
|
+
}
|
|
32
58
|
}
|
|
33
59
|
}
|
|
34
60
|
else if (op === 'in' || op === 'nin') {
|
|
@@ -36,23 +62,26 @@ export function stringify(filters, schema) {
|
|
|
36
62
|
if (Array.isArray(list) && list.length > 0) {
|
|
37
63
|
const encodedItems = list
|
|
38
64
|
.map((v) => {
|
|
39
|
-
|
|
65
|
+
const printable = serializeScalar(descriptor, v);
|
|
66
|
+
if (printable === undefined) {
|
|
67
|
+
return undefined;
|
|
68
|
+
}
|
|
69
|
+
return encodeURIComponent(printable);
|
|
70
|
+
})
|
|
71
|
+
.filter((item) => {
|
|
72
|
+
return item !== undefined;
|
|
40
73
|
})
|
|
41
74
|
.join(',');
|
|
42
|
-
|
|
75
|
+
if (encodedItems !== '') {
|
|
76
|
+
parts.push(`${encodeKey(field, op)}=${encodedItems}`);
|
|
77
|
+
}
|
|
43
78
|
}
|
|
44
79
|
}
|
|
45
80
|
else {
|
|
46
81
|
const scalar = value[op];
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
printable = scalar;
|
|
51
|
-
}
|
|
52
|
-
else {
|
|
53
|
-
printable = JSON.stringify(scalar);
|
|
54
|
-
}
|
|
55
|
-
parts.push(`${encodeKey(field, op)}=${encodeURIComponent(String(printable))}`);
|
|
82
|
+
const printable = serializeScalar(descriptor, scalar);
|
|
83
|
+
if (printable !== undefined) {
|
|
84
|
+
parts.push(`${encodeKey(field, op)}=${encodeURIComponent(printable)}`);
|
|
56
85
|
}
|
|
57
86
|
}
|
|
58
87
|
}
|
|
@@ -60,4 +89,4 @@ export function stringify(filters, schema) {
|
|
|
60
89
|
}
|
|
61
90
|
return parts.join('&');
|
|
62
91
|
}
|
|
63
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
92
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyaW5naWZ5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3N0cmluZ2lmeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFVQSxTQUFTLFNBQVMsQ0FBQyxLQUFhLEVBQUUsRUFBWTtJQUM1QyxJQUFJLEVBQUUsS0FBSyxJQUFJO1FBQUUsT0FBTyxLQUFLLENBQUM7SUFDOUIsT0FBTyxHQUFHLEtBQUssSUFBSSxFQUFFLEVBQUUsQ0FBQztBQUMxQixDQUFDO0FBS0QsU0FBUyxlQUFlLENBQ3RCLFVBQTJCLEVBQzNCLEtBQWM7SUFFZCxJQUFJLEtBQUssS0FBSyxTQUFTLEVBQUUsQ0FBQztRQUN4QixPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBQ0QsTUFBTSxXQUFXLEdBQ2YsT0FBTyxLQUFLLEtBQUssUUFBUTtRQUN6QixPQUFPLEtBQUssS0FBSyxRQUFRO1FBQ3pCLE9BQU8sS0FBSyxLQUFLLFNBQVMsQ0FBQztJQUM3QixJQUFJLFdBQVcsRUFBRSxDQUFDO1FBQ2hCLElBQUksVUFBVSxDQUFDLFNBQVMsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUNqQyxJQUFJLENBQUM7Z0JBQ0gsT0FBTyxVQUFVLENBQUMsU0FBUyxDQUFDLEtBQWMsQ0FBQyxDQUFDO1lBQzlDLENBQUM7WUFBQyxNQUFNLENBQUM7Z0JBQ1AsT0FBTyxTQUFTLENBQUM7WUFDbkIsQ0FBQztRQUNILENBQUM7UUFDRCxPQUFPLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN2QixDQUFDO0lBQ0QsSUFBSSxVQUFVLENBQUMsSUFBSSxLQUFLLFFBQVEsSUFBSSxVQUFVLENBQUMsU0FBUyxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ2pFLElBQUksQ0FBQztZQUNILE9BQU8sVUFBVSxDQUFDLFNBQVMsQ0FBQyxLQUFjLENBQUMsQ0FBQztRQUM5QyxDQUFDO1FBQUMsTUFBTSxDQUFDO1lBQ1AsT0FBTyxTQUFTLENBQUM7UUFDbkIsQ0FBQztJQUNILENBQUM7SUFDRCxP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QUksWUFBWSxLQUFLLEVBQUUsRUFBRSxDQUFDOzRCQUN4QixLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsU0FBUyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsSUFBSSxZQUFZLEVBQUUsQ0FBQyxDQUFDO3dCQUN4RCxDQUFDO29CQUNILENBQUM7Z0JBQ0gsQ0FBQztxQkFBTSxDQUFDO29CQUNOLE1BQU0sTUFBTSxHQUFJLEtBQWlDLENBQUMsRUFBRSxDQUFDLENBQUM7b0JBQ3RELE1BQU0sU0FBUyxHQUFHLGVBQWUsQ0FBQyxVQUFVLEVBQUUsTUFBTSxDQUFDLENBQUM7b0JBQ3RELElBQUksU0FBUyxLQUFLLFNBQVMsRUFBRSxDQUFDO3dCQUM1QixLQUFLLENBQUMsSUFBSSxDQUNSLEdBQUcsU0FBUyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsSUFBSSxrQkFBa0IsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUMzRCxDQUFDO29CQUNKLENBQUM7Z0JBQ0gsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUNELE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUN6QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUge1xuICBJbmZlckZpbHRlcnMsXG4gIFNjaGVtYSxcbiAgT3BlcmF0b3IsXG4gIEZpZWxkRGVzY3JpcHRvcixcbn0gZnJvbSAnLi90eXBlcy5qcyc7XG5cbi8qKlxuICogQnVpbGRzIHRoZSBlbmNvZGVkIGtleSBwb3J0aW9uIGZvciBhIGZpZWxkL29wZXJhdG9yIHBhaXIgKGltcGxpY2l0IGBlcWAgaGFzIG5vIGRvdCBzdWZmaXgpLlxuICovXG5mdW5jdGlvbiBlbmNvZGVLZXkoZmllbGQ6IHN0cmluZywgb3A6IE9wZXJhdG9yKTogc3RyaW5nIHtcbiAgaWYgKG9wID09PSAnZXEnKSByZXR1cm4gZmllbGQ7IC8vIGltcGxpY2l0IGVxdWFsaXR5IGZvcm1cbiAgcmV0dXJuIGAke2ZpZWxkfS4ke29wfWA7XG59XG5cbi8qKlxuICogU2VyaWFsaXplcyBhIHNjYWxhciB2YWx1ZSB1c2luZyB0aGUgZmllbGQgZGVzY3JpcHRvciB3aGVuIHBvc3NpYmxlLlxuICovXG5mdW5jdGlvbiBzZXJpYWxpemVTY2FsYXIoXG4gIGRlc2NyaXB0b3I6IEZpZWxkRGVzY3JpcHRvcixcbiAgdmFsdWU6IHVua25vd24sXG4pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbiAgY29uc3QgaXNQcmltaXRpdmUgPVxuICAgIHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgfHxcbiAgICB0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInIHx8XG4gICAgdHlwZW9mIHZhbHVlID09PSAnYm9vbGVhbic7XG4gIGlmIChpc1ByaW1pdGl2ZSkge1xuICAgIGlmIChkZXNjcmlwdG9yLnNlcmlhbGl6ZSAhPSBudWxsKSB7XG4gICAgICB0cnkge1xuICAgICAgICByZXR1cm4gZGVzY3JpcHRvci5zZXJpYWxpemUodmFsdWUgYXMgbmV2ZXIpO1xuICAgICAgfSBjYXRjaCB7XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBTdHJpbmcodmFsdWUpO1xuICB9XG4gIGlmIChkZXNjcmlwdG9yLmtpbmQgPT09ICdjdXN0b20nICYmIGRlc2NyaXB0b3Iuc2VyaWFsaXplICE9IG51bGwpIHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIGRlc2NyaXB0b3Iuc2VyaWFsaXplKHZhbHVlIGFzIG5ldmVyKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG4gIHJldHVybiBKU09OLnN0cmluZ2lmeSh2YWx1ZSk7XG59XG5cbi8qKlxuICogU2VyaWFsaXplcyBhIGZpbHRlcnMgb2JqZWN0IGludG8gYSBjYW5vbmljYWwgcXVlcnkgc3RyaW5nIHJlc3BlY3RpbmcgdGhlIHNjaGVtYSBvcGVyYXRvciBvcmRlcmluZy5cbiAqXG4gKiBAcGFyYW0gZmlsdGVycyAtIFBhcnNlZCBmaWx0ZXJzIHRvIGVuY29kZS5cbiAqIEBwYXJhbSBzY2hlbWEgLSBTY2hlbWEgdXNlZCB0byBkZXRlcm1pbmUgb3BlcmF0b3Igb3JkZXJpbmcgYW5kIGZvcm1hdHRpbmcuXG4gKiBAcmV0dXJucyBRdWVyeSBzdHJpbmcgd2l0aG91dCBsZWFkaW5nIHF1ZXN0aW9uIG1hcmsuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzdHJpbmdpZnk8UyBleHRlbmRzIFNjaGVtYT4oXG4gIGZpbHRlcnM6IEluZmVyRmlsdGVyczxTPixcbiAgc2NoZW1hOiBTLFxuKTogc3RyaW5nIHtcbiAgY29uc3QgcGFydHM6IHN0cmluZ1tdID0gW107XG4gIGZvciAoY29uc3QgZmllbGQgb2YgT2JqZWN0LmtleXMoc2NoZW1hKSkge1xuICAgIGNvbnN0IHZhbHVlID0gZmlsdGVyc1tmaWVsZCBhcyBrZXlvZiBTXTtcbiAgICBjb25zdCBkZXNjcmlwdG9yID0gc2NoZW1hW2ZpZWxkXTtcbiAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCB8fCBkZXNjcmlwdG9yID09PSB1bmRlZmluZWQpIHtcbiAgICAgIC8vIHNraXAgYWJzZW50XG4gICAgfSBlbHNlIHtcbiAgICAgIGZvciAoY29uc3Qgb3Agb2YgZGVzY3JpcHRvci5vcGVyYXRvcnMpIHtcbiAgICAgICAgaWYgKG9wID09PSAnZXEnKSB7XG4gICAgICAgICAgY29uc3Qgc2NhbGFyID0gKHZhbHVlIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KVtvcF07XG4gICAgICAgICAgY29uc3QgcHJpbnRhYmxlID0gc2VyaWFsaXplU2NhbGFyKGRlc2NyaXB0b3IsIHNjYWxhcik7XG4gICAgICAgICAgaWYgKHByaW50YWJsZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBwYXJ0cy5wdXNoKFxuICAgICAgICAgICAgICBgJHtlbmNvZGVLZXkoZmllbGQsIG9wKX09JHtlbmNvZGVVUklDb21wb25lbnQocHJpbnRhYmxlKX1gLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAob3AgPT09ICdiZXR3ZWVuJykge1xuICAgICAgICAgIGNvbnN0IHR1cGxlID0gKHZhbHVlIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KS5iZXR3ZWVuIGFzXG4gICAgICAgICAgICB8IHVua25vd25bXVxuICAgICAgICAgICAgfCB1bmRlZmluZWQ7XG4gICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodHVwbGUpICYmIHR1cGxlLmxlbmd0aCA9PT0gMikge1xuICAgICAgICAgICAgY29uc3QgZmlyc3QgPSBzZXJpYWxpemVTY2FsYXIoZGVzY3JpcHRvciwgdHVwbGVbMF0pO1xuICAgICAgICAgICAgY29uc3Qgc2Vjb25kID0gc2VyaWFsaXplU2NhbGFyKGRlc2NyaXB0b3IsIHR1cGxlWzFdKTtcbiAgICAgICAgICAgIGlmIChmaXJzdCAhPT0gdW5kZWZpbmVkICYmIHNlY29uZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgIHBhcnRzLnB1c2goXG4gICAgICAgICAgICAgICAgYCR7ZW5jb2RlS2V5KGZpZWxkLCBvcCl9PSR7ZW5jb2RlVVJJQ29tcG9uZW50KFxuICAgICAgICAgICAgICAgICAgZmlyc3QsXG4gICAgICAgICAgICAgICAgKX0sJHtlbmNvZGVVUklDb21wb25lbnQoc2Vjb25kKX1gLFxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChvcCA9PT0gJ2luJyB8fCBvcCA9PT0gJ25pbicpIHtcbiAgICAgICAgICBjb25zdCBsaXN0ID0gKHZhbHVlIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KVtvcF0gYXNcbiAgICAgICAgICAgIHwgdW5rbm93bltdXG4gICAgICAgICAgICB8IHVuZGVmaW5lZDtcbiAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShsaXN0KSAmJiBsaXN0Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGNvbnN0IGVuY29kZWRJdGVtcyA9IGxpc3RcbiAgICAgICAgICAgICAgLm1hcCgodikgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHByaW50YWJsZSA9IHNlcmlhbGl6ZVNjYWxhcihkZXNjcmlwdG9yLCB2KTtcbiAgICAgICAgICAgICAgICBpZiAocHJpbnRhYmxlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBlbmNvZGVVUklDb21wb25lbnQocHJpbnRhYmxlKTtcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgLmZpbHRlcigoaXRlbSk6IGl0ZW0gaXMgc3RyaW5nID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaXRlbSAhPT0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAuam9pbignLCcpO1xuICAgICAgICAgICAgaWYgKGVuY29kZWRJdGVtcyAhPT0gJycpIHtcbiAgICAgICAgICAgICAgcGFydHMucHVzaChgJHtlbmNvZGVLZXkoZmllbGQsIG9wKX09JHtlbmNvZGVkSXRlbXN9YCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnN0IHNjYWxhciA9ICh2YWx1ZSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPilbb3BdO1xuICAgICAgICAgIGNvbnN0IHByaW50YWJsZSA9IHNlcmlhbGl6ZVNjYWxhcihkZXNjcmlwdG9yLCBzY2FsYXIpO1xuICAgICAgICAgIGlmIChwcmludGFibGUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcGFydHMucHVzaChcbiAgICAgICAgICAgICAgYCR7ZW5jb2RlS2V5KGZpZWxkLCBvcCl9PSR7ZW5jb2RlVVJJQ29tcG9uZW50KHByaW50YWJsZSl9YCxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiBwYXJ0cy5qb2luKCcmJyk7XG59XG4iXX0=
|