@venizia/ignis-inversion 0.2.0-9 → 0.2.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.
Files changed (91) hide show
  1. package/LICENSE.md +0 -1
  2. package/README.md +83 -117
  3. package/dist/cjs/common/utilities.d.ts +31 -3
  4. package/dist/cjs/common/utilities.d.ts.map +1 -1
  5. package/dist/cjs/common/utilities.js +61 -5
  6. package/dist/cjs/common/utilities.js.map +1 -1
  7. package/dist/cjs/modules/binding/binding.d.ts +3 -0
  8. package/dist/cjs/modules/binding/binding.d.ts.map +1 -1
  9. package/dist/cjs/modules/binding/binding.js +8 -6
  10. package/dist/cjs/modules/binding/binding.js.map +1 -1
  11. package/dist/cjs/modules/binding/common/constants.d.ts.map +1 -1
  12. package/dist/cjs/modules/binding/common/constants.js +2 -6
  13. package/dist/cjs/modules/binding/common/constants.js.map +1 -1
  14. package/dist/cjs/modules/container/base.d.ts +25 -0
  15. package/dist/cjs/modules/container/base.d.ts.map +1 -1
  16. package/dist/cjs/modules/container/base.js +84 -26
  17. package/dist/cjs/modules/container/base.js.map +1 -1
  18. package/dist/cjs/modules/container/container.d.ts +9 -2
  19. package/dist/cjs/modules/container/container.d.ts.map +1 -1
  20. package/dist/cjs/modules/container/container.js +21 -11
  21. package/dist/cjs/modules/container/container.js.map +1 -1
  22. package/dist/cjs/modules/error/app-error.js +2 -5
  23. package/dist/cjs/modules/error/app-error.js.map +1 -1
  24. package/dist/cjs/modules/registry/registry.d.ts.map +1 -1
  25. package/dist/cjs/modules/registry/registry.js +7 -3
  26. package/dist/cjs/modules/registry/registry.js.map +1 -1
  27. package/dist/esm/common/index.d.ts +4 -4
  28. package/dist/esm/common/index.js +4 -4
  29. package/dist/esm/common/utilities.d.ts +32 -4
  30. package/dist/esm/common/utilities.d.ts.map +1 -1
  31. package/dist/esm/common/utilities.js +58 -4
  32. package/dist/esm/common/utilities.js.map +1 -1
  33. package/dist/esm/index.d.ts +2 -2
  34. package/dist/esm/index.js +4 -4
  35. package/dist/esm/modules/binding/binding.d.ts +8 -5
  36. package/dist/esm/modules/binding/binding.d.ts.map +1 -1
  37. package/dist/esm/modules/binding/binding.js +12 -10
  38. package/dist/esm/modules/binding/binding.js.map +1 -1
  39. package/dist/esm/modules/binding/common/constants.d.ts +1 -1
  40. package/dist/esm/modules/binding/common/constants.d.ts.map +1 -1
  41. package/dist/esm/modules/binding/common/constants.js +3 -4
  42. package/dist/esm/modules/binding/common/constants.js.map +1 -1
  43. package/dist/esm/modules/binding/common/index.d.ts +2 -2
  44. package/dist/esm/modules/binding/common/index.js +2 -2
  45. package/dist/esm/modules/binding/common/types.d.ts +3 -3
  46. package/dist/esm/modules/binding/index.d.ts +2 -2
  47. package/dist/esm/modules/binding/index.js +2 -2
  48. package/dist/esm/modules/container/abstract.d.ts +5 -5
  49. package/dist/esm/modules/container/abstract.js +1 -1
  50. package/dist/esm/modules/container/base.d.ts +29 -4
  51. package/dist/esm/modules/container/base.d.ts.map +1 -1
  52. package/dist/esm/modules/container/base.js +89 -31
  53. package/dist/esm/modules/container/base.js.map +1 -1
  54. package/dist/esm/modules/container/common/index.d.ts +1 -1
  55. package/dist/esm/modules/container/common/index.js +1 -1
  56. package/dist/esm/modules/container/common/types.d.ts +3 -3
  57. package/dist/esm/modules/container/container.d.ts +11 -4
  58. package/dist/esm/modules/container/container.d.ts.map +1 -1
  59. package/dist/esm/modules/container/container.js +24 -14
  60. package/dist/esm/modules/container/container.js.map +1 -1
  61. package/dist/esm/modules/container/index.d.ts +4 -4
  62. package/dist/esm/modules/container/index.js +4 -4
  63. package/dist/esm/modules/error/app-error.d.ts +1 -1
  64. package/dist/esm/modules/error/app-error.js +3 -3
  65. package/dist/esm/modules/error/app-error.js.map +1 -1
  66. package/dist/esm/modules/error/common/index.d.ts +1 -1
  67. package/dist/esm/modules/error/common/index.js +1 -1
  68. package/dist/esm/modules/error/common/types.d.ts +1 -1
  69. package/dist/esm/modules/error/definition.d.ts +1 -1
  70. package/dist/esm/modules/error/index.d.ts +4 -4
  71. package/dist/esm/modules/error/index.js +4 -4
  72. package/dist/esm/modules/error/message-code.d.ts +2 -2
  73. package/dist/esm/modules/index.d.ts +5 -5
  74. package/dist/esm/modules/index.js +5 -5
  75. package/dist/esm/modules/metadata/common/index.d.ts +1 -1
  76. package/dist/esm/modules/metadata/common/index.js +1 -1
  77. package/dist/esm/modules/metadata/index.d.ts +2 -2
  78. package/dist/esm/modules/metadata/index.js +2 -2
  79. package/dist/esm/modules/metadata/injectors.d.ts +2 -2
  80. package/dist/esm/modules/metadata/injectors.js +2 -2
  81. package/dist/esm/modules/registry/common/index.d.ts +1 -1
  82. package/dist/esm/modules/registry/common/index.js +1 -1
  83. package/dist/esm/modules/registry/common/types.d.ts +1 -1
  84. package/dist/esm/modules/registry/index.d.ts +2 -2
  85. package/dist/esm/modules/registry/index.js +2 -2
  86. package/dist/esm/modules/registry/registry.d.ts +3 -3
  87. package/dist/esm/modules/registry/registry.d.ts.map +1 -1
  88. package/dist/esm/modules/registry/registry.js +10 -6
  89. package/dist/esm/modules/registry/registry.js.map +1 -1
  90. package/dist/esm/package.json +6 -0
  91. package/package.json +3 -5
@@ -6,6 +6,8 @@ const constants_1 = require("../binding/common/constants");
6
6
  const error_1 = require("../error");
7
7
  const registry_1 = require("../registry/registry");
8
8
  const abstract_1 = require("./abstract");
9
+ /** A dependency graph nests far less than this; deeper is all but certainly a cycle, and is checked. */
10
+ const CYCLE_CHECK_DEPTH = 64;
9
11
  /** Storage half of the container, keyed by normalized binding-key strings - resolution (`instantiate`) stays abstract, it is the part an implementation swaps. */
10
12
  class BaseContainer extends abstract_1.AbstractContainer {
11
13
  constructor(opts) {
@@ -17,49 +19,80 @@ class BaseContainer extends abstract_1.AbstractContainer {
17
19
  this.isCountingResolutions = false;
18
20
  /** Whether `startResolutionCounting` has ever run. A report read without it would name every binding, which is a wrong answer rather than an empty one. */
19
21
  this.hasStartedResolutionCounting = false;
22
+ /** The string each BOUND symbol is stored under: `Symbol('x')` twice is two keys, and both print as "Symbol(x)". */
23
+ this.symbolKeys = new Map();
24
+ /** How many symbols have been bound per description, so a new one gets its suffix in one step. */
25
+ this.symbolDescriptionCounts = new Map();
26
+ /**
27
+ * Nesting depth of the reads in progress. Past {@link CYCLE_CHECK_DEPTH} the keys are tracked, and
28
+ * a key met again is a cycle: a real graph is far shallower, so the common read pays one counter.
29
+ * Only the synchronous part is checked - a cycle through an `await` is not seen.
30
+ */
31
+ this.resolutionDepth = 0;
32
+ this.resolvingKeys = new Set();
20
33
  }
21
34
  getMetadataRegistry() {
22
35
  return registry_1.metadataRegistry;
23
36
  }
24
- bind(opts) {
25
- const { key } = opts;
26
- const keyStr = String(key);
27
- const binding = new binding_1.Binding({ key: keyStr });
28
- this.bindings.set(keyStr, binding);
29
- return binding;
30
- }
31
- isBound(opts) {
37
+ /**
38
+ * The string a key is stored under, or `undefined` for a symbol that was never bound - a lookup
39
+ * never records one, so reading with throwaway symbols leaves nothing behind.
40
+ */
41
+ toKeyString(opts) {
32
42
  const { key } = opts;
33
- const keyStr = String(key);
34
- return this.bindings.has(keyStr);
35
- }
36
- getBinding(opts) {
37
- let key;
38
- switch (typeof opts.key) {
43
+ switch (typeof key) {
39
44
  case 'string': {
40
- key = opts.key;
41
- break;
45
+ return key;
42
46
  }
43
47
  case 'symbol': {
44
- key = opts.key.toString();
45
- break;
48
+ return this.symbolKeys.get(key);
46
49
  }
47
50
  case 'object': {
48
- key = constants_1.BindingKeys.build(opts.key);
49
- break;
51
+ return constants_1.BindingKeys.build(key);
50
52
  }
51
53
  default: {
52
54
  throw (0, error_1.getError)({
53
- message: `[getBinding] Invalid binding key type | opts: ${opts.key} | allowed: [string, symbol, { namespace: string, key: string }]`,
55
+ message: `[getBinding] Invalid binding key type | opts: ${String(key)} | allowed: [string, symbol, { namespace: string, key: string }]`,
54
56
  });
55
57
  }
56
58
  }
57
- const binding = this.bindings.get(key);
59
+ }
60
+ /** A bound symbol's own string: its description, suffixed (`Symbol(x)#2`) when another symbol holds it. */
61
+ bindSymbolKey(opts) {
62
+ const { key } = opts;
63
+ const known = this.symbolKeys.get(key);
64
+ if (known !== undefined) {
65
+ return known;
66
+ }
67
+ const description = key.toString();
68
+ const count = (this.symbolDescriptionCounts.get(description) ?? 0) + 1;
69
+ this.symbolDescriptionCounts.set(description, count);
70
+ const keyStr = count === 1 ? description : `${description}#${count}`;
71
+ this.symbolKeys.set(key, keyStr);
72
+ return keyStr;
73
+ }
74
+ bind(opts) {
75
+ const { key } = opts;
76
+ const keyStr = typeof key === 'symbol' ? this.bindSymbolKey({ key }) : key;
77
+ const binding = new binding_1.Binding({ key: keyStr });
78
+ this.bindings.set(keyStr, binding);
58
79
  return binding;
59
80
  }
81
+ isBound(opts) {
82
+ const keyStr = this.toKeyString({ key: opts.key });
83
+ return keyStr !== undefined && this.bindings.has(keyStr);
84
+ }
85
+ getBinding(opts) {
86
+ const keyStr = this.toKeyString({ key: opts.key });
87
+ return keyStr === undefined ? undefined : this.bindings.get(keyStr);
88
+ }
60
89
  unbind(opts) {
61
- const key = String(opts.key);
62
- return this.bindings.delete(key);
90
+ const { key } = opts;
91
+ const keyStr = this.toKeyString({ key });
92
+ if (typeof key === 'symbol') {
93
+ this.symbolKeys.delete(key);
94
+ }
95
+ return keyStr !== undefined && this.bindings.delete(keyStr);
63
96
  }
64
97
  set(opts) {
65
98
  const { binding } = opts;
@@ -74,11 +107,34 @@ class BaseContainer extends abstract_1.AbstractContainer {
74
107
  if (this.isCountingResolutions) {
75
108
  this.resolutionCounts.set(binding.key, (this.resolutionCounts.get(binding.key) ?? 0) + 1);
76
109
  }
77
- return binding.getValue(this);
110
+ // The hot path: a cached singleton or a value builds nothing, so it cannot be part of a cycle.
111
+ if (binding.isSettled()) {
112
+ return binding.getValue(this);
113
+ }
114
+ this.resolutionDepth++;
115
+ const isTracked = this.resolutionDepth > CYCLE_CHECK_DEPTH;
116
+ if (isTracked && this.resolvingKeys.has(binding.key)) {
117
+ this.resolutionDepth--;
118
+ throw (0, error_1.getError)({
119
+ message: `Circular dependency | ${[...this.resolvingKeys, binding.key].join(' -> ')}`,
120
+ });
121
+ }
122
+ if (isTracked) {
123
+ this.resolvingKeys.add(binding.key);
124
+ }
125
+ try {
126
+ return binding.getValue(this);
127
+ }
128
+ finally {
129
+ this.resolutionDepth--;
130
+ if (isTracked) {
131
+ this.resolvingKeys.delete(binding.key);
132
+ }
133
+ }
78
134
  }
79
135
  if (!isOptional) {
80
136
  throw (0, error_1.getError)({
81
- message: `Binding key: ${opts.key.toString()} is not bounded in context!`,
137
+ message: `Binding key: ${typeof key === 'object' ? constants_1.BindingKeys.build(key) : String(key)} is not bounded in context!`,
82
138
  });
83
139
  }
84
140
  return undefined;
@@ -129,6 +185,8 @@ class BaseContainer extends abstract_1.AbstractContainer {
129
185
  }
130
186
  reset() {
131
187
  this.bindings.clear();
188
+ this.symbolKeys.clear();
189
+ this.symbolDescriptionCounts.clear();
132
190
  }
133
191
  }
134
192
  exports.BaseContainer = BaseContainer;
@@ -1 +1 @@
1
- {"version":3,"file":"base.js","sourceRoot":"","sources":["../../../../src/modules/container/base.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"base.js","sourceRoot":"","sources":["../../../../src/modules/container/base.ts"],"names":[],"mappings":"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"}
@@ -5,13 +5,20 @@ export declare class Container extends BaseContainer {
5
5
  constructor(opts?: {
6
6
  scope: string;
7
7
  });
8
- /** The class form reads the key the REGISTRATION recorded, so a call-site override and an imperative `application.service(X)` both resolve. */
8
+ /**
9
+ * The class form reads the key the REGISTRATION recorded, so a call-site override and an imperative
10
+ * `application.service(X)` both resolve. `@inject` takes a key or a class; metadata a framework
11
+ * writes may carry both, and then the class wins and the key is the fallback for a class nothing
12
+ * recorded - one bound by hand with `bind({ key }).toClass(X)`. An optional class with neither
13
+ * resolves to `undefined`, as an optional key would.
14
+ */
9
15
  protected resolveBindingKey(opts: {
10
16
  key?: TBindingKey;
11
17
  target?: TInjectTarget;
18
+ isOptional?: boolean;
12
19
  cls: TClass<AnyType>;
13
20
  at: string;
14
- }): TBindingKey;
21
+ }): TBindingKey | undefined;
15
22
  instantiate<T>(cls: TClass<T>): T;
16
23
  }
17
24
  //# sourceMappingURL=container.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"container.d.ts","sourceRoot":"","sources":["../../../../src/modules/container/container.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAE7E,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAEvC,qGAAqG;AACrG,qBAAa,SAAU,SAAQ,aAAa;gBAC9B,IAAI,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE;IAIpC,+IAA+I;IAC/I,SAAS,CAAC,iBAAiB,CAAC,IAAI,EAAE;QAChC,GAAG,CAAC,EAAE,WAAW,CAAC;QAClB,MAAM,CAAC,EAAE,aAAa,CAAC;QACvB,GAAG,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;QACrB,EAAE,EAAE,MAAM,CAAC;KACZ,GAAG,WAAW;IA8BN,WAAW,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC;CAwD3C"}
1
+ {"version":3,"file":"container.d.ts","sourceRoot":"","sources":["../../../../src/modules/container/container.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAE7E,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAEvC,qGAAqG;AACrG,qBAAa,SAAU,SAAQ,aAAa;gBAC9B,IAAI,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE;IAIpC;;;;;;OAMG;IACH,SAAS,CAAC,iBAAiB,CAAC,IAAI,EAAE;QAChC,GAAG,CAAC,EAAE,WAAW,CAAC;QAClB,MAAM,CAAC,EAAE,aAAa,CAAC;QACvB,UAAU,CAAC,EAAE,OAAO,CAAC;QACrB,GAAG,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;QACrB,EAAE,EAAE,MAAM,CAAC;KACZ,GAAG,WAAW,GAAG,SAAS;IAkClB,WAAW,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC;CAyD3C"}
@@ -9,10 +9,16 @@ class Container extends base_1.BaseContainer {
9
9
  constructor(opts) {
10
10
  super({ scope: opts?.scope ?? Container.name });
11
11
  }
12
- /** The class form reads the key the REGISTRATION recorded, so a call-site override and an imperative `application.service(X)` both resolve. */
12
+ /**
13
+ * The class form reads the key the REGISTRATION recorded, so a call-site override and an imperative
14
+ * `application.service(X)` both resolve. `@inject` takes a key or a class; metadata a framework
15
+ * writes may carry both, and then the class wins and the key is the fallback for a class nothing
16
+ * recorded - one bound by hand with `bind({ key }).toClass(X)`. An optional class with neither
17
+ * resolves to `undefined`, as an optional key would.
18
+ */
13
19
  resolveBindingKey(opts) {
14
- const { key, target: declared, cls, at } = opts;
15
- if (key !== undefined) {
20
+ const { key, target: declared, isOptional = false, cls, at } = opts;
21
+ if (declared === undefined && key !== undefined) {
16
22
  return key;
17
23
  }
18
24
  if (declared === undefined) {
@@ -20,13 +26,16 @@ class Container extends base_1.BaseContainer {
20
26
  message: `[${cls.name}] ${at} has neither an @inject key nor a class`,
21
27
  });
22
28
  }
23
- const target = (0, utilities_1.resolveInjectTarget)(declared);
29
+ const target = (0, utilities_1.resolveInjectTarget)({ target: declared });
24
30
  if (target === undefined) {
25
31
  throw (0, error_1.getError)({
26
32
  message: `[${cls.name}] ${at} names a function that did not return a class`,
27
33
  });
28
34
  }
29
- const recorded = this.getMetadataRegistry().getBindingKey({ target });
35
+ const recorded = this.getMetadataRegistry().getBindingKey({ target }) ?? key;
36
+ if (recorded === undefined && isOptional) {
37
+ return undefined;
38
+ }
30
39
  if (recorded === undefined) {
31
40
  throw (0, error_1.getError)({
32
41
  message: `[${cls.name}] ${at} names '${target.name}', which is not registered as an artifact | Decorate it (@service, @repository, ...) or register it on the application before it is injected`,
@@ -47,13 +56,15 @@ class Container extends base_1.BaseContainer {
47
56
  message: `[${cls.name}] Constructor parameter ${index} has no @inject | Every parameter of a container-instantiated class must be decorated - the container cannot supply an undecorated one`,
48
57
  });
49
58
  }
59
+ const isOptional = meta.isOptional ?? false;
50
60
  const key = this.resolveBindingKey({
51
61
  key: meta.key,
52
62
  target: meta.target,
63
+ isOptional,
53
64
  cls,
54
65
  at: `Constructor parameter ${index}`,
55
66
  });
56
- args[meta.index] = this.get({ key, isOptional: meta.isOptional ?? false });
67
+ args[meta.index] = key === undefined ? undefined : this.get({ key, isOptional });
57
68
  }
58
69
  const instance = new cls(...args);
59
70
  const propertyMetadata = registry.getPropertiesMetadata({
@@ -64,17 +75,16 @@ class Container extends base_1.BaseContainer {
64
75
  }
65
76
  const properties = propertyMetadata.entries();
66
77
  for (const [propertyKey, metadata] of properties) {
78
+ const isOptional = metadata.isOptional ?? false;
67
79
  const key = this.resolveBindingKey({
68
80
  key: metadata.bindingKey,
69
81
  target: metadata.target,
82
+ isOptional,
70
83
  cls,
71
84
  at: `Property '${String(propertyKey)}'`,
72
85
  });
73
- const dep = this.get({
74
- key,
75
- isOptional: metadata.isOptional ?? false,
76
- });
77
- instance[propertyKey] = dep;
86
+ instance[propertyKey] =
87
+ key === undefined ? undefined : this.get({ key, isOptional });
78
88
  }
79
89
  return instance;
80
90
  }
@@ -1 +1 @@
1
- {"version":3,"file":"container.js","sourceRoot":"","sources":["../../../../src/modules/container/container.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"container.js","sourceRoot":"","sources":["../../../../src/modules/container/container.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,7 @@
1
1
  "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
2
  Object.defineProperty(exports, "__esModule", { value: true });
6
3
  exports.isApplicationError = exports.fromError = exports.getError = exports.ApplicationError = void 0;
7
- const omit_1 = __importDefault(require("lodash/omit"));
4
+ const utilities_1 = require("../../common/utilities");
8
5
  const message_code_1 = require("./message-code");
9
6
  /** Consumed keys. Everything else rides into `extra`. */
10
7
  const KNOWN_KEYS = [
@@ -35,7 +32,7 @@ class ApplicationError extends Error {
35
32
  this.logLevel = logLevel;
36
33
  // Explicit `extra` wins over swept keys.
37
34
  const merged = {
38
- ...(0, omit_1.default)(opts, KNOWN_KEYS),
35
+ ...(0, utilities_1.omit)({ source: opts, keys: KNOWN_KEYS }),
39
36
  ...extra,
40
37
  };
41
38
  this.extra = Object.keys(merged).length > 0 ? merged : undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"app-error.js","sourceRoot":"","sources":["../../../../src/modules/error/app-error.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"app-error.js","sourceRoot":"","sources":["../../../../src/modules/error/app-error.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../../src/modules/registry/registry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../../src/modules/registry/registry.ts"],"names":[],"mappings":"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"}
@@ -47,8 +47,10 @@ class MetadataRegistry extends base_helper_1.BaseHelper {
47
47
  }
48
48
  setPropertyMetadata(opts) {
49
49
  const { target, propertyName, metadata } = opts;
50
- let properties = this.getPropertiesMetadata({ target });
51
- properties ??= new Map();
50
+ // Copy-on-write, as for constructor injection: the inherited map belongs to the parent class and
51
+ // every sibling subclass reads it.
52
+ const own = Reflect.getOwnMetadata(constants_1.MetadataKeys.PROPERTIES, target.constructor);
53
+ const properties = own ?? new Map(this.getPropertiesMetadata({ target }));
52
54
  properties.set(propertyName, metadata);
53
55
  Reflect.defineMetadata(constants_1.MetadataKeys.PROPERTIES, properties, target.constructor);
54
56
  }
@@ -63,7 +65,9 @@ class MetadataRegistry extends base_helper_1.BaseHelper {
63
65
  }
64
66
  setInjectMetadata(opts) {
65
67
  const { target, index, metadata } = opts;
66
- const injects = Reflect.getMetadata(constants_1.MetadataKeys.INJECT, target) ?? [];
68
+ // Copy-on-write: the inherited list belongs to the parent class and every sibling subclass reads it.
69
+ const own = Reflect.getOwnMetadata(constants_1.MetadataKeys.INJECT, target);
70
+ const injects = own ?? [...(Reflect.getMetadata(constants_1.MetadataKeys.INJECT, target) ?? [])];
67
71
  injects[index] = metadata;
68
72
  Reflect.defineMetadata(constants_1.MetadataKeys.INJECT, injects, target);
69
73
  }
@@ -1 +1 @@
1
- {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../../src/modules/registry/registry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../../src/modules/registry/registry.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
- export * from './base-helper';
2
- export * from './logger';
3
- export * from './types';
4
- export * from './utilities';
1
+ export * from './base-helper.js';
2
+ export * from './logger.js';
3
+ export * from './types.js';
4
+ export * from './utilities.js';
5
5
  //# sourceMappingURL=index.d.ts.map
@@ -1,5 +1,5 @@
1
- export * from './base-helper';
2
- export * from './logger';
3
- export * from './types';
4
- export * from './utilities';
1
+ export * from './base-helper.js';
2
+ export * from './logger.js';
3
+ export * from './types.js';
4
+ export * from './utilities.js';
5
5
  //# sourceMappingURL=index.js.map
@@ -1,10 +1,38 @@
1
- import type { AnyType, TClass, TInjectTarget, TValueOrAsyncResolver, TValueOrResolver } from './types';
1
+ import type { AnyType, TClass, TInjectTarget, TValueOrAsyncResolver, TValueOrResolver } from './types.js';
2
+ /**
3
+ * True for a value carrying nothing: `null`/`undefined`, an empty string, array, `Map`, `Set`, or an
4
+ * object with no own enumerable keys. A number, boolean or function is empty too - it holds no
5
+ * entries.
6
+ *
7
+ * Hand-written rather than `lodash/isEmpty`, and NOT a plain `!value`: `!{}` is `false` while an
8
+ * empty object IS empty, so the two disagree on exactly the case a swap would silently flip.
9
+ */
10
+ export declare const isEmpty: (opts: {
11
+ value: unknown;
12
+ }) => boolean;
13
+ /**
14
+ * A shallow copy without `keys`.
15
+ *
16
+ * Hand-written rather than `lodash/omit`: this package is bundled for browsers, where importing
17
+ * lodash for one function costs 24 KB. Matches lodash on the shapes we pass it - a flat key list,
18
+ * never a nested path.
19
+ */
20
+ export declare const omit: <T extends object, K extends PropertyKey>(opts: {
21
+ source: T;
22
+ keys: readonly K[];
23
+ }) => Omit<T, Extract<K, keyof T>>;
2
24
  /** Tells a CONSTRUCTOR from a RESOLVER via source text - `prototype !== undefined` is true of every non-arrow function. Sound only on ES2020+ output (classes emit as `class`); ES5 bundling breaks it. */
3
25
  export declare const isClass: <T>(target: any) => target is TClass<T>;
4
26
  /** Reads a value-or-resolver. A class constructor is returned as-is; only a plain function is called. */
5
- export declare const resolveValue: <T>(valueOrResolver: TValueOrResolver<T>) => T;
27
+ export declare const resolveValue: <T>(opts: {
28
+ value: TValueOrResolver<T>;
29
+ }) => T;
6
30
  /** `resolveValue` for a resolver that may answer a promise. */
7
- export declare const resolveValueAsync: <T>(valueOrResolver: TValueOrAsyncResolver<T>) => Promise<T>;
31
+ export declare const resolveValueAsync: <T>(opts: {
32
+ value: TValueOrAsyncResolver<T>;
33
+ }) => Promise<T>;
8
34
  /** Reads what `@inject({ target })` named. The function form is called HERE, never at decoration: that is what lets a class reached through an import cycle be named at all. Answers `undefined` when the function hands back something that is not a class. The container resolves synchronously, so there is no async form. */
9
- export declare const resolveInjectTarget: (target: TInjectTarget) => TClass<AnyType> | undefined;
35
+ export declare const resolveInjectTarget: (opts: {
36
+ target: TInjectTarget;
37
+ }) => TClass<AnyType> | undefined;
10
38
  //# sourceMappingURL=utilities.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"utilities.d.ts","sourceRoot":"","sources":["../../../src/common/utilities.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,OAAO,EAEP,MAAM,EACN,aAAa,EAEb,qBAAqB,EACrB,gBAAgB,EACjB,MAAM,SAAS,CAAC;AAEjB,2MAA2M;AAC3M,eAAO,MAAM,OAAO,GAAI,CAAC,EAAE,QAAQ,GAAG,KAAG,MAAM,IAAI,MAAM,CAAC,CAAC,CAM1D,CAAC;AAMF,yGAAyG;AACzG,eAAO,MAAM,YAAY,GAAI,CAAC,EAAE,iBAAiB,gBAAgB,CAAC,CAAC,CAAC,KAAG,CACJ,CAAC;AAOpE,+DAA+D;AAC/D,eAAO,MAAM,iBAAiB,GAAU,CAAC,EACvC,iBAAiB,qBAAqB,CAAC,CAAC,CAAC,KACxC,OAAO,CAAC,CAAC,CAA6E,CAAC;AAE1F,iUAAiU;AACjU,eAAO,MAAM,mBAAmB,GAAI,QAAQ,aAAa,KAAG,MAAM,CAAC,OAAO,CAAC,GAAG,SAG7E,CAAC"}
1
+ {"version":3,"file":"utilities.d.ts","sourceRoot":"","sources":["../../../src/common/utilities.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,OAAO,EAEP,MAAM,EACN,aAAa,EAEb,qBAAqB,EACrB,gBAAgB,EACjB,MAAM,SAAS,CAAC;AAEjB;;;;;;;GAOG;AACH,eAAO,MAAM,OAAO,GAAI,MAAM;IAAE,KAAK,EAAE,OAAO,CAAA;CAAE,KAAG,OAwBlD,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,IAAI,GAAI,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,WAAW,EAAE,MAAM;IAClE,MAAM,EAAE,CAAC,CAAC;IACV,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC;CACpB,KAAG,IAAI,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAe9B,CAAC;AAEF,2MAA2M;AAC3M,eAAO,MAAM,OAAO,GAAI,CAAC,EAAE,QAAQ,GAAG,KAAG,MAAM,IAAI,MAAM,CAAC,CAAC,CAM1D,CAAC;AAMF,yGAAyG;AACzG,eAAO,MAAM,YAAY,GAAI,CAAC,EAAE,MAAM;IAAE,KAAK,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAA;CAAE,KAAG,CAGtE,CAAC;AAOF,+DAA+D;AAC/D,eAAO,MAAM,iBAAiB,GAAU,CAAC,EAAE,MAAM;IAC/C,KAAK,EAAE,qBAAqB,CAAC,CAAC,CAAC,CAAC;CACjC,KAAG,OAAO,CAAC,CAAC,CAGZ,CAAC;AAEF,iUAAiU;AACjU,eAAO,MAAM,mBAAmB,GAAI,MAAM;IACxC,MAAM,EAAE,aAAa,CAAC;CACvB,KAAG,MAAM,CAAC,OAAO,CAAC,GAAG,SAGrB,CAAC"}
@@ -1,3 +1,51 @@
1
+ /**
2
+ * True for a value carrying nothing: `null`/`undefined`, an empty string, array, `Map`, `Set`, or an
3
+ * object with no own enumerable keys. A number, boolean or function is empty too - it holds no
4
+ * entries.
5
+ *
6
+ * Hand-written rather than `lodash/isEmpty`, and NOT a plain `!value`: `!{}` is `false` while an
7
+ * empty object IS empty, so the two disagree on exactly the case a swap would silently flip.
8
+ */
9
+ export const isEmpty = (opts) => {
10
+ const { value } = opts;
11
+ if (value === null || value === undefined) {
12
+ return true;
13
+ }
14
+ // The types that carry a MEANINGFUL length. Duck-typing on `.length` instead would call
15
+ // `{ length: 0 }` empty, which it is not - it has an own key.
16
+ if (typeof value === 'string' || Array.isArray(value) || ArrayBuffer.isView(value)) {
17
+ return value.length === 0;
18
+ }
19
+ if (value instanceof Map || value instanceof Set) {
20
+ return value.size === 0;
21
+ }
22
+ if (typeof value !== 'object') {
23
+ return true;
24
+ }
25
+ // Own keys only: `for...in` would walk the prototype chain and call an object with an inherited
26
+ // property non-empty.
27
+ return Object.keys(value).length === 0;
28
+ };
29
+ /**
30
+ * A shallow copy without `keys`.
31
+ *
32
+ * Hand-written rather than `lodash/omit`: this package is bundled for browsers, where importing
33
+ * lodash for one function costs 24 KB. Matches lodash on the shapes we pass it - a flat key list,
34
+ * never a nested path.
35
+ */
36
+ export const omit = (opts) => {
37
+ const { source, keys } = opts;
38
+ const dropped = new Set(keys);
39
+ const kept = {};
40
+ const entries = Object.entries(source);
41
+ for (const [key, value] of entries) {
42
+ if (dropped.has(key)) {
43
+ continue;
44
+ }
45
+ kept[key] = value;
46
+ }
47
+ return kept;
48
+ };
1
49
  /** Tells a CONSTRUCTOR from a RESOLVER via source text - `prototype !== undefined` is true of every non-arrow function. Sound only on ES2020+ output (classes emit as `class`); ES5 bundling breaks it. */
2
50
  export const isClass = (target) => {
3
51
  if (typeof target !== 'function' || target.prototype === undefined) {
@@ -8,13 +56,19 @@ export const isClass = (target) => {
8
56
  /** A resolver is anything callable that is not a class - a class is a value here, never a factory. */
9
57
  const isResolver = (valueOrResolver) => typeof valueOrResolver === 'function' && !isClass(valueOrResolver);
10
58
  /** Reads a value-or-resolver. A class constructor is returned as-is; only a plain function is called. */
11
- export const resolveValue = (valueOrResolver) => isResolver(valueOrResolver) ? valueOrResolver() : valueOrResolver;
59
+ export const resolveValue = (opts) => {
60
+ const { value } = opts;
61
+ return isResolver(value) ? value() : value;
62
+ };
12
63
  const isAsyncResolver = (valueOrResolver) => typeof valueOrResolver === 'function' && !isClass(valueOrResolver);
13
64
  /** `resolveValue` for a resolver that may answer a promise. */
14
- export const resolveValueAsync = async (valueOrResolver) => (isAsyncResolver(valueOrResolver) ? valueOrResolver() : valueOrResolver);
65
+ export const resolveValueAsync = async (opts) => {
66
+ const { value } = opts;
67
+ return isAsyncResolver(value) ? value() : value;
68
+ };
15
69
  /** Reads what `@inject({ target })` named. The function form is called HERE, never at decoration: that is what lets a class reached through an import cycle be named at all. Answers `undefined` when the function hands back something that is not a class. The container resolves synchronously, so there is no async form. */
16
- export const resolveInjectTarget = (target) => {
17
- const resolved = resolveValue(target);
70
+ export const resolveInjectTarget = (opts) => {
71
+ const resolved = resolveValue({ value: opts.target });
18
72
  return isClass(resolved) ? resolved : undefined;
19
73
  };
20
74
  //# sourceMappingURL=utilities.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"utilities.js","sourceRoot":"","sources":["../../../src/common/utilities.ts"],"names":[],"mappings":"AAUA,2MAA2M;AAC3M,MAAM,CAAC,MAAM,OAAO,GAAG,CAAI,MAAW,EAAuB,EAAE;IAC7D,IAAI,OAAO,MAAM,KAAK,UAAU,IAAI,MAAM,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;QACnE,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;AACtE,CAAC,CAAC;AAEF,sGAAsG;AACtG,MAAM,UAAU,GAAG,CAAI,eAAoC,EAAmC,EAAE,CAC9F,OAAO,eAAe,KAAK,UAAU,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;AAErE,yGAAyG;AACzG,MAAM,CAAC,MAAM,YAAY,GAAG,CAAI,eAAoC,EAAK,EAAE,CACzE,UAAU,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC;AAEpE,MAAM,eAAe,GAAG,CACtB,eAAyC,EACH,EAAE,CACxC,OAAO,eAAe,KAAK,UAAU,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;AAErE,+DAA+D;AAC/D,MAAM,CAAC,MAAM,iBAAiB,GAAG,KAAK,EACpC,eAAyC,EAC7B,EAAE,CAAC,CAAC,eAAe,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC;AAE1F,iUAAiU;AACjU,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,MAAqB,EAA+B,EAAE;IACxF,MAAM,QAAQ,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;IACtC,OAAO,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;AAClD,CAAC,CAAC"}
1
+ {"version":3,"file":"utilities.js","sourceRoot":"","sources":["../../../src/common/utilities.ts"],"names":[],"mappings":"AAUA;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,IAAwB,EAAW,EAAE;IAC3D,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;IAEvB,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QAC1C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,wFAAwF;IACxF,8DAA8D;IAC9D,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;QACnF,OAAQ,KAA4B,CAAC,MAAM,KAAK,CAAC,CAAC;IACpD,CAAC;IAED,IAAI,KAAK,YAAY,GAAG,IAAI,KAAK,YAAY,GAAG,EAAE,CAAC;QACjD,OAAO,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC;IAC1B,CAAC;IAED,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,gGAAgG;IAChG,sBAAsB;IACtB,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC;AACzC,CAAC,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,IAAI,GAAG,CAA0C,IAG7D,EAAgC,EAAE;IACjC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC;IAC9B,MAAM,OAAO,GAAG,IAAI,GAAG,CAAc,IAAI,CAAC,CAAC;IAC3C,MAAM,IAAI,GAA4B,EAAE,CAAC;IAEzC,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACvC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,OAAO,EAAE,CAAC;QACnC,IAAI,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACrB,SAAS;QACX,CAAC;QAED,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IACpB,CAAC;IAED,OAAO,IAAoC,CAAC;AAC9C,CAAC,CAAC;AAEF,2MAA2M;AAC3M,MAAM,CAAC,MAAM,OAAO,GAAG,CAAI,MAAW,EAAuB,EAAE;IAC7D,IAAI,OAAO,MAAM,KAAK,UAAU,IAAI,MAAM,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;QACnE,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;AACtE,CAAC,CAAC;AAEF,sGAAsG;AACtG,MAAM,UAAU,GAAG,CAAI,eAAoC,EAAmC,EAAE,CAC9F,OAAO,eAAe,KAAK,UAAU,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;AAErE,yGAAyG;AACzG,MAAM,CAAC,MAAM,YAAY,GAAG,CAAI,IAAoC,EAAK,EAAE;IACzE,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;IACvB,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;AAC7C,CAAC,CAAC;AAEF,MAAM,eAAe,GAAG,CACtB,eAAyC,EACH,EAAE,CACxC,OAAO,eAAe,KAAK,UAAU,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;AAErE,+DAA+D;AAC/D,MAAM,CAAC,MAAM,iBAAiB,GAAG,KAAK,EAAK,IAE1C,EAAc,EAAE;IACf,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;IACvB,OAAO,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;AAClD,CAAC,CAAC;AAEF,iUAAiU;AACjU,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,IAEnC,EAA+B,EAAE;IAChC,MAAM,QAAQ,GAAG,YAAY,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;IACtD,OAAO,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;AAClD,CAAC,CAAC"}
@@ -1,4 +1,4 @@
1
1
  import 'reflect-metadata';
2
- export * from './common';
3
- export * from './modules';
2
+ export * from './common/index.js';
3
+ export * from './modules/index.js';
4
4
  //# sourceMappingURL=index.d.ts.map
package/dist/esm/index.js CHANGED
@@ -1,8 +1,8 @@
1
1
  import 'reflect-metadata';
2
- import { getError } from './modules/error/app-error';
3
- import { MessageCode } from './modules/error/message-code';
4
- export * from './common';
5
- export * from './modules';
2
+ import { getError } from './modules/error/app-error.js';
3
+ import { MessageCode } from './modules/error/message-code.js';
4
+ export * from './common/index.js';
5
+ export * from './modules/index.js';
6
6
  // Lives in the package entry, the one module every consumer evaluates and the only one
7
7
  // declared in `sideEffects`: a bundler keeps it, so MessageCode throws ApplicationError in a
8
8
  // bundle too.