@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.
@@ -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 { provide: DATA_ACCESSOR, useFactory };
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1hY2Nlc3Nvci5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvQG5nLWF0b21pYy9jb21tb24vc3JjL2xpYi9waXBlcy9kYXRhLWFjY2Vzc29yL2RhdGEtYWNjZXNzb3IucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBQzVFLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxXQUFXLENBQUM7O0FBR2hDLE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxJQUFJLGNBQWMsQ0FBb0IsZUFBZSxDQUFDLENBQUM7QUFDcEYsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQXNCLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUM7QUFDeEYsTUFBTSxVQUFVLG1CQUFtQixDQUFJLGFBQW9DLEdBQUcsRUFBRSxDQUFDLG1CQUFtQjtJQUNsRyxPQUFPLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxVQUFVLEVBQUUsQ0FBQztBQUNoRCxDQUFDO0FBRUQsTUFBTSxVQUFVLGtCQUFrQjtJQUNoQyxPQUFPLE1BQU0sQ0FBQyxhQUFhLEVBQUUsRUFBQyxRQUFRLEVBQUUsSUFBSSxFQUFDLENBQUMsSUFBSSxtQkFBbUIsQ0FBQztBQUN4RSxDQUFDO0FBRUQsTUFBTSxVQUFVLHdCQUF3QjtJQUN0QyxPQUFPLE1BQU0sQ0FBQyxhQUFhLEVBQUUsRUFBQyxRQUFRLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUMsQ0FBQyxJQUFJLG1CQUFtQixDQUFDO0FBQ3hGLENBQUM7QUFPRCxNQUFNLE9BQU8sZ0JBQWdCO0lBTDdCO1FBTVksaUJBQVksR0FBRyxrQkFBa0IsRUFBRSxDQUFDO0tBSy9DO0lBSEMsU0FBUyxDQUFDLElBQU8sRUFBRSxHQUFXLEVBQUUsS0FBYztRQUM1QyxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUM3QyxDQUFDOzhHQUxVLGdCQUFnQjs0R0FBaEIsZ0JBQWdCOzsyRkFBaEIsZ0JBQWdCO2tCQUw1QixJQUFJO21CQUFDO29CQUNKLElBQUksRUFBRSxjQUFjO29CQUNwQixJQUFJLEVBQUUsSUFBSTtvQkFDVixVQUFVLEVBQUUsSUFBSTtpQkFDakIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiwgUGlwZSwgaW5qZWN0LCBQaXBlVHJhbnNmb3JtIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IGdldCB9IGZyb20gJ2xvZGFzaC1lcyc7XG5cbmV4cG9ydCB0eXBlIERhdGFBY2Nlc3NvcjxUPiA9IChvYmo6IFQsIGtleTogc3RyaW5nLCBpbmRleD86IG51bWJlcikgPT4gYW55O1xuZXhwb3J0IGNvbnN0IERBVEFfQUNDRVNTT1IgPSBuZXcgSW5qZWN0aW9uVG9rZW48RGF0YUFjY2Vzc29yPGFueT4+KCdEQVRBX0FDQ0VTU09SJyk7XG5leHBvcnQgY29uc3QgZGVmYXVsdERhdGFBY2Nlc3NvcjogRGF0YUFjY2Vzc29yPGFueT4gPSAob2JqLCBrZXkpID0+IGdldChvYmosIGtleSkgPz8gJyc7XG5leHBvcnQgZnVuY3Rpb24gcHJvdmlkZURhdGFBY2Nlc3NvcjxUPih1c2VGYWN0b3J5OiAoKSA9PiBEYXRhQWNjZXNzb3I8VD4gPSAoKSA9PiBkZWZhdWx0RGF0YUFjY2Vzc29yKSB7XG4gIHJldHVybiB7IHByb3ZpZGU6IERBVEFfQUNDRVNTT1IsIHVzZUZhY3RvcnkgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluamVjdERhdGFBY2Nlc3NvcjxUPigpOiBEYXRhQWNjZXNzb3I8VD4ge1xuICByZXR1cm4gaW5qZWN0KERBVEFfQUNDRVNTT1IsIHtvcHRpb25hbDogdHJ1ZX0pID8/IGRlZmF1bHREYXRhQWNjZXNzb3I7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RQYXJlbnREYXRhQWNjZXNzb3I8VD4oKTogRGF0YUFjY2Vzc29yPFQ+IHtcbiAgcmV0dXJuIGluamVjdChEQVRBX0FDQ0VTU09SLCB7c2tpcFNlbGY6IHRydWUsIG9wdGlvbmFsOiB0cnVlfSkgPz8gZGVmYXVsdERhdGFBY2Nlc3Nvcjtcbn1cblxuQFBpcGUoe1xuICBuYW1lOiAnZGF0YUFjY2Vzc29yJyxcbiAgcHVyZTogdHJ1ZSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgRGF0YUFjY2Vzc29yUGlwZTxUPiBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICBwcm90ZWN0ZWQgZGF0YUFjY2Vzc29yID0gaW5qZWN0RGF0YUFjY2Vzc29yKCk7XG5cbiAgdHJhbnNmb3JtKGRhdGE6IFQsIGtleTogc3RyaW5nLCBpbmRleD86IG51bWJlcik6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YUFjY2Vzc29yKGRhdGEsIGtleSwgaW5kZXgpO1xuICB9XG59XG5cbiJdfQ==
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 provideLangMap(useFactory) {
42
- return { provide: DOMAIN_LANG_MAP, useFactory };
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9tYWluLnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9AbmctYXRvbWljL2NvbW1vbi9zcmMvbGliL3BpcGVzL2RvbWFpbi9kb21haW4ucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFZLElBQUksRUFBVSxNQUFNLEVBQUUsTUFBTSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUN0RyxPQUFPLEVBQWdCLFVBQVUsRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDaEcsT0FBTyxFQUFpQixXQUFXLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUM1RSxPQUFPLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxNQUFNLFdBQVcsQ0FBQzs7QUFHckMsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLElBQUksY0FBYyxDQUFxQixjQUFjLENBQUMsQ0FBQztBQUNuRixNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsSUFBSSxjQUFjLENBQWdCLGlCQUFpQixDQUFDLENBQUM7QUFDcEYsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLElBQUksY0FBYyxDQUFtQixjQUFjLENBQUMsQ0FBQztBQUNqRixNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLGNBQWMsQ0FBaUIsbUJBQW1CLENBQUMsQ0FBQztBQUt6RixNQUFNLE9BQU8sVUFBVTtJQUR2QjtRQUVZLFFBQUcsR0FBRyxNQUFNLENBQUMsZUFBZSxFQUFFLEVBQUMsUUFBUSxFQUFFLElBQUksRUFBQyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3RELG1CQUFjLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRTtZQUM1RSxNQUFNLGVBQWUsR0FBRyxv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RUQsTUFBTSxVQUFVLGFBQWEsQ0FBSSxVQUF5QjtJQUN4RCxPQUFPO1FBQ0wsWUFBWSxDQUFDLFVBQVUsQ0FBQztRQUN4QixjQUFjLENBQUMsR0FBRyxFQUFFLENBQUMsVUFBVSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUM7UUFDOUMsWUFBWSxDQUFDLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDO1FBQzFDLGdCQUFnQixDQUFDLEdBQUcsRUFBRSxDQUFDLFlBQVksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDO0tBQ25ELENBQUE7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4sIEluamVjdG9yLCBQaXBlLCBTaWduYWwsIGluamVjdCwgc2lnbmFsLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBFbnRpdHksIFR5cGUsIGdldExhbmdNYXAsIGdldE1vZGVsTmFtZSwgZ2V0UHJvcHMgfSBmcm9tICdAbngtZGRkL2NvbW1vbi9kb21haW4vbW9kZWxzJztcbmltcG9ydCB7IFNpZ25hbE9yVmFsdWUsIHdyYXBGYWN0b3J5IH0gZnJvbSAnQG5nLWF0b21pYy9jb21tb24vcGlwZXMvc2lnbmFsJztcbmltcG9ydCB7IGdldCwgaGFzIH0gZnJvbSAnbG9kYXNoLWVzJztcblxuZXhwb3J0IHR5cGUgRG9tYWluTGFuZ01hcCA9IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG5leHBvcnQgY29uc3QgRE9NQUlOX01PREVMID0gbmV3IEluamVjdGlvblRva2VuPFR5cGU8e2lkOiBzdHJpbmd9Pj4oJ0RvbWFpbiBNb2RlbCcpO1xuZXhwb3J0IGNvbnN0IERPTUFJTl9MQU5HX01BUCA9IG5ldyBJbmplY3Rpb25Ub2tlbjxEb21haW5MYW5nTWFwPignZG9tYWluIGxhbmcgbWFwJyk7XG5leHBvcnQgY29uc3QgRE9NQUlOX1BST1BTID0gbmV3IEluamVjdGlvblRva2VuPFNpZ25hbDxzdHJpbmdbXT4+KCdEb21haW4gUHJvcHMnKTtcbmV4cG9ydCBjb25zdCBET01BSU5fTU9ERUxfTkFNRSA9IG5ldyBJbmplY3Rpb25Ub2tlbjxTaWduYWw8c3RyaW5nPj4oJ0RvbWFpbiBNb2RlbCBOYW1lJyk7XG5cblxuXG5AUGlwZSh7c3RhbmRhbG9uZTogdHJ1ZSwgbmFtZTogJ2RvbWFpbicsIHB1cmU6IHRydWV9KVxuZXhwb3J0IGNsYXNzIERvbWFpblBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgcHJvdGVjdGVkIG1hcCA9IGluamVjdChET01BSU5fTEFOR19NQVAsIHtvcHRpb25hbDogdHJ1ZX0pID8/IHt9O1xuICBwcm90ZWN0ZWQgcmVnZXhSZXNvbHZlcnMgPSBPYmplY3QuZW50cmllcyh0aGlzLm1hcCkubWFwKChbcmVnZXhLZXksIHZhbHVlXSkgPT4ge1xuICAgIGNvbnN0IHJlZ2V4SW5kaWNhdG9ycyA9IC9bLiorP14ke30oKXxbXFxdXFxcXF0vO1xuICAgIGlmIChyZWdleEluZGljYXRvcnMudGVzdChyZWdleEtleSkpIHtcbiAgICAgIHJldHVybiAoa2V5OiBzdHJpbmcpID0+IHtcbiAgICAgICAgY29uc3QgcmVnZXggPSBuZXcgUmVnRXhwKHJlZ2V4S2V5KTtcbiAgICAgICAgcmV0dXJuIHJlZ2V4LnRlc3Qoa2V5KSA/IHZhbHVlIDogbnVsbDtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuICgpID0+IG51bGw7XG4gIH0pO1xuXG4gIHRyYW5zZm9ybShpbnB1dDogc3RyaW5nLCBtYXA6IERvbWFpbkxhbmdNYXAgPSB0aGlzLm1hcCkge1xuICAgIGlmIChoYXMobWFwLCBpbnB1dCkpIHJldHVybiBnZXQobWFwLCBpbnB1dCk7XG4gICAgZm9yIChjb25zdCByZXNvbHZlciBvZiB0aGlzLnJlZ2V4UmVzb2x2ZXJzKSB7XG4gICAgICBjb25zdCByZXN1bHQgPSByZXNvbHZlcihpbnB1dCk7XG4gICAgICBpZiAocmVzdWx0KSByZXR1cm4gcmVzdWx0O1xuICAgIH1cbiAgICByZXR1cm4gbWFwW2lucHV0XSA/PyBpbnB1dDtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJvdmlkZUxhbmdNYXAodXNlRmFjdG9yeTogKCkgPT4gRG9tYWluTGFuZ01hcCkge1xuICByZXR1cm4geyBwcm92aWRlOiBET01BSU5fTEFOR19NQVAsIHVzZUZhY3RvcnkgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb3ZpZGVEb21haW5MYW5nPEU+KGRvbWFpbjogVHlwZTxFPiwgbWVyZ2VPYmo6IERvbWFpbkxhbmdNYXAgPSB7fSkge1xuICByZXR1cm4gcHJvdmlkZUxhbmdNYXAoKCkgPT4gZ2V0TGFuZ01hcChkb21haW4sIG1lcmdlT2JqKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm92aWRlTW9kZWw8RT4odXNlRmFjdG9yeTogKCkgPT4gVHlwZTxFPikge1xuICByZXR1cm4geyBwcm92aWRlOiBET01BSU5fTU9ERUwsIHVzZUZhY3Rvcnl9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0TW9kZWw8RSA9IEVudGl0eT4oKTogVHlwZTxFPiB7XG4gIHJldHVybiBpbmplY3QoRE9NQUlOX01PREVMLCB7b3B0aW9uYWw6IHRydWV9KSBhcyBUeXBlPEU+ID8/IG51bGw7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm92aWRlUHJvcHModXNlRmFjdG9yeTogKCkgPT4gU2lnbmFsT3JWYWx1ZTxzdHJpbmdbXT4pIHtcbiAgcmV0dXJuIHsgcHJvdmlkZTogRE9NQUlOX1BST1BTLCB1c2VGYWN0b3J5OiB3cmFwRmFjdG9yeSh1c2VGYWN0b3J5KX1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb3ZpZGVNb2RlbE5hbWUodXNlRmFjdG9yeTogKCkgPT4gU2lnbmFsT3JWYWx1ZTxzdHJpbmc+KSB7XG4gIHJldHVybiB7IHByb3ZpZGU6IERPTUFJTl9NT0RFTF9OQU1FLCB1c2VGYWN0b3J5OiB3cmFwRmFjdG9yeSh1c2VGYWN0b3J5KX1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluamVjdFByb3BzKCk6IFNpZ25hbDxzdHJpbmdbXT4ge1xuICByZXR1cm4gaW5qZWN0KERPTUFJTl9QUk9QUywge29wdGlvbmFsOiB0cnVlfSkgPz8gc2lnbmFsKFtdKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluamVjdE1vZGVsTmFtZShpbmplY3Rvcj86IEluamVjdG9yKTogU2lnbmFsPHN0cmluZz4ge1xuICBpZiAoaW5qZWN0b3IpIHJldHVybiBpbmplY3Rvci5nZXQoRE9NQUlOX01PREVMX05BTUUsIG51bGwpID8/IHNpZ25hbChudWxsKTtcbiAgcmV0dXJuIGluamVjdChET01BSU5fTU9ERUxfTkFNRSwge29wdGlvbmFsOiB0cnVlfSkgPz8gc2lnbmFsKG51bGwpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJvdmlkZURvbWFpbjxFPih1c2VGYWN0b3J5OiAoKSA9PiBUeXBlPEU+KSB7XG4gIHJldHVybiBbXG4gICAgcHJvdmlkZU1vZGVsKHVzZUZhY3RvcnkpLFxuICAgIHByb3ZpZGVMYW5nTWFwKCgpID0+IGdldExhbmdNYXAodXNlRmFjdG9yeSgpKSksXG4gICAgcHJvdmlkZVByb3BzKCgpID0+IGdldFByb3BzKHVzZUZhY3RvcnkoKSkpLFxuICAgIHByb3ZpZGVNb2RlbE5hbWUoKCkgPT4gZ2V0TW9kZWxOYW1lKHVzZUZhY3RvcnkoKSkpXG4gIF1cbn1cbiJdfQ==
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 function buildFormGroupByJsonSchema(schema, { fb = inject(FormBuilder).nonNullable, value = {}, } = {}) {
7
- console.debug('[buildFormGroupByJsonSchema] schema:', schema);
8
- if (!schema || !schema?.properties) {
9
- return fb.group({});
10
- }
11
- const group = {};
12
- for (const key in schema.properties) {
13
- const property = schema.properties[key];
14
- const validators = [];
15
- if (schema.required && schema.required.includes(key)) {
16
- validators.push(Validators.required);
17
- }
18
- group[key] = buildFormByJsonSchemaProperty(property, { fb, value: value?.[key], validators });
19
- }
20
- return fb.group(group);
21
- }
22
- export function buildFormArrayByJsonSchema(schema, { fb = inject(FormBuilder).nonNullable, value = [], } = {}) {
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
- console.debug('[buildFormArrayByJsonSchema] schema:', schema);
27
- const array = fb.array([
28
- buildFormGroupByJsonSchema(schema.items, { fb }),
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
- else if (property.format === 'binary') {
38
- return fb.control(value ?? property.default ?? null, validators);
39
- }
40
- else {
41
- return fb.control(value ?? property.default ?? '', validators);
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
- else if (property.type === 'integer') {
45
- return fb.control(value ?? property.default ?? 0, validators);
46
- }
47
- else if (property.type === 'number') {
48
- return fb.control(value ?? property.default ?? 0, validators);
49
- }
50
- else if (property.type === 'object') {
51
- return buildFormGroupByJsonSchema(property, { fb, value: (value || {}) });
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
- const fieldMap = {};
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.enum) {
68
- fieldMap[key] = { type: 'select', options: property.enum.map((v) => ({ value: v, name: v })) };
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
- fieldMap[key] = { type: 'file' };
56
+ return fb.control(value ?? property.default ?? null, validators);
75
57
  }
76
58
  else {
77
- fieldMap[key] = { type: 'text' };
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
- const childFieldMap = buildFormFieldMapByJsonSchema(property, options);
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
- const childFieldMap = buildFormFieldMapByJsonSchema(property.items, options);
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
- else {
94
- fieldMap[key] = { type: property.type };
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
- // const type = ? 'date' : property.type;
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BuZy1hdG9taWMvY29tbW9uL3NyYy9saWIvdXRpbHMvZm9ybS9mb3JtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUV0RCxPQUFPLEVBQWMsR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzdELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFOUMsTUFBTSxVQUFVLFNBQVMsQ0FBSSxPQUEyQjtJQUN0RCxPQUFPLEtBQUssQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQztBQUN4RCxDQUFDO0FBRUQsTUFBTSxVQUFVLFFBQVEsQ0FBSSxPQUEyQjtJQUNyRCxPQUFPLFFBQVEsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztBQUN0QyxDQUFDO0FBRUQsTUFBTSxVQUFVLFlBQVksQ0FBSSxPQUEyQjtJQUN6RCxPQUFPLEtBQUssQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxDQUFDLEVBQUUsT0FBTyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN2RyxDQUFDO0FBRUQsTUFBTSxVQUFVLFdBQVcsQ0FBSSxPQUEyQjtJQUN4RCxPQUFPLFFBQVEsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztBQUN6QyxDQUFDO0FBRUQsTUFBTSxVQUFVLGdCQUFnQixDQUFJLGNBQXdDO0lBQzFFLE9BQU8sYUFBYSxDQUFDLEdBQUcsRUFBRSxDQUFDLGNBQWMsRUFBRSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQzNELFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFDZixHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsY0FBYyxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FDMUMsRUFBRSxFQUFFLFlBQVksRUFBRSxXQUFXLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDcEUsQ0FBQztBQUVELE1BQU0sVUFBVSxXQUFXLENBQUksT0FBMkI7SUFDeEQsT0FBTyxPQUFPLENBQUMsYUFBYSxDQUFDLElBQUksQ0FDL0IsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUNmLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQzNCLENBQUM7QUFDSixDQUFDO0FBRUQsTUFBTSxVQUFVLFVBQVUsQ0FBSSxJQUF3QjtJQUNwRCxPQUFPLFFBQVEsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztBQUNyQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2lnbmFsIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IHRvU2lnbmFsIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wXCI7XG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcbmltcG9ydCB7IE9ic2VydmFibGUsIG1hcCwgbWVyZ2UsIG9mLCBzdGFydFdpdGggfSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHsgY29tcHV0ZWRBc3luYyB9IGZyb20gXCJuZ3h0ZW5zaW9uL2NvbXB1dGVkLWFzeW5jXCI7XG5pbXBvcnQgeyBjb21wdXRlRmFrZSB9IGZyb20gXCJAbmctYXRvbWljL2NvcmVcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldFZhbHVlJDxUPihjb250cm9sOiBBYnN0cmFjdENvbnRyb2w8VD4pOiBPYnNlcnZhYmxlPFQ+IHtcbiAgcmV0dXJuIG1lcmdlKG9mKGNvbnRyb2wudmFsdWUpLCBjb250cm9sLnZhbHVlQ2hhbmdlcyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRWYWx1ZTxUPihjb250cm9sOiBBYnN0cmFjdENvbnRyb2w8VD4pOiBTaWduYWw8VD4ge1xuICByZXR1cm4gdG9TaWduYWwoZ2V0VmFsdWUkKGNvbnRyb2wpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFJhd1ZhbHVlJDxUPihjb250cm9sOiBBYnN0cmFjdENvbnRyb2w8VD4pOiBPYnNlcnZhYmxlPFQ+IHtcbiAgcmV0dXJuIG1lcmdlKG9mKGNvbnRyb2wuZ2V0UmF3VmFsdWUoKSksIGNvbnRyb2wudmFsdWVDaGFuZ2VzLnBpcGUobWFwKCgpID0+IGNvbnRyb2wuZ2V0UmF3VmFsdWUoKSkpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFJhd1ZhbHVlPFQ+KGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbDxUPik6IFNpZ25hbDxUPiB7XG4gIHJldHVybiB0b1NpZ25hbChnZXRSYXdWYWx1ZSQoY29udHJvbCkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29tcHV0ZWRSYXdWYWx1ZTxUPihjb250cm9sRmFjdG9yeTogKCkgPT4gQWJzdHJhY3RDb250cm9sPFQ+KTogU2lnbmFsPFQ+IHtcbiAgcmV0dXJuIGNvbXB1dGVkQXN5bmMoKCkgPT4gY29udHJvbEZhY3RvcnkoKS52YWx1ZUNoYW5nZXMucGlwZShcbiAgICBzdGFydFdpdGgobnVsbCksXG4gICAgbWFwKCgpID0+IGNvbnRyb2xGYWN0b3J5KCkuZ2V0UmF3VmFsdWUoKSksXG4gICksIHsgaW5pdGlhbFZhbHVlOiBjb21wdXRlRmFrZShjb250cm9sRmFjdG9yeSgpKS5nZXRSYXdWYWx1ZSgpIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0SW52YWxpZCQ8VD4oY29udHJvbDogQWJzdHJhY3RDb250cm9sPFQ+KTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gIHJldHVybiBjb250cm9sLnN0YXR1c0NoYW5nZXMucGlwZShcbiAgICBzdGFydFdpdGgobnVsbCksXG4gICAgbWFwKCgpID0+IGNvbnRyb2wuaW52YWxpZCksXG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRJbnZhbGlkPFQ+KGZvcm06IEFic3RyYWN0Q29udHJvbDxUPik6IFNpZ25hbDxib29sZWFuPiB7XG4gIHJldHVybiB0b1NpZ25hbChnZXRJbnZhbGlkJChmb3JtKSk7XG59XG5cbiJdfQ==
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 { provide: DATA_ACCESSOR, useFactory };
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 { provide: DATA_ACCESSOR, useFactory };\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;SACxE,mBAAmB,CAAI,aAAoC,MAAM,mBAAmB,EAAA;AAClG,IAAA,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,CAAC;AAChD,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;;;ACtBD;;AAEG;;;;"}
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 provideLangMap(useFactory) {
43
- return { provide: DOMAIN_LANG_MAP, useFactory };
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 { provide: DOMAIN_LANG_MAP, useFactory };\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":"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"}
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":"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"}