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.
- package/dist/src/index.d.ts +15 -7
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +32 -17
- package/dist/src/index.js.map +1 -1
- package/dist/src/utils/reactAvailability.d.ts +12 -0
- package/dist/src/utils/reactAvailability.d.ts.map +1 -0
- package/dist/src/utils/reactAvailability.js +43 -0
- package/dist/src/utils/reactAvailability.js.map +1 -0
- package/package.json +7 -2
- package/src/index.ts +48 -9
- package/src/utils/reactAvailability.ts +45 -0
package/dist/src/index.d.ts
CHANGED
|
@@ -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 {
|
|
58
|
-
|
|
59
|
-
|
|
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
|
package/dist/src/index.d.ts.map
CHANGED
|
@@ -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;
|
|
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;AAGnC,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;AAE7C,eAAO,MAAM,QAAQ,WAAkB,CAAC;AAExC,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,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAOnD,OAAO,KAAK,EAAE,eAAe,IAAI,mBAAmB,EAAE,MAAM,wCAAwC,CAAC;AACrG,OAAO,KAAK,EACV,UAAU,IAAI,cAAc,EAC5B,uBAAuB,IAAI,2BAA2B,EACvD,MAAM,8BAA8B,CAAC;AACtC,OAAO,KAAK,EAAE,WAAW,IAAI,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC/E,OAAO,KAAK,EAAE,YAAY,IAAI,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAClF,OAAO,KAAK,EAAE,KAAK,IAAI,SAAS,EAAE,MAAM,eAAe,CAAC;AACxD,OAAO,KAAK,EAAE,SAAS,IAAI,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEnE,eAAO,MAAM,eAAe,EAAE,OAAO,mBAEU,CAAC;AAEhD,eAAO,MAAM,UAAU,EAAE,OAAO,cAEU,CAAC;AAE3C,eAAO,MAAM,uBAAuB,EAAE,OAAO,2BAEU,CAAC;AAExD,eAAO,MAAM,WAAW,EAAE,OAAO,eAEU,CAAC;AAE5C,eAAO,MAAM,YAAY,EAAE,OAAO,gBAEU,CAAC;AAE7C,eAAO,MAAM,KAAK,EAAE,OAAO,SAEU,CAAC;AAEtC,eAAO,MAAM,OAAO,KAEmB,CAAC;AAExC,eAAO,MAAM,SAAS,EAAE,OAAO,aAEU,CAAC"}
|
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.
|
|
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
|
|
91
|
-
Object.defineProperty(exports, "
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
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
|
package/dist/src/index.js.map
CHANGED
|
@@ -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;
|
|
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.
|
|
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 {
|
|
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
|
|
68
|
-
|
|
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
|
+
}
|