@innet/server 2.0.0-alpha.12 → 2.0.0-alpha.13
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 +103 -6
- package/handler/handler.d.ts +3 -1
- package/handler/handler.es6.js +2 -0
- package/handler/handler.js +2 -0
- package/hooks/useRequest/index.es6.js +1 -1
- package/hooks/useRequest/index.js +0 -1
- package/hooks/useRequest/useRequest.d.ts +1 -4
- package/hooks/useRequest/useRequest.es6.js +4 -4
- package/hooks/useRequest/useRequest.js +3 -4
- package/hooks/useResponse/index.es6.js +1 -1
- package/hooks/useResponse/index.js +0 -1
- package/hooks/useResponse/useResponse.d.ts +1 -4
- package/hooks/useResponse/useResponse.es6.js +4 -4
- package/hooks/useResponse/useResponse.js +3 -4
- package/hooks/useServer/useServer.es6.js +3 -1
- package/hooks/useServer/useServer.js +3 -1
- package/index.es6.js +3 -2
- package/index.js +3 -2
- package/package.json +1 -1
- package/plugins/main/api/api.d.ts +2 -0
- package/plugins/main/api/api.es6.js +17 -11
- package/plugins/main/api/api.js +17 -11
- package/plugins/main/index.d.ts +1 -0
- package/plugins/main/index.es6.js +1 -0
- package/plugins/main/index.js +1 -0
- package/plugins/main/preset/index.d.ts +1 -0
- package/plugins/main/preset/index.es6.js +1 -0
- package/plugins/main/preset/index.js +10 -0
- package/plugins/main/preset/preset.d.ts +7 -0
- package/plugins/main/preset/preset.es6.js +26 -0
- package/plugins/main/preset/preset.js +35 -0
- package/plugins/utils/dts/dts.d.ts +2 -1
- package/plugins/utils/dts/dts.es6.js +2 -2
- package/plugins/utils/dts/dts.js +2 -2
- package/utils/generateTypes/generateTypes.d.ts +1 -1
- package/utils/generateTypes/generateTypes.es6.js +13 -2
- package/utils/generateTypes/generateTypes.js +13 -2
package/README.md
CHANGED
|
@@ -107,7 +107,8 @@ You will see a base Open API JSON structure.
|
|
|
107
107
|
[← back](#index)
|
|
108
108
|
|
|
109
109
|
[\<server>](#server)
|
|
110
|
-
[\<api>](#api)
|
|
110
|
+
[\<api>](#api)
|
|
111
|
+
[\<preset>](#preset)
|
|
111
112
|
|
|
112
113
|
---
|
|
113
114
|
|
|
@@ -309,6 +310,75 @@ export default (
|
|
|
309
310
|
)
|
|
310
311
|
```
|
|
311
312
|
|
|
313
|
+
#### include
|
|
314
|
+
|
|
315
|
+
A regular expression scopes the API.
|
|
316
|
+
|
|
317
|
+
*src/app.tsx*
|
|
318
|
+
```typescript jsx
|
|
319
|
+
export default (
|
|
320
|
+
<server>
|
|
321
|
+
<api
|
|
322
|
+
include={/$\/(api|openapi)/}
|
|
323
|
+
/>
|
|
324
|
+
</server>
|
|
325
|
+
)
|
|
326
|
+
```
|
|
327
|
+
|
|
328
|
+
#### exclude
|
|
329
|
+
|
|
330
|
+
A regular expression does not scope the API.
|
|
331
|
+
|
|
332
|
+
*src/app.tsx*
|
|
333
|
+
```typescript jsx
|
|
334
|
+
export default (
|
|
335
|
+
<server>
|
|
336
|
+
<api prefix='/api' />
|
|
337
|
+
<api prefix='/openapi' />
|
|
338
|
+
<api exclude={/$\/(api|openapi)/} />
|
|
339
|
+
</server>
|
|
340
|
+
)
|
|
341
|
+
```
|
|
342
|
+
|
|
343
|
+
### \<preset>
|
|
344
|
+
|
|
345
|
+
[← back](#main)
|
|
346
|
+
|
|
347
|
+
`<preset>` element MUST be placed in `<server>` element.
|
|
348
|
+
This element adds handling of each request.
|
|
349
|
+
|
|
350
|
+
*src/app.tsx*
|
|
351
|
+
```typescript jsx
|
|
352
|
+
export default (
|
|
353
|
+
<server>
|
|
354
|
+
<preset>
|
|
355
|
+
<header
|
|
356
|
+
key='Test'
|
|
357
|
+
value='Ok'
|
|
358
|
+
/>
|
|
359
|
+
</preset>
|
|
360
|
+
</server>
|
|
361
|
+
)
|
|
362
|
+
```
|
|
363
|
+
|
|
364
|
+
Place the element inside [\<api>](#api) to preset it on the api requests scope.
|
|
365
|
+
|
|
366
|
+
*src/app.tsx*
|
|
367
|
+
```typescript jsx
|
|
368
|
+
export default (
|
|
369
|
+
<server>
|
|
370
|
+
<api prefix='/api'>
|
|
371
|
+
<preset>
|
|
372
|
+
<header
|
|
373
|
+
key='Cache-Control'
|
|
374
|
+
value='no-cache, no-store, must-revalidate'
|
|
375
|
+
/>
|
|
376
|
+
</preset>
|
|
377
|
+
</api>
|
|
378
|
+
</server>
|
|
379
|
+
)
|
|
380
|
+
```
|
|
381
|
+
|
|
312
382
|
## Utils
|
|
313
383
|
|
|
314
384
|
This section contains elements of utils.
|
|
@@ -404,16 +474,12 @@ export default (
|
|
|
404
474
|
Use `<dts>` element to add types generation.
|
|
405
475
|
`<dts>` element MUST be placed in `<api>` element.
|
|
406
476
|
|
|
407
|
-
`<dts>` has a required prop of `path`. This is a path of api TypeScript types file, `<dts>` generates it.
|
|
408
|
-
|
|
409
477
|
*src/app.tsx*
|
|
410
478
|
```typescript jsx
|
|
411
479
|
export default (
|
|
412
480
|
<server>
|
|
413
481
|
<api>
|
|
414
|
-
<
|
|
415
|
-
<dts path='src/api.d.ts' />
|
|
416
|
-
</dev>
|
|
482
|
+
<dts />
|
|
417
483
|
</api>
|
|
418
484
|
</server>
|
|
419
485
|
)
|
|
@@ -442,6 +508,37 @@ export function DeleteTodo () {
|
|
|
442
508
|
}
|
|
443
509
|
```
|
|
444
510
|
|
|
511
|
+
#### path
|
|
512
|
+
|
|
513
|
+
This is a path of api TypeScript types file, `<dts>` generates it.
|
|
514
|
+
`'src/api.d.ts'` by default.
|
|
515
|
+
|
|
516
|
+
*src/app.tsx*
|
|
517
|
+
```typescript jsx
|
|
518
|
+
export default (
|
|
519
|
+
<server>
|
|
520
|
+
<api>
|
|
521
|
+
<dts path='src/types.d.ts' />
|
|
522
|
+
</api>
|
|
523
|
+
</server>
|
|
524
|
+
)
|
|
525
|
+
```
|
|
526
|
+
|
|
527
|
+
#### namespace
|
|
528
|
+
|
|
529
|
+
This prop changes namespace for generated types. `'Api'` by default.
|
|
530
|
+
|
|
531
|
+
*src/app.tsx*
|
|
532
|
+
```typescript jsx
|
|
533
|
+
export default (
|
|
534
|
+
<server>
|
|
535
|
+
<api>
|
|
536
|
+
<dts namespace='API' />
|
|
537
|
+
</api>
|
|
538
|
+
</server>
|
|
539
|
+
)
|
|
540
|
+
```
|
|
541
|
+
|
|
445
542
|
### \<blacklist>
|
|
446
543
|
|
|
447
544
|
This element MUST be placed in `<api>` element.
|
package/handler/handler.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { context, type ContextProps, slot, type SlotProps, slots, type SlotsProps } from '@innet/jsx';
|
|
2
2
|
import { arraySync, async } from '@innet/utils';
|
|
3
|
-
import { type ApiProps, type ArrayProps, type BinaryProps, blacklist, type BlacklistProps, type BodyProps, type BooleanProps, cms, type CmsProps, type ContactProps, type CookieProps, type DateProps, type DevProps, type DtsProps, type EndpointProps, type ErrorProps, type FallbackProps, type FieldProps, file, type FileProps, type HeaderProps, type HostProps, type IntegerProps, type LicenseProps, type NullProps, type NumberProps, type ObjectProps, type ParamProps, type ProdProps, protection, type ProtectionProps, type ProxyProps, type RedirectProps, type RequestProps, type ResponseProps, type ServerProps, type StringProps, type SuccessProps, type SwaggerProps, type TagProps, type TupleProps, type UuidProps, type VariableProps, whitelist, type WhitelistProps } from '../plugins';
|
|
3
|
+
import { type ApiProps, type ArrayProps, type BinaryProps, blacklist, type BlacklistProps, type BodyProps, type BooleanProps, cms, type CmsProps, type ContactProps, type CookieProps, type DateProps, type DevProps, type DtsProps, type EndpointProps, type ErrorProps, type FallbackProps, type FieldProps, file, type FileProps, type HeaderProps, type HostProps, type IntegerProps, type LicenseProps, type NullProps, type NumberProps, type ObjectProps, type ParamProps, preset, type PresetProps, type ProdProps, protection, type ProtectionProps, type ProxyProps, type RedirectProps, type RequestProps, type ResponseProps, type ServerProps, type StringProps, type SuccessProps, type SwaggerProps, type TagProps, type TupleProps, type UuidProps, type VariableProps, whitelist, type WhitelistProps } from '../plugins';
|
|
4
4
|
export declare const arrayPlugins: (typeof arraySync)[];
|
|
5
5
|
export declare const JSXPlugins: {
|
|
6
6
|
api: import("innet").HandlerPlugin;
|
|
@@ -29,6 +29,7 @@ export declare const JSXPlugins: {
|
|
|
29
29
|
number: import("innet").HandlerPlugin;
|
|
30
30
|
object: import("innet").HandlerPlugin;
|
|
31
31
|
param: import("innet").HandlerPlugin;
|
|
32
|
+
preset: typeof preset;
|
|
32
33
|
prod: import("innet").HandlerPlugin;
|
|
33
34
|
protection: typeof protection;
|
|
34
35
|
proxy: import("innet").HandlerPlugin;
|
|
@@ -80,6 +81,7 @@ declare global {
|
|
|
80
81
|
number: NumberProps;
|
|
81
82
|
object: ObjectProps;
|
|
82
83
|
param: ParamProps;
|
|
84
|
+
preset: PresetProps;
|
|
83
85
|
prod: ProdProps;
|
|
84
86
|
protection: ProtectionProps;
|
|
85
87
|
proxy: ProxyProps;
|
package/handler/handler.es6.js
CHANGED
|
@@ -27,6 +27,7 @@ import { nullPlugin } from '../plugins/schema/null/null.es6.js';
|
|
|
27
27
|
import { number } from '../plugins/schema/number/number.es6.js';
|
|
28
28
|
import { object } from '../plugins/schema/object/object.es6.js';
|
|
29
29
|
import { param } from '../plugins/main/param/param.es6.js';
|
|
30
|
+
import { preset } from '../plugins/main/preset/preset.es6.js';
|
|
30
31
|
import { prod } from '../plugins/utils/prod/prod.es6.js';
|
|
31
32
|
import { protection } from '../plugins/utils/protection/protection.es6.js';
|
|
32
33
|
import { proxy } from '../plugins/request/proxy/proxy.es6.js';
|
|
@@ -74,6 +75,7 @@ const JSXPlugins = {
|
|
|
74
75
|
number,
|
|
75
76
|
object,
|
|
76
77
|
param,
|
|
78
|
+
preset,
|
|
77
79
|
prod,
|
|
78
80
|
protection,
|
|
79
81
|
proxy,
|
package/handler/handler.js
CHANGED
|
@@ -31,6 +31,7 @@ var _null = require('../plugins/schema/null/null.js');
|
|
|
31
31
|
var number = require('../plugins/schema/number/number.js');
|
|
32
32
|
var object = require('../plugins/schema/object/object.js');
|
|
33
33
|
var param = require('../plugins/main/param/param.js');
|
|
34
|
+
var preset = require('../plugins/main/preset/preset.js');
|
|
34
35
|
var prod = require('../plugins/utils/prod/prod.js');
|
|
35
36
|
var protection = require('../plugins/utils/protection/protection.js');
|
|
36
37
|
var proxy = require('../plugins/request/proxy/proxy.js');
|
|
@@ -78,6 +79,7 @@ const JSXPlugins = {
|
|
|
78
79
|
number: number.number,
|
|
79
80
|
object: object.object,
|
|
80
81
|
param: param.param,
|
|
82
|
+
preset: preset.preset,
|
|
81
83
|
prod: prod.prod,
|
|
82
84
|
protection: protection.protection,
|
|
83
85
|
proxy: proxy.proxy,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export {
|
|
1
|
+
export { useRequest } from './useRequest.es6.js';
|
|
@@ -1,5 +1,2 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
|
-
|
|
3
|
-
import { type IncomingMessage } from 'http';
|
|
4
|
-
export declare const requestContext: Context<IncomingMessage, IncomingMessage | undefined>;
|
|
5
|
-
export declare function useRequest(): IncomingMessage | undefined;
|
|
2
|
+
export declare function useRequest(): import("http").IncomingMessage;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import
|
|
1
|
+
import '../useAction/index.es6.js';
|
|
2
|
+
import { useAction } from '../useAction/useAction.es6.js';
|
|
2
3
|
|
|
3
|
-
const requestContext = new Context();
|
|
4
4
|
function useRequest() {
|
|
5
|
-
return
|
|
5
|
+
return useAction().req;
|
|
6
6
|
}
|
|
7
7
|
|
|
8
|
-
export {
|
|
8
|
+
export { useRequest };
|
|
@@ -2,12 +2,11 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
require('../useAction/index.js');
|
|
6
|
+
var useAction = require('../useAction/useAction.js');
|
|
6
7
|
|
|
7
|
-
const requestContext = new jsx.Context();
|
|
8
8
|
function useRequest() {
|
|
9
|
-
return
|
|
9
|
+
return useAction.useAction().req;
|
|
10
10
|
}
|
|
11
11
|
|
|
12
|
-
exports.requestContext = requestContext;
|
|
13
12
|
exports.useRequest = useRequest;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export {
|
|
1
|
+
export { useResponse } from './useResponse.es6.js';
|
|
@@ -1,5 +1,2 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
|
-
|
|
3
|
-
import { type ServerResponse } from 'http';
|
|
4
|
-
export declare const responseContext: Context<ServerResponse<import("http").IncomingMessage>, ServerResponse<import("http").IncomingMessage> | undefined>;
|
|
5
|
-
export declare function useResponse(): ServerResponse<import("http").IncomingMessage> | undefined;
|
|
2
|
+
export declare function useResponse(): import("http").ServerResponse<import("http").IncomingMessage>;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import
|
|
1
|
+
import '../useAction/index.es6.js';
|
|
2
|
+
import { useAction } from '../useAction/useAction.es6.js';
|
|
2
3
|
|
|
3
|
-
const responseContext = new Context();
|
|
4
4
|
function useResponse() {
|
|
5
|
-
return
|
|
5
|
+
return useAction().res;
|
|
6
6
|
}
|
|
7
7
|
|
|
8
|
-
export {
|
|
8
|
+
export { useResponse };
|
|
@@ -2,12 +2,11 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
require('../useAction/index.js');
|
|
6
|
+
var useAction = require('../useAction/useAction.js');
|
|
6
7
|
|
|
7
|
-
const responseContext = new jsx.Context();
|
|
8
8
|
function useResponse() {
|
|
9
|
-
return
|
|
9
|
+
return useAction.useAction().res;
|
|
10
10
|
}
|
|
11
11
|
|
|
12
|
-
exports.responseContext = responseContext;
|
|
13
12
|
exports.useResponse = useResponse;
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import { Context, useContext } from '@innet/jsx';
|
|
2
|
+
import '../useThrow/index.es6.js';
|
|
3
|
+
import { useThrow } from '../useThrow/useThrow.es6.js';
|
|
2
4
|
|
|
3
5
|
const serverContext = new Context();
|
|
4
6
|
function useServer() {
|
|
5
7
|
const server = useContext(serverContext);
|
|
6
8
|
if (!server) {
|
|
7
|
-
|
|
9
|
+
useThrow('Use <{type}> in <server>');
|
|
8
10
|
}
|
|
9
11
|
return server;
|
|
10
12
|
}
|
|
@@ -3,12 +3,14 @@
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
5
|
var jsx = require('@innet/jsx');
|
|
6
|
+
require('../useThrow/index.js');
|
|
7
|
+
var useThrow = require('../useThrow/useThrow.js');
|
|
6
8
|
|
|
7
9
|
const serverContext = new jsx.Context();
|
|
8
10
|
function useServer() {
|
|
9
11
|
const server = jsx.useContext(serverContext);
|
|
10
12
|
if (!server) {
|
|
11
|
-
|
|
13
|
+
useThrow.useThrow('Use <{type}> in <server>');
|
|
12
14
|
}
|
|
13
15
|
return server;
|
|
14
16
|
}
|
package/index.es6.js
CHANGED
|
@@ -17,6 +17,7 @@ export { request } from './plugins/main/request/request.es6.js';
|
|
|
17
17
|
export { param } from './plugins/main/param/param.es6.js';
|
|
18
18
|
export { body } from './plugins/main/body/body.es6.js';
|
|
19
19
|
export { fallback } from './plugins/main/fallback/fallback.es6.js';
|
|
20
|
+
export { preset, presetCondition } from './plugins/main/preset/preset.es6.js';
|
|
20
21
|
export { object } from './plugins/schema/object/object.es6.js';
|
|
21
22
|
export { field } from './plugins/schema/field/field.es6.js';
|
|
22
23
|
export { number } from './plugins/schema/number/number.es6.js';
|
|
@@ -94,8 +95,8 @@ export { useOneElementError } from './hooks/useOneElementError/useOneElementErro
|
|
|
94
95
|
export { schemaContext, useSchemaContext } from './hooks/useSchemaContext/useSchemaContext.es6.js';
|
|
95
96
|
export { useSchemaType } from './hooks/useSchemaType/useSchemaType.es6.js';
|
|
96
97
|
export { useNewSchema } from './hooks/useNewSchema/useNewSchema.es6.js';
|
|
97
|
-
export {
|
|
98
|
-
export {
|
|
98
|
+
export { useRequest } from './hooks/useRequest/useRequest.es6.js';
|
|
99
|
+
export { useResponse } from './hooks/useResponse/useResponse.es6.js';
|
|
99
100
|
export { paramsContext, useParams } from './hooks/useParams/useParams.es6.js';
|
|
100
101
|
export { useBody } from './hooks/useBody/useBody.es6.js';
|
|
101
102
|
export { useSearch } from './hooks/useSearch/useSearch.es6.js';
|
package/index.js
CHANGED
|
@@ -21,6 +21,7 @@ var request = require('./plugins/main/request/request.js');
|
|
|
21
21
|
var param = require('./plugins/main/param/param.js');
|
|
22
22
|
var body = require('./plugins/main/body/body.js');
|
|
23
23
|
var fallback = require('./plugins/main/fallback/fallback.js');
|
|
24
|
+
var preset = require('./plugins/main/preset/preset.js');
|
|
24
25
|
var object = require('./plugins/schema/object/object.js');
|
|
25
26
|
var field = require('./plugins/schema/field/field.js');
|
|
26
27
|
var number = require('./plugins/schema/number/number.js');
|
|
@@ -140,6 +141,8 @@ exports.request = request.request;
|
|
|
140
141
|
exports.param = param.param;
|
|
141
142
|
exports.body = body.body;
|
|
142
143
|
exports.fallback = fallback.fallback;
|
|
144
|
+
exports.preset = preset.preset;
|
|
145
|
+
exports.presetCondition = preset.presetCondition;
|
|
143
146
|
exports.object = object.object;
|
|
144
147
|
exports.field = field.field;
|
|
145
148
|
exports.number = number.number;
|
|
@@ -229,9 +232,7 @@ exports.schemaContext = useSchemaContext.schemaContext;
|
|
|
229
232
|
exports.useSchemaContext = useSchemaContext.useSchemaContext;
|
|
230
233
|
exports.useSchemaType = useSchemaType.useSchemaType;
|
|
231
234
|
exports.useNewSchema = useNewSchema.useNewSchema;
|
|
232
|
-
exports.requestContext = useRequest.requestContext;
|
|
233
235
|
exports.useRequest = useRequest.useRequest;
|
|
234
|
-
exports.responseContext = useResponse.responseContext;
|
|
235
236
|
exports.useResponse = useResponse.useResponse;
|
|
236
237
|
exports.paramsContext = useParams.paramsContext;
|
|
237
238
|
exports.useParams = useParams.useParams;
|
package/package.json
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import { __rest, __awaiter } from 'tslib';
|
|
2
2
|
import innet, { useNewHandler, useApp } from 'innet';
|
|
3
3
|
import { onDestroy } from 'watch-state';
|
|
4
|
+
import '../preset/index.es6.js';
|
|
4
5
|
import '../../../hooks/index.es6.js';
|
|
5
6
|
import '../../../utils/index.es6.js';
|
|
6
7
|
import '../../../utils/rules/index.es6.js';
|
|
7
8
|
import { useServer } from '../../../hooks/useServer/useServer.es6.js';
|
|
8
9
|
import { apiContext } from '../../../hooks/useApi/useApi.es6.js';
|
|
10
|
+
import { presetCondition } from '../preset/preset.es6.js';
|
|
9
11
|
import { Action } from '../../../utils/action/Action.es6.js';
|
|
10
|
-
import { responseContext } from '../../../hooks/useResponse/useResponse.es6.js';
|
|
11
|
-
import { requestContext } from '../../../hooks/useRequest/useRequest.es6.js';
|
|
12
12
|
import { actionContext } from '../../../hooks/useAction/useAction.es6.js';
|
|
13
13
|
import { JSONString } from '../../../utils/JSONString/JSONString.es6.js';
|
|
14
14
|
import { RulesError } from '../../../utils/rules/helpers.es6.js';
|
|
@@ -19,7 +19,7 @@ const api = () => {
|
|
|
19
19
|
const handler = useNewHandler();
|
|
20
20
|
const { props = {}, children } = useApp();
|
|
21
21
|
const { server } = useServer();
|
|
22
|
-
const { prefix = '', title = '' } = props, rest = __rest(props, ["prefix", "title"]);
|
|
22
|
+
const { prefix = '', title = '', include, exclude } = props, rest = __rest(props, ["prefix", "title", "include", "exclude"]);
|
|
23
23
|
const info = Object.assign(Object.assign({}, rest), { version: (_a = rest.version) !== null && _a !== void 0 ? _a : '0.0.0', title });
|
|
24
24
|
const endpoints = {};
|
|
25
25
|
const docs = {
|
|
@@ -29,7 +29,20 @@ const api = () => {
|
|
|
29
29
|
};
|
|
30
30
|
const requestPlugins = new Set();
|
|
31
31
|
const context = { docs, endpoints, prefix, requestPlugins, refRules: {} };
|
|
32
|
+
const condition = action => {
|
|
33
|
+
const path = action.parsedUrl.path;
|
|
34
|
+
const url = path.endsWith('/') ? path.slice(0, -1) : path;
|
|
35
|
+
if (!url.startsWith(prefix) || (exclude === null || exclude === void 0 ? void 0 : exclude.test(url))) {
|
|
36
|
+
return false;
|
|
37
|
+
}
|
|
38
|
+
if (include && !include.test(url)) {
|
|
39
|
+
return false;
|
|
40
|
+
}
|
|
41
|
+
return true;
|
|
42
|
+
};
|
|
32
43
|
apiContext.set(handler, context);
|
|
44
|
+
presetCondition.set(handler, condition);
|
|
45
|
+
innet(children, handler);
|
|
33
46
|
const listener = (req, res) => __awaiter(void 0, void 0, void 0, function* () {
|
|
34
47
|
var _b, _c, _d, _e, _f, _g;
|
|
35
48
|
if (res.writableEnded)
|
|
@@ -37,7 +50,7 @@ const api = () => {
|
|
|
37
50
|
const action = new Action(req, res);
|
|
38
51
|
const path = action.parsedUrl.path;
|
|
39
52
|
const url = path.endsWith('/') ? path.slice(0, -1) : path;
|
|
40
|
-
if (!
|
|
53
|
+
if (!condition(action)) {
|
|
41
54
|
return;
|
|
42
55
|
}
|
|
43
56
|
for (const requestPlugin of requestPlugins) {
|
|
@@ -45,8 +58,6 @@ const api = () => {
|
|
|
45
58
|
if (!result)
|
|
46
59
|
continue;
|
|
47
60
|
const newHandler = Object.create(handler);
|
|
48
|
-
responseContext.set(newHandler, res);
|
|
49
|
-
requestContext.set(newHandler, req);
|
|
50
61
|
actionContext.set(newHandler, action);
|
|
51
62
|
innet(result, newHandler);
|
|
52
63
|
return;
|
|
@@ -132,8 +143,6 @@ const api = () => {
|
|
|
132
143
|
return true;
|
|
133
144
|
}
|
|
134
145
|
const newHandler = Object.create(runEndpoint.handler);
|
|
135
|
-
responseContext.set(newHandler, res);
|
|
136
|
-
requestContext.set(newHandler, req);
|
|
137
146
|
paramsContext.set(newHandler, params);
|
|
138
147
|
actionContext.set(newHandler, action);
|
|
139
148
|
innet(runEndpoint.content, newHandler);
|
|
@@ -167,8 +176,6 @@ const api = () => {
|
|
|
167
176
|
}
|
|
168
177
|
if (context.fallback) {
|
|
169
178
|
const newHandler = Object.create(context.fallback.handler);
|
|
170
|
-
responseContext.set(newHandler, res);
|
|
171
|
-
requestContext.set(newHandler, req);
|
|
172
179
|
actionContext.set(newHandler, action);
|
|
173
180
|
innet(context.fallback.children, newHandler);
|
|
174
181
|
}
|
|
@@ -181,7 +188,6 @@ const api = () => {
|
|
|
181
188
|
onDestroy(() => {
|
|
182
189
|
server.off('request', listener);
|
|
183
190
|
});
|
|
184
|
-
innet(children, handler);
|
|
185
191
|
};
|
|
186
192
|
|
|
187
193
|
export { api };
|
package/plugins/main/api/api.js
CHANGED
|
@@ -5,14 +5,14 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
5
5
|
var tslib = require('tslib');
|
|
6
6
|
var innet = require('innet');
|
|
7
7
|
var watchState = require('watch-state');
|
|
8
|
+
require('../preset/index.js');
|
|
8
9
|
require('../../../hooks/index.js');
|
|
9
10
|
require('../../../utils/index.js');
|
|
10
11
|
require('../../../utils/rules/index.js');
|
|
11
12
|
var useServer = require('../../../hooks/useServer/useServer.js');
|
|
12
13
|
var useApi = require('../../../hooks/useApi/useApi.js');
|
|
14
|
+
var preset = require('../preset/preset.js');
|
|
13
15
|
var Action = require('../../../utils/action/Action.js');
|
|
14
|
-
var useResponse = require('../../../hooks/useResponse/useResponse.js');
|
|
15
|
-
var useRequest = require('../../../hooks/useRequest/useRequest.js');
|
|
16
16
|
var useAction = require('../../../hooks/useAction/useAction.js');
|
|
17
17
|
var JSONString = require('../../../utils/JSONString/JSONString.js');
|
|
18
18
|
var helpers = require('../../../utils/rules/helpers.js');
|
|
@@ -27,7 +27,7 @@ const api = () => {
|
|
|
27
27
|
const handler = innet.useNewHandler();
|
|
28
28
|
const { props = {}, children } = innet.useApp();
|
|
29
29
|
const { server } = useServer.useServer();
|
|
30
|
-
const { prefix = '', title = '' } = props, rest = tslib.__rest(props, ["prefix", "title"]);
|
|
30
|
+
const { prefix = '', title = '', include, exclude } = props, rest = tslib.__rest(props, ["prefix", "title", "include", "exclude"]);
|
|
31
31
|
const info = Object.assign(Object.assign({}, rest), { version: (_a = rest.version) !== null && _a !== void 0 ? _a : '0.0.0', title });
|
|
32
32
|
const endpoints = {};
|
|
33
33
|
const docs = {
|
|
@@ -37,7 +37,20 @@ const api = () => {
|
|
|
37
37
|
};
|
|
38
38
|
const requestPlugins = new Set();
|
|
39
39
|
const context = { docs, endpoints, prefix, requestPlugins, refRules: {} };
|
|
40
|
+
const condition = action => {
|
|
41
|
+
const path = action.parsedUrl.path;
|
|
42
|
+
const url = path.endsWith('/') ? path.slice(0, -1) : path;
|
|
43
|
+
if (!url.startsWith(prefix) || (exclude === null || exclude === void 0 ? void 0 : exclude.test(url))) {
|
|
44
|
+
return false;
|
|
45
|
+
}
|
|
46
|
+
if (include && !include.test(url)) {
|
|
47
|
+
return false;
|
|
48
|
+
}
|
|
49
|
+
return true;
|
|
50
|
+
};
|
|
40
51
|
useApi.apiContext.set(handler, context);
|
|
52
|
+
preset.presetCondition.set(handler, condition);
|
|
53
|
+
innet__default["default"](children, handler);
|
|
41
54
|
const listener = (req, res) => tslib.__awaiter(void 0, void 0, void 0, function* () {
|
|
42
55
|
var _b, _c, _d, _e, _f, _g;
|
|
43
56
|
if (res.writableEnded)
|
|
@@ -45,7 +58,7 @@ const api = () => {
|
|
|
45
58
|
const action = new Action.Action(req, res);
|
|
46
59
|
const path = action.parsedUrl.path;
|
|
47
60
|
const url = path.endsWith('/') ? path.slice(0, -1) : path;
|
|
48
|
-
if (!
|
|
61
|
+
if (!condition(action)) {
|
|
49
62
|
return;
|
|
50
63
|
}
|
|
51
64
|
for (const requestPlugin of requestPlugins) {
|
|
@@ -53,8 +66,6 @@ const api = () => {
|
|
|
53
66
|
if (!result)
|
|
54
67
|
continue;
|
|
55
68
|
const newHandler = Object.create(handler);
|
|
56
|
-
useResponse.responseContext.set(newHandler, res);
|
|
57
|
-
useRequest.requestContext.set(newHandler, req);
|
|
58
69
|
useAction.actionContext.set(newHandler, action);
|
|
59
70
|
innet__default["default"](result, newHandler);
|
|
60
71
|
return;
|
|
@@ -140,8 +151,6 @@ const api = () => {
|
|
|
140
151
|
return true;
|
|
141
152
|
}
|
|
142
153
|
const newHandler = Object.create(runEndpoint.handler);
|
|
143
|
-
useResponse.responseContext.set(newHandler, res);
|
|
144
|
-
useRequest.requestContext.set(newHandler, req);
|
|
145
154
|
useParams.paramsContext.set(newHandler, params);
|
|
146
155
|
useAction.actionContext.set(newHandler, action);
|
|
147
156
|
innet__default["default"](runEndpoint.content, newHandler);
|
|
@@ -175,8 +184,6 @@ const api = () => {
|
|
|
175
184
|
}
|
|
176
185
|
if (context.fallback) {
|
|
177
186
|
const newHandler = Object.create(context.fallback.handler);
|
|
178
|
-
useResponse.responseContext.set(newHandler, res);
|
|
179
|
-
useRequest.requestContext.set(newHandler, req);
|
|
180
187
|
useAction.actionContext.set(newHandler, action);
|
|
181
188
|
innet__default["default"](context.fallback.children, newHandler);
|
|
182
189
|
}
|
|
@@ -189,7 +196,6 @@ const api = () => {
|
|
|
189
196
|
watchState.onDestroy(() => {
|
|
190
197
|
server.off('request', listener);
|
|
191
198
|
});
|
|
192
|
-
innet__default["default"](children, handler);
|
|
193
199
|
};
|
|
194
200
|
|
|
195
201
|
exports.api = api;
|
package/plugins/main/index.d.ts
CHANGED
package/plugins/main/index.js
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './preset';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { preset, presetCondition } from './preset.es6.js';
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { Context } from '@innet/jsx';
|
|
2
|
+
import { Action } from '../../../utils';
|
|
3
|
+
export interface PresetProps {
|
|
4
|
+
}
|
|
5
|
+
export type PresetCondition = (action: Action) => boolean;
|
|
6
|
+
export declare const presetCondition: Context<PresetCondition, PresetCondition>;
|
|
7
|
+
export declare function preset(): void;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import innet, { useHandler } from 'innet';
|
|
2
|
+
import { Context, useChildren, useContext } from '@innet/jsx';
|
|
3
|
+
import '../../../hooks/index.es6.js';
|
|
4
|
+
import '../../../utils/index.es6.js';
|
|
5
|
+
import { useServer } from '../../../hooks/useServer/useServer.es6.js';
|
|
6
|
+
import { Action } from '../../../utils/action/Action.es6.js';
|
|
7
|
+
import { actionContext } from '../../../hooks/useAction/useAction.es6.js';
|
|
8
|
+
|
|
9
|
+
const presetCondition = new Context(() => true);
|
|
10
|
+
function preset() {
|
|
11
|
+
const { server } = useServer();
|
|
12
|
+
const handler = useHandler();
|
|
13
|
+
const children = useChildren();
|
|
14
|
+
const condition = useContext(presetCondition);
|
|
15
|
+
const listener = (req, res) => {
|
|
16
|
+
const action = new Action(req, res);
|
|
17
|
+
if (condition(action)) {
|
|
18
|
+
const newHandler = Object.create(handler);
|
|
19
|
+
actionContext.set(newHandler, action);
|
|
20
|
+
innet(children, newHandler);
|
|
21
|
+
}
|
|
22
|
+
};
|
|
23
|
+
server.addListener('request', listener);
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
export { preset, presetCondition };
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var innet = require('innet');
|
|
6
|
+
var jsx = require('@innet/jsx');
|
|
7
|
+
require('../../../hooks/index.js');
|
|
8
|
+
require('../../../utils/index.js');
|
|
9
|
+
var useServer = require('../../../hooks/useServer/useServer.js');
|
|
10
|
+
var Action = require('../../../utils/action/Action.js');
|
|
11
|
+
var useAction = require('../../../hooks/useAction/useAction.js');
|
|
12
|
+
|
|
13
|
+
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
14
|
+
|
|
15
|
+
var innet__default = /*#__PURE__*/_interopDefaultLegacy(innet);
|
|
16
|
+
|
|
17
|
+
const presetCondition = new jsx.Context(() => true);
|
|
18
|
+
function preset() {
|
|
19
|
+
const { server } = useServer.useServer();
|
|
20
|
+
const handler = innet.useHandler();
|
|
21
|
+
const children = jsx.useChildren();
|
|
22
|
+
const condition = jsx.useContext(presetCondition);
|
|
23
|
+
const listener = (req, res) => {
|
|
24
|
+
const action = new Action.Action(req, res);
|
|
25
|
+
if (condition(action)) {
|
|
26
|
+
const newHandler = Object.create(handler);
|
|
27
|
+
useAction.actionContext.set(newHandler, action);
|
|
28
|
+
innet__default["default"](children, newHandler);
|
|
29
|
+
}
|
|
30
|
+
};
|
|
31
|
+
server.addListener('request', listener);
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
exports.preset = preset;
|
|
35
|
+
exports.presetCondition = presetCondition;
|
|
@@ -6,9 +6,9 @@ import { useApi } from '../../../hooks/useApi/useApi.es6.js';
|
|
|
6
6
|
import { generateTypes } from '../../../utils/generateTypes/generateTypes.es6.js';
|
|
7
7
|
|
|
8
8
|
const dts = () => {
|
|
9
|
-
const { path } = useProps();
|
|
9
|
+
const { path = 'src/api.d.ts', namespace } = useProps() || {};
|
|
10
10
|
const { docs } = useApi();
|
|
11
|
-
promises.writeFile(path, generateTypes(docs)).catch(e => {
|
|
11
|
+
promises.writeFile(path, generateTypes(docs, namespace)).catch(e => {
|
|
12
12
|
console.error(e);
|
|
13
13
|
});
|
|
14
14
|
};
|
package/plugins/utils/dts/dts.js
CHANGED
|
@@ -10,9 +10,9 @@ var useApi = require('../../../hooks/useApi/useApi.js');
|
|
|
10
10
|
var generateTypes = require('../../../utils/generateTypes/generateTypes.js');
|
|
11
11
|
|
|
12
12
|
const dts = () => {
|
|
13
|
-
const { path } = jsx.useProps();
|
|
13
|
+
const { path = 'src/api.d.ts', namespace } = jsx.useProps() || {};
|
|
14
14
|
const { docs } = useApi.useApi();
|
|
15
|
-
fs.promises.writeFile(path, generateTypes.generateTypes(docs)).catch(e => {
|
|
15
|
+
fs.promises.writeFile(path, generateTypes.generateTypes(docs, namespace)).catch(e => {
|
|
16
16
|
console.error(e);
|
|
17
17
|
});
|
|
18
18
|
};
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { type Document, type SchemaObject } from '../../types';
|
|
2
2
|
export declare function generateSchemaTypes(schema: SchemaObject, spaces?: number): string;
|
|
3
|
-
export declare function generateTypes(docs: Document): string;
|
|
3
|
+
export declare function generateTypes(docs: Document, namespace?: string): string;
|
|
@@ -41,9 +41,20 @@ function generateSchemaTypes(schema, spaces = 2) {
|
|
|
41
41
|
}
|
|
42
42
|
return `${result}${space.slice(0, -2)}}\n`;
|
|
43
43
|
}
|
|
44
|
-
function generateTypes(docs) {
|
|
44
|
+
function generateTypes(docs, namespace = 'Api') {
|
|
45
45
|
var _a;
|
|
46
|
-
let result =
|
|
46
|
+
let result = `declare namespace ${namespace} {
|
|
47
|
+
export interface Bin {
|
|
48
|
+
filename: string
|
|
49
|
+
fieldName: string
|
|
50
|
+
originalFilename: string
|
|
51
|
+
path: string
|
|
52
|
+
type: string
|
|
53
|
+
disposition: string
|
|
54
|
+
size: number
|
|
55
|
+
extension?: string
|
|
56
|
+
}
|
|
57
|
+
`;
|
|
47
58
|
const schemas = (_a = docs.components) === null || _a === void 0 ? void 0 : _a.schemas;
|
|
48
59
|
const paths = docs.paths;
|
|
49
60
|
if (schemas) {
|
|
@@ -45,9 +45,20 @@ function generateSchemaTypes(schema, spaces = 2) {
|
|
|
45
45
|
}
|
|
46
46
|
return `${result}${space.slice(0, -2)}}\n`;
|
|
47
47
|
}
|
|
48
|
-
function generateTypes(docs) {
|
|
48
|
+
function generateTypes(docs, namespace = 'Api') {
|
|
49
49
|
var _a;
|
|
50
|
-
let result =
|
|
50
|
+
let result = `declare namespace ${namespace} {
|
|
51
|
+
export interface Bin {
|
|
52
|
+
filename: string
|
|
53
|
+
fieldName: string
|
|
54
|
+
originalFilename: string
|
|
55
|
+
path: string
|
|
56
|
+
type: string
|
|
57
|
+
disposition: string
|
|
58
|
+
size: number
|
|
59
|
+
extension?: string
|
|
60
|
+
}
|
|
61
|
+
`;
|
|
51
62
|
const schemas = (_a = docs.components) === null || _a === void 0 ? void 0 : _a.schemas;
|
|
52
63
|
const paths = docs.paths;
|
|
53
64
|
if (schemas) {
|