@navios/core 0.1.14 → 0.1.15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (34) hide show
  1. package/dist/_tsup-dts-rollup.d.mts +124 -49
  2. package/dist/_tsup-dts-rollup.d.ts +124 -49
  3. package/dist/index.d.mts +8 -2
  4. package/dist/index.d.ts +8 -2
  5. package/dist/index.js +537 -471
  6. package/dist/index.mjs +531 -470
  7. package/package.json +1 -1
  8. package/src/adapters/endpoint-adapter.service.mts +75 -0
  9. package/src/adapters/handler-adapter.interface.mts +21 -0
  10. package/src/adapters/index.mts +4 -0
  11. package/src/adapters/multipart-adapter.service.mts +130 -0
  12. package/src/adapters/stream-adapter.service.mts +95 -0
  13. package/src/attribute.factory.mts +13 -13
  14. package/src/config/config.provider.mts +8 -2
  15. package/src/decorators/controller.decorator.mts +0 -2
  16. package/src/decorators/endpoint.decorator.mts +7 -3
  17. package/src/decorators/header.decorator.mts +1 -6
  18. package/src/decorators/http-code.decorator.mts +1 -6
  19. package/src/decorators/module.decorator.mts +13 -15
  20. package/src/decorators/multipart.decorator.mts +7 -3
  21. package/src/decorators/stream.decorator.mts +7 -3
  22. package/src/index.mts +1 -0
  23. package/src/logger/logger.service.mts +0 -1
  24. package/src/metadata/controller.metadata.mts +3 -3
  25. package/src/metadata/{endpoint.metadata.mts → handler.metadata.mts} +17 -24
  26. package/src/metadata/index.mts +1 -1
  27. package/src/navios.application.mts +3 -4
  28. package/src/service-locator/__tests__/injection-token.spec.mts +10 -5
  29. package/src/service-locator/decorators/injectable.decorator.mts +53 -4
  30. package/src/service-locator/inject.mts +14 -0
  31. package/src/service-locator/interfaces/factory.interface.mts +9 -1
  32. package/src/service-locator/sync-injector.mts +14 -0
  33. package/src/services/controller-adapter.service.mts +59 -240
  34. package/src/services/execution-context.mts +4 -3
@@ -41,14 +41,14 @@ export { Application as Application_alias_2 }
41
41
  declare class AttributeFactory {
42
42
  static createAttribute(token: symbol): ClassAttribute;
43
43
  static createAttribute<T extends ZodType>(token: symbol, schema: T): ClassSchemaAttribute<T>;
44
- static get(attribute: ClassAttribute, target: ModuleMetadata | ControllerMetadata | EndpointMetadata): true | null;
45
- static get<T extends ZodType>(attribute: ClassSchemaAttribute<T>, target: ModuleMetadata | ControllerMetadata | EndpointMetadata): z.output<T> | null;
46
- static getAll(attribute: ClassAttribute, target: ModuleMetadata | ControllerMetadata | EndpointMetadata): Array<true> | null;
47
- static getAll<T extends ZodType>(attribute: ClassSchemaAttribute<T>, target: ModuleMetadata | ControllerMetadata | EndpointMetadata): Array<z.output<T>> | null;
48
- static getLast(attribute: ClassAttribute, target: (ModuleMetadata | ControllerMetadata | EndpointMetadata)[]): true | null;
49
- static getLast<T extends ZodType>(attribute: ClassSchemaAttribute<T>, target: (ModuleMetadata | ControllerMetadata | EndpointMetadata)[]): z.output<T> | null;
50
- static has(attribute: ClassAttribute, target: ModuleMetadata | ControllerMetadata | EndpointMetadata): boolean;
51
- static has<T extends ZodType>(attribute: ClassSchemaAttribute<T>, target: ModuleMetadata | ControllerMetadata | EndpointMetadata): boolean;
44
+ static get(attribute: ClassAttribute, target: ModuleMetadata | ControllerMetadata | HandlerMetadata<any>): true | null;
45
+ static get<T extends ZodType>(attribute: ClassSchemaAttribute<T>, target: ModuleMetadata | ControllerMetadata | HandlerMetadata<any>): z.output<T> | null;
46
+ static getAll(attribute: ClassAttribute, target: ModuleMetadata | ControllerMetadata | HandlerMetadata<any>): Array<true> | null;
47
+ static getAll<T extends ZodType>(attribute: ClassSchemaAttribute<T>, target: ModuleMetadata | ControllerMetadata | HandlerMetadata<any>): Array<z.output<T>> | null;
48
+ static getLast(attribute: ClassAttribute, target: (ModuleMetadata | ControllerMetadata | HandlerMetadata<any>)[]): true | null;
49
+ static getLast<T extends ZodType>(attribute: ClassSchemaAttribute<T>, target: (ModuleMetadata | ControllerMetadata | HandlerMetadata<any>)[]): z.output<T> | null;
50
+ static has(attribute: ClassAttribute, target: ModuleMetadata | ControllerMetadata | HandlerMetadata<any>): boolean;
51
+ static has<T extends ZodType>(attribute: ClassSchemaAttribute<T>, target: ModuleMetadata | ControllerMetadata | HandlerMetadata<any>): boolean;
52
52
  }
53
53
  export { AttributeFactory }
54
54
  export { AttributeFactory as AttributeFactory_alias_1 }
@@ -132,7 +132,7 @@ export { ConfigProvider as ConfigProvider_alias_2 }
132
132
 
133
133
  declare class ConfigProviderFactory {
134
134
  logger: LoggerInstance_2;
135
- create(ctx: any, args: z.infer<typeof ConfigProviderOptions>): Promise<ConfigServiceInstance<unknown>>;
135
+ create(ctx: any, args: z.infer<typeof ConfigProviderOptions>): Promise<ConfigService>;
136
136
  }
137
137
  export { ConfigProviderFactory }
138
138
  export { ConfigProviderFactory as ConfigProviderFactory_alias_1 }
@@ -377,7 +377,7 @@ export { ConsoleLoggerOptions }
377
377
  export { ConsoleLoggerOptions as ConsoleLoggerOptions_alias_1 }
378
378
  export { ConsoleLoggerOptions as ConsoleLoggerOptions_alias_2 }
379
379
 
380
- declare function Controller({ guards }?: ControllerOptions): (target: ClassType, context: ClassDecoratorContext) => ClassType;
380
+ declare function Controller({ guards }?: ControllerOptions): (target: ClassType, context: ClassDecoratorContext) => any;
381
381
  export { Controller }
382
382
  export { Controller as Controller_alias_1 }
383
383
  export { Controller as Controller_alias_2 }
@@ -385,20 +385,16 @@ export { Controller as Controller_alias_2 }
385
385
  declare class ControllerAdapterService {
386
386
  guardRunner: GuardRunnerService;
387
387
  private logger;
388
- setupController(controller: ClassType, instance: FastifyInstance, moduleMetadata: ModuleMetadata): void;
389
- providePreHandler(executionContext: ExecutionContext): ((request: FastifyRequest, reply: FastifyReply) => Promise<undefined>) | undefined;
390
- private provideSchemaForConfig;
391
- private provideHandler;
392
- private provideHandlerForConfig;
393
- private provideHandlerForStream;
394
- private provideHandlerForMultipart;
388
+ setupController(controller: ClassType, instance: FastifyInstance, moduleMetadata: ModuleMetadata): Promise<void>;
389
+ providePreHandler(executionContext: ExecutionContext): ((request: FastifyRequest, reply: FastifyReply) => Promise<void>) | undefined;
390
+ private wrapHandler;
395
391
  }
396
392
  export { ControllerAdapterService }
397
393
  export { ControllerAdapterService as ControllerAdapterService_alias_1 }
398
394
  export { ControllerAdapterService as ControllerAdapterService_alias_2 }
399
395
 
400
396
  declare interface ControllerMetadata {
401
- endpoints: Set<EndpointMetadata>;
397
+ endpoints: Set<HandlerMetadata>;
402
398
  guards: Set<ClassTypeWithInstance<CanActivate> | InjectionToken<CanActivate, undefined>>;
403
399
  customAttributes: Map<string | symbol, any>;
404
400
  }
@@ -425,20 +421,19 @@ export { Endpoint }
425
421
  export { Endpoint as Endpoint_alias_1 }
426
422
  export { Endpoint as Endpoint_alias_2 }
427
423
 
428
- declare interface EndpointMetadata {
429
- classMethod: string;
430
- url: string;
431
- successStatusCode: number;
432
- type: EndpointType;
433
- headers: Partial<Record<HttpHeader, number | string | string[] | undefined>>;
434
- httpMethod: HttpMethod;
435
- config: BaseEndpointConfig | BaseStreamConfig | null;
436
- guards: Set<ClassTypeWithInstance<CanActivate> | InjectionToken<CanActivate, undefined>>;
437
- customAttributes: Map<string | symbol, any>;
424
+ declare class EndpointAdapterService extends StreamAdapterService {
425
+ hasSchema(handlerMetadata: HandlerMetadata<BaseEndpointConfig>): boolean;
426
+ provideSchema(handlerMetadata: HandlerMetadata<BaseEndpointConfig>): Record<string, any>;
427
+ provideHandler(controller: ClassType, executionContext: ExecutionContext, handlerMetadata: HandlerMetadata<BaseEndpointConfig>): (request: FastifyRequest, reply: FastifyReply) => Promise<any>;
438
428
  }
439
- export { EndpointMetadata }
440
- export { EndpointMetadata as EndpointMetadata_alias_1 }
441
- export { EndpointMetadata as EndpointMetadata_alias_2 }
429
+ export { EndpointAdapterService }
430
+ export { EndpointAdapterService as EndpointAdapterService_alias_1 }
431
+ export { EndpointAdapterService as EndpointAdapterService_alias_2 }
432
+
433
+ declare const EndpointAdapterToken: InjectionToken<EndpointAdapterService, undefined>;
434
+ export { EndpointAdapterToken }
435
+ export { EndpointAdapterToken as EndpointAdapterToken_alias_1 }
436
+ export { EndpointAdapterToken as EndpointAdapterToken_alias_2 }
442
437
 
443
438
  declare const EndpointMetadataKey: unique symbol;
444
439
  export { EndpointMetadataKey }
@@ -459,17 +454,6 @@ export { EndpointResult }
459
454
  export { EndpointResult as EndpointResult_alias_1 }
460
455
  export { EndpointResult as EndpointResult_alias_2 }
461
456
 
462
- declare enum EndpointType {
463
- Unknown = "unknown",
464
- Endpoint = "endpoint",
465
- Stream = "stream",
466
- Multipart = "multipart",
467
- Handler = "handler"
468
- }
469
- export { EndpointType }
470
- export { EndpointType as EndpointType_alias_1 }
471
- export { EndpointType as EndpointType_alias_2 }
472
-
473
457
  declare function envInt(key: keyof NodeJS.ProcessEnv, defaultValue: number): number;
474
458
  export { envInt }
475
459
  export { envInt as envInt_alias_1 }
@@ -543,10 +527,10 @@ declare class ExecutionContext {
543
527
  private readonly handler;
544
528
  private request;
545
529
  private reply;
546
- constructor(module: ModuleMetadata, controller: ControllerMetadata, handler: EndpointMetadata);
530
+ constructor(module: ModuleMetadata, controller: ControllerMetadata, handler: HandlerMetadata);
547
531
  getModule(): ModuleMetadata;
548
532
  getController(): ControllerMetadata;
549
- getHandler(): EndpointMetadata;
533
+ getHandler(): HandlerMetadata;
550
534
  getRequest(): FastifyRequest;
551
535
  getReply(): FastifyReply;
552
536
  provideRequest(request: FastifyRequest): void;
@@ -577,7 +561,7 @@ export { extractModuleMetadata as extractModuleMetadata_alias_1 }
577
561
  export { extractModuleMetadata as extractModuleMetadata_alias_2 }
578
562
 
579
563
  export declare interface Factory<T> {
580
- create(ctx: any): Promise<T>;
564
+ create(ctx?: any): Promise<T> | T;
581
565
  }
582
566
 
583
567
  declare class FactoryInjectionToken<T, S extends AnyZodObject | ZodOptional<AnyZodObject>> extends InjectionToken<T, S> {
@@ -611,6 +595,10 @@ export { FactoryTokenNotResolved as FactoryTokenNotResolved_alias_1 }
611
595
  export { FactoryTokenNotResolved as FactoryTokenNotResolved_alias_2 }
612
596
  export { FactoryTokenNotResolved as FactoryTokenNotResolved_alias_3 }
613
597
 
598
+ export declare interface FactoryWithArgs<T, A extends AnyZodObject> {
599
+ create(ctx: any, args: z.output<A>): Promise<T> | T;
600
+ }
601
+
614
602
  /**
615
603
  * @publicApi
616
604
  */
@@ -627,7 +615,7 @@ export { ForbiddenException }
627
615
  export { ForbiddenException as ForbiddenException_alias_1 }
628
616
  export { ForbiddenException as ForbiddenException_alias_2 }
629
617
 
630
- declare function getAllEndpointMetadata(context: ClassMethodDecoratorContext | ClassDecoratorContext): Set<EndpointMetadata>;
618
+ declare function getAllEndpointMetadata(context: ClassMethodDecoratorContext | ClassDecoratorContext): Set<HandlerMetadata<any>>;
631
619
  export { getAllEndpointMetadata }
632
620
  export { getAllEndpointMetadata as getAllEndpointMetadata_alias_1 }
633
621
  export { getAllEndpointMetadata as getAllEndpointMetadata_alias_2 }
@@ -637,7 +625,7 @@ export { getControllerMetadata }
637
625
  export { getControllerMetadata as getControllerMetadata_alias_1 }
638
626
  export { getControllerMetadata as getControllerMetadata_alias_2 }
639
627
 
640
- declare function getEndpointMetadata(target: Function, context: ClassMethodDecoratorContext): EndpointMetadata;
628
+ declare function getEndpointMetadata<Config = any>(target: Function, context: ClassMethodDecoratorContext): HandlerMetadata<Config>;
641
629
  export { getEndpointMetadata }
642
630
  export { getEndpointMetadata as getEndpointMetadata_alias_1 }
643
631
  export { getEndpointMetadata as getEndpointMetadata_alias_2 }
@@ -668,6 +656,31 @@ export { GuardRunnerService }
668
656
  export { GuardRunnerService as GuardRunnerService_alias_1 }
669
657
  export { GuardRunnerService as GuardRunnerService_alias_2 }
670
658
 
659
+ declare interface HandlerAdapterInterface {
660
+ provideSchema?: (handlerMetadata: HandlerMetadata<any>) => Record<string, any>;
661
+ hasSchema?: (handlerMetadata: HandlerMetadata<any>) => boolean;
662
+ prepareArguments?: (handlerMetadata: HandlerMetadata<any>) => ((target: Record<string, any>, request: FastifyRequest) => Promise<void> | void)[];
663
+ provideHandler: (controller: ClassType, executionContext: ExecutionContext, handlerMetadata: HandlerMetadata<any>) => (request: FastifyRequest, reply: FastifyReply) => Promise<any>;
664
+ }
665
+ export { HandlerAdapterInterface }
666
+ export { HandlerAdapterInterface as HandlerAdapterInterface_alias_1 }
667
+ export { HandlerAdapterInterface as HandlerAdapterInterface_alias_2 }
668
+
669
+ declare interface HandlerMetadata<Config = null> {
670
+ classMethod: string;
671
+ url: string;
672
+ successStatusCode: number;
673
+ adapterToken: InjectionToken<HandlerAdapterInterface, undefined> | ClassTypeWithInstance<HandlerAdapterInterface> | null;
674
+ headers: Partial<Record<HttpHeader, number | string | string[] | undefined>>;
675
+ httpMethod: HttpMethod;
676
+ config: Config;
677
+ guards: Set<ClassTypeWithInstance<CanActivate> | InjectionToken<CanActivate, undefined>>;
678
+ customAttributes: Map<string | symbol, any>;
679
+ }
680
+ export { HandlerMetadata }
681
+ export { HandlerMetadata as HandlerMetadata_alias_1 }
682
+ export { HandlerMetadata as HandlerMetadata_alias_2 }
683
+
671
684
  declare function hasControllerMetadata(target: ClassType): boolean;
672
685
  export { hasControllerMetadata }
673
686
  export { hasControllerMetadata as hasControllerMetadata_alias_1 }
@@ -709,7 +722,39 @@ export { inject }
709
722
  export { inject as inject_alias_1 }
710
723
  export { inject as inject_alias_2 }
711
724
 
712
- declare function Injectable({ scope, type, token, }?: InjectableOptions): (target: ClassType, context: ClassDecoratorContext) => ClassType;
725
+ declare function Injectable(): <T extends ClassType>(target: T, context: ClassDecoratorContext) => T & {
726
+ [InjectableTokenMeta]: InjectionToken<InstanceType<T>, undefined>;
727
+ };
728
+
729
+ declare function Injectable<T extends ClassType>(options: {
730
+ scope?: InjectableScope;
731
+ token: InjectionToken<T, undefined>;
732
+ }): (target: T, context: ClassDecoratorContext) => T & {
733
+ [InjectableTokenMeta]: InjectionToken<InstanceType<T>, undefined>;
734
+ };
735
+
736
+ declare function Injectable<R>(options: {
737
+ scope?: InjectableScope;
738
+ type: InjectableType.Factory;
739
+ }): <T extends ClassTypeWithInstance<Factory<R>>>(target: T, context: ClassDecoratorContext) => T & {
740
+ [InjectableTokenMeta]: InjectionToken<R, undefined>;
741
+ };
742
+
743
+ declare function Injectable<R, S extends AnyZodObject>(options: {
744
+ scope?: InjectableScope;
745
+ type: InjectableType.Factory;
746
+ token: InjectionToken<R, S>;
747
+ }): <T extends ClassTypeWithInstance<FactoryWithArgs<R, S>>>(target: T, context: ClassDecoratorContext) => T & {
748
+ [InjectableTokenMeta]: InjectionToken<R, S>;
749
+ };
750
+
751
+ declare function Injectable<R>(options: {
752
+ scope?: InjectableScope;
753
+ type: InjectableType.Factory;
754
+ token: InjectionToken<R, undefined>;
755
+ }): <T extends ClassTypeWithInstance<Factory<R>>>(target: T, context: ClassDecoratorContext) => T & {
756
+ [InjectableTokenMeta]: InjectionToken<R, undefined>;
757
+ };
713
758
  export { Injectable }
714
759
  export { Injectable as Injectable_alias_1 }
715
760
  export { Injectable as Injectable_alias_2 }
@@ -1103,7 +1148,7 @@ export { LogLevel as LogLevel_alias_2 }
1103
1148
 
1104
1149
  export declare function makeProxyServiceLocator(serviceLocator: ServiceLocator, ctx: ServiceLocatorAbstractFactoryContext): ServiceLocator;
1105
1150
 
1106
- declare function Module(metadata: ModuleOptions): (target: ClassType, context: ClassDecoratorContext) => ClassType;
1151
+ declare function Module({ controllers, imports, guards }?: ModuleOptions): (target: ClassType, context: ClassDecoratorContext) => any;
1107
1152
  export { Module }
1108
1153
  export { Module as Module_alias_1 }
1109
1154
  export { Module as Module_alias_2 }
@@ -1154,6 +1199,21 @@ export { Multipart }
1154
1199
  export { Multipart as Multipart_alias_1 }
1155
1200
  export { Multipart as Multipart_alias_2 }
1156
1201
 
1202
+ declare class MultipartAdapterService extends EndpointAdapterService {
1203
+ prepareArguments(handlerMetadata: HandlerMetadata<BaseEndpointConfig>): ((target: Record<string, any>, request: FastifyRequest) => void)[];
1204
+ private populateRequest;
1205
+ private analyzeSchema;
1206
+ provideSchema(handlerMetadata: HandlerMetadata<BaseEndpointConfig>): Record<string, any>;
1207
+ }
1208
+ export { MultipartAdapterService }
1209
+ export { MultipartAdapterService as MultipartAdapterService_alias_1 }
1210
+ export { MultipartAdapterService as MultipartAdapterService_alias_2 }
1211
+
1212
+ declare const MultipartAdapterToken: InjectionToken<MultipartAdapterService, undefined>;
1213
+ export { MultipartAdapterToken }
1214
+ export { MultipartAdapterToken as MultipartAdapterToken_alias_1 }
1215
+ export { MultipartAdapterToken as MultipartAdapterToken_alias_2 }
1216
+
1157
1217
  declare type MultipartParams<EndpointDeclaration extends {
1158
1218
  config: BaseEndpointConfig<any, any, any, any, any>;
1159
1219
  }, Url extends string = EndpointDeclaration['config']['url'], QuerySchema = EndpointDeclaration['config']['querySchema']> = QuerySchema extends AnyZodObject ? EndpointDeclaration['config']['requestSchema'] extends ZodType ? EndpointFunctionArgs<Url, QuerySchema, EndpointDeclaration['config']['requestSchema']> : EndpointFunctionArgs<Url, QuerySchema, undefined> : EndpointDeclaration['config']['requestSchema'] extends ZodType ? EndpointFunctionArgs<Url, undefined, EndpointDeclaration['config']['requestSchema']> : EndpointFunctionArgs<Url, undefined, undefined>;
@@ -1491,6 +1551,21 @@ export { Stream }
1491
1551
  export { Stream as Stream_alias_1 }
1492
1552
  export { Stream as Stream_alias_2 }
1493
1553
 
1554
+ declare class StreamAdapterService implements HandlerAdapterInterface {
1555
+ hasSchema(handlerMetadata: HandlerMetadata<BaseStreamConfig>): boolean;
1556
+ prepareArguments(handlerMetadata: HandlerMetadata<BaseStreamConfig>): ((target: Record<string, any>, request: FastifyRequest) => void | Promise<void>)[];
1557
+ provideHandler(controller: ClassType, executionContext: ExecutionContext, handlerMetadata: HandlerMetadata<BaseStreamConfig>): (request: FastifyRequest, reply: FastifyReply) => Promise<any>;
1558
+ provideSchema(handlerMetadata: HandlerMetadata<BaseStreamConfig>): Record<string, any>;
1559
+ }
1560
+ export { StreamAdapterService }
1561
+ export { StreamAdapterService as StreamAdapterService_alias_1 }
1562
+ export { StreamAdapterService as StreamAdapterService_alias_2 }
1563
+
1564
+ declare const StreamAdapterToken: InjectionToken<StreamAdapterService, undefined>;
1565
+ export { StreamAdapterToken }
1566
+ export { StreamAdapterToken as StreamAdapterToken_alias_1 }
1567
+ export { StreamAdapterToken as StreamAdapterToken_alias_2 }
1568
+
1494
1569
  declare type StreamParams<EndpointDeclaration extends {
1495
1570
  config: BaseStreamConfig<any, any, any, any>;
1496
1571
  }, Url extends string = EndpointDeclaration['config']['url'], QuerySchema = EndpointDeclaration['config']['querySchema']> = QuerySchema extends AnyZodObject ? EndpointDeclaration['config']['requestSchema'] extends ZodType ? EndpointFunctionArgs<Url, QuerySchema, EndpointDeclaration['config']['requestSchema']> : EndpointFunctionArgs<Url, QuerySchema, undefined> : EndpointDeclaration['config']['requestSchema'] extends ZodType ? EndpointFunctionArgs<Url, undefined, EndpointDeclaration['config']['requestSchema']> : EndpointFunctionArgs<Url, undefined, undefined>;
@@ -41,14 +41,14 @@ export { Application as Application_alias_2 }
41
41
  declare class AttributeFactory {
42
42
  static createAttribute(token: symbol): ClassAttribute;
43
43
  static createAttribute<T extends ZodType>(token: symbol, schema: T): ClassSchemaAttribute<T>;
44
- static get(attribute: ClassAttribute, target: ModuleMetadata | ControllerMetadata | EndpointMetadata): true | null;
45
- static get<T extends ZodType>(attribute: ClassSchemaAttribute<T>, target: ModuleMetadata | ControllerMetadata | EndpointMetadata): z.output<T> | null;
46
- static getAll(attribute: ClassAttribute, target: ModuleMetadata | ControllerMetadata | EndpointMetadata): Array<true> | null;
47
- static getAll<T extends ZodType>(attribute: ClassSchemaAttribute<T>, target: ModuleMetadata | ControllerMetadata | EndpointMetadata): Array<z.output<T>> | null;
48
- static getLast(attribute: ClassAttribute, target: (ModuleMetadata | ControllerMetadata | EndpointMetadata)[]): true | null;
49
- static getLast<T extends ZodType>(attribute: ClassSchemaAttribute<T>, target: (ModuleMetadata | ControllerMetadata | EndpointMetadata)[]): z.output<T> | null;
50
- static has(attribute: ClassAttribute, target: ModuleMetadata | ControllerMetadata | EndpointMetadata): boolean;
51
- static has<T extends ZodType>(attribute: ClassSchemaAttribute<T>, target: ModuleMetadata | ControllerMetadata | EndpointMetadata): boolean;
44
+ static get(attribute: ClassAttribute, target: ModuleMetadata | ControllerMetadata | HandlerMetadata<any>): true | null;
45
+ static get<T extends ZodType>(attribute: ClassSchemaAttribute<T>, target: ModuleMetadata | ControllerMetadata | HandlerMetadata<any>): z.output<T> | null;
46
+ static getAll(attribute: ClassAttribute, target: ModuleMetadata | ControllerMetadata | HandlerMetadata<any>): Array<true> | null;
47
+ static getAll<T extends ZodType>(attribute: ClassSchemaAttribute<T>, target: ModuleMetadata | ControllerMetadata | HandlerMetadata<any>): Array<z.output<T>> | null;
48
+ static getLast(attribute: ClassAttribute, target: (ModuleMetadata | ControllerMetadata | HandlerMetadata<any>)[]): true | null;
49
+ static getLast<T extends ZodType>(attribute: ClassSchemaAttribute<T>, target: (ModuleMetadata | ControllerMetadata | HandlerMetadata<any>)[]): z.output<T> | null;
50
+ static has(attribute: ClassAttribute, target: ModuleMetadata | ControllerMetadata | HandlerMetadata<any>): boolean;
51
+ static has<T extends ZodType>(attribute: ClassSchemaAttribute<T>, target: ModuleMetadata | ControllerMetadata | HandlerMetadata<any>): boolean;
52
52
  }
53
53
  export { AttributeFactory }
54
54
  export { AttributeFactory as AttributeFactory_alias_1 }
@@ -132,7 +132,7 @@ export { ConfigProvider as ConfigProvider_alias_2 }
132
132
 
133
133
  declare class ConfigProviderFactory {
134
134
  logger: LoggerInstance_2;
135
- create(ctx: any, args: z.infer<typeof ConfigProviderOptions>): Promise<ConfigServiceInstance<unknown>>;
135
+ create(ctx: any, args: z.infer<typeof ConfigProviderOptions>): Promise<ConfigService>;
136
136
  }
137
137
  export { ConfigProviderFactory }
138
138
  export { ConfigProviderFactory as ConfigProviderFactory_alias_1 }
@@ -377,7 +377,7 @@ export { ConsoleLoggerOptions }
377
377
  export { ConsoleLoggerOptions as ConsoleLoggerOptions_alias_1 }
378
378
  export { ConsoleLoggerOptions as ConsoleLoggerOptions_alias_2 }
379
379
 
380
- declare function Controller({ guards }?: ControllerOptions): (target: ClassType, context: ClassDecoratorContext) => ClassType;
380
+ declare function Controller({ guards }?: ControllerOptions): (target: ClassType, context: ClassDecoratorContext) => any;
381
381
  export { Controller }
382
382
  export { Controller as Controller_alias_1 }
383
383
  export { Controller as Controller_alias_2 }
@@ -385,20 +385,16 @@ export { Controller as Controller_alias_2 }
385
385
  declare class ControllerAdapterService {
386
386
  guardRunner: GuardRunnerService;
387
387
  private logger;
388
- setupController(controller: ClassType, instance: FastifyInstance, moduleMetadata: ModuleMetadata): void;
389
- providePreHandler(executionContext: ExecutionContext): ((request: FastifyRequest, reply: FastifyReply) => Promise<undefined>) | undefined;
390
- private provideSchemaForConfig;
391
- private provideHandler;
392
- private provideHandlerForConfig;
393
- private provideHandlerForStream;
394
- private provideHandlerForMultipart;
388
+ setupController(controller: ClassType, instance: FastifyInstance, moduleMetadata: ModuleMetadata): Promise<void>;
389
+ providePreHandler(executionContext: ExecutionContext): ((request: FastifyRequest, reply: FastifyReply) => Promise<void>) | undefined;
390
+ private wrapHandler;
395
391
  }
396
392
  export { ControllerAdapterService }
397
393
  export { ControllerAdapterService as ControllerAdapterService_alias_1 }
398
394
  export { ControllerAdapterService as ControllerAdapterService_alias_2 }
399
395
 
400
396
  declare interface ControllerMetadata {
401
- endpoints: Set<EndpointMetadata>;
397
+ endpoints: Set<HandlerMetadata>;
402
398
  guards: Set<ClassTypeWithInstance<CanActivate> | InjectionToken<CanActivate, undefined>>;
403
399
  customAttributes: Map<string | symbol, any>;
404
400
  }
@@ -425,20 +421,19 @@ export { Endpoint }
425
421
  export { Endpoint as Endpoint_alias_1 }
426
422
  export { Endpoint as Endpoint_alias_2 }
427
423
 
428
- declare interface EndpointMetadata {
429
- classMethod: string;
430
- url: string;
431
- successStatusCode: number;
432
- type: EndpointType;
433
- headers: Partial<Record<HttpHeader, number | string | string[] | undefined>>;
434
- httpMethod: HttpMethod;
435
- config: BaseEndpointConfig | BaseStreamConfig | null;
436
- guards: Set<ClassTypeWithInstance<CanActivate> | InjectionToken<CanActivate, undefined>>;
437
- customAttributes: Map<string | symbol, any>;
424
+ declare class EndpointAdapterService extends StreamAdapterService {
425
+ hasSchema(handlerMetadata: HandlerMetadata<BaseEndpointConfig>): boolean;
426
+ provideSchema(handlerMetadata: HandlerMetadata<BaseEndpointConfig>): Record<string, any>;
427
+ provideHandler(controller: ClassType, executionContext: ExecutionContext, handlerMetadata: HandlerMetadata<BaseEndpointConfig>): (request: FastifyRequest, reply: FastifyReply) => Promise<any>;
438
428
  }
439
- export { EndpointMetadata }
440
- export { EndpointMetadata as EndpointMetadata_alias_1 }
441
- export { EndpointMetadata as EndpointMetadata_alias_2 }
429
+ export { EndpointAdapterService }
430
+ export { EndpointAdapterService as EndpointAdapterService_alias_1 }
431
+ export { EndpointAdapterService as EndpointAdapterService_alias_2 }
432
+
433
+ declare const EndpointAdapterToken: InjectionToken<EndpointAdapterService, undefined>;
434
+ export { EndpointAdapterToken }
435
+ export { EndpointAdapterToken as EndpointAdapterToken_alias_1 }
436
+ export { EndpointAdapterToken as EndpointAdapterToken_alias_2 }
442
437
 
443
438
  declare const EndpointMetadataKey: unique symbol;
444
439
  export { EndpointMetadataKey }
@@ -459,17 +454,6 @@ export { EndpointResult }
459
454
  export { EndpointResult as EndpointResult_alias_1 }
460
455
  export { EndpointResult as EndpointResult_alias_2 }
461
456
 
462
- declare enum EndpointType {
463
- Unknown = "unknown",
464
- Endpoint = "endpoint",
465
- Stream = "stream",
466
- Multipart = "multipart",
467
- Handler = "handler"
468
- }
469
- export { EndpointType }
470
- export { EndpointType as EndpointType_alias_1 }
471
- export { EndpointType as EndpointType_alias_2 }
472
-
473
457
  declare function envInt(key: keyof NodeJS.ProcessEnv, defaultValue: number): number;
474
458
  export { envInt }
475
459
  export { envInt as envInt_alias_1 }
@@ -543,10 +527,10 @@ declare class ExecutionContext {
543
527
  private readonly handler;
544
528
  private request;
545
529
  private reply;
546
- constructor(module: ModuleMetadata, controller: ControllerMetadata, handler: EndpointMetadata);
530
+ constructor(module: ModuleMetadata, controller: ControllerMetadata, handler: HandlerMetadata);
547
531
  getModule(): ModuleMetadata;
548
532
  getController(): ControllerMetadata;
549
- getHandler(): EndpointMetadata;
533
+ getHandler(): HandlerMetadata;
550
534
  getRequest(): FastifyRequest;
551
535
  getReply(): FastifyReply;
552
536
  provideRequest(request: FastifyRequest): void;
@@ -577,7 +561,7 @@ export { extractModuleMetadata as extractModuleMetadata_alias_1 }
577
561
  export { extractModuleMetadata as extractModuleMetadata_alias_2 }
578
562
 
579
563
  export declare interface Factory<T> {
580
- create(ctx: any): Promise<T>;
564
+ create(ctx?: any): Promise<T> | T;
581
565
  }
582
566
 
583
567
  declare class FactoryInjectionToken<T, S extends AnyZodObject | ZodOptional<AnyZodObject>> extends InjectionToken<T, S> {
@@ -611,6 +595,10 @@ export { FactoryTokenNotResolved as FactoryTokenNotResolved_alias_1 }
611
595
  export { FactoryTokenNotResolved as FactoryTokenNotResolved_alias_2 }
612
596
  export { FactoryTokenNotResolved as FactoryTokenNotResolved_alias_3 }
613
597
 
598
+ export declare interface FactoryWithArgs<T, A extends AnyZodObject> {
599
+ create(ctx: any, args: z.output<A>): Promise<T> | T;
600
+ }
601
+
614
602
  /**
615
603
  * @publicApi
616
604
  */
@@ -627,7 +615,7 @@ export { ForbiddenException }
627
615
  export { ForbiddenException as ForbiddenException_alias_1 }
628
616
  export { ForbiddenException as ForbiddenException_alias_2 }
629
617
 
630
- declare function getAllEndpointMetadata(context: ClassMethodDecoratorContext | ClassDecoratorContext): Set<EndpointMetadata>;
618
+ declare function getAllEndpointMetadata(context: ClassMethodDecoratorContext | ClassDecoratorContext): Set<HandlerMetadata<any>>;
631
619
  export { getAllEndpointMetadata }
632
620
  export { getAllEndpointMetadata as getAllEndpointMetadata_alias_1 }
633
621
  export { getAllEndpointMetadata as getAllEndpointMetadata_alias_2 }
@@ -637,7 +625,7 @@ export { getControllerMetadata }
637
625
  export { getControllerMetadata as getControllerMetadata_alias_1 }
638
626
  export { getControllerMetadata as getControllerMetadata_alias_2 }
639
627
 
640
- declare function getEndpointMetadata(target: Function, context: ClassMethodDecoratorContext): EndpointMetadata;
628
+ declare function getEndpointMetadata<Config = any>(target: Function, context: ClassMethodDecoratorContext): HandlerMetadata<Config>;
641
629
  export { getEndpointMetadata }
642
630
  export { getEndpointMetadata as getEndpointMetadata_alias_1 }
643
631
  export { getEndpointMetadata as getEndpointMetadata_alias_2 }
@@ -668,6 +656,31 @@ export { GuardRunnerService }
668
656
  export { GuardRunnerService as GuardRunnerService_alias_1 }
669
657
  export { GuardRunnerService as GuardRunnerService_alias_2 }
670
658
 
659
+ declare interface HandlerAdapterInterface {
660
+ provideSchema?: (handlerMetadata: HandlerMetadata<any>) => Record<string, any>;
661
+ hasSchema?: (handlerMetadata: HandlerMetadata<any>) => boolean;
662
+ prepareArguments?: (handlerMetadata: HandlerMetadata<any>) => ((target: Record<string, any>, request: FastifyRequest) => Promise<void> | void)[];
663
+ provideHandler: (controller: ClassType, executionContext: ExecutionContext, handlerMetadata: HandlerMetadata<any>) => (request: FastifyRequest, reply: FastifyReply) => Promise<any>;
664
+ }
665
+ export { HandlerAdapterInterface }
666
+ export { HandlerAdapterInterface as HandlerAdapterInterface_alias_1 }
667
+ export { HandlerAdapterInterface as HandlerAdapterInterface_alias_2 }
668
+
669
+ declare interface HandlerMetadata<Config = null> {
670
+ classMethod: string;
671
+ url: string;
672
+ successStatusCode: number;
673
+ adapterToken: InjectionToken<HandlerAdapterInterface, undefined> | ClassTypeWithInstance<HandlerAdapterInterface> | null;
674
+ headers: Partial<Record<HttpHeader, number | string | string[] | undefined>>;
675
+ httpMethod: HttpMethod;
676
+ config: Config;
677
+ guards: Set<ClassTypeWithInstance<CanActivate> | InjectionToken<CanActivate, undefined>>;
678
+ customAttributes: Map<string | symbol, any>;
679
+ }
680
+ export { HandlerMetadata }
681
+ export { HandlerMetadata as HandlerMetadata_alias_1 }
682
+ export { HandlerMetadata as HandlerMetadata_alias_2 }
683
+
671
684
  declare function hasControllerMetadata(target: ClassType): boolean;
672
685
  export { hasControllerMetadata }
673
686
  export { hasControllerMetadata as hasControllerMetadata_alias_1 }
@@ -709,7 +722,39 @@ export { inject }
709
722
  export { inject as inject_alias_1 }
710
723
  export { inject as inject_alias_2 }
711
724
 
712
- declare function Injectable({ scope, type, token, }?: InjectableOptions): (target: ClassType, context: ClassDecoratorContext) => ClassType;
725
+ declare function Injectable(): <T extends ClassType>(target: T, context: ClassDecoratorContext) => T & {
726
+ [InjectableTokenMeta]: InjectionToken<InstanceType<T>, undefined>;
727
+ };
728
+
729
+ declare function Injectable<T extends ClassType>(options: {
730
+ scope?: InjectableScope;
731
+ token: InjectionToken<T, undefined>;
732
+ }): (target: T, context: ClassDecoratorContext) => T & {
733
+ [InjectableTokenMeta]: InjectionToken<InstanceType<T>, undefined>;
734
+ };
735
+
736
+ declare function Injectable<R>(options: {
737
+ scope?: InjectableScope;
738
+ type: InjectableType.Factory;
739
+ }): <T extends ClassTypeWithInstance<Factory<R>>>(target: T, context: ClassDecoratorContext) => T & {
740
+ [InjectableTokenMeta]: InjectionToken<R, undefined>;
741
+ };
742
+
743
+ declare function Injectable<R, S extends AnyZodObject>(options: {
744
+ scope?: InjectableScope;
745
+ type: InjectableType.Factory;
746
+ token: InjectionToken<R, S>;
747
+ }): <T extends ClassTypeWithInstance<FactoryWithArgs<R, S>>>(target: T, context: ClassDecoratorContext) => T & {
748
+ [InjectableTokenMeta]: InjectionToken<R, S>;
749
+ };
750
+
751
+ declare function Injectable<R>(options: {
752
+ scope?: InjectableScope;
753
+ type: InjectableType.Factory;
754
+ token: InjectionToken<R, undefined>;
755
+ }): <T extends ClassTypeWithInstance<Factory<R>>>(target: T, context: ClassDecoratorContext) => T & {
756
+ [InjectableTokenMeta]: InjectionToken<R, undefined>;
757
+ };
713
758
  export { Injectable }
714
759
  export { Injectable as Injectable_alias_1 }
715
760
  export { Injectable as Injectable_alias_2 }
@@ -1103,7 +1148,7 @@ export { LogLevel as LogLevel_alias_2 }
1103
1148
 
1104
1149
  export declare function makeProxyServiceLocator(serviceLocator: ServiceLocator, ctx: ServiceLocatorAbstractFactoryContext): ServiceLocator;
1105
1150
 
1106
- declare function Module(metadata: ModuleOptions): (target: ClassType, context: ClassDecoratorContext) => ClassType;
1151
+ declare function Module({ controllers, imports, guards }?: ModuleOptions): (target: ClassType, context: ClassDecoratorContext) => any;
1107
1152
  export { Module }
1108
1153
  export { Module as Module_alias_1 }
1109
1154
  export { Module as Module_alias_2 }
@@ -1154,6 +1199,21 @@ export { Multipart }
1154
1199
  export { Multipart as Multipart_alias_1 }
1155
1200
  export { Multipart as Multipart_alias_2 }
1156
1201
 
1202
+ declare class MultipartAdapterService extends EndpointAdapterService {
1203
+ prepareArguments(handlerMetadata: HandlerMetadata<BaseEndpointConfig>): ((target: Record<string, any>, request: FastifyRequest) => void)[];
1204
+ private populateRequest;
1205
+ private analyzeSchema;
1206
+ provideSchema(handlerMetadata: HandlerMetadata<BaseEndpointConfig>): Record<string, any>;
1207
+ }
1208
+ export { MultipartAdapterService }
1209
+ export { MultipartAdapterService as MultipartAdapterService_alias_1 }
1210
+ export { MultipartAdapterService as MultipartAdapterService_alias_2 }
1211
+
1212
+ declare const MultipartAdapterToken: InjectionToken<MultipartAdapterService, undefined>;
1213
+ export { MultipartAdapterToken }
1214
+ export { MultipartAdapterToken as MultipartAdapterToken_alias_1 }
1215
+ export { MultipartAdapterToken as MultipartAdapterToken_alias_2 }
1216
+
1157
1217
  declare type MultipartParams<EndpointDeclaration extends {
1158
1218
  config: BaseEndpointConfig<any, any, any, any, any>;
1159
1219
  }, Url extends string = EndpointDeclaration['config']['url'], QuerySchema = EndpointDeclaration['config']['querySchema']> = QuerySchema extends AnyZodObject ? EndpointDeclaration['config']['requestSchema'] extends ZodType ? EndpointFunctionArgs<Url, QuerySchema, EndpointDeclaration['config']['requestSchema']> : EndpointFunctionArgs<Url, QuerySchema, undefined> : EndpointDeclaration['config']['requestSchema'] extends ZodType ? EndpointFunctionArgs<Url, undefined, EndpointDeclaration['config']['requestSchema']> : EndpointFunctionArgs<Url, undefined, undefined>;
@@ -1491,6 +1551,21 @@ export { Stream }
1491
1551
  export { Stream as Stream_alias_1 }
1492
1552
  export { Stream as Stream_alias_2 }
1493
1553
 
1554
+ declare class StreamAdapterService implements HandlerAdapterInterface {
1555
+ hasSchema(handlerMetadata: HandlerMetadata<BaseStreamConfig>): boolean;
1556
+ prepareArguments(handlerMetadata: HandlerMetadata<BaseStreamConfig>): ((target: Record<string, any>, request: FastifyRequest) => void | Promise<void>)[];
1557
+ provideHandler(controller: ClassType, executionContext: ExecutionContext, handlerMetadata: HandlerMetadata<BaseStreamConfig>): (request: FastifyRequest, reply: FastifyReply) => Promise<any>;
1558
+ provideSchema(handlerMetadata: HandlerMetadata<BaseStreamConfig>): Record<string, any>;
1559
+ }
1560
+ export { StreamAdapterService }
1561
+ export { StreamAdapterService as StreamAdapterService_alias_1 }
1562
+ export { StreamAdapterService as StreamAdapterService_alias_2 }
1563
+
1564
+ declare const StreamAdapterToken: InjectionToken<StreamAdapterService, undefined>;
1565
+ export { StreamAdapterToken }
1566
+ export { StreamAdapterToken as StreamAdapterToken_alias_1 }
1567
+ export { StreamAdapterToken as StreamAdapterToken_alias_2 }
1568
+
1494
1569
  declare type StreamParams<EndpointDeclaration extends {
1495
1570
  config: BaseStreamConfig<any, any, any, any>;
1496
1571
  }, Url extends string = EndpointDeclaration['config']['url'], QuerySchema = EndpointDeclaration['config']['querySchema']> = QuerySchema extends AnyZodObject ? EndpointDeclaration['config']['requestSchema'] extends ZodType ? EndpointFunctionArgs<Url, QuerySchema, EndpointDeclaration['config']['requestSchema']> : EndpointFunctionArgs<Url, QuerySchema, undefined> : EndpointDeclaration['config']['requestSchema'] extends ZodType ? EndpointFunctionArgs<Url, undefined, EndpointDeclaration['config']['requestSchema']> : EndpointFunctionArgs<Url, undefined, undefined>;
package/dist/index.d.mts CHANGED
@@ -1,3 +1,10 @@
1
+ export { EndpointAdapterToken } from './_tsup-dts-rollup.mjs';
2
+ export { EndpointAdapterService } from './_tsup-dts-rollup.mjs';
3
+ export { HandlerAdapterInterface } from './_tsup-dts-rollup.mjs';
4
+ export { MultipartAdapterToken } from './_tsup-dts-rollup.mjs';
5
+ export { MultipartAdapterService } from './_tsup-dts-rollup.mjs';
6
+ export { StreamAdapterToken } from './_tsup-dts-rollup.mjs';
7
+ export { StreamAdapterService } from './_tsup-dts-rollup.mjs';
1
8
  export { envInt } from './_tsup-dts-rollup.mjs';
2
9
  export { envString } from './_tsup-dts-rollup.mjs';
3
10
  export { provideConfig } from './_tsup-dts-rollup.mjs';
@@ -71,8 +78,7 @@ export { ControllerMetadata } from './_tsup-dts-rollup.mjs';
71
78
  export { getAllEndpointMetadata } from './_tsup-dts-rollup.mjs';
72
79
  export { getEndpointMetadata } from './_tsup-dts-rollup.mjs';
73
80
  export { EndpointMetadataKey } from './_tsup-dts-rollup.mjs';
74
- export { EndpointType } from './_tsup-dts-rollup.mjs';
75
- export { EndpointMetadata } from './_tsup-dts-rollup.mjs';
81
+ export { HandlerMetadata } from './_tsup-dts-rollup.mjs';
76
82
  export { InjectableMetadata } from './_tsup-dts-rollup.mjs';
77
83
  export { getModuleMetadata } from './_tsup-dts-rollup.mjs';
78
84
  export { extractModuleMetadata } from './_tsup-dts-rollup.mjs';
package/dist/index.d.ts CHANGED
@@ -1,3 +1,10 @@
1
+ export { EndpointAdapterToken } from './_tsup-dts-rollup.js';
2
+ export { EndpointAdapterService } from './_tsup-dts-rollup.js';
3
+ export { HandlerAdapterInterface } from './_tsup-dts-rollup.js';
4
+ export { MultipartAdapterToken } from './_tsup-dts-rollup.js';
5
+ export { MultipartAdapterService } from './_tsup-dts-rollup.js';
6
+ export { StreamAdapterToken } from './_tsup-dts-rollup.js';
7
+ export { StreamAdapterService } from './_tsup-dts-rollup.js';
1
8
  export { envInt } from './_tsup-dts-rollup.js';
2
9
  export { envString } from './_tsup-dts-rollup.js';
3
10
  export { provideConfig } from './_tsup-dts-rollup.js';
@@ -71,8 +78,7 @@ export { ControllerMetadata } from './_tsup-dts-rollup.js';
71
78
  export { getAllEndpointMetadata } from './_tsup-dts-rollup.js';
72
79
  export { getEndpointMetadata } from './_tsup-dts-rollup.js';
73
80
  export { EndpointMetadataKey } from './_tsup-dts-rollup.js';
74
- export { EndpointType } from './_tsup-dts-rollup.js';
75
- export { EndpointMetadata } from './_tsup-dts-rollup.js';
81
+ export { HandlerMetadata } from './_tsup-dts-rollup.js';
76
82
  export { InjectableMetadata } from './_tsup-dts-rollup.js';
77
83
  export { getModuleMetadata } from './_tsup-dts-rollup.js';
78
84
  export { extractModuleMetadata } from './_tsup-dts-rollup.js';