binhend 2.2.2 → 2.2.3
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/index.js +46 -1
- package/package.json +27 -29
- package/packages/config/index.js +145 -0
- package/packages/config/package.json +12 -0
- package/{src2 → packages/config/src}/configuration.js +1 -1
- package/packages/core/index.js +33 -0
- package/packages/core/package.json +24 -0
- package/{src2/api → packages/core/src}/Router.js +6 -6
- package/{src2/api → packages/core/src}/routes.js +3 -5
- package/{src2 → packages/core/src}/server.js +1 -3
- package/packages/crypto/index.js +3 -0
- package/packages/crypto/package.json +9 -0
- package/packages/csd/index.js +6 -0
- package/packages/csd/package.json +14 -0
- package/{src2/csd → packages/csd/src}/controller.js +4 -4
- package/packages/https/index.js +3 -0
- package/packages/https/package.json +9 -0
- package/packages/middlewares/index.js +6 -0
- package/packages/middlewares/package.json +13 -0
- package/{src2/middleware → packages/middlewares/src}/cors.js +1 -1
- package/{src2/middleware → packages/middlewares/src}/parseBasicAuthToken.js +1 -1
- package/{src2/middleware → packages/middlewares/src}/parseCookies.js +3 -1
- package/{src2/api → packages/middlewares/src}/trycatch.js +2 -2
- package/{src2/alias-module.js → packages/module-alias/index.js} +1 -1
- package/packages/module-alias/package.json +12 -0
- package/{src2 → packages/module-alias/src}/alias-cjs-loader.js +1 -1
- package/packages/types/index.js +3 -0
- package/packages/types/package.json +9 -0
- package/packages/utils/index.js +6 -0
- package/packages/utils/package.json +9 -0
- package/{src2/api → packages/utils/src}/HttpCodes.js +2 -1
- package/{src2/api/responseErrorByDefault.js → packages/utils/src/defaultErrorRepsonse.js} +2 -4
- package/packages/validation/index.js +3 -0
- package/packages/validation/package.json +13 -0
- package/{src2/utils/validation.js → packages/validation/src/typeValidation.js} +2 -3
- package/packages/web/index.js +4 -0
- package/packages/web/package.json +18 -0
- package/{src2/web/index.js → packages/web/src/WebBuild.js} +8 -3
- package/{src2/web → packages/web/src}/component.format.js +1 -1
- package/{src2/web → packages/web/src}/component.method.js +6 -3
- package/src2/csd/csd.js +0 -0
- package/src2/types/common.d.ts +0 -10
- package/src2/types/index.d.ts +0 -2
- package/src2/utils/typedefs.js +0 -31
- /package/{src2 → packages/crypto/src}/crypto.js +0 -0
- /package/{src2/csd/index.js → packages/csd/src/csd.js} +0 -0
- /package/{src2/csd → packages/csd/src}/dao.js +0 -0
- /package/{src2/csd → packages/csd/src}/service.js +0 -0
- /package/{src2 → packages/https/src}/https.js +0 -0
- /package/{src2 → packages/module-alias/src}/alias-esm-loader.js +0 -0
- /package/{src2/utils/types.js → packages/types/src/typeCheck.js} +0 -0
- /package/{src2/utils → packages/utils/src}/Bromise.js +0 -0
- /package/{src2/api → packages/utils/src}/HttpError.js +0 -0
- /package/{src2/web → packages/web/src}/code.js +0 -0
- /package/{src2/web → packages/web/src}/component.build.js +0 -0
- /package/{src2/web → packages/web/src}/component.file.js +0 -0
- /package/{src2/web → packages/web/src}/component.js +0 -0
- /package/{src2/web → packages/web/src}/file-check.js +0 -0
package/index.js
CHANGED
|
@@ -6,6 +6,51 @@
|
|
|
6
6
|
|
|
7
7
|
'use strict';
|
|
8
8
|
|
|
9
|
+
const { server, routes, Router } = require('./packages/core');
|
|
10
|
+
|
|
11
|
+
const { Bromise, HttpCodes, HttpError } = require('./packages/utils');
|
|
12
|
+
|
|
13
|
+
const { cors, trycatch } = require('./packages/middlewares');
|
|
14
|
+
|
|
15
|
+
const { HTTPS } = require('./packages/https');
|
|
16
|
+
|
|
17
|
+
const { config, ConfigLoader } = require('./packages/config');
|
|
18
|
+
|
|
19
|
+
const { WebBuild, binh } = require('./packages/web');
|
|
20
|
+
|
|
21
|
+
const { create: CSD, Controller: CinCSD, Service: SinCSD, DAO: DinCSD } = require('./packages/csd');
|
|
22
|
+
|
|
23
|
+
const { crypto } = require('./packages/crypto');
|
|
24
|
+
|
|
25
|
+
const types = require('./packages/types');
|
|
26
|
+
|
|
27
|
+
const validation = require('./packages/validation');
|
|
28
|
+
|
|
29
|
+
// Run scripts
|
|
30
|
+
require('./packages/module-alias'); // for format: require('@/any/path')
|
|
31
|
+
|
|
9
32
|
module.exports = {
|
|
10
|
-
|
|
33
|
+
server, routes, Router,
|
|
34
|
+
|
|
35
|
+
Bromise, HttpCodes, HttpError,
|
|
36
|
+
|
|
37
|
+
cors, trycatch,
|
|
38
|
+
|
|
39
|
+
config, ConfigLoader,
|
|
40
|
+
|
|
41
|
+
HTTPS,
|
|
42
|
+
|
|
43
|
+
CSD, CinCSD, SinCSD, DinCSD, // only CSD is for usage, others for exposing methods (via IDE auto-suggestion)
|
|
44
|
+
|
|
45
|
+
crypto,
|
|
46
|
+
|
|
47
|
+
types,
|
|
48
|
+
validation,
|
|
49
|
+
|
|
50
|
+
WebBuild, binh
|
|
11
51
|
};
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
// module.exports = {
|
|
55
|
+
// ...require('@binhend/core'),
|
|
56
|
+
// };
|
package/package.json
CHANGED
|
@@ -1,31 +1,29 @@
|
|
|
1
1
|
{
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
"
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
"npm": ">=10.8.2"
|
|
30
|
-
}
|
|
2
|
+
"name": "binhend",
|
|
3
|
+
"version": "2.2.3",
|
|
4
|
+
"description": "",
|
|
5
|
+
"main": "index.js",
|
|
6
|
+
"author": "Nguyen Duc Binh",
|
|
7
|
+
"license": "MIT",
|
|
8
|
+
"bin": {
|
|
9
|
+
"binhend": "./bin/index.js"
|
|
10
|
+
},
|
|
11
|
+
"workspaces": [
|
|
12
|
+
"packages/*",
|
|
13
|
+
"test"
|
|
14
|
+
],
|
|
15
|
+
"scripts": {
|
|
16
|
+
"test": "npm run test --workspace=test",
|
|
17
|
+
"test:coverage": "npm run test:coverage --workspace=test",
|
|
18
|
+
"test:jest": "jest --config=test/jest.config.js",
|
|
19
|
+
"example-api": "node example_api PORT=5555",
|
|
20
|
+
"example-webcomp": "node example_webcomp",
|
|
21
|
+
"example-web2": "node example_web2"
|
|
22
|
+
},
|
|
23
|
+
"dependencies": {
|
|
24
|
+
},
|
|
25
|
+
"engines": {
|
|
26
|
+
"node": ">=20.18.0",
|
|
27
|
+
"npm": ">=10.8.2"
|
|
28
|
+
}
|
|
31
29
|
}
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
|
|
2
|
+
const fs = require('fs');
|
|
3
|
+
const path = require('path');
|
|
4
|
+
const { isEmptyArray, isArray, isObject, mustString, isNullish, isString } = require('@binhend/types');
|
|
5
|
+
|
|
6
|
+
// @ts-ignore
|
|
7
|
+
function ConfigLoader(configObject, { rootPath } = {}) {
|
|
8
|
+
const configs = configObject || {};
|
|
9
|
+
|
|
10
|
+
rootPath = mustString(rootPath) || require.main.path;
|
|
11
|
+
|
|
12
|
+
function getConfigPosition(key) {
|
|
13
|
+
return key == undefined ? configs : configs[key] || (configs[key] = {});
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
// @ts-ignore
|
|
17
|
+
this.object = (object, { key, filter: filters, overwrite, use } = {}) => {
|
|
18
|
+
let config = getConfigPosition(key);
|
|
19
|
+
let filtered = isArray(filters) ? filter(object, filters) : object;
|
|
20
|
+
|
|
21
|
+
remap(object, use);
|
|
22
|
+
assign(config, filtered, overwrite);
|
|
23
|
+
|
|
24
|
+
return this;
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
this.cli = (options) => {
|
|
28
|
+
return this.object(cli(), options);
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
this.file = (filepath, options) => {
|
|
32
|
+
let filePath = path.resolve(rootPath, filepath);
|
|
33
|
+
return this.object(file(filePath, options?.encoding), options);
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
ConfigLoader.cli = cli;
|
|
38
|
+
ConfigLoader.file = file;
|
|
39
|
+
ConfigLoader.require = require.main.require;
|
|
40
|
+
|
|
41
|
+
function filter(object, filterKeys) {
|
|
42
|
+
if (!isObject(object) || isEmptyArray(filterKeys)) return {};
|
|
43
|
+
|
|
44
|
+
var filtered = {};
|
|
45
|
+
|
|
46
|
+
filterKeys.forEach((field) => {
|
|
47
|
+
if (object.hasOwnProperty(field)) {
|
|
48
|
+
filtered[field] = object[field];
|
|
49
|
+
}
|
|
50
|
+
});
|
|
51
|
+
|
|
52
|
+
return filtered;
|
|
53
|
+
};
|
|
54
|
+
|
|
55
|
+
function assign(config, filtered, overwrite) {
|
|
56
|
+
if (overwrite !== false) {
|
|
57
|
+
Object.assign(config, filtered);
|
|
58
|
+
}
|
|
59
|
+
else for (var key in filtered) {
|
|
60
|
+
if (isNullish(config[key])) {
|
|
61
|
+
config[key] = filtered[key];
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
return config;
|
|
65
|
+
};
|
|
66
|
+
|
|
67
|
+
function remap(object, use) {
|
|
68
|
+
if (!isString(use)) return object;
|
|
69
|
+
|
|
70
|
+
for (var key in object) {
|
|
71
|
+
const value = object[key];
|
|
72
|
+
const hasValue = isObject(value) && value.hasOwnProperty(use);
|
|
73
|
+
if (hasValue) object[key] = value[use];
|
|
74
|
+
// else if value is not an object or has no "env" key, then the desired value is itself => no new assignment
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
return object;
|
|
78
|
+
};
|
|
79
|
+
|
|
80
|
+
function cli() {
|
|
81
|
+
return processKeyValueStrings(process.argv);
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
function file(filepath, encoding) {
|
|
85
|
+
encoding = encoding || 'utf8';
|
|
86
|
+
|
|
87
|
+
try {
|
|
88
|
+
var fileExtension = path.parse(filepath).ext;
|
|
89
|
+
|
|
90
|
+
switch (fileExtension) {
|
|
91
|
+
case '.js':
|
|
92
|
+
case '.json':
|
|
93
|
+
return ConfigLoader.require(filepath);
|
|
94
|
+
|
|
95
|
+
default:
|
|
96
|
+
var source = fs.readFileSync(filepath, { encoding });
|
|
97
|
+
// @ts-ignore
|
|
98
|
+
source = source.replace(/\r\n?/mg, '\n');
|
|
99
|
+
// @ts-ignore
|
|
100
|
+
var lines = source.split('\n');
|
|
101
|
+
|
|
102
|
+
return processKeyValueStrings(lines);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
catch (error) {
|
|
106
|
+
console.log(`[BINHEND] Failed loading config from: ${filepath}`);
|
|
107
|
+
console.log('[BINHEND] Details:', error);
|
|
108
|
+
return {};
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
function processKeyValueStrings(strings) {
|
|
113
|
+
var output = {};
|
|
114
|
+
|
|
115
|
+
if (strings == undefined || !strings.length) {
|
|
116
|
+
return output;
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
var regex_is_comment = /^#/;
|
|
120
|
+
|
|
121
|
+
strings.forEach(function (string) {
|
|
122
|
+
if (regex_is_comment.test(string.trim())) return;
|
|
123
|
+
|
|
124
|
+
var parsed = parseKeyValue(string);
|
|
125
|
+
if (parsed.success) {
|
|
126
|
+
output[parsed.key] = parsed.value;
|
|
127
|
+
}
|
|
128
|
+
});
|
|
129
|
+
|
|
130
|
+
return output;
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
function parseKeyValue(string) {
|
|
134
|
+
var delimiter = '=';
|
|
135
|
+
|
|
136
|
+
var parts = string.split(delimiter);
|
|
137
|
+
if (parts.length < 2) return { success: false };
|
|
138
|
+
|
|
139
|
+
var key = parts[0];
|
|
140
|
+
var value = parts.splice(1).join(delimiter);
|
|
141
|
+
|
|
142
|
+
return { key, value, success: true };
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
module.exports = { ConfigLoader, config: {} };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
const fs = require('fs');
|
|
2
2
|
const path = require('path');
|
|
3
|
-
const { isEmptyArray, isArray, isObject, mustString, isNullish, isString } = require('
|
|
3
|
+
const { isEmptyArray, isArray, isObject, mustString, isNullish, isString } = require('@binhend/types');
|
|
4
4
|
|
|
5
5
|
// @ts-ignore
|
|
6
6
|
function ConfigLoader(configObject, { rootPath } = {}) {
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
|
|
2
|
+
const utils = require('@binhend/utils');
|
|
3
|
+
const middlewares = require('@binhend/middlewares');
|
|
4
|
+
const { config, ConfigLoader } = require('@binhend/config');
|
|
5
|
+
const { WebBuild, binh } = require('@binhend/web');
|
|
6
|
+
|
|
7
|
+
// Run scripts
|
|
8
|
+
require('@binhend/module-alias'); // for format: require('@/any/path')
|
|
9
|
+
|
|
10
|
+
module.exports = {
|
|
11
|
+
server: require('./src/server'),
|
|
12
|
+
Router: require('./src/Router'),
|
|
13
|
+
routes: require('./src/routes').routes,
|
|
14
|
+
|
|
15
|
+
cors: middlewares.cors,
|
|
16
|
+
trycatch: middlewares.trycatch,
|
|
17
|
+
|
|
18
|
+
config, ConfigLoader,
|
|
19
|
+
|
|
20
|
+
HTTPS: require('@binhend/https').HTTPS,
|
|
21
|
+
HttpError: utils.HttpError,
|
|
22
|
+
HttpCodes: utils.HttpCodes,
|
|
23
|
+
Bromise: utils.Bromise,
|
|
24
|
+
|
|
25
|
+
CSD: require('@binhend/csd'),
|
|
26
|
+
|
|
27
|
+
crypto: require('@binhend/crypto'),
|
|
28
|
+
|
|
29
|
+
types: require('@binhend/types'),
|
|
30
|
+
validation: require('@binhend/validation'),
|
|
31
|
+
|
|
32
|
+
WebBuild, binh
|
|
33
|
+
};
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@binhend/core",
|
|
3
|
+
"version": "1.0.3",
|
|
4
|
+
"main": "index.js",
|
|
5
|
+
"exports": {
|
|
6
|
+
".": "./index.js"
|
|
7
|
+
},
|
|
8
|
+
"license": "MIT",
|
|
9
|
+
"dependencies": {
|
|
10
|
+
"express": "^4.17.1",
|
|
11
|
+
|
|
12
|
+
"@binhend/config": "^1.0.0",
|
|
13
|
+
"@binhend/https": "^1.0.0",
|
|
14
|
+
"@binhend/utils": "^1.0.1",
|
|
15
|
+
"@binhend/middlewares": "^1.0.1",
|
|
16
|
+
"@binhend/csd": "^1.0.2",
|
|
17
|
+
"@binhend/crypto": "^1.0.0",
|
|
18
|
+
"@binhend/types": "^1.0.0",
|
|
19
|
+
"@binhend/validation": "^1.0.0",
|
|
20
|
+
"@binhend/web": "^1.0.0",
|
|
21
|
+
|
|
22
|
+
"@binhend/module-alias": "^1.0.0"
|
|
23
|
+
}
|
|
24
|
+
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
|
|
2
2
|
const { ServerResponse } = require('http');
|
|
3
|
-
const { isFunction } = require('
|
|
4
|
-
const
|
|
5
|
-
const trycatch = require('
|
|
3
|
+
const { isFunction } = require('@binhend/types');
|
|
4
|
+
const { defaultErrorRepsonse } = require('@binhend/utils');
|
|
5
|
+
const { trycatch } = require('@binhend/middlewares');
|
|
6
6
|
const express = require('express');
|
|
7
7
|
|
|
8
8
|
|
|
@@ -16,7 +16,7 @@ function Router(moduleInstance) {
|
|
|
16
16
|
|
|
17
17
|
if (!isFunction(method)) continue;
|
|
18
18
|
|
|
19
|
-
output[key] = function() {
|
|
19
|
+
output[key] = function () {
|
|
20
20
|
let args = [];
|
|
21
21
|
|
|
22
22
|
Array.from(arguments).forEach((arg) => {
|
|
@@ -43,13 +43,13 @@ function Router(moduleInstance) {
|
|
|
43
43
|
function createErrorHandler(router, callback) {
|
|
44
44
|
if (callback.isAppliedTryCatch) return callback;
|
|
45
45
|
|
|
46
|
-
return async function(request, response, next) {
|
|
46
|
+
return async function (request, response, next) {
|
|
47
47
|
try {
|
|
48
48
|
return await callback.apply(router, arguments);
|
|
49
49
|
}
|
|
50
50
|
catch (error) {
|
|
51
51
|
if (arguments.length < 3 || !(response instanceof ServerResponse)) throw error;
|
|
52
|
-
|
|
52
|
+
defaultErrorRepsonse(error, response, next);
|
|
53
53
|
}
|
|
54
54
|
}
|
|
55
55
|
}
|
|
@@ -1,11 +1,9 @@
|
|
|
1
1
|
const { readdir, stat } = require('fs/promises');
|
|
2
2
|
const { join, parse, resolve } = require('path');
|
|
3
|
-
const { isUndefined } = require('
|
|
4
|
-
const {
|
|
5
|
-
const
|
|
3
|
+
const { isUndefined } = require('@binhend/types');
|
|
4
|
+
const { cors, parseCookies, parseBasicAuthToken } = require('@binhend/middlewares');
|
|
5
|
+
const server = require('./server');
|
|
6
6
|
const express = require('express');
|
|
7
|
-
const parseBasicAuthToken = require('../middleware/parseBasicAuthToken');
|
|
8
|
-
const parseCookies = require('../middleware/parseCookies');
|
|
9
7
|
|
|
10
8
|
/**
|
|
11
9
|
* Maps routes recursively from a directory
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@binhend/csd",
|
|
3
|
+
"version": "1.0.2",
|
|
4
|
+
"main": "index.js",
|
|
5
|
+
"exports": {
|
|
6
|
+
".": "./index.js"
|
|
7
|
+
},
|
|
8
|
+
"license": "MIT",
|
|
9
|
+
"dependencies": {
|
|
10
|
+
"@binhend/types": "^1.0.0",
|
|
11
|
+
"@binhend/utils": "^1.0.0",
|
|
12
|
+
"@binhend/middlewares": "^1.0.1"
|
|
13
|
+
}
|
|
14
|
+
}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
|
|
2
|
-
const { isEmptyObject, isString } = require('
|
|
3
|
-
const trycatch = require('
|
|
4
|
-
const HttpError = require('
|
|
2
|
+
const { isEmptyObject, isString } = require('@binhend/types');
|
|
3
|
+
const { trycatch } = require('@binhend/middlewares');
|
|
4
|
+
const { HttpError, HttpCodes } = require('@binhend/utils');
|
|
5
5
|
|
|
6
|
-
const { OK, CREATED, BAD_REQUEST } =
|
|
6
|
+
const { OK, CREATED, BAD_REQUEST } = HttpCodes;
|
|
7
7
|
|
|
8
8
|
const
|
|
9
9
|
ERROR_MISSING_ID = 'Missing required parameter: id',
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
|
|
2
|
+
const { isString } = require('@binhend/types');
|
|
3
|
+
|
|
2
4
|
module.exports = (request, response, next) => {
|
|
3
5
|
const header = request.headers.cookie;
|
|
4
6
|
const cookies = {};
|
|
5
7
|
|
|
6
|
-
if (header) header.split(';').forEach(cookie => {
|
|
8
|
+
if (isString(header)) header.split(';').forEach(cookie => {
|
|
7
9
|
const [key, ...val] = cookie.trim().split('=');
|
|
8
10
|
cookies[key] = decodeURIComponent(val.join('='));
|
|
9
11
|
});
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
|
|
2
|
-
const
|
|
2
|
+
const { defaultErrorRepsonse } = require('@binhend/utils');
|
|
3
3
|
|
|
4
4
|
function trycatch(callback) {
|
|
5
5
|
if (callback?.isAppliedTryCatch) return callback;
|
|
@@ -9,7 +9,7 @@ function trycatch(callback) {
|
|
|
9
9
|
return await callback(request, response, next);
|
|
10
10
|
}
|
|
11
11
|
catch (error) {
|
|
12
|
-
|
|
12
|
+
defaultErrorRepsonse(error, response, next);
|
|
13
13
|
}
|
|
14
14
|
};
|
|
15
15
|
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
const path = require('path');
|
|
4
4
|
const DefaultModule = require('module');
|
|
5
|
-
const { binh } = require('
|
|
5
|
+
const { binh } = require('@binhend/web'); // TODO handle this 'binh' object again, more properly, workspaces will not recognize global 'binh'
|
|
6
6
|
|
|
7
7
|
// Protect against improperly customized module constructors by other frameworks/packages
|
|
8
8
|
const Module = module.constructor.length > 1 ? module.constructor : DefaultModule;
|
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
|
|
2
2
|
const HttpError = require('./HttpError');
|
|
3
3
|
|
|
4
|
-
function
|
|
4
|
+
module.exports = function (error, response, next) {
|
|
5
5
|
if (!(error instanceof HttpError)) return next(error);
|
|
6
6
|
response.status(error.httpCode || 500).json({ error: error.message || 'Internal Server Error' });
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
module.exports = responseErrorByDefault;
|
|
7
|
+
};
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
const HttpError = require('
|
|
2
|
-
const
|
|
3
|
-
const types = require('./types');
|
|
1
|
+
const { HttpError, HttpCodes } = require('@binhend/utils');
|
|
2
|
+
const types = require('@binhend/types');
|
|
4
3
|
|
|
5
4
|
/**
|
|
6
5
|
* @typedef {Object} Options
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@binhend/web",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"main": "index.js",
|
|
5
|
+
"exports": {
|
|
6
|
+
".": "./index.js"
|
|
7
|
+
},
|
|
8
|
+
"license": "MIT",
|
|
9
|
+
"dependencies": {
|
|
10
|
+
"@binhend/core": "^1.0.0",
|
|
11
|
+
"@binhend/types": "^1.0.0",
|
|
12
|
+
"@binhend/config": "^1.0.0",
|
|
13
|
+
"express": "^4.17.1",
|
|
14
|
+
"js-beautify": "^1.15.1",
|
|
15
|
+
"uglify-js": "^3.17.4",
|
|
16
|
+
"uglifycss": "^0.0.29"
|
|
17
|
+
}
|
|
18
|
+
}
|
|
@@ -1,11 +1,12 @@
|
|
|
1
|
-
// @ts-nocheck
|
|
2
1
|
|
|
3
2
|
const path = require('path');
|
|
4
|
-
|
|
3
|
+
// @ts-ignore
|
|
4
|
+
const { isEmptyString, isString, mustString } = require('@binhend/types');
|
|
5
5
|
const ComponentFormat = require('./component.format');
|
|
6
6
|
const ComponentBuild = require('./component.build');
|
|
7
7
|
const Component = require('./component');
|
|
8
|
-
|
|
8
|
+
// @ts-ignore
|
|
9
|
+
const { server } = require('@binhend/core');
|
|
9
10
|
const express = require('express');
|
|
10
11
|
|
|
11
12
|
const DEFAULT_DIR_BUILD = 'build';
|
|
@@ -13,6 +14,7 @@ const DEFAULT_DIR_BUILD_WEB = 'web';
|
|
|
13
14
|
const DEFAULT_DIR_BUILD_MODULE = 'module';
|
|
14
15
|
const DEFAULT_DIR_BUILD_EXTERNAL = 'NPM';
|
|
15
16
|
|
|
17
|
+
// @ts-ignore
|
|
16
18
|
function WebBuild(source, { output, external } = {}) {
|
|
17
19
|
|
|
18
20
|
if (isEmptyString(source)) throw new Error(`[BINHEND][WEB] Require source code location. Current: source: ${source}`);
|
|
@@ -55,10 +57,13 @@ function WebBuild(source, { output, external } = {}) {
|
|
|
55
57
|
|
|
56
58
|
setTimeout(() => {
|
|
57
59
|
server().use(express.static(web));
|
|
60
|
+
// @ts-ignore
|
|
58
61
|
server().get('/*', (req, res) => res.sendFile('index.html', { root: web }));
|
|
59
62
|
});
|
|
60
63
|
|
|
64
|
+
// @ts-ignore
|
|
61
65
|
binh.webModulePath = module;
|
|
66
|
+
// @ts-ignore
|
|
62
67
|
binh.webSourcePath = source;
|
|
63
68
|
|
|
64
69
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const { config } = require('
|
|
1
|
+
const { config } = require('@binhend/config');
|
|
2
2
|
const { readFileSync } = require('fs');
|
|
3
3
|
const { parseFileName, isAcceptedJS, isExceptedJS } = require('./file-check');
|
|
4
4
|
const { scanNestedFiles, cloneFileIfNew, printError, makeFullDirPath, writeToFileIfNew } = require('./component.file');
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
// @ts-nocheck
|
|
2
1
|
|
|
3
2
|
const path = require('path');
|
|
4
3
|
const fs = require('fs');
|
|
5
4
|
const UglifyCSS = require('uglifycss');
|
|
6
5
|
const Component = require('./component');
|
|
7
|
-
|
|
6
|
+
// @ts-ignore
|
|
7
|
+
const { isString } = require('@binhend/types');
|
|
8
8
|
|
|
9
9
|
const binh = {};
|
|
10
10
|
|
|
@@ -130,14 +130,17 @@ binh.css = function (module, cssFilename) {
|
|
|
130
130
|
|
|
131
131
|
/** Dummy Binh object for binhjs => build web not logging error of undefined */
|
|
132
132
|
binh.Binh = function () { };
|
|
133
|
-
binh.Binh.Util = { require: function () {} };
|
|
133
|
+
binh.Binh.Util = { require: function () { } };
|
|
134
134
|
|
|
135
135
|
function alias(name) {
|
|
136
136
|
if (!isString(name)) return this;
|
|
137
137
|
name = name.trim();
|
|
138
138
|
|
|
139
139
|
var alias = this.alias || (this.alias = {});
|
|
140
|
+
|
|
141
|
+
// @ts-ignore
|
|
140
142
|
if (this.parent) alias[this.parent.filename] = name;
|
|
143
|
+
// @ts-ignore
|
|
141
144
|
delete this.parent;
|
|
142
145
|
|
|
143
146
|
return this;
|
package/src2/csd/csd.js
DELETED
|
File without changes
|
package/src2/types/common.d.ts
DELETED
package/src2/types/index.d.ts
DELETED
package/src2/utils/typedefs.js
DELETED
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
/**
|
|
3
|
-
* @typedef {Object<string, any>} ObjectType
|
|
4
|
-
*/
|
|
5
|
-
|
|
6
|
-
/**
|
|
7
|
-
* Type definition for object accepting any extra properties
|
|
8
|
-
*
|
|
9
|
-
* @returns {ObjectType}
|
|
10
|
-
*/
|
|
11
|
-
function ObjectType() { return this; }
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
/**
|
|
16
|
-
* @typedef {(Date|string|number)} DateType
|
|
17
|
-
*/
|
|
18
|
-
|
|
19
|
-
/**
|
|
20
|
-
* Type definition for date accepting any valid formats (string, number, date)
|
|
21
|
-
*
|
|
22
|
-
* @returns {DateType}
|
|
23
|
-
*/
|
|
24
|
-
function DateType() { return this; }
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
module.exports = {
|
|
29
|
-
ObjectType,
|
|
30
|
-
DateType
|
|
31
|
-
};
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|