@servicetitan/react-ioc 17.0.1 → 17.1.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.
@@ -0,0 +1,7 @@
1
+ import { FC } from 'react';
2
+ export interface AwaitProps {
3
+ promises: Promise<void>[];
4
+ fallback?: JSX.Element;
5
+ }
6
+ export declare const Await: FC<AwaitProps>;
7
+ //# sourceMappingURL=await.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"await.d.ts","sourceRoot":"","sources":["../src/await.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAyC,MAAM,OAAO,CAAC;AAElE,MAAM,WAAW,UAAU;IACvB,QAAQ,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;IAC1B,QAAQ,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC;CAC1B;AAED,eAAO,MAAM,KAAK,EAAE,EAAE,CAAC,UAAU,CAkBhC,CAAC"}
package/dist/await.js ADDED
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.Await = void 0;
13
+ const jsx_runtime_1 = require("react/jsx-runtime");
14
+ const react_1 = require("react");
15
+ const Await = ({ promises, fallback = (0, jsx_runtime_1.jsx)("h2", { children: "Loading..." }, void 0), children }) => {
16
+ const Lazy = (0, react_1.useMemo)(() => (0, react_1.lazy)(() => __awaiter(void 0, void 0, void 0, function* () {
17
+ yield Promise.all(promises);
18
+ return {
19
+ default: ({ children }) => children,
20
+ };
21
+ })), [promises]);
22
+ return ((0, jsx_runtime_1.jsx)(react_1.Suspense, Object.assign({ fallback: fallback }, { children: (0, jsx_runtime_1.jsx)(Lazy, { children: children }, void 0) }), void 0));
23
+ };
24
+ exports.Await = Await;
25
+ //# sourceMappingURL=await.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"await.js","sourceRoot":"","sources":["../src/await.tsx"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,iCAAkE;AAO3D,MAAM,KAAK,GAAmB,CAAC,EAAE,QAAQ,EAAE,QAAQ,GAAG,gEAAmB,EAAE,QAAQ,EAAE,EAAE,EAAE;IAC5F,MAAM,IAAI,GAAG,IAAA,eAAO,EAChB,GAAG,EAAE,CACD,IAAA,YAAI,EAAK,GAAS,EAAE;QAChB,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,uBAAC,gBAAQ,kBAAC,QAAQ,EAAE,QAAQ,gBACxB,uBAAC,IAAI,cAAE,QAAQ,WAAQ,YAChB,CACd,CAAC;AACN,CAAC,CAAC;AAlBW,QAAA,KAAK,SAkBhB"}
package/dist/index.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  export * from './react-ioc';
2
2
  export { rootContainer } from './container-context';
3
3
  export { Container, interfaces, injectable, inject, optional } from 'inversify';
4
+ export { Store } from './store';
4
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAChF,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC"}
package/dist/index.js CHANGED
@@ -10,7 +10,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
10
10
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
11
11
  };
12
12
  Object.defineProperty(exports, "__esModule", { value: true });
13
- exports.optional = exports.inject = exports.injectable = exports.Container = exports.rootContainer = void 0;
13
+ exports.Store = exports.optional = exports.inject = exports.injectable = exports.Container = exports.rootContainer = void 0;
14
14
  __exportStar(require("./react-ioc"), exports);
15
15
  var container_context_1 = require("./container-context");
16
16
  Object.defineProperty(exports, "rootContainer", { enumerable: true, get: function () { return container_context_1.rootContainer; } });
@@ -19,4 +19,6 @@ Object.defineProperty(exports, "Container", { enumerable: true, get: function ()
19
19
  Object.defineProperty(exports, "injectable", { enumerable: true, get: function () { return inversify_1.injectable; } });
20
20
  Object.defineProperty(exports, "inject", { enumerable: true, get: function () { return inversify_1.inject; } });
21
21
  Object.defineProperty(exports, "optional", { enumerable: true, get: function () { return inversify_1.optional; } });
22
+ var store_1 = require("./store");
23
+ Object.defineProperty(exports, "Store", { enumerable: true, get: function () { return store_1.Store; } });
22
24
  //# 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,8CAA4B;AAC5B,yDAAoD;AAA3C,kHAAA,aAAa,OAAA;AACtB,uCAAgF;AAAvE,sGAAA,SAAS,OAAA;AAAc,uGAAA,UAAU,OAAA;AAAE,mGAAA,MAAM,OAAA;AAAE,qGAAA,QAAQ,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,8CAA4B;AAC5B,yDAAoD;AAA3C,kHAAA,aAAa,OAAA;AACtB,uCAAgF;AAAvE,sGAAA,SAAS,OAAA;AAAc,uGAAA,UAAU,OAAA;AAAE,mGAAA,MAAM,OAAA;AAAE,qGAAA,QAAQ,OAAA;AAC5D,iCAAgC;AAAvB,8FAAA,KAAK,OAAA"}
@@ -18,6 +18,7 @@ interface ValueProviderConfigEntry<T> {
18
18
  export interface ProviderInterface {
19
19
  singletons?: ProviderConfigEntry<any>[];
20
20
  instances?: ProviderConfigEntry<any>[];
21
+ fallback?: JSX.Element;
21
22
  }
22
23
  export interface ProviderComponentInterface extends ProviderInterface {
23
24
  parentContainer: Container;
@@ -1 +1 @@
1
- {"version":3,"file":"react-ioc.d.ts","sourceRoot":"","sources":["../src/react-ioc.tsx"],"names":[],"mappings":"AAAA,OAAO,EAIH,aAAa,EACb,kBAAkB,EAClB,cAAc,EACd,qBAAqB,EACrB,EAAE,EACL,MAAM,OAAO,CAAC;AACf,OAAO,EAAE,SAAS,EAAE,UAAU,EAAgB,MAAM,WAAW,CAAC;AAEhE,OAAO,kBAAkB,CAAC;AAE1B,oBAAY,KAAK,CAAC,CAAC,IAAI,WAAW,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AAEvF,oBAAY,WAAW,CAAC,CAAC,IAAI,MAAM,GAAG;IAAE,OAAO,CAAC,EAAE,CAAC,CAAA;CAAE,CAAC;AACtD,wBAAgB,WAAW,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,UAAO,GAAG,WAAW,CAAC,CAAC,CAAC,CAEzE;AAED,aAAK,mBAAmB,CAAC,CAAC,IACpB,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,GACrB,wBAAwB,CAAC,CAAC,CAAC,GAC3B,wBAAwB,CAAC,CAAC,CAAC,CAAC;AAElC,UAAU,wBAAwB,CAAC,CAAC;IAChC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IAClB,QAAQ,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;CACnC;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;CACf;AAoBD,MAAM,WAAW,iBAAiB;IAC9B,UAAU,CAAC,EAAE,mBAAmB,CAAC,GAAG,CAAC,EAAE,CAAC;IACxC,SAAS,CAAC,EAAE,mBAAmB,CAAC,GAAG,CAAC,EAAE,CAAC;CAC1C;AAED,MAAM,WAAW,0BAA2B,SAAQ,iBAAiB;IACjE,eAAe,EAAE,SAAS,CAAC;CAC9B;AAED,MAAM,WAAW,gBAAgB,CAAC,CAAC;IAC/B,gBAAgB,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC;IACpC,eAAe,EAAE,aAAa,GAAG,SAAS,CAAC;CAC9C;AAED,aAAK,cAAc,CAAC,CAAC,GAAG,GAAG,IAAI,kBAAkB,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,GAAG,qBAAqB,CAAC,CAAC,CAAC,CAAC;AAEpG,aAAK,gBAAgB,GAAG,CACpB,MAAM,EAAE,iBAAiB,KACxB,CAAC,CAAC,SAAS,cAAc,EAAE,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;AAEtE,eAAO,MAAM,OAAO,kBASM,CAAC;AAE3B,eAAO,MAAM,QAAQ,EAAE,EAAE,CAAC,iBAAiB,CAQ1C,CAAC;AAsFF,wBAAgB,gBAAgB,CAAC,iBAAiB,EAAE,UAAU,CAAC,iBAAiB,CAAC,GAAG,CAAC,WACzD,GAAG,OAAO,MAAM,KAAG,IAAI,CAgClD;AAED,aAAK,MAAM,CAAC,CAAC,IAAI;KACZ,CAAC,IAAI,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAC9B,CAAC;AA0BF,wBAAgB,eAAe,CAAC,CAAC,SAAS,GAAG,EAAE,EAAE,GAAG,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,KAEpE;AAED,wBAAgB,uBAAuB,CAAC,CAAC,SAAS,GAAG,EAAE,EAAE,GAAG,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,cAE5E"}
1
+ {"version":3,"file":"react-ioc.d.ts","sourceRoot":"","sources":["../src/react-ioc.tsx"],"names":[],"mappings":"AAAA,OAAO,EAIH,aAAa,EACb,kBAAkB,EAClB,cAAc,EACd,qBAAqB,EACrB,EAAE,EACL,MAAM,OAAO,CAAC;AACf,OAAO,EAAE,SAAS,EAAE,UAAU,EAAgB,MAAM,WAAW,CAAC;AAIhE,OAAO,kBAAkB,CAAC;AAE1B,oBAAY,KAAK,CAAC,CAAC,IAAI,WAAW,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AAEvF,oBAAY,WAAW,CAAC,CAAC,IAAI,MAAM,GAAG;IAAE,OAAO,CAAC,EAAE,CAAC,CAAA;CAAE,CAAC;AACtD,wBAAgB,WAAW,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,UAAO,GAAG,WAAW,CAAC,CAAC,CAAC,CAEzE;AAED,aAAK,mBAAmB,CAAC,CAAC,IACpB,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,GACrB,wBAAwB,CAAC,CAAC,CAAC,GAC3B,wBAAwB,CAAC,CAAC,CAAC,CAAC;AAElC,UAAU,wBAAwB,CAAC,CAAC;IAChC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IAClB,QAAQ,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;CACnC;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;CACf;AAoBD,MAAM,WAAW,iBAAiB;IAC9B,UAAU,CAAC,EAAE,mBAAmB,CAAC,GAAG,CAAC,EAAE,CAAC;IACxC,SAAS,CAAC,EAAE,mBAAmB,CAAC,GAAG,CAAC,EAAE,CAAC;IACvC,QAAQ,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,0BAA2B,SAAQ,iBAAiB;IACjE,eAAe,EAAE,SAAS,CAAC;CAC9B;AAED,MAAM,WAAW,gBAAgB,CAAC,CAAC;IAC/B,gBAAgB,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC;IACpC,eAAe,EAAE,aAAa,GAAG,SAAS,CAAC;CAC9C;AAED,aAAK,cAAc,CAAC,CAAC,GAAG,GAAG,IAAI,kBAAkB,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,GAAG,qBAAqB,CAAC,CAAC,CAAC,CAAC;AAEpG,aAAK,gBAAgB,GAAG,CACpB,MAAM,EAAE,iBAAiB,KACxB,CAAC,CAAC,SAAS,cAAc,EAAE,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;AAEtE,eAAO,MAAM,OAAO,kBASM,CAAC;AAE3B,eAAO,MAAM,QAAQ,EAAE,EAAE,CAAC,iBAAiB,CAQ1C,CAAC;AAiHF,wBAAgB,gBAAgB,CAAC,iBAAiB,EAAE,UAAU,CAAC,iBAAiB,CAAC,GAAG,CAAC,WACzD,GAAG,OAAO,MAAM,KAAG,IAAI,CAgClD;AAED,aAAK,MAAM,CAAC,CAAC,IAAI;KACZ,CAAC,IAAI,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAC9B,CAAC;AA0BF,wBAAgB,eAAe,CAAC,CAAC,SAAS,GAAG,EAAE,EAAE,GAAG,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,KAEpE;AAED,wBAAgB,uBAAuB,CAAC,CAAC,SAAS,GAAG,EAAE,EAAE,GAAG,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,cAE5E"}
package/dist/react-ioc.js CHANGED
@@ -5,6 +5,8 @@ const jsx_runtime_1 = require("react/jsx-runtime");
5
5
  const react_1 = require("react");
6
6
  const inversify_1 = require("inversify");
7
7
  const container_context_1 = require("./container-context");
8
+ const store_1 = require("./store");
9
+ const await_1 = require("./await");
8
10
  require("reflect-metadata");
9
11
  function symbolToken(key, global = true) {
10
12
  return global ? Symbol.for(key) : Symbol(key);
@@ -30,6 +32,12 @@ class ProviderComponent extends react_1.Component {
30
32
  writable: true,
31
33
  value: void 0
32
34
  });
35
+ Object.defineProperty(this, "promises", {
36
+ enumerable: true,
37
+ configurable: true,
38
+ writable: true,
39
+ value: []
40
+ });
33
41
  Object.defineProperty(this, "bind", {
34
42
  enumerable: true,
35
43
  configurable: true,
@@ -50,33 +58,44 @@ class ProviderComponent extends react_1.Component {
50
58
  configurable: true,
51
59
  writable: true,
52
60
  value: (entry) => {
53
- if (isClassProviderConfigEntry(entry) || isValueProviderConfigEntry(entry)) {
61
+ if (isValueProviderConfigEntry(entry)) {
54
62
  return this.container.unbind(entry.provide);
55
63
  }
56
- return this.container.unbind(entry);
64
+ const identifier = isClassProviderConfigEntry(entry) ? entry.provide : entry;
65
+ const instance = this.container.get(identifier);
66
+ if (instance instanceof store_1.Store && instance.dispose) {
67
+ instance.dispose();
68
+ }
69
+ return this.container.unbind(identifier);
57
70
  }
58
71
  });
72
+ const { parentContainer, singletons = [], instances = [] } = props;
59
73
  this.container = new inversify_1.Container();
60
- this.container.parent = this.props.parentContainer;
61
- if (this.props.singletons) {
62
- this.props.singletons.map(this.bind).forEach(binding => {
63
- binding.inSingletonScope();
64
- });
65
- }
66
- if (this.props.instances) {
67
- this.props.instances.forEach(this.bind);
74
+ this.container.parent = parentContainer;
75
+ singletons.map(this.bind).forEach(binding => {
76
+ binding.inSingletonScope();
77
+ });
78
+ instances.forEach(this.bind);
79
+ for (const entry of [...singletons, ...instances]) {
80
+ if (isValueProviderConfigEntry(entry)) {
81
+ continue;
82
+ }
83
+ const identifier = isClassProviderConfigEntry(entry) ? entry.provide : entry;
84
+ const instance = this.container.get(identifier);
85
+ if (instance instanceof store_1.Store && instance.initialize) {
86
+ this.promises.push(instance.initialize());
87
+ }
68
88
  }
69
89
  }
70
90
  componentWillUnmount() {
71
- if (this.props.singletons) {
72
- this.props.singletons.forEach(this.unbind);
73
- }
74
- if (this.props.instances) {
75
- this.props.instances.forEach(this.unbind);
91
+ const { singletons = [], instances = [] } = this.props;
92
+ for (const entry of [...singletons, ...instances]) {
93
+ this.unbind(entry);
76
94
  }
77
95
  }
78
96
  render() {
79
- return ((0, jsx_runtime_1.jsx)(container_context_1.ContainerContext.Provider, Object.assign({ value: this.container }, { children: this.props.children }), void 0));
97
+ const { fallback, children } = this.props;
98
+ return ((0, jsx_runtime_1.jsx)(container_context_1.ContainerContext.Provider, Object.assign({ value: this.container }, { children: this.promises.length ? ((0, jsx_runtime_1.jsx)(await_1.Await, Object.assign({ promises: this.promises, fallback: fallback }, { children: children }), void 0)) : (children) }), void 0));
80
99
  }
81
100
  }
82
101
  const INJECTION = Symbol.for('INJECTION');
@@ -1 +1 @@
1
- {"version":3,"file":"react-ioc.js","sourceRoot":"","sources":["../src/react-ioc.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"react-ioc.js","sourceRoot":"","sources":["../src/react-ioc.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import 'reflect-metadata';
2
+ export declare abstract class Store {
3
+ }
4
+ export interface Store {
5
+ initialize?(): Promise<void>;
6
+ dispose?(): void;
7
+ }
8
+ //# sourceMappingURL=store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"AACA,OAAO,kBAAkB,CAAC;AAE1B,8BACsB,KAAK;CAAG;AAE9B,MAAM,WAAW,KAAK;IAClB,UAAU,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7B,OAAO,CAAC,IAAI,IAAI,CAAC;CACpB"}
package/dist/store.js ADDED
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ 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;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.Store = void 0;
10
+ const inversify_1 = require("inversify");
11
+ require("reflect-metadata");
12
+ let Store = class Store {
13
+ };
14
+ Store = __decorate([
15
+ (0, inversify_1.injectable)()
16
+ ], Store);
17
+ exports.Store = Store;
18
+ //# sourceMappingURL=store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store.js","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":";;;;;;;;;AAAA,yCAAuC;AACvC,4BAA0B;AAG1B,IAAsB,KAAK,GAA3B,MAAsB,KAAK;CAAG,CAAA;AAAR,KAAK;IAD1B,IAAA,sBAAU,GAAE;GACS,KAAK,CAAG;AAAR,sBAAK"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@servicetitan/react-ioc",
3
- "version": "17.0.1",
3
+ "version": "17.1.0",
4
4
  "description": "",
5
5
  "homepage": "https://docs.st.dev/docs/frontend/react-ioc",
6
6
  "repository": {
@@ -19,7 +19,7 @@
19
19
  "reflect-metadata": "~0.1.13"
20
20
  },
21
21
  "devDependencies": {
22
- "@types/react": "~17.0.24",
22
+ "@types/react": "~17.0.26",
23
23
  "react": "~17.0.2"
24
24
  },
25
25
  "peerDependencies": {
@@ -31,5 +31,5 @@
31
31
  "cli": {
32
32
  "webpack": false
33
33
  },
34
- "gitHead": "32b287da19c96ec114b90d9f27fdead809fe5d75"
34
+ "gitHead": "212b3ade787b7bc0fb6aaacb60ca422bc7bbbd70"
35
35
  }
@@ -96,7 +96,6 @@ describe('[IOC tests]', () => {
96
96
  { provide: ANOTHER_STORE_TOKEN, useClass: AnotherStore },
97
97
  { provide: PLAIN_OBJECT_TOKEN, useValue: { success: true } },
98
98
  ]}
99
- instances={[Object]}
100
99
  >
101
100
  <SampleConsumer setContainer={setContainer} />
102
101
  </Provider>
package/src/await.tsx ADDED
@@ -0,0 +1,26 @@
1
+ import { FC, lazy, ReactElement, Suspense, useMemo } from 'react';
2
+
3
+ export interface AwaitProps {
4
+ promises: Promise<void>[];
5
+ fallback?: JSX.Element;
6
+ }
7
+
8
+ export const Await: FC<AwaitProps> = ({ promises, fallback = <h2>Loading...</h2>, children }) => {
9
+ const Lazy = useMemo(
10
+ () =>
11
+ lazy<FC>(async () => {
12
+ await Promise.all(promises);
13
+
14
+ return {
15
+ default: ({ children }) => children as ReactElement,
16
+ };
17
+ }),
18
+ [promises]
19
+ );
20
+
21
+ return (
22
+ <Suspense fallback={fallback}>
23
+ <Lazy>{children}</Lazy>
24
+ </Suspense>
25
+ );
26
+ };
package/src/index.ts CHANGED
@@ -1,3 +1,4 @@
1
1
  export * from './react-ioc';
2
2
  export { rootContainer } from './container-context';
3
3
  export { Container, interfaces, injectable, inject, optional } from 'inversify';
4
+ export { Store } from './store';
package/src/react-ioc.tsx CHANGED
@@ -10,6 +10,8 @@ import {
10
10
  } from 'react';
11
11
  import { Container, interfaces, METADATA_KEY } from 'inversify';
12
12
  import { ContainerContext } from './container-context';
13
+ import { Store } from './store';
14
+ import { Await } from './await';
13
15
  import 'reflect-metadata';
14
16
 
15
17
  export type Token<T> = SymbolToken<T> | interfaces.Newable<T> | interfaces.Abstract<T>;
@@ -55,6 +57,7 @@ function isValueProviderConfigEntry<T>(
55
57
  export interface ProviderInterface {
56
58
  singletons?: ProviderConfigEntry<any>[];
57
59
  instances?: ProviderConfigEntry<any>[];
60
+ fallback?: JSX.Element;
58
61
  }
59
62
 
60
63
  export interface ProviderComponentInterface extends ProviderInterface {
@@ -96,26 +99,39 @@ export const Provider: FC<ProviderInterface> = props => (
96
99
  class ProviderComponent extends Component<ProviderComponentInterface> {
97
100
  private container: Container;
98
101
 
102
+ private promises: Promise<void>[] = [];
103
+
99
104
  constructor(props: ProviderComponentInterface) {
100
105
  super(props);
106
+
107
+ const { parentContainer, singletons = [], instances = [] } = props;
108
+
101
109
  this.container = new Container();
102
- this.container.parent = this.props.parentContainer;
103
- if (this.props.singletons) {
104
- this.props.singletons.map(this.bind).forEach(binding => {
105
- binding.inSingletonScope();
106
- });
107
- }
108
- if (this.props.instances) {
109
- this.props.instances.forEach(this.bind);
110
+ this.container.parent = parentContainer;
111
+
112
+ singletons.map(this.bind).forEach(binding => {
113
+ binding.inSingletonScope();
114
+ });
115
+ instances.forEach(this.bind);
116
+
117
+ for (const entry of [...singletons, ...instances]) {
118
+ if (isValueProviderConfigEntry(entry)) {
119
+ continue;
120
+ }
121
+
122
+ const identifier = isClassProviderConfigEntry(entry) ? entry.provide : entry;
123
+ const instance = this.container.get(identifier);
124
+ if (instance instanceof Store && instance.initialize) {
125
+ this.promises.push(instance.initialize());
126
+ }
110
127
  }
111
128
  }
112
129
 
113
130
  componentWillUnmount() {
114
- if (this.props.singletons) {
115
- this.props.singletons.forEach(this.unbind);
116
- }
117
- if (this.props.instances) {
118
- this.props.instances.forEach(this.unbind);
131
+ const { singletons = [], instances = [] } = this.props;
132
+
133
+ for (const entry of [...singletons, ...instances]) {
134
+ this.unbind(entry);
119
135
  }
120
136
  }
121
137
 
@@ -133,17 +149,31 @@ class ProviderComponent extends Component<ProviderComponentInterface> {
133
149
  };
134
150
 
135
151
  unbind = (entry: ProviderConfigEntry<any>): void => {
136
- if (isClassProviderConfigEntry(entry) || isValueProviderConfigEntry(entry)) {
152
+ if (isValueProviderConfigEntry(entry)) {
137
153
  return this.container.unbind(entry.provide);
138
154
  }
139
155
 
140
- return this.container.unbind(entry);
156
+ const identifier = isClassProviderConfigEntry(entry) ? entry.provide : entry;
157
+ const instance = this.container.get(identifier);
158
+ if (instance instanceof Store && instance.dispose) {
159
+ instance.dispose();
160
+ }
161
+
162
+ return this.container.unbind(identifier);
141
163
  };
142
164
 
143
165
  render() {
166
+ const { fallback, children } = this.props;
167
+
144
168
  return (
145
169
  <ContainerContext.Provider value={this.container}>
146
- {this.props.children}
170
+ {this.promises.length ? (
171
+ <Await promises={this.promises} fallback={fallback}>
172
+ {children}
173
+ </Await>
174
+ ) : (
175
+ children
176
+ )}
147
177
  </ContainerContext.Provider>
148
178
  );
149
179
  }
package/src/store.ts ADDED
@@ -0,0 +1,10 @@
1
+ import { injectable } from 'inversify';
2
+ import 'reflect-metadata';
3
+
4
+ @injectable()
5
+ export abstract class Store {}
6
+
7
+ export interface Store {
8
+ initialize?(): Promise<void>;
9
+ dispose?(): void;
10
+ }