@codefast/di 0.3.15 → 0.3.16-canary.1

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 (58) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/README.md +4 -1
  3. package/dist/binding-scope.d.mts +2 -0
  4. package/dist/binding-scope.mjs +2 -0
  5. package/dist/binding-select.d.mts +6 -2
  6. package/dist/binding-select.mjs +4 -0
  7. package/dist/binding.d.mts +74 -7
  8. package/dist/binding.mjs +12 -0
  9. package/dist/constraints.d.mts +49 -9
  10. package/dist/constraints.mjs +71 -19
  11. package/dist/constructor-type.d.mts +6 -2
  12. package/dist/container.d.mts +15 -6
  13. package/dist/container.mjs +139 -55
  14. package/dist/decorators/inject.d.mts +27 -3
  15. package/dist/decorators/inject.mjs +28 -11
  16. package/dist/decorators/injectable.d.mts +13 -1
  17. package/dist/decorators/injectable.mjs +24 -14
  18. package/dist/decorators/lifecycle-decorators.d.mts +6 -0
  19. package/dist/decorators/lifecycle-decorators.mjs +9 -0
  20. package/dist/dependency-graph.d.mts +17 -2
  21. package/dist/dependency-graph.mjs +3 -0
  22. package/dist/environment.d.mts +27 -12
  23. package/dist/environment.mjs +12 -0
  24. package/dist/errors.d.mts +69 -8
  25. package/dist/errors.mjs +65 -1
  26. package/dist/graph-adapters/cytoscape.d.mts +12 -0
  27. package/dist/graph-adapters/cytoscape.mjs +3 -0
  28. package/dist/graph-adapters/dot.d.mts +3 -0
  29. package/dist/graph-adapters/dot.mjs +3 -0
  30. package/dist/graph-adapters/reactflow.d.mts +14 -2
  31. package/dist/graph-adapters/reactflow.mjs +3 -0
  32. package/dist/index.d.mts +4 -3
  33. package/dist/index.mjs +4 -3
  34. package/dist/inspector.d.mts +11 -3
  35. package/dist/inspector.mjs +8 -3
  36. package/dist/lifecycle.d.mts +8 -6
  37. package/dist/lifecycle.mjs +48 -52
  38. package/dist/metadata/metadata-keys.d.mts +42 -1
  39. package/dist/metadata/metadata-keys.mjs +32 -1
  40. package/dist/metadata/metadata-reader-token.d.mts +3 -0
  41. package/dist/metadata/metadata-reader-token.mjs +3 -0
  42. package/dist/metadata/metadata-types.d.mts +22 -6
  43. package/dist/metadata/symbol-metadata-reader.d.mts +6 -0
  44. package/dist/metadata/symbol-metadata-reader.mjs +37 -24
  45. package/dist/module.d.mts +25 -1
  46. package/dist/module.mjs +12 -0
  47. package/dist/registry.d.mts +8 -5
  48. package/dist/registry.mjs +38 -42
  49. package/dist/resolve-options.d.mts +4 -0
  50. package/dist/resolve-options.mjs +4 -0
  51. package/dist/resolver.d.mts +23 -8
  52. package/dist/resolver.mjs +67 -43
  53. package/dist/scope.d.mts +3 -0
  54. package/dist/scope.mjs +3 -0
  55. package/dist/token.d.mts +12 -0
  56. package/dist/token.mjs +9 -0
  57. package/dist/types.d.mts +44 -6
  58. package/package.json +11 -5
@@ -4,34 +4,49 @@ import { BindingIdentifier, BindingKind, BindingScope, ConstraintContext, Materi
4
4
  import { Container } from "./container.mjs";
5
5
 
6
6
  //#region src/environment.d.ts
7
+ /**
8
+ * @since 0.3.16-canary.0
9
+ */
7
10
  declare function runWithContainer<Result>(container: Container, fn: () => Result): Result;
11
+ /**
12
+ * @since 0.3.16-canary.0
13
+ */
8
14
  declare function getActiveContainer(): Container | undefined;
15
+ /**
16
+ * @since 0.3.16-canary.0
17
+ */
9
18
  interface ResolverCallbacks {
10
- resolveFromContext<const Value>(token: Token<Value> | Constructor<Value>, path: string[], stack: MaterializationFrame[]): Value;
11
- resolve<const Value>(token: Token<Value> | Constructor<Value>, hint: ResolveOptions | undefined, path: string[], stack: MaterializationFrame[]): Value;
12
- resolveAsyncFromContext<const Value>(token: Token<Value> | Constructor<Value>, path: string[], stack: MaterializationFrame[]): Promise<Value>;
13
- resolveAsync<const Value>(token: Token<Value> | Constructor<Value>, hint: ResolveOptions | undefined, path: string[], stack: MaterializationFrame[]): Promise<Value>;
14
- resolveOptional<const Value>(token: Token<Value> | Constructor<Value>, hint: ResolveOptions | undefined, path: string[], stack: MaterializationFrame[]): Value | undefined;
15
- resolveOptionalAsync<const Value>(token: Token<Value> | Constructor<Value>, hint: ResolveOptions | undefined, path: string[], stack: MaterializationFrame[]): Promise<Value | undefined>;
16
- resolveAll<const Value>(token: Token<Value> | Constructor<Value>, hint: ResolveOptions | undefined, path: string[], stack: MaterializationFrame[]): Value[];
17
- resolveAllAsync<const Value>(token: Token<Value> | Constructor<Value>, hint: ResolveOptions | undefined, path: string[], stack: MaterializationFrame[]): Promise<Value[]>;
19
+ resolveFromContext<const Value>(token: Token<Value> | Constructor<Value>, path: Array<string>, stack: Array<MaterializationFrame>): Value;
20
+ resolve<const Value>(token: Token<Value> | Constructor<Value>, hint: ResolveOptions | undefined, path: Array<string>, stack: Array<MaterializationFrame>): Value;
21
+ resolveAsyncFromContext<const Value>(token: Token<Value> | Constructor<Value>, path: Array<string>, stack: Array<MaterializationFrame>): Promise<Value>;
22
+ resolveAsync<const Value>(token: Token<Value> | Constructor<Value>, hint: ResolveOptions | undefined, path: Array<string>, stack: Array<MaterializationFrame>): Promise<Value>;
23
+ resolveOptional<const Value>(token: Token<Value> | Constructor<Value>, hint: ResolveOptions | undefined, path: Array<string>, stack: Array<MaterializationFrame>): Value | undefined;
24
+ resolveOptionalAsync<const Value>(token: Token<Value> | Constructor<Value>, hint: ResolveOptions | undefined, path: Array<string>, stack: Array<MaterializationFrame>): Promise<Value | undefined>;
25
+ resolveAll<const Value>(token: Token<Value> | Constructor<Value>, hint: ResolveOptions | undefined, path: Array<string>, stack: Array<MaterializationFrame>): Array<Value>;
26
+ resolveAllAsync<const Value>(token: Token<Value> | Constructor<Value>, hint: ResolveOptions | undefined, path: Array<string>, stack: Array<MaterializationFrame>): Promise<Array<Value>>;
18
27
  }
28
+ /**
29
+ * @since 0.3.16-canary.0
30
+ */
19
31
  declare class DefaultResolutionContext implements ResolutionContext {
20
32
  private _resolver;
21
33
  private _resolutionPath;
22
34
  private _materializationStack;
23
35
  private _currentHint;
24
- constructor(resolver: ResolverCallbacks, resolutionPath: string[], materializationStack: MaterializationFrame[], currentHint: ResolveOptions | undefined);
36
+ constructor(resolver: ResolverCallbacks, resolutionPath: Array<string>, materializationStack: Array<MaterializationFrame>, currentHint: ResolveOptions | undefined);
25
37
  private _graph;
26
38
  get graph(): ConstraintContext;
27
- reset(resolver: ResolverCallbacks, resolutionPath: string[], materializationStack: MaterializationFrame[], currentHint: ResolveOptions | undefined): void;
39
+ reset(resolver: ResolverCallbacks, resolutionPath: Array<string>, materializationStack: Array<MaterializationFrame>, currentHint: ResolveOptions | undefined): void;
28
40
  resolve<const Value>(token: Token<Value> | Constructor<Value>, hint?: ResolveOptions): Value;
29
41
  resolveAsync<const Value>(token: Token<Value> | Constructor<Value>, hint?: ResolveOptions): Promise<Value>;
30
42
  resolveOptional<const Value>(token: Token<Value> | Constructor<Value>, hint?: ResolveOptions): Value | undefined;
31
43
  resolveOptionalAsync<const Value>(token: Token<Value> | Constructor<Value>, hint?: ResolveOptions): Promise<Value | undefined>;
32
- resolveAll<const Value>(token: Token<Value> | Constructor<Value>, hint?: ResolveOptions): Value[];
33
- resolveAllAsync<const Value>(token: Token<Value> | Constructor<Value>, hint?: ResolveOptions): Promise<Value[]>;
44
+ resolveAll<const Value>(token: Token<Value> | Constructor<Value>, hint?: ResolveOptions): Array<Value>;
45
+ resolveAllAsync<const Value>(token: Token<Value> | Constructor<Value>, hint?: ResolveOptions): Promise<Array<Value>>;
34
46
  }
47
+ /**
48
+ * @since 0.3.16-canary.0
49
+ */
35
50
  declare function buildMaterializationFrame(tokenName: string, scope: BindingScope, bindingId: BindingIdentifier, kind: BindingKind, slot: {
36
51
  name: string | undefined;
37
52
  tags: ReadonlyArray<readonly [string, unknown]>;
@@ -1,5 +1,8 @@
1
1
  //#region src/environment.ts
2
2
  let _activeContainer;
3
+ /**
4
+ * @since 0.3.16-canary.0
5
+ */
3
6
  function runWithContainer(container, fn) {
4
7
  const prev = _activeContainer;
5
8
  _activeContainer = container;
@@ -9,9 +12,15 @@ function runWithContainer(container, fn) {
9
12
  _activeContainer = prev;
10
13
  }
11
14
  }
15
+ /**
16
+ * @since 0.3.16-canary.0
17
+ */
12
18
  function getActiveContainer() {
13
19
  return _activeContainer;
14
20
  }
21
+ /**
22
+ * @since 0.3.16-canary.0
23
+ */
15
24
  var DefaultResolutionContext = class {
16
25
  _resolver;
17
26
  _resolutionPath;
@@ -73,6 +82,9 @@ var DefaultConstraintContext = class {
73
82
  return this._ancestors;
74
83
  }
75
84
  };
85
+ /**
86
+ * @since 0.3.16-canary.0
87
+ */
76
88
  function buildMaterializationFrame(tokenName, scope, bindingId, kind, slot) {
77
89
  return {
78
90
  tokenName,
package/dist/errors.d.mts CHANGED
@@ -1,92 +1,153 @@
1
1
  import { BindingIdentifier, BindingScope, ResolveOptions } from "./types.mjs";
2
2
 
3
3
  //#region src/errors.d.ts
4
+ /**
5
+ * @since 0.3.16-canary.0
6
+ */
4
7
  declare abstract class DiError extends Error {
5
8
  abstract readonly code: string;
6
9
  constructor(message: string);
7
10
  }
11
+ /**
12
+ * @since 0.3.16-canary.0
13
+ */
8
14
  declare class InternalError extends DiError {
9
15
  readonly code = "INTERNAL_ERROR";
10
16
  constructor(message: string);
11
17
  }
18
+ /**
19
+ * @since 0.3.16-canary.0
20
+ */
12
21
  declare class TokenNotBoundError extends DiError {
13
22
  readonly code = "TOKEN_NOT_BOUND";
14
23
  readonly tokenName: string;
15
24
  constructor(tokenName: string);
16
25
  }
26
+ /**
27
+ * @since 0.3.16-canary.0
28
+ */
17
29
  declare class NoMatchingBindingError extends DiError {
18
30
  readonly code = "NO_MATCHING_BINDING";
19
31
  readonly tokenName: string;
20
32
  readonly hint: ResolveOptions;
21
- readonly availableSlots: string[];
22
- constructor(tokenName: string, hint: ResolveOptions, availableSlots: string[]);
33
+ readonly availableSlots: Array<string>;
34
+ constructor(tokenName: string, hint: ResolveOptions, availableSlots: Array<string>);
23
35
  }
36
+ /**
37
+ * @since 0.3.16-canary.0
38
+ */
24
39
  declare class AmbiguousBindingError extends DiError {
25
40
  readonly code = "AMBIGUOUS_BINDING";
26
41
  readonly tokenName: string;
27
- readonly candidateIds: readonly BindingIdentifier[];
28
- constructor(tokenName: string, candidateIds: readonly BindingIdentifier[]);
42
+ readonly candidateIds: ReadonlyArray<BindingIdentifier>;
43
+ constructor(tokenName: string, candidateIds: ReadonlyArray<BindingIdentifier>);
29
44
  }
45
+ /**
46
+ * @since 0.3.16-canary.0
47
+ */
30
48
  declare class CircularDependencyError extends DiError {
31
49
  readonly code = "CIRCULAR_DEPENDENCY";
32
- readonly cycle: string[];
33
- constructor(cycle: string[]);
50
+ readonly cycle: Array<string>;
51
+ constructor(cycle: Array<string>);
34
52
  }
53
+ /**
54
+ * @since 0.3.16-canary.0
55
+ */
35
56
  declare class AsyncResolutionError extends DiError {
36
57
  readonly code = "ASYNC_RESOLUTION";
37
58
  readonly tokenName: string;
38
59
  readonly asyncSourceToken: string;
39
60
  constructor(tokenName: string, asyncSourceToken: string);
40
61
  }
62
+ /**
63
+ * @since 0.3.16-canary.0
64
+ */
41
65
  declare class AsyncDeactivationError extends DiError {
42
66
  readonly code = "ASYNC_DEACTIVATION";
43
67
  readonly tokenName: string;
44
68
  constructor(tokenName: string);
45
69
  }
70
+ /**
71
+ * @since 0.3.16-canary.0
72
+ */
46
73
  interface ScopeViolationDetails {
47
74
  readonly consumerToken: string;
48
75
  readonly consumerScope: BindingScope;
49
76
  readonly dependencyToken: string;
50
77
  readonly dependencyScope: BindingScope;
51
- readonly path: string[];
78
+ readonly path: Array<string>;
52
79
  }
80
+ /**
81
+ * @since 0.3.16-canary.0
82
+ */
53
83
  declare class ScopeViolationError extends DiError {
54
84
  readonly code = "SCOPE_VIOLATION";
55
85
  readonly details: ScopeViolationDetails;
56
86
  constructor(details: ScopeViolationDetails);
57
87
  }
88
+ /**
89
+ * @since 0.3.16-canary.0
90
+ */
58
91
  declare class MissingMetadataError extends DiError {
59
92
  readonly code = "MISSING_METADATA";
60
93
  readonly targetName: string;
61
94
  constructor(targetName: string);
62
95
  }
96
+ /**
97
+ * @since 0.3.16-canary.0
98
+ */
63
99
  declare class AsyncModuleLoadError extends DiError {
64
100
  readonly code = "ASYNC_MODULE_LOAD";
65
101
  readonly moduleName: string;
66
102
  constructor(moduleName: string);
67
103
  }
104
+ /**
105
+ * @since 0.3.16-canary.0
106
+ */
68
107
  declare class SyncDisposalNotSupportedError extends DiError {
69
108
  readonly code = "SYNC_DISPOSAL_NOT_SUPPORTED";
70
109
  constructor();
71
110
  }
111
+ /**
112
+ * @since 0.3.16-canary.0
113
+ */
72
114
  declare class MissingScopeContextError extends DiError {
73
115
  readonly code = "MISSING_SCOPE_CONTEXT";
74
116
  readonly tokenName: string;
75
117
  constructor(tokenName: string);
76
118
  }
119
+ /**
120
+ * @since 0.3.16-canary.0
121
+ */
77
122
  declare class MissingContainerContextError extends DiError {
78
123
  readonly code = "MISSING_CONTAINER_CONTEXT";
79
124
  readonly targetName: string;
80
125
  constructor(targetName: string);
81
126
  }
127
+ /**
128
+ * @since 0.3.16-canary.0
129
+ */
82
130
  declare class RebindUnboundTokenError extends DiError {
83
131
  readonly code = "REBIND_UNBOUND_TOKEN";
84
132
  readonly tokenName: string;
85
133
  constructor(tokenName: string);
86
134
  }
135
+ /**
136
+ * @since 0.3.16-canary.0
137
+ */
87
138
  declare class DisposedContainerError extends DiError {
88
139
  readonly code = "DISPOSED_CONTAINER";
89
140
  constructor();
90
141
  }
142
+ /**
143
+ * @since 0.3.16-canary.0
144
+ */
145
+ declare class AsyncActivationError extends DiError {
146
+ readonly code = "ASYNC_ACTIVATION";
147
+ readonly tokenName: string;
148
+ readonly hookKind: "postConstruct" | "onActivation";
149
+ readonly methodName: string | undefined;
150
+ constructor(tokenName: string, hookKind: "postConstruct" | "onActivation", methodName?: string);
151
+ }
91
152
  //#endregion
92
- export { AmbiguousBindingError, AsyncDeactivationError, AsyncModuleLoadError, AsyncResolutionError, CircularDependencyError, DiError, DisposedContainerError, InternalError, MissingContainerContextError, MissingMetadataError, MissingScopeContextError, NoMatchingBindingError, RebindUnboundTokenError, ScopeViolationDetails, ScopeViolationError, SyncDisposalNotSupportedError, TokenNotBoundError };
153
+ export { AmbiguousBindingError, AsyncActivationError, AsyncDeactivationError, AsyncModuleLoadError, AsyncResolutionError, CircularDependencyError, DiError, DisposedContainerError, InternalError, MissingContainerContextError, MissingMetadataError, MissingScopeContextError, NoMatchingBindingError, RebindUnboundTokenError, ScopeViolationDetails, ScopeViolationError, SyncDisposalNotSupportedError, TokenNotBoundError };
package/dist/errors.mjs CHANGED
@@ -1,16 +1,25 @@
1
1
  //#region src/errors.ts
2
+ /**
3
+ * @since 0.3.16-canary.0
4
+ */
2
5
  var DiError = class extends Error {
3
6
  constructor(message) {
4
7
  super(message);
5
8
  this.name = this.constructor.name;
6
9
  }
7
10
  };
11
+ /**
12
+ * @since 0.3.16-canary.0
13
+ */
8
14
  var InternalError = class extends DiError {
9
15
  code = "INTERNAL_ERROR";
10
16
  constructor(message) {
11
17
  super(message);
12
18
  }
13
19
  };
20
+ /**
21
+ * @since 0.3.16-canary.0
22
+ */
14
23
  var TokenNotBoundError = class extends DiError {
15
24
  code = "TOKEN_NOT_BOUND";
16
25
  tokenName;
@@ -19,6 +28,9 @@ var TokenNotBoundError = class extends DiError {
19
28
  this.tokenName = tokenName;
20
29
  }
21
30
  };
31
+ /**
32
+ * @since 0.3.16-canary.0
33
+ */
22
34
  var NoMatchingBindingError = class extends DiError {
23
35
  code = "NO_MATCHING_BINDING";
24
36
  tokenName;
@@ -33,6 +45,9 @@ var NoMatchingBindingError = class extends DiError {
33
45
  this.availableSlots = availableSlots;
34
46
  }
35
47
  };
48
+ /**
49
+ * @since 0.3.16-canary.0
50
+ */
36
51
  var AmbiguousBindingError = class extends DiError {
37
52
  code = "AMBIGUOUS_BINDING";
38
53
  tokenName;
@@ -43,6 +58,9 @@ var AmbiguousBindingError = class extends DiError {
43
58
  this.candidateIds = candidateIds;
44
59
  }
45
60
  };
61
+ /**
62
+ * @since 0.3.16-canary.0
63
+ */
46
64
  var CircularDependencyError = class extends DiError {
47
65
  code = "CIRCULAR_DEPENDENCY";
48
66
  cycle;
@@ -51,6 +69,9 @@ var CircularDependencyError = class extends DiError {
51
69
  this.cycle = cycle;
52
70
  }
53
71
  };
72
+ /**
73
+ * @since 0.3.16-canary.0
74
+ */
54
75
  var AsyncResolutionError = class extends DiError {
55
76
  code = "ASYNC_RESOLUTION";
56
77
  tokenName;
@@ -61,6 +82,9 @@ var AsyncResolutionError = class extends DiError {
61
82
  this.asyncSourceToken = asyncSourceToken;
62
83
  }
63
84
  };
85
+ /**
86
+ * @since 0.3.16-canary.0
87
+ */
64
88
  var AsyncDeactivationError = class extends DiError {
65
89
  code = "ASYNC_DEACTIVATION";
66
90
  tokenName;
@@ -69,6 +93,9 @@ var AsyncDeactivationError = class extends DiError {
69
93
  this.tokenName = tokenName;
70
94
  }
71
95
  };
96
+ /**
97
+ * @since 0.3.16-canary.0
98
+ */
72
99
  var ScopeViolationError = class extends DiError {
73
100
  code = "SCOPE_VIOLATION";
74
101
  details;
@@ -77,6 +104,9 @@ var ScopeViolationError = class extends DiError {
77
104
  this.details = details;
78
105
  }
79
106
  };
107
+ /**
108
+ * @since 0.3.16-canary.0
109
+ */
80
110
  var MissingMetadataError = class extends DiError {
81
111
  code = "MISSING_METADATA";
82
112
  targetName;
@@ -85,6 +115,9 @@ var MissingMetadataError = class extends DiError {
85
115
  this.targetName = targetName;
86
116
  }
87
117
  };
118
+ /**
119
+ * @since 0.3.16-canary.0
120
+ */
88
121
  var AsyncModuleLoadError = class extends DiError {
89
122
  code = "ASYNC_MODULE_LOAD";
90
123
  moduleName;
@@ -93,12 +126,18 @@ var AsyncModuleLoadError = class extends DiError {
93
126
  this.moduleName = moduleName;
94
127
  }
95
128
  };
129
+ /**
130
+ * @since 0.3.16-canary.0
131
+ */
96
132
  var SyncDisposalNotSupportedError = class extends DiError {
97
133
  code = "SYNC_DISPOSAL_NOT_SUPPORTED";
98
134
  constructor() {
99
135
  super("Container cannot be disposed synchronously because onDeactivation handlers may be async. Use `await using` or call container.dispose() explicitly.");
100
136
  }
101
137
  };
138
+ /**
139
+ * @since 0.3.16-canary.0
140
+ */
102
141
  var MissingScopeContextError = class extends DiError {
103
142
  code = "MISSING_SCOPE_CONTEXT";
104
143
  tokenName;
@@ -107,6 +146,9 @@ var MissingScopeContextError = class extends DiError {
107
146
  this.tokenName = tokenName;
108
147
  }
109
148
  };
149
+ /**
150
+ * @since 0.3.16-canary.0
151
+ */
110
152
  var MissingContainerContextError = class extends DiError {
111
153
  code = "MISSING_CONTAINER_CONTEXT";
112
154
  targetName;
@@ -115,6 +157,9 @@ var MissingContainerContextError = class extends DiError {
115
157
  this.targetName = targetName;
116
158
  }
117
159
  };
160
+ /**
161
+ * @since 0.3.16-canary.0
162
+ */
118
163
  var RebindUnboundTokenError = class extends DiError {
119
164
  code = "REBIND_UNBOUND_TOKEN";
120
165
  tokenName;
@@ -123,11 +168,30 @@ var RebindUnboundTokenError = class extends DiError {
123
168
  this.tokenName = tokenName;
124
169
  }
125
170
  };
171
+ /**
172
+ * @since 0.3.16-canary.0
173
+ */
126
174
  var DisposedContainerError = class extends DiError {
127
175
  code = "DISPOSED_CONTAINER";
128
176
  constructor() {
129
177
  super("Cannot perform operations on a disposed container.");
130
178
  }
131
179
  };
180
+ /**
181
+ * @since 0.3.16-canary.0
182
+ */
183
+ var AsyncActivationError = class extends DiError {
184
+ code = "ASYNC_ACTIVATION";
185
+ tokenName;
186
+ hookKind;
187
+ methodName;
188
+ constructor(tokenName, hookKind, methodName) {
189
+ const detail = hookKind === "postConstruct" ? `@postConstruct method '${methodName ?? ""}' returned a Promise` : `onActivation for '${tokenName}' returned a Promise`;
190
+ super(`${detail}. Use resolveAsync() instead.`);
191
+ this.tokenName = tokenName;
192
+ this.hookKind = hookKind;
193
+ this.methodName = methodName;
194
+ }
195
+ };
132
196
  //#endregion
133
- export { AmbiguousBindingError, AsyncDeactivationError, AsyncModuleLoadError, AsyncResolutionError, CircularDependencyError, DiError, DisposedContainerError, InternalError, MissingContainerContextError, MissingMetadataError, MissingScopeContextError, NoMatchingBindingError, RebindUnboundTokenError, ScopeViolationError, SyncDisposalNotSupportedError, TokenNotBoundError };
197
+ export { AmbiguousBindingError, AsyncActivationError, AsyncDeactivationError, AsyncModuleLoadError, AsyncResolutionError, CircularDependencyError, DiError, DisposedContainerError, InternalError, MissingContainerContextError, MissingMetadataError, MissingScopeContextError, NoMatchingBindingError, RebindUnboundTokenError, ScopeViolationError, SyncDisposalNotSupportedError, TokenNotBoundError };
@@ -1,6 +1,9 @@
1
1
  import { ContainerGraphJson } from "../dependency-graph.mjs";
2
2
 
3
3
  //#region src/graph-adapters/cytoscape.d.ts
4
+ /**
5
+ * @since 0.3.16-canary.0
6
+ */
4
7
  interface CytoscapeNode {
5
8
  data: {
6
9
  id: string;
@@ -10,6 +13,9 @@ interface CytoscapeNode {
10
13
  fromParent: boolean;
11
14
  };
12
15
  }
16
+ /**
17
+ * @since 0.3.16-canary.0
18
+ */
13
19
  interface CytoscapeEdge {
14
20
  data: {
15
21
  id: string;
@@ -18,7 +24,13 @@ interface CytoscapeEdge {
18
24
  label?: string;
19
25
  };
20
26
  }
27
+ /**
28
+ * @since 0.3.16-canary.0
29
+ */
21
30
  type CytoscapeElements = Array<CytoscapeNode | CytoscapeEdge>;
31
+ /**
32
+ * @since 0.3.16-canary.0
33
+ */
22
34
  declare function toCytoscapeGraph(graph: ContainerGraphJson): CytoscapeElements;
23
35
  //#endregion
24
36
  export { CytoscapeEdge, CytoscapeElements, CytoscapeNode, toCytoscapeGraph };
@@ -1,4 +1,7 @@
1
1
  //#region src/graph-adapters/cytoscape.ts
2
+ /**
3
+ * @since 0.3.16-canary.0
4
+ */
2
5
  function toCytoscapeGraph(graph) {
3
6
  const elements = [];
4
7
  for (const node of graph.nodes) elements.push({ data: {
@@ -1,6 +1,9 @@
1
1
  import { ContainerGraphJson } from "../dependency-graph.mjs";
2
2
 
3
3
  //#region src/graph-adapters/dot.d.ts
4
+ /**
5
+ * @since 0.3.16-canary.0
6
+ */
4
7
  declare function toDotGraph(graph: ContainerGraphJson): string;
5
8
  //#endregion
6
9
  export { toDotGraph };
@@ -1,4 +1,7 @@
1
1
  //#region src/graph-adapters/dot.ts
2
+ /**
3
+ * @since 0.3.16-canary.0
4
+ */
2
5
  function toDotGraph(graph) {
3
6
  const lines = ["digraph DI {", " rankdir=TB;"];
4
7
  for (const node of graph.nodes) {
@@ -1,6 +1,9 @@
1
1
  import { ContainerGraphJson } from "../dependency-graph.mjs";
2
2
 
3
3
  //#region src/graph-adapters/reactflow.d.ts
4
+ /**
5
+ * @since 0.3.16-canary.0
6
+ */
4
7
  interface ReactFlowNode {
5
8
  id: string;
6
9
  data: {
@@ -14,16 +17,25 @@ interface ReactFlowNode {
14
17
  y: number;
15
18
  };
16
19
  }
20
+ /**
21
+ * @since 0.3.16-canary.0
22
+ */
17
23
  interface ReactFlowEdge {
18
24
  id: string;
19
25
  source: string;
20
26
  target: string;
21
27
  label?: string;
22
28
  }
29
+ /**
30
+ * @since 0.3.16-canary.0
31
+ */
23
32
  interface ReactFlowGraph {
24
- nodes: ReactFlowNode[];
25
- edges: ReactFlowEdge[];
33
+ nodes: Array<ReactFlowNode>;
34
+ edges: Array<ReactFlowEdge>;
26
35
  }
36
+ /**
37
+ * @since 0.3.16-canary.0
38
+ */
27
39
  declare function toReactFlowGraph(graph: ContainerGraphJson): ReactFlowGraph;
28
40
  //#endregion
29
41
  export { ReactFlowEdge, ReactFlowGraph, ReactFlowNode, toReactFlowGraph };
@@ -1,4 +1,7 @@
1
1
  //#region src/graph-adapters/reactflow.ts
2
+ /**
3
+ * @since 0.3.16-canary.0
4
+ */
2
5
  function toReactFlowGraph(graph) {
3
6
  return {
4
7
  nodes: graph.nodes.map((node, idx) => ({
package/dist/index.d.mts CHANGED
@@ -4,14 +4,15 @@ import { ActivationHandler, BindingIdentifier, BindingKind, BindingScope, Constr
4
4
  import { InjectOptions, InjectableDependency, InjectionDescriptor, inject, injectAll, isInjectionDescriptor, optional } from "./decorators/inject.mjs";
5
5
  import { AliasBindingBuilder, BindToBuilder, BindingBuilder, ConstantBindingBuilder, ScopedBindingBuilder, SingletonBindingBuilder, SingletonLifecycleBuilder, TransientBindingBuilder } from "./binding.mjs";
6
6
  import { effectiveBindingScope } from "./binding-scope.mjs";
7
- import { AsyncModule, AsyncModuleBuilder, Module, ModuleBuilder, SyncModule } from "./module.mjs";
7
+ import { whenAnyAncestorIs, whenAnyAncestorNamed, whenAnyAncestorTagged, whenAnyAncestorTaggedAll, whenNoAncestorIs, whenNoParentIs, whenParentIs, whenParentNamed, whenParentTagged, whenParentTaggedAll } from "./constraints.mjs";
8
+ import { AsyncModule, AsyncModuleBuilder, Module, ModuleBuilder, SyncModule, isSyncModule } from "./module.mjs";
8
9
  import { BindingSnapshot, ContainerSnapshot } from "./inspector.mjs";
9
10
  import { MetadataReader, MutableLifecycleMetadata } from "./metadata/metadata-types.mjs";
10
11
  import { ContainerGraphJson, GraphEdge, GraphNode, GraphOptions } from "./dependency-graph.mjs";
11
12
  import { AutoRegisterRegistry, InjectableOptions, createAutoRegisterRegistry, injectable } from "./decorators/injectable.mjs";
12
13
  import { Container, ContainerStatic } from "./container.mjs";
13
14
  import { postConstruct, preDestroy } from "./decorators/lifecycle-decorators.mjs";
14
- import { AmbiguousBindingError, AsyncDeactivationError, AsyncModuleLoadError, AsyncResolutionError, CircularDependencyError, DiError, DisposedContainerError, InternalError, MissingContainerContextError, MissingMetadataError, MissingScopeContextError, NoMatchingBindingError, RebindUnboundTokenError, ScopeViolationDetails, ScopeViolationError, SyncDisposalNotSupportedError, TokenNotBoundError } from "./errors.mjs";
15
+ import { AmbiguousBindingError, AsyncActivationError, AsyncDeactivationError, AsyncModuleLoadError, AsyncResolutionError, CircularDependencyError, DiError, DisposedContainerError, InternalError, MissingContainerContextError, MissingMetadataError, MissingScopeContextError, NoMatchingBindingError, RebindUnboundTokenError, ScopeViolationDetails, ScopeViolationError, SyncDisposalNotSupportedError, TokenNotBoundError } from "./errors.mjs";
15
16
  import { injectableSlotToResolveOptions, slotKeyToResolveOptions } from "./resolve-options.mjs";
16
17
  import { MetadataReaderToken } from "./metadata/metadata-reader-token.mjs";
17
- export { type ActivationHandler, type AliasBindingBuilder, AmbiguousBindingError, AsyncDeactivationError, AsyncModule, type AsyncModuleBuilder, AsyncModuleLoadError, AsyncResolutionError, type AutoRegisterRegistry, type BindToBuilder, type BindingBuilder, type BindingIdentifier, type BindingKind, type BindingScope, type BindingSnapshot, CircularDependencyError, type ConstantBindingBuilder, type ConstraintContext, type Constructor, Container, type ContainerGraphJson, type Container as ContainerInterface, type ContainerSnapshot, type ContainerStatic, type DeactivationHandler, type DependencyKey, DiError, DisposedContainerError, type GraphEdge, type GraphNode, type GraphOptions, type InjectOptions, type InjectableDependency, type InjectableOptions, type InjectionDescriptor, InternalError, type MaterializationFrame, type MetadataReader, MetadataReaderToken, MissingContainerContextError, MissingMetadataError, MissingScopeContextError, Module, type ModuleBuilder, type MutableLifecycleMetadata, NoMatchingBindingError, RebindUnboundTokenError, type ResolutionContext, type ResolveOptions, type ScopeViolationDetails, ScopeViolationError, type ScopedBindingBuilder, type SingletonBindingBuilder, type SingletonLifecycleBuilder, SyncDisposalNotSupportedError, SyncModule, type Token, TokenNotBoundError, type TokenValue, type TransientBindingBuilder, createAutoRegisterRegistry, effectiveBindingScope, inject, injectAll, injectable, injectableSlotToResolveOptions, isInjectionDescriptor, isToken, optional, postConstruct, preDestroy, slotKeyToResolveOptions, token, tokenName };
18
+ export { type ActivationHandler, type AliasBindingBuilder, AmbiguousBindingError, AsyncActivationError, AsyncDeactivationError, AsyncModule, type AsyncModuleBuilder, AsyncModuleLoadError, AsyncResolutionError, type AutoRegisterRegistry, type BindToBuilder, type BindingBuilder, type BindingIdentifier, type BindingKind, type BindingScope, type BindingSnapshot, CircularDependencyError, type ConstantBindingBuilder, type ConstraintContext, type Constructor, Container, type ContainerGraphJson, type Container as ContainerInterface, type ContainerSnapshot, type ContainerStatic, type DeactivationHandler, type DependencyKey, DiError, DisposedContainerError, type GraphEdge, type GraphNode, type GraphOptions, type InjectOptions, type InjectableDependency, type InjectableOptions, type InjectionDescriptor, InternalError, type MaterializationFrame, type MetadataReader, MetadataReaderToken, MissingContainerContextError, MissingMetadataError, MissingScopeContextError, Module, type ModuleBuilder, type MutableLifecycleMetadata, NoMatchingBindingError, RebindUnboundTokenError, type ResolutionContext, type ResolveOptions, type ScopeViolationDetails, ScopeViolationError, type ScopedBindingBuilder, type SingletonBindingBuilder, type SingletonLifecycleBuilder, SyncDisposalNotSupportedError, SyncModule, type Token, TokenNotBoundError, type TokenValue, type TransientBindingBuilder, createAutoRegisterRegistry, effectiveBindingScope, inject, injectAll, injectable, injectableSlotToResolveOptions, isInjectionDescriptor, isSyncModule, isToken, optional, postConstruct, preDestroy, slotKeyToResolveOptions, token, tokenName, whenAnyAncestorIs, whenAnyAncestorNamed, whenAnyAncestorTagged, whenAnyAncestorTaggedAll, whenNoAncestorIs, whenNoParentIs, whenParentIs, whenParentNamed, whenParentTagged, whenParentTaggedAll };
package/dist/index.mjs CHANGED
@@ -1,11 +1,12 @@
1
1
  import { effectiveBindingScope } from "./binding-scope.mjs";
2
- import { AmbiguousBindingError, AsyncDeactivationError, AsyncModuleLoadError, AsyncResolutionError, CircularDependencyError, DiError, DisposedContainerError, InternalError, MissingContainerContextError, MissingMetadataError, MissingScopeContextError, NoMatchingBindingError, RebindUnboundTokenError, ScopeViolationError, SyncDisposalNotSupportedError, TokenNotBoundError } from "./errors.mjs";
2
+ import { AmbiguousBindingError, AsyncActivationError, AsyncDeactivationError, AsyncModuleLoadError, AsyncResolutionError, CircularDependencyError, DiError, DisposedContainerError, InternalError, MissingContainerContextError, MissingMetadataError, MissingScopeContextError, NoMatchingBindingError, RebindUnboundTokenError, ScopeViolationError, SyncDisposalNotSupportedError, TokenNotBoundError } from "./errors.mjs";
3
3
  import { isToken, token, tokenName } from "./token.mjs";
4
+ import { whenAnyAncestorIs, whenAnyAncestorNamed, whenAnyAncestorTagged, whenAnyAncestorTaggedAll, whenNoAncestorIs, whenNoParentIs, whenParentIs, whenParentNamed, whenParentTagged, whenParentTaggedAll } from "./constraints.mjs";
4
5
  import { injectableSlotToResolveOptions, slotKeyToResolveOptions } from "./resolve-options.mjs";
5
6
  import { MetadataReaderToken } from "./metadata/metadata-reader-token.mjs";
6
7
  import { inject, injectAll, isInjectionDescriptor, optional } from "./decorators/inject.mjs";
7
- import { AsyncModule, Module, SyncModule } from "./module.mjs";
8
+ import { AsyncModule, Module, SyncModule, isSyncModule } from "./module.mjs";
8
9
  import { Container } from "./container.mjs";
9
10
  import { createAutoRegisterRegistry, injectable } from "./decorators/injectable.mjs";
10
11
  import { postConstruct, preDestroy } from "./decorators/lifecycle-decorators.mjs";
11
- export { AmbiguousBindingError, AsyncDeactivationError, AsyncModule, AsyncModuleLoadError, AsyncResolutionError, CircularDependencyError, Container, DiError, DisposedContainerError, InternalError, MetadataReaderToken, MissingContainerContextError, MissingMetadataError, MissingScopeContextError, Module, NoMatchingBindingError, RebindUnboundTokenError, ScopeViolationError, SyncDisposalNotSupportedError, SyncModule, TokenNotBoundError, createAutoRegisterRegistry, effectiveBindingScope, inject, injectAll, injectable, injectableSlotToResolveOptions, isInjectionDescriptor, isToken, optional, postConstruct, preDestroy, slotKeyToResolveOptions, token, tokenName };
12
+ export { AmbiguousBindingError, AsyncActivationError, AsyncDeactivationError, AsyncModule, AsyncModuleLoadError, AsyncResolutionError, CircularDependencyError, Container, DiError, DisposedContainerError, InternalError, MetadataReaderToken, MissingContainerContextError, MissingMetadataError, MissingScopeContextError, Module, NoMatchingBindingError, RebindUnboundTokenError, ScopeViolationError, SyncDisposalNotSupportedError, SyncModule, TokenNotBoundError, createAutoRegisterRegistry, effectiveBindingScope, inject, injectAll, injectable, injectableSlotToResolveOptions, isInjectionDescriptor, isSyncModule, isToken, optional, postConstruct, preDestroy, slotKeyToResolveOptions, token, tokenName, whenAnyAncestorIs, whenAnyAncestorNamed, whenAnyAncestorTagged, whenAnyAncestorTaggedAll, whenNoAncestorIs, whenNoParentIs, whenParentIs, whenParentNamed, whenParentTagged, whenParentTaggedAll };
@@ -5,6 +5,9 @@ import { BindingRegistry } from "./registry.mjs";
5
5
  import { ScopeManager } from "./scope.mjs";
6
6
 
7
7
  //#region src/inspector.d.ts
8
+ /**
9
+ * @since 0.3.16-canary.0
10
+ */
8
11
  interface BindingSnapshot {
9
12
  readonly tokenName: string;
10
13
  readonly kind: BindingKind;
@@ -15,13 +18,18 @@ interface BindingSnapshot {
15
18
  };
16
19
  readonly id: BindingIdentifier;
17
20
  }
21
+ /**
22
+ * @since 0.3.16-canary.0
23
+ */
18
24
  interface ContainerSnapshot {
19
- readonly ownBindings: readonly BindingSnapshot[];
20
- readonly bindings: readonly BindingSnapshot[];
25
+ readonly ownBindings: ReadonlyArray<BindingSnapshot>;
21
26
  readonly cachedSingletonCount: number;
22
27
  readonly hasParent: boolean;
23
28
  readonly isDisposed: boolean;
24
29
  }
30
+ /**
31
+ * @since 0.3.16-canary.0
32
+ */
25
33
  declare class Inspector {
26
34
  private readonly _registry;
27
35
  private readonly _scope;
@@ -29,7 +37,7 @@ declare class Inspector {
29
37
  private readonly _isDisposed;
30
38
  constructor(_registry: BindingRegistry, _scope: ScopeManager, _hasParent: boolean, _isDisposed: () => boolean);
31
39
  inspect(): ContainerSnapshot;
32
- lookupBindings<Value>(token: Token<Value> | Constructor<Value>): readonly BindingSnapshot[];
40
+ lookupBindings<Value>(token: Token<Value> | Constructor<Value>): ReadonlyArray<BindingSnapshot>;
33
41
  has(token: Token<unknown> | Constructor, hint?: ResolveOptions, parentHas?: () => boolean): boolean;
34
42
  hasOwn(token: Token<unknown> | Constructor, hint?: ResolveOptions): boolean;
35
43
  private allBindingSnapshots;
@@ -2,7 +2,14 @@ import { effectiveBindingScope } from "./binding-scope.mjs";
2
2
  import { selectBinding } from "./binding-select.mjs";
3
3
  import { tokenName } from "./token.mjs";
4
4
  //#region src/inspector.ts
5
+ /**
6
+ * @since 0.3.16-canary.0
7
+ */
5
8
  var Inspector = class {
9
+ _registry;
10
+ _scope;
11
+ _hasParent;
12
+ _isDisposed;
6
13
  constructor(_registry, _scope, _hasParent, _isDisposed) {
7
14
  this._registry = _registry;
8
15
  this._scope = _scope;
@@ -10,10 +17,8 @@ var Inspector = class {
10
17
  this._isDisposed = _isDisposed;
11
18
  }
12
19
  inspect() {
13
- const snapshots = this.allBindingSnapshots();
14
20
  return {
15
- ownBindings: snapshots,
16
- bindings: snapshots,
21
+ ownBindings: this.allBindingSnapshots(),
17
22
  cachedSingletonCount: this._scope.getAllSingletons().size,
18
23
  hasParent: this._hasParent,
19
24
  isDisposed: this._isDisposed()