@toa.io/extensions.exposition 1.0.0-alpha.152 → 1.0.0-alpha.153

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 (114) hide show
  1. package/components/identity.bans/operations/tsconfig.tsbuildinfo +1 -1
  2. package/components/identity.basic/operations/tsconfig.tsbuildinfo +1 -1
  3. package/components/identity.federation/operations/tsconfig.tsbuildinfo +1 -1
  4. package/components/identity.keys/operations/tsconfig.tsbuildinfo +1 -1
  5. package/components/identity.otp/operations/tsconfig.tsbuildinfo +1 -1
  6. package/components/identity.passkeys/operations/tsconfig.tsbuildinfo +1 -1
  7. package/components/identity.roles/operations/tsconfig.tsbuildinfo +1 -1
  8. package/components/identity.tokens/operations/tsconfig.tsbuildinfo +1 -1
  9. package/documentation/io.md +42 -2
  10. package/documentation/notes/desync.jpg +0 -0
  11. package/documentation/notes/peers.md +59 -0
  12. package/documentation/notes/throttling.md +82 -0
  13. package/features/io.throttle.feature +40 -0
  14. package/package.json +3 -3
  15. package/schemas/io/throttle.cos.yaml +36 -0
  16. package/source/Directive.test.ts +4 -2
  17. package/source/Directive.ts +16 -1
  18. package/source/Gateway.ts +2 -0
  19. package/source/HTTP/Server.ts +47 -21
  20. package/source/HTTP/exceptions.ts +21 -15
  21. package/source/RTD/Directives.ts +4 -0
  22. package/source/RTD/Tree.ts +4 -0
  23. package/source/directives/io/Directive.ts +5 -2
  24. package/source/directives/io/IO.ts +17 -5
  25. package/source/directives/io/Input.ts +1 -1
  26. package/source/directives/io/Output.ts +1 -1
  27. package/source/directives/io/Throttle.ts +32 -0
  28. package/source/directives/io/lib/throttle/Configuration.test.ts +40 -0
  29. package/source/directives/io/lib/throttle/Configuration.ts +58 -0
  30. package/source/directives/io/lib/throttle/Interval.ts +31 -0
  31. package/source/directives/io/lib/throttle/Keys.ts +40 -0
  32. package/source/directives/io/lib/throttle/Quota.ts +22 -0
  33. package/source/directives/io/lib/throttle/Quotas.test.ts +132 -0
  34. package/source/directives/io/lib/throttle/Quotas.ts +83 -0
  35. package/source/directives/io/lib/throttle/components/Component.ts +5 -0
  36. package/source/directives/io/lib/throttle/components/IP.ts +40 -0
  37. package/source/directives/io/lib/throttle/components/Path.ts +8 -0
  38. package/source/directives/io/lib/throttle/components/index.ts +13 -0
  39. package/source/directives/io/lib/throttle/conditions/Condition.ts +5 -0
  40. package/source/directives/io/lib/throttle/conditions/Status.ts +17 -0
  41. package/source/directives/io/lib/throttle/conditions/index.ts +11 -0
  42. package/source/directives/io/lib/throttle/index.ts +2 -0
  43. package/source/directives/io/schemas.test.ts +9 -0
  44. package/source/directives/io/schemas.ts +3 -0
  45. package/transpiled/Directive.d.ts +3 -0
  46. package/transpiled/Directive.js +12 -1
  47. package/transpiled/Directive.js.map +1 -1
  48. package/transpiled/Gateway.js +1 -0
  49. package/transpiled/Gateway.js.map +1 -1
  50. package/transpiled/HTTP/Server.js +41 -16
  51. package/transpiled/HTTP/Server.js.map +1 -1
  52. package/transpiled/HTTP/exceptions.d.ts +11 -8
  53. package/transpiled/HTTP/exceptions.js +23 -17
  54. package/transpiled/HTTP/exceptions.js.map +1 -1
  55. package/transpiled/RTD/Directives.d.ts +3 -0
  56. package/transpiled/RTD/Tree.d.ts +1 -0
  57. package/transpiled/RTD/Tree.js +3 -0
  58. package/transpiled/RTD/Tree.js.map +1 -1
  59. package/transpiled/directives/io/Directive.d.ts +5 -2
  60. package/transpiled/directives/io/IO.d.ts +4 -2
  61. package/transpiled/directives/io/IO.js +13 -3
  62. package/transpiled/directives/io/IO.js.map +1 -1
  63. package/transpiled/directives/io/Input.d.ts +1 -1
  64. package/transpiled/directives/io/Input.js +1 -1
  65. package/transpiled/directives/io/Input.js.map +1 -1
  66. package/transpiled/directives/io/Output.d.ts +1 -1
  67. package/transpiled/directives/io/Output.js +1 -1
  68. package/transpiled/directives/io/Output.js.map +1 -1
  69. package/transpiled/directives/io/Throttle.d.ts +11 -0
  70. package/transpiled/directives/io/Throttle.js +51 -0
  71. package/transpiled/directives/io/Throttle.js.map +1 -0
  72. package/transpiled/directives/io/lib/throttle/Configuration.d.ts +23 -0
  73. package/transpiled/directives/io/lib/throttle/Configuration.js +27 -0
  74. package/transpiled/directives/io/lib/throttle/Configuration.js.map +1 -0
  75. package/transpiled/directives/io/lib/throttle/Interval.d.ts +9 -0
  76. package/transpiled/directives/io/lib/throttle/Interval.js +31 -0
  77. package/transpiled/directives/io/lib/throttle/Interval.js.map +1 -0
  78. package/transpiled/directives/io/lib/throttle/Keys.d.ts +12 -0
  79. package/transpiled/directives/io/lib/throttle/Keys.js +34 -0
  80. package/transpiled/directives/io/lib/throttle/Keys.js.map +1 -0
  81. package/transpiled/directives/io/lib/throttle/Quota.d.ts +8 -0
  82. package/transpiled/directives/io/lib/throttle/Quota.js +22 -0
  83. package/transpiled/directives/io/lib/throttle/Quota.js.map +1 -0
  84. package/transpiled/directives/io/lib/throttle/Quotas.d.ts +26 -0
  85. package/transpiled/directives/io/lib/throttle/Quotas.js +61 -0
  86. package/transpiled/directives/io/lib/throttle/Quotas.js.map +1 -0
  87. package/transpiled/directives/io/lib/throttle/components/Component.d.ts +4 -0
  88. package/transpiled/directives/io/lib/throttle/components/Component.js +3 -0
  89. package/transpiled/directives/io/lib/throttle/components/Component.js.map +1 -0
  90. package/transpiled/directives/io/lib/throttle/components/IP.d.ts +6 -0
  91. package/transpiled/directives/io/lib/throttle/components/IP.js +33 -0
  92. package/transpiled/directives/io/lib/throttle/components/IP.js.map +1 -0
  93. package/transpiled/directives/io/lib/throttle/components/Path.d.ts +5 -0
  94. package/transpiled/directives/io/lib/throttle/components/Path.js +10 -0
  95. package/transpiled/directives/io/lib/throttle/components/Path.js.map +1 -0
  96. package/transpiled/directives/io/lib/throttle/components/index.d.ts +5 -0
  97. package/transpiled/directives/io/lib/throttle/components/index.js +10 -0
  98. package/transpiled/directives/io/lib/throttle/components/index.js.map +1 -0
  99. package/transpiled/directives/io/lib/throttle/conditions/Condition.d.ts +4 -0
  100. package/transpiled/directives/io/lib/throttle/conditions/Condition.js +3 -0
  101. package/transpiled/directives/io/lib/throttle/conditions/Condition.js.map +1 -0
  102. package/transpiled/directives/io/lib/throttle/conditions/Status.d.ts +7 -0
  103. package/transpiled/directives/io/lib/throttle/conditions/Status.js +19 -0
  104. package/transpiled/directives/io/lib/throttle/conditions/Status.js.map +1 -0
  105. package/transpiled/directives/io/lib/throttle/conditions/index.d.ts +5 -0
  106. package/transpiled/directives/io/lib/throttle/conditions/index.js +8 -0
  107. package/transpiled/directives/io/lib/throttle/conditions/index.js.map +1 -0
  108. package/transpiled/directives/io/lib/throttle/index.d.ts +2 -0
  109. package/transpiled/directives/io/lib/throttle/index.js +8 -0
  110. package/transpiled/directives/io/lib/throttle/index.js.map +1 -0
  111. package/transpiled/directives/io/schemas.d.ts +2 -0
  112. package/transpiled/directives/io/schemas.js +2 -1
  113. package/transpiled/directives/io/schemas.js.map +1 -1
  114. package/transpiled/tsconfig.tsbuildinfo +1 -1
@@ -0,0 +1,83 @@
1
+ import { console } from 'openspan'
2
+ import { Keys } from './Keys'
3
+ import { Quota } from './Quota'
4
+ import { Interval } from './Interval'
5
+ import type { Configuration } from './Configuration'
6
+ import type { Input as Context, Output } from '../../../../io'
7
+
8
+ export class Quotas {
9
+ private readonly requests: number
10
+ private readonly cooldown: number
11
+ private readonly interval: Interval
12
+ private readonly keys: Keys
13
+ private readonly quotas: Record<string, Quota | undefined> = {}
14
+ private readonly blocked: Record<string, boolean | undefined> = {}
15
+
16
+ public constructor (options: Options) {
17
+ this.requests = options.requests
18
+ this.cooldown = options.cooldown
19
+ this.interval = options.interval
20
+ this.keys = options.keys
21
+
22
+ this.interval.on('tick', this.reset)
23
+ }
24
+
25
+ public static create (configuration: Configuration): Quotas {
26
+ const requests = configuration.requests
27
+ const cooldown = configuration.cooldown
28
+ const keys = Keys.create(configuration.key, configuration.condition)
29
+ const interval = new Interval(configuration.interval)
30
+
31
+ return new this({ requests, cooldown, keys, interval })
32
+ }
33
+
34
+ public ok (context: Context): boolean {
35
+ const key = this.keys.get(context)
36
+
37
+ return this.blocked[key] !== true
38
+ }
39
+
40
+ public use (input: Context, output: Output): void {
41
+ const key = this.keys.match(input, output)
42
+
43
+ if (key === null)
44
+ return
45
+
46
+ this.quotas[key] ??= new Quota(this.requests)
47
+
48
+ const ok = this.quotas[key]!.use()
49
+
50
+ if (!ok)
51
+ this.block(key)
52
+ }
53
+
54
+ public dispose (): void {
55
+ this.interval.dispose()
56
+ }
57
+
58
+ private readonly reset = (): void => {
59
+ for (const key in this.quotas) {
60
+ const quota = this.quotas[key]!
61
+
62
+ if (quota.idle)
63
+ delete this.quotas[key]
64
+ else
65
+ quota.reset()
66
+ }
67
+ }
68
+
69
+ private block (key: string): void {
70
+ this.blocked[key] = true
71
+
72
+ setTimeout(() => delete this.blocked[key], this.cooldown)
73
+
74
+ console.info('Quota exceeded, key blocked', { key, cooldown: this.cooldown })
75
+ }
76
+ }
77
+
78
+ interface Options {
79
+ keys: Keys
80
+ requests: number
81
+ cooldown: number
82
+ interval: Interval
83
+ }
@@ -0,0 +1,5 @@
1
+ import type { Input as Context } from '../../../../../io'
2
+
3
+ export interface Component {
4
+ get: (context: Context) => string
5
+ }
@@ -0,0 +1,40 @@
1
+ import type { Context } from '../../../../../HTTP'
2
+ import type { Component } from './Component'
3
+
4
+ export class IP implements Component {
5
+ public get (context: Context): string {
6
+ return this.xff(context) ?? context.request.socket.remoteAddress ?? ''
7
+ }
8
+
9
+ private xff (context: Context): string | undefined {
10
+ const xff = context.request.headers['x-forwarded-for']
11
+
12
+ if (xff === undefined || typeof xff === 'string')
13
+ return xff
14
+
15
+ let ip
16
+
17
+ for (const value of xff) {
18
+ ip = value.trim()
19
+
20
+ if (!local(ip))
21
+ return ip
22
+ }
23
+
24
+ return ip // last otherwise
25
+ }
26
+ }
27
+
28
+ function local (ip: string): boolean {
29
+ return (
30
+ ip === 'unknown' ||
31
+ ip === '' ||
32
+ ip === '127.0.0.1' ||
33
+ ip === '::1' ||
34
+ ip.startsWith('10.') ||
35
+ ip.startsWith('192.168.') ||
36
+ ip.match(/^172\.(1[6-9]|2[0-9]|3[0-1])\./) !== null ||
37
+ ip.startsWith('fd') ||
38
+ ip.startsWith('fe80:')
39
+ )
40
+ }
@@ -0,0 +1,8 @@
1
+ import type { Context } from '../../../../../HTTP'
2
+ import type { Component } from './Component'
3
+
4
+ export class Path implements Component {
5
+ public get (context: Context): string {
6
+ return context.url.pathname
7
+ }
8
+ }
@@ -0,0 +1,13 @@
1
+ import { Path } from './Path'
2
+ import { IP } from './IP'
3
+ import type { KeyComponentMethod } from '../Configuration'
4
+ import type { Component } from './Component'
5
+
6
+ type Constructor<T> = new (options: unknown) => T
7
+
8
+ export const Components: Record<KeyComponentMethod, Constructor<Component>> = {
9
+ ip: IP,
10
+ path: Path
11
+ }
12
+
13
+ export type { Component }
@@ -0,0 +1,5 @@
1
+ import type { Input, Output } from '../../../../../io'
2
+
3
+ export interface Condition {
4
+ match: (input: Input, output: Output) => boolean
5
+ }
@@ -0,0 +1,17 @@
1
+ import assert from 'node:assert'
2
+ import type { Input, Output } from '../../../../../io'
3
+ import type { Condition } from './Condition'
4
+
5
+ export class Status implements Condition {
6
+ private readonly status: number
7
+
8
+ public constructor (status: unknown) {
9
+ assert.ok(typeof status === 'number', 'Status must be a number')
10
+
11
+ this.status = status
12
+ }
13
+
14
+ public match (input: Input, output: Output): boolean {
15
+ return output?.status === this.status
16
+ }
17
+ }
@@ -0,0 +1,11 @@
1
+ import { Status } from './Status'
2
+ import type { KeyConditionMethod } from '../Configuration'
3
+ import type { Condition } from './Condition'
4
+
5
+ type Constructor<T> = new (options: unknown) => T
6
+
7
+ export const Conditions: Record<KeyConditionMethod, Constructor<Condition>> = {
8
+ status: Status
9
+ }
10
+
11
+ export type { Condition }
@@ -0,0 +1,2 @@
1
+ export { Quotas } from './Quotas'
2
+ export { parse, type Configuration, type Declaration } from './Configuration'
@@ -0,0 +1,9 @@
1
+ import * as schemas from './schemas'
2
+
3
+ describe('throttle', () => {
4
+ const rest = { requests: 1, interval: 1, cooldown: 1 }
5
+
6
+ it('should validate key', () => {
7
+ expect(() => schemas.throttle.validate({ key: 'ip', ...rest })).not.toThrow()
8
+ })
9
+ })
@@ -2,6 +2,8 @@ import { resolve } from 'node:path'
2
2
  import schemas, { type Schema } from '@toa.io/schemas'
3
3
  import type { Permissions as InputPermissions } from './Input'
4
4
  import type { Permissions as OutputPermissions } from './Output'
5
+ import type { Declaration as ThrottleDeclaration } from './lib/throttle'
6
+
5
7
  import type { Message } from './Message'
6
8
 
7
9
  const path = resolve(__dirname, '../../../schemas/io')
@@ -10,3 +12,4 @@ const namespace = schemas.namespace(path)
10
12
  export const message: Schema<Message | Message[]> = namespace.schema('message')
11
13
  export const input: Schema<InputPermissions> = namespace.schema('input')
12
14
  export const output: Schema<OutputPermissions> = namespace.schema('output')
15
+ export const throttle: Schema<ThrottleDeclaration> = namespace.schema('throttle')
@@ -7,12 +7,15 @@ export declare class Directives implements RTD.Directives {
7
7
  constructor(sets: RTD.DirectiveSet[]);
8
8
  preflight(context: Context, parameters: RTD.Parameter[]): Promise<Output>;
9
9
  settle(context: Context, response: OutgoingMessage): Promise<void>;
10
+ dispose(): void;
10
11
  }
11
12
  export declare class DirectivesFactory implements RTD.DirectiveFactory {
12
13
  private readonly remotes;
13
14
  private readonly families;
14
15
  private readonly mandatory;
16
+ private readonly instances;
15
17
  constructor(families: RTD.DirectiveFamily[], remotes: Remotes);
16
18
  create(declarations: RTD.syntax.Directive[]): Directives;
19
+ dispose(): void;
17
20
  }
18
21
  export declare const shortcuts: RTD.syntax.Shortcuts;
@@ -26,12 +26,17 @@ class Directives {
26
26
  if (set.family.settle !== undefined)
27
27
  await set.family.settle(set.directives, context, response);
28
28
  }
29
+ dispose() {
30
+ for (const set of this.sets)
31
+ set.family.dispose?.(set.directives);
32
+ }
29
33
  }
30
34
  exports.Directives = Directives;
31
35
  class DirectivesFactory {
32
36
  remotes;
33
37
  families = {};
34
38
  mandatory = [];
39
+ instances = [];
35
40
  constructor(families, remotes) {
36
41
  for (const family of families) {
37
42
  this.families[family.name] = family;
@@ -64,7 +69,13 @@ class DirectivesFactory {
64
69
  family: this.families[family],
65
70
  directives
66
71
  });
67
- return new Directives(sets);
72
+ const directives = new Directives(sets);
73
+ this.instances.push(directives);
74
+ return directives;
75
+ }
76
+ dispose() {
77
+ for (const directives of this.instances)
78
+ directives.dispose();
68
79
  }
69
80
  }
70
81
  exports.DirectivesFactory = DirectivesFactory;
@@ -1 +1 @@
1
- {"version":3,"file":"Directive.js","sourceRoot":"","sources":["../source/Directive.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Directive.js","sourceRoot":"","sources":["../source/Directive.ts"],"names":[],"mappings":"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"}
@@ -68,6 +68,7 @@ class Gateway extends core_1.Connector {
68
68
  openspan_1.console.info('Gateway started');
69
69
  }
70
70
  dispose() {
71
+ this.tree.dispose();
71
72
  openspan_1.console.info('Gateway is closed');
72
73
  }
73
74
  match(context) {
@@ -1 +1 @@
1
- {"version":3,"file":"Gateway.js","sourceRoot":"","sources":["../source/Gateway.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Gateway.js","sourceRoot":"","sources":["../source/Gateway.ts"],"names":[],"mappings":"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"}
@@ -52,7 +52,10 @@ class Server extends core_1.Connector {
52
52
  this.server.on('request', (req, res) => this.listener(req, res));
53
53
  this.server.on('clientError', (error, socket) => {
54
54
  openspan_1.console.warn('Client connection error', error);
55
- socket.end('HTTP/1.1 400 Bad Request\r\n\r\n');
55
+ if (socket.writable)
56
+ socket.end('HTTP/1.1 400 Bad Request\r\n\r\n');
57
+ else
58
+ socket.destroy();
56
59
  });
57
60
  }
58
61
  static create(options) {
@@ -79,14 +82,22 @@ class Server extends core_1.Connector {
79
82
  openspan_1.console.info('Stopped');
80
83
  }
81
84
  listener(request, response) {
85
+ request.once('error', (error) => {
86
+ openspan_1.console.warn('Request error', errorAttributes(request, error));
87
+ if (!response.writableEnded)
88
+ response.destroy();
89
+ });
90
+ request.socket.once('error', (error) => {
91
+ openspan_1.console.warn('Socket error', errorAttributes(request, error));
92
+ if (!response.writableEnded)
93
+ response.destroy();
94
+ });
82
95
  const invalid = validate(request);
83
96
  if (invalid !== null) {
84
97
  openspan_1.console.warn('Invalid request', errorAttributes(request, invalid));
85
98
  response.writeHead(400).end();
86
99
  return;
87
100
  }
88
- request.once('error', (error) => openspan_1.console.warn('Request error', errorAttributes(request, error)));
89
- request.socket.once('error', (error) => openspan_1.console.warn('Socket error', errorAttributes(request, error)));
90
101
  if (request.method === undefined || !this.properties.methods.has(request.method)) {
91
102
  response.writeHead(501).end();
92
103
  return;
@@ -110,7 +121,6 @@ class Server extends core_1.Connector {
110
121
  .finally(() => {
111
122
  request.removeAllListeners('error');
112
123
  request.socket.removeAllListeners('error');
113
- response.removeAllListeners('error');
114
124
  });
115
125
  }
116
126
  success(context, response) {
@@ -131,18 +141,33 @@ class Server extends core_1.Connector {
131
141
  }
132
142
  fail(context, response) {
133
143
  return async (exception) => {
134
- if (!context.request.complete)
135
- await adam(context.request);
136
- response.statusCode = exception instanceof exceptions_1.Exception ? exception.status : 500;
137
- const message = { status: response.statusCode };
138
- if (context.encoder === null)
139
- message.body = undefined;
140
- else if (exception instanceof exceptions_1.ClientError || this.properties.debug)
141
- message.body =
142
- exception instanceof exceptions_1.Exception
143
- ? exception.body
144
- : exception.stack ?? exception.message;
145
- await (0, messages_1.write)(context, response, message);
144
+ try {
145
+ if (!context.request.complete)
146
+ await adam(context.request);
147
+ if (!response.writableEnded) {
148
+ response.statusCode = exception instanceof exceptions_1.Exception ? exception.status : 500;
149
+ const message = { status: response.statusCode };
150
+ // eslint-disable-next-line max-depth
151
+ if (context.encoder === null)
152
+ message.body = undefined;
153
+ else if (exception instanceof exceptions_1.ClientError || this.properties.debug)
154
+ message.body =
155
+ exception instanceof exceptions_1.Exception
156
+ ? exception.body
157
+ : exception.stack ?? exception.message;
158
+ await (0, messages_1.write)(context, response, message);
159
+ }
160
+ }
161
+ catch (final) {
162
+ openspan_1.console.error('Error in error handler', final);
163
+ if (!response.writableEnded)
164
+ try {
165
+ response.writeHead(500).end();
166
+ }
167
+ catch (e) {
168
+ // Nothing more we can do
169
+ }
170
+ }
146
171
  };
147
172
  }
148
173
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Server.js","sourceRoot":"","sources":["../../source/HTTP/Server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Server.js","sourceRoot":"","sources":["../../source/HTTP/Server.ts"],"names":[],"mappings":"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"}
@@ -17,20 +17,14 @@ export declare class Forbidden extends ClientError {
17
17
  export declare class NotFound extends ClientError {
18
18
  constructor(body?: any);
19
19
  }
20
- export declare class Conflict extends ClientError {
21
- constructor(body?: any);
22
- }
23
- export declare class UnprocessableEntity extends ClientError {
24
- constructor(body?: any);
25
- }
26
20
  export declare class MethodNotAllowed extends ClientError {
27
21
  constructor();
28
22
  }
29
23
  export declare class NotAcceptable extends ClientError {
30
24
  constructor();
31
25
  }
32
- export declare class UnsupportedMediaType extends ClientError {
33
- constructor();
26
+ export declare class Conflict extends ClientError {
27
+ constructor(body?: any);
34
28
  }
35
29
  export declare class PreconditionFailed extends ClientError {
36
30
  constructor();
@@ -38,3 +32,12 @@ export declare class PreconditionFailed extends ClientError {
38
32
  export declare class RequestEntityTooLarge extends ClientError {
39
33
  constructor(body?: any);
40
34
  }
35
+ export declare class UnsupportedMediaType extends ClientError {
36
+ constructor();
37
+ }
38
+ export declare class UnprocessableEntity extends ClientError {
39
+ constructor(body?: any);
40
+ }
41
+ export declare class TooManyRequests extends ClientError {
42
+ constructor();
43
+ }
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.RequestEntityTooLarge = exports.PreconditionFailed = exports.UnsupportedMediaType = exports.NotAcceptable = exports.MethodNotAllowed = exports.UnprocessableEntity = exports.Conflict = exports.NotFound = exports.Forbidden = exports.Unauthorized = exports.BadRequest = exports.ClientError = exports.Exception = void 0;
3
+ exports.TooManyRequests = exports.UnprocessableEntity = exports.UnsupportedMediaType = exports.RequestEntityTooLarge = exports.PreconditionFailed = exports.Conflict = exports.NotAcceptable = exports.MethodNotAllowed = exports.NotFound = exports.Forbidden = exports.Unauthorized = exports.BadRequest = exports.ClientError = exports.Exception = void 0;
4
4
  class Exception extends Error {
5
5
  status;
6
6
  body;
@@ -38,18 +38,6 @@ class NotFound extends ClientError {
38
38
  }
39
39
  }
40
40
  exports.NotFound = NotFound;
41
- class Conflict extends ClientError {
42
- constructor(body) {
43
- super(409, body);
44
- }
45
- }
46
- exports.Conflict = Conflict;
47
- class UnprocessableEntity extends ClientError {
48
- constructor(body) {
49
- super(422, body);
50
- }
51
- }
52
- exports.UnprocessableEntity = UnprocessableEntity;
53
41
  class MethodNotAllowed extends ClientError {
54
42
  constructor() {
55
43
  super(405);
@@ -62,12 +50,12 @@ class NotAcceptable extends ClientError {
62
50
  }
63
51
  }
64
52
  exports.NotAcceptable = NotAcceptable;
65
- class UnsupportedMediaType extends ClientError {
66
- constructor() {
67
- super(415);
53
+ class Conflict extends ClientError {
54
+ constructor(body) {
55
+ super(409, body);
68
56
  }
69
57
  }
70
- exports.UnsupportedMediaType = UnsupportedMediaType;
58
+ exports.Conflict = Conflict;
71
59
  class PreconditionFailed extends ClientError {
72
60
  constructor() {
73
61
  super(412);
@@ -80,4 +68,22 @@ class RequestEntityTooLarge extends ClientError {
80
68
  }
81
69
  }
82
70
  exports.RequestEntityTooLarge = RequestEntityTooLarge;
71
+ class UnsupportedMediaType extends ClientError {
72
+ constructor() {
73
+ super(415);
74
+ }
75
+ }
76
+ exports.UnsupportedMediaType = UnsupportedMediaType;
77
+ class UnprocessableEntity extends ClientError {
78
+ constructor(body) {
79
+ super(422, body);
80
+ }
81
+ }
82
+ exports.UnprocessableEntity = UnprocessableEntity;
83
+ class TooManyRequests extends ClientError {
84
+ constructor() {
85
+ super(429);
86
+ }
87
+ }
88
+ exports.TooManyRequests = TooManyRequests;
83
89
  //# sourceMappingURL=exceptions.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"exceptions.js","sourceRoot":"","sources":["../../source/HTTP/exceptions.ts"],"names":[],"mappings":";;;AAAA,MAAa,SAAU,SAAQ,KAAK;IAClB,MAAM,CAAQ;IACd,IAAI,CAAM;IAE1B,YAAuB,MAAc,EAAE,IAAU;QAC/C,KAAK,EAAE,CAAA;QACP,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACpB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;IAClB,CAAC;CACF;AATD,8BASC;AAED,MAAa,WAAY,SAAQ,SAAS;CACzC;AADD,kCACC;AAED,MAAa,UAAW,SAAQ,WAAW;IACzC,YAAoB,IAAU;QAC5B,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;IAClB,CAAC;CACF;AAJD,gCAIC;AAED,MAAa,YAAa,SAAQ,WAAW;IAC3C,YAAoB,IAAU;QAC5B,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;IAClB,CAAC;CACF;AAJD,oCAIC;AAED,MAAa,SAAU,SAAQ,WAAW;IACxC,YAAoB,IAAU;QAC5B,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;IAClB,CAAC;CACF;AAJD,8BAIC;AAED,MAAa,QAAS,SAAQ,WAAW;IACvC,YAAoB,IAAU;QAC5B,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;IAClB,CAAC;CACF;AAJD,4BAIC;AAED,MAAa,QAAS,SAAQ,WAAW;IACvC,YAAoB,IAAU;QAC5B,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;IAClB,CAAC;CACF;AAJD,4BAIC;AAED,MAAa,mBAAoB,SAAQ,WAAW;IAClD,YAAoB,IAAU;QAC5B,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;IAClB,CAAC;CACF;AAJD,kDAIC;AAED,MAAa,gBAAiB,SAAQ,WAAW;IAC/C;QACE,KAAK,CAAC,GAAG,CAAC,CAAA;IACZ,CAAC;CACF;AAJD,4CAIC;AAED,MAAa,aAAc,SAAQ,WAAW;IAC5C;QACE,KAAK,CAAC,GAAG,CAAC,CAAA;IACZ,CAAC;CACF;AAJD,sCAIC;AAED,MAAa,oBAAqB,SAAQ,WAAW;IACnD;QACE,KAAK,CAAC,GAAG,CAAC,CAAA;IACZ,CAAC;CACF;AAJD,oDAIC;AAED,MAAa,kBAAmB,SAAQ,WAAW;IACjD;QACE,KAAK,CAAC,GAAG,CAAC,CAAA;IACZ,CAAC;CACF;AAJD,gDAIC;AAED,MAAa,qBAAsB,SAAQ,WAAW;IACpD,YAAoB,IAAU;QAC5B,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;IAClB,CAAC;CACF;AAJD,sDAIC"}
1
+ {"version":3,"file":"exceptions.js","sourceRoot":"","sources":["../../source/HTTP/exceptions.ts"],"names":[],"mappings":";;;AAAA,MAAa,SAAU,SAAQ,KAAK;IAClB,MAAM,CAAQ;IACd,IAAI,CAAM;IAE1B,YAAuB,MAAc,EAAE,IAAU;QAC/C,KAAK,EAAE,CAAA;QACP,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACpB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;IAClB,CAAC;CACF;AATD,8BASC;AAED,MAAa,WAAY,SAAQ,SAAS;CACzC;AADD,kCACC;AAED,MAAa,UAAW,SAAQ,WAAW;IACzC,YAAoB,IAAU;QAC5B,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;IAClB,CAAC;CACF;AAJD,gCAIC;AAED,MAAa,YAAa,SAAQ,WAAW;IAC3C,YAAoB,IAAU;QAC5B,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;IAClB,CAAC;CACF;AAJD,oCAIC;AAED,MAAa,SAAU,SAAQ,WAAW;IACxC,YAAoB,IAAU;QAC5B,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;IAClB,CAAC;CACF;AAJD,8BAIC;AAED,MAAa,QAAS,SAAQ,WAAW;IACvC,YAAoB,IAAU;QAC5B,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;IAClB,CAAC;CACF;AAJD,4BAIC;AAED,MAAa,gBAAiB,SAAQ,WAAW;IAC/C;QACE,KAAK,CAAC,GAAG,CAAC,CAAA;IACZ,CAAC;CACF;AAJD,4CAIC;AAED,MAAa,aAAc,SAAQ,WAAW;IAC5C;QACE,KAAK,CAAC,GAAG,CAAC,CAAA;IACZ,CAAC;CACF;AAJD,sCAIC;AAED,MAAa,QAAS,SAAQ,WAAW;IACvC,YAAoB,IAAU;QAC5B,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;IAClB,CAAC;CACF;AAJD,4BAIC;AAED,MAAa,kBAAmB,SAAQ,WAAW;IACjD;QACE,KAAK,CAAC,GAAG,CAAC,CAAA;IACZ,CAAC;CACF;AAJD,gDAIC;AAED,MAAa,qBAAsB,SAAQ,WAAW;IACpD,YAAoB,IAAU;QAC5B,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;IAClB,CAAC;CACF;AAJD,sDAIC;AAED,MAAa,oBAAqB,SAAQ,WAAW;IACnD;QACE,KAAK,CAAC,GAAG,CAAC,CAAA;IACZ,CAAC;CACF;AAJD,oDAIC;AAED,MAAa,mBAAoB,SAAQ,WAAW;IAClD,YAAoB,IAAU;QAC5B,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;IAClB,CAAC;CACF;AAJD,kDAIC;AAED,MAAa,eAAgB,SAAQ,WAAW;IAC9C;QACE,KAAK,CAAC,GAAG,CAAC,CAAA;IACZ,CAAC;CACF;AAJD,0CAIC"}
@@ -5,9 +5,11 @@ import type { Output } from '../io';
5
5
  export interface Directives {
6
6
  preflight: (context: Context, parameters: Parameter[]) => Promise<Output>;
7
7
  settle: (context: Context, response: OutgoingMessage) => Promise<void>;
8
+ dispose: () => void;
8
9
  }
9
10
  export interface DirectiveFactory {
10
11
  create: (directives: syntax.Directive[]) => Directives;
12
+ dispose: () => void;
11
13
  }
12
14
  export interface DirectiveSet {
13
15
  family: DirectiveFamily;
@@ -19,4 +21,5 @@ export interface DirectiveFamily<TDirective = any, TExtension = any> {
19
21
  create: (name: string, ...rest: any[]) => TDirective;
20
22
  preflight?: (directives: TDirective[], request: Context & TExtension, parameters: Parameter[]) => Output | Promise<Output>;
21
23
  settle?: (directives: TDirective[], request: Context & TExtension, response: OutgoingMessage) => void | Promise<void>;
24
+ dispose?: (directives: TDirective[]) => void;
22
25
  }
@@ -10,5 +10,6 @@ export declare class Tree {
10
10
  constructor(node: syntax.Node, endpoints: EndpointsFactory, directives: DirectiveFactory);
11
11
  match(path: string): Match | null;
12
12
  merge(node: syntax.Node, extension: unknown): void;
13
+ dispose(): void;
13
14
  private createNode;
14
15
  }
@@ -27,6 +27,9 @@ class Tree {
27
27
  const branch = this.createNode(node, !PROTECTED, extension);
28
28
  this.trunk.merge(branch);
29
29
  }
30
+ dispose() {
31
+ this.directives.dispose();
32
+ }
30
33
  createNode(node, protect, extension) {
31
34
  const context = {
32
35
  protected: protect,
@@ -1 +1 @@
1
- {"version":3,"file":"Tree.js","sourceRoot":"","sources":["../../source/RTD/Tree.ts"],"names":[],"mappings":";;;AAAA,uCAAsC;AACtC,uCAAoC;AAQpC,MAAa,IAAI;IACE,IAAI,CAAa;IACjB,KAAK,CAAM;IACX,SAAS,CAAkB;IAC3B,UAAU,CAAkB;IAE7C,YACC,IAAiB,EAAE,SAA2B,EAAE,UAA4B;QAC3E,IAAI,CAAC,SAAS,GAAG,SAAS,CAAA;QAC1B,IAAI,CAAC,UAAU,GAAG,UAAU,CAAA;QAC5B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,SAAS,CAAC,CAAA;QAC7C,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;IAClB,CAAC;IAEM,KAAK,CAAE,IAAY;QACxB,IAAI,IAAI,KAAK,GAAG;YACd,OAAO;gBACL,IAAI,EAAE,IAAI,CAAC,KAAK;gBAChB,UAAU,EAAE,EAAE;aACf,CAAA;QAEH,MAAM,SAAS,GAAG,IAAA,kBAAQ,EAAC,IAAI,CAAC,CAAA;QAEhC,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;IACpC,CAAC;IAEM,KAAK,CAAE,IAAiB,EAAE,SAAkB;QACjD,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC,CAAA;QAE3D,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;IAC1B,CAAC;IAEO,UAAU,CACjB,IAAiB,EAAE,OAAgB,EAAE,SAAmB;QACvD,MAAM,OAAO,GAAY;YACvB,SAAS,EAAE,OAAO;YAClB,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,UAAU,EAAE;gBACV,OAAO,EAAE,IAAI,CAAC,UAAU;gBACxB,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,UAAU,IAAI,EAAE;aACnC;YACD,SAAS;SACV,CAAA;QAED,OAAO,IAAA,oBAAU,EAAC,IAAI,EAAE,OAAO,CAAC,CAAA;IAClC,CAAC;CACF;AA9CD,oBA8CC;AAED,MAAM,SAAS,GAAG,IAAI,CAAA"}
1
+ {"version":3,"file":"Tree.js","sourceRoot":"","sources":["../../source/RTD/Tree.ts"],"names":[],"mappings":";;;AAAA,uCAAsC;AACtC,uCAAoC;AAQpC,MAAa,IAAI;IACE,IAAI,CAAa;IACjB,KAAK,CAAM;IACX,SAAS,CAAkB;IAC3B,UAAU,CAAkB;IAE7C,YACC,IAAiB,EAAE,SAA2B,EAAE,UAA4B;QAC3E,IAAI,CAAC,SAAS,GAAG,SAAS,CAAA;QAC1B,IAAI,CAAC,UAAU,GAAG,UAAU,CAAA;QAC5B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,SAAS,CAAC,CAAA;QAC7C,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;IAClB,CAAC;IAEM,KAAK,CAAE,IAAY;QACxB,IAAI,IAAI,KAAK,GAAG;YACd,OAAO;gBACL,IAAI,EAAE,IAAI,CAAC,KAAK;gBAChB,UAAU,EAAE,EAAE;aACf,CAAA;QAEH,MAAM,SAAS,GAAG,IAAA,kBAAQ,EAAC,IAAI,CAAC,CAAA;QAEhC,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;IACpC,CAAC;IAEM,KAAK,CAAE,IAAiB,EAAE,SAAkB;QACjD,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC,CAAA;QAE3D,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;IAC1B,CAAC;IAEM,OAAO;QACZ,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAA;IAC3B,CAAC;IAEO,UAAU,CACjB,IAAiB,EAAE,OAAgB,EAAE,SAAmB;QACvD,MAAM,OAAO,GAAY;YACvB,SAAS,EAAE,OAAO;YAClB,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,UAAU,EAAE;gBACV,OAAO,EAAE,IAAI,CAAC,UAAU;gBACxB,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,UAAU,IAAI,EAAE;aACnC;YACD,SAAS;SACV,CAAA;QAED,OAAO,IAAA,oBAAU,EAAC,IAAI,EAAE,OAAO,CAAC,CAAA;IAClC,CAAC;CACF;AAlDD,oBAkDC;AAED,MAAM,SAAS,GAAG,IAAI,CAAA"}
@@ -1,6 +1,9 @@
1
- import type { Input } from '../../io';
1
+ import type { Input as Context } from '../../io';
2
+ import type * as http from '../../HTTP';
2
3
  export interface Directive {
3
- attach: (context: Input) => void;
4
+ preflight: (context: Context) => void;
5
+ settle?: (context: Context, response: http.OutgoingMessage) => Promise<void> | void;
6
+ dispose?: () => void;
4
7
  }
5
8
  export interface Constructor {
6
9
  validate: (value: unknown) => void;
@@ -1,9 +1,11 @@
1
+ import type * as http from '../../HTTP';
1
2
  import type { Directive } from './Directive';
2
- import type { Input as Context } from '../../io';
3
3
  import type { DirectiveFamily } from '../../RTD';
4
4
  export declare class IO implements DirectiveFamily<Directive> {
5
5
  readonly name = "io";
6
6
  readonly mandatory = true;
7
7
  create(name: string, value: unknown): Directive;
8
- preflight(directives: Directive[], context: Context): null;
8
+ preflight(directives: Directive[], context: http.Context): null;
9
+ settle(directives: Directive[], context: http.Context, output: http.OutgoingMessage): Promise<void>;
10
+ dispose(directives: Directive[]): void;
9
11
  }