@venizia/ardor-admin 0.4.3 → 0.4.4
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.md +1 -7
- package/README.md +13 -0
- package/dist/common/types.d.ts +8 -0
- package/dist/common/types.d.ts.map +1 -1
- package/dist/components/application.d.ts.map +1 -1
- package/dist/components/application.js +10 -21
- package/dist/components/application.js.map +1 -1
- package/dist/components/index.d.ts +1 -0
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/index.js +1 -0
- package/dist/components/index.js.map +1 -1
- package/dist/components/resolve.d.ts +30 -0
- package/dist/components/resolve.d.ts.map +1 -0
- package/dist/components/resolve.js +41 -0
- package/dist/components/resolve.js.map +1 -0
- package/package.json +8 -8
package/LICENSE.md
CHANGED
|
@@ -5,7 +5,7 @@ ARDOR is a TypeScript frontend application framework built on [IGNIS](https://ig
|
|
|
5
5
|
|
|
6
6
|
## MIT License
|
|
7
7
|
|
|
8
|
-
Copyright (c) 2025
|
|
8
|
+
Copyright (c) 2025 Venizia Co., Ltd.
|
|
9
9
|
|
|
10
10
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
11
11
|
of this software and associated documentation files (the "Software"), to deal
|
|
@@ -62,8 +62,6 @@ these projects.
|
|
|
62
62
|
| [React Redux](https://github.com/reduxjs/react-redux) | MIT | React bindings for Redux |
|
|
63
63
|
| [TanStack Query](https://github.com/TanStack/query) | MIT | Asynchronous state management |
|
|
64
64
|
| [React Router](https://github.com/remix-run/react-router) | MIT | Routing |
|
|
65
|
-
| [Axios](https://github.com/axios/axios) | MIT | HTTP client |
|
|
66
|
-
| [Socket.IO Client](https://github.com/socketio/socket.io) | MIT | Real-time bidirectional communication |
|
|
67
65
|
| [Lodash](https://github.com/lodash/lodash) | MIT | Utility library |
|
|
68
66
|
| [node-polyglot](https://github.com/airbnb/polyglot.js) (`ra-i18n-polyglot`) | BSD-2-Clause | Internationalisation |
|
|
69
67
|
|
|
@@ -72,9 +70,6 @@ these projects.
|
|
|
72
70
|
| Library | License | Description |
|
|
73
71
|
|---------|---------|-------------|
|
|
74
72
|
| [Tailwind CSS](https://github.com/tailwindlabs/tailwindcss) | MIT | Utility-first CSS framework |
|
|
75
|
-
| [Radix UI](https://github.com/radix-ui/primitives) | MIT | Unstyled, accessible component primitives |
|
|
76
|
-
| [Lucide](https://github.com/lucide-icons/lucide) | ISC | Icon set |
|
|
77
|
-
| [Day.js](https://github.com/iamkun/dayjs) | MIT | Date manipulation library |
|
|
78
73
|
|
|
79
74
|
---
|
|
80
75
|
|
|
@@ -84,7 +79,6 @@ ARDOR is inspired by and built upon the work of many open-source projects:
|
|
|
84
79
|
|
|
85
80
|
- **[IGNIS](https://ignis.venizia.ai)** - The backend framework ARDOR is the frontend sibling of
|
|
86
81
|
- **[react-admin](https://marmelab.com/react-admin/)** by Marmelab - The admin framework ARDOR adapts
|
|
87
|
-
- **[LoopBack 4](https://loopback.io/)** by IBM/StrongLoop - Inspiration for the binding-key and provider patterns
|
|
88
82
|
- **[shadcn/ui](https://ui.shadcn.com/)** - Inspiration and source for the UI kit component layer
|
|
89
83
|
|
|
90
84
|
We thank all the maintainers and contributors of these projects for their excellent work.
|
package/README.md
CHANGED
|
@@ -37,3 +37,16 @@ declare module '@venizia/ardor-admin' {
|
|
|
37
37
|
## License
|
|
38
38
|
|
|
39
39
|
MIT - see [LICENSE.md](./LICENSE.md).
|
|
40
|
+
|
|
41
|
+
---
|
|
42
|
+
|
|
43
|
+
<p align="center">
|
|
44
|
+
<a href="https://venizia.ai">
|
|
45
|
+
<picture>
|
|
46
|
+
<source media="(prefers-color-scheme: dark)" srcset="https://venizia.ai/assets/logo-white.svg">
|
|
47
|
+
<img src="https://venizia.ai/assets/logo.svg" alt="VENIZIA" height="28">
|
|
48
|
+
</picture>
|
|
49
|
+
</a>
|
|
50
|
+
<br>
|
|
51
|
+
<sub><code>@venizia/ardor-admin</code> is part of ARDOR, built and maintained by <a href="https://venizia.ai">VENIZIA</a>.</sub>
|
|
52
|
+
</p>
|
package/dist/common/types.d.ts
CHANGED
|
@@ -5,6 +5,7 @@ import type { AuthProvider, CoreAdminProps, DataProvider, Locale, ResourceProps
|
|
|
5
5
|
import type { ReactNode } from 'react';
|
|
6
6
|
import type { RouteProps } from 'react-router-dom';
|
|
7
7
|
import type { DefaultNetworkRequestService, IDataSourceAuth, ISendParams, ISendResponse, RequestCountData, TConstValue, TRequestMethod, TRequestType } from '@venizia/ardor-kernel';
|
|
8
|
+
import type { TFeature } from '../features/feature.js';
|
|
8
9
|
/** What `DefaultRestDataProvider.request` sends: every react-admin method goes through it. */
|
|
9
10
|
export interface IRestRequestOptions<TResource extends string = string> {
|
|
10
11
|
resource: TResource;
|
|
@@ -52,5 +53,12 @@ export interface IApplication extends Omit<CoreAdminProps, 'children'> {
|
|
|
52
53
|
resources?: Array<ResourceProps>;
|
|
53
54
|
/** The application's own routes; each feature's are mounted after them. */
|
|
54
55
|
routes?: Array<RouteProps>;
|
|
56
|
+
/**
|
|
57
|
+
* The features to mount, when the shell mounts fewer than the application bound - filter
|
|
58
|
+
* `Features.read({ container })` and pass the result. Absent, every bound feature is mounted. The
|
|
59
|
+
* list is read as given: pass the same array until the filter changes, and remount the application
|
|
60
|
+
* (a `key`) when it does.
|
|
61
|
+
*/
|
|
62
|
+
features?: Array<TFeature>;
|
|
55
63
|
}
|
|
56
64
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/common/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AACtE,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACjG,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEnD,OAAO,KAAK,EACV,4BAA4B,EAC5B,eAAe,EACf,WAAW,EACX,aAAa,EACb,gBAAgB,EAChB,WAAW,EACX,cAAc,EACd,YAAY,EACb,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/common/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AACtE,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACjG,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEnD,OAAO,KAAK,EACV,4BAA4B,EAC5B,eAAe,EACf,WAAW,EACX,aAAa,EACb,gBAAgB,EAChB,WAAW,EACX,cAAc,EACd,YAAY,EACb,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAEnD,8FAA8F;AAC9F,MAAM,WAAW,mBAAmB,CAAC,SAAS,SAAS,MAAM,GAAG,MAAM;IACpE,QAAQ,EAAE,SAAS,CAAC;IACpB,IAAI,EAAE,YAAY,CAAC;IACnB,MAAM,EAAE,cAAc,CAAC;IACvB,4BAA4B;IAC5B,KAAK,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACtB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,QAAQ,CAAC,EAAE,WAAW,CAAC,UAAU,CAAC,CAAC;IACnC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,4EAA4E;IAC5E,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,gBAAgB,CAAC,EAAE,WAAW,CAAC,OAAO,gBAAgB,CAAC,CAAC;CACzD;AAED,sEAAsE;AACtE,MAAM,MAAM,uBAAuB,CAAC,SAAS,SAAS,MAAM,GAAG,MAAM,IAAI,IAAI,CAC3E,YAAY,CAAC,SAAS,CAAC,EACrB,SAAS,GACT,QAAQ,GACR,SAAS,GACT,kBAAkB,GAClB,QAAQ,GACR,YAAY,GACZ,QAAQ,GACR,QAAQ,GACR,YAAY,CACf,CAAC;AAEF,MAAM,WAAW,aAAa,CAC5B,SAAS,SAAS,MAAM,GAAG,MAAM,CACjC,SAAQ,uBAAuB,CAAC,SAAS,CAAC;IAC1C,IAAI,EAAE,CAAC,OAAO,GAAG,OAAO,EAAE,IAAI,EAAE;QAC9B,QAAQ,EAAE,SAAS,CAAC;QACpB,MAAM,EAAE,WAAW,CAAC;KACrB,KAAK,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;IAEtC,iBAAiB,IAAI,4BAA4B,CAAC;IAElD,2FAA2F;IAC3F,iBAAiB,IAAI,eAAe,CAAC;CACtC;AAED,oGAAoG;AACpG,MAAM,MAAM,uBAAuB,GAAG,QAAQ,CAC5C,IAAI,CAAC,YAAY,EAAE,OAAO,GAAG,QAAQ,GAAG,WAAW,GAAG,YAAY,GAAG,gBAAgB,CAAC,CACvF,GACC,IAAI,CAAC,YAAY,EAAE,aAAa,GAAG,WAAW,CAAC,CAAC;AAElD,MAAM,WAAW,aAAc,SAAQ,uBAAuB;IAC5D,QAAQ,EAAE,CAAC,MAAM,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;IACrD,uFAAuF;IACvF,YAAY,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;CACtC;AAED,MAAM,WAAW,oBAAoB;IACnC,qGAAqG;IACrG,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,SAAS,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;CAC3B;AAED,MAAM,WAAW,YAAa,SAAQ,IAAI,CAAC,cAAc,EAAE,UAAU,CAAC;IACpE,SAAS,EAAE,SAAS,CAAC;IAErB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,UAAU,EAAE,KAAK,CAAC;IAClB,QAAQ,EAAE,SAAS,CAAC;IAEpB,8EAA8E;IAC9E,SAAS,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,CAAC;IACjC,2EAA2E;IAC3E,MAAM,CAAC,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;IAC3B;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;CAC5B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"application.d.ts","sourceRoot":"","sources":["../../src/components/application.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"application.d.ts","sourceRoot":"","sources":["../../src/components/application.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAW1B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAqFpD,eAAO,MAAM,gBAAgB,EAAE,KAAK,CAAC,EAAE,CAAC,YAAY,CAmEnD,CAAC"}
|
|
@@ -3,10 +3,10 @@ import React from 'react';
|
|
|
3
3
|
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
|
-
import {
|
|
6
|
+
import { Logger } from '@venizia/ardor-kernel';
|
|
7
7
|
import { Features } from '../features/feature.js';
|
|
8
|
-
import { FeatureMessages } from '../features/messages.js';
|
|
9
8
|
import { ApplicationContext } from '@venizia/ardor-react';
|
|
9
|
+
import { hasPendingFeatureMessages, loadFeatureMessages, resolveApplicationProviders, } from './resolve.js';
|
|
10
10
|
const Wrapper = ({ applicationName = 'ArdorApplication', container, reduxStore, suspense, enableDebug = false, children, }) => {
|
|
11
11
|
return (_jsx(ApplicationContext.Provider, { value: {
|
|
12
12
|
container,
|
|
@@ -22,7 +22,7 @@ const useFeatureMessagesReady = (opts) => {
|
|
|
22
22
|
const { features, i18nProvider } = opts;
|
|
23
23
|
const [state, setState] = React.useState(() => {
|
|
24
24
|
return {
|
|
25
|
-
isReady: !
|
|
25
|
+
isReady: !hasPendingFeatureMessages({ features, i18nProvider }),
|
|
26
26
|
};
|
|
27
27
|
});
|
|
28
28
|
React.useEffect(() => {
|
|
@@ -30,7 +30,7 @@ const useFeatureMessagesReady = (opts) => {
|
|
|
30
30
|
return;
|
|
31
31
|
}
|
|
32
32
|
let isLive = true;
|
|
33
|
-
|
|
33
|
+
loadFeatureMessages({ features, i18nProvider }).then(() => {
|
|
34
34
|
if (isLive) {
|
|
35
35
|
setState({ isReady: true });
|
|
36
36
|
}
|
|
@@ -42,36 +42,25 @@ const useFeatureMessagesReady = (opts) => {
|
|
|
42
42
|
return () => {
|
|
43
43
|
isLive = false;
|
|
44
44
|
};
|
|
45
|
-
}, [i18nProvider, state.isReady]);
|
|
45
|
+
}, [features, i18nProvider, state.isReady]);
|
|
46
46
|
if (state.error) {
|
|
47
47
|
throw state.error;
|
|
48
48
|
}
|
|
49
49
|
return state.isReady;
|
|
50
50
|
};
|
|
51
51
|
export const ArdorApplication = (props) => {
|
|
52
|
-
const { container, reduxStore, suspense, enableDebug = false, resources, routes, ...reactAdminProps } = props;
|
|
52
|
+
const { container, reduxStore, suspense, enableDebug = false, resources, routes, features: selected, ...reactAdminProps } = props;
|
|
53
|
+
// The list the shell passed, else every feature the application bound.
|
|
53
54
|
const features = React.useMemo(() => {
|
|
54
|
-
return Features.read({ container });
|
|
55
|
-
}, [container]);
|
|
55
|
+
return selected ?? Features.read({ container });
|
|
56
|
+
}, [container, selected]);
|
|
56
57
|
// The application's own resources and routes, then each feature's it bound in `features()`.
|
|
57
58
|
const mounted = React.useMemo(() => {
|
|
58
59
|
return Features.mount({ features, resources, routes });
|
|
59
60
|
}, [features, resources, routes]);
|
|
60
61
|
// Resolved once per container: the props below are a new object on every render.
|
|
61
62
|
const providers = React.useMemo(() => {
|
|
62
|
-
|
|
63
|
-
key: CoreBindings.DEFAULT_REST_DATA_PROVIDER,
|
|
64
|
-
});
|
|
65
|
-
// Optional: an application with no sign-in leaves it unbound, and react-admin then runs
|
|
66
|
-
// without an auth provider - every page is public.
|
|
67
|
-
const authProvider = container.get({
|
|
68
|
-
key: CoreBindings.DEFAULT_AUTH_PROVIDER,
|
|
69
|
-
isOptional: true,
|
|
70
|
-
});
|
|
71
|
-
const i18nProvider = container.get({
|
|
72
|
-
key: CoreBindings.DEFAULT_I18N_PROVIDER,
|
|
73
|
-
});
|
|
74
|
-
return { dataProvider, ...(authProvider ? { authProvider } : {}), i18nProvider };
|
|
63
|
+
return resolveApplicationProviders({ container });
|
|
75
64
|
}, [container]);
|
|
76
65
|
const adminProps = { ...providers, ...reactAdminProps };
|
|
77
66
|
const isMessagesReady = useFeatureMessagesReady({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"application.js","sourceRoot":"","sources":["../../src/components/application.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,OAAO,EAAE,SAAS,EAAE,YAAY,EAAqB,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC/E,OAAO,EAAE,QAAQ,IAAI,aAAa,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAEzC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"application.js","sourceRoot":"","sources":["../../src/components/application.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,WAAW,CAAC"}
|
package/dist/components/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,WAAW,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { Container } from '@venizia/ignis-inversion';
|
|
2
|
+
import type { I18nProvider } from 'ra-core';
|
|
3
|
+
import type { IAuthProvider, IDataProvider } from '../common/index.js';
|
|
4
|
+
import { type TFeature } from '../features/feature.js';
|
|
5
|
+
/**
|
|
6
|
+
* What `ArdorApplication` resolves from the container when it mounts: the one place, so a test of
|
|
7
|
+
* the boot resolves exactly what the app does.
|
|
8
|
+
*/
|
|
9
|
+
export declare const resolveApplicationProviders: (opts: {
|
|
10
|
+
container: Container;
|
|
11
|
+
}) => {
|
|
12
|
+
dataProvider: IDataProvider;
|
|
13
|
+
authProvider?: IAuthProvider;
|
|
14
|
+
i18nProvider: I18nProvider;
|
|
15
|
+
};
|
|
16
|
+
/** Whether a feature loads the provider's current locale lazily, so a first render must wait for it. */
|
|
17
|
+
export declare const hasPendingFeatureMessages: (opts: {
|
|
18
|
+
features: Array<TFeature>;
|
|
19
|
+
i18nProvider: I18nProvider;
|
|
20
|
+
}) => boolean;
|
|
21
|
+
/**
|
|
22
|
+
* Loads the lazy messages of the locale: `changeLocale()` to the same locale loads them before
|
|
23
|
+
* react-admin renders. A failed load, such as a key two features define, rejects.
|
|
24
|
+
*/
|
|
25
|
+
export declare const loadFeatureMessages: (opts: {
|
|
26
|
+
features: Array<TFeature>;
|
|
27
|
+
i18nProvider: I18nProvider;
|
|
28
|
+
locale?: string;
|
|
29
|
+
}) => Promise<void>;
|
|
30
|
+
//# sourceMappingURL=resolve.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolve.d.ts","sourceRoot":"","sources":["../../src/components/resolve.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAG5C,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAC7D,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAGnD;;;GAGG;AACH,eAAO,MAAM,2BAA2B,GAAI,MAAM;IAChD,SAAS,EAAE,SAAS,CAAC;CACtB,KAAG;IAAE,YAAY,EAAE,aAAa,CAAC;IAAC,YAAY,CAAC,EAAE,aAAa,CAAC;IAAC,YAAY,EAAE,YAAY,CAAA;CAiB1F,CAAC;AAEF,wGAAwG;AACxG,eAAO,MAAM,yBAAyB,GAAI,MAAM;IAC9C,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC1B,YAAY,EAAE,YAAY,CAAC;CAC5B,KAAG,OAGH,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,mBAAmB,GAAU,MAAM;IAC9C,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC1B,YAAY,EAAE,YAAY,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,KAAG,OAAO,CAAC,IAAI,CASf,CAAC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { CoreBindings } from '@venizia/ardor-kernel';
|
|
2
|
+
import {} from '../features/feature.js';
|
|
3
|
+
import { FeatureMessages } from '../features/messages.js';
|
|
4
|
+
/**
|
|
5
|
+
* What `ArdorApplication` resolves from the container when it mounts: the one place, so a test of
|
|
6
|
+
* the boot resolves exactly what the app does.
|
|
7
|
+
*/
|
|
8
|
+
export const resolveApplicationProviders = (opts) => {
|
|
9
|
+
const { container } = opts;
|
|
10
|
+
const dataProvider = container.get({
|
|
11
|
+
key: CoreBindings.DEFAULT_REST_DATA_PROVIDER,
|
|
12
|
+
});
|
|
13
|
+
// Optional: an application with no sign-in leaves it unbound, and react-admin then runs
|
|
14
|
+
// without an auth provider - every page is public.
|
|
15
|
+
const authProvider = container.get({
|
|
16
|
+
key: CoreBindings.DEFAULT_AUTH_PROVIDER,
|
|
17
|
+
isOptional: true,
|
|
18
|
+
});
|
|
19
|
+
const i18nProvider = container.get({
|
|
20
|
+
key: CoreBindings.DEFAULT_I18N_PROVIDER,
|
|
21
|
+
});
|
|
22
|
+
return { dataProvider, ...(authProvider ? { authProvider } : {}), i18nProvider };
|
|
23
|
+
};
|
|
24
|
+
/** Whether a feature loads the provider's current locale lazily, so a first render must wait for it. */
|
|
25
|
+
export const hasPendingFeatureMessages = (opts) => {
|
|
26
|
+
const { features, i18nProvider } = opts;
|
|
27
|
+
return FeatureMessages.hasLoader({ features, locale: i18nProvider.getLocale() });
|
|
28
|
+
};
|
|
29
|
+
/**
|
|
30
|
+
* Loads the lazy messages of the locale: `changeLocale()` to the same locale loads them before
|
|
31
|
+
* react-admin renders. A failed load, such as a key two features define, rejects.
|
|
32
|
+
*/
|
|
33
|
+
export const loadFeatureMessages = async (opts) => {
|
|
34
|
+
const { features, i18nProvider } = opts;
|
|
35
|
+
const locale = opts.locale ?? i18nProvider.getLocale();
|
|
36
|
+
if (!FeatureMessages.hasLoader({ features, locale })) {
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
await i18nProvider.changeLocale(locale);
|
|
40
|
+
};
|
|
41
|
+
//# sourceMappingURL=resolve.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolve.js","sourceRoot":"","sources":["../../src/components/resolve.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAErD,OAAO,EAAiB,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEtD;;;GAGG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,IAE3C,EAA6F,EAAE;IAC9F,MAAM,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC;IAE3B,MAAM,YAAY,GAAG,SAAS,CAAC,GAAG,CAAgB;QAChD,GAAG,EAAE,YAAY,CAAC,0BAA0B;KAC7C,CAAC,CAAC;IACH,wFAAwF;IACxF,mDAAmD;IACnD,MAAM,YAAY,GAAG,SAAS,CAAC,GAAG,CAAgB;QAChD,GAAG,EAAE,YAAY,CAAC,qBAAqB;QACvC,UAAU,EAAE,IAAI;KACjB,CAAC,CAAC;IACH,MAAM,YAAY,GAAG,SAAS,CAAC,GAAG,CAAe;QAC/C,GAAG,EAAE,YAAY,CAAC,qBAAqB;KACxC,CAAC,CAAC;IAEH,OAAO,EAAE,YAAY,EAAE,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC;AACnF,CAAC,CAAC;AAEF,wGAAwG;AACxG,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,IAGzC,EAAW,EAAE;IACZ,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC;IACxC,OAAO,eAAe,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,YAAY,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;AACnF,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,KAAK,EAAE,IAIzC,EAAiB,EAAE;IAClB,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC;IACxC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,YAAY,CAAC,SAAS,EAAE,CAAC;IAEvD,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;QACrD,OAAO;IACT,CAAC;IAED,MAAM,YAAY,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;AAC1C,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@venizia/ardor-admin",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.4",
|
|
4
4
|
"description": "ARDOR react-admin adapter - the REST data provider, auth provider and i18n provider wired through IGNIS inversion, the ArdorApplication root component, the translate and notify hooks, and the English and Vietnamese message bundles.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"admin",
|
|
@@ -60,8 +60,8 @@
|
|
|
60
60
|
"prepublishOnly": "make rebuild"
|
|
61
61
|
},
|
|
62
62
|
"dependencies": {
|
|
63
|
-
"@venizia/ardor-kernel": "0.4.
|
|
64
|
-
"@venizia/ardor-react": "0.4.
|
|
63
|
+
"@venizia/ardor-kernel": "0.4.4",
|
|
64
|
+
"@venizia/ardor-react": "0.4.4",
|
|
65
65
|
"lodash": "^4.18.1"
|
|
66
66
|
},
|
|
67
67
|
"devDependencies": {
|
|
@@ -73,11 +73,11 @@
|
|
|
73
73
|
"@types/bun": "^1.4.3",
|
|
74
74
|
"@types/lodash": "^4.17.27",
|
|
75
75
|
"@types/react": "^19",
|
|
76
|
-
"@venizia/dev-configs": "^0.4.
|
|
77
|
-
"@venizia/ignis-filter": "^0.4.
|
|
78
|
-
"@venizia/ignis-helpers": "^0.4.
|
|
79
|
-
"@venizia/ignis-inversion": "^0.4.
|
|
80
|
-
"@venizia/ignis-kernel": "^0.4.
|
|
76
|
+
"@venizia/dev-configs": "^0.4.4",
|
|
77
|
+
"@venizia/ignis-filter": "^0.4.4",
|
|
78
|
+
"@venizia/ignis-helpers": "^0.4.4",
|
|
79
|
+
"@venizia/ignis-inversion": "^0.4.4",
|
|
80
|
+
"@venizia/ignis-kernel": "^0.4.4",
|
|
81
81
|
"eslint": "^10.13.0",
|
|
82
82
|
"oxlint": "1.89.0",
|
|
83
83
|
"oxlint-tsgolint": "7.0.2004",
|