@forklaunch/core 0.2.37 → 0.3.1
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/lib/{src/database/mikro/models/entities/base.entity.d.ts → base.entity-DNfmMOgd.d.mts} +3 -2
- package/lib/base.entity-DNfmMOgd.d.ts +27 -0
- package/lib/{src/cache/redisTtlCache.d.ts → cache/index.d.mts} +67 -4
- package/lib/cache/index.d.ts +130 -0
- package/lib/cache/index.js +133 -0
- package/lib/cache/index.mjs +105 -0
- package/lib/controllers/index.d.mts +5 -0
- package/lib/controllers/index.d.ts +5 -0
- package/lib/controllers/index.js +18 -0
- package/lib/controllers/index.mjs +0 -0
- package/lib/database/index.d.mts +37 -0
- package/lib/{src/database/mikro/models/entities/mongo.base.entity.d.ts → database/index.d.ts} +5 -2
- package/lib/database/index.js +78 -0
- package/lib/database/index.mjs +53 -0
- package/lib/dtoMapper/index.d.mts +215 -0
- package/lib/dtoMapper/index.d.ts +215 -0
- package/lib/dtoMapper/index.js +235 -0
- package/lib/dtoMapper/index.mjs +213 -0
- package/lib/http/index.d.mts +910 -0
- package/lib/http/index.d.ts +910 -0
- package/lib/http/index.js +2189 -0
- package/lib/http/index.mjs +2134 -0
- package/lib/services/index.d.mts +69 -0
- package/lib/services/index.d.ts +69 -0
- package/lib/services/index.js +244 -0
- package/lib/services/index.mjs +215 -0
- package/package.json +68 -55
- package/lib/src/cache/index.d.ts +0 -5
- package/lib/src/cache/index.d.ts.map +0 -1
- package/lib/src/cache/index.js +0 -4
- package/lib/src/cache/interfaces/ttlCache.interface.d.ts +0 -48
- package/lib/src/cache/interfaces/ttlCache.interface.d.ts.map +0 -1
- package/lib/src/cache/interfaces/ttlCache.interface.js +0 -1
- package/lib/src/cache/redisTtlCache.d.ts.map +0 -1
- package/lib/src/cache/redisTtlCache.js +0 -98
- package/lib/src/cache/types/ttlCacheRecord.types.d.ts +0 -14
- package/lib/src/cache/types/ttlCacheRecord.types.d.ts.map +0 -1
- package/lib/src/cache/types/ttlCacheRecord.types.js +0 -1
- package/lib/src/cache/utils/cacheKey.d.ts +0 -2
- package/lib/src/cache/utils/cacheKey.d.ts.map +0 -1
- package/lib/src/cache/utils/cacheKey.js +0 -3
- package/lib/src/controllers/index.d.ts +0 -2
- package/lib/src/controllers/index.d.ts.map +0 -1
- package/lib/src/controllers/index.js +0 -1
- package/lib/src/controllers/interfaces/controller.interface.d.ts +0 -4
- package/lib/src/controllers/interfaces/controller.interface.d.ts.map +0 -1
- package/lib/src/controllers/interfaces/controller.interface.js +0 -1
- package/lib/src/database/index.d.ts +0 -3
- package/lib/src/database/index.d.ts.map +0 -1
- package/lib/src/database/index.js +0 -2
- package/lib/src/database/mikro/models/entities/base.entity.d.ts.map +0 -1
- package/lib/src/database/mikro/models/entities/base.entity.js +0 -42
- package/lib/src/database/mikro/models/entities/mongo.base.entity.d.ts.map +0 -1
- package/lib/src/database/mikro/models/entities/mongo.base.entity.js +0 -51
- package/lib/src/dtoMapper/index.d.ts +0 -3
- package/lib/src/dtoMapper/index.d.ts.map +0 -1
- package/lib/src/dtoMapper/index.js +0 -2
- package/lib/src/dtoMapper/interfaces/dtoMapper.interface.d.ts +0 -18
- package/lib/src/dtoMapper/interfaces/dtoMapper.interface.d.ts.map +0 -1
- package/lib/src/dtoMapper/interfaces/dtoMapper.interface.js +0 -1
- package/lib/src/dtoMapper/models/baseDtoMapper.model.d.ts +0 -72
- package/lib/src/dtoMapper/models/baseDtoMapper.model.d.ts.map +0 -1
- package/lib/src/dtoMapper/models/baseDtoMapper.model.js +0 -76
- package/lib/src/dtoMapper/models/requestDtoMapper.model.d.ts +0 -68
- package/lib/src/dtoMapper/models/requestDtoMapper.model.d.ts.map +0 -1
- package/lib/src/dtoMapper/models/requestDtoMapper.model.js +0 -71
- package/lib/src/dtoMapper/models/responseDtoMapper.model.d.ts +0 -67
- package/lib/src/dtoMapper/models/responseDtoMapper.model.d.ts.map +0 -1
- package/lib/src/dtoMapper/models/responseDtoMapper.model.js +0 -68
- package/lib/src/dtoMapper/types/dtoMapper.types.d.ts +0 -9
- package/lib/src/dtoMapper/types/dtoMapper.types.d.ts.map +0 -1
- package/lib/src/dtoMapper/types/dtoMapper.types.js +0 -1
- package/lib/src/http/application/expressLikeApplication.d.ts +0 -21
- package/lib/src/http/application/expressLikeApplication.d.ts.map +0 -1
- package/lib/src/http/application/expressLikeApplication.js +0 -21
- package/lib/src/http/guards/isConstrainedForklaunchRouter.d.ts +0 -4
- package/lib/src/http/guards/isConstrainedForklaunchRouter.d.ts.map +0 -1
- package/lib/src/http/guards/isConstrainedForklaunchRouter.js +0 -5
- package/lib/src/http/guards/isExpressLikeSchemaHandler.d.ts +0 -5
- package/lib/src/http/guards/isExpressLikeSchemaHandler.d.ts.map +0 -1
- package/lib/src/http/guards/isExpressLikeSchemaHandler.js +0 -6
- package/lib/src/http/guards/isForklaunchExpressLikeRouter.d.ts +0 -5
- package/lib/src/http/guards/isForklaunchExpressLikeRouter.d.ts.map +0 -1
- package/lib/src/http/guards/isForklaunchExpressLikeRouter.js +0 -6
- package/lib/src/http/guards/isForklaunchRouter.d.ts +0 -4
- package/lib/src/http/guards/isForklaunchRouter.d.ts.map +0 -1
- package/lib/src/http/guards/isForklaunchRouter.js +0 -7
- package/lib/src/http/guards/isHttpContractDetails.d.ts +0 -7
- package/lib/src/http/guards/isHttpContractDetails.d.ts.map +0 -1
- package/lib/src/http/guards/isHttpContractDetails.js +0 -9
- package/lib/src/http/guards/isPathParamContractDetails.d.ts +0 -4
- package/lib/src/http/guards/isPathParamContractDetails.d.ts.map +0 -1
- package/lib/src/http/guards/isPathParamContractDetails.js +0 -10
- package/lib/src/http/guards/isResponseShape.d.ts +0 -3
- package/lib/src/http/guards/isResponseShape.d.ts.map +0 -1
- package/lib/src/http/guards/isResponseShape.js +0 -7
- package/lib/src/http/guards/isTypedHandler.d.ts +0 -5
- package/lib/src/http/guards/isTypedHandler.d.ts.map +0 -1
- package/lib/src/http/guards/isTypedHandler.js +0 -6
- package/lib/src/http/handlers/delete.d.ts +0 -9
- package/lib/src/http/handlers/delete.d.ts.map +0 -1
- package/lib/src/http/handlers/delete.js +0 -4
- package/lib/src/http/handlers/get.d.ts +0 -9
- package/lib/src/http/handlers/get.d.ts.map +0 -1
- package/lib/src/http/handlers/get.js +0 -4
- package/lib/src/http/handlers/head.d.ts +0 -9
- package/lib/src/http/handlers/head.d.ts.map +0 -1
- package/lib/src/http/handlers/head.js +0 -4
- package/lib/src/http/handlers/middleware.d.ts +0 -9
- package/lib/src/http/handlers/middleware.d.ts.map +0 -1
- package/lib/src/http/handlers/middleware.js +0 -4
- package/lib/src/http/handlers/options.d.ts +0 -9
- package/lib/src/http/handlers/options.d.ts.map +0 -1
- package/lib/src/http/handlers/options.js +0 -4
- package/lib/src/http/handlers/patch.d.ts +0 -9
- package/lib/src/http/handlers/patch.d.ts.map +0 -1
- package/lib/src/http/handlers/patch.js +0 -4
- package/lib/src/http/handlers/post.d.ts +0 -9
- package/lib/src/http/handlers/post.d.ts.map +0 -1
- package/lib/src/http/handlers/post.js +0 -4
- package/lib/src/http/handlers/put.d.ts +0 -9
- package/lib/src/http/handlers/put.d.ts.map +0 -1
- package/lib/src/http/handlers/put.js +0 -4
- package/lib/src/http/handlers/trace.d.ts +0 -9
- package/lib/src/http/handlers/trace.d.ts.map +0 -1
- package/lib/src/http/handlers/trace.js +0 -4
- package/lib/src/http/handlers/typedAuthHandler.d.ts +0 -5
- package/lib/src/http/handlers/typedAuthHandler.d.ts.map +0 -1
- package/lib/src/http/handlers/typedAuthHandler.js +0 -3
- package/lib/src/http/handlers/typedHandler.d.ts +0 -21
- package/lib/src/http/handlers/typedHandler.d.ts.map +0 -1
- package/lib/src/http/handlers/typedHandler.js +0 -30
- package/lib/src/http/index.d.ts +0 -23
- package/lib/src/http/index.d.ts.map +0 -1
- package/lib/src/http/index.js +0 -22
- package/lib/src/http/interfaces/expressLikeRouter.interface.d.ts +0 -24
- package/lib/src/http/interfaces/expressLikeRouter.interface.d.ts.map +0 -1
- package/lib/src/http/interfaces/expressLikeRouter.interface.js +0 -1
- package/lib/src/http/middleware/request/auth.middleware.d.ts +0 -16
- package/lib/src/http/middleware/request/auth.middleware.d.ts.map +0 -1
- package/lib/src/http/middleware/request/auth.middleware.js +0 -143
- package/lib/src/http/middleware/request/cors.middleware.d.ts +0 -13
- package/lib/src/http/middleware/request/cors.middleware.d.ts.map +0 -1
- package/lib/src/http/middleware/request/cors.middleware.js +0 -15
- package/lib/src/http/middleware/request/createContext.middleware.d.ts +0 -15
- package/lib/src/http/middleware/request/createContext.middleware.d.ts.map +0 -1
- package/lib/src/http/middleware/request/createContext.middleware.js +0 -26
- package/lib/src/http/middleware/request/enrichDetails.middleware.d.ts +0 -15
- package/lib/src/http/middleware/request/enrichDetails.middleware.d.ts.map +0 -1
- package/lib/src/http/middleware/request/enrichDetails.middleware.js +0 -19
- package/lib/src/http/middleware/request/parse.middleware.d.ts +0 -17
- package/lib/src/http/middleware/request/parse.middleware.d.ts.map +0 -1
- package/lib/src/http/middleware/request/parse.middleware.js +0 -43
- package/lib/src/http/middleware/response/parse.middleware.d.ts +0 -31
- package/lib/src/http/middleware/response/parse.middleware.d.ts.map +0 -1
- package/lib/src/http/middleware/response/parse.middleware.js +0 -52
- package/lib/src/http/openApiV3Generator/openApiV3Generator.d.ts +0 -14
- package/lib/src/http/openApiV3Generator/openApiV3Generator.d.ts.map +0 -1
- package/lib/src/http/openApiV3Generator/openApiV3Generator.js +0 -169
- package/lib/src/http/router/expressLikeRouter.d.ts +0 -138
- package/lib/src/http/router/expressLikeRouter.d.ts.map +0 -1
- package/lib/src/http/router/expressLikeRouter.js +0 -483
- package/lib/src/http/types/apiDefinition.types.d.ts +0 -260
- package/lib/src/http/types/apiDefinition.types.d.ts.map +0 -1
- package/lib/src/http/types/apiDefinition.types.js +0 -1
- package/lib/src/http/types/contractDetails.types.d.ts +0 -211
- package/lib/src/http/types/contractDetails.types.d.ts.map +0 -1
- package/lib/src/http/types/contractDetails.types.js +0 -1
- package/lib/src/http/types/expressLikeRouter.types.d.ts +0 -51
- package/lib/src/http/types/expressLikeRouter.types.d.ts.map +0 -1
- package/lib/src/http/types/expressLikeRouter.types.js +0 -1
- package/lib/src/http/types/router.types.d.ts +0 -32
- package/lib/src/http/types/router.types.d.ts.map +0 -1
- package/lib/src/http/types/router.types.js +0 -1
- package/lib/src/http/types/typedHandler.types.d.ts +0 -10
- package/lib/src/http/types/typedHandler.types.d.ts.map +0 -1
- package/lib/src/http/types/typedHandler.types.js +0 -1
- package/lib/src/http/utils/enrichExpressLikeSend.d.ts +0 -32
- package/lib/src/http/utils/enrichExpressLikeSend.d.ts.map +0 -1
- package/lib/src/http/utils/enrichExpressLikeSend.js +0 -50
- package/lib/src/http/utils/httpStatusCodes.d.ts +0 -75
- package/lib/src/http/utils/httpStatusCodes.d.ts.map +0 -1
- package/lib/src/http/utils/httpStatusCodes.js +0 -1039
- package/lib/src/services/configInjector.d.ts +0 -21
- package/lib/src/services/configInjector.d.ts.map +0 -1
- package/lib/src/services/configInjector.js +0 -90
- package/lib/src/services/index.d.ts +0 -5
- package/lib/src/services/index.d.ts.map +0 -1
- package/lib/src/services/index.js +0 -4
- package/lib/src/services/interfaces/baseService.d.ts +0 -15
- package/lib/src/services/interfaces/baseService.d.ts.map +0 -1
- package/lib/src/services/interfaces/baseService.js +0 -1
- package/lib/src/services/types/configInjector.types.d.ts +0 -25
- package/lib/src/services/types/configInjector.types.d.ts.map +0 -1
- package/lib/src/services/types/configInjector.types.js +0 -6
- package/lib/src/services/types/entityManager.types.d.ts +0 -4
- package/lib/src/services/types/entityManager.types.d.ts.map +0 -1
- package/lib/src/services/types/entityManager.types.js +0 -1
- package/lib/tests/configInjector.test.d.ts +0 -2
- package/lib/tests/configInjector.test.d.ts.map +0 -1
- package/lib/tests/configInjector.test.js +0 -105
- package/lib/tests/dtoMapper.test.d.ts +0 -2
- package/lib/tests/dtoMapper.test.d.ts.map +0 -1
- package/lib/tests/dtoMapper.test.js +0 -170
- package/lib/tests/expressLikeRouterInstantiation.test.d.ts +0 -2
- package/lib/tests/expressLikeRouterInstantiation.test.d.ts.map +0 -1
- package/lib/tests/expressLikeRouterInstantiation.test.js +0 -118
- package/lib/tests/http.middleware.test.d.ts +0 -2
- package/lib/tests/http.middleware.test.d.ts.map +0 -1
- package/lib/tests/http.middleware.test.js +0 -102
- package/lib/tests/openApiV3Generator.test.d.ts +0 -2
- package/lib/tests/openApiV3Generator.test.d.ts.map +0 -1
- package/lib/tests/openApiV3Generator.test.js +0 -66
- package/lib/tests/redisTtlCache.test.d.ts +0 -2
- package/lib/tests/redisTtlCache.test.d.ts.map +0 -1
- package/lib/tests/redisTtlCache.test.js +0 -49
- package/lib/tests/typedHandler.test.d.ts +0 -2
- package/lib/tests/typedHandler.test.d.ts.map +0 -1
- package/lib/tests/typedHandler.test.js +0 -3
- package/lib/vitest.config.d.ts +0 -3
- package/lib/vitest.config.d.ts.map +0 -1
- package/lib/vitest.config.js +0 -7
@@ -1,21 +0,0 @@
|
|
1
|
-
import { AnySchemaValidator, ParseResult } from '@forklaunch/validator';
|
2
|
-
import { ConfigValidator, Constructed, ResolvedConfigValidator, Singleton } from './types/configInjector.types';
|
3
|
-
export declare class ConfigInjector<SV extends AnySchemaValidator, CV extends ConfigValidator<SV>> {
|
4
|
-
private schemaValidator;
|
5
|
-
private configShapes;
|
6
|
-
private dependenciesDefinition;
|
7
|
-
instances: {
|
8
|
-
[K in keyof CV]?: ResolvedConfigValidator<SV, CV>[K];
|
9
|
-
};
|
10
|
-
private loadSingletons;
|
11
|
-
private resolveInstance;
|
12
|
-
constructor(schemaValidator: SV, configShapes: CV, dependenciesDefinition: {
|
13
|
-
[K in keyof CV]: Singleton<ResolvedConfigValidator<SV, CV>[K]> | Constructed<Omit<ResolvedConfigValidator<SV, CV>, K>, ResolvedConfigValidator<SV, CV>[K]>;
|
14
|
-
});
|
15
|
-
validateConfigSingletons(config: Partial<ResolvedConfigValidator<SV, CV>>): ParseResult<unknown>;
|
16
|
-
resolve<T extends keyof CV>(token: T, context?: Record<string, unknown>, resolutionPath?: (keyof CV)[]): ResolvedConfigValidator<SV, CV>[T];
|
17
|
-
scopedResolver<T extends keyof CV>(token: T, context?: Record<string, unknown>, resolutionPath?: (keyof CV)[]): (scope?: ConfigInjector<SV, CV>) => ResolvedConfigValidator<SV, CV>[T];
|
18
|
-
createScope(): ConfigInjector<SV, CV>;
|
19
|
-
dispose(): void;
|
20
|
-
}
|
21
|
-
//# sourceMappingURL=configInjector.d.ts.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"configInjector.d.ts","sourceRoot":"","sources":["../../../src/services/configInjector.ts"],"names":[],"mappings":"AACA,OAAO,EACL,kBAAkB,EAClB,WAAW,EAEZ,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,eAAe,EACf,WAAW,EAEX,uBAAuB,EACvB,SAAS,EACV,MAAM,8BAA8B,CAAC;AAEtC,qBAAa,cAAc,CACzB,EAAE,SAAS,kBAAkB,EAC7B,EAAE,SAAS,eAAe,CAAC,EAAE,CAAC;IAgE5B,OAAO,CAAC,eAAe;IACvB,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,sBAAsB;IAhEhC,SAAS,EAAE;SACR,CAAC,IAAI,MAAM,EAAE,CAAC,CAAC,EAAE,uBAAuB,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;KACrD,CAAM;IAEP,OAAO,CAAC,cAAc;IAStB,OAAO,CAAC,eAAe;gBAiDb,eAAe,EAAE,EAAE,EACnB,YAAY,EAAE,EAAE,EAChB,sBAAsB,EAAE;SAC7B,CAAC,IAAI,MAAM,EAAE,GACV,SAAS,CAAC,uBAAuB,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAC7C,WAAW,CACT,IAAI,CAAC,uBAAuB,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EACxC,uBAAuB,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CACnC;KACN;IAKH,wBAAwB,CACtB,MAAM,EAAE,OAAO,CAAC,uBAAuB,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,GAC/C,WAAW,CAAC,OAAO,CAAC;IAgBvB,OAAO,CAAC,CAAC,SAAS,MAAM,EAAE,EACxB,KAAK,EAAE,CAAC,EACR,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACjC,cAAc,GAAE,CAAC,MAAM,EAAE,CAAC,EAAO,GAChC,uBAAuB,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;IA2CrC,cAAc,CAAC,CAAC,SAAS,MAAM,EAAE,EAC/B,KAAK,EAAE,CAAC,EACR,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACjC,cAAc,GAAE,CAAC,MAAM,EAAE,CAAC,EAAO,GAChC,CAAC,KAAK,CAAC,EAAE,cAAc,CAAC,EAAE,EAAE,EAAE,CAAC,KAAK,uBAAuB,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;IAKzE,WAAW,IAAI,cAAc,CAAC,EAAE,EAAE,EAAE,CAAC;IAQrC,OAAO,IAAI,IAAI;CAIhB"}
|
@@ -1,90 +0,0 @@
|
|
1
|
-
import { extractArgumentNames, isNever } from '@forklaunch/common';
|
2
|
-
import { Lifetime } from './types/configInjector.types';
|
3
|
-
export class ConfigInjector {
|
4
|
-
schemaValidator;
|
5
|
-
configShapes;
|
6
|
-
dependenciesDefinition;
|
7
|
-
instances = {};
|
8
|
-
loadSingletons() {
|
9
|
-
for (const token in this.dependenciesDefinition) {
|
10
|
-
const definition = this.dependenciesDefinition[token];
|
11
|
-
if (definition.lifetime === Lifetime.Singleton) {
|
12
|
-
this.instances[token] = definition.value;
|
13
|
-
}
|
14
|
-
}
|
15
|
-
}
|
16
|
-
resolveInstance(token, definition, context, resolutionPath = []) {
|
17
|
-
const injectorArgument = extractArgumentNames(definition.factory)[0];
|
18
|
-
// short circuit as no args
|
19
|
-
if (injectorArgument === '_args') {
|
20
|
-
return definition.factory({}, this.resolve.bind(this), context ?? {});
|
21
|
-
}
|
22
|
-
if (!injectorArgument.startsWith('{') || !injectorArgument.endsWith('}')) {
|
23
|
-
throw new Error(`Invalid injector argument for ${String(token)}: ${injectorArgument}. Please use object destructuring syntax: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment.`);
|
24
|
-
}
|
25
|
-
const resolvedArguments = Object.fromEntries(injectorArgument
|
26
|
-
.replace('{', '')
|
27
|
-
.replace('}', '')
|
28
|
-
.split(',')
|
29
|
-
.map((arg) => arg.split(':')[0].trim())
|
30
|
-
.map((arg) => {
|
31
|
-
const newResolutionPath = [...resolutionPath, token];
|
32
|
-
if (resolutionPath.includes(arg)) {
|
33
|
-
throw new Error(`Circular dependency detected: ${newResolutionPath.join(' -> ')} -> ${arg}`);
|
34
|
-
}
|
35
|
-
const resolvedArg = this.resolve(arg, context, newResolutionPath);
|
36
|
-
return [arg, resolvedArg];
|
37
|
-
}));
|
38
|
-
return definition.factory(resolvedArguments, this.resolve.bind(this), context ?? {});
|
39
|
-
}
|
40
|
-
constructor(schemaValidator, configShapes, dependenciesDefinition) {
|
41
|
-
this.schemaValidator = schemaValidator;
|
42
|
-
this.configShapes = configShapes;
|
43
|
-
this.dependenciesDefinition = dependenciesDefinition;
|
44
|
-
this.loadSingletons();
|
45
|
-
}
|
46
|
-
validateConfigSingletons(config) {
|
47
|
-
return this.schemaValidator.parse(this.schemaValidator.schemify(Object.fromEntries(Object.entries(this.configShapes).filter(([key, value]) => this.dependenciesDefinition[key].lifetime ===
|
48
|
-
Lifetime.Singleton &&
|
49
|
-
this.schemaValidator.isSchema(value)))), config);
|
50
|
-
}
|
51
|
-
resolve(token, context, resolutionPath = []) {
|
52
|
-
const instance = this.instances[token];
|
53
|
-
if (!instance) {
|
54
|
-
const definition = this.dependenciesDefinition[token];
|
55
|
-
if (!definition) {
|
56
|
-
throw new Error(`Unable to resolve dependency ${String(token)}`);
|
57
|
-
}
|
58
|
-
switch (definition.lifetime) {
|
59
|
-
case Lifetime.Singleton: {
|
60
|
-
return definition.value;
|
61
|
-
}
|
62
|
-
case Lifetime.Scoped: {
|
63
|
-
const scopedInstance = this.resolveInstance(token, definition, context, resolutionPath);
|
64
|
-
this.instances[token] = scopedInstance;
|
65
|
-
return scopedInstance;
|
66
|
-
}
|
67
|
-
case Lifetime.Transient: {
|
68
|
-
return this.resolveInstance(token, definition, context, resolutionPath);
|
69
|
-
}
|
70
|
-
default: {
|
71
|
-
isNever(definition);
|
72
|
-
throw new Error(`Unable to resolve lifetime for dependency ${String(token)}, ${resolutionPath}`);
|
73
|
-
}
|
74
|
-
}
|
75
|
-
}
|
76
|
-
else {
|
77
|
-
return instance;
|
78
|
-
}
|
79
|
-
}
|
80
|
-
scopedResolver(token, context, resolutionPath = []) {
|
81
|
-
return (scope) => (scope ?? this.createScope()).resolve(token, context, resolutionPath);
|
82
|
-
}
|
83
|
-
createScope() {
|
84
|
-
return new ConfigInjector(this.schemaValidator, this.configShapes, this.dependenciesDefinition);
|
85
|
-
}
|
86
|
-
dispose() {
|
87
|
-
this.instances = {};
|
88
|
-
this.loadSingletons();
|
89
|
-
}
|
90
|
-
}
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,0BAA0B,CAAC;AACzC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,6BAA6B,CAAC"}
|
@@ -1,15 +0,0 @@
|
|
1
|
-
import { EntityManager } from '@mikro-orm/core';
|
2
|
-
/**
|
3
|
-
* Interface representing a base service.
|
4
|
-
*
|
5
|
-
* @interface BaseService
|
6
|
-
*/
|
7
|
-
export interface BaseService {
|
8
|
-
/**
|
9
|
-
* The EntityManager instance for managing entities.
|
10
|
-
*
|
11
|
-
* @type {EntityManager}
|
12
|
-
*/
|
13
|
-
em: EntityManager;
|
14
|
-
}
|
15
|
-
//# sourceMappingURL=baseService.d.ts.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"baseService.d.ts","sourceRoot":"","sources":["../../../../src/services/interfaces/baseService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD;;;;GAIG;AACH,MAAM,WAAW,WAAW;IAC1B;;;;OAIG;IACH,EAAE,EAAE,aAAa,CAAC;CACnB"}
|
@@ -1 +0,0 @@
|
|
1
|
-
export {};
|
@@ -1,25 +0,0 @@
|
|
1
|
-
import { AnySchemaValidator, IdiomaticSchema, Schema } from '@forklaunch/validator';
|
2
|
-
import { ConfigInjector } from '../configInjector';
|
3
|
-
export declare enum Lifetime {
|
4
|
-
Singleton = 0,
|
5
|
-
Transient = 1,
|
6
|
-
Scoped = 2
|
7
|
-
}
|
8
|
-
export type Singleton<Value> = {
|
9
|
-
lifetime: Lifetime.Singleton;
|
10
|
-
value: Value;
|
11
|
-
};
|
12
|
-
export type Constructed<Args, Return> = {
|
13
|
-
lifetime: Lifetime.Transient | Lifetime.Scoped;
|
14
|
-
factory: (args: Args, resolve: <T extends keyof Args>(token: T, context?: Record<string, unknown>) => Args[T], context: Record<string, unknown>) => Return;
|
15
|
-
};
|
16
|
-
export type Constructor = new (...args: never[]) => unknown;
|
17
|
-
export type SchemaConstructor<SV extends AnySchemaValidator> = new (...args: unknown[]) => IdiomaticSchema<SV>;
|
18
|
-
export type Function = (...args: never[]) => unknown;
|
19
|
-
export type SchemaFunction<SV extends AnySchemaValidator> = (args: unknown) => IdiomaticSchema<SV>;
|
20
|
-
export type ConfigValidator<SV extends AnySchemaValidator> = Record<string, Function | SchemaFunction<SV> | Constructor | SchemaConstructor<SV> | IdiomaticSchema<SV>>;
|
21
|
-
export type ResolvedConfigValidator<SV extends AnySchemaValidator, CV extends ConfigValidator<SV>> = {
|
22
|
-
[M in keyof CV]: CV[M] extends SchemaConstructor<SV> ? Schema<InstanceType<CV[M]>, SV> : CV[M] extends SchemaFunction<SV> ? Schema<ReturnType<CV[M]>, SV> : CV[M] extends Function ? ReturnType<CV[M]> : CV[M] extends Constructor ? InstanceType<CV[M]> : Schema<CV[M], SV>;
|
23
|
-
};
|
24
|
-
export type ScopedDependencyFactory<SV extends AnySchemaValidator, CV extends ConfigValidator<SV>, M extends keyof CV> = (scope?: ConfigInjector<SV, CV>) => ResolvedConfigValidator<SV, CV>[M];
|
25
|
-
//# sourceMappingURL=configInjector.types.d.ts.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"configInjector.types.d.ts","sourceRoot":"","sources":["../../../../src/services/types/configInjector.types.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,eAAe,EACf,MAAM,EACP,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,oBAAY,QAAQ;IAClB,SAAS,IAAA;IACT,SAAS,IAAA;IACT,MAAM,IAAA;CACP;AAED,MAAM,MAAM,SAAS,CAAC,KAAK,IAAI;IAC7B,QAAQ,EAAE,QAAQ,CAAC,SAAS,CAAC;IAC7B,KAAK,EAAE,KAAK,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,WAAW,CAAC,IAAI,EAAE,MAAM,IAAI;IACtC,QAAQ,EAAE,QAAQ,CAAC,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAC;IAC/C,OAAO,EAAE,CACP,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,CAAC,CAAC,SAAS,MAAM,IAAI,EAC5B,KAAK,EAAE,CAAC,EACR,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC9B,IAAI,CAAC,CAAC,CAAC,EACZ,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC7B,MAAM,CAAC;CACb,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG,KAAK,GAAG,IAAI,EAAE,KAAK,EAAE,KAAK,OAAO,CAAC;AAC5D,MAAM,MAAM,iBAAiB,CAAC,EAAE,SAAS,kBAAkB,IAAI,KAC7D,GAAG,IAAI,EAAE,OAAO,EAAE,KACf,eAAe,CAAC,EAAE,CAAC,CAAC;AACzB,MAAM,MAAM,QAAQ,GAAG,CAAC,GAAG,IAAI,EAAE,KAAK,EAAE,KAAK,OAAO,CAAC;AACrD,MAAM,MAAM,cAAc,CAAC,EAAE,SAAS,kBAAkB,IAAI,CAC1D,IAAI,EAAE,OAAO,KACV,eAAe,CAAC,EAAE,CAAC,CAAC;AAEzB,MAAM,MAAM,eAAe,CAAC,EAAE,SAAS,kBAAkB,IAAI,MAAM,CACjE,MAAM,EACJ,QAAQ,GACR,cAAc,CAAC,EAAE,CAAC,GAClB,WAAW,GACX,iBAAiB,CAAC,EAAE,CAAC,GACrB,eAAe,CAAC,EAAE,CAAC,CACtB,CAAC;AAEF,MAAM,MAAM,uBAAuB,CACjC,EAAE,SAAS,kBAAkB,EAC7B,EAAE,SAAS,eAAe,CAAC,EAAE,CAAC,IAC5B;KACD,CAAC,IAAI,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,SAAS,iBAAiB,CAAC,EAAE,CAAC,GAChD,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAC/B,EAAE,CAAC,CAAC,CAAC,SAAS,cAAc,CAAC,EAAE,CAAC,GAC9B,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAC7B,EAAE,CAAC,CAAC,CAAC,SAAS,QAAQ,GACpB,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GACjB,EAAE,CAAC,CAAC,CAAC,SAAS,WAAW,GACvB,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GACnB,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,uBAAuB,CACjC,EAAE,SAAS,kBAAkB,EAC7B,EAAE,SAAS,eAAe,CAAC,EAAE,CAAC,EAC9B,CAAC,SAAS,MAAM,EAAE,IAChB,CAAC,KAAK,CAAC,EAAE,cAAc,CAAC,EAAE,EAAE,EAAE,CAAC,KAAK,uBAAuB,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC"}
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"entityManager.types.d.ts","sourceRoot":"","sources":["../../../../src/services/types/entityManager.types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,OAAO,KAAK,aAAa,CAAC;CACrD,CAAC"}
|
@@ -1 +0,0 @@
|
|
1
|
-
export {};
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"configInjector.test.d.ts","sourceRoot":"","sources":["../../tests/configInjector.test.ts"],"names":[],"mappings":""}
|
@@ -1,105 +0,0 @@
|
|
1
|
-
import { number, SchemaValidator, string } from '@forklaunch/validator/zod';
|
2
|
-
import { ConfigInjector } from '../src/services/configInjector';
|
3
|
-
import { Lifetime } from '../src/services/types/configInjector.types';
|
4
|
-
class X {
|
5
|
-
a;
|
6
|
-
b;
|
7
|
-
constructor(a, b) {
|
8
|
-
this.a = a;
|
9
|
-
this.b = b;
|
10
|
-
}
|
11
|
-
dummy() {
|
12
|
-
return `${this.a}${this.b()}`;
|
13
|
-
}
|
14
|
-
}
|
15
|
-
const configValidator = {
|
16
|
-
a: string,
|
17
|
-
b: number,
|
18
|
-
c: X,
|
19
|
-
d: number,
|
20
|
-
e: number,
|
21
|
-
f: number,
|
22
|
-
g: number
|
23
|
-
};
|
24
|
-
describe('serviceFactory', () => {
|
25
|
-
const configInjector = new ConfigInjector(SchemaValidator(), configValidator, {
|
26
|
-
a: {
|
27
|
-
lifetime: Lifetime.Singleton,
|
28
|
-
value: 'a'
|
29
|
-
},
|
30
|
-
b: {
|
31
|
-
lifetime: Lifetime.Transient,
|
32
|
-
factory: ({ a }) => 5
|
33
|
-
},
|
34
|
-
c: {
|
35
|
-
lifetime: Lifetime.Scoped,
|
36
|
-
factory: ({ a }, resolve, context) => {
|
37
|
-
const b = () => resolve('b') * context.num;
|
38
|
-
return new X(a, b);
|
39
|
-
}
|
40
|
-
},
|
41
|
-
d: {
|
42
|
-
lifetime: Lifetime.Transient,
|
43
|
-
factory: ({ a, e }) => e
|
44
|
-
},
|
45
|
-
e: {
|
46
|
-
lifetime: Lifetime.Transient,
|
47
|
-
factory: ({ f }) => f
|
48
|
-
},
|
49
|
-
f: {
|
50
|
-
lifetime: Lifetime.Transient,
|
51
|
-
factory: ({ d }) => d
|
52
|
-
},
|
53
|
-
g: {
|
54
|
-
lifetime: Lifetime.Transient,
|
55
|
-
factory: (_args) => 6
|
56
|
-
}
|
57
|
-
});
|
58
|
-
test('loadSingletons', () => {
|
59
|
-
expect(configInjector.instances).toEqual({
|
60
|
-
a: 'a'
|
61
|
-
});
|
62
|
-
});
|
63
|
-
test('basicResolve', () => {
|
64
|
-
expect(configInjector.resolve('a')).toBe('a');
|
65
|
-
expect(configInjector.resolve('b')).toBe(5);
|
66
|
-
expect(configInjector
|
67
|
-
.resolve('c', {
|
68
|
-
num: 4
|
69
|
-
})
|
70
|
-
.dummy()).toBe('a20');
|
71
|
-
expect(Object.keys(configInjector.instances)).toEqual(['a', 'c']);
|
72
|
-
});
|
73
|
-
test('circular dependency', () => {
|
74
|
-
expect(() => configInjector.resolve('d')).toThrowErrorMatchingInlineSnapshot('[Error: Circular dependency detected: d -> e -> f -> d]');
|
75
|
-
expect(() => configInjector.resolve('e')).toThrowErrorMatchingInlineSnapshot('[Error: Circular dependency detected: e -> f -> d -> e]');
|
76
|
-
expect(() => {
|
77
|
-
configInjector.resolve('f');
|
78
|
-
}).toThrowErrorMatchingInlineSnapshot('[Error: Circular dependency detected: f -> d -> e -> f]');
|
79
|
-
});
|
80
|
-
test('validateConfigSingletons', () => {
|
81
|
-
expect(configInjector.validateConfigSingletons({
|
82
|
-
a: 'a'
|
83
|
-
}).ok).toBe(true);
|
84
|
-
expect(configInjector.validateConfigSingletons({
|
85
|
-
a: 5
|
86
|
-
}).ok).toBe(false);
|
87
|
-
});
|
88
|
-
test('createScope', () => {
|
89
|
-
const scope = configInjector.createScope();
|
90
|
-
expect(scope).toBeInstanceOf(ConfigInjector);
|
91
|
-
expect(scope.instances).not.toEqual(configInjector.instances);
|
92
|
-
});
|
93
|
-
test('scoped resolver', () => {
|
94
|
-
const scope = configInjector.createScope();
|
95
|
-
scope.resolve('c', {
|
96
|
-
num: 5
|
97
|
-
});
|
98
|
-
expect(configInjector.resolve('c').dummy()).toEqual('a20');
|
99
|
-
expect(configInjector.scopedResolver('c')(scope).dummy()).toEqual('a25');
|
100
|
-
});
|
101
|
-
test('dispose', () => {
|
102
|
-
configInjector.dispose();
|
103
|
-
expect(configInjector.instances).toEqual({ a: 'a' });
|
104
|
-
});
|
105
|
-
});
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"dtoMapper.test.d.ts","sourceRoot":"","sources":["../../tests/dtoMapper.test.ts"],"names":[],"mappings":""}
|
@@ -1,170 +0,0 @@
|
|
1
|
-
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
2
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
3
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
4
|
-
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
5
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
6
|
-
};
|
7
|
-
import { SchemaValidator, number, string } from '@forklaunch/validator/typebox';
|
8
|
-
import { Property } from '@mikro-orm/core';
|
9
|
-
import { BaseEntity } from '../src/database/mikro/models/entities/base.entity';
|
10
|
-
import { RequestDtoMapper } from '../src/dtoMapper/models/requestDtoMapper.model';
|
11
|
-
import { ResponseDtoMapper } from '../src/dtoMapper/models/responseDtoMapper.model';
|
12
|
-
const SV = SchemaValidator();
|
13
|
-
class TestEntity extends BaseEntity {
|
14
|
-
name;
|
15
|
-
age;
|
16
|
-
}
|
17
|
-
__decorate([
|
18
|
-
Property()
|
19
|
-
], TestEntity.prototype, "name", void 0);
|
20
|
-
__decorate([
|
21
|
-
Property()
|
22
|
-
], TestEntity.prototype, "age", void 0);
|
23
|
-
class TestRequestDtoMapper extends RequestDtoMapper {
|
24
|
-
schema = {
|
25
|
-
id: string,
|
26
|
-
name: string,
|
27
|
-
age: number
|
28
|
-
};
|
29
|
-
toEntity(arg1, arg2) {
|
30
|
-
const entity = new TestEntity();
|
31
|
-
entity.id = this.dto.id;
|
32
|
-
entity.name = this.dto.name;
|
33
|
-
entity.age = this.dto.age;
|
34
|
-
return entity;
|
35
|
-
}
|
36
|
-
}
|
37
|
-
class TestResponseDtoMapper extends ResponseDtoMapper {
|
38
|
-
schema = {
|
39
|
-
id: string,
|
40
|
-
name: string,
|
41
|
-
age: number
|
42
|
-
};
|
43
|
-
fromEntity(entity, arg1, arg2) {
|
44
|
-
this.dto = {
|
45
|
-
id: entity.id,
|
46
|
-
name: entity.name,
|
47
|
-
age: entity.age
|
48
|
-
};
|
49
|
-
return this;
|
50
|
-
}
|
51
|
-
}
|
52
|
-
function extractNonTimeBasedEntityFields(entity) {
|
53
|
-
entity.createdAt = new Date(0);
|
54
|
-
entity.updatedAt = new Date(0);
|
55
|
-
return entity;
|
56
|
-
}
|
57
|
-
function genericDtoWrapperFunction(dto) {
|
58
|
-
return dto;
|
59
|
-
}
|
60
|
-
describe('request dtoMapper tests', () => {
|
61
|
-
let TestRequestDM;
|
62
|
-
beforeAll(() => {
|
63
|
-
TestRequestDM = new TestRequestDtoMapper(SV);
|
64
|
-
});
|
65
|
-
test('schema static and constructed equality', async () => {
|
66
|
-
expect(TestRequestDM.schema).toEqual(TestRequestDtoMapper.schema());
|
67
|
-
});
|
68
|
-
test('from JSON', async () => {
|
69
|
-
const json = {
|
70
|
-
id: '123',
|
71
|
-
name: 'test',
|
72
|
-
age: 1
|
73
|
-
};
|
74
|
-
const responseDM = TestRequestDM.fromDto(json);
|
75
|
-
const staticDM = TestRequestDtoMapper.fromDto(SV, json);
|
76
|
-
const expectedDto = {
|
77
|
-
id: '123',
|
78
|
-
name: 'test',
|
79
|
-
age: 1
|
80
|
-
};
|
81
|
-
expect(staticDM.dto).toEqual(expectedDto);
|
82
|
-
expect(responseDM.dto).toEqual(expectedDto);
|
83
|
-
expect(responseDM.dto).toEqual(staticDM.dto);
|
84
|
-
});
|
85
|
-
test('deserialize', async () => {
|
86
|
-
const json = {
|
87
|
-
id: '123',
|
88
|
-
name: 'test',
|
89
|
-
age: 1
|
90
|
-
};
|
91
|
-
const entity = extractNonTimeBasedEntityFields(TestRequestDM.deserializeDtoToEntity(json, 'arg1'));
|
92
|
-
const objectEntity = extractNonTimeBasedEntityFields(TestRequestDM.fromDto(json).toEntity('arg1'));
|
93
|
-
const staticEntity = extractNonTimeBasedEntityFields(TestRequestDtoMapper.deserializeDtoToEntity(SV, json, 'arg1', 'arg2'));
|
94
|
-
let expectedEntity = new TestEntity();
|
95
|
-
expectedEntity.id = '123';
|
96
|
-
expectedEntity.name = 'test';
|
97
|
-
expectedEntity.age = 1;
|
98
|
-
expectedEntity = extractNonTimeBasedEntityFields(expectedEntity);
|
99
|
-
expect(entity).toEqual(expectedEntity);
|
100
|
-
expect(objectEntity).toEqual(expectedEntity);
|
101
|
-
expect(staticEntity).toEqual(expectedEntity);
|
102
|
-
expect(entity).toEqual(objectEntity);
|
103
|
-
expect(entity).toEqual(staticEntity);
|
104
|
-
expect(staticEntity).toEqual(expectedEntity);
|
105
|
-
expect(staticEntity).toEqual(objectEntity);
|
106
|
-
});
|
107
|
-
test('serialize failure', async () => {
|
108
|
-
const json = {
|
109
|
-
id: '123',
|
110
|
-
name: 'test'
|
111
|
-
};
|
112
|
-
// @ts-expect-error
|
113
|
-
expect(() => TestRequestDM.fromDto(json)).toThrow();
|
114
|
-
// @ts-expect-error
|
115
|
-
expect(() => TestRequestDtoMapper.fromDto(SV, json)).toThrow();
|
116
|
-
});
|
117
|
-
});
|
118
|
-
describe('response dtoMapper tests', () => {
|
119
|
-
let TestResponseDM;
|
120
|
-
beforeAll(() => {
|
121
|
-
TestResponseDM = new TestResponseDtoMapper(SV);
|
122
|
-
});
|
123
|
-
test('schema static and constructed equality', async () => {
|
124
|
-
expect(TestResponseDM.schema).toEqual(TestResponseDtoMapper.schema());
|
125
|
-
});
|
126
|
-
test('from entity', async () => {
|
127
|
-
const entity = new TestEntity();
|
128
|
-
entity.id = '123';
|
129
|
-
entity.name = 'test';
|
130
|
-
entity.age = 1;
|
131
|
-
const responseDM = TestResponseDM.fromEntity(entity, 'arg1');
|
132
|
-
const staticDM = TestResponseDtoMapper.fromEntity(SV, entity, 'arg1');
|
133
|
-
const expectedDto = {
|
134
|
-
id: '123',
|
135
|
-
name: 'test',
|
136
|
-
age: 1
|
137
|
-
};
|
138
|
-
expect(staticDM.dto).toEqual(expectedDto);
|
139
|
-
expect(responseDM.dto).toEqual(expectedDto);
|
140
|
-
expect(responseDM.dto).toEqual(staticDM.dto);
|
141
|
-
});
|
142
|
-
test('serialize', async () => {
|
143
|
-
const entity = new TestEntity();
|
144
|
-
entity.id = '123';
|
145
|
-
entity.name = 'test';
|
146
|
-
entity.age = 1;
|
147
|
-
const json = genericDtoWrapperFunction(TestResponseDM.serializeEntityToDto(entity, 'arg1'));
|
148
|
-
const objectJson = genericDtoWrapperFunction(TestResponseDM.fromEntity(entity, 'arg1').toDto());
|
149
|
-
const staticJson = genericDtoWrapperFunction(TestResponseDtoMapper.serializeEntityToDto(SV, entity, 'arg1', 'arg2'));
|
150
|
-
const expectedJson = {
|
151
|
-
id: '123',
|
152
|
-
name: 'test',
|
153
|
-
age: 1
|
154
|
-
};
|
155
|
-
expect(json).toEqual(expectedJson);
|
156
|
-
expect(objectJson).toEqual(expectedJson);
|
157
|
-
expect(staticJson).toEqual(expectedJson);
|
158
|
-
expect(json).toEqual(objectJson);
|
159
|
-
expect(json).toEqual(staticJson);
|
160
|
-
expect(staticJson).toEqual(expectedJson);
|
161
|
-
expect(staticJson).toEqual(objectJson);
|
162
|
-
});
|
163
|
-
test('deserialize failure', async () => {
|
164
|
-
const entity = new TestEntity();
|
165
|
-
entity.id = '123';
|
166
|
-
entity.name = 'test';
|
167
|
-
expect(() => TestResponseDM.fromEntity(entity, 'arg1').toDto()).toThrow();
|
168
|
-
expect(() => TestResponseDtoMapper.fromEntity(SV, entity, 'arg1', 'arg2').toDto()).toThrow();
|
169
|
-
});
|
170
|
-
});
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"expressLikeRouterInstantiation.test.d.ts","sourceRoot":"","sources":["../../tests/expressLikeRouterInstantiation.test.ts"],"names":[],"mappings":""}
|
@@ -1,118 +0,0 @@
|
|
1
|
-
import { date, number, SchemaValidator, string } from '@forklaunch/validator/typebox';
|
2
|
-
import { ForklaunchExpressLikeRouter, typedHandler } from '../src/http';
|
3
|
-
import { typedAuthHandler } from '../src/http/handlers/typedAuthHandler';
|
4
|
-
// TODO: write tests
|
5
|
-
const contractDetails = {
|
6
|
-
name: 'string',
|
7
|
-
summary: 'string',
|
8
|
-
params: {
|
9
|
-
name: string,
|
10
|
-
id: number
|
11
|
-
// a: string
|
12
|
-
},
|
13
|
-
requestHeaders: {
|
14
|
-
'x-test': number
|
15
|
-
},
|
16
|
-
responses: {
|
17
|
-
200: date,
|
18
|
-
400: string
|
19
|
-
}
|
20
|
-
};
|
21
|
-
const kl = typedAuthHandler(SchemaValidator(), contractDetails, (sub, req) => {
|
22
|
-
const j = req?.params.id;
|
23
|
-
const x = req?.headers['x-test'];
|
24
|
-
return new Set(['admin', 'user']);
|
25
|
-
});
|
26
|
-
const xasd = typedHandler(SchemaValidator(), '/test/:name/:id', 'trace', {
|
27
|
-
name: 'string',
|
28
|
-
summary: 'string',
|
29
|
-
params: {
|
30
|
-
name: string,
|
31
|
-
id: number
|
32
|
-
},
|
33
|
-
requestHeaders: {
|
34
|
-
'x-test': number
|
35
|
-
},
|
36
|
-
responses: {
|
37
|
-
200: date,
|
38
|
-
400: string
|
39
|
-
},
|
40
|
-
auth: {
|
41
|
-
method: 'jwt',
|
42
|
-
mapPermissions: kl,
|
43
|
-
// (sub, req) => {
|
44
|
-
// const j = req?.params.id;
|
45
|
-
// return new Set(['admin', 'user']);
|
46
|
-
// },
|
47
|
-
allowedPermissions: new Set(['admin', 'user'])
|
48
|
-
}
|
49
|
-
}, async (req, res) => {
|
50
|
-
// const r = req.params.a;
|
51
|
-
const i = req.headers['x-test'] * 7;
|
52
|
-
const l = res.getHeaders()['x-correlation-id'];
|
53
|
-
}, async (req, res) => {
|
54
|
-
// const r = req.params.a;
|
55
|
-
const i = req.headers['x-test'] * 7;
|
56
|
-
const l = res.getHeaders()['x-correlation-id'];
|
57
|
-
res.status(200).send(new Date());
|
58
|
-
});
|
59
|
-
const xa = new ForklaunchExpressLikeRouter('/l', SchemaValidator(), {
|
60
|
-
use: () => { },
|
61
|
-
get: () => { },
|
62
|
-
post: () => { },
|
63
|
-
put: () => { },
|
64
|
-
delete: () => { },
|
65
|
-
all: () => { },
|
66
|
-
connect: () => { },
|
67
|
-
patch: () => { },
|
68
|
-
options: () => { },
|
69
|
-
head: () => { },
|
70
|
-
trace: () => { }
|
71
|
-
});
|
72
|
-
const bl = xa.trace('/test/:name/:id', {
|
73
|
-
name: 'string',
|
74
|
-
summary: 'string',
|
75
|
-
params: {
|
76
|
-
name: string,
|
77
|
-
id: number
|
78
|
-
// a: string
|
79
|
-
},
|
80
|
-
requestHeaders: {
|
81
|
-
'x-test': number
|
82
|
-
},
|
83
|
-
responses: {
|
84
|
-
200: date,
|
85
|
-
400: string
|
86
|
-
},
|
87
|
-
auth: {
|
88
|
-
method: 'jwt',
|
89
|
-
// mapPermissions: (sub, req) => {
|
90
|
-
// const j = req?.params.id;
|
91
|
-
// return new Set(['admin', 'user']);
|
92
|
-
// },
|
93
|
-
mapPermissions: kl,
|
94
|
-
mapRoles: kl,
|
95
|
-
allowedPermissions: new Set(['admin', 'user'])
|
96
|
-
}
|
97
|
-
}, async (req, res) => {
|
98
|
-
const i = req.headers['x-test'] * 7;
|
99
|
-
const l = res.getHeaders()['x-correlation-id'];
|
100
|
-
res.status(200).send(new Date());
|
101
|
-
});
|
102
|
-
const a = xa.trace('/test/:name/:id', contractDetails, async (req, res) => {
|
103
|
-
// const r = req.params.a;
|
104
|
-
const i = req.headers['x-test'] * 7;
|
105
|
-
const l = res.getHeaders()['x-correlation-id'];
|
106
|
-
}, async (req, res) => {
|
107
|
-
// const r = req.params.a;
|
108
|
-
const i = req.headers['x-test'] * 7;
|
109
|
-
const l = res.getHeaders()['x-correlation-id'];
|
110
|
-
res.status(200).send(new Date());
|
111
|
-
});
|
112
|
-
const b = xa.trace('/test/:name/:id', async (req, res) => {
|
113
|
-
const i = req.headers['x-test'] * 7;
|
114
|
-
const l = res.getHeaders()['x-correlation-id'];
|
115
|
-
res.status(200).send(new Date());
|
116
|
-
}, xasd);
|
117
|
-
const c = xa.trace('/test/:name/:id', xasd);
|
118
|
-
xa.all(contractDetails, async (req, res) => { });
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"http.middleware.test.d.ts","sourceRoot":"","sources":["../../tests/http.middleware.test.ts"],"names":[],"mappings":""}
|