ts-ioc-container 32.12.0 → 32.13.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/README.md +2 -51
- package/cjm/hooks/hook.js +1 -6
- package/cjm/index.js +1 -2
- package/esm/hooks/hook.js +0 -4
- package/esm/index.js +1 -1
- package/package.json +2 -2
- package/typings/hooks/hook.d.ts +0 -4
- package/typings/index.d.ts +1 -1
package/README.md
CHANGED
|
@@ -1267,7 +1267,7 @@ describe('onDispose', function () {
|
|
|
1267
1267
|
### Inject property
|
|
1268
1268
|
|
|
1269
1269
|
```typescript
|
|
1270
|
-
import { by, Container, hook, injectProp, MetadataInjector, Registration, runHooksAsync } from 'ts-ioc-container';
|
|
1270
|
+
import { by, Container, hook, injectProp, MetadataInjector, Registration, runHooks, runHooksAsync } from 'ts-ioc-container';
|
|
1271
1271
|
|
|
1272
1272
|
describe('inject property', () => {
|
|
1273
1273
|
it('should inject property', () => {
|
|
@@ -1279,7 +1279,7 @@ describe('inject property', () => {
|
|
|
1279
1279
|
|
|
1280
1280
|
const container = new Container(new MetadataInjector()).add(Registration.fromValue(expected).to('greeting'));
|
|
1281
1281
|
const app = container.resolve(App);
|
|
1282
|
-
|
|
1282
|
+
runHooks(app as object, 'onInit', { scope: container });
|
|
1283
1283
|
|
|
1284
1284
|
expect(app.greeting).toBe(expected);
|
|
1285
1285
|
});
|
|
@@ -1287,55 +1287,6 @@ describe('inject property', () => {
|
|
|
1287
1287
|
|
|
1288
1288
|
```
|
|
1289
1289
|
|
|
1290
|
-
### Inject method
|
|
1291
|
-
|
|
1292
|
-
```typescript
|
|
1293
|
-
import { by, Container, hook, inject, invokeExecution, MetadataInjector, Registration, runHooksAsync } from 'ts-ioc-container';
|
|
1294
|
-
|
|
1295
|
-
describe('inject method', () => {
|
|
1296
|
-
const sleep = (number: number) => new Promise((resolve) => setTimeout(resolve, number));
|
|
1297
|
-
|
|
1298
|
-
it('should inject method', async () => {
|
|
1299
|
-
class App {
|
|
1300
|
-
greeting!: string;
|
|
1301
|
-
|
|
1302
|
-
@hook('onInit', invokeExecution({ handleResult: jest.fn() }))
|
|
1303
|
-
setGreeting(@inject(by.key('greeting')) greeting: string) {
|
|
1304
|
-
this.greeting = greeting;
|
|
1305
|
-
}
|
|
1306
|
-
}
|
|
1307
|
-
const expected = 'Hello world!';
|
|
1308
|
-
|
|
1309
|
-
const container = new Container(new MetadataInjector()).add(Registration.fromValue(expected).to('greeting'));
|
|
1310
|
-
const app = container.resolve(App);
|
|
1311
|
-
await runHooksAsync(app, 'onInit', { scope: container });
|
|
1312
|
-
|
|
1313
|
-
expect(app.greeting).toBe(expected);
|
|
1314
|
-
});
|
|
1315
|
-
|
|
1316
|
-
it('should inject method asyncronically', async () => {
|
|
1317
|
-
class App {
|
|
1318
|
-
greeting!: string;
|
|
1319
|
-
|
|
1320
|
-
@hook('onInit', invokeExecution({ handleResult: jest.fn() }))
|
|
1321
|
-
setGreeting(@inject(by.key('greeting')) greeting: string, @inject(by.key('person')) person: string) {
|
|
1322
|
-
this.greeting = `${greeting}${person}`;
|
|
1323
|
-
}
|
|
1324
|
-
}
|
|
1325
|
-
|
|
1326
|
-
const container = new Container(new MetadataInjector())
|
|
1327
|
-
.add(Registration.fromFn(() => sleep(50).then(() => 'Hello,')).to('greeting'))
|
|
1328
|
-
.add(Registration.fromFn(() => sleep(25).then(() => 'world')).to('person'));
|
|
1329
|
-
|
|
1330
|
-
const app = container.resolve(App);
|
|
1331
|
-
await runHooksAsync(app, 'onInit', { scope: container });
|
|
1332
|
-
|
|
1333
|
-
expect(app.greeting).toBe('Hello,world');
|
|
1334
|
-
});
|
|
1335
|
-
});
|
|
1336
|
-
|
|
1337
|
-
```
|
|
1338
|
-
|
|
1339
1290
|
## Mock
|
|
1340
1291
|
Sometimes you need to automatically mock all dependencies in container. This is what `AutoMockedContainer` is for.
|
|
1341
1292
|
|
package/cjm/hooks/hook.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.injectProp = exports.runHooksAsync = exports.runHooks = exports.hasHooks = exports.getHooks = exports.hook = void 0;
|
|
4
4
|
const HookContext_1 = require("./HookContext");
|
|
5
5
|
const utils_1 = require("../utils");
|
|
6
6
|
const hook = (key, ...fns) => (target, propertyKey) => {
|
|
@@ -36,8 +36,3 @@ const runHooksAsync = (target, key, { scope, createContext = HookContext_1.creat
|
|
|
36
36
|
exports.runHooksAsync = runHooksAsync;
|
|
37
37
|
const injectProp = (fn) => (context) => context.injectProperty(fn);
|
|
38
38
|
exports.injectProp = injectProp;
|
|
39
|
-
const invokeExecution = ({ handleResult }) => async (context) => {
|
|
40
|
-
const args = await Promise.all(context.resolveArgs().map(utils_1.promisify));
|
|
41
|
-
return handleResult(context.invokeMethod({ args }), context);
|
|
42
|
-
};
|
|
43
|
-
exports.invokeExecution = invokeExecution;
|
package/cjm/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getParameterMetadata = exports.getMethodMetadata = exports.setMethodMetadata = exports.setParameterMetadata = exports.getMetadata = exports.setMetadata = exports.byAliases = exports.byAlias = exports.IMemoKey = exports.by = exports.HookContext = exports.
|
|
3
|
+
exports.getParameterMetadata = exports.getMethodMetadata = exports.setMethodMetadata = exports.setParameterMetadata = exports.getMetadata = exports.setMetadata = exports.byAliases = exports.byAlias = exports.IMemoKey = exports.by = exports.HookContext = exports.injectProp = exports.runHooksAsync = exports.runHooks = exports.hasHooks = exports.hook = exports.getHooks = exports.ContainerDisposedError = exports.MethodNotImplementedError = exports.DependencyNotFoundError = exports.Registration = exports.register = exports.scope = exports.key = exports.decorate = exports.multiCache = exports.MultiCache = exports.SingletonProvider = exports.singleton = exports.Provider = exports.ProviderDecorator = exports.args = exports.argsFn = exports.alias = exports.visible = exports.provider = exports.ProxyInjector = exports.SimpleInjector = exports.MetadataInjector = exports.resolveArgs = exports.inject = exports.AutoMockedContainer = exports.EmptyContainer = exports.Container = exports.isDependencyKey = void 0;
|
|
4
4
|
// Containers
|
|
5
5
|
var IContainer_1 = require("./container/IContainer");
|
|
6
6
|
Object.defineProperty(exports, "isDependencyKey", { enumerable: true, get: function () { return IContainer_1.isDependencyKey; } });
|
|
@@ -60,7 +60,6 @@ Object.defineProperty(exports, "hasHooks", { enumerable: true, get: function ()
|
|
|
60
60
|
Object.defineProperty(exports, "runHooks", { enumerable: true, get: function () { return hook_1.runHooks; } });
|
|
61
61
|
Object.defineProperty(exports, "runHooksAsync", { enumerable: true, get: function () { return hook_1.runHooksAsync; } });
|
|
62
62
|
Object.defineProperty(exports, "injectProp", { enumerable: true, get: function () { return hook_1.injectProp; } });
|
|
63
|
-
Object.defineProperty(exports, "invokeExecution", { enumerable: true, get: function () { return hook_1.invokeExecution; } });
|
|
64
63
|
var HookContext_1 = require("./hooks/HookContext");
|
|
65
64
|
Object.defineProperty(exports, "HookContext", { enumerable: true, get: function () { return HookContext_1.HookContext; } });
|
|
66
65
|
// Others
|
package/esm/hooks/hook.js
CHANGED
|
@@ -27,7 +27,3 @@ export const runHooksAsync = (target, key, { scope, createContext = createHookCo
|
|
|
27
27
|
return Promise.all(hooks.flatMap(([methodName, executions]) => executions.map((execute) => runExecution(execute, createContext(target, scope, methodName)))));
|
|
28
28
|
};
|
|
29
29
|
export const injectProp = (fn) => (context) => context.injectProperty(fn);
|
|
30
|
-
export const invokeExecution = ({ handleResult }) => async (context) => {
|
|
31
|
-
const args = await Promise.all(context.resolveArgs().map(promisify));
|
|
32
|
-
return handleResult(context.invokeMethod({ args }), context);
|
|
33
|
-
};
|
package/esm/index.js
CHANGED
|
@@ -22,7 +22,7 @@ export { DependencyNotFoundError } from './errors/DependencyNotFoundError';
|
|
|
22
22
|
export { MethodNotImplementedError } from './errors/MethodNotImplementedError';
|
|
23
23
|
export { ContainerDisposedError } from './errors/ContainerDisposedError';
|
|
24
24
|
// Hooks
|
|
25
|
-
export { getHooks, hook, hasHooks, runHooks, runHooksAsync, injectProp
|
|
25
|
+
export { getHooks, hook, hasHooks, runHooks, runHooksAsync, injectProp } from './hooks/hook';
|
|
26
26
|
export { HookContext } from './hooks/HookContext';
|
|
27
27
|
// Others
|
|
28
28
|
export { by, IMemoKey, byAlias, byAliases } from './by';
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ts-ioc-container",
|
|
3
|
-
"version": "32.
|
|
3
|
+
"version": "32.13.0",
|
|
4
4
|
"description": "Typescript IoC container",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public",
|
|
@@ -59,5 +59,5 @@
|
|
|
59
59
|
"ts-node": "^10.9.1",
|
|
60
60
|
"typescript": "5.4.3"
|
|
61
61
|
},
|
|
62
|
-
"gitHead": "
|
|
62
|
+
"gitHead": "3feeca8d0ec89af22740bcdbd2b69b282d7a00b4"
|
|
63
63
|
}
|
package/typings/hooks/hook.d.ts
CHANGED
|
@@ -14,8 +14,4 @@ export declare const runHooksAsync: (target: object, key: string | symbol, { sco
|
|
|
14
14
|
createContext?: ((Target: object, scope: IContainer, methodName?: string) => IHookContext) | undefined;
|
|
15
15
|
}) => Promise<void[]>;
|
|
16
16
|
export declare const injectProp: (fn: InjectFn) => Hook;
|
|
17
|
-
type HandleResult = (result: unknown, context: IHookContext) => void | Promise<void>;
|
|
18
|
-
export declare const invokeExecution: ({ handleResult }: {
|
|
19
|
-
handleResult: HandleResult;
|
|
20
|
-
}) => Hook;
|
|
21
17
|
export {};
|
package/typings/index.d.ts
CHANGED
|
@@ -18,7 +18,7 @@ export { Registration } from './registration/Registration';
|
|
|
18
18
|
export { DependencyNotFoundError } from './errors/DependencyNotFoundError';
|
|
19
19
|
export { MethodNotImplementedError } from './errors/MethodNotImplementedError';
|
|
20
20
|
export { ContainerDisposedError } from './errors/ContainerDisposedError';
|
|
21
|
-
export { getHooks, hook, hasHooks, Hook, runHooks, runHooksAsync, injectProp
|
|
21
|
+
export { getHooks, hook, hasHooks, Hook, runHooks, runHooksAsync, injectProp } from './hooks/hook';
|
|
22
22
|
export { HookContext, InjectFn, IHookContext } from './hooks/HookContext';
|
|
23
23
|
export { by, InstancePredicate, IMemo, IMemoKey, byAlias, byAliases } from './by';
|
|
24
24
|
export { constructor } from './utils';
|