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.
@@ -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":
@@ -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.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":
@@ -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;
@@ -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,KAAM,OAAO,MAAM,YAAc,EAAE,mBACtC,UAAU,EAAE,kBAAkB,KAAK,IAAI;AAAA,IAC7C,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,44 @@
1
1
  {
2
2
  "name": "siringa",
3
- "version": "0.0.6",
3
+ "version": "0.2.0",
4
+ "type": "module",
4
5
  "description": "Simple type-checking injection library for Typescript",
5
- "main": "./dist/index.js",
6
+ "main": "./dist/index.cjs",
6
7
  "module": "./dist/index.mjs",
8
+ "types": "./dist/index.d.ts",
7
9
  "exports": {
8
10
  ".": {
9
- "import": "./dist/index.mjs",
10
- "require": "./dist/index.js"
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": "./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"
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
- "@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"
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
- binding: Binding,
300
- maybeInjectable?: Injectable<Components, Provisions>,
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
- binding: Binding,
326
- factory: Factory<Components, Provisions>,
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
- binding: Binding,
354
- instance: any,
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
- binding: B,
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
- injectable: I & CheckInjectable<I, Components, Provisions>,
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
- factory: F,
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
- }