react-obsidian 0.0.1 → 0.0.2
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/.buildkite/pipeline.yml +11 -0
- package/dist/src/index.d.ts +1 -2
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +5 -3
- package/dist/src/index.js.map +1 -1
- package/dist/src/injectors/components/useGraph.d.ts +1 -1
- package/dist/src/injectors/components/useGraph.js.map +1 -1
- package/dist/src/injectors/hooks/HookInjector.d.ts +6 -0
- package/dist/src/injectors/hooks/HookInjector.d.ts.map +1 -0
- package/dist/src/injectors/hooks/HookInjector.js +28 -0
- package/dist/src/injectors/hooks/HookInjector.js.map +1 -0
- package/package.json +2 -1
- package/src/index.ts +7 -2
- package/src/injectors/components/useGraph.ts +1 -1
- package/src/injectors/hooks/HookInjector.ts +23 -0
- package/dist/src/injectHook.d.ts +0 -5
- package/dist/src/injectHook.d.ts.map +0 -1
- package/dist/src/injectHook.js +0 -30
- package/dist/src/injectHook.js.map +0 -1
- package/src/injectHook.ts +0 -26
package/.buildkite/pipeline.yml
CHANGED
package/dist/src/index.d.ts
CHANGED
|
@@ -2,16 +2,15 @@ import React from 'react';
|
|
|
2
2
|
import { Constructable } from '@Obsidian';
|
|
3
3
|
import _Graph from './decorators/Graph';
|
|
4
4
|
import _ObjectGraph from './graph/ObjectGraph';
|
|
5
|
-
import _injectHook from './injectHook';
|
|
6
5
|
import _Provides from './Provides';
|
|
7
6
|
import { Inject as _Inject, Injectable as _Injectable } from './decorators/injectClass';
|
|
8
7
|
import _obsidian from './Obsidian';
|
|
9
8
|
export declare const Graph: typeof _Graph;
|
|
10
9
|
export declare const ObjectGraph: typeof _ObjectGraph;
|
|
11
|
-
export declare const injectHook: typeof _injectHook;
|
|
12
10
|
export declare const Provides: typeof _Provides;
|
|
13
11
|
export declare const Injectable: typeof _Injectable;
|
|
14
12
|
export declare const Inject: typeof _Inject;
|
|
15
13
|
export declare const Obsidian: _obsidian;
|
|
16
14
|
export declare const injectComponent: <P>(__Target: React.FunctionComponent<P>, __Graph: Constructable<_ObjectGraph>) => React.FunctionComponent<Partial<P>>;
|
|
15
|
+
export declare const injectHook: <Args, Result>(hook: (args: Args) => Result, __Graph: Constructable<_ObjectGraph>) => (args?: Partial<Args> | undefined) => Result;
|
|
17
16
|
//# 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,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,MAAM,MAAM,oBAAoB,CAAC;AACxC,OAAO,YAAY,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,MAAM,MAAM,oBAAoB,CAAC;AACxC,OAAO,YAAY,MAAM,qBAAqB,CAAC;AAE/C,OAAO,SAAS,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,MAAM,IAAI,OAAO,EAAE,UAAU,IAAI,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACxF,OAAO,SAAS,MAAM,YAAY,CAAC;AAGnC,eAAO,MAAM,KAAK,eAAS,CAAC;AAC5B,eAAO,MAAM,WAAW,qBAAe,CAAC;AACxC,eAAO,MAAM,QAAQ,kBAAY,CAAC;AAClC,eAAO,MAAM,UAAU,oBAAc,CAAC;AACtC,eAAO,MAAM,MAAM,gBAAU,CAAC;AAC9B,eAAO,MAAM,QAAQ,WAAkB,CAAC;AAGxC,eAAO,MAAM,eAAe,qDAEjB,cAAc,YAAY,CAAC,wCACU,CAAC;AAGjD,eAAO,MAAM,UAAU,wDAEZ,cAAc,YAAY,CAAC,iDACC,CAAC"}
|
package/dist/src/index.js
CHANGED
|
@@ -3,17 +3,16 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.injectComponent = exports.Obsidian = exports.Inject = exports.Injectable = exports.Provides = exports.
|
|
6
|
+
exports.injectHook = exports.injectComponent = exports.Obsidian = exports.Inject = exports.Injectable = exports.Provides = exports.ObjectGraph = exports.Graph = void 0;
|
|
7
7
|
var Graph_1 = __importDefault(require("./decorators/Graph"));
|
|
8
8
|
var ObjectGraph_1 = __importDefault(require("./graph/ObjectGraph"));
|
|
9
|
-
var injectHook_1 = __importDefault(require("./injectHook"));
|
|
10
9
|
var ComponentInjector_1 = __importDefault(require("./injectors/components/ComponentInjector"));
|
|
11
10
|
var Provides_1 = __importDefault(require("./Provides"));
|
|
12
11
|
var injectClass_1 = require("./decorators/injectClass");
|
|
13
12
|
var Obsidian_1 = __importDefault(require("./Obsidian"));
|
|
13
|
+
var HookInjector_1 = __importDefault(require("./injectors/hooks/HookInjector"));
|
|
14
14
|
exports.Graph = Graph_1.default;
|
|
15
15
|
exports.ObjectGraph = ObjectGraph_1.default;
|
|
16
|
-
exports.injectHook = injectHook_1.default;
|
|
17
16
|
exports.Provides = Provides_1.default;
|
|
18
17
|
exports.Injectable = injectClass_1.Injectable;
|
|
19
18
|
exports.Inject = injectClass_1.Inject;
|
|
@@ -21,4 +20,7 @@ exports.Obsidian = new Obsidian_1.default();
|
|
|
21
20
|
var componentInjector = new ComponentInjector_1.default();
|
|
22
21
|
var injectComponent = function (__Target, __Graph) { return componentInjector.inject(__Target, __Graph); };
|
|
23
22
|
exports.injectComponent = injectComponent;
|
|
23
|
+
var hookInjector = new HookInjector_1.default();
|
|
24
|
+
var injectHook = function (hook, __Graph) { return hookInjector.inject(hook, __Graph); };
|
|
25
|
+
exports.injectHook = injectHook;
|
|
24
26
|
//# 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":";;;;;;AAEA,6DAAwC;AACxC,oEAA+C;AAC/C
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;AAEA,6DAAwC;AACxC,oEAA+C;AAC/C,+FAAyE;AACzE,wDAAmC;AACnC,wDAAwF;AACxF,wDAAmC;AACnC,gFAA0D;AAE7C,QAAA,KAAK,GAAG,eAAM,CAAC;AACf,QAAA,WAAW,GAAG,qBAAY,CAAC;AAC3B,QAAA,QAAQ,GAAG,kBAAS,CAAC;AACrB,QAAA,UAAU,GAAG,wBAAW,CAAC;AACzB,QAAA,MAAM,GAAG,oBAAO,CAAC;AACjB,QAAA,QAAQ,GAAG,IAAI,kBAAS,EAAE,CAAC;AAExC,IAAM,iBAAiB,GAAG,IAAI,2BAAiB,EAAE,CAAC;AAC3C,IAAM,eAAe,GAAG,UAC7B,QAAoC,EACpC,OAAoC,IACjC,OAAA,iBAAiB,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,EAA3C,CAA2C,CAAC;AAHpC,QAAA,eAAe,mBAGqB;AAEjD,IAAM,YAAY,GAAG,IAAI,sBAAY,EAAE,CAAC;AACjC,IAAM,UAAU,GAAG,UACxB,IAA4B,EAC5B,OAAoC,IACjC,OAAA,YAAY,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,EAAlC,CAAkC,CAAC;AAH3B,QAAA,UAAU,cAGiB"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Constructable } from '@Obsidian';
|
|
2
2
|
import ObjectGraph from 'src/graph/ObjectGraph';
|
|
3
|
-
declare const _default: <P>(Graph: Constructable<ObjectGraph>, props
|
|
3
|
+
declare const _default: <P>(Graph: Constructable<ObjectGraph>, props?: Partial<P> | undefined) => ObjectGraph<unknown>;
|
|
4
4
|
export default _default;
|
|
5
5
|
//# sourceMappingURL=useGraph.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useGraph.js","sourceRoot":"","sources":["../../../../src/injectors/components/useGraph.ts"],"names":[],"mappings":";;;;;AACA,+BAA4C;AAE5C,qFAA+D;AAC/D,4EAAsD;AAEtD,mBAAe,UAAI,KAAiC,EAAE,
|
|
1
|
+
{"version":3,"file":"useGraph.js","sourceRoot":"","sources":["../../../../src/injectors/components/useGraph.ts"],"names":[],"mappings":";;;;;AACA,+BAA4C;AAE5C,qFAA+D;AAC/D,4EAAsD;AAEtD,mBAAe,UAAI,KAAiC,EAAE,KAAkB;IAC/D,IAAA,KAAK,GAAI,IAAA,gBAAQ,EAAC,uBAAa,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,GAAjD,CAAkD;IAC9D,IAAA,iBAAS,EAAC;QACR,0BAAgB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC/B,OAAO,cAAM,OAAA,0BAAgB,CAAC,OAAO,CAAC,KAAK,EAAE,UAAC,CAAC,IAAK,OAAA,uBAAa,CAAC,KAAK,CAAC,CAAC,CAAC,EAAtB,CAAsB,CAAC,EAA9D,CAA8D,CAAC;IAC9E,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IACZ,OAAO,KAAK,CAAC;AACf,CAAC,EAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { Constructable } from '@Obsidian';
|
|
2
|
+
import ObjectGraph from 'src/graph/ObjectGraph';
|
|
3
|
+
export default class HookInjector {
|
|
4
|
+
inject<Args, Result>(hook: (args: Args) => Result, Graph: Constructable<ObjectGraph>): (args?: Partial<Args>) => Result;
|
|
5
|
+
}
|
|
6
|
+
//# sourceMappingURL=HookInjector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HookInjector.d.ts","sourceRoot":"","sources":["../../../../src/injectors/hooks/HookInjector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,WAAW,MAAM,uBAAuB,CAAC;AAGhD,MAAM,CAAC,OAAO,OAAO,YAAY;IAC/B,MAAM,CAAC,IAAI,EAAE,MAAM,EACjB,IAAI,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,MAAM,EAC5B,KAAK,EAAE,aAAa,CAAC,WAAW,CAAC,GAChC,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,MAAM;CAMpC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
var useGraph_1 = __importDefault(require("../components/useGraph"));
|
|
7
|
+
var HookInjector = /** @class */ (function () {
|
|
8
|
+
function HookInjector() {
|
|
9
|
+
}
|
|
10
|
+
HookInjector.prototype.inject = function (hook, Graph) {
|
|
11
|
+
return function (args) {
|
|
12
|
+
var graph = (0, useGraph_1.default)(Graph);
|
|
13
|
+
return hook(new Proxy(args !== null && args !== void 0 ? args : {}, new Injector(graph)));
|
|
14
|
+
};
|
|
15
|
+
};
|
|
16
|
+
return HookInjector;
|
|
17
|
+
}());
|
|
18
|
+
exports.default = HookInjector;
|
|
19
|
+
var Injector = /** @class */ (function () {
|
|
20
|
+
function Injector(graph) {
|
|
21
|
+
this.graph = graph;
|
|
22
|
+
}
|
|
23
|
+
Injector.prototype.get = function (obj, property, receiver) {
|
|
24
|
+
return property in obj ? obj[property] : this.graph.retrieve(property, receiver);
|
|
25
|
+
};
|
|
26
|
+
return Injector;
|
|
27
|
+
}());
|
|
28
|
+
//# sourceMappingURL=HookInjector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HookInjector.js","sourceRoot":"","sources":["../../../../src/injectors/hooks/HookInjector.ts"],"names":[],"mappings":";;;;;AAEA,oEAA8C;AAE9C;IAAA;IAUA,CAAC;IATC,6BAAM,GAAN,UACE,IAA4B,EAC5B,KAAiC;QAEjC,OAAO,UAAC,IAAoB;YAC1B,IAAM,KAAK,GAAG,IAAA,kBAAQ,EAAC,KAAK,CAAC,CAAC;YAC9B,OAAO,IAAI,CAAC,IAAI,KAAK,CAAC,IAAI,aAAJ,IAAI,cAAJ,IAAI,GAAI,EAAE,EAAE,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC1D,CAAC,CAAC;IACJ,CAAC;IACH,mBAAC;AAAD,CAAC,AAVD,IAUC;;AAED;IACE,kBAAoB,KAAkB;QAAlB,UAAK,GAAL,KAAK,CAAa;IAAG,CAAC;IAE1C,sBAAG,GAAH,UAAI,GAAQ,EAAE,QAAgB,EAAE,QAAa;QAC3C,OAAO,QAAQ,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACnF,CAAC;IACH,eAAC;AAAD,CAAC,AAND,IAMC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "react-obsidian",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.2",
|
|
4
4
|
"description": "Dependency injection framework for React and React Native applications",
|
|
5
5
|
"main": "src/index.ts",
|
|
6
6
|
"directories": {
|
|
@@ -24,6 +24,7 @@
|
|
|
24
24
|
"@babel/types": "7.16.x",
|
|
25
25
|
"@johanblumenberg/ts-mockito": "1.x.x",
|
|
26
26
|
"@testing-library/react": "^12.1.2",
|
|
27
|
+
"@testing-library/react-hooks": "^7.0.2",
|
|
27
28
|
"@types/hoist-non-react-statics": "^3.3.1",
|
|
28
29
|
"@types/jest": "26.x.x",
|
|
29
30
|
"@types/lodash": "^4.14.176",
|
package/src/index.ts
CHANGED
|
@@ -2,15 +2,14 @@ import React from 'react';
|
|
|
2
2
|
import { Constructable } from '@Obsidian';
|
|
3
3
|
import _Graph from './decorators/Graph';
|
|
4
4
|
import _ObjectGraph from './graph/ObjectGraph';
|
|
5
|
-
import _injectHook from './injectHook';
|
|
6
5
|
import ComponentInjector from './injectors/components/ComponentInjector';
|
|
7
6
|
import _Provides from './Provides';
|
|
8
7
|
import { Inject as _Inject, Injectable as _Injectable } from './decorators/injectClass';
|
|
9
8
|
import _obsidian from './Obsidian';
|
|
9
|
+
import HookInjector from './injectors/hooks/HookInjector';
|
|
10
10
|
|
|
11
11
|
export const Graph = _Graph;
|
|
12
12
|
export const ObjectGraph = _ObjectGraph;
|
|
13
|
-
export const injectHook = _injectHook;
|
|
14
13
|
export const Provides = _Provides;
|
|
15
14
|
export const Injectable = _Injectable;
|
|
16
15
|
export const Inject = _Inject;
|
|
@@ -21,3 +20,9 @@ export const injectComponent = <P> (
|
|
|
21
20
|
__Target: React.FunctionComponent<P>,
|
|
22
21
|
__Graph: Constructable<_ObjectGraph>,
|
|
23
22
|
) => componentInjector.inject(__Target, __Graph);
|
|
23
|
+
|
|
24
|
+
const hookInjector = new HookInjector();
|
|
25
|
+
export const injectHook = <Args, Result> (
|
|
26
|
+
hook: (args: Args) => Result,
|
|
27
|
+
__Graph: Constructable<_ObjectGraph>,
|
|
28
|
+
) => hookInjector.inject(hook, __Graph);
|
|
@@ -4,7 +4,7 @@ import ObjectGraph from 'src/graph/ObjectGraph';
|
|
|
4
4
|
import graphRegistry from '../../graph/registry/GraphRegistry';
|
|
5
5
|
import referenceCounter from '../../ReferenceCounter';
|
|
6
6
|
|
|
7
|
-
export default <P>(Graph: Constructable<ObjectGraph>, props
|
|
7
|
+
export default <P>(Graph: Constructable<ObjectGraph>, props?: Partial<P>) => {
|
|
8
8
|
const [graph] = useState(graphRegistry.resolve(Graph, props));
|
|
9
9
|
useEffect(() => {
|
|
10
10
|
referenceCounter.retain(graph);
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { Constructable } from '@Obsidian';
|
|
2
|
+
import ObjectGraph from 'src/graph/ObjectGraph';
|
|
3
|
+
import useGraph from '../components/useGraph';
|
|
4
|
+
|
|
5
|
+
export default class HookInjector {
|
|
6
|
+
inject<Args, Result>(
|
|
7
|
+
hook: (args: Args) => Result,
|
|
8
|
+
Graph: Constructable<ObjectGraph>,
|
|
9
|
+
): (args?: Partial<Args>) => Result {
|
|
10
|
+
return (args?: Partial<Args>): Result => {
|
|
11
|
+
const graph = useGraph(Graph);
|
|
12
|
+
return hook(new Proxy(args ?? {}, new Injector(graph)));
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
class Injector implements ProxyHandler<any> {
|
|
18
|
+
constructor(private graph: ObjectGraph) {}
|
|
19
|
+
|
|
20
|
+
get(obj: any, property: string, receiver: any): any {
|
|
21
|
+
return property in obj ? obj[property] : this.graph.retrieve(property, receiver);
|
|
22
|
+
}
|
|
23
|
+
}
|
package/dist/src/injectHook.d.ts
DELETED
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import { Constructable } from '@Obsidian';
|
|
2
|
-
import 'reflect-metadata';
|
|
3
|
-
import ObjectGraph from './graph/ObjectGraph';
|
|
4
|
-
export default function injectHook<S, T>(target: (args: S) => T, Graph: Constructable<ObjectGraph>): (args?: Partial<S> | undefined) => T;
|
|
5
|
-
//# sourceMappingURL=injectHook.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"injectHook.d.ts","sourceRoot":"","sources":["../../src/injectHook.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAE1C,OAAO,kBAAkB,CAAC;AAE1B,OAAO,WAAW,MAAM,qBAAqB,CAAC;AAG9C,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,aAAa,CAAC,WAAW,CAAC,sCACpE,CAAC,CAS9B"}
|
package/dist/src/injectHook.js
DELETED
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
var react_1 = require("react");
|
|
7
|
-
require("reflect-metadata");
|
|
8
|
-
var GraphRegistry_1 = __importDefault(require("./graph/registry/GraphRegistry"));
|
|
9
|
-
var ReferenceCounter_1 = __importDefault(require("./ReferenceCounter"));
|
|
10
|
-
function injectHook(target, Graph) {
|
|
11
|
-
return function (args) {
|
|
12
|
-
var graph = (0, react_1.useState)(GraphRegistry_1.default.resolve(Graph, args))[0];
|
|
13
|
-
(0, react_1.useEffect)(function () {
|
|
14
|
-
ReferenceCounter_1.default.retain(graph);
|
|
15
|
-
return function () { return ReferenceCounter_1.default.release(graph, function (g) { return GraphRegistry_1.default.clear(g); }); };
|
|
16
|
-
}, [graph]);
|
|
17
|
-
return target(new Proxy(args !== null && args !== void 0 ? args : {}, new Injector(graph)));
|
|
18
|
-
};
|
|
19
|
-
}
|
|
20
|
-
exports.default = injectHook;
|
|
21
|
-
var Injector = /** @class */ (function () {
|
|
22
|
-
function Injector(graph) {
|
|
23
|
-
this.graph = graph;
|
|
24
|
-
}
|
|
25
|
-
Injector.prototype.get = function (obj, property, receiver) {
|
|
26
|
-
return property in obj ? obj[property] : this.graph.retrieve(property, receiver);
|
|
27
|
-
};
|
|
28
|
-
return Injector;
|
|
29
|
-
}());
|
|
30
|
-
//# sourceMappingURL=injectHook.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"injectHook.js","sourceRoot":"","sources":["../../src/injectHook.ts"],"names":[],"mappings":";;;;;AACA,+BAA4C;AAC5C,4BAA0B;AAC1B,iFAA2D;AAE3D,wEAAkD;AAElD,SAAwB,UAAU,CAAO,MAAsB,EAAE,KAAiC;IAChG,OAAO,UAAC,IAAiB;QAChB,IAAA,KAAK,GAAI,IAAA,gBAAQ,EAAC,uBAAa,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,GAAhD,CAAiD;QAC7D,IAAA,iBAAS,EAAC;YACR,0BAAgB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC/B,OAAO,cAAM,OAAA,0BAAgB,CAAC,OAAO,CAAC,KAAK,EAAE,UAAC,CAAC,IAAK,OAAA,uBAAa,CAAC,KAAK,CAAC,CAAC,CAAC,EAAtB,CAAsB,CAAC,EAA9D,CAA8D,CAAC;QAC9E,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;QAEZ,OAAO,MAAM,CAAC,IAAI,KAAK,CAAC,IAAI,aAAJ,IAAI,cAAJ,IAAI,GAAI,EAAE,EAAE,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC5D,CAAC,CAAC;AACJ,CAAC;AAVD,6BAUC;AAED;IACE,kBAAoB,KAAkB;QAAlB,UAAK,GAAL,KAAK,CAAa;IAAG,CAAC;IAE1C,sBAAG,GAAH,UAAI,GAAQ,EAAE,QAAgB,EAAE,QAAa;QAC3C,OAAO,QAAQ,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACnF,CAAC;IACH,eAAC;AAAD,CAAC,AAND,IAMC"}
|
package/src/injectHook.ts
DELETED
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import { Constructable } from '@Obsidian';
|
|
2
|
-
import { useEffect, useState } from 'react';
|
|
3
|
-
import 'reflect-metadata';
|
|
4
|
-
import graphRegistry from './graph/registry/GraphRegistry';
|
|
5
|
-
import ObjectGraph from './graph/ObjectGraph';
|
|
6
|
-
import referenceCounter from './ReferenceCounter';
|
|
7
|
-
|
|
8
|
-
export default function injectHook<S, T>(target: (args: S) => T, Graph: Constructable<ObjectGraph>) {
|
|
9
|
-
return (args?: Partial<S>): T => {
|
|
10
|
-
const [graph] = useState(graphRegistry.resolve(Graph, args));
|
|
11
|
-
useEffect(() => {
|
|
12
|
-
referenceCounter.retain(graph);
|
|
13
|
-
return () => referenceCounter.release(graph, (g) => graphRegistry.clear(g));
|
|
14
|
-
}, [graph]);
|
|
15
|
-
|
|
16
|
-
return target(new Proxy(args ?? {}, new Injector(graph)));
|
|
17
|
-
};
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
class Injector implements ProxyHandler<any> {
|
|
21
|
-
constructor(private graph: ObjectGraph) {}
|
|
22
|
-
|
|
23
|
-
get(obj: any, property: string, receiver: any): any {
|
|
24
|
-
return property in obj ? obj[property] : this.graph.retrieve(property, receiver);
|
|
25
|
-
}
|
|
26
|
-
}
|