tspace-spear 1.2.7 → 1.2.9-beta.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/README.md +347 -155
- package/dist/cli/generators/app/index.d.ts +1 -0
- package/dist/cli/generators/app/index.js +124 -0
- package/dist/cli/generators/app/index.js.map +1 -0
- package/dist/cli/generators/app/template.d.ts +1 -0
- package/dist/cli/generators/app/template.js +42 -0
- package/dist/cli/generators/app/template.js.map +1 -0
- package/dist/cli/generators/client/template.d.ts +1 -0
- package/dist/cli/generators/client/template.js +30 -0
- package/dist/cli/generators/client/template.js.map +1 -0
- package/dist/cli/generators/controller/index.d.ts +1 -0
- package/dist/cli/generators/controller/index.js +78 -0
- package/dist/cli/generators/controller/index.js.map +1 -0
- package/dist/cli/generators/controller/template.d.ts +1 -0
- package/dist/cli/generators/controller/template.js +108 -0
- package/dist/cli/generators/controller/template.js.map +1 -0
- package/dist/cli/generators/dto/index.d.ts +1 -0
- package/dist/cli/generators/dto/index.js +57 -0
- package/dist/cli/generators/dto/index.js.map +1 -0
- package/dist/cli/generators/dto/template.d.ts +1 -0
- package/dist/cli/generators/dto/template.js +32 -0
- package/dist/cli/generators/dto/template.js.map +1 -0
- package/dist/cli/generators/middleware/index.d.ts +1 -0
- package/dist/cli/generators/middleware/index.js +38 -0
- package/dist/cli/generators/middleware/index.js.map +1 -0
- package/dist/cli/generators/middleware/template.d.ts +1 -0
- package/dist/cli/generators/middleware/template.js +16 -0
- package/dist/cli/generators/middleware/template.js.map +1 -0
- package/dist/cli/generators/module/index.d.ts +1 -0
- package/dist/cli/generators/module/index.js +173 -0
- package/dist/cli/generators/module/index.js.map +1 -0
- package/dist/cli/generators/service/index.d.ts +1 -0
- package/dist/cli/generators/service/index.js +53 -0
- package/dist/cli/generators/service/index.js.map +1 -0
- package/dist/cli/generators/service/template.d.ts +1 -0
- package/dist/cli/generators/service/template.js +74 -0
- package/dist/cli/generators/service/template.js.map +1 -0
- package/dist/cli/generators/shared/index.d.ts +3 -0
- package/dist/cli/generators/shared/index.js +22 -0
- package/dist/cli/generators/shared/index.js.map +1 -0
- package/dist/cli/index.js +55 -96
- package/dist/cli/index.js.map +1 -1
- package/dist/lib/core/client/index.d.ts +13 -43
- package/dist/lib/core/client/index.js +70 -33
- package/dist/lib/core/client/index.js.map +1 -1
- package/dist/lib/core/client/types.d.ts +43 -0
- package/dist/lib/core/client/types.js +3 -0
- package/dist/lib/core/client/types.js.map +1 -0
- package/dist/lib/core/compiler/generator.d.ts +4 -6
- package/dist/lib/core/compiler/generator.js +190 -39
- package/dist/lib/core/compiler/generator.js.map +1 -1
- package/dist/lib/core/compiler/index.d.ts +2 -2
- package/dist/lib/core/compiler/index.js +2 -2
- package/dist/lib/core/compiler/index.js.map +1 -1
- package/dist/lib/core/compiler/pre-routes.d.ts +12 -130
- package/dist/lib/core/compiler/pre-routes.js +13 -35
- package/dist/lib/core/compiler/pre-routes.js.map +1 -1
- package/dist/lib/core/compiler/types.d.ts +25 -0
- package/dist/lib/core/decorators/context.d.ts +78 -8
- package/dist/lib/core/decorators/context.js +84 -9
- package/dist/lib/core/decorators/context.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/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 +40 -2
- package/dist/lib/core/decorators/middleware.js +54 -9
- 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 +3 -1
- 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/package/index.d.ts +11 -0
- package/dist/lib/core/package/index.js +42 -0
- package/dist/lib/core/package/index.js.map +1 -0
- package/dist/lib/core/server/fast-router.d.ts +2 -2
- package/dist/lib/core/server/fast-router.js +17 -3
- package/dist/lib/core/server/fast-router.js.map +1 -1
- package/dist/lib/core/server/index.d.ts +32 -5
- package/dist/lib/core/server/index.js +188 -45
- package/dist/lib/core/server/index.js.map +1 -1
- package/dist/lib/core/server/parser-factory.js +59 -10
- package/dist/lib/core/server/parser-factory.js.map +1 -1
- package/dist/lib/core/server/response.js +21 -1
- package/dist/lib/core/server/response.js.map +1 -1
- package/dist/lib/core/types/index.d.ts +42 -29
- package/package.json +15 -6
|
@@ -22,7 +22,7 @@ type THeaders<T = IncomingHttpHeaders> = {
|
|
|
22
22
|
type TQuery<T = Record<string, string | undefined>> = T;
|
|
23
23
|
type TParams<T = Record<string, string | number | undefined>> = T;
|
|
24
24
|
type TBody<T = Record<string, any>> = T;
|
|
25
|
-
type TCookies<T = Record<string,
|
|
25
|
+
type TCookies<T = Record<string, string | undefined>> = T;
|
|
26
26
|
type TFile = {
|
|
27
27
|
size: number;
|
|
28
28
|
sizes: {
|
|
@@ -54,35 +54,35 @@ type THttpResponder = {
|
|
|
54
54
|
*/
|
|
55
55
|
uWS: any;
|
|
56
56
|
/** 200 OK - Standard successful response */
|
|
57
|
-
ok:
|
|
57
|
+
ok: <T extends Record<string, any>>(data?: T) => T.Response & T;
|
|
58
58
|
/** 201 Created - Resource successfully created */
|
|
59
|
-
created:
|
|
59
|
+
created: <T extends Record<string, any>>(data?: T) => T.Response & T;
|
|
60
60
|
/** 202 Accepted - Request accepted for processing */
|
|
61
|
-
accepted:
|
|
61
|
+
accepted: <T extends Record<string, any>>(data?: T) => T.Response & T;
|
|
62
62
|
/** 204 No Content - Successful request with no response body */
|
|
63
|
-
noContent: (message?:
|
|
63
|
+
noContent: <T extends string>(message?: T) => T.Response & T;
|
|
64
64
|
/** 400 Bad Request - Invalid request from client */
|
|
65
|
-
badRequest: (message?:
|
|
65
|
+
badRequest: <T extends string>(message?: T) => T.Response & T;
|
|
66
66
|
/** 401 Unauthorized - Authentication required or failed */
|
|
67
|
-
unauthorized: (message?:
|
|
67
|
+
unauthorized: <T extends string>(message?: T) => T.Response & T;
|
|
68
68
|
/** 402 Payment Required - Reserved for future/payment flow */
|
|
69
|
-
paymentRequired: (message?:
|
|
69
|
+
paymentRequired: <T extends string>(message?: T) => T.Response & T;
|
|
70
70
|
/** 403 Forbidden - Client does not have access rights */
|
|
71
|
-
forbidden: (message?:
|
|
71
|
+
forbidden: <T extends string>(message?: T) => T.Response & T;
|
|
72
|
+
/** 404 Not Found - Resource does not exist */
|
|
73
|
+
notFound: <T extends string>(message?: T) => T.Response & T;
|
|
72
74
|
/** 422 Unprocessable Entity - Valid request but semantic errors */
|
|
73
|
-
unprocessable: (message?:
|
|
75
|
+
unprocessable: <T extends string>(message?: T) => T.Response & T;
|
|
74
76
|
/** 429 Too Many Requests - Rate limit exceeded */
|
|
75
|
-
tooManyRequests: (message?:
|
|
76
|
-
/** 404 Not Found - Resource does not exist */
|
|
77
|
-
notFound: (message?: string) => any;
|
|
77
|
+
tooManyRequests: <T extends string>(message?: T) => T.Response & T;
|
|
78
78
|
/** 500 Internal Server Error - Generic server failure */
|
|
79
|
-
serverError: (message?:
|
|
79
|
+
serverError: <T extends string>(message?: T) => T.Response & T;
|
|
80
80
|
/** 502 Bad Gateway - Invalid response from upstream server */
|
|
81
|
-
badGateway: (message?:
|
|
81
|
+
badGateway: <T extends string>(message?: T) => T.Response & T;
|
|
82
82
|
/** 503 Service Unavailable - Server temporarily unavailable */
|
|
83
|
-
unavailable: (message?:
|
|
83
|
+
unavailable: <T extends string>(message?: T) => T.Response & T;
|
|
84
84
|
/** 504 Gateway Timeout - Upstream server timeout */
|
|
85
|
-
gatewayTimeout: (message?:
|
|
85
|
+
gatewayTimeout: <T extends string>(message?: T) => T.Response & T;
|
|
86
86
|
/**
|
|
87
87
|
* Serve a media file (video, image, PDF, etc.) from file system.
|
|
88
88
|
* @param filePath Absolute or relative path to media file
|
|
@@ -92,7 +92,7 @@ type THttpResponder = {
|
|
|
92
92
|
* Send JSON response.
|
|
93
93
|
* @param data JSON serializable object
|
|
94
94
|
*/
|
|
95
|
-
json:
|
|
95
|
+
json: <T extends Record<string, any>>(data?: T) => T.Response & T;
|
|
96
96
|
/**
|
|
97
97
|
* Send error response (generic wrapper).
|
|
98
98
|
* @param err Error object or message
|
|
@@ -133,7 +133,7 @@ type THttpResponder = {
|
|
|
133
133
|
*
|
|
134
134
|
* @param data JSON-serializable object to send as response body
|
|
135
135
|
*/
|
|
136
|
-
json:
|
|
136
|
+
json: <T extends Record<string, any>>(data?: T) => T.Response & T;
|
|
137
137
|
/**
|
|
138
138
|
* Send plain text response with the previously set status code.
|
|
139
139
|
*
|
|
@@ -162,6 +162,11 @@ type THttpResponder = {
|
|
|
162
162
|
httpOnly?: boolean;
|
|
163
163
|
expires?: Date;
|
|
164
164
|
}>) => any;
|
|
165
|
+
/**
|
|
166
|
+
* Set HTTP status code.
|
|
167
|
+
* @param code http status code
|
|
168
|
+
*/
|
|
169
|
+
setStatusCode: (code: TStatusCode) => void;
|
|
165
170
|
};
|
|
166
171
|
type TStatusCode = 200 | 201 | 202 | 203 | 204 | 300 | 301 | 302 | 303 | 304 | 400 | 401 | 402 | 403 | 404 | 405 | 406 | 407 | 408 | 409 | 410 | 411 | 412 | 413 | 414 | 415 | 416 | 417 | 418 | 421 | 422 | 423 | 424 | 425 | 426 | 428 | 429 | 431 | 451 | 500 | 501 | 502 | 503 | 504 | 505;
|
|
167
172
|
type TResponse = ServerResponse & THttpResponder;
|
|
@@ -176,7 +181,7 @@ type TRoute = {
|
|
|
176
181
|
params: string[];
|
|
177
182
|
};
|
|
178
183
|
type TMethod = 'get' | 'post' | 'patch' | 'put' | 'delete' | 'all' | 'head' | 'options';
|
|
179
|
-
type TMethodInput = Uppercase<TMethod
|
|
184
|
+
type TMethodInput = Uppercase<Exclude<TMethod, 'all'>>;
|
|
180
185
|
type HandlerUWS = (res: unknown, req: unknown) => void | Promise<void>;
|
|
181
186
|
type UWS = {
|
|
182
187
|
App: () => {
|
|
@@ -244,7 +249,15 @@ type TSwaggerDoc = {
|
|
|
244
249
|
method: string;
|
|
245
250
|
params: string[];
|
|
246
251
|
}[];
|
|
247
|
-
globalPrefix?:
|
|
252
|
+
globalPrefix?: {
|
|
253
|
+
path: string;
|
|
254
|
+
options: {
|
|
255
|
+
exclude: {
|
|
256
|
+
path: string;
|
|
257
|
+
method?: T.MethodInput[] | '*';
|
|
258
|
+
}[];
|
|
259
|
+
};
|
|
260
|
+
};
|
|
248
261
|
specs?: (TSwagger & {
|
|
249
262
|
path: string;
|
|
250
263
|
method: string;
|
|
@@ -318,7 +331,7 @@ type TWSHandler = {
|
|
|
318
331
|
error: (ws: WebSocket & Partial<any>, error: Error) => void;
|
|
319
332
|
};
|
|
320
333
|
export declare namespace T {
|
|
321
|
-
type Context<O extends Partial<Pick<TContextBase, "
|
|
334
|
+
type Context<O extends Partial<Pick<TContextBase, "query" | "params" | "body" | "cookies" | "files">> = {}> = TContext<O>;
|
|
322
335
|
type Adapter = TAdapter;
|
|
323
336
|
type AdapterServer = TAdapterServer;
|
|
324
337
|
type Application = TApplication;
|
|
@@ -328,22 +341,22 @@ export declare namespace T {
|
|
|
328
341
|
type Route = TRoute;
|
|
329
342
|
type Method = TMethod;
|
|
330
343
|
type ErrorFunction = TErrorFunction;
|
|
331
|
-
type
|
|
344
|
+
type HttpResponder = THttpResponder;
|
|
332
345
|
type ContextHandler = TContextHandler;
|
|
333
346
|
type WebSocketHandler = TWSHandler;
|
|
334
347
|
type StatusCode = TStatusCode;
|
|
335
348
|
type MethodInput = TMethodInput;
|
|
336
349
|
type Response = TResponse;
|
|
337
350
|
type Request = TRequest;
|
|
338
|
-
type FileUpload<T = Record<string, TFile[] | undefined>> = T;
|
|
339
|
-
type FileInput = TFile;
|
|
340
|
-
type Cookies<T = Record<string, any>> = TCookies<T>;
|
|
341
|
-
type Params<T = Record<string, string>> = TParams<T>;
|
|
342
|
-
type Query<T = Record<string, string>> = TQuery<T>;
|
|
343
|
-
type Body<T = Record<string, any>> = TBody<T>;
|
|
344
351
|
type Headers<T = IncomingHttpHeaders> = THeaders<T>;
|
|
345
352
|
type Ip = TIp;
|
|
346
353
|
type Ips = TIps;
|
|
354
|
+
type FileInput = TFile;
|
|
355
|
+
type FileUpload<T = Record<string, TFile[] | undefined>> = T;
|
|
356
|
+
type Cookies<T = Record<string, string | undefined>> = TCookies<T>;
|
|
357
|
+
type Params<T = Record<string, string | number | undefined>> = TParams<T>;
|
|
358
|
+
type Query<T = Record<string, string | undefined>> = TQuery<T>;
|
|
359
|
+
type Body<T = Record<string, any>> = TBody<T>;
|
|
347
360
|
namespace Swagger {
|
|
348
361
|
type Spec = TSwagger;
|
|
349
362
|
type Format = TSwaggerFormat;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "tspace-spear",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.9-beta.1",
|
|
4
4
|
"description": "tspace-spear is a lightweight, high-performance API framework for Node.js that leverages the native HTTP server and supports uWebSockets.js (C++) for maximum speed and efficiency.",
|
|
5
5
|
"main": "./dist/lib/index.js",
|
|
6
6
|
"types": "./dist/lib/index.d.ts",
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
"dist"
|
|
9
9
|
],
|
|
10
10
|
"bin": {
|
|
11
|
-
"
|
|
11
|
+
"spear": "./dist/cli/index.js"
|
|
12
12
|
},
|
|
13
13
|
"type": "commonjs",
|
|
14
14
|
"repository": {
|
|
@@ -42,10 +42,10 @@
|
|
|
42
42
|
"beta": "npm run build && npm publish --tag beta",
|
|
43
43
|
"bm:node": "npm run benchmark:node",
|
|
44
44
|
"bm:bun": "npm run benchmark:bun",
|
|
45
|
-
"benchmark:node": "npm run build && node benchmarks/tests/benchmark.node.js",
|
|
46
|
-
"benchmark:bun": "npm run build && bun run benchmarks/tests/benchmark.bun.js",
|
|
45
|
+
"benchmark:node": "npm run build && node --no-warnings --optimize-for-size benchmarks/tests/benchmark.node.js",
|
|
46
|
+
"benchmark:bun": "npm run build && bun run --no-warnings --optimize-for-size benchmarks/tests/benchmark.bun.js",
|
|
47
47
|
"load": "autocannon -c 100 -d 30 -p 10 localhost:5000",
|
|
48
|
-
"test": "ts-mocha ./__tests__/**/*.test.ts --reporter spec --no-timeouts --recursive --reporter mochawesome --reporter-options reportDir=__tests-report__,reportFilename=errors.html,reportTitle=Unit-test --exit",
|
|
48
|
+
"test": "ts-mocha ./__tests__/**/*.test.ts --reporter spec --slow 0 --no-timeouts --recursive --reporter mochawesome --reporter-options reportDir=__tests-report__,reportFilename=errors.html,reportTitle=Unit-test --exit",
|
|
49
49
|
"docs": "npx docsify-cli serve docs"
|
|
50
50
|
},
|
|
51
51
|
"exports": {
|
|
@@ -58,6 +58,11 @@
|
|
|
58
58
|
"types": "./dist/lib/core/client/index.d.ts",
|
|
59
59
|
"import": "./dist/lib/core/client/index.js",
|
|
60
60
|
"require": "./dist/lib/core/client/index.js"
|
|
61
|
+
},
|
|
62
|
+
"./exception": {
|
|
63
|
+
"types": "./dist/lib/core/exception/index.d.ts",
|
|
64
|
+
"import": "./dist/lib/core/exception/index.js",
|
|
65
|
+
"require": "./dist/lib/core/exception/index.js"
|
|
61
66
|
}
|
|
62
67
|
},
|
|
63
68
|
"engines": {
|
|
@@ -67,7 +72,6 @@
|
|
|
67
72
|
"busboy": "1.6.0",
|
|
68
73
|
"fast-querystring": "1.1.2",
|
|
69
74
|
"mime-types": "2.1.35",
|
|
70
|
-
"node-fetch": "2.7.0",
|
|
71
75
|
"on-finished": "2.4.1",
|
|
72
76
|
"reflect-metadata": "0.2.2",
|
|
73
77
|
"swagger-ui-dist": "5.32.0",
|
|
@@ -101,9 +105,14 @@
|
|
|
101
105
|
"elysia": "1.4.28",
|
|
102
106
|
"express": "4.19.2",
|
|
103
107
|
"fastify": "4.28.1",
|
|
108
|
+
"form-data": "4.0.5",
|
|
109
|
+
"graphql": "16.14.0",
|
|
110
|
+
"graphql-http": "1.22.4",
|
|
111
|
+
"graphql-yoga": "5.21.0",
|
|
104
112
|
"hono": "4.12.9",
|
|
105
113
|
"mocha": "10.2.0",
|
|
106
114
|
"mochawesome": "7.1.3",
|
|
115
|
+
"node-fetch": "2.7.0",
|
|
107
116
|
"ts-mocha": "10.0.0",
|
|
108
117
|
"ts-node": "10.9.2",
|
|
109
118
|
"typescript": "5.6.2",
|