@plumile/backoffice-core 0.1.59
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/LICENSE +21 -0
- package/lib/esm/base64.d.ts +3 -0
- package/lib/esm/base64.d.ts.map +1 -0
- package/lib/esm/base64.js +33 -0
- package/lib/esm/builders.d.ts +14 -0
- package/lib/esm/builders.d.ts.map +1 -0
- package/lib/esm/builders.js +34 -0
- package/lib/esm/constants.d.ts +14 -0
- package/lib/esm/constants.d.ts.map +1 -0
- package/lib/esm/constants.js +20 -0
- package/lib/esm/detail/pages.d.ts +29 -0
- package/lib/esm/detail/pages.d.ts.map +1 -0
- package/lib/esm/detail/pages.js +85 -0
- package/lib/esm/detailParams.d.ts +3 -0
- package/lib/esm/detailParams.d.ts.map +1 -0
- package/lib/esm/detailParams.js +15 -0
- package/lib/esm/filters/schema.d.ts +9 -0
- package/lib/esm/filters/schema.d.ts.map +1 -0
- package/lib/esm/filters/schema.js +101 -0
- package/lib/esm/filters/where.d.ts +4 -0
- package/lib/esm/filters/where.d.ts.map +1 -0
- package/lib/esm/filters/where.js +83 -0
- package/lib/esm/resolve.d.ts +13 -0
- package/lib/esm/resolve.d.ts.map +1 -0
- package/lib/esm/resolve.js +163 -0
- package/lib/esm/state/buildListHref.d.ts +14 -0
- package/lib/esm/state/buildListHref.d.ts.map +1 -0
- package/lib/esm/state/buildListHref.js +86 -0
- package/lib/esm/state/stableKey.d.ts +8 -0
- package/lib/esm/state/stableKey.d.ts.map +1 -0
- package/lib/esm/state/stableKey.js +17 -0
- package/lib/esm/state/urlState.d.ts +16 -0
- package/lib/esm/state/urlState.d.ts.map +1 -0
- package/lib/esm/state/urlState.js +48 -0
- package/lib/esm/types.d.ts +882 -0
- package/lib/esm/types.d.ts.map +1 -0
- package/lib/esm/types.js +8 -0
- package/lib/tsconfig.esm.tsbuildinfo +1 -0
- package/lib/types/base64.d.ts +3 -0
- package/lib/types/base64.d.ts.map +1 -0
- package/lib/types/builders.d.ts +14 -0
- package/lib/types/builders.d.ts.map +1 -0
- package/lib/types/constants.d.ts +14 -0
- package/lib/types/constants.d.ts.map +1 -0
- package/lib/types/detail/pages.d.ts +29 -0
- package/lib/types/detail/pages.d.ts.map +1 -0
- package/lib/types/detailParams.d.ts +3 -0
- package/lib/types/detailParams.d.ts.map +1 -0
- package/lib/types/filters/schema.d.ts +9 -0
- package/lib/types/filters/schema.d.ts.map +1 -0
- package/lib/types/filters/where.d.ts +4 -0
- package/lib/types/filters/where.d.ts.map +1 -0
- package/lib/types/resolve.d.ts +13 -0
- package/lib/types/resolve.d.ts.map +1 -0
- package/lib/types/state/buildListHref.d.ts +14 -0
- package/lib/types/state/buildListHref.d.ts.map +1 -0
- package/lib/types/state/stableKey.d.ts +8 -0
- package/lib/types/state/stableKey.d.ts.map +1 -0
- package/lib/types/state/urlState.d.ts +16 -0
- package/lib/types/state/urlState.d.ts.map +1 -0
- package/lib/types/types.d.ts +882 -0
- package/lib/types/types.d.ts.map +1 -0
- package/package.json +112 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) Plumile and its affiliates.
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base64.d.ts","sourceRoot":"","sources":["../../src/base64.ts"],"names":[],"mappings":"AAGA,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAoBxD;AAKD,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAmBxD"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
export function encodeUtf8ToBase64(value) {
|
|
2
|
+
if (typeof value !== 'string') {
|
|
3
|
+
throw new TypeError('encodeUtf8ToBase64 expects a string input.');
|
|
4
|
+
}
|
|
5
|
+
if (typeof Buffer !== 'undefined') {
|
|
6
|
+
return Buffer.from(value, 'utf-8').toString('base64');
|
|
7
|
+
}
|
|
8
|
+
if (typeof globalThis.btoa === 'function') {
|
|
9
|
+
const utf8 = encodeURIComponent(value).replace(/%([0-9A-F]{2})/g, (_, code) => {
|
|
10
|
+
return String.fromCharCode(Number.parseInt(code, 16));
|
|
11
|
+
});
|
|
12
|
+
return globalThis.btoa(utf8);
|
|
13
|
+
}
|
|
14
|
+
throw new Error('No base64 encoder is available in this environment.');
|
|
15
|
+
}
|
|
16
|
+
export function decodeBase64ToUtf8(value) {
|
|
17
|
+
if (typeof value !== 'string') {
|
|
18
|
+
throw new TypeError('decodeBase64ToUtf8 expects a string input.');
|
|
19
|
+
}
|
|
20
|
+
if (typeof Buffer !== 'undefined') {
|
|
21
|
+
return Buffer.from(value, 'base64').toString('utf-8');
|
|
22
|
+
}
|
|
23
|
+
if (typeof globalThis.atob === 'function') {
|
|
24
|
+
const binary = globalThis.atob(value);
|
|
25
|
+
const percentEncoded = Array.from(binary, (char) => {
|
|
26
|
+
const code = char.charCodeAt(0).toString(16).padStart(2, '0');
|
|
27
|
+
return `%${code}`;
|
|
28
|
+
}).join('');
|
|
29
|
+
return decodeURIComponent(percentEncoded);
|
|
30
|
+
}
|
|
31
|
+
throw new Error('No base64 decoder is available in this environment.');
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZTY0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2Jhc2U2NC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxNQUFNLFVBQVUsa0JBQWtCLENBQUMsS0FBYTtJQUM5QyxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQzlCLE1BQU0sSUFBSSxTQUFTLENBQUMsNENBQTRDLENBQUMsQ0FBQztJQUNwRSxDQUFDO0lBRUQsSUFBSSxPQUFPLE1BQU0sS0FBSyxXQUFXLEVBQUUsQ0FBQztRQUNsQyxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBRUQsSUFBSSxPQUFPLFVBQVUsQ0FBQyxJQUFJLEtBQUssVUFBVSxFQUFFLENBQUM7UUFDMUMsTUFBTSxJQUFJLEdBQUcsa0JBQWtCLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBTyxDQUM1QyxpQkFBaUIsRUFDakIsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUU7WUFDVixPQUFPLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUN4RCxDQUFDLENBQ0YsQ0FBQztRQUNGLE9BQU8sVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBRUQsTUFBTSxJQUFJLEtBQUssQ0FBQyxxREFBcUQsQ0FBQyxDQUFDO0FBQ3pFLENBQUM7QUFLRCxNQUFNLFVBQVUsa0JBQWtCLENBQUMsS0FBYTtJQUM5QyxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQzlCLE1BQU0sSUFBSSxTQUFTLENBQUMsNENBQTRDLENBQUMsQ0FBQztJQUNwRSxDQUFDO0lBRUQsSUFBSSxPQUFPLE1BQU0sS0FBSyxXQUFXLEVBQUUsQ0FBQztRQUNsQyxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBRUQsSUFBSSxPQUFPLFVBQVUsQ0FBQyxJQUFJLEtBQUssVUFBVSxFQUFFLENBQUM7UUFDMUMsTUFBTSxNQUFNLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN0QyxNQUFNLGNBQWMsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFO1lBQ2pELE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDOUQsT0FBTyxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ3BCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNaLE9BQU8sa0JBQWtCLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUVELE1BQU0sSUFBSSxLQUFLLENBQUMscURBQXFELENBQUMsQ0FBQztBQUN6RSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBFbmNvZGUgYSBVVEYtOCBzdHJpbmcgaW50byBhIGJhc2U2NCBzdHJpbmcuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBlbmNvZGVVdGY4VG9CYXNlNjQodmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XG4gIGlmICh0eXBlb2YgdmFsdWUgIT09ICdzdHJpbmcnKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignZW5jb2RlVXRmOFRvQmFzZTY0IGV4cGVjdHMgYSBzdHJpbmcgaW5wdXQuJyk7XG4gIH1cblxuICBpZiAodHlwZW9mIEJ1ZmZlciAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICByZXR1cm4gQnVmZmVyLmZyb20odmFsdWUsICd1dGYtOCcpLnRvU3RyaW5nKCdiYXNlNjQnKTtcbiAgfVxuXG4gIGlmICh0eXBlb2YgZ2xvYmFsVGhpcy5idG9hID09PSAnZnVuY3Rpb24nKSB7XG4gICAgY29uc3QgdXRmOCA9IGVuY29kZVVSSUNvbXBvbmVudCh2YWx1ZSkucmVwbGFjZShcbiAgICAgIC8lKFswLTlBLUZdezJ9KS9nLFxuICAgICAgKF8sIGNvZGUpID0+IHtcbiAgICAgICAgcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUoTnVtYmVyLnBhcnNlSW50KGNvZGUsIDE2KSk7XG4gICAgICB9LFxuICAgICk7XG4gICAgcmV0dXJuIGdsb2JhbFRoaXMuYnRvYSh1dGY4KTtcbiAgfVxuXG4gIHRocm93IG5ldyBFcnJvcignTm8gYmFzZTY0IGVuY29kZXIgaXMgYXZhaWxhYmxlIGluIHRoaXMgZW52aXJvbm1lbnQuJyk7XG59XG5cbi8qKlxuICogRGVjb2RlIGEgYmFzZTY0IHN0cmluZyBpbnRvIGEgVVRGLTggc3RyaW5nLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZGVjb2RlQmFzZTY0VG9VdGY4KHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcge1xuICBpZiAodHlwZW9mIHZhbHVlICE9PSAnc3RyaW5nJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2RlY29kZUJhc2U2NFRvVXRmOCBleHBlY3RzIGEgc3RyaW5nIGlucHV0LicpO1xuICB9XG5cbiAgaWYgKHR5cGVvZiBCdWZmZXIgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgcmV0dXJuIEJ1ZmZlci5mcm9tKHZhbHVlLCAnYmFzZTY0JykudG9TdHJpbmcoJ3V0Zi04Jyk7XG4gIH1cblxuICBpZiAodHlwZW9mIGdsb2JhbFRoaXMuYXRvYiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGNvbnN0IGJpbmFyeSA9IGdsb2JhbFRoaXMuYXRvYih2YWx1ZSk7XG4gICAgY29uc3QgcGVyY2VudEVuY29kZWQgPSBBcnJheS5mcm9tKGJpbmFyeSwgKGNoYXIpID0+IHtcbiAgICAgIGNvbnN0IGNvZGUgPSBjaGFyLmNoYXJDb2RlQXQoMCkudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDIsICcwJyk7XG4gICAgICByZXR1cm4gYCUke2NvZGV9YDtcbiAgICB9KS5qb2luKCcnKTtcbiAgICByZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KHBlcmNlbnRFbmNvZGVkKTtcbiAgfVxuXG4gIHRocm93IG5ldyBFcnJvcignTm8gYmFzZTY0IGRlY29kZXIgaXMgYXZhaWxhYmxlIGluIHRoaXMgZW52aXJvbm1lbnQuJyk7XG59XG4iXX0=
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { BackofficeDetailLayoutFacetConfig, BackofficeDetailPageFacetConfig, BackofficeEntityManifestItem, BackofficeListDetailFacetLoaderMap, BackofficeListFacetConfig, BackofficePickerFacetConfig, BackofficeToolFacetConfig, BackofficeToolFacetLoaderMap, BackofficeToolEntityConfig } from './types.js';
|
|
2
|
+
export declare const defineBackofficeToolEntity: <T extends BackofficeToolEntityConfig>(config: T) => T;
|
|
3
|
+
export declare const createListFacet: <T extends BackofficeListFacetConfig>(config: T) => T;
|
|
4
|
+
export declare const createPickerFacet: <T extends BackofficePickerFacetConfig>(config: T) => T;
|
|
5
|
+
export declare const createDetailLayoutFacet: <T extends BackofficeDetailLayoutFacetConfig>(config: T) => T;
|
|
6
|
+
export declare const createDetailPageFacet: <T extends BackofficeDetailPageFacetConfig>(config: T) => T;
|
|
7
|
+
export declare const createToolFacet: <T extends BackofficeToolFacetConfig>(config: T) => T;
|
|
8
|
+
export declare const createListDetailManifest: <TFacets extends BackofficeListDetailFacetLoaderMap>(config: Omit<BackofficeEntityManifestItem, "kind" | "facets"> & {
|
|
9
|
+
facets: TFacets;
|
|
10
|
+
}) => BackofficeEntityManifestItem;
|
|
11
|
+
export declare const createToolManifest: <TFacets extends BackofficeToolFacetLoaderMap>(config: Omit<BackofficeEntityManifestItem, "kind" | "hasList" | "detailPages" | "defaultDetailPageId" | "facets"> & {
|
|
12
|
+
facets: TFacets;
|
|
13
|
+
}) => BackofficeEntityManifestItem;
|
|
14
|
+
//# sourceMappingURL=builders.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"builders.d.ts","sourceRoot":"","sources":["../../src/builders.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iCAAiC,EACjC,+BAA+B,EAC/B,4BAA4B,EAC5B,kCAAkC,EAClC,yBAAyB,EACzB,2BAA2B,EAC3B,yBAAyB,EACzB,4BAA4B,EAC5B,0BAA0B,EAC3B,MAAM,YAAY,CAAC;AAEpB,eAAO,MAAM,0BAA0B,GACrC,CAAC,SAAS,0BAA0B,EAEpC,QAAQ,CAAC,KACR,CAEF,CAAC;AAEF,eAAO,MAAM,eAAe,GAAI,CAAC,SAAS,yBAAyB,EACjE,QAAQ,CAAC,KACR,CAEF,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAAI,CAAC,SAAS,2BAA2B,EACrE,QAAQ,CAAC,KACR,CAEF,CAAC;AAEF,eAAO,MAAM,uBAAuB,GAClC,CAAC,SAAS,iCAAiC,EAE3C,QAAQ,CAAC,KACR,CAEF,CAAC;AAEF,eAAO,MAAM,qBAAqB,GAChC,CAAC,SAAS,+BAA+B,EAEzC,QAAQ,CAAC,KACR,CAEF,CAAC;AAEF,eAAO,MAAM,eAAe,GAAI,CAAC,SAAS,yBAAyB,EACjE,QAAQ,CAAC,KACR,CAEF,CAAC;AAEF,eAAO,MAAM,wBAAwB,GACnC,OAAO,SAAS,kCAAkC,EAElD,QAAQ,IAAI,CAAC,4BAA4B,EAAE,MAAM,GAAG,QAAQ,CAAC,GAAG;IAC9D,MAAM,EAAE,OAAO,CAAC;CACjB,KACA,4BAKF,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAC7B,OAAO,SAAS,4BAA4B,EAE5C,QAAQ,IAAI,CACV,4BAA4B,EAC5B,MAAM,GAAG,SAAS,GAAG,aAAa,GAAG,qBAAqB,GAAG,QAAQ,CACtE,GAAG;IACF,MAAM,EAAE,OAAO,CAAC;CACjB,KACA,4BAQF,CAAC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
export const defineBackofficeToolEntity = (config) => {
|
|
2
|
+
return config;
|
|
3
|
+
};
|
|
4
|
+
export const createListFacet = (config) => {
|
|
5
|
+
return config;
|
|
6
|
+
};
|
|
7
|
+
export const createPickerFacet = (config) => {
|
|
8
|
+
return config;
|
|
9
|
+
};
|
|
10
|
+
export const createDetailLayoutFacet = (config) => {
|
|
11
|
+
return config;
|
|
12
|
+
};
|
|
13
|
+
export const createDetailPageFacet = (config) => {
|
|
14
|
+
return config;
|
|
15
|
+
};
|
|
16
|
+
export const createToolFacet = (config) => {
|
|
17
|
+
return config;
|
|
18
|
+
};
|
|
19
|
+
export const createListDetailManifest = (config) => {
|
|
20
|
+
return {
|
|
21
|
+
...config,
|
|
22
|
+
kind: 'list-detail',
|
|
23
|
+
};
|
|
24
|
+
};
|
|
25
|
+
export const createToolManifest = (config) => {
|
|
26
|
+
return {
|
|
27
|
+
...config,
|
|
28
|
+
kind: 'tool',
|
|
29
|
+
hasList: false,
|
|
30
|
+
detailPages: undefined,
|
|
31
|
+
defaultDetailPageId: undefined,
|
|
32
|
+
};
|
|
33
|
+
};
|
|
34
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGRlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYnVpbGRlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBWUEsTUFBTSxDQUFDLE1BQU0sMEJBQTBCLEdBQUcsQ0FHeEMsTUFBUyxFQUNOLEVBQUU7SUFDTCxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsQ0FDN0IsTUFBUyxFQUNOLEVBQUU7SUFDTCxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxDQUMvQixNQUFTLEVBQ04sRUFBRTtJQUNMLE9BQU8sTUFBTSxDQUFDO0FBQ2hCLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFHLENBR3JDLE1BQVMsRUFDTixFQUFFO0lBQ0wsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsQ0FHbkMsTUFBUyxFQUNOLEVBQUU7SUFDTCxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsQ0FDN0IsTUFBUyxFQUNOLEVBQUU7SUFDTCxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBRyxDQUd0QyxNQUVDLEVBQzZCLEVBQUU7SUFDaEMsT0FBTztRQUNMLEdBQUcsTUFBTTtRQUNULElBQUksRUFBRSxhQUFhO0tBQ3BCLENBQUM7QUFDSixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxDQUdoQyxNQUtDLEVBQzZCLEVBQUU7SUFDaEMsT0FBTztRQUNMLEdBQUcsTUFBTTtRQUNULElBQUksRUFBRSxNQUFNO1FBQ1osT0FBTyxFQUFFLEtBQUs7UUFDZCxXQUFXLEVBQUUsU0FBUztRQUN0QixtQkFBbUIsRUFBRSxTQUFTO0tBQy9CLENBQUM7QUFDSixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7XG4gIEJhY2tvZmZpY2VEZXRhaWxMYXlvdXRGYWNldENvbmZpZyxcbiAgQmFja29mZmljZURldGFpbFBhZ2VGYWNldENvbmZpZyxcbiAgQmFja29mZmljZUVudGl0eU1hbmlmZXN0SXRlbSxcbiAgQmFja29mZmljZUxpc3REZXRhaWxGYWNldExvYWRlck1hcCxcbiAgQmFja29mZmljZUxpc3RGYWNldENvbmZpZyxcbiAgQmFja29mZmljZVBpY2tlckZhY2V0Q29uZmlnLFxuICBCYWNrb2ZmaWNlVG9vbEZhY2V0Q29uZmlnLFxuICBCYWNrb2ZmaWNlVG9vbEZhY2V0TG9hZGVyTWFwLFxuICBCYWNrb2ZmaWNlVG9vbEVudGl0eUNvbmZpZyxcbn0gZnJvbSAnLi90eXBlcy5qcyc7XG5cbmV4cG9ydCBjb25zdCBkZWZpbmVCYWNrb2ZmaWNlVG9vbEVudGl0eSA9IDxcbiAgVCBleHRlbmRzIEJhY2tvZmZpY2VUb29sRW50aXR5Q29uZmlnLFxuPihcbiAgY29uZmlnOiBULFxuKTogVCA9PiB7XG4gIHJldHVybiBjb25maWc7XG59O1xuXG5leHBvcnQgY29uc3QgY3JlYXRlTGlzdEZhY2V0ID0gPFQgZXh0ZW5kcyBCYWNrb2ZmaWNlTGlzdEZhY2V0Q29uZmlnPihcbiAgY29uZmlnOiBULFxuKTogVCA9PiB7XG4gIHJldHVybiBjb25maWc7XG59O1xuXG5leHBvcnQgY29uc3QgY3JlYXRlUGlja2VyRmFjZXQgPSA8VCBleHRlbmRzIEJhY2tvZmZpY2VQaWNrZXJGYWNldENvbmZpZz4oXG4gIGNvbmZpZzogVCxcbik6IFQgPT4ge1xuICByZXR1cm4gY29uZmlnO1xufTtcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZURldGFpbExheW91dEZhY2V0ID0gPFxuICBUIGV4dGVuZHMgQmFja29mZmljZURldGFpbExheW91dEZhY2V0Q29uZmlnLFxuPihcbiAgY29uZmlnOiBULFxuKTogVCA9PiB7XG4gIHJldHVybiBjb25maWc7XG59O1xuXG5leHBvcnQgY29uc3QgY3JlYXRlRGV0YWlsUGFnZUZhY2V0ID0gPFxuICBUIGV4dGVuZHMgQmFja29mZmljZURldGFpbFBhZ2VGYWNldENvbmZpZyxcbj4oXG4gIGNvbmZpZzogVCxcbik6IFQgPT4ge1xuICByZXR1cm4gY29uZmlnO1xufTtcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZVRvb2xGYWNldCA9IDxUIGV4dGVuZHMgQmFja29mZmljZVRvb2xGYWNldENvbmZpZz4oXG4gIGNvbmZpZzogVCxcbik6IFQgPT4ge1xuICByZXR1cm4gY29uZmlnO1xufTtcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZUxpc3REZXRhaWxNYW5pZmVzdCA9IDxcbiAgVEZhY2V0cyBleHRlbmRzIEJhY2tvZmZpY2VMaXN0RGV0YWlsRmFjZXRMb2FkZXJNYXAsXG4+KFxuICBjb25maWc6IE9taXQ8QmFja29mZmljZUVudGl0eU1hbmlmZXN0SXRlbSwgJ2tpbmQnIHwgJ2ZhY2V0cyc+ICYge1xuICAgIGZhY2V0czogVEZhY2V0cztcbiAgfSxcbik6IEJhY2tvZmZpY2VFbnRpdHlNYW5pZmVzdEl0ZW0gPT4ge1xuICByZXR1cm4ge1xuICAgIC4uLmNvbmZpZyxcbiAgICBraW5kOiAnbGlzdC1kZXRhaWwnLFxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZVRvb2xNYW5pZmVzdCA9IDxcbiAgVEZhY2V0cyBleHRlbmRzIEJhY2tvZmZpY2VUb29sRmFjZXRMb2FkZXJNYXAsXG4+KFxuICBjb25maWc6IE9taXQ8XG4gICAgQmFja29mZmljZUVudGl0eU1hbmlmZXN0SXRlbSxcbiAgICAna2luZCcgfCAnaGFzTGlzdCcgfCAnZGV0YWlsUGFnZXMnIHwgJ2RlZmF1bHREZXRhaWxQYWdlSWQnIHwgJ2ZhY2V0cydcbiAgPiAmIHtcbiAgICBmYWNldHM6IFRGYWNldHM7XG4gIH0sXG4pOiBCYWNrb2ZmaWNlRW50aXR5TWFuaWZlc3RJdGVtID0+IHtcbiAgcmV0dXJuIHtcbiAgICAuLi5jb25maWcsXG4gICAga2luZDogJ3Rvb2wnLFxuICAgIGhhc0xpc3Q6IGZhbHNlLFxuICAgIGRldGFpbFBhZ2VzOiB1bmRlZmluZWQsXG4gICAgZGVmYXVsdERldGFpbFBhZ2VJZDogdW5kZWZpbmVkLFxuICB9O1xufTtcbiJdfQ==
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export declare const BACKOFFICE_RELATED_TAB_PAGE_SIZE: 30;
|
|
2
|
+
export declare const BACKOFFICE_LIST_REFETCH_POLICY: "store-and-network";
|
|
3
|
+
export declare const BACKOFFICE_LIST_DEFAULTS: {
|
|
4
|
+
readonly pageSize: 50;
|
|
5
|
+
};
|
|
6
|
+
export declare const BACKOFFICE_DATE_TIME_OPTIONS: {
|
|
7
|
+
readonly year: "numeric";
|
|
8
|
+
readonly month: "short";
|
|
9
|
+
readonly day: "numeric";
|
|
10
|
+
readonly hour: "2-digit";
|
|
11
|
+
readonly minute: "2-digit";
|
|
12
|
+
};
|
|
13
|
+
export declare const BACKOFFICE_ENTITY_FACET_KINDS: readonly ["list", "picker", "detail-layout", "detail-page", "tool"];
|
|
14
|
+
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,gCAAgC,EAAG,EAAW,CAAC;AAG5D,eAAO,MAAM,8BAA8B,EAAG,mBAA4B,CAAC;AAG3E,eAAO,MAAM,wBAAwB;;CAE3B,CAAC;AAEX,eAAO,MAAM,4BAA4B;;;;;;CAMM,CAAC;AAEhD,eAAO,MAAM,6BAA6B,qEAMhC,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export const BACKOFFICE_RELATED_TAB_PAGE_SIZE = 30;
|
|
2
|
+
export const BACKOFFICE_LIST_REFETCH_POLICY = 'store-and-network';
|
|
3
|
+
export const BACKOFFICE_LIST_DEFAULTS = {
|
|
4
|
+
pageSize: 50,
|
|
5
|
+
};
|
|
6
|
+
export const BACKOFFICE_DATE_TIME_OPTIONS = {
|
|
7
|
+
year: 'numeric',
|
|
8
|
+
month: 'short',
|
|
9
|
+
day: 'numeric',
|
|
10
|
+
hour: '2-digit',
|
|
11
|
+
minute: '2-digit',
|
|
12
|
+
};
|
|
13
|
+
export const BACKOFFICE_ENTITY_FACET_KINDS = [
|
|
14
|
+
'list',
|
|
15
|
+
'picker',
|
|
16
|
+
'detail-layout',
|
|
17
|
+
'detail-page',
|
|
18
|
+
'tool',
|
|
19
|
+
];
|
|
20
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbnN0YW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxNQUFNLENBQUMsTUFBTSxnQ0FBZ0MsR0FBRyxFQUFXLENBQUM7QUFHNUQsTUFBTSxDQUFDLE1BQU0sOEJBQThCLEdBQUcsbUJBQTRCLENBQUM7QUFHM0UsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQUc7SUFDdEMsUUFBUSxFQUFFLEVBQUU7Q0FDSixDQUFDO0FBRVgsTUFBTSxDQUFDLE1BQU0sNEJBQTRCLEdBQUc7SUFDMUMsSUFBSSxFQUFFLFNBQVM7SUFDZixLQUFLLEVBQUUsT0FBTztJQUNkLEdBQUcsRUFBRSxTQUFTO0lBQ2QsSUFBSSxFQUFFLFNBQVM7SUFDZixNQUFNLEVBQUUsU0FBUztDQUM0QixDQUFDO0FBRWhELE1BQU0sQ0FBQyxNQUFNLDZCQUE2QixHQUFHO0lBQzNDLE1BQU07SUFDTixRQUFRO0lBQ1IsZUFBZTtJQUNmLGFBQWE7SUFDYixNQUFNO0NBQ0UsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKiBTdGFuZGFyZCBwYWdlIHNpemUgZm9yIFwicmVsYXRlZFwiIHRhYnMgKGNvbm5lY3Rpb25zIGluc2lkZSBkZXRhaWwgcGFnZXMpLiAqL1xuZXhwb3J0IGNvbnN0IEJBQ0tPRkZJQ0VfUkVMQVRFRF9UQUJfUEFHRV9TSVpFID0gMzAgYXMgY29uc3Q7XG5cbi8qKiBGZXRjaCBwb2xpY3kgdXNlZCBieSBcIlJlZnJlc2hcIiBhY3Rpb25zIG9uIGxpc3QgcGFnZXMuICovXG5leHBvcnQgY29uc3QgQkFDS09GRklDRV9MSVNUX1JFRkVUQ0hfUE9MSUNZID0gJ3N0b3JlLWFuZC1uZXR3b3JrJyBhcyBjb25zdDtcblxuLyoqIERlZmF1bHQgcGFnZSBzaXplIGZvciBiYWNrb2ZmaWNlIGxpc3RzLiAqL1xuZXhwb3J0IGNvbnN0IEJBQ0tPRkZJQ0VfTElTVF9ERUZBVUxUUyA9IHtcbiAgcGFnZVNpemU6IDUwLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IGNvbnN0IEJBQ0tPRkZJQ0VfREFURV9USU1FX09QVElPTlMgPSB7XG4gIHllYXI6ICdudW1lcmljJyxcbiAgbW9udGg6ICdzaG9ydCcsXG4gIGRheTogJ251bWVyaWMnLFxuICBob3VyOiAnMi1kaWdpdCcsXG4gIG1pbnV0ZTogJzItZGlnaXQnLFxufSBhcyBjb25zdCBzYXRpc2ZpZXMgSW50bC5EYXRlVGltZUZvcm1hdE9wdGlvbnM7XG5cbmV4cG9ydCBjb25zdCBCQUNLT0ZGSUNFX0VOVElUWV9GQUNFVF9LSU5EUyA9IFtcbiAgJ2xpc3QnLFxuICAncGlja2VyJyxcbiAgJ2RldGFpbC1sYXlvdXQnLFxuICAnZGV0YWlsLXBhZ2UnLFxuICAndG9vbCcsXG5dIGFzIGNvbnN0O1xuIl19
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
type DetailPageBase = {
|
|
2
|
+
id: string;
|
|
3
|
+
path: string;
|
|
4
|
+
content: readonly unknown[];
|
|
5
|
+
};
|
|
6
|
+
export type DetailConfigErrorCode = 'MISSING_MAIN_PAGE' | 'DUPLICATE_PAGE_ID' | 'DUPLICATE_PAGE_PATH' | 'EMPTY_PAGE_CONTENT';
|
|
7
|
+
export type DetailConfigValidationError = {
|
|
8
|
+
code: DetailConfigErrorCode;
|
|
9
|
+
message: string;
|
|
10
|
+
entityId: string;
|
|
11
|
+
};
|
|
12
|
+
type DetailPageUnion<MainPage extends DetailPageBase, SubPage extends DetailPageBase> = MainPage | SubPage;
|
|
13
|
+
export type NormalizedDetailPages<MainPage extends DetailPageBase, SubPage extends DetailPageBase = MainPage> = {
|
|
14
|
+
pages: readonly DetailPageUnion<MainPage, SubPage>[];
|
|
15
|
+
defaultPage: DetailPageUnion<MainPage, SubPage>;
|
|
16
|
+
byId: ReadonlyMap<string, DetailPageUnion<MainPage, SubPage>>;
|
|
17
|
+
byPath: ReadonlyMap<string, DetailPageUnion<MainPage, SubPage>>;
|
|
18
|
+
};
|
|
19
|
+
type DetailPagesInput<MainPage extends DetailPageBase, SubPage extends DetailPageBase = MainPage> = {
|
|
20
|
+
mainPage: MainPage;
|
|
21
|
+
subPages?: readonly SubPage[];
|
|
22
|
+
};
|
|
23
|
+
export declare const validateDetailPages: <MainPage extends DetailPageBase, SubPage extends DetailPageBase = MainPage>(entityId: string, input: DetailPagesInput<MainPage, SubPage>) => DetailConfigValidationError[];
|
|
24
|
+
export declare const resolveDefaultDetailPage: <MainPage extends DetailPageBase, SubPage extends DetailPageBase = MainPage>(input: DetailPagesInput<MainPage, SubPage>) => DetailPageUnion<MainPage, SubPage>;
|
|
25
|
+
export declare const normalizeDetailPages: <MainPage extends DetailPageBase, SubPage extends DetailPageBase = MainPage>(input: DetailPagesInput<MainPage, SubPage>) => NormalizedDetailPages<MainPage, SubPage>;
|
|
26
|
+
export declare const resolveDetailPageById: <MainPage extends DetailPageBase, SubPage extends DetailPageBase = MainPage>(normalized: NormalizedDetailPages<MainPage, SubPage>, pageId: string) => DetailPageUnion<MainPage, SubPage> | null;
|
|
27
|
+
export declare const resolveDetailPageByPath: <MainPage extends DetailPageBase, SubPage extends DetailPageBase = MainPage>(normalized: NormalizedDetailPages<MainPage, SubPage>, pagePath: string) => DetailPageUnion<MainPage, SubPage> | null;
|
|
28
|
+
export {};
|
|
29
|
+
//# sourceMappingURL=pages.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pages.d.ts","sourceRoot":"","sources":["../../../src/detail/pages.ts"],"names":[],"mappings":"AAAA,KAAK,cAAc,GAAG;IACpB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,SAAS,OAAO,EAAE,CAAC;CAC7B,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAC7B,mBAAmB,GACnB,mBAAmB,GACnB,qBAAqB,GACrB,oBAAoB,CAAC;AAEzB,MAAM,MAAM,2BAA2B,GAAG;IACxC,IAAI,EAAE,qBAAqB,CAAC;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,KAAK,eAAe,CAClB,QAAQ,SAAS,cAAc,EAC/B,OAAO,SAAS,cAAc,IAC5B,QAAQ,GAAG,OAAO,CAAC;AAEvB,MAAM,MAAM,qBAAqB,CAC/B,QAAQ,SAAS,cAAc,EAC/B,OAAO,SAAS,cAAc,GAAG,QAAQ,IACvC;IACF,KAAK,EAAE,SAAS,eAAe,CAAC,QAAQ,EAAE,OAAO,CAAC,EAAE,CAAC;IACrD,WAAW,EAAE,eAAe,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAChD,IAAI,EAAE,WAAW,CAAC,MAAM,EAAE,eAAe,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;IAC9D,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,eAAe,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;CACjE,CAAC;AAEF,KAAK,gBAAgB,CACnB,QAAQ,SAAS,cAAc,EAC/B,OAAO,SAAS,cAAc,GAAG,QAAQ,IACvC;IACF,QAAQ,EAAE,QAAQ,CAAC;IACnB,QAAQ,CAAC,EAAE,SAAS,OAAO,EAAE,CAAC;CAC/B,CAAC;AAqBF,eAAO,MAAM,mBAAmB,GAC9B,QAAQ,SAAS,cAAc,EAC/B,OAAO,SAAS,cAAc,GAAG,QAAQ,EAEzC,UAAU,MAAM,EAChB,OAAO,gBAAgB,CAAC,QAAQ,EAAE,OAAO,CAAC,KACzC,2BAA2B,EAuC7B,CAAC;AAEF,eAAO,MAAM,wBAAwB,GACnC,QAAQ,SAAS,cAAc,EAC/B,OAAO,SAAS,cAAc,GAAG,QAAQ,EAEzC,OAAO,gBAAgB,CAAC,QAAQ,EAAE,OAAO,CAAC,KACzC,eAAe,CAAC,QAAQ,EAAE,OAAO,CAEnC,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAC/B,QAAQ,SAAS,cAAc,EAC/B,OAAO,SAAS,cAAc,GAAG,QAAQ,EAEzC,OAAO,gBAAgB,CAAC,QAAQ,EAAE,OAAO,CAAC,KACzC,qBAAqB,CAAC,QAAQ,EAAE,OAAO,CA4BzC,CAAC;AAEF,eAAO,MAAM,qBAAqB,GAChC,QAAQ,SAAS,cAAc,EAC/B,OAAO,SAAS,cAAc,GAAG,QAAQ,EAEzC,YAAY,qBAAqB,CAAC,QAAQ,EAAE,OAAO,CAAC,EACpD,QAAQ,MAAM,KACb,eAAe,CAAC,QAAQ,EAAE,OAAO,CAAC,GAAG,IAEvC,CAAC;AAEF,eAAO,MAAM,uBAAuB,GAClC,QAAQ,SAAS,cAAc,EAC/B,OAAO,SAAS,cAAc,GAAG,QAAQ,EAEzC,YAAY,qBAAqB,CAAC,QAAQ,EAAE,OAAO,CAAC,EACpD,UAAU,MAAM,KACf,eAAe,CAAC,QAAQ,EAAE,OAAO,CAAC,GAAG,IAGvC,CAAC"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
const normalizePath = (value) => {
|
|
2
|
+
return value.trim().replace(/^\/+|\/+$/g, '');
|
|
3
|
+
};
|
|
4
|
+
const getPages = (input) => {
|
|
5
|
+
const pages = [input.mainPage];
|
|
6
|
+
if (input.subPages != null) {
|
|
7
|
+
input.subPages.forEach((page) => {
|
|
8
|
+
pages.push(page);
|
|
9
|
+
});
|
|
10
|
+
}
|
|
11
|
+
return pages;
|
|
12
|
+
};
|
|
13
|
+
export const validateDetailPages = (entityId, input) => {
|
|
14
|
+
const errors = [];
|
|
15
|
+
const pages = getPages(input);
|
|
16
|
+
const seenIds = new Set();
|
|
17
|
+
const seenPaths = new Set();
|
|
18
|
+
pages.forEach((page) => {
|
|
19
|
+
if (page.content.length === 0) {
|
|
20
|
+
errors.push({
|
|
21
|
+
code: 'EMPTY_PAGE_CONTENT',
|
|
22
|
+
entityId,
|
|
23
|
+
message: `[${entityId}] detail page "${page.id}" has empty content`,
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
if (seenIds.has(page.id)) {
|
|
27
|
+
errors.push({
|
|
28
|
+
code: 'DUPLICATE_PAGE_ID',
|
|
29
|
+
entityId,
|
|
30
|
+
message: `[${entityId}] duplicate detail page id "${page.id}"`,
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
else {
|
|
34
|
+
seenIds.add(page.id);
|
|
35
|
+
}
|
|
36
|
+
const pagePath = normalizePath(page.path);
|
|
37
|
+
if (seenPaths.has(pagePath)) {
|
|
38
|
+
errors.push({
|
|
39
|
+
code: 'DUPLICATE_PAGE_PATH',
|
|
40
|
+
entityId,
|
|
41
|
+
message: `[${entityId}] duplicate detail page path "${pagePath}"`,
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
seenPaths.add(pagePath);
|
|
46
|
+
}
|
|
47
|
+
});
|
|
48
|
+
return errors;
|
|
49
|
+
};
|
|
50
|
+
export const resolveDefaultDetailPage = (input) => {
|
|
51
|
+
return input.mainPage;
|
|
52
|
+
};
|
|
53
|
+
export const normalizeDetailPages = (input) => {
|
|
54
|
+
const pages = getPages(input).map((page) => {
|
|
55
|
+
return {
|
|
56
|
+
...page,
|
|
57
|
+
path: normalizePath(page.path),
|
|
58
|
+
};
|
|
59
|
+
});
|
|
60
|
+
const byId = new Map();
|
|
61
|
+
const byPath = new Map();
|
|
62
|
+
pages.forEach((page) => {
|
|
63
|
+
byId.set(page.id, page);
|
|
64
|
+
byPath.set(page.path, page);
|
|
65
|
+
});
|
|
66
|
+
const [firstPage] = pages;
|
|
67
|
+
const defaultPage = firstPage;
|
|
68
|
+
if (defaultPage == null) {
|
|
69
|
+
throw new Error('detail pages normalization failed: missing default page');
|
|
70
|
+
}
|
|
71
|
+
return {
|
|
72
|
+
pages,
|
|
73
|
+
defaultPage,
|
|
74
|
+
byId,
|
|
75
|
+
byPath,
|
|
76
|
+
};
|
|
77
|
+
};
|
|
78
|
+
export const resolveDetailPageById = (normalized, pageId) => {
|
|
79
|
+
return normalized.byId.get(pageId) ?? null;
|
|
80
|
+
};
|
|
81
|
+
export const resolveDetailPageByPath = (normalized, pagePath) => {
|
|
82
|
+
const normalizedPath = normalizePath(pagePath);
|
|
83
|
+
return normalized.byPath.get(normalizedPath) ?? null;
|
|
84
|
+
};
|
|
85
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZGV0YWlsL3BhZ2VzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQXlDQSxNQUFNLGFBQWEsR0FBRyxDQUFDLEtBQWEsRUFBVSxFQUFFO0lBQzlDLE9BQU8sS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDaEQsQ0FBQyxDQUFDO0FBRUYsTUFBTSxRQUFRLEdBQUcsQ0FJZixLQUEwQyxFQUNKLEVBQUU7SUFDeEMsTUFBTSxLQUFLLEdBQXlDLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3JFLElBQUksS0FBSyxDQUFDLFFBQVEsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUMzQixLQUFLLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQzlCLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbkIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBQ0QsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxDQUlqQyxRQUFnQixFQUNoQixLQUEwQyxFQUNYLEVBQUU7SUFDakMsTUFBTSxNQUFNLEdBQWtDLEVBQUUsQ0FBQztJQUVqRCxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDOUIsTUFBTSxPQUFPLEdBQUcsSUFBSSxHQUFHLEVBQVUsQ0FBQztJQUNsQyxNQUFNLFNBQVMsR0FBRyxJQUFJLEdBQUcsRUFBVSxDQUFDO0lBRXBDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtRQUNyQixJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQzlCLE1BQU0sQ0FBQyxJQUFJLENBQUM7Z0JB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TUFBTSxjQUFjLEdBQUcsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQy9DLE9BQU8sVUFBVSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLElBQUksSUFBSSxDQUFDO0FBQ3ZELENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbInR5cGUgRGV0YWlsUGFnZUJhc2UgPSB7XG4gIGlkOiBzdHJpbmc7XG4gIHBhdGg6IHN0cmluZztcbiAgY29udGVudDogcmVhZG9ubHkgdW5rbm93bltdO1xufTtcblxuZXhwb3J0IHR5cGUgRGV0YWlsQ29uZmlnRXJyb3JDb2RlID1cbiAgfCAnTUlTU0lOR19NQUlOX1BBR0UnXG4gIHwgJ0RVUExJQ0FURV9QQUdFX0lEJ1xuICB8ICdEVVBMSUNBVEVfUEFHRV9QQVRIJ1xuICB8ICdFTVBUWV9QQUdFX0NPTlRFTlQnO1xuXG5leHBvcnQgdHlwZSBEZXRhaWxDb25maWdWYWxpZGF0aW9uRXJyb3IgPSB7XG4gIGNvZGU6IERldGFpbENvbmZpZ0Vycm9yQ29kZTtcbiAgbWVzc2FnZTogc3RyaW5nO1xuICBlbnRpdHlJZDogc3RyaW5nO1xufTtcblxudHlwZSBEZXRhaWxQYWdlVW5pb248XG4gIE1haW5QYWdlIGV4dGVuZHMgRGV0YWlsUGFnZUJhc2UsXG4gIFN1YlBhZ2UgZXh0ZW5kcyBEZXRhaWxQYWdlQmFzZSxcbj4gPSBNYWluUGFnZSB8IFN1YlBhZ2U7XG5cbmV4cG9ydCB0eXBlIE5vcm1hbGl6ZWREZXRhaWxQYWdlczxcbiAgTWFpblBhZ2UgZXh0ZW5kcyBEZXRhaWxQYWdlQmFzZSxcbiAgU3ViUGFnZSBleHRlbmRzIERldGFpbFBhZ2VCYXNlID0gTWFpblBhZ2UsXG4+ID0ge1xuICBwYWdlczogcmVhZG9ubHkgRGV0YWlsUGFnZVVuaW9uPE1haW5QYWdlLCBTdWJQYWdlPltdO1xuICBkZWZhdWx0UGFnZTogRGV0YWlsUGFnZVVuaW9uPE1haW5QYWdlLCBTdWJQYWdlPjtcbiAgYnlJZDogUmVhZG9ubHlNYXA8c3RyaW5nLCBEZXRhaWxQYWdlVW5pb248TWFpblBhZ2UsIFN1YlBhZ2U+PjtcbiAgYnlQYXRoOiBSZWFkb25seU1hcDxzdHJpbmcsIERldGFpbFBhZ2VVbmlvbjxNYWluUGFnZSwgU3ViUGFnZT4+O1xufTtcblxudHlwZSBEZXRhaWxQYWdlc0lucHV0PFxuICBNYWluUGFnZSBleHRlbmRzIERldGFpbFBhZ2VCYXNlLFxuICBTdWJQYWdlIGV4dGVuZHMgRGV0YWlsUGFnZUJhc2UgPSBNYWluUGFnZSxcbj4gPSB7XG4gIG1haW5QYWdlOiBNYWluUGFnZTtcbiAgc3ViUGFnZXM/OiByZWFkb25seSBTdWJQYWdlW107XG59O1xuXG5jb25zdCBub3JtYWxpemVQYXRoID0gKHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICByZXR1cm4gdmFsdWUudHJpbSgpLnJlcGxhY2UoL15cXC8rfFxcLyskL2csICcnKTtcbn07XG5cbmNvbnN0IGdldFBhZ2VzID0gPFxuICBNYWluUGFnZSBleHRlbmRzIERldGFpbFBhZ2VCYXNlLFxuICBTdWJQYWdlIGV4dGVuZHMgRGV0YWlsUGFnZUJhc2UgPSBNYWluUGFnZSxcbj4oXG4gIGlucHV0OiBEZXRhaWxQYWdlc0lucHV0PE1haW5QYWdlLCBTdWJQYWdlPixcbik6IERldGFpbFBhZ2VVbmlvbjxNYWluUGFnZSwgU3ViUGFnZT5bXSA9PiB7XG4gIGNvbnN0IHBhZ2VzOiBEZXRhaWxQYWdlVW5pb248TWFpblBhZ2UsIFN1YlBhZ2U+W10gPSBbaW5wdXQubWFpblBhZ2VdO1xuICBpZiAoaW5wdXQuc3ViUGFnZXMgIT0gbnVsbCkge1xuICAgIGlucHV0LnN1YlBhZ2VzLmZvckVhY2goKHBhZ2UpID0+IHtcbiAgICAgIHBhZ2VzLnB1c2gocGFnZSk7XG4gICAgfSk7XG4gIH1cbiAgcmV0dXJuIHBhZ2VzO1xufTtcblxuZXhwb3J0IGNvbnN0IHZhbGlkYXRlRGV0YWlsUGFnZXMgPSA8XG4gIE1haW5QYWdlIGV4dGVuZHMgRGV0YWlsUGFnZUJhc2UsXG4gIFN1YlBhZ2UgZXh0ZW5kcyBEZXRhaWxQYWdlQmFzZSA9IE1haW5QYWdlLFxuPihcbiAgZW50aXR5SWQ6IHN0cmluZyxcbiAgaW5wdXQ6IERldGFpbFBhZ2VzSW5wdXQ8TWFpblBhZ2UsIFN1YlBhZ2U+LFxuKTogRGV0YWlsQ29uZmlnVmFsaWRhdGlvbkVycm9yW10gPT4ge1xuICBjb25zdCBlcnJvcnM6IERldGFpbENvbmZpZ1ZhbGlkYXRpb25FcnJvcltdID0gW107XG5cbiAgY29uc3QgcGFnZXMgPSBnZXRQYWdlcyhpbnB1dCk7XG4gIGNvbnN0IHNlZW5JZHMgPSBuZXcgU2V0PHN0cmluZz4oKTtcbiAgY29uc3Qgc2VlblBhdGhzID0gbmV3IFNldDxzdHJpbmc+KCk7XG5cbiAgcGFnZXMuZm9yRWFjaCgocGFnZSkgPT4ge1xuICAgIGlmIChwYWdlLmNvbnRlbnQubGVuZ3RoID09PSAwKSB7XG4gICAgICBlcnJvcnMucHVzaCh7XG4gICAgICAgIGNvZGU6ICdFTVBUWV9QQUdFX0NPTlRFTlQnLFxuICAgICAgICBlbnRpdHlJZCxcbiAgICAgICAgbWVzc2FnZTogYFske2VudGl0eUlkfV0gZGV0YWlsIHBhZ2UgXCIke3BhZ2UuaWR9XCIgaGFzIGVtcHR5IGNvbnRlbnRgLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKHNlZW5JZHMuaGFzKHBhZ2UuaWQpKSB7XG4gICAgICBlcnJvcnMucHVzaCh7XG4gICAgICAgIGNvZGU6ICdEVVBMSUNBVEVfUEFHRV9JRCcsXG4gICAgICAgIGVudGl0eUlkLFxuICAgICAgICBtZXNzYWdlOiBgWyR7ZW50aXR5SWR9XSBkdXBsaWNhdGUgZGV0YWlsIHBhZ2UgaWQgXCIke3BhZ2UuaWR9XCJgLFxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNlZW5JZHMuYWRkKHBhZ2UuaWQpO1xuICAgIH1cblxuICAgIGNvbnN0IHBhZ2VQYXRoID0gbm9ybWFsaXplUGF0aChwYWdlLnBhdGgpO1xuICAgIGlmIChzZWVuUGF0aHMuaGFzKHBhZ2VQYXRoKSkge1xuICAgICAgZXJyb3JzLnB1c2goe1xuICAgICAgICBjb2RlOiAnRFVQTElDQVRFX1BBR0VfUEFUSCcsXG4gICAgICAgIGVudGl0eUlkLFxuICAgICAgICBtZXNzYWdlOiBgWyR7ZW50aXR5SWR9XSBkdXBsaWNhdGUgZGV0YWlsIHBhZ2UgcGF0aCBcIiR7cGFnZVBhdGh9XCJgLFxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNlZW5QYXRocy5hZGQocGFnZVBhdGgpO1xuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIGVycm9ycztcbn07XG5cbmV4cG9ydCBjb25zdCByZXNvbHZlRGVmYXVsdERldGFpbFBhZ2UgPSA8XG4gIE1haW5QYWdlIGV4dGVuZHMgRGV0YWlsUGFnZUJhc2UsXG4gIFN1YlBhZ2UgZXh0ZW5kcyBEZXRhaWxQYWdlQmFzZSA9IE1haW5QYWdlLFxuPihcbiAgaW5wdXQ6IERldGFpbFBhZ2VzSW5wdXQ8TWFpblBhZ2UsIFN1YlBhZ2U+LFxuKTogRGV0YWlsUGFnZVVuaW9uPE1haW5QYWdlLCBTdWJQYWdlPiA9PiB7XG4gIHJldHVybiBpbnB1dC5tYWluUGFnZTtcbn07XG5cbmV4cG9ydCBjb25zdCBub3JtYWxpemVEZXRhaWxQYWdlcyA9IDxcbiAgTWFpblBhZ2UgZXh0ZW5kcyBEZXRhaWxQYWdlQmFzZSxcbiAgU3ViUGFnZSBleHRlbmRzIERldGFpbFBhZ2VCYXNlID0gTWFpblBhZ2UsXG4+KFxuICBpbnB1dDogRGV0YWlsUGFnZXNJbnB1dDxNYWluUGFnZSwgU3ViUGFnZT4sXG4pOiBOb3JtYWxpemVkRGV0YWlsUGFnZXM8TWFpblBhZ2UsIFN1YlBhZ2U+ID0+IHtcbiAgY29uc3QgcGFnZXMgPSBnZXRQYWdlcyhpbnB1dCkubWFwKChwYWdlKSA9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnBhZ2UsXG4gICAgICBwYXRoOiBub3JtYWxpemVQYXRoKHBhZ2UucGF0aCksXG4gICAgfTtcbiAgfSk7XG5cbiAgY29uc3QgYnlJZCA9IG5ldyBNYXA8c3RyaW5nLCBEZXRhaWxQYWdlVW5pb248TWFpblBhZ2UsIFN1YlBhZ2U+PigpO1xuICBjb25zdCBieVBhdGggPSBuZXcgTWFwPHN0cmluZywgRGV0YWlsUGFnZVVuaW9uPE1haW5QYWdlLCBTdWJQYWdlPj4oKTtcblxuICBwYWdlcy5mb3JFYWNoKChwYWdlKSA9PiB7XG4gICAgYnlJZC5zZXQocGFnZS5pZCwgcGFnZSk7XG4gICAgYnlQYXRoLnNldChwYWdlLnBhdGgsIHBhZ2UpO1xuICB9KTtcblxuICBjb25zdCBbZmlyc3RQYWdlXSA9IHBhZ2VzO1xuICBjb25zdCBkZWZhdWx0UGFnZTogRGV0YWlsUGFnZVVuaW9uPE1haW5QYWdlLCBTdWJQYWdlPiB8IHVuZGVmaW5lZCA9IGZpcnN0UGFnZTtcbiAgaWYgKGRlZmF1bHRQYWdlID09IG51bGwpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2RldGFpbCBwYWdlcyBub3JtYWxpemF0aW9uIGZhaWxlZDogbWlzc2luZyBkZWZhdWx0IHBhZ2UnKTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgcGFnZXMsXG4gICAgZGVmYXVsdFBhZ2UsXG4gICAgYnlJZCxcbiAgICBieVBhdGgsXG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgcmVzb2x2ZURldGFpbFBhZ2VCeUlkID0gPFxuICBNYWluUGFnZSBleHRlbmRzIERldGFpbFBhZ2VCYXNlLFxuICBTdWJQYWdlIGV4dGVuZHMgRGV0YWlsUGFnZUJhc2UgPSBNYWluUGFnZSxcbj4oXG4gIG5vcm1hbGl6ZWQ6IE5vcm1hbGl6ZWREZXRhaWxQYWdlczxNYWluUGFnZSwgU3ViUGFnZT4sXG4gIHBhZ2VJZDogc3RyaW5nLFxuKTogRGV0YWlsUGFnZVVuaW9uPE1haW5QYWdlLCBTdWJQYWdlPiB8IG51bGwgPT4ge1xuICByZXR1cm4gbm9ybWFsaXplZC5ieUlkLmdldChwYWdlSWQpID8/IG51bGw7XG59O1xuXG5leHBvcnQgY29uc3QgcmVzb2x2ZURldGFpbFBhZ2VCeVBhdGggPSA8XG4gIE1haW5QYWdlIGV4dGVuZHMgRGV0YWlsUGFnZUJhc2UsXG4gIFN1YlBhZ2UgZXh0ZW5kcyBEZXRhaWxQYWdlQmFzZSA9IE1haW5QYWdlLFxuPihcbiAgbm9ybWFsaXplZDogTm9ybWFsaXplZERldGFpbFBhZ2VzPE1haW5QYWdlLCBTdWJQYWdlPixcbiAgcGFnZVBhdGg6IHN0cmluZyxcbik6IERldGFpbFBhZ2VVbmlvbjxNYWluUGFnZSwgU3ViUGFnZT4gfCBudWxsID0+IHtcbiAgY29uc3Qgbm9ybWFsaXplZFBhdGggPSBub3JtYWxpemVQYXRoKHBhZ2VQYXRoKTtcbiAgcmV0dXJuIG5vcm1hbGl6ZWQuYnlQYXRoLmdldChub3JtYWxpemVkUGF0aCkgPz8gbnVsbDtcbn07XG4iXX0=
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"detailParams.d.ts","sourceRoot":"","sources":["../../src/detailParams.ts"],"names":[],"mappings":"AAKA,wBAAgB,4BAA4B,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC5E,MAAM,EAAE,CAAC,GACR,MAAM,CAGR;AAKD,wBAAgB,4BAA4B,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC5E,KAAK,EAAE,MAAM,GACZ,CAAC,GAAG,IAAI,CAOV"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { decodeBase64ToUtf8, encodeUtf8ToBase64 } from './base64.js';
|
|
2
|
+
export function encodeBackofficeDetailParams(params) {
|
|
3
|
+
const encoded = encodeUtf8ToBase64(JSON.stringify(params));
|
|
4
|
+
return encodeURIComponent(encoded);
|
|
5
|
+
}
|
|
6
|
+
export function decodeBackofficeDetailParams(value) {
|
|
7
|
+
try {
|
|
8
|
+
const decoded = decodeBase64ToUtf8(decodeURIComponent(value));
|
|
9
|
+
return JSON.parse(decoded);
|
|
10
|
+
}
|
|
11
|
+
catch {
|
|
12
|
+
return null;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV0YWlsUGFyYW1zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2RldGFpbFBhcmFtcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFLckUsTUFBTSxVQUFVLDRCQUE0QixDQUMxQyxNQUFTO0lBRVQsTUFBTSxPQUFPLEdBQUcsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQzNELE9BQU8sa0JBQWtCLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDckMsQ0FBQztBQUtELE1BQU0sVUFBVSw0QkFBNEIsQ0FDMUMsS0FBYTtJQUViLElBQUksQ0FBQztRQUNILE1BQU0sT0FBTyxHQUFHLGtCQUFrQixDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDOUQsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBTSxDQUFDO0lBQ2xDLENBQUM7SUFBQyxNQUFNLENBQUM7UUFDUCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZGVjb2RlQmFzZTY0VG9VdGY4LCBlbmNvZGVVdGY4VG9CYXNlNjQgfSBmcm9tICcuL2Jhc2U2NC5qcyc7XG5cbi8qKlxuICogRW5jb2RlcyBhIGRldGFpbCBwYXJhbSBvYmplY3QgaW50byBhIFVSTC1zYWZlIHN0cmluZy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGVuY29kZUJhY2tvZmZpY2VEZXRhaWxQYXJhbXM8VCBleHRlbmRzIFJlY29yZDxzdHJpbmcsIHVua25vd24+PihcbiAgcGFyYW1zOiBULFxuKTogc3RyaW5nIHtcbiAgY29uc3QgZW5jb2RlZCA9IGVuY29kZVV0ZjhUb0Jhc2U2NChKU09OLnN0cmluZ2lmeShwYXJhbXMpKTtcbiAgcmV0dXJuIGVuY29kZVVSSUNvbXBvbmVudChlbmNvZGVkKTtcbn1cblxuLyoqXG4gKiBEZWNvZGVzIGEgVVJMIHBhcmFtIGludG8gYSBkZXRhaWwgcGFyYW0gb2JqZWN0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gZGVjb2RlQmFja29mZmljZURldGFpbFBhcmFtczxUIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4+KFxuICB2YWx1ZTogc3RyaW5nLFxuKTogVCB8IG51bGwge1xuICB0cnkge1xuICAgIGNvbnN0IGRlY29kZWQgPSBkZWNvZGVCYXNlNjRUb1V0ZjgoZGVjb2RlVVJJQ29tcG9uZW50KHZhbHVlKSk7XG4gICAgcmV0dXJuIEpTT04ucGFyc2UoZGVjb2RlZCkgYXMgVDtcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { type InferFilters, type Schema } from '@plumile/filter-query';
|
|
2
|
+
import type { BackofficeFilterSpec } from '../types.js';
|
|
3
|
+
export type BackofficeFilterSchema<Where, S extends Schema = Schema> = {
|
|
4
|
+
schema: S;
|
|
5
|
+
toWhere: (filters: InferFilters<S>) => Where | null;
|
|
6
|
+
fromWhere: (where: Where | null) => InferFilters<S>;
|
|
7
|
+
};
|
|
8
|
+
export declare function createBackofficeFilterSchema<Where extends Record<string, unknown>>(filters: readonly BackofficeFilterSpec<Where>[]): BackofficeFilterSchema<Where>;
|
|
9
|
+
//# sourceMappingURL=schema.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/filters/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAOL,KAAK,YAAY,EACjB,KAAK,MAAM,EACZ,MAAM,uBAAuB,CAAC;AAE/B,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAGxD,MAAM,MAAM,sBAAsB,CAAC,KAAK,EAAE,CAAC,SAAS,MAAM,GAAG,MAAM,IAAI;IACrE,MAAM,EAAE,CAAC,CAAC;IACV,OAAO,EAAE,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,KAAK,KAAK,GAAG,IAAI,CAAC;IACpD,SAAS,EAAE,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,KAAK,YAAY,CAAC,CAAC,CAAC,CAAC;CACrD,CAAC;AAmEF,wBAAgB,4BAA4B,CAC1C,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAErC,OAAO,EAAE,SAAS,oBAAoB,CAAC,KAAK,CAAC,EAAE,GAC9C,sBAAsB,CAAC,KAAK,CAAC,CAkF/B"}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import { booleanField, buildEqFilters, defineSchema, enumField, stringField, } from '@plumile/filter-query';
|
|
2
|
+
import { readWhereValue } from './where.js';
|
|
3
|
+
const DEFAULT_OPERATORS = ['eq'];
|
|
4
|
+
function mergeWhere(base, patch) {
|
|
5
|
+
const next = { ...base };
|
|
6
|
+
for (const [key, value] of Object.entries(patch)) {
|
|
7
|
+
if (value != null &&
|
|
8
|
+
typeof value === 'object' &&
|
|
9
|
+
!Array.isArray(value) &&
|
|
10
|
+
typeof next[key] === 'object' &&
|
|
11
|
+
next[key] != null &&
|
|
12
|
+
!Array.isArray(next[key])) {
|
|
13
|
+
next[key] = mergeWhere(next[key], value);
|
|
14
|
+
}
|
|
15
|
+
else {
|
|
16
|
+
next[key] = value;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
return next;
|
|
20
|
+
}
|
|
21
|
+
function getFilterValue(filters, id) {
|
|
22
|
+
const entry = filters[id];
|
|
23
|
+
if (entry == null) {
|
|
24
|
+
return undefined;
|
|
25
|
+
}
|
|
26
|
+
if (typeof entry === 'object' && 'eq' in entry) {
|
|
27
|
+
return entry.eq;
|
|
28
|
+
}
|
|
29
|
+
return undefined;
|
|
30
|
+
}
|
|
31
|
+
function isEmptyFilterValue(value) {
|
|
32
|
+
if (value == null) {
|
|
33
|
+
return true;
|
|
34
|
+
}
|
|
35
|
+
if (typeof value === 'string') {
|
|
36
|
+
return value.trim() === '';
|
|
37
|
+
}
|
|
38
|
+
return false;
|
|
39
|
+
}
|
|
40
|
+
export function createBackofficeFilterSchema(filters) {
|
|
41
|
+
const schema = defineSchema(Object.fromEntries(filters.map((filter) => {
|
|
42
|
+
switch (filter.kind) {
|
|
43
|
+
case 'boolean':
|
|
44
|
+
return [filter.id, booleanField(DEFAULT_OPERATORS)];
|
|
45
|
+
case 'enum':
|
|
46
|
+
return [
|
|
47
|
+
filter.id,
|
|
48
|
+
enumField(filter.options.map((option) => {
|
|
49
|
+
return option.value;
|
|
50
|
+
}), DEFAULT_OPERATORS),
|
|
51
|
+
];
|
|
52
|
+
case 'entityId':
|
|
53
|
+
case 'text':
|
|
54
|
+
default:
|
|
55
|
+
return [filter.id, stringField(DEFAULT_OPERATORS)];
|
|
56
|
+
}
|
|
57
|
+
})));
|
|
58
|
+
function toWhere(parsed) {
|
|
59
|
+
let where = null;
|
|
60
|
+
for (const filter of filters) {
|
|
61
|
+
const value = getFilterValue(parsed, filter.id);
|
|
62
|
+
if (!isEmptyFilterValue(value)) {
|
|
63
|
+
const partial = filter.toGraphQL(value);
|
|
64
|
+
if (where == null) {
|
|
65
|
+
where = { ...partial };
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
where = mergeWhere(where, partial);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
if (where == null || Object.keys(where).length === 0) {
|
|
73
|
+
return null;
|
|
74
|
+
}
|
|
75
|
+
return where;
|
|
76
|
+
}
|
|
77
|
+
function fromWhere(where) {
|
|
78
|
+
if (where == null) {
|
|
79
|
+
return buildEqFilters({});
|
|
80
|
+
}
|
|
81
|
+
const eqInput = {};
|
|
82
|
+
for (const filter of filters) {
|
|
83
|
+
if (filter.fromGraphQL != null) {
|
|
84
|
+
const value = filter.fromGraphQL(where);
|
|
85
|
+
if (!isEmptyFilterValue(value)) {
|
|
86
|
+
eqInput[filter.id] = value;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
else {
|
|
90
|
+
const fallbackKey = filter.whereKey ?? filter.id;
|
|
91
|
+
const raw = readWhereValue(where, fallbackKey, filter.path);
|
|
92
|
+
if (!isEmptyFilterValue(raw)) {
|
|
93
|
+
eqInput[filter.id] = raw;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
return buildEqFilters(eqInput);
|
|
98
|
+
}
|
|
99
|
+
return { schema, toWhere, fromWhere };
|
|
100
|
+
}
|
|
101
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZW1hLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2ZpbHRlcnMvc2NoZW1hLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxZQUFZLEVBQ1osY0FBYyxFQUNkLFlBQVksRUFDWixTQUFTLEVBQ1QsV0FBVyxHQUlaLE1BQU0sdUJBQXVCLENBQUM7QUFHL0IsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLFlBQVksQ0FBQztBQVE1QyxNQUFNLGlCQUFpQixHQUFvQixDQUFDLElBQUksQ0FBQyxDQUFDO0FBT2xELFNBQVMsVUFBVSxDQUNqQixJQUE2QixFQUM3QixLQUE4QjtJQUU5QixNQUFNLElBQUksR0FBNEIsRUFBRSxHQUFHLElBQUksRUFBRSxDQUFDO0lBQ2xELEtBQUssTUFBTSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDakQsSUFDRSxLQUFLLElBQUksSUFBSTtZQUNiLE9BQU8sS0FBSyxLQUFLLFFBQVE7WUFDekIsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztZQUNyQixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxRQUFRO1lBQzdCLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxJQUFJO1lBQ2pCLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFDekIsQ0FBQztZQUNELElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxVQUFVLENBQ3BCLElBQUksQ0FBQyxHQUFHLENBQTRCLEVBQ3BDLEtBQWdDLENBQ2pDLENBQUM7UUFDSixDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUM7UUFDcEIsQ0FBQztJQUNILENBQUM7SUFDRCxPQUFPLElBQUksQ0FBQztBQUNkLENBQUM7QUFLRCxTQUFTLGNB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Q0FBQztRQUVELE1BQU0sT0FBTyxHQUFpRCxFQUFFLENBQUM7UUFFakUsS0FBSyxNQUFNLE1BQU0sSUFBSSxPQUFPLEVBQUUsQ0FBQztZQUM3QixJQUFJLE1BQU0sQ0FBQyxXQUFXLElBQUksSUFBSSxFQUFFLENBQUM7Z0JBQy9CLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ3hDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO29CQUMvQixPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQW9CLENBQUM7Z0JBQzVDLENBQUM7WUFDSCxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sTUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLFFBQVEsSUFBSyxNQUFNLENBQUMsRUFBa0IsQ0FBQztnQkFDbEUsTUFBTSxHQUFHLEdBQUcsY0FBYyxDQUFDLEtBQUssRUFBRSxXQUFXLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUM1RCxJQUFJLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztvQkFDN0IsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFrQixDQUFDO2dCQUMxQyxDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUM7UUFFRCxPQUFPLGNBQWMsQ0FDbkIsT0FBNEMsQ0FDN0MsQ0FBQztJQUNKLENBQUM7SUFFRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsQ0FBQztBQUN4QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgYm9vbGVhbkZpZWxkLFxuICBidWlsZEVxRmlsdGVycyxcbiAgZGVmaW5lU2NoZW1hLFxuICBlbnVtRmllbGQsXG4gIHN0cmluZ0ZpZWxkLFxuICB0eXBlIEVxSW5wdXQsXG4gIHR5cGUgSW5mZXJGaWx0ZXJzLFxuICB0eXBlIFNjaGVtYSxcbn0gZnJvbSAnQHBsdW1pbGUvZmlsdGVyLXF1ZXJ5JztcblxuaW1wb3J0IHR5cGUgeyBCYWNrb2ZmaWNlRmlsdGVyU3BlYyB9IGZyb20gJy4uL3R5cGVzLmpzJztcbmltcG9ydCB7IHJlYWRXaGVyZVZhbHVlIH0gZnJvbSAnLi93aGVyZS5qcyc7XG5cbmV4cG9ydCB0eXBlIEJhY2tvZmZpY2VGaWx0ZXJTY2hlbWE8V2hlcmUsIFMgZXh0ZW5kcyBTY2hlbWEgPSBTY2hlbWE+ID0ge1xuICBzY2hlbWE6IFM7XG4gIHRvV2hlcmU6IChmaWx0ZXJzOiBJbmZlckZpbHRlcnM8Uz4pID0+IFdoZXJlIHwgbnVsbDtcbiAgZnJvbVdoZXJlOiAod2hlcmU6IFdoZXJlIHwgbnVsbCkgPT4gSW5mZXJGaWx0ZXJzPFM+O1xufTtcblxuY29uc3QgREVGQVVMVF9PUEVSQVRPUlM6IHJlYWRvbmx5IFsnZXEnXSA9IFsnZXEnXTtcblxudHlwZSBGaWx0ZXJWYWx1ZSA9IHN0cmluZyB8IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG5cbi8qKlxuICpcbiAqL1xuZnVuY3Rpb24gbWVyZ2VXaGVyZShcbiAgYmFzZTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gIHBhdGNoOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbik6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHtcbiAgY29uc3QgbmV4dDogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7IC4uLmJhc2UgfTtcbiAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMocGF0Y2gpKSB7XG4gICAgaWYgKFxuICAgICAgdmFsdWUgIT0gbnVsbCAmJlxuICAgICAgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJlxuICAgICAgIUFycmF5LmlzQXJyYXkodmFsdWUpICYmXG4gICAgICB0eXBlb2YgbmV4dFtrZXldID09PSAnb2JqZWN0JyAmJlxuICAgICAgbmV4dFtrZXldICE9IG51bGwgJiZcbiAgICAgICFBcnJheS5pc0FycmF5KG5leHRba2V5XSlcbiAgICApIHtcbiAgICAgIG5leHRba2V5XSA9IG1lcmdlV2hlcmUoXG4gICAgICAgIG5leHRba2V5XSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbiAgICAgICAgdmFsdWUgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICBuZXh0W2tleV0gPSB2YWx1ZTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG5leHQ7XG59XG5cbi8qKlxuICpcbiAqL1xuZnVuY3Rpb24gZ2V0RmlsdGVyVmFsdWU8UyBleHRlbmRzIFNjaGVtYT4oXG4gIGZpbHRlcnM6IEluZmVyRmlsdGVyczxTPixcbiAgaWQ6IHN0cmluZyxcbik6IEZpbHRlclZhbHVlIHtcbiAgY29uc3QgZW50cnkgPSBmaWx0ZXJzW2lkIGFzIGtleW9mIFNdO1xuICBpZiAoZW50cnkgPT0gbnVsbCkge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbiAgaWYgKHR5cGVvZiBlbnRyeSA9PT0gJ29iamVjdCcgJiYgJ2VxJyBpbiBlbnRyeSkge1xuICAgIHJldHVybiAoZW50cnkgYXMgeyBlcT86IHN0cmluZyB8IGJvb2xlYW4gfSkuZXE7XG4gIH1cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKlxuICovXG5mdW5jdGlvbiBpc0VtcHR5RmlsdGVyVmFsdWUodmFsdWU6IHVua25vd24pOiBib29sZWFuIHtcbiAgaWYgKHZhbHVlID09IG51bGwpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiB2YWx1ZS50cmltKCkgPT09ICcnO1xuICB9XG4gIHJldHVybiBmYWxzZTtcbn1cblxuLyoqXG4gKlxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQmFja29mZmljZUZpbHRlclNjaGVtYTxcbiAgV2hlcmUgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbj4oXG4gIGZpbHRlcnM6IHJlYWRvbmx5IEJhY2tvZmZpY2VGaWx0ZXJTcGVjPFdoZXJlPltdLFxuKTogQmFja29mZmljZUZpbHRlclNjaGVtYTxXaGVyZT4ge1xuICBjb25zdCBzY2hlbWEgPSBkZWZpbmVTY2hlbWEoXG4gICAgT2JqZWN0LmZyb21FbnRyaWVzKFxuICAgICAgZmlsdGVycy5tYXAoKGZpbHRlcikgPT4ge1xuICAgICAgICBzd2l0Y2ggKGZpbHRlci5raW5kKSB7XG4gICAgICAgICAgY2FzZSAnYm9vbGVhbic6XG4gICAgICAgICAgICByZXR1cm4gW2ZpbHRlci5pZCwgYm9vbGVhbkZpZWxkKERFRkFVTFRfT1BFUkFUT1JTKV07XG4gICAgICAgICAgY2FzZSAnZW51bSc6XG4gICAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgICBmaWx0ZXIuaWQsXG4gICAgICAgICAgICAgIGVudW1GaWVsZChcbiAgICAgICAgICAgICAgICBmaWx0ZXIub3B0aW9ucy5tYXAoKG9wdGlvbikgPT4ge1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIG9wdGlvbi52YWx1ZTtcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICBERUZBVUxUX09QRVJBVE9SUyxcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIF07XG4gICAgICAgICAgY2FzZSAnZW50aXR5SWQnOlxuICAgICAgICAgIGNhc2UgJ3RleHQnOlxuICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICByZXR1cm4gW2ZpbHRlci5pZCwgc3RyaW5nRmllbGQoREVGQVVMVF9PUEVSQVRPUlMpXTtcbiAgICAgICAgfVxuICAgICAgfSksXG4gICAgKSxcbiAgKTtcblxuICAvKipcbiAgICpcbiAgICovXG4gIGZ1bmN0aW9uIHRvV2hlcmUocGFyc2VkOiBJbmZlckZpbHRlcnM8dHlwZW9mIHNjaGVtYT4pOiBXaGVyZSB8IG51bGwge1xuICAgIGxldCB3aGVyZTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gfCBudWxsID0gbnVsbDtcblxuICAgIGZvciAoY29uc3QgZmlsdGVyIG9mIGZpbHRlcnMpIHtcbiAgICAgIGNvbnN0IHZhbHVlID0gZ2V0RmlsdGVyVmFsdWUocGFyc2VkLCBmaWx0ZXIuaWQpO1xuICAgICAgaWYgKCFpc0VtcHR5RmlsdGVyVmFsdWUodmFsdWUpKSB7XG4gICAgICAgIGNvbnN0IHBhcnRpYWwgPSBmaWx0ZXIudG9HcmFwaFFMKHZhbHVlIGFzIG5ldmVyKTtcbiAgICAgICAgaWYgKHdoZXJlID09IG51bGwpIHtcbiAgICAgICAgICB3aGVyZSA9IHsgLi4ucGFydGlhbCB9O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHdoZXJlID0gbWVyZ2VXaGVyZSh3aGVyZSwgcGFydGlhbCBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAod2hlcmUgPT0gbnVsbCB8fCBPYmplY3Qua2V5cyh3aGVyZSkubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4gd2hlcmUgYXMgV2hlcmU7XG4gIH1cblxuICAvKipcbiAgICpcbiAgICovXG4gIGZ1bmN0aW9uIGZyb21XaGVyZSh3aGVyZTogV2hlcmUgfCBudWxsKTogSW5mZXJGaWx0ZXJzPHR5cGVvZiBzY2hlbWE+IHtcbiAgICBpZiAod2hlcmUgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIGJ1aWxkRXFGaWx0ZXJzKHt9KTtcbiAgICB9XG5cbiAgICBjb25zdCBlcUlucHV0OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCBib29sZWFuIHwgdW5kZWZpbmVkPiA9IHt9O1xuXG4gICAgZm9yIChjb25zdCBmaWx0ZXIgb2YgZmlsdGVycykge1xuICAgICAgaWYgKGZpbHRlci5mcm9tR3JhcGhRTCAhPSBudWxsKSB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gZmlsdGVyLmZyb21HcmFwaFFMKHdoZXJlKTtcbiAgICAgICAgaWYgKCFpc0VtcHR5RmlsdGVyVmFsdWUodmFsdWUpKSB7XG4gICAgICAgICAgZXFJbnB1dFtmaWx0ZXIuaWRdID0gdmFsdWUgYXMgRmlsdGVyVmFsdWU7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGZhbGxiYWNrS2V5ID0gZmlsdGVyLndoZXJlS2V5ID8/IChmaWx0ZXIuaWQgYXMga2V5b2YgV2hlcmUpO1xuICAgICAgICBjb25zdCByYXcgPSByZWFkV2hlcmVWYWx1ZSh3aGVyZSwgZmFsbGJhY2tLZXksIGZpbHRlci5wYXRoKTtcbiAgICAgICAgaWYgKCFpc0VtcHR5RmlsdGVyVmFsdWUocmF3KSkge1xuICAgICAgICAgIGVxSW5wdXRbZmlsdGVyLmlkXSA9IHJhdyBhcyBGaWx0ZXJWYWx1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBidWlsZEVxRmlsdGVyczx0eXBlb2Ygc2NoZW1hPihcbiAgICAgIGVxSW5wdXQgYXMgdW5rbm93biBhcyBFcUlucHV0PHR5cGVvZiBzY2hlbWE+LFxuICAgICk7XG4gIH1cblxuICByZXR1cm4geyBzY2hlbWEsIHRvV2hlcmUsIGZyb21XaGVyZSB9O1xufVxuIl19
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export declare function buildWherePath<Where extends Record<string, unknown>>(key: keyof Where, path?: readonly string[]): readonly string[];
|
|
2
|
+
export declare function readWhereValue<Where extends Record<string, unknown>>(where: Where | null, key: keyof Where, path?: readonly string[]): unknown;
|
|
3
|
+
export declare function setWhereValue<Where extends Record<string, unknown>>(where: Where | null, key: keyof Where, value: unknown, path?: readonly string[]): Where | null;
|
|
4
|
+
//# sourceMappingURL=where.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"where.d.ts","sourceRoot":"","sources":["../../../src/filters/where.ts"],"names":[],"mappings":"AAyBA,wBAAgB,cAAc,CAAC,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAClE,GAAG,EAAE,MAAM,KAAK,EAChB,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,GACvB,SAAS,MAAM,EAAE,CAMnB;AAGD,wBAAgB,cAAc,CAAC,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAClE,KAAK,EAAE,KAAK,GAAG,IAAI,EACnB,GAAG,EAAE,MAAM,KAAK,EAChB,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,GACvB,OAAO,CAkBT;AAGD,wBAAgB,aAAa,CAAC,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACjE,KAAK,EAAE,KAAK,GAAG,IAAI,EACnB,GAAG,EAAE,MAAM,KAAK,EAChB,KAAK,EAAE,OAAO,EACd,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,GACvB,KAAK,GAAG,IAAI,CAiDd"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
function toRecord(value) {
|
|
2
|
+
if (typeof value !== 'object' || value == null) {
|
|
3
|
+
return {};
|
|
4
|
+
}
|
|
5
|
+
return value;
|
|
6
|
+
}
|
|
7
|
+
function isRecord(value) {
|
|
8
|
+
return typeof value === 'object' && value != null && !Array.isArray(value);
|
|
9
|
+
}
|
|
10
|
+
function omitKey(record, key) {
|
|
11
|
+
const entries = Object.entries(record).filter(([entryKey]) => {
|
|
12
|
+
return entryKey !== key;
|
|
13
|
+
});
|
|
14
|
+
return Object.fromEntries(entries);
|
|
15
|
+
}
|
|
16
|
+
export function buildWherePath(key, path) {
|
|
17
|
+
const root = String(key);
|
|
18
|
+
if (path != null && path.length > 0) {
|
|
19
|
+
return [root, ...path];
|
|
20
|
+
}
|
|
21
|
+
return [root];
|
|
22
|
+
}
|
|
23
|
+
export function readWhereValue(where, key, path) {
|
|
24
|
+
const base = toRecord(where);
|
|
25
|
+
const segments = buildWherePath(key, path);
|
|
26
|
+
let cursor = base;
|
|
27
|
+
for (const segment of segments) {
|
|
28
|
+
const next = cursor[segment];
|
|
29
|
+
if (next == null) {
|
|
30
|
+
return undefined;
|
|
31
|
+
}
|
|
32
|
+
if (segment === segments[segments.length - 1]) {
|
|
33
|
+
return next;
|
|
34
|
+
}
|
|
35
|
+
if (!isRecord(next)) {
|
|
36
|
+
return undefined;
|
|
37
|
+
}
|
|
38
|
+
cursor = next;
|
|
39
|
+
}
|
|
40
|
+
return undefined;
|
|
41
|
+
}
|
|
42
|
+
export function setWhereValue(where, key, value, path) {
|
|
43
|
+
const segments = buildWherePath(key, path);
|
|
44
|
+
const shouldRemove = value == null ||
|
|
45
|
+
(typeof value === 'string' && value.trim() === '') ||
|
|
46
|
+
(Array.isArray(value) && value.length === 0);
|
|
47
|
+
function updatePath(current, index) {
|
|
48
|
+
const segment = segments[index];
|
|
49
|
+
if (segment == null) {
|
|
50
|
+
return current;
|
|
51
|
+
}
|
|
52
|
+
if (index === segments.length - 1) {
|
|
53
|
+
if (shouldRemove) {
|
|
54
|
+
const trimmed = omitKey(current, segment);
|
|
55
|
+
if (Object.keys(trimmed).length === 0) {
|
|
56
|
+
return null;
|
|
57
|
+
}
|
|
58
|
+
return trimmed;
|
|
59
|
+
}
|
|
60
|
+
return { ...current, [segment]: value };
|
|
61
|
+
}
|
|
62
|
+
const child = current[segment];
|
|
63
|
+
let childRecord = {};
|
|
64
|
+
if (isRecord(child)) {
|
|
65
|
+
childRecord = child;
|
|
66
|
+
}
|
|
67
|
+
const nextChild = updatePath(childRecord, index + 1);
|
|
68
|
+
if (nextChild == null) {
|
|
69
|
+
const trimmed = omitKey(current, segment);
|
|
70
|
+
if (Object.keys(trimmed).length === 0) {
|
|
71
|
+
return null;
|
|
72
|
+
}
|
|
73
|
+
return trimmed;
|
|
74
|
+
}
|
|
75
|
+
return { ...current, [segment]: nextChild };
|
|
76
|
+
}
|
|
77
|
+
const updated = updatePath(toRecord(where), 0);
|
|
78
|
+
if (updated == null || Object.keys(updated).length === 0) {
|
|
79
|
+
return null;
|
|
80
|
+
}
|
|
81
|
+
return updated;
|
|
82
|
+
}
|
|
83
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2hlcmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZmlsdGVycy93aGVyZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxTQUFTLFFBQVEsQ0FBQyxLQUFjO0lBQzlCLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxJQUFJLEtBQUssSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUMvQyxPQUFPLEVBQUUsQ0FBQztJQUNaLENBQUM7SUFDRCxPQUFPLEtBQWdDLENBQUM7QUFDMUMsQ0FBQztBQUdELFNBQVMsUUFBUSxDQUFDLEtBQWM7SUFDOUIsT0FBTyxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksS0FBSyxJQUFJLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDN0UsQ0FBQztBQUdELFNBQVMsT0FBTyxDQUNkLE1BQStCLEVBQy9CLEdBQVc7SUFFWCxNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRTtRQUMzRCxPQUFPLFFBQVEsS0FBSyxHQUFHLENBQUM7SUFDMUIsQ0FBQyxDQUFDLENBQUM7SUFDSCxPQUFPLE1BQU0sQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDckMsQ0FBQztBQUdELE1BQU0sVUFBVSxjQUFjLENBQzVCLEdBQWdCLEVBQ2hCLElBQXdCO0lBRXhCLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN6QixJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUNwQyxPQUFPLENBQUMsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDekIsQ0FBQztJQUNELE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNoQixDQUFDO0FBR0QsTUFBTSxV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ZCxDQUFDO1lBQ0QsT0FBTyxPQUFPLENBQUM7UUFDakIsQ0FBQztRQUNELE9BQU8sRUFBRSxHQUFHLE9BQU8sRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLFNBQVMsRUFBRSxDQUFDO0lBQzlDLENBQUM7SUFFRCxNQUFNLE9BQU8sR0FBRyxVQUFVLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQy9DLElBQUksT0FBTyxJQUFJLElBQUksSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUN6RCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxPQUFPLE9BQWdCLENBQUM7QUFDMUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKiBOb3JtYWxpemUgdW5rbm93biBpbnB1dCBpbnRvIGEgcGxhaW4gcmVjb3JkLiAqL1xuZnVuY3Rpb24gdG9SZWNvcmQodmFsdWU6IHVua25vd24pOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB7XG4gIGlmICh0eXBlb2YgdmFsdWUgIT09ICdvYmplY3QnIHx8IHZhbHVlID09IG51bGwpIHtcbiAgICByZXR1cm4ge307XG4gIH1cbiAgcmV0dXJuIHZhbHVlIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xufVxuXG4vKiogR3VhcmQgZm9yIHBsYWluIG9iamVjdCByZWNvcmRzLiAqL1xuZnVuY3Rpb24gaXNSZWNvcmQodmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIHZhbHVlICE9IG51bGwgJiYgIUFycmF5LmlzQXJyYXkodmFsdWUpO1xufVxuXG4vKiogUmV0dXJuIGEgc2hhbGxvdyBjb3B5IHdpdGhvdXQgYSBzcGVjaWZpYyBrZXkuICovXG5mdW5jdGlvbiBvbWl0S2V5KFxuICByZWNvcmQ6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICBrZXk6IHN0cmluZyxcbik6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHtcbiAgY29uc3QgZW50cmllcyA9IE9iamVjdC5lbnRyaWVzKHJlY29yZCkuZmlsdGVyKChbZW50cnlLZXldKSA9PiB7XG4gICAgcmV0dXJuIGVudHJ5S2V5ICE9PSBrZXk7XG4gIH0pO1xuICByZXR1cm4gT2JqZWN0LmZyb21FbnRyaWVzKGVudHJpZXMpO1xufVxuXG4vKiogQnVpbGQgYSB3aGVyZSBwYXRoIGZvciBuZXN0ZWQgZmlsdGVycy4gKi9cbmV4cG9ydCBmdW5jdGlvbiBidWlsZFdoZXJlUGF0aDxXaGVyZSBleHRlbmRzIFJlY29yZDxzdHJpbmcsIHVua25vd24+PihcbiAga2V5OiBrZXlvZiBXaGVyZSxcbiAgcGF0aD86IHJlYWRvbmx5IHN0cmluZ1tdLFxuKTogcmVhZG9ubHkgc3RyaW5nW10ge1xuICBjb25zdCByb290ID0gU3RyaW5nKGtleSk7XG4gIGlmIChwYXRoICE9IG51bGwgJiYgcGF0aC5sZW5ndGggPiAwKSB7XG4gICAgcmV0dXJuIFtyb290LCAuLi5wYXRoXTtcbiAgfVxuICByZXR1cm4gW3Jvb3RdO1xufVxuXG4vKiogUmVhZCBhIG5lc3RlZCB3aGVyZSB2YWx1ZSB1c2luZyBhbiBvcHRpb25hbCBwYXRoLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlYWRXaGVyZVZhbHVlPFdoZXJlIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4+KFxuICB3aGVyZTogV2hlcmUgfCBudWxsLFxuICBrZXk6IGtleW9mIFdoZXJlLFxuICBwYXRoPzogcmVhZG9ubHkgc3RyaW5nW10sXG4pOiB1bmtub3duIHtcbiAgY29uc3QgYmFzZSA9IHRvUmVjb3JkKHdoZXJlKTtcbiAgY29uc3Qgc2VnbWVudHMgPSBidWlsZFdoZXJlUGF0aChrZXksIHBhdGgpO1xuICBsZXQgY3Vyc29yOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IGJhc2U7XG4gIGZvciAoY29uc3Qgc2VnbWVudCBvZiBzZWdtZW50cykge1xuICAgIGNvbnN0IG5leHQgPSBjdXJzb3Jbc2VnbWVudF07XG4gICAgaWYgKG5leHQgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgaWYgKHNlZ21lbnQgPT09IHNlZ21lbnRzW3NlZ21lbnRzLmxlbmd0aCAtIDFdKSB7XG4gICAgICByZXR1cm4gbmV4dDtcbiAgICB9XG4gICAgaWYgKCFpc1JlY29yZChuZXh0KSkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgY3Vyc29yID0gbmV4dDtcbiAgfVxuICByZXR1cm4gdW5kZWZpbmVkO1xufVxuXG4vKiogU2V0IG9yIGNsZWFyIGEgbmVzdGVkIHdoZXJlIHZhbHVlLCBwcnVuaW5nIGVtcHR5IHBhcmVudHMuICovXG5leHBvcnQgZnVuY3Rpb24gc2V0V2hlcmVWYWx1ZTxXaGVyZSBleHRlbmRzIFJlY29yZDxzdHJpbmcsIHVua25vd24+PihcbiAgd2hlcmU6IFdoZXJlIHwgbnVsbCxcbiAga2V5OiBrZXlvZiBXaGVyZSxcbiAgdmFsdWU6IHVua25vd24sXG4gIHBhdGg/OiByZWFkb25seSBzdHJpbmdbXSxcbik6IFdoZXJlIHwgbnVsbCB7XG4gIGNvbnN0IHNlZ21lbnRzID0gYnVpbGRXaGVyZVBhdGgoa2V5LCBwYXRoKTtcbiAgY29uc3Qgc2hvdWxkUmVtb3ZlID1cbiAgICB2YWx1ZSA9PSBudWxsIHx8XG4gICAgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgJiYgdmFsdWUudHJpbSgpID09PSAnJykgfHxcbiAgICAoQXJyYXkuaXNBcnJheSh2YWx1ZSkgJiYgdmFsdWUubGVuZ3RoID09PSAwKTtcblxuICAvKiogVXBkYXRlIGEgbmVzdGVkIG9iamVjdCBwYXRoIGltbXV0YWJseS4gKi9cbiAgZnVuY3Rpb24gdXBkYXRlUGF0aChcbiAgICBjdXJyZW50OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbiAgICBpbmRleDogbnVtYmVyLFxuICApOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB8IG51bGwge1xuICAgIGNvbnN0IHNlZ21lbnQgPSBzZWdtZW50c1tpbmRleF07XG4gICAgaWYgKHNlZ21lbnQgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIGN1cnJlbnQ7XG4gICAgfVxuICAgIGlmIChpbmRleCA9PT0gc2VnbWVudHMubGVuZ3RoIC0gMSkge1xuICAgICAgaWYgKHNob3VsZFJlbW92ZSkge1xuICAgICAgICBjb25zdCB0cmltbWVkID0gb21pdEtleShjdXJyZW50LCBzZWdtZW50KTtcbiAgICAgICAgaWYgKE9iamVjdC5rZXlzKHRyaW1tZWQpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cmltbWVkO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHsgLi4uY3VycmVudCwgW3NlZ21lbnRdOiB2YWx1ZSB9O1xuICAgIH1cblxuICAgIGNvbnN0IGNoaWxkID0gY3VycmVudFtzZWdtZW50XTtcbiAgICBsZXQgY2hpbGRSZWNvcmQ6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge307XG4gICAgaWYgKGlzUmVjb3JkKGNoaWxkKSkge1xuICAgICAgY2hpbGRSZWNvcmQgPSBjaGlsZDtcbiAgICB9XG4gICAgY29uc3QgbmV4dENoaWxkID0gdXBkYXRlUGF0aChjaGlsZFJlY29yZCwgaW5kZXggKyAxKTtcbiAgICBpZiAobmV4dENoaWxkID09IG51bGwpIHtcbiAgICAgIGNvbnN0IHRyaW1tZWQgPSBvbWl0S2V5KGN1cnJlbnQsIHNlZ21lbnQpO1xuICAgICAgaWYgKE9iamVjdC5rZXlzKHRyaW1tZWQpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0cmltbWVkO1xuICAgIH1cbiAgICByZXR1cm4geyAuLi5jdXJyZW50LCBbc2VnbWVudF06IG5leHRDaGlsZCB9O1xuICB9XG5cbiAgY29uc3QgdXBkYXRlZCA9IHVwZGF0ZVBhdGgodG9SZWNvcmQod2hlcmUpLCAwKTtcbiAgaWYgKHVwZGF0ZWQgPT0gbnVsbCB8fCBPYmplY3Qua2V5cyh1cGRhdGVkKS5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHJldHVybiB1cGRhdGVkIGFzIFdoZXJlO1xufVxuIl19
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { BackofficeEntityManifestItem, BackofficeDetailLayoutFacetConfig, BackofficeDetailPageFacetConfig, BackofficeListFacetConfig, BackofficeLoadedEntityFacetModule, BackofficePickerFacetConfig, BackofficeToolEntityConfig, BackofficeToolFacetConfig, BackofficeResolvedToolFacetConfig, BackofficeResolvedDetailLayoutFacetConfig, BackofficeResolvedDetailPageFacetConfig, BackofficeResolvedEntityFacetModule, BackofficeResolvedListFacetConfig, BackofficeResolvedPickerFacetConfig } from './types.js';
|
|
2
|
+
export type ResolveBackofficeEntityOptions = {
|
|
3
|
+
basePath: string;
|
|
4
|
+
};
|
|
5
|
+
export declare const resolveBackofficeToolRoute: (basePath: string, toolId: string, routeOverride?: string) => string;
|
|
6
|
+
export declare function extractBackofficeToolFacetConfig(config: BackofficeToolEntityConfig): BackofficeToolFacetConfig;
|
|
7
|
+
export declare function resolveBackofficeListFacetConfig<Where extends Record<string, unknown>, Sort extends string, RowRef, RowView, ListQueryData, ListFragmentData, ListQueryVariables>(config: BackofficeListFacetConfig<Where, Sort, RowRef, RowView, ListQueryData, ListFragmentData, ListQueryVariables>, manifest: BackofficeEntityManifestItem, _options: ResolveBackofficeEntityOptions): BackofficeResolvedListFacetConfig<Where, Sort, RowRef, RowView, ListQueryData, ListFragmentData, ListQueryVariables>;
|
|
8
|
+
export declare function resolveBackofficePickerFacetConfig<RowRef, RowView, PickerQueryData, PickerFragmentData, PickerQueryVariables>(config: BackofficePickerFacetConfig<RowRef, RowView, PickerQueryData, PickerFragmentData, PickerQueryVariables>, manifest: BackofficeEntityManifestItem, _options: ResolveBackofficeEntityOptions): BackofficeResolvedPickerFacetConfig<RowRef, RowView, PickerQueryData, PickerFragmentData, PickerQueryVariables>;
|
|
9
|
+
export declare function resolveBackofficeDetailLayoutFacetConfig<LayoutRef, LayoutView, LayoutQueryData, LayoutFragmentRef, LayoutQueryVariables>(config: BackofficeDetailLayoutFacetConfig<LayoutRef, LayoutView, LayoutQueryData, LayoutFragmentRef, LayoutQueryVariables>, manifest: BackofficeEntityManifestItem, _options: ResolveBackofficeEntityOptions): BackofficeResolvedDetailLayoutFacetConfig<LayoutRef, LayoutView, LayoutQueryData, LayoutFragmentRef, LayoutQueryVariables>;
|
|
10
|
+
export declare function resolveBackofficeDetailPageFacetConfig<LayoutView, DetailRef, DetailView, DetailQueryData, DetailFragmentRef, DetailQueryVariables>(config: BackofficeDetailPageFacetConfig<LayoutView, DetailRef, DetailView, DetailQueryData, DetailFragmentRef, DetailQueryVariables>, manifest: BackofficeEntityManifestItem, _options: ResolveBackofficeEntityOptions): BackofficeResolvedDetailPageFacetConfig<LayoutView, DetailRef, DetailView, DetailQueryData, DetailFragmentRef, DetailQueryVariables>;
|
|
11
|
+
export declare function resolveBackofficeToolFacetConfig(config: BackofficeToolFacetConfig, manifest: BackofficeEntityManifestItem, options: ResolveBackofficeEntityOptions): BackofficeResolvedToolFacetConfig;
|
|
12
|
+
export declare function resolveBackofficeLoadedFacetModule(manifest: BackofficeEntityManifestItem, module: BackofficeLoadedEntityFacetModule, options: ResolveBackofficeEntityOptions): BackofficeResolvedEntityFacetModule;
|
|
13
|
+
//# sourceMappingURL=resolve.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolve.d.ts","sourceRoot":"","sources":["../../src/resolve.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,4BAA4B,EAC5B,iCAAiC,EACjC,+BAA+B,EAG/B,yBAAyB,EACzB,iCAAiC,EACjC,2BAA2B,EAC3B,0BAA0B,EAC1B,yBAAyB,EACzB,iCAAiC,EACjC,yCAAyC,EACzC,uCAAuC,EACvC,mCAAmC,EACnC,iCAAiC,EACjC,mCAAmC,EACpC,MAAM,YAAY,CAAC;AAIpB,MAAM,MAAM,8BAA8B,GAAG;IAC3C,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAwDF,eAAO,MAAM,0BAA0B,GACrC,UAAU,MAAM,EAChB,QAAQ,MAAM,EACd,gBAAgB,MAAM,KACrB,MASF,CAAC;AAqCF,wBAAgB,gCAAgC,CAC9C,MAAM,EAAE,0BAA0B,GACjC,yBAAyB,CAW3B;AAKD,wBAAgB,gCAAgC,CAC9C,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACrC,IAAI,SAAS,MAAM,EACnB,MAAM,EACN,OAAO,EACP,aAAa,EACb,gBAAgB,EAChB,kBAAkB,EAElB,MAAM,EAAE,yBAAyB,CAC/B,KAAK,EACL,IAAI,EACJ,MAAM,EACN,OAAO,EACP,aAAa,EACb,gBAAgB,EAChB,kBAAkB,CACnB,EACD,QAAQ,EAAE,4BAA4B,EAEtC,QAAQ,EAAE,8BAA8B,GACvC,iCAAiC,CAClC,KAAK,EACL,IAAI,EACJ,MAAM,EACN,OAAO,EACP,aAAa,EACb,gBAAgB,EAChB,kBAAkB,CACnB,CAoBA;AAKD,wBAAgB,kCAAkC,CAChD,MAAM,EACN,OAAO,EACP,eAAe,EACf,kBAAkB,EAClB,oBAAoB,EAEpB,MAAM,EAAE,2BAA2B,CACjC,MAAM,EACN,OAAO,EACP,eAAe,EACf,kBAAkB,EAClB,oBAAoB,CACrB,EACD,QAAQ,EAAE,4BAA4B,EAEtC,QAAQ,EAAE,8BAA8B,GACvC,mCAAmC,CACpC,MAAM,EACN,OAAO,EACP,eAAe,EACf,kBAAkB,EAClB,oBAAoB,CACrB,CAEA;AAKD,wBAAgB,wCAAwC,CACtD,SAAS,EACT,UAAU,EACV,eAAe,EACf,iBAAiB,EACjB,oBAAoB,EAEpB,MAAM,EAAE,iCAAiC,CACvC,SAAS,EACT,UAAU,EACV,eAAe,EACf,iBAAiB,EACjB,oBAAoB,CACrB,EACD,QAAQ,EAAE,4BAA4B,EAEtC,QAAQ,EAAE,8BAA8B,GACvC,yCAAyC,CAC1C,SAAS,EACT,UAAU,EACV,eAAe,EACf,iBAAiB,EACjB,oBAAoB,CACrB,CAEA;AAKD,wBAAgB,sCAAsC,CACpD,UAAU,EACV,SAAS,EACT,UAAU,EACV,eAAe,EACf,iBAAiB,EACjB,oBAAoB,EAEpB,MAAM,EAAE,+BAA+B,CACrC,UAAU,EACV,SAAS,EACT,UAAU,EACV,eAAe,EACf,iBAAiB,EACjB,oBAAoB,CACrB,EACD,QAAQ,EAAE,4BAA4B,EAEtC,QAAQ,EAAE,8BAA8B,GACvC,uCAAuC,CACxC,UAAU,EACV,SAAS,EACT,UAAU,EACV,eAAe,EACf,iBAAiB,EACjB,oBAAoB,CACrB,CAEA;AAKD,wBAAgB,gCAAgC,CAC9C,MAAM,EAAE,yBAAyB,EACjC,QAAQ,EAAE,4BAA4B,EACtC,OAAO,EAAE,8BAA8B,GACtC,iCAAiC,CAmBnC;AAKD,wBAAgB,kCAAkC,CAChD,QAAQ,EAAE,4BAA4B,EACtC,MAAM,EAAE,iCAAiC,EACzC,OAAO,EAAE,8BAA8B,GACtC,mCAAmC,CAmErC"}
|