@toijs/modular 1.0.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 (157) hide show
  1. package/dist/config/constants/config.constant.d.ts +5 -0
  2. package/dist/config/constants/config.constant.d.ts.map +1 -0
  3. package/dist/config/constants/config.constant.js +5 -0
  4. package/dist/config/constants/config.constant.js.map +1 -0
  5. package/dist/config/constants/index.d.ts +2 -0
  6. package/dist/config/constants/index.d.ts.map +1 -0
  7. package/dist/config/constants/index.js +2 -0
  8. package/dist/config/constants/index.js.map +1 -0
  9. package/dist/config/index.d.ts +3 -0
  10. package/dist/config/index.d.ts.map +1 -0
  11. package/dist/config/index.js +3 -0
  12. package/dist/config/index.js.map +1 -0
  13. package/dist/config/services/config.service.d.ts +18 -0
  14. package/dist/config/services/config.service.d.ts.map +1 -0
  15. package/dist/config/services/config.service.js +33 -0
  16. package/dist/config/services/config.service.js.map +1 -0
  17. package/dist/config/services/index.d.ts +2 -0
  18. package/dist/config/services/index.d.ts.map +1 -0
  19. package/dist/config/services/index.js +2 -0
  20. package/dist/config/services/index.js.map +1 -0
  21. package/dist/config/utils/env.util.d.ts +4 -0
  22. package/dist/config/utils/env.util.d.ts.map +1 -0
  23. package/dist/config/utils/env.util.js +35 -0
  24. package/dist/config/utils/env.util.js.map +1 -0
  25. package/dist/config/utils/index.d.ts +2 -0
  26. package/dist/config/utils/index.d.ts.map +1 -0
  27. package/dist/config/utils/index.js +2 -0
  28. package/dist/config/utils/index.js.map +1 -0
  29. package/dist/di/constants/di.constant.d.ts +21 -0
  30. package/dist/di/constants/di.constant.d.ts.map +1 -0
  31. package/dist/di/constants/di.constant.js +21 -0
  32. package/dist/di/constants/di.constant.js.map +1 -0
  33. package/dist/di/constants/index.d.ts +2 -0
  34. package/dist/di/constants/index.d.ts.map +1 -0
  35. package/dist/di/constants/index.js +2 -0
  36. package/dist/di/constants/index.js.map +1 -0
  37. package/dist/di/decorators/index.d.ts +2 -0
  38. package/dist/di/decorators/index.d.ts.map +1 -0
  39. package/dist/di/decorators/index.js +2 -0
  40. package/dist/di/decorators/index.js.map +1 -0
  41. package/dist/di/decorators/injectable.decorator.d.ts +39 -0
  42. package/dist/di/decorators/injectable.decorator.d.ts.map +1 -0
  43. package/dist/di/decorators/injectable.decorator.js +82 -0
  44. package/dist/di/decorators/injectable.decorator.js.map +1 -0
  45. package/dist/di/index.d.ts +5 -0
  46. package/dist/di/index.d.ts.map +1 -0
  47. package/dist/di/index.js +5 -0
  48. package/dist/di/index.js.map +1 -0
  49. package/dist/di/services/container.service.d.ts +52 -0
  50. package/dist/di/services/container.service.d.ts.map +1 -0
  51. package/dist/di/services/container.service.js +188 -0
  52. package/dist/di/services/container.service.js.map +1 -0
  53. package/dist/di/services/index.d.ts +2 -0
  54. package/dist/di/services/index.d.ts.map +1 -0
  55. package/dist/di/services/index.js +2 -0
  56. package/dist/di/services/index.js.map +1 -0
  57. package/dist/di/types/di.type.d.ts +85 -0
  58. package/dist/di/types/di.type.d.ts.map +1 -0
  59. package/dist/di/types/di.type.js +2 -0
  60. package/dist/di/types/di.type.js.map +1 -0
  61. package/dist/di/types/index.d.ts +2 -0
  62. package/dist/di/types/index.d.ts.map +1 -0
  63. package/dist/di/types/index.js +2 -0
  64. package/dist/di/types/index.js.map +1 -0
  65. package/dist/index.d.ts +6 -0
  66. package/dist/index.d.ts.map +1 -0
  67. package/dist/index.js +6 -0
  68. package/dist/index.js.map +1 -0
  69. package/dist/launcher/constants/core.constant.d.ts +5 -0
  70. package/dist/launcher/constants/core.constant.d.ts.map +1 -0
  71. package/dist/launcher/constants/core.constant.js +5 -0
  72. package/dist/launcher/constants/core.constant.js.map +1 -0
  73. package/dist/launcher/constants/index.d.ts +2 -0
  74. package/dist/launcher/constants/index.d.ts.map +1 -0
  75. package/dist/launcher/constants/index.js +2 -0
  76. package/dist/launcher/constants/index.js.map +1 -0
  77. package/dist/launcher/constants/task.constant.d.ts +3 -0
  78. package/dist/launcher/constants/task.constant.d.ts.map +1 -0
  79. package/dist/launcher/constants/task.constant.js +3 -0
  80. package/dist/launcher/constants/task.constant.js.map +1 -0
  81. package/dist/launcher/index.d.ts +4 -0
  82. package/dist/launcher/index.d.ts.map +1 -0
  83. package/dist/launcher/index.js +4 -0
  84. package/dist/launcher/index.js.map +1 -0
  85. package/dist/launcher/services/index.d.ts +3 -0
  86. package/dist/launcher/services/index.d.ts.map +1 -0
  87. package/dist/launcher/services/index.js +3 -0
  88. package/dist/launcher/services/index.js.map +1 -0
  89. package/dist/launcher/services/launcher.service.d.ts +33 -0
  90. package/dist/launcher/services/launcher.service.d.ts.map +1 -0
  91. package/dist/launcher/services/launcher.service.js +95 -0
  92. package/dist/launcher/services/launcher.service.js.map +1 -0
  93. package/dist/launcher/services/shell.service.d.ts +24 -0
  94. package/dist/launcher/services/shell.service.d.ts.map +1 -0
  95. package/dist/launcher/services/shell.service.js +34 -0
  96. package/dist/launcher/services/shell.service.js.map +1 -0
  97. package/dist/launcher/types/extensions.type.d.ts +16 -0
  98. package/dist/launcher/types/extensions.type.d.ts.map +1 -0
  99. package/dist/launcher/types/extensions.type.js +2 -0
  100. package/dist/launcher/types/extensions.type.js.map +1 -0
  101. package/dist/launcher/types/index.d.ts +2 -0
  102. package/dist/launcher/types/index.d.ts.map +1 -0
  103. package/dist/launcher/types/index.js +2 -0
  104. package/dist/launcher/types/index.js.map +1 -0
  105. package/dist/launcher/types/module.type.d.ts +29 -0
  106. package/dist/launcher/types/module.type.d.ts.map +1 -0
  107. package/dist/launcher/types/module.type.js +2 -0
  108. package/dist/launcher/types/module.type.js.map +1 -0
  109. package/dist/metadata/constants/index.d.ts +2 -0
  110. package/dist/metadata/constants/index.d.ts.map +1 -0
  111. package/dist/metadata/constants/index.js +2 -0
  112. package/dist/metadata/constants/index.js.map +1 -0
  113. package/dist/metadata/constants/metadata.constant.d.ts +2 -0
  114. package/dist/metadata/constants/metadata.constant.d.ts.map +1 -0
  115. package/dist/metadata/constants/metadata.constant.js +2 -0
  116. package/dist/metadata/constants/metadata.constant.js.map +1 -0
  117. package/dist/metadata/index.d.ts +4 -0
  118. package/dist/metadata/index.d.ts.map +1 -0
  119. package/dist/metadata/index.js +4 -0
  120. package/dist/metadata/index.js.map +1 -0
  121. package/dist/metadata/services/index.d.ts +2 -0
  122. package/dist/metadata/services/index.d.ts.map +1 -0
  123. package/dist/metadata/services/index.js +2 -0
  124. package/dist/metadata/services/index.js.map +1 -0
  125. package/dist/metadata/services/metadata.service.d.ts +44 -0
  126. package/dist/metadata/services/metadata.service.d.ts.map +1 -0
  127. package/dist/metadata/services/metadata.service.js +95 -0
  128. package/dist/metadata/services/metadata.service.js.map +1 -0
  129. package/dist/metadata/types/index.d.ts +2 -0
  130. package/dist/metadata/types/index.d.ts.map +1 -0
  131. package/dist/metadata/types/index.js +2 -0
  132. package/dist/metadata/types/index.js.map +1 -0
  133. package/dist/metadata/types/metadata.type.d.ts +3 -0
  134. package/dist/metadata/types/metadata.type.d.ts.map +1 -0
  135. package/dist/metadata/types/metadata.type.js +2 -0
  136. package/dist/metadata/types/metadata.type.js.map +1 -0
  137. package/dist/task/index.d.ts +3 -0
  138. package/dist/task/index.d.ts.map +1 -0
  139. package/dist/task/index.js +3 -0
  140. package/dist/task/index.js.map +1 -0
  141. package/dist/task/services/index.d.ts +2 -0
  142. package/dist/task/services/index.d.ts.map +1 -0
  143. package/dist/task/services/index.js +2 -0
  144. package/dist/task/services/index.js.map +1 -0
  145. package/dist/task/services/task.service.d.ts +25 -0
  146. package/dist/task/services/task.service.d.ts.map +1 -0
  147. package/dist/task/services/task.service.js +58 -0
  148. package/dist/task/services/task.service.js.map +1 -0
  149. package/dist/task/types/index.d.ts +2 -0
  150. package/dist/task/types/index.d.ts.map +1 -0
  151. package/dist/task/types/index.js +2 -0
  152. package/dist/task/types/index.js.map +1 -0
  153. package/dist/task/types/task.type.d.ts +9 -0
  154. package/dist/task/types/task.type.d.ts.map +1 -0
  155. package/dist/task/types/task.type.js +2 -0
  156. package/dist/task/types/task.type.js.map +1 -0
  157. package/package.json +27 -0
@@ -0,0 +1,5 @@
1
+ /**
2
+ * The metadata key for the config
3
+ */
4
+ export declare const METADATA_CONFIG = "metadata.config";
5
+ //# sourceMappingURL=config.constant.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.constant.d.ts","sourceRoot":"","sources":["../../../src/config/constants/config.constant.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,eAAO,MAAM,eAAe,oBAAoB,CAAC"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * The metadata key for the config
3
+ */
4
+ export const METADATA_CONFIG = "metadata.config";
5
+ //# sourceMappingURL=config.constant.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.constant.js","sourceRoot":"","sources":["../../../src/config/constants/config.constant.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,iBAAiB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from "./config.constant";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/config/constants/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from "./config.constant";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/config/constants/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC"}
@@ -0,0 +1,3 @@
1
+ export * from "./services";
2
+ export * from "./constants";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC"}
@@ -0,0 +1,3 @@
1
+ export * from "./services";
2
+ export * from "./constants";
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC"}
@@ -0,0 +1,18 @@
1
+ import { Metadata } from "../../metadata";
2
+ export declare class Config {
3
+ private readonly metadata;
4
+ constructor(metadata: Metadata);
5
+ /**
6
+ * Get the config. Supports nested access via dot notation,
7
+ * including array indices (e.g. `servers.0.host`).
8
+ * @param key - Optional path (dot-separated)
9
+ * @returns The config value at the path, or the full config
10
+ */
11
+ resolve(key?: string | undefined): unknown;
12
+ /**
13
+ * Set the config
14
+ * @param config - The config
15
+ */
16
+ define(config: any): void;
17
+ }
18
+ //# sourceMappingURL=config.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.service.d.ts","sourceRoot":"","sources":["../../../src/config/services/config.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAG1C,qBAAa,MAAM;IACL,OAAO,CAAC,QAAQ,CAAC,QAAQ;gBAAR,QAAQ,EAAE,QAAQ;IAE/C;;;;;OAKG;IACH,OAAO,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS;IAchC;;;OAGG;IACH,MAAM,CAAC,MAAM,EAAE,GAAG;CAGnB"}
@@ -0,0 +1,33 @@
1
+ import { METADATA_CONFIG } from "../constants";
2
+ export class Config {
3
+ metadata;
4
+ constructor(metadata) {
5
+ this.metadata = metadata;
6
+ }
7
+ /**
8
+ * Get the config. Supports nested access via dot notation,
9
+ * including array indices (e.g. `servers.0.host`).
10
+ * @param key - Optional path (dot-separated)
11
+ * @returns The config value at the path, or the full config
12
+ */
13
+ resolve(key) {
14
+ const value = this.metadata.resolve(METADATA_CONFIG) || {};
15
+ if (!key) {
16
+ return value;
17
+ }
18
+ return key.split(".").reduce((current, segment) => {
19
+ if (current == null || typeof current !== "object") {
20
+ return undefined;
21
+ }
22
+ return current[segment];
23
+ }, value);
24
+ }
25
+ /**
26
+ * Set the config
27
+ * @param config - The config
28
+ */
29
+ define(config) {
30
+ this.metadata.define(METADATA_CONFIG, config, true);
31
+ }
32
+ }
33
+ //# sourceMappingURL=config.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.service.js","sourceRoot":"","sources":["../../../src/config/services/config.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE/C,MAAM,OAAO,MAAM;IACY;IAA7B,YAA6B,QAAkB;QAAlB,aAAQ,GAAR,QAAQ,CAAU;IAAG,CAAC;IAEnD;;;;;OAKG;IACH,OAAO,CAAC,GAAwB;QAC9B,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC;QAC3D,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,OAAO,KAAK,CAAC;QACf,CAAC;QAED,OAAO,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,OAAgB,EAAE,OAAO,EAAE,EAAE;YACzD,IAAI,OAAO,IAAI,IAAI,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;gBACnD,OAAO,SAAS,CAAC;YACnB,CAAC;YACD,OAAQ,OAA4C,CAAC,OAAO,CAAC,CAAC;QAChE,CAAC,EAAE,KAAgB,CAAC,CAAC;IACvB,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,MAAW;QAChB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,eAAe,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;IACtD,CAAC;CACF"}
@@ -0,0 +1,2 @@
1
+ export * from "./config.service";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/config/services/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from "./config.service";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/config/services/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC"}
@@ -0,0 +1,4 @@
1
+ export declare function readStringEnv(name: string, fallback?: string): string;
2
+ export declare function readNumberEnv(name: string, fallback: number): number;
3
+ export declare function readBooleanEnv(name: string, fallback: boolean): boolean;
4
+ //# sourceMappingURL=env.util.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env.util.d.ts","sourceRoot":"","sources":["../../../src/config/utils/env.util.ts"],"names":[],"mappings":"AAAA,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAYrE;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAcpE;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,GAAG,OAAO,CAgBvE"}
@@ -0,0 +1,35 @@
1
+ export function readStringEnv(name, fallback) {
2
+ const value = process.env[name]?.trim();
3
+ if (value) {
4
+ return value;
5
+ }
6
+ if (fallback !== undefined) {
7
+ return fallback;
8
+ }
9
+ throw new Error(`[config] Missing required environment variable: ${name}`);
10
+ }
11
+ export function readNumberEnv(name, fallback) {
12
+ const rawValue = process.env[name]?.trim();
13
+ if (!rawValue) {
14
+ return fallback;
15
+ }
16
+ const value = Number(rawValue);
17
+ if (Number.isNaN(value)) {
18
+ throw new Error(`[config] Environment variable ${name} must be a number`);
19
+ }
20
+ return value;
21
+ }
22
+ export function readBooleanEnv(name, fallback) {
23
+ const rawValue = process.env[name]?.trim().toLowerCase();
24
+ if (!rawValue) {
25
+ return fallback;
26
+ }
27
+ if (["1", "true", "yes", "on"].includes(rawValue)) {
28
+ return true;
29
+ }
30
+ if (["0", "false", "no", "off"].includes(rawValue)) {
31
+ return false;
32
+ }
33
+ throw new Error(`[config] Environment variable ${name} must be a boolean`);
34
+ }
35
+ //# sourceMappingURL=env.util.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env.util.js","sourceRoot":"","sources":["../../../src/config/utils/env.util.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,aAAa,CAAC,IAAY,EAAE,QAAiB;IAC3D,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC;IAExC,IAAI,KAAK,EAAE,CAAC;QACV,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,mDAAmD,IAAI,EAAE,CAAC,CAAC;AAC7E,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,IAAY,EAAE,QAAgB;IAC1D,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC;IAE3C,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;IAE/B,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CAAC,iCAAiC,IAAI,mBAAmB,CAAC,CAAC;IAC5E,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,IAAY,EAAE,QAAiB;IAC5D,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAEzD,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QAClD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QACnD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,iCAAiC,IAAI,oBAAoB,CAAC,CAAC;AAC7E,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from "./env.util";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/config/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from "./env.util";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/config/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Metadata key for injectable class deps (set by @Injectable)
3
+ */
4
+ export declare const META_INJECTABLE: unique symbol;
5
+ /**
6
+ * Metadata key for constructor param tokens (set by @Inject)
7
+ */
8
+ export declare const META_INJECT: unique symbol;
9
+ /**
10
+ * Metadata key for optional constructor params (set by @Optional)
11
+ */
12
+ export declare const META_OPTIONAL: unique symbol;
13
+ /**
14
+ * Provider scope: one instance per container
15
+ */
16
+ export declare const SCOPE_SINGLETON: "singleton";
17
+ /**
18
+ * Provider scope: new instance on every resolve
19
+ */
20
+ export declare const SCOPE_TRANSIENT: "transient";
21
+ //# sourceMappingURL=di.constant.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"di.constant.d.ts","sourceRoot":"","sources":["../../../src/di/constants/di.constant.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,eAAO,MAAM,eAAe,eAAqC,CAAC;AAElE;;GAEG;AACH,eAAO,MAAM,WAAW,eAAiC,CAAC;AAE1D;;GAEG;AACH,eAAO,MAAM,aAAa,eAAmC,CAAC;AAE9D;;GAEG;AACH,eAAO,MAAM,eAAe,EAAG,WAAoB,CAAC;AAEpD;;GAEG;AACH,eAAO,MAAM,eAAe,EAAG,WAAoB,CAAC"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Metadata key for injectable class deps (set by @Injectable)
3
+ */
4
+ export const META_INJECTABLE = Symbol.for("lamtoi.di.injectable");
5
+ /**
6
+ * Metadata key for constructor param tokens (set by @Inject)
7
+ */
8
+ export const META_INJECT = Symbol.for("lamtoi.di.inject");
9
+ /**
10
+ * Metadata key for optional constructor params (set by @Optional)
11
+ */
12
+ export const META_OPTIONAL = Symbol.for("lamtoi.di.optional");
13
+ /**
14
+ * Provider scope: one instance per container
15
+ */
16
+ export const SCOPE_SINGLETON = "singleton";
17
+ /**
18
+ * Provider scope: new instance on every resolve
19
+ */
20
+ export const SCOPE_TRANSIENT = "transient";
21
+ //# sourceMappingURL=di.constant.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"di.constant.js","sourceRoot":"","sources":["../../../src/di/constants/di.constant.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,MAAM,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;AAElE;;GAEG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;AAE1D;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,MAAM,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;AAE9D;;GAEG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,WAAoB,CAAC;AAEpD;;GAEG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,WAAoB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from "./di.constant";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/di/constants/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from "./di.constant";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/di/constants/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { Injectable, Inject, Optional, getInjectableMetadata, getInjectMetadata, getOptionalMetadata, resolveInjectTokens, } from "./injectable.decorator";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/di/decorators/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,MAAM,EACN,QAAQ,EACR,qBAAqB,EACrB,iBAAiB,EACjB,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,wBAAwB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { Injectable, Inject, Optional, getInjectableMetadata, getInjectMetadata, getOptionalMetadata, resolveInjectTokens, } from "./injectable.decorator";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/di/decorators/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,MAAM,EACN,QAAQ,EACR,qBAAqB,EACrB,iBAAiB,EACjB,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,wBAAwB,CAAC"}
@@ -0,0 +1,39 @@
1
+ import type { Constructor, InjectableMetadata, InjectionToken } from "../types";
2
+ /**
3
+ * Mark a class as injectable and optionally declare constructor tokens.
4
+ * Prefer explicit `inject` when not using emitDecoratorMetadata.
5
+ *
6
+ * @example
7
+ * ```ts
8
+ * @Injectable([LoggerService, CONFIG])
9
+ * class UserService {
10
+ * constructor(logger: LoggerService, config: Config) {}
11
+ * }
12
+ * ```
13
+ */
14
+ export declare function Injectable(inject?: InjectionToken[]): ClassDecorator;
15
+ /**
16
+ * Bind a constructor parameter to an injection token (string/symbol/class).
17
+ */
18
+ export declare function Inject(token: InjectionToken): ParameterDecorator;
19
+ /**
20
+ * Allow a constructor dependency to resolve as `undefined` when missing.
21
+ */
22
+ export declare function Optional(): ParameterDecorator;
23
+ /**
24
+ * Read injectable metadata from a class
25
+ */
26
+ export declare function getInjectableMetadata(target: Constructor): InjectableMetadata | undefined;
27
+ /**
28
+ * Read per-parameter inject tokens from a class
29
+ */
30
+ export declare function getInjectMetadata(target: Constructor): InjectionToken[];
31
+ /**
32
+ * Read which constructor params are optional
33
+ */
34
+ export declare function getOptionalMetadata(target: Constructor): Set<number>;
35
+ /**
36
+ * Merge decorator inject lists into a single ordered token list
37
+ */
38
+ export declare function resolveInjectTokens(target: Constructor, explicit?: InjectionToken[]): InjectionToken[];
39
+ //# sourceMappingURL=injectable.decorator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"injectable.decorator.d.ts","sourceRoot":"","sources":["../../../src/di/decorators/injectable.decorator.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAQhF;;;;;;;;;;;GAWG;AACH,wBAAgB,UAAU,CAAC,MAAM,GAAE,cAAc,EAAO,GAAG,cAAc,CAKxE;AAED;;GAEG;AACH,wBAAgB,MAAM,CAAC,KAAK,EAAE,cAAc,GAAG,kBAAkB,CAUhE;AAED;;GAEG;AACH,wBAAgB,QAAQ,IAAI,kBAAkB,CAU7C;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,WAAW,GAClB,kBAAkB,GAAG,SAAS,CAEhC;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,WAAW,GAAG,cAAc,EAAE,CAEvE;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,WAAW,GAAG,GAAG,CAAC,MAAM,CAAC,CAEpE;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,WAAW,EACnB,QAAQ,CAAC,EAAE,cAAc,EAAE,GAC1B,cAAc,EAAE,CAuBlB"}
@@ -0,0 +1,82 @@
1
+ import { META_INJECT, META_INJECTABLE, META_OPTIONAL } from "../constants";
2
+ /**
3
+ * Mark a class as injectable and optionally declare constructor tokens.
4
+ * Prefer explicit `inject` when not using emitDecoratorMetadata.
5
+ *
6
+ * @example
7
+ * ```ts
8
+ * @Injectable([LoggerService, CONFIG])
9
+ * class UserService {
10
+ * constructor(logger: LoggerService, config: Config) {}
11
+ * }
12
+ * ```
13
+ */
14
+ export function Injectable(inject = []) {
15
+ return (target) => {
16
+ const ctor = target;
17
+ ctor[META_INJECTABLE] = { inject: [...inject] };
18
+ };
19
+ }
20
+ /**
21
+ * Bind a constructor parameter to an injection token (string/symbol/class).
22
+ */
23
+ export function Inject(token) {
24
+ return (target, _propertyKey, parameterIndex) => {
25
+ const ctor = (typeof target === "function" ? target : target.constructor);
26
+ const inject = ctor[META_INJECT] ? [...ctor[META_INJECT]] : [];
27
+ inject[parameterIndex] = token;
28
+ ctor[META_INJECT] = inject;
29
+ };
30
+ }
31
+ /**
32
+ * Allow a constructor dependency to resolve as `undefined` when missing.
33
+ */
34
+ export function Optional() {
35
+ return (target, _propertyKey, parameterIndex) => {
36
+ const ctor = (typeof target === "function" ? target : target.constructor);
37
+ const optional = ctor[META_OPTIONAL] ?? new Set();
38
+ optional.add(parameterIndex);
39
+ ctor[META_OPTIONAL] = optional;
40
+ };
41
+ }
42
+ /**
43
+ * Read injectable metadata from a class
44
+ */
45
+ export function getInjectableMetadata(target) {
46
+ return target[META_INJECTABLE];
47
+ }
48
+ /**
49
+ * Read per-parameter inject tokens from a class
50
+ */
51
+ export function getInjectMetadata(target) {
52
+ return target[META_INJECT] ?? [];
53
+ }
54
+ /**
55
+ * Read which constructor params are optional
56
+ */
57
+ export function getOptionalMetadata(target) {
58
+ return target[META_OPTIONAL] ?? new Set();
59
+ }
60
+ /**
61
+ * Merge decorator inject lists into a single ordered token list
62
+ */
63
+ export function resolveInjectTokens(target, explicit) {
64
+ if (explicit && explicit.length > 0) {
65
+ return explicit;
66
+ }
67
+ const fromInjectable = getInjectableMetadata(target)?.inject ?? [];
68
+ const fromInject = getInjectMetadata(target);
69
+ if (fromInject.length === 0) {
70
+ return fromInjectable;
71
+ }
72
+ const length = Math.max(fromInjectable.length, fromInject.length);
73
+ const tokens = [];
74
+ for (let i = 0; i < length; i++) {
75
+ const token = fromInject[i] ?? fromInjectable[i];
76
+ if (token !== undefined) {
77
+ tokens[i] = token;
78
+ }
79
+ }
80
+ return tokens;
81
+ }
82
+ //# sourceMappingURL=injectable.decorator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"injectable.decorator.js","sourceRoot":"","sources":["../../../src/di/decorators/injectable.decorator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export * from "./constants";
2
+ export * from "./types";
3
+ export * from "./decorators";
4
+ export * from "./services";
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/di/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC"}
@@ -0,0 +1,5 @@
1
+ export * from "./constants";
2
+ export * from "./types";
3
+ export * from "./decorators";
4
+ export * from "./services";
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/di/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC"}
@@ -0,0 +1,52 @@
1
+ import type { InjectionToken, Provider } from "../types";
2
+ /**
3
+ * Lightweight dependency injection container.
4
+ */
5
+ export declare class Container {
6
+ private readonly providers;
7
+ private readonly instances;
8
+ private readonly resolving;
9
+ private readonly parent;
10
+ constructor(parent?: Container | null);
11
+ /**
12
+ * Register one or more providers
13
+ * @param providers - Class or provider definition(s)
14
+ */
15
+ register(providers: Provider | Provider[]): this;
16
+ /**
17
+ * Resolve an instance for a token
18
+ * @param token - Injection token
19
+ * @returns The resolved instance
20
+ */
21
+ resolve<T>(token: InjectionToken<T>): T;
22
+ /**
23
+ * Resolve an instance, or `undefined` if the token is not registered
24
+ * @param token - Injection token
25
+ */
26
+ tryResolve<T>(token: InjectionToken<T>): T | undefined;
27
+ /**
28
+ * Whether this container (or a parent) can resolve the token
29
+ * @param token - Injection token
30
+ */
31
+ has(token: InjectionToken): boolean;
32
+ /**
33
+ * Create a child container that inherits parent providers
34
+ */
35
+ createChild(): Container;
36
+ /**
37
+ * Clear local providers and cached singleton instances
38
+ */
39
+ clear(): void;
40
+ private resolveInternal;
41
+ private create;
42
+ private resolveDeps;
43
+ private resolveClassDeps;
44
+ private normalize;
45
+ private normalizeScope;
46
+ private isValueProvider;
47
+ private isExistingProvider;
48
+ private isFactoryProvider;
49
+ private isClassProvider;
50
+ private tokenName;
51
+ }
52
+ //# sourceMappingURL=container.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"container.service.d.ts","sourceRoot":"","sources":["../../../src/di/services/container.service.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAEV,cAAc,EACd,QAAQ,EAOT,MAAM,UAAU,CAAC;AAElB;;GAEG;AACH,qBAAa,SAAS;IACpB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA6C;IACvE,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAsC;IAChE,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA6B;IACvD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAmB;gBAE9B,MAAM,GAAE,SAAS,GAAG,IAAW;IAI3C;;;OAGG;IACH,QAAQ,CAAC,SAAS,EAAE,QAAQ,GAAG,QAAQ,EAAE,GAAG,IAAI;IAYhD;;;;OAIG;IACH,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC;IAIvC;;;OAGG;IACH,UAAU,CAAC,CAAC,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,SAAS;IAItD;;;OAGG;IACH,GAAG,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO;IAQnC;;OAEG;IACH,WAAW,IAAI,SAAS;IAIxB;;OAEG;IACH,KAAK,IAAI,IAAI;IAMb,OAAO,CAAC,eAAe;IAuCvB,OAAO,CAAC,MAAM;IAoBd,OAAO,CAAC,WAAW;IAInB,OAAO,CAAC,gBAAgB;IAWxB,OAAO,CAAC,SAAS;IAoDjB,OAAO,CAAC,cAAc;IAItB,OAAO,CAAC,eAAe;IAIvB,OAAO,CAAC,kBAAkB;IAI1B,OAAO,CAAC,iBAAiB;IAIzB,OAAO,CAAC,eAAe;IAIvB,OAAO,CAAC,SAAS;CAKlB"}