siringa 0.0.6 → 0.2.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/{index.js → index.cjs} +24 -4
- package/dist/index.cjs.map +6 -0
- package/{index.d.ts → dist/index.d.ts} +10 -10
- package/dist/index.mjs +22 -3
- package/dist/index.mjs.map +2 -2
- package/package.json +27 -27
- package/src/index.ts +9 -9
- package/dist/index.js.map +0 -6
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
"use strict";
|
|
1
2
|
var __defProp = Object.defineProperty;
|
|
2
3
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
4
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
@@ -16,7 +17,7 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
16
17
|
};
|
|
17
18
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
18
19
|
|
|
19
|
-
//
|
|
20
|
+
// index.ts
|
|
20
21
|
var src_exports = {};
|
|
21
22
|
__export(src_exports, {
|
|
22
23
|
Injector: () => Injector,
|
|
@@ -34,6 +35,7 @@ var Injector = class {
|
|
|
34
35
|
#factories = /* @__PURE__ */ new Map();
|
|
35
36
|
#promises = /* @__PURE__ */ new Map();
|
|
36
37
|
#parent;
|
|
38
|
+
/* INTERNALS ============================================================== */
|
|
37
39
|
async #get(binding, stack) {
|
|
38
40
|
if (stack.includes(binding)) {
|
|
39
41
|
if (this.#parent)
|
|
@@ -56,8 +58,7 @@ var Injector = class {
|
|
|
56
58
|
return Promise.reject(new Error(message));
|
|
57
59
|
}
|
|
58
60
|
async #inject(injectable, stack) {
|
|
59
|
-
|
|
60
|
-
const promises = (_a = injectable.$inject) == null ? void 0 : _a.map((binding) => {
|
|
61
|
+
const promises = injectable.$inject?.map((binding) => {
|
|
61
62
|
switch (typeof binding) {
|
|
62
63
|
case "string":
|
|
63
64
|
case "function":
|
|
@@ -71,11 +72,13 @@ var Injector = class {
|
|
|
71
72
|
}) : [];
|
|
72
73
|
return new injectable(...injections);
|
|
73
74
|
}
|
|
75
|
+
// Overloaded implementation
|
|
74
76
|
bind(binding, maybeInjectable) {
|
|
75
77
|
const injectable = maybeInjectable ? maybeInjectable : binding;
|
|
76
78
|
this.#factories.set(binding, async (stack) => this.#inject(injectable, stack));
|
|
77
79
|
return this;
|
|
78
80
|
}
|
|
81
|
+
// Overloaded implementation
|
|
79
82
|
create(binding, factory) {
|
|
80
83
|
this.#factories.set(binding, async (stack) => factory({
|
|
81
84
|
get: (component) => this.#get(component, stack),
|
|
@@ -84,16 +87,31 @@ var Injector = class {
|
|
|
84
87
|
}));
|
|
85
88
|
return this;
|
|
86
89
|
}
|
|
90
|
+
// Overloaded implementation
|
|
87
91
|
use(binding, instance) {
|
|
88
92
|
this.#promises.set(binding, Promise.resolve(instance));
|
|
89
93
|
return this;
|
|
90
94
|
}
|
|
95
|
+
// Overloaded implementation
|
|
91
96
|
async get(binding) {
|
|
92
97
|
return this.#get(binding, []);
|
|
93
98
|
}
|
|
99
|
+
/* INJECTIONS ============================================================= */
|
|
100
|
+
/**
|
|
101
|
+
* Create a new instance of the specified `Injectable`, providing all
|
|
102
|
+
* necessary injections.
|
|
103
|
+
*
|
|
104
|
+
* @param injectable The constructor of the instance to create.
|
|
105
|
+
*/
|
|
94
106
|
inject(injectable) {
|
|
95
107
|
return this.#inject(injectable, []);
|
|
96
108
|
}
|
|
109
|
+
/**
|
|
110
|
+
* Simple utility method to invoke the factory with the correct `Injections`
|
|
111
|
+
* and return its result.
|
|
112
|
+
*
|
|
113
|
+
* This can be used to alleviate issues when top-level await is not available.
|
|
114
|
+
*/
|
|
97
115
|
make(factory) {
|
|
98
116
|
return factory({
|
|
99
117
|
get: (component) => this.#get(component, []),
|
|
@@ -101,6 +119,8 @@ var Injector = class {
|
|
|
101
119
|
injector: () => this.injector()
|
|
102
120
|
});
|
|
103
121
|
}
|
|
122
|
+
/* CHILD INJECTORS ======================================================== */
|
|
123
|
+
/** Create a sub-`Injector` child of this one. */
|
|
104
124
|
injector() {
|
|
105
125
|
const injector = new Injector();
|
|
106
126
|
injector.#parent = this;
|
|
@@ -112,4 +132,4 @@ var Injector = class {
|
|
|
112
132
|
Injector,
|
|
113
133
|
promise
|
|
114
134
|
});
|
|
115
|
-
//# sourceMappingURL=index.
|
|
135
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/index.ts"],
|
|
4
|
+
"mappings": "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",
|
|
5
|
+
"names": ["message", "promise"]
|
|
6
|
+
}
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
/** A generic constructor */
|
|
2
|
-
|
|
2
|
+
type Constructor<T = any> = abstract new (...args: any) => T;
|
|
3
3
|
/** The _type_ for a binding, either a `Constructor` or a `string`. */
|
|
4
|
-
|
|
4
|
+
type Binding = Constructor | string;
|
|
5
5
|
/** The _type_ of a binding in the context of an `Injector`. */
|
|
6
|
-
|
|
6
|
+
type InjectorBinding<Components extends Constructor, Provisions extends Record<string, any>> = Components | (keyof Provisions & string) | PromisedBinding<Components | (keyof Provisions & string)>;
|
|
7
7
|
/** A tuple of `InjectorBinding`s (what's needed by `$inject`). */
|
|
8
|
-
|
|
8
|
+
type InjectTuple<Components extends Constructor, Provisions extends Record<string, any>> = readonly [InjectorBinding<Components, Provisions>, ...(InjectorBinding<Components, Provisions>)[]];
|
|
9
9
|
/**
|
|
10
10
|
* Check that an `Injector`'s static `$inject` member matches the `Injector`'s
|
|
11
11
|
* own components and provisions
|
|
12
12
|
*/
|
|
13
|
-
|
|
13
|
+
type CheckInject<Inject, // the tuple from "$inject"
|
|
14
14
|
Components extends Constructor, // the `Injector`'s components
|
|
15
15
|
Provisions extends Record<string, any>> = Inject extends readonly [] ? readonly [] : Inject extends readonly [infer I1] ? I1 extends PromisedBinding<infer I2> ? I2 extends keyof Provisions ? readonly [PromisedBinding<I2>] : I2 extends Extract<Components, I2> ? readonly [PromisedBinding<I2>] : readonly [PromisedBinding<never>] : I1 extends keyof Provisions ? readonly [I1] : I1 extends Extract<Components, I1> ? readonly [I1] : readonly [never] : Inject extends readonly [infer I1, ...infer I2] ? readonly [
|
|
16
16
|
...CheckInject<[I1], Components, Provisions>,
|
|
@@ -20,7 +20,7 @@ Provisions extends Record<string, any>> = Inject extends readonly [] ? readonly
|
|
|
20
20
|
* Map the contents of the static `$inject` member to their types, resolving
|
|
21
21
|
* named provisions.
|
|
22
22
|
*/
|
|
23
|
-
|
|
23
|
+
type MapInject<Inject, // the tuple from "$inject"
|
|
24
24
|
Provisions extends Record<string, any>> = Inject extends readonly [] ? readonly [] : Inject extends readonly [infer I1] ? I1 extends PromisedBinding<infer I2> ? I2 extends keyof Provisions ? readonly [Promise<Provisions[I2]>] : I2 extends Constructor ? readonly [Promise<InstanceType<I2>>] : readonly [never] : I1 extends keyof Provisions ? readonly [Provisions[I1]] : I1 extends Constructor ? readonly [InstanceType<I1>] : readonly [never] : Inject extends readonly [infer I1, ...infer I2] ? readonly [
|
|
25
25
|
...MapInject<[I1], Provisions>,
|
|
26
26
|
...MapInject<I2, Provisions>
|
|
@@ -28,7 +28,7 @@ Provisions extends Record<string, any>> = Inject extends readonly [] ? readonly
|
|
|
28
28
|
/**
|
|
29
29
|
* Check that an `Injectable` is valid for a given `Injector`.
|
|
30
30
|
*/
|
|
31
|
-
|
|
31
|
+
type CheckInjectable<I extends Injectable<Components, Provisions>, // the `Injectable` to check
|
|
32
32
|
Components extends Constructor, // the `Injector`'s components
|
|
33
33
|
Provisions extends Record<string, any>> = I extends {
|
|
34
34
|
$inject: infer Inject;
|
|
@@ -41,11 +41,11 @@ Provisions extends Record<string, any>> = I extends {
|
|
|
41
41
|
/**
|
|
42
42
|
* Return the unrolled type of a `Promise`
|
|
43
43
|
*/
|
|
44
|
-
|
|
44
|
+
type UnrollPromise<T> = T extends Promise<infer T> ? UnrollPromise<T> : T;
|
|
45
45
|
/**
|
|
46
46
|
* Override the type for an `Injector`'s existing provision, or add a new one
|
|
47
47
|
*/
|
|
48
|
-
|
|
48
|
+
type ExtendProvisions<Provisions extends Record<string, any>, // the `Injector`'s provisions
|
|
49
49
|
P extends string, // the new (string) key of the provision
|
|
50
50
|
T> = {
|
|
51
51
|
[key in P | keyof Provisions]: key extends P ? UnrollPromise<T> : Provisions[key];
|
|
@@ -84,7 +84,7 @@ export interface Injections<Components extends Constructor = never, Provisions e
|
|
|
84
84
|
injector(): Injector<Components, Provisions>;
|
|
85
85
|
}
|
|
86
86
|
/** A `Factory` is a _function_ creating instances of a given type. */
|
|
87
|
-
export
|
|
87
|
+
export type Factory<Components extends Constructor = Constructor, Provisions extends Record<string, any> = Record<string, any>, T = any> = (injections: Injections<Components, Provisions>) => T | Promise<T>;
|
|
88
88
|
/**
|
|
89
89
|
* The `Injector` class acts as a registry of components and provisions,
|
|
90
90
|
* creating instances and injecting dependencies.
|
package/dist/index.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
//
|
|
1
|
+
// index.ts
|
|
2
2
|
function bindingName(binding) {
|
|
3
3
|
return typeof binding === "function" ? `[class ${binding.name}]` : `"${binding}"`;
|
|
4
4
|
}
|
|
@@ -10,6 +10,7 @@ var Injector = class {
|
|
|
10
10
|
#factories = /* @__PURE__ */ new Map();
|
|
11
11
|
#promises = /* @__PURE__ */ new Map();
|
|
12
12
|
#parent;
|
|
13
|
+
/* INTERNALS ============================================================== */
|
|
13
14
|
async #get(binding, stack) {
|
|
14
15
|
if (stack.includes(binding)) {
|
|
15
16
|
if (this.#parent)
|
|
@@ -32,8 +33,7 @@ var Injector = class {
|
|
|
32
33
|
return Promise.reject(new Error(message));
|
|
33
34
|
}
|
|
34
35
|
async #inject(injectable, stack) {
|
|
35
|
-
|
|
36
|
-
const promises = (_a = injectable.$inject) == null ? void 0 : _a.map((binding) => {
|
|
36
|
+
const promises = injectable.$inject?.map((binding) => {
|
|
37
37
|
switch (typeof binding) {
|
|
38
38
|
case "string":
|
|
39
39
|
case "function":
|
|
@@ -47,11 +47,13 @@ var Injector = class {
|
|
|
47
47
|
}) : [];
|
|
48
48
|
return new injectable(...injections);
|
|
49
49
|
}
|
|
50
|
+
// Overloaded implementation
|
|
50
51
|
bind(binding, maybeInjectable) {
|
|
51
52
|
const injectable = maybeInjectable ? maybeInjectable : binding;
|
|
52
53
|
this.#factories.set(binding, async (stack) => this.#inject(injectable, stack));
|
|
53
54
|
return this;
|
|
54
55
|
}
|
|
56
|
+
// Overloaded implementation
|
|
55
57
|
create(binding, factory) {
|
|
56
58
|
this.#factories.set(binding, async (stack) => factory({
|
|
57
59
|
get: (component) => this.#get(component, stack),
|
|
@@ -60,16 +62,31 @@ var Injector = class {
|
|
|
60
62
|
}));
|
|
61
63
|
return this;
|
|
62
64
|
}
|
|
65
|
+
// Overloaded implementation
|
|
63
66
|
use(binding, instance) {
|
|
64
67
|
this.#promises.set(binding, Promise.resolve(instance));
|
|
65
68
|
return this;
|
|
66
69
|
}
|
|
70
|
+
// Overloaded implementation
|
|
67
71
|
async get(binding) {
|
|
68
72
|
return this.#get(binding, []);
|
|
69
73
|
}
|
|
74
|
+
/* INJECTIONS ============================================================= */
|
|
75
|
+
/**
|
|
76
|
+
* Create a new instance of the specified `Injectable`, providing all
|
|
77
|
+
* necessary injections.
|
|
78
|
+
*
|
|
79
|
+
* @param injectable The constructor of the instance to create.
|
|
80
|
+
*/
|
|
70
81
|
inject(injectable) {
|
|
71
82
|
return this.#inject(injectable, []);
|
|
72
83
|
}
|
|
84
|
+
/**
|
|
85
|
+
* Simple utility method to invoke the factory with the correct `Injections`
|
|
86
|
+
* and return its result.
|
|
87
|
+
*
|
|
88
|
+
* This can be used to alleviate issues when top-level await is not available.
|
|
89
|
+
*/
|
|
73
90
|
make(factory) {
|
|
74
91
|
return factory({
|
|
75
92
|
get: (component) => this.#get(component, []),
|
|
@@ -77,6 +94,8 @@ var Injector = class {
|
|
|
77
94
|
injector: () => this.injector()
|
|
78
95
|
});
|
|
79
96
|
}
|
|
97
|
+
/* CHILD INJECTORS ======================================================== */
|
|
98
|
+
/** Create a sub-`Injector` child of this one. */
|
|
80
99
|
injector() {
|
|
81
100
|
const injector = new Injector();
|
|
82
101
|
injector.#parent = this;
|
package/dist/index.mjs.map
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/index.ts"],
|
|
4
|
-
"mappings": ";AA2JA,
|
|
5
|
-
"names": []
|
|
4
|
+
"mappings": "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",
|
|
5
|
+
"names": ["message", "promise"]
|
|
6
6
|
}
|
package/package.json
CHANGED
|
@@ -1,44 +1,44 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "siringa",
|
|
3
|
-
"version": "0.0
|
|
3
|
+
"version": "0.2.0",
|
|
4
|
+
"type": "module",
|
|
4
5
|
"description": "Simple type-checking injection library for Typescript",
|
|
5
|
-
"main": "./dist/index.
|
|
6
|
+
"main": "./dist/index.cjs",
|
|
6
7
|
"module": "./dist/index.mjs",
|
|
8
|
+
"types": "./dist/index.d.ts",
|
|
7
9
|
"exports": {
|
|
8
10
|
".": {
|
|
9
|
-
"
|
|
10
|
-
|
|
11
|
+
"require": {
|
|
12
|
+
"types": "./dist/index.d.ts",
|
|
13
|
+
"default": "./dist/index.cjs"
|
|
14
|
+
},
|
|
15
|
+
"import": {
|
|
16
|
+
"types": "./dist/index.d.ts",
|
|
17
|
+
"default": "./dist/index.mjs"
|
|
18
|
+
}
|
|
11
19
|
}
|
|
12
20
|
},
|
|
13
|
-
"types": "./index.d.ts",
|
|
14
21
|
"scripts": {
|
|
15
|
-
"build": "
|
|
16
|
-
"
|
|
17
|
-
"
|
|
18
|
-
"
|
|
22
|
+
"build": "plug --force-esm",
|
|
23
|
+
"coverage": "plug coverage",
|
|
24
|
+
"dev": "npx nodemon -e ts -x plug -w src -w test -w test-d",
|
|
25
|
+
"lint": "plug --force-esm lint",
|
|
26
|
+
"test": "plug test",
|
|
27
|
+
"transpile": "plug transpile"
|
|
19
28
|
},
|
|
20
29
|
"author": "Juit Developers <developers@juit.com>",
|
|
21
30
|
"license": "Apache-2.0",
|
|
22
31
|
"devDependencies": {
|
|
23
|
-
"@
|
|
24
|
-
"@
|
|
25
|
-
"
|
|
26
|
-
"@types/node": "~16.11.26",
|
|
27
|
-
"@typescript-eslint/eslint-plugin": "^5.17.0",
|
|
28
|
-
"@typescript-eslint/parser": "^5.17.0",
|
|
29
|
-
"chai": "^4.3.6",
|
|
30
|
-
"chai-as-promised": "^7.1.1",
|
|
31
|
-
"esbuild": "^0.14.28",
|
|
32
|
-
"eslint": "^8.12.0",
|
|
33
|
-
"eslint-config-google": "^0.14.0",
|
|
34
|
-
"mocha": "^9.2.2",
|
|
35
|
-
"nodemon": "^2.0.15",
|
|
36
|
-
"nyc": "^15.1.0",
|
|
37
|
-
"source-map-support": "^0.5.21",
|
|
38
|
-
"tsd": "^0.19.1",
|
|
39
|
-
"typescript": "^4.6.3"
|
|
32
|
+
"@plugjs/build": "^0.3.0",
|
|
33
|
+
"@plugjs/tsd": "^0.3.0",
|
|
34
|
+
"typescript": "^5.0.2"
|
|
40
35
|
},
|
|
41
36
|
"directories": {
|
|
42
37
|
"test": "test"
|
|
43
|
-
}
|
|
38
|
+
},
|
|
39
|
+
"files": [
|
|
40
|
+
"*.md",
|
|
41
|
+
"dist/",
|
|
42
|
+
"src/"
|
|
43
|
+
]
|
|
44
44
|
}
|
package/src/index.ts
CHANGED
|
@@ -296,8 +296,8 @@ export class Injector<
|
|
|
296
296
|
|
|
297
297
|
// Overloaded implementation
|
|
298
298
|
bind(
|
|
299
|
-
|
|
300
|
-
|
|
299
|
+
binding: Binding,
|
|
300
|
+
maybeInjectable?: Injectable<Components, Provisions>,
|
|
301
301
|
): this {
|
|
302
302
|
const injectable = maybeInjectable ? maybeInjectable :
|
|
303
303
|
binding as Injectable<Components, Provisions>
|
|
@@ -322,8 +322,8 @@ export class Injector<
|
|
|
322
322
|
|
|
323
323
|
// Overloaded implementation
|
|
324
324
|
create(
|
|
325
|
-
|
|
326
|
-
|
|
325
|
+
binding: Binding,
|
|
326
|
+
factory: Factory<Components, Provisions>,
|
|
327
327
|
): this {
|
|
328
328
|
this.#factories.set(binding, async (stack) => factory({
|
|
329
329
|
get: (component: any) => this.#get(component, stack),
|
|
@@ -350,8 +350,8 @@ export class Injector<
|
|
|
350
350
|
|
|
351
351
|
// Overloaded implementation
|
|
352
352
|
use(
|
|
353
|
-
|
|
354
|
-
|
|
353
|
+
binding: Binding,
|
|
354
|
+
instance: any,
|
|
355
355
|
): this {
|
|
356
356
|
this.#promises.set(binding, Promise.resolve(instance))
|
|
357
357
|
return this
|
|
@@ -367,7 +367,7 @@ export class Injector<
|
|
|
367
367
|
|
|
368
368
|
// Overloaded implementation
|
|
369
369
|
async get<B extends Binding>(
|
|
370
|
-
|
|
370
|
+
binding: B,
|
|
371
371
|
): Promise<any> {
|
|
372
372
|
return this.#get(binding, [])
|
|
373
373
|
}
|
|
@@ -381,7 +381,7 @@ export class Injector<
|
|
|
381
381
|
* @param injectable The constructor of the instance to create.
|
|
382
382
|
*/
|
|
383
383
|
inject<I extends Injectable<Components, Provisions>>(
|
|
384
|
-
|
|
384
|
+
injectable: I & CheckInjectable<I, Components, Provisions>,
|
|
385
385
|
): Promise<InstanceType<I>> {
|
|
386
386
|
return this.#inject(injectable, [])
|
|
387
387
|
}
|
|
@@ -393,7 +393,7 @@ export class Injector<
|
|
|
393
393
|
* This can be used to alleviate issues when top-level await is not available.
|
|
394
394
|
*/
|
|
395
395
|
make<F extends Factory<Components, Provisions>>(
|
|
396
|
-
|
|
396
|
+
factory: F,
|
|
397
397
|
): ReturnType<F> {
|
|
398
398
|
return factory({
|
|
399
399
|
get: (component: any) => this.#get(component, []),
|
package/dist/index.js.map
DELETED
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../src/index.ts"],
|
|
4
|
-
"mappings": "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",
|
|
5
|
-
"names": []
|
|
6
|
-
}
|