@servicetitan/react-ioc 23.0.0 → 23.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/await.d.ts +3 -3
- package/dist/await.d.ts.map +1 -1
- package/dist/await.js.map +1 -1
- package/dist/fallbacks.d.ts +2 -3
- package/dist/fallbacks.d.ts.map +1 -1
- package/dist/provide.d.ts +1 -1
- package/dist/provider.d.ts +3 -3
- package/dist/provider.d.ts.map +1 -1
- package/dist/provider.js +5 -5
- package/dist/provider.js.map +1 -1
- package/dist/store.d.ts +2 -4
- package/dist/store.d.ts.map +1 -1
- package/dist/store.js.map +1 -1
- package/package.json +8 -6
- package/src/__tests__/provide.test.tsx +1 -1
- package/src/__tests__/react-ioc.test.tsx +4 -4
- package/src/await.tsx +4 -4
- package/src/provide.tsx +1 -1
- package/src/provider.tsx +22 -10
- package/src/store.ts +2 -4
package/dist/await.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { FC, ReactNode } from 'react';
|
|
2
|
-
export
|
|
1
|
+
import { FC, PropsWithChildren, ReactNode } from 'react';
|
|
2
|
+
export declare type AwaitProps = PropsWithChildren<{
|
|
3
3
|
promises: Promise<void>[];
|
|
4
4
|
fallback?: NonNullable<ReactNode> | null;
|
|
5
|
-
}
|
|
5
|
+
}>;
|
|
6
6
|
export declare const Await: FC<AwaitProps>;
|
|
7
7
|
//# sourceMappingURL=await.d.ts.map
|
package/dist/await.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"await.d.ts","sourceRoot":"","sources":["../src/await.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,
|
|
1
|
+
{"version":3,"file":"await.d.ts","sourceRoot":"","sources":["../src/await.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAQ,iBAAiB,EAAgB,SAAS,EAAqB,MAAM,OAAO,CAAC;AAGhG,oBAAY,UAAU,GAAG,iBAAiB,CAAC;IACvC,QAAQ,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;IAC1B,QAAQ,CAAC,EAAE,WAAW,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC;CAC5C,CAAC,CAAC;AAEH,eAAO,MAAM,KAAK,EAAE,EAAE,CAAC,UAAU,CAsBhC,CAAC"}
|
package/dist/await.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"await.js","sourceRoot":"","sources":["../src/await.tsx"],"names":[],"mappings":";;;;;;;;;;AAAA,OAAO,EAAM,IAAI,
|
|
1
|
+
{"version":3,"file":"await.js","sourceRoot":"","sources":["../src/await.tsx"],"names":[],"mappings":";;;;;;;;;;AAAA,OAAO,EAAM,IAAI,EAA8C,QAAQ,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAChG,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAOrD,MAAM,CAAC,MAAM,KAAK,GAAmB,CAAC,EAClC,QAAQ,EACR,QAAQ,GAAG,sBAAsB,EACjC,QAAQ,GACX,EAAE,EAAE;IACD,MAAM,IAAI,GAAG,OAAO,CAChB,GAAG,EAAE,CACD,IAAI,CAA4B,GAAS,EAAE;QACvC,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAE5B,OAAO;YACH,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,QAAwB;SACtD,CAAC;IACN,CAAC,CAAA,CAAC,EACN,CAAC,QAAQ,CAAC,CACb,CAAC;IAEF,OAAO,CACH,KAAC,QAAQ,kBAAC,QAAQ,EAAE,QAAQ,gBACxB,KAAC,IAAI,cAAE,QAAQ,GAAQ,IAChB,CACd,CAAC;AACN,CAAC,CAAC"}
|
package/dist/fallbacks.d.ts
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
|
|
2
|
-
export declare const
|
|
3
|
-
export declare const defaultErrorFallback: JSX.Element;
|
|
1
|
+
export declare const defaultLoadingFallback: import("react/jsx-runtime").JSX.Element;
|
|
2
|
+
export declare const defaultErrorFallback: import("react/jsx-runtime").JSX.Element;
|
|
4
3
|
//# sourceMappingURL=fallbacks.d.ts.map
|
package/dist/fallbacks.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fallbacks.d.ts","sourceRoot":"","sources":["../src/fallbacks.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"fallbacks.d.ts","sourceRoot":"","sources":["../src/fallbacks.tsx"],"names":[],"mappings":"AAAA,eAAO,MAAM,sBAAsB,yCAAsB,CAAC;AAC1D,eAAO,MAAM,oBAAoB,yCAAuC,CAAC"}
|
package/dist/provide.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { ComponentType, ReactInstance } from 'react';
|
|
2
2
|
import { ProviderConfigEntrySingletons, ProviderConfigEntryInstances } from './provider';
|
|
3
3
|
export interface WrappedComponent<P> {
|
|
4
4
|
wrappedComponent: ComponentType<P>;
|
package/dist/provider.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { FC, ReactElement } from 'react';
|
|
1
|
+
import { FC, PropsWithChildren, ReactElement } from 'react';
|
|
2
2
|
import { interfaces } from 'inversify';
|
|
3
3
|
import { Token, SymbolToken } from './common';
|
|
4
4
|
export declare type ProviderConfigEntrySingletons<T> = ClassProviderConfigEntry<T> | ValueProviderConfigEntry<T>;
|
|
@@ -20,12 +20,12 @@ interface ValueProviderConfigEntry<T> {
|
|
|
20
20
|
useValue: T;
|
|
21
21
|
inherit?: true;
|
|
22
22
|
}
|
|
23
|
-
export
|
|
23
|
+
export declare type ProviderProps = PropsWithChildren<{
|
|
24
24
|
singletons?: ProviderConfigEntrySingletons<any>[];
|
|
25
25
|
instances?: ProviderConfigEntryInstances<any>[];
|
|
26
26
|
loadingFallback?: ReactElement;
|
|
27
27
|
errorFallback?: ReactElement;
|
|
28
|
-
}
|
|
28
|
+
}>;
|
|
29
29
|
export declare const Provider: FC<ProviderProps>;
|
|
30
30
|
export {};
|
|
31
31
|
//# sourceMappingURL=provider.d.ts.map
|
package/dist/provider.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../src/provider.tsx"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../src/provider.tsx"],"names":[],"mappings":"AAAA,OAAO,EACH,EAAE,EACF,iBAAiB,EACjB,YAAY,EAKf,MAAM,OAAO,CAAC;AAEf,OAAO,EAAa,UAAU,EAAE,MAAM,WAAW,CAAC;AAGlD,OAAO,EAAoB,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAIhE,oBAAY,6BAA6B,CAAC,CAAC,IACrC,wBAAwB,CAAC,CAAC,CAAC,GAC3B,wBAAwB,CAAC,CAAC,CAAC,CAAC;AAClC,oBAAY,4BAA4B,CAAC,CAAC,IAAI,iCAAiC,CAAC,CAAC,CAAC,CAAC;AACnF,oBAAY,mBAAmB,CAAC,CAAC,IAC3B,6BAA6B,CAAC,CAAC,CAAC,GAChC,4BAA4B,CAAC,CAAC,CAAC,CAAC;AAEtC,aAAK,wBAAwB,CAAC,CAAC,IACzB,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,GACrB,gCAAgC,CAAC,CAAC,CAAC,GACnC,6BAA6B,CAAC,CAAC,CAAC,CAAC;AAEvC,aAAK,iCAAiC,CAAC,CAAC,IAClC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,GACrB,IAAI,CAAC,gCAAgC,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;AAE3D,UAAU,gCAAgC,CAAC,CAAC;IACxC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IAClB,QAAQ,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAChC,OAAO,CAAC,EAAE,IAAI,CAAC;CAClB;AAED,UAAU,6BAA6B,CAAC,CAAC;IACrC,OAAO,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAC/B,OAAO,CAAC,EAAE,IAAI,CAAC;CAClB;AAED,UAAU,wBAAwB,CAAC,CAAC;IAChC,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IACjD,QAAQ,EAAE,CAAC,CAAC;IACZ,OAAO,CAAC,EAAE,IAAI,CAAC;CAClB;AA8GD,oBAAY,aAAa,GAAG,iBAAiB,CAAC;IAC1C,UAAU,CAAC,EAAE,6BAA6B,CAAC,GAAG,CAAC,EAAE,CAAC;IAClD,SAAS,CAAC,EAAE,4BAA4B,CAAC,GAAG,CAAC,EAAE,CAAC;IAChD,eAAe,CAAC,EAAE,YAAY,CAAC;IAC/B,aAAa,CAAC,EAAE,YAAY,CAAC;CAChC,CAAC,CAAC;AAEH,eAAO,MAAM,QAAQ,EAAE,EAAE,CAAC,aAAa,CAuFtC,CAAC"}
|
package/dist/provider.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
import { useState, useContext, useLayoutEffect } from 'react';
|
|
2
|
+
import { useState, useContext, useLayoutEffect, useRef, } from 'react';
|
|
3
3
|
import { Container } from 'inversify';
|
|
4
4
|
import { Await } from './await';
|
|
5
5
|
import { ContainerContext } from './common';
|
|
@@ -71,7 +71,7 @@ const unbindEntry = (container) => (entry) => {
|
|
|
71
71
|
};
|
|
72
72
|
export const Provider = ({ singletons, instances, loadingFallback = defaultLoadingFallback, errorFallback = defaultErrorFallback, children, }) => {
|
|
73
73
|
const parentContainer = useContext(ContainerContext);
|
|
74
|
-
const
|
|
74
|
+
const containerRef = useRef();
|
|
75
75
|
const [promises, setPromises] = useState([]);
|
|
76
76
|
const [error, setError] = useState(false);
|
|
77
77
|
useLayoutEffect(() => {
|
|
@@ -99,7 +99,7 @@ export const Provider = ({ singletons, instances, loadingFallback = defaultLoadi
|
|
|
99
99
|
}
|
|
100
100
|
}
|
|
101
101
|
}
|
|
102
|
-
|
|
102
|
+
containerRef.current = container;
|
|
103
103
|
setPromises(promises);
|
|
104
104
|
return () => {
|
|
105
105
|
const unbind = unbindEntry(container);
|
|
@@ -112,7 +112,7 @@ export const Provider = ({ singletons, instances, loadingFallback = defaultLoadi
|
|
|
112
112
|
}
|
|
113
113
|
};
|
|
114
114
|
}, []); // eslint-disable-line react-hooks/exhaustive-deps
|
|
115
|
-
if (!
|
|
115
|
+
if (!containerRef.current) {
|
|
116
116
|
return null;
|
|
117
117
|
}
|
|
118
118
|
const getContent = () => {
|
|
@@ -124,6 +124,6 @@ export const Provider = ({ singletons, instances, loadingFallback = defaultLoadi
|
|
|
124
124
|
}
|
|
125
125
|
return children;
|
|
126
126
|
};
|
|
127
|
-
return _jsx(ContainerContext.Provider, Object.assign({ value:
|
|
127
|
+
return (_jsx(ContainerContext.Provider, Object.assign({ value: containerRef.current }, { children: getContent() })));
|
|
128
128
|
};
|
|
129
129
|
//# sourceMappingURL=provider.js.map
|
package/dist/provider.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider.js","sourceRoot":"","sources":["../src/provider.tsx"],"names":[],"mappings":";AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"provider.js","sourceRoot":"","sources":["../src/provider.tsx"],"names":[],"mappings":"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"}
|
package/dist/store.d.ts
CHANGED
|
@@ -4,11 +4,9 @@ interface Identifier<T> extends interfaces.Newable<T> {
|
|
|
4
4
|
[symbol]?: boolean;
|
|
5
5
|
}
|
|
6
6
|
export declare function isStore<T>(identifier: Identifier<T>): boolean | undefined;
|
|
7
|
-
export declare abstract class Store
|
|
7
|
+
export declare abstract class Store {
|
|
8
8
|
static [symbol]: boolean;
|
|
9
|
-
|
|
10
|
-
export interface IStore {
|
|
11
|
-
initialize?(): Promise<void>;
|
|
9
|
+
initialize?(): Promise<void> | void;
|
|
12
10
|
dispose?(): void;
|
|
13
11
|
}
|
|
14
12
|
export {};
|
package/dist/store.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,UAAU,EAAE,MAAM,WAAW,CAAC;AAEnD,QAAA,MAAM,MAAM,eAAmC,CAAC;AAEhD,UAAU,UAAU,CAAC,CAAC,CAAE,SAAQ,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;IACjD,CAAC,MAAM,CAAC,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,wBAAgB,OAAO,CAAC,CAAC,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC,uBAEnD;AAED,8BACsB,
|
|
1
|
+
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,UAAU,EAAE,MAAM,WAAW,CAAC;AAEnD,QAAA,MAAM,MAAM,eAAmC,CAAC;AAEhD,UAAU,UAAU,CAAC,CAAC,CAAE,SAAQ,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;IACjD,CAAC,MAAM,CAAC,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,wBAAgB,OAAO,CAAC,CAAC,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC,uBAEnD;AAED,8BACsB,KAAK;IACvB,MAAM,CAAC,CAAC,MAAM,CAAC,UAAQ;IAEvB,UAAU,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI;IACnC,OAAO,CAAC,IAAI,IAAI;CACnB"}
|
package/dist/store.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store.js","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":";;;;;;;AAAA,OAAO,EAAE,UAAU,EAAc,MAAM,WAAW,CAAC;AAEnD,MAAM,MAAM,GAAG,MAAM,CAAC,wBAAwB,CAAC,CAAC;AAMhD,MAAM,UAAU,OAAO,CAAI,UAAyB;IAChD,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC;AAC9B,CAAC;AAGD,IAAsB,KAAK,GAA3B,MAAsB,KAAK;
|
|
1
|
+
{"version":3,"file":"store.js","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":";;;;;;;AAAA,OAAO,EAAE,UAAU,EAAc,MAAM,WAAW,CAAC;AAEnD,MAAM,MAAM,GAAG,MAAM,CAAC,wBAAwB,CAAC,CAAC;AAMhD,MAAM,UAAU,OAAO,CAAI,UAAyB;IAChD,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC;AAC9B,CAAC;AAGD,IAAsB,KAAK,GAA3B,MAAsB,KAAK;CAK1B,CAAA;KAJW,MAAM;AAAP;;;;WAAW,IAAI;GAAC;AADL,KAAK;IAD1B,UAAU,EAAE;GACS,KAAK,CAK1B;SALqB,KAAK"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@servicetitan/react-ioc",
|
|
3
|
-
"version": "23.
|
|
3
|
+
"version": "23.2.0",
|
|
4
4
|
"description": "",
|
|
5
5
|
"homepage": "https://docs.st.dev/docs/frontend/react-ioc",
|
|
6
6
|
"repository": {
|
|
@@ -20,12 +20,14 @@
|
|
|
20
20
|
},
|
|
21
21
|
"devDependencies": {
|
|
22
22
|
"@servicetitan/startup-jest": "^1.1.0",
|
|
23
|
-
"@testing-library/react": "^
|
|
24
|
-
"@types/react": "~
|
|
25
|
-
"react": "~
|
|
23
|
+
"@testing-library/react": "^14.2.1",
|
|
24
|
+
"@types/react": "~18.2.55",
|
|
25
|
+
"@types/react-test-renderer": "~18.0.7",
|
|
26
|
+
"react": "~18.2.0",
|
|
27
|
+
"react-test-renderer": "~18.2.0"
|
|
26
28
|
},
|
|
27
29
|
"peerDependencies": {
|
|
28
|
-
"react": "
|
|
30
|
+
"react": ">=17.0.2"
|
|
29
31
|
},
|
|
30
32
|
"publishConfig": {
|
|
31
33
|
"access": "public"
|
|
@@ -33,5 +35,5 @@
|
|
|
33
35
|
"cli": {
|
|
34
36
|
"webpack": false
|
|
35
37
|
},
|
|
36
|
-
"gitHead": "
|
|
38
|
+
"gitHead": "4b72bab5ab6cb52a688d9329c7fbaa702ae6780c"
|
|
37
39
|
}
|
|
@@ -75,7 +75,7 @@ function TestProvider(props: PropsWithChildren<ProviderStoreProps & { store: Tes
|
|
|
75
75
|
describe(`[react-ioc] ${provide.name}`, () => {
|
|
76
76
|
let stat!: StatStore;
|
|
77
77
|
|
|
78
|
-
const Stat = provide({ singletons: [StatStore] })(({ children }) => {
|
|
78
|
+
const Stat = provide({ singletons: [StatStore] })(({ children }: PropsWithChildren<{}>) => {
|
|
79
79
|
const [statStore] = useDependencies(StatStore);
|
|
80
80
|
stat = statStore;
|
|
81
81
|
return <div>{children}</div>;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Component, createContext, useRef, FC } from 'react';
|
|
1
|
+
import { Component, createContext, useRef, FC, PropsWithChildren } from 'react';
|
|
2
2
|
import {
|
|
3
3
|
provide,
|
|
4
4
|
injectDependency,
|
|
@@ -33,9 +33,9 @@ abstract class SampleConfig {
|
|
|
33
33
|
title!: string;
|
|
34
34
|
}
|
|
35
35
|
|
|
36
|
-
const SampleConsumer: FC<
|
|
37
|
-
setContainer(container: Container): void
|
|
38
|
-
|
|
36
|
+
const SampleConsumer: FC<
|
|
37
|
+
PropsWithChildren<{ setContainer(container: Container): void }>
|
|
38
|
+
> = props => (
|
|
39
39
|
<ContainerContext.Consumer>
|
|
40
40
|
{container => {
|
|
41
41
|
props.setContainer(container);
|
package/src/await.tsx
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { FC, lazy, ReactElement, ReactNode, Suspense, useMemo } from 'react';
|
|
1
|
+
import { FC, lazy, PropsWithChildren, ReactElement, ReactNode, Suspense, useMemo } from 'react';
|
|
2
2
|
import { defaultLoadingFallback } from './fallbacks';
|
|
3
3
|
|
|
4
|
-
export
|
|
4
|
+
export type AwaitProps = PropsWithChildren<{
|
|
5
5
|
promises: Promise<void>[];
|
|
6
6
|
fallback?: NonNullable<ReactNode> | null;
|
|
7
|
-
}
|
|
7
|
+
}>;
|
|
8
8
|
|
|
9
9
|
export const Await: FC<AwaitProps> = ({
|
|
10
10
|
promises,
|
|
@@ -13,7 +13,7 @@ export const Await: FC<AwaitProps> = ({
|
|
|
13
13
|
}) => {
|
|
14
14
|
const Lazy = useMemo(
|
|
15
15
|
() =>
|
|
16
|
-
lazy<FC
|
|
16
|
+
lazy<FC<PropsWithChildren<{}>>>(async () => {
|
|
17
17
|
await Promise.all(promises);
|
|
18
18
|
|
|
19
19
|
return {
|
package/src/provide.tsx
CHANGED
package/src/provider.tsx
CHANGED
|
@@ -1,11 +1,19 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import {
|
|
2
|
+
FC,
|
|
3
|
+
PropsWithChildren,
|
|
4
|
+
ReactElement,
|
|
5
|
+
useState,
|
|
6
|
+
useContext,
|
|
7
|
+
useLayoutEffect,
|
|
8
|
+
useRef,
|
|
9
|
+
} from 'react';
|
|
2
10
|
|
|
3
11
|
import { Container, interfaces } from 'inversify';
|
|
4
12
|
|
|
5
13
|
import { Await } from './await';
|
|
6
14
|
import { ContainerContext, Token, SymbolToken } from './common';
|
|
7
15
|
import { defaultErrorFallback, defaultLoadingFallback } from './fallbacks';
|
|
8
|
-
import { isStore,
|
|
16
|
+
import { isStore, Store } from './store';
|
|
9
17
|
|
|
10
18
|
export type ProviderConfigEntrySingletons<T> =
|
|
11
19
|
| ClassProviderConfigEntry<T>
|
|
@@ -98,7 +106,7 @@ function getStoreInstances(
|
|
|
98
106
|
container: Container,
|
|
99
107
|
singletons: ProviderConfigEntrySingletons<any>[] = [],
|
|
100
108
|
instances: ProviderConfigEntryInstances<any>[] = []
|
|
101
|
-
):
|
|
109
|
+
): Store[] {
|
|
102
110
|
return [...singletons, ...instances].reduce((out, entry) => {
|
|
103
111
|
const [provide, useClass] = getProvideTokenWithClass(entry);
|
|
104
112
|
|
|
@@ -107,7 +115,7 @@ function getStoreInstances(
|
|
|
107
115
|
}
|
|
108
116
|
|
|
109
117
|
return out;
|
|
110
|
-
}, [] as
|
|
118
|
+
}, [] as Store[]);
|
|
111
119
|
}
|
|
112
120
|
|
|
113
121
|
const bindEntry =
|
|
@@ -149,12 +157,12 @@ const unbindEntry = (container: Container) => (entry: ProviderConfigEntry<any>)
|
|
|
149
157
|
return container.unbind(entry);
|
|
150
158
|
};
|
|
151
159
|
|
|
152
|
-
export
|
|
160
|
+
export type ProviderProps = PropsWithChildren<{
|
|
153
161
|
singletons?: ProviderConfigEntrySingletons<any>[];
|
|
154
162
|
instances?: ProviderConfigEntryInstances<any>[];
|
|
155
163
|
loadingFallback?: ReactElement;
|
|
156
164
|
errorFallback?: ReactElement;
|
|
157
|
-
}
|
|
165
|
+
}>;
|
|
158
166
|
|
|
159
167
|
export const Provider: FC<ProviderProps> = ({
|
|
160
168
|
singletons,
|
|
@@ -165,7 +173,7 @@ export const Provider: FC<ProviderProps> = ({
|
|
|
165
173
|
}) => {
|
|
166
174
|
const parentContainer = useContext(ContainerContext);
|
|
167
175
|
|
|
168
|
-
const
|
|
176
|
+
const containerRef = useRef<Container>();
|
|
169
177
|
const [promises, setPromises] = useState<Promise<void>[]>([]);
|
|
170
178
|
const [error, setError] = useState(false);
|
|
171
179
|
|
|
@@ -201,7 +209,7 @@ export const Provider: FC<ProviderProps> = ({
|
|
|
201
209
|
}
|
|
202
210
|
}
|
|
203
211
|
|
|
204
|
-
|
|
212
|
+
containerRef.current = container;
|
|
205
213
|
setPromises(promises);
|
|
206
214
|
|
|
207
215
|
return () => {
|
|
@@ -218,7 +226,7 @@ export const Provider: FC<ProviderProps> = ({
|
|
|
218
226
|
};
|
|
219
227
|
}, []); // eslint-disable-line react-hooks/exhaustive-deps
|
|
220
228
|
|
|
221
|
-
if (!
|
|
229
|
+
if (!containerRef.current) {
|
|
222
230
|
return null;
|
|
223
231
|
}
|
|
224
232
|
|
|
@@ -238,5 +246,9 @@ export const Provider: FC<ProviderProps> = ({
|
|
|
238
246
|
return children;
|
|
239
247
|
};
|
|
240
248
|
|
|
241
|
-
return
|
|
249
|
+
return (
|
|
250
|
+
<ContainerContext.Provider value={containerRef.current}>
|
|
251
|
+
{getContent()}
|
|
252
|
+
</ContainerContext.Provider>
|
|
253
|
+
);
|
|
242
254
|
};
|
package/src/store.ts
CHANGED
|
@@ -11,11 +11,9 @@ export function isStore<T>(identifier: Identifier<T>) {
|
|
|
11
11
|
}
|
|
12
12
|
|
|
13
13
|
@injectable()
|
|
14
|
-
export abstract class Store
|
|
14
|
+
export abstract class Store {
|
|
15
15
|
static [symbol] = true;
|
|
16
|
-
}
|
|
17
16
|
|
|
18
|
-
|
|
19
|
-
initialize?(): Promise<void>;
|
|
17
|
+
initialize?(): Promise<void> | void;
|
|
20
18
|
dispose?(): void;
|
|
21
19
|
}
|