@navios/core 0.1.15 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (64) hide show
  1. package/dist/_tsup-dts-rollup.d.mts +98 -422
  2. package/dist/_tsup-dts-rollup.d.ts +98 -422
  3. package/dist/index.d.mts +54 -44
  4. package/dist/index.d.ts +54 -44
  5. package/dist/index.js +111 -1023
  6. package/dist/index.mjs +113 -982
  7. package/package.json +3 -2
  8. package/src/adapters/endpoint-adapter.service.mts +3 -6
  9. package/src/adapters/handler-adapter.interface.mts +1 -1
  10. package/src/adapters/multipart-adapter.service.mts +2 -1
  11. package/src/adapters/stream-adapter.service.mts +3 -7
  12. package/src/attribute.factory.mts +1 -1
  13. package/src/config/config.provider.mts +8 -10
  14. package/src/decorators/controller.decorator.mts +3 -6
  15. package/src/decorators/module.decorator.mts +3 -6
  16. package/src/decorators/use-guards.decorator.mts +3 -2
  17. package/src/index.mts +1 -1
  18. package/src/logger/console-logger.service.mts +3 -2
  19. package/src/logger/logger.factory.mts +4 -5
  20. package/src/logger/logger.service.mts +2 -1
  21. package/src/metadata/controller.metadata.mts +3 -2
  22. package/src/metadata/handler.metadata.mts +1 -4
  23. package/src/metadata/index.mts +0 -1
  24. package/src/metadata/module.metadata.mts +3 -2
  25. package/src/navios.application.mts +9 -8
  26. package/src/navios.factory.mts +4 -2
  27. package/src/services/controller-adapter.service.mts +13 -12
  28. package/src/services/guard-runner.service.mts +4 -6
  29. package/src/services/module-loader.service.mts +4 -2
  30. package/src/tokens/application.token.mts +1 -1
  31. package/src/tokens/execution-context.token.mts +2 -1
  32. package/src/tokens/reply.token.mts +1 -1
  33. package/src/tokens/request.token.mts +1 -1
  34. package/src/metadata/injectable.metadata.mts +0 -11
  35. package/src/service-locator/__tests__/injectable.spec.mts +0 -171
  36. package/src/service-locator/__tests__/injection-token.spec.mts +0 -129
  37. package/src/service-locator/decorators/get-injectable-token.mts +0 -19
  38. package/src/service-locator/decorators/index.mts +0 -2
  39. package/src/service-locator/decorators/injectable.decorator.mts +0 -113
  40. package/src/service-locator/enums/index.mts +0 -1
  41. package/src/service-locator/enums/injectable-scope.enum.mts +0 -10
  42. package/src/service-locator/errors/errors.enum.mts +0 -8
  43. package/src/service-locator/errors/factory-not-found.mts +0 -8
  44. package/src/service-locator/errors/factory-token-not-resolved.mts +0 -10
  45. package/src/service-locator/errors/index.mts +0 -7
  46. package/src/service-locator/errors/instance-destroying.mts +0 -8
  47. package/src/service-locator/errors/instance-expired.mts +0 -8
  48. package/src/service-locator/errors/instance-not-found.mts +0 -8
  49. package/src/service-locator/errors/unknown-error.mts +0 -15
  50. package/src/service-locator/event-emitter.mts +0 -107
  51. package/src/service-locator/index.mts +0 -15
  52. package/src/service-locator/inject.mts +0 -42
  53. package/src/service-locator/injection-token.mts +0 -92
  54. package/src/service-locator/injector.mts +0 -18
  55. package/src/service-locator/interfaces/factory.interface.mts +0 -11
  56. package/src/service-locator/override.mts +0 -22
  57. package/src/service-locator/proxy-service-locator.mts +0 -99
  58. package/src/service-locator/resolve-service.mts +0 -46
  59. package/src/service-locator/service-locator-abstract-factory-context.mts +0 -23
  60. package/src/service-locator/service-locator-event-bus.mts +0 -96
  61. package/src/service-locator/service-locator-instance-holder.mts +0 -63
  62. package/src/service-locator/service-locator-manager.mts +0 -89
  63. package/src/service-locator/service-locator.mts +0 -535
  64. package/src/service-locator/sync-injector.mts +0 -66
package/dist/index.mjs CHANGED
@@ -1,7 +1,7 @@
1
1
  var __create = Object.create;
2
2
  var __defProp = Object.defineProperty;
3
3
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __knownSymbol = (name2, symbol) => (symbol = Symbol[name2]) ? symbol : Symbol.for("Symbol." + name2);
4
+ var __knownSymbol = (name, symbol) => (symbol = Symbol[name]) ? symbol : Symbol.for("Symbol." + name);
5
5
  var __typeError = (msg) => {
6
6
  throw TypeError(msg);
7
7
  };
@@ -10,35 +10,35 @@ var __name = (target, value) => __defProp(target, "name", { value, configurable:
10
10
  var __decoratorStart = (base) => [, , , __create((base == null ? void 0 : base[__knownSymbol("metadata")]) ?? null)];
11
11
  var __decoratorStrings = ["class", "method", "getter", "setter", "accessor", "field", "value", "get", "set"];
12
12
  var __expectFn = (fn) => fn !== void 0 && typeof fn !== "function" ? __typeError("Function expected") : fn;
13
- var __decoratorContext = (kind, name2, done, metadata, fns) => ({ kind: __decoratorStrings[kind], name: name2, metadata, addInitializer: (fn) => done._ ? __typeError("Already initialized") : fns.push(__expectFn(fn || null)) });
13
+ var __decoratorContext = (kind, name, done, metadata, fns) => ({ kind: __decoratorStrings[kind], name, metadata, addInitializer: (fn) => done._ ? __typeError("Already initialized") : fns.push(__expectFn(fn || null)) });
14
14
  var __decoratorMetadata = (array, target) => __defNormalProp(target, __knownSymbol("metadata"), array[3]);
15
15
  var __runInitializers = (array, flags, self, value) => {
16
16
  for (var i = 0, fns = array[flags >> 1], n = fns && fns.length; i < n; i++) flags & 1 ? fns[i].call(self) : value = fns[i].call(self, value);
17
17
  return value;
18
18
  };
19
- var __decorateElement = (array, flags, name2, decorators, target, extra) => {
19
+ var __decorateElement = (array, flags, name, decorators, target, extra) => {
20
20
  var fn, it, done, ctx, access, k = flags & 7, s = !!(flags & 8), p = !!(flags & 16);
21
21
  var j = k > 3 ? array.length + 1 : k ? s ? 1 : 2 : 0, key = __decoratorStrings[k + 5];
22
22
  var initializers = k > 3 && (array[j - 1] = []), extraInitializers = array[j] || (array[j] = []);
23
- var desc = k && (!p && !s && (target = target.prototype), k < 5 && (k > 3 || !p) && __getOwnPropDesc(k < 4 ? target : { get [name2]() {
23
+ var desc = k && (!p && !s && (target = target.prototype), k < 5 && (k > 3 || !p) && __getOwnPropDesc(k < 4 ? target : { get [name]() {
24
24
  return __privateGet(this, extra);
25
- }, set [name2](x) {
25
+ }, set [name](x) {
26
26
  return __privateSet(this, extra, x);
27
- } }, name2));
28
- k ? p && k < 4 && __name(extra, (k > 2 ? "set " : k > 1 ? "get " : "") + name2) : __name(target, name2);
27
+ } }, name));
28
+ k ? p && k < 4 && __name(extra, (k > 2 ? "set " : k > 1 ? "get " : "") + name) : __name(target, name);
29
29
  for (var i = decorators.length - 1; i >= 0; i--) {
30
- ctx = __decoratorContext(k, name2, done = {}, array[3], extraInitializers);
30
+ ctx = __decoratorContext(k, name, done = {}, array[3], extraInitializers);
31
31
  if (k) {
32
- ctx.static = s, ctx.private = p, access = ctx.access = { has: p ? (x) => __privateIn(target, x) : (x) => name2 in x };
33
- if (k ^ 3) access.get = p ? (x) => (k ^ 1 ? __privateGet : __privateMethod)(x, target, k ^ 4 ? extra : desc.get) : (x) => x[name2];
34
- if (k > 2) access.set = p ? (x, y) => __privateSet(x, target, y, k ^ 4 ? extra : desc.set) : (x, y) => x[name2] = y;
32
+ ctx.static = s, ctx.private = p, access = ctx.access = { has: p ? (x) => __privateIn(target, x) : (x) => name in x };
33
+ if (k ^ 3) access.get = p ? (x) => (k ^ 1 ? __privateGet : __privateMethod)(x, target, k ^ 4 ? extra : desc.get) : (x) => x[name];
34
+ if (k > 2) access.set = p ? (x, y) => __privateSet(x, target, y, k ^ 4 ? extra : desc.set) : (x, y) => x[name] = y;
35
35
  }
36
36
  it = (0, decorators[i])(k ? k < 4 ? p ? extra : desc[key] : k > 4 ? void 0 : { get: desc.get, set: desc.set } : target, ctx), done._ = 1;
37
37
  if (k ^ 4 || it === void 0) __expectFn(it) && (k > 4 ? initializers.unshift(it) : k ? p ? extra = it : desc[key] = it : target = it);
38
38
  else if (typeof it !== "object" || it === null) __typeError("Object expected");
39
39
  else __expectFn(fn = it.get) && (desc.get = fn), __expectFn(fn = it.set) && (desc.set = fn), __expectFn(fn = it.init) && initializers.unshift(fn);
40
40
  }
41
- return k || __decoratorMetadata(array, target), desc && __defProp(target, name2, desc), p ? k ^ 4 ? extra : desc : target;
41
+ return k || __decoratorMetadata(array, target), desc && __defProp(target, name, desc), p ? k ^ 4 ? extra : desc : target;
42
42
  };
43
43
  var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg);
44
44
  var __privateIn = (member, obj) => Object(obj) !== obj ? __typeError('Cannot use the "in" operator on this value') : member.has(obj);
@@ -46,892 +46,14 @@ var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read fr
46
46
  var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), setter ? setter.call(obj, value) : member.set(obj, value), value);
47
47
  var __privateMethod = (obj, member, method) => (__accessCheck(obj, member, "access private method"), method);
48
48
 
49
- // packages/core/src/service-locator/decorators/injectable.decorator.mts
50
- import { NaviosException as NaviosException2 } from "@navios/common";
49
+ // packages/core/src/index.mts
50
+ export * from "@navios/di";
51
51
 
52
- // packages/core/src/service-locator/enums/injectable-scope.enum.mts
53
- var InjectableScope = /* @__PURE__ */ ((InjectableScope2) => {
54
- InjectableScope2["Singleton"] = "Singleton";
55
- InjectableScope2["Instance"] = "Instance";
56
- return InjectableScope2;
57
- })(InjectableScope || {});
58
-
59
- // packages/core/src/service-locator/injection-token.mts
60
- import { randomUUID } from "crypto";
61
- import "zod";
62
- var InjectionToken = class _InjectionToken {
63
- constructor(name2, schema) {
64
- this.name = name2;
65
- this.schema = schema;
66
- }
67
- id = randomUUID();
68
- static create(name2, schema) {
69
- return new _InjectionToken(name2, schema);
70
- }
71
- static bound(token, value) {
72
- return new BoundInjectionToken(token, value);
73
- }
74
- static factory(token, factory) {
75
- return new FactoryInjectionToken(token, factory);
76
- }
77
- static refineType(token) {
78
- return token;
79
- }
80
- };
81
- var BoundInjectionToken = class extends InjectionToken {
82
- constructor(token, value) {
83
- super(token.name, token.schema);
84
- this.token = token;
85
- this.value = value;
86
- this.id = token.id;
87
- }
88
- };
89
- var FactoryInjectionToken = class extends InjectionToken {
90
- constructor(token, factory) {
91
- super(token.name, token.schema);
92
- this.token = token;
93
- this.factory = factory;
94
- }
95
- value;
96
- resolved = false;
97
- async resolve() {
98
- if (!this.value) {
99
- this.value = await this.factory();
100
- this.resolved = true;
101
- }
102
- return this.value;
103
- }
104
- };
105
-
106
- // packages/core/src/service-locator/errors/errors.enum.mts
107
- var ErrorsEnum = /* @__PURE__ */ ((ErrorsEnum2) => {
108
- ErrorsEnum2["InstanceExpired"] = "InstanceExpired";
109
- ErrorsEnum2["InstanceNotFound"] = "InstanceNotFound";
110
- ErrorsEnum2["InstanceDestroying"] = "InstanceDestroying";
111
- ErrorsEnum2["UnknownError"] = "UnknownError";
112
- ErrorsEnum2["FactoryNotFound"] = "FactoryNotFound";
113
- ErrorsEnum2["FactoryTokenNotResolved"] = "FactoryTokenNotResolved";
114
- return ErrorsEnum2;
115
- })(ErrorsEnum || {});
116
-
117
- // packages/core/src/service-locator/errors/factory-not-found.mts
118
- var FactoryNotFound = class extends Error {
119
- constructor(name2) {
120
- super(`Factory ${name2} not found`);
121
- this.name = name2;
122
- }
123
- code = "FactoryNotFound" /* FactoryNotFound */;
124
- };
125
-
126
- // packages/core/src/service-locator/errors/factory-token-not-resolved.mts
127
- var FactoryTokenNotResolved = class extends Error {
128
- code = "FactoryTokenNotResolved" /* FactoryTokenNotResolved */;
129
- constructor(name2) {
130
- super(`Factory token not resolved: ${name2.toString()}`);
131
- }
132
- };
133
-
134
- // packages/core/src/service-locator/errors/instance-destroying.mts
135
- var InstanceDestroying = class extends Error {
136
- constructor(name2) {
137
- super(`Instance ${name2} destroying`);
138
- this.name = name2;
139
- }
140
- code = "InstanceDestroying" /* InstanceDestroying */;
141
- };
142
-
143
- // packages/core/src/service-locator/errors/instance-expired.mts
144
- var InstanceExpired = class extends Error {
145
- constructor(name2) {
146
- super(`Instance ${name2} expired`);
147
- this.name = name2;
148
- }
149
- code = "InstanceExpired" /* InstanceExpired */;
150
- };
151
-
152
- // packages/core/src/service-locator/errors/instance-not-found.mts
153
- var InstanceNotFound = class extends Error {
154
- constructor(name2) {
155
- super(`Instance ${name2} not found`);
156
- this.name = name2;
157
- }
158
- code = "InstanceNotFound" /* InstanceNotFound */;
159
- };
160
-
161
- // packages/core/src/service-locator/errors/unknown-error.mts
162
- var UnknownError = class extends Error {
163
- code = "UnknownError" /* UnknownError */;
164
- parent;
165
- constructor(message) {
166
- if (message instanceof Error) {
167
- super(message.message);
168
- this.parent = message;
169
- return;
170
- }
171
- super(message);
172
- }
173
- };
174
-
175
- // packages/core/src/service-locator/service-locator-event-bus.mts
176
- var ServiceLocatorEventBus = class {
177
- constructor(logger = null) {
178
- this.logger = logger;
179
- }
180
- listeners = /* @__PURE__ */ new Map();
181
- on(ns, event, listener) {
182
- var _a3;
183
- (_a3 = this.logger) == null ? void 0 : _a3.debug(`[ServiceLocatorEventBus]#on(): ns:${ns} event:${event}`);
184
- if (!this.listeners.has(ns)) {
185
- this.listeners.set(ns, /* @__PURE__ */ new Map());
186
- }
187
- const nsEvents = this.listeners.get(ns);
188
- if (!nsEvents.has(event)) {
189
- nsEvents.set(event, /* @__PURE__ */ new Set());
190
- }
191
- nsEvents.get(event).add(listener);
192
- return () => {
193
- var _a4;
194
- nsEvents.get(event).delete(listener);
195
- if (((_a4 = nsEvents.get(event)) == null ? void 0 : _a4.size) === 0) {
196
- nsEvents.delete(event);
197
- }
198
- if (nsEvents.size === 0) {
199
- this.listeners.delete(ns);
200
- }
201
- };
202
- }
203
- async emit(key, event) {
204
- var _a3, _b, _c;
205
- if (!this.listeners.has(key)) {
206
- return;
207
- }
208
- const events = this.listeners.get(key);
209
- const preEvent = `pre:${event}`;
210
- const postEvent = `post:${event}`;
211
- (_a3 = this.logger) == null ? void 0 : _a3.debug(`[ServiceLocatorEventBus]#emit(): ${key}:${preEvent}`);
212
- await Promise.allSettled(
213
- [...events.get(preEvent) ?? []].map((listener) => listener(preEvent))
214
- ).then((results) => {
215
- results.filter((result) => result.status === "rejected").forEach((result) => {
216
- var _a4;
217
- (_a4 = this.logger) == null ? void 0 : _a4.warn(
218
- `[ServiceLocatorEventBus]#emit(): ${key}:${preEvent} rejected with`,
219
- result.reason
220
- );
221
- });
222
- });
223
- (_b = this.logger) == null ? void 0 : _b.debug(`[ServiceLocatorEventBus]#emit(): ${key}:${event}`);
224
- const res = await Promise.allSettled(
225
- [...events.get(event) ?? []].map((listener) => listener(event))
226
- ).then((results) => {
227
- const res2 = results.filter((result) => result.status === "rejected").map((result) => {
228
- var _a4;
229
- (_a4 = this.logger) == null ? void 0 : _a4.warn(
230
- `[ServiceLocatorEventBus]#emit(): ${key}:${event} rejected with`,
231
- result.reason
232
- );
233
- return result;
234
- });
235
- if (res2.length > 0) {
236
- return Promise.reject(res2);
237
- }
238
- return results;
239
- });
240
- (_c = this.logger) == null ? void 0 : _c.debug(`[ServiceLocatorEventBus]#emit(): ${key}:${postEvent}`);
241
- await Promise.allSettled(
242
- [...events.get(postEvent) ?? []].map((listener) => listener(postEvent))
243
- ).then((results) => {
244
- results.filter((result) => result.status === "rejected").forEach((result) => {
245
- var _a4;
246
- (_a4 = this.logger) == null ? void 0 : _a4.warn(
247
- `[ServiceLocatorEventBus]#emit(): ${key}:${postEvent} rejected with`,
248
- result.reason
249
- );
250
- });
251
- });
252
- return res;
253
- }
254
- };
255
-
256
- // packages/core/src/service-locator/service-locator-instance-holder.mts
257
- var ServiceLocatorInstanceHolderKind = /* @__PURE__ */ ((ServiceLocatorInstanceHolderKind2) => {
258
- ServiceLocatorInstanceHolderKind2["Instance"] = "instance";
259
- ServiceLocatorInstanceHolderKind2["Factory"] = "factory";
260
- ServiceLocatorInstanceHolderKind2["AbstractFactory"] = "abstractFactory";
261
- return ServiceLocatorInstanceHolderKind2;
262
- })(ServiceLocatorInstanceHolderKind || {});
263
- var ServiceLocatorInstanceHolderStatus = /* @__PURE__ */ ((ServiceLocatorInstanceHolderStatus2) => {
264
- ServiceLocatorInstanceHolderStatus2["Created"] = "created";
265
- ServiceLocatorInstanceHolderStatus2["Creating"] = "creating";
266
- ServiceLocatorInstanceHolderStatus2["Destroying"] = "destroying";
267
- return ServiceLocatorInstanceHolderStatus2;
268
- })(ServiceLocatorInstanceHolderStatus || {});
269
-
270
- // packages/core/src/service-locator/service-locator-manager.mts
271
- var ServiceLocatorManager = class {
272
- constructor(logger = null) {
273
- this.logger = logger;
274
- }
275
- instancesHolders = /* @__PURE__ */ new Map();
276
- get(name2) {
277
- var _a3, _b, _c;
278
- const holder = this.instancesHolders.get(name2);
279
- if (holder) {
280
- if (holder.ttl !== Infinity) {
281
- const now = Date.now();
282
- if (now - holder.createdAt > holder.ttl) {
283
- (_a3 = this.logger) == null ? void 0 : _a3.log(
284
- `[ServiceLocatorManager]#getInstanceHolder() TTL expired for ${holder.name}`
285
- );
286
- return [new InstanceExpired(holder.name), holder];
287
- }
288
- } else if (holder.status === "destroying" /* Destroying */) {
289
- (_b = this.logger) == null ? void 0 : _b.log(
290
- `[ServiceLocatorManager]#getInstanceHolder() Instance ${holder.name} is destroying`
291
- );
292
- return [new InstanceDestroying(holder.name), holder];
293
- }
294
- return [void 0, holder];
295
- } else {
296
- (_c = this.logger) == null ? void 0 : _c.log(
297
- `[ServiceLocatorManager]#getInstanceHolder() Instance ${name2} not found`
298
- );
299
- return [new InstanceNotFound(name2)];
300
- }
301
- }
302
- set(name2, holder) {
303
- this.instancesHolders.set(name2, holder);
304
- }
305
- has(name2) {
306
- const [error, holder] = this.get(name2);
307
- if (!error) {
308
- return [void 0, true];
309
- }
310
- if (["InstanceExpired" /* InstanceExpired */, "InstanceDestroying" /* InstanceDestroying */].includes(
311
- error.code
312
- )) {
313
- return [error];
314
- }
315
- return [void 0, !!holder];
316
- }
317
- delete(name2) {
318
- return this.instancesHolders.delete(name2);
319
- }
320
- filter(predicate) {
321
- return new Map(
322
- [...this.instancesHolders].filter(
323
- ([key, value]) => predicate(value, key)
324
- )
325
- );
326
- }
327
- };
328
-
329
- // packages/core/src/service-locator/service-locator.mts
330
- var ServiceLocator = class {
331
- constructor(logger = null) {
332
- this.logger = logger;
333
- this.eventBus = new ServiceLocatorEventBus(logger);
334
- this.manager = new ServiceLocatorManager(logger);
335
- }
336
- abstractFactories = /* @__PURE__ */ new Map();
337
- instanceFactories = /* @__PURE__ */ new Map();
338
- eventBus;
339
- manager;
340
- getEventBus() {
341
- return this.eventBus;
342
- }
343
- registerInstance(token, instance) {
344
- const instanceName = this.getInstanceIdentifier(token, void 0);
345
- this.manager.set(instanceName, {
346
- name: instanceName,
347
- instance,
348
- status: "created" /* Created */,
349
- kind: "instance" /* Instance */,
350
- createdAt: Date.now(),
351
- ttl: Infinity,
352
- deps: [],
353
- destroyListeners: [],
354
- effects: [],
355
- destroyPromise: null,
356
- creationPromise: null
357
- });
358
- this.eventBus.emit(instanceName, "create");
359
- }
360
- removeInstance(token) {
361
- const instanceName = this.getInstanceIdentifier(token, void 0);
362
- return this.invalidate(instanceName);
363
- }
364
- registerAbstractFactory(token, factory, type = "Singleton" /* Singleton */) {
365
- var _a3;
366
- (_a3 = this.logger) == null ? void 0 : _a3.log(
367
- `[ServiceLocator]#registerAbstractFactory(): Registering abstract factory for ${name}`
368
- );
369
- if (type === "Instance" /* Instance */) {
370
- this.instanceFactories.set(token, factory);
371
- this.abstractFactories.delete(token);
372
- } else {
373
- this.abstractFactories.set(token, factory);
374
- this.instanceFactories.delete(token);
375
- }
376
- }
377
- resolveTokenArgs(token, args) {
378
- var _a3, _b;
379
- let realArgs = args;
380
- if (token instanceof BoundInjectionToken) {
381
- realArgs = token.value;
382
- } else if (token instanceof FactoryInjectionToken) {
383
- if (token.resolved) {
384
- realArgs = token.value;
385
- } else {
386
- return [new FactoryTokenNotResolved(token.name)];
387
- }
388
- }
389
- if (!token.schema) {
390
- return [void 0, realArgs];
391
- }
392
- const validatedArgs = (_a3 = token.schema) == null ? void 0 : _a3.safeParse(realArgs);
393
- if (validatedArgs && !validatedArgs.success) {
394
- (_b = this.logger) == null ? void 0 : _b.error(
395
- `[ServiceLocator]#getInstance(): Error validating args for ${token.name.toString()}`,
396
- validatedArgs.error
397
- );
398
- return [new UnknownError(validatedArgs.error)];
399
- }
400
- return [void 0, validatedArgs == null ? void 0 : validatedArgs.data];
401
- }
402
- getInstanceIdentifier(token, args) {
403
- const [err, realArgs] = this.resolveTokenArgs(token, args);
404
- if (err) {
405
- throw err;
406
- }
407
- return this.makeInstanceName(token, realArgs);
408
- }
409
- async getInstance(token, args) {
410
- var _a3, _b;
411
- const [err, realArgs] = this.resolveTokenArgs(token, args);
412
- if (err instanceof UnknownError) {
413
- throw err;
414
- } else if (err instanceof FactoryTokenNotResolved && token instanceof FactoryInjectionToken) {
415
- await token.resolve();
416
- return this.getInstance(token, args);
417
- }
418
- const instanceName = this.makeInstanceName(token, realArgs);
419
- const [error, holder] = this.manager.get(instanceName);
420
- if (!error) {
421
- if (holder.status === "creating" /* Creating */) {
422
- return holder.creationPromise;
423
- } else if (holder.status === "destroying" /* Destroying */) {
424
- return [new UnknownError("InstanceDestroying" /* InstanceDestroying */)];
425
- }
426
- return [void 0, holder.instance];
427
- }
428
- switch (error.code) {
429
- case "InstanceDestroying" /* InstanceDestroying */:
430
- (_a3 = this.logger) == null ? void 0 : _a3.log(
431
- `[ServiceLocator]#getInstance() TTL expired for ${holder == null ? void 0 : holder.name}`
432
- );
433
- await (holder == null ? void 0 : holder.destroyPromise);
434
- return this.getInstance(token, args);
435
- case "InstanceExpired" /* InstanceExpired */:
436
- (_b = this.logger) == null ? void 0 : _b.log(
437
- `[ServiceLocator]#getInstance() TTL expired for ${holder == null ? void 0 : holder.name}`
438
- );
439
- await this.invalidate(instanceName);
440
- return this.getInstance(token, args);
441
- case "InstanceNotFound" /* InstanceNotFound */:
442
- break;
443
- default:
444
- return [error];
445
- }
446
- return this.createInstance(instanceName, token, realArgs);
447
- }
448
- async getOrThrowInstance(token, args) {
449
- const [error, instance] = await this.getInstance(token, args);
450
- if (error) {
451
- throw error;
452
- }
453
- return instance;
454
- }
455
- notifyListeners(name2, event = "create") {
456
- var _a3;
457
- (_a3 = this.logger) == null ? void 0 : _a3.log(
458
- `[ServiceLocator]#notifyListeners() Notifying listeners for ${name2} with event ${event}`
459
- );
460
- return this.eventBus.emit(name2, event);
461
- }
462
- async createInstance(instanceName, token, args) {
463
- var _a3;
464
- (_a3 = this.logger) == null ? void 0 : _a3.log(
465
- `[ServiceLocator]#createInstance() Creating instance for ${instanceName}`
466
- );
467
- let realToken = token instanceof BoundInjectionToken || token instanceof FactoryInjectionToken ? token.token : token;
468
- if (this.abstractFactories.has(realToken) || this.instanceFactories.has(realToken)) {
469
- return this.createInstanceFromAbstractFactory(
470
- instanceName,
471
- realToken,
472
- args
473
- );
474
- } else {
475
- return [new FactoryNotFound(realToken.name.toString())];
476
- }
477
- }
478
- async createInstanceFromAbstractFactory(instanceName, token, args) {
479
- var _a3;
480
- (_a3 = this.logger) == null ? void 0 : _a3.log(
481
- `[ServiceLocator]#createInstanceFromAbstractFactory(): Creating instance for ${instanceName} from abstract factory`
482
- );
483
- const ctx = this.createContextForAbstractFactory(instanceName);
484
- let shouldStore = true;
485
- let abstractFactory = this.abstractFactories.get(token);
486
- if (!abstractFactory) {
487
- abstractFactory = this.instanceFactories.get(token);
488
- shouldStore = false;
489
- if (!abstractFactory) {
490
- return [new FactoryNotFound(token.name.toString())];
491
- }
492
- }
493
- const holder = {
494
- name: instanceName,
495
- instance: null,
496
- status: "creating" /* Creating */,
497
- kind: "abstractFactory" /* AbstractFactory */,
498
- // @ts-expect-error TS2322 This is correct type
499
- creationPromise: abstractFactory(ctx, args).then(async (instance) => {
500
- var _a4;
501
- holder.instance = instance;
502
- holder.status = "created" /* Created */;
503
- holder.deps = ctx.getDependencies();
504
- holder.destroyListeners = ctx.getDestroyListeners();
505
- holder.ttl = ctx.getTtl();
506
- if (holder.deps.length > 0) {
507
- (_a4 = this.logger) == null ? void 0 : _a4.log(
508
- `[ServiceLocator]#createInstanceFromAbstractFactory(): Adding subscriptions for ${instanceName} dependencies for their invalidations: ${holder.deps.join(
509
- ", "
510
- )}`
511
- );
512
- holder.deps.forEach((dependency) => {
513
- holder.destroyListeners.push(
514
- this.eventBus.on(
515
- dependency,
516
- "destroy",
517
- () => this.invalidate(instanceName)
518
- )
519
- );
520
- });
521
- }
522
- if (holder.ttl === 0 || !shouldStore) {
523
- await this.invalidate(instanceName);
524
- }
525
- await this.notifyListeners(instanceName);
526
- return [void 0, instance];
527
- }).catch((error) => {
528
- var _a4;
529
- (_a4 = this.logger) == null ? void 0 : _a4.error(
530
- `[ServiceLocator]#createInstanceFromAbstractFactory(): Error creating instance for ${instanceName}`,
531
- error
532
- );
533
- return [new UnknownError(error)];
534
- }),
535
- effects: [],
536
- deps: [],
537
- destroyListeners: [],
538
- createdAt: Date.now(),
539
- ttl: Infinity
540
- };
541
- if (shouldStore) {
542
- this.manager.set(instanceName, holder);
543
- }
544
- return holder.creationPromise;
545
- }
546
- createContextForAbstractFactory(instanceName) {
547
- const dependencies = /* @__PURE__ */ new Set();
548
- const destroyListeners = /* @__PURE__ */ new Set();
549
- const self = this;
550
- function invalidate(name2 = instanceName) {
551
- return self.invalidate(name2);
552
- }
553
- function addEffect(listener) {
554
- destroyListeners.add(listener);
555
- }
556
- let ttl = Infinity;
557
- function setTtl(value) {
558
- ttl = value;
559
- }
560
- function getTtl() {
561
- return ttl;
562
- }
563
- function on(key, event, listener) {
564
- destroyListeners.add(self.eventBus.on(key, event, listener));
565
- }
566
- return {
567
- // @ts-expect-error This is correct type
568
- async inject(token, args) {
569
- let injectionToken = token;
570
- if (typeof token === "function") {
571
- injectionToken = getInjectableToken(token);
572
- }
573
- if (injectionToken instanceof InjectionToken) {
574
- const validatedArgs = token.schema ? token.schema.safeParse(args) : void 0;
575
- const instanceName2 = self.makeInstanceName(token, validatedArgs);
576
- dependencies.add(instanceName2);
577
- return self.getOrThrowInstance(injectionToken, args);
578
- }
579
- throw new Error(
580
- `[ServiceLocator]#inject(): Invalid token type: ${typeof token}. Expected a class or an InjectionToken.`
581
- );
582
- },
583
- invalidate,
584
- eventBus: self.eventBus,
585
- on,
586
- getDependencies: () => Array.from(dependencies),
587
- addEffect,
588
- getDestroyListeners: () => Array.from(destroyListeners),
589
- setTtl,
590
- getTtl
591
- };
592
- }
593
- getSyncInstance(token, args) {
594
- const [err, realArgs] = this.resolveTokenArgs(token, args);
595
- if (err) {
596
- return null;
597
- }
598
- const instanceName = this.makeInstanceName(token, realArgs);
599
- const [error, holder] = this.manager.get(instanceName);
600
- if (error) {
601
- return null;
602
- }
603
- return holder.instance;
604
- }
605
- invalidate(service, round = 1) {
606
- var _a3, _b, _c, _d, _e;
607
- (_a3 = this.logger) == null ? void 0 : _a3.log(
608
- `[ServiceLocator]#invalidate(): Starting Invalidating process of ${service}`
609
- );
610
- const toInvalidate = this.manager.filter(
611
- (holder) => holder.name === service || holder.deps.includes(service)
612
- );
613
- const promises = [];
614
- for (const [key, holder] of toInvalidate.entries()) {
615
- if (holder.status === "destroying" /* Destroying */) {
616
- (_b = this.logger) == null ? void 0 : _b.trace(
617
- `[ServiceLocator]#invalidate(): ${key} is already being destroyed`
618
- );
619
- promises.push(holder.destroyPromise);
620
- continue;
621
- }
622
- if (holder.status === "creating" /* Creating */) {
623
- (_c = this.logger) == null ? void 0 : _c.trace(
624
- `[ServiceLocator]#invalidate(): ${key} is being created, waiting for creation to finish`
625
- );
626
- promises.push(
627
- (_d = holder.creationPromise) == null ? void 0 : _d.then(() => {
628
- var _a4;
629
- if (round > 3) {
630
- (_a4 = this.logger) == null ? void 0 : _a4.error(
631
- `[ServiceLocator]#invalidate(): ${key} creation is triggering a new invalidation round, but it is still not created`
632
- );
633
- return;
634
- }
635
- return this.invalidate(key, round + 1);
636
- })
637
- );
638
- continue;
639
- }
640
- holder.status = "destroying" /* Destroying */;
641
- (_e = this.logger) == null ? void 0 : _e.log(
642
- `[ServiceLocator]#invalidate(): Invalidating ${key} and notifying listeners`
643
- );
644
- holder.destroyPromise = Promise.all(
645
- holder.destroyListeners.map((listener) => listener())
646
- ).then(async () => {
647
- this.manager.delete(key);
648
- await this.notifyListeners(key, "destroy");
649
- });
650
- promises.push(holder.destroyPromise);
651
- }
652
- return Promise.all(promises);
653
- }
654
- async ready() {
655
- return Promise.all(
656
- Array.from(this.manager.filter(() => true)).map(([, holder]) => {
657
- var _a3;
658
- if (holder.status === "creating" /* Creating */) {
659
- return (_a3 = holder.creationPromise) == null ? void 0 : _a3.then(() => null);
660
- }
661
- if (holder.status === "destroying" /* Destroying */) {
662
- return holder.destroyPromise.then(() => null);
663
- }
664
- return Promise.resolve(null);
665
- })
666
- ).then(() => null);
667
- }
668
- makeInstanceName(token, args) {
669
- let stringifiedArgs = args ? ":" + JSON.stringify(args, (_, value) => {
670
- if (typeof value === "function") {
671
- return `function:${value.name}(${value.length})`;
672
- }
673
- if (typeof value === "symbol") {
674
- return value.toString();
675
- }
676
- return value;
677
- }).replaceAll(/"/g, "").replaceAll(/:/g, "=").replaceAll(/,/g, "|") : "";
678
- const { name: name2 } = token;
679
- if (typeof name2 === "function") {
680
- const className = name2.name;
681
- return `${className}(${token.id})${stringifiedArgs}`;
682
- } else if (typeof name2 === "symbol") {
683
- return `${name2.toString()}(${token.id})${stringifiedArgs}`;
684
- } else {
685
- return `${name2}(${token.id})${stringifiedArgs}`;
686
- }
687
- }
688
- };
689
-
690
- // packages/core/src/service-locator/injector.mts
691
- var serviceLocator = new ServiceLocator();
692
- function provideServiceLocator(locator) {
693
- const original = serviceLocator;
694
- serviceLocator = locator;
695
- return original;
696
- }
697
- function getServiceLocator() {
698
- if (!serviceLocator) {
699
- throw new Error(
700
- "[ServiceLocator] Service locator is not initialized. Please provide the service locator before using the @Injectable decorator."
701
- );
702
- }
703
- return serviceLocator;
704
- }
705
-
706
- // packages/core/src/service-locator/resolve-service.mts
707
- import { NaviosException } from "@navios/common";
708
-
709
- // packages/core/src/service-locator/proxy-service-locator.mts
710
- var ProxyServiceLocator = class {
711
- constructor(serviceLocator2, ctx) {
712
- this.serviceLocator = serviceLocator2;
713
- this.ctx = ctx;
714
- }
715
- get abstractFactories() {
716
- return this.serviceLocator["abstractFactories"];
717
- }
718
- getEventBus() {
719
- return this.serviceLocator.getEventBus();
720
- }
721
- registerAbstractFactory(token, factory) {
722
- return this.serviceLocator.registerAbstractFactory(token, factory);
723
- }
724
- getInstance(token, args) {
725
- return this.ctx.inject(token, args).then(
726
- (instance) => {
727
- return [void 0, instance];
728
- },
729
- (error) => {
730
- return [error];
731
- }
732
- );
733
- }
734
- getOrThrowInstance(token, args) {
735
- return this.ctx.inject(token, args);
736
- }
737
- getSyncInstance(token, args) {
738
- return this.serviceLocator.getSyncInstance(token, args);
739
- }
740
- invalidate(service, round) {
741
- return this.serviceLocator.invalidate(service, round);
742
- }
743
- ready() {
744
- return this.serviceLocator.ready();
745
- }
746
- makeInstanceName(token, args) {
747
- return this.serviceLocator.makeInstanceName(token, args);
748
- }
749
- };
750
- function makeProxyServiceLocator(serviceLocator2, ctx) {
751
- return new ProxyServiceLocator(serviceLocator2, ctx);
752
- }
753
-
754
- // packages/core/src/service-locator/sync-injector.mts
755
- var promiseCollector = null;
756
- function syncInject(token, args) {
757
- let realToken = token;
758
- if (!(token instanceof InjectionToken)) {
759
- realToken = getInjectableToken(token);
760
- }
761
- const instance = getServiceLocator().getSyncInstance(realToken, args);
762
- if (!instance) {
763
- if (promiseCollector) {
764
- const promise = getServiceLocator().getInstance(realToken, args);
765
- promiseCollector(promise);
766
- } else {
767
- throw new Error(
768
- `[ServiceLocator] No instance found for ${realToken.name.toString()}`
769
- );
770
- }
771
- }
772
- return instance;
773
- }
774
- function setPromiseCollector(collector) {
775
- const original = promiseCollector;
776
- promiseCollector = collector;
777
- return original;
778
- }
779
-
780
- // packages/core/src/service-locator/resolve-service.mts
781
- async function resolveService(ctx, target, args = []) {
782
- const proxyServiceLocator = makeProxyServiceLocator(getServiceLocator(), ctx);
783
- let promises = [];
784
- const promiseCollector2 = (promise) => {
785
- promises.push(promise);
786
- };
787
- const originalPromiseCollector = setPromiseCollector(promiseCollector2);
788
- const tryLoad = () => {
789
- const original = provideServiceLocator(proxyServiceLocator);
790
- let result = new target(...args);
791
- provideServiceLocator(original);
792
- return result;
793
- };
794
- let instance = tryLoad();
795
- setPromiseCollector(originalPromiseCollector);
796
- if (promises.length > 0) {
797
- await Promise.all(promises);
798
- promises = [];
799
- instance = tryLoad();
800
- }
801
- if (promises.length > 0) {
802
- console.error(`[ServiceLocator] ${target.name} has problem with it's definition.
803
-
804
- One or more of the dependencies are registered as a InjectableScope.Instance and are used with syncInject.
805
-
806
- Please use inject instead of syncInject to load those dependencies.`);
807
- throw new NaviosException(
808
- `[ServiceLocator] Service ${target.name} cannot be instantiated.`
809
- );
810
- }
811
- return instance;
812
- }
813
-
814
- // packages/core/src/service-locator/decorators/injectable.decorator.mts
815
- var InjectableType = /* @__PURE__ */ ((InjectableType2) => {
816
- InjectableType2["Class"] = "Class";
817
- InjectableType2["Factory"] = "Factory";
818
- return InjectableType2;
819
- })(InjectableType || {});
820
- var InjectableTokenMeta = Symbol.for("InjectableTokenMeta");
821
- function Injectable({
822
- scope = "Singleton" /* Singleton */,
823
- type = "Class" /* Class */,
824
- token
825
- } = {}) {
826
- return (target, context) => {
827
- if (context.kind !== "class") {
828
- throw new Error(
829
- "[ServiceLocator] @Injectable decorator can only be used on classes."
830
- );
831
- }
832
- let injectableToken = token ?? InjectionToken.create(target);
833
- const locator = getServiceLocator();
834
- if (type === "Class" /* Class */) {
835
- locator.registerAbstractFactory(
836
- injectableToken,
837
- async (ctx) => resolveService(ctx, target),
838
- scope
839
- );
840
- } else if (type === "Factory" /* Factory */) {
841
- locator.registerAbstractFactory(
842
- injectableToken,
843
- async (ctx, args) => {
844
- const builder = await resolveService(ctx, target);
845
- if (typeof builder.create !== "function") {
846
- throw new NaviosException2(
847
- `[ServiceLocator] Factory ${target.name} does not implement the create method.`
848
- );
849
- }
850
- return builder.create(ctx, args);
851
- },
852
- scope
853
- );
854
- }
855
- target[InjectableTokenMeta] = injectableToken;
856
- return target;
857
- };
858
- }
859
-
860
- // packages/core/src/service-locator/decorators/get-injectable-token.mts
861
- function getInjectableToken(target) {
862
- const token = target[InjectableTokenMeta];
863
- if (!token) {
864
- throw new Error(
865
- `[ServiceLocator] Class ${target.name} is not decorated with @Injectable.`
866
- );
867
- }
868
- return token;
869
- }
870
-
871
- // packages/core/src/service-locator/event-emitter.mts
872
- var EventEmitter = class {
873
- listeners = /* @__PURE__ */ new Map();
874
- on(event, listener) {
875
- if (!this.listeners.has(event)) {
876
- this.listeners.set(event, /* @__PURE__ */ new Set());
877
- }
878
- this.listeners.get(event).add(listener);
879
- return () => {
880
- this.off(event, listener);
881
- };
882
- }
883
- off(event, listener) {
884
- if (!this.listeners.has(event)) {
885
- return;
886
- }
887
- this.listeners.get(event).delete(listener);
888
- if (this.listeners.get(event).size === 0) {
889
- this.listeners.delete(event);
890
- }
891
- }
892
- once(event, listener) {
893
- const off = this.on(event, (...args) => {
894
- off();
895
- listener(...args);
896
- });
897
- return off;
898
- }
899
- async emit(event, ...args) {
900
- if (!this.listeners.has(event)) {
901
- return;
902
- }
903
- return Promise.all(Array.from(this.listeners.get(event)).map((listener) => listener(...args)));
904
- }
905
- addChannel(ns, event, target) {
906
- return this.on(event, (...args) => target.emit(ns, event, ...args));
907
- }
908
- };
909
-
910
- // packages/core/src/service-locator/inject.mts
911
- function inject(token, args) {
912
- let realToken = token;
913
- if (!(token instanceof InjectionToken)) {
914
- realToken = getInjectableToken(token);
915
- }
916
- return getServiceLocator().getOrThrowInstance(realToken, args);
917
- }
918
-
919
- // packages/core/src/service-locator/override.mts
920
- function override(token, target) {
921
- const serviceLocator2 = getServiceLocator();
922
- const originalDefinition = serviceLocator2["abstractFactories"].get(token);
923
- serviceLocator2.registerAbstractFactory(token, async (ctx, args) => {
924
- const builder = new target();
925
- return builder.create(ctx, args);
926
- });
927
- return () => {
928
- if (originalDefinition) {
929
- serviceLocator2.registerAbstractFactory(token, originalDefinition);
930
- }
931
- };
932
- }
52
+ // packages/core/src/adapters/endpoint-adapter.service.mts
53
+ import { inject as inject2, Injectable as Injectable2, InjectionToken as InjectionToken2 } from "@navios/di";
933
54
 
934
55
  // packages/core/src/adapters/stream-adapter.service.mts
56
+ import { inject, Injectable, InjectionToken } from "@navios/di";
935
57
  var StreamAdapterToken = InjectionToken.create(
936
58
  Symbol.for("StreamAdapterService")
937
59
  );
@@ -1001,11 +123,11 @@ StreamAdapterService = __decorateElement(_init, 0, "StreamAdapterService", _Stre
1001
123
  __runInitializers(_init, 1, StreamAdapterService);
1002
124
 
1003
125
  // packages/core/src/adapters/endpoint-adapter.service.mts
1004
- var EndpointAdapterToken = InjectionToken.create(
126
+ var EndpointAdapterToken = InjectionToken2.create(
1005
127
  Symbol.for("EndpointAdapterService")
1006
128
  );
1007
129
  var _EndpointAdapterService_decorators, _init2, _a;
1008
- _EndpointAdapterService_decorators = [Injectable({
130
+ _EndpointAdapterService_decorators = [Injectable2({
1009
131
  token: EndpointAdapterToken
1010
132
  })];
1011
133
  var EndpointAdapterService = class extends (_a = StreamAdapterService) {
@@ -1038,7 +160,7 @@ var EndpointAdapterService = class extends (_a = StreamAdapterService) {
1038
160
  return argument;
1039
161
  };
1040
162
  return async function(request, reply) {
1041
- const controllerInstance = await inject(controller);
163
+ const controllerInstance = await inject2(controller);
1042
164
  const argument = await formatArguments(request);
1043
165
  const result = await controllerInstance[handlerMetadata.classMethod](argument);
1044
166
  reply.status(handlerMetadata.successStatusCode).headers(handlerMetadata.headers).send(result);
@@ -1050,12 +172,13 @@ EndpointAdapterService = __decorateElement(_init2, 0, "EndpointAdapterService",
1050
172
  __runInitializers(_init2, 1, EndpointAdapterService);
1051
173
 
1052
174
  // packages/core/src/adapters/multipart-adapter.service.mts
1053
- import { ZodArray, ZodObject, ZodOptional as ZodOptional2 } from "zod";
1054
- var MultipartAdapterToken = InjectionToken.create(
175
+ import { Injectable as Injectable3, InjectionToken as InjectionToken3 } from "@navios/di";
176
+ import { ZodArray, ZodObject, ZodOptional } from "zod";
177
+ var MultipartAdapterToken = InjectionToken3.create(
1055
178
  Symbol.for("MultipartAdapterService")
1056
179
  );
1057
180
  var _MultipartAdapterService_decorators, _init3, _a2;
1058
- _MultipartAdapterService_decorators = [Injectable({
181
+ _MultipartAdapterService_decorators = [Injectable3({
1059
182
  token: MultipartAdapterToken
1060
183
  })];
1061
184
  var MultipartAdapterService = class extends (_a2 = EndpointAdapterService) {
@@ -1110,7 +233,7 @@ var MultipartAdapterService = class extends (_a2 = EndpointAdapterService) {
1110
233
  return Object.keys(shape).reduce(
1111
234
  (target, key) => {
1112
235
  let schema = shape[key];
1113
- const isOptional = schema instanceof ZodOptional2;
236
+ const isOptional = schema instanceof ZodOptional;
1114
237
  if (isOptional) {
1115
238
  schema = schema.unwrap();
1116
239
  }
@@ -1160,7 +283,13 @@ function envString(key, defaultValue) {
1160
283
  }
1161
284
 
1162
285
  // packages/core/src/config/config.provider.mts
1163
- import { z as z3 } from "zod";
286
+ import {
287
+ Injectable as Injectable10,
288
+ InjectableType as InjectableType2,
289
+ InjectionToken as InjectionToken11,
290
+ syncInject as syncInject3
291
+ } from "@navios/di";
292
+ import { z as z2 } from "zod";
1164
293
 
1165
294
  // packages/core/src/logger/utils/cli-colors.util.mts
1166
295
  var isColorAllowed = () => !process.env.NO_COLOR;
@@ -1259,13 +388,26 @@ var isSymbol = (val) => typeof val === "symbol";
1259
388
 
1260
389
  // packages/core/src/logger/console-logger.service.mts
1261
390
  import { inspect } from "util";
391
+ import { getGlobalServiceLocator as getGlobalServiceLocator2, Injectable as Injectable7 } from "@navios/di";
1262
392
 
1263
393
  // packages/core/src/tokens/application.token.mts
394
+ import { InjectionToken as InjectionToken4 } from "@navios/di";
1264
395
  var ApplicationInjectionToken = "ApplicationInjectionToken";
1265
- var Application = InjectionToken.create(
396
+ var Application = InjectionToken4.create(
1266
397
  ApplicationInjectionToken
1267
398
  );
1268
399
 
400
+ // packages/core/src/tokens/execution-context.token.mts
401
+ import { InjectionToken as InjectionToken7 } from "@navios/di";
402
+
403
+ // packages/core/src/services/controller-adapter.service.mts
404
+ import {
405
+ getGlobalServiceLocator,
406
+ inject as inject4,
407
+ Injectable as Injectable5,
408
+ syncInject
409
+ } from "@navios/di";
410
+
1269
411
  // packages/core/src/metadata/handler.metadata.mts
1270
412
  var EndpointMetadataKey = Symbol("EndpointMetadataKey");
1271
413
  function getAllEndpointMetadata(context) {
@@ -1421,6 +563,9 @@ var ExecutionContext = class {
1421
563
  }
1422
564
  };
1423
565
 
566
+ // packages/core/src/services/guard-runner.service.mts
567
+ import { inject as inject3, Injectable as Injectable4 } from "@navios/di";
568
+
1424
569
  // packages/core/src/exceptions/http.exception.mts
1425
570
  var HttpException = class {
1426
571
  constructor(statusCode, response, error) {
@@ -1476,12 +621,12 @@ var ConflictException = class extends HttpException {
1476
621
 
1477
622
  // packages/core/src/services/guard-runner.service.mts
1478
623
  var _GuardRunnerService_decorators, _init4;
1479
- _GuardRunnerService_decorators = [Injectable()];
624
+ _GuardRunnerService_decorators = [Injectable4()];
1480
625
  var GuardRunnerService = class {
1481
626
  async runGuards(allGuards, executionContext) {
1482
627
  let canActivate = true;
1483
628
  for (const guard of Array.from(allGuards).reverse()) {
1484
- const guardInstance = await inject(
629
+ const guardInstance = await inject3(
1485
630
  guard
1486
631
  );
1487
632
  if (!guardInstance.canActivate) {
@@ -1544,7 +689,7 @@ __runInitializers(_init4, 1, GuardRunnerService);
1544
689
 
1545
690
  // packages/core/src/services/controller-adapter.service.mts
1546
691
  var _ControllerAdapterService_decorators, _init5;
1547
- _ControllerAdapterService_decorators = [Injectable()];
692
+ _ControllerAdapterService_decorators = [Injectable5()];
1548
693
  var _ControllerAdapterService = class _ControllerAdapterService {
1549
694
  guardRunner = syncInject(GuardRunnerService);
1550
695
  logger = syncInject(Logger, {
@@ -1560,7 +705,7 @@ var _ControllerAdapterService = class _ControllerAdapterService {
1560
705
  `[Navios] Malformed Endpoint ${controller.name}:${classMethod}`
1561
706
  );
1562
707
  }
1563
- const adapter = await inject(
708
+ const adapter = await inject4(
1564
709
  adapterToken
1565
710
  );
1566
711
  const executionContext = new ExecutionContext(
@@ -1613,11 +758,11 @@ var _ControllerAdapterService = class _ControllerAdapterService {
1613
758
  ) : void 0;
1614
759
  }
1615
760
  wrapHandler(executionContext, handler) {
1616
- const locator = getServiceLocator();
761
+ const locator = getGlobalServiceLocator();
1617
762
  return async (request, reply) => {
1618
- locator.registerInstance(Request, request);
1619
- locator.registerInstance(Reply, reply);
1620
- locator.registerInstance(ExecutionContextToken, executionContext);
763
+ locator.storeInstance(request, Request);
764
+ locator.storeInstance(reply, Reply);
765
+ locator.storeInstance(executionContext, ExecutionContextToken);
1621
766
  executionContext.provideRequest(request);
1622
767
  executionContext.provideReply(reply);
1623
768
  try {
@@ -1640,10 +785,11 @@ __runInitializers(_init5, 1, _ControllerAdapterService);
1640
785
  var ControllerAdapterService = _ControllerAdapterService;
1641
786
 
1642
787
  // packages/core/src/services/module-loader.service.mts
788
+ import { inject as inject5, Injectable as Injectable6, syncInject as syncInject2 } from "@navios/di";
1643
789
  var _ModuleLoaderService_decorators, _init6;
1644
- _ModuleLoaderService_decorators = [Injectable()];
790
+ _ModuleLoaderService_decorators = [Injectable6()];
1645
791
  var _ModuleLoaderService = class _ModuleLoaderService {
1646
- logger = syncInject(Logger, {
792
+ logger = syncInject2(Logger, {
1647
793
  context: _ModuleLoaderService.name
1648
794
  });
1649
795
  modulesMetadata = /* @__PURE__ */ new Map();
@@ -1671,7 +817,7 @@ var _ModuleLoaderService = class _ModuleLoaderService {
1671
817
  async (importedModule) => this.traverseModules(importedModule, metadata)
1672
818
  );
1673
819
  await Promise.all(loadingPromises);
1674
- const instance = await inject(module);
820
+ const instance = await inject5(module);
1675
821
  if (instance.onModuleInit) {
1676
822
  await instance.onModuleInit();
1677
823
  }
@@ -1709,17 +855,19 @@ var ModuleLoaderService = _ModuleLoaderService;
1709
855
 
1710
856
  // packages/core/src/tokens/execution-context.token.mts
1711
857
  var ExecutionContextInjectionToken = "ExecutionContextInjectionToken";
1712
- var ExecutionContextToken = InjectionToken.create(
858
+ var ExecutionContextToken = InjectionToken7.create(
1713
859
  ExecutionContextInjectionToken
1714
860
  );
1715
861
 
1716
862
  // packages/core/src/tokens/reply.token.mts
863
+ import { InjectionToken as InjectionToken8 } from "@navios/di";
1717
864
  var ReplyInjectionToken = "ReplyInjectionToken";
1718
- var Reply = InjectionToken.create(ReplyInjectionToken);
865
+ var Reply = InjectionToken8.create(ReplyInjectionToken);
1719
866
 
1720
867
  // packages/core/src/tokens/request.token.mts
868
+ import { InjectionToken as InjectionToken9 } from "@navios/di";
1721
869
  var RequestInjectionToken = "RequestInjectionToken";
1722
- var Request = InjectionToken.create(
870
+ var Request = InjectionToken9.create(
1723
871
  RequestInjectionToken
1724
872
  );
1725
873
 
@@ -1742,7 +890,7 @@ var dateTimeFormatter = new Intl.DateTimeFormat(void 0, {
1742
890
  month: "2-digit"
1743
891
  });
1744
892
  var _ConsoleLogger_decorators, _init7;
1745
- _ConsoleLogger_decorators = [Injectable()];
893
+ _ConsoleLogger_decorators = [Injectable7()];
1746
894
  var _ConsoleLogger = class _ConsoleLogger {
1747
895
  /**
1748
896
  * The options of the logger.
@@ -1781,7 +929,7 @@ var _ConsoleLogger = class _ConsoleLogger {
1781
929
  this.originalContext = context;
1782
930
  }
1783
931
  if (opts == null ? void 0 : opts.requestId) {
1784
- const locator = getServiceLocator();
932
+ const locator = getGlobalServiceLocator2();
1785
933
  locator.getEventBus().on(locator.getInstanceIdentifier(Request, void 0), "create", () => {
1786
934
  const request = locator.getSyncInstance(Request, void 0);
1787
935
  this.requestId = (request == null ? void 0 : request.id) ?? null;
@@ -2101,9 +1249,11 @@ __runInitializers(_init7, 1, _ConsoleLogger);
2101
1249
  var ConsoleLogger = _ConsoleLogger;
2102
1250
 
2103
1251
  // packages/core/src/logger/logger.factory.mts
2104
- import { z as z2 } from "zod";
1252
+ import { Injectable as Injectable9, InjectableType, InjectionToken as InjectionToken10 } from "@navios/di";
1253
+ import { z } from "zod";
2105
1254
 
2106
1255
  // packages/core/src/logger/logger.service.mts
1256
+ import { Injectable as Injectable8 } from "@navios/di";
2107
1257
  var DEFAULT_LOGGER = new ConsoleLogger();
2108
1258
  var dateTimeFormatter2 = new Intl.DateTimeFormat(void 0, {
2109
1259
  year: "numeric",
@@ -2114,7 +1264,7 @@ var dateTimeFormatter2 = new Intl.DateTimeFormat(void 0, {
2114
1264
  month: "2-digit"
2115
1265
  });
2116
1266
  var _LoggerInstance_decorators, _init8;
2117
- _LoggerInstance_decorators = [Injectable()];
1267
+ _LoggerInstance_decorators = [Injectable8()];
2118
1268
  var _LoggerInstance = class _LoggerInstance {
2119
1269
  constructor(context, options = {}) {
2120
1270
  this.context = context;
@@ -2228,16 +1378,16 @@ var LoggerInstance = _LoggerInstance;
2228
1378
 
2229
1379
  // packages/core/src/logger/logger.factory.mts
2230
1380
  var LoggerInjectionToken = "LoggerInjectionToken";
2231
- var LoggerOptions = z2.object({
2232
- context: z2.string().optional(),
2233
- options: z2.object({
2234
- timestamp: z2.boolean().optional()
1381
+ var LoggerOptions = z.object({
1382
+ context: z.string().optional(),
1383
+ options: z.object({
1384
+ timestamp: z.boolean().optional()
2235
1385
  }).optional()
2236
1386
  }).optional();
2237
- var Logger = InjectionToken.create(LoggerInjectionToken, LoggerOptions);
1387
+ var Logger = InjectionToken10.create(LoggerInjectionToken, LoggerOptions);
2238
1388
  var _LoggerFactory_decorators, _init9;
2239
- _LoggerFactory_decorators = [Injectable({
2240
- type: "Factory" /* Factory */,
1389
+ _LoggerFactory_decorators = [Injectable9({
1390
+ type: InjectableType.Factory,
2241
1391
  token: Logger
2242
1392
  })];
2243
1393
  var LoggerFactory = class {
@@ -2302,7 +1452,7 @@ var PinoWrapper = class _PinoWrapper {
2302
1452
  };
2303
1453
 
2304
1454
  // packages/core/src/config/config.service.mts
2305
- import { NaviosException as NaviosException3 } from "@navios/common";
1455
+ import { NaviosException } from "@navios/common";
2306
1456
  var ConfigServiceInstance = class {
2307
1457
  constructor(config = {}, logger) {
2308
1458
  this.config = config;
@@ -2341,24 +1491,24 @@ var ConfigServiceInstance = class {
2341
1491
  if (value === null) {
2342
1492
  const message = errorMessage || `Configuration value for key "${String(key)}" is not defined`;
2343
1493
  this.logger.error(message);
2344
- throw new NaviosException3(message);
1494
+ throw new NaviosException(message);
2345
1495
  }
2346
1496
  return value;
2347
1497
  }
2348
1498
  };
2349
1499
 
2350
1500
  // packages/core/src/config/config.provider.mts
2351
- var ConfigProviderOptions = z3.object({
2352
- load: z3.function()
1501
+ var ConfigProviderOptions = z2.object({
1502
+ load: z2.function()
2353
1503
  });
2354
- var ConfigProvider = InjectionToken.create(ConfigServiceInstance, ConfigProviderOptions);
1504
+ var ConfigProvider = InjectionToken11.create(ConfigServiceInstance, ConfigProviderOptions);
2355
1505
  var _ConfigProviderFactory_decorators, _init10;
2356
- _ConfigProviderFactory_decorators = [Injectable({
1506
+ _ConfigProviderFactory_decorators = [Injectable10({
2357
1507
  token: ConfigProvider,
2358
- type: "Factory" /* Factory */
1508
+ type: InjectableType2.Factory
2359
1509
  })];
2360
1510
  var ConfigProviderFactory = class {
2361
- logger = syncInject(Logger, {
1511
+ logger = syncInject3(Logger, {
2362
1512
  context: "ConfigService"
2363
1513
  });
2364
1514
  async create(ctx, args) {
@@ -2380,10 +1530,11 @@ _init10 = __decoratorStart(null);
2380
1530
  ConfigProviderFactory = __decorateElement(_init10, 0, "ConfigProviderFactory", _ConfigProviderFactory_decorators, ConfigProviderFactory);
2381
1531
  __runInitializers(_init10, 1, ConfigProviderFactory);
2382
1532
  function provideConfig(options) {
2383
- return InjectionToken.bound(ConfigProvider, options);
1533
+ return InjectionToken11.bound(ConfigProvider, options);
2384
1534
  }
2385
1535
 
2386
1536
  // packages/core/src/decorators/controller.decorator.mts
1537
+ import { Injectable as Injectable11, InjectableScope, InjectionToken as InjectionToken12 } from "@navios/di";
2387
1538
  function Controller({ guards } = {}) {
2388
1539
  return function(target, context) {
2389
1540
  if (context.kind !== "class") {
@@ -2391,7 +1542,7 @@ function Controller({ guards } = {}) {
2391
1542
  "[Navios] @Controller decorator can only be used on classes."
2392
1543
  );
2393
1544
  }
2394
- const token = InjectionToken.create(target);
1545
+ const token = InjectionToken12.create(target);
2395
1546
  if (context.metadata) {
2396
1547
  const controllerMetadata = getControllerMetadata(target, context);
2397
1548
  if (guards) {
@@ -2400,9 +1551,9 @@ function Controller({ guards } = {}) {
2400
1551
  }
2401
1552
  }
2402
1553
  }
2403
- return Injectable({
1554
+ return Injectable11({
2404
1555
  token,
2405
- scope: "Instance" /* Instance */
1556
+ scope: InjectableScope.Instance
2406
1557
  })(target, context);
2407
1558
  };
2408
1559
  }
@@ -2443,13 +1594,13 @@ function Endpoint(endpoint) {
2443
1594
  }
2444
1595
 
2445
1596
  // packages/core/src/decorators/header.decorator.mts
2446
- function Header(name2, value) {
1597
+ function Header(name, value) {
2447
1598
  return (target, context) => {
2448
1599
  if (context.kind !== "method") {
2449
1600
  throw new Error("[Navios] Header decorator can only be used on methods.");
2450
1601
  }
2451
1602
  const metadata = getEndpointMetadata(target, context);
2452
- metadata.headers[name2] = value;
1603
+ metadata.headers[name] = value;
2453
1604
  return target;
2454
1605
  };
2455
1606
  }
@@ -2469,6 +1620,7 @@ function HttpCode(code) {
2469
1620
  }
2470
1621
 
2471
1622
  // packages/core/src/decorators/module.decorator.mts
1623
+ import { Injectable as Injectable12, InjectableScope as InjectableScope2, InjectionToken as InjectionToken13 } from "@navios/di";
2472
1624
  function Module({ controllers = [], imports = [], guards = [] } = {
2473
1625
  controllers: [],
2474
1626
  imports: [],
@@ -2478,7 +1630,7 @@ function Module({ controllers = [], imports = [], guards = [] } = {
2478
1630
  if (context.kind !== "class") {
2479
1631
  throw new Error("[Navios] @Module decorator can only be used on classes.");
2480
1632
  }
2481
- const token = InjectionToken.create(target);
1633
+ const token = InjectionToken13.create(target);
2482
1634
  const moduleMetadata = getModuleMetadata(target, context);
2483
1635
  for (const controller of controllers) {
2484
1636
  moduleMetadata.controllers.add(controller);
@@ -2489,9 +1641,9 @@ function Module({ controllers = [], imports = [], guards = [] } = {
2489
1641
  for (const guard of Array.from(guards).reverse()) {
2490
1642
  moduleMetadata.guards.add(guard);
2491
1643
  }
2492
- return Injectable({
1644
+ return Injectable12({
2493
1645
  token,
2494
- scope: "Singleton" /* Singleton */
1646
+ scope: InjectableScope2.Singleton
2495
1647
  })(target, context);
2496
1648
  };
2497
1649
  }
@@ -2648,6 +1800,12 @@ var AttributeFactory = class {
2648
1800
  };
2649
1801
 
2650
1802
  // packages/core/src/navios.application.mts
1803
+ import {
1804
+ getGlobalServiceLocator as getGlobalServiceLocator3,
1805
+ inject as inject6,
1806
+ Injectable as Injectable13,
1807
+ syncInject as syncInject4
1808
+ } from "@navios/di";
2651
1809
  import cors from "@fastify/cors";
2652
1810
  import multipart from "@fastify/multipart";
2653
1811
  import { fastify } from "fastify";
@@ -2656,11 +1814,11 @@ import {
2656
1814
  validatorCompiler
2657
1815
  } from "fastify-type-provider-zod";
2658
1816
  var _NaviosApplication_decorators, _init11;
2659
- _NaviosApplication_decorators = [Injectable()];
1817
+ _NaviosApplication_decorators = [Injectable13()];
2660
1818
  var _NaviosApplication = class _NaviosApplication {
2661
- moduleLoader = syncInject(ModuleLoaderService);
2662
- controllerAdapter = syncInject(ControllerAdapterService);
2663
- logger = syncInject(Logger, {
1819
+ moduleLoader = syncInject4(ModuleLoaderService);
1820
+ controllerAdapter = syncInject4(ControllerAdapterService);
1821
+ logger = syncInject4(Logger, {
2664
1822
  context: _NaviosApplication.name
2665
1823
  });
2666
1824
  server = null;
@@ -2681,7 +1839,7 @@ var _NaviosApplication = class _NaviosApplication {
2681
1839
  await this.moduleLoader.loadModules(this.appModule);
2682
1840
  this.server = await this.getFastifyInstance(this.options);
2683
1841
  this.configureFastifyInstance(this.server);
2684
- getServiceLocator().registerInstance(Application, this.server);
1842
+ getGlobalServiceLocator3().storeInstance(this.server, Application);
2685
1843
  this.server.setValidatorCompiler(validatorCompiler);
2686
1844
  this.server.setSerializerCompiler(serializerCompiler);
2687
1845
  if (this.corsOptions) {
@@ -2705,7 +1863,7 @@ var _NaviosApplication = class _NaviosApplication {
2705
1863
  }
2706
1864
  } else {
2707
1865
  fastifyOptions.loggerInstance = new PinoWrapper(
2708
- await inject(Logger, {
1866
+ await inject6(Logger, {
2709
1867
  context: "FastifyAdapter"
2710
1868
  })
2711
1869
  );
@@ -2715,7 +1873,7 @@ var _NaviosApplication = class _NaviosApplication {
2715
1873
  return fastify({
2716
1874
  ...options,
2717
1875
  loggerInstance: new PinoWrapper(
2718
- await inject(Logger, {
1876
+ await inject6(Logger, {
2719
1877
  context: "FastifyAdapter"
2720
1878
  })
2721
1879
  )
@@ -2826,9 +1984,10 @@ __runInitializers(_init11, 1, _NaviosApplication);
2826
1984
  var NaviosApplication = _NaviosApplication;
2827
1985
 
2828
1986
  // packages/core/src/navios.factory.mts
1987
+ import { inject as inject7 } from "@navios/di";
2829
1988
  var NaviosFactory = class {
2830
1989
  static async create(appModule, options = {}) {
2831
- const app = await inject(NaviosApplication);
1990
+ const app = await inject7(NaviosApplication);
2832
1991
  this.registerLoggerConfiguration(options);
2833
1992
  app.setup(appModule, options);
2834
1993
  return app;
@@ -2847,7 +2006,6 @@ export {
2847
2006
  Application,
2848
2007
  AttributeFactory,
2849
2008
  BadRequestException,
2850
- BoundInjectionToken,
2851
2009
  ConfigProvider,
2852
2010
  ConfigProviderFactory,
2853
2011
  ConfigProviderOptions,
@@ -2861,27 +2019,14 @@ export {
2861
2019
  EndpointAdapterService,
2862
2020
  EndpointAdapterToken,
2863
2021
  EndpointMetadataKey,
2864
- ErrorsEnum,
2865
- EventEmitter,
2866
2022
  ExecutionContext,
2867
2023
  ExecutionContextInjectionToken,
2868
2024
  ExecutionContextToken,
2869
- FactoryInjectionToken,
2870
- FactoryNotFound,
2871
- FactoryTokenNotResolved,
2872
2025
  ForbiddenException,
2873
2026
  GuardRunnerService,
2874
2027
  Header,
2875
2028
  HttpCode,
2876
2029
  HttpException,
2877
- Injectable,
2878
- InjectableScope,
2879
- InjectableTokenMeta,
2880
- InjectableType,
2881
- InjectionToken,
2882
- InstanceDestroying,
2883
- InstanceExpired,
2884
- InstanceNotFound,
2885
2030
  InternalServerErrorException,
2886
2031
  LOG_LEVELS,
2887
2032
  Logger,
@@ -2901,16 +2046,10 @@ export {
2901
2046
  PinoWrapper,
2902
2047
  Reply,
2903
2048
  Request,
2904
- ServiceLocator,
2905
- ServiceLocatorEventBus,
2906
- ServiceLocatorInstanceHolderKind,
2907
- ServiceLocatorInstanceHolderStatus,
2908
- ServiceLocatorManager,
2909
2049
  Stream,
2910
2050
  StreamAdapterService,
2911
2051
  StreamAdapterToken,
2912
2052
  UnauthorizedException,
2913
- UnknownError,
2914
2053
  UseGuards,
2915
2054
  addLeadingSlash,
2916
2055
  clc,
@@ -2922,12 +2061,9 @@ export {
2922
2061
  getAllEndpointMetadata,
2923
2062
  getControllerMetadata,
2924
2063
  getEndpointMetadata,
2925
- getInjectableToken,
2926
2064
  getModuleMetadata,
2927
- getServiceLocator,
2928
2065
  hasControllerMetadata,
2929
2066
  hasModuleMetadata,
2930
- inject,
2931
2067
  isConstructor,
2932
2068
  isEmpty,
2933
2069
  isFunction,
@@ -2941,12 +2077,7 @@ export {
2941
2077
  isSymbol,
2942
2078
  isUndefined,
2943
2079
  normalizePath,
2944
- override,
2945
2080
  provideConfig,
2946
- provideServiceLocator,
2947
- resolveService,
2948
- setPromiseCollector,
2949
2081
  stripEndSlash,
2950
- syncInject,
2951
2082
  yellow
2952
2083
  };