@bool-ts/core 1.1.1 → 1.1.2
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/LICENSE +21 -21
- package/__test/controller.ts +63 -63
- package/__test/index.ts +11 -11
- package/__test/interfaces.ts +7 -7
- package/__test/module.ts +17 -17
- package/__test/repository.ts +16 -16
- package/__test/service.ts +20 -20
- package/bun.lockb +0 -0
- package/dist/decorators/controller.js +10 -6
- package/dist/decorators/http.js +34 -25
- package/dist/decorators/index.js +23 -5
- package/dist/decorators/inject.js +9 -5
- package/dist/decorators/injectable.js +8 -4
- package/dist/decorators/module.js +8 -4
- package/dist/hooks/factory.js +48 -21
- package/dist/hooks/index.js +7 -2
- package/dist/hooks/injector.js +10 -7
- package/dist/http/clientError.js +7 -3
- package/dist/http/index.js +25 -7
- package/dist/http/serverError.js +7 -3
- package/dist/index.js +21 -5
- package/dist/interfaces/index.js +3 -1
- package/package.json +1 -1
- package/src/decorators/controller.ts +18 -18
- package/src/decorators/http.ts +185 -185
- package/src/decorators/index.ts +5 -5
- package/src/decorators/inject.ts +19 -19
- package/src/decorators/injectable.ts +12 -12
- package/src/decorators/module.ts +21 -21
- package/src/hooks/factory.ts +193 -193
- package/src/hooks/index.ts +2 -2
- package/src/hooks/injector.ts +43 -43
- package/src/http/clientError.ts +57 -57
- package/src/http/index.ts +68 -68
- package/src/http/serverError.ts +39 -39
- package/src/index.ts +6 -6
- package/src/interfaces/index.ts +3 -3
- package/test.http +28 -28
- package/tsconfig.json +108 -108
package/dist/hooks/factory.js
CHANGED
|
@@ -1,26 +1,52 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
exports.BoolFactory = void 0;
|
|
27
|
+
require("reflect-metadata");
|
|
28
|
+
require("colors");
|
|
29
|
+
const Qs = __importStar(require("qs"));
|
|
30
|
+
const ResponseTime = __importStar(require("response-time"));
|
|
31
|
+
const decorators_1 = require("../decorators");
|
|
32
|
+
const express_1 = __importStar(require("express"));
|
|
33
|
+
const injector_1 = require("./injector");
|
|
34
|
+
const http_1 = require("../http");
|
|
9
35
|
/**
|
|
10
36
|
*
|
|
11
37
|
* @param target
|
|
12
38
|
* @param router
|
|
13
39
|
*/
|
|
14
|
-
const controllerCreator = (target, router = Router()) => {
|
|
15
|
-
if (!Reflect.getOwnMetadataKeys(target).includes(controllerKey)) {
|
|
40
|
+
const controllerCreator = (target, router = (0, express_1.Router)()) => {
|
|
41
|
+
if (!Reflect.getOwnMetadataKeys(target).includes(decorators_1.controllerKey)) {
|
|
16
42
|
throw Error(`${target.name} is not a controller.`);
|
|
17
43
|
}
|
|
18
|
-
const controller = Injector.get(target);
|
|
44
|
+
const controller = injector_1.Injector.get(target);
|
|
19
45
|
if (!controller) {
|
|
20
46
|
throw Error("Can not initialize controller.");
|
|
21
47
|
}
|
|
22
|
-
const controllerMetadata = Reflect.getOwnMetadata(controllerKey, target) || "/";
|
|
23
|
-
const routesMetadata = (Reflect.getOwnMetadata(controllerRoutesKey, target) || []);
|
|
48
|
+
const controllerMetadata = Reflect.getOwnMetadata(decorators_1.controllerKey, target) || "/";
|
|
49
|
+
const routesMetadata = (Reflect.getOwnMetadata(decorators_1.controllerRoutesKey, target) || []);
|
|
24
50
|
const innerRouter = router.route(controllerMetadata);
|
|
25
51
|
routesMetadata.forEach(route => {
|
|
26
52
|
if (typeof route.descriptor.value !== "function") {
|
|
@@ -47,18 +73,18 @@ const controllerCreator = (target, router = Router()) => {
|
|
|
47
73
|
*
|
|
48
74
|
* @param target
|
|
49
75
|
*/
|
|
50
|
-
|
|
51
|
-
if (!Reflect.getOwnMetadataKeys(target).includes(moduleKey)) {
|
|
76
|
+
const BoolFactory = (target, options) => {
|
|
77
|
+
if (!Reflect.getOwnMetadataKeys(target).includes(decorators_1.moduleKey)) {
|
|
52
78
|
throw Error(`${target.name} is not a module.`);
|
|
53
79
|
}
|
|
54
|
-
const metadata = Reflect.getOwnMetadata(moduleKey, target);
|
|
80
|
+
const metadata = Reflect.getOwnMetadata(decorators_1.moduleKey, target);
|
|
55
81
|
const routers = !metadata?.controllers ? [] : metadata.controllers.map(controllerConstructor => controllerCreator(controllerConstructor));
|
|
56
82
|
const allowOrigins = !metadata?.allowOrigins ?
|
|
57
83
|
["*"] : typeof metadata.allowOrigins !== "string" ?
|
|
58
84
|
metadata.allowOrigins : [metadata.allowOrigins];
|
|
59
85
|
const allowMethods = !metadata?.allowMethods ?
|
|
60
86
|
["GET", "POST", "PUT", "PATCH", "DELETE", "OPTIONS"] : metadata.allowMethods;
|
|
61
|
-
const app =
|
|
87
|
+
const app = (0, express_1.default)();
|
|
62
88
|
const factoryOptions = Object.freeze({
|
|
63
89
|
allowLogsMethods: !options?.log?.methods ? ["GET", "POST", "PUT", "PATCH", "DELETE", "OPTIONS"] : options.log.methods
|
|
64
90
|
});
|
|
@@ -67,14 +93,14 @@ export const BoolFactory = (target, options) => {
|
|
|
67
93
|
depth: !options?.queryParser?.depth || options.queryParser.depth < 0 ? 10 : options.queryParser.depth,
|
|
68
94
|
arrayLimit: !options?.queryParser?.arrayLimit || options.queryParser.arrayLimit < 0 ? 50 : options.queryParser.arrayLimit
|
|
69
95
|
}));
|
|
70
|
-
app.use(urlencoded({
|
|
96
|
+
app.use((0, express_1.urlencoded)({
|
|
71
97
|
extended: true,
|
|
72
98
|
inflate: true,
|
|
73
99
|
limit: "1mb",
|
|
74
100
|
parameterLimit: 20,
|
|
75
101
|
type: "application/x-www-form-urlencoded",
|
|
76
102
|
verify: undefined
|
|
77
|
-
}), json({
|
|
103
|
+
}), (0, express_1.json)({
|
|
78
104
|
inflate: true,
|
|
79
105
|
limit: "5mb",
|
|
80
106
|
reviver: undefined,
|
|
@@ -98,7 +124,7 @@ export const BoolFactory = (target, options) => {
|
|
|
98
124
|
},
|
|
99
125
|
// Error catcher
|
|
100
126
|
(err, req, res, next) => {
|
|
101
|
-
errorInfer(res, err);
|
|
127
|
+
(0, http_1.errorInfer)(res, err);
|
|
102
128
|
if (!options?.debug) {
|
|
103
129
|
return;
|
|
104
130
|
}
|
|
@@ -141,4 +167,5 @@ export const BoolFactory = (target, options) => {
|
|
|
141
167
|
}
|
|
142
168
|
return app;
|
|
143
169
|
};
|
|
144
|
-
|
|
170
|
+
exports.BoolFactory = BoolFactory;
|
|
171
|
+
exports.default = exports.BoolFactory;
|
package/dist/hooks/index.js
CHANGED
|
@@ -1,2 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Injector = exports.BoolFactory = void 0;
|
|
4
|
+
var factory_1 = require("./factory");
|
|
5
|
+
Object.defineProperty(exports, "BoolFactory", { enumerable: true, get: function () { return factory_1.BoolFactory; } });
|
|
6
|
+
var injector_1 = require("./injector");
|
|
7
|
+
Object.defineProperty(exports, "Injector", { enumerable: true, get: function () { return injector_1.Injector; } });
|
package/dist/hooks/injector.js
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Injector = void 0;
|
|
4
|
+
require("reflect-metadata");
|
|
5
|
+
const decorators_1 = require("../decorators");
|
|
6
|
+
exports.Injector = new class {
|
|
4
7
|
_mapper = new Map();
|
|
5
8
|
/**
|
|
6
9
|
*
|
|
@@ -11,15 +14,15 @@ export const Injector = new class {
|
|
|
11
14
|
return this._mapper.get(classDefinition);
|
|
12
15
|
}
|
|
13
16
|
const ownMetadataKeys = Reflect.getMetadataKeys(classDefinition);
|
|
14
|
-
if (!ownMetadataKeys.includes(injectableKey)) {
|
|
17
|
+
if (!ownMetadataKeys.includes(decorators_1.injectableKey)) {
|
|
15
18
|
throw Error("Missing dependency declaration, please check @Injectable() used on dependency(ies).");
|
|
16
19
|
}
|
|
17
20
|
// Initialize dependencies injection
|
|
18
|
-
const dependencies = Reflect.getOwnMetadata(injectKey, classDefinition) || [];
|
|
19
|
-
const injections = dependencies.map(dependency => Injector.get(dependency));
|
|
21
|
+
const dependencies = Reflect.getOwnMetadata(decorators_1.injectKey, classDefinition) || [];
|
|
22
|
+
const injections = dependencies.map(dependency => exports.Injector.get(dependency));
|
|
20
23
|
const instance = new classDefinition(...injections);
|
|
21
24
|
this._mapper.set(classDefinition, instance);
|
|
22
25
|
return instance;
|
|
23
26
|
}
|
|
24
27
|
};
|
|
25
|
-
|
|
28
|
+
exports.default = exports.Injector;
|
package/dist/http/clientError.js
CHANGED
|
@@ -1,4 +1,7 @@
|
|
|
1
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.HttpClientError = exports.httpClientErrors = void 0;
|
|
4
|
+
exports.httpClientErrors = Object.freeze({
|
|
2
5
|
400: "BAD_REQUEST",
|
|
3
6
|
401: "UNAUTHORIZED",
|
|
4
7
|
402: "PAYMENT_REQUIRED",
|
|
@@ -29,14 +32,15 @@ export const httpClientErrors = Object.freeze({
|
|
|
29
32
|
431: "REQUEST_HEADER_FIELDS_TOO_LARGE",
|
|
30
33
|
451: "UNAVAILABLE_FOR_LEGAL_REASONS"
|
|
31
34
|
});
|
|
32
|
-
|
|
35
|
+
class HttpClientError extends Error {
|
|
33
36
|
httpCode;
|
|
34
37
|
message;
|
|
35
38
|
data;
|
|
36
39
|
constructor({ httpCode, data }) {
|
|
37
40
|
super();
|
|
38
41
|
this.httpCode = httpCode;
|
|
39
|
-
this.message = httpClientErrors[httpCode];
|
|
42
|
+
this.message = exports.httpClientErrors[httpCode];
|
|
40
43
|
this.data = data;
|
|
41
44
|
}
|
|
42
45
|
}
|
|
46
|
+
exports.HttpClientError = HttpClientError;
|
package/dist/http/index.js
CHANGED
|
@@ -1,15 +1,32 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
exports.errorInfer = void 0;
|
|
18
|
+
const clientError_1 = require("./clientError");
|
|
19
|
+
const serverError_1 = require("./serverError");
|
|
20
|
+
const errorInfer = (res, data) => {
|
|
4
21
|
if (res.headersSent) {
|
|
5
22
|
return;
|
|
6
23
|
}
|
|
7
24
|
try {
|
|
8
|
-
if (data instanceof HttpClientError) {
|
|
25
|
+
if (data instanceof clientError_1.HttpClientError) {
|
|
9
26
|
res.status(data.httpCode).json(data);
|
|
10
27
|
return;
|
|
11
28
|
}
|
|
12
|
-
if (data instanceof HttpServerError) {
|
|
29
|
+
if (data instanceof serverError_1.HttpServerError) {
|
|
13
30
|
res.status(data.httpCode).json(data);
|
|
14
31
|
return;
|
|
15
32
|
}
|
|
@@ -54,5 +71,6 @@ export const errorInfer = (res, data) => {
|
|
|
54
71
|
res.end();
|
|
55
72
|
}
|
|
56
73
|
};
|
|
57
|
-
|
|
58
|
-
|
|
74
|
+
exports.errorInfer = errorInfer;
|
|
75
|
+
__exportStar(require("./clientError"), exports);
|
|
76
|
+
__exportStar(require("./serverError"), exports);
|
package/dist/http/serverError.js
CHANGED
|
@@ -1,4 +1,7 @@
|
|
|
1
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.HttpServerError = exports.httpServerErrors = void 0;
|
|
4
|
+
exports.httpServerErrors = Object.freeze({
|
|
2
5
|
500: "INTERNAL_SERVER_ERROR",
|
|
3
6
|
501: "NOT_IMPLEMENTED",
|
|
4
7
|
502: "BAD_GATEWAY",
|
|
@@ -11,14 +14,15 @@ export const httpServerErrors = Object.freeze({
|
|
|
11
14
|
510: "NOT_EXTENDED",
|
|
12
15
|
511: "NETWORK_AUTHENTICATION_REQUIRED"
|
|
13
16
|
});
|
|
14
|
-
|
|
17
|
+
class HttpServerError extends Error {
|
|
15
18
|
httpCode;
|
|
16
19
|
message;
|
|
17
20
|
data;
|
|
18
21
|
constructor({ httpCode, data }) {
|
|
19
22
|
super();
|
|
20
23
|
this.httpCode = httpCode;
|
|
21
|
-
this.message = httpServerErrors[httpCode];
|
|
24
|
+
this.message = exports.httpServerErrors[httpCode];
|
|
22
25
|
this.data = data;
|
|
23
26
|
}
|
|
24
27
|
}
|
|
28
|
+
exports.HttpServerError = HttpServerError;
|
package/dist/index.js
CHANGED
|
@@ -1,5 +1,21 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
require("reflect-metadata");
|
|
18
|
+
__exportStar(require("./interfaces"), exports);
|
|
19
|
+
__exportStar(require("./hooks"), exports);
|
|
20
|
+
__exportStar(require("./decorators"), exports);
|
|
21
|
+
__exportStar(require("./http"), exports);
|
package/dist/interfaces/index.js
CHANGED
package/package.json
CHANGED
|
@@ -1,18 +1,18 @@
|
|
|
1
|
-
import { injectableKey } from "./injectable";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
export const controllerKey = "__bool:controller__";
|
|
5
|
-
|
|
6
|
-
export const Controller = (
|
|
7
|
-
prefix: string
|
|
8
|
-
) => <T extends Object>(
|
|
9
|
-
target: T,
|
|
10
|
-
context?: ClassDecoratorContext
|
|
11
|
-
) => {
|
|
12
|
-
Reflect.defineMetadata(controllerKey, !prefix.startsWith("/") ? `/${prefix}` : prefix, target);
|
|
13
|
-
Reflect.defineMetadata(injectableKey, undefined, target);
|
|
14
|
-
|
|
15
|
-
return target;
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
export default Controller;
|
|
1
|
+
import { injectableKey } from "./injectable";
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
export const controllerKey = "__bool:controller__";
|
|
5
|
+
|
|
6
|
+
export const Controller = (
|
|
7
|
+
prefix: string
|
|
8
|
+
) => <T extends Object>(
|
|
9
|
+
target: T,
|
|
10
|
+
context?: ClassDecoratorContext
|
|
11
|
+
) => {
|
|
12
|
+
Reflect.defineMetadata(controllerKey, !prefix.startsWith("/") ? `/${prefix}` : prefix, target);
|
|
13
|
+
Reflect.defineMetadata(injectableKey, undefined, target);
|
|
14
|
+
|
|
15
|
+
return target;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export default Controller;
|