@innet/server 2.0.0-alpha.11 → 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.
Files changed (52) hide show
  1. package/README.md +187 -6
  2. package/handler/handler.d.ts +7 -1
  3. package/handler/handler.es6.js +6 -0
  4. package/handler/handler.js +6 -0
  5. package/hooks/useRequest/index.es6.js +1 -1
  6. package/hooks/useRequest/index.js +0 -1
  7. package/hooks/useRequest/useRequest.d.ts +1 -4
  8. package/hooks/useRequest/useRequest.es6.js +4 -4
  9. package/hooks/useRequest/useRequest.js +3 -4
  10. package/hooks/useResponse/index.es6.js +1 -1
  11. package/hooks/useResponse/index.js +0 -1
  12. package/hooks/useResponse/useResponse.d.ts +1 -4
  13. package/hooks/useResponse/useResponse.es6.js +4 -4
  14. package/hooks/useResponse/useResponse.js +3 -4
  15. package/hooks/useServer/useServer.es6.js +3 -1
  16. package/hooks/useServer/useServer.js +3 -1
  17. package/index.es6.js +5 -2
  18. package/index.js +7 -2
  19. package/package.json +1 -1
  20. package/plugins/main/api/api.d.ts +2 -0
  21. package/plugins/main/api/api.es6.js +17 -11
  22. package/plugins/main/api/api.js +17 -11
  23. package/plugins/main/index.d.ts +1 -0
  24. package/plugins/main/index.es6.js +1 -0
  25. package/plugins/main/index.js +1 -0
  26. package/plugins/main/preset/index.d.ts +1 -0
  27. package/plugins/main/preset/index.es6.js +1 -0
  28. package/plugins/main/preset/index.js +10 -0
  29. package/plugins/main/preset/preset.d.ts +7 -0
  30. package/plugins/main/preset/preset.es6.js +26 -0
  31. package/plugins/main/preset/preset.js +35 -0
  32. package/plugins/utils/blacklist/blacklist.d.ts +4 -0
  33. package/plugins/utils/blacklist/blacklist.es6.js +17 -0
  34. package/plugins/utils/blacklist/blacklist.js +21 -0
  35. package/plugins/utils/blacklist/index.d.ts +1 -0
  36. package/plugins/utils/blacklist/index.es6.js +1 -0
  37. package/plugins/utils/blacklist/index.js +9 -0
  38. package/plugins/utils/dts/dts.d.ts +2 -1
  39. package/plugins/utils/dts/dts.es6.js +2 -2
  40. package/plugins/utils/dts/dts.js +2 -2
  41. package/plugins/utils/index.d.ts +2 -0
  42. package/plugins/utils/index.es6.js +2 -0
  43. package/plugins/utils/index.js +2 -0
  44. package/plugins/utils/whitelist/index.d.ts +1 -0
  45. package/plugins/utils/whitelist/index.es6.js +1 -0
  46. package/plugins/utils/whitelist/index.js +9 -0
  47. package/plugins/utils/whitelist/whitelist.d.ts +4 -0
  48. package/plugins/utils/whitelist/whitelist.es6.js +18 -0
  49. package/plugins/utils/whitelist/whitelist.js +22 -0
  50. package/utils/generateTypes/generateTypes.d.ts +1 -1
  51. package/utils/generateTypes/generateTypes.es6.js +13 -2
  52. 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.
@@ -319,6 +389,8 @@ This section contains elements of utils.
319
389
  [\<dev>](#dev)
320
390
  [\<prod>](#prod)
321
391
  [\<dts>](#dts)
392
+ [\<blacklist>](#blacklist)
393
+ [\<whitelist>](#whitelist)
322
394
  [\<protection>](#protection)
323
395
 
324
396
  ---
@@ -402,16 +474,12 @@ export default (
402
474
  Use `<dts>` element to add types generation.
403
475
  `<dts>` element MUST be placed in `<api>` element.
404
476
 
405
- `<dts>` has a required prop of `path`. This is a path of api TypeScript types file, `<dts>` generates it.
406
-
407
477
  *src/app.tsx*
408
478
  ```typescript jsx
409
479
  export default (
410
480
  <server>
411
481
  <api>
412
- <dev>
413
- <dts path='src/api.d.ts' />
414
- </dev>
482
+ <dts />
415
483
  </api>
416
484
  </server>
417
485
  )
@@ -440,6 +508,119 @@ export function DeleteTodo () {
440
508
  }
441
509
  ```
442
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
+
542
+ ### \<blacklist>
543
+
544
+ This element MUST be placed in `<api>` element.
545
+
546
+ [← back](#utils)
547
+
548
+ This element returns own content for a user from IPs list.
549
+
550
+ *src/app.tsx*
551
+ ```typescript jsx
552
+ export default (
553
+ <server>
554
+ <api>
555
+ <blacklist>
556
+ <error />
557
+ </blacklist>
558
+ </api>
559
+ </server>
560
+ )
561
+ ```
562
+
563
+ #### ip
564
+
565
+ `ip` prop sets black IPs. By default, it equals `BLACKLIST_IP` node environment variable.
566
+
567
+ You can split IPs by `,` char.
568
+
569
+ *src/app.tsx*
570
+ ```typescript jsx
571
+ export default (
572
+ <server>
573
+ <api>
574
+ <blacklist
575
+ ip='0.1.2.3,3.2.1.0'>
576
+ <error />
577
+ </blacklist>
578
+ </api>
579
+ </server>
580
+ )
581
+ ```
582
+
583
+ ### \<whitelist>
584
+
585
+ This element MUST be placed in `<api>` element.
586
+
587
+ [← back](#utils)
588
+
589
+ This element returns own content for a user IP, which is not in a list.
590
+
591
+ *src/app.tsx*
592
+ ```typescript jsx
593
+ export default (
594
+ <server>
595
+ <api>
596
+ <whitelist>
597
+ <error />
598
+ </whitelist>
599
+ </api>
600
+ </server>
601
+ )
602
+ ```
603
+
604
+ #### ip
605
+
606
+ `ip` prop sets white IPs. By default, it equals `WHITELIST_IP` node environment variable.
607
+
608
+ You can split IPs by `,` char.
609
+
610
+ *src/app.tsx*
611
+ ```typescript jsx
612
+ export default (
613
+ <server>
614
+ <api>
615
+ <whitelist
616
+ ip='0.1.2.3,3.2.1.0'>
617
+ <error />
618
+ </whitelist>
619
+ </api>
620
+ </server>
621
+ )
622
+ ```
623
+
443
624
  ### \<protection>
444
625
 
445
626
  This element MUST be placed in `<api>` element.
@@ -1,11 +1,12 @@
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, 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 } 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;
7
7
  array: import("innet").HandlerPlugin;
8
8
  binary: import("innet").HandlerPlugin;
9
+ blacklist: typeof blacklist;
9
10
  body: import("innet").HandlerPlugin;
10
11
  boolean: import("innet").HandlerPlugin;
11
12
  cms: typeof cms;
@@ -28,6 +29,7 @@ export declare const JSXPlugins: {
28
29
  number: import("innet").HandlerPlugin;
29
30
  object: import("innet").HandlerPlugin;
30
31
  param: import("innet").HandlerPlugin;
32
+ preset: typeof preset;
31
33
  prod: import("innet").HandlerPlugin;
32
34
  protection: typeof protection;
33
35
  proxy: import("innet").HandlerPlugin;
@@ -44,6 +46,7 @@ export declare const JSXPlugins: {
44
46
  tuple: import("innet").HandlerPlugin;
45
47
  uuid: import("innet").HandlerPlugin;
46
48
  variable: import("innet").HandlerPlugin;
49
+ whitelist: typeof whitelist;
47
50
  };
48
51
  export declare const fnPlugins: import("innet").Plugin[];
49
52
  export declare const objectPlugins: import("innet").Plugin[];
@@ -55,6 +58,7 @@ declare global {
55
58
  api: ApiProps;
56
59
  array: ArrayProps;
57
60
  binary: BinaryProps;
61
+ blacklist: BlacklistProps;
58
62
  body: BodyProps;
59
63
  boolean: BooleanProps;
60
64
  cms: CmsProps;
@@ -77,6 +81,7 @@ declare global {
77
81
  number: NumberProps;
78
82
  object: ObjectProps;
79
83
  param: ParamProps;
84
+ preset: PresetProps;
80
85
  prod: ProdProps;
81
86
  protection: ProtectionProps;
82
87
  proxy: ProxyProps;
@@ -93,6 +98,7 @@ declare global {
93
98
  tuple: TupleProps;
94
99
  uuid: UuidProps;
95
100
  variable: VariableProps;
101
+ whitelist: WhitelistProps;
96
102
  }
97
103
  }
98
104
  }
@@ -5,6 +5,7 @@ import '../plugins/index.es6.js';
5
5
  import { api } from '../plugins/main/api/api.es6.js';
6
6
  import { array } from '../plugins/schema/array/array.es6.js';
7
7
  import { binary } from '../plugins/schema/binary/binary.es6.js';
8
+ import { blacklist } from '../plugins/utils/blacklist/blacklist.es6.js';
8
9
  import { body } from '../plugins/main/body/body.es6.js';
9
10
  import { boolean } from '../plugins/schema/boolean/boolean.es6.js';
10
11
  import { cms } from '../plugins/request/cms/cms.es6.js';
@@ -26,6 +27,7 @@ import { nullPlugin } from '../plugins/schema/null/null.es6.js';
26
27
  import { number } from '../plugins/schema/number/number.es6.js';
27
28
  import { object } from '../plugins/schema/object/object.es6.js';
28
29
  import { param } from '../plugins/main/param/param.es6.js';
30
+ import { preset } from '../plugins/main/preset/preset.es6.js';
29
31
  import { prod } from '../plugins/utils/prod/prod.es6.js';
30
32
  import { protection } from '../plugins/utils/protection/protection.es6.js';
31
33
  import { proxy } from '../plugins/request/proxy/proxy.es6.js';
@@ -40,6 +42,7 @@ import { tag } from '../plugins/main/tag/tag.es6.js';
40
42
  import { tuple } from '../plugins/schema/tuple/tuple.es6.js';
41
43
  import { uuid } from '../plugins/schema/uuid/uuid.es6.js';
42
44
  import { variable } from '../plugins/main/variable/variable.es6.js';
45
+ import { whitelist } from '../plugins/utils/whitelist/whitelist.es6.js';
43
46
  import { serverFn } from '../plugins/handler/serverFn/serverFn.es6.js';
44
47
 
45
48
  const arrayPlugins = [
@@ -49,6 +52,7 @@ const JSXPlugins = {
49
52
  api,
50
53
  array,
51
54
  binary,
55
+ blacklist,
52
56
  body,
53
57
  boolean,
54
58
  cms,
@@ -71,6 +75,7 @@ const JSXPlugins = {
71
75
  number,
72
76
  object,
73
77
  param,
78
+ preset,
74
79
  prod,
75
80
  protection,
76
81
  proxy,
@@ -87,6 +92,7 @@ const JSXPlugins = {
87
92
  tuple,
88
93
  uuid,
89
94
  variable,
95
+ whitelist,
90
96
  };
91
97
  const fnPlugins = [
92
98
  serverFn,
@@ -9,6 +9,7 @@ require('../plugins/index.js');
9
9
  var api = require('../plugins/main/api/api.js');
10
10
  var array = require('../plugins/schema/array/array.js');
11
11
  var binary = require('../plugins/schema/binary/binary.js');
12
+ var blacklist = require('../plugins/utils/blacklist/blacklist.js');
12
13
  var body = require('../plugins/main/body/body.js');
13
14
  var boolean = require('../plugins/schema/boolean/boolean.js');
14
15
  var cms = require('../plugins/request/cms/cms.js');
@@ -30,6 +31,7 @@ var _null = require('../plugins/schema/null/null.js');
30
31
  var number = require('../plugins/schema/number/number.js');
31
32
  var object = require('../plugins/schema/object/object.js');
32
33
  var param = require('../plugins/main/param/param.js');
34
+ var preset = require('../plugins/main/preset/preset.js');
33
35
  var prod = require('../plugins/utils/prod/prod.js');
34
36
  var protection = require('../plugins/utils/protection/protection.js');
35
37
  var proxy = require('../plugins/request/proxy/proxy.js');
@@ -44,6 +46,7 @@ var tag = require('../plugins/main/tag/tag.js');
44
46
  var tuple = require('../plugins/schema/tuple/tuple.js');
45
47
  var uuid = require('../plugins/schema/uuid/uuid.js');
46
48
  var variable = require('../plugins/main/variable/variable.js');
49
+ var whitelist = require('../plugins/utils/whitelist/whitelist.js');
47
50
  var serverFn = require('../plugins/handler/serverFn/serverFn.js');
48
51
 
49
52
  const arrayPlugins = [
@@ -53,6 +56,7 @@ const JSXPlugins = {
53
56
  api: api.api,
54
57
  array: array.array,
55
58
  binary: binary.binary,
59
+ blacklist: blacklist.blacklist,
56
60
  body: body.body,
57
61
  boolean: boolean.boolean,
58
62
  cms: cms.cms,
@@ -75,6 +79,7 @@ const JSXPlugins = {
75
79
  number: number.number,
76
80
  object: object.object,
77
81
  param: param.param,
82
+ preset: preset.preset,
78
83
  prod: prod.prod,
79
84
  protection: protection.protection,
80
85
  proxy: proxy.proxy,
@@ -91,6 +96,7 @@ const JSXPlugins = {
91
96
  tuple: tuple.tuple,
92
97
  uuid: uuid.uuid,
93
98
  variable: variable.variable,
99
+ whitelist: whitelist.whitelist,
94
100
  };
95
101
  const fnPlugins = [
96
102
  serverFn.serverFn,
@@ -1 +1 @@
1
- export { requestContext, useRequest } from './useRequest.es6.js';
1
+ export { useRequest } from './useRequest.es6.js';
@@ -6,5 +6,4 @@ var useRequest = require('./useRequest.js');
6
6
 
7
7
 
8
8
 
9
- exports.requestContext = useRequest.requestContext;
10
9
  exports.useRequest = useRequest.useRequest;
@@ -1,5 +1,2 @@
1
1
  /// <reference types="node" />
2
- import { Context } from '@innet/jsx';
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 { Context, useContext } from '@innet/jsx';
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 useContext(requestContext);
5
+ return useAction().req;
6
6
  }
7
7
 
8
- export { requestContext, useRequest };
8
+ export { useRequest };
@@ -2,12 +2,11 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var jsx = require('@innet/jsx');
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 jsx.useContext(requestContext);
9
+ return useAction.useAction().req;
10
10
  }
11
11
 
12
- exports.requestContext = requestContext;
13
12
  exports.useRequest = useRequest;
@@ -1 +1 @@
1
- export { responseContext, useResponse } from './useResponse.es6.js';
1
+ export { useResponse } from './useResponse.es6.js';
@@ -6,5 +6,4 @@ var useResponse = require('./useResponse.js');
6
6
 
7
7
 
8
8
 
9
- exports.responseContext = useResponse.responseContext;
10
9
  exports.useResponse = useResponse.useResponse;
@@ -1,5 +1,2 @@
1
1
  /// <reference types="node" />
2
- import { Context } from '@innet/jsx';
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 { Context, useContext } from '@innet/jsx';
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 useContext(responseContext);
5
+ return useAction().res;
6
6
  }
7
7
 
8
- export { responseContext, useResponse };
8
+ export { useResponse };
@@ -2,12 +2,11 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var jsx = require('@innet/jsx');
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 jsx.useContext(responseContext);
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
- throw Error('Use `useServer` in <server>');
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
- throw Error('Use `useServer` in <server>');
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';
@@ -42,6 +43,8 @@ export { dts } from './plugins/utils/dts/dts.es6.js';
42
43
  export { dev } from './plugins/utils/dev/dev.es6.js';
43
44
  export { prod } from './plugins/utils/prod/prod.es6.js';
44
45
  export { protection } from './plugins/utils/protection/protection.es6.js';
46
+ export { blacklist } from './plugins/utils/blacklist/blacklist.es6.js';
47
+ export { whitelist } from './plugins/utils/whitelist/whitelist.es6.js';
45
48
  export { serverFn } from './plugins/handler/serverFn/serverFn.es6.js';
46
49
  export { EMPTY_SEARCH, parseSearch } from './utils/parseSearch/parseSearch.es6.js';
47
50
  export { stringifySearch } from './utils/stringifySearch/stringifySearch.es6.js';
@@ -92,8 +95,8 @@ export { useOneElementError } from './hooks/useOneElementError/useOneElementErro
92
95
  export { schemaContext, useSchemaContext } from './hooks/useSchemaContext/useSchemaContext.es6.js';
93
96
  export { useSchemaType } from './hooks/useSchemaType/useSchemaType.es6.js';
94
97
  export { useNewSchema } from './hooks/useNewSchema/useNewSchema.es6.js';
95
- export { requestContext, useRequest } from './hooks/useRequest/useRequest.es6.js';
96
- export { responseContext, useResponse } from './hooks/useResponse/useResponse.es6.js';
98
+ export { useRequest } from './hooks/useRequest/useRequest.es6.js';
99
+ export { useResponse } from './hooks/useResponse/useResponse.es6.js';
97
100
  export { paramsContext, useParams } from './hooks/useParams/useParams.es6.js';
98
101
  export { useBody } from './hooks/useBody/useBody.es6.js';
99
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');
@@ -46,6 +47,8 @@ var dts = require('./plugins/utils/dts/dts.js');
46
47
  var dev = require('./plugins/utils/dev/dev.js');
47
48
  var prod = require('./plugins/utils/prod/prod.js');
48
49
  var protection = require('./plugins/utils/protection/protection.js');
50
+ var blacklist = require('./plugins/utils/blacklist/blacklist.js');
51
+ var whitelist = require('./plugins/utils/whitelist/whitelist.js');
49
52
  var serverFn = require('./plugins/handler/serverFn/serverFn.js');
50
53
  var parseSearch = require('./utils/parseSearch/parseSearch.js');
51
54
  var stringifySearch = require('./utils/stringifySearch/stringifySearch.js');
@@ -138,6 +141,8 @@ exports.request = request.request;
138
141
  exports.param = param.param;
139
142
  exports.body = body.body;
140
143
  exports.fallback = fallback.fallback;
144
+ exports.preset = preset.preset;
145
+ exports.presetCondition = preset.presetCondition;
141
146
  exports.object = object.object;
142
147
  exports.field = field.field;
143
148
  exports.number = number.number;
@@ -166,6 +171,8 @@ exports.dts = dts.dts;
166
171
  exports.dev = dev.dev;
167
172
  exports.prod = prod.prod;
168
173
  exports.protection = protection.protection;
174
+ exports.blacklist = blacklist.blacklist;
175
+ exports.whitelist = whitelist.whitelist;
169
176
  exports.serverFn = serverFn.serverFn;
170
177
  exports.EMPTY_SEARCH = parseSearch.EMPTY_SEARCH;
171
178
  exports.parseSearch = parseSearch.parseSearch;
@@ -225,9 +232,7 @@ exports.schemaContext = useSchemaContext.schemaContext;
225
232
  exports.useSchemaContext = useSchemaContext.useSchemaContext;
226
233
  exports.useSchemaType = useSchemaType.useSchemaType;
227
234
  exports.useNewSchema = useNewSchema.useNewSchema;
228
- exports.requestContext = useRequest.requestContext;
229
235
  exports.useRequest = useRequest.useRequest;
230
- exports.responseContext = useResponse.responseContext;
231
236
  exports.useResponse = useResponse.useResponse;
232
237
  exports.paramsContext = useParams.paramsContext;
233
238
  exports.useParams = useParams.useParams;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@innet/server",
3
- "version": "2.0.0-alpha.11",
3
+ "version": "2.0.0-alpha.13",
4
4
  "description": "Create server-side application with innet",
5
5
  "main": "index.js",
6
6
  "module": "index.es6.js",
@@ -18,5 +18,7 @@ export interface ApiProps {
18
18
  termsOfService?: string;
19
19
  /** URL path prefix scopes the API. */
20
20
  prefix?: string;
21
+ include?: RegExp;
22
+ exclude?: RegExp;
21
23
  }
22
24
  export declare const api: HandlerPlugin;
@@ -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 (!url.startsWith(prefix)) {
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 };
@@ -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 (!url.startsWith(prefix)) {
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;
@@ -11,3 +11,4 @@ export * from './request';
11
11
  export * from './param';
12
12
  export * from './body';
13
13
  export * from './fallback';
14
+ export * from './preset';
@@ -11,3 +11,4 @@ import './request/index.es6.js';
11
11
  import './param/index.es6.js';
12
12
  import './body/index.es6.js';
13
13
  import './fallback/index.es6.js';
14
+ import './preset/index.es6.js';
@@ -13,4 +13,5 @@ require('./request/index.js');
13
13
  require('./param/index.js');
14
14
  require('./body/index.js');
15
15
  require('./fallback/index.js');
16
+ require('./preset/index.js');
16
17
 
@@ -0,0 +1 @@
1
+ export * from './preset';
@@ -0,0 +1 @@
1
+ export { preset, presetCondition } from './preset.es6.js';
@@ -0,0 +1,10 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var preset = require('./preset.js');
6
+
7
+
8
+
9
+ exports.preset = preset.preset;
10
+ exports.presetCondition = preset.presetCondition;
@@ -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;
@@ -0,0 +1,4 @@
1
+ export interface BlacklistProps {
2
+ ip?: string | string[];
3
+ }
4
+ export declare function blacklist(): void;
@@ -0,0 +1,17 @@
1
+ import { useProps, useChildren } from '@innet/jsx';
2
+ import '../../../hooks/index.es6.js';
3
+ import { useRequestPlugin } from '../../../hooks/useRequestPlugin/useRequestPlugin.es6.js';
4
+
5
+ function blacklist() {
6
+ const { ip = process.env.BLACKLIST_IP, } = useProps() || {};
7
+ const children = useChildren();
8
+ const ips = typeof ip === 'string' ? ip.split(',') : ip;
9
+ useRequestPlugin(action => {
10
+ console.log(action.clientIp);
11
+ if (!action.clientIp || (ips === null || ips === void 0 ? void 0 : ips.includes(action.clientIp))) {
12
+ return children;
13
+ }
14
+ });
15
+ }
16
+
17
+ export { blacklist };
@@ -0,0 +1,21 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var jsx = require('@innet/jsx');
6
+ require('../../../hooks/index.js');
7
+ var useRequestPlugin = require('../../../hooks/useRequestPlugin/useRequestPlugin.js');
8
+
9
+ function blacklist() {
10
+ const { ip = process.env.BLACKLIST_IP, } = jsx.useProps() || {};
11
+ const children = jsx.useChildren();
12
+ const ips = typeof ip === 'string' ? ip.split(',') : ip;
13
+ useRequestPlugin.useRequestPlugin(action => {
14
+ console.log(action.clientIp);
15
+ if (!action.clientIp || (ips === null || ips === void 0 ? void 0 : ips.includes(action.clientIp))) {
16
+ return children;
17
+ }
18
+ });
19
+ }
20
+
21
+ exports.blacklist = blacklist;
@@ -0,0 +1 @@
1
+ export * from './blacklist';
@@ -0,0 +1 @@
1
+ export { blacklist } from './blacklist.es6.js';
@@ -0,0 +1,9 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var blacklist = require('./blacklist.js');
6
+
7
+
8
+
9
+ exports.blacklist = blacklist.blacklist;
@@ -1,5 +1,6 @@
1
1
  import { type HandlerPlugin } from 'innet';
2
2
  export interface DtsProps {
3
- path: string;
3
+ path?: string;
4
+ namespace?: string;
4
5
  }
5
6
  export declare const dts: HandlerPlugin;
@@ -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
  };
@@ -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
  };
@@ -3,3 +3,5 @@ export * from './dts';
3
3
  export * from './dev';
4
4
  export * from './prod';
5
5
  export * from './protection';
6
+ export * from './blacklist';
7
+ export * from './whitelist';
@@ -3,3 +3,5 @@ import './dts/index.es6.js';
3
3
  import './dev/index.es6.js';
4
4
  import './prod/index.es6.js';
5
5
  import './protection/index.es6.js';
6
+ import './blacklist/index.es6.js';
7
+ import './whitelist/index.es6.js';
@@ -5,4 +5,6 @@ require('./dts/index.js');
5
5
  require('./dev/index.js');
6
6
  require('./prod/index.js');
7
7
  require('./protection/index.js');
8
+ require('./blacklist/index.js');
9
+ require('./whitelist/index.js');
8
10
 
@@ -0,0 +1 @@
1
+ export * from './whitelist';
@@ -0,0 +1 @@
1
+ export { whitelist } from './whitelist.es6.js';
@@ -0,0 +1,9 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var whitelist = require('./whitelist.js');
6
+
7
+
8
+
9
+ exports.whitelist = whitelist.whitelist;
@@ -0,0 +1,4 @@
1
+ export interface WhitelistProps {
2
+ ip?: string | string[];
3
+ }
4
+ export declare function whitelist(): void;
@@ -0,0 +1,18 @@
1
+ import { useProps, useChildren } from '@innet/jsx';
2
+ import '../../../hooks/index.es6.js';
3
+ import { useRequestPlugin } from '../../../hooks/useRequestPlugin/useRequestPlugin.es6.js';
4
+
5
+ function whitelist() {
6
+ const { ip = process.env.WHITELIST_IP, } = useProps() || {};
7
+ const children = useChildren();
8
+ const ips = typeof ip === 'string' ? ip.split(',') : ip;
9
+ if (!ips)
10
+ return;
11
+ useRequestPlugin(action => {
12
+ if (!action.clientIp || !ips.includes(action.clientIp)) {
13
+ return children;
14
+ }
15
+ });
16
+ }
17
+
18
+ export { whitelist };
@@ -0,0 +1,22 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var jsx = require('@innet/jsx');
6
+ require('../../../hooks/index.js');
7
+ var useRequestPlugin = require('../../../hooks/useRequestPlugin/useRequestPlugin.js');
8
+
9
+ function whitelist() {
10
+ const { ip = process.env.WHITELIST_IP, } = jsx.useProps() || {};
11
+ const children = jsx.useChildren();
12
+ const ips = typeof ip === 'string' ? ip.split(',') : ip;
13
+ if (!ips)
14
+ return;
15
+ useRequestPlugin.useRequestPlugin(action => {
16
+ if (!action.clientIp || !ips.includes(action.clientIp)) {
17
+ return children;
18
+ }
19
+ });
20
+ }
21
+
22
+ exports.whitelist = whitelist;
@@ -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 = 'declare namespace Api {\n export interface Bin {\n filename: string\n fieldName: string\n originalFilename: string\n path: string\n type: string\n disposition: string\n size: number\n extension?: string\n }\n';
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 = 'declare namespace Api {\n export interface Bin {\n filename: string\n fieldName: string\n originalFilename: string\n path: string\n type: string\n disposition: string\n size: number\n extension?: string\n }\n';
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) {