tspace-spear 1.2.9 → 1.3.0
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 +342 -200
- package/dist/cli/generators/app/index.js +1 -1
- package/dist/cli/generators/app/index.js.map +1 -1
- package/dist/cli/generators/controller/template.d.ts +1 -1
- package/dist/cli/generators/controller/template.js +11 -9
- package/dist/cli/generators/controller/template.js.map +1 -1
- package/dist/cli/index.js +10 -8
- package/dist/cli/index.js.map +1 -1
- package/dist/lib/core/client/index.js +18 -6
- package/dist/lib/core/client/index.js.map +1 -1
- package/dist/lib/core/client/types.d.ts +4 -3
- package/dist/lib/core/compiler/generator.js +8 -4
- package/dist/lib/core/compiler/generator.js.map +1 -1
- package/dist/lib/core/compiler/pre-routes.js +10 -2
- package/dist/lib/core/compiler/pre-routes.js.map +1 -1
- package/dist/lib/core/const/index.d.ts +12 -0
- package/dist/lib/core/const/index.js +6 -1
- package/dist/lib/core/const/index.js.map +1 -1
- package/dist/lib/core/decorators/controller.js +2 -1
- package/dist/lib/core/decorators/controller.js.map +1 -1
- package/dist/lib/core/decorators/headers.js +1 -0
- package/dist/lib/core/decorators/headers.js.map +1 -1
- package/dist/lib/core/decorators/index.d.ts +1 -0
- package/dist/lib/core/decorators/index.js +1 -0
- package/dist/lib/core/decorators/index.js.map +1 -1
- package/dist/lib/core/decorators/methods.js +4 -3
- package/dist/lib/core/decorators/methods.js.map +1 -1
- package/dist/lib/core/decorators/middleware.d.ts +46 -2
- package/dist/lib/core/decorators/middleware.js +100 -15
- package/dist/lib/core/decorators/middleware.js.map +1 -1
- package/dist/lib/core/decorators/service.d.ts +28 -0
- package/dist/lib/core/decorators/service.js +36 -0
- package/dist/lib/core/decorators/service.js.map +1 -0
- package/dist/lib/core/decorators/statusCode.js.map +1 -1
- package/dist/lib/core/decorators/swagger.js +4 -3
- package/dist/lib/core/decorators/swagger.js.map +1 -1
- package/dist/lib/core/exception/index.d.ts +68 -0
- package/dist/lib/core/exception/index.js +123 -0
- package/dist/lib/core/exception/index.js.map +1 -0
- package/dist/lib/core/metadata/index.d.ts +6 -0
- package/dist/lib/core/metadata/index.js +13 -0
- package/dist/lib/core/metadata/index.js.map +1 -0
- package/dist/lib/core/server/fast-router.d.ts +5 -5
- package/dist/lib/core/server/fast-router.js +2 -2
- package/dist/lib/core/server/fast-router.js.map +1 -1
- package/dist/lib/core/server/http/index.d.ts +22 -0
- package/dist/lib/core/server/http/index.js +220 -0
- package/dist/lib/core/server/http/index.js.map +1 -0
- package/dist/lib/core/server/index.d.ts +35 -7
- package/dist/lib/core/server/index.js +252 -75
- package/dist/lib/core/server/index.js.map +1 -1
- package/dist/lib/core/server/net/index.d.ts +13 -8
- package/dist/lib/core/server/net/index.js +2 -2
- package/dist/lib/core/server/net/index.js.map +1 -1
- package/dist/lib/core/server/parser-factory.d.ts +3 -4
- package/dist/lib/core/server/parser-factory.js +52 -143
- package/dist/lib/core/server/parser-factory.js.map +1 -1
- package/dist/lib/core/server/response.d.ts +1 -2
- package/dist/lib/core/server/response.js +173 -171
- package/dist/lib/core/server/response.js.map +1 -1
- package/dist/lib/core/server/uWS/index.d.ts +2 -3
- package/dist/lib/core/server/uWS/index.js +15 -10
- package/dist/lib/core/server/uWS/index.js.map +1 -1
- package/dist/lib/core/types/index.d.ts +25 -8
- package/dist/lib/core/utils/index.d.ts +3 -3
- package/dist/lib/core/utils/index.js +19 -16
- package/dist/lib/core/utils/index.js.map +1 -1
- package/package.json +35 -12
|
@@ -0,0 +1,220 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.httpfiles = exports.httpBody = exports.httpAdaptRequestResponse = void 0;
|
|
7
|
+
const fs_1 = __importDefault(require("fs"));
|
|
8
|
+
const path_1 = __importDefault(require("path"));
|
|
9
|
+
const mime_types_1 = __importDefault(require("mime-types"));
|
|
10
|
+
const crypto_1 = __importDefault(require("crypto"));
|
|
11
|
+
const string_decoder_1 = require("string_decoder");
|
|
12
|
+
const busboy_1 = __importDefault(require("busboy"));
|
|
13
|
+
const utils_1 = require("../../utils");
|
|
14
|
+
const httpAdaptRequestResponse = (req, res) => {
|
|
15
|
+
const headers = req.headers || {};
|
|
16
|
+
const request = {
|
|
17
|
+
http: req,
|
|
18
|
+
method: req.method?.toUpperCase() || "GET",
|
|
19
|
+
url: req.url || "/",
|
|
20
|
+
headers,
|
|
21
|
+
on(event, cb) {
|
|
22
|
+
return req.on(event, cb);
|
|
23
|
+
},
|
|
24
|
+
pipe(cb) {
|
|
25
|
+
return req.pipe(cb);
|
|
26
|
+
}
|
|
27
|
+
};
|
|
28
|
+
const response = {
|
|
29
|
+
http: res,
|
|
30
|
+
writableEnded: false,
|
|
31
|
+
aborted: false,
|
|
32
|
+
writeHeaders: Object.create(null),
|
|
33
|
+
headersSent: false,
|
|
34
|
+
statusCode: 200,
|
|
35
|
+
setHeader(key, value) {
|
|
36
|
+
if (!response.headersSent && !response.writableEnded) {
|
|
37
|
+
res.setHeader(key, value);
|
|
38
|
+
}
|
|
39
|
+
return response;
|
|
40
|
+
},
|
|
41
|
+
writeHeader(key, value) {
|
|
42
|
+
return response.setHeader(key, value);
|
|
43
|
+
},
|
|
44
|
+
writeHead(status, context) {
|
|
45
|
+
response.statusCode = status;
|
|
46
|
+
if (!response.headersSent) {
|
|
47
|
+
res.writeHead(status, context);
|
|
48
|
+
response.headersSent = true;
|
|
49
|
+
}
|
|
50
|
+
return response;
|
|
51
|
+
},
|
|
52
|
+
writeStatus(status) {
|
|
53
|
+
response.statusCode = status;
|
|
54
|
+
if (!response.headersSent) {
|
|
55
|
+
res.statusCode = status;
|
|
56
|
+
}
|
|
57
|
+
return response;
|
|
58
|
+
},
|
|
59
|
+
end(chunk) {
|
|
60
|
+
if (response.writableEnded)
|
|
61
|
+
return;
|
|
62
|
+
if (chunk == null) {
|
|
63
|
+
res.end();
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
response.writableEnded = true;
|
|
67
|
+
if (!response.headersSent) {
|
|
68
|
+
res.statusCode = response.statusCode;
|
|
69
|
+
}
|
|
70
|
+
if (typeof chunk === 'string' ||
|
|
71
|
+
Buffer.isBuffer(chunk) ||
|
|
72
|
+
chunk instanceof Uint8Array) {
|
|
73
|
+
res.end(chunk);
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
res.end(JSON.stringify(chunk));
|
|
77
|
+
return;
|
|
78
|
+
},
|
|
79
|
+
};
|
|
80
|
+
return {
|
|
81
|
+
req: request,
|
|
82
|
+
res: response,
|
|
83
|
+
};
|
|
84
|
+
};
|
|
85
|
+
exports.httpAdaptRequestResponse = httpAdaptRequestResponse;
|
|
86
|
+
const httpBody = (req, res) => {
|
|
87
|
+
return new Promise((resolve, reject) => {
|
|
88
|
+
const decoder = new string_decoder_1.StringDecoder("utf-8");
|
|
89
|
+
let payload = "";
|
|
90
|
+
req.on("data", (data) => {
|
|
91
|
+
payload += decoder.write(data);
|
|
92
|
+
});
|
|
93
|
+
req.on("end", async () => {
|
|
94
|
+
payload += decoder.end();
|
|
95
|
+
const contentType = req.headers["content-type"]?.toLowerCase() || null;
|
|
96
|
+
try {
|
|
97
|
+
const body = await (0, utils_1.normalizeRequestBody)({ contentType, payload });
|
|
98
|
+
return resolve(body);
|
|
99
|
+
}
|
|
100
|
+
catch (err) {
|
|
101
|
+
return reject(err);
|
|
102
|
+
}
|
|
103
|
+
});
|
|
104
|
+
req.on("error", (err) => {
|
|
105
|
+
return reject(err);
|
|
106
|
+
});
|
|
107
|
+
});
|
|
108
|
+
};
|
|
109
|
+
exports.httpBody = httpBody;
|
|
110
|
+
const httpfiles = async ({ req, res, options, }) => {
|
|
111
|
+
const temp = options.tempFileDir;
|
|
112
|
+
if (!fs_1.default.existsSync(temp)) {
|
|
113
|
+
try {
|
|
114
|
+
fs_1.default.mkdirSync(temp, { recursive: true });
|
|
115
|
+
}
|
|
116
|
+
catch (err) { }
|
|
117
|
+
}
|
|
118
|
+
return new Promise((resolve, reject) => {
|
|
119
|
+
const body = {};
|
|
120
|
+
const files = {};
|
|
121
|
+
const fileWritePromises = [];
|
|
122
|
+
const bb = (0, busboy_1.default)({ headers: req.headers, defParamCharset: "utf8" });
|
|
123
|
+
const removeTemp = (fileTemp, ms) => {
|
|
124
|
+
const remove = () => {
|
|
125
|
+
try {
|
|
126
|
+
fs_1.default.unlinkSync(fileTemp);
|
|
127
|
+
}
|
|
128
|
+
catch (err) { }
|
|
129
|
+
};
|
|
130
|
+
setTimeout(remove, ms);
|
|
131
|
+
};
|
|
132
|
+
bb.on("file", (fieldName, fileData, info) => {
|
|
133
|
+
const { filename, mimeType } = info;
|
|
134
|
+
const extension = mime_types_1.default.extension(mimeType) ||
|
|
135
|
+
path_1.default.extname(filename).replace(".", "") ||
|
|
136
|
+
"bin";
|
|
137
|
+
const tempFilename = crypto_1.default.randomBytes(16).toString("hex");
|
|
138
|
+
const filePath = path_1.default.join(path_1.default.resolve(), `${temp}/${tempFilename}`);
|
|
139
|
+
const writeStream = fs_1.default.createWriteStream(filePath);
|
|
140
|
+
let fileSize = 0;
|
|
141
|
+
fileData.on("data", (data) => {
|
|
142
|
+
fileSize += data.length;
|
|
143
|
+
if (fileSize > options.limit) {
|
|
144
|
+
fileData.unpipe(writeStream);
|
|
145
|
+
writeStream.destroy();
|
|
146
|
+
return reject(new Error(`The file '${fieldName}' is too large to be uploaded. The limit is '${options.limit}' bytes.`));
|
|
147
|
+
}
|
|
148
|
+
});
|
|
149
|
+
const fileWritePromise = new Promise((resolve, reject) => {
|
|
150
|
+
fileData.pipe(writeStream);
|
|
151
|
+
writeStream.on("finish", () => {
|
|
152
|
+
const file = {
|
|
153
|
+
name: filename,
|
|
154
|
+
tempFilePath: filePath,
|
|
155
|
+
tempFileName: tempFilename,
|
|
156
|
+
mimetype: mimeType,
|
|
157
|
+
extension: extension,
|
|
158
|
+
size: fileSize,
|
|
159
|
+
sizes: {
|
|
160
|
+
bytes: fileSize,
|
|
161
|
+
kb: fileSize / 1024,
|
|
162
|
+
mb: fileSize / 1024 / 1024,
|
|
163
|
+
gb: fileSize / 1024 / 1024 / 1024,
|
|
164
|
+
},
|
|
165
|
+
write: (to) => {
|
|
166
|
+
return new Promise((resolve, reject) => {
|
|
167
|
+
fs_1.default
|
|
168
|
+
.createReadStream(filePath)
|
|
169
|
+
.pipe(fs_1.default.createWriteStream(to))
|
|
170
|
+
.on("finish", () => {
|
|
171
|
+
return resolve(null);
|
|
172
|
+
})
|
|
173
|
+
.on("error", (err) => {
|
|
174
|
+
return reject(err);
|
|
175
|
+
});
|
|
176
|
+
});
|
|
177
|
+
},
|
|
178
|
+
remove: () => {
|
|
179
|
+
return new Promise((resolve) => setTimeout(() => {
|
|
180
|
+
fs_1.default.unlinkSync(filePath);
|
|
181
|
+
return resolve(null);
|
|
182
|
+
}, 100));
|
|
183
|
+
},
|
|
184
|
+
};
|
|
185
|
+
if (files[fieldName] == null) {
|
|
186
|
+
files[fieldName] = [];
|
|
187
|
+
}
|
|
188
|
+
files[fieldName].push(file);
|
|
189
|
+
if (options.removeTempFile.remove) {
|
|
190
|
+
removeTemp(filePath, options.removeTempFile.ms);
|
|
191
|
+
}
|
|
192
|
+
return resolve(null);
|
|
193
|
+
});
|
|
194
|
+
writeStream.on("error", reject);
|
|
195
|
+
});
|
|
196
|
+
fileWritePromises.push(fileWritePromise);
|
|
197
|
+
});
|
|
198
|
+
bb.on("field", (name, value) => {
|
|
199
|
+
body[name] = value;
|
|
200
|
+
});
|
|
201
|
+
bb.on("finish", () => {
|
|
202
|
+
Promise.all(fileWritePromises)
|
|
203
|
+
.then(() => {
|
|
204
|
+
return resolve({
|
|
205
|
+
files,
|
|
206
|
+
body,
|
|
207
|
+
});
|
|
208
|
+
})
|
|
209
|
+
.catch((err) => {
|
|
210
|
+
return reject(err);
|
|
211
|
+
});
|
|
212
|
+
});
|
|
213
|
+
bb.on("error", (err) => {
|
|
214
|
+
return reject(err);
|
|
215
|
+
});
|
|
216
|
+
req.pipe(bb);
|
|
217
|
+
});
|
|
218
|
+
};
|
|
219
|
+
exports.httpfiles = httpfiles;
|
|
220
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/lib/core/server/http/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -84,21 +84,46 @@ declare class Spear {
|
|
|
84
84
|
/**
|
|
85
85
|
* The 'useGlobalPrefix' method is used to sets a global prefix for all routes in the router.
|
|
86
86
|
*
|
|
87
|
-
*
|
|
88
|
-
*
|
|
87
|
+
* This prefix will be prepended to every route path in the application.
|
|
88
|
+
* If `path` is `null`, `undefined`, or an empty string, no global prefix
|
|
89
|
+
* will be applied.
|
|
89
90
|
*
|
|
90
|
-
* @param {string
|
|
91
|
-
*
|
|
91
|
+
* @param {string} path - The global route prefix.
|
|
92
|
+
*
|
|
93
|
+
* @param {Object} [options] - Additional configuration options.
|
|
94
|
+
* @param {Array<{ path: string; method?: TMethod | TMethod[] }>} [options.exclude]
|
|
95
|
+
* Routes to exclude from the global prefix.
|
|
96
|
+
*
|
|
97
|
+
* @returns {this} Returns the current router instance for chaining.
|
|
98
|
+
*
|
|
99
|
+
* @example
|
|
100
|
+
* import Spear from "tspace-spear";
|
|
101
|
+
* const app = new Spear()
|
|
102
|
+
*
|
|
103
|
+
* app.useGlobalPrefix('/api');
|
|
104
|
+
*
|
|
105
|
+
* @example
|
|
106
|
+
* app.useGlobalPrefix('/api', {
|
|
107
|
+
* exclude: [
|
|
108
|
+
* { path: '/health' },
|
|
109
|
+
* { path: '/auth/login', method: 'POST' }
|
|
110
|
+
* ]
|
|
111
|
+
* });
|
|
92
112
|
*/
|
|
93
|
-
useGlobalPrefix(
|
|
113
|
+
useGlobalPrefix(path: string | null, options?: {
|
|
114
|
+
exclude?: {
|
|
115
|
+
path: string;
|
|
116
|
+
methods?: T.MethodInput[] | '*';
|
|
117
|
+
}[];
|
|
118
|
+
}): this;
|
|
94
119
|
/**
|
|
95
|
-
* The '
|
|
120
|
+
* The 'useAdapter' method is used to switch between different server implementations,
|
|
96
121
|
* such as the native Node.js HTTP server or uWebSockets.js (uWS).
|
|
97
122
|
*
|
|
98
123
|
* @param {T.AdapterServer} adapter - The adapter instance (e.g., HTTP or uWS).
|
|
99
124
|
* @returns {this} Returns the current instance for chaining
|
|
100
125
|
*/
|
|
101
|
-
|
|
126
|
+
useAdapter(adapter: T.AdapterServer): this;
|
|
102
127
|
/**
|
|
103
128
|
* The 'useCluster' method is used cluster run the server
|
|
104
129
|
*
|
|
@@ -299,6 +324,8 @@ declare class Spear {
|
|
|
299
324
|
private _import;
|
|
300
325
|
private _scan;
|
|
301
326
|
private _registerControllers;
|
|
327
|
+
private _createController;
|
|
328
|
+
private _normalizeMiddlewares;
|
|
302
329
|
private _registerMiddlewares;
|
|
303
330
|
private _wrapHandlers;
|
|
304
331
|
private _wrapResponse;
|
|
@@ -308,6 +335,7 @@ declare class Spear {
|
|
|
308
335
|
private _createContext;
|
|
309
336
|
private _normalizePath;
|
|
310
337
|
private _swaggerHandler;
|
|
338
|
+
private _resolveGlobalPrefix;
|
|
311
339
|
}
|
|
312
340
|
export declare class Application extends Spear {
|
|
313
341
|
}
|