siringa 0.0.5 → 0.1.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.
@@ -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
- // src/index.ts
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
- var _a;
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":
@@ -67,15 +68,17 @@ var Injector = class {
67
68
  }
68
69
  });
69
70
  const injections = promises ? (await Promise.all(promises)).map((i) => {
70
- return promisedBinding in i ? this.#get(i[promisedBinding], stack) : i;
71
+ return i && typeof i === "object" && i[promisedBinding] ? this.#get(i[promisedBinding], stack) : i;
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.js.map
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
- declare type Constructor<T = any> = abstract new (...args: any) => T;
2
+ type Constructor<T = any> = abstract new (...args: any) => T;
3
3
  /** The _type_ for a binding, either a `Constructor` or a `string`. */
4
- declare type Binding = Constructor | string;
4
+ type Binding = Constructor | string;
5
5
  /** The _type_ of a binding in the context of an `Injector`. */
6
- declare type InjectorBinding<Components extends Constructor, Provisions extends Record<string, any>> = Components | (keyof Provisions & string) | PromisedBinding<Components | (keyof Provisions & string)>;
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
- declare type InjectTuple<Components extends Constructor, Provisions extends Record<string, any>> = readonly [InjectorBinding<Components, Provisions>, ...(InjectorBinding<Components, Provisions>)[]];
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
- declare type CheckInject<Inject, // the tuple from "$inject"
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
- declare type MapInject<Inject, // the tuple from "$inject"
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
- declare type CheckInjectable<I extends Injectable<Components, Provisions>, // the `Injectable` to check
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
- declare type UnrollPromise<T> = T extends Promise<infer T> ? UnrollPromise<T> : T;
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
- declare type ExtendProvisions<Provisions extends Record<string, any>, // the `Injector`'s provisions
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 declare type Factory<Components extends Constructor = Constructor, Provisions extends Record<string, any> = Record<string, any>, T = any> = (injections: Injections<Components, Provisions>) => T | Promise<T>;
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
- // src/index.ts
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
- var _a;
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":
@@ -43,15 +43,17 @@ var Injector = class {
43
43
  }
44
44
  });
45
45
  const injections = promises ? (await Promise.all(promises)).map((i) => {
46
- return promisedBinding in i ? this.#get(i[promisedBinding], stack) : i;
46
+ return i && typeof i === "object" && i[promisedBinding] ? this.#get(i[promisedBinding], stack) : i;
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;
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/index.ts"],
4
- "mappings": ";AA2JA,qBAAqB,SAA0B;AAC7C,SAAO,OAAO,YAAY,aAAa,UAAU,QAAQ,UAAU,IAAI;AACzE;AAGA,IAAM,kBAAkB,OAAO,IAAI,yBAAyB;AAGrD,iBAAoC,SAAgC;AACzE,SAAO,GAAG,kBAAkB,QAAQ;AACtC;AA2DO,qBAGyC;AAAA,EACrC,aAA+D,oBAAI,IAAI;AAAA,EACvE,YAAwC,oBAAI,IAAI;AAAA,EACzD;AAAA,QAIM,KAAK,SAAkB,OAAgC;AAC3D,QAAI,MAAM,SAAS,OAAO,GAAG;AAC3B,UAAI;AAAc,eAAO,kBAAkB,SAAS,CAAC,CAAC;AACtD,YAAM,WAAU,gCAAgC,YAAY,OAAO;AACnE,aAAO,QAAQ,OAAO,IAAI,MAAM,QAAO,CAAC;AAAA,IAC1C;AAEA,UAAM,WAAU,eAAe,IAAI,OAAO;AAC1C,QAAI;AAAS,aAAO;AAEpB,UAAM,UAAU,gBAAgB,IAAI,OAAO;AAC3C,QAAI,SAAS;AACX,YAAM,WAAU,QAAQ,QAAQ,EAAE,KAAK,MAAM,QAAQ,CAAE,GAAG,OAAO,OAAQ,CAAC,CAAC;AAC3E,qBAAe,IAAI,SAAS,QAAO;AACnC,aAAO;AAAA,IACT;AAEA,QAAI;AAAc,aAAO,kBAAkB,SAAS,CAAC,CAAC;AAEtD,UAAM,UAAU,6BAA6B,YAAY,OAAO;AAChE,WAAO,QAAQ,OAAO,IAAI,MAAM,OAAO,CAAC;AAAA,EAC1C;AAAA,QAEM,QAAQ,YAAgD,OAAgC;AAjQhG;AAkQI,UAAM,WAAW,iBAAW,YAAX,mBAAoB,IAAI,CAAC,YAAuC;AAC/E,cAAQ,OAAO;AAAA,aACR;AAAA,aACA;AACH,iBAAO,UAAU,SAAS,KAAK;AAAA;AAE/B,iBAAO;AAAA;AAAA,IAEb;AAEA,UAAM,aAAa,WAAY,OAAM,QAAQ,IAAI,QAAQ,GAAG,IAAI,CAAC,MAAM;AACrE,aAAO,mBAAmB,IAAI,UAAU,EAAE,kBAAkB,KAAK,IAAI;AAAA,IACvE,CAAC,IAAI,CAAC;AAGN,WAAO,IAAI,WAAW,GAAG,UAAU;AAAA,EACrC;AAAA,EAsBA,KACE,SACA,iBACM;AACN,UAAM,aAAa,kBAAkB,kBACjC;AAEJ,oBAAgB,IAAI,SAAS,OAAO,UAAU,aAAa,YAAY,KAAK,CAAC;AAC7E,WAAO;AAAA,EACT;AAAA,EAiBA,OACE,SACA,SACM;AACN,oBAAgB,IAAI,SAAS,OAAO,UAAU,QAAQ;AAAA,MACpD,KAAK,CAAC,cAAmB,UAAU,WAAW,KAAK;AAAA,MACnD,QAAQ,OAAO,eAAoB,aAAa,YAAY,KAAK;AAAA,MACjE,UAAU,MAAM,KAAK,SAAS;AAAA,IAChC,CAAC,CAAC;AAEF,WAAO;AAAA,EACT;AAAA,EAiBA,IACE,SACA,UACM;AACN,mBAAe,IAAI,SAAS,QAAQ,QAAQ,QAAQ,CAAC;AACrD,WAAO;AAAA,EACT;AAAA,QAWM,IACJ,SACc;AACd,WAAO,UAAU,SAAS,CAAC,CAAC;AAAA,EAC9B;AAAA,EAUA,OACE,YAC0B;AAC1B,WAAO,aAAa,YAAY,CAAC,CAAC;AAAA,EACpC;AAAA,EAQA,KACE,SACe;AACf,WAAO,QAAQ;AAAA,MACb,KAAK,CAAC,cAAmB,UAAU,WAAW,CAAC,CAAC;AAAA,MAChD,QAAQ,OAAO,eAAoB,aAAa,YAAY,CAAC,CAAC;AAAA,MAC9D,UAAU,MAAM,KAAK,SAAS;AAAA,IAChC,CAAC;AAAA,EACH;AAAA,EAKA,WAA6C;AAC3C,UAAM,WAAW,IAAI,SAAiC;AACtD,uBAAmB;AACnB,WAAO;AAAA,EACT;AACF;",
5
- "names": []
4
+ "mappings": "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",
5
+ "names": ["message", "promise"]
6
6
  }
package/package.json CHANGED
@@ -1,44 +1,43 @@
1
1
  {
2
2
  "name": "siringa",
3
- "version": "0.0.5",
3
+ "version": "0.1.0",
4
4
  "description": "Simple type-checking injection library for Typescript",
5
- "main": "./dist/index.js",
5
+ "main": "./dist/index.cjs",
6
6
  "module": "./dist/index.mjs",
7
+ "types": "./dist/index.d.ts",
7
8
  "exports": {
8
9
  ".": {
9
- "import": "./dist/index.mjs",
10
- "require": "./dist/index.js"
10
+ "require": {
11
+ "types": "./dist/index.d.ts",
12
+ "default": "./dist/index.cjs"
13
+ },
14
+ "import": {
15
+ "types": "./dist/index.d.ts",
16
+ "default": "./dist/index.mjs"
17
+ }
11
18
  }
12
19
  },
13
- "types": "./index.d.ts",
14
20
  "scripts": {
15
- "build": "./build.sh",
16
- "dev": "nodemon -e ts -x ./build.sh -w src -w test -w test-d",
17
- "lint": "eslint src test test-d",
18
- "prepare": "patch -N -p0 -i .nyc.patch || true"
21
+ "build": "plug --force-esm",
22
+ "coverage": "plug coverage",
23
+ "dev": "npx nodemon -e ts -x plug -w src -w test -w test-d",
24
+ "lint": "plug --force-esm lint",
25
+ "test": "plug test",
26
+ "transpile": "plug transpile"
19
27
  },
20
28
  "author": "Juit Developers <developers@juit.com>",
21
29
  "license": "Apache-2.0",
22
30
  "devDependencies": {
23
- "@types/chai": "^4.3.0",
24
- "@types/chai-as-promised": "^7.1.5",
25
- "@types/mocha": "^9.1.0",
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"
31
+ "@plugjs/build": "^0.2.2",
32
+ "@plugjs/tsd": "^0.2.1",
33
+ "typescript": "^4.9.5"
40
34
  },
41
35
  "directories": {
42
36
  "test": "test"
43
- }
37
+ },
38
+ "files": [
39
+ "*.md",
40
+ "dist/",
41
+ "src/"
42
+ ]
44
43
  }
package/src/index.ts CHANGED
@@ -267,7 +267,8 @@ export class Injector<
267
267
  })
268
268
 
269
269
  const injections = promises ? (await Promise.all(promises)).map((i) => {
270
- return promisedBinding in i ? this.#get(i[promisedBinding], stack) : i
270
+ return i && (typeof i === 'object') && (i[promisedBinding]) ?
271
+ this.#get(i[promisedBinding], stack) : i
271
272
  }) : []
272
273
 
273
274
  // eslint-disable-next-line new-cap
@@ -295,8 +296,8 @@ export class Injector<
295
296
 
296
297
  // Overloaded implementation
297
298
  bind(
298
- binding: Binding,
299
- maybeInjectable?: Injectable<Components, Provisions>,
299
+ binding: Binding,
300
+ maybeInjectable?: Injectable<Components, Provisions>,
300
301
  ): this {
301
302
  const injectable = maybeInjectable ? maybeInjectable :
302
303
  binding as Injectable<Components, Provisions>
@@ -321,8 +322,8 @@ export class Injector<
321
322
 
322
323
  // Overloaded implementation
323
324
  create(
324
- binding: Binding,
325
- factory: Factory<Components, Provisions>,
325
+ binding: Binding,
326
+ factory: Factory<Components, Provisions>,
326
327
  ): this {
327
328
  this.#factories.set(binding, async (stack) => factory({
328
329
  get: (component: any) => this.#get(component, stack),
@@ -349,8 +350,8 @@ export class Injector<
349
350
 
350
351
  // Overloaded implementation
351
352
  use(
352
- binding: Binding,
353
- instance: any,
353
+ binding: Binding,
354
+ instance: any,
354
355
  ): this {
355
356
  this.#promises.set(binding, Promise.resolve(instance))
356
357
  return this
@@ -366,7 +367,7 @@ export class Injector<
366
367
 
367
368
  // Overloaded implementation
368
369
  async get<B extends Binding>(
369
- binding: B,
370
+ binding: B,
370
371
  ): Promise<any> {
371
372
  return this.#get(binding, [])
372
373
  }
@@ -380,7 +381,7 @@ export class Injector<
380
381
  * @param injectable The constructor of the instance to create.
381
382
  */
382
383
  inject<I extends Injectable<Components, Provisions>>(
383
- injectable: I & CheckInjectable<I, Components, Provisions>,
384
+ injectable: I & CheckInjectable<I, Components, Provisions>,
384
385
  ): Promise<InstanceType<I>> {
385
386
  return this.#inject(injectable, [])
386
387
  }
@@ -392,7 +393,7 @@ export class Injector<
392
393
  * This can be used to alleviate issues when top-level await is not available.
393
394
  */
394
395
  make<F extends Factory<Components, Provisions>>(
395
- factory: F,
396
+ factory: F,
396
397
  ): ReturnType<F> {
397
398
  return factory({
398
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
- }