@servicetitan/react-ioc 30.3.0 → 31.0.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.js CHANGED
@@ -1,13 +1,21 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { lazy, Suspense, useMemo } from 'react';
3
3
  import { defaultLoadingFallback } from './fallbacks';
4
- export const Await = ({ promises, fallback = defaultLoadingFallback, children, }) => {
5
- const Lazy = useMemo(() => lazy(async () => {
6
- await Promise.all(promises);
7
- return {
8
- default: ({ children }) => children,
9
- };
10
- }), [promises]);
11
- return (_jsx(Suspense, { fallback: fallback, children: _jsx(Lazy, { children: children }) }));
4
+ export const Await = ({ promises, fallback = defaultLoadingFallback, children })=>{
5
+ const Lazy = useMemo(()=>/*#__PURE__*/ lazy(async ()=>{
6
+ await Promise.all(promises);
7
+ return {
8
+ default: ({ children })=>children
9
+ };
10
+ }), [
11
+ promises
12
+ ]);
13
+ return /*#__PURE__*/ _jsx(Suspense, {
14
+ fallback: fallback,
15
+ children: /*#__PURE__*/ _jsx(Lazy, {
16
+ children: children
17
+ })
18
+ });
12
19
  };
20
+
13
21
  //# sourceMappingURL=await.js.map
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,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,CAAwB,KAAK,IAAI,EAAE;QACnC,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,CAAC,EACN,CAAC,QAAQ,CAAC,CACb,CAAC;IAEF,OAAO,CACH,KAAC,QAAQ,IAAC,QAAQ,EAAE,QAAQ,YACxB,KAAC,IAAI,cAAE,QAAQ,GAAQ,GAChB,CACd,CAAC;AACN,CAAC,CAAC"}
1
+ {"version":3,"sources":["../src/await.tsx"],"sourcesContent":["import { FC, lazy, PropsWithChildren, ReactElement, ReactNode, Suspense, useMemo } from 'react';\nimport { defaultLoadingFallback } from './fallbacks';\n\nexport type AwaitProps = PropsWithChildren<{\n promises: Promise<void>[];\n fallback?: ReactNode;\n}>;\n\nexport const Await: FC<AwaitProps> = ({\n promises,\n fallback = defaultLoadingFallback,\n children,\n}) => {\n const Lazy = useMemo(\n () =>\n lazy<FC<PropsWithChildren>>(async () => {\n await Promise.all(promises);\n\n return {\n default: ({ children }) => children as ReactElement,\n };\n }),\n [promises]\n );\n\n return (\n <Suspense fallback={fallback}>\n <Lazy>{children}</Lazy>\n </Suspense>\n );\n};\n"],"names":["lazy","Suspense","useMemo","defaultLoadingFallback","Await","promises","fallback","children","Lazy","Promise","all","default"],"mappings":";AAAA,SAAaA,IAAI,EAA8CC,QAAQ,EAAEC,OAAO,QAAQ,QAAQ;AAChG,SAASC,sBAAsB,QAAQ,cAAc;AAOrD,OAAO,MAAMC,QAAwB,CAAC,EAClCC,QAAQ,EACRC,WAAWH,sBAAsB,EACjCI,QAAQ,EACX;IACG,MAAMC,OAAON,QACT,kBACIF,KAA4B;YACxB,MAAMS,QAAQC,GAAG,CAACL;YAElB,OAAO;gBACHM,SAAS,CAAC,EAAEJ,QAAQ,EAAE,GAAKA;YAC/B;QACJ,IACJ;QAACF;KAAS;IAGd,qBACI,KAACJ;QAASK,UAAUA;kBAChB,cAAA,KAACE;sBAAMD;;;AAGnB,EAAE"}
package/dist/common.js CHANGED
@@ -1,8 +1,9 @@
1
1
  import { createContext } from 'react';
2
2
  import { Container } from 'inversify';
3
3
  export const rootContainer = new Container();
4
- export const ContainerContext = createContext(rootContainer);
4
+ export const ContainerContext = /*#__PURE__*/ createContext(rootContainer);
5
5
  export function symbolToken(key, global = true) {
6
6
  return global ? Symbol.for(key) : Symbol(key);
7
7
  }
8
+
8
9
  //# sourceMappingURL=common.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"common.js","sourceRoot":"","sources":["../src/common.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAEtC,OAAO,EAAE,SAAS,EAAc,MAAM,WAAW,CAAC;AAElD,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,SAAS,EAAE,CAAC;AAE7C,MAAM,CAAC,MAAM,gBAAgB,GAAG,aAAa,CAAC,aAAa,CAAC,CAAC;AAK7D,MAAM,UAAU,WAAW,CAAU,GAAW,EAAE,MAAM,GAAG,IAAI;IAC3D,OAAO,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAClD,CAAC"}
1
+ {"version":3,"sources":["../src/common.tsx"],"sourcesContent":["import { createContext } from 'react';\n\nimport { Container, interfaces } from 'inversify';\n\nexport const rootContainer = new Container();\n\nexport const ContainerContext = createContext(rootContainer);\n\nexport type Token<T> = SymbolToken<T> | interfaces.Newable<T> | Function;\n\nexport type SymbolToken<T> = symbol & { typeRef?: T };\nexport function symbolToken<T = any>(key: string, global = true): SymbolToken<T> {\n return global ? Symbol.for(key) : Symbol(key);\n}\n"],"names":["createContext","Container","rootContainer","ContainerContext","symbolToken","key","global","Symbol","for"],"mappings":"AAAA,SAASA,aAAa,QAAQ,QAAQ;AAEtC,SAASC,SAAS,QAAoB,YAAY;AAElD,OAAO,MAAMC,gBAAgB,IAAID,YAAY;AAE7C,OAAO,MAAME,iCAAmBH,cAAcE,eAAe;AAK7D,OAAO,SAASE,YAAqBC,GAAW,EAAEC,SAAS,IAAI;IAC3D,OAAOA,SAASC,OAAOC,GAAG,CAACH,OAAOE,OAAOF;AAC7C"}
package/dist/fallbacks.js CHANGED
@@ -1,4 +1,10 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
- export const defaultLoadingFallback = _jsx("h2", { children: "Loading..." });
3
- export const defaultErrorFallback = _jsx("h2", { className: "c-red-500", children: "Error" });
2
+ export const defaultLoadingFallback = /*#__PURE__*/ _jsx("h2", {
3
+ children: "Loading..."
4
+ });
5
+ export const defaultErrorFallback = /*#__PURE__*/ _jsx("h2", {
6
+ className: "c-red-500",
7
+ children: "Error"
8
+ });
9
+
4
10
  //# sourceMappingURL=fallbacks.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"fallbacks.js","sourceRoot":"","sources":["../src/fallbacks.tsx"],"names":[],"mappings":";AAAA,MAAM,CAAC,MAAM,sBAAsB,GAAG,sCAAmB,CAAC;AAC1D,MAAM,CAAC,MAAM,oBAAoB,GAAG,aAAI,SAAS,EAAC,WAAW,sBAAW,CAAC"}
1
+ {"version":3,"sources":["../src/fallbacks.tsx"],"sourcesContent":["export const defaultLoadingFallback = <h2>Loading...</h2>;\nexport const defaultErrorFallback = <h2 className=\"c-red-500\">Error</h2>;\n"],"names":["defaultLoadingFallback","h2","defaultErrorFallback","className"],"mappings":";AAAA,OAAO,MAAMA,uCAAyB,KAACC;cAAG;GAAgB;AAC1D,OAAO,MAAMC,qCAAuB,KAACD;IAAGE,WAAU;cAAY;GAAW"}
package/dist/index.d.ts CHANGED
@@ -1,9 +1,12 @@
1
1
  import 'reflect-metadata';
2
- export { rootContainer, Token, SymbolToken, symbolToken } from './common';
2
+ export type { Token, SymbolToken } from './common';
3
+ export { rootContainer, symbolToken } from './common';
3
4
  export { injectDependency } from './inject-dependency';
4
5
  export { provide } from './provide';
5
- export { Provider, ProviderProps } from './provider';
6
+ export type { ProviderProps } from './provider';
7
+ export { Provider } from './provider';
6
8
  export { Store } from './store';
7
9
  export { useDependencies, useOptionalDependencies } from './use-dependencies';
8
- export { Container, interfaces, injectable, inject, optional, unmanaged } from 'inversify';
10
+ export type { interfaces } from 'inversify';
11
+ export { Container, injectable, inject, optional, unmanaged } from 'inversify';
9
12
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAE1B,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAC1E,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AACrD,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,eAAe,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAE9E,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAE1B,YAAY,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,YAAY,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,eAAe,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAE9E,YAAY,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC"}
package/dist/index.js CHANGED
@@ -6,4 +6,5 @@ export { Provider } from './provider';
6
6
  export { Store } from './store';
7
7
  export { useDependencies, useOptionalDependencies } from './use-dependencies';
8
8
  export { Container, injectable, inject, optional, unmanaged } from 'inversify';
9
+
9
10
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAE1B,OAAO,EAAE,aAAa,EAAsB,WAAW,EAAE,MAAM,UAAU,CAAC;AAC1E,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAiB,MAAM,YAAY,CAAC;AACrD,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,eAAe,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAE9E,OAAO,EAAE,SAAS,EAAc,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC"}
1
+ {"version":3,"sources":["../src/index.ts"],"sourcesContent":["import 'reflect-metadata';\n\nexport type { Token, SymbolToken } from './common';\nexport { rootContainer, symbolToken } from './common';\nexport { injectDependency } from './inject-dependency';\nexport { provide } from './provide';\nexport type { ProviderProps } from './provider';\nexport { Provider } from './provider';\nexport { Store } from './store';\nexport { useDependencies, useOptionalDependencies } from './use-dependencies';\n\nexport type { interfaces } from 'inversify';\nexport { Container, injectable, inject, optional, unmanaged } from 'inversify';\n"],"names":["rootContainer","symbolToken","injectDependency","provide","Provider","Store","useDependencies","useOptionalDependencies","Container","injectable","inject","optional","unmanaged"],"mappings":"AAAA,OAAO,mBAAmB;AAG1B,SAASA,aAAa,EAAEC,WAAW,QAAQ,WAAW;AACtD,SAASC,gBAAgB,QAAQ,sBAAsB;AACvD,SAASC,OAAO,QAAQ,YAAY;AAEpC,SAASC,QAAQ,QAAQ,aAAa;AACtC,SAASC,KAAK,QAAQ,UAAU;AAChC,SAASC,eAAe,EAAEC,uBAAuB,QAAQ,qBAAqB;AAG9E,SAASC,SAAS,EAAEC,UAAU,EAAEC,MAAM,EAAEC,QAAQ,EAAEC,SAAS,QAAQ,YAAY"}
@@ -18,26 +18,23 @@ function proxyGetter(proto, key, resolve, doCache) {
18
18
  configurable: true,
19
19
  enumerable: true,
20
20
  get: getter,
21
- set: setter,
21
+ set: setter
22
22
  });
23
23
  }
24
24
  export function injectDependency(serviceIdentifier) {
25
- return function (proto, key) {
26
- const resolve = (componentInstance) => {
27
- var _a;
25
+ return function(proto, key) {
26
+ const resolve = (componentInstance)=>{
27
+ var _metadata_key;
28
28
  if (!componentInstance.context) {
29
- throw new Error("Context doesn't exist on a target class. " +
30
- 'Please make sure to pass context object to super method if you access injectable stores in constructor.');
29
+ throw new Error("Context doesn't exist on a target class. " + 'Please make sure to pass context object to super method if you access injectable stores in constructor.');
31
30
  }
32
- const metadata =
33
- // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing
31
+ const metadata = // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing
34
32
  Reflect.getMetadata(METADATA_KEY.TAGGED_PROP, proto.constructor) || {};
35
- if ((_a = metadata[key]) === null || _a === void 0 ? void 0 : _a.some(({ key, value }) => key === METADATA_KEY.OPTIONAL_TAG && value)) {
33
+ if ((_metadata_key = metadata[key]) === null || _metadata_key === void 0 ? void 0 : _metadata_key.some(({ key, value })=>key === METADATA_KEY.OPTIONAL_TAG && value)) {
36
34
  if (componentInstance.context.isBound(serviceIdentifier)) {
37
35
  return componentInstance.context.get(serviceIdentifier);
38
36
  }
39
- }
40
- else {
37
+ } else {
41
38
  return componentInstance.context.get(serviceIdentifier);
42
39
  }
43
40
  };
@@ -48,4 +45,5 @@ export function injectDependency(serviceIdentifier) {
48
45
  proxyGetter(proto, key, resolve, true);
49
46
  };
50
47
  }
48
+
51
49
  //# sourceMappingURL=inject-dependency.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"inject-dependency.js","sourceRoot":"","sources":["../src/inject-dependency.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,YAAY,EAAE,MAAM,WAAW,CAAC;AAErD,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAE5C,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;AAE1C,SAAS,WAAW,CAChB,KAAU,EACV,GAAW,EACX,OAAwC,EACxC,OAAgB;IAEhB,SAAS,MAAM;QACX,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,SAAS,EAAE,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC;YACxD,OAAO,CAAC,cAAc,CAAC,SAAS,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;QAChE,CAAC;QACD,IAAI,OAAO,CAAC,WAAW,CAAC,SAAS,EAAE,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC;YAC5C,OAAO,OAAO,CAAC,WAAW,CAAC,SAAS,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;QACrD,CAAC;QACD,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC;IACzB,CAAC;IACD,SAAS,MAAM,CAAY,MAAW;QAClC,OAAO,CAAC,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;IACzD,CAAC;IACD,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,GAAG,EAAE;QAC9B,YAAY,EAAE,IAAI;QAClB,UAAU,EAAE,IAAI;QAChB,GAAG,EAAE,MAAM;QACX,GAAG,EAAE,MAAM;KACd,CAAC,CAAC;AACP,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,iBAAoD;IACjF,OAAO,UAAU,KAAU,EAAE,GAAW;QACpC,MAAM,OAAO,GAAG,CAAC,iBAAsB,EAAE,EAAE;;YACvC,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,CAAC;gBAC7B,MAAM,IAAI,KAAK,CACX,2CAA2C;oBACvC,yGAAyG,CAChH,CAAC;YACN,CAAC;YAED,MAAM,QAAQ;YACV,wEAAwE;YACxE,OAAO,CAAC,WAAW,CAAC,YAAY,CAAC,WAAW,EAAE,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;YAE3E,IACI,MAAA,QAAQ,CAAC,GAAG,CAAC,0CAAE,IAAI,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,GAAG,KAAK,YAAY,CAAC,YAAY,IAAI,KAAK,CAAC,EACrF,CAAC;gBACC,IAAI,iBAAiB,CAAC,OAAO,CAAC,OAAO,CAAC,iBAAiB,CAAC,EAAE,CAAC;oBACvD,OAAO,iBAAiB,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;gBAC5D,CAAC;YACL,CAAC;iBAAM,CAAC;gBACJ,OAAO,iBAAiB,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;YAC5D,CAAC;QACL,CAAC,CAAC;QAEF,IAAI,KAAK,CAAC,WAAW,CAAC,WAAW,IAAI,KAAK,CAAC,WAAW,CAAC,WAAW,KAAK,gBAAgB,EAAE,CAAC;YACtF,MAAM,IAAI,KAAK,CACX,0EAA0E,CAC7E,CAAC;QACN,CAAC;QAED,KAAK,CAAC,WAAW,CAAC,WAAW,GAAG,gBAAgB,CAAC;QACjD,WAAW,CAAC,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;IAC3C,CAAC,CAAC;AACN,CAAC"}
1
+ {"version":3,"sources":["../src/inject-dependency.ts"],"sourcesContent":["import { interfaces, METADATA_KEY } from 'inversify';\n\nimport { ContainerContext } from './common';\n\nconst INJECTION = Symbol.for('INJECTION');\n\nfunction proxyGetter(\n proto: any,\n key: string,\n resolve: (componentInstance: any) => any,\n doCache: boolean\n) {\n function getter(this: any) {\n if (doCache && !Reflect.hasMetadata(INJECTION, this, key)) {\n Reflect.defineMetadata(INJECTION, resolve(this), this, key);\n }\n if (Reflect.hasMetadata(INJECTION, this, key)) {\n return Reflect.getMetadata(INJECTION, this, key);\n }\n return resolve(this);\n }\n function setter(this: any, newVal: any) {\n Reflect.defineMetadata(INJECTION, newVal, this, key);\n }\n Object.defineProperty(proto, key, {\n configurable: true,\n enumerable: true,\n get: getter,\n set: setter,\n });\n}\n\nexport function injectDependency(serviceIdentifier: interfaces.ServiceIdentifier<any>) {\n return function (proto: any, key: string): void {\n const resolve = (componentInstance: any) => {\n if (!componentInstance.context) {\n throw new Error(\n \"Context doesn't exist on a target class. \" +\n 'Please make sure to pass context object to super method if you access injectable stores in constructor.'\n );\n }\n\n const metadata: Partial<interfaces.MetadataMap> =\n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n Reflect.getMetadata(METADATA_KEY.TAGGED_PROP, proto.constructor) || {};\n\n if (\n metadata[key]?.some(({ key, value }) => key === METADATA_KEY.OPTIONAL_TAG && value)\n ) {\n if (componentInstance.context.isBound(serviceIdentifier)) {\n return componentInstance.context.get(serviceIdentifier);\n }\n } else {\n return componentInstance.context.get(serviceIdentifier);\n }\n };\n\n if (proto.constructor.contextType && proto.constructor.contextType !== ContainerContext) {\n throw new Error(\n \"injectDependency can't be used together with contextType static property\"\n );\n }\n\n proto.constructor.contextType = ContainerContext;\n proxyGetter(proto, key, resolve, true);\n };\n}\n"],"names":["METADATA_KEY","ContainerContext","INJECTION","Symbol","for","proxyGetter","proto","key","resolve","doCache","getter","Reflect","hasMetadata","defineMetadata","getMetadata","setter","newVal","Object","defineProperty","configurable","enumerable","get","set","injectDependency","serviceIdentifier","componentInstance","metadata","context","Error","TAGGED_PROP","constructor","some","value","OPTIONAL_TAG","isBound","contextType"],"mappings":"AAAA,SAAqBA,YAAY,QAAQ,YAAY;AAErD,SAASC,gBAAgB,QAAQ,WAAW;AAE5C,MAAMC,YAAYC,OAAOC,GAAG,CAAC;AAE7B,SAASC,YACLC,KAAU,EACVC,GAAW,EACXC,OAAwC,EACxCC,OAAgB;IAEhB,SAASC;QACL,IAAID,WAAW,CAACE,QAAQC,WAAW,CAACV,WAAW,IAAI,EAAEK,MAAM;YACvDI,QAAQE,cAAc,CAACX,WAAWM,QAAQ,IAAI,GAAG,IAAI,EAAED;QAC3D;QACA,IAAII,QAAQC,WAAW,CAACV,WAAW,IAAI,EAAEK,MAAM;YAC3C,OAAOI,QAAQG,WAAW,CAACZ,WAAW,IAAI,EAAEK;QAChD;QACA,OAAOC,QAAQ,IAAI;IACvB;IACA,SAASO,OAAkBC,MAAW;QAClCL,QAAQE,cAAc,CAACX,WAAWc,QAAQ,IAAI,EAAET;IACpD;IACAU,OAAOC,cAAc,CAACZ,OAAOC,KAAK;QAC9BY,cAAc;QACdC,YAAY;QACZC,KAAKX;QACLY,KAAKP;IACT;AACJ;AAEA,OAAO,SAASQ,iBAAiBC,iBAAoD;IACjF,OAAO,SAAUlB,KAAU,EAAEC,GAAW;QACpC,MAAMC,UAAU,CAACiB;gBAaTC;YAZJ,IAAI,CAACD,kBAAkBE,OAAO,EAAE;gBAC5B,MAAM,IAAIC,MACN,8CACI;YAEZ;YAEA,MAAMF,WACF,wEAAwE;YACxEf,QAAQG,WAAW,CAACd,aAAa6B,WAAW,EAAEvB,MAAMwB,WAAW,KAAK,CAAC;YAEzE,KACIJ,gBAAAA,QAAQ,CAACnB,IAAI,cAAbmB,oCAAAA,cAAeK,IAAI,CAAC,CAAC,EAAExB,GAAG,EAAEyB,KAAK,EAAE,GAAKzB,QAAQP,aAAaiC,YAAY,IAAID,QAC/E;gBACE,IAAIP,kBAAkBE,OAAO,CAACO,OAAO,CAACV,oBAAoB;oBACtD,OAAOC,kBAAkBE,OAAO,CAACN,GAAG,CAACG;gBACzC;YACJ,OAAO;gBACH,OAAOC,kBAAkBE,OAAO,CAACN,GAAG,CAACG;YACzC;QACJ;QAEA,IAAIlB,MAAMwB,WAAW,CAACK,WAAW,IAAI7B,MAAMwB,WAAW,CAACK,WAAW,KAAKlC,kBAAkB;YACrF,MAAM,IAAI2B,MACN;QAER;QAEAtB,MAAMwB,WAAW,CAACK,WAAW,GAAGlC;QAChCI,YAAYC,OAAOC,KAAKC,SAAS;IACrC;AACJ"}
package/dist/provide.js CHANGED
@@ -1,13 +1,19 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { Provider } from './provider';
3
- export const provide = ((stores, elementOrOptions) => (Component) => props => (_jsx(Provider, { ...stores, ...getOptions(elementOrOptions), children: _jsx(Component, { ...props }) })));
3
+ export const provide = (stores, elementOrOptions)=>(Component)=>(props)=>/*#__PURE__*/ _jsx(Provider, {
4
+ ...stores,
5
+ ...getOptions(elementOrOptions),
6
+ children: /*#__PURE__*/ _jsx(Component, {
7
+ ...props
8
+ })
9
+ });
4
10
  function getOptions(arg) {
5
- return arg && isOptionsObject(arg) ? arg : { loadingFallback: arg };
11
+ return arg && isOptionsObject(arg) ? arg : {
12
+ loadingFallback: arg
13
+ };
6
14
  }
7
15
  function isOptionsObject(arg) {
8
- return (typeof arg === 'object' &&
9
- (Object.hasOwn(arg, 'loadingFallback') ||
10
- Object.hasOwn(arg, 'errorFallback') ||
11
- Object.keys(arg).length === 0));
16
+ return typeof arg === 'object' && (Object.hasOwn(arg, 'loadingFallback') || Object.hasOwn(arg, 'errorFallback') || Object.keys(arg).length === 0);
12
17
  }
18
+
13
19
  //# sourceMappingURL=provide.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"provide.js","sourceRoot":"","sources":["../src/provide.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,QAAQ,EAA+D,MAAM,YAAY,CAAC;AAoBnG,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,CAAC,MAAM,EAAE,gBAAgB,EAAE,EAAE,CAAC,CAAC,SAAwB,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CACzF,KAAC,QAAQ,OAAK,MAAM,KAAM,UAAU,CAAC,gBAAgB,CAAC,YAClD,KAAC,SAAS,OAAK,KAAK,GAAI,GACjB,CACd,CAAqB,CAAC;AAEvB,SAAS,UAAU,CAAC,GAAiC;IACjD,OAAO,GAAG,IAAI,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,GAAG,EAAE,CAAC;AACxE,CAAC;AAED,SAAS,eAAe,CAAC,GAA6C;IAClE,OAAO,CACH,OAAO,GAAG,KAAK,QAAQ;QACvB,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,iBAAiB,CAAC;YAClC,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,eAAe,CAAC;YACnC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,CACrC,CAAC;AACN,CAAC"}
1
+ {"version":3,"sources":["../src/provide.tsx"],"sourcesContent":["import { ComponentType, ReactInstance, ReactNode } from 'react';\n\nimport { Provider, ProviderConfigEntrySingletons, ProviderConfigEntryInstances } from './provider';\n\nexport interface WrappedComponent<P> {\n wrappedComponent: ComponentType<P>;\n wrappedInstance: ReactInstance | undefined;\n}\n\nexport interface FallbackOptions {\n loadingFallback?: ReactNode;\n errorFallback?: ReactNode;\n}\n\nexport type ProvideDecorator = (\n stores: {\n singletons?: ProviderConfigEntrySingletons<any>[];\n instances?: ProviderConfigEntryInstances<any>[];\n },\n options?: ReactNode | FallbackOptions\n) => <T extends ComponentType<any>>(target: T) => T & WrappedComponent<T>;\n\nexport const provide = ((stores, elementOrOptions) => (Component: ComponentType) => props => (\n <Provider {...stores} {...getOptions(elementOrOptions)}>\n <Component {...props} />\n </Provider>\n)) as ProvideDecorator;\n\nfunction getOptions(arg?: FallbackOptions | ReactNode): FallbackOptions | undefined {\n return arg && isOptionsObject(arg) ? arg : { loadingFallback: arg };\n}\n\nfunction isOptionsObject(arg: FallbackOptions | NonNullable<ReactNode>): arg is FallbackOptions {\n return (\n typeof arg === 'object' &&\n (Object.hasOwn(arg, 'loadingFallback') ||\n Object.hasOwn(arg, 'errorFallback') ||\n Object.keys(arg).length === 0)\n );\n}\n"],"names":["Provider","provide","stores","elementOrOptions","Component","props","getOptions","arg","isOptionsObject","loadingFallback","Object","hasOwn","keys","length"],"mappings":";AAEA,SAASA,QAAQ,QAAqE,aAAa;AAoBnG,OAAO,MAAMC,UAAW,CAACC,QAAQC,mBAAqB,CAACC,YAA6BC,CAAAA,sBAChF,KAACL;gBAAU,GAAGE,MAAM;gBAAG,GAAGI,WAAWH,iBAAiB;0BAClD,cAAA,KAACC;oBAAW,GAAGC,KAAK;;eAEL;AAEvB,SAASC,WAAWC,GAAiC;IACjD,OAAOA,OAAOC,gBAAgBD,OAAOA,MAAM;QAAEE,iBAAiBF;IAAI;AACtE;AAEA,SAASC,gBAAgBD,GAA6C;IAClE,OACI,OAAOA,QAAQ,YACdG,CAAAA,OAAOC,MAAM,CAACJ,KAAK,sBAChBG,OAAOC,MAAM,CAACJ,KAAK,oBACnBG,OAAOE,IAAI,CAACL,KAAKM,MAAM,KAAK,CAAA;AAExC"}
package/dist/provider.js CHANGED
@@ -12,29 +12,40 @@ function isValueProviderConfigEntry(entry) {
12
12
  return Object.hasOwn(entry, 'provide') && Object.hasOwn(entry, 'useValue');
13
13
  }
14
14
  function isClassProviderConfigEntryToken(entry) {
15
- return (Object.hasOwn(entry, 'provide') &&
16
- !Object.hasOwn(entry, 'useClass') &&
17
- !Object.hasOwn(entry, 'useValue'));
15
+ return Object.hasOwn(entry, 'provide') && !Object.hasOwn(entry, 'useClass') && !Object.hasOwn(entry, 'useValue');
18
16
  }
19
17
  function isProviderConfigEntryInheritable(entry) {
20
- return (isClassProviderConfigEntryUseClass(entry) ||
21
- isClassProviderConfigEntryToken(entry) ||
22
- isValueProviderConfigEntry(entry));
18
+ return isClassProviderConfigEntryUseClass(entry) || isClassProviderConfigEntryToken(entry) || isValueProviderConfigEntry(entry);
23
19
  }
24
20
  function getProvideTokenWithClass(entry) {
25
21
  if (isClassProviderConfigEntryUseClass(entry)) {
26
- return [entry.provide, entry.useClass];
22
+ return [
23
+ entry.provide,
24
+ entry.useClass
25
+ ];
27
26
  }
28
27
  if (isClassProviderConfigEntryToken(entry)) {
29
- return [entry.provide, entry.provide];
28
+ return [
29
+ entry.provide,
30
+ entry.provide
31
+ ];
30
32
  }
31
33
  if (isValueProviderConfigEntry(entry)) {
32
- return [undefined, undefined];
34
+ return [
35
+ undefined,
36
+ undefined
37
+ ];
33
38
  }
34
- return [entry, entry];
39
+ return [
40
+ entry,
41
+ entry
42
+ ];
35
43
  }
36
44
  function getStoreInstances(container, { singletons = [], instances = [] }) {
37
- return [...singletons, ...instances].reduce((out, entry) => {
45
+ return [
46
+ ...singletons,
47
+ ...instances
48
+ ].reduce((out, entry)=>{
38
49
  const [provide, useClass] = getProvideTokenWithClass(entry);
39
50
  if (provide && useClass && container.isCurrentBound(provide) && isStore(useClass)) {
40
51
  out.push(container.get(provide));
@@ -42,54 +53,51 @@ function getStoreInstances(container, { singletons = [], instances = [] }) {
42
53
  return out;
43
54
  }, []);
44
55
  }
45
- const bindEntry = (container, checkInherit) => (entry) => {
46
- if (checkInherit &&
47
- isProviderConfigEntryInheritable(entry) &&
48
- entry.inherit &&
49
- container.isBound(entry.provide)) {
50
- return undefined;
51
- }
52
- if (isClassProviderConfigEntryUseClass(entry)) {
53
- return container.bind(entry.provide).to(entry.useClass);
54
- }
55
- if (isClassProviderConfigEntryToken(entry)) {
56
- return container.bind(entry.provide).to(entry.provide);
57
- }
58
- if (isValueProviderConfigEntry(entry)) {
59
- // using toDynamicValue to return BindingInSyntax
60
- return container.bind(entry.provide).toDynamicValue(() => entry.useValue);
61
- }
62
- return container.bind(entry).to(entry);
63
- };
64
- const unbindEntry = (container) => (entry) => {
65
- if (isProviderConfigEntryInheritable(entry) && !container.isBound(entry.provide)) {
66
- return;
67
- }
68
- if (isClassProviderConfigEntryUseClass(entry) ||
69
- isValueProviderConfigEntry(entry) ||
70
- isClassProviderConfigEntryToken(entry)) {
71
- return container.unbind(entry.provide);
72
- }
73
- return container.unbind(entry);
74
- };
56
+ const bindEntry = (container, checkInherit)=>(entry)=>{
57
+ if (checkInherit && isProviderConfigEntryInheritable(entry) && entry.inherit && container.isBound(entry.provide)) {
58
+ return undefined;
59
+ }
60
+ if (isClassProviderConfigEntryUseClass(entry)) {
61
+ return container.bind(entry.provide).to(entry.useClass);
62
+ }
63
+ if (isClassProviderConfigEntryToken(entry)) {
64
+ return container.bind(entry.provide).to(entry.provide);
65
+ }
66
+ if (isValueProviderConfigEntry(entry)) {
67
+ // using toDynamicValue to return BindingInSyntax
68
+ return container.bind(entry.provide).toDynamicValue(()=>entry.useValue);
69
+ }
70
+ return container.bind(entry).to(entry);
71
+ };
72
+ const unbindEntry = (container)=>(entry)=>{
73
+ if (isProviderConfigEntryInheritable(entry) && !container.isBound(entry.provide)) {
74
+ return;
75
+ }
76
+ if (isClassProviderConfigEntryUseClass(entry) || isValueProviderConfigEntry(entry) || isClassProviderConfigEntryToken(entry)) {
77
+ return container.unbind(entry.provide);
78
+ }
79
+ return container.unbind(entry);
80
+ };
75
81
  function bindEntries(container, { singletons = [], instances = [] }) {
76
- singletons.map(bindEntry(container, true)).forEach(binding => {
82
+ singletons.map(bindEntry(container, true)).forEach((binding)=>{
77
83
  binding === null || binding === void 0 ? void 0 : binding.inSingletonScope();
78
84
  });
79
85
  instances.forEach(bindEntry(container, false));
80
86
  }
81
87
  function unbindEntries(container, { singletons = [], instances = [] }) {
82
- [...singletons, ...instances].forEach(unbindEntry(container));
88
+ [
89
+ ...singletons,
90
+ ...instances
91
+ ].forEach(unbindEntry(container));
83
92
  }
84
93
  function initializeStores(stores, onError) {
85
- var _a;
86
94
  const promises = [];
87
- for (const instance of stores) {
95
+ for (const instance of stores){
88
96
  let promise;
89
97
  try {
90
- promise = (_a = instance.initialize) === null || _a === void 0 ? void 0 : _a.call(instance);
91
- }
92
- catch (e) {
98
+ var _instance_initialize;
99
+ promise = (_instance_initialize = instance.initialize) === null || _instance_initialize === void 0 ? void 0 : _instance_initialize.call(instance);
100
+ } catch (e) {
93
101
  onError(e);
94
102
  }
95
103
  if (promise && typeof promise.catch === 'function') {
@@ -99,33 +107,45 @@ function initializeStores(stores, onError) {
99
107
  return promises;
100
108
  }
101
109
  function disposeStores(stores) {
102
- var _a;
103
- for (const instance of stores) {
104
- (_a = instance.dispose) === null || _a === void 0 ? void 0 : _a.call(instance);
110
+ for (const instance of stores){
111
+ var _instance_dispose;
112
+ (_instance_dispose = instance.dispose) === null || _instance_dispose === void 0 ? void 0 : _instance_dispose.call(instance);
105
113
  }
106
114
  }
107
- export const Provider = ({ singletons, instances, loadingFallback = defaultLoadingFallback, errorFallback = defaultErrorFallback, children, }) => {
115
+ export const Provider = ({ singletons, instances, loadingFallback = defaultLoadingFallback, errorFallback = defaultErrorFallback, children })=>{
108
116
  const parentContainer = useContext(ContainerContext);
109
117
  const [container, setContainer] = useState();
110
118
  const [promises, setPromises] = useState([]);
111
119
  const [error, setError] = useState(false);
112
- useEffect(() => {
120
+ useEffect(()=>{
113
121
  const container = new Container();
114
122
  container.parent = parentContainer;
115
123
  setContainer(container);
116
- const handleError = (e) => {
124
+ const handleError = (e)=>{
117
125
  setError(true);
118
126
  // Rethrow asynchronously for global error handler
119
- setTimeout(() => {
127
+ setTimeout(()=>{
120
128
  throw e;
121
129
  });
122
130
  };
123
- bindEntries(container, { singletons, instances });
124
- const promises = initializeStores(getStoreInstances(container, { singletons, instances }), handleError);
131
+ bindEntries(container, {
132
+ singletons,
133
+ instances
134
+ });
135
+ const promises = initializeStores(getStoreInstances(container, {
136
+ singletons,
137
+ instances
138
+ }), handleError);
125
139
  setPromises(promises);
126
- return () => {
127
- const storeInstances = getStoreInstances(container, { singletons, instances });
128
- unbindEntries(container, { singletons, instances });
140
+ return ()=>{
141
+ const storeInstances = getStoreInstances(container, {
142
+ singletons,
143
+ instances
144
+ });
145
+ unbindEntries(container, {
146
+ singletons,
147
+ instances
148
+ });
129
149
  disposeStores(storeInstances);
130
150
  setContainer(undefined);
131
151
  setPromises([]);
@@ -134,15 +154,23 @@ export const Provider = ({ singletons, instances, loadingFallback = defaultLoadi
134
154
  if (!container) {
135
155
  return null;
136
156
  }
137
- const getContent = () => {
157
+ const getContent = ()=>{
138
158
  if (error) {
139
159
  return errorFallback;
140
160
  }
141
161
  if (promises.length) {
142
- return (_jsx(Await, { promises: promises, fallback: loadingFallback, children: children }));
162
+ return /*#__PURE__*/ _jsx(Await, {
163
+ promises: promises,
164
+ fallback: loadingFallback,
165
+ children: children
166
+ });
143
167
  }
144
168
  return children;
145
169
  };
146
- return _jsx(ContainerContext.Provider, { value: container, children: getContent() });
170
+ return /*#__PURE__*/ _jsx(ContainerContext.Provider, {
171
+ value: container,
172
+ children: getContent()
173
+ });
147
174
  };
175
+
148
176
  //# sourceMappingURL=provider.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"provider.js","sourceRoot":"","sources":["../src/provider.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"sources":["../src/provider.tsx"],"sourcesContent":["import { FC, PropsWithChildren, ReactNode, useState, useContext, useEffect } from 'react';\n\nimport { Container, interfaces } from 'inversify';\n\nimport { Await } from './await';\nimport { ContainerContext, Token, SymbolToken } from './common';\nimport { defaultErrorFallback, defaultLoadingFallback } from './fallbacks';\nimport { isStore, Store } from './store';\n\nexport type ProviderConfigEntrySingletons<T> =\n | ClassProviderConfigEntry<T>\n | ValueProviderConfigEntry<T>;\nexport type ProviderConfigEntryInstances<T> = ClassProviderConfigEntryNoInherit<T>;\nexport type ProviderConfigEntry<T> =\n | ProviderConfigEntrySingletons<T>\n | ProviderConfigEntryInstances<T>;\n\ntype ClassProviderConfigEntry<T> =\n | interfaces.Newable<T>\n | ClassProviderConfigEntryUseClass<T>\n | ClassProviderConfigEntryToken<T>;\n\ntype ClassProviderConfigEntryNoInherit<T> =\n | interfaces.Newable<T>\n | Omit<ClassProviderConfigEntryUseClass<T>, 'inherit'>;\n\ninterface ClassProviderConfigEntryUseClass<T> {\n provide: Token<T>;\n useClass: interfaces.Newable<T>;\n inherit?: true;\n}\n\ninterface ClassProviderConfigEntryToken<T> {\n provide: interfaces.Newable<T>;\n inherit?: true;\n}\n\ninterface ValueProviderConfigEntry<T> {\n provide: SymbolToken<T> | Function;\n useValue: T;\n inherit?: true;\n}\n\nfunction isClassProviderConfigEntryUseClass<T>(\n entry: ProviderConfigEntry<T>\n): entry is Omit<ClassProviderConfigEntryUseClass<T>, 'inherit'> {\n return Object.hasOwn(entry, 'provide') && Object.hasOwn(entry, 'useClass');\n}\n\nfunction isValueProviderConfigEntry<T>(\n entry: ProviderConfigEntry<T>\n): entry is Omit<ValueProviderConfigEntry<T>, 'inherit'> {\n return Object.hasOwn(entry, 'provide') && Object.hasOwn(entry, 'useValue');\n}\n\nfunction isClassProviderConfigEntryToken<T>(\n entry: ProviderConfigEntry<T>\n): entry is Omit<ClassProviderConfigEntryToken<T>, 'inherit'> {\n return (\n Object.hasOwn(entry, 'provide') &&\n !Object.hasOwn(entry, 'useClass') &&\n !Object.hasOwn(entry, 'useValue')\n );\n}\n\nfunction isProviderConfigEntryInheritable<T>(\n entry: ProviderConfigEntry<T>\n): entry is\n | ClassProviderConfigEntryUseClass<T>\n | ClassProviderConfigEntryToken<T>\n | ValueProviderConfigEntry<T> {\n return (\n isClassProviderConfigEntryUseClass(entry) ||\n isClassProviderConfigEntryToken(entry) ||\n isValueProviderConfigEntry(entry)\n );\n}\n\nfunction getProvideTokenWithClass<T>(\n entry: ProviderConfigEntry<T>\n): [Token<T>, interfaces.Newable<T>] | [undefined, undefined] {\n if (isClassProviderConfigEntryUseClass(entry)) {\n return [entry.provide, entry.useClass];\n }\n\n if (isClassProviderConfigEntryToken(entry)) {\n return [entry.provide, entry.provide];\n }\n\n if (isValueProviderConfigEntry(entry)) {\n return [undefined, undefined];\n }\n\n return [entry, entry];\n}\n\nfunction getStoreInstances(\n container: Container,\n { singletons = [], instances = [] }: Pick<ProviderProps, 'singletons' | 'instances'>\n): Store[] {\n return [...singletons, ...instances].reduce((out, entry) => {\n const [provide, useClass] = getProvideTokenWithClass(entry);\n\n if (provide && useClass && container.isCurrentBound(provide) && isStore(useClass)) {\n out.push(container.get(provide));\n }\n\n return out;\n }, [] as Store[]);\n}\n\nconst bindEntry =\n (container: Container, checkInherit: boolean) => (entry: ProviderConfigEntry<any>) => {\n if (\n checkInherit &&\n isProviderConfigEntryInheritable(entry) &&\n entry.inherit &&\n container.isBound(entry.provide)\n ) {\n return undefined;\n }\n\n if (isClassProviderConfigEntryUseClass(entry)) {\n return container.bind(entry.provide).to(entry.useClass);\n }\n\n if (isClassProviderConfigEntryToken(entry)) {\n return container.bind(entry.provide).to(entry.provide);\n }\n\n if (isValueProviderConfigEntry(entry)) {\n // using toDynamicValue to return BindingInSyntax\n return container.bind(entry.provide).toDynamicValue(() => entry.useValue);\n }\n\n return container.bind(entry).to(entry);\n };\n\nconst unbindEntry = (container: Container) => (entry: ProviderConfigEntry<any>) => {\n if (isProviderConfigEntryInheritable(entry) && !container.isBound(entry.provide)) {\n return;\n }\n if (\n isClassProviderConfigEntryUseClass(entry) ||\n isValueProviderConfigEntry(entry) ||\n isClassProviderConfigEntryToken(entry)\n ) {\n return container.unbind(entry.provide);\n }\n\n return container.unbind(entry);\n};\n\nfunction bindEntries(\n container: Container,\n { singletons = [], instances = [] }: Pick<ProviderProps, 'singletons' | 'instances'>\n) {\n singletons.map(bindEntry(container, true)).forEach(binding => {\n binding?.inSingletonScope();\n });\n instances.forEach(bindEntry(container, false));\n}\n\nfunction unbindEntries(\n container: Container,\n { singletons = [], instances = [] }: Pick<ProviderProps, 'singletons' | 'instances'>\n) {\n [...singletons, ...instances].forEach(unbindEntry(container));\n}\n\nfunction initializeStores(stores: Store[], onError: (error: any) => void) {\n const promises: Promise<void>[] = [];\n\n for (const instance of stores) {\n let promise;\n\n try {\n promise = instance.initialize?.();\n } catch (e: any) {\n onError(e);\n }\n\n if (promise && typeof promise.catch === 'function') {\n promises.push(promise.catch(onError));\n }\n }\n\n return promises;\n}\n\nfunction disposeStores(stores: Store[]) {\n for (const instance of stores) {\n instance.dispose?.();\n }\n}\n\nexport type ProviderProps = PropsWithChildren<{\n singletons?: ProviderConfigEntrySingletons<any>[];\n instances?: ProviderConfigEntryInstances<any>[];\n loadingFallback?: ReactNode;\n errorFallback?: ReactNode;\n}>;\n\nexport const Provider: FC<ProviderProps> = ({\n singletons,\n instances,\n loadingFallback = defaultLoadingFallback,\n errorFallback = defaultErrorFallback,\n children,\n}) => {\n const parentContainer = useContext(ContainerContext);\n const [container, setContainer] = useState<Container>();\n const [promises, setPromises] = useState<Promise<void>[]>([]);\n const [error, setError] = useState(false);\n\n useEffect(() => {\n const container = new Container();\n container.parent = parentContainer;\n setContainer(container);\n\n const handleError = (e: any) => {\n setError(true);\n // Rethrow asynchronously for global error handler\n setTimeout(() => {\n throw e;\n });\n };\n\n bindEntries(container, { singletons, instances });\n const promises = initializeStores(\n getStoreInstances(container, { singletons, instances }),\n handleError\n );\n setPromises(promises);\n\n return () => {\n const storeInstances = getStoreInstances(container, { singletons, instances });\n\n unbindEntries(container, { singletons, instances });\n disposeStores(storeInstances);\n setContainer(undefined);\n setPromises([]);\n };\n }, []); // eslint-disable-line react-hooks/exhaustive-deps\n\n if (!container) {\n return null;\n }\n\n const getContent = () => {\n if (error) {\n return errorFallback;\n }\n\n if (promises.length) {\n return (\n <Await promises={promises} fallback={loadingFallback}>\n {children}\n </Await>\n );\n }\n\n return children;\n };\n\n return <ContainerContext.Provider value={container}>{getContent()}</ContainerContext.Provider>;\n};\n"],"names":["useState","useContext","useEffect","Container","Await","ContainerContext","defaultErrorFallback","defaultLoadingFallback","isStore","isClassProviderConfigEntryUseClass","entry","Object","hasOwn","isValueProviderConfigEntry","isClassProviderConfigEntryToken","isProviderConfigEntryInheritable","getProvideTokenWithClass","provide","useClass","undefined","getStoreInstances","container","singletons","instances","reduce","out","isCurrentBound","push","get","bindEntry","checkInherit","inherit","isBound","bind","to","toDynamicValue","useValue","unbindEntry","unbind","bindEntries","map","forEach","binding","inSingletonScope","unbindEntries","initializeStores","stores","onError","promises","instance","promise","initialize","e","catch","disposeStores","dispose","Provider","loadingFallback","errorFallback","children","parentContainer","setContainer","setPromises","error","setError","parent","handleError","setTimeout","storeInstances","getContent","length","fallback","value"],"mappings":"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"}
package/dist/store.js CHANGED
@@ -1,26 +1,32 @@
1
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
1
+ function _define_property(obj, key, value) {
2
+ if (key in obj) {
3
+ Object.defineProperty(obj, key, {
4
+ value: value,
5
+ enumerable: true,
6
+ configurable: true,
7
+ writable: true
8
+ });
9
+ } else {
10
+ obj[key] = value;
11
+ }
12
+ return obj;
13
+ }
14
+ function _ts_decorate(decorators, target, key, desc) {
2
15
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
16
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
17
+ else for(var i = decorators.length - 1; i >= 0; i--)if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
18
  return c > 3 && r && Object.defineProperty(target, key, r), r;
6
- };
7
- var _a;
19
+ }
8
20
  import { injectable } from 'inversify';
9
21
  const symbol = Symbol('Inheritor Of The Store');
10
22
  export function isStore(identifier) {
11
23
  return identifier[symbol];
12
24
  }
13
- let Store = class Store {
14
- };
15
- _a = symbol;
16
- Object.defineProperty(Store, _a, {
17
- enumerable: true,
18
- configurable: true,
19
- writable: true,
20
- value: true
21
- });
22
- Store = __decorate([
25
+ export class Store {
26
+ }
27
+ _define_property(Store, symbol, true);
28
+ Store = _ts_decorate([
23
29
  injectable()
24
30
  ], Store);
25
- export { Store };
31
+
26
32
  //# sourceMappingURL=store.js.map
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;AAGM,IAAe,KAAK,GAApB,MAAe,KAAK;;KACf,MAAM;AAAP;;;;WAAW,IAAI;EAAP,CAAQ;AADL,KAAK;IAD1B,UAAU,EAAE;GACS,KAAK,CAK1B"}
1
+ {"version":3,"sources":["../src/store.ts"],"sourcesContent":["import { injectable, interfaces } from 'inversify';\n\nconst symbol = Symbol('Inheritor Of The Store');\n\ninterface Identifier<T> extends interfaces.Newable<T> {\n [symbol]?: boolean;\n}\n\nexport function isStore<T>(identifier: Identifier<T>) {\n return identifier[symbol];\n}\n\n@injectable()\nexport abstract class Store {\n static [symbol] = true;\n\n initialize?(): Promise<void> | void;\n dispose?(): void;\n}\n"],"names":["injectable","symbol","Symbol","isStore","identifier","Store"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA,SAASA,UAAU,QAAoB,YAAY;AAEnD,MAAMC,SAASC,OAAO;AAMtB,OAAO,SAASC,QAAWC,UAAyB;IAChD,OAAOA,UAAU,CAACH,OAAO;AAC7B;AAGA,OAAO,MAAeI;AAKtB;AAJI,iBADkBA,OACVJ,QAAU"}
@@ -1,10 +1,11 @@
1
1
  import { useRef, useContext } from 'react';
2
2
  import { ContainerContext } from './common';
3
3
  function useDependenciesInternal(tokens, optional) {
4
- var _a;
4
+ var _ref;
5
5
  const ref = useRef(null);
6
6
  const container = useContext(ContainerContext);
7
- (_a = ref.current) !== null && _a !== void 0 ? _a : (ref.current = tokens.map(s => {
7
+ var _current;
8
+ (_current = (_ref = ref).current) !== null && _current !== void 0 ? _current : _ref.current = tokens.map((s)=>{
8
9
  if (optional) {
9
10
  if (s && container.isBound(s)) {
10
11
  return container.get(s);
@@ -12,7 +13,7 @@ function useDependenciesInternal(tokens, optional) {
12
13
  return undefined;
13
14
  }
14
15
  return container.get(s);
15
- }));
16
+ });
16
17
  return ref.current;
17
18
  }
18
19
  export function useDependencies(...tokens) {
@@ -21,4 +22,5 @@ export function useDependencies(...tokens) {
21
22
  export function useOptionalDependencies(...tokens) {
22
23
  return useDependenciesInternal(tokens, true);
23
24
  }
25
+
24
26
  //# sourceMappingURL=use-dependencies.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-dependencies.js","sourceRoot":"","sources":["../src/use-dependencies.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAE3C,OAAO,EAAE,gBAAgB,EAAS,MAAM,UAAU,CAAC;AAMnD,SAAS,uBAAuB,CAC5B,MAAiB,EACjB,QAAW;;IAEX,MAAM,GAAG,GAAG,MAAM,CAAwB,IAAI,CAAC,CAAC;IAChD,MAAM,SAAS,GAAG,UAAU,CAAC,gBAAgB,CAAC,CAAC;IAE/C,MAAA,GAAG,CAAC,OAAO,oCAAX,GAAG,CAAC,OAAO,GAAK,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;QAC3B,IAAI,QAAQ,EAAE,CAAC;YACX,IAAI,CAAC,IAAI,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC5B,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAC5B,CAAC;YAED,OAAO,SAAS,CAAC;QACrB,CAAC;QAED,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAC5B,CAAC,CAAM,EAAC;IAER,OAAO,GAAG,CAAC,OAA0C,CAAC;AAC1D,CAAC;AAED,MAAM,UAAU,eAAe,CAAkB,GAAG,MAAiB;IACjE,OAAO,uBAAuB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AAClD,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAkB,GAAG,MAAiB;IACzE,OAAO,uBAAuB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AACjD,CAAC"}
1
+ {"version":3,"sources":["../src/use-dependencies.ts"],"sourcesContent":["import { useRef, useContext } from 'react';\n\nimport { ContainerContext, Token } from './common';\n\ntype Tokens<T> = {\n [P in keyof T]: Token<T[P]>;\n};\n\nfunction useDependenciesInternal<T extends any[], P extends boolean>(\n tokens: Tokens<T>,\n optional: P\n) {\n const ref = useRef<T | Partial<T> | null>(null);\n const container = useContext(ContainerContext);\n\n ref.current ??= tokens.map(s => {\n if (optional) {\n if (s && container.isBound(s)) {\n return container.get(s);\n }\n\n return undefined;\n }\n\n return container.get(s);\n }) as T;\n\n return ref.current as P extends true ? Partial<T> : T;\n}\n\nexport function useDependencies<T extends any[]>(...tokens: Tokens<T>) {\n return useDependenciesInternal(tokens, false);\n}\n\nexport function useOptionalDependencies<T extends any[]>(...tokens: Tokens<T>) {\n return useDependenciesInternal(tokens, true);\n}\n"],"names":["useRef","useContext","ContainerContext","useDependenciesInternal","tokens","optional","ref","container","current","map","s","isBound","get","undefined","useDependencies","useOptionalDependencies"],"mappings":"AAAA,SAASA,MAAM,EAAEC,UAAU,QAAQ,QAAQ;AAE3C,SAASC,gBAAgB,QAAe,WAAW;AAMnD,SAASC,wBACLC,MAAiB,EACjBC,QAAW;QAKXC;IAHA,MAAMA,MAAMN,OAA8B;IAC1C,MAAMO,YAAYN,WAAWC;;IAE7BI,aAAAA,OAAAA,KAAIE,sDAAJF,KAAIE,UAAYJ,OAAOK,GAAG,CAACC,CAAAA;QACvB,IAAIL,UAAU;YACV,IAAIK,KAAKH,UAAUI,OAAO,CAACD,IAAI;gBAC3B,OAAOH,UAAUK,GAAG,CAACF;YACzB;YAEA,OAAOG;QACX;QAEA,OAAON,UAAUK,GAAG,CAACF;IACzB;IAEA,OAAOJ,IAAIE,OAAO;AACtB;AAEA,OAAO,SAASM,gBAAiC,GAAGV,MAAiB;IACjE,OAAOD,wBAAwBC,QAAQ;AAC3C;AAEA,OAAO,SAASW,wBAAyC,GAAGX,MAAiB;IACzE,OAAOD,wBAAwBC,QAAQ;AAC3C"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@servicetitan/react-ioc",
3
- "version": "30.3.0",
3
+ "version": "31.0.0",
4
4
  "description": "",
5
5
  "homepage": "https://docs.st.dev/docs/frontend/react-ioc",
6
6
  "repository": {
@@ -34,5 +34,5 @@
34
34
  "cli": {
35
35
  "webpack": false
36
36
  },
37
- "gitHead": "7521e8d9534299652c39fb5e71348c68120aee70"
37
+ "gitHead": "c52e188a1217df74052774a2eea6a5126089e3d5"
38
38
  }
package/src/index.ts CHANGED
@@ -1,10 +1,13 @@
1
1
  import 'reflect-metadata';
2
2
 
3
- export { rootContainer, Token, SymbolToken, symbolToken } from './common';
3
+ export type { Token, SymbolToken } from './common';
4
+ export { rootContainer, symbolToken } from './common';
4
5
  export { injectDependency } from './inject-dependency';
5
6
  export { provide } from './provide';
6
- export { Provider, ProviderProps } from './provider';
7
+ export type { ProviderProps } from './provider';
8
+ export { Provider } from './provider';
7
9
  export { Store } from './store';
8
10
  export { useDependencies, useOptionalDependencies } from './use-dependencies';
9
11
 
10
- export { Container, interfaces, injectable, inject, optional, unmanaged } from 'inversify';
12
+ export type { interfaces } from 'inversify';
13
+ export { Container, injectable, inject, optional, unmanaged } from 'inversify';