@ng-atomic/common 18.9.1 → 18.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/pipes/data-accessor/data-accessor.pipe.mjs +16 -3
- package/esm2022/pipes/domain/domain.pipe.mjs +13 -3
- package/esm2022/services/form/json-schema/json-schema.service.mjs +109 -89
- package/esm2022/utils/form/form.mjs +3 -3
- package/fesm2022/ng-atomic-common-pipes-data-accessor.mjs +15 -2
- package/fesm2022/ng-atomic-common-pipes-data-accessor.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-pipes-domain.mjs +13 -3
- package/fesm2022/ng-atomic-common-pipes-domain.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-services-form-json-schema.mjs +109 -89
- package/fesm2022/ng-atomic-common-services-form-json-schema.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-utils.mjs +2 -2
- package/fesm2022/ng-atomic-common-utils.mjs.map +1 -1
- package/package.json +8 -8
- package/pipes/data-accessor/data-accessor.pipe.d.ts +3 -1
- package/pipes/domain/domain.pipe.d.ts +4 -1
- package/services/form/json-schema/json-schema.service.d.ts +26 -23
|
@@ -3,8 +3,21 @@ import { get } from 'lodash-es';
|
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
4
|
export const DATA_ACCESSOR = new InjectionToken('DATA_ACCESSOR');
|
|
5
5
|
export const defaultDataAccessor = (obj, key) => get(obj, key) ?? '';
|
|
6
|
-
export function provideDataAccessor(useFactory = () => defaultDataAccessor) {
|
|
7
|
-
return {
|
|
6
|
+
export function provideDataAccessor(useFactory = () => defaultDataAccessor, { merge = true } = {}) {
|
|
7
|
+
return {
|
|
8
|
+
provide: DATA_ACCESSOR,
|
|
9
|
+
useFactory: () => {
|
|
10
|
+
if (merge) {
|
|
11
|
+
const parentAccessor = injectParentDataAccessor();
|
|
12
|
+
const accessor = useFactory();
|
|
13
|
+
return (obj, key, index) => {
|
|
14
|
+
const result = accessor(obj, key, index);
|
|
15
|
+
return typeof result !== 'undefined' ? result : parentAccessor(obj, key, index);
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
return useFactory();
|
|
19
|
+
}
|
|
20
|
+
};
|
|
8
21
|
}
|
|
9
22
|
export function injectDataAccessor() {
|
|
10
23
|
return inject(DATA_ACCESSOR, { optional: true }) ?? defaultDataAccessor;
|
|
@@ -30,4 +43,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.2", ngImpor
|
|
|
30
43
|
standalone: true,
|
|
31
44
|
}]
|
|
32
45
|
}] });
|
|
33
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
46
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1hY2Nlc3Nvci5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvQG5nLWF0b21pYy9jb21tb24vc3JjL2xpYi9waXBlcy9kYXRhLWFjY2Vzc29yL2RhdGEtYWNjZXNzb3IucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBQzVFLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxXQUFXLENBQUM7O0FBR2hDLE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxJQUFJLGNBQWMsQ0FBb0IsZUFBZSxDQUFDLENBQUM7QUFDcEYsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQXNCLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUM7QUFDeEYsTUFBTSxVQUFVLG1CQUFtQixDQUFJLGFBQW9DLEdBQUcsRUFBRSxDQUFDLG1CQUFtQixFQUFFLEVBQ3BHLEtBQUssR0FBRyxJQUFJLEtBR1YsRUFBRTtJQUNKLE9BQU87UUFDTCxPQUFPLEVBQUUsYUFBYTtRQUN0QixVQUFVLEVBQUUsR0FBRyxFQUFFO1lBQ2YsSUFBSSxLQUFLLEVBQUUsQ0FBQztnQkFDVixNQUFNLGNBQWMsR0FBRyx3QkFBd0IsRUFBSyxDQUFDO2dCQUNyRCxNQUFNLFFBQVEsR0FBRyxVQUFVLEVBQUUsQ0FBQztnQkFDOUIsT0FBTyxDQUFDLEdBQU0sRUFBRSxHQUFXLEVBQUUsS0FBYyxFQUFFLEVBQUU7b0JBQzdDLE1BQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO29CQUN6QyxPQUFPLE9BQU8sTUFBTSxLQUFLLFdBQVcsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztnQkFDbEYsQ0FBQyxDQUFDO1lBQ0osQ0FBQztZQUNELE9BQU8sVUFBVSxFQUFFLENBQUM7UUFDdEIsQ0FBQztLQUNGLENBQUM7QUFDSixDQUFDO0FBRUQsTUFBTSxVQUFVLGtCQUFrQjtJQUNoQyxPQUFPLE1BQU0sQ0FBQyxhQUFhLEVBQUUsRUFBQyxRQUFRLEVBQUUsSUFBSSxFQUFDLENBQUMsSUFBSSxtQkFBbUIsQ0FBQztBQUN4RSxDQUFDO0FBRUQsTUFBTSxVQUFVLHdCQUF3QjtJQUN0QyxPQUFPLE1BQU0sQ0FBQyxhQUFhLEVBQUUsRUFBQyxRQUFRLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUMsQ0FBQyxJQUFJLG1CQUFtQixDQUFDO0FBQ3hGLENBQUM7QUFPRCxNQUFNLE9BQU8sZ0JBQWdCO0lBTDdCO1FBTVksaUJBQVksR0FBRyxrQkFBa0IsRUFBRSxDQUFDO0tBSy9DO0lBSEMsU0FBUyxDQUFDLElBQU8sRUFBRSxHQUFXLEVBQUUsS0FBYztRQUM1QyxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUM3QyxDQUFDOzhHQUxVLGdCQUFnQjs0R0FBaEIsZ0JBQWdCOzsyRkFBaEIsZ0JBQWdCO2tCQUw1QixJQUFJO21CQUFDO29CQUNKLElBQUksRUFBRSxjQUFjO29CQUNwQixJQUFJLEVBQUUsSUFBSTtvQkFDVixVQUFVLEVBQUUsSUFBSTtpQkFDakIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiwgUGlwZSwgaW5qZWN0LCBQaXBlVHJhbnNmb3JtIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IGdldCB9IGZyb20gJ2xvZGFzaC1lcyc7XG5cbmV4cG9ydCB0eXBlIERhdGFBY2Nlc3NvcjxUPiA9IChvYmo6IFQsIGtleTogc3RyaW5nLCBpbmRleD86IG51bWJlcikgPT4gYW55O1xuZXhwb3J0IGNvbnN0IERBVEFfQUNDRVNTT1IgPSBuZXcgSW5qZWN0aW9uVG9rZW48RGF0YUFjY2Vzc29yPGFueT4+KCdEQVRBX0FDQ0VTU09SJyk7XG5leHBvcnQgY29uc3QgZGVmYXVsdERhdGFBY2Nlc3NvcjogRGF0YUFjY2Vzc29yPGFueT4gPSAob2JqLCBrZXkpID0+IGdldChvYmosIGtleSkgPz8gJyc7XG5leHBvcnQgZnVuY3Rpb24gcHJvdmlkZURhdGFBY2Nlc3NvcjxUPih1c2VGYWN0b3J5OiAoKSA9PiBEYXRhQWNjZXNzb3I8VD4gPSAoKSA9PiBkZWZhdWx0RGF0YUFjY2Vzc29yLCB7XG4gIG1lcmdlID0gdHJ1ZVxufToge1xuICBtZXJnZT86IGJvb2xlYW5cbn0gPSB7fSkge1xuICByZXR1cm4ge1xuICAgIHByb3ZpZGU6IERBVEFfQUNDRVNTT1IsXG4gICAgdXNlRmFjdG9yeTogKCkgPT4ge1xuICAgICAgaWYgKG1lcmdlKSB7XG4gICAgICAgIGNvbnN0IHBhcmVudEFjY2Vzc29yID0gaW5qZWN0UGFyZW50RGF0YUFjY2Vzc29yPFQ+KCk7XG4gICAgICAgIGNvbnN0IGFjY2Vzc29yID0gdXNlRmFjdG9yeSgpO1xuICAgICAgICByZXR1cm4gKG9iajogVCwga2V5OiBzdHJpbmcsIGluZGV4PzogbnVtYmVyKSA9PiB7XG4gICAgICAgICAgY29uc3QgcmVzdWx0ID0gYWNjZXNzb3Iob2JqLCBrZXksIGluZGV4KTtcbiAgICAgICAgICByZXR1cm4gdHlwZW9mIHJlc3VsdCAhPT0gJ3VuZGVmaW5lZCcgPyByZXN1bHQgOiBwYXJlbnRBY2Nlc3NvcihvYmosIGtleSwgaW5kZXgpO1xuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgcmV0dXJuIHVzZUZhY3RvcnkoKTtcbiAgICB9XG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3REYXRhQWNjZXNzb3I8VD4oKTogRGF0YUFjY2Vzc29yPFQ+IHtcbiAgcmV0dXJuIGluamVjdChEQVRBX0FDQ0VTU09SLCB7b3B0aW9uYWw6IHRydWV9KSA/PyBkZWZhdWx0RGF0YUFjY2Vzc29yO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0UGFyZW50RGF0YUFjY2Vzc29yPFQ+KCk6IERhdGFBY2Nlc3NvcjxUPiB7XG4gIHJldHVybiBpbmplY3QoREFUQV9BQ0NFU1NPUiwge3NraXBTZWxmOiB0cnVlLCBvcHRpb25hbDogdHJ1ZX0pID8/IGRlZmF1bHREYXRhQWNjZXNzb3I7XG59XG5cbkBQaXBlKHtcbiAgbmFtZTogJ2RhdGFBY2Nlc3NvcicsXG4gIHB1cmU6IHRydWUsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIERhdGFBY2Nlc3NvclBpcGU8VD4gaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgcHJvdGVjdGVkIGRhdGFBY2Nlc3NvciA9IGluamVjdERhdGFBY2Nlc3NvcigpO1xuXG4gIHRyYW5zZm9ybShkYXRhOiBULCBrZXk6IHN0cmluZywgaW5kZXg/OiBudW1iZXIpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLmRhdGFBY2Nlc3NvcihkYXRhLCBrZXksIGluZGV4KTtcbiAgfVxufVxuXG4iXX0=
|
|
@@ -38,8 +38,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.2", ngImpor
|
|
|
38
38
|
type: Pipe,
|
|
39
39
|
args: [{ standalone: true, name: 'domain', pure: true }]
|
|
40
40
|
}] });
|
|
41
|
-
export function
|
|
42
|
-
return {
|
|
41
|
+
export function injectParentDomainLangMap() {
|
|
42
|
+
return inject(DOMAIN_LANG_MAP, { skipSelf: true, optional: true }) ?? {};
|
|
43
|
+
}
|
|
44
|
+
export function provideLangMap(useFactory, { merge = true } = {}) {
|
|
45
|
+
return {
|
|
46
|
+
provide: DOMAIN_LANG_MAP,
|
|
47
|
+
useFactory: () => {
|
|
48
|
+
if (merge)
|
|
49
|
+
return { ...injectParentDomainLangMap(), ...useFactory() };
|
|
50
|
+
return useFactory();
|
|
51
|
+
}
|
|
52
|
+
};
|
|
43
53
|
}
|
|
44
54
|
export function provideDomainLang(domain, mergeObj = {}) {
|
|
45
55
|
return provideLangMap(() => getLangMap(domain, mergeObj));
|
|
@@ -72,4 +82,4 @@ export function provideDomain(useFactory) {
|
|
|
72
82
|
provideModelName(() => getModelName(useFactory()))
|
|
73
83
|
];
|
|
74
84
|
}
|
|
75
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
85
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9tYWluLnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9AbmctYXRvbWljL2NvbW1vbi9zcmMvbGliL3BpcGVzL2RvbWFpbi9kb21haW4ucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFZLElBQUksRUFBVSxNQUFNLEVBQUUsTUFBTSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUN0RyxPQUFPLEVBQWdCLFVBQVUsRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDaEcsT0FBTyxFQUFpQixXQUFXLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUM1RSxPQUFPLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxNQUFNLFdBQVcsQ0FBQzs7QUFHckMsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLElBQUksY0FBYyxDQUFxQixjQUFjLENBQUMsQ0FBQztBQUNuRixNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsSUFBSSxjQUFjLENBQWdCLGlCQUFpQixDQUFDLENBQUM7QUFDcEYsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLElBQUksY0FBYyxDQUFtQixjQUFjLENBQUMsQ0FBQztBQUNqRixNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLGNBQWMsQ0FBaUIsbUJBQW1CLENBQUMsQ0FBQztBQUt6RixNQUFNLE9BQU8sVUFBVTtJQUR2QjtRQUVZLFFBQUcsR0FBRyxNQUFNLENBQUMsZUFBZSxFQUFFLEVBQUMsUUFBUSxFQUFFLElBQUksRUFBQyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3RELG1CQUFjLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRTtZQUM1RSxNQUFNLGVBQWUsR0FBRyxv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QUUsSUFBSSxFQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDOUQsQ0FBQztBQUVELE1BQU0sVUFBVSxlQUFlLENBQUMsUUFBbUI7SUFDakQsSUFBSSxRQUFRO1FBQUUsT0FBTyxRQUFRLENBQUMsR0FBRyxDQUFDLGlCQUFpQixFQUFFLElBQUksQ0FBQyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMzRSxPQUFPLE1BQU0sQ0FBQyxpQkFBaUIsRUFBRSxFQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNyRSxDQUFDO0FBRUQsTUFBTSxVQUFVLGFBQWEsQ0FBSSxVQUF5QjtJQUN4RCxPQUFPO1FBQ0wsWUFBWSxDQUFDLFVBQVUsQ0FBQztRQUN4QixjQUFjLENBQUMsR0FBRyxFQUFFLENBQUMsVUFBVSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUM7UUFDOUMsWUFBWSxDQUFDLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDO1FBQzFDLGdCQUFnQixDQUFDLEdBQUcsRUFBRSxDQUFDLFlBQVksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDO0tBQ25ELENBQUE7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4sIEluamVjdG9yLCBQaXBlLCBTaWduYWwsIGluamVjdCwgc2lnbmFsLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBFbnRpdHksIFR5cGUsIGdldExhbmdNYXAsIGdldE1vZGVsTmFtZSwgZ2V0UHJvcHMgfSBmcm9tICdAbngtZGRkL2NvbW1vbi9kb21haW4vbW9kZWxzJztcbmltcG9ydCB7IFNpZ25hbE9yVmFsdWUsIHdyYXBGYWN0b3J5IH0gZnJvbSAnQG5nLWF0b21pYy9jb21tb24vcGlwZXMvc2lnbmFsJztcbmltcG9ydCB7IGdldCwgaGFzIH0gZnJvbSAnbG9kYXNoLWVzJztcblxuZXhwb3J0IHR5cGUgRG9tYWluTGFuZ01hcCA9IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG5leHBvcnQgY29uc3QgRE9NQUlOX01PREVMID0gbmV3IEluamVjdGlvblRva2VuPFR5cGU8e2lkOiBzdHJpbmd9Pj4oJ0RvbWFpbiBNb2RlbCcpO1xuZXhwb3J0IGNvbnN0IERPTUFJTl9MQU5HX01BUCA9IG5ldyBJbmplY3Rpb25Ub2tlbjxEb21haW5MYW5nTWFwPignZG9tYWluIGxhbmcgbWFwJyk7XG5leHBvcnQgY29uc3QgRE9NQUlOX1BST1BTID0gbmV3IEluamVjdGlvblRva2VuPFNpZ25hbDxzdHJpbmdbXT4+KCdEb21haW4gUHJvcHMnKTtcbmV4cG9ydCBjb25zdCBET01BSU5fTU9ERUxfTkFNRSA9IG5ldyBJbmplY3Rpb25Ub2tlbjxTaWduYWw8c3RyaW5nPj4oJ0RvbWFpbiBNb2RlbCBOYW1lJyk7XG5cblxuXG5AUGlwZSh7c3RhbmRhbG9uZTogdHJ1ZSwgbmFtZTogJ2RvbWFpbicsIHB1cmU6IHRydWV9KVxuZXhwb3J0IGNsYXNzIERvbWFpblBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgcHJvdGVjdGVkIG1hcCA9IGluamVjdChET01BSU5fTEFOR19NQVAsIHtvcHRpb25hbDogdHJ1ZX0pID8/IHt9O1xuICBwcm90ZWN0ZWQgcmVnZXhSZXNvbHZlcnMgPSBPYmplY3QuZW50cmllcyh0aGlzLm1hcCkubWFwKChbcmVnZXhLZXksIHZhbHVlXSkgPT4ge1xuICAgIGNvbnN0IHJlZ2V4SW5kaWNhdG9ycyA9IC9bLiorP14ke30oKXxbXFxdXFxcXF0vO1xuICAgIGlmIChyZWdleEluZGljYXRvcnMudGVzdChyZWdleEtleSkpIHtcbiAgICAgIHJldHVybiAoa2V5OiBzdHJpbmcpID0+IHtcbiAgICAgICAgY29uc3QgcmVnZXggPSBuZXcgUmVnRXhwKHJlZ2V4S2V5KTtcbiAgICAgICAgcmV0dXJuIHJlZ2V4LnRlc3Qoa2V5KSA/IHZhbHVlIDogbnVsbDtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuICgpID0+IG51bGw7XG4gIH0pO1xuXG4gIHRyYW5zZm9ybShpbnB1dDogc3RyaW5nLCBtYXA6IERvbWFpbkxhbmdNYXAgPSB0aGlzLm1hcCkge1xuICAgIGlmIChoYXMobWFwLCBpbnB1dCkpIHJldHVybiBnZXQobWFwLCBpbnB1dCk7XG4gICAgZm9yIChjb25zdCByZXNvbHZlciBvZiB0aGlzLnJlZ2V4UmVzb2x2ZXJzKSB7XG4gICAgICBjb25zdCByZXN1bHQgPSByZXNvbHZlcihpbnB1dCk7XG4gICAgICBpZiAocmVzdWx0KSByZXR1cm4gcmVzdWx0O1xuICAgIH1cbiAgICByZXR1cm4gbWFwW2lucHV0XSA/PyBpbnB1dDtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0UGFyZW50RG9tYWluTGFuZ01hcCgpOiBEb21haW5MYW5nTWFwIHtcbiAgcmV0dXJuIGluamVjdChET01BSU5fTEFOR19NQVAsIHtza2lwU2VsZjogdHJ1ZSwgb3B0aW9uYWw6IHRydWV9KSA/PyB7fTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb3ZpZGVMYW5nTWFwKHVzZUZhY3Rvcnk6ICgpID0+IERvbWFpbkxhbmdNYXAsIHtcbiAgbWVyZ2UgPSB0cnVlXG59OiB7XG4gIG1lcmdlPzogYm9vbGVhblxufSA9IHt9KSB7XG4gIHJldHVybiB7XG4gICAgcHJvdmlkZTogRE9NQUlOX0xBTkdfTUFQLFxuICAgIHVzZUZhY3Rvcnk6ICgpID0+IHtcbiAgICAgIGlmIChtZXJnZSkgcmV0dXJuIHsuLi5pbmplY3RQYXJlbnREb21haW5MYW5nTWFwKCksIC4uLnVzZUZhY3RvcnkoKX07XG4gICAgICByZXR1cm4gdXNlRmFjdG9yeSgpO1xuICAgIH1cbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb3ZpZGVEb21haW5MYW5nPEU+KGRvbWFpbjogVHlwZTxFPiwgbWVyZ2VPYmo6IERvbWFpbkxhbmdNYXAgPSB7fSkge1xuICByZXR1cm4gcHJvdmlkZUxhbmdNYXAoKCkgPT4gZ2V0TGFuZ01hcChkb21haW4sIG1lcmdlT2JqKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm92aWRlTW9kZWw8RT4odXNlRmFjdG9yeTogKCkgPT4gVHlwZTxFPikge1xuICByZXR1cm4geyBwcm92aWRlOiBET01BSU5fTU9ERUwsIHVzZUZhY3Rvcnl9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0TW9kZWw8RSA9IEVudGl0eT4oKTogVHlwZTxFPiB7XG4gIHJldHVybiBpbmplY3QoRE9NQUlOX01PREVMLCB7b3B0aW9uYWw6IHRydWV9KSBhcyBUeXBlPEU+ID8/IG51bGw7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm92aWRlUHJvcHModXNlRmFjdG9yeTogKCkgPT4gU2lnbmFsT3JWYWx1ZTxzdHJpbmdbXT4pIHtcbiAgcmV0dXJuIHsgcHJvdmlkZTogRE9NQUlOX1BST1BTLCB1c2VGYWN0b3J5OiB3cmFwRmFjdG9yeSh1c2VGYWN0b3J5KX1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb3ZpZGVNb2RlbE5hbWUodXNlRmFjdG9yeTogKCkgPT4gU2lnbmFsT3JWYWx1ZTxzdHJpbmc+KSB7XG4gIHJldHVybiB7IHByb3ZpZGU6IERPTUFJTl9NT0RFTF9OQU1FLCB1c2VGYWN0b3J5OiB3cmFwRmFjdG9yeSh1c2VGYWN0b3J5KX1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluamVjdFByb3BzKCk6IFNpZ25hbDxzdHJpbmdbXT4ge1xuICByZXR1cm4gaW5qZWN0KERPTUFJTl9QUk9QUywge29wdGlvbmFsOiB0cnVlfSkgPz8gc2lnbmFsKFtdKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluamVjdE1vZGVsTmFtZShpbmplY3Rvcj86IEluamVjdG9yKTogU2lnbmFsPHN0cmluZz4ge1xuICBpZiAoaW5qZWN0b3IpIHJldHVybiBpbmplY3Rvci5nZXQoRE9NQUlOX01PREVMX05BTUUsIG51bGwpID8/IHNpZ25hbChudWxsKTtcbiAgcmV0dXJuIGluamVjdChET01BSU5fTU9ERUxfTkFNRSwge29wdGlvbmFsOiB0cnVlfSkgPz8gc2lnbmFsKG51bGwpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJvdmlkZURvbWFpbjxFPih1c2VGYWN0b3J5OiAoKSA9PiBUeXBlPEU+KSB7XG4gIHJldHVybiBbXG4gICAgcHJvdmlkZU1vZGVsKHVzZUZhY3RvcnkpLFxuICAgIHByb3ZpZGVMYW5nTWFwKCgpID0+IGdldExhbmdNYXAodXNlRmFjdG9yeSgpKSksXG4gICAgcHJvdmlkZVByb3BzKCgpID0+IGdldFByb3BzKHVzZUZhY3RvcnkoKSkpLFxuICAgIHByb3ZpZGVNb2RlbE5hbWUoKCkgPT4gZ2V0TW9kZWxOYW1lKHVzZUZhY3RvcnkoKSkpXG4gIF1cbn1cbiJdfQ==
|
|
@@ -3,121 +3,141 @@ import { FormBuilder, Validators } from "@angular/forms";
|
|
|
3
3
|
import { targetConstructorToSchema } from './json-schema';
|
|
4
4
|
import { merge } from "lodash-es";
|
|
5
5
|
import * as i0 from "@angular/core";
|
|
6
|
-
export
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
if (!schema || !schema.items) {
|
|
24
|
-
return fb.array([]);
|
|
6
|
+
export class JsonSchemaFormUtils {
|
|
7
|
+
static removeObjectPercent(value) {
|
|
8
|
+
return Object.entries(value).reduce((acc, [key, value]) => {
|
|
9
|
+
if (typeof value === 'string' && value.startsWith('%') && value.endsWith('%')) {
|
|
10
|
+
acc[key] = value.slice(1, -1);
|
|
11
|
+
}
|
|
12
|
+
else if (typeof value === 'string' && value.startsWith('%')) {
|
|
13
|
+
acc[key] = value.slice(1);
|
|
14
|
+
}
|
|
15
|
+
else if (typeof value === 'string' && value.endsWith('%')) {
|
|
16
|
+
acc[key] = value.slice(0, -1);
|
|
17
|
+
}
|
|
18
|
+
else {
|
|
19
|
+
acc[key] = value;
|
|
20
|
+
}
|
|
21
|
+
return acc;
|
|
22
|
+
}, {});
|
|
25
23
|
}
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
return array;
|
|
31
|
-
}
|
|
32
|
-
export function buildFormByJsonSchemaProperty(property, { fb = inject(FormBuilder).nonNullable, value = null, validators = [], } = {}) {
|
|
33
|
-
if (property.type === 'string') {
|
|
34
|
-
if (property.format === 'date-time') {
|
|
35
|
-
return fb.control(value ?? property.default ?? null, validators);
|
|
24
|
+
static buildFormGroupByJsonSchema(schema, { fb = inject(FormBuilder).nonNullable, value = {}, } = {}) {
|
|
25
|
+
console.debug('[buildFormGroupByJsonSchema] schema:', schema);
|
|
26
|
+
if (!schema || !schema?.properties) {
|
|
27
|
+
return fb.group({});
|
|
36
28
|
}
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
29
|
+
const group = {};
|
|
30
|
+
for (const key in schema.properties) {
|
|
31
|
+
const property = schema.properties[key];
|
|
32
|
+
const validators = [];
|
|
33
|
+
if (schema.required && schema.required.includes(key)) {
|
|
34
|
+
validators.push(Validators.required);
|
|
35
|
+
}
|
|
36
|
+
group[key] = this.buildFormByJsonSchemaProperty(property, { fb, value: value?.[key], validators });
|
|
42
37
|
}
|
|
38
|
+
return fb.group(group);
|
|
43
39
|
}
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
else if (property.type === 'array') {
|
|
54
|
-
return buildFormArrayByJsonSchema(property, { fb, value: (value || []) });
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
export function buildFormFieldMapByJsonSchema(schema, options = {}) {
|
|
58
|
-
if (!schema || !schema.properties) {
|
|
59
|
-
return {
|
|
60
|
-
id: { type: 'hidden' },
|
|
61
|
-
};
|
|
40
|
+
static buildFormArrayByJsonSchema(schema, { fb = inject(FormBuilder).nonNullable, value = [], } = {}) {
|
|
41
|
+
if (!schema || !schema.items) {
|
|
42
|
+
return fb.array([]);
|
|
43
|
+
}
|
|
44
|
+
console.debug('[buildFormArrayByJsonSchema] schema:', schema);
|
|
45
|
+
const array = fb.array([
|
|
46
|
+
this.buildFormGroupByJsonSchema(schema.items, { fb }),
|
|
47
|
+
]);
|
|
48
|
+
return array;
|
|
62
49
|
}
|
|
63
|
-
|
|
64
|
-
for (const key in schema.properties) {
|
|
65
|
-
const property = schema.properties[key];
|
|
50
|
+
static buildFormByJsonSchemaProperty(property, { fb = inject(FormBuilder).nonNullable, value = null, validators = [], } = {}) {
|
|
66
51
|
if (property.type === 'string') {
|
|
67
|
-
if (property.
|
|
68
|
-
|
|
69
|
-
}
|
|
70
|
-
else if (property.format === 'date-time') {
|
|
71
|
-
fieldMap[key] = { type: 'date' };
|
|
52
|
+
if (property.format === 'date-time') {
|
|
53
|
+
return fb.control(value ?? property.default ?? null, validators);
|
|
72
54
|
}
|
|
73
55
|
else if (property.format === 'binary') {
|
|
74
|
-
|
|
56
|
+
return fb.control(value ?? property.default ?? null, validators);
|
|
75
57
|
}
|
|
76
58
|
else {
|
|
77
|
-
|
|
59
|
+
return fb.control(value ?? property.default ?? '', validators);
|
|
78
60
|
}
|
|
79
61
|
}
|
|
62
|
+
else if (property.type === 'integer') {
|
|
63
|
+
return fb.control(value ?? property.default ?? 0, validators);
|
|
64
|
+
}
|
|
65
|
+
else if (property.type === 'number') {
|
|
66
|
+
return fb.control(value ?? property.default ?? 0, validators);
|
|
67
|
+
}
|
|
80
68
|
else if (property.type === 'object') {
|
|
81
|
-
|
|
82
|
-
for (const childKey in childFieldMap) {
|
|
83
|
-
fieldMap[`${key}.${childKey}`] = childFieldMap[childKey];
|
|
84
|
-
}
|
|
69
|
+
return this.buildFormGroupByJsonSchema(property, { fb, value: (value || {}) });
|
|
85
70
|
}
|
|
86
71
|
else if (property.type === 'array') {
|
|
87
|
-
|
|
88
|
-
for (const childKey in childFieldMap) {
|
|
89
|
-
// TODO: 正規表現でパスマッチを判定できるようにする。
|
|
90
|
-
fieldMap[`${key}.\\d+.${childKey}`] = childFieldMap[childKey];
|
|
91
|
-
}
|
|
72
|
+
return this.buildFormArrayByJsonSchema(property, { fb, value: (value || []) });
|
|
92
73
|
}
|
|
93
|
-
|
|
94
|
-
|
|
74
|
+
}
|
|
75
|
+
static buildFormByJsonSchema(schema, { fb = inject(FormBuilder).nonNullable, value = {}, fieldMap = {}, } = {}) {
|
|
76
|
+
return {
|
|
77
|
+
form: this.buildFormGroupByJsonSchema(schema, { fb, value }),
|
|
78
|
+
fieldMap: this.buildFormFieldMapByJsonSchema(schema, { merge: fieldMap }),
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
static buildFormFieldMapByJsonSchema(schema, options = {}) {
|
|
82
|
+
if (!schema || !schema.properties) {
|
|
83
|
+
return {
|
|
84
|
+
id: { type: 'hidden' },
|
|
85
|
+
};
|
|
95
86
|
}
|
|
96
|
-
|
|
87
|
+
const fieldMap = {};
|
|
88
|
+
for (const key in schema.properties) {
|
|
89
|
+
const property = schema.properties[key];
|
|
90
|
+
if (property.type === 'string') {
|
|
91
|
+
if (property.enum) {
|
|
92
|
+
fieldMap[key] = { type: 'select', options: property.enum.map((v) => ({ value: v, name: v })) };
|
|
93
|
+
}
|
|
94
|
+
else if (property.format === 'date-time') {
|
|
95
|
+
fieldMap[key] = { type: 'date' };
|
|
96
|
+
}
|
|
97
|
+
else if (property.format === 'binary') {
|
|
98
|
+
fieldMap[key] = { type: 'file' };
|
|
99
|
+
}
|
|
100
|
+
else {
|
|
101
|
+
fieldMap[key] = { type: 'text' };
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
else if (property.type === 'object') {
|
|
105
|
+
const childFieldMap = this.buildFormFieldMapByJsonSchema(property, options);
|
|
106
|
+
for (const childKey in childFieldMap) {
|
|
107
|
+
fieldMap[`${key}.${childKey}`] = childFieldMap[childKey];
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
else if (property.type === 'array') {
|
|
111
|
+
const childFieldMap = this.buildFormFieldMapByJsonSchema(property.items, options);
|
|
112
|
+
for (const childKey in childFieldMap) {
|
|
113
|
+
// TODO: 正規表現でパスマッチを判定できるようにする。
|
|
114
|
+
fieldMap[`${key}.\\d+.${childKey}`] = childFieldMap[childKey];
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
else {
|
|
118
|
+
fieldMap[key] = { type: property.type };
|
|
119
|
+
}
|
|
120
|
+
// const type = ? 'date' : property.type;
|
|
121
|
+
}
|
|
122
|
+
console.debug('[buildFormFieldMapByJsonSchema] fieldMap:', fieldMap);
|
|
123
|
+
console.debug('[buildFormFieldMapByJsonSchema] options.merge:', options.merge);
|
|
124
|
+
return { ...fieldMap, ...options.merge };
|
|
97
125
|
}
|
|
98
|
-
console.debug('[buildFormFieldMapByJsonSchema] fieldMap:', fieldMap);
|
|
99
|
-
return merge(fieldMap, options.merge);
|
|
100
|
-
}
|
|
101
|
-
export function buildFormByJsonSchema(schema, { fb = inject(FormBuilder).nonNullable, value = {}, fieldMap = {}, } = {}) {
|
|
102
|
-
return {
|
|
103
|
-
form: buildFormGroupByJsonSchema(schema, { fb, value }),
|
|
104
|
-
fieldMap: buildFormFieldMapByJsonSchema(schema, { merge: fieldMap }),
|
|
105
|
-
};
|
|
106
126
|
}
|
|
107
127
|
export function buildFormGroup(klass, { fb = inject(FormBuilder).nonNullable, value, }) {
|
|
108
128
|
const schema = targetConstructorToSchema(klass);
|
|
109
|
-
return buildFormGroupByJsonSchema(schema, { fb, value });
|
|
129
|
+
return this.buildFormGroupByJsonSchema(schema, { fb, value });
|
|
110
130
|
}
|
|
111
131
|
export function buildFormFieldMap(klass, options) {
|
|
112
132
|
const schema = targetConstructorToSchema(klass);
|
|
113
|
-
const map = buildFormFieldMapByJsonSchema(schema, options);
|
|
133
|
+
const map = this.buildFormFieldMapByJsonSchema(schema, options);
|
|
114
134
|
return merge(map, options.merge);
|
|
115
135
|
}
|
|
116
136
|
export function buildForm(klass, { fb = inject(FormBuilder).nonNullable, value = {}, fieldMap = {}, } = {}) {
|
|
117
137
|
const schema = targetConstructorToSchema(klass);
|
|
118
138
|
return {
|
|
119
|
-
form: buildFormGroupByJsonSchema(schema, { fb, value }),
|
|
120
|
-
fieldMap: buildFormFieldMapByJsonSchema(schema, { merge: fieldMap }),
|
|
139
|
+
form: this.buildFormGroupByJsonSchema(schema, { fb, value }),
|
|
140
|
+
fieldMap: this.buildFormFieldMapByJsonSchema(schema, { merge: fieldMap }),
|
|
121
141
|
};
|
|
122
142
|
}
|
|
123
143
|
export class JsonSchemaFormService {
|
|
@@ -125,10 +145,10 @@ export class JsonSchemaFormService {
|
|
|
125
145
|
this.fb = inject(FormBuilder).nonNullable;
|
|
126
146
|
}
|
|
127
147
|
build(schema, { fb = this.fb, value = {}, } = {}) {
|
|
128
|
-
return buildFormGroupByJsonSchema(schema, { fb, value });
|
|
148
|
+
return JsonSchemaFormUtils.buildFormGroupByJsonSchema(schema, { fb, value });
|
|
129
149
|
}
|
|
130
150
|
buildFieldMap(schema, options = {}) {
|
|
131
|
-
return buildFormFieldMapByJsonSchema(schema, options);
|
|
151
|
+
return JsonSchemaFormUtils.buildFormFieldMapByJsonSchema(schema, options);
|
|
132
152
|
}
|
|
133
153
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: JsonSchemaFormService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
134
154
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: JsonSchemaFormService, providedIn: 'root' }); }
|
|
@@ -137,4 +157,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.2", ngImpor
|
|
|
137
157
|
type: Injectable,
|
|
138
158
|
args: [{ providedIn: 'root' }]
|
|
139
159
|
}] });
|
|
140
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNvbi1zY2hlbWEuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BuZy1hdG9taWMvY29tbW9uL3NyYy9saWIvc2VydmljZXMvZm9ybS9qc29uLXNjaGVtYS9qc29uLXNjaGVtYS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxXQUFXLEVBQXFDLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTVGLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxRCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sV0FBVyxDQUFDOztBQUVsQyxNQUFNLFVBQVUsMEJBQTBCLENBQUMsTUFBa0IsRUFBRSxFQUM3RCxFQUFFLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDLFdBQVcsRUFDcEMsS0FBSyxHQUFHLEVBQUUsTUFJUixFQUFFO0lBQ0osT0FBTyxDQUFDLEtBQUssQ0FBQyxzQ0FBc0MsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUM5RCxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsTUFBTSxFQUFFLFVBQVUsRUFBRSxDQUFDO1FBQ25DLE9BQU8sRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN0QixDQUFDO0lBQ0QsTUFBTSxLQUFLLEdBQVEsRUFBRSxDQUFDO0lBRXRCLEtBQUssTUFBTSxHQUFHLElBQUksTUFBTSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ3BDLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDeEMsTUFBTSxVQUFVLEdBQUcsRUFBRSxDQUFDO1FBRXRCLElBQUksTUFBTSxDQUFDLFFBQVEsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3JELFVBQVUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3ZDLENBQUM7UUFDRCxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsNkJBQTZCLENBQUMsUUFBUSxFQUFFLEVBQUMsRUFBRSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxVQUFVLEVBQUMsQ0FBQyxDQUFDO0lBQzlGLENBQUM7SUFDRCxPQUFPLEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDekIsQ0FBQztBQUVELE1BQU0sVUFBVSwwQkFBMEIsQ0FBQyxNQUFrQixFQUFFLEVBQzdELEVBQUUsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUMsV0FBVyxFQUNwQyxLQUFLLEdBQUcsRUFBRSxNQUlSLEVBQUU7SUFDSixJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQzdCLE9BQU8sRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN0QixDQUFDO0lBQ0QsT0FBTyxDQUFDLEtBQUssQ0FBQyxzQ0FBc0MsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUM5RCxNQUFNLEtBQUssR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDO1FBQ3JCLDBCQUEwQixDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQztLQUMvQyxDQUFDLENBQUE7SUFDRixPQUFPLEtBQUssQ0FBQztBQUNmLENBQUM7QUFFRCxNQUFNLFVBQVUsNkJBQTZCLENBQUMsUUFBb0IsRUFBRSxFQUNsRSxFQUFFLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDLFdBQVcsRUFDcEMsS0FBSyxHQUFHLElBQUksRUFDWixVQUFVLEdBQUcsRUFBRSxNQUtiLEVBQUU7SUFDSixJQUFJLFFBQVEsQ0FBQyxJQUFJLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDL0IsSUFBSSxRQUFRLENBQUMsTUFBTSxLQUFLLFdBQVcsRUFBRSxDQUFDO1lBQ3BDLE9BQU8sRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLElBQUksUUFBUSxDQUFDLE9BQU8sSUFBSSxJQUFJLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDbkUsQ0FBQzthQUFNLElBQUksUUFBUSxDQUFDLE1BQU0sS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUN4QyxPQUFPLEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxJQUFJLFFBQVEsQ0FBQyxPQUFPLElBQUksSUFBSSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQ25FLENBQUM7YUFBTSxDQUFDO1lBQ04sT0FBTyxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssSUFBSSxRQUFRLENBQUMsT0FBTyxJQUFJLEVBQUUsRUFBRSxVQUFVLENBQUMsQ0FBQztRQUNqRSxDQUFDO0lBQ0gsQ0FBQztTQUFNLElBQUksUUFBUSxDQUFDLElBQUksS0FBSyxTQUFTLEVBQUUsQ0FBQztRQUN2QyxPQUFPLEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxJQUFJLFFBQVEsQ0FBQyxPQUFPLElBQUksQ0FBQyxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBQ2hFLENBQUM7U0FBTSxJQUFJLFFBQVEsQ0FBQyxJQUFJLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDdEMsT0FBTyxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssSUFBSSxRQUFRLENBQUMsT0FBTyxJQUFJLENBQUMsRUFBRSxVQUFVLENBQUMsQ0FBQztJQUNoRSxDQUFDO1NBQU0sSUFBSSxRQUFRLENBQUMsSUFBSSxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQ3RDLE9BQU8sMEJBQTBCLENBQUMsUUFBUSxFQUFFLEVBQUMsRUFBRSxFQUFFLEtBQUssRUFBRSxDQUFDLEtBQUssSUFBSSxFQUFFLENBQVcsRUFBQyxDQUFDLENBQUM7SUFDcEYsQ0FBQztTQUNJLElBQUksUUFBUSxDQUFDLElBQUksS0FBSyxPQUFPLEVBQUUsQ0FBQztRQUNuQyxPQUFPLDBCQUEwQixDQUFDLFFBQVEsRUFBRSxFQUFDLEVBQUUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFVLEVBQUMsQ0FBQyxDQUFDO0lBQ25GLENBQUM7QUFDSCxDQUFDO0FBRUQsTUFBTSxVQUFVLDZCQUE2QixDQUMzQyxNQUFrQixFQUNsQixVQUVJLEVBQUU7SUFFTixJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ2xDLE9BQU87WUFDTCxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFO1NBQ3ZCLENBQUM7SUFDSixDQUFDO0lBQ0QsTUFBTSxRQUFRLEdBQVEsRUFBRSxDQUFDO0lBRXpCLEtBQUssTUFBTSxHQUFHLElBQUksTUFBTSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ3BDLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDeEMsSUFBSSxRQUFRLENBQUMsSUFBSSxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQy9CLElBQUksUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUNsQixRQUFRLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ3pHLENBQUM7aUJBQU0sSUFBSSxRQUFRLENBQUMsTUFBTSxLQUFLLFdBQVcsRUFBRSxDQUFDO2dCQUMzQyxRQUFRLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUM7WUFDbkMsQ0FBQztpQkFBTSxJQUFJLFFBQVEsQ0FBQyxNQUFNLEtBQUssUUFBUSxFQUFFLENBQUM7Z0JBQ3hDLFFBQVEsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBQztZQUNuQyxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sUUFBUSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDO1lBQ25DLENBQUM7UUFDSCxDQUFDO2FBQU0sSUFBSSxRQUFRLENBQUMsSUFBSSxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQ3RDLE1BQU0sYUFBYSxHQUFHLDZCQUE2QixDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQztZQUN2RSxLQUFLLE1BQU0sUUFBUSxJQUFJLGFBQWEsRUFBRSxDQUFDO2dCQUNyQyxRQUFRLENBQUMsR0FBRyxHQUFHLElBQUksUUFBUSxFQUFFLENBQUMsR0FBRyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDM0QsQ0FBQztRQUNILENBQUM7YUFBTSxJQUFJLFFBQVEsQ0FBQyxJQUFJLEtBQUssT0FBTyxFQUFFLENBQUM7WUFDckMsTUFBTSxhQUFhLEdBQUcsNkJBQTZCLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztZQUM3RSxLQUFLLE1BQU0sUUFBUSxJQUFJLGFBQWEsRUFBRSxDQUFDO2dCQUNyQywrQkFBK0I7Z0JBQy9CLFFBQVEsQ0FBQyxHQUFHLEdBQUcsU0FBUyxRQUFRLEVBQUUsQ0FBQyxHQUFHLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNoRSxDQUFDO1FBQ0gsQ0FBQzthQUFNLENBQUM7WUFDTixRQUFRLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzFDLENBQUM7UUFDRCwwQ0FBMEM7SUFDNUMsQ0FBQztJQUVELE9BQU8sQ0FBQyxLQUFLLENBQUMsMkNBQTJDLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFFckUsT0FBTyxLQUFLLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUN4QyxDQUFDO0FBRUQsTUFBTSxVQUFVLHFCQUFxQixDQUFDLE1BQWtCLEVBQUUsRUFDeEQsRUFBRSxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQyxXQUFXLEVBQ3BDLEtBQUssR0FBRyxFQUFFLEVBQ1YsUUFBUSxHQUFHLEVBQUUsTUFLWCxFQUFFO0lBQ0osT0FBTztRQUNMLElBQUksRUFBRSwwQkFBMEIsQ0FBQyxNQUFNLEVBQUUsRUFBQyxFQUFFLEVBQUUsS0FBSyxFQUFDLENBQUM7UUFDckQsUUFBUSxFQUFFLDZCQUE2QixDQUFDLE1BQU0sRUFBRSxFQUFDLEtBQUssRUFBRSxRQUFRLEVBQUMsQ0FBQztLQUNuRSxDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sVUFBVSxjQUFjLENBQUMsS0FBbUIsRUFBRSxFQUNsRCxFQUFFLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDLFdBQVcsRUFDcEMsS0FBSyxHQUlOO0lBQ0MsTUFBTSxNQUFNLEdBQUcseUJBQXlCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDaEQsT0FBTywwQkFBMEIsQ0FBQyxNQUFNLEVBQUUsRUFBQyxFQUFFLEVBQUUsS0FBSyxFQUFDLENBQUMsQ0FBQztBQUN6RCxDQUFDO0FBR0QsTUFBTSxVQUFVLGlCQUFpQixDQUFDLEtBQW1CLEVBQUUsT0FFdEQ7SUFDQyxNQUFNLE1BQU0sR0FBRyx5QkFBeUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNoRCxNQUFNLEdBQUcsR0FBRyw2QkFBNkIsQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDM0QsT0FBTyxLQUFLLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNuQyxDQUFDO0FBRUQsTUFBTSxVQUFVLFNBQVMsQ0FBQyxLQUFtQixFQUFFLEVBQzdDLEVBQUUsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUMsV0FBVyxFQUNwQyxLQUFLLEdBQUcsRUFBRSxFQUNWLFFBQVEsR0FBRyxFQUFFLE1BS1gsRUFBRTtJQUNKLE1BQU0sTUFBTSxHQUFHLHlCQUF5QixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2hELE9BQU87UUFDTCxJQUFJLEVBQUUsMEJBQTBCLENBQUMsTUFBTSxFQUFFLEVBQUMsRUFBRSxFQUFFLEtBQUssRUFBQyxDQUFDO1FBQ3JELFFBQVEsRUFBRSw2QkFBNkIsQ0FBQyxNQUFNLEVBQUUsRUFBQyxLQUFLLEVBQUUsUUFBUSxFQUFDLENBQUM7S0FDbkUsQ0FBQztBQUNKLENBQUM7QUFJRCxNQUFNLE9BQU8scUJBQXFCO0lBRGxDO1FBRVUsT0FBRSxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQyxXQUFXLENBQUM7S0FvQjlDO0lBbEJDLEtBQUssQ0FBQyxNQUFrQixFQUFFLEVBQ3hCLEVBQUUsR0FBRyxJQUFJLENBQUMsRUFBRSxFQUNaLEtBQUssR0FBRyxFQUFFLE1BSVIsRUFBRTtRQUNKLE9BQU8sMEJBQTBCLENBQUMsTUFBTSxFQUFFLEVBQUMsRUFBRSxFQUFFLEtBQUssRUFBQyxDQUFDLENBQUM7SUFDekQsQ0FBQztJQUVELGFBQWEsQ0FDWCxNQUFrQixFQUNsQixVQUVJLEVBQUU7UUFFTixPQUFPLDZCQUE2QixDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQztJQUN4RCxDQUFDOzhHQXBCVSxxQkFBcUI7a0hBQXJCLHFCQUFxQixjQURSLE1BQU07OzJGQUNuQixxQkFBcUI7a0JBRGpDLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgaW5qZWN0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBGb3JtR3JvdXAsIE5vbk51bGxhYmxlRm9ybUJ1aWxkZXIsIFZhbGlkYXRvcnMgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcbmltcG9ydCB7IEpzb25TY2hlbWEgfSBmcm9tIFwianNvbi1zY2hlbWEtbGlicmFyeVwiO1xuaW1wb3J0IHsgdGFyZ2V0Q29uc3RydWN0b3JUb1NjaGVtYSB9IGZyb20gJy4vanNvbi1zY2hlbWEnO1xuaW1wb3J0IHsgbWVyZ2UgfSBmcm9tIFwibG9kYXNoLWVzXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBidWlsZEZvcm1Hcm91cEJ5SnNvblNjaGVtYShzY2hlbWE6IEpzb25TY2hlbWEsIHtcbiAgZmIgPSBpbmplY3QoRm9ybUJ1aWxkZXIpLm5vbk51bGxhYmxlLFxuICB2YWx1ZSA9IHt9LFxufToge1xuICBmYj86IEZvcm1CdWlsZGVyIHwgTm9uTnVsbGFibGVGb3JtQnVpbGRlcixcbiAgdmFsdWU/OiBvYmplY3QsXG59ID0ge30pOiBGb3JtR3JvdXAge1xuICBjb25zb2xlLmRlYnVnKCdbYnVpbGRGb3JtR3JvdXBCeUpzb25TY2hlbWFdIHNjaGVtYTonLCBzY2hlbWEpO1xuICBpZiAoIXNjaGVtYSB8fCAhc2NoZW1hPy5wcm9wZXJ0aWVzKSB7XG4gICAgcmV0dXJuIGZiLmdyb3VwKHt9KTtcbiAgfVxuICBjb25zdCBncm91cDogYW55ID0ge307XG4gIFxuICBmb3IgKGNvbnN0IGtleSBpbiBzY2hlbWEucHJvcGVydGllcykge1xuICAgIGNvbnN0IHByb3BlcnR5ID0gc2NoZW1hLnByb3BlcnRpZXNba2V5XTtcbiAgICBjb25zdCB2YWxpZGF0b3JzID0gW107XG5cbiAgICBpZiAoc2NoZW1hLnJlcXVpcmVkICYmIHNjaGVtYS5yZXF1aXJlZC5pbmNsdWRlcyhrZXkpKSB7XG4gICAgICB2YWxpZGF0b3JzLnB1c2goVmFsaWRhdG9ycy5yZXF1aXJlZCk7XG4gICAgfVxuICAgIGdyb3VwW2tleV0gPSBidWlsZEZvcm1CeUpzb25TY2hlbWFQcm9wZXJ0eShwcm9wZXJ0eSwge2ZiLCB2YWx1ZTogdmFsdWU/LltrZXldLCB2YWxpZGF0b3JzfSk7XG4gIH1cbiAgcmV0dXJuIGZiLmdyb3VwKGdyb3VwKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkRm9ybUFycmF5QnlKc29uU2NoZW1hKHNjaGVtYTogSnNvblNjaGVtYSwge1xuICBmYiA9IGluamVjdChGb3JtQnVpbGRlcikubm9uTnVsbGFibGUsXG4gIHZhbHVlID0gW10sXG59OiB7XG4gIGZiPzogRm9ybUJ1aWxkZXIgfCBOb25OdWxsYWJsZUZvcm1CdWlsZGVyLFxuICB2YWx1ZT86IGFueVtdLFxufSA9IHt9KTogYW55IHtcbiAgaWYgKCFzY2hlbWEgfHwgIXNjaGVtYS5pdGVtcykge1xuICAgIHJldHVybiBmYi5hcnJheShbXSk7XG4gIH1cbiAgY29uc29sZS5kZWJ1ZygnW2J1aWxkRm9ybUFycmF5QnlKc29uU2NoZW1hXSBzY2hlbWE6Jywgc2NoZW1hKTtcbiAgY29uc3QgYXJyYXkgPSBmYi5hcnJheShbXG4gICAgYnVpbGRGb3JtR3JvdXBCeUpzb25TY2hlbWEoc2NoZW1hLml0ZW1zLCB7ZmJ9KSxcbiAgXSlcbiAgcmV0dXJuIGFycmF5O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRGb3JtQnlKc29uU2NoZW1hUHJvcGVydHkocHJvcGVydHk6IEpzb25TY2hlbWEsIHtcbiAgZmIgPSBpbmplY3QoRm9ybUJ1aWxkZXIpLm5vbk51bGxhYmxlLFxuICB2YWx1ZSA9IG51bGwsXG4gIHZhbGlkYXRvcnMgPSBbXSxcbn06IHtcbiAgZmI/OiBGb3JtQnVpbGRlciB8IE5vbk51bGxhYmxlRm9ybUJ1aWxkZXIsXG4gIHZhbHVlPzogb2JqZWN0IHwgb2JqZWN0W10sXG4gIHZhbGlkYXRvcnM/OiBhbnlbXSxcbn0gPSB7fSk6IGFueSB7XG4gIGlmIChwcm9wZXJ0eS50eXBlID09PSAnc3RyaW5nJykge1xuICAgIGlmIChwcm9wZXJ0eS5mb3JtYXQgPT09ICdkYXRlLXRpbWUnKSB7XG4gICAgICByZXR1cm4gZmIuY29udHJvbCh2YWx1ZSA/PyBwcm9wZXJ0eS5kZWZhdWx0ID8/IG51bGwsIHZhbGlkYXRvcnMpO1xuICAgIH0gZWxzZSBpZiAocHJvcGVydHkuZm9ybWF0ID09PSAnYmluYXJ5Jykge1xuICAgICAgcmV0dXJuIGZiLmNvbnRyb2wodmFsdWUgPz8gcHJvcGVydHkuZGVmYXVsdCA/PyBudWxsLCB2YWxpZGF0b3JzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGZiLmNvbnRyb2wodmFsdWUgPz8gcHJvcGVydHkuZGVmYXVsdCA/PyAnJywgdmFsaWRhdG9ycyk7XG4gICAgfVxuICB9IGVsc2UgaWYgKHByb3BlcnR5LnR5cGUgPT09ICdpbnRlZ2VyJykge1xuICAgIHJldHVybiBmYi5jb250cm9sKHZhbHVlID8/IHByb3BlcnR5LmRlZmF1bHQgPz8gMCwgdmFsaWRhdG9ycyk7XG4gIH0gZWxzZSBpZiAocHJvcGVydHkudHlwZSA9PT0gJ251bWJlcicpIHtcbiAgICByZXR1cm4gZmIuY29udHJvbCh2YWx1ZSA/PyBwcm9wZXJ0eS5kZWZhdWx0ID8/IDAsIHZhbGlkYXRvcnMpO1xuICB9IGVsc2UgaWYgKHByb3BlcnR5LnR5cGUgPT09ICdvYmplY3QnKSB7XG4gICAgcmV0dXJuIGJ1aWxkRm9ybUdyb3VwQnlKc29uU2NoZW1hKHByb3BlcnR5LCB7ZmIsIHZhbHVlOiAodmFsdWUgfHwge30pIGFzIG9iamVjdH0pO1xuICB9XG4gIGVsc2UgaWYgKHByb3BlcnR5LnR5cGUgPT09ICdhcnJheScpIHtcbiAgICByZXR1cm4gYnVpbGRGb3JtQXJyYXlCeUpzb25TY2hlbWEocHJvcGVydHksIHtmYiwgdmFsdWU6ICh2YWx1ZSB8fCBbXSkgYXMgYW55W119KTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRGb3JtRmllbGRNYXBCeUpzb25TY2hlbWEoXG4gIHNjaGVtYTogSnNvblNjaGVtYSxcbiAgb3B0aW9uczoge1xuICAgIG1lcmdlPzogeyBba2V5OiBzdHJpbmddOiBhbnkgfSxcbiAgfSA9IHt9LFxuKTogYW55IHtcbiAgaWYgKCFzY2hlbWEgfHwgIXNjaGVtYS5wcm9wZXJ0aWVzKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGlkOiB7IHR5cGU6ICdoaWRkZW4nIH0sXG4gICAgfTtcbiAgfVxuICBjb25zdCBmaWVsZE1hcDogYW55ID0ge307XG4gIFxuICBmb3IgKGNvbnN0IGtleSBpbiBzY2hlbWEucHJvcGVydGllcykge1xuICAgIGNvbnN0IHByb3BlcnR5ID0gc2NoZW1hLnByb3BlcnRpZXNba2V5XTtcbiAgICBpZiAocHJvcGVydHkudHlwZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGlmIChwcm9wZXJ0eS5lbnVtKSB7XG4gICAgICAgIGZpZWxkTWFwW2tleV0gPSB7IHR5cGU6ICdzZWxlY3QnLCBvcHRpb25zOiBwcm9wZXJ0eS5lbnVtLm1hcCgodjogc3RyaW5nKSA9PiAoeyB2YWx1ZTogdiwgbmFtZTogdiB9KSkgfTtcbiAgICAgIH0gZWxzZSBpZiAocHJvcGVydHkuZm9ybWF0ID09PSAnZGF0ZS10aW1lJykge1xuICAgICAgICBmaWVsZE1hcFtrZXldID0geyB0eXBlOiAnZGF0ZScgfTtcbiAgICAgIH0gZWxzZSBpZiAocHJvcGVydHkuZm9ybWF0ID09PSAnYmluYXJ5Jykge1xuICAgICAgICBmaWVsZE1hcFtrZXldID0geyB0eXBlOiAnZmlsZScgfTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGZpZWxkTWFwW2tleV0gPSB7IHR5cGU6ICd0ZXh0JyB9O1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAocHJvcGVydHkudHlwZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgIGNvbnN0IGNoaWxkRmllbGRNYXAgPSBidWlsZEZvcm1GaWVsZE1hcEJ5SnNvblNjaGVtYShwcm9wZXJ0eSwgb3B0aW9ucyk7XG4gICAgICBmb3IgKGNvbnN0IGNoaWxkS2V5IGluIGNoaWxkRmllbGRNYXApIHtcbiAgICAgICAgZmllbGRNYXBbYCR7a2V5fS4ke2NoaWxkS2V5fWBdID0gY2hpbGRGaWVsZE1hcFtjaGlsZEtleV07XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChwcm9wZXJ0eS50eXBlID09PSAnYXJyYXknKSB7XG4gICAgICBjb25zdCBjaGlsZEZpZWxkTWFwID0gYnVpbGRGb3JtRmllbGRNYXBCeUpzb25TY2hlbWEocHJvcGVydHkuaXRlbXMsIG9wdGlvbnMpO1xuICAgICAgZm9yIChjb25zdCBjaGlsZEtleSBpbiBjaGlsZEZpZWxkTWFwKSB7XG4gICAgICAgIC8vIFRPRE86IOato+imj+ihqOePvuOBp+ODkeOCueODnuODg+ODgeOCkuWIpOWumuOBp+OBjeOCi+OCiOOBhuOBq+OBmeOCi+OAglxuICAgICAgICBmaWVsZE1hcFtgJHtrZXl9LlxcXFxkKy4ke2NoaWxkS2V5fWBdID0gY2hpbGRGaWVsZE1hcFtjaGlsZEtleV07XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGZpZWxkTWFwW2tleV0gPSB7IHR5cGU6IHByb3BlcnR5LnR5cGUgfTtcbiAgICB9XG4gICAgLy8gY29uc3QgdHlwZSA9ICA/ICdkYXRlJyA6IHByb3BlcnR5LnR5cGU7XG4gIH1cblxuICBjb25zb2xlLmRlYnVnKCdbYnVpbGRGb3JtRmllbGRNYXBCeUpzb25TY2hlbWFdIGZpZWxkTWFwOicsIGZpZWxkTWFwKTtcblxuICByZXR1cm4gbWVyZ2UoZmllbGRNYXAsIG9wdGlvbnMubWVyZ2UpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRGb3JtQnlKc29uU2NoZW1hKHNjaGVtYTogSnNvblNjaGVtYSwge1xuICBmYiA9IGluamVjdChGb3JtQnVpbGRlcikubm9uTnVsbGFibGUsXG4gIHZhbHVlID0ge30sXG4gIGZpZWxkTWFwID0ge30sXG59OiB7XG4gIGZiPzogRm9ybUJ1aWxkZXIgfCBOb25OdWxsYWJsZUZvcm1CdWlsZGVyLFxuICB2YWx1ZT86IG9iamVjdCxcbiAgZmllbGRNYXA/OiBvYmplY3QsXG59ID0ge30pOiBhbnkge1xuICByZXR1cm4ge1xuICAgIGZvcm06IGJ1aWxkRm9ybUdyb3VwQnlKc29uU2NoZW1hKHNjaGVtYSwge2ZiLCB2YWx1ZX0pLFxuICAgIGZpZWxkTWFwOiBidWlsZEZvcm1GaWVsZE1hcEJ5SnNvblNjaGVtYShzY2hlbWEsIHttZXJnZTogZmllbGRNYXB9KSxcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkRm9ybUdyb3VwKGtsYXNzOiBuZXcoKSA9PiBhbnksIHtcbiAgZmIgPSBpbmplY3QoRm9ybUJ1aWxkZXIpLm5vbk51bGxhYmxlLFxuICB2YWx1ZSxcbn06IHtcbiAgZmI/OiBGb3JtQnVpbGRlciB8IE5vbk51bGxhYmxlRm9ybUJ1aWxkZXIsXG4gIHZhbHVlPzogb2JqZWN0LFxufSk6IEZvcm1Hcm91cCB7XG4gIGNvbnN0IHNjaGVtYSA9IHRhcmdldENvbnN0cnVjdG9yVG9TY2hlbWEoa2xhc3MpO1xuICByZXR1cm4gYnVpbGRGb3JtR3JvdXBCeUpzb25TY2hlbWEoc2NoZW1hLCB7ZmIsIHZhbHVlfSk7XG59XG5cblxuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkRm9ybUZpZWxkTWFwKGtsYXNzOiBuZXcoKSA9PiBhbnksIG9wdGlvbnM6IHtcbiAgbWVyZ2U/OiB7IFtrZXk6IHN0cmluZ106IGFueSB9LFxufSk6IGFueSB7XG4gIGNvbnN0IHNjaGVtYSA9IHRhcmdldENvbnN0cnVjdG9yVG9TY2hlbWEoa2xhc3MpO1xuICBjb25zdCBtYXAgPSBidWlsZEZvcm1GaWVsZE1hcEJ5SnNvblNjaGVtYShzY2hlbWEsIG9wdGlvbnMpO1xuICByZXR1cm4gbWVyZ2UobWFwLCBvcHRpb25zLm1lcmdlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkRm9ybShrbGFzczogbmV3KCkgPT4gYW55LCB7XG4gIGZiID0gaW5qZWN0KEZvcm1CdWlsZGVyKS5ub25OdWxsYWJsZSxcbiAgdmFsdWUgPSB7fSxcbiAgZmllbGRNYXAgPSB7fSxcbn06IHtcbiAgZmI/OiBGb3JtQnVpbGRlciB8IE5vbk51bGxhYmxlRm9ybUJ1aWxkZXIsXG4gIHZhbHVlPzogb2JqZWN0LFxuICBmaWVsZE1hcD86IG9iamVjdCxcbn0gPSB7fSk6IGFueSB7XG4gIGNvbnN0IHNjaGVtYSA9IHRhcmdldENvbnN0cnVjdG9yVG9TY2hlbWEoa2xhc3MpO1xuICByZXR1cm4ge1xuICAgIGZvcm06IGJ1aWxkRm9ybUdyb3VwQnlKc29uU2NoZW1hKHNjaGVtYSwge2ZiLCB2YWx1ZX0pLFxuICAgIGZpZWxkTWFwOiBidWlsZEZvcm1GaWVsZE1hcEJ5SnNvblNjaGVtYShzY2hlbWEsIHttZXJnZTogZmllbGRNYXB9KSxcbiAgfTtcbn1cblxuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIEpzb25TY2hlbWFGb3JtU2VydmljZSB7XG4gIHByaXZhdGUgZmIgPSBpbmplY3QoRm9ybUJ1aWxkZXIpLm5vbk51bGxhYmxlO1xuXG4gIGJ1aWxkKHNjaGVtYTogSnNvblNjaGVtYSwge1xuICAgIGZiID0gdGhpcy5mYixcbiAgICB2YWx1ZSA9IHt9LFxuICB9OiB7XG4gICAgZmI/OiBGb3JtQnVpbGRlciB8IE5vbk51bGxhYmxlRm9ybUJ1aWxkZXIsXG4gICAgdmFsdWU/OiBvYmplY3QsXG4gIH0gPSB7fSk6IEZvcm1Hcm91cCB7XG4gICAgcmV0dXJuIGJ1aWxkRm9ybUdyb3VwQnlKc29uU2NoZW1hKHNjaGVtYSwge2ZiLCB2YWx1ZX0pO1xuICB9XG5cbiAgYnVpbGRGaWVsZE1hcChcbiAgICBzY2hlbWE6IEpzb25TY2hlbWEsXG4gICAgb3B0aW9uczoge1xuICAgICAgbWVyZ2U/OiB7IFtrZXk6IHN0cmluZ106IGFueSB9LFxuICAgIH0gPSB7fSxcbiAgKTogYW55IHtcbiAgICByZXR1cm4gYnVpbGRGb3JtRmllbGRNYXBCeUpzb25TY2hlbWEoc2NoZW1hLCBvcHRpb25zKTtcbiAgfVxufVxuIl19
|
|
160
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNvbi1zY2hlbWEuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BuZy1hdG9taWMvY29tbW9uL3NyYy9saWIvc2VydmljZXMvZm9ybS9qc29uLXNjaGVtYS9qc29uLXNjaGVtYS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxXQUFXLEVBQXFDLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTVGLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxRCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sV0FBVyxDQUFDOztBQUVsQyxNQUFNLE9BQU8sbUJBQW1CO0lBQzlCLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBbUIsS0FBUTtRQUNuRCxPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUU7WUFDeEQsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksS0FBSyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxLQUFLLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQzlFLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2hDLENBQUM7aUJBQU0sSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksS0FBSyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUM5RCxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMs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R0FBRyxFQUFFLEVBQ1YsUUFBUSxHQUFHLEVBQUUsTUFLWCxFQUFFO0lBQ0osTUFBTSxNQUFNLEdBQUcseUJBQXlCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDaEQsT0FBTztRQUNMLElBQUksRUFBRSxJQUFJLENBQUMsMEJBQTBCLENBQUMsTUFBTSxFQUFFLEVBQUMsRUFBRSxFQUFFLEtBQUssRUFBQyxDQUFDO1FBQzFELFFBQVEsRUFBRSxJQUFJLENBQUMsNkJBQTZCLENBQUMsTUFBTSxFQUFFLEVBQUMsS0FBSyxFQUFFLFFBQVEsRUFBQyxDQUFDO0tBQ3hFLENBQUM7QUFDSixDQUFDO0FBSUQsTUFBTSxPQUFPLHFCQUFxQjtJQURsQztRQUVVLE9BQUUsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUMsV0FBVyxDQUFDO0tBb0I5QztJQWxCQyxLQUFLLENBQUMsTUFBa0IsRUFBRSxFQUN4QixFQUFFLEdBQUcsSUFBSSxDQUFDLEVBQUUsRUFDWixLQUFLLEdBQUcsRUFBRSxNQUlSLEVBQUU7UUFDSixPQUFPLG1CQUFtQixDQUFDLDBCQUEwQixDQUFDLE1BQU0sRUFBRSxFQUFDLEVBQUUsRUFBRSxLQUFLLEVBQUMsQ0FBQyxDQUFDO0lBQzdFLENBQUM7SUFFRCxhQUFhLENBQ1gsTUFBa0IsRUFDbEIsVUFFSSxFQUFFO1FBRU4sT0FBTyxtQkFBbUIsQ0FBQyw2QkFBNkIsQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDNUUsQ0FBQzs4R0FwQlUscUJBQXFCO2tIQUFyQixxQkFBcUIsY0FEUixNQUFNOzsyRkFDbkIscUJBQXFCO2tCQURqQyxVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIGluamVjdCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgRm9ybUdyb3VwLCBOb25OdWxsYWJsZUZvcm1CdWlsZGVyLCBWYWxpZGF0b3JzIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XG5pbXBvcnQgeyBKc29uU2NoZW1hIH0gZnJvbSBcImpzb24tc2NoZW1hLWxpYnJhcnlcIjtcbmltcG9ydCB7IHRhcmdldENvbnN0cnVjdG9yVG9TY2hlbWEgfSBmcm9tICcuL2pzb24tc2NoZW1hJztcbmltcG9ydCB7IG1lcmdlIH0gZnJvbSBcImxvZGFzaC1lc1wiO1xuXG5leHBvcnQgY2xhc3MgSnNvblNjaGVtYUZvcm1VdGlscyB7XG4gIHN0YXRpYyByZW1vdmVPYmplY3RQZXJjZW50PFQgZXh0ZW5kcyBvYmplY3Q+KHZhbHVlOiBUKTogYW55IHtcbiAgICByZXR1cm4gT2JqZWN0LmVudHJpZXModmFsdWUpLnJlZHVjZSgoYWNjLCBba2V5LCB2YWx1ZV0pID0+IHtcbiAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnICYmIHZhbHVlLnN0YXJ0c1dpdGgoJyUnKSAmJiB2YWx1ZS5lbmRzV2l0aCgnJScpKSB7XG4gICAgICAgIGFjY1trZXldID0gdmFsdWUuc2xpY2UoMSwgLTEpO1xuICAgICAgfSBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnICYmIHZhbHVlLnN0YXJ0c1dpdGgoJyUnKSkge1xuICAgICAgICBhY2Nba2V5XSA9IHZhbHVlLnNsaWNlKDEpO1xuICAgICAgfSBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnICYmIHZhbHVlLmVuZHNXaXRoKCclJykpIHtcbiAgICAgICAgYWNjW2tleV0gPSB2YWx1ZS5zbGljZSgwLCAtMSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhY2Nba2V5XSA9IHZhbHVlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGFjYztcbiAgICB9LCB7fSk7XG4gIH1cblxuICBzdGF0aWMgYnVpbGRGb3JtR3JvdXBCeUpzb25TY2hlbWEoc2NoZW1hOiBKc29uU2NoZW1hLCB7XG4gICAgZmIgPSBpbmplY3QoRm9ybUJ1aWxkZXIpLm5vbk51bGxhYmxlLFxuICAgIHZhbHVlID0ge30sXG4gIH06IHtcbiAgICBmYj86IEZvcm1CdWlsZGVyIHwgTm9uTnVsbGFibGVGb3JtQnVpbGRlcixcbiAgICB2YWx1ZT86IG9iamVjdCxcbiAgfSA9IHt9KTogRm9ybUdyb3VwIHtcbiAgICBjb25zb2xlLmRlYnVnKCdbYnVpbGRGb3JtR3JvdXBCeUpzb25TY2hlbWFdIHNjaGVtYTonLCBzY2hlbWEpO1xuICAgIGlmICghc2NoZW1hIHx8ICFzY2hlbWE/LnByb3BlcnRpZXMpIHtcbiAgICAgIHJldHVybiBmYi5ncm91cCh7fSk7XG4gICAgfVxuICAgIGNvbnN0IGdyb3VwOiBhbnkgPSB7fTtcbiAgICBcbiAgICBmb3IgKGNvbnN0IGtleSBpbiBzY2hlbWEucHJvcGVydGllcykge1xuICAgICAgY29uc3QgcHJvcGVydHkgPSBzY2hlbWEucHJvcGVydGllc1trZXldO1xuICAgICAgY29uc3QgdmFsaWRhdG9ycyA9IFtdO1xuICBcbiAgICAgIGlmIChzY2hlbWEucmVxdWlyZWQgJiYgc2NoZW1hLnJlcXVpcmVkLmluY2x1ZGVzKGtleSkpIHtcbiAgICAgICAgdmFsaWRhdG9ycy5wdXNoKFZhbGlkYXRvcnMucmVxdWlyZWQpO1xuICAgICAgfVxuICAgICAgZ3JvdXBba2V5XSA9IHRoaXMuYnVpbGRGb3JtQnlKc29uU2NoZW1hUHJvcGVydHkocHJvcGVydHksIHtmYiwgdmFsdWU6IHZhbHVlPy5ba2V5XSwgdmFsaWRhdG9yc30pO1xuICAgIH1cbiAgICByZXR1cm4gZmIuZ3JvdXAoZ3JvdXApO1xuICB9XG4gIFxuICBzdGF0aWMgYnVpbGRGb3JtQXJyYXlCeUpzb25TY2hlbWEoc2NoZW1hOiBKc29uU2NoZW1hLCB7XG4gICAgZmIgPSBpbmplY3QoRm9ybUJ1aWxkZXIpLm5vbk51bGxhYmxlLFxuICAgIHZhbHVlID0gW10sXG4gIH06IHtcbiAgICBmYj86IEZvcm1CdWlsZGVyIHwgTm9uTnVsbGFibGVGb3JtQnVpbGRlcixcbiAgICB2YWx1ZT86IGFueVtdLFxuICB9ID0ge30pOiBhbnkge1xuICAgIGlmICghc2NoZW1hIHx8ICFzY2hlbWEuaXRlbXMpIHtcbiAgICAgIHJldHVybiBmYi5hcnJheShbXSk7XG4gICAgfVxuICAgIGNvbnNvbGUuZGVidWcoJ1tidWlsZEZvcm1BcnJheUJ5SnNvblNjaGVtYV0gc2NoZW1hOicsIHNjaGVtYSk7XG4gICAgY29uc3QgYXJyYXkgPSBmYi5hcnJheShbXG4gICAgICB0aGlzLmJ1aWxkRm9ybUdyb3VwQnlKc29uU2NoZW1hKHNjaGVtYS5pdGVtcywge2ZifSksXG4gICAgXSlcbiAgICByZXR1cm4gYXJyYXk7XG4gIH1cbiAgXG4gIHN0YXRpYyBidWlsZEZvcm1CeUpzb25TY2hlbWFQcm9wZXJ0eShwcm9wZXJ0eTogSnNvblNjaGVtYSwge1xuICAgIGZiID0gaW5qZWN0KEZvcm1CdWlsZGVyKS5ub25OdWxsYWJsZSxcbiAgICB2YWx1ZSA9IG51bGwsXG4gICAgdmFsaWRhdG9ycyA9IFtdLFxuICB9OiB7XG4gICAgZmI/OiBGb3JtQnVpbGRlciB8IE5vbk51bGxhYmxlRm9ybUJ1aWxkZXIsXG4gICAgdmFsdWU/OiBvYmplY3QgfCBvYmplY3RbXSxcbiAgICB2YWxpZGF0b3JzPzogYW55W10sXG4gIH0gPSB7fSk6IGFueSB7XG4gICAgaWYgKHByb3BlcnR5LnR5cGUgPT09ICdzdHJpbmcnKSB7XG4gICAgICBpZiAocHJvcGVydHkuZm9ybWF0ID09PSAnZGF0ZS10aW1lJykge1xuICAgICAgICByZXR1cm4gZmIuY29udHJvbCh2YWx1ZSA/PyBwcm9wZXJ0eS5kZWZhdWx0ID8/IG51bGwsIHZhbGlkYXRvcnMpO1xuICAgICAgfSBlbHNlIGlmIChwcm9wZXJ0eS5mb3JtYXQgPT09ICdiaW5hcnknKSB7XG4gICAgICAgIHJldHVybiBmYi5jb250cm9sKHZhbHVlID8/IHByb3BlcnR5LmRlZmF1bHQgPz8gbnVsbCwgdmFsaWRhdG9ycyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gZmIuY29udHJvbCh2YWx1ZSA/PyBwcm9wZXJ0eS5kZWZhdWx0ID8/ICcnLCB2YWxpZGF0b3JzKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHByb3BlcnR5LnR5cGUgPT09ICdpbnRlZ2VyJykge1xuICAgICAgcmV0dXJuIGZiLmNvbnRyb2wodmFsdWUgPz8gcHJvcGVydHkuZGVmYXVsdCA/PyAwLCB2YWxpZGF0b3JzKTtcbiAgICB9IGVsc2UgaWYgKHByb3BlcnR5LnR5cGUgPT09ICdudW1iZXInKSB7XG4gICAgICByZXR1cm4gZmIuY29udHJvbCh2YWx1ZSA/PyBwcm9wZXJ0eS5kZWZhdWx0ID8/IDAsIHZhbGlkYXRvcnMpO1xuICAgIH0gZWxzZSBpZiAocHJvcGVydHkudHlwZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgIHJldHVybiB0aGlzLmJ1aWxkRm9ybUdyb3VwQnlKc29uU2NoZW1hKHByb3BlcnR5LCB7ZmIsIHZhbHVlOiAodmFsdWUgfHwge30pIGFzIG9iamVjdH0pO1xuICAgIH1cbiAgICBlbHNlIGlmIChwcm9wZXJ0eS50eXBlID09PSAnYXJyYXknKSB7XG4gICAgICByZXR1cm4gdGhpcy5idWlsZEZvcm1BcnJheUJ5SnNvblNjaGVtYShwcm9wZXJ0eSwge2ZiLCB2YWx1ZTogKHZhbHVlIHx8IFtdKSBhcyBhbnlbXX0pO1xuICAgIH1cbiAgfVxuICBcblxuICBzdGF0aWMgYnVpbGRGb3JtQnlKc29uU2NoZW1hKHNjaGVtYTogSnNvblNjaGVtYSwge1xuICAgIGZiID0gaW5qZWN0KEZvcm1CdWlsZGVyKS5ub25OdWxsYWJsZSxcbiAgICB2YWx1ZSA9IHt9LFxuICAgIGZpZWxkTWFwID0ge30sXG4gIH06IHtcbiAgICBmYj86IEZvcm1CdWlsZGVyIHwgTm9uTnVsbGFibGVGb3JtQnVpbGRlcixcbiAgICB2YWx1ZT86IG9iamVjdCxcbiAgICBmaWVsZE1hcD86IG9iamVjdCxcbiAgfSA9IHt9KTogYW55IHtcbiAgICByZXR1cm4ge1xuICAgICAgZm9ybTogdGhpcy5idWlsZEZvcm1Hcm91cEJ5SnNvblNjaGVtYShzY2hlbWEsIHtmYiwgdmFsdWV9KSxcbiAgICAgIGZpZWxkTWFwOiB0aGlzLmJ1aWxkRm9ybUZpZWxkTWFwQnlKc29uU2NoZW1hKHNjaGVtYSwge21lcmdlOiBmaWVsZE1hcH0pLFxuICAgIH07XG4gIH1cblxuICBzdGF0aWMgYnVpbGRGb3JtRmllbGRNYXBCeUpzb25TY2hlbWEoXG4gICAgc2NoZW1hOiBKc29uU2NoZW1hLFxuICAgIG9wdGlvbnM6IHtcbiAgICAgIG1lcmdlPzogeyBba2V5OiBzdHJpbmddOiBhbnkgfSxcbiAgICB9ID0ge30sXG4gICk6IGFueSB7XG4gICAgaWYgKCFzY2hlbWEgfHwgIXNjaGVtYS5wcm9wZXJ0aWVzKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBpZDogeyB0eXBlOiAnaGlkZGVuJyB9LFxuICAgICAgfTtcbiAgICB9XG4gICAgY29uc3QgZmllbGRNYXA6IGFueSA9IHt9O1xuICAgIFxuICAgIGZvciAoY29uc3Qga2V5IGluIHNjaGVtYS5wcm9wZXJ0aWVzKSB7XG4gICAgICBjb25zdCBwcm9wZXJ0eSA9IHNjaGVtYS5wcm9wZXJ0aWVzW2tleV07XG4gICAgICBpZiAocHJvcGVydHkudHlwZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgaWYgKHByb3BlcnR5LmVudW0pIHtcbiAgICAgICAgICBmaWVsZE1hcFtrZXldID0geyB0eXBlOiAnc2VsZWN0Jywgb3B0aW9uczogcHJvcGVydHkuZW51bS5tYXAoKHY6IHN0cmluZykgPT4gKHsgdmFsdWU6IHYsIG5hbWU6IHYgfSkpIH07XG4gICAgICAgIH0gZWxzZSBpZiAocHJvcGVydHkuZm9ybWF0ID09PSAnZGF0ZS10aW1lJykge1xuICAgICAgICAgIGZpZWxkTWFwW2tleV0gPSB7IHR5cGU6ICdkYXRlJyB9O1xuICAgICAgICB9IGVsc2UgaWYgKHByb3BlcnR5LmZvcm1hdCA9PT0gJ2JpbmFyeScpIHtcbiAgICAgICAgICBmaWVsZE1hcFtrZXldID0geyB0eXBlOiAnZmlsZScgfTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBmaWVsZE1hcFtrZXldID0geyB0eXBlOiAndGV4dCcgfTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChwcm9wZXJ0eS50eXBlID09PSAnb2JqZWN0Jykge1xuICAgICAgICBjb25zdCBjaGlsZEZpZWxkTWFwID0gdGhpcy5idWlsZEZvcm1GaWVsZE1hcEJ5SnNvblNjaGVtYShwcm9wZXJ0eSwgb3B0aW9ucyk7XG4gICAgICAgIGZvciAoY29uc3QgY2hpbGRLZXkgaW4gY2hpbGRGaWVsZE1hcCkge1xuICAgICAgICAgIGZpZWxkTWFwW2Ake2tleX0uJHtjaGlsZEtleX1gXSA9IGNoaWxkRmllbGRNYXBbY2hpbGRLZXldO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKHByb3BlcnR5LnR5cGUgPT09ICdhcnJheScpIHtcbiAgICAgICAgY29uc3QgY2hpbGRGaWVsZE1hcCA9IHRoaXMuYnVpbGRGb3JtRmllbGRNYXBCeUpzb25TY2hlbWEocHJvcGVydHkuaXRlbXMsIG9wdGlvbnMpO1xuICAgICAgICBmb3IgKGNvbnN0IGNoaWxkS2V5IGluIGNoaWxkRmllbGRNYXApIHtcbiAgICAgICAgICAvLyBUT0RPOiDmraPopo/ooajnj77jgafjg5Hjgrnjg57jg4Pjg4HjgpLliKTlrprjgafjgY3jgovjgojjgYbjgavjgZnjgovjgIJcbiAgICAgICAgICBmaWVsZE1hcFtgJHtrZXl9LlxcXFxkKy4ke2NoaWxkS2V5fWBdID0gY2hpbGRGaWVsZE1hcFtjaGlsZEtleV07XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGZpZWxkTWFwW2tleV0gPSB7IHR5cGU6IHByb3BlcnR5LnR5cGUgfTtcbiAgICAgIH1cbiAgICAgIC8vIGNvbnN0IHR5cGUgPSAgPyAnZGF0ZScgOiBwcm9wZXJ0eS50eXBlO1xuICAgIH1cbiAgXG4gICAgY29uc29sZS5kZWJ1ZygnW2J1aWxkRm9ybUZpZWxkTWFwQnlKc29uU2NoZW1hXSBmaWVsZE1hcDonLCBmaWVsZE1hcCk7XG4gICAgY29uc29sZS5kZWJ1ZygnW2J1aWxkRm9ybUZpZWxkTWFwQnlKc29uU2NoZW1hXSBvcHRpb25zLm1lcmdlOicsIG9wdGlvbnMubWVyZ2UpO1xuICBcbiAgICByZXR1cm4gey4uLmZpZWxkTWFwLCAuLi5vcHRpb25zLm1lcmdlfTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRGb3JtR3JvdXAoa2xhc3M6IG5ldygpID0+IGFueSwge1xuICBmYiA9IGluamVjdChGb3JtQnVpbGRlcikubm9uTnVsbGFibGUsXG4gIHZhbHVlLFxufToge1xuICBmYj86IEZvcm1CdWlsZGVyIHwgTm9uTnVsbGFibGVGb3JtQnVpbGRlcixcbiAgdmFsdWU/OiBvYmplY3QsXG59KTogRm9ybUdyb3VwIHtcbiAgY29uc3Qgc2NoZW1hID0gdGFyZ2V0Q29uc3RydWN0b3JUb1NjaGVtYShrbGFzcyk7XG4gIHJldHVybiB0aGlzLmJ1aWxkRm9ybUdyb3VwQnlKc29uU2NoZW1hKHNjaGVtYSwge2ZiLCB2YWx1ZX0pO1xufVxuXG5cbmV4cG9ydCBmdW5jdGlvbiBidWlsZEZvcm1GaWVsZE1hcChrbGFzczogbmV3KCkgPT4gYW55LCBvcHRpb25zOiB7XG4gIG1lcmdlPzogeyBba2V5OiBzdHJpbmddOiBhbnkgfSxcbn0pOiBhbnkge1xuICBjb25zdCBzY2hlbWEgPSB0YXJnZXRDb25zdHJ1Y3RvclRvU2NoZW1hKGtsYXNzKTtcbiAgY29uc3QgbWFwID0gdGhpcy5idWlsZEZvcm1GaWVsZE1hcEJ5SnNvblNjaGVtYShzY2hlbWEsIG9wdGlvbnMpO1xuICByZXR1cm4gbWVyZ2UobWFwLCBvcHRpb25zLm1lcmdlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkRm9ybShrbGFzczogbmV3KCkgPT4gYW55LCB7XG4gIGZiID0gaW5qZWN0KEZvcm1CdWlsZGVyKS5ub25OdWxsYWJsZSxcbiAgdmFsdWUgPSB7fSxcbiAgZmllbGRNYXAgPSB7fSxcbn06IHtcbiAgZmI/OiBGb3JtQnVpbGRlciB8IE5vbk51bGxhYmxlRm9ybUJ1aWxkZXIsXG4gIHZhbHVlPzogb2JqZWN0LFxuICBmaWVsZE1hcD86IG9iamVjdCxcbn0gPSB7fSk6IGFueSB7XG4gIGNvbnN0IHNjaGVtYSA9IHRhcmdldENvbnN0cnVjdG9yVG9TY2hlbWEoa2xhc3MpO1xuICByZXR1cm4ge1xuICAgIGZvcm06IHRoaXMuYnVpbGRGb3JtR3JvdXBCeUpzb25TY2hlbWEoc2NoZW1hLCB7ZmIsIHZhbHVlfSksXG4gICAgZmllbGRNYXA6IHRoaXMuYnVpbGRGb3JtRmllbGRNYXBCeUpzb25TY2hlbWEoc2NoZW1hLCB7bWVyZ2U6IGZpZWxkTWFwfSksXG4gIH07XG59XG5cblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBKc29uU2NoZW1hRm9ybVNlcnZpY2Uge1xuICBwcml2YXRlIGZiID0gaW5qZWN0KEZvcm1CdWlsZGVyKS5ub25OdWxsYWJsZTtcblxuICBidWlsZChzY2hlbWE6IEpzb25TY2hlbWEsIHtcbiAgICBmYiA9IHRoaXMuZmIsXG4gICAgdmFsdWUgPSB7fSxcbiAgfToge1xuICAgIGZiPzogRm9ybUJ1aWxkZXIgfCBOb25OdWxsYWJsZUZvcm1CdWlsZGVyLFxuICAgIHZhbHVlPzogb2JqZWN0LFxuICB9ID0ge30pOiBGb3JtR3JvdXAge1xuICAgIHJldHVybiBKc29uU2NoZW1hRm9ybVV0aWxzLmJ1aWxkRm9ybUdyb3VwQnlKc29uU2NoZW1hKHNjaGVtYSwge2ZiLCB2YWx1ZX0pO1xuICB9XG5cbiAgYnVpbGRGaWVsZE1hcChcbiAgICBzY2hlbWE6IEpzb25TY2hlbWEsXG4gICAgb3B0aW9uczoge1xuICAgICAgbWVyZ2U/OiB7IFtrZXk6IHN0cmluZ106IGFueSB9LFxuICAgIH0gPSB7fSxcbiAgKTogYW55IHtcbiAgICByZXR1cm4gSnNvblNjaGVtYUZvcm1VdGlscy5idWlsZEZvcm1GaWVsZE1hcEJ5SnNvblNjaGVtYShzY2hlbWEsIG9wdGlvbnMpO1xuICB9XG59XG4iXX0=
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { toSignal } from "@angular/core/rxjs-interop";
|
|
2
|
-
import { map, merge, of, startWith } from "rxjs";
|
|
2
|
+
import { distinctUntilChanged, map, merge, of, startWith } from "rxjs";
|
|
3
3
|
import { computedAsync } from "ngxtension/computed-async";
|
|
4
4
|
import { computeFake } from "@ng-atomic/core";
|
|
5
5
|
export function getValue$(control) {
|
|
6
|
-
return merge(of(control.value), control.valueChanges);
|
|
6
|
+
return merge(of(control.value), control.valueChanges).pipe(distinctUntilChanged((pre, cur) => JSON.stringify(pre) === JSON.stringify(cur)));
|
|
7
7
|
}
|
|
8
8
|
export function getValue(control) {
|
|
9
9
|
return toSignal(getValue$(control));
|
|
@@ -23,4 +23,4 @@ export function getInvalid$(control) {
|
|
|
23
23
|
export function getInvalid(form) {
|
|
24
24
|
return toSignal(getInvalid$(form));
|
|
25
25
|
}
|
|
26
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
26
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BuZy1hdG9taWMvY29tbW9uL3NyYy9saWIvdXRpbHMvZm9ybS9mb3JtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUV0RCxPQUFPLEVBQWMsb0JBQW9CLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ25GLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFOUMsTUFBTSxVQUFVLFNBQVMsQ0FBSSxPQUEyQjtJQUN0RCxPQUFPLEtBQUssQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQ3hELG9CQUFvQixDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsS0FBSyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQ2hGLENBQUM7QUFDSixDQUFDO0FBRUQsTUFBTSxVQUFVLFFBQVEsQ0FBSSxPQUEyQjtJQUNyRCxPQUFPLFFBQVEsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztBQUN0QyxDQUFDO0FBRUQsTUFBTSxVQUFVLFlBQVksQ0FBSSxPQUEyQjtJQUN6RCxPQUFPLEtBQUssQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxDQUFDLEVBQUUsT0FBTyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN2RyxDQUFDO0FBRUQsTUFBTSxVQUFVLFdBQVcsQ0FBSSxPQUEyQjtJQUN4RCxPQUFPLFFBQVEsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztBQUN6QyxDQUFDO0FBRUQsTUFBTSxVQUFVLGdCQUFnQixDQUFJLGNBQXdDO0lBQzFFLE9BQU8sYUFBYSxDQUFDLEdBQUcsRUFBRSxDQUFDLGNBQWMsRUFBRSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQzNELFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFDZixHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsY0FBYyxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FDMUMsRUFBRSxFQUFFLFlBQVksRUFBRSxXQUFXLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDcEUsQ0FBQztBQUVELE1BQU0sVUFBVSxXQUFXLENBQUksT0FBMkI7SUFDeEQsT0FBTyxPQUFPLENBQUMsYUFBYSxDQUFDLElBQUksQ0FDL0IsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUNmLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQzNCLENBQUM7QUFDSixDQUFDO0FBRUQsTUFBTSxVQUFVLFVBQVUsQ0FBSSxJQUF3QjtJQUNwRCxPQUFPLFFBQVEsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztBQUNyQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2lnbmFsIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IHRvU2lnbmFsIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wXCI7XG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcbmltcG9ydCB7IE9ic2VydmFibGUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBtYXAsIG1lcmdlLCBvZiwgc3RhcnRXaXRoIH0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB7IGNvbXB1dGVkQXN5bmMgfSBmcm9tIFwibmd4dGVuc2lvbi9jb21wdXRlZC1hc3luY1wiO1xuaW1wb3J0IHsgY29tcHV0ZUZha2UgfSBmcm9tIFwiQG5nLWF0b21pYy9jb3JlXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRWYWx1ZSQ8VD4oY29udHJvbDogQWJzdHJhY3RDb250cm9sPFQ+KTogT2JzZXJ2YWJsZTxUPiB7XG4gIHJldHVybiBtZXJnZShvZihjb250cm9sLnZhbHVlKSwgY29udHJvbC52YWx1ZUNoYW5nZXMpLnBpcGUoXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKHByZSwgY3VyKSA9PiBKU09OLnN0cmluZ2lmeShwcmUpID09PSBKU09OLnN0cmluZ2lmeShjdXIpKSxcbiAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFZhbHVlPFQ+KGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbDxUPik6IFNpZ25hbDxUPiB7XG4gIHJldHVybiB0b1NpZ25hbChnZXRWYWx1ZSQoY29udHJvbCkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UmF3VmFsdWUkPFQ+KGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbDxUPik6IE9ic2VydmFibGU8VD4ge1xuICByZXR1cm4gbWVyZ2Uob2YoY29udHJvbC5nZXRSYXdWYWx1ZSgpKSwgY29udHJvbC52YWx1ZUNoYW5nZXMucGlwZShtYXAoKCkgPT4gY29udHJvbC5nZXRSYXdWYWx1ZSgpKSkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UmF3VmFsdWU8VD4oY29udHJvbDogQWJzdHJhY3RDb250cm9sPFQ+KTogU2lnbmFsPFQ+IHtcbiAgcmV0dXJuIHRvU2lnbmFsKGdldFJhd1ZhbHVlJChjb250cm9sKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb21wdXRlZFJhd1ZhbHVlPFQ+KGNvbnRyb2xGYWN0b3J5OiAoKSA9PiBBYnN0cmFjdENvbnRyb2w8VD4pOiBTaWduYWw8VD4ge1xuICByZXR1cm4gY29tcHV0ZWRBc3luYygoKSA9PiBjb250cm9sRmFjdG9yeSgpLnZhbHVlQ2hhbmdlcy5waXBlKFxuICAgIHN0YXJ0V2l0aChudWxsKSxcbiAgICBtYXAoKCkgPT4gY29udHJvbEZhY3RvcnkoKS5nZXRSYXdWYWx1ZSgpKSxcbiAgKSwgeyBpbml0aWFsVmFsdWU6IGNvbXB1dGVGYWtlKGNvbnRyb2xGYWN0b3J5KCkpLmdldFJhd1ZhbHVlKCkgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRJbnZhbGlkJDxUPihjb250cm9sOiBBYnN0cmFjdENvbnRyb2w8VD4pOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgcmV0dXJuIGNvbnRyb2wuc3RhdHVzQ2hhbmdlcy5waXBlKFxuICAgIHN0YXJ0V2l0aChudWxsKSxcbiAgICBtYXAoKCkgPT4gY29udHJvbC5pbnZhbGlkKSxcbiAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEludmFsaWQ8VD4oZm9ybTogQWJzdHJhY3RDb250cm9sPFQ+KTogU2lnbmFsPGJvb2xlYW4+IHtcbiAgcmV0dXJuIHRvU2lnbmFsKGdldEludmFsaWQkKGZvcm0pKTtcbn1cblxuIl19
|
|
@@ -4,8 +4,21 @@ import { get } from 'lodash-es';
|
|
|
4
4
|
|
|
5
5
|
const DATA_ACCESSOR = new InjectionToken('DATA_ACCESSOR');
|
|
6
6
|
const defaultDataAccessor = (obj, key) => get(obj, key) ?? '';
|
|
7
|
-
function provideDataAccessor(useFactory = () => defaultDataAccessor) {
|
|
8
|
-
return {
|
|
7
|
+
function provideDataAccessor(useFactory = () => defaultDataAccessor, { merge = true } = {}) {
|
|
8
|
+
return {
|
|
9
|
+
provide: DATA_ACCESSOR,
|
|
10
|
+
useFactory: () => {
|
|
11
|
+
if (merge) {
|
|
12
|
+
const parentAccessor = injectParentDataAccessor();
|
|
13
|
+
const accessor = useFactory();
|
|
14
|
+
return (obj, key, index) => {
|
|
15
|
+
const result = accessor(obj, key, index);
|
|
16
|
+
return typeof result !== 'undefined' ? result : parentAccessor(obj, key, index);
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
return useFactory();
|
|
20
|
+
}
|
|
21
|
+
};
|
|
9
22
|
}
|
|
10
23
|
function injectDataAccessor() {
|
|
11
24
|
return inject(DATA_ACCESSOR, { optional: true }) ?? defaultDataAccessor;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ng-atomic-common-pipes-data-accessor.mjs","sources":["../../../../../packages/@ng-atomic/common/src/lib/pipes/data-accessor/data-accessor.pipe.ts","../../../../../packages/@ng-atomic/common/src/lib/pipes/data-accessor/ng-atomic-common-pipes-data-accessor.ts"],"sourcesContent":["import { InjectionToken, Pipe, inject, PipeTransform } from \"@angular/core\";\nimport { get } from 'lodash-es';\n\nexport type DataAccessor<T> = (obj: T, key: string, index?: number) => any;\nexport const DATA_ACCESSOR = new InjectionToken<DataAccessor<any>>('DATA_ACCESSOR');\nexport const defaultDataAccessor: DataAccessor<any> = (obj, key) => get(obj, key) ?? '';\nexport function provideDataAccessor<T>(useFactory: () => DataAccessor<T> = () => defaultDataAccessor) {\n return {
|
|
1
|
+
{"version":3,"file":"ng-atomic-common-pipes-data-accessor.mjs","sources":["../../../../../packages/@ng-atomic/common/src/lib/pipes/data-accessor/data-accessor.pipe.ts","../../../../../packages/@ng-atomic/common/src/lib/pipes/data-accessor/ng-atomic-common-pipes-data-accessor.ts"],"sourcesContent":["import { InjectionToken, Pipe, inject, PipeTransform } from \"@angular/core\";\nimport { get } from 'lodash-es';\n\nexport type DataAccessor<T> = (obj: T, key: string, index?: number) => any;\nexport const DATA_ACCESSOR = new InjectionToken<DataAccessor<any>>('DATA_ACCESSOR');\nexport const defaultDataAccessor: DataAccessor<any> = (obj, key) => get(obj, key) ?? '';\nexport function provideDataAccessor<T>(useFactory: () => DataAccessor<T> = () => defaultDataAccessor, {\n merge = true\n}: {\n merge?: boolean\n} = {}) {\n return {\n provide: DATA_ACCESSOR,\n useFactory: () => {\n if (merge) {\n const parentAccessor = injectParentDataAccessor<T>();\n const accessor = useFactory();\n return (obj: T, key: string, index?: number) => {\n const result = accessor(obj, key, index);\n return typeof result !== 'undefined' ? result : parentAccessor(obj, key, index);\n };\n }\n return useFactory();\n }\n };\n}\n\nexport function injectDataAccessor<T>(): DataAccessor<T> {\n return inject(DATA_ACCESSOR, {optional: true}) ?? defaultDataAccessor;\n}\n\nexport function injectParentDataAccessor<T>(): DataAccessor<T> {\n return inject(DATA_ACCESSOR, {skipSelf: true, optional: true}) ?? defaultDataAccessor;\n}\n\n@Pipe({\n name: 'dataAccessor',\n pure: true,\n standalone: true,\n})\nexport class DataAccessorPipe<T> implements PipeTransform {\n protected dataAccessor = injectDataAccessor();\n\n transform(data: T, key: string, index?: number): any {\n return this.dataAccessor(data, key, index);\n }\n}\n\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;MAIa,aAAa,GAAG,IAAI,cAAc,CAAoB,eAAe,EAAE;AACvE,MAAA,mBAAmB,GAAsB,CAAC,GAAG,EAAE,GAAG,KAAK,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,GAAG;AACxE,SAAA,mBAAmB,CAAI,UAAA,GAAoC,MAAM,mBAAmB,EAAE,EACpG,KAAK,GAAG,IAAI,KAGV,EAAE,EAAA;IACJ,OAAO;AACL,QAAA,OAAO,EAAE,aAAa;QACtB,UAAU,EAAE,MAAK;YACf,IAAI,KAAK,EAAE;AACT,gBAAA,MAAM,cAAc,GAAG,wBAAwB,EAAK,CAAC;AACrD,gBAAA,MAAM,QAAQ,GAAG,UAAU,EAAE,CAAC;AAC9B,gBAAA,OAAO,CAAC,GAAM,EAAE,GAAW,EAAE,KAAc,KAAI;oBAC7C,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;AACzC,oBAAA,OAAO,OAAO,MAAM,KAAK,WAAW,GAAG,MAAM,GAAG,cAAc,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;AAClF,iBAAC,CAAC;aACH;YACD,OAAO,UAAU,EAAE,CAAC;SACrB;KACF,CAAC;AACJ,CAAC;SAEe,kBAAkB,GAAA;AAChC,IAAA,OAAO,MAAM,CAAC,aAAa,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC,IAAI,mBAAmB,CAAC;AACxE,CAAC;SAEe,wBAAwB,GAAA;AACtC,IAAA,OAAO,MAAM,CAAC,aAAa,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAC,CAAC,IAAI,mBAAmB,CAAC;AACxF,CAAC;MAOY,gBAAgB,CAAA;AAL7B,IAAA,WAAA,GAAA;QAMY,IAAY,CAAA,YAAA,GAAG,kBAAkB,EAAE,CAAC;AAK/C,KAAA;AAHC,IAAA,SAAS,CAAC,IAAO,EAAE,GAAW,EAAE,KAAc,EAAA;QAC5C,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;KAC5C;8GALU,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;4GAAhB,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,cAAA,EAAA,CAAA,CAAA,EAAA;;2FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAL5B,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACJ,oBAAA,IAAI,EAAE,cAAc;AACpB,oBAAA,IAAI,EAAE,IAAI;AACV,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA,CAAA;;;ACvCD;;AAEG;;;;"}
|
|
@@ -39,8 +39,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.2", ngImpor
|
|
|
39
39
|
type: Pipe,
|
|
40
40
|
args: [{ standalone: true, name: 'domain', pure: true }]
|
|
41
41
|
}] });
|
|
42
|
-
function
|
|
43
|
-
return {
|
|
42
|
+
function injectParentDomainLangMap() {
|
|
43
|
+
return inject(DOMAIN_LANG_MAP, { skipSelf: true, optional: true }) ?? {};
|
|
44
|
+
}
|
|
45
|
+
function provideLangMap(useFactory, { merge = true } = {}) {
|
|
46
|
+
return {
|
|
47
|
+
provide: DOMAIN_LANG_MAP,
|
|
48
|
+
useFactory: () => {
|
|
49
|
+
if (merge)
|
|
50
|
+
return { ...injectParentDomainLangMap(), ...useFactory() };
|
|
51
|
+
return useFactory();
|
|
52
|
+
}
|
|
53
|
+
};
|
|
44
54
|
}
|
|
45
55
|
function provideDomainLang(domain, mergeObj = {}) {
|
|
46
56
|
return provideLangMap(() => getLangMap(domain, mergeObj));
|
|
@@ -78,5 +88,5 @@ function provideDomain(useFactory) {
|
|
|
78
88
|
* Generated bundle index. Do not edit.
|
|
79
89
|
*/
|
|
80
90
|
|
|
81
|
-
export { DOMAIN_LANG_MAP, DOMAIN_MODEL, DOMAIN_MODEL_NAME, DOMAIN_PROPS, DomainPipe, injectModel, injectModelName, injectProps, provideDomain, provideDomainLang, provideLangMap, provideModel, provideModelName, provideProps };
|
|
91
|
+
export { DOMAIN_LANG_MAP, DOMAIN_MODEL, DOMAIN_MODEL_NAME, DOMAIN_PROPS, DomainPipe, injectModel, injectModelName, injectParentDomainLangMap, injectProps, provideDomain, provideDomainLang, provideLangMap, provideModel, provideModelName, provideProps };
|
|
82
92
|
//# sourceMappingURL=ng-atomic-common-pipes-domain.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ng-atomic-common-pipes-domain.mjs","sources":["../../../../../packages/@ng-atomic/common/src/lib/pipes/domain/domain.pipe.ts","../../../../../packages/@ng-atomic/common/src/lib/pipes/domain/ng-atomic-common-pipes-domain.ts"],"sourcesContent":["import { InjectionToken, Injector, Pipe, Signal, inject, signal, PipeTransform } from '@angular/core';\nimport { Entity, Type, getLangMap, getModelName, getProps } from '@nx-ddd/common/domain/models';\nimport { SignalOrValue, wrapFactory } from '@ng-atomic/common/pipes/signal';\nimport { get, has } from 'lodash-es';\n\nexport type DomainLangMap = Record<string, string>;\nexport const DOMAIN_MODEL = new InjectionToken<Type<{id: string}>>('Domain Model');\nexport const DOMAIN_LANG_MAP = new InjectionToken<DomainLangMap>('domain lang map');\nexport const DOMAIN_PROPS = new InjectionToken<Signal<string[]>>('Domain Props');\nexport const DOMAIN_MODEL_NAME = new InjectionToken<Signal<string>>('Domain Model Name');\n\n\n\n@Pipe({standalone: true, name: 'domain', pure: true})\nexport class DomainPipe implements PipeTransform {\n protected map = inject(DOMAIN_LANG_MAP, {optional: true}) ?? {};\n protected regexResolvers = Object.entries(this.map).map(([regexKey, value]) => {\n const regexIndicators = /[.*+?^${}()|[\\]\\\\]/;\n if (regexIndicators.test(regexKey)) {\n return (key: string) => {\n const regex = new RegExp(regexKey);\n return regex.test(key) ? value : null;\n }\n }\n return () => null;\n });\n\n transform(input: string, map: DomainLangMap = this.map) {\n if (has(map, input)) return get(map, input);\n for (const resolver of this.regexResolvers) {\n const result = resolver(input);\n if (result) return result;\n }\n return map[input] ?? input;\n }\n}\n\nexport function provideLangMap(useFactory: () => DomainLangMap) {\n return {
|
|
1
|
+
{"version":3,"file":"ng-atomic-common-pipes-domain.mjs","sources":["../../../../../packages/@ng-atomic/common/src/lib/pipes/domain/domain.pipe.ts","../../../../../packages/@ng-atomic/common/src/lib/pipes/domain/ng-atomic-common-pipes-domain.ts"],"sourcesContent":["import { InjectionToken, Injector, Pipe, Signal, inject, signal, PipeTransform } from '@angular/core';\nimport { Entity, Type, getLangMap, getModelName, getProps } from '@nx-ddd/common/domain/models';\nimport { SignalOrValue, wrapFactory } from '@ng-atomic/common/pipes/signal';\nimport { get, has } from 'lodash-es';\n\nexport type DomainLangMap = Record<string, string>;\nexport const DOMAIN_MODEL = new InjectionToken<Type<{id: string}>>('Domain Model');\nexport const DOMAIN_LANG_MAP = new InjectionToken<DomainLangMap>('domain lang map');\nexport const DOMAIN_PROPS = new InjectionToken<Signal<string[]>>('Domain Props');\nexport const DOMAIN_MODEL_NAME = new InjectionToken<Signal<string>>('Domain Model Name');\n\n\n\n@Pipe({standalone: true, name: 'domain', pure: true})\nexport class DomainPipe implements PipeTransform {\n protected map = inject(DOMAIN_LANG_MAP, {optional: true}) ?? {};\n protected regexResolvers = Object.entries(this.map).map(([regexKey, value]) => {\n const regexIndicators = /[.*+?^${}()|[\\]\\\\]/;\n if (regexIndicators.test(regexKey)) {\n return (key: string) => {\n const regex = new RegExp(regexKey);\n return regex.test(key) ? value : null;\n }\n }\n return () => null;\n });\n\n transform(input: string, map: DomainLangMap = this.map) {\n if (has(map, input)) return get(map, input);\n for (const resolver of this.regexResolvers) {\n const result = resolver(input);\n if (result) return result;\n }\n return map[input] ?? input;\n }\n}\n\nexport function injectParentDomainLangMap(): DomainLangMap {\n return inject(DOMAIN_LANG_MAP, {skipSelf: true, optional: true}) ?? {};\n}\n\nexport function provideLangMap(useFactory: () => DomainLangMap, {\n merge = true\n}: {\n merge?: boolean\n} = {}) {\n return {\n provide: DOMAIN_LANG_MAP,\n useFactory: () => {\n if (merge) return {...injectParentDomainLangMap(), ...useFactory()};\n return useFactory();\n }\n };\n}\n\nexport function provideDomainLang<E>(domain: Type<E>, mergeObj: DomainLangMap = {}) {\n return provideLangMap(() => getLangMap(domain, mergeObj));\n}\n\nexport function provideModel<E>(useFactory: () => Type<E>) {\n return { provide: DOMAIN_MODEL, useFactory};\n}\n\nexport function injectModel<E = Entity>(): Type<E> {\n return inject(DOMAIN_MODEL, {optional: true}) as Type<E> ?? null;\n}\n\nexport function provideProps(useFactory: () => SignalOrValue<string[]>) {\n return { provide: DOMAIN_PROPS, useFactory: wrapFactory(useFactory)}\n}\n\nexport function provideModelName(useFactory: () => SignalOrValue<string>) {\n return { provide: DOMAIN_MODEL_NAME, useFactory: wrapFactory(useFactory)}\n}\n\nexport function injectProps(): Signal<string[]> {\n return inject(DOMAIN_PROPS, {optional: true}) ?? signal([]);\n}\n\nexport function injectModelName(injector?: Injector): Signal<string> {\n if (injector) return injector.get(DOMAIN_MODEL_NAME, null) ?? signal(null);\n return inject(DOMAIN_MODEL_NAME, {optional: true}) ?? signal(null);\n}\n\nexport function provideDomain<E>(useFactory: () => Type<E>) {\n return [\n provideModel(useFactory),\n provideLangMap(() => getLangMap(useFactory())),\n provideProps(() => getProps(useFactory())),\n provideModelName(() => getModelName(useFactory()))\n ]\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;MAMa,YAAY,GAAG,IAAI,cAAc,CAAqB,cAAc,EAAE;MACtE,eAAe,GAAG,IAAI,cAAc,CAAgB,iBAAiB,EAAE;MACvE,YAAY,GAAG,IAAI,cAAc,CAAmB,cAAc,EAAE;MACpE,iBAAiB,GAAG,IAAI,cAAc,CAAiB,mBAAmB,EAAE;MAK5E,UAAU,CAAA;AADvB,IAAA,WAAA,GAAA;AAEY,QAAA,IAAA,CAAA,GAAG,GAAG,MAAM,CAAC,eAAe,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC,IAAI,EAAE,CAAC;AACtD,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,KAAK,CAAC,KAAI;YAC5E,MAAM,eAAe,GAAG,oBAAoB,CAAC;AAC7C,YAAA,IAAI,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;gBAClC,OAAO,CAAC,GAAW,KAAI;AACrB,oBAAA,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC;AACnC,oBAAA,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC;AACxC,iBAAC,CAAA;aACF;AACD,YAAA,OAAO,MAAM,IAAI,CAAC;AACpB,SAAC,CAAC,CAAC;AAUJ,KAAA;AARC,IAAA,SAAS,CAAC,KAAa,EAAE,GAAqB,GAAA,IAAI,CAAC,GAAG,EAAA;AACpD,QAAA,IAAI,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC;AAAE,YAAA,OAAO,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AAC5C,QAAA,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,cAAc,EAAE;AAC1C,YAAA,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC/B,YAAA,IAAI,MAAM;AAAE,gBAAA,OAAO,MAAM,CAAC;SAC3B;AACD,QAAA,OAAO,GAAG,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC;KAC5B;8GApBU,UAAU,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;4GAAV,UAAU,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,QAAA,EAAA,CAAA,CAAA,EAAA;;2FAAV,UAAU,EAAA,UAAA,EAAA,CAAA;kBADtB,IAAI;mBAAC,EAAC,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAC,CAAA;;SAwBpC,yBAAyB,GAAA;AACvC,IAAA,OAAO,MAAM,CAAC,eAAe,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAC,CAAC,IAAI,EAAE,CAAC;AACzE,CAAC;AAEK,SAAU,cAAc,CAAC,UAA+B,EAAE,EAC9D,KAAK,GAAG,IAAI,EAAA,GAGV,EAAE,EAAA;IACJ,OAAO;AACL,QAAA,OAAO,EAAE,eAAe;QACxB,UAAU,EAAE,MAAK;AACf,YAAA,IAAI,KAAK;gBAAE,OAAO,EAAC,GAAG,yBAAyB,EAAE,EAAE,GAAG,UAAU,EAAE,EAAC,CAAC;YACpE,OAAO,UAAU,EAAE,CAAC;SACrB;KACF,CAAC;AACJ,CAAC;SAEe,iBAAiB,CAAI,MAAe,EAAE,WAA0B,EAAE,EAAA;AAChF,IAAA,OAAO,cAAc,CAAC,MAAM,UAAU,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;AAC5D,CAAC;AAEK,SAAU,YAAY,CAAI,UAAyB,EAAA;AACvD,IAAA,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,UAAU,EAAC,CAAC;AAC9C,CAAC;SAEe,WAAW,GAAA;AACzB,IAAA,OAAO,MAAM,CAAC,YAAY,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAY,IAAI,IAAI,CAAC;AACnE,CAAC;AAEK,SAAU,YAAY,CAAC,UAAyC,EAAA;AACpE,IAAA,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,WAAW,CAAC,UAAU,CAAC,EAAC,CAAA;AACtE,CAAC;AAEK,SAAU,gBAAgB,CAAC,UAAuC,EAAA;AACtE,IAAA,OAAO,EAAE,OAAO,EAAE,iBAAiB,EAAE,UAAU,EAAE,WAAW,CAAC,UAAU,CAAC,EAAC,CAAA;AAC3E,CAAC;SAEe,WAAW,GAAA;AACzB,IAAA,OAAO,MAAM,CAAC,YAAY,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC,IAAI,MAAM,CAAC,EAAE,CAAC,CAAC;AAC9D,CAAC;AAEK,SAAU,eAAe,CAAC,QAAmB,EAAA;AACjD,IAAA,IAAI,QAAQ;AAAE,QAAA,OAAO,QAAQ,CAAC,GAAG,CAAC,iBAAiB,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC;AAC3E,IAAA,OAAO,MAAM,CAAC,iBAAiB,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC;AACrE,CAAC;AAEK,SAAU,aAAa,CAAI,UAAyB,EAAA;IACxD,OAAO;QACL,YAAY,CAAC,UAAU,CAAC;QACxB,cAAc,CAAC,MAAM,UAAU,CAAC,UAAU,EAAE,CAAC,CAAC;QAC9C,YAAY,CAAC,MAAM,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;QAC1C,gBAAgB,CAAC,MAAM,YAAY,CAAC,UAAU,EAAE,CAAC,CAAC;KACnD,CAAA;AACH;;AC3FA;;AAEG;;;;"}
|