react-obsidian 2.25.0 → 2.26.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.
@@ -47,14 +47,22 @@ export declare const LateInject: typeof lateInject;
47
47
  */
48
48
  export declare const LifecycleBound: typeof lifecycleBound;
49
49
  export declare const Obsidian: _Obsidian;
50
- export { injectComponent } from './injectors/components/InjectComponent';
51
- export { injectHook, injectHookWithArguments } from './injectors/hooks/InjectHook';
52
- export { useObserver } from './observable/useObserver';
53
- export { useObservers } from './observable/useObservers';
54
50
  export { Observable } from './observable/Observable';
55
51
  export { MediatorObservable } from './observable/mediator/MediatorObservable';
56
52
  export { OnNext, Unsubscribe } from './observable/types';
57
- export { Model } from './model/Model';
58
- export { testKit } from '../testkit';
59
- export { mockModel, mockGraphs } from '../testkit/index';
53
+ export { mockGraphs } from '../testkit/mockGraphs';
54
+ import type { injectComponent as injectComponentType } from './injectors/components/InjectComponent';
55
+ import type { injectHook as injectHookType, injectHookWithArguments as injectHookWithArgumentsType } from './injectors/hooks/InjectHook';
56
+ import type { useObserver as useObserverType } from './observable/useObserver';
57
+ import type { useObservers as useObserversType } from './observable/useObservers';
58
+ import type { Model as ModelType } from './model/Model';
59
+ import type { mockModel as mockModelType } from '../testkit/index';
60
+ export declare const injectComponent: typeof injectComponentType;
61
+ export declare const injectHook: typeof injectHookType;
62
+ export declare const injectHookWithArguments: typeof injectHookWithArgumentsType;
63
+ export declare const useObserver: typeof useObserverType;
64
+ export declare const useObservers: typeof useObserversType;
65
+ export declare const Model: typeof ModelType;
66
+ export declare const testKit: any;
67
+ export declare const mockModel: typeof mockModelType;
60
68
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAC;AAChE,OAAO,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAC1D,OAAO,EAAE,SAAS,EAAE,MAAM,kCAAkC,CAAC;AAC7D,OAAO,SAAS,MAAM,YAAY,CAAC;AAEnC,cAAc,SAAS,CAAC;AAExB,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,kCAAkC,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,KAAK,IAAI,MAAM,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAC;AAChE,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACnE,OAAO,EAAE,iBAAiB,IAAI,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAEvF;;GAEG;AACH,eAAO,MAAM,KAAK,cAAQ,CAAC;AAC3B;;GAEG;AACH,eAAO,MAAM,SAAS,kBAAY,CAAC;AACnC;;GAEG;AACH,eAAO,MAAM,QAAQ,iBAAW,CAAC;AACjC;;GAEG;AACH,eAAO,MAAM,UAAU,mBAAa,CAAC;AACrC;;GAEG;AACH,eAAO,MAAM,MAAM,eAAS,CAAC;AAC7B;;GAEG;AACH,eAAO,MAAM,UAAU,mBAAa,CAAC;AACrC;;GAEG;AACH,eAAO,MAAM,cAAc,uBAAiB,CAAC;AAG7C,eAAO,MAAM,QAAQ,WAAkB,CAAC;AAExC,OAAO,EAAE,eAAe,EAAE,MAAM,wCAAwC,CAAC;AACzE,OAAO,EAAE,UAAU,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAEnF,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,0CAA0C,CAAC;AAC9E,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEzD,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAEtC,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACrC,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
package/dist/src/index.js CHANGED
@@ -17,7 +17,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
17
17
  return (mod && mod.__esModule) ? mod : { "default": mod };
18
18
  };
19
19
  Object.defineProperty(exports, "__esModule", { value: true });
20
- exports.mockGraphs = exports.mockModel = exports.testKit = exports.Model = exports.MediatorObservable = exports.Observable = exports.useObservers = exports.useObserver = exports.injectHookWithArguments = exports.injectHook = exports.injectComponent = exports.Obsidian = exports.LifecycleBound = exports.LateInject = exports.Inject = exports.Injectable = exports.Provides = exports.Singleton = exports.Graph = exports.GraphMiddleware = exports.lifecycleBound = exports.lateInject = exports.inject = exports.injectable = exports.provides = exports.ObjectGraph = exports.singleton = exports.graph = void 0;
20
+ exports.mockModel = exports.testKit = exports.Model = exports.useObservers = exports.useObserver = exports.injectHookWithArguments = exports.injectHook = exports.injectComponent = exports.mockGraphs = exports.MediatorObservable = exports.Observable = exports.Obsidian = exports.LifecycleBound = exports.LateInject = exports.Inject = exports.Injectable = exports.Provides = exports.Singleton = exports.Graph = exports.GraphMiddleware = exports.lifecycleBound = exports.lateInject = exports.inject = exports.injectable = exports.provides = exports.ObjectGraph = exports.singleton = exports.graph = void 0;
21
21
  const Graph_1 = require("./decorators/Graph");
22
22
  const Inject_1 = require("./decorators/inject/Inject");
23
23
  const Injectable_1 = require("./decorators/injectable/Injectable");
@@ -26,6 +26,7 @@ const LifecycleBound_1 = require("./decorators/LifecycleBound");
26
26
  const Provides_1 = require("./decorators/provides/Provides");
27
27
  const Singleton_1 = require("./decorators/singleton/Singleton");
28
28
  const Obsidian_1 = __importDefault(require("./Obsidian"));
29
+ const reactAvailability_1 = require("./utils/reactAvailability");
29
30
  __exportStar(require("./types"), exports);
30
31
  var Graph_2 = require("./decorators/Graph");
31
32
  Object.defineProperty(exports, "graph", { enumerable: true, get: function () { return Graph_2.graph; } });
@@ -74,24 +75,38 @@ exports.LateInject = LateInject_1.lateInject;
74
75
  */
75
76
  exports.LifecycleBound = LifecycleBound_1.lifecycleBound;
76
77
  exports.Obsidian = new Obsidian_1.default();
77
- var InjectComponent_1 = require("./injectors/components/InjectComponent");
78
- Object.defineProperty(exports, "injectComponent", { enumerable: true, get: function () { return InjectComponent_1.injectComponent; } });
79
- var InjectHook_1 = require("./injectors/hooks/InjectHook");
80
- Object.defineProperty(exports, "injectHook", { enumerable: true, get: function () { return InjectHook_1.injectHook; } });
81
- Object.defineProperty(exports, "injectHookWithArguments", { enumerable: true, get: function () { return InjectHook_1.injectHookWithArguments; } });
82
- var useObserver_1 = require("./observable/useObserver");
83
- Object.defineProperty(exports, "useObserver", { enumerable: true, get: function () { return useObserver_1.useObserver; } });
84
- var useObservers_1 = require("./observable/useObservers");
85
- Object.defineProperty(exports, "useObservers", { enumerable: true, get: function () { return useObservers_1.useObservers; } });
86
78
  var Observable_1 = require("./observable/Observable");
87
79
  Object.defineProperty(exports, "Observable", { enumerable: true, get: function () { return Observable_1.Observable; } });
88
80
  var MediatorObservable_1 = require("./observable/mediator/MediatorObservable");
89
81
  Object.defineProperty(exports, "MediatorObservable", { enumerable: true, get: function () { return MediatorObservable_1.MediatorObservable; } });
90
- var Model_1 = require("./model/Model");
91
- Object.defineProperty(exports, "Model", { enumerable: true, get: function () { return Model_1.Model; } });
92
- var testkit_1 = require("../testkit");
93
- Object.defineProperty(exports, "testKit", { enumerable: true, get: function () { return testkit_1.testKit; } });
94
- var index_1 = require("../testkit/index");
95
- Object.defineProperty(exports, "mockModel", { enumerable: true, get: function () { return index_1.mockModel; } });
96
- Object.defineProperty(exports, "mockGraphs", { enumerable: true, get: function () { return index_1.mockGraphs; } });
82
+ var mockGraphs_1 = require("../testkit/mockGraphs");
83
+ Object.defineProperty(exports, "mockGraphs", { enumerable: true, get: function () { return mockGraphs_1.mockGraphs; } });
84
+ // ============================================================================
85
+ // React-dependent exports (conditionally loaded)
86
+ // ============================================================================
87
+ const reactAvailable = (0, reactAvailability_1.isReactAvailable)();
88
+ exports.injectComponent = reactAvailable
89
+ ? require('./injectors/components/InjectComponent').injectComponent
90
+ : (0, reactAvailability_1.createReactRequiredError)('injectComponent');
91
+ exports.injectHook = reactAvailable
92
+ ? require('./injectors/hooks/InjectHook').injectHook
93
+ : (0, reactAvailability_1.createReactRequiredError)('injectHook');
94
+ exports.injectHookWithArguments = reactAvailable
95
+ ? require('./injectors/hooks/InjectHook').injectHookWithArguments
96
+ : (0, reactAvailability_1.createReactRequiredError)('injectHookWithArguments');
97
+ exports.useObserver = reactAvailable
98
+ ? require('./observable/useObserver').useObserver
99
+ : (0, reactAvailability_1.createReactRequiredError)('useObserver');
100
+ exports.useObservers = reactAvailable
101
+ ? require('./observable/useObservers').useObservers
102
+ : (0, reactAvailability_1.createReactRequiredError)('useObservers');
103
+ exports.Model = reactAvailable
104
+ ? require('./model/Model').Model
105
+ : (0, reactAvailability_1.createReactRequiredClass)('Model');
106
+ exports.testKit = reactAvailable
107
+ ? require('../testkit/index').testKit
108
+ : (0, reactAvailability_1.createReactRequiredError)('testKit');
109
+ exports.mockModel = reactAvailable
110
+ ? require('../testkit/index').mockModel
111
+ : (0, reactAvailability_1.createReactRequiredError)('mockModel');
97
112
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA,8CAA2C;AAC3C,uDAAoD;AACpD,mEAAgE;AAChE,mEAAgE;AAChE,gEAA6D;AAC7D,6DAA0D;AAC1D,gEAA6D;AAC7D,0DAAmC;AAEnC,0CAAwB;AAExB,4CAA2C;AAAlC,8FAAA,KAAK,OAAA;AACd,8DAA6D;AAApD,sGAAA,SAAS,OAAA;AAClB,mDAAkD;AAAzC,0GAAA,WAAW,OAAA;AAEpB,2DAA0D;AAAjD,oGAAA,QAAQ,OAAA;AACjB,iEAAgE;AAAvD,wGAAA,UAAU,OAAA;AACnB,qDAAoD;AAA3C,gGAAA,MAAM,OAAA;AACf,iEAAgE;AAAvD,wGAAA,UAAU,OAAA;AACnB,8DAA6D;AAApD,gHAAA,cAAc,OAAA;AACvB,oEAAmE;AAA1D,kHAAA,eAAe,OAAA;AAGxB;;GAEG;AACU,QAAA,KAAK,GAAG,aAAK,CAAC;AAC3B;;GAEG;AACU,QAAA,SAAS,GAAG,qBAAS,CAAC;AACnC;;GAEG;AACU,QAAA,QAAQ,GAAG,mBAAQ,CAAC;AACjC;;GAEG;AACU,QAAA,UAAU,GAAG,uBAAU,CAAC;AACrC;;GAEG;AACU,QAAA,MAAM,GAAG,eAAM,CAAC;AAC7B;;GAEG;AACU,QAAA,UAAU,GAAG,uBAAU,CAAC;AACrC;;GAEG;AACU,QAAA,cAAc,GAAG,+BAAc,CAAC;AAGhC,QAAA,QAAQ,GAAG,IAAI,kBAAS,EAAE,CAAC;AAExC,0EAAyE;AAAhE,kHAAA,eAAe,OAAA;AACxB,2DAAmF;AAA1E,wGAAA,UAAU,OAAA;AAAE,qHAAA,uBAAuB,OAAA;AAE5C,wDAAuD;AAA9C,0GAAA,WAAW,OAAA;AACpB,0DAAyD;AAAhD,4GAAA,YAAY,OAAA;AACrB,sDAAqD;AAA5C,wGAAA,UAAU,OAAA;AACnB,+EAA8E;AAArE,wHAAA,kBAAkB,OAAA;AAG3B,uCAAsC;AAA7B,8FAAA,KAAK,OAAA;AAEd,sCAAqC;AAA5B,kGAAA,OAAO,OAAA;AAChB,0CAAyD;AAAhD,kGAAA,SAAS,OAAA;AAAE,mGAAA,UAAU,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA,8CAA2C;AAC3C,uDAAoD;AACpD,mEAAgE;AAChE,mEAAgE;AAChE,gEAA6D;AAC7D,6DAA0D;AAC1D,gEAA6D;AAC7D,0DAAmC;AACnC,iEAAiH;AAEjH,0CAAwB;AAExB,4CAA2C;AAAlC,8FAAA,KAAK,OAAA;AACd,8DAA6D;AAApD,sGAAA,SAAS,OAAA;AAClB,mDAAkD;AAAzC,0GAAA,WAAW,OAAA;AAEpB,2DAA0D;AAAjD,oGAAA,QAAQ,OAAA;AACjB,iEAAgE;AAAvD,wGAAA,UAAU,OAAA;AACnB,qDAAoD;AAA3C,gGAAA,MAAM,OAAA;AACf,iEAAgE;AAAvD,wGAAA,UAAU,OAAA;AACnB,8DAA6D;AAApD,gHAAA,cAAc,OAAA;AACvB,oEAAmE;AAA1D,kHAAA,eAAe,OAAA;AAGxB;;GAEG;AACU,QAAA,KAAK,GAAG,aAAK,CAAC;AAC3B;;GAEG;AACU,QAAA,SAAS,GAAG,qBAAS,CAAC;AACnC;;GAEG;AACU,QAAA,QAAQ,GAAG,mBAAQ,CAAC;AACjC;;GAEG;AACU,QAAA,UAAU,GAAG,uBAAU,CAAC;AACrC;;GAEG;AACU,QAAA,MAAM,GAAG,eAAM,CAAC;AAC7B;;GAEG;AACU,QAAA,UAAU,GAAG,uBAAU,CAAC;AACrC;;GAEG;AACU,QAAA,cAAc,GAAG,+BAAc,CAAC;AAEhC,QAAA,QAAQ,GAAG,IAAI,kBAAS,EAAE,CAAC;AAExC,sDAAqD;AAA5C,wGAAA,UAAU,OAAA;AACnB,+EAA8E;AAArE,wHAAA,kBAAkB,OAAA;AAG3B,oDAAmD;AAA1C,wGAAA,UAAU,OAAA;AAEnB,+EAA+E;AAC/E,iDAAiD;AACjD,+EAA+E;AAC/E,MAAM,cAAc,GAAG,IAAA,oCAAgB,GAAE,CAAC;AAY7B,QAAA,eAAe,GAA+B,cAAc;IACvE,CAAC,CAAC,OAAO,CAAC,wCAAwC,CAAC,CAAC,eAAe;IACnE,CAAC,CAAC,IAAA,4CAAwB,EAAC,iBAAiB,CAAC,CAAC;AAEnC,QAAA,UAAU,GAA0B,cAAc;IAC7D,CAAC,CAAC,OAAO,CAAC,8BAA8B,CAAC,CAAC,UAAU;IACpD,CAAC,CAAC,IAAA,4CAAwB,EAAC,YAAY,CAAC,CAAC;AAE9B,QAAA,uBAAuB,GAAuC,cAAc;IACzF,CAAC,CAAC,OAAO,CAAC,8BAA8B,CAAC,CAAC,uBAAuB;IAC/D,CAAC,CAAC,IAAA,4CAAwB,EAAC,yBAAyB,CAAC,CAAC;AAE3C,QAAA,WAAW,GAA2B,cAAc;IAC/D,CAAC,CAAC,OAAO,CAAC,0BAA0B,CAAC,CAAC,WAAW;IACjD,CAAC,CAAC,IAAA,4CAAwB,EAAC,aAAa,CAAC,CAAC;AAE/B,QAAA,YAAY,GAA4B,cAAc;IACjE,CAAC,CAAC,OAAO,CAAC,2BAA2B,CAAC,CAAC,YAAY;IACnD,CAAC,CAAC,IAAA,4CAAwB,EAAC,cAAc,CAAC,CAAC;AAEhC,QAAA,KAAK,GAAqB,cAAc;IACnD,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,KAAK;IAChC,CAAC,CAAC,IAAA,4CAAwB,EAAC,OAAO,CAAC,CAAC;AAEzB,QAAA,OAAO,GAAG,cAAc;IACnC,CAAC,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,OAAO;IACrC,CAAC,CAAC,IAAA,4CAAwB,EAAC,SAAS,CAAC,CAAC;AAE3B,QAAA,SAAS,GAAyB,cAAc;IAC3D,CAAC,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,SAAS;IACvC,CAAC,CAAC,IAAA,4CAAwB,EAAC,WAAW,CAAC,CAAC"}
@@ -0,0 +1,12 @@
1
+ export declare function isReactAvailable(): boolean;
2
+ /**
3
+ * Creates a function that throws an error when called if React is not available.
4
+ * Used to provide helpful error messages for React-dependent features.
5
+ */
6
+ export declare function createReactRequiredError<T = any>(featureName: string): T;
7
+ /**
8
+ * Creates a class constructor that throws an error when instantiated if React is not available.
9
+ * Used for features like Model that need to be constructable.
10
+ */
11
+ export declare function createReactRequiredClass<T = any>(className: string): T;
12
+ //# sourceMappingURL=reactAvailability.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reactAvailability.d.ts","sourceRoot":"","sources":["../../../src/utils/reactAvailability.ts"],"names":[],"mappings":"AAEA,wBAAgB,gBAAgB,IAAI,OAAO,CAc1C;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,CAAC,GAAG,GAAG,EAAE,WAAW,EAAE,MAAM,GAAG,CAAC,CAOxE;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,CAAC,GAAG,GAAG,EAAE,SAAS,EAAE,MAAM,GAAG,CAAC,CAStE"}
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isReactAvailable = isReactAvailable;
4
+ exports.createReactRequiredError = createReactRequiredError;
5
+ exports.createReactRequiredClass = createReactRequiredClass;
6
+ let reactAvailableCache;
7
+ function isReactAvailable() {
8
+ if (reactAvailableCache !== undefined) {
9
+ return reactAvailableCache;
10
+ }
11
+ try {
12
+ // eslint-disable-next-line @typescript-eslint/no-require-imports, global-require
13
+ require('react');
14
+ reactAvailableCache = true;
15
+ }
16
+ catch (_a) {
17
+ reactAvailableCache = false;
18
+ }
19
+ return reactAvailableCache;
20
+ }
21
+ /**
22
+ * Creates a function that throws an error when called if React is not available.
23
+ * Used to provide helpful error messages for React-dependent features.
24
+ */
25
+ function createReactRequiredError(featureName) {
26
+ return function reactRequiredStub(..._args) {
27
+ throw new Error(`${featureName} requires React to be installed. `
28
+ + `Please install React: npm install react`);
29
+ };
30
+ }
31
+ /**
32
+ * Creates a class constructor that throws an error when instantiated if React is not available.
33
+ * Used for features like Model that need to be constructable.
34
+ */
35
+ function createReactRequiredClass(className) {
36
+ return class ReactRequiredStub {
37
+ constructor() {
38
+ throw new Error(`${className} requires React to be installed. `
39
+ + `Please install React: npm install react`);
40
+ }
41
+ };
42
+ }
43
+ //# sourceMappingURL=reactAvailability.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reactAvailability.js","sourceRoot":"","sources":["../../../src/utils/reactAvailability.ts"],"names":[],"mappings":";;AAEA,4CAcC;AAMD,4DAOC;AAMD,4DASC;AA5CD,IAAI,mBAAwC,CAAC;AAE7C,SAAgB,gBAAgB;IAC9B,IAAI,mBAAmB,KAAK,SAAS,EAAE,CAAC;QACtC,OAAO,mBAAmB,CAAC;IAC7B,CAAC;IAED,IAAI,CAAC;QACH,iFAAiF;QACjF,OAAO,CAAC,OAAO,CAAC,CAAC;QACjB,mBAAmB,GAAG,IAAI,CAAC;IAC7B,CAAC;IAAC,WAAM,CAAC;QACP,mBAAmB,GAAG,KAAK,CAAC;IAC9B,CAAC;IAED,OAAO,mBAAmB,CAAC;AAC7B,CAAC;AAED;;;GAGG;AACH,SAAgB,wBAAwB,CAAU,WAAmB;IACnE,OAAO,SAAS,iBAAiB,CAAC,GAAG,KAAY;QAC/C,MAAM,IAAI,KAAK,CACb,GAAG,WAAW,mCAAmC;cAC/C,yCAAyC,CAC5C,CAAC;IACJ,CAAM,CAAC;AACT,CAAC;AAED;;;GAGG;AACH,SAAgB,wBAAwB,CAAU,SAAiB;IACjE,OAAO,MAAM,iBAAiB;QAC5B;YACE,MAAM,IAAI,KAAK,CACb,GAAG,SAAS,mCAAmC;kBAC7C,yCAAyC,CAC5C,CAAC;QACJ,CAAC;KACG,CAAC;AACT,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-obsidian",
3
- "version": "2.25.0",
3
+ "version": "2.26.0",
4
4
  "description": "Dependency injection framework for React and React Native applications",
5
5
  "scripts": {
6
6
  "prepack": "yarn lint && tsc --project tsconfig.prod.json",
@@ -21,7 +21,12 @@
21
21
  "hoist-non-react-statics": "3.x.x"
22
22
  },
23
23
  "peerDependencies": {
24
- "react": "*"
24
+ "react": ">=16.8.0"
25
+ },
26
+ "peerDependenciesMeta": {
27
+ "react": {
28
+ "optional": true
29
+ }
25
30
  },
26
31
  "devDependencies": {
27
32
  "@babel/core": "7.26.10",
package/src/index.ts CHANGED
@@ -6,6 +6,7 @@ import { lifecycleBound } from './decorators/LifecycleBound';
6
6
  import { provides } from './decorators/provides/Provides';
7
7
  import { singleton } from './decorators/singleton/Singleton';
8
8
  import _Obsidian from './Obsidian';
9
+ import { isReactAvailable, createReactRequiredError, createReactRequiredClass } from './utils/reactAvailability';
9
10
 
10
11
  export * from './types';
11
12
 
@@ -50,19 +51,57 @@ export const LateInject = lateInject;
50
51
  */
51
52
  export const LifecycleBound = lifecycleBound;
52
53
 
53
-
54
54
  export const Obsidian = new _Obsidian();
55
55
 
56
- export { injectComponent } from './injectors/components/InjectComponent';
57
- export { injectHook, injectHookWithArguments } from './injectors/hooks/InjectHook';
58
-
59
- export { useObserver } from './observable/useObserver';
60
- export { useObservers } from './observable/useObservers';
61
56
  export { Observable } from './observable/Observable';
62
57
  export { MediatorObservable } from './observable/mediator/MediatorObservable';
63
58
  export { OnNext, Unsubscribe } from './observable/types';
64
59
 
65
- export { Model } from './model/Model';
60
+ export { mockGraphs } from '../testkit/mockGraphs';
61
+
62
+ // ============================================================================
63
+ // React-dependent exports (conditionally loaded)
64
+ // ============================================================================
65
+ const reactAvailable = isReactAvailable();
66
+
67
+ import type { injectComponent as injectComponentType } from './injectors/components/InjectComponent';
68
+ import type {
69
+ injectHook as injectHookType,
70
+ injectHookWithArguments as injectHookWithArgumentsType,
71
+ } from './injectors/hooks/InjectHook';
72
+ import type { useObserver as useObserverType } from './observable/useObserver';
73
+ import type { useObservers as useObserversType } from './observable/useObservers';
74
+ import type { Model as ModelType } from './model/Model';
75
+ import type { mockModel as mockModelType } from '../testkit/index';
76
+
77
+ export const injectComponent: typeof injectComponentType = reactAvailable
78
+ ? require('./injectors/components/InjectComponent').injectComponent
79
+ : createReactRequiredError('injectComponent');
80
+
81
+ export const injectHook: typeof injectHookType = reactAvailable
82
+ ? require('./injectors/hooks/InjectHook').injectHook
83
+ : createReactRequiredError('injectHook');
84
+
85
+ export const injectHookWithArguments: typeof injectHookWithArgumentsType = reactAvailable
86
+ ? require('./injectors/hooks/InjectHook').injectHookWithArguments
87
+ : createReactRequiredError('injectHookWithArguments');
88
+
89
+ export const useObserver: typeof useObserverType = reactAvailable
90
+ ? require('./observable/useObserver').useObserver
91
+ : createReactRequiredError('useObserver');
92
+
93
+ export const useObservers: typeof useObserversType = reactAvailable
94
+ ? require('./observable/useObservers').useObservers
95
+ : createReactRequiredError('useObservers');
96
+
97
+ export const Model: typeof ModelType = reactAvailable
98
+ ? require('./model/Model').Model
99
+ : createReactRequiredClass('Model');
100
+
101
+ export const testKit = reactAvailable
102
+ ? require('../testkit/index').testKit
103
+ : createReactRequiredError('testKit');
66
104
 
67
- export { testKit } from '../testkit';
68
- export { mockModel, mockGraphs } from '../testkit/index';
105
+ export const mockModel: typeof mockModelType = reactAvailable
106
+ ? require('../testkit/index').mockModel
107
+ : createReactRequiredError('mockModel');
@@ -0,0 +1,45 @@
1
+ let reactAvailableCache: boolean | undefined;
2
+
3
+ export function isReactAvailable(): boolean {
4
+ if (reactAvailableCache !== undefined) {
5
+ return reactAvailableCache;
6
+ }
7
+
8
+ try {
9
+ // eslint-disable-next-line @typescript-eslint/no-require-imports, global-require
10
+ require('react');
11
+ reactAvailableCache = true;
12
+ } catch {
13
+ reactAvailableCache = false;
14
+ }
15
+
16
+ return reactAvailableCache;
17
+ }
18
+
19
+ /**
20
+ * Creates a function that throws an error when called if React is not available.
21
+ * Used to provide helpful error messages for React-dependent features.
22
+ */
23
+ export function createReactRequiredError<T = any>(featureName: string): T {
24
+ return function reactRequiredStub(..._args: any[]) {
25
+ throw new Error(
26
+ `${featureName} requires React to be installed. `
27
+ + `Please install React: npm install react`,
28
+ );
29
+ } as T;
30
+ }
31
+
32
+ /**
33
+ * Creates a class constructor that throws an error when instantiated if React is not available.
34
+ * Used for features like Model that need to be constructable.
35
+ */
36
+ export function createReactRequiredClass<T = any>(className: string): T {
37
+ return class ReactRequiredStub {
38
+ constructor() {
39
+ throw new Error(
40
+ `${className} requires React to be installed. `
41
+ + `Please install React: npm install react`,
42
+ );
43
+ }
44
+ } as T;
45
+ }