@rocketmakers/ioc 0.1.4 → 0.2.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.
package/README.md CHANGED
@@ -10,12 +10,12 @@ This package provides helper methods for inversify (https://inversify.io/) to:
10
10
 
11
11
  You should first create a type that describes your Container items, then create a `containerRegister` to help you to register those types.
12
12
 
13
+ ## Application
13
14
 
14
15
  `service/admin.ts`
15
16
  ```TypeScript
16
- export class AdminService {
17
- constructor() {}
18
- }
17
+ export class AdminService {}
18
+
19
19
  ```
20
20
 
21
21
  `controller/admin.ts`
@@ -23,50 +23,103 @@ export class AdminService {
23
23
  import { AdminService } from '../service/admin';
24
24
 
25
25
  export class AdminController {
26
- constructor(private service: AdminService) {}
26
+ constructor(private adminService: AdminService) {}
27
27
  }
28
+
28
29
  ```
29
30
 
30
31
  `service/external-api.ts`
31
32
  ```TypeScript
33
+ import { fetchUser, IUser } from './external';
34
+
32
35
  // NOTE: we want the apiKey param to be provided (curried) from the container - so we never need to explicitly pass this when consuming this function!
33
- export function getExternalData(apiKey: string, id: number): number {
34
- // ...
36
+ export function getExternalData(apiKey: string, id: number): IUser {
37
+ return fetchUser(apiKey, id);
35
38
  }
36
- ```
37
39
 
38
- `ioc/containerRegistration.ts`
40
+ ```
41
+ `ioc/types.ts`
39
42
  ```TypeScript
43
+ import { Curried1 } from '@rocketmakers/ioc';
44
+
45
+ import type { AdminController } from '../controller/admin';
40
46
  import type { AdminService } from '../service/admin';
41
47
  import type { getExternalData } from '../service/external-api';
42
- import type { AdminController } from '../controller/admin';
43
-
44
- import { containerRegister, containerRegisterFunctionResolver, containerFactory, Curried1 } from '@rocketmakers/ioc';
45
48
 
46
49
  export type ControllerContainerTypes = {
47
50
  adminService: AdminService;
48
51
  adminController: AdminController;
49
52
  apiKey: string;
50
- getExternalData: Curried1<typeof getExternalData>
53
+ getExternalData: Curried1<typeof getExternalData>;
51
54
  };
52
55
 
53
- export const register = containerRegister<ControllerContainerTypes>();
54
- export const functionResolver = containerRegisterFunctionResolver<ContainerTypes>();
55
- export const container = containerFactory<ContainerTypes>();
56
56
  ```
57
57
 
58
- ## Registration
58
+ ## Registration (IoC Container Modules)
59
59
 
60
+ ### Building the container
60
61
 
61
62
  `ioc/register.ts`
62
63
  ```TypeScript
64
+ import { containerRegisterFunctionResolver, IContainer, register } from '@rocketmakers/ioc';
65
+
66
+ import { AdminController } from '../controller/admin';
63
67
  import { AdminService } from '../service/admin';
64
68
  import { getExternalData } from '../service/external-api';
69
+ import { ControllerContainerTypes } from './types';
70
+
71
+ export const functionResolver = containerRegisterFunctionResolver<ControllerContainerTypes>();
72
+
73
+ export function makeContainer(): IContainer<ControllerContainerTypes> {
74
+ return register<ControllerContainerTypes>({
75
+ adminController: b => b.class(AdminController).construct(['adminService']),
76
+ adminService: b => b.class(AdminService).construct([]),
77
+ apiKey: b => b.constant('xyz...'),
78
+ getExternalData: b => b.functionResolver(functionResolver.curry1(getExternalData, 'apiKey')),
79
+ });
80
+ }
81
+
82
+ ```
83
+
84
+ ### Resolving with the container
85
+
86
+ ```TypeScript
87
+ import { makeContainer } from './ioc/register-new';
88
+
89
+ export function boot() {
90
+ // Register the container
91
+ const container = makeContainer();
92
+
93
+ // fn has type "(id: number): number" as we curried out the apiKey param
94
+ const fn = container.get('getExternalData');
95
+
96
+ // extData is a "number"
97
+ const extData = fn(23);
98
+ }
99
+
100
+ boot();
101
+
102
+ ```
103
+
104
+
105
+ ## Registration (Legacy)
106
+
107
+ ### Building the container
108
+
109
+ `ioc/register.ts`
110
+ ```TypeScript
111
+ import { containerFactory, containerRegister, containerRegisterFunctionResolver } from '@rocketmakers/ioc';
112
+
65
113
  import { AdminController } from '../controller/admin';
114
+ import { AdminService } from '../service/admin';
115
+ import { getExternalData } from '../service/external-api';
116
+ import { ControllerContainerTypes } from './types';
66
117
 
67
- import { register, functionResolver } from './containerRegistration';
118
+ export const register = containerRegister<ControllerContainerTypes>();
119
+ export const functionResolver = containerRegisterFunctionResolver<ControllerContainerTypes>();
120
+ export const container = containerFactory<ControllerContainerTypes>();
68
121
 
69
- export function registerIoC() {
122
+ export function registerIoC(): void {
70
123
  register.class('adminService', AdminService).construct([]).inSingletonScope();
71
124
  register.class('adminController', AdminController).construct(['adminService']).inSingletonScope();
72
125
 
@@ -74,17 +127,27 @@ export function registerIoC() {
74
127
 
75
128
  register.function('getExternalData', functionResolver.curry1(getExternalData, 'apiKey'));
76
129
  }
130
+
77
131
  ```
78
132
 
79
- ## Resolving with the container
133
+ ### Resolving with the container
80
134
 
81
135
  ```TypeScript
82
- import { container } from '../ioc/containerRegistration';
136
+ import { container, registerIoC } from './ioc/register';
83
137
 
84
- export function doSomething() {
138
+ export function boot() {
139
+ // Register the container
140
+ registerIoC();
85
141
 
86
- const fn = container.get('getExternalData'); // fn has type "(id: number): number" as we curried out the apiKey param
87
- const extData = fn(23); // returns a "number"
88
- // ...
142
+ // fn has type "(id: number): number" as we curried out the apiKey param
143
+ const fn = container.get('getExternalData');
144
+
145
+ // extData is a "number"
146
+ const extData = fn(23);
89
147
  }
148
+
149
+ boot();
150
+
90
151
  ```
152
+
153
+
@@ -0,0 +1,83 @@
1
+ export declare type Tail1<T extends any[]> = ((...t: T) => any) extends (_1: any, ...tail: infer TTail) => any ? TTail : [
2
+ ];
3
+ export declare type Tail2<T extends any[]> = ((...t: T) => any) extends (_1: any, _2: any, ...tail: infer TTail) => any ? TTail : [
4
+ ];
5
+ export declare type Tail3<T extends any[]> = ((...t: T) => any) extends (_1: any, _2: any, _3: any, ...tail: infer TTail) => any ? TTail : [
6
+ ];
7
+ export declare type Tail4<T extends any[]> = ((...t: T) => any) extends (_1: any, _2: any, _3: any, _4: any, ...tail: infer TTail) => any ? TTail : [
8
+ ];
9
+ export declare type Tail5<T extends any[]> = ((...t: T) => any) extends (_1: any, _2: any, _3: any, _4: any, _5: any, ...tail: infer TTail) => any ? TTail : [
10
+ ];
11
+ export declare type Tail6<T extends any[]> = ((...t: T) => any) extends (_1: any, _2: any, _3: any, _4: any, _5: any, _6: any, ...tail: infer TTail) => any ? TTail : [
12
+ ];
13
+ export declare type Tail7<T extends any[]> = ((...t: T) => any) extends (_1: any, _2: any, _3: any, _4: any, _5: any, _6: any, _7: any, ...tail: infer TTail) => any ? TTail : [
14
+ ];
15
+ export declare type Tail8<T extends any[]> = ((...t: T) => any) extends (_1: any, _2: any, _3: any, _4: any, _5: any, _6: any, _7: any, _8: any, ...tail: infer TTail) => any ? TTail : [
16
+ ];
17
+ export declare type Tail9<T extends any[]> = ((...t: T) => any) extends (_1: any, _2: any, _3: any, _4: any, _5: any, _6: any, _7: any, _8: any, _9: any, ...tail: infer TTail) => any ? TTail : [
18
+ ];
19
+ export declare type Tail10<T extends any[]> = ((...t: T) => any) extends (_1: any, _2: any, _3: any, _4: any, _5: any, _6: any, _7: any, _8: any, _9: any, _10: any, ...tail: infer TTail) => any ? TTail : [
20
+ ];
21
+ export declare type Tail11<T extends any[]> = ((...t: T) => any) extends (_1: any, _2: any, _3: any, _4: any, _5: any, _6: any, _7: any, _8: any, _9: any, _10: any, _11: any, ...tail: infer TTail) => any ? TTail : [
22
+ ];
23
+ export declare type Tail12<T extends any[]> = ((...t: T) => any) extends (_1: any, _2: any, _3: any, _4: any, _5: any, _6: any, _7: any, _8: any, _9: any, _10: any, _11: any, _12: any, ...tail: infer TTail) => any ? TTail : [
24
+ ];
25
+ export declare type Tail13<T extends any[]> = ((...t: T) => any) extends (_1: any, _2: any, _3: any, _4: any, _5: any, _6: any, _7: any, _8: any, _9: any, _10: any, _11: any, _12: any, _13: any, ...tail: infer TTail) => any ? TTail : [
26
+ ];
27
+ export declare type Tail14<T extends any[]> = ((...t: T) => any) extends (_1: any, _2: any, _3: any, _4: any, _5: any, _6: any, _7: any, _8: any, _9: any, _10: any, _11: any, _12: any, _13: any, _14: any, ...tail: infer TTail) => any ? TTail : [
28
+ ];
29
+ export declare type Tail15<T extends any[]> = ((...t: T) => any) extends (_1: any, _2: any, _3: any, _4: any, _5: any, _6: any, _7: any, _8: any, _9: any, _10: any, _11: any, _12: any, _13: any, _14: any, _15: any, ...tail: infer TTail) => any ? TTail : [
30
+ ];
31
+ export declare type Tail16<T extends any[]> = ((...t: T) => any) extends (_1: any, _2: any, _3: any, _4: any, _5: any, _6: any, _7: any, _8: any, _9: any, _10: any, _11: any, _12: any, _13: any, _14: any, _15: any, _16: any, ...tail: infer TTail) => any ? TTail : [
32
+ ];
33
+ export declare type Tail17<T extends any[]> = ((...t: T) => any) extends (_1: any, _2: any, _3: any, _4: any, _5: any, _6: any, _7: any, _8: any, _9: any, _10: any, _11: any, _12: any, _13: any, _14: any, _15: any, _16: any, _17: any, ...tail: infer TTail) => any ? TTail : [
34
+ ];
35
+ export declare type Tail18<T extends any[]> = ((...t: T) => any) extends (_1: any, _2: any, _3: any, _4: any, _5: any, _6: any, _7: any, _8: any, _9: any, _10: any, _11: any, _12: any, _13: any, _14: any, _15: any, _16: any, _17: any, _18: any, ...tail: infer TTail) => any ? TTail : [
36
+ ];
37
+ export declare type Tail19<T extends any[]> = ((...t: T) => any) extends (_1: any, _2: any, _3: any, _4: any, _5: any, _6: any, _7: any, _8: any, _9: any, _10: any, _11: any, _12: any, _13: any, _14: any, _15: any, _16: any, _17: any, _18: any, _19: any, ...tail: infer TTail) => any ? TTail : [
38
+ ];
39
+ export declare type Tail20<T extends any[]> = ((...t: T) => any) extends (_1: any, _2: any, _3: any, _4: any, _5: any, _6: any, _7: any, _8: any, _9: any, _10: any, _11: any, _12: any, _13: any, _14: any, _15: any, _16: any, _17: any, _18: any, _19: any, _20: any, ...tail: infer TTail) => any ? TTail : [
40
+ ];
41
+ export declare type Curried1<T extends (...args: any[]) => any> = (...tail: Tail1<Parameters<T>>) => ReturnType<T>;
42
+ export declare type Curried2<T extends (...args: any[]) => any> = (...tail: Tail2<Parameters<T>>) => ReturnType<T>;
43
+ export declare type Curried3<T extends (...args: any[]) => any> = (...tail: Tail3<Parameters<T>>) => ReturnType<T>;
44
+ export declare type Curried4<T extends (...args: any[]) => any> = (...tail: Tail4<Parameters<T>>) => ReturnType<T>;
45
+ export declare type Curried5<T extends (...args: any[]) => any> = (...tail: Tail5<Parameters<T>>) => ReturnType<T>;
46
+ export declare type Curried6<T extends (...args: any[]) => any> = (...tail: Tail6<Parameters<T>>) => ReturnType<T>;
47
+ export declare type Curried7<T extends (...args: any[]) => any> = (...tail: Tail7<Parameters<T>>) => ReturnType<T>;
48
+ export declare type Curried8<T extends (...args: any[]) => any> = (...tail: Tail8<Parameters<T>>) => ReturnType<T>;
49
+ export declare type Curried9<T extends (...args: any[]) => any> = (...tail: Tail9<Parameters<T>>) => ReturnType<T>;
50
+ export declare type Curried10<T extends (...args: any[]) => any> = (...tail: Tail10<Parameters<T>>) => ReturnType<T>;
51
+ export declare type Curried11<T extends (...args: any[]) => any> = (...tail: Tail11<Parameters<T>>) => ReturnType<T>;
52
+ export declare type Curried12<T extends (...args: any[]) => any> = (...tail: Tail12<Parameters<T>>) => ReturnType<T>;
53
+ export declare type Curried13<T extends (...args: any[]) => any> = (...tail: Tail13<Parameters<T>>) => ReturnType<T>;
54
+ export declare type Curried14<T extends (...args: any[]) => any> = (...tail: Tail14<Parameters<T>>) => ReturnType<T>;
55
+ export declare type Curried15<T extends (...args: any[]) => any> = (...tail: Tail15<Parameters<T>>) => ReturnType<T>;
56
+ export declare type Curried16<T extends (...args: any[]) => any> = (...tail: Tail16<Parameters<T>>) => ReturnType<T>;
57
+ export declare type Curried17<T extends (...args: any[]) => any> = (...tail: Tail17<Parameters<T>>) => ReturnType<T>;
58
+ export declare type Curried18<T extends (...args: any[]) => any> = (...tail: Tail18<Parameters<T>>) => ReturnType<T>;
59
+ export declare type Curried19<T extends (...args: any[]) => any> = (...tail: Tail19<Parameters<T>>) => ReturnType<T>;
60
+ export declare type Curried20<T extends (...args: any[]) => any> = (...tail: Tail20<Parameters<T>>) => ReturnType<T>;
61
+ export declare type Param1<T extends any[]> = T extends [
62
+ any,
63
+ ...any[]
64
+ ] ? T[0] : never;
65
+ export declare type Param2<T extends any[]> = Param1<Tail1<T>>;
66
+ export declare type Param3<T extends any[]> = Param1<Tail2<T>>;
67
+ export declare type Param4<T extends any[]> = Param1<Tail3<T>>;
68
+ export declare type Param5<T extends any[]> = Param1<Tail4<T>>;
69
+ export declare type Param6<T extends any[]> = Param1<Tail5<T>>;
70
+ export declare type Param7<T extends any[]> = Param1<Tail6<T>>;
71
+ export declare type Param8<T extends any[]> = Param1<Tail7<T>>;
72
+ export declare type Param9<T extends any[]> = Param1<Tail8<T>>;
73
+ export declare type Param10<T extends any[]> = Param1<Tail9<T>>;
74
+ export declare type Param11<T extends any[]> = Param1<Tail10<T>>;
75
+ export declare type Param12<T extends any[]> = Param1<Tail11<T>>;
76
+ export declare type Param13<T extends any[]> = Param1<Tail12<T>>;
77
+ export declare type Param14<T extends any[]> = Param1<Tail13<T>>;
78
+ export declare type Param15<T extends any[]> = Param1<Tail14<T>>;
79
+ export declare type Param16<T extends any[]> = Param1<Tail15<T>>;
80
+ export declare type Param17<T extends any[]> = Param1<Tail16<T>>;
81
+ export declare type Param18<T extends any[]> = Param1<Tail17<T>>;
82
+ export declare type Param19<T extends any[]> = Param1<Tail18<T>>;
83
+ export declare type Param20<T extends any[]> = Param1<Tail19<T>>;
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,9 @@
1
+ import { Container } from "inversify";
2
+ declare global {
3
+ namespace NodeJS {
4
+ interface Global {
5
+ _rocketmakers_ioc: Container;
6
+ }
7
+ }
8
+ }
9
+ export declare function getGlobalContainer(): Container;
package/lib/global.js ADDED
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getGlobalContainer = void 0;
4
+ /* eslint-disable no-underscore-dangle */
5
+ /* eslint-disable @typescript-eslint/no-namespace */
6
+ var inversify_1 = require("inversify");
7
+ function getGlobalContainer() {
8
+ if (!global._rocketmakers_ioc) {
9
+ global._rocketmakers_ioc = new inversify_1.Container();
10
+ }
11
+ return global._rocketmakers_ioc;
12
+ }
13
+ exports.getGlobalContainer = getGlobalContainer;
package/lib/index.d.ts CHANGED
@@ -1,122 +1,75 @@
1
- import { Container, interfaces } from 'inversify';
2
1
  import 'reflect-metadata';
2
+ import { interfaces } from 'inversify';
3
+ import { IFunctionResolver, PropsOfType, StringKeyof } from './tail.generated';
4
+ export * from './curry.generated';
3
5
  export declare type BindingInWhenOnSyntax<T> = interfaces.BindingInWhenOnSyntax<T>;
4
- declare global {
5
- namespace NodeJS {
6
- interface Global {
7
- _rocketmakers_ioc: Container;
8
- }
9
- }
10
- }
11
- export declare function getGlobalContainer(): Container;
12
- export declare const internalContainer: Container;
13
- export declare type Tail1<T extends any[]> = ((...t: T) => any) extends (_1: any, ...tail: infer TTail) => any ? TTail : [];
14
- export declare type Curried1<T extends (...args: any[]) => any> = (...tail: Tail1<Parameters<T>>) => ReturnType<T>;
15
- export declare type Tail2<T extends any[]> = ((...t: T) => any) extends (_1: any, _2: any, ...tail: infer TTail) => any ? TTail : [];
16
- export declare type Curried2<T extends (...args: any[]) => any> = (...tail: Tail2<Parameters<T>>) => ReturnType<T>;
17
- export declare type Tail3<T extends any[]> = ((...t: T) => any) extends (_1: any, _2: any, _3: any, ...tail: infer TTail) => any ? TTail : [];
18
- export declare type Curried3<T extends (...args: any[]) => any> = (...tail: Tail3<Parameters<T>>) => ReturnType<T>;
19
- export declare type Tail4<T extends any[]> = ((...t: T) => any) extends (_1: any, _2: any, _3: any, _4: any, ...tail: infer TTail) => any ? TTail : [];
20
- export declare type Curried4<T extends (...args: any[]) => any> = (...tail: Tail4<Parameters<T>>) => ReturnType<T>;
21
- export declare type Tail5<T extends any[]> = ((...t: T) => any) extends (_1: any, _2: any, _3: any, _4: any, _5: any, ...tail: infer TTail) => any ? TTail : [];
22
- export declare type Curried5<T extends (...args: any[]) => any> = (...tail: Tail5<Parameters<T>>) => ReturnType<T>;
23
- export declare type Tail6<T extends any[]> = ((...t: T) => any) extends (_1: any, _2: any, _3: any, _4: any, _5: any, _6: any, ...tail: infer TTail) => any ? TTail : [];
24
- export declare type Curried6<T extends (...args: any[]) => any> = (...tail: Tail6<Parameters<T>>) => ReturnType<T>;
25
- export declare type Tail7<T extends any[]> = ((...t: T) => any) extends (_1: any, _2: any, _3: any, _4: any, _5: any, _6: any, _7: any, ...tail: infer TTail) => any ? TTail : [];
26
- export declare type Curried7<T extends (...args: any[]) => any> = (...tail: Tail7<Parameters<T>>) => ReturnType<T>;
27
- export declare type Tail8<T extends any[]> = ((...t: T) => any) extends (_1: any, _2: any, _3: any, _4: any, _5: any, _6: any, _7: any, _8: any, ...tail: infer TTail) => any ? TTail : [];
28
- export declare type Curried8<T extends (...args: any[]) => any> = (...tail: Tail8<Parameters<T>>) => ReturnType<T>;
29
- export declare type Tail9<T extends any[]> = ((...t: T) => any) extends (_1: any, _2: any, _3: any, _4: any, _5: any, _6: any, _7: any, _8: any, _9: any, ...tail: infer TTail) => any ? TTail : [];
30
- export declare type Curried9<T extends (...args: any[]) => any> = (...tail: Tail9<Parameters<T>>) => ReturnType<T>;
31
- export declare type Tail10<T extends any[]> = ((...t: T) => any) extends (_1: any, _2: any, _3: any, _4: any, _5: any, _6: any, _7: any, _8: any, _9: any, _10: any, ...tail: infer TTail) => any ? TTail : [];
32
- export declare type Curried10<T extends (...args: any[]) => any> = (...tail: Tail10<Parameters<T>>) => ReturnType<T>;
33
- export declare type Tail11<T extends any[]> = ((...t: T) => any) extends (_1: any, _2: any, _3: any, _4: any, _5: any, _6: any, _7: any, _8: any, _9: any, _10: any, _11: any, ...tail: infer TTail) => any ? TTail : [];
34
- export declare type Curried11<T extends (...args: any[]) => any> = (...tail: Tail11<Parameters<T>>) => ReturnType<T>;
35
- export declare type Tail12<T extends any[]> = ((...t: T) => any) extends (_1: any, _2: any, _3: any, _4: any, _5: any, _6: any, _7: any, _8: any, _9: any, _10: any, _11: any, _12: any, ...tail: infer TTail) => any ? TTail : [];
36
- export declare type Curried12<T extends (...args: any[]) => any> = (...tail: Tail12<Parameters<T>>) => ReturnType<T>;
37
- export declare type Tail13<T extends any[]> = ((...t: T) => any) extends (_1: any, _2: any, _3: any, _4: any, _5: any, _6: any, _7: any, _8: any, _9: any, _10: any, _11: any, _12: any, _13: any, ...tail: infer TTail) => any ? TTail : [];
38
- export declare type Curried13<T extends (...args: any[]) => any> = (...tail: Tail13<Parameters<T>>) => ReturnType<T>;
39
- export declare type Tail14<T extends any[]> = ((...t: T) => any) extends (_1: any, _2: any, _3: any, _4: any, _5: any, _6: any, _7: any, _8: any, _9: any, _10: any, _11: any, _12: any, _13: any, _14: any, ...tail: infer TTail) => any ? TTail : [];
40
- export declare type Curried14<T extends (...args: any[]) => any> = (...tail: Tail14<Parameters<T>>) => ReturnType<T>;
41
- export declare type Tail15<T extends any[]> = ((...t: T) => any) extends (_1: any, _2: any, _3: any, _4: any, _5: any, _6: any, _7: any, _8: any, _9: any, _10: any, _11: any, _12: any, _13: any, _14: any, _15: any, ...tail: infer TTail) => any ? TTail : [];
42
- export declare type Curried15<T extends (...args: any[]) => any> = (...tail: Tail15<Parameters<T>>) => ReturnType<T>;
43
- export declare type Tail16<T extends any[]> = ((...t: T) => any) extends (_1: any, _2: any, _3: any, _4: any, _5: any, _6: any, _7: any, _8: any, _9: any, _10: any, _11: any, _12: any, _13: any, _14: any, _15: any, _16: any, ...tail: infer TTail) => any ? TTail : [];
44
- export declare type Curried16<T extends (...args: any[]) => any> = (...tail: Tail16<Parameters<T>>) => ReturnType<T>;
45
- export declare type Tail17<T extends any[]> = ((...t: T) => any) extends (_1: any, _2: any, _3: any, _4: any, _5: any, _6: any, _7: any, _8: any, _9: any, _10: any, _11: any, _12: any, _13: any, _14: any, _15: any, _16: any, _17: any, ...tail: infer TTail) => any ? TTail : [];
46
- export declare type Curried17<T extends (...args: any[]) => any> = (...tail: Tail17<Parameters<T>>) => ReturnType<T>;
47
- export declare type Tail18<T extends any[]> = ((...t: T) => any) extends (_1: any, _2: any, _3: any, _4: any, _5: any, _6: any, _7: any, _8: any, _9: any, _10: any, _11: any, _12: any, _13: any, _14: any, _15: any, _16: any, _17: any, _18: any, ...tail: infer TTail) => any ? TTail : [];
48
- export declare type Curried18<T extends (...args: any[]) => any> = (...tail: Tail18<Parameters<T>>) => ReturnType<T>;
49
- export declare type Tail19<T extends any[]> = ((...t: T) => any) extends (_1: any, _2: any, _3: any, _4: any, _5: any, _6: any, _7: any, _8: any, _9: any, _10: any, _11: any, _12: any, _13: any, _14: any, _15: any, _16: any, _17: any, _18: any, _19: any, ...tail: infer TTail) => any ? TTail : [];
50
- export declare type Curried19<T extends (...args: any[]) => any> = (...tail: Tail19<Parameters<T>>) => ReturnType<T>;
51
- export declare type Tail20<T extends any[]> = ((...t: T) => any) extends (_1: any, _2: any, _3: any, _4: any, _5: any, _6: any, _7: any, _8: any, _9: any, _10: any, _11: any, _12: any, _13: any, _14: any, _15: any, _16: any, _17: any, _18: any, _19: any, _20: any, ...tail: infer TTail) => any ? TTail : [];
52
- export declare type Curried20<T extends (...args: any[]) => any> = (...tail: Tail20<Parameters<T>>) => ReturnType<T>;
53
- export declare type Param1<T extends any[]> = T extends [any, ...any[]] ? T[0] : never;
54
- export declare type Param2<T extends any[]> = Param1<Tail1<T>>;
55
- export declare type Param3<T extends any[]> = Param1<Tail2<T>>;
56
- export declare type Param4<T extends any[]> = Param1<Tail3<T>>;
57
- export declare type Param5<T extends any[]> = Param1<Tail4<T>>;
58
- export declare type Param6<T extends any[]> = Param1<Tail5<T>>;
59
- export declare type Param7<T extends any[]> = Param1<Tail6<T>>;
60
- export declare type Param8<T extends any[]> = Param1<Tail7<T>>;
61
- export declare type Param9<T extends any[]> = Param1<Tail8<T>>;
62
- export declare type Param10<T extends any[]> = Param1<Tail9<T>>;
63
- export declare type Param11<T extends any[]> = Param1<Tail10<T>>;
64
- export declare type Param12<T extends any[]> = Param1<Tail11<T>>;
65
- export declare type Param13<T extends any[]> = Param1<Tail12<T>>;
66
- export declare type Param14<T extends any[]> = Param1<Tail13<T>>;
67
- export declare type Param15<T extends any[]> = Param1<Tail14<T>>;
68
- export declare type Param16<T extends any[]> = Param1<Tail15<T>>;
69
- export declare type Param17<T extends any[]> = Param1<Tail16<T>>;
70
- export declare type Param18<T extends any[]> = Param1<Tail17<T>>;
71
- export declare type Param19<T extends any[]> = Param1<Tail18<T>>;
72
- export declare type Param20<T extends any[]> = Param1<Tail19<T>>;
73
- export declare type StringKeyof<T> = Extract<keyof T, string>;
74
- export declare type PropsOfType<T, X> = {
75
- [P in StringKeyof<T>]: T[P] extends X ? P : never;
76
- }[StringKeyof<T>];
6
+ export declare const internalContainer: import("inversify/dts/container/container").Container;
77
7
  declare type PropsNotOfType<T, X> = {
78
8
  [P in StringKeyof<T>]: T[P] extends X ? never : P;
79
9
  }[StringKeyof<T>];
80
10
  declare type MapTuple<F extends any[], TK> = {
81
11
  [K in keyof F]: F[K] extends F[number] ? PropsOfType<TK, F[K]> : never;
82
12
  };
83
- export interface IFunctionResolver<T extends Function> {
84
- resolved: () => T;
85
- }
86
13
  declare type Newable = new (...args: any) => any;
87
14
  declare type NewableOf<T> = new (...args: any) => T;
88
15
  export declare function containerRegisterFunctionResolver<T>(): {
89
- curry1<TFn extends (...args: any[]) => any, K1 extends PropsOfType<T, Param1<Parameters<TFn>>>>(fn: TFn, key1: K1): IFunctionResolver<Curried1<TFn>>;
90
- curry2<TFn_1 extends (...args: any[]) => any, K1_1 extends PropsOfType<T, Param1<Parameters<TFn_1>>>, K2 extends PropsOfType<T, Param1<Tail1<Parameters<TFn_1>>>>>(fn: TFn_1, key1: K1_1, key2: K2): IFunctionResolver<Curried2<TFn_1>>;
91
- curry3<TFn_2 extends (...args: any[]) => any, K1_2 extends PropsOfType<T, Param1<Parameters<TFn_2>>>, K2_1 extends PropsOfType<T, Param1<Tail1<Parameters<TFn_2>>>>, K3 extends PropsOfType<T, Param1<Tail2<Parameters<TFn_2>>>>>(fn: TFn_2, key1: K1_2, key2: K2_1, key3: K3): IFunctionResolver<Curried3<TFn_2>>;
92
- curry4<TFn_3 extends (...args: any[]) => any, K1_3 extends PropsOfType<T, Param1<Parameters<TFn_3>>>, K2_2 extends PropsOfType<T, Param1<Tail1<Parameters<TFn_3>>>>, K3_1 extends PropsOfType<T, Param1<Tail2<Parameters<TFn_3>>>>, K4 extends PropsOfType<T, Param1<Tail3<Parameters<TFn_3>>>>>(fn: TFn_3, key1: K1_3, key2: K2_2, key3: K3_1, key4: K4): IFunctionResolver<Curried4<TFn_3>>;
93
- curry5<TFn_4 extends (...args: any[]) => any, K1_4 extends PropsOfType<T, Param1<Parameters<TFn_4>>>, K2_3 extends PropsOfType<T, Param1<Tail1<Parameters<TFn_4>>>>, K3_2 extends PropsOfType<T, Param1<Tail2<Parameters<TFn_4>>>>, K4_1 extends PropsOfType<T, Param1<Tail3<Parameters<TFn_4>>>>, K5 extends PropsOfType<T, Param1<Tail4<Parameters<TFn_4>>>>>(fn: TFn_4, key1: K1_4, key2: K2_3, key3: K3_2, key4: K4_1, key5: K5): IFunctionResolver<Curried5<TFn_4>>;
94
- curry6<TFn_5 extends (...args: any[]) => any, K1_5 extends PropsOfType<T, Param1<Parameters<TFn_5>>>, K2_4 extends PropsOfType<T, Param1<Tail1<Parameters<TFn_5>>>>, K3_3 extends PropsOfType<T, Param1<Tail2<Parameters<TFn_5>>>>, K4_2 extends PropsOfType<T, Param1<Tail3<Parameters<TFn_5>>>>, K5_1 extends PropsOfType<T, Param1<Tail4<Parameters<TFn_5>>>>, K6 extends PropsOfType<T, Param1<Tail5<Parameters<TFn_5>>>>>(fn: TFn_5, key1: K1_5, key2: K2_4, key3: K3_3, key4: K4_2, key5: K5_1, key6: K6): IFunctionResolver<Curried6<TFn_5>>;
95
- curry7<TFn_6 extends (...args: any[]) => any, K1_6 extends PropsOfType<T, Param1<Parameters<TFn_6>>>, K2_5 extends PropsOfType<T, Param1<Tail1<Parameters<TFn_6>>>>, K3_4 extends PropsOfType<T, Param1<Tail2<Parameters<TFn_6>>>>, K4_3 extends PropsOfType<T, Param1<Tail3<Parameters<TFn_6>>>>, K5_2 extends PropsOfType<T, Param1<Tail4<Parameters<TFn_6>>>>, K6_1 extends PropsOfType<T, Param1<Tail5<Parameters<TFn_6>>>>, K7 extends PropsOfType<T, Param1<Tail6<Parameters<TFn_6>>>>>(fn: TFn_6, key1: K1_6, key2: K2_5, key3: K3_4, key4: K4_3, key5: K5_2, key6: K6_1, key7: K7): IFunctionResolver<Curried7<TFn_6>>;
96
- curry8<TFn_7 extends (...args: any[]) => any, K1_7 extends PropsOfType<T, Param1<Parameters<TFn_7>>>, K2_6 extends PropsOfType<T, Param1<Tail1<Parameters<TFn_7>>>>, K3_5 extends PropsOfType<T, Param1<Tail2<Parameters<TFn_7>>>>, K4_4 extends PropsOfType<T, Param1<Tail3<Parameters<TFn_7>>>>, K5_3 extends PropsOfType<T, Param1<Tail4<Parameters<TFn_7>>>>, K6_2 extends PropsOfType<T, Param1<Tail5<Parameters<TFn_7>>>>, K7_1 extends PropsOfType<T, Param1<Tail6<Parameters<TFn_7>>>>, K8 extends PropsOfType<T, Param1<Tail7<Parameters<TFn_7>>>>>(fn: TFn_7, key1: K1_7, key2: K2_6, key3: K3_5, key4: K4_4, key5: K5_3, key6: K6_2, key7: K7_1, key8: K8): IFunctionResolver<Curried8<TFn_7>>;
97
- curry9<TFn_8 extends (...args: any[]) => any, K1_8 extends PropsOfType<T, Param1<Parameters<TFn_8>>>, K2_7 extends PropsOfType<T, Param1<Tail1<Parameters<TFn_8>>>>, K3_6 extends PropsOfType<T, Param1<Tail2<Parameters<TFn_8>>>>, K4_5 extends PropsOfType<T, Param1<Tail3<Parameters<TFn_8>>>>, K5_4 extends PropsOfType<T, Param1<Tail4<Parameters<TFn_8>>>>, K6_3 extends PropsOfType<T, Param1<Tail5<Parameters<TFn_8>>>>, K7_2 extends PropsOfType<T, Param1<Tail6<Parameters<TFn_8>>>>, K8_1 extends PropsOfType<T, Param1<Tail7<Parameters<TFn_8>>>>, K9 extends PropsOfType<T, Param1<Tail8<Parameters<TFn_8>>>>>(fn: TFn_8, key1: K1_8, key2: K2_7, key3: K3_6, key4: K4_5, key5: K5_4, key6: K6_3, key7: K7_2, key8: K8_1, key9: K9): IFunctionResolver<Curried9<TFn_8>>;
98
- curry10<TFn_9 extends (...args: any[]) => any, K1_9 extends PropsOfType<T, Param1<Parameters<TFn_9>>>, K2_8 extends PropsOfType<T, Param1<Tail1<Parameters<TFn_9>>>>, K3_7 extends PropsOfType<T, Param1<Tail2<Parameters<TFn_9>>>>, K4_6 extends PropsOfType<T, Param1<Tail3<Parameters<TFn_9>>>>, K5_5 extends PropsOfType<T, Param1<Tail4<Parameters<TFn_9>>>>, K6_4 extends PropsOfType<T, Param1<Tail5<Parameters<TFn_9>>>>, K7_3 extends PropsOfType<T, Param1<Tail6<Parameters<TFn_9>>>>, K8_2 extends PropsOfType<T, Param1<Tail7<Parameters<TFn_9>>>>, K9_1 extends PropsOfType<T, Param1<Tail8<Parameters<TFn_9>>>>, K10 extends PropsOfType<T, Param1<Tail9<Parameters<TFn_9>>>>>(fn: TFn_9, key1: K1_9, key2: K2_8, key3: K3_7, key4: K4_6, key5: K5_5, key6: K6_4, key7: K7_3, key8: K8_2, key9: K9_1, key10: K10): IFunctionResolver<Curried10<TFn_9>>;
99
- curry11<TFn_10 extends (...args: any[]) => any, K1_10 extends PropsOfType<T, Param1<Parameters<TFn_10>>>, K2_9 extends PropsOfType<T, Param1<Tail1<Parameters<TFn_10>>>>, K3_8 extends PropsOfType<T, Param1<Tail2<Parameters<TFn_10>>>>, K4_7 extends PropsOfType<T, Param1<Tail3<Parameters<TFn_10>>>>, K5_6 extends PropsOfType<T, Param1<Tail4<Parameters<TFn_10>>>>, K6_5 extends PropsOfType<T, Param1<Tail5<Parameters<TFn_10>>>>, K7_4 extends PropsOfType<T, Param1<Tail6<Parameters<TFn_10>>>>, K8_3 extends PropsOfType<T, Param1<Tail7<Parameters<TFn_10>>>>, K9_2 extends PropsOfType<T, Param1<Tail8<Parameters<TFn_10>>>>, K10_1 extends PropsOfType<T, Param1<Tail9<Parameters<TFn_10>>>>, K11 extends PropsOfType<T, Param1<Tail10<Parameters<TFn_10>>>>>(fn: TFn_10, key1: K1_10, key2: K2_9, key3: K3_8, key4: K4_7, key5: K5_6, key6: K6_5, key7: K7_4, key8: K8_3, key9: K9_2, key10: K10_1, key11: K11): IFunctionResolver<Curried11<TFn_10>>;
100
- curry12<TFn_11 extends (...args: any[]) => any, K1_11 extends PropsOfType<T, Param1<Parameters<TFn_11>>>, K2_10 extends PropsOfType<T, Param1<Tail1<Parameters<TFn_11>>>>, K3_9 extends PropsOfType<T, Param1<Tail2<Parameters<TFn_11>>>>, K4_8 extends PropsOfType<T, Param1<Tail3<Parameters<TFn_11>>>>, K5_7 extends PropsOfType<T, Param1<Tail4<Parameters<TFn_11>>>>, K6_6 extends PropsOfType<T, Param1<Tail5<Parameters<TFn_11>>>>, K7_5 extends PropsOfType<T, Param1<Tail6<Parameters<TFn_11>>>>, K8_4 extends PropsOfType<T, Param1<Tail7<Parameters<TFn_11>>>>, K9_3 extends PropsOfType<T, Param1<Tail8<Parameters<TFn_11>>>>, K10_2 extends PropsOfType<T, Param1<Tail9<Parameters<TFn_11>>>>, K11_1 extends PropsOfType<T, Param1<Tail10<Parameters<TFn_11>>>>, K12 extends PropsOfType<T, Param1<Tail11<Parameters<TFn_11>>>>>(fn: TFn_11, key1: K1_11, key2: K2_10, key3: K3_9, key4: K4_8, key5: K5_7, key6: K6_6, key7: K7_5, key8: K8_4, key9: K9_3, key10: K10_2, key11: K11_1, key12: K12): IFunctionResolver<Curried12<TFn_11>>;
101
- curry13<TFn_12 extends (...args: any[]) => any, K1_12 extends PropsOfType<T, Param1<Parameters<TFn_12>>>, K2_11 extends PropsOfType<T, Param1<Tail1<Parameters<TFn_12>>>>, K3_10 extends PropsOfType<T, Param1<Tail2<Parameters<TFn_12>>>>, K4_9 extends PropsOfType<T, Param1<Tail3<Parameters<TFn_12>>>>, K5_8 extends PropsOfType<T, Param1<Tail4<Parameters<TFn_12>>>>, K6_7 extends PropsOfType<T, Param1<Tail5<Parameters<TFn_12>>>>, K7_6 extends PropsOfType<T, Param1<Tail6<Parameters<TFn_12>>>>, K8_5 extends PropsOfType<T, Param1<Tail7<Parameters<TFn_12>>>>, K9_4 extends PropsOfType<T, Param1<Tail8<Parameters<TFn_12>>>>, K10_3 extends PropsOfType<T, Param1<Tail9<Parameters<TFn_12>>>>, K11_2 extends PropsOfType<T, Param1<Tail10<Parameters<TFn_12>>>>, K12_1 extends PropsOfType<T, Param1<Tail11<Parameters<TFn_12>>>>, K13 extends PropsOfType<T, Param1<Tail12<Parameters<TFn_12>>>>>(fn: TFn_12, key1: K1_12, key2: K2_11, key3: K3_10, key4: K4_9, key5: K5_8, key6: K6_7, key7: K7_6, key8: K8_5, key9: K9_4, key10: K10_3, key11: K11_2, key12: K12_1, key13: K13): IFunctionResolver<Curried13<TFn_12>>;
102
- curry14<TFn_13 extends (...args: any[]) => any, K1_13 extends PropsOfType<T, Param1<Parameters<TFn_13>>>, K2_12 extends PropsOfType<T, Param1<Tail1<Parameters<TFn_13>>>>, K3_11 extends PropsOfType<T, Param1<Tail2<Parameters<TFn_13>>>>, K4_10 extends PropsOfType<T, Param1<Tail3<Parameters<TFn_13>>>>, K5_9 extends PropsOfType<T, Param1<Tail4<Parameters<TFn_13>>>>, K6_8 extends PropsOfType<T, Param1<Tail5<Parameters<TFn_13>>>>, K7_7 extends PropsOfType<T, Param1<Tail6<Parameters<TFn_13>>>>, K8_6 extends PropsOfType<T, Param1<Tail7<Parameters<TFn_13>>>>, K9_5 extends PropsOfType<T, Param1<Tail8<Parameters<TFn_13>>>>, K10_4 extends PropsOfType<T, Param1<Tail9<Parameters<TFn_13>>>>, K11_3 extends PropsOfType<T, Param1<Tail10<Parameters<TFn_13>>>>, K12_2 extends PropsOfType<T, Param1<Tail11<Parameters<TFn_13>>>>, K13_1 extends PropsOfType<T, Param1<Tail12<Parameters<TFn_13>>>>, K14 extends PropsOfType<T, Param1<Tail13<Parameters<TFn_13>>>>>(fn: TFn_13, key1: K1_13, key2: K2_12, key3: K3_11, key4: K4_10, key5: K5_9, key6: K6_8, key7: K7_7, key8: K8_6, key9: K9_5, key10: K10_4, key11: K11_3, key12: K12_2, key13: K13_1, key14: K14): IFunctionResolver<Curried14<TFn_13>>;
103
- curry15<TFn_14 extends (...args: any[]) => any, K1_14 extends PropsOfType<T, Param1<Parameters<TFn_14>>>, K2_13 extends PropsOfType<T, Param1<Tail1<Parameters<TFn_14>>>>, K3_12 extends PropsOfType<T, Param1<Tail2<Parameters<TFn_14>>>>, K4_11 extends PropsOfType<T, Param1<Tail3<Parameters<TFn_14>>>>, K5_10 extends PropsOfType<T, Param1<Tail4<Parameters<TFn_14>>>>, K6_9 extends PropsOfType<T, Param1<Tail5<Parameters<TFn_14>>>>, K7_8 extends PropsOfType<T, Param1<Tail6<Parameters<TFn_14>>>>, K8_7 extends PropsOfType<T, Param1<Tail7<Parameters<TFn_14>>>>, K9_6 extends PropsOfType<T, Param1<Tail8<Parameters<TFn_14>>>>, K10_5 extends PropsOfType<T, Param1<Tail9<Parameters<TFn_14>>>>, K11_4 extends PropsOfType<T, Param1<Tail10<Parameters<TFn_14>>>>, K12_3 extends PropsOfType<T, Param1<Tail11<Parameters<TFn_14>>>>, K13_2 extends PropsOfType<T, Param1<Tail12<Parameters<TFn_14>>>>, K14_1 extends PropsOfType<T, Param1<Tail13<Parameters<TFn_14>>>>, K15 extends PropsOfType<T, Param1<Tail14<Parameters<TFn_14>>>>>(fn: TFn_14, key1: K1_14, key2: K2_13, key3: K3_12, key4: K4_11, key5: K5_10, key6: K6_9, key7: K7_8, key8: K8_7, key9: K9_6, key10: K10_5, key11: K11_4, key12: K12_3, key13: K13_2, key14: K14_1, key15: K15): IFunctionResolver<Curried15<TFn_14>>;
104
- curry16<TFn_15 extends (...args: any[]) => any, K1_15 extends PropsOfType<T, Param1<Parameters<TFn_15>>>, K2_14 extends PropsOfType<T, Param1<Tail1<Parameters<TFn_15>>>>, K3_13 extends PropsOfType<T, Param1<Tail2<Parameters<TFn_15>>>>, K4_12 extends PropsOfType<T, Param1<Tail3<Parameters<TFn_15>>>>, K5_11 extends PropsOfType<T, Param1<Tail4<Parameters<TFn_15>>>>, K6_10 extends PropsOfType<T, Param1<Tail5<Parameters<TFn_15>>>>, K7_9 extends PropsOfType<T, Param1<Tail6<Parameters<TFn_15>>>>, K8_8 extends PropsOfType<T, Param1<Tail7<Parameters<TFn_15>>>>, K9_7 extends PropsOfType<T, Param1<Tail8<Parameters<TFn_15>>>>, K10_6 extends PropsOfType<T, Param1<Tail9<Parameters<TFn_15>>>>, K11_5 extends PropsOfType<T, Param1<Tail10<Parameters<TFn_15>>>>, K12_4 extends PropsOfType<T, Param1<Tail11<Parameters<TFn_15>>>>, K13_3 extends PropsOfType<T, Param1<Tail12<Parameters<TFn_15>>>>, K14_2 extends PropsOfType<T, Param1<Tail13<Parameters<TFn_15>>>>, K15_1 extends PropsOfType<T, Param1<Tail14<Parameters<TFn_15>>>>, K16 extends PropsOfType<T, Param1<Tail15<Parameters<TFn_15>>>>>(fn: TFn_15, key1: K1_15, key2: K2_14, key3: K3_13, key4: K4_12, key5: K5_11, key6: K6_10, key7: K7_9, key8: K8_8, key9: K9_7, key10: K10_6, key11: K11_5, key12: K12_4, key13: K13_3, key14: K14_2, key15: K15_1, key16: K16): IFunctionResolver<Curried16<TFn_15>>;
105
- curry17<TFn_16 extends (...args: any[]) => any, K1_16 extends PropsOfType<T, Param1<Parameters<TFn_16>>>, K2_15 extends PropsOfType<T, Param1<Tail1<Parameters<TFn_16>>>>, K3_14 extends PropsOfType<T, Param1<Tail2<Parameters<TFn_16>>>>, K4_13 extends PropsOfType<T, Param1<Tail3<Parameters<TFn_16>>>>, K5_12 extends PropsOfType<T, Param1<Tail4<Parameters<TFn_16>>>>, K6_11 extends PropsOfType<T, Param1<Tail5<Parameters<TFn_16>>>>, K7_10 extends PropsOfType<T, Param1<Tail6<Parameters<TFn_16>>>>, K8_9 extends PropsOfType<T, Param1<Tail7<Parameters<TFn_16>>>>, K9_8 extends PropsOfType<T, Param1<Tail8<Parameters<TFn_16>>>>, K10_7 extends PropsOfType<T, Param1<Tail9<Parameters<TFn_16>>>>, K11_6 extends PropsOfType<T, Param1<Tail10<Parameters<TFn_16>>>>, K12_5 extends PropsOfType<T, Param1<Tail11<Parameters<TFn_16>>>>, K13_4 extends PropsOfType<T, Param1<Tail12<Parameters<TFn_16>>>>, K14_3 extends PropsOfType<T, Param1<Tail13<Parameters<TFn_16>>>>, K15_2 extends PropsOfType<T, Param1<Tail14<Parameters<TFn_16>>>>, K16_1 extends PropsOfType<T, Param1<Tail15<Parameters<TFn_16>>>>, K17 extends PropsOfType<T, Param1<Tail16<Parameters<TFn_16>>>>>(fn: TFn_16, key1: K1_16, key2: K2_15, key3: K3_14, key4: K4_13, key5: K5_12, key6: K6_11, key7: K7_10, key8: K8_9, key9: K9_8, key10: K10_7, key11: K11_6, key12: K12_5, key13: K13_4, key14: K14_3, key15: K15_2, key16: K16_1, key17: K17): IFunctionResolver<Curried17<TFn_16>>;
106
- curry18<TFn_17 extends (...args: any[]) => any, K1_17 extends PropsOfType<T, Param1<Parameters<TFn_17>>>, K2_16 extends PropsOfType<T, Param1<Tail1<Parameters<TFn_17>>>>, K3_15 extends PropsOfType<T, Param1<Tail2<Parameters<TFn_17>>>>, K4_14 extends PropsOfType<T, Param1<Tail3<Parameters<TFn_17>>>>, K5_13 extends PropsOfType<T, Param1<Tail4<Parameters<TFn_17>>>>, K6_12 extends PropsOfType<T, Param1<Tail5<Parameters<TFn_17>>>>, K7_11 extends PropsOfType<T, Param1<Tail6<Parameters<TFn_17>>>>, K8_10 extends PropsOfType<T, Param1<Tail7<Parameters<TFn_17>>>>, K9_9 extends PropsOfType<T, Param1<Tail8<Parameters<TFn_17>>>>, K10_8 extends PropsOfType<T, Param1<Tail9<Parameters<TFn_17>>>>, K11_7 extends PropsOfType<T, Param1<Tail10<Parameters<TFn_17>>>>, K12_6 extends PropsOfType<T, Param1<Tail11<Parameters<TFn_17>>>>, K13_5 extends PropsOfType<T, Param1<Tail12<Parameters<TFn_17>>>>, K14_4 extends PropsOfType<T, Param1<Tail13<Parameters<TFn_17>>>>, K15_3 extends PropsOfType<T, Param1<Tail14<Parameters<TFn_17>>>>, K16_2 extends PropsOfType<T, Param1<Tail15<Parameters<TFn_17>>>>, K17_1 extends PropsOfType<T, Param1<Tail16<Parameters<TFn_17>>>>, K18 extends PropsOfType<T, Param1<Tail17<Parameters<TFn_17>>>>>(fn: TFn_17, key1: K1_17, key2: K2_16, key3: K3_15, key4: K4_14, key5: K5_13, key6: K6_12, key7: K7_11, key8: K8_10, key9: K9_9, key10: K10_8, key11: K11_7, key12: K12_6, key13: K13_5, key14: K14_4, key15: K15_3, key16: K16_2, key17: K17_1, key18: K18): IFunctionResolver<Curried18<TFn_17>>;
107
- curry19<TFn_18 extends (...args: any[]) => any, K1_18 extends PropsOfType<T, Param1<Parameters<TFn_18>>>, K2_17 extends PropsOfType<T, Param1<Tail1<Parameters<TFn_18>>>>, K3_16 extends PropsOfType<T, Param1<Tail2<Parameters<TFn_18>>>>, K4_15 extends PropsOfType<T, Param1<Tail3<Parameters<TFn_18>>>>, K5_14 extends PropsOfType<T, Param1<Tail4<Parameters<TFn_18>>>>, K6_13 extends PropsOfType<T, Param1<Tail5<Parameters<TFn_18>>>>, K7_12 extends PropsOfType<T, Param1<Tail6<Parameters<TFn_18>>>>, K8_11 extends PropsOfType<T, Param1<Tail7<Parameters<TFn_18>>>>, K9_10 extends PropsOfType<T, Param1<Tail8<Parameters<TFn_18>>>>, K10_9 extends PropsOfType<T, Param1<Tail9<Parameters<TFn_18>>>>, K11_8 extends PropsOfType<T, Param1<Tail10<Parameters<TFn_18>>>>, K12_7 extends PropsOfType<T, Param1<Tail11<Parameters<TFn_18>>>>, K13_6 extends PropsOfType<T, Param1<Tail12<Parameters<TFn_18>>>>, K14_5 extends PropsOfType<T, Param1<Tail13<Parameters<TFn_18>>>>, K15_4 extends PropsOfType<T, Param1<Tail14<Parameters<TFn_18>>>>, K16_3 extends PropsOfType<T, Param1<Tail15<Parameters<TFn_18>>>>, K17_2 extends PropsOfType<T, Param1<Tail16<Parameters<TFn_18>>>>, K18_1 extends PropsOfType<T, Param1<Tail17<Parameters<TFn_18>>>>, K19 extends PropsOfType<T, Param1<Tail18<Parameters<TFn_18>>>>>(fn: TFn_18, key1: K1_18, key2: K2_17, key3: K3_16, key4: K4_15, key5: K5_14, key6: K6_13, key7: K7_12, key8: K8_11, key9: K9_10, key10: K10_9, key11: K11_8, key12: K12_7, key13: K13_6, key14: K14_5, key15: K15_4, key16: K16_3, key17: K17_2, key18: K18_1, key19: K19): IFunctionResolver<Curried19<TFn_18>>;
108
- curry20<TFn_19 extends (...args: any[]) => any, K1_19 extends PropsOfType<T, Param1<Parameters<TFn_19>>>, K2_18 extends PropsOfType<T, Param1<Tail1<Parameters<TFn_19>>>>, K3_17 extends PropsOfType<T, Param1<Tail2<Parameters<TFn_19>>>>, K4_16 extends PropsOfType<T, Param1<Tail3<Parameters<TFn_19>>>>, K5_15 extends PropsOfType<T, Param1<Tail4<Parameters<TFn_19>>>>, K6_14 extends PropsOfType<T, Param1<Tail5<Parameters<TFn_19>>>>, K7_13 extends PropsOfType<T, Param1<Tail6<Parameters<TFn_19>>>>, K8_12 extends PropsOfType<T, Param1<Tail7<Parameters<TFn_19>>>>, K9_11 extends PropsOfType<T, Param1<Tail8<Parameters<TFn_19>>>>, K10_10 extends PropsOfType<T, Param1<Tail9<Parameters<TFn_19>>>>, K11_9 extends PropsOfType<T, Param1<Tail10<Parameters<TFn_19>>>>, K12_8 extends PropsOfType<T, Param1<Tail11<Parameters<TFn_19>>>>, K13_7 extends PropsOfType<T, Param1<Tail12<Parameters<TFn_19>>>>, K14_6 extends PropsOfType<T, Param1<Tail13<Parameters<TFn_19>>>>, K15_5 extends PropsOfType<T, Param1<Tail14<Parameters<TFn_19>>>>, K16_4 extends PropsOfType<T, Param1<Tail15<Parameters<TFn_19>>>>, K17_3 extends PropsOfType<T, Param1<Tail16<Parameters<TFn_19>>>>, K18_2 extends PropsOfType<T, Param1<Tail17<Parameters<TFn_19>>>>, K19_1 extends PropsOfType<T, Param1<Tail18<Parameters<TFn_19>>>>, K20 extends PropsOfType<T, Param1<Tail19<Parameters<TFn_19>>>>>(fn: TFn_19, key1: K1_19, key2: K2_18, key3: K3_17, key4: K4_16, key5: K5_15, key6: K6_14, key7: K7_13, key8: K8_12, key9: K9_11, key10: K10_10, key11: K11_9, key12: K12_8, key13: K13_7, key14: K14_6, key15: K15_5, key16: K16_4, key17: K17_3, key18: K18_2, key19: K19_1, key20: K20): IFunctionResolver<Curried20<TFn_19>>;
16
+ curry1<TFn extends (...args: any[]) => any, K1 extends PropsOfType<T, import("./curry.generated").Param1<Parameters<TFn>>>>(fn: TFn, key1: K1): IFunctionResolver<import("./curry.generated").Curried1<TFn>>;
17
+ curry2<TFn_1 extends (...args: any[]) => any, K1_1 extends PropsOfType<T, import("./curry.generated").Param1<Parameters<TFn_1>>>, K2 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail1<Parameters<TFn_1>>>>>(fn: TFn_1, key1: K1_1, key2: K2): IFunctionResolver<import("./curry.generated").Curried2<TFn_1>>;
18
+ curry3<TFn_2 extends (...args: any[]) => any, K1_2 extends PropsOfType<T, import("./curry.generated").Param1<Parameters<TFn_2>>>, K2_1 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail1<Parameters<TFn_2>>>>, K3 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail2<Parameters<TFn_2>>>>>(fn: TFn_2, key1: K1_2, key2: K2_1, key3: K3): IFunctionResolver<import("./curry.generated").Curried3<TFn_2>>;
19
+ curry4<TFn_3 extends (...args: any[]) => any, K1_3 extends PropsOfType<T, import("./curry.generated").Param1<Parameters<TFn_3>>>, K2_2 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail1<Parameters<TFn_3>>>>, K3_1 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail2<Parameters<TFn_3>>>>, K4 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail3<Parameters<TFn_3>>>>>(fn: TFn_3, key1: K1_3, key2: K2_2, key3: K3_1, key4: K4): IFunctionResolver<import("./curry.generated").Curried4<TFn_3>>;
20
+ curry5<TFn_4 extends (...args: any[]) => any, K1_4 extends PropsOfType<T, import("./curry.generated").Param1<Parameters<TFn_4>>>, K2_3 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail1<Parameters<TFn_4>>>>, K3_2 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail2<Parameters<TFn_4>>>>, K4_1 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail3<Parameters<TFn_4>>>>, K5 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail4<Parameters<TFn_4>>>>>(fn: TFn_4, key1: K1_4, key2: K2_3, key3: K3_2, key4: K4_1, key5: K5): IFunctionResolver<import("./curry.generated").Curried5<TFn_4>>;
21
+ curry6<TFn_5 extends (...args: any[]) => any, K1_5 extends PropsOfType<T, import("./curry.generated").Param1<Parameters<TFn_5>>>, K2_4 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail1<Parameters<TFn_5>>>>, K3_3 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail2<Parameters<TFn_5>>>>, K4_2 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail3<Parameters<TFn_5>>>>, K5_1 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail4<Parameters<TFn_5>>>>, K6 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail5<Parameters<TFn_5>>>>>(fn: TFn_5, key1: K1_5, key2: K2_4, key3: K3_3, key4: K4_2, key5: K5_1, key6: K6): IFunctionResolver<import("./curry.generated").Curried6<TFn_5>>;
22
+ curry7<TFn_6 extends (...args: any[]) => any, K1_6 extends PropsOfType<T, import("./curry.generated").Param1<Parameters<TFn_6>>>, K2_5 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail1<Parameters<TFn_6>>>>, K3_4 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail2<Parameters<TFn_6>>>>, K4_3 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail3<Parameters<TFn_6>>>>, K5_2 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail4<Parameters<TFn_6>>>>, K6_1 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail5<Parameters<TFn_6>>>>, K7 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail6<Parameters<TFn_6>>>>>(fn: TFn_6, key1: K1_6, key2: K2_5, key3: K3_4, key4: K4_3, key5: K5_2, key6: K6_1, key7: K7): IFunctionResolver<import("./curry.generated").Curried7<TFn_6>>;
23
+ curry8<TFn_7 extends (...args: any[]) => any, K1_7 extends PropsOfType<T, import("./curry.generated").Param1<Parameters<TFn_7>>>, K2_6 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail1<Parameters<TFn_7>>>>, K3_5 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail2<Parameters<TFn_7>>>>, K4_4 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail3<Parameters<TFn_7>>>>, K5_3 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail4<Parameters<TFn_7>>>>, K6_2 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail5<Parameters<TFn_7>>>>, K7_1 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail6<Parameters<TFn_7>>>>, K8 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail7<Parameters<TFn_7>>>>>(fn: TFn_7, key1: K1_7, key2: K2_6, key3: K3_5, key4: K4_4, key5: K5_3, key6: K6_2, key7: K7_1, key8: K8): IFunctionResolver<import("./curry.generated").Curried8<TFn_7>>;
24
+ curry9<TFn_8 extends (...args: any[]) => any, K1_8 extends PropsOfType<T, import("./curry.generated").Param1<Parameters<TFn_8>>>, K2_7 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail1<Parameters<TFn_8>>>>, K3_6 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail2<Parameters<TFn_8>>>>, K4_5 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail3<Parameters<TFn_8>>>>, K5_4 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail4<Parameters<TFn_8>>>>, K6_3 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail5<Parameters<TFn_8>>>>, K7_2 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail6<Parameters<TFn_8>>>>, K8_1 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail7<Parameters<TFn_8>>>>, K9 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail8<Parameters<TFn_8>>>>>(fn: TFn_8, key1: K1_8, key2: K2_7, key3: K3_6, key4: K4_5, key5: K5_4, key6: K6_3, key7: K7_2, key8: K8_1, key9: K9): IFunctionResolver<import("./curry.generated").Curried9<TFn_8>>;
25
+ curry10<TFn_9 extends (...args: any[]) => any, K1_9 extends PropsOfType<T, import("./curry.generated").Param1<Parameters<TFn_9>>>, K2_8 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail1<Parameters<TFn_9>>>>, K3_7 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail2<Parameters<TFn_9>>>>, K4_6 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail3<Parameters<TFn_9>>>>, K5_5 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail4<Parameters<TFn_9>>>>, K6_4 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail5<Parameters<TFn_9>>>>, K7_3 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail6<Parameters<TFn_9>>>>, K8_2 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail7<Parameters<TFn_9>>>>, K9_1 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail8<Parameters<TFn_9>>>>, K10 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail9<Parameters<TFn_9>>>>>(fn: TFn_9, key1: K1_9, key2: K2_8, key3: K3_7, key4: K4_6, key5: K5_5, key6: K6_4, key7: K7_3, key8: K8_2, key9: K9_1, key10: K10): IFunctionResolver<import("./curry.generated").Curried10<TFn_9>>;
26
+ curry11<TFn_10 extends (...args: any[]) => any, K1_10 extends PropsOfType<T, import("./curry.generated").Param1<Parameters<TFn_10>>>, K2_9 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail1<Parameters<TFn_10>>>>, K3_8 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail2<Parameters<TFn_10>>>>, K4_7 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail3<Parameters<TFn_10>>>>, K5_6 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail4<Parameters<TFn_10>>>>, K6_5 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail5<Parameters<TFn_10>>>>, K7_4 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail6<Parameters<TFn_10>>>>, K8_3 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail7<Parameters<TFn_10>>>>, K9_2 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail8<Parameters<TFn_10>>>>, K10_1 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail9<Parameters<TFn_10>>>>, K11 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail10<Parameters<TFn_10>>>>>(fn: TFn_10, key1: K1_10, key2: K2_9, key3: K3_8, key4: K4_7, key5: K5_6, key6: K6_5, key7: K7_4, key8: K8_3, key9: K9_2, key10: K10_1, key11: K11): IFunctionResolver<import("./curry.generated").Curried11<TFn_10>>;
27
+ curry12<TFn_11 extends (...args: any[]) => any, K1_11 extends PropsOfType<T, import("./curry.generated").Param1<Parameters<TFn_11>>>, K2_10 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail1<Parameters<TFn_11>>>>, K3_9 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail2<Parameters<TFn_11>>>>, K4_8 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail3<Parameters<TFn_11>>>>, K5_7 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail4<Parameters<TFn_11>>>>, K6_6 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail5<Parameters<TFn_11>>>>, K7_5 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail6<Parameters<TFn_11>>>>, K8_4 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail7<Parameters<TFn_11>>>>, K9_3 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail8<Parameters<TFn_11>>>>, K10_2 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail9<Parameters<TFn_11>>>>, K11_1 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail10<Parameters<TFn_11>>>>, K12 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail11<Parameters<TFn_11>>>>>(fn: TFn_11, key1: K1_11, key2: K2_10, key3: K3_9, key4: K4_8, key5: K5_7, key6: K6_6, key7: K7_5, key8: K8_4, key9: K9_3, key10: K10_2, key11: K11_1, key12: K12): IFunctionResolver<import("./curry.generated").Curried12<TFn_11>>;
28
+ curry13<TFn_12 extends (...args: any[]) => any, K1_12 extends PropsOfType<T, import("./curry.generated").Param1<Parameters<TFn_12>>>, K2_11 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail1<Parameters<TFn_12>>>>, K3_10 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail2<Parameters<TFn_12>>>>, K4_9 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail3<Parameters<TFn_12>>>>, K5_8 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail4<Parameters<TFn_12>>>>, K6_7 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail5<Parameters<TFn_12>>>>, K7_6 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail6<Parameters<TFn_12>>>>, K8_5 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail7<Parameters<TFn_12>>>>, K9_4 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail8<Parameters<TFn_12>>>>, K10_3 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail9<Parameters<TFn_12>>>>, K11_2 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail10<Parameters<TFn_12>>>>, K12_1 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail11<Parameters<TFn_12>>>>, K13 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail12<Parameters<TFn_12>>>>>(fn: TFn_12, key1: K1_12, key2: K2_11, key3: K3_10, key4: K4_9, key5: K5_8, key6: K6_7, key7: K7_6, key8: K8_5, key9: K9_4, key10: K10_3, key11: K11_2, key12: K12_1, key13: K13): IFunctionResolver<import("./curry.generated").Curried13<TFn_12>>;
29
+ curry14<TFn_13 extends (...args: any[]) => any, K1_13 extends PropsOfType<T, import("./curry.generated").Param1<Parameters<TFn_13>>>, K2_12 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail1<Parameters<TFn_13>>>>, K3_11 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail2<Parameters<TFn_13>>>>, K4_10 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail3<Parameters<TFn_13>>>>, K5_9 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail4<Parameters<TFn_13>>>>, K6_8 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail5<Parameters<TFn_13>>>>, K7_7 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail6<Parameters<TFn_13>>>>, K8_6 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail7<Parameters<TFn_13>>>>, K9_5 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail8<Parameters<TFn_13>>>>, K10_4 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail9<Parameters<TFn_13>>>>, K11_3 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail10<Parameters<TFn_13>>>>, K12_2 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail11<Parameters<TFn_13>>>>, K13_1 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail12<Parameters<TFn_13>>>>, K14 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail13<Parameters<TFn_13>>>>>(fn: TFn_13, key1: K1_13, key2: K2_12, key3: K3_11, key4: K4_10, key5: K5_9, key6: K6_8, key7: K7_7, key8: K8_6, key9: K9_5, key10: K10_4, key11: K11_3, key12: K12_2, key13: K13_1, key14: K14): IFunctionResolver<import("./curry.generated").Curried14<TFn_13>>;
30
+ curry15<TFn_14 extends (...args: any[]) => any, K1_14 extends PropsOfType<T, import("./curry.generated").Param1<Parameters<TFn_14>>>, K2_13 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail1<Parameters<TFn_14>>>>, K3_12 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail2<Parameters<TFn_14>>>>, K4_11 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail3<Parameters<TFn_14>>>>, K5_10 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail4<Parameters<TFn_14>>>>, K6_9 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail5<Parameters<TFn_14>>>>, K7_8 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail6<Parameters<TFn_14>>>>, K8_7 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail7<Parameters<TFn_14>>>>, K9_6 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail8<Parameters<TFn_14>>>>, K10_5 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail9<Parameters<TFn_14>>>>, K11_4 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail10<Parameters<TFn_14>>>>, K12_3 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail11<Parameters<TFn_14>>>>, K13_2 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail12<Parameters<TFn_14>>>>, K14_1 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail13<Parameters<TFn_14>>>>, K15 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail14<Parameters<TFn_14>>>>>(fn: TFn_14, key1: K1_14, key2: K2_13, key3: K3_12, key4: K4_11, key5: K5_10, key6: K6_9, key7: K7_8, key8: K8_7, key9: K9_6, key10: K10_5, key11: K11_4, key12: K12_3, key13: K13_2, key14: K14_1, key15: K15): IFunctionResolver<import("./curry.generated").Curried15<TFn_14>>;
31
+ curry16<TFn_15 extends (...args: any[]) => any, K1_15 extends PropsOfType<T, import("./curry.generated").Param1<Parameters<TFn_15>>>, K2_14 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail1<Parameters<TFn_15>>>>, K3_13 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail2<Parameters<TFn_15>>>>, K4_12 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail3<Parameters<TFn_15>>>>, K5_11 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail4<Parameters<TFn_15>>>>, K6_10 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail5<Parameters<TFn_15>>>>, K7_9 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail6<Parameters<TFn_15>>>>, K8_8 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail7<Parameters<TFn_15>>>>, K9_7 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail8<Parameters<TFn_15>>>>, K10_6 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail9<Parameters<TFn_15>>>>, K11_5 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail10<Parameters<TFn_15>>>>, K12_4 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail11<Parameters<TFn_15>>>>, K13_3 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail12<Parameters<TFn_15>>>>, K14_2 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail13<Parameters<TFn_15>>>>, K15_1 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail14<Parameters<TFn_15>>>>, K16 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail15<Parameters<TFn_15>>>>>(fn: TFn_15, key1: K1_15, key2: K2_14, key3: K3_13, key4: K4_12, key5: K5_11, key6: K6_10, key7: K7_9, key8: K8_8, key9: K9_7, key10: K10_6, key11: K11_5, key12: K12_4, key13: K13_3, key14: K14_2, key15: K15_1, key16: K16): IFunctionResolver<import("./curry.generated").Curried16<TFn_15>>;
32
+ curry17<TFn_16 extends (...args: any[]) => any, K1_16 extends PropsOfType<T, import("./curry.generated").Param1<Parameters<TFn_16>>>, K2_15 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail1<Parameters<TFn_16>>>>, K3_14 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail2<Parameters<TFn_16>>>>, K4_13 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail3<Parameters<TFn_16>>>>, K5_12 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail4<Parameters<TFn_16>>>>, K6_11 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail5<Parameters<TFn_16>>>>, K7_10 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail6<Parameters<TFn_16>>>>, K8_9 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail7<Parameters<TFn_16>>>>, K9_8 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail8<Parameters<TFn_16>>>>, K10_7 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail9<Parameters<TFn_16>>>>, K11_6 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail10<Parameters<TFn_16>>>>, K12_5 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail11<Parameters<TFn_16>>>>, K13_4 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail12<Parameters<TFn_16>>>>, K14_3 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail13<Parameters<TFn_16>>>>, K15_2 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail14<Parameters<TFn_16>>>>, K16_1 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail15<Parameters<TFn_16>>>>, K17 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail16<Parameters<TFn_16>>>>>(fn: TFn_16, key1: K1_16, key2: K2_15, key3: K3_14, key4: K4_13, key5: K5_12, key6: K6_11, key7: K7_10, key8: K8_9, key9: K9_8, key10: K10_7, key11: K11_6, key12: K12_5, key13: K13_4, key14: K14_3, key15: K15_2, key16: K16_1, key17: K17): IFunctionResolver<import("./curry.generated").Curried17<TFn_16>>;
33
+ curry18<TFn_17 extends (...args: any[]) => any, K1_17 extends PropsOfType<T, import("./curry.generated").Param1<Parameters<TFn_17>>>, K2_16 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail1<Parameters<TFn_17>>>>, K3_15 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail2<Parameters<TFn_17>>>>, K4_14 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail3<Parameters<TFn_17>>>>, K5_13 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail4<Parameters<TFn_17>>>>, K6_12 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail5<Parameters<TFn_17>>>>, K7_11 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail6<Parameters<TFn_17>>>>, K8_10 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail7<Parameters<TFn_17>>>>, K9_9 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail8<Parameters<TFn_17>>>>, K10_8 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail9<Parameters<TFn_17>>>>, K11_7 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail10<Parameters<TFn_17>>>>, K12_6 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail11<Parameters<TFn_17>>>>, K13_5 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail12<Parameters<TFn_17>>>>, K14_4 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail13<Parameters<TFn_17>>>>, K15_3 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail14<Parameters<TFn_17>>>>, K16_2 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail15<Parameters<TFn_17>>>>, K17_1 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail16<Parameters<TFn_17>>>>, K18 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail17<Parameters<TFn_17>>>>>(fn: TFn_17, key1: K1_17, key2: K2_16, key3: K3_15, key4: K4_14, key5: K5_13, key6: K6_12, key7: K7_11, key8: K8_10, key9: K9_9, key10: K10_8, key11: K11_7, key12: K12_6, key13: K13_5, key14: K14_4, key15: K15_3, key16: K16_2, key17: K17_1, key18: K18): IFunctionResolver<import("./curry.generated").Curried18<TFn_17>>;
34
+ curry19<TFn_18 extends (...args: any[]) => any, K1_18 extends PropsOfType<T, import("./curry.generated").Param1<Parameters<TFn_18>>>, K2_17 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail1<Parameters<TFn_18>>>>, K3_16 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail2<Parameters<TFn_18>>>>, K4_15 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail3<Parameters<TFn_18>>>>, K5_14 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail4<Parameters<TFn_18>>>>, K6_13 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail5<Parameters<TFn_18>>>>, K7_12 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail6<Parameters<TFn_18>>>>, K8_11 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail7<Parameters<TFn_18>>>>, K9_10 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail8<Parameters<TFn_18>>>>, K10_9 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail9<Parameters<TFn_18>>>>, K11_8 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail10<Parameters<TFn_18>>>>, K12_7 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail11<Parameters<TFn_18>>>>, K13_6 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail12<Parameters<TFn_18>>>>, K14_5 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail13<Parameters<TFn_18>>>>, K15_4 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail14<Parameters<TFn_18>>>>, K16_3 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail15<Parameters<TFn_18>>>>, K17_2 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail16<Parameters<TFn_18>>>>, K18_1 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail17<Parameters<TFn_18>>>>, K19 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail18<Parameters<TFn_18>>>>>(fn: TFn_18, key1: K1_18, key2: K2_17, key3: K3_16, key4: K4_15, key5: K5_14, key6: K6_13, key7: K7_12, key8: K8_11, key9: K9_10, key10: K10_9, key11: K11_8, key12: K12_7, key13: K13_6, key14: K14_5, key15: K15_4, key16: K16_3, key17: K17_2, key18: K18_1, key19: K19): IFunctionResolver<import("./curry.generated").Curried19<TFn_18>>;
35
+ curry20<TFn_19 extends (...args: any[]) => any, K1_19 extends PropsOfType<T, import("./curry.generated").Param1<Parameters<TFn_19>>>, K2_18 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail1<Parameters<TFn_19>>>>, K3_17 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail2<Parameters<TFn_19>>>>, K4_16 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail3<Parameters<TFn_19>>>>, K5_15 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail4<Parameters<TFn_19>>>>, K6_14 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail5<Parameters<TFn_19>>>>, K7_13 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail6<Parameters<TFn_19>>>>, K8_12 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail7<Parameters<TFn_19>>>>, K9_11 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail8<Parameters<TFn_19>>>>, K10_10 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail9<Parameters<TFn_19>>>>, K11_9 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail10<Parameters<TFn_19>>>>, K12_8 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail11<Parameters<TFn_19>>>>, K13_7 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail12<Parameters<TFn_19>>>>, K14_6 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail13<Parameters<TFn_19>>>>, K15_5 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail14<Parameters<TFn_19>>>>, K16_4 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail15<Parameters<TFn_19>>>>, K17_3 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail16<Parameters<TFn_19>>>>, K18_2 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail17<Parameters<TFn_19>>>>, K19_1 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail18<Parameters<TFn_19>>>>, K20 extends PropsOfType<T, import("./curry.generated").Param1<import("./curry.generated").Tail19<Parameters<TFn_19>>>>>(fn: TFn_19, key1: K1_19, key2: K2_18, key3: K3_17, key4: K4_16, key5: K5_15, key6: K6_14, key7: K7_13, key8: K8_12, key9: K9_11, key10: K10_10, key11: K11_9, key12: K12_8, key13: K13_7, key14: K14_6, key15: K15_5, key16: K16_4, key17: K17_3, key18: K18_2, key19: K19_1, key20: K20): IFunctionResolver<import("./curry.generated").Curried20<TFn_19>>;
109
36
  };
110
- export declare function makeInjectable(classType: Newable): void;
37
+ export declare const reflectMetadataKeys: {
38
+ injectable: string;
39
+ injected: string;
40
+ };
41
+ export declare function wasMadeInjectable(classType: any): boolean;
42
+ export declare function makeInjectable(classType: any): void;
43
+ export declare function makeInjected(classType: any, index: number, serviceIdentifier: string): void;
44
+ export declare function makeUnmanaged(classType: any, parameterIndex: number): void;
111
45
  export declare function registerClass<T extends Newable>(key: string, classType: T, ctorParams: string[]): BindingInWhenOnSyntax<InstanceType<T>>;
112
- export declare function containerRegister<T>(): {
113
- function<K extends PropsOfType<T, Function>>(key: K, item: T[K] | IFunctionResolver<T[K]>): void;
114
- constant<K_1 extends PropsNotOfType<T, Function>>(key: K_1, item: T[K_1]): void;
115
- class<K_2 extends Extract<keyof T, string>, C extends NewableOf<T[K_2]>>(key: K_2, cls: C): {
46
+ declare class Binder<T, TItem, TDep> {
47
+ private key;
48
+ constructor(key: string);
49
+ get binding(): interfaces.BindingToSyntax<TItem>;
50
+ function(item: TItem): interfaces.BindingWhenOnSyntax<TItem>;
51
+ functionResolver(item: IFunctionResolver<TItem>): interfaces.BindingWhenOnSyntax<TItem>;
52
+ constant(item: TItem): interfaces.BindingWhenOnSyntax<TItem>;
53
+ class<C extends NewableOf<TItem>>(cls: C): {
54
+ construct(keys: MapTuple<ConstructorParameters<C>, T & TDep>): BindingInWhenOnSyntax<InstanceType<C>>;
55
+ };
56
+ }
57
+ export interface IContainerRegistrationHelper<T> {
58
+ function<KFunc extends PropsOfType<T, Function>>(key: KFunc, item: T[KFunc] | IFunctionResolver<T[KFunc]>): void;
59
+ constant<KConst extends PropsNotOfType<T, Function>>(key: KConst, item: T[KConst]): void;
60
+ class<KClass extends StringKeyof<T>, C extends NewableOf<T[KClass]>>(key: KClass, cls: C): {
116
61
  construct<TK = T>(keys: MapTuple<ConstructorParameters<C>, TK>): BindingInWhenOnSyntax<InstanceType<C>>;
117
62
  };
63
+ }
64
+ export declare function containerRegister<T>(): IContainerRegistrationHelper<T>;
65
+ export declare type ContainerRegistrant<T, TItem, TDep> = (item: Binder<T, TItem, TDep>) => interfaces.BindingOnSyntax<TItem>;
66
+ export declare type ContainerRegister<T, TDep> = {
67
+ [P in keyof T]-?: ContainerRegistrant<T, T[P], TDep>;
118
68
  };
119
- export declare function containerFactory<T>(): {
120
- get<K extends Extract<keyof T, string>>(key: K): T[K];
121
- };
122
- export {};
69
+ export interface IContainer<T> {
70
+ readonly keys: string[];
71
+ get<K extends StringKeyof<T>>(key: K): T[K];
72
+ }
73
+ export declare function containerFactory<T>(): IContainer<T>;
74
+ export declare function register<T>(cr: ContainerRegister<T, {}>): IContainer<T>;
75
+ export declare function register<T, TDep>(cr: ContainerRegister<T, TDep>, dependent: IContainer<TDep>): IContainer<T & TDep>;
package/lib/index.js CHANGED
@@ -1,19 +1,13 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.containerFactory = exports.containerRegister = exports.registerClass = exports.makeInjectable = exports.containerRegisterFunctionResolver = exports.internalContainer = exports.getGlobalContainer = void 0;
3
+ exports.register = exports.containerFactory = exports.containerRegister = exports.registerClass = exports.makeUnmanaged = exports.makeInjected = exports.makeInjectable = exports.wasMadeInjectable = exports.reflectMetadataKeys = exports.containerRegisterFunctionResolver = exports.internalContainer = void 0;
4
4
  var tslib_1 = require("tslib");
5
- /* eslint-disable no-underscore-dangle */
6
- /* eslint-disable @typescript-eslint/ban-types */
7
- var inversify_1 = require("inversify");
8
5
  require("reflect-metadata");
9
- function getGlobalContainer() {
10
- if (!global._rocketmakers_ioc) {
11
- global._rocketmakers_ioc = new inversify_1.Container();
12
- }
13
- return global._rocketmakers_ioc;
14
- }
15
- exports.getGlobalContainer = getGlobalContainer;
16
- exports.internalContainer = getGlobalContainer();
6
+ var inversify_1 = require("inversify");
7
+ var global_1 = require("./global");
8
+ var tail_generated_1 = require("./tail.generated");
9
+ tslib_1.__exportStar(require("./curry.generated"), exports);
10
+ exports.internalContainer = (0, global_1.getGlobalContainer)();
17
11
  function curryInner(fn) {
18
12
  var keys = [];
19
13
  for (var _i = 1; _i < arguments.length; _i++) {
@@ -29,144 +23,134 @@ function curryInner(fn) {
29
23
  for (var _i = 0; _i < arguments.length; _i++) {
30
24
  p[_i] = arguments[_i];
31
25
  }
32
- return fn.apply(fn, tslib_1.__spreadArray(tslib_1.__spreadArray([], values_1), p));
26
+ return fn.apply(fn, tslib_1.__spreadArray(tslib_1.__spreadArray([], values_1, true), p, true));
33
27
  };
34
28
  }
35
29
  return result;
36
30
  },
37
31
  };
38
32
  }
39
- // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types
40
33
  function containerRegisterFunctionResolver() {
41
- return {
42
- curry1: function (fn, key1) {
43
- return curryInner(fn, key1);
44
- },
45
- curry2: function (fn, key1, key2) {
46
- return curryInner(fn, key1, key2);
47
- },
48
- curry3: function (fn, key1, key2, key3) {
49
- return curryInner(fn, key1, key2, key3);
50
- },
51
- curry4: function (fn, key1, key2, key3, key4) {
52
- return curryInner(fn, key1, key2, key3, key4);
53
- },
54
- curry5: function (fn, key1, key2, key3, key4, key5) {
55
- return curryInner(fn, key1, key2, key3, key4, key5);
56
- },
57
- curry6: function (fn, key1, key2, key3, key4, key5, key6) {
58
- return curryInner(fn, key1, key2, key3, key4, key5, key6);
59
- },
60
- curry7: function (fn, key1, key2, key3, key4, key5, key6, key7) {
61
- return curryInner(fn, key1, key2, key3, key4, key5, key6, key7);
62
- },
63
- curry8: function (fn, key1, key2, key3, key4, key5, key6, key7, key8) {
64
- return curryInner(fn, key1, key2, key3, key4, key5, key6, key7, key8);
65
- },
66
- curry9: function (fn, key1, key2, key3, key4, key5, key6, key7, key8, key9) {
67
- return curryInner(fn, key1, key2, key3, key4, key5, key6, key7, key8, key9);
68
- },
69
- curry10: function (fn, key1, key2, key3, key4, key5, key6, key7, key8, key9, key10) {
70
- return curryInner(fn, key1, key2, key3, key4, key5, key6, key7, key8, key9, key10);
71
- },
72
- curry11: function (fn, key1, key2, key3, key4, key5, key6, key7, key8, key9, key10, key11) {
73
- return curryInner(fn, key1, key2, key3, key4, key5, key6, key7, key8, key9, key10, key11);
74
- },
75
- curry12: function (fn, key1, key2, key3, key4, key5, key6, key7, key8, key9, key10, key11, key12) {
76
- return curryInner(fn, key1, key2, key3, key4, key5, key6, key7, key8, key9, key10, key11, key12);
77
- },
78
- curry13: function (fn, key1, key2, key3, key4, key5, key6, key7, key8, key9, key10, key11, key12, key13) {
79
- return curryInner(fn, key1, key2, key3, key4, key5, key6, key7, key8, key9, key10, key11, key12, key13);
80
- },
81
- curry14: function (fn, key1, key2, key3, key4, key5, key6, key7, key8, key9, key10, key11, key12, key13, key14) {
82
- return curryInner(fn, key1, key2, key3, key4, key5, key6, key7, key8, key9, key10, key11, key12, key13, key14);
83
- },
84
- curry15: function (fn, key1, key2, key3, key4, key5, key6, key7, key8, key9, key10, key11, key12, key13, key14, key15) {
85
- return curryInner(fn, key1, key2, key3, key4, key5, key6, key7, key8, key9, key10, key11, key12, key13, key14, key15);
86
- },
87
- curry16: function (fn, key1, key2, key3, key4, key5, key6, key7, key8, key9, key10, key11, key12, key13, key14, key15, key16) {
88
- return curryInner(fn, key1, key2, key3, key4, key5, key6, key7, key8, key9, key10, key11, key12, key13, key14, key15, key16);
89
- },
90
- curry17: function (fn, key1, key2, key3, key4, key5, key6, key7, key8, key9, key10, key11, key12, key13, key14, key15, key16, key17) {
91
- return curryInner(fn, key1, key2, key3, key4, key5, key6, key7, key8, key9, key10, key11, key12, key13, key14, key15, key16, key17);
92
- },
93
- curry18: function (fn, key1, key2, key3, key4, key5, key6, key7, key8, key9, key10, key11, key12, key13, key14, key15, key16, key17, key18) {
94
- return curryInner(fn, key1, key2, key3, key4, key5, key6, key7, key8, key9, key10, key11, key12, key13, key14, key15, key16, key17, key18);
95
- },
96
- curry19: function (fn, key1, key2, key3, key4, key5, key6, key7, key8, key9, key10, key11, key12, key13, key14, key15, key16, key17, key18, key19) {
97
- return curryInner(fn, key1, key2, key3, key4, key5, key6, key7, key8, key9, key10, key11, key12, key13, key14, key15, key16, key17, key18, key19);
98
- },
99
- curry20: function (fn, key1, key2, key3, key4, key5, key6, key7, key8, key9, key10, key11, key12, key13, key14, key15, key16, key17, key18, key19, key20) {
100
- return curryInner(fn, key1, key2, key3, key4, key5, key6, key7, key8, key9, key10, key11, key12, key13, key14, key15, key16, key17, key18, key19, key20);
101
- },
102
- };
34
+ return (0, tail_generated_1.containerRegisterFunctionResolverInternal)(curryInner);
103
35
  }
104
36
  exports.containerRegisterFunctionResolver = containerRegisterFunctionResolver;
105
- var metadata = {
106
- injectable: {},
107
- inject: {},
37
+ exports.reflectMetadataKeys = {
38
+ injectable: 'inversify:paramtypes',
39
+ injected: 'inversify:tagged',
108
40
  };
109
- // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types
41
+ function wasMadeInjectable(classType) {
42
+ return Reflect.hasMetadata(exports.reflectMetadataKeys.injectable, classType);
43
+ }
44
+ exports.wasMadeInjectable = wasMadeInjectable;
110
45
  function makeInjectable(classType) {
111
- inversify_1.decorate(inversify_1.injectable(), classType);
46
+ if (wasMadeInjectable(classType)) {
47
+ return;
48
+ }
49
+ (0, inversify_1.decorate)((0, inversify_1.injectable)(), classType);
112
50
  }
113
51
  exports.makeInjectable = makeInjectable;
114
- function registerClass(key, classType, ctorParams) {
115
- var name = classType.name;
116
- if (!metadata.injectable[name]) {
117
- makeInjectable(classType);
118
- metadata.injectable[name] = true;
52
+ function wasParamInjected(classType, index) {
53
+ var data = Reflect.getMetadata(exports.reflectMetadataKeys.injected, classType);
54
+ return data && !!data[index];
55
+ }
56
+ function makeInjected(classType, index, serviceIdentifier) {
57
+ if (wasParamInjected(classType, index)) {
58
+ return;
119
59
  }
120
- ctorParams.forEach(function (c, i) {
121
- var injectKey = name + "." + i;
122
- if (!metadata.inject[injectKey]) {
123
- inversify_1.decorate(inversify_1.inject(c), classType, i);
124
- metadata.inject[injectKey] = true;
125
- }
126
- });
60
+ (0, inversify_1.decorate)((0, inversify_1.inject)(serviceIdentifier), classType, index);
61
+ }
62
+ exports.makeInjected = makeInjected;
63
+ function makeUnmanaged(classType, parameterIndex) {
64
+ (0, inversify_1.decorate)((0, inversify_1.unmanaged)(), classType, parameterIndex);
65
+ }
66
+ exports.makeUnmanaged = makeUnmanaged;
67
+ function registerClass(key, classType, ctorParams) {
68
+ makeInjectable(classType);
69
+ ctorParams.forEach(function (c, i) { return makeInjected(classType, i, c); });
127
70
  return exports.internalContainer.bind(key).to(classType);
128
71
  }
129
72
  exports.registerClass = registerClass;
130
- function isFunction(item) {
131
- return item && typeof item === 'function';
73
+ function isFunctionResolver(item) {
74
+ var resolved = item === null || item === void 0 ? void 0 : item.resolved;
75
+ return resolved && typeof resolved === 'function';
132
76
  }
133
- // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types
77
+ var Binder = /** @class */ (function () {
78
+ function Binder(key) {
79
+ this.key = key;
80
+ }
81
+ Object.defineProperty(Binder.prototype, "binding", {
82
+ get: function () {
83
+ return exports.internalContainer.bind(this.key);
84
+ },
85
+ enumerable: false,
86
+ configurable: true
87
+ });
88
+ Binder.prototype.function = function (item) {
89
+ return this.binding.toFunction(item);
90
+ };
91
+ Binder.prototype.functionResolver = function (item) {
92
+ return this.binding.toFactory(function () { return item.resolved(); });
93
+ };
94
+ Binder.prototype.constant = function (item) {
95
+ return this.binding.toConstantValue(item);
96
+ };
97
+ Binder.prototype.class = function (cls) {
98
+ var k = this.key;
99
+ return {
100
+ construct: function (keys) {
101
+ return registerClass(k, cls, keys);
102
+ },
103
+ };
104
+ };
105
+ return Binder;
106
+ }());
134
107
  function containerRegister() {
135
108
  return {
136
109
  function: function (key, item) {
137
- if (isFunction(item)) {
138
- exports.internalContainer.bind(key).toFunction(item);
139
- }
140
- else {
141
- exports.internalContainer.bind(key).toFactory(function () { return item.resolved(); });
110
+ var b = new Binder(key);
111
+ if (isFunctionResolver(item)) {
112
+ return b.functionResolver(item);
142
113
  }
114
+ return b.function(item);
143
115
  },
144
116
  constant: function (key, item) {
145
- exports.internalContainer.bind(key).toConstantValue(item);
117
+ var b = new Binder(key);
118
+ return b.constant(item);
146
119
  },
147
- // class<C extends Newable>(key: PropsOfType<T, InstanceType<C>>, cls: C) {
148
- // return {
149
- // construct<TK = T>(keys: MapTuple<ConstructorParameters<C>, TK>) {
150
- // return registerClass(key, cls, keys as any);
151
- // },
152
- // };
153
- // },
154
120
  class: function (key, cls) {
155
- return {
156
- construct: function (keys) {
157
- return registerClass(key, cls, keys);
158
- },
159
- };
121
+ var b = new Binder(key);
122
+ var dd = b.class(cls);
123
+ return dd;
160
124
  },
161
125
  };
162
126
  }
163
127
  exports.containerRegister = containerRegister;
164
- // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types
165
- function containerFactory() {
128
+ function createContainerOf(keys) {
166
129
  return {
130
+ keys: keys,
167
131
  get: function (key) {
168
132
  return exports.internalContainer.get(key);
169
133
  },
170
134
  };
171
135
  }
136
+ function containerFactory() {
137
+ return createContainerOf([]);
138
+ }
172
139
  exports.containerFactory = containerFactory;
140
+ function register(cr, dependent) {
141
+ var keys = Object.keys(cr);
142
+ var extraKeys = [];
143
+ if (dependent) {
144
+ extraKeys = dependent.keys;
145
+ var duplicates = keys.filter(function (k) { return dependent.keys.indexOf(k) > -1; });
146
+ if (duplicates.length) {
147
+ console.log('We have duplicate keys', duplicates);
148
+ }
149
+ }
150
+ keys.forEach(function (k) {
151
+ var binder = new Binder(k);
152
+ cr[k](binder);
153
+ });
154
+ return createContainerOf(tslib_1.__spreadArray(tslib_1.__spreadArray([], keys, true), extraKeys, true));
155
+ }
156
+ exports.register = register;
@@ -0,0 +1,30 @@
1
+ import { Param1, Curried1, Curried2, Curried3, Curried4, Curried5, Curried6, Curried7, Curried8, Curried9, Curried10, Curried11, Curried12, Curried13, Curried14, Curried15, Curried16, Curried17, Curried18, Curried19, Curried20 } from "./curry.generated";
2
+ export interface IFunctionResolver<T> {
3
+ resolved: () => T;
4
+ }
5
+ export declare type StringKeyof<T> = Extract<keyof T, string>;
6
+ export declare type PropsOfType<T, X> = {
7
+ [P in StringKeyof<T>]: T[P] extends X ? P : never;
8
+ }[StringKeyof<T>];
9
+ export declare function containerRegisterFunctionResolverInternal<T>(curryInner: <TFn extends (...args: any[]) => any>(fn: TFn, ...keys: PropertyKey[]) => IFunctionResolver<any>): {
10
+ curry1<TFn extends (...args: any[]) => any, K1 extends PropsOfType<T, Param1<Parameters<TFn>>>>(fn: TFn, key1: K1): IFunctionResolver<Curried1<TFn>>;
11
+ curry2<TFn_1 extends (...args: any[]) => any, K1_1 extends PropsOfType<T, Param1<Parameters<TFn_1>>>, K2 extends PropsOfType<T, Param1<import("./curry.generated").Tail1<Parameters<TFn_1>>>>>(fn: TFn_1, key1: K1_1, key2: K2): IFunctionResolver<Curried2<TFn_1>>;
12
+ curry3<TFn_2 extends (...args: any[]) => any, K1_2 extends PropsOfType<T, Param1<Parameters<TFn_2>>>, K2_1 extends PropsOfType<T, Param1<import("./curry.generated").Tail1<Parameters<TFn_2>>>>, K3 extends PropsOfType<T, Param1<import("./curry.generated").Tail2<Parameters<TFn_2>>>>>(fn: TFn_2, key1: K1_2, key2: K2_1, key3: K3): IFunctionResolver<Curried3<TFn_2>>;
13
+ curry4<TFn_3 extends (...args: any[]) => any, K1_3 extends PropsOfType<T, Param1<Parameters<TFn_3>>>, K2_2 extends PropsOfType<T, Param1<import("./curry.generated").Tail1<Parameters<TFn_3>>>>, K3_1 extends PropsOfType<T, Param1<import("./curry.generated").Tail2<Parameters<TFn_3>>>>, K4 extends PropsOfType<T, Param1<import("./curry.generated").Tail3<Parameters<TFn_3>>>>>(fn: TFn_3, key1: K1_3, key2: K2_2, key3: K3_1, key4: K4): IFunctionResolver<Curried4<TFn_3>>;
14
+ curry5<TFn_4 extends (...args: any[]) => any, K1_4 extends PropsOfType<T, Param1<Parameters<TFn_4>>>, K2_3 extends PropsOfType<T, Param1<import("./curry.generated").Tail1<Parameters<TFn_4>>>>, K3_2 extends PropsOfType<T, Param1<import("./curry.generated").Tail2<Parameters<TFn_4>>>>, K4_1 extends PropsOfType<T, Param1<import("./curry.generated").Tail3<Parameters<TFn_4>>>>, K5 extends PropsOfType<T, Param1<import("./curry.generated").Tail4<Parameters<TFn_4>>>>>(fn: TFn_4, key1: K1_4, key2: K2_3, key3: K3_2, key4: K4_1, key5: K5): IFunctionResolver<Curried5<TFn_4>>;
15
+ curry6<TFn_5 extends (...args: any[]) => any, K1_5 extends PropsOfType<T, Param1<Parameters<TFn_5>>>, K2_4 extends PropsOfType<T, Param1<import("./curry.generated").Tail1<Parameters<TFn_5>>>>, K3_3 extends PropsOfType<T, Param1<import("./curry.generated").Tail2<Parameters<TFn_5>>>>, K4_2 extends PropsOfType<T, Param1<import("./curry.generated").Tail3<Parameters<TFn_5>>>>, K5_1 extends PropsOfType<T, Param1<import("./curry.generated").Tail4<Parameters<TFn_5>>>>, K6 extends PropsOfType<T, Param1<import("./curry.generated").Tail5<Parameters<TFn_5>>>>>(fn: TFn_5, key1: K1_5, key2: K2_4, key3: K3_3, key4: K4_2, key5: K5_1, key6: K6): IFunctionResolver<Curried6<TFn_5>>;
16
+ curry7<TFn_6 extends (...args: any[]) => any, K1_6 extends PropsOfType<T, Param1<Parameters<TFn_6>>>, K2_5 extends PropsOfType<T, Param1<import("./curry.generated").Tail1<Parameters<TFn_6>>>>, K3_4 extends PropsOfType<T, Param1<import("./curry.generated").Tail2<Parameters<TFn_6>>>>, K4_3 extends PropsOfType<T, Param1<import("./curry.generated").Tail3<Parameters<TFn_6>>>>, K5_2 extends PropsOfType<T, Param1<import("./curry.generated").Tail4<Parameters<TFn_6>>>>, K6_1 extends PropsOfType<T, Param1<import("./curry.generated").Tail5<Parameters<TFn_6>>>>, K7 extends PropsOfType<T, Param1<import("./curry.generated").Tail6<Parameters<TFn_6>>>>>(fn: TFn_6, key1: K1_6, key2: K2_5, key3: K3_4, key4: K4_3, key5: K5_2, key6: K6_1, key7: K7): IFunctionResolver<Curried7<TFn_6>>;
17
+ curry8<TFn_7 extends (...args: any[]) => any, K1_7 extends PropsOfType<T, Param1<Parameters<TFn_7>>>, K2_6 extends PropsOfType<T, Param1<import("./curry.generated").Tail1<Parameters<TFn_7>>>>, K3_5 extends PropsOfType<T, Param1<import("./curry.generated").Tail2<Parameters<TFn_7>>>>, K4_4 extends PropsOfType<T, Param1<import("./curry.generated").Tail3<Parameters<TFn_7>>>>, K5_3 extends PropsOfType<T, Param1<import("./curry.generated").Tail4<Parameters<TFn_7>>>>, K6_2 extends PropsOfType<T, Param1<import("./curry.generated").Tail5<Parameters<TFn_7>>>>, K7_1 extends PropsOfType<T, Param1<import("./curry.generated").Tail6<Parameters<TFn_7>>>>, K8 extends PropsOfType<T, Param1<import("./curry.generated").Tail7<Parameters<TFn_7>>>>>(fn: TFn_7, key1: K1_7, key2: K2_6, key3: K3_5, key4: K4_4, key5: K5_3, key6: K6_2, key7: K7_1, key8: K8): IFunctionResolver<Curried8<TFn_7>>;
18
+ curry9<TFn_8 extends (...args: any[]) => any, K1_8 extends PropsOfType<T, Param1<Parameters<TFn_8>>>, K2_7 extends PropsOfType<T, Param1<import("./curry.generated").Tail1<Parameters<TFn_8>>>>, K3_6 extends PropsOfType<T, Param1<import("./curry.generated").Tail2<Parameters<TFn_8>>>>, K4_5 extends PropsOfType<T, Param1<import("./curry.generated").Tail3<Parameters<TFn_8>>>>, K5_4 extends PropsOfType<T, Param1<import("./curry.generated").Tail4<Parameters<TFn_8>>>>, K6_3 extends PropsOfType<T, Param1<import("./curry.generated").Tail5<Parameters<TFn_8>>>>, K7_2 extends PropsOfType<T, Param1<import("./curry.generated").Tail6<Parameters<TFn_8>>>>, K8_1 extends PropsOfType<T, Param1<import("./curry.generated").Tail7<Parameters<TFn_8>>>>, K9 extends PropsOfType<T, Param1<import("./curry.generated").Tail8<Parameters<TFn_8>>>>>(fn: TFn_8, key1: K1_8, key2: K2_7, key3: K3_6, key4: K4_5, key5: K5_4, key6: K6_3, key7: K7_2, key8: K8_1, key9: K9): IFunctionResolver<Curried9<TFn_8>>;
19
+ curry10<TFn_9 extends (...args: any[]) => any, K1_9 extends PropsOfType<T, Param1<Parameters<TFn_9>>>, K2_8 extends PropsOfType<T, Param1<import("./curry.generated").Tail1<Parameters<TFn_9>>>>, K3_7 extends PropsOfType<T, Param1<import("./curry.generated").Tail2<Parameters<TFn_9>>>>, K4_6 extends PropsOfType<T, Param1<import("./curry.generated").Tail3<Parameters<TFn_9>>>>, K5_5 extends PropsOfType<T, Param1<import("./curry.generated").Tail4<Parameters<TFn_9>>>>, K6_4 extends PropsOfType<T, Param1<import("./curry.generated").Tail5<Parameters<TFn_9>>>>, K7_3 extends PropsOfType<T, Param1<import("./curry.generated").Tail6<Parameters<TFn_9>>>>, K8_2 extends PropsOfType<T, Param1<import("./curry.generated").Tail7<Parameters<TFn_9>>>>, K9_1 extends PropsOfType<T, Param1<import("./curry.generated").Tail8<Parameters<TFn_9>>>>, K10 extends PropsOfType<T, Param1<import("./curry.generated").Tail9<Parameters<TFn_9>>>>>(fn: TFn_9, key1: K1_9, key2: K2_8, key3: K3_7, key4: K4_6, key5: K5_5, key6: K6_4, key7: K7_3, key8: K8_2, key9: K9_1, key10: K10): IFunctionResolver<Curried10<TFn_9>>;
20
+ curry11<TFn_10 extends (...args: any[]) => any, K1_10 extends PropsOfType<T, Param1<Parameters<TFn_10>>>, K2_9 extends PropsOfType<T, Param1<import("./curry.generated").Tail1<Parameters<TFn_10>>>>, K3_8 extends PropsOfType<T, Param1<import("./curry.generated").Tail2<Parameters<TFn_10>>>>, K4_7 extends PropsOfType<T, Param1<import("./curry.generated").Tail3<Parameters<TFn_10>>>>, K5_6 extends PropsOfType<T, Param1<import("./curry.generated").Tail4<Parameters<TFn_10>>>>, K6_5 extends PropsOfType<T, Param1<import("./curry.generated").Tail5<Parameters<TFn_10>>>>, K7_4 extends PropsOfType<T, Param1<import("./curry.generated").Tail6<Parameters<TFn_10>>>>, K8_3 extends PropsOfType<T, Param1<import("./curry.generated").Tail7<Parameters<TFn_10>>>>, K9_2 extends PropsOfType<T, Param1<import("./curry.generated").Tail8<Parameters<TFn_10>>>>, K10_1 extends PropsOfType<T, Param1<import("./curry.generated").Tail9<Parameters<TFn_10>>>>, K11 extends PropsOfType<T, Param1<import("./curry.generated").Tail10<Parameters<TFn_10>>>>>(fn: TFn_10, key1: K1_10, key2: K2_9, key3: K3_8, key4: K4_7, key5: K5_6, key6: K6_5, key7: K7_4, key8: K8_3, key9: K9_2, key10: K10_1, key11: K11): IFunctionResolver<Curried11<TFn_10>>;
21
+ curry12<TFn_11 extends (...args: any[]) => any, K1_11 extends PropsOfType<T, Param1<Parameters<TFn_11>>>, K2_10 extends PropsOfType<T, Param1<import("./curry.generated").Tail1<Parameters<TFn_11>>>>, K3_9 extends PropsOfType<T, Param1<import("./curry.generated").Tail2<Parameters<TFn_11>>>>, K4_8 extends PropsOfType<T, Param1<import("./curry.generated").Tail3<Parameters<TFn_11>>>>, K5_7 extends PropsOfType<T, Param1<import("./curry.generated").Tail4<Parameters<TFn_11>>>>, K6_6 extends PropsOfType<T, Param1<import("./curry.generated").Tail5<Parameters<TFn_11>>>>, K7_5 extends PropsOfType<T, Param1<import("./curry.generated").Tail6<Parameters<TFn_11>>>>, K8_4 extends PropsOfType<T, Param1<import("./curry.generated").Tail7<Parameters<TFn_11>>>>, K9_3 extends PropsOfType<T, Param1<import("./curry.generated").Tail8<Parameters<TFn_11>>>>, K10_2 extends PropsOfType<T, Param1<import("./curry.generated").Tail9<Parameters<TFn_11>>>>, K11_1 extends PropsOfType<T, Param1<import("./curry.generated").Tail10<Parameters<TFn_11>>>>, K12 extends PropsOfType<T, Param1<import("./curry.generated").Tail11<Parameters<TFn_11>>>>>(fn: TFn_11, key1: K1_11, key2: K2_10, key3: K3_9, key4: K4_8, key5: K5_7, key6: K6_6, key7: K7_5, key8: K8_4, key9: K9_3, key10: K10_2, key11: K11_1, key12: K12): IFunctionResolver<Curried12<TFn_11>>;
22
+ curry13<TFn_12 extends (...args: any[]) => any, K1_12 extends PropsOfType<T, Param1<Parameters<TFn_12>>>, K2_11 extends PropsOfType<T, Param1<import("./curry.generated").Tail1<Parameters<TFn_12>>>>, K3_10 extends PropsOfType<T, Param1<import("./curry.generated").Tail2<Parameters<TFn_12>>>>, K4_9 extends PropsOfType<T, Param1<import("./curry.generated").Tail3<Parameters<TFn_12>>>>, K5_8 extends PropsOfType<T, Param1<import("./curry.generated").Tail4<Parameters<TFn_12>>>>, K6_7 extends PropsOfType<T, Param1<import("./curry.generated").Tail5<Parameters<TFn_12>>>>, K7_6 extends PropsOfType<T, Param1<import("./curry.generated").Tail6<Parameters<TFn_12>>>>, K8_5 extends PropsOfType<T, Param1<import("./curry.generated").Tail7<Parameters<TFn_12>>>>, K9_4 extends PropsOfType<T, Param1<import("./curry.generated").Tail8<Parameters<TFn_12>>>>, K10_3 extends PropsOfType<T, Param1<import("./curry.generated").Tail9<Parameters<TFn_12>>>>, K11_2 extends PropsOfType<T, Param1<import("./curry.generated").Tail10<Parameters<TFn_12>>>>, K12_1 extends PropsOfType<T, Param1<import("./curry.generated").Tail11<Parameters<TFn_12>>>>, K13 extends PropsOfType<T, Param1<import("./curry.generated").Tail12<Parameters<TFn_12>>>>>(fn: TFn_12, key1: K1_12, key2: K2_11, key3: K3_10, key4: K4_9, key5: K5_8, key6: K6_7, key7: K7_6, key8: K8_5, key9: K9_4, key10: K10_3, key11: K11_2, key12: K12_1, key13: K13): IFunctionResolver<Curried13<TFn_12>>;
23
+ curry14<TFn_13 extends (...args: any[]) => any, K1_13 extends PropsOfType<T, Param1<Parameters<TFn_13>>>, K2_12 extends PropsOfType<T, Param1<import("./curry.generated").Tail1<Parameters<TFn_13>>>>, K3_11 extends PropsOfType<T, Param1<import("./curry.generated").Tail2<Parameters<TFn_13>>>>, K4_10 extends PropsOfType<T, Param1<import("./curry.generated").Tail3<Parameters<TFn_13>>>>, K5_9 extends PropsOfType<T, Param1<import("./curry.generated").Tail4<Parameters<TFn_13>>>>, K6_8 extends PropsOfType<T, Param1<import("./curry.generated").Tail5<Parameters<TFn_13>>>>, K7_7 extends PropsOfType<T, Param1<import("./curry.generated").Tail6<Parameters<TFn_13>>>>, K8_6 extends PropsOfType<T, Param1<import("./curry.generated").Tail7<Parameters<TFn_13>>>>, K9_5 extends PropsOfType<T, Param1<import("./curry.generated").Tail8<Parameters<TFn_13>>>>, K10_4 extends PropsOfType<T, Param1<import("./curry.generated").Tail9<Parameters<TFn_13>>>>, K11_3 extends PropsOfType<T, Param1<import("./curry.generated").Tail10<Parameters<TFn_13>>>>, K12_2 extends PropsOfType<T, Param1<import("./curry.generated").Tail11<Parameters<TFn_13>>>>, K13_1 extends PropsOfType<T, Param1<import("./curry.generated").Tail12<Parameters<TFn_13>>>>, K14 extends PropsOfType<T, Param1<import("./curry.generated").Tail13<Parameters<TFn_13>>>>>(fn: TFn_13, key1: K1_13, key2: K2_12, key3: K3_11, key4: K4_10, key5: K5_9, key6: K6_8, key7: K7_7, key8: K8_6, key9: K9_5, key10: K10_4, key11: K11_3, key12: K12_2, key13: K13_1, key14: K14): IFunctionResolver<Curried14<TFn_13>>;
24
+ curry15<TFn_14 extends (...args: any[]) => any, K1_14 extends PropsOfType<T, Param1<Parameters<TFn_14>>>, K2_13 extends PropsOfType<T, Param1<import("./curry.generated").Tail1<Parameters<TFn_14>>>>, K3_12 extends PropsOfType<T, Param1<import("./curry.generated").Tail2<Parameters<TFn_14>>>>, K4_11 extends PropsOfType<T, Param1<import("./curry.generated").Tail3<Parameters<TFn_14>>>>, K5_10 extends PropsOfType<T, Param1<import("./curry.generated").Tail4<Parameters<TFn_14>>>>, K6_9 extends PropsOfType<T, Param1<import("./curry.generated").Tail5<Parameters<TFn_14>>>>, K7_8 extends PropsOfType<T, Param1<import("./curry.generated").Tail6<Parameters<TFn_14>>>>, K8_7 extends PropsOfType<T, Param1<import("./curry.generated").Tail7<Parameters<TFn_14>>>>, K9_6 extends PropsOfType<T, Param1<import("./curry.generated").Tail8<Parameters<TFn_14>>>>, K10_5 extends PropsOfType<T, Param1<import("./curry.generated").Tail9<Parameters<TFn_14>>>>, K11_4 extends PropsOfType<T, Param1<import("./curry.generated").Tail10<Parameters<TFn_14>>>>, K12_3 extends PropsOfType<T, Param1<import("./curry.generated").Tail11<Parameters<TFn_14>>>>, K13_2 extends PropsOfType<T, Param1<import("./curry.generated").Tail12<Parameters<TFn_14>>>>, K14_1 extends PropsOfType<T, Param1<import("./curry.generated").Tail13<Parameters<TFn_14>>>>, K15 extends PropsOfType<T, Param1<import("./curry.generated").Tail14<Parameters<TFn_14>>>>>(fn: TFn_14, key1: K1_14, key2: K2_13, key3: K3_12, key4: K4_11, key5: K5_10, key6: K6_9, key7: K7_8, key8: K8_7, key9: K9_6, key10: K10_5, key11: K11_4, key12: K12_3, key13: K13_2, key14: K14_1, key15: K15): IFunctionResolver<Curried15<TFn_14>>;
25
+ curry16<TFn_15 extends (...args: any[]) => any, K1_15 extends PropsOfType<T, Param1<Parameters<TFn_15>>>, K2_14 extends PropsOfType<T, Param1<import("./curry.generated").Tail1<Parameters<TFn_15>>>>, K3_13 extends PropsOfType<T, Param1<import("./curry.generated").Tail2<Parameters<TFn_15>>>>, K4_12 extends PropsOfType<T, Param1<import("./curry.generated").Tail3<Parameters<TFn_15>>>>, K5_11 extends PropsOfType<T, Param1<import("./curry.generated").Tail4<Parameters<TFn_15>>>>, K6_10 extends PropsOfType<T, Param1<import("./curry.generated").Tail5<Parameters<TFn_15>>>>, K7_9 extends PropsOfType<T, Param1<import("./curry.generated").Tail6<Parameters<TFn_15>>>>, K8_8 extends PropsOfType<T, Param1<import("./curry.generated").Tail7<Parameters<TFn_15>>>>, K9_7 extends PropsOfType<T, Param1<import("./curry.generated").Tail8<Parameters<TFn_15>>>>, K10_6 extends PropsOfType<T, Param1<import("./curry.generated").Tail9<Parameters<TFn_15>>>>, K11_5 extends PropsOfType<T, Param1<import("./curry.generated").Tail10<Parameters<TFn_15>>>>, K12_4 extends PropsOfType<T, Param1<import("./curry.generated").Tail11<Parameters<TFn_15>>>>, K13_3 extends PropsOfType<T, Param1<import("./curry.generated").Tail12<Parameters<TFn_15>>>>, K14_2 extends PropsOfType<T, Param1<import("./curry.generated").Tail13<Parameters<TFn_15>>>>, K15_1 extends PropsOfType<T, Param1<import("./curry.generated").Tail14<Parameters<TFn_15>>>>, K16 extends PropsOfType<T, Param1<import("./curry.generated").Tail15<Parameters<TFn_15>>>>>(fn: TFn_15, key1: K1_15, key2: K2_14, key3: K3_13, key4: K4_12, key5: K5_11, key6: K6_10, key7: K7_9, key8: K8_8, key9: K9_7, key10: K10_6, key11: K11_5, key12: K12_4, key13: K13_3, key14: K14_2, key15: K15_1, key16: K16): IFunctionResolver<Curried16<TFn_15>>;
26
+ curry17<TFn_16 extends (...args: any[]) => any, K1_16 extends PropsOfType<T, Param1<Parameters<TFn_16>>>, K2_15 extends PropsOfType<T, Param1<import("./curry.generated").Tail1<Parameters<TFn_16>>>>, K3_14 extends PropsOfType<T, Param1<import("./curry.generated").Tail2<Parameters<TFn_16>>>>, K4_13 extends PropsOfType<T, Param1<import("./curry.generated").Tail3<Parameters<TFn_16>>>>, K5_12 extends PropsOfType<T, Param1<import("./curry.generated").Tail4<Parameters<TFn_16>>>>, K6_11 extends PropsOfType<T, Param1<import("./curry.generated").Tail5<Parameters<TFn_16>>>>, K7_10 extends PropsOfType<T, Param1<import("./curry.generated").Tail6<Parameters<TFn_16>>>>, K8_9 extends PropsOfType<T, Param1<import("./curry.generated").Tail7<Parameters<TFn_16>>>>, K9_8 extends PropsOfType<T, Param1<import("./curry.generated").Tail8<Parameters<TFn_16>>>>, K10_7 extends PropsOfType<T, Param1<import("./curry.generated").Tail9<Parameters<TFn_16>>>>, K11_6 extends PropsOfType<T, Param1<import("./curry.generated").Tail10<Parameters<TFn_16>>>>, K12_5 extends PropsOfType<T, Param1<import("./curry.generated").Tail11<Parameters<TFn_16>>>>, K13_4 extends PropsOfType<T, Param1<import("./curry.generated").Tail12<Parameters<TFn_16>>>>, K14_3 extends PropsOfType<T, Param1<import("./curry.generated").Tail13<Parameters<TFn_16>>>>, K15_2 extends PropsOfType<T, Param1<import("./curry.generated").Tail14<Parameters<TFn_16>>>>, K16_1 extends PropsOfType<T, Param1<import("./curry.generated").Tail15<Parameters<TFn_16>>>>, K17 extends PropsOfType<T, Param1<import("./curry.generated").Tail16<Parameters<TFn_16>>>>>(fn: TFn_16, key1: K1_16, key2: K2_15, key3: K3_14, key4: K4_13, key5: K5_12, key6: K6_11, key7: K7_10, key8: K8_9, key9: K9_8, key10: K10_7, key11: K11_6, key12: K12_5, key13: K13_4, key14: K14_3, key15: K15_2, key16: K16_1, key17: K17): IFunctionResolver<Curried17<TFn_16>>;
27
+ curry18<TFn_17 extends (...args: any[]) => any, K1_17 extends PropsOfType<T, Param1<Parameters<TFn_17>>>, K2_16 extends PropsOfType<T, Param1<import("./curry.generated").Tail1<Parameters<TFn_17>>>>, K3_15 extends PropsOfType<T, Param1<import("./curry.generated").Tail2<Parameters<TFn_17>>>>, K4_14 extends PropsOfType<T, Param1<import("./curry.generated").Tail3<Parameters<TFn_17>>>>, K5_13 extends PropsOfType<T, Param1<import("./curry.generated").Tail4<Parameters<TFn_17>>>>, K6_12 extends PropsOfType<T, Param1<import("./curry.generated").Tail5<Parameters<TFn_17>>>>, K7_11 extends PropsOfType<T, Param1<import("./curry.generated").Tail6<Parameters<TFn_17>>>>, K8_10 extends PropsOfType<T, Param1<import("./curry.generated").Tail7<Parameters<TFn_17>>>>, K9_9 extends PropsOfType<T, Param1<import("./curry.generated").Tail8<Parameters<TFn_17>>>>, K10_8 extends PropsOfType<T, Param1<import("./curry.generated").Tail9<Parameters<TFn_17>>>>, K11_7 extends PropsOfType<T, Param1<import("./curry.generated").Tail10<Parameters<TFn_17>>>>, K12_6 extends PropsOfType<T, Param1<import("./curry.generated").Tail11<Parameters<TFn_17>>>>, K13_5 extends PropsOfType<T, Param1<import("./curry.generated").Tail12<Parameters<TFn_17>>>>, K14_4 extends PropsOfType<T, Param1<import("./curry.generated").Tail13<Parameters<TFn_17>>>>, K15_3 extends PropsOfType<T, Param1<import("./curry.generated").Tail14<Parameters<TFn_17>>>>, K16_2 extends PropsOfType<T, Param1<import("./curry.generated").Tail15<Parameters<TFn_17>>>>, K17_1 extends PropsOfType<T, Param1<import("./curry.generated").Tail16<Parameters<TFn_17>>>>, K18 extends PropsOfType<T, Param1<import("./curry.generated").Tail17<Parameters<TFn_17>>>>>(fn: TFn_17, key1: K1_17, key2: K2_16, key3: K3_15, key4: K4_14, key5: K5_13, key6: K6_12, key7: K7_11, key8: K8_10, key9: K9_9, key10: K10_8, key11: K11_7, key12: K12_6, key13: K13_5, key14: K14_4, key15: K15_3, key16: K16_2, key17: K17_1, key18: K18): IFunctionResolver<Curried18<TFn_17>>;
28
+ curry19<TFn_18 extends (...args: any[]) => any, K1_18 extends PropsOfType<T, Param1<Parameters<TFn_18>>>, K2_17 extends PropsOfType<T, Param1<import("./curry.generated").Tail1<Parameters<TFn_18>>>>, K3_16 extends PropsOfType<T, Param1<import("./curry.generated").Tail2<Parameters<TFn_18>>>>, K4_15 extends PropsOfType<T, Param1<import("./curry.generated").Tail3<Parameters<TFn_18>>>>, K5_14 extends PropsOfType<T, Param1<import("./curry.generated").Tail4<Parameters<TFn_18>>>>, K6_13 extends PropsOfType<T, Param1<import("./curry.generated").Tail5<Parameters<TFn_18>>>>, K7_12 extends PropsOfType<T, Param1<import("./curry.generated").Tail6<Parameters<TFn_18>>>>, K8_11 extends PropsOfType<T, Param1<import("./curry.generated").Tail7<Parameters<TFn_18>>>>, K9_10 extends PropsOfType<T, Param1<import("./curry.generated").Tail8<Parameters<TFn_18>>>>, K10_9 extends PropsOfType<T, Param1<import("./curry.generated").Tail9<Parameters<TFn_18>>>>, K11_8 extends PropsOfType<T, Param1<import("./curry.generated").Tail10<Parameters<TFn_18>>>>, K12_7 extends PropsOfType<T, Param1<import("./curry.generated").Tail11<Parameters<TFn_18>>>>, K13_6 extends PropsOfType<T, Param1<import("./curry.generated").Tail12<Parameters<TFn_18>>>>, K14_5 extends PropsOfType<T, Param1<import("./curry.generated").Tail13<Parameters<TFn_18>>>>, K15_4 extends PropsOfType<T, Param1<import("./curry.generated").Tail14<Parameters<TFn_18>>>>, K16_3 extends PropsOfType<T, Param1<import("./curry.generated").Tail15<Parameters<TFn_18>>>>, K17_2 extends PropsOfType<T, Param1<import("./curry.generated").Tail16<Parameters<TFn_18>>>>, K18_1 extends PropsOfType<T, Param1<import("./curry.generated").Tail17<Parameters<TFn_18>>>>, K19 extends PropsOfType<T, Param1<import("./curry.generated").Tail18<Parameters<TFn_18>>>>>(fn: TFn_18, key1: K1_18, key2: K2_17, key3: K3_16, key4: K4_15, key5: K5_14, key6: K6_13, key7: K7_12, key8: K8_11, key9: K9_10, key10: K10_9, key11: K11_8, key12: K12_7, key13: K13_6, key14: K14_5, key15: K15_4, key16: K16_3, key17: K17_2, key18: K18_1, key19: K19): IFunctionResolver<Curried19<TFn_18>>;
29
+ curry20<TFn_19 extends (...args: any[]) => any, K1_19 extends PropsOfType<T, Param1<Parameters<TFn_19>>>, K2_18 extends PropsOfType<T, Param1<import("./curry.generated").Tail1<Parameters<TFn_19>>>>, K3_17 extends PropsOfType<T, Param1<import("./curry.generated").Tail2<Parameters<TFn_19>>>>, K4_16 extends PropsOfType<T, Param1<import("./curry.generated").Tail3<Parameters<TFn_19>>>>, K5_15 extends PropsOfType<T, Param1<import("./curry.generated").Tail4<Parameters<TFn_19>>>>, K6_14 extends PropsOfType<T, Param1<import("./curry.generated").Tail5<Parameters<TFn_19>>>>, K7_13 extends PropsOfType<T, Param1<import("./curry.generated").Tail6<Parameters<TFn_19>>>>, K8_12 extends PropsOfType<T, Param1<import("./curry.generated").Tail7<Parameters<TFn_19>>>>, K9_11 extends PropsOfType<T, Param1<import("./curry.generated").Tail8<Parameters<TFn_19>>>>, K10_10 extends PropsOfType<T, Param1<import("./curry.generated").Tail9<Parameters<TFn_19>>>>, K11_9 extends PropsOfType<T, Param1<import("./curry.generated").Tail10<Parameters<TFn_19>>>>, K12_8 extends PropsOfType<T, Param1<import("./curry.generated").Tail11<Parameters<TFn_19>>>>, K13_7 extends PropsOfType<T, Param1<import("./curry.generated").Tail12<Parameters<TFn_19>>>>, K14_6 extends PropsOfType<T, Param1<import("./curry.generated").Tail13<Parameters<TFn_19>>>>, K15_5 extends PropsOfType<T, Param1<import("./curry.generated").Tail14<Parameters<TFn_19>>>>, K16_4 extends PropsOfType<T, Param1<import("./curry.generated").Tail15<Parameters<TFn_19>>>>, K17_3 extends PropsOfType<T, Param1<import("./curry.generated").Tail16<Parameters<TFn_19>>>>, K18_2 extends PropsOfType<T, Param1<import("./curry.generated").Tail17<Parameters<TFn_19>>>>, K19_1 extends PropsOfType<T, Param1<import("./curry.generated").Tail18<Parameters<TFn_19>>>>, K20 extends PropsOfType<T, Param1<import("./curry.generated").Tail19<Parameters<TFn_19>>>>>(fn: TFn_19, key1: K1_19, key2: K2_18, key3: K3_17, key4: K4_16, key5: K5_15, key6: K6_14, key7: K7_13, key8: K8_12, key9: K9_11, key10: K10_10, key11: K11_9, key12: K12_8, key13: K13_7, key14: K14_6, key15: K15_5, key16: K16_4, key17: K17_3, key18: K18_2, key19: K19_1, key20: K20): IFunctionResolver<Curried20<TFn_19>>;
30
+ };
@@ -0,0 +1,68 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.containerRegisterFunctionResolverInternal = void 0;
4
+ function containerRegisterFunctionResolverInternal(curryInner) {
5
+ return {
6
+ curry1: function (fn, key1) {
7
+ return curryInner(fn, key1);
8
+ },
9
+ curry2: function (fn, key1, key2) {
10
+ return curryInner(fn, key1, key2);
11
+ },
12
+ curry3: function (fn, key1, key2, key3) {
13
+ return curryInner(fn, key1, key2, key3);
14
+ },
15
+ curry4: function (fn, key1, key2, key3, key4) {
16
+ return curryInner(fn, key1, key2, key3, key4);
17
+ },
18
+ curry5: function (fn, key1, key2, key3, key4, key5) {
19
+ return curryInner(fn, key1, key2, key3, key4, key5);
20
+ },
21
+ curry6: function (fn, key1, key2, key3, key4, key5, key6) {
22
+ return curryInner(fn, key1, key2, key3, key4, key5, key6);
23
+ },
24
+ curry7: function (fn, key1, key2, key3, key4, key5, key6, key7) {
25
+ return curryInner(fn, key1, key2, key3, key4, key5, key6, key7);
26
+ },
27
+ curry8: function (fn, key1, key2, key3, key4, key5, key6, key7, key8) {
28
+ return curryInner(fn, key1, key2, key3, key4, key5, key6, key7, key8);
29
+ },
30
+ curry9: function (fn, key1, key2, key3, key4, key5, key6, key7, key8, key9) {
31
+ return curryInner(fn, key1, key2, key3, key4, key5, key6, key7, key8, key9);
32
+ },
33
+ curry10: function (fn, key1, key2, key3, key4, key5, key6, key7, key8, key9, key10) {
34
+ return curryInner(fn, key1, key2, key3, key4, key5, key6, key7, key8, key9, key10);
35
+ },
36
+ curry11: function (fn, key1, key2, key3, key4, key5, key6, key7, key8, key9, key10, key11) {
37
+ return curryInner(fn, key1, key2, key3, key4, key5, key6, key7, key8, key9, key10, key11);
38
+ },
39
+ curry12: function (fn, key1, key2, key3, key4, key5, key6, key7, key8, key9, key10, key11, key12) {
40
+ return curryInner(fn, key1, key2, key3, key4, key5, key6, key7, key8, key9, key10, key11, key12);
41
+ },
42
+ curry13: function (fn, key1, key2, key3, key4, key5, key6, key7, key8, key9, key10, key11, key12, key13) {
43
+ return curryInner(fn, key1, key2, key3, key4, key5, key6, key7, key8, key9, key10, key11, key12, key13);
44
+ },
45
+ curry14: function (fn, key1, key2, key3, key4, key5, key6, key7, key8, key9, key10, key11, key12, key13, key14) {
46
+ return curryInner(fn, key1, key2, key3, key4, key5, key6, key7, key8, key9, key10, key11, key12, key13, key14);
47
+ },
48
+ curry15: function (fn, key1, key2, key3, key4, key5, key6, key7, key8, key9, key10, key11, key12, key13, key14, key15) {
49
+ return curryInner(fn, key1, key2, key3, key4, key5, key6, key7, key8, key9, key10, key11, key12, key13, key14, key15);
50
+ },
51
+ curry16: function (fn, key1, key2, key3, key4, key5, key6, key7, key8, key9, key10, key11, key12, key13, key14, key15, key16) {
52
+ return curryInner(fn, key1, key2, key3, key4, key5, key6, key7, key8, key9, key10, key11, key12, key13, key14, key15, key16);
53
+ },
54
+ curry17: function (fn, key1, key2, key3, key4, key5, key6, key7, key8, key9, key10, key11, key12, key13, key14, key15, key16, key17) {
55
+ return curryInner(fn, key1, key2, key3, key4, key5, key6, key7, key8, key9, key10, key11, key12, key13, key14, key15, key16, key17);
56
+ },
57
+ curry18: function (fn, key1, key2, key3, key4, key5, key6, key7, key8, key9, key10, key11, key12, key13, key14, key15, key16, key17, key18) {
58
+ return curryInner(fn, key1, key2, key3, key4, key5, key6, key7, key8, key9, key10, key11, key12, key13, key14, key15, key16, key17, key18);
59
+ },
60
+ curry19: function (fn, key1, key2, key3, key4, key5, key6, key7, key8, key9, key10, key11, key12, key13, key14, key15, key16, key17, key18, key19) {
61
+ return curryInner(fn, key1, key2, key3, key4, key5, key6, key7, key8, key9, key10, key11, key12, key13, key14, key15, key16, key17, key18, key19);
62
+ },
63
+ curry20: function (fn, key1, key2, key3, key4, key5, key6, key7, key8, key9, key10, key11, key12, key13, key14, key15, key16, key17, key18, key19, key20) {
64
+ return curryInner(fn, key1, key2, key3, key4, key5, key6, key7, key8, key9, key10, key11, key12, key13, key14, key15, key16, key17, key18, key19, key20);
65
+ }
66
+ };
67
+ }
68
+ exports.containerRegisterFunctionResolverInternal = containerRegisterFunctionResolverInternal;
package/package.json CHANGED
@@ -1,9 +1,10 @@
1
1
  {
2
2
  "name": "@rocketmakers/ioc",
3
- "version": "0.1.4",
3
+ "version": "0.2.4",
4
4
  "description": "",
5
5
  "main": "./lib/index.js",
6
6
  "scripts": {
7
+ "start-test": "npm run build && node lib/test.js",
7
8
  "start": "npm run build && node lib/index.js",
8
9
  "build": "tsc -p source",
9
10
  "test": "npm run build && ava --verbose"
@@ -14,12 +15,12 @@
14
15
  "dependencies": {
15
16
  "inversify": "5.0.5",
16
17
  "reflect-metadata": "^0.1.13",
17
- "tslib": "^2.1.0"
18
+ "tslib": "^2.3.1"
18
19
  },
19
20
  "devDependencies": {
20
21
  "@types/node": "^14.14.31",
21
22
  "ava": "^3.15.0",
22
- "typescript": "^4.2.2",
23
+ "typescript": "4.6.3",
23
24
  "typescript-json-schema": "0.43.0"
24
25
  },
25
26
  "publishConfig": {