@navios/di 0.1.2 → 0.1.4

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.
@@ -0,0 +1,517 @@
1
+ import type { AnyZodObject } from 'zod';
2
+ import { z } from 'zod';
3
+ import { ZodOptional } from 'zod';
4
+
5
+ declare class BoundInjectionToken<T, S extends AnyZodObject | ZodOptional<AnyZodObject>> {
6
+ readonly token: InjectionToken<T, S>;
7
+ readonly value: z.input<S>;
8
+ id: string;
9
+ name: string | symbol | ClassType;
10
+ schema: AnyZodObject | ZodOptional<AnyZodObject>;
11
+ constructor(token: InjectionToken<T, S>, value: z.input<S>);
12
+ toString(): string;
13
+ }
14
+ export { BoundInjectionToken }
15
+ export { BoundInjectionToken as BoundInjectionToken_alias_1 }
16
+
17
+ declare type ChannelEmitter<Events extends EventsConfig, Ns extends string, E extends EventsNames<Events>> = {
18
+ emit<Args extends EventsArgs<Events, E>>(ns: Ns, event: E, ...args: Args): Promise<any>;
19
+ };
20
+ export { ChannelEmitter }
21
+ export { ChannelEmitter as ChannelEmitter_alias_1 }
22
+
23
+ declare type ClassType = new (...args: any[]) => any;
24
+ export { ClassType }
25
+ export { ClassType as ClassType_alias_1 }
26
+
27
+ declare type ClassTypeWithInstance<T> = new (...args: any[]) => T;
28
+ export { ClassTypeWithInstance }
29
+ export { ClassTypeWithInstance as ClassTypeWithInstance_alias_1 }
30
+
31
+ declare interface CreateInjectorsOptions {
32
+ baseLocator: ServiceLocator;
33
+ }
34
+ export { CreateInjectorsOptions }
35
+ export { CreateInjectorsOptions as CreateInjectorsOptions_alias_1 }
36
+ export { CreateInjectorsOptions as CreateInjectorsOptions_alias_2 }
37
+
38
+ declare enum ErrorsEnum {
39
+ InstanceExpired = "InstanceExpired",
40
+ InstanceNotFound = "InstanceNotFound",
41
+ InstanceDestroying = "InstanceDestroying",
42
+ UnknownError = "UnknownError",
43
+ FactoryNotFound = "FactoryNotFound",
44
+ FactoryTokenNotResolved = "FactoryTokenNotResolved"
45
+ }
46
+ export { ErrorsEnum }
47
+ export { ErrorsEnum as ErrorsEnum_alias_1 }
48
+ export { ErrorsEnum as ErrorsEnum_alias_2 }
49
+
50
+ declare class EventEmitter<Events extends EventsConfig = {}> implements EventEmitterInterface<Events> {
51
+ private listeners;
52
+ on<E extends EventsNames<Events>, Args extends EventsArgs<Events, E>>(event: E, listener: (...args: Args) => void): () => void;
53
+ off<E extends EventsNames<Events>, Args extends EventsArgs<Events, E>>(event: E, listener: (...args: Args) => void): void;
54
+ once<E extends EventsNames<Events>, Args extends EventsArgs<Events, E>>(event: E, listener: (...args: Args) => void): () => void;
55
+ emit<E extends EventsNames<Events>, Args extends EventsArgs<Events, E>>(event: E, ...args: Args): Promise<any>;
56
+ addChannel<E extends EventsNames<Events>, Ns extends string, Emitter extends ChannelEmitter<Events, Ns, E>>(ns: Ns, event: E, target: Emitter): () => void;
57
+ }
58
+ export { EventEmitter }
59
+ export { EventEmitter as EventEmitter_alias_1 }
60
+
61
+ declare interface EventEmitterInterface<Events extends EventsConfig> {
62
+ on<E extends EventsNames<Events>, Args extends EventsArgs<Events, E>>(event: E, listener: (...args: Args) => void): () => void;
63
+ emit<E extends EventsNames<Events>, Args extends EventsArgs<Events, E>>(event: E, ...args: Args): void;
64
+ addChannel<E extends EventsNames<Events>, Ns extends string, Emmiter extends ChannelEmitter<Events, Ns, E>>(ns: Ns, event: E, target: Emmiter): () => void;
65
+ }
66
+ export { EventEmitterInterface }
67
+ export { EventEmitterInterface as EventEmitterInterface_alias_1 }
68
+
69
+ declare type EventsArgs<Events extends EventsConfig, Name extends EventsNames<Events>> = Events[Name] extends any[] ? Events[Name] : [];
70
+ export { EventsArgs }
71
+ export { EventsArgs as EventsArgs_alias_1 }
72
+
73
+ declare type EventsConfig = {
74
+ [event: string]: any[];
75
+ };
76
+ export { EventsConfig }
77
+ export { EventsConfig as EventsConfig_alias_1 }
78
+
79
+ declare type EventsNames<Events extends EventsConfig> = Exclude<keyof Events, symbol | number>;
80
+ export { EventsNames }
81
+ export { EventsNames as EventsNames_alias_1 }
82
+
83
+ declare interface Factory<T> {
84
+ create(ctx?: any): Promise<T> | T;
85
+ }
86
+ export { Factory }
87
+ export { Factory as Factory_alias_1 }
88
+ export { Factory as Factory_alias_2 }
89
+
90
+ declare interface FactoryContext {
91
+ inject: Injectors['inject'];
92
+ on: ServiceLocatorEventBus['on'];
93
+ getDependencies: () => string[];
94
+ invalidate: () => void;
95
+ addEffect: (listener: () => void) => void;
96
+ getDestroyListeners: () => (() => void)[];
97
+ setTtl: (ttl: number) => void;
98
+ getTtl: () => number;
99
+ locator: ServiceLocator;
100
+ }
101
+ export { FactoryContext }
102
+ export { FactoryContext as FactoryContext_alias_1 }
103
+
104
+ declare class FactoryInjectionToken<T, S extends AnyZodObject | ZodOptional<AnyZodObject>> {
105
+ readonly token: InjectionToken<T, S>;
106
+ readonly factory: () => Promise<z.input<S>>;
107
+ value?: z.input<S>;
108
+ resolved: boolean;
109
+ id: string;
110
+ name: string | symbol | ClassType;
111
+ schema: AnyZodObject | ZodOptional<AnyZodObject>;
112
+ constructor(token: InjectionToken<T, S>, factory: () => Promise<z.input<S>>);
113
+ resolve(): Promise<z.input<S>>;
114
+ toString(): string;
115
+ }
116
+ export { FactoryInjectionToken }
117
+ export { FactoryInjectionToken as FactoryInjectionToken_alias_1 }
118
+
119
+ declare class FactoryNotFound extends Error {
120
+ name: string;
121
+ code: ErrorsEnum;
122
+ constructor(name: string);
123
+ }
124
+ export { FactoryNotFound }
125
+ export { FactoryNotFound as FactoryNotFound_alias_1 }
126
+ export { FactoryNotFound as FactoryNotFound_alias_2 }
127
+
128
+ declare type FactoryRecord<Instance = any, Schema = any> = {
129
+ scope: InjectableScope;
130
+ originalToken: InjectionToken<Instance, Schema>;
131
+ factory: InjectionFactory<Instance, Schema extends AnyZodObject ? z.input<Schema> : unknown>;
132
+ };
133
+ export { FactoryRecord }
134
+ export { FactoryRecord as FactoryRecord_alias_1 }
135
+
136
+ declare class FactoryTokenNotResolved extends Error {
137
+ code: ErrorsEnum;
138
+ constructor(name: string | symbol | ClassType);
139
+ }
140
+ export { FactoryTokenNotResolved }
141
+ export { FactoryTokenNotResolved as FactoryTokenNotResolved_alias_1 }
142
+ export { FactoryTokenNotResolved as FactoryTokenNotResolved_alias_2 }
143
+
144
+ declare interface FactoryWithArgs<T, A extends AnyZodObject> {
145
+ create(ctx: any, args: z.output<A>): Promise<T> | T;
146
+ }
147
+ export { FactoryWithArgs }
148
+ export { FactoryWithArgs as FactoryWithArgs_alias_1 }
149
+ export { FactoryWithArgs as FactoryWithArgs_alias_2 }
150
+
151
+ declare function getGlobalServiceLocator(): ServiceLocator;
152
+ export { getGlobalServiceLocator }
153
+ export { getGlobalServiceLocator as getGlobalServiceLocator_alias_1 }
154
+
155
+ declare function getInjectableToken<R>(target: ClassType): R extends {
156
+ create(...args: any[]): infer V;
157
+ } ? InjectionToken<V> : InjectionToken<R>;
158
+ export { getInjectableToken }
159
+ export { getInjectableToken as getInjectableToken_alias_1 }
160
+ export { getInjectableToken as getInjectableToken_alias_2 }
161
+
162
+ declare function getInjectors({ baseLocator }: CreateInjectorsOptions): Injectors;
163
+ export { getInjectors }
164
+ export { getInjectors as getInjectors_alias_1 }
165
+ export { getInjectors as getInjectors_alias_2 }
166
+
167
+ declare const globalRegistry: Registry;
168
+ export { globalRegistry }
169
+ export { globalRegistry as globalRegistry_alias_1 }
170
+
171
+ declare const inject: Injectors['inject'];
172
+ export { inject }
173
+ export { inject as inject_alias_1 }
174
+
175
+ declare function Injectable(): <T extends ClassType>(target: T, context: ClassDecoratorContext) => T & {
176
+ [InjectableTokenMeta]: InjectionToken<InstanceType<T>, undefined>;
177
+ };
178
+
179
+ declare function Injectable<T extends ClassType>(options: {
180
+ scope?: InjectableScope;
181
+ token: InjectionToken<T, undefined>;
182
+ }): (target: T, context: ClassDecoratorContext) => T & {
183
+ [InjectableTokenMeta]: InjectionToken<InstanceType<T>, undefined>;
184
+ };
185
+
186
+ declare function Injectable<R>(options: {
187
+ scope?: InjectableScope;
188
+ type: InjectableType.Factory;
189
+ }): <T extends ClassTypeWithInstance<Factory<R>>>(target: T, context: ClassDecoratorContext) => T & {
190
+ [InjectableTokenMeta]: InjectionToken<R, undefined>;
191
+ };
192
+
193
+ declare function Injectable<R, S extends AnyZodObject>(options: {
194
+ scope?: InjectableScope;
195
+ type: InjectableType.Factory;
196
+ token: InjectionToken<R, S>;
197
+ }): <T extends ClassTypeWithInstance<FactoryWithArgs<R, S>>>(target: T, context: ClassDecoratorContext) => T & {
198
+ [InjectableTokenMeta]: InjectionToken<R, S>;
199
+ };
200
+
201
+ declare function Injectable<R>(options: {
202
+ scope?: InjectableScope;
203
+ type: InjectableType.Factory;
204
+ token: InjectionToken<R, undefined>;
205
+ }): <T extends ClassTypeWithInstance<Factory<R>>>(target: T, context: ClassDecoratorContext) => T & {
206
+ [InjectableTokenMeta]: InjectionToken<R, undefined>;
207
+ };
208
+ export { Injectable }
209
+ export { Injectable as Injectable_alias_1 }
210
+ export { Injectable as Injectable_alias_2 }
211
+
212
+ declare interface InjectableOptions {
213
+ scope?: InjectableScope;
214
+ type?: InjectableType;
215
+ token?: InjectionToken<any, any>;
216
+ registry?: Registry;
217
+ }
218
+ export { InjectableOptions }
219
+ export { InjectableOptions as InjectableOptions_alias_1 }
220
+ export { InjectableOptions as InjectableOptions_alias_2 }
221
+
222
+ declare enum InjectableScope {
223
+ /**
224
+ * Singleton scope: The instance is created once and shared across the application.
225
+ */
226
+ Singleton = "Singleton",
227
+ /**
228
+ * Instance scope: A new instance is created for each injection.
229
+ */
230
+ Instance = "Instance"
231
+ }
232
+ export { InjectableScope }
233
+ export { InjectableScope as InjectableScope_alias_1 }
234
+ export { InjectableScope as InjectableScope_alias_2 }
235
+
236
+ declare const InjectableTokenMeta: unique symbol;
237
+ export { InjectableTokenMeta }
238
+ export { InjectableTokenMeta as InjectableTokenMeta_alias_1 }
239
+ export { InjectableTokenMeta as InjectableTokenMeta_alias_2 }
240
+
241
+ declare enum InjectableType {
242
+ Class = "Class",
243
+ Factory = "Factory"
244
+ }
245
+ export { InjectableType }
246
+ export { InjectableType as InjectableType_alias_1 }
247
+ export { InjectableType as InjectableType_alias_2 }
248
+
249
+ declare type InjectionFactory<T = unknown, Args = unknown> = (ctx: FactoryContext, args: Args) => Promise<T>;
250
+ export { InjectionFactory }
251
+ export { InjectionFactory as InjectionFactory_alias_1 }
252
+
253
+ declare class InjectionToken<T, S extends AnyZodObject | ZodOptional<AnyZodObject> | unknown = unknown> {
254
+ readonly name: string | symbol | ClassType;
255
+ readonly schema: AnyZodObject | undefined;
256
+ id: `${string}-${string}-${string}-${string}-${string}`;
257
+ private formattedName;
258
+ constructor(name: string | symbol | ClassType, schema: AnyZodObject | undefined);
259
+ static create<T extends ClassType>(name: T): InjectionToken<InstanceType<T>, undefined>;
260
+ static create<T extends ClassType, Schema extends AnyZodObject | ZodOptional<AnyZodObject>>(name: T, schema: Schema): InjectionToken<InstanceType<T>, Schema>;
261
+ static create<T>(name: string | symbol): InjectionToken<T, undefined>;
262
+ static create<T, Schema extends AnyZodObject | ZodOptional<AnyZodObject>>(name: string | any, schema: Schema): InjectionToken<T, Schema>;
263
+ static bound<T, S extends AnyZodObject | ZodOptional<AnyZodObject>>(token: InjectionToken<T, S>, value: z.input<S>): BoundInjectionToken<T, S>;
264
+ static factory<T, S extends AnyZodObject | ZodOptional<AnyZodObject>>(token: InjectionToken<T, S>, factory: () => Promise<z.input<S>>): FactoryInjectionToken<T, S>;
265
+ static refineType<T>(token: BoundInjectionToken<any, any>): BoundInjectionToken<T, any>;
266
+ toString(): string;
267
+ }
268
+ export { InjectionToken }
269
+ export { InjectionToken as InjectionToken_alias_1 }
270
+
271
+ declare interface Injectors {
272
+ inject<T extends ClassType>(token: T): Promise<InstanceType<T>>;
273
+ inject<T, S extends AnyZodObject>(token: InjectionToken<T, S>, args: z.input<S>): Promise<T>;
274
+ inject<T, S extends ZodOptional<AnyZodObject>>(token: InjectionToken<T, S>, args?: z.input<S>): Promise<T>;
275
+ inject<T>(token: InjectionToken<T, undefined>): Promise<T>;
276
+ inject<T>(token: BoundInjectionToken<T, any>): Promise<T>;
277
+ inject<T>(token: FactoryInjectionToken<T, any>): Promise<T>;
278
+ syncInject<T extends ClassType>(token: T): InstanceType<T>;
279
+ syncInject<T, S extends AnyZodObject>(token: InjectionToken<T, S>, args: z.input<S>): T;
280
+ syncInject<T, S extends ZodOptional<AnyZodObject>>(token: InjectionToken<T, S>, args?: z.input<S>): T;
281
+ syncInject<T>(token: InjectionToken<T, undefined>): T;
282
+ syncInject<T>(token: BoundInjectionToken<T, any>): T;
283
+ syncInject<T>(token: FactoryInjectionToken<T, any>): T;
284
+ wrapSyncInit(cb: () => any): () => [any, Promise<any>[]];
285
+ provideServiceLocator(locator: ServiceLocator): ServiceLocator;
286
+ }
287
+ export { Injectors }
288
+ export { Injectors as Injectors_alias_1 }
289
+ export { Injectors as Injectors_alias_2 }
290
+
291
+ declare const InjectorsBase: Map<ServiceLocator, Injectors>;
292
+ export { InjectorsBase }
293
+ export { InjectorsBase as InjectorsBase_alias_1 }
294
+ export { InjectorsBase as InjectorsBase_alias_2 }
295
+
296
+ declare class InstanceDestroying extends Error {
297
+ name: string;
298
+ code: ErrorsEnum;
299
+ constructor(name: string);
300
+ }
301
+ export { InstanceDestroying }
302
+ export { InstanceDestroying as InstanceDestroying_alias_1 }
303
+ export { InstanceDestroying as InstanceDestroying_alias_2 }
304
+
305
+ declare class InstanceExpired extends Error {
306
+ name: string;
307
+ code: ErrorsEnum;
308
+ constructor(name: string);
309
+ }
310
+ export { InstanceExpired }
311
+ export { InstanceExpired as InstanceExpired_alias_1 }
312
+ export { InstanceExpired as InstanceExpired_alias_2 }
313
+
314
+ declare class InstanceNotFound extends Error {
315
+ name: string;
316
+ code: ErrorsEnum;
317
+ constructor(name: string);
318
+ }
319
+ export { InstanceNotFound }
320
+ export { InstanceNotFound as InstanceNotFound_alias_1 }
321
+ export { InstanceNotFound as InstanceNotFound_alias_2 }
322
+
323
+ declare function makeProxyServiceLocator(serviceLocator: ServiceLocator, ctx: FactoryContext): ServiceLocator;
324
+ export { makeProxyServiceLocator }
325
+ export { makeProxyServiceLocator as makeProxyServiceLocator_alias_1 }
326
+
327
+ declare const provideServiceLocator: Injectors['provideServiceLocator'];
328
+ export { provideServiceLocator }
329
+ export { provideServiceLocator as provideServiceLocator_alias_1 }
330
+
331
+ declare class ProxyServiceLocator implements ServiceLocator {
332
+ private readonly serviceLocator;
333
+ private readonly ctx;
334
+ constructor(serviceLocator: ServiceLocator, ctx: FactoryContext);
335
+ getEventBus(): ServiceLocatorEventBus;
336
+ getInstance(token: InjectionToken<any, any> | BoundInjectionToken<any, any> | FactoryInjectionToken<any, any>, args?: any): Promise<any[]>;
337
+ getOrThrowInstance<Instance, Schema extends AnyZodObject | ZodOptional<AnyZodObject> | undefined>(token: InjectionToken<Instance, Schema>, args: Schema extends AnyZodObject ? z.input<Schema> : Schema extends ZodOptional<AnyZodObject> ? z.input<Schema> | undefined : undefined): Promise<Instance>;
338
+ getSyncInstance<Instance, Schema extends AnyZodObject | ZodOptional<AnyZodObject> | undefined>(token: InjectionToken<Instance, Schema>, args: Schema extends AnyZodObject ? z.input<Schema> : Schema extends ZodOptional<AnyZodObject> ? z.input<Schema> | undefined : undefined): Instance | null;
339
+ invalidate(service: string, round?: number): Promise<any>;
340
+ ready(): Promise<null>;
341
+ makeInstanceName(token: InjectionToken<any, any>, args: any): string;
342
+ }
343
+ export { ProxyServiceLocator }
344
+ export { ProxyServiceLocator as ProxyServiceLocator_alias_1 }
345
+
346
+ declare class Registry {
347
+ private readonly parent?;
348
+ private readonly factories;
349
+ constructor(parent?: Registry | undefined);
350
+ has(token: InjectionToken<any, any>): boolean;
351
+ get<Instance, Schema>(token: InjectionToken<Instance, Schema>): FactoryRecord<Instance, Schema>;
352
+ set<Instance, Schema>(token: InjectionToken<Instance, Schema>, factory: InjectionFactory, scope: InjectableScope): void;
353
+ delete(token: InjectionToken<any, any>): void;
354
+ }
355
+ export { Registry }
356
+ export { Registry as Registry_alias_1 }
357
+
358
+ declare function resolveService<T extends ClassType>(ctx: FactoryContext, target: T, args?: any[]): Promise<InstanceType<T>>;
359
+ export { resolveService }
360
+ export { resolveService as resolveService_alias_1 }
361
+
362
+ declare class ServiceLocator {
363
+ private readonly registry;
364
+ private readonly logger;
365
+ private readonly eventBus;
366
+ private readonly manager;
367
+ constructor(registry?: Registry, logger?: Console | null);
368
+ getEventBus(): ServiceLocatorEventBus;
369
+ storeInstance<Instance>(instance: Instance, token: BoundInjectionToken<Instance, any>): void;
370
+ storeInstance<Instance>(instance: Instance, token: FactoryInjectionToken<Instance, any>): void;
371
+ storeInstance<Instance>(instance: Instance, token: InjectionToken<Instance, undefined>): void;
372
+ storeInstance<Instance, Schema extends AnyZodObject | ZodOptional<AnyZodObject>>(instance: Instance, token: InjectionToken<Instance, Schema>, args: z.input<Schema>): void;
373
+ removeInstance<Instance>(token: BoundInjectionToken<Instance, any>): void;
374
+ removeInstance<Instance>(token: FactoryInjectionToken<Instance, any>): void;
375
+ removeInstance<Instance>(token: InjectionToken<Instance, undefined>): void;
376
+ removeInstance<Instance, Schema extends AnyZodObject | ZodOptional<AnyZodObject>>(token: InjectionToken<Instance, Schema>, args: z.input<Schema>): void;
377
+ private resolveTokenArgs;
378
+ getInstanceIdentifier<Instance, Schema extends AnyZodObject>(token: InjectionToken<Instance, Schema>, args: z.input<Schema>): string;
379
+ getInstanceIdentifier<Instance, Schema extends ZodOptional<AnyZodObject>>(token: InjectionToken<Instance, Schema>, args?: z.input<Schema>): string;
380
+ getInstanceIdentifier<Instance>(token: InjectionToken<Instance, undefined>): string;
381
+ getInstanceIdentifier<Instance>(token: BoundInjectionToken<Instance, any>): string;
382
+ getInstanceIdentifier<Instance>(token: FactoryInjectionToken<Instance, any>): string;
383
+ getInstance<Instance, Schema extends AnyZodObject>(token: InjectionToken<Instance, Schema>, args: z.input<Schema>): Promise<[undefined, Instance] | [UnknownError | FactoryNotFound]>;
384
+ getInstance<Instance, Schema extends ZodOptional<AnyZodObject>>(token: InjectionToken<Instance, Schema>, args?: z.input<Schema>): Promise<[undefined, Instance] | [UnknownError | FactoryNotFound]>;
385
+ getInstance<Instance>(token: InjectionToken<Instance, undefined>): Promise<[undefined, Instance] | [UnknownError | FactoryNotFound]>;
386
+ getInstance<Instance>(token: BoundInjectionToken<Instance, any>): Promise<[undefined, Instance] | [UnknownError | FactoryNotFound]>;
387
+ getInstance<Instance>(token: FactoryInjectionToken<Instance, any>): Promise<[undefined, Instance] | [UnknownError | FactoryNotFound]>;
388
+ getOrThrowInstance<Instance, Schema extends AnyZodObject | ZodOptional<AnyZodObject> | undefined>(token: InjectionToken<Instance, Schema>, args: Schema extends AnyZodObject ? z.input<Schema> : Schema extends ZodOptional<AnyZodObject> ? z.input<Schema> | undefined : undefined): Promise<Instance>;
389
+ private notifyListeners;
390
+ private createInstance;
391
+ private resolveInstance;
392
+ private createFactoryContext;
393
+ getSyncInstance<Instance, Schema extends AnyZodObject | ZodOptional<AnyZodObject> | undefined>(token: InjectionToken<Instance, Schema>, args: Schema extends AnyZodObject ? z.input<Schema> : Schema extends ZodOptional<AnyZodObject> ? z.input<Schema> | undefined : undefined): Instance | null;
394
+ invalidate(service: string, round?: number): Promise<any>;
395
+ ready(): Promise<null>;
396
+ makeInstanceName(token: InjectionToken<any, any> | BoundInjectionToken<any, any> | FactoryInjectionToken<any, any>, args: any): string;
397
+ }
398
+ export { ServiceLocator }
399
+ export { ServiceLocator as ServiceLocator_alias_1 }
400
+
401
+ declare class ServiceLocatorEventBus {
402
+ private readonly logger;
403
+ private listeners;
404
+ constructor(logger?: Console | null);
405
+ on<Event extends string | `pre:${string}` | `post:${string}`>(ns: string, event: Event, listener: (event: Event) => void): () => void;
406
+ emit(key: string, event: string): Promise<PromiseSettledResult<any>[] | undefined>;
407
+ }
408
+ export { ServiceLocatorEventBus }
409
+ export { ServiceLocatorEventBus as ServiceLocatorEventBus_alias_1 }
410
+
411
+ declare type ServiceLocatorInstanceDestroyListener = () => void | Promise<void>;
412
+ export { ServiceLocatorInstanceDestroyListener }
413
+ export { ServiceLocatorInstanceDestroyListener as ServiceLocatorInstanceDestroyListener_alias_1 }
414
+
415
+ declare type ServiceLocatorInstanceEffect = () => void;
416
+ export { ServiceLocatorInstanceEffect }
417
+ export { ServiceLocatorInstanceEffect as ServiceLocatorInstanceEffect_alias_1 }
418
+
419
+ declare type ServiceLocatorInstanceHolder<Instance = unknown> = ServiceLocatorInstanceHolderCreating<Instance> | ServiceLocatorInstanceHolderCreated<Instance> | ServiceLocatorInstanceHolderDestroying<Instance>;
420
+ export { ServiceLocatorInstanceHolder }
421
+ export { ServiceLocatorInstanceHolder as ServiceLocatorInstanceHolder_alias_1 }
422
+
423
+ declare interface ServiceLocatorInstanceHolderCreated<Instance> {
424
+ status: ServiceLocatorInstanceHolderStatus.Created;
425
+ name: string;
426
+ instance: Instance;
427
+ creationPromise: null;
428
+ destroyPromise: null;
429
+ kind: ServiceLocatorInstanceHolderKind;
430
+ effects: ServiceLocatorInstanceEffect[];
431
+ deps: string[];
432
+ destroyListeners: ServiceLocatorInstanceDestroyListener[];
433
+ createdAt: number;
434
+ ttl: number;
435
+ }
436
+ export { ServiceLocatorInstanceHolderCreated }
437
+ export { ServiceLocatorInstanceHolderCreated as ServiceLocatorInstanceHolderCreated_alias_1 }
438
+
439
+ declare interface ServiceLocatorInstanceHolderCreating<Instance> {
440
+ status: ServiceLocatorInstanceHolderStatus.Creating;
441
+ name: string;
442
+ instance: null;
443
+ creationPromise: Promise<[undefined, Instance]> | null;
444
+ destroyPromise: null;
445
+ kind: ServiceLocatorInstanceHolderKind;
446
+ effects: ServiceLocatorInstanceEffect[];
447
+ deps: string[];
448
+ destroyListeners: ServiceLocatorInstanceDestroyListener[];
449
+ createdAt: number;
450
+ ttl: number;
451
+ }
452
+ export { ServiceLocatorInstanceHolderCreating }
453
+ export { ServiceLocatorInstanceHolderCreating as ServiceLocatorInstanceHolderCreating_alias_1 }
454
+
455
+ declare interface ServiceLocatorInstanceHolderDestroying<Instance> {
456
+ status: ServiceLocatorInstanceHolderStatus.Destroying;
457
+ name: string;
458
+ instance: Instance | null;
459
+ creationPromise: null;
460
+ destroyPromise: Promise<void>;
461
+ kind: ServiceLocatorInstanceHolderKind;
462
+ effects: ServiceLocatorInstanceEffect[];
463
+ deps: string[];
464
+ destroyListeners: ServiceLocatorInstanceDestroyListener[];
465
+ createdAt: number;
466
+ ttl: number;
467
+ }
468
+ export { ServiceLocatorInstanceHolderDestroying }
469
+ export { ServiceLocatorInstanceHolderDestroying as ServiceLocatorInstanceHolderDestroying_alias_1 }
470
+
471
+ declare enum ServiceLocatorInstanceHolderKind {
472
+ Instance = "instance",
473
+ Factory = "factory",
474
+ AbstractFactory = "abstractFactory"
475
+ }
476
+ export { ServiceLocatorInstanceHolderKind }
477
+ export { ServiceLocatorInstanceHolderKind as ServiceLocatorInstanceHolderKind_alias_1 }
478
+
479
+ declare enum ServiceLocatorInstanceHolderStatus {
480
+ Created = "created",
481
+ Creating = "creating",
482
+ Destroying = "destroying"
483
+ }
484
+ export { ServiceLocatorInstanceHolderStatus }
485
+ export { ServiceLocatorInstanceHolderStatus as ServiceLocatorInstanceHolderStatus_alias_1 }
486
+
487
+ declare class ServiceLocatorManager {
488
+ private readonly logger;
489
+ private readonly instancesHolders;
490
+ constructor(logger?: Console | null);
491
+ get(name: string): [InstanceExpired | InstanceDestroying, ServiceLocatorInstanceHolder] | [InstanceNotFound] | [undefined, ServiceLocatorInstanceHolder];
492
+ set(name: string, holder: ServiceLocatorInstanceHolder): void;
493
+ has(name: string): [InstanceExpired | InstanceDestroying] | [undefined, boolean];
494
+ delete(name: string): boolean;
495
+ filter(predicate: (value: ServiceLocatorInstanceHolder<any>, key: string) => boolean): Map<string, ServiceLocatorInstanceHolder>;
496
+ }
497
+ export { ServiceLocatorManager }
498
+ export { ServiceLocatorManager as ServiceLocatorManager_alias_1 }
499
+
500
+ declare const syncInject: Injectors['syncInject'];
501
+ export { syncInject }
502
+ export { syncInject as syncInject_alias_1 }
503
+
504
+ declare class UnknownError extends Error {
505
+ code: ErrorsEnum;
506
+ parent?: Error;
507
+ constructor(message: string | Error);
508
+ }
509
+ export { UnknownError }
510
+ export { UnknownError as UnknownError_alias_1 }
511
+ export { UnknownError as UnknownError_alias_2 }
512
+
513
+ declare const wrapSyncInit: Injectors['wrapSyncInit'];
514
+ export { wrapSyncInit }
515
+ export { wrapSyncInit as wrapSyncInit_alias_1 }
516
+
517
+ export { }
@@ -0,0 +1,517 @@
1
+ import type { AnyZodObject } from 'zod';
2
+ import { z } from 'zod';
3
+ import { ZodOptional } from 'zod';
4
+
5
+ declare class BoundInjectionToken<T, S extends AnyZodObject | ZodOptional<AnyZodObject>> {
6
+ readonly token: InjectionToken<T, S>;
7
+ readonly value: z.input<S>;
8
+ id: string;
9
+ name: string | symbol | ClassType;
10
+ schema: AnyZodObject | ZodOptional<AnyZodObject>;
11
+ constructor(token: InjectionToken<T, S>, value: z.input<S>);
12
+ toString(): string;
13
+ }
14
+ export { BoundInjectionToken }
15
+ export { BoundInjectionToken as BoundInjectionToken_alias_1 }
16
+
17
+ declare type ChannelEmitter<Events extends EventsConfig, Ns extends string, E extends EventsNames<Events>> = {
18
+ emit<Args extends EventsArgs<Events, E>>(ns: Ns, event: E, ...args: Args): Promise<any>;
19
+ };
20
+ export { ChannelEmitter }
21
+ export { ChannelEmitter as ChannelEmitter_alias_1 }
22
+
23
+ declare type ClassType = new (...args: any[]) => any;
24
+ export { ClassType }
25
+ export { ClassType as ClassType_alias_1 }
26
+
27
+ declare type ClassTypeWithInstance<T> = new (...args: any[]) => T;
28
+ export { ClassTypeWithInstance }
29
+ export { ClassTypeWithInstance as ClassTypeWithInstance_alias_1 }
30
+
31
+ declare interface CreateInjectorsOptions {
32
+ baseLocator: ServiceLocator;
33
+ }
34
+ export { CreateInjectorsOptions }
35
+ export { CreateInjectorsOptions as CreateInjectorsOptions_alias_1 }
36
+ export { CreateInjectorsOptions as CreateInjectorsOptions_alias_2 }
37
+
38
+ declare enum ErrorsEnum {
39
+ InstanceExpired = "InstanceExpired",
40
+ InstanceNotFound = "InstanceNotFound",
41
+ InstanceDestroying = "InstanceDestroying",
42
+ UnknownError = "UnknownError",
43
+ FactoryNotFound = "FactoryNotFound",
44
+ FactoryTokenNotResolved = "FactoryTokenNotResolved"
45
+ }
46
+ export { ErrorsEnum }
47
+ export { ErrorsEnum as ErrorsEnum_alias_1 }
48
+ export { ErrorsEnum as ErrorsEnum_alias_2 }
49
+
50
+ declare class EventEmitter<Events extends EventsConfig = {}> implements EventEmitterInterface<Events> {
51
+ private listeners;
52
+ on<E extends EventsNames<Events>, Args extends EventsArgs<Events, E>>(event: E, listener: (...args: Args) => void): () => void;
53
+ off<E extends EventsNames<Events>, Args extends EventsArgs<Events, E>>(event: E, listener: (...args: Args) => void): void;
54
+ once<E extends EventsNames<Events>, Args extends EventsArgs<Events, E>>(event: E, listener: (...args: Args) => void): () => void;
55
+ emit<E extends EventsNames<Events>, Args extends EventsArgs<Events, E>>(event: E, ...args: Args): Promise<any>;
56
+ addChannel<E extends EventsNames<Events>, Ns extends string, Emitter extends ChannelEmitter<Events, Ns, E>>(ns: Ns, event: E, target: Emitter): () => void;
57
+ }
58
+ export { EventEmitter }
59
+ export { EventEmitter as EventEmitter_alias_1 }
60
+
61
+ declare interface EventEmitterInterface<Events extends EventsConfig> {
62
+ on<E extends EventsNames<Events>, Args extends EventsArgs<Events, E>>(event: E, listener: (...args: Args) => void): () => void;
63
+ emit<E extends EventsNames<Events>, Args extends EventsArgs<Events, E>>(event: E, ...args: Args): void;
64
+ addChannel<E extends EventsNames<Events>, Ns extends string, Emmiter extends ChannelEmitter<Events, Ns, E>>(ns: Ns, event: E, target: Emmiter): () => void;
65
+ }
66
+ export { EventEmitterInterface }
67
+ export { EventEmitterInterface as EventEmitterInterface_alias_1 }
68
+
69
+ declare type EventsArgs<Events extends EventsConfig, Name extends EventsNames<Events>> = Events[Name] extends any[] ? Events[Name] : [];
70
+ export { EventsArgs }
71
+ export { EventsArgs as EventsArgs_alias_1 }
72
+
73
+ declare type EventsConfig = {
74
+ [event: string]: any[];
75
+ };
76
+ export { EventsConfig }
77
+ export { EventsConfig as EventsConfig_alias_1 }
78
+
79
+ declare type EventsNames<Events extends EventsConfig> = Exclude<keyof Events, symbol | number>;
80
+ export { EventsNames }
81
+ export { EventsNames as EventsNames_alias_1 }
82
+
83
+ declare interface Factory<T> {
84
+ create(ctx?: any): Promise<T> | T;
85
+ }
86
+ export { Factory }
87
+ export { Factory as Factory_alias_1 }
88
+ export { Factory as Factory_alias_2 }
89
+
90
+ declare interface FactoryContext {
91
+ inject: Injectors['inject'];
92
+ on: ServiceLocatorEventBus['on'];
93
+ getDependencies: () => string[];
94
+ invalidate: () => void;
95
+ addEffect: (listener: () => void) => void;
96
+ getDestroyListeners: () => (() => void)[];
97
+ setTtl: (ttl: number) => void;
98
+ getTtl: () => number;
99
+ locator: ServiceLocator;
100
+ }
101
+ export { FactoryContext }
102
+ export { FactoryContext as FactoryContext_alias_1 }
103
+
104
+ declare class FactoryInjectionToken<T, S extends AnyZodObject | ZodOptional<AnyZodObject>> {
105
+ readonly token: InjectionToken<T, S>;
106
+ readonly factory: () => Promise<z.input<S>>;
107
+ value?: z.input<S>;
108
+ resolved: boolean;
109
+ id: string;
110
+ name: string | symbol | ClassType;
111
+ schema: AnyZodObject | ZodOptional<AnyZodObject>;
112
+ constructor(token: InjectionToken<T, S>, factory: () => Promise<z.input<S>>);
113
+ resolve(): Promise<z.input<S>>;
114
+ toString(): string;
115
+ }
116
+ export { FactoryInjectionToken }
117
+ export { FactoryInjectionToken as FactoryInjectionToken_alias_1 }
118
+
119
+ declare class FactoryNotFound extends Error {
120
+ name: string;
121
+ code: ErrorsEnum;
122
+ constructor(name: string);
123
+ }
124
+ export { FactoryNotFound }
125
+ export { FactoryNotFound as FactoryNotFound_alias_1 }
126
+ export { FactoryNotFound as FactoryNotFound_alias_2 }
127
+
128
+ declare type FactoryRecord<Instance = any, Schema = any> = {
129
+ scope: InjectableScope;
130
+ originalToken: InjectionToken<Instance, Schema>;
131
+ factory: InjectionFactory<Instance, Schema extends AnyZodObject ? z.input<Schema> : unknown>;
132
+ };
133
+ export { FactoryRecord }
134
+ export { FactoryRecord as FactoryRecord_alias_1 }
135
+
136
+ declare class FactoryTokenNotResolved extends Error {
137
+ code: ErrorsEnum;
138
+ constructor(name: string | symbol | ClassType);
139
+ }
140
+ export { FactoryTokenNotResolved }
141
+ export { FactoryTokenNotResolved as FactoryTokenNotResolved_alias_1 }
142
+ export { FactoryTokenNotResolved as FactoryTokenNotResolved_alias_2 }
143
+
144
+ declare interface FactoryWithArgs<T, A extends AnyZodObject> {
145
+ create(ctx: any, args: z.output<A>): Promise<T> | T;
146
+ }
147
+ export { FactoryWithArgs }
148
+ export { FactoryWithArgs as FactoryWithArgs_alias_1 }
149
+ export { FactoryWithArgs as FactoryWithArgs_alias_2 }
150
+
151
+ declare function getGlobalServiceLocator(): ServiceLocator;
152
+ export { getGlobalServiceLocator }
153
+ export { getGlobalServiceLocator as getGlobalServiceLocator_alias_1 }
154
+
155
+ declare function getInjectableToken<R>(target: ClassType): R extends {
156
+ create(...args: any[]): infer V;
157
+ } ? InjectionToken<V> : InjectionToken<R>;
158
+ export { getInjectableToken }
159
+ export { getInjectableToken as getInjectableToken_alias_1 }
160
+ export { getInjectableToken as getInjectableToken_alias_2 }
161
+
162
+ declare function getInjectors({ baseLocator }: CreateInjectorsOptions): Injectors;
163
+ export { getInjectors }
164
+ export { getInjectors as getInjectors_alias_1 }
165
+ export { getInjectors as getInjectors_alias_2 }
166
+
167
+ declare const globalRegistry: Registry;
168
+ export { globalRegistry }
169
+ export { globalRegistry as globalRegistry_alias_1 }
170
+
171
+ declare const inject: Injectors['inject'];
172
+ export { inject }
173
+ export { inject as inject_alias_1 }
174
+
175
+ declare function Injectable(): <T extends ClassType>(target: T, context: ClassDecoratorContext) => T & {
176
+ [InjectableTokenMeta]: InjectionToken<InstanceType<T>, undefined>;
177
+ };
178
+
179
+ declare function Injectable<T extends ClassType>(options: {
180
+ scope?: InjectableScope;
181
+ token: InjectionToken<T, undefined>;
182
+ }): (target: T, context: ClassDecoratorContext) => T & {
183
+ [InjectableTokenMeta]: InjectionToken<InstanceType<T>, undefined>;
184
+ };
185
+
186
+ declare function Injectable<R>(options: {
187
+ scope?: InjectableScope;
188
+ type: InjectableType.Factory;
189
+ }): <T extends ClassTypeWithInstance<Factory<R>>>(target: T, context: ClassDecoratorContext) => T & {
190
+ [InjectableTokenMeta]: InjectionToken<R, undefined>;
191
+ };
192
+
193
+ declare function Injectable<R, S extends AnyZodObject>(options: {
194
+ scope?: InjectableScope;
195
+ type: InjectableType.Factory;
196
+ token: InjectionToken<R, S>;
197
+ }): <T extends ClassTypeWithInstance<FactoryWithArgs<R, S>>>(target: T, context: ClassDecoratorContext) => T & {
198
+ [InjectableTokenMeta]: InjectionToken<R, S>;
199
+ };
200
+
201
+ declare function Injectable<R>(options: {
202
+ scope?: InjectableScope;
203
+ type: InjectableType.Factory;
204
+ token: InjectionToken<R, undefined>;
205
+ }): <T extends ClassTypeWithInstance<Factory<R>>>(target: T, context: ClassDecoratorContext) => T & {
206
+ [InjectableTokenMeta]: InjectionToken<R, undefined>;
207
+ };
208
+ export { Injectable }
209
+ export { Injectable as Injectable_alias_1 }
210
+ export { Injectable as Injectable_alias_2 }
211
+
212
+ declare interface InjectableOptions {
213
+ scope?: InjectableScope;
214
+ type?: InjectableType;
215
+ token?: InjectionToken<any, any>;
216
+ registry?: Registry;
217
+ }
218
+ export { InjectableOptions }
219
+ export { InjectableOptions as InjectableOptions_alias_1 }
220
+ export { InjectableOptions as InjectableOptions_alias_2 }
221
+
222
+ declare enum InjectableScope {
223
+ /**
224
+ * Singleton scope: The instance is created once and shared across the application.
225
+ */
226
+ Singleton = "Singleton",
227
+ /**
228
+ * Instance scope: A new instance is created for each injection.
229
+ */
230
+ Instance = "Instance"
231
+ }
232
+ export { InjectableScope }
233
+ export { InjectableScope as InjectableScope_alias_1 }
234
+ export { InjectableScope as InjectableScope_alias_2 }
235
+
236
+ declare const InjectableTokenMeta: unique symbol;
237
+ export { InjectableTokenMeta }
238
+ export { InjectableTokenMeta as InjectableTokenMeta_alias_1 }
239
+ export { InjectableTokenMeta as InjectableTokenMeta_alias_2 }
240
+
241
+ declare enum InjectableType {
242
+ Class = "Class",
243
+ Factory = "Factory"
244
+ }
245
+ export { InjectableType }
246
+ export { InjectableType as InjectableType_alias_1 }
247
+ export { InjectableType as InjectableType_alias_2 }
248
+
249
+ declare type InjectionFactory<T = unknown, Args = unknown> = (ctx: FactoryContext, args: Args) => Promise<T>;
250
+ export { InjectionFactory }
251
+ export { InjectionFactory as InjectionFactory_alias_1 }
252
+
253
+ declare class InjectionToken<T, S extends AnyZodObject | ZodOptional<AnyZodObject> | unknown = unknown> {
254
+ readonly name: string | symbol | ClassType;
255
+ readonly schema: AnyZodObject | undefined;
256
+ id: `${string}-${string}-${string}-${string}-${string}`;
257
+ private formattedName;
258
+ constructor(name: string | symbol | ClassType, schema: AnyZodObject | undefined);
259
+ static create<T extends ClassType>(name: T): InjectionToken<InstanceType<T>, undefined>;
260
+ static create<T extends ClassType, Schema extends AnyZodObject | ZodOptional<AnyZodObject>>(name: T, schema: Schema): InjectionToken<InstanceType<T>, Schema>;
261
+ static create<T>(name: string | symbol): InjectionToken<T, undefined>;
262
+ static create<T, Schema extends AnyZodObject | ZodOptional<AnyZodObject>>(name: string | any, schema: Schema): InjectionToken<T, Schema>;
263
+ static bound<T, S extends AnyZodObject | ZodOptional<AnyZodObject>>(token: InjectionToken<T, S>, value: z.input<S>): BoundInjectionToken<T, S>;
264
+ static factory<T, S extends AnyZodObject | ZodOptional<AnyZodObject>>(token: InjectionToken<T, S>, factory: () => Promise<z.input<S>>): FactoryInjectionToken<T, S>;
265
+ static refineType<T>(token: BoundInjectionToken<any, any>): BoundInjectionToken<T, any>;
266
+ toString(): string;
267
+ }
268
+ export { InjectionToken }
269
+ export { InjectionToken as InjectionToken_alias_1 }
270
+
271
+ declare interface Injectors {
272
+ inject<T extends ClassType>(token: T): Promise<InstanceType<T>>;
273
+ inject<T, S extends AnyZodObject>(token: InjectionToken<T, S>, args: z.input<S>): Promise<T>;
274
+ inject<T, S extends ZodOptional<AnyZodObject>>(token: InjectionToken<T, S>, args?: z.input<S>): Promise<T>;
275
+ inject<T>(token: InjectionToken<T, undefined>): Promise<T>;
276
+ inject<T>(token: BoundInjectionToken<T, any>): Promise<T>;
277
+ inject<T>(token: FactoryInjectionToken<T, any>): Promise<T>;
278
+ syncInject<T extends ClassType>(token: T): InstanceType<T>;
279
+ syncInject<T, S extends AnyZodObject>(token: InjectionToken<T, S>, args: z.input<S>): T;
280
+ syncInject<T, S extends ZodOptional<AnyZodObject>>(token: InjectionToken<T, S>, args?: z.input<S>): T;
281
+ syncInject<T>(token: InjectionToken<T, undefined>): T;
282
+ syncInject<T>(token: BoundInjectionToken<T, any>): T;
283
+ syncInject<T>(token: FactoryInjectionToken<T, any>): T;
284
+ wrapSyncInit(cb: () => any): () => [any, Promise<any>[]];
285
+ provideServiceLocator(locator: ServiceLocator): ServiceLocator;
286
+ }
287
+ export { Injectors }
288
+ export { Injectors as Injectors_alias_1 }
289
+ export { Injectors as Injectors_alias_2 }
290
+
291
+ declare const InjectorsBase: Map<ServiceLocator, Injectors>;
292
+ export { InjectorsBase }
293
+ export { InjectorsBase as InjectorsBase_alias_1 }
294
+ export { InjectorsBase as InjectorsBase_alias_2 }
295
+
296
+ declare class InstanceDestroying extends Error {
297
+ name: string;
298
+ code: ErrorsEnum;
299
+ constructor(name: string);
300
+ }
301
+ export { InstanceDestroying }
302
+ export { InstanceDestroying as InstanceDestroying_alias_1 }
303
+ export { InstanceDestroying as InstanceDestroying_alias_2 }
304
+
305
+ declare class InstanceExpired extends Error {
306
+ name: string;
307
+ code: ErrorsEnum;
308
+ constructor(name: string);
309
+ }
310
+ export { InstanceExpired }
311
+ export { InstanceExpired as InstanceExpired_alias_1 }
312
+ export { InstanceExpired as InstanceExpired_alias_2 }
313
+
314
+ declare class InstanceNotFound extends Error {
315
+ name: string;
316
+ code: ErrorsEnum;
317
+ constructor(name: string);
318
+ }
319
+ export { InstanceNotFound }
320
+ export { InstanceNotFound as InstanceNotFound_alias_1 }
321
+ export { InstanceNotFound as InstanceNotFound_alias_2 }
322
+
323
+ declare function makeProxyServiceLocator(serviceLocator: ServiceLocator, ctx: FactoryContext): ServiceLocator;
324
+ export { makeProxyServiceLocator }
325
+ export { makeProxyServiceLocator as makeProxyServiceLocator_alias_1 }
326
+
327
+ declare const provideServiceLocator: Injectors['provideServiceLocator'];
328
+ export { provideServiceLocator }
329
+ export { provideServiceLocator as provideServiceLocator_alias_1 }
330
+
331
+ declare class ProxyServiceLocator implements ServiceLocator {
332
+ private readonly serviceLocator;
333
+ private readonly ctx;
334
+ constructor(serviceLocator: ServiceLocator, ctx: FactoryContext);
335
+ getEventBus(): ServiceLocatorEventBus;
336
+ getInstance(token: InjectionToken<any, any> | BoundInjectionToken<any, any> | FactoryInjectionToken<any, any>, args?: any): Promise<any[]>;
337
+ getOrThrowInstance<Instance, Schema extends AnyZodObject | ZodOptional<AnyZodObject> | undefined>(token: InjectionToken<Instance, Schema>, args: Schema extends AnyZodObject ? z.input<Schema> : Schema extends ZodOptional<AnyZodObject> ? z.input<Schema> | undefined : undefined): Promise<Instance>;
338
+ getSyncInstance<Instance, Schema extends AnyZodObject | ZodOptional<AnyZodObject> | undefined>(token: InjectionToken<Instance, Schema>, args: Schema extends AnyZodObject ? z.input<Schema> : Schema extends ZodOptional<AnyZodObject> ? z.input<Schema> | undefined : undefined): Instance | null;
339
+ invalidate(service: string, round?: number): Promise<any>;
340
+ ready(): Promise<null>;
341
+ makeInstanceName(token: InjectionToken<any, any>, args: any): string;
342
+ }
343
+ export { ProxyServiceLocator }
344
+ export { ProxyServiceLocator as ProxyServiceLocator_alias_1 }
345
+
346
+ declare class Registry {
347
+ private readonly parent?;
348
+ private readonly factories;
349
+ constructor(parent?: Registry | undefined);
350
+ has(token: InjectionToken<any, any>): boolean;
351
+ get<Instance, Schema>(token: InjectionToken<Instance, Schema>): FactoryRecord<Instance, Schema>;
352
+ set<Instance, Schema>(token: InjectionToken<Instance, Schema>, factory: InjectionFactory, scope: InjectableScope): void;
353
+ delete(token: InjectionToken<any, any>): void;
354
+ }
355
+ export { Registry }
356
+ export { Registry as Registry_alias_1 }
357
+
358
+ declare function resolveService<T extends ClassType>(ctx: FactoryContext, target: T, args?: any[]): Promise<InstanceType<T>>;
359
+ export { resolveService }
360
+ export { resolveService as resolveService_alias_1 }
361
+
362
+ declare class ServiceLocator {
363
+ private readonly registry;
364
+ private readonly logger;
365
+ private readonly eventBus;
366
+ private readonly manager;
367
+ constructor(registry?: Registry, logger?: Console | null);
368
+ getEventBus(): ServiceLocatorEventBus;
369
+ storeInstance<Instance>(instance: Instance, token: BoundInjectionToken<Instance, any>): void;
370
+ storeInstance<Instance>(instance: Instance, token: FactoryInjectionToken<Instance, any>): void;
371
+ storeInstance<Instance>(instance: Instance, token: InjectionToken<Instance, undefined>): void;
372
+ storeInstance<Instance, Schema extends AnyZodObject | ZodOptional<AnyZodObject>>(instance: Instance, token: InjectionToken<Instance, Schema>, args: z.input<Schema>): void;
373
+ removeInstance<Instance>(token: BoundInjectionToken<Instance, any>): void;
374
+ removeInstance<Instance>(token: FactoryInjectionToken<Instance, any>): void;
375
+ removeInstance<Instance>(token: InjectionToken<Instance, undefined>): void;
376
+ removeInstance<Instance, Schema extends AnyZodObject | ZodOptional<AnyZodObject>>(token: InjectionToken<Instance, Schema>, args: z.input<Schema>): void;
377
+ private resolveTokenArgs;
378
+ getInstanceIdentifier<Instance, Schema extends AnyZodObject>(token: InjectionToken<Instance, Schema>, args: z.input<Schema>): string;
379
+ getInstanceIdentifier<Instance, Schema extends ZodOptional<AnyZodObject>>(token: InjectionToken<Instance, Schema>, args?: z.input<Schema>): string;
380
+ getInstanceIdentifier<Instance>(token: InjectionToken<Instance, undefined>): string;
381
+ getInstanceIdentifier<Instance>(token: BoundInjectionToken<Instance, any>): string;
382
+ getInstanceIdentifier<Instance>(token: FactoryInjectionToken<Instance, any>): string;
383
+ getInstance<Instance, Schema extends AnyZodObject>(token: InjectionToken<Instance, Schema>, args: z.input<Schema>): Promise<[undefined, Instance] | [UnknownError | FactoryNotFound]>;
384
+ getInstance<Instance, Schema extends ZodOptional<AnyZodObject>>(token: InjectionToken<Instance, Schema>, args?: z.input<Schema>): Promise<[undefined, Instance] | [UnknownError | FactoryNotFound]>;
385
+ getInstance<Instance>(token: InjectionToken<Instance, undefined>): Promise<[undefined, Instance] | [UnknownError | FactoryNotFound]>;
386
+ getInstance<Instance>(token: BoundInjectionToken<Instance, any>): Promise<[undefined, Instance] | [UnknownError | FactoryNotFound]>;
387
+ getInstance<Instance>(token: FactoryInjectionToken<Instance, any>): Promise<[undefined, Instance] | [UnknownError | FactoryNotFound]>;
388
+ getOrThrowInstance<Instance, Schema extends AnyZodObject | ZodOptional<AnyZodObject> | undefined>(token: InjectionToken<Instance, Schema>, args: Schema extends AnyZodObject ? z.input<Schema> : Schema extends ZodOptional<AnyZodObject> ? z.input<Schema> | undefined : undefined): Promise<Instance>;
389
+ private notifyListeners;
390
+ private createInstance;
391
+ private resolveInstance;
392
+ private createFactoryContext;
393
+ getSyncInstance<Instance, Schema extends AnyZodObject | ZodOptional<AnyZodObject> | undefined>(token: InjectionToken<Instance, Schema>, args: Schema extends AnyZodObject ? z.input<Schema> : Schema extends ZodOptional<AnyZodObject> ? z.input<Schema> | undefined : undefined): Instance | null;
394
+ invalidate(service: string, round?: number): Promise<any>;
395
+ ready(): Promise<null>;
396
+ makeInstanceName(token: InjectionToken<any, any> | BoundInjectionToken<any, any> | FactoryInjectionToken<any, any>, args: any): string;
397
+ }
398
+ export { ServiceLocator }
399
+ export { ServiceLocator as ServiceLocator_alias_1 }
400
+
401
+ declare class ServiceLocatorEventBus {
402
+ private readonly logger;
403
+ private listeners;
404
+ constructor(logger?: Console | null);
405
+ on<Event extends string | `pre:${string}` | `post:${string}`>(ns: string, event: Event, listener: (event: Event) => void): () => void;
406
+ emit(key: string, event: string): Promise<PromiseSettledResult<any>[] | undefined>;
407
+ }
408
+ export { ServiceLocatorEventBus }
409
+ export { ServiceLocatorEventBus as ServiceLocatorEventBus_alias_1 }
410
+
411
+ declare type ServiceLocatorInstanceDestroyListener = () => void | Promise<void>;
412
+ export { ServiceLocatorInstanceDestroyListener }
413
+ export { ServiceLocatorInstanceDestroyListener as ServiceLocatorInstanceDestroyListener_alias_1 }
414
+
415
+ declare type ServiceLocatorInstanceEffect = () => void;
416
+ export { ServiceLocatorInstanceEffect }
417
+ export { ServiceLocatorInstanceEffect as ServiceLocatorInstanceEffect_alias_1 }
418
+
419
+ declare type ServiceLocatorInstanceHolder<Instance = unknown> = ServiceLocatorInstanceHolderCreating<Instance> | ServiceLocatorInstanceHolderCreated<Instance> | ServiceLocatorInstanceHolderDestroying<Instance>;
420
+ export { ServiceLocatorInstanceHolder }
421
+ export { ServiceLocatorInstanceHolder as ServiceLocatorInstanceHolder_alias_1 }
422
+
423
+ declare interface ServiceLocatorInstanceHolderCreated<Instance> {
424
+ status: ServiceLocatorInstanceHolderStatus.Created;
425
+ name: string;
426
+ instance: Instance;
427
+ creationPromise: null;
428
+ destroyPromise: null;
429
+ kind: ServiceLocatorInstanceHolderKind;
430
+ effects: ServiceLocatorInstanceEffect[];
431
+ deps: string[];
432
+ destroyListeners: ServiceLocatorInstanceDestroyListener[];
433
+ createdAt: number;
434
+ ttl: number;
435
+ }
436
+ export { ServiceLocatorInstanceHolderCreated }
437
+ export { ServiceLocatorInstanceHolderCreated as ServiceLocatorInstanceHolderCreated_alias_1 }
438
+
439
+ declare interface ServiceLocatorInstanceHolderCreating<Instance> {
440
+ status: ServiceLocatorInstanceHolderStatus.Creating;
441
+ name: string;
442
+ instance: null;
443
+ creationPromise: Promise<[undefined, Instance]> | null;
444
+ destroyPromise: null;
445
+ kind: ServiceLocatorInstanceHolderKind;
446
+ effects: ServiceLocatorInstanceEffect[];
447
+ deps: string[];
448
+ destroyListeners: ServiceLocatorInstanceDestroyListener[];
449
+ createdAt: number;
450
+ ttl: number;
451
+ }
452
+ export { ServiceLocatorInstanceHolderCreating }
453
+ export { ServiceLocatorInstanceHolderCreating as ServiceLocatorInstanceHolderCreating_alias_1 }
454
+
455
+ declare interface ServiceLocatorInstanceHolderDestroying<Instance> {
456
+ status: ServiceLocatorInstanceHolderStatus.Destroying;
457
+ name: string;
458
+ instance: Instance | null;
459
+ creationPromise: null;
460
+ destroyPromise: Promise<void>;
461
+ kind: ServiceLocatorInstanceHolderKind;
462
+ effects: ServiceLocatorInstanceEffect[];
463
+ deps: string[];
464
+ destroyListeners: ServiceLocatorInstanceDestroyListener[];
465
+ createdAt: number;
466
+ ttl: number;
467
+ }
468
+ export { ServiceLocatorInstanceHolderDestroying }
469
+ export { ServiceLocatorInstanceHolderDestroying as ServiceLocatorInstanceHolderDestroying_alias_1 }
470
+
471
+ declare enum ServiceLocatorInstanceHolderKind {
472
+ Instance = "instance",
473
+ Factory = "factory",
474
+ AbstractFactory = "abstractFactory"
475
+ }
476
+ export { ServiceLocatorInstanceHolderKind }
477
+ export { ServiceLocatorInstanceHolderKind as ServiceLocatorInstanceHolderKind_alias_1 }
478
+
479
+ declare enum ServiceLocatorInstanceHolderStatus {
480
+ Created = "created",
481
+ Creating = "creating",
482
+ Destroying = "destroying"
483
+ }
484
+ export { ServiceLocatorInstanceHolderStatus }
485
+ export { ServiceLocatorInstanceHolderStatus as ServiceLocatorInstanceHolderStatus_alias_1 }
486
+
487
+ declare class ServiceLocatorManager {
488
+ private readonly logger;
489
+ private readonly instancesHolders;
490
+ constructor(logger?: Console | null);
491
+ get(name: string): [InstanceExpired | InstanceDestroying, ServiceLocatorInstanceHolder] | [InstanceNotFound] | [undefined, ServiceLocatorInstanceHolder];
492
+ set(name: string, holder: ServiceLocatorInstanceHolder): void;
493
+ has(name: string): [InstanceExpired | InstanceDestroying] | [undefined, boolean];
494
+ delete(name: string): boolean;
495
+ filter(predicate: (value: ServiceLocatorInstanceHolder<any>, key: string) => boolean): Map<string, ServiceLocatorInstanceHolder>;
496
+ }
497
+ export { ServiceLocatorManager }
498
+ export { ServiceLocatorManager as ServiceLocatorManager_alias_1 }
499
+
500
+ declare const syncInject: Injectors['syncInject'];
501
+ export { syncInject }
502
+ export { syncInject as syncInject_alias_1 }
503
+
504
+ declare class UnknownError extends Error {
505
+ code: ErrorsEnum;
506
+ parent?: Error;
507
+ constructor(message: string | Error);
508
+ }
509
+ export { UnknownError }
510
+ export { UnknownError as UnknownError_alias_1 }
511
+ export { UnknownError as UnknownError_alias_2 }
512
+
513
+ declare const wrapSyncInit: Injectors['wrapSyncInit'];
514
+ export { wrapSyncInit }
515
+ export { wrapSyncInit as wrapSyncInit_alias_1 }
516
+
517
+ export { }
@@ -0,0 +1,54 @@
1
+ export { Injectable } from './_tsup-dts-rollup.mjs';
2
+ export { InjectableOptions } from './_tsup-dts-rollup.mjs';
3
+ export { InjectableScope } from './_tsup-dts-rollup.mjs';
4
+ export { InjectableType } from './_tsup-dts-rollup.mjs';
5
+ export { ErrorsEnum } from './_tsup-dts-rollup.mjs';
6
+ export { FactoryNotFound } from './_tsup-dts-rollup.mjs';
7
+ export { FactoryTokenNotResolved } from './_tsup-dts-rollup.mjs';
8
+ export { InstanceDestroying } from './_tsup-dts-rollup.mjs';
9
+ export { InstanceExpired } from './_tsup-dts-rollup.mjs';
10
+ export { InstanceNotFound } from './_tsup-dts-rollup.mjs';
11
+ export { UnknownError } from './_tsup-dts-rollup.mjs';
12
+ export { Factory } from './_tsup-dts-rollup.mjs';
13
+ export { FactoryWithArgs } from './_tsup-dts-rollup.mjs';
14
+ export { getInjectors } from './_tsup-dts-rollup.mjs';
15
+ export { CreateInjectorsOptions } from './_tsup-dts-rollup.mjs';
16
+ export { Injectors } from './_tsup-dts-rollup.mjs';
17
+ export { InjectorsBase } from './_tsup-dts-rollup.mjs';
18
+ export { getInjectableToken } from './_tsup-dts-rollup.mjs';
19
+ export { EventsConfig_alias_1 as EventsConfig } from './_tsup-dts-rollup.mjs';
20
+ export { EventsNames_alias_1 as EventsNames } from './_tsup-dts-rollup.mjs';
21
+ export { EventsArgs_alias_1 as EventsArgs } from './_tsup-dts-rollup.mjs';
22
+ export { ChannelEmitter_alias_1 as ChannelEmitter } from './_tsup-dts-rollup.mjs';
23
+ export { EventEmitterInterface_alias_1 as EventEmitterInterface } from './_tsup-dts-rollup.mjs';
24
+ export { EventEmitter_alias_1 as EventEmitter } from './_tsup-dts-rollup.mjs';
25
+ export { FactoryContext_alias_1 as FactoryContext } from './_tsup-dts-rollup.mjs';
26
+ export { ClassType } from './_tsup-dts-rollup.mjs';
27
+ export { ClassTypeWithInstance } from './_tsup-dts-rollup.mjs';
28
+ export { InjectionToken } from './_tsup-dts-rollup.mjs';
29
+ export { BoundInjectionToken } from './_tsup-dts-rollup.mjs';
30
+ export { FactoryInjectionToken } from './_tsup-dts-rollup.mjs';
31
+ export { getGlobalServiceLocator } from './_tsup-dts-rollup.mjs';
32
+ export { inject } from './_tsup-dts-rollup.mjs';
33
+ export { syncInject } from './_tsup-dts-rollup.mjs';
34
+ export { wrapSyncInit } from './_tsup-dts-rollup.mjs';
35
+ export { provideServiceLocator } from './_tsup-dts-rollup.mjs';
36
+ export { makeProxyServiceLocator } from './_tsup-dts-rollup.mjs';
37
+ export { ProxyServiceLocator } from './_tsup-dts-rollup.mjs';
38
+ export { InjectionFactory } from './_tsup-dts-rollup.mjs';
39
+ export { FactoryRecord } from './_tsup-dts-rollup.mjs';
40
+ export { Registry } from './_tsup-dts-rollup.mjs';
41
+ export { globalRegistry } from './_tsup-dts-rollup.mjs';
42
+ export { resolveService } from './_tsup-dts-rollup.mjs';
43
+ export { ServiceLocator } from './_tsup-dts-rollup.mjs';
44
+ export { ServiceLocatorEventBus } from './_tsup-dts-rollup.mjs';
45
+ export { ServiceLocatorInstanceHolderKind } from './_tsup-dts-rollup.mjs';
46
+ export { ServiceLocatorInstanceHolderStatus } from './_tsup-dts-rollup.mjs';
47
+ export { ServiceLocatorInstanceEffect } from './_tsup-dts-rollup.mjs';
48
+ export { ServiceLocatorInstanceDestroyListener } from './_tsup-dts-rollup.mjs';
49
+ export { ServiceLocatorInstanceHolderCreating } from './_tsup-dts-rollup.mjs';
50
+ export { ServiceLocatorInstanceHolderCreated } from './_tsup-dts-rollup.mjs';
51
+ export { ServiceLocatorInstanceHolderDestroying } from './_tsup-dts-rollup.mjs';
52
+ export { ServiceLocatorInstanceHolder } from './_tsup-dts-rollup.mjs';
53
+ export { ServiceLocatorManager } from './_tsup-dts-rollup.mjs';
54
+ export { InjectableTokenMeta } from './_tsup-dts-rollup.mjs';
@@ -0,0 +1,54 @@
1
+ export { Injectable } from './_tsup-dts-rollup.js';
2
+ export { InjectableOptions } from './_tsup-dts-rollup.js';
3
+ export { InjectableScope } from './_tsup-dts-rollup.js';
4
+ export { InjectableType } from './_tsup-dts-rollup.js';
5
+ export { ErrorsEnum } from './_tsup-dts-rollup.js';
6
+ export { FactoryNotFound } from './_tsup-dts-rollup.js';
7
+ export { FactoryTokenNotResolved } from './_tsup-dts-rollup.js';
8
+ export { InstanceDestroying } from './_tsup-dts-rollup.js';
9
+ export { InstanceExpired } from './_tsup-dts-rollup.js';
10
+ export { InstanceNotFound } from './_tsup-dts-rollup.js';
11
+ export { UnknownError } from './_tsup-dts-rollup.js';
12
+ export { Factory } from './_tsup-dts-rollup.js';
13
+ export { FactoryWithArgs } from './_tsup-dts-rollup.js';
14
+ export { getInjectors } from './_tsup-dts-rollup.js';
15
+ export { CreateInjectorsOptions } from './_tsup-dts-rollup.js';
16
+ export { Injectors } from './_tsup-dts-rollup.js';
17
+ export { InjectorsBase } from './_tsup-dts-rollup.js';
18
+ export { getInjectableToken } from './_tsup-dts-rollup.js';
19
+ export { EventsConfig_alias_1 as EventsConfig } from './_tsup-dts-rollup.js';
20
+ export { EventsNames_alias_1 as EventsNames } from './_tsup-dts-rollup.js';
21
+ export { EventsArgs_alias_1 as EventsArgs } from './_tsup-dts-rollup.js';
22
+ export { ChannelEmitter_alias_1 as ChannelEmitter } from './_tsup-dts-rollup.js';
23
+ export { EventEmitterInterface_alias_1 as EventEmitterInterface } from './_tsup-dts-rollup.js';
24
+ export { EventEmitter_alias_1 as EventEmitter } from './_tsup-dts-rollup.js';
25
+ export { FactoryContext_alias_1 as FactoryContext } from './_tsup-dts-rollup.js';
26
+ export { ClassType } from './_tsup-dts-rollup.js';
27
+ export { ClassTypeWithInstance } from './_tsup-dts-rollup.js';
28
+ export { InjectionToken } from './_tsup-dts-rollup.js';
29
+ export { BoundInjectionToken } from './_tsup-dts-rollup.js';
30
+ export { FactoryInjectionToken } from './_tsup-dts-rollup.js';
31
+ export { getGlobalServiceLocator } from './_tsup-dts-rollup.js';
32
+ export { inject } from './_tsup-dts-rollup.js';
33
+ export { syncInject } from './_tsup-dts-rollup.js';
34
+ export { wrapSyncInit } from './_tsup-dts-rollup.js';
35
+ export { provideServiceLocator } from './_tsup-dts-rollup.js';
36
+ export { makeProxyServiceLocator } from './_tsup-dts-rollup.js';
37
+ export { ProxyServiceLocator } from './_tsup-dts-rollup.js';
38
+ export { InjectionFactory } from './_tsup-dts-rollup.js';
39
+ export { FactoryRecord } from './_tsup-dts-rollup.js';
40
+ export { Registry } from './_tsup-dts-rollup.js';
41
+ export { globalRegistry } from './_tsup-dts-rollup.js';
42
+ export { resolveService } from './_tsup-dts-rollup.js';
43
+ export { ServiceLocator } from './_tsup-dts-rollup.js';
44
+ export { ServiceLocatorEventBus } from './_tsup-dts-rollup.js';
45
+ export { ServiceLocatorInstanceHolderKind } from './_tsup-dts-rollup.js';
46
+ export { ServiceLocatorInstanceHolderStatus } from './_tsup-dts-rollup.js';
47
+ export { ServiceLocatorInstanceEffect } from './_tsup-dts-rollup.js';
48
+ export { ServiceLocatorInstanceDestroyListener } from './_tsup-dts-rollup.js';
49
+ export { ServiceLocatorInstanceHolderCreating } from './_tsup-dts-rollup.js';
50
+ export { ServiceLocatorInstanceHolderCreated } from './_tsup-dts-rollup.js';
51
+ export { ServiceLocatorInstanceHolderDestroying } from './_tsup-dts-rollup.js';
52
+ export { ServiceLocatorInstanceHolder } from './_tsup-dts-rollup.js';
53
+ export { ServiceLocatorManager } from './_tsup-dts-rollup.js';
54
+ export { InjectableTokenMeta } from './_tsup-dts-rollup.js';
package/dist/index.js CHANGED
@@ -229,6 +229,9 @@ function makeProxyServiceLocator(serviceLocator, ctx) {
229
229
  return new ProxyServiceLocator(serviceLocator, ctx);
230
230
  }
231
231
 
232
+ // packages/di/src/symbols/injectable-token.mts
233
+ var InjectableTokenMeta = Symbol.for("InjectableTokenMeta");
234
+
232
235
  // packages/di/src/utils/get-injectors.mts
233
236
  var InjectorsBase = /* @__PURE__ */ new Map();
234
237
  function getInjectors({ baseLocator }) {
@@ -333,7 +336,6 @@ async function resolveService(ctx, target, args = []) {
333
336
  }
334
337
 
335
338
  // packages/di/src/decorators/injectable.decorator.mts
336
- var InjectableTokenMeta = Symbol.for("InjectableTokenMeta");
337
339
  function Injectable({
338
340
  scope = "Singleton" /* Singleton */,
339
341
  type = "Class" /* Class */,
@@ -978,9 +980,13 @@ function getGlobalServiceLocator() {
978
980
  }
979
981
  return globalServiceLocator;
980
982
  }
981
- var { inject, syncInject, wrapSyncInit, provideServiceLocator } = getInjectors({
983
+ var values = getInjectors({
982
984
  baseLocator: globalServiceLocator
983
985
  });
986
+ var inject = values.inject;
987
+ var syncInject = values.syncInject;
988
+ var wrapSyncInit = values.wrapSyncInit;
989
+ var provideServiceLocator = values.provideServiceLocator;
984
990
  // Annotate the CommonJS export names for ESM import in node:
985
991
  0 && (module.exports = {
986
992
  BoundInjectionToken,
package/dist/index.mjs CHANGED
@@ -171,6 +171,9 @@ function makeProxyServiceLocator(serviceLocator, ctx) {
171
171
  return new ProxyServiceLocator(serviceLocator, ctx);
172
172
  }
173
173
 
174
+ // packages/di/src/symbols/injectable-token.mts
175
+ var InjectableTokenMeta = Symbol.for("InjectableTokenMeta");
176
+
174
177
  // packages/di/src/utils/get-injectors.mts
175
178
  var InjectorsBase = /* @__PURE__ */ new Map();
176
179
  function getInjectors({ baseLocator }) {
@@ -275,7 +278,6 @@ async function resolveService(ctx, target, args = []) {
275
278
  }
276
279
 
277
280
  // packages/di/src/decorators/injectable.decorator.mts
278
- var InjectableTokenMeta = Symbol.for("InjectableTokenMeta");
279
281
  function Injectable({
280
282
  scope = "Singleton" /* Singleton */,
281
283
  type = "Class" /* Class */,
@@ -920,9 +922,13 @@ function getGlobalServiceLocator() {
920
922
  }
921
923
  return globalServiceLocator;
922
924
  }
923
- var { inject, syncInject, wrapSyncInit, provideServiceLocator } = getInjectors({
925
+ var values = getInjectors({
924
926
  baseLocator: globalServiceLocator
925
927
  });
928
+ var inject = values.inject;
929
+ var syncInject = values.syncInject;
930
+ var wrapSyncInit = values.wrapSyncInit;
931
+ var provideServiceLocator = values.provideServiceLocator;
926
932
  export {
927
933
  BoundInjectionToken,
928
934
  ErrorsEnum,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@navios/di",
3
- "version": "0.1.2",
3
+ "version": "0.1.4",
4
4
  "author": {
5
5
  "name": "Oleksandr Hanzha",
6
6
  "email": "alex@granted.name"
@@ -15,7 +15,7 @@
15
15
  "main": "./dist/index.js",
16
16
  "module": "./dist/index.mjs",
17
17
  "peerDependencies": {
18
- "@navios/common": "^0.1.5",
18
+ "@navios/common": "^0.1.6",
19
19
  "zod": "^3.23.8"
20
20
  },
21
21
  "exports": {
@@ -32,7 +32,7 @@
32
32
  "./package.json": "./package.json"
33
33
  },
34
34
  "devDependencies": {
35
- "@navios/common": "^0.1.5",
35
+ "@navios/common": "^0.1.6",
36
36
  "tsx": "^4.19.4",
37
37
  "typescript": "^5.8.3",
38
38
  "zod": "^3.24.4"
@@ -10,6 +10,7 @@ import { InjectableScope, InjectableType } from '../enums/index.mjs'
10
10
  import { InjectionToken } from '../injection-token.mjs'
11
11
  import { globalRegistry } from '../registry.mjs'
12
12
  import { resolveService } from '../resolve-service.mjs'
13
+ import { InjectableTokenMeta } from '../symbols/index.mjs'
13
14
 
14
15
  export interface InjectableOptions {
15
16
  scope?: InjectableScope
@@ -18,8 +19,6 @@ export interface InjectableOptions {
18
19
  registry?: Registry
19
20
  }
20
21
 
21
- export const InjectableTokenMeta = Symbol.for('InjectableTokenMeta')
22
-
23
22
  export function Injectable(): <T extends ClassType>(
24
23
  target: T,
25
24
  context: ClassDecoratorContext,
package/src/index.mts CHANGED
@@ -14,3 +14,4 @@ export * from './service-locator.mjs'
14
14
  export * from './service-locator-event-bus.mjs'
15
15
  export * from './service-locator-instance-holder.mjs'
16
16
  export * from './service-locator-manager.mjs'
17
+ export * from './symbols/injectable-token.mjs'
package/src/injector.mts CHANGED
@@ -1,3 +1,5 @@
1
+ import type { Injectors } from './utils/index.mjs'
2
+
1
3
  import { ServiceLocator } from './service-locator.mjs'
2
4
  import { getInjectors } from './utils/index.mjs'
3
5
 
@@ -11,9 +13,15 @@ export function getGlobalServiceLocator(): ServiceLocator {
11
13
  }
12
14
  return globalServiceLocator
13
15
  }
14
- const { inject, syncInject, wrapSyncInit, provideServiceLocator } =
15
- getInjectors({
16
- baseLocator: globalServiceLocator,
17
- })
16
+ const values = getInjectors({
17
+ baseLocator: globalServiceLocator,
18
+ })
19
+
20
+ export const inject: Injectors['inject'] = values.inject
21
+
22
+ export const syncInject: Injectors['syncInject'] = values.syncInject
23
+
24
+ export const wrapSyncInit: Injectors['wrapSyncInit'] = values.wrapSyncInit
18
25
 
19
- export { inject, syncInject, wrapSyncInit, provideServiceLocator }
26
+ export const provideServiceLocator: Injectors['provideServiceLocator'] =
27
+ values.provideServiceLocator
@@ -0,0 +1 @@
1
+ export * from './injectable-token.mjs'
@@ -0,0 +1 @@
1
+ export const InjectableTokenMeta = Symbol.for('InjectableTokenMeta')
@@ -1,6 +1,6 @@
1
1
  import type { ClassType, InjectionToken } from '../injection-token.mjs'
2
2
 
3
- import { InjectableTokenMeta } from '../decorators/index.mjs'
3
+ import { InjectableTokenMeta } from '../symbols/injectable-token.mjs'
4
4
 
5
5
  export function getInjectableToken<R>(
6
6
  target: ClassType,
@@ -1,14 +1,14 @@
1
1
  import type { AnyZodObject, z, ZodOptional } from 'zod'
2
2
 
3
- import type { ClassType } from '../injection-token.mjs'
4
- import type { ServiceLocator } from '../service-locator.mjs'
5
-
6
- import { InjectableTokenMeta } from '../decorators/index.mjs'
7
- import {
3
+ import type {
8
4
  BoundInjectionToken,
5
+ ClassType,
9
6
  FactoryInjectionToken,
10
7
  InjectionToken,
11
8
  } from '../injection-token.mjs'
9
+ import type { ServiceLocator } from '../service-locator.mjs'
10
+
11
+ import { InjectableTokenMeta } from '../symbols/index.mjs'
12
12
 
13
13
  export interface CreateInjectorsOptions {
14
14
  baseLocator: ServiceLocator