@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.
- package/README.md +1 -1
- package/dist/common/types.d.ts +3 -4
- package/dist/common/types.d.ts.map +1 -1
- package/dist/components/application.d.ts.map +1 -1
- package/dist/components/application.js +11 -8
- package/dist/components/application.js.map +1 -1
- package/dist/features/feature.d.ts +21 -19
- package/dist/features/feature.d.ts.map +1 -1
- package/dist/features/feature.js +37 -35
- package/dist/features/feature.js.map +1 -1
- package/dist/features/index.d.ts +1 -1
- package/dist/features/index.d.ts.map +1 -1
- package/dist/features/index.js +3 -3
- package/dist/features/index.js.map +1 -1
- package/dist/features/messages.d.ts +3 -3
- package/dist/hooks/use-features.d.ts +2 -2
- package/dist/hooks/use-features.d.ts.map +1 -1
- package/dist/hooks/use-features.js +2 -2
- package/dist/hooks/use-features.js.map +1 -1
- package/dist/hooks/use-request-header-locale.d.ts +4 -2
- package/dist/hooks/use-request-header-locale.d.ts.map +1 -1
- package/dist/hooks/use-request-header-locale.js +4 -4
- package/dist/hooks/use-request-header-locale.js.map +1 -1
- package/dist/providers/auth.d.ts +74 -8
- package/dist/providers/auth.d.ts.map +1 -1
- package/dist/providers/auth.js +147 -95
- package/dist/providers/auth.js.map +1 -1
- package/dist/providers/i18n.d.ts +24 -4
- package/dist/providers/i18n.d.ts.map +1 -1
- package/dist/providers/i18n.js +31 -12
- package/dist/providers/i18n.js.map +1 -1
- package/dist/providers/rest-data.d.ts +32 -1
- package/dist/providers/rest-data.d.ts.map +1 -1
- package/dist/providers/rest-data.js +74 -114
- package/dist/providers/rest-data.js.map +1 -1
- 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,
|
package/dist/common/types.d.ts
CHANGED
|
@@ -49,7 +49,7 @@ export interface IAuthProvider extends IReactAdminAuthProvider {
|
|
|
49
49
|
}
|
|
50
50
|
export interface II18nProviderOptions {
|
|
51
51
|
i18nSources?: Record<string | symbol, AnyType>;
|
|
52
|
-
|
|
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
|
-
|
|
62
|
-
|
|
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;
|
|
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 {
|
|
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,
|
|
54
|
-
const { routes } = customRoutes ?? {};
|
|
52
|
+
const { container, reduxStore, suspense, enableDebug = false, resources, routes, ...reactAdminProps } = props;
|
|
55
53
|
const features = React.useMemo(() => {
|
|
56
|
-
return
|
|
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
|
|
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 {
|
|
76
|
-
|
|
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":";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,YAAY,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAE7D,OAAO,EAAiB,
|
|
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
|
|
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
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
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;
|
|
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"}
|
package/dist/features/feature.js
CHANGED
|
@@ -1,42 +1,44 @@
|
|
|
1
1
|
import { getError } from '@venizia/ignis-inversion';
|
|
2
2
|
import { CoreBindings } from '@venizia/ardor-kernel';
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
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
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
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
|
-
|
|
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
|
-
|
|
34
|
-
|
|
35
|
-
|
|
38
|
+
return {
|
|
39
|
+
resources: [...resources, ...features.flatMap((feature) => feature.resources ?? [])],
|
|
40
|
+
routes: [...routes, ...features.flatMap((feature) => feature.routes ?? [])],
|
|
41
|
+
};
|
|
36
42
|
}
|
|
37
|
-
|
|
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;
|
|
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"}
|
package/dist/features/index.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export {
|
|
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,
|
|
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"}
|
package/dist/features/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// The public surface: the feature type and its
|
|
2
|
-
//
|
|
3
|
-
export {
|
|
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,
|
|
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
|
|
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<
|
|
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<
|
|
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
|
|
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: <
|
|
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,
|
|
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 {
|
|
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
|
|
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,
|
|
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
|
|
1
|
+
export interface IUseRequestHeaderLocaleOptions {
|
|
2
|
+
/** The header the locale is sent in. Default `x-locale`. */
|
|
2
3
|
key?: string;
|
|
3
|
-
}
|
|
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,
|
|
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,
|
|
3
|
+
import { CoreBindings, HeaderConstants } from '@venizia/ardor-kernel';
|
|
4
4
|
import { useInjectable } from '@venizia/ardor-react';
|
|
5
|
-
export const useRequestHeaderLocale = (
|
|
6
|
-
const key =
|
|
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,
|
|
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"}
|
package/dist/providers/auth.d.ts
CHANGED
|
@@ -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:
|
|
12
|
-
*
|
|
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(
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
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,
|
|
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"}
|