@ng-atomic/common 18.10.0 → 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 +3 -2
- 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 +2 -1
- package/fesm2022/ng-atomic-common-services-form-json-schema.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
|
@@ -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==
|
|
@@ -120,7 +120,8 @@ export class JsonSchemaFormUtils {
|
|
|
120
120
|
// const type = ? 'date' : property.type;
|
|
121
121
|
}
|
|
122
122
|
console.debug('[buildFormFieldMapByJsonSchema] fieldMap:', fieldMap);
|
|
123
|
-
|
|
123
|
+
console.debug('[buildFormFieldMapByJsonSchema] options.merge:', options.merge);
|
|
124
|
+
return { ...fieldMap, ...options.merge };
|
|
124
125
|
}
|
|
125
126
|
}
|
|
126
127
|
export function buildFormGroup(klass, { fb = inject(FormBuilder).nonNullable, value, }) {
|
|
@@ -156,4 +157,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.2", ngImpor
|
|
|
156
157
|
type: Injectable,
|
|
157
158
|
args: [{ providedIn: 'root' }]
|
|
158
159
|
}] });
|
|
159
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNvbi1zY2hlbWEuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BuZy1hdG9taWMvY29tbW9uL3NyYy9saWIvc2VydmljZXMvZm9ybS9qc29uLXNjaGVtYS9qc29uLXNjaGVtYS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxXQUFXLEVBQXFDLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTVGLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxRCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sV0FBVyxDQUFDOztBQUVsQyxNQUFNLE9BQU8sbUJBQW1CO0lBQzlCLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBbUIsS0FBUTtRQUNuRCxPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUU7WUFDeEQsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksS0FBSyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxLQUFLLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQzlFLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2hDLENBQUM7aUJBQU0sSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksS0FBSyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUM5RCxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMs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QUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2hELE9BQU87UUFDTCxJQUFJLEVBQUUsSUFBSSxDQUFDLDBCQUEwQixDQUFDLE1BQU0sRUFBRSxFQUFDLEVBQUUsRUFBRSxLQUFLLEVBQUMsQ0FBQztRQUMxRCxRQUFRLEVBQUUsSUFBSSxDQUFDLDZCQUE2QixDQUFDLE1BQU0sRUFBRSxFQUFDLEtBQUssRUFBRSxRQUFRLEVBQUMsQ0FBQztLQUN4RSxDQUFDO0FBQ0osQ0FBQztBQUlELE1BQU0sT0FBTyxxQkFBcUI7SUFEbEM7UUFFVSxPQUFFLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDLFdBQVcsQ0FBQztLQW9COUM7SUFsQkMsS0FBSyxDQUFDLE1BQWtCLEVBQUUsRUFDeEIsRUFBRSxHQUFHLElBQUksQ0FBQyxFQUFFLEVBQ1osS0FBSyxHQUFHLEVBQUUsTUFJUixFQUFFO1FBQ0osT0FBTyxtQkFBbUIsQ0FBQywwQkFBMEIsQ0FBQyxNQUFNLEVBQUUsRUFBQyxFQUFFLEVBQUUsS0FBSyxFQUFDLENBQUMsQ0FBQztJQUM3RSxDQUFDO0lBRUQsYUFBYSxDQUNYLE1BQWtCLEVBQ2xCLFVBRUksRUFBRTtRQUVOLE9BQU8sbUJBQW1CLENBQUMsNkJBQTZCLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQzVFLENBQUM7OEdBcEJVLHFCQUFxQjtrSEFBckIscUJBQXFCLGNBRFIsTUFBTTs7MkZBQ25CLHFCQUFxQjtrQkFEakMsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBpbmplY3QgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Hcm91cCwgTm9uTnVsbGFibGVGb3JtQnVpbGRlciwgVmFsaWRhdG9ycyB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xuaW1wb3J0IHsgSnNvblNjaGVtYSB9IGZyb20gXCJqc29uLXNjaGVtYS1saWJyYXJ5XCI7XG5pbXBvcnQgeyB0YXJnZXRDb25zdHJ1Y3RvclRvU2NoZW1hIH0gZnJvbSAnLi9qc29uLXNjaGVtYSc7XG5pbXBvcnQgeyBtZXJnZSB9IGZyb20gXCJsb2Rhc2gtZXNcIjtcblxuZXhwb3J0IGNsYXNzIEpzb25TY2hlbWFGb3JtVXRpbHMge1xuICBzdGF0aWMgcmVtb3ZlT2JqZWN0UGVyY2VudDxUIGV4dGVuZHMgb2JqZWN0Pih2YWx1ZTogVCk6IGFueSB7XG4gICAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHZhbHVlKS5yZWR1Y2UoKGFjYywgW2tleSwgdmFsdWVdKSA9PiB7XG4gICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyAmJiB2YWx1ZS5zdGFydHNXaXRoKCclJykgJiYgdmFsdWUuZW5kc1dpdGgoJyUnKSkge1xuICAgICAgICBhY2Nba2V5XSA9IHZhbHVlLnNsaWNlKDEsIC0xKTtcbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyAmJiB2YWx1ZS5zdGFydHNXaXRoKCclJykpIHtcbiAgICAgICAgYWNjW2tleV0gPSB2YWx1ZS5zbGljZSgxKTtcbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyAmJiB2YWx1ZS5lbmRzV2l0aCgnJScpKSB7XG4gICAgICAgIGFjY1trZXldID0gdmFsdWUuc2xpY2UoMCwgLTEpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYWNjW2tleV0gPSB2YWx1ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBhY2M7XG4gICAgfSwge30pO1xuICB9XG5cbiAgc3RhdGljIGJ1aWxkRm9ybUdyb3VwQnlKc29uU2NoZW1hKHNjaGVtYTogSnNvblNjaGVtYSwge1xuICAgIGZiID0gaW5qZWN0KEZvcm1CdWlsZGVyKS5ub25OdWxsYWJsZSxcbiAgICB2YWx1ZSA9IHt9LFxuICB9OiB7XG4gICAgZmI/OiBGb3JtQnVpbGRlciB8IE5vbk51bGxhYmxlRm9ybUJ1aWxkZXIsXG4gICAgdmFsdWU/OiBvYmplY3QsXG4gIH0gPSB7fSk6IEZvcm1Hcm91cCB7XG4gICAgY29uc29sZS5kZWJ1ZygnW2J1aWxkRm9ybUdyb3VwQnlKc29uU2NoZW1hXSBzY2hlbWE6Jywgc2NoZW1hKTtcbiAgICBpZiAoIXNjaGVtYSB8fCAhc2NoZW1hPy5wcm9wZXJ0aWVzKSB7XG4gICAgICByZXR1cm4gZmIuZ3JvdXAoe30pO1xuICAgIH1cbiAgICBjb25zdCBncm91cDogYW55ID0ge307XG4gICAgXG4gICAgZm9yIChjb25zdCBrZXkgaW4gc2NoZW1hLnByb3BlcnRpZXMpIHtcbiAgICAgIGNvbnN0IHByb3BlcnR5ID0gc2NoZW1hLnByb3BlcnRpZXNba2V5XTtcbiAgICAgIGNvbnN0IHZhbGlkYXRvcnMgPSBbXTtcbiAgXG4gICAgICBpZiAoc2NoZW1hLnJlcXVpcmVkICYmIHNjaGVtYS5yZXF1aXJlZC5pbmNsdWRlcyhrZXkpKSB7XG4gICAgICAgIHZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLnJlcXVpcmVkKTtcbiAgICAgIH1cbiAgICAgIGdyb3VwW2tleV0gPSB0aGlzLmJ1aWxkRm9ybUJ5SnNvblNjaGVtYVByb3BlcnR5KHByb3BlcnR5LCB7ZmIsIHZhbHVlOiB2YWx1ZT8uW2tleV0sIHZhbGlkYXRvcnN9KTtcbiAgICB9XG4gICAgcmV0dXJuIGZiLmdyb3VwKGdyb3VwKTtcbiAgfVxuICBcbiAgc3RhdGljIGJ1aWxkRm9ybUFycmF5QnlKc29uU2NoZW1hKHNjaGVtYTogSnNvblNjaGVtYSwge1xuICAgIGZiID0gaW5qZWN0KEZvcm1CdWlsZGVyKS5ub25OdWxsYWJsZSxcbiAgICB2YWx1ZSA9IFtdLFxuICB9OiB7XG4gICAgZmI/OiBGb3JtQnVpbGRlciB8IE5vbk51bGxhYmxlRm9ybUJ1aWxkZXIsXG4gICAgdmFsdWU/OiBhbnlbXSxcbiAgfSA9IHt9KTogYW55IHtcbiAgICBpZiAoIXNjaGVtYSB8fCAhc2NoZW1hLml0ZW1zKSB7XG4gICAgICByZXR1cm4gZmIuYXJyYXkoW10pO1xuICAgIH1cbiAgICBjb25zb2xlLmRlYnVnKCdbYnVpbGRGb3JtQXJyYXlCeUpzb25TY2hlbWFdIHNjaGVtYTonLCBzY2hlbWEpO1xuICAgIGNvbnN0IGFycmF5ID0gZmIuYXJyYXkoW1xuICAgICAgdGhpcy5idWlsZEZvcm1Hcm91cEJ5SnNvblNjaGVtYShzY2hlbWEuaXRlbXMsIHtmYn0pLFxuICAgIF0pXG4gICAgcmV0dXJuIGFycmF5O1xuICB9XG4gIFxuICBzdGF0aWMgYnVpbGRGb3JtQnlKc29uU2NoZW1hUHJvcGVydHkocHJvcGVydHk6IEpzb25TY2hlbWEsIHtcbiAgICBmYiA9IGluamVjdChGb3JtQnVpbGRlcikubm9uTnVsbGFibGUsXG4gICAgdmFsdWUgPSBudWxsLFxuICAgIHZhbGlkYXRvcnMgPSBbXSxcbiAgfToge1xuICAgIGZiPzogRm9ybUJ1aWxkZXIgfCBOb25OdWxsYWJsZUZvcm1CdWlsZGVyLFxuICAgIHZhbHVlPzogb2JqZWN0IHwgb2JqZWN0W10sXG4gICAgdmFsaWRhdG9ycz86IGFueVtdLFxuICB9ID0ge30pOiBhbnkge1xuICAgIGlmIChwcm9wZXJ0eS50eXBlID09PSAnc3RyaW5nJykge1xuICAgICAgaWYgKHByb3BlcnR5LmZvcm1hdCA9PT0gJ2RhdGUtdGltZScpIHtcbiAgICAgICAgcmV0dXJuIGZiLmNvbnRyb2wodmFsdWUgPz8gcHJvcGVydHkuZGVmYXVsdCA/PyBudWxsLCB2YWxpZGF0b3JzKTtcbiAgICAgIH0gZWxzZSBpZiAocHJvcGVydHkuZm9ybWF0ID09PSAnYmluYXJ5Jykge1xuICAgICAgICByZXR1cm4gZmIuY29udHJvbCh2YWx1ZSA/PyBwcm9wZXJ0eS5kZWZhdWx0ID8/IG51bGwsIHZhbGlkYXRvcnMpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGZiLmNvbnRyb2wodmFsdWUgPz8gcHJvcGVydHkuZGVmYXVsdCA/PyAnJywgdmFsaWRhdG9ycyk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChwcm9wZXJ0eS50eXBlID09PSAnaW50ZWdlcicpIHtcbiAgICAgIHJldHVybiBmYi5jb250cm9sKHZhbHVlID8/IHByb3BlcnR5LmRlZmF1bHQgPz8gMCwgdmFsaWRhdG9ycyk7XG4gICAgfSBlbHNlIGlmIChwcm9wZXJ0eS50eXBlID09PSAnbnVtYmVyJykge1xuICAgICAgcmV0dXJuIGZiLmNvbnRyb2wodmFsdWUgPz8gcHJvcGVydHkuZGVmYXVsdCA/PyAwLCB2YWxpZGF0b3JzKTtcbiAgICB9IGVsc2UgaWYgKHByb3BlcnR5LnR5cGUgPT09ICdvYmplY3QnKSB7XG4gICAgICByZXR1cm4gdGhpcy5idWlsZEZvcm1Hcm91cEJ5SnNvblNjaGVtYShwcm9wZXJ0eSwge2ZiLCB2YWx1ZTogKHZhbHVlIHx8IHt9KSBhcyBvYmplY3R9KTtcbiAgICB9XG4gICAgZWxzZSBpZiAocHJvcGVydHkudHlwZSA9PT0gJ2FycmF5Jykge1xuICAgICAgcmV0dXJuIHRoaXMuYnVpbGRGb3JtQXJyYXlCeUpzb25TY2hlbWEocHJvcGVydHksIHtmYiwgdmFsdWU6ICh2YWx1ZSB8fCBbXSkgYXMgYW55W119KTtcbiAgICB9XG4gIH1cbiAgXG5cbiAgc3RhdGljIGJ1aWxkRm9ybUJ5SnNvblNjaGVtYShzY2hlbWE6IEpzb25TY2hlbWEsIHtcbiAgICBmYiA9IGluamVjdChGb3JtQnVpbGRlcikubm9uTnVsbGFibGUsXG4gICAgdmFsdWUgPSB7fSxcbiAgICBmaWVsZE1hcCA9IHt9LFxuICB9OiB7XG4gICAgZmI/OiBGb3JtQnVpbGRlciB8IE5vbk51bGxhYmxlRm9ybUJ1aWxkZXIsXG4gICAgdmFsdWU/OiBvYmplY3QsXG4gICAgZmllbGRNYXA/OiBvYmplY3QsXG4gIH0gPSB7fSk6IGFueSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGZvcm06IHRoaXMuYnVpbGRGb3JtR3JvdXBCeUpzb25TY2hlbWEoc2NoZW1hLCB7ZmIsIHZhbHVlfSksXG4gICAgICBmaWVsZE1hcDogdGhpcy5idWlsZEZvcm1GaWVsZE1hcEJ5SnNvblNjaGVtYShzY2hlbWEsIHttZXJnZTogZmllbGRNYXB9KSxcbiAgICB9O1xuICB9XG5cbiAgc3RhdGljIGJ1aWxkRm9ybUZpZWxkTWFwQnlKc29uU2NoZW1hKFxuICAgIHNjaGVtYTogSnNvblNjaGVtYSxcbiAgICBvcHRpb25zOiB7XG4gICAgICBtZXJnZT86IHsgW2tleTogc3RyaW5nXTogYW55IH0sXG4gICAgfSA9IHt9LFxuICApOiBhbnkge1xuICAgIGlmICghc2NoZW1hIHx8ICFzY2hlbWEucHJvcGVydGllcykge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgaWQ6IHsgdHlwZTogJ2hpZGRlbicgfSxcbiAgICAgIH07XG4gICAgfVxuICAgIGNvbnN0IGZpZWxkTWFwOiBhbnkgPSB7fTtcbiAgICBcbiAgICBmb3IgKGNvbnN0IGtleSBpbiBzY2hlbWEucHJvcGVydGllcykge1xuICAgICAgY29uc3QgcHJvcGVydHkgPSBzY2hlbWEucHJvcGVydGllc1trZXldO1xuICAgICAgaWYgKHByb3BlcnR5LnR5cGUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGlmIChwcm9wZXJ0eS5lbnVtKSB7XG4gICAgICAgICAgZmllbGRNYXBba2V5XSA9IHsgdHlwZTogJ3NlbGVjdCcsIG9wdGlvbnM6IHByb3BlcnR5LmVudW0ubWFwKCh2OiBzdHJpbmcpID0+ICh7IHZhbHVlOiB2LCBuYW1lOiB2IH0pKSB9O1xuICAgICAgICB9IGVsc2UgaWYgKHByb3BlcnR5LmZvcm1hdCA9PT0gJ2RhdGUtdGltZScpIHtcbiAgICAgICAgICBmaWVsZE1hcFtrZXldID0geyB0eXBlOiAnZGF0ZScgfTtcbiAgICAgICAgfSBlbHNlIGlmIChwcm9wZXJ0eS5mb3JtYXQgPT09ICdiaW5hcnknKSB7XG4gICAgICAgICAgZmllbGRNYXBba2V5XSA9IHsgdHlwZTogJ2ZpbGUnIH07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZmllbGRNYXBba2V5XSA9IHsgdHlwZTogJ3RleHQnIH07XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAocHJvcGVydHkudHlwZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgY29uc3QgY2hpbGRGaWVsZE1hcCA9IHRoaXMuYnVpbGRGb3JtRmllbGRNYXBCeUpzb25TY2hlbWEocHJvcGVydHksIG9wdGlvbnMpO1xuICAgICAgICBmb3IgKGNvbnN0IGNoaWxkS2V5IGluIGNoaWxkRmllbGRNYXApIHtcbiAgICAgICAgICBmaWVsZE1hcFtgJHtrZXl9LiR7Y2hpbGRLZXl9YF0gPSBjaGlsZEZpZWxkTWFwW2NoaWxkS2V5XTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChwcm9wZXJ0eS50eXBlID09PSAnYXJyYXknKSB7XG4gICAgICAgIGNvbnN0IGNoaWxkRmllbGRNYXAgPSB0aGlzLmJ1aWxkRm9ybUZpZWxkTWFwQnlKc29uU2NoZW1hKHByb3BlcnR5Lml0ZW1zLCBvcHRpb25zKTtcbiAgICAgICAgZm9yIChjb25zdCBjaGlsZEtleSBpbiBjaGlsZEZpZWxkTWFwKSB7XG4gICAgICAgICAgLy8gVE9ETzog5q2j6KaP6KGo54++44Gn44OR44K544Oe44OD44OB44KS5Yik5a6a44Gn44GN44KL44KI44GG44Gr44GZ44KL44CCXG4gICAgICAgICAgZmllbGRNYXBbYCR7a2V5fS5cXFxcZCsuJHtjaGlsZEtleX1gXSA9IGNoaWxkRmllbGRNYXBbY2hpbGRLZXldO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBmaWVsZE1hcFtrZXldID0geyB0eXBlOiBwcm9wZXJ0eS50eXBlIH07XG4gICAgICB9XG4gICAgICAvLyBjb25zdCB0eXBlID0gID8gJ2RhdGUnIDogcHJvcGVydHkudHlwZTtcbiAgICB9XG4gIFxuICAgIGNvbnNvbGUuZGVidWcoJ1tidWlsZEZvcm1GaWVsZE1hcEJ5SnNvblNjaGVtYV0gZmllbGRNYXA6JywgZmllbGRNYXApO1xuICBcbiAgICByZXR1cm4gbWVyZ2UoZmllbGRNYXAsIG9wdGlvbnMubWVyZ2UpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBidWlsZEZvcm1Hcm91cChrbGFzczogbmV3KCkgPT4gYW55LCB7XG4gIGZiID0gaW5qZWN0KEZvcm1CdWlsZGVyKS5ub25OdWxsYWJsZSxcbiAgdmFsdWUsXG59OiB7XG4gIGZiPzogRm9ybUJ1aWxkZXIgfCBOb25OdWxsYWJsZUZvcm1CdWlsZGVyLFxuICB2YWx1ZT86IG9iamVjdCxcbn0pOiBGb3JtR3JvdXAge1xuICBjb25zdCBzY2hlbWEgPSB0YXJnZXRDb25zdHJ1Y3RvclRvU2NoZW1hKGtsYXNzKTtcbiAgcmV0dXJuIHRoaXMuYnVpbGRGb3JtR3JvdXBCeUpzb25TY2hlbWEoc2NoZW1hLCB7ZmIsIHZhbHVlfSk7XG59XG5cblxuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkRm9ybUZpZWxkTWFwKGtsYXNzOiBuZXcoKSA9PiBhbnksIG9wdGlvbnM6IHtcbiAgbWVyZ2U/OiB7IFtrZXk6IHN0cmluZ106IGFueSB9LFxufSk6IGFueSB7XG4gIGNvbnN0IHNjaGVtYSA9IHRhcmdldENvbnN0cnVjdG9yVG9TY2hlbWEoa2xhc3MpO1xuICBjb25zdCBtYXAgPSB0aGlzLmJ1aWxkRm9ybUZpZWxkTWFwQnlKc29uU2NoZW1hKHNjaGVtYSwgb3B0aW9ucyk7XG4gIHJldHVybiBtZXJnZShtYXAsIG9wdGlvbnMubWVyZ2UpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRGb3JtKGtsYXNzOiBuZXcoKSA9PiBhbnksIHtcbiAgZmIgPSBpbmplY3QoRm9ybUJ1aWxkZXIpLm5vbk51bGxhYmxlLFxuICB2YWx1ZSA9IHt9LFxuICBmaWVsZE1hcCA9IHt9LFxufToge1xuICBmYj86IEZvcm1CdWlsZGVyIHwgTm9uTnVsbGFibGVGb3JtQnVpbGRlcixcbiAgdmFsdWU/OiBvYmplY3QsXG4gIGZpZWxkTWFwPzogb2JqZWN0LFxufSA9IHt9KTogYW55IHtcbiAgY29uc3Qgc2NoZW1hID0gdGFyZ2V0Q29uc3RydWN0b3JUb1NjaGVtYShrbGFzcyk7XG4gIHJldHVybiB7XG4gICAgZm9ybTogdGhpcy5idWlsZEZvcm1Hcm91cEJ5SnNvblNjaGVtYShzY2hlbWEsIHtmYiwgdmFsdWV9KSxcbiAgICBmaWVsZE1hcDogdGhpcy5idWlsZEZvcm1GaWVsZE1hcEJ5SnNvblNjaGVtYShzY2hlbWEsIHttZXJnZTogZmllbGRNYXB9KSxcbiAgfTtcbn1cblxuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIEpzb25TY2hlbWFGb3JtU2VydmljZSB7XG4gIHByaXZhdGUgZmIgPSBpbmplY3QoRm9ybUJ1aWxkZXIpLm5vbk51bGxhYmxlO1xuXG4gIGJ1aWxkKHNjaGVtYTogSnNvblNjaGVtYSwge1xuICAgIGZiID0gdGhpcy5mYixcbiAgICB2YWx1ZSA9IHt9LFxuICB9OiB7XG4gICAgZmI/OiBGb3JtQnVpbGRlciB8IE5vbk51bGxhYmxlRm9ybUJ1aWxkZXIsXG4gICAgdmFsdWU/OiBvYmplY3QsXG4gIH0gPSB7fSk6IEZvcm1Hcm91cCB7XG4gICAgcmV0dXJuIEpzb25TY2hlbWFGb3JtVXRpbHMuYnVpbGRGb3JtR3JvdXBCeUpzb25TY2hlbWEoc2NoZW1hLCB7ZmIsIHZhbHVlfSk7XG4gIH1cblxuICBidWlsZEZpZWxkTWFwKFxuICAgIHNjaGVtYTogSnNvblNjaGVtYSxcbiAgICBvcHRpb25zOiB7XG4gICAgICBtZXJnZT86IHsgW2tleTogc3RyaW5nXTogYW55IH0sXG4gICAgfSA9IHt9LFxuICApOiBhbnkge1xuICAgIHJldHVybiBKc29uU2NoZW1hRm9ybVV0aWxzLmJ1aWxkRm9ybUZpZWxkTWFwQnlKc29uU2NoZW1hKHNjaGVtYSwgb3B0aW9ucyk7XG4gIH1cbn1cbiJdfQ==
|
|
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=
|
|
@@ -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":"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"}
|
|
@@ -168,7 +168,8 @@ class JsonSchemaFormUtils {
|
|
|
168
168
|
// const type = ? 'date' : property.type;
|
|
169
169
|
}
|
|
170
170
|
console.debug('[buildFormFieldMapByJsonSchema] fieldMap:', fieldMap);
|
|
171
|
-
|
|
171
|
+
console.debug('[buildFormFieldMapByJsonSchema] options.merge:', options.merge);
|
|
172
|
+
return { ...fieldMap, ...options.merge };
|
|
172
173
|
}
|
|
173
174
|
}
|
|
174
175
|
function buildFormGroup(klass, { fb = inject(FormBuilder).nonNullable, value, }) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ng-atomic-common-services-form-json-schema.mjs","sources":["../../../../../packages/@ng-atomic/common/src/lib/services/form/json-schema/json-schema.ts","../../../../../packages/@ng-atomic/common/src/lib/services/form/json-schema/json-schema.service.ts","../../../../../packages/@ng-atomic/common/src/lib/services/form/json-schema/ng-atomic-common-services-form-json-schema.ts"],"sourcesContent":["import { ValidationTypes } from \"class-validator\"\nimport { targetConstructorToSchema as _targetConstructorToSchema } from \"class-validator-jsonschema\"\nimport { IOptions } from \"class-validator-jsonschema/build/options\";\nimport { JSONSchema7 } from 'json-schema';\n// TODO(@NozomuMiyamoto): fix\n// @ts-ignore\n// const { defaultMetadataStorage } = require('class-transformer/cjs/storage');\nimport { defaultMetadataStorage } from 'class-transformer/esm5/storage';\n\nfunction getPropType(target: object, property: string) {\n return Reflect.getMetadata('design:type', target, property)\n}\n\nfunction targetToSchema(\n type: any,\n options: any\n): any {\n if (typeof type === 'function') {\n if (\n type.prototype === String.prototype ||\n type.prototype === Symbol.prototype\n ) {\n return { type: 'string' }\n } else if (type.prototype === Number.prototype) {\n return { type: 'number' }\n } else if (type.prototype === Boolean.prototype) {\n return { type: 'boolean' }\n }\n\n return targetConstructorToSchema(type, options)\n }\n}\n\nconst additionalConverters= {\n [ValidationTypes.NESTED_VALIDATION]: (meta: any, options: any) => {\n if (typeof meta.target === 'function') {\n const typeMeta = options.classTransformerMetadataStorage\n ? options.classTransformerMetadataStorage.findTypeMetadata(\n meta.target,\n meta.propertyName\n )\n : null\n const childType = typeMeta\n ? typeMeta.typeFunction()\n : getPropType(meta.target.prototype, meta.propertyName)\n return targetToSchema(childType, options)\n }\n },\n isDayjs: (meta: any): JSONSchema7 => {\n return {\n type: 'string',\n format: 'date-time', // JSON Schemaで日付型を指定\n };\n },\n};\n\nexport function targetConstructorToSchema(target: Function, options: Partial<IOptions> = {}) {\n return _targetConstructorToSchema(target, {\n ...options,\n additionalConverters,\n classTransformerMetadataStorage: defaultMetadataStorage,\n });\n}\n","import { Injectable, inject } from \"@angular/core\";\nimport { FormBuilder, FormGroup, NonNullableFormBuilder, Validators } from \"@angular/forms\";\nimport { JsonSchema } from \"json-schema-library\";\nimport { targetConstructorToSchema } from './json-schema';\nimport { merge } from \"lodash-es\";\n\nexport class JsonSchemaFormUtils {\n static removeObjectPercent<T extends object>(value: T): any {\n return Object.entries(value).reduce((acc, [key, value]) => {\n if (typeof value === 'string' && value.startsWith('%') && value.endsWith('%')) {\n acc[key] = value.slice(1, -1);\n } else if (typeof value === 'string' && value.startsWith('%')) {\n acc[key] = value.slice(1);\n } else if (typeof value === 'string' && value.endsWith('%')) {\n acc[key] = value.slice(0, -1);\n } else {\n acc[key] = value;\n }\n return acc;\n }, {});\n }\n\n static buildFormGroupByJsonSchema(schema: JsonSchema, {\n fb = inject(FormBuilder).nonNullable,\n value = {},\n }: {\n fb?: FormBuilder | NonNullableFormBuilder,\n value?: object,\n } = {}): FormGroup {\n console.debug('[buildFormGroupByJsonSchema] schema:', schema);\n if (!schema || !schema?.properties) {\n return fb.group({});\n }\n const group: any = {};\n \n for (const key in schema.properties) {\n const property = schema.properties[key];\n const validators = [];\n \n if (schema.required && schema.required.includes(key)) {\n validators.push(Validators.required);\n }\n group[key] = this.buildFormByJsonSchemaProperty(property, {fb, value: value?.[key], validators});\n }\n return fb.group(group);\n }\n \n static buildFormArrayByJsonSchema(schema: JsonSchema, {\n fb = inject(FormBuilder).nonNullable,\n value = [],\n }: {\n fb?: FormBuilder | NonNullableFormBuilder,\n value?: any[],\n } = {}): any {\n if (!schema || !schema.items) {\n return fb.array([]);\n }\n console.debug('[buildFormArrayByJsonSchema] schema:', schema);\n const array = fb.array([\n this.buildFormGroupByJsonSchema(schema.items, {fb}),\n ])\n return array;\n }\n \n static buildFormByJsonSchemaProperty(property: JsonSchema, {\n fb = inject(FormBuilder).nonNullable,\n value = null,\n validators = [],\n }: {\n fb?: FormBuilder | NonNullableFormBuilder,\n value?: object | object[],\n validators?: any[],\n } = {}): any {\n if (property.type === 'string') {\n if (property.format === 'date-time') {\n return fb.control(value ?? property.default ?? null, validators);\n } else if (property.format === 'binary') {\n return fb.control(value ?? property.default ?? null, validators);\n } else {\n return fb.control(value ?? property.default ?? '', validators);\n }\n } else if (property.type === 'integer') {\n return fb.control(value ?? property.default ?? 0, validators);\n } else if (property.type === 'number') {\n return fb.control(value ?? property.default ?? 0, validators);\n } else if (property.type === 'object') {\n return this.buildFormGroupByJsonSchema(property, {fb, value: (value || {}) as object});\n }\n else if (property.type === 'array') {\n return this.buildFormArrayByJsonSchema(property, {fb, value: (value || []) as any[]});\n }\n }\n \n\n static buildFormByJsonSchema(schema: JsonSchema, {\n fb = inject(FormBuilder).nonNullable,\n value = {},\n fieldMap = {},\n }: {\n fb?: FormBuilder | NonNullableFormBuilder,\n value?: object,\n fieldMap?: object,\n } = {}): any {\n return {\n form: this.buildFormGroupByJsonSchema(schema, {fb, value}),\n fieldMap: this.buildFormFieldMapByJsonSchema(schema, {merge: fieldMap}),\n };\n }\n\n static buildFormFieldMapByJsonSchema(\n schema: JsonSchema,\n options: {\n merge?: { [key: string]: any },\n } = {},\n ): any {\n if (!schema || !schema.properties) {\n return {\n id: { type: 'hidden' },\n };\n }\n const fieldMap: any = {};\n \n for (const key in schema.properties) {\n const property = schema.properties[key];\n if (property.type === 'string') {\n if (property.enum) {\n fieldMap[key] = { type: 'select', options: property.enum.map((v: string) => ({ value: v, name: v })) };\n } else if (property.format === 'date-time') {\n fieldMap[key] = { type: 'date' };\n } else if (property.format === 'binary') {\n fieldMap[key] = { type: 'file' };\n } else {\n fieldMap[key] = { type: 'text' };\n }\n } else if (property.type === 'object') {\n const childFieldMap = this.buildFormFieldMapByJsonSchema(property, options);\n for (const childKey in childFieldMap) {\n fieldMap[`${key}.${childKey}`] = childFieldMap[childKey];\n }\n } else if (property.type === 'array') {\n const childFieldMap = this.buildFormFieldMapByJsonSchema(property.items, options);\n for (const childKey in childFieldMap) {\n // TODO: 正規表現でパスマッチを判定できるようにする。\n fieldMap[`${key}.\\\\d+.${childKey}`] = childFieldMap[childKey];\n }\n } else {\n fieldMap[key] = { type: property.type };\n }\n // const type = ? 'date' : property.type;\n }\n \n console.debug('[buildFormFieldMapByJsonSchema] fieldMap:', fieldMap);\n \n return merge(fieldMap, options.merge);\n }\n}\n\nexport function buildFormGroup(klass: new() => any, {\n fb = inject(FormBuilder).nonNullable,\n value,\n}: {\n fb?: FormBuilder | NonNullableFormBuilder,\n value?: object,\n}): FormGroup {\n const schema = targetConstructorToSchema(klass);\n return this.buildFormGroupByJsonSchema(schema, {fb, value});\n}\n\n\nexport function buildFormFieldMap(klass: new() => any, options: {\n merge?: { [key: string]: any },\n}): any {\n const schema = targetConstructorToSchema(klass);\n const map = this.buildFormFieldMapByJsonSchema(schema, options);\n return merge(map, options.merge);\n}\n\nexport function buildForm(klass: new() => any, {\n fb = inject(FormBuilder).nonNullable,\n value = {},\n fieldMap = {},\n}: {\n fb?: FormBuilder | NonNullableFormBuilder,\n value?: object,\n fieldMap?: object,\n} = {}): any {\n const schema = targetConstructorToSchema(klass);\n return {\n form: this.buildFormGroupByJsonSchema(schema, {fb, value}),\n fieldMap: this.buildFormFieldMapByJsonSchema(schema, {merge: fieldMap}),\n };\n}\n\n\n@Injectable({ providedIn: 'root' })\nexport class JsonSchemaFormService {\n private fb = inject(FormBuilder).nonNullable;\n\n build(schema: JsonSchema, {\n fb = this.fb,\n value = {},\n }: {\n fb?: FormBuilder | NonNullableFormBuilder,\n value?: object,\n } = {}): FormGroup {\n return JsonSchemaFormUtils.buildFormGroupByJsonSchema(schema, {fb, value});\n }\n\n buildFieldMap(\n schema: JsonSchema,\n options: {\n merge?: { [key: string]: any },\n } = {},\n ): any {\n return JsonSchemaFormUtils.buildFormFieldMapByJsonSchema(schema, options);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["_targetConstructorToSchema"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ng-atomic-common-services-form-json-schema.mjs","sources":["../../../../../packages/@ng-atomic/common/src/lib/services/form/json-schema/json-schema.ts","../../../../../packages/@ng-atomic/common/src/lib/services/form/json-schema/json-schema.service.ts","../../../../../packages/@ng-atomic/common/src/lib/services/form/json-schema/ng-atomic-common-services-form-json-schema.ts"],"sourcesContent":["import { ValidationTypes } from \"class-validator\"\nimport { targetConstructorToSchema as _targetConstructorToSchema } from \"class-validator-jsonschema\"\nimport { IOptions } from \"class-validator-jsonschema/build/options\";\nimport { JSONSchema7 } from 'json-schema';\n// TODO(@NozomuMiyamoto): fix\n// @ts-ignore\n// const { defaultMetadataStorage } = require('class-transformer/cjs/storage');\nimport { defaultMetadataStorage } from 'class-transformer/esm5/storage';\n\nfunction getPropType(target: object, property: string) {\n return Reflect.getMetadata('design:type', target, property)\n}\n\nfunction targetToSchema(\n type: any,\n options: any\n): any {\n if (typeof type === 'function') {\n if (\n type.prototype === String.prototype ||\n type.prototype === Symbol.prototype\n ) {\n return { type: 'string' }\n } else if (type.prototype === Number.prototype) {\n return { type: 'number' }\n } else if (type.prototype === Boolean.prototype) {\n return { type: 'boolean' }\n }\n\n return targetConstructorToSchema(type, options)\n }\n}\n\nconst additionalConverters= {\n [ValidationTypes.NESTED_VALIDATION]: (meta: any, options: any) => {\n if (typeof meta.target === 'function') {\n const typeMeta = options.classTransformerMetadataStorage\n ? options.classTransformerMetadataStorage.findTypeMetadata(\n meta.target,\n meta.propertyName\n )\n : null\n const childType = typeMeta\n ? typeMeta.typeFunction()\n : getPropType(meta.target.prototype, meta.propertyName)\n return targetToSchema(childType, options)\n }\n },\n isDayjs: (meta: any): JSONSchema7 => {\n return {\n type: 'string',\n format: 'date-time', // JSON Schemaで日付型を指定\n };\n },\n};\n\nexport function targetConstructorToSchema(target: Function, options: Partial<IOptions> = {}) {\n return _targetConstructorToSchema(target, {\n ...options,\n additionalConverters,\n classTransformerMetadataStorage: defaultMetadataStorage,\n });\n}\n","import { Injectable, inject } from \"@angular/core\";\nimport { FormBuilder, FormGroup, NonNullableFormBuilder, Validators } from \"@angular/forms\";\nimport { JsonSchema } from \"json-schema-library\";\nimport { targetConstructorToSchema } from './json-schema';\nimport { merge } from \"lodash-es\";\n\nexport class JsonSchemaFormUtils {\n static removeObjectPercent<T extends object>(value: T): any {\n return Object.entries(value).reduce((acc, [key, value]) => {\n if (typeof value === 'string' && value.startsWith('%') && value.endsWith('%')) {\n acc[key] = value.slice(1, -1);\n } else if (typeof value === 'string' && value.startsWith('%')) {\n acc[key] = value.slice(1);\n } else if (typeof value === 'string' && value.endsWith('%')) {\n acc[key] = value.slice(0, -1);\n } else {\n acc[key] = value;\n }\n return acc;\n }, {});\n }\n\n static buildFormGroupByJsonSchema(schema: JsonSchema, {\n fb = inject(FormBuilder).nonNullable,\n value = {},\n }: {\n fb?: FormBuilder | NonNullableFormBuilder,\n value?: object,\n } = {}): FormGroup {\n console.debug('[buildFormGroupByJsonSchema] schema:', schema);\n if (!schema || !schema?.properties) {\n return fb.group({});\n }\n const group: any = {};\n \n for (const key in schema.properties) {\n const property = schema.properties[key];\n const validators = [];\n \n if (schema.required && schema.required.includes(key)) {\n validators.push(Validators.required);\n }\n group[key] = this.buildFormByJsonSchemaProperty(property, {fb, value: value?.[key], validators});\n }\n return fb.group(group);\n }\n \n static buildFormArrayByJsonSchema(schema: JsonSchema, {\n fb = inject(FormBuilder).nonNullable,\n value = [],\n }: {\n fb?: FormBuilder | NonNullableFormBuilder,\n value?: any[],\n } = {}): any {\n if (!schema || !schema.items) {\n return fb.array([]);\n }\n console.debug('[buildFormArrayByJsonSchema] schema:', schema);\n const array = fb.array([\n this.buildFormGroupByJsonSchema(schema.items, {fb}),\n ])\n return array;\n }\n \n static buildFormByJsonSchemaProperty(property: JsonSchema, {\n fb = inject(FormBuilder).nonNullable,\n value = null,\n validators = [],\n }: {\n fb?: FormBuilder | NonNullableFormBuilder,\n value?: object | object[],\n validators?: any[],\n } = {}): any {\n if (property.type === 'string') {\n if (property.format === 'date-time') {\n return fb.control(value ?? property.default ?? null, validators);\n } else if (property.format === 'binary') {\n return fb.control(value ?? property.default ?? null, validators);\n } else {\n return fb.control(value ?? property.default ?? '', validators);\n }\n } else if (property.type === 'integer') {\n return fb.control(value ?? property.default ?? 0, validators);\n } else if (property.type === 'number') {\n return fb.control(value ?? property.default ?? 0, validators);\n } else if (property.type === 'object') {\n return this.buildFormGroupByJsonSchema(property, {fb, value: (value || {}) as object});\n }\n else if (property.type === 'array') {\n return this.buildFormArrayByJsonSchema(property, {fb, value: (value || []) as any[]});\n }\n }\n \n\n static buildFormByJsonSchema(schema: JsonSchema, {\n fb = inject(FormBuilder).nonNullable,\n value = {},\n fieldMap = {},\n }: {\n fb?: FormBuilder | NonNullableFormBuilder,\n value?: object,\n fieldMap?: object,\n } = {}): any {\n return {\n form: this.buildFormGroupByJsonSchema(schema, {fb, value}),\n fieldMap: this.buildFormFieldMapByJsonSchema(schema, {merge: fieldMap}),\n };\n }\n\n static buildFormFieldMapByJsonSchema(\n schema: JsonSchema,\n options: {\n merge?: { [key: string]: any },\n } = {},\n ): any {\n if (!schema || !schema.properties) {\n return {\n id: { type: 'hidden' },\n };\n }\n const fieldMap: any = {};\n \n for (const key in schema.properties) {\n const property = schema.properties[key];\n if (property.type === 'string') {\n if (property.enum) {\n fieldMap[key] = { type: 'select', options: property.enum.map((v: string) => ({ value: v, name: v })) };\n } else if (property.format === 'date-time') {\n fieldMap[key] = { type: 'date' };\n } else if (property.format === 'binary') {\n fieldMap[key] = { type: 'file' };\n } else {\n fieldMap[key] = { type: 'text' };\n }\n } else if (property.type === 'object') {\n const childFieldMap = this.buildFormFieldMapByJsonSchema(property, options);\n for (const childKey in childFieldMap) {\n fieldMap[`${key}.${childKey}`] = childFieldMap[childKey];\n }\n } else if (property.type === 'array') {\n const childFieldMap = this.buildFormFieldMapByJsonSchema(property.items, options);\n for (const childKey in childFieldMap) {\n // TODO: 正規表現でパスマッチを判定できるようにする。\n fieldMap[`${key}.\\\\d+.${childKey}`] = childFieldMap[childKey];\n }\n } else {\n fieldMap[key] = { type: property.type };\n }\n // const type = ? 'date' : property.type;\n }\n \n console.debug('[buildFormFieldMapByJsonSchema] fieldMap:', fieldMap);\n console.debug('[buildFormFieldMapByJsonSchema] options.merge:', options.merge);\n \n return {...fieldMap, ...options.merge};\n }\n}\n\nexport function buildFormGroup(klass: new() => any, {\n fb = inject(FormBuilder).nonNullable,\n value,\n}: {\n fb?: FormBuilder | NonNullableFormBuilder,\n value?: object,\n}): FormGroup {\n const schema = targetConstructorToSchema(klass);\n return this.buildFormGroupByJsonSchema(schema, {fb, value});\n}\n\n\nexport function buildFormFieldMap(klass: new() => any, options: {\n merge?: { [key: string]: any },\n}): any {\n const schema = targetConstructorToSchema(klass);\n const map = this.buildFormFieldMapByJsonSchema(schema, options);\n return merge(map, options.merge);\n}\n\nexport function buildForm(klass: new() => any, {\n fb = inject(FormBuilder).nonNullable,\n value = {},\n fieldMap = {},\n}: {\n fb?: FormBuilder | NonNullableFormBuilder,\n value?: object,\n fieldMap?: object,\n} = {}): any {\n const schema = targetConstructorToSchema(klass);\n return {\n form: this.buildFormGroupByJsonSchema(schema, {fb, value}),\n fieldMap: this.buildFormFieldMapByJsonSchema(schema, {merge: fieldMap}),\n };\n}\n\n\n@Injectable({ providedIn: 'root' })\nexport class JsonSchemaFormService {\n private fb = inject(FormBuilder).nonNullable;\n\n build(schema: JsonSchema, {\n fb = this.fb,\n value = {},\n }: {\n fb?: FormBuilder | NonNullableFormBuilder,\n value?: object,\n } = {}): FormGroup {\n return JsonSchemaFormUtils.buildFormGroupByJsonSchema(schema, {fb, value});\n }\n\n buildFieldMap(\n schema: JsonSchema,\n options: {\n merge?: { [key: string]: any },\n } = {},\n ): any {\n return JsonSchemaFormUtils.buildFormFieldMapByJsonSchema(schema, options);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["_targetConstructorToSchema"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ng-atomic/common",
|
|
3
|
-
"version": "18.
|
|
3
|
+
"version": "18.11.0",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"peerDependencies": {
|
|
6
6
|
"@angular/cdk": "^18.0.0",
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
"@angular/material": "^18.0.0",
|
|
12
12
|
"@angular/router": "^18.0.0",
|
|
13
13
|
"@ngrx/component-store": "^18.0.0",
|
|
14
|
-
"@nx-ddd/core": "18.
|
|
14
|
+
"@nx-ddd/core": "18.11.0",
|
|
15
15
|
"dayjs": "1.11.12",
|
|
16
16
|
"flat": "^6.0.0",
|
|
17
17
|
"lodash-es": "^4.17.15",
|
|
@@ -340,18 +340,18 @@
|
|
|
340
340
|
"esm": "./esm2022/stores/entities/ng-atomic-common-stores-entities.mjs",
|
|
341
341
|
"default": "./fesm2022/ng-atomic-common-stores-entities.mjs"
|
|
342
342
|
},
|
|
343
|
-
"./stores/entity": {
|
|
344
|
-
"types": "./stores/entity/index.d.ts",
|
|
345
|
-
"esm2022": "./esm2022/stores/entity/ng-atomic-common-stores-entity.mjs",
|
|
346
|
-
"esm": "./esm2022/stores/entity/ng-atomic-common-stores-entity.mjs",
|
|
347
|
-
"default": "./fesm2022/ng-atomic-common-stores-entity.mjs"
|
|
348
|
-
},
|
|
349
343
|
"./stores/pagination": {
|
|
350
344
|
"types": "./stores/pagination/index.d.ts",
|
|
351
345
|
"esm2022": "./esm2022/stores/pagination/ng-atomic-common-stores-pagination.mjs",
|
|
352
346
|
"esm": "./esm2022/stores/pagination/ng-atomic-common-stores-pagination.mjs",
|
|
353
347
|
"default": "./fesm2022/ng-atomic-common-stores-pagination.mjs"
|
|
354
348
|
},
|
|
349
|
+
"./stores/entity": {
|
|
350
|
+
"types": "./stores/entity/index.d.ts",
|
|
351
|
+
"esm2022": "./esm2022/stores/entity/ng-atomic-common-stores-entity.mjs",
|
|
352
|
+
"esm": "./esm2022/stores/entity/ng-atomic-common-stores-entity.mjs",
|
|
353
|
+
"default": "./fesm2022/ng-atomic-common-stores-entity.mjs"
|
|
354
|
+
},
|
|
355
355
|
"./stores/query": {
|
|
356
356
|
"types": "./stores/query/index.d.ts",
|
|
357
357
|
"esm2022": "./esm2022/stores/query/ng-atomic-common-stores-query.mjs",
|
|
@@ -3,7 +3,9 @@ import * as i0 from "@angular/core";
|
|
|
3
3
|
export type DataAccessor<T> = (obj: T, key: string, index?: number) => any;
|
|
4
4
|
export declare const DATA_ACCESSOR: InjectionToken<DataAccessor<any>>;
|
|
5
5
|
export declare const defaultDataAccessor: DataAccessor<any>;
|
|
6
|
-
export declare function provideDataAccessor<T>(useFactory?: () => DataAccessor<T
|
|
6
|
+
export declare function provideDataAccessor<T>(useFactory?: () => DataAccessor<T>, { merge }?: {
|
|
7
|
+
merge?: boolean;
|
|
8
|
+
}): {
|
|
7
9
|
provide: InjectionToken<DataAccessor<any>>;
|
|
8
10
|
useFactory: () => DataAccessor<T>;
|
|
9
11
|
};
|
|
@@ -16,7 +16,10 @@ export declare class DomainPipe implements PipeTransform {
|
|
|
16
16
|
static ɵfac: i0.ɵɵFactoryDeclaration<DomainPipe, never>;
|
|
17
17
|
static ɵpipe: i0.ɵɵPipeDeclaration<DomainPipe, "domain", true>;
|
|
18
18
|
}
|
|
19
|
-
export declare function
|
|
19
|
+
export declare function injectParentDomainLangMap(): DomainLangMap;
|
|
20
|
+
export declare function provideLangMap(useFactory: () => DomainLangMap, { merge }?: {
|
|
21
|
+
merge?: boolean;
|
|
22
|
+
}): {
|
|
20
23
|
provide: InjectionToken<DomainLangMap>;
|
|
21
24
|
useFactory: () => DomainLangMap;
|
|
22
25
|
};
|