@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.
- package/dist/_tsup-dts-rollup.d.mts +98 -422
- package/dist/_tsup-dts-rollup.d.ts +98 -422
- package/dist/index.d.mts +54 -44
- package/dist/index.d.ts +54 -44
- package/dist/index.js +111 -1023
- package/dist/index.mjs +113 -982
- package/package.json +3 -2
- package/src/adapters/endpoint-adapter.service.mts +3 -6
- package/src/adapters/handler-adapter.interface.mts +1 -1
- package/src/adapters/multipart-adapter.service.mts +2 -1
- package/src/adapters/stream-adapter.service.mts +3 -7
- package/src/attribute.factory.mts +1 -1
- package/src/config/config.provider.mts +8 -10
- package/src/decorators/controller.decorator.mts +3 -6
- package/src/decorators/module.decorator.mts +3 -6
- package/src/decorators/use-guards.decorator.mts +3 -2
- package/src/index.mts +1 -1
- package/src/logger/console-logger.service.mts +3 -2
- package/src/logger/logger.factory.mts +4 -5
- package/src/logger/logger.service.mts +2 -1
- package/src/metadata/controller.metadata.mts +3 -2
- package/src/metadata/handler.metadata.mts +1 -4
- package/src/metadata/index.mts +0 -1
- package/src/metadata/module.metadata.mts +3 -2
- package/src/navios.application.mts +9 -8
- package/src/navios.factory.mts +4 -2
- package/src/services/controller-adapter.service.mts +13 -12
- package/src/services/guard-runner.service.mts +4 -6
- package/src/services/module-loader.service.mts +4 -2
- package/src/tokens/application.token.mts +1 -1
- package/src/tokens/execution-context.token.mts +2 -1
- package/src/tokens/reply.token.mts +1 -1
- package/src/tokens/request.token.mts +1 -1
- package/src/metadata/injectable.metadata.mts +0 -11
- package/src/service-locator/__tests__/injectable.spec.mts +0 -171
- package/src/service-locator/__tests__/injection-token.spec.mts +0 -129
- package/src/service-locator/decorators/get-injectable-token.mts +0 -19
- package/src/service-locator/decorators/index.mts +0 -2
- package/src/service-locator/decorators/injectable.decorator.mts +0 -113
- package/src/service-locator/enums/index.mts +0 -1
- package/src/service-locator/enums/injectable-scope.enum.mts +0 -10
- package/src/service-locator/errors/errors.enum.mts +0 -8
- package/src/service-locator/errors/factory-not-found.mts +0 -8
- package/src/service-locator/errors/factory-token-not-resolved.mts +0 -10
- package/src/service-locator/errors/index.mts +0 -7
- package/src/service-locator/errors/instance-destroying.mts +0 -8
- package/src/service-locator/errors/instance-expired.mts +0 -8
- package/src/service-locator/errors/instance-not-found.mts +0 -8
- package/src/service-locator/errors/unknown-error.mts +0 -15
- package/src/service-locator/event-emitter.mts +0 -107
- package/src/service-locator/index.mts +0 -15
- package/src/service-locator/inject.mts +0 -42
- package/src/service-locator/injection-token.mts +0 -92
- package/src/service-locator/injector.mts +0 -18
- package/src/service-locator/interfaces/factory.interface.mts +0 -11
- package/src/service-locator/override.mts +0 -22
- package/src/service-locator/proxy-service-locator.mts +0 -99
- package/src/service-locator/resolve-service.mts +0 -46
- package/src/service-locator/service-locator-abstract-factory-context.mts +0 -23
- package/src/service-locator/service-locator-event-bus.mts +0 -96
- package/src/service-locator/service-locator-instance-holder.mts +0 -63
- package/src/service-locator/service-locator-manager.mts +0 -89
- package/src/service-locator/service-locator.mts +0 -535
- 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 = (
|
|
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,
|
|
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,
|
|
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 [
|
|
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 [
|
|
25
|
+
}, set [name](x) {
|
|
26
26
|
return __privateSet(this, extra, x);
|
|
27
|
-
} },
|
|
28
|
-
k ? p && k < 4 && __name(extra, (k > 2 ? "set " : k > 1 ? "get " : "") +
|
|
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,
|
|
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) =>
|
|
33
|
-
if (k ^ 3) access.get = p ? (x) => (k ^ 1 ? __privateGet : __privateMethod)(x, target, k ^ 4 ? extra : desc.get) : (x) => x[
|
|
34
|
-
if (k > 2) access.set = p ? (x, y) => __privateSet(x, target, y, k ^ 4 ? extra : desc.set) : (x, y) => x[
|
|
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,
|
|
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/
|
|
50
|
-
|
|
49
|
+
// packages/core/src/index.mts
|
|
50
|
+
export * from "@navios/di";
|
|
51
51
|
|
|
52
|
-
// packages/core/src/
|
|
53
|
-
|
|
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 =
|
|
126
|
+
var EndpointAdapterToken = InjectionToken2.create(
|
|
1005
127
|
Symbol.for("EndpointAdapterService")
|
|
1006
128
|
);
|
|
1007
129
|
var _EndpointAdapterService_decorators, _init2, _a;
|
|
1008
|
-
_EndpointAdapterService_decorators = [
|
|
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
|
|
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 {
|
|
1054
|
-
|
|
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 = [
|
|
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
|
|
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 {
|
|
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 =
|
|
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 = [
|
|
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
|
|
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 = [
|
|
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
|
|
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 =
|
|
761
|
+
const locator = getGlobalServiceLocator();
|
|
1617
762
|
return async (request, reply) => {
|
|
1618
|
-
locator.
|
|
1619
|
-
locator.
|
|
1620
|
-
locator.
|
|
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 = [
|
|
790
|
+
_ModuleLoaderService_decorators = [Injectable6()];
|
|
1645
791
|
var _ModuleLoaderService = class _ModuleLoaderService {
|
|
1646
|
-
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
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 = [
|
|
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 =
|
|
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 {
|
|
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 = [
|
|
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 =
|
|
2232
|
-
context:
|
|
2233
|
-
options:
|
|
2234
|
-
timestamp:
|
|
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 =
|
|
1387
|
+
var Logger = InjectionToken10.create(LoggerInjectionToken, LoggerOptions);
|
|
2238
1388
|
var _LoggerFactory_decorators, _init9;
|
|
2239
|
-
_LoggerFactory_decorators = [
|
|
2240
|
-
type:
|
|
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
|
|
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
|
|
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 =
|
|
2352
|
-
load:
|
|
1501
|
+
var ConfigProviderOptions = z2.object({
|
|
1502
|
+
load: z2.function()
|
|
2353
1503
|
});
|
|
2354
|
-
var ConfigProvider =
|
|
1504
|
+
var ConfigProvider = InjectionToken11.create(ConfigServiceInstance, ConfigProviderOptions);
|
|
2355
1505
|
var _ConfigProviderFactory_decorators, _init10;
|
|
2356
|
-
_ConfigProviderFactory_decorators = [
|
|
1506
|
+
_ConfigProviderFactory_decorators = [Injectable10({
|
|
2357
1507
|
token: ConfigProvider,
|
|
2358
|
-
type:
|
|
1508
|
+
type: InjectableType2.Factory
|
|
2359
1509
|
})];
|
|
2360
1510
|
var ConfigProviderFactory = class {
|
|
2361
|
-
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
|
|
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 =
|
|
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
|
|
1554
|
+
return Injectable11({
|
|
2404
1555
|
token,
|
|
2405
|
-
scope:
|
|
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(
|
|
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[
|
|
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 =
|
|
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
|
|
1644
|
+
return Injectable12({
|
|
2493
1645
|
token,
|
|
2494
|
-
scope:
|
|
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 = [
|
|
1817
|
+
_NaviosApplication_decorators = [Injectable13()];
|
|
2660
1818
|
var _NaviosApplication = class _NaviosApplication {
|
|
2661
|
-
moduleLoader =
|
|
2662
|
-
controllerAdapter =
|
|
2663
|
-
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
|
-
|
|
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
|
|
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
|
|
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
|
|
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
|
};
|