proxydi 0.1.1 → 0.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -5,7 +5,13 @@ All notable changes to this project will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
- ## [[0.1.1](https://www.npmjs.com/package/proxydi/v/0.1.1)] - 2025-03-25
8
+ ## [[0.1.3](https://www.npmjs.com/package/proxydi/v/0.1.3)] - 2025-03-26
9
+
10
+ ### Added
11
+
12
+ - ON_CONTAINERIZED symbol to inform dependency was registered in container [#19](https://github.com/proxy-di/proxydi/pull/19)
13
+
14
+ ## [[0.1.2](https://www.npmjs.com/package/proxydi/v/0.1.2)] - 2025-03-25
9
15
 
10
16
  ### Fixed
11
17
 
package/README.md CHANGED
@@ -19,6 +19,7 @@ Experimental features:
19
19
  - Construtor injections (see unit tests for examples)
20
20
  - Middleware (see unit tests for examples)
21
21
  - Matches dependencies by unique identifiers or automatically using class names and property names
22
+ - [ON_CONTAINERIZED]() method
22
23
 
23
24
  ## Quick start
24
25
 
@@ -37,8 +37,8 @@ export declare class ProxyDiContainer implements IProxyDiContainer {
37
37
  * @param parent Optional parent container.
38
38
  */
39
39
  constructor(settings?: ContainerSettings, parent?: ProxyDiContainer);
40
- registerMiddleware(middleware: MiddlewareRegistrator | MiddlewareRemover | MiddlewareResolver): void;
41
- removeMiddleware(middleware: MiddlewareRegistrator | MiddlewareRemover | MiddlewareResolver): void;
40
+ registerMiddleware(middleware: MiddlewareRegistrator<any> | MiddlewareRemover<any> | MiddlewareResolver<any>): void;
41
+ removeMiddleware(middleware: MiddlewareRegistrator<any> | MiddlewareRemover<any> | MiddlewareResolver<any>): void;
42
42
  /**
43
43
  * Registers a dependency in the container. Could register eacher class or instance.
44
44
  * In case of class, it will be instantiated without any parameters.
package/dist/index.cjs CHANGED
@@ -48,6 +48,7 @@ const DEPENDENCY_ID = Symbol('DependencyId');
48
48
  * The property stores a reference to the ProxyDiContainer in which the dependency was registered.
49
49
  */
50
50
  const PROXYDI_CONTAINER = Symbol('proxyDiContainer');
51
+ const ON_CONTAINERIZED = Symbol('onContainerized');
51
52
  const IS_INJECTION_PROXY = Symbol('isInjectionProxy');
52
53
  const INJECTION_OWNER = Symbol('injectionOwner');
53
54
  const IS_INSTANCE_PROXY = Symbol('isInstanceProxy');
@@ -347,6 +348,7 @@ class ProxyDiContainer {
347
348
  if (isObject) {
348
349
  instance[PROXYDI_CONTAINER] = this;
349
350
  instance[DEPENDENCY_ID] = id;
351
+ instance[ON_CONTAINERIZED] && instance[ON_CONTAINERIZED](this);
350
352
  }
351
353
  this.injectDependenciesTo(instance);
352
354
  this.dependencies[id] = instance;
@@ -588,6 +590,7 @@ function recursiveResolveAll(container, dependencyId) {
588
590
  }
589
591
 
590
592
  exports.DEPENDENCY_ID = DEPENDENCY_ID;
593
+ exports.ON_CONTAINERIZED = ON_CONTAINERIZED;
591
594
  exports.PROXYDI_CONTAINER = PROXYDI_CONTAINER;
592
595
  exports.ProxyDiContainer = ProxyDiContainer;
593
596
  exports.inject = inject;
package/dist/index.d.ts CHANGED
@@ -3,5 +3,5 @@ export { ProxyDiContainer } from './ProxyDiContainer';
3
3
  export { injectable } from './injectable.decorator';
4
4
  export { middleware } from './middleware/middleware.decorator';
5
5
  export { MiddlewareRegistrator, MiddlewareRemover, MiddlewareResolver, MiddlewareContext, } from './middleware/middleware.api';
6
- export { Injection, DependencyId, DependencyClass, ContainerSettings, PROXYDI_CONTAINER, DEPENDENCY_ID, } from './types';
6
+ export { Injection, DependencyId, DependencyClass, ContainerSettings, OnContainerizedMethod, PROXYDI_CONTAINER, DEPENDENCY_ID, ON_CONTAINERIZED, } from './types';
7
7
  export { resolveAll } from './resolveAll';
package/dist/index.js CHANGED
@@ -46,6 +46,7 @@ const DEPENDENCY_ID = Symbol('DependencyId');
46
46
  * The property stores a reference to the ProxyDiContainer in which the dependency was registered.
47
47
  */
48
48
  const PROXYDI_CONTAINER = Symbol('proxyDiContainer');
49
+ const ON_CONTAINERIZED = Symbol('onContainerized');
49
50
  const IS_INJECTION_PROXY = Symbol('isInjectionProxy');
50
51
  const INJECTION_OWNER = Symbol('injectionOwner');
51
52
  const IS_INSTANCE_PROXY = Symbol('isInstanceProxy');
@@ -345,6 +346,7 @@ class ProxyDiContainer {
345
346
  if (isObject) {
346
347
  instance[PROXYDI_CONTAINER] = this;
347
348
  instance[DEPENDENCY_ID] = id;
349
+ instance[ON_CONTAINERIZED] && instance[ON_CONTAINERIZED](this);
348
350
  }
349
351
  this.injectDependenciesTo(instance);
350
352
  this.dependencies[id] = instance;
@@ -585,4 +587,4 @@ function recursiveResolveAll(container, dependencyId) {
585
587
  return all;
586
588
  }
587
589
 
588
- export { DEPENDENCY_ID, PROXYDI_CONTAINER, ProxyDiContainer, inject, injectable, middleware, resolveAll };
590
+ export { DEPENDENCY_ID, ON_CONTAINERIZED, PROXYDI_CONTAINER, ProxyDiContainer, inject, injectable, middleware, resolveAll };
package/dist/index.umd.js CHANGED
@@ -52,6 +52,7 @@
52
52
  * The property stores a reference to the ProxyDiContainer in which the dependency was registered.
53
53
  */
54
54
  const PROXYDI_CONTAINER = Symbol('proxyDiContainer');
55
+ const ON_CONTAINERIZED = Symbol('onContainerized');
55
56
  const IS_INJECTION_PROXY = Symbol('isInjectionProxy');
56
57
  const INJECTION_OWNER = Symbol('injectionOwner');
57
58
  const IS_INSTANCE_PROXY = Symbol('isInstanceProxy');
@@ -351,6 +352,7 @@
351
352
  if (isObject) {
352
353
  instance[PROXYDI_CONTAINER] = this;
353
354
  instance[DEPENDENCY_ID] = id;
355
+ instance[ON_CONTAINERIZED] && instance[ON_CONTAINERIZED](this);
354
356
  }
355
357
  this.injectDependenciesTo(instance);
356
358
  this.dependencies[id] = instance;
@@ -592,6 +594,7 @@
592
594
  }
593
595
 
594
596
  exports.DEPENDENCY_ID = DEPENDENCY_ID;
597
+ exports.ON_CONTAINERIZED = ON_CONTAINERIZED;
595
598
  exports.PROXYDI_CONTAINER = PROXYDI_CONTAINER;
596
599
  exports.ProxyDiContainer = ProxyDiContainer;
597
600
  exports.inject = inject;
@@ -10,18 +10,18 @@ export interface MiddlewareEvent {
10
10
  remove: <T>(context: MiddlewareContext<T>) => void;
11
11
  resolve: <T>(context: MiddlewareContext<T>) => MiddlewareContext<T>;
12
12
  }
13
- export interface MiddlewareResolver {
14
- onResolve: <T>(context: MiddlewareContext<T>) => MiddlewareContext<T>;
13
+ export interface MiddlewareResolver<T> {
14
+ onResolve: (context: MiddlewareContext<T>) => MiddlewareContext<T>;
15
15
  }
16
16
  /**
17
17
  * Describe the middleware that able to listen to the registering of a dependency in containers hierarchy
18
18
  */
19
- export interface MiddlewareRegistrator {
20
- onRegister<T>(context: MiddlewareContext<T>): void;
19
+ export interface MiddlewareRegistrator<T> {
20
+ onRegister(context: MiddlewareContext<T>): void;
21
21
  }
22
22
  /**
23
23
  * Describe the middleware that able to listen to the removing of a dependency in containers hierarchy
24
24
  */
25
- export interface MiddlewareRemover {
26
- onRemove<T>(context: MiddlewareContext<T>): void;
25
+ export interface MiddlewareRemover<T> {
26
+ onRemove(context: MiddlewareContext<T>): void;
27
27
  }
package/dist/types.d.ts CHANGED
@@ -1,3 +1,4 @@
1
+ import { ProxyDiContainer } from './ProxyDiContainer';
1
2
  export type DependencyId = string | symbol;
2
3
  export type DependencyClass<T> = new (...args: any[]) => T;
3
4
  export type Setter = (object: unknown, value: unknown) => void;
@@ -33,6 +34,8 @@ export declare const DEPENDENCY_ID: unique symbol;
33
34
  * The property stores a reference to the ProxyDiContainer in which the dependency was registered.
34
35
  */
35
36
  export declare const PROXYDI_CONTAINER: unique symbol;
37
+ export declare const ON_CONTAINERIZED: unique symbol;
38
+ export type OnContainerizedMethod = (container: ProxyDiContainer) => void;
36
39
  export type Injections = Record<string | symbol, Injection>;
37
40
  export type Dependency = {
38
41
  [INJECTIONS]: Injections;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "proxydi",
3
- "version": "0.1.1",
3
+ "version": "0.1.3",
4
4
  "description": "A typed hierarchical DI container that resolves circular dependencies via Proxy",
5
5
  "type": "module",
6
6
  "main": "./dist/index.cjs",