@venizia/ardor-admin 0.1.4-4 → 0.1.4-5

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.
Files changed (36) hide show
  1. package/README.md +1 -1
  2. package/dist/common/types.d.ts +3 -4
  3. package/dist/common/types.d.ts.map +1 -1
  4. package/dist/components/application.d.ts.map +1 -1
  5. package/dist/components/application.js +11 -8
  6. package/dist/components/application.js.map +1 -1
  7. package/dist/features/feature.d.ts +21 -19
  8. package/dist/features/feature.d.ts.map +1 -1
  9. package/dist/features/feature.js +37 -35
  10. package/dist/features/feature.js.map +1 -1
  11. package/dist/features/index.d.ts +1 -1
  12. package/dist/features/index.d.ts.map +1 -1
  13. package/dist/features/index.js +3 -3
  14. package/dist/features/index.js.map +1 -1
  15. package/dist/features/messages.d.ts +3 -3
  16. package/dist/hooks/use-features.d.ts +2 -2
  17. package/dist/hooks/use-features.d.ts.map +1 -1
  18. package/dist/hooks/use-features.js +2 -2
  19. package/dist/hooks/use-features.js.map +1 -1
  20. package/dist/hooks/use-request-header-locale.d.ts +4 -2
  21. package/dist/hooks/use-request-header-locale.d.ts.map +1 -1
  22. package/dist/hooks/use-request-header-locale.js +4 -4
  23. package/dist/hooks/use-request-header-locale.js.map +1 -1
  24. package/dist/providers/auth.d.ts +74 -8
  25. package/dist/providers/auth.d.ts.map +1 -1
  26. package/dist/providers/auth.js +147 -95
  27. package/dist/providers/auth.js.map +1 -1
  28. package/dist/providers/i18n.d.ts +24 -4
  29. package/dist/providers/i18n.d.ts.map +1 -1
  30. package/dist/providers/i18n.js +31 -12
  31. package/dist/providers/i18n.js.map +1 -1
  32. package/dist/providers/rest-data.d.ts +32 -1
  33. package/dist/providers/rest-data.d.ts.map +1 -1
  34. package/dist/providers/rest-data.js +74 -114
  35. package/dist/providers/rest-data.js.map +1 -1
  36. package/package.json +17 -11
package/README.md CHANGED
@@ -4,7 +4,7 @@ The [react-admin](https://marmelab.com/react-admin/) adapter of
4
4
  [ARDOR](https://github.com/VENIZIA-AI/ardor): every place the framework touches `ra-core`.
5
5
 
6
6
  ```bash
7
- bun add @venizia/ardor-admin @venizia/ardor-kernel @venizia/ardor-react ra-core
7
+ bun add @venizia/ardor-admin @venizia/ardor-kernel @venizia/ardor-react @venizia/ignis-inversion @venizia/ignis-filter @venizia/ignis-kernel @venizia/ignis-helpers reflect-metadata ra-core ra-i18n-polyglot
8
8
  ```
9
9
 
10
10
  Most applications install [`@venizia/ardor`](https://www.npmjs.com/package/@venizia/ardor) instead,
@@ -49,7 +49,7 @@ export interface IAuthProvider extends IReactAdminAuthProvider {
49
49
  }
50
50
  export interface II18nProviderOptions {
51
51
  i18nSources?: Record<string | symbol, AnyType>;
52
- listLanguages?: Locale[];
52
+ languages?: Array<Locale>;
53
53
  }
54
54
  export interface IApplication extends Omit<CoreAdminProps, 'children'> {
55
55
  container: Container;
@@ -58,8 +58,7 @@ export interface IApplication extends Omit<CoreAdminProps, 'children'> {
58
58
  suspense: ReactNode;
59
59
  /** The application's own resources; each feature's are mounted after them. */
60
60
  resources?: Array<ResourceProps>;
61
- customRoutes?: {
62
- routes: Array<RouteProps>;
63
- };
61
+ /** The application's own routes; each feature's are mounted after them. */
62
+ routes?: Array<RouteProps>;
64
63
  }
65
64
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/common/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/common/types.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"application.d.ts","sourceRoot":"","sources":["../../src/components/application.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAa1B,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAgFpD,eAAO,MAAM,gBAAgB,EAAE,KAAK,CAAC,EAAE,CAAC,YAAY,CA2EnD,CAAC"}
1
+ {"version":3,"file":"application.d.ts","sourceRoot":"","sources":["../../src/components/application.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAa1B,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,iBAAiB,CAAC;AA+EpD,eAAO,MAAM,gBAAgB,EAAE,KAAK,CAAC,EAAE,CAAC,YAAY,CA8EnD,CAAC"}
@@ -4,13 +4,12 @@ import { CoreAdmin, CustomRoutes, Resource } from 'ra-core';
4
4
  import { Provider as ReduxProvider } from 'react-redux';
5
5
  import { Route } from 'react-router-dom';
6
6
  import { CoreBindings, Logger } from '@venizia/ardor-kernel';
7
- import { mountFeatures, readFeatures } from '../features/feature.js';
7
+ import { Features } from '../features/feature.js';
8
8
  import { FeatureMessages } from '../features/messages.js';
9
9
  import { ApplicationContext } from '@venizia/ardor-react';
10
10
  const Wrapper = ({ applicationName = 'ArdorApplication', container, reduxStore, suspense, enableDebug = false, children, }) => {
11
11
  return (_jsx(ApplicationContext.Provider, { value: {
12
12
  container,
13
- registry: container,
14
13
  logger: Logger.getInstance({ scope: applicationName, enableDebug }),
15
14
  }, children: _jsx(ReduxProvider, { store: reduxStore, children: _jsx(React.Suspense, { fallback: suspense, children: children }) }) }));
16
15
  };
@@ -50,14 +49,13 @@ const useFeatureMessagesReady = (opts) => {
50
49
  return state.isReady;
51
50
  };
52
51
  export const ArdorApplication = (props) => {
53
- const { container, reduxStore, suspense, enableDebug = false, resources, customRoutes, ...raProps } = props;
54
- const { routes } = customRoutes ?? {};
52
+ const { container, reduxStore, suspense, enableDebug = false, resources, routes, ...reactAdminProps } = props;
55
53
  const features = React.useMemo(() => {
56
- return readFeatures({ container });
54
+ return Features.read({ container });
57
55
  }, [container]);
58
56
  // The application's own resources and routes, then each feature's it bound in `features()`.
59
57
  const mounted = React.useMemo(() => {
60
- return mountFeatures({ features, resources, routes });
58
+ return Features.mount({ features, resources, routes });
61
59
  }, [features, resources, routes]);
62
60
  const adminProps = React.useMemo(() => {
63
61
  const dataProvider = container.get({
@@ -72,8 +70,13 @@ export const ArdorApplication = (props) => {
72
70
  const i18nProvider = container.get({
73
71
  key: CoreBindings.DEFAULT_I18N_PROVIDER,
74
72
  });
75
- return { dataProvider, ...(authProvider ? { authProvider } : {}), i18nProvider, ...raProps };
76
- }, [container, raProps]);
73
+ return {
74
+ dataProvider,
75
+ ...(authProvider ? { authProvider } : {}),
76
+ i18nProvider,
77
+ ...reactAdminProps,
78
+ };
79
+ }, [container, reactAdminProps]);
77
80
  const isMessagesReady = useFeatureMessagesReady({
78
81
  features,
79
82
  i18nProvider: adminProps.i18nProvider,
@@ -1 +1 @@
1
- {"version":3,"file":"application.js","sourceRoot":"","sources":["../../src/components/application.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"application.js","sourceRoot":"","sources":["../../src/components/application.tsx"],"names":[],"mappings":"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"}
@@ -9,28 +9,30 @@ export type TFeatureMessages = Record<string, object | (() => Promise<object>)>;
9
9
  * admin - resources, routes and messages. `TExtension` is what a shell adds on top, such as menu
10
10
  * entries; ARDOR carries it and never reads it.
11
11
  */
12
- export type IFeature<TExtension extends object = {}> = IFeatureBase & TExtension & {
12
+ export type TFeature<TExtension extends object = {}> = IFeatureBase & TExtension & {
13
13
  resources?: Array<ResourceProps>;
14
14
  routes?: Array<RouteProps>;
15
15
  /** The application's own `i18nSources` override these. */
16
16
  messages?: TFeatureMessages;
17
17
  };
18
- /** Types a feature, keeping the shell's extension. */
19
- export declare const defineFeature: <TExtension extends object = {}>(feature: IFeature<TExtension>) => IFeature<TExtension>;
20
- /** The features the application bound under `CoreBindings.FEATURES`, or none. */
21
- export declare const readFeatures: <TFeature extends IFeature = IFeature>(opts: {
22
- container: Container;
23
- }) => Array<TFeature>;
24
- /**
25
- * The application's own resources and routes, then each feature's, in order. A resource name
26
- * mounted twice throws: react-admin would keep one and drop the other without a word.
27
- */
28
- export declare const mountFeatures: (opts: {
29
- features: Array<IFeature>;
30
- resources?: Array<ResourceProps>;
31
- routes?: Array<RouteProps>;
32
- }) => {
33
- resources: Array<ResourceProps>;
34
- routes: Array<RouteProps>;
35
- };
18
+ export declare class Features {
19
+ /** Types a feature, keeping the shell's extension. */
20
+ static define<TExtension extends object = {}>(feature: TFeature<TExtension>): TFeature<TExtension>;
21
+ /** The features the application bound under `CoreBindings.FEATURES`, or none. */
22
+ static read<TItem extends TFeature = TFeature>(opts: {
23
+ container: Container;
24
+ }): Array<TItem>;
25
+ /**
26
+ * The application's own resources and routes, then each feature's, in order. A resource name
27
+ * mounted twice throws: react-admin would keep one and drop the other without a word.
28
+ */
29
+ static mount(opts: {
30
+ features: Array<TFeature>;
31
+ resources?: Array<ResourceProps>;
32
+ routes?: Array<RouteProps>;
33
+ }): {
34
+ resources: Array<ResourceProps>;
35
+ routes: Array<RouteProps>;
36
+ };
37
+ }
36
38
  //# sourceMappingURL=feature.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"feature.d.ts","sourceRoot":"","sources":["../../src/features/feature.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,SAAS,EAAE,MAAM,0BAA0B,CAAC;AACpE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC7C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEnD,OAAO,EAAgB,KAAK,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAExE,sDAAsD;AACtD,MAAM,MAAM,gBAAgB,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,CAAC,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAEhF;;;;GAIG;AACH,MAAM,MAAM,QAAQ,CAAC,UAAU,SAAS,MAAM,GAAG,EAAE,IAAI,YAAY,GACjE,UAAU,GAAG;IACX,SAAS,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,CAAC;IACjC,MAAM,CAAC,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;IAC3B,0DAA0D;IAC1D,QAAQ,CAAC,EAAE,gBAAgB,CAAC;CAC7B,CAAC;AAEJ,sDAAsD;AACtD,eAAO,MAAM,aAAa,GAAI,UAAU,SAAS,MAAM,GAAG,EAAE,EAC1D,SAAS,QAAQ,CAAC,UAAU,CAAC,KAC5B,QAAQ,CAAC,UAAU,CAErB,CAAC;AAEF,iFAAiF;AACjF,eAAO,MAAM,YAAY,GAAI,QAAQ,SAAS,QAAQ,GAAG,QAAQ,EAAE,MAAM;IACvE,SAAS,EAAE,SAAS,CAAC;CACtB,KAAG,KAAK,CAAC,QAAQ,CAQjB,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,aAAa,GAAI,MAAM;IAClC,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC1B,SAAS,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,CAAC;IACjC,MAAM,CAAC,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;CAC5B,KAAG;IAAE,SAAS,EAAE,KAAK,CAAC,aAAa,CAAC,CAAC;IAAC,MAAM,EAAE,KAAK,CAAC,UAAU,CAAC,CAAA;CAyB/D,CAAC"}
1
+ {"version":3,"file":"feature.d.ts","sourceRoot":"","sources":["../../src/features/feature.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,SAAS,EAAE,MAAM,0BAA0B,CAAC;AACpE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC7C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEnD,OAAO,EAAgB,KAAK,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAExE,sDAAsD;AACtD,MAAM,MAAM,gBAAgB,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,CAAC,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAEhF;;;;GAIG;AACH,MAAM,MAAM,QAAQ,CAAC,UAAU,SAAS,MAAM,GAAG,EAAE,IAAI,YAAY,GACjE,UAAU,GAAG;IACX,SAAS,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,CAAC;IACjC,MAAM,CAAC,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;IAC3B,0DAA0D;IAC1D,QAAQ,CAAC,EAAE,gBAAgB,CAAC;CAC7B,CAAC;AAEJ,qBAAa,QAAQ;IACnB,sDAAsD;IACtD,MAAM,CAAC,MAAM,CAAC,UAAU,SAAS,MAAM,GAAG,EAAE,EAC1C,OAAO,EAAE,QAAQ,CAAC,UAAU,CAAC,GAC5B,QAAQ,CAAC,UAAU,CAAC;IAIvB,iFAAiF;IACjF,MAAM,CAAC,IAAI,CAAC,KAAK,SAAS,QAAQ,GAAG,QAAQ,EAAE,IAAI,EAAE;QAAE,SAAS,EAAE,SAAS,CAAA;KAAE,GAAG,KAAK,CAAC,KAAK,CAAC;IAU5F;;;OAGG;IACH,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE;QACjB,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;QAC1B,SAAS,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,CAAC;QACjC,MAAM,CAAC,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;KAC5B,GAAG;QAAE,SAAS,EAAE,KAAK,CAAC,aAAa,CAAC,CAAC;QAAC,MAAM,EAAE,KAAK,CAAC,UAAU,CAAC,CAAA;KAAE;CA0BnE"}
@@ -1,42 +1,44 @@
1
1
  import { getError } from '@venizia/ignis-inversion';
2
2
  import { CoreBindings } from '@venizia/ardor-kernel';
3
- /** Types a feature, keeping the shell's extension. */
4
- export const defineFeature = (feature) => {
5
- return feature;
6
- };
7
- /** The features the application bound under `CoreBindings.FEATURES`, or none. */
8
- export const readFeatures = (opts) => {
9
- const { container } = opts;
10
- if (!container.isBound({ key: CoreBindings.FEATURES })) {
11
- return [];
3
+ export class Features {
4
+ /** Types a feature, keeping the shell's extension. */
5
+ static define(feature) {
6
+ return feature;
12
7
  }
13
- return container.get({ key: CoreBindings.FEATURES });
14
- };
15
- /**
16
- * The application's own resources and routes, then each feature's, in order. A resource name
17
- * mounted twice throws: react-admin would keep one and drop the other without a word.
18
- */
19
- export const mountFeatures = (opts) => {
20
- const { features, resources = [], routes = [] } = opts;
21
- const owners = new Map();
22
- const claim = (entry) => {
23
- for (const resource of entry.resources) {
24
- const owner = owners.get(resource.name);
25
- if (owner) {
26
- throw getError({
27
- message: `[features] Resource '${resource.name}' is mounted by both '${owner}' and '${entry.owner}' | A resource name is unique within an application`,
28
- });
8
+ /** The features the application bound under `CoreBindings.FEATURES`, or none. */
9
+ static read(opts) {
10
+ const { container } = opts;
11
+ if (!container.isBound({ key: CoreBindings.FEATURES })) {
12
+ return [];
13
+ }
14
+ return container.get({ key: CoreBindings.FEATURES });
15
+ }
16
+ /**
17
+ * The application's own resources and routes, then each feature's, in order. A resource name
18
+ * mounted twice throws: react-admin would keep one and drop the other without a word.
19
+ */
20
+ static mount(opts) {
21
+ const { features, resources = [], routes = [] } = opts;
22
+ const owners = new Map();
23
+ const claim = (entry) => {
24
+ for (const resource of entry.resources) {
25
+ const owner = owners.get(resource.name);
26
+ if (owner) {
27
+ throw getError({
28
+ message: `[features] Resource '${resource.name}' is mounted by both '${owner}' and '${entry.owner}' | A resource name is unique within an application`,
29
+ });
30
+ }
31
+ owners.set(resource.name, entry.owner);
29
32
  }
30
- owners.set(resource.name, entry.owner);
33
+ };
34
+ claim({ owner: 'the application', resources });
35
+ for (const feature of features) {
36
+ claim({ owner: feature.name, resources: feature.resources ?? [] });
31
37
  }
32
- };
33
- claim({ owner: 'the application', resources });
34
- for (const feature of features) {
35
- claim({ owner: feature.name, resources: feature.resources ?? [] });
38
+ return {
39
+ resources: [...resources, ...features.flatMap((feature) => feature.resources ?? [])],
40
+ routes: [...routes, ...features.flatMap((feature) => feature.routes ?? [])],
41
+ };
36
42
  }
37
- return {
38
- resources: [...resources, ...features.flatMap((feature) => feature.resources ?? [])],
39
- routes: [...routes, ...features.flatMap((feature) => feature.routes ?? [])],
40
- };
41
- };
43
+ }
42
44
  //# sourceMappingURL=feature.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"feature.js","sourceRoot":"","sources":["../../src/features/feature.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAkB,MAAM,0BAA0B,CAAC;AAIpE,OAAO,EAAE,YAAY,EAAqB,MAAM,uBAAuB,CAAC;AAkBxE,sDAAsD;AACtD,MAAM,CAAC,MAAM,aAAa,GAAG,CAC3B,OAA6B,EACP,EAAE;IACxB,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AAEF,iFAAiF;AACjF,MAAM,CAAC,MAAM,YAAY,GAAG,CAAuC,IAElE,EAAmB,EAAE;IACpB,MAAM,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC;IAE3B,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,YAAY,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC;QACvD,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,OAAO,SAAS,CAAC,GAAG,CAAkB,EAAE,GAAG,EAAE,YAAY,CAAC,QAAQ,EAAE,CAAC,CAAC;AACxE,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,IAI7B,EAAkE,EAAE;IACnE,MAAM,EAAE,QAAQ,EAAE,SAAS,GAAG,EAAE,EAAE,MAAM,GAAG,EAAE,EAAE,GAAG,IAAI,CAAC;IAEvD,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAC;IACzC,MAAM,KAAK,GAAG,CAAC,KAAyD,EAAE,EAAE;QAC1E,KAAK,MAAM,QAAQ,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;YACvC,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YACxC,IAAI,KAAK,EAAE,CAAC;gBACV,MAAM,QAAQ,CAAC;oBACb,OAAO,EAAE,wBAAwB,QAAQ,CAAC,IAAI,yBAAyB,KAAK,UAAU,KAAK,CAAC,KAAK,qDAAqD;iBACvJ,CAAC,CAAC;YACL,CAAC;YACD,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;QACzC,CAAC;IACH,CAAC,CAAC;IAEF,KAAK,CAAC,EAAE,KAAK,EAAE,iBAAiB,EAAE,SAAS,EAAE,CAAC,CAAC;IAC/C,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,KAAK,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,EAAE,EAAE,CAAC,CAAC;IACrE,CAAC;IAED,OAAO;QACL,SAAS,EAAE,CAAC,GAAG,SAAS,EAAE,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC;QACpF,MAAM,EAAE,CAAC,GAAG,MAAM,EAAE,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;KAC5E,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"feature.js","sourceRoot":"","sources":["../../src/features/feature.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAkB,MAAM,0BAA0B,CAAC;AAIpE,OAAO,EAAE,YAAY,EAAqB,MAAM,uBAAuB,CAAC;AAkBxE,MAAM,OAAO,QAAQ;IACnB,sDAAsD;IACtD,MAAM,CAAC,MAAM,CACX,OAA6B;QAE7B,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,iFAAiF;IACjF,MAAM,CAAC,IAAI,CAAoC,IAA8B;QAC3E,MAAM,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC;QAE3B,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,YAAY,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC;YACvD,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,OAAO,SAAS,CAAC,GAAG,CAAe,EAAE,GAAG,EAAE,YAAY,CAAC,QAAQ,EAAE,CAAC,CAAC;IACrE,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,KAAK,CAAC,IAIZ;QACC,MAAM,EAAE,QAAQ,EAAE,SAAS,GAAG,EAAE,EAAE,MAAM,GAAG,EAAE,EAAE,GAAG,IAAI,CAAC;QAEvD,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAC;QACzC,MAAM,KAAK,GAAG,CAAC,KAAyD,EAAE,EAAE;YAC1E,KAAK,MAAM,QAAQ,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;gBACvC,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;gBACxC,IAAI,KAAK,EAAE,CAAC;oBACV,MAAM,QAAQ,CAAC;wBACb,OAAO,EAAE,wBAAwB,QAAQ,CAAC,IAAI,yBAAyB,KAAK,UAAU,KAAK,CAAC,KAAK,qDAAqD;qBACvJ,CAAC,CAAC;gBACL,CAAC;gBACD,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;YACzC,CAAC;QACH,CAAC,CAAC;QAEF,KAAK,CAAC,EAAE,KAAK,EAAE,iBAAiB,EAAE,SAAS,EAAE,CAAC,CAAC;QAC/C,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,KAAK,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,EAAE,EAAE,CAAC,CAAC;QACrE,CAAC;QAED,OAAO;YACL,SAAS,EAAE,CAAC,GAAG,SAAS,EAAE,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC;YACpF,MAAM,EAAE,CAAC,GAAG,MAAM,EAAE,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;SAC5E,CAAC;IACJ,CAAC;CACF"}
@@ -1,2 +1,2 @@
1
- export { defineFeature, type IFeature, type TFeatureMessages } from './feature.js';
1
+ export { Features, type TFeature, type TFeatureMessages } from './feature.js';
2
2
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/features/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,KAAK,QAAQ,EAAE,KAAK,gBAAgB,EAAE,MAAM,WAAW,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/features/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,KAAK,QAAQ,EAAE,KAAK,gBAAgB,EAAE,MAAM,WAAW,CAAC"}
@@ -1,4 +1,4 @@
1
- // The public surface: the feature type and its helper. `readFeatures`, `mountFeatures` and
2
- // `FeatureMessages` stay internal to the admin package.
3
- export { defineFeature } from './feature.js';
1
+ // The public surface: the feature type and its statics. `FeatureMessages` stays internal to the
2
+ // admin package.
3
+ export { Features } from './feature.js';
4
4
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/features/index.ts"],"names":[],"mappings":"AAAA,2FAA2F;AAC3F,wDAAwD;AACxD,OAAO,EAAE,aAAa,EAAwC,MAAM,WAAW,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/features/index.ts"],"names":[],"mappings":"AAAA,gGAAgG;AAChG,iBAAiB;AACjB,OAAO,EAAE,QAAQ,EAAwC,MAAM,WAAW,CAAC"}
@@ -1,4 +1,4 @@
1
- import { type IFeature } from './feature.js';
1
+ import { type TFeature } from './feature.js';
2
2
  /**
3
3
  * The features' messages for one locale, merged. Keys stay flat - no namespace is added - so a key
4
4
  * two features both define throws, naming both: a silent "later wins" is a wrong label nobody
@@ -8,11 +8,11 @@ export declare class FeatureMessages {
8
8
  private readonly opts;
9
9
  private readonly loaded;
10
10
  constructor(opts: {
11
- features: Array<IFeature>;
11
+ features: Array<TFeature>;
12
12
  });
13
13
  /** Whether some feature in the list loads this locale lazily. */
14
14
  static hasLoader(opts: {
15
- features: Array<IFeature>;
15
+ features: Array<TFeature>;
16
16
  locale: string;
17
17
  }): boolean;
18
18
  /** Whether a lazy bundle for the locale is still unloaded. */
@@ -1,4 +1,4 @@
1
- import { type IFeature } from '../features/feature.js';
1
+ import { type TFeature } from '../features/feature.js';
2
2
  /** The features the application mounts - for a menu, or a role editor listing their `permissions`. */
3
- export declare const useFeatures: <TFeature extends IFeature = IFeature>() => Array<TFeature>;
3
+ export declare const useFeatures: <TItem extends TFeature = TFeature>() => Array<TItem>;
4
4
  //# sourceMappingURL=use-features.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-features.d.ts","sourceRoot":"","sources":["../../src/hooks/use-features.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,QAAQ,EAAgB,MAAM,oBAAoB,CAAC;AAEjE,sGAAsG;AACtG,eAAO,MAAM,WAAW,GAAI,QAAQ,SAAS,QAAQ,GAAG,QAAQ,OAAK,KAAK,CAAC,QAAQ,CAGlF,CAAC"}
1
+ {"version":3,"file":"use-features.d.ts","sourceRoot":"","sources":["../../src/hooks/use-features.ts"],"names":[],"mappings":"AAEA,OAAO,EAAY,KAAK,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAE7D,sGAAsG;AACtG,eAAO,MAAM,WAAW,GAAI,KAAK,SAAS,QAAQ,GAAG,QAAQ,OAAK,KAAK,CAAC,KAAK,CAG5E,CAAC"}
@@ -1,8 +1,8 @@
1
1
  import { useInjectableContainer } from '@venizia/ardor-react';
2
- import { readFeatures } from '../features/feature.js';
2
+ import { Features } from '../features/feature.js';
3
3
  /** The features the application mounts - for a menu, or a role editor listing their `permissions`. */
4
4
  export const useFeatures = () => {
5
5
  const container = useInjectableContainer();
6
- return readFeatures({ container });
6
+ return Features.read({ container });
7
7
  };
8
8
  //# sourceMappingURL=use-features.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-features.js","sourceRoot":"","sources":["../../src/hooks/use-features.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAE9D,OAAO,EAAiB,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEjE,sGAAsG;AACtG,MAAM,CAAC,MAAM,WAAW,GAAG,GAA0D,EAAE;IACrF,MAAM,SAAS,GAAG,sBAAsB,EAAE,CAAC;IAC3C,OAAO,YAAY,CAAW,EAAE,SAAS,EAAE,CAAC,CAAC;AAC/C,CAAC,CAAC"}
1
+ {"version":3,"file":"use-features.js","sourceRoot":"","sources":["../../src/hooks/use-features.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAE9D,OAAO,EAAE,QAAQ,EAAiB,MAAM,oBAAoB,CAAC;AAE7D,sGAAsG;AACtG,MAAM,CAAC,MAAM,WAAW,GAAG,GAAoD,EAAE;IAC/E,MAAM,SAAS,GAAG,sBAAsB,EAAE,CAAC;IAC3C,OAAO,QAAQ,CAAC,IAAI,CAAQ,EAAE,SAAS,EAAE,CAAC,CAAC;AAC7C,CAAC,CAAC"}
@@ -1,4 +1,6 @@
1
- export declare const useRequestHeaderLocale: (params?: {
1
+ export interface IUseRequestHeaderLocaleOptions {
2
+ /** The header the locale is sent in. Default `x-locale`. */
2
3
  key?: string;
3
- }) => void;
4
+ }
5
+ export declare const useRequestHeaderLocale: (opts?: IUseRequestHeaderLocaleOptions) => void;
4
6
  //# sourceMappingURL=use-request-header-locale.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-request-header-locale.d.ts","sourceRoot":"","sources":["../../src/hooks/use-request-header-locale.ts"],"names":[],"mappings":"AAQA,eAAO,MAAM,sBAAsB,GAAI,SAAS;IAAE,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,SAc/D,CAAC"}
1
+ {"version":3,"file":"use-request-header-locale.d.ts","sourceRoot":"","sources":["../../src/hooks/use-request-header-locale.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,8BAA8B;IAC7C,4DAA4D;IAC5D,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,eAAO,MAAM,sBAAsB,GAAI,OAAO,8BAA8B,SAc3E,CAAC"}
@@ -1,15 +1,15 @@
1
1
  import React from 'react';
2
2
  import { useLocaleState } from 'ra-core';
3
- import { CoreBindings, HeaderConsts } from '@venizia/ardor-kernel';
3
+ import { CoreBindings, HeaderConstants } from '@venizia/ardor-kernel';
4
4
  import { useInjectable } from '@venizia/ardor-react';
5
- export const useRequestHeaderLocale = (params) => {
6
- const key = params?.key?.length ? params.key : HeaderConsts.X_LOCALE;
5
+ export const useRequestHeaderLocale = (opts) => {
6
+ const key = opts?.key?.length ? opts.key : HeaderConstants.X_LOCALE;
7
7
  const [locale] = useLocaleState();
8
8
  const defaultRestDataProvider = useInjectable({
9
9
  key: CoreBindings.DEFAULT_REST_DATA_PROVIDER,
10
10
  });
11
11
  React.useEffect(() => {
12
- defaultRestDataProvider.getNetworkService().setHeaders({ [key]: locale });
12
+ defaultRestDataProvider.getNetworkService().setHeaders({ headers: { [key]: locale } });
13
13
  return () => { };
14
14
  }, [defaultRestDataProvider, key, locale]);
15
15
  };
@@ -1 +1 @@
1
- {"version":3,"file":"use-request-header-locale.js","sourceRoot":"","sources":["../../src/hooks/use-request-header-locale.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAGzC,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACnE,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAErD,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,MAAyB,EAAE,EAAE;IAClE,MAAM,GAAG,GAAG,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC;IAErE,MAAM,CAAC,MAAM,CAAC,GAAG,cAAc,EAAE,CAAC;IAElC,MAAM,uBAAuB,GAAG,aAAa,CAA0B;QACrE,GAAG,EAAE,YAAY,CAAC,0BAA0B;KAC7C,CAAC,CAAC;IAEH,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,uBAAuB,CAAC,iBAAiB,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;QAE1E,OAAO,GAAG,EAAE,GAAE,CAAC,CAAC;IAClB,CAAC,EAAE,CAAC,uBAAuB,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC;AAC7C,CAAC,CAAC"}
1
+ {"version":3,"file":"use-request-header-locale.js","sourceRoot":"","sources":["../../src/hooks/use-request-header-locale.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAGzC,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACtE,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAOrD,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,IAAqC,EAAE,EAAE;IAC9E,MAAM,GAAG,GAAG,IAAI,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,eAAe,CAAC,QAAQ,CAAC;IAEpE,MAAM,CAAC,MAAM,CAAC,GAAG,cAAc,EAAE,CAAC;IAElC,MAAM,uBAAuB,GAAG,aAAa,CAA0B;QACrE,GAAG,EAAE,YAAY,CAAC,0BAA0B;KAC7C,CAAC,CAAC;IAEH,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,uBAAuB,CAAC,iBAAiB,EAAE,CAAC,UAAU,CAAC,EAAE,OAAO,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;QAEvF,OAAO,GAAG,EAAE,GAAE,CAAC,CAAC;IAClB,CAAC,EAAE,CAAC,uBAAuB,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC;AAC7C,CAAC,CAAC"}
@@ -1,27 +1,93 @@
1
1
  import { type Container } from '@venizia/ignis-inversion';
2
- import { type AnyType, BaseProvider, type DefaultAuthService, type IAuthProviderOptions, type IPermissionProvider } from '@venizia/ardor-kernel';
2
+ import { type AnyType, BaseProvider, type DefaultAuthService, type IAuthProviderOptions, type ISignInSession, type IPermissionProvider } from '@venizia/ardor-kernel';
3
3
  import { type IAuthProvider, type IDataProvider } from '../common/index.js';
4
+ /**
5
+ * The options hold data (`paths`); behaviour is in the protected hooks, each taking one `opts`
6
+ * object: `buildSignInBody`, `resolveUsername`, `beforeSaveSession`, `saveSession` and
7
+ * `readSignInSession` around `login`, and the page paths (`signInPath`, `afterLoginPath`,
8
+ * `loginPagePath`, `unauthorizedPagePath`).
9
+ */
4
10
  export declare class DefaultAuthProvider<TResource extends string = string> extends BaseProvider<IAuthProvider> {
5
11
  protected restDataProvider: IDataProvider<TResource>;
6
12
  protected authProviderOptions: IAuthProviderOptions;
7
13
  protected authService: DefaultAuthService;
8
14
  protected permissionProvider?: IPermissionProvider | undefined;
9
15
  constructor(restDataProvider: IDataProvider<TResource>, authProviderOptions: IAuthProviderOptions, authService: DefaultAuthService, permissionProvider?: IPermissionProvider | undefined);
16
+ /** Where `login` posts: `paths.signIn`, else the IGNIS auth controller's route. */
17
+ protected get signInPath(): string;
18
+ /** Where the admin goes once `login` resolves: `paths.afterLogin`, else `/`. */
19
+ protected get afterLoginPath(): string;
20
+ /** The route of the login page, which `checkAuth` and a `401` redirect to. */
21
+ protected get loginPagePath(): string;
22
+ /** The route a `403` redirects to; the application mounts it. */
23
+ protected get unauthorizedPagePath(): string;
10
24
  /**
11
- * The body of the sign-in request: `signInBody` of the options, else the IGNIS sign-in body made
12
- * from `params.username` and `params.password`. A subclass may override this instead.
25
+ * The body of the sign-in request: the IGNIS sign-in body, made from `params.username` and
26
+ * `params.password`. Override it when the API wants another shape; `opts.params` as it is posts
27
+ * the login form unchanged.
13
28
  */
14
- protected buildSignInBody(params: AnyType): AnyType;
15
- login(params: AnyType): Promise<{
16
- redirectTo: string;
17
- data: any;
18
- }>;
29
+ protected buildSignInBody(opts: {
30
+ params: AnyType;
31
+ }): unknown;
32
+ /**
33
+ * What a sign-in response carries. IGNIS's auth controller returns whatever the application's
34
+ * `signIn` returns, so two shapes are read: `{ userId, roles?, token: { value, type } }` (the
35
+ * recommended one), and `{ token: '<jwt>' }`, a Bearer token whose user id is a claim of the token
36
+ * itself (`userId`, else `sub`). Roles come from the response, else from the token's `roles`
37
+ * claim. A response with no token or no user id throws: storing `undefined` would pass `login`
38
+ * and fail every check after it.
39
+ */
40
+ protected readSignInSession(opts: {
41
+ data: unknown;
42
+ }): ISignInSession;
43
+ /** The claims of a JWT, or `undefined` for a token that is not one. The signature is not checked. */
44
+ protected decodeJwtClaims(opts: {
45
+ jwt: string;
46
+ }): Record<string, unknown> | undefined;
47
+ /**
48
+ * The role names of a list: a string is a name, and an object is named by its `identifier`, else
49
+ * its `name` (IGNIS's role model has an `identifier`). An entry that is neither is skipped.
50
+ */
51
+ protected readRoleNames(opts: {
52
+ roles: unknown;
53
+ }): Array<string>;
54
+ /** The username `login` remembers with the identity. Default: `params.username`. */
55
+ protected resolveUsername(opts: {
56
+ params: AnyType;
57
+ }): string;
58
+ /**
59
+ * Runs once the sign-in response is read and before the session is saved. A throw or a rejection
60
+ * rejects `login` and nothing is saved: the place to refuse a user, or to hand the token to
61
+ * another service.
62
+ */
63
+ protected beforeSaveSession(_opts: {
64
+ session: ISignInSession;
65
+ params: AnyType;
66
+ }): Promise<void>;
67
+ /**
68
+ * Saves the session where `checkAuth`, `getIdentity` and `getRoles` read it. A provider that
69
+ * keeps the session elsewhere overrides this to do nothing; `login` still resolves.
70
+ */
71
+ protected saveSession(opts: {
72
+ session: ISignInSession;
73
+ username: string;
74
+ }): void;
75
+ /**
76
+ * Typed `Promise<unknown>`, as it was before it became async: a subclass that overrides `login`
77
+ * with that signature keeps compiling.
78
+ */
79
+ login(params: AnyType): Promise<unknown>;
19
80
  logout(_params: AnyType): Promise<void>;
20
81
  checkAuth(_params: AnyType): Promise<void>;
21
82
  checkError(params: AnyType): Promise<void>;
22
83
  getIdentity(_params: AnyType): Promise<any>;
23
84
  getPermissions(_params: AnyType): Promise<void>;
24
85
  getRoles(_params: AnyType): Promise<Set<string>>;
86
+ /**
87
+ * Refreshes the session through the network service's `refresh`, the one place a refresh is made:
88
+ * `true` when it was refreshed, `false` when the service has no refresh to make. The `401`
89
+ * recovery calls the same method, so one burst of 401s and this call share one refresh.
90
+ */
25
91
  refreshToken(): Promise<AnyType>;
26
92
  value(container: Container): IAuthProvider;
27
93
  }
@@ -1 +1 @@
1
- {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/providers/auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAoB,MAAM,0BAA0B,CAAC;AAG5E,OAAO,EACL,KAAK,OAAO,EACZ,YAAY,EAEZ,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,EAEzB,KAAK,mBAAmB,EAEzB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,aAAa,EAAE,MAAM,UAAU,CAAC;AAgGlE,qBAAa,mBAAmB,CAC9B,SAAS,SAAS,MAAM,GAAG,MAAM,CACjC,SAAQ,YAAY,CAAC,aAAa,CAAC;IAGjC,SAAS,CAAC,gBAAgB,EAAE,aAAa,CAAC,SAAS,CAAC;IAEpD,SAAS,CAAC,mBAAmB,EAAE,oBAAoB;IAEnD,SAAS,CAAC,WAAW,EAAE,kBAAkB;IAEzC,SAAS,CAAC,kBAAkB,CAAC,EAAE,mBAAmB;gBANxC,gBAAgB,EAAE,aAAa,CAAC,SAAS,CAAC,EAE1C,mBAAmB,EAAE,oBAAoB,EAEzC,WAAW,EAAE,kBAAkB,EAE/B,kBAAkB,CAAC,EAAE,mBAAmB,YAAA;IAKpD;;;OAGG;IACH,SAAS,CAAC,eAAe,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO;IAW7C,KAAK,CAAC,MAAM,EAAE,OAAO;;;;IA0B3B,MAAM,CAAC,OAAO,EAAE,OAAO;IAOjB,SAAS,CAAC,OAAO,EAAE,OAAO;IAuBhC,UAAU,CAAC,MAAM,EAAE,OAAO;IAmB1B,WAAW,CAAC,OAAO,EAAE,OAAO;IAU5B,cAAc,CAAC,OAAO,EAAE,OAAO;IAI/B,QAAQ,CAAC,OAAO,EAAE,OAAO;IAIzB,YAAY,IAAI,OAAO,CAAC,OAAO,CAAC;IAIvB,KAAK,CAAC,SAAS,EAAE,SAAS,GAAG,aAAa;CA6BpD"}
1
+ {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/providers/auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAoB,MAAM,0BAA0B,CAAC;AAG5E,OAAO,EACL,KAAK,OAAO,EACZ,YAAY,EAEZ,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,EACzB,KAAK,cAAc,EACnB,KAAK,mBAAmB,EAEzB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,aAAa,EAAE,MAAM,UAAU,CAAC;AAElE;;;;;GAKG;AACH,qBAAa,mBAAmB,CAC9B,SAAS,SAAS,MAAM,GAAG,MAAM,CACjC,SAAQ,YAAY,CAAC,aAAa,CAAC;IAGjC,SAAS,CAAC,gBAAgB,EAAE,aAAa,CAAC,SAAS,CAAC;IAEpD,SAAS,CAAC,mBAAmB,EAAE,oBAAoB;IAEnD,SAAS,CAAC,WAAW,EAAE,kBAAkB;IAEzC,SAAS,CAAC,kBAAkB,CAAC,EAAE,mBAAmB;gBANxC,gBAAgB,EAAE,aAAa,CAAC,SAAS,CAAC,EAE1C,mBAAmB,EAAE,oBAAoB,EAEzC,WAAW,EAAE,kBAAkB,EAE/B,kBAAkB,CAAC,EAAE,mBAAmB,YAAA;IAOpD,mFAAmF;IACnF,SAAS,KAAK,UAAU,IAAI,MAAM,CAEjC;IAED,gFAAgF;IAChF,SAAS,KAAK,cAAc,IAAI,MAAM,CAErC;IAED,8EAA8E;IAC9E,SAAS,KAAK,aAAa,IAAI,MAAM,CAEpC;IAED,iEAAiE;IACjE,SAAS,KAAK,oBAAoB,IAAI,MAAM,CAE3C;IAID;;;;OAIG;IACH,SAAS,CAAC,eAAe,CAAC,IAAI,EAAE;QAAE,MAAM,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO;IAO7D;;;;;;;OAOG;IACH,SAAS,CAAC,iBAAiB,CAAC,IAAI,EAAE;QAAE,IAAI,EAAE,OAAO,CAAA;KAAE,GAAG,cAAc;IA0CpE,qGAAqG;IACrG,SAAS,CAAC,eAAe,CAAC,IAAI,EAAE;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS;IAmBrF;;;OAGG;IACH,SAAS,CAAC,aAAa,CAAC,IAAI,EAAE;QAAE,KAAK,EAAE,OAAO,CAAA;KAAE,GAAG,KAAK,CAAC,MAAM,CAAC;IAqBhE,oFAAoF;IACpF,SAAS,CAAC,eAAe,CAAC,IAAI,EAAE;QAAE,MAAM,EAAE,OAAO,CAAA;KAAE,GAAG,MAAM;IAI5D;;;;OAIG;IACH,SAAS,CAAC,iBAAiB,CAAC,KAAK,EAAE;QAAE,OAAO,EAAE,cAAc,CAAC;QAAC,MAAM,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAI/F;;;OAGG;IACH,SAAS,CAAC,WAAW,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,cAAc,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAYhF;;;OAGG;IACG,KAAK,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAkB9C,MAAM,CAAC,OAAO,EAAE,OAAO;IAOjB,SAAS,CAAC,OAAO,EAAE,OAAO;IAuBhC,UAAU,CAAC,MAAM,EAAE,OAAO;IAmB1B,WAAW,CAAC,OAAO,EAAE,OAAO;IAU5B,cAAc,CAAC,OAAO,EAAE,OAAO;IAI/B,QAAQ,CAAC,OAAO,EAAE,OAAO;IAIzB;;;;OAIG;IACH,YAAY,IAAI,OAAO,CAAC,OAAO,CAAC;IAIvB,KAAK,CAAC,SAAS,EAAE,SAAS,GAAG,aAAa;CA6BpD"}