@synnaxlabs/freighter 0.2.0 → 0.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (175) hide show
  1. package/.eslintrc.cjs +18 -0
  2. package/LICENSE +4 -21
  3. package/dist/alamos.d.ts +3 -0
  4. package/{build/module/lib → dist}/errors.d.ts +35 -40
  5. package/dist/freighter.cjs.js +11828 -0
  6. package/dist/freighter.cjs.js.map +1 -0
  7. package/dist/freighter.es.js +11828 -0
  8. package/dist/freighter.es.js.map +1 -0
  9. package/dist/http.d.ts +20 -0
  10. package/dist/index.d.ts +8 -0
  11. package/{build/module/lib → dist}/middleware.d.ts +11 -8
  12. package/{build/main/lib → dist}/stream.d.ts +11 -11
  13. package/{build/main/lib → dist}/transport.d.ts +2 -2
  14. package/dist/unary.d.ts +16 -0
  15. package/dist/websocket.d.ts +24 -0
  16. package/package.json +30 -98
  17. package/src/alamos.ts +40 -0
  18. package/src/errors.spec.ts +94 -0
  19. package/src/errors.ts +205 -0
  20. package/src/http.spec.ts +67 -0
  21. package/src/http.ts +115 -0
  22. package/src/index.ts +21 -20
  23. package/src/{lib/middleware.ts → middleware.ts} +29 -19
  24. package/src/{lib/stream.ts → stream.ts} +23 -14
  25. package/src/transport.ts +23 -0
  26. package/src/unary.ts +44 -0
  27. package/src/websocket.spec.ts +119 -0
  28. package/src/websocket.ts +203 -0
  29. package/tsconfig.json +5 -42
  30. package/tsconfig.vite.json +4 -0
  31. package/vite.config.ts +16 -0
  32. package/.editorconfig +0 -15
  33. package/.eslintrc.json +0 -33
  34. package/.gitignore +0 -9
  35. package/.nyc_output/3238f10e-9572-49ec-ab9d-28cbcaa6152a.json +0 -1
  36. package/.nyc_output/4e78a5c9-c0ca-4664-aa04-f478522608eb.json +0 -1
  37. package/.nyc_output/6a2244f2-5aea-45c7-8eeb-e14b454f0096.json +0 -1
  38. package/.nyc_output/dd1075a0-827b-4154-a75e-9bc90a4e16d0.json +0 -1
  39. package/.nyc_output/f829ad27-9bcd-4604-ae57-aae8c6f28d51.json +0 -1
  40. package/.nyc_output/fabc60f1-8fc5-4a1e-bea0-dc1fbcc31c9c.json +0 -1
  41. package/.nyc_output/processinfo/3238f10e-9572-49ec-ab9d-28cbcaa6152a.json +0 -1
  42. package/.nyc_output/processinfo/4e78a5c9-c0ca-4664-aa04-f478522608eb.json +0 -1
  43. package/.nyc_output/processinfo/6a2244f2-5aea-45c7-8eeb-e14b454f0096.json +0 -1
  44. package/.nyc_output/processinfo/dd1075a0-827b-4154-a75e-9bc90a4e16d0.json +0 -1
  45. package/.nyc_output/processinfo/f829ad27-9bcd-4604-ae57-aae8c6f28d51.json +0 -1
  46. package/.nyc_output/processinfo/fabc60f1-8fc5-4a1e-bea0-dc1fbcc31c9c.json +0 -1
  47. package/.nyc_output/processinfo/index.json +0 -1
  48. package/.prettierignore +0 -2
  49. package/.prettierrc +0 -3
  50. package/.vscode/settings.json +0 -4
  51. package/build/main/index.d.ts +0 -9
  52. package/build/main/index.js +0 -29
  53. package/build/main/lib/caseconv.d.ts +0 -2
  54. package/build/main/lib/caseconv.js +0 -14
  55. package/build/main/lib/encoder.d.ts +0 -59
  56. package/build/main/lib/encoder.js +0 -57
  57. package/build/main/lib/encoder.spec.d.ts +0 -1
  58. package/build/main/lib/encoder.spec.js +0 -26
  59. package/build/main/lib/errors.d.ts +0 -87
  60. package/build/main/lib/errors.js +0 -189
  61. package/build/main/lib/errors.spec.js +0 -88
  62. package/build/main/lib/http.d.ts +0 -50
  63. package/build/main/lib/http.js +0 -114
  64. package/build/main/lib/http.spec.js +0 -59
  65. package/build/main/lib/middleware.d.ts +0 -45
  66. package/build/main/lib/middleware.js +0 -38
  67. package/build/main/lib/runtime.d.ts +0 -5
  68. package/build/main/lib/runtime.js +0 -24
  69. package/build/main/lib/stream.js +0 -3
  70. package/build/main/lib/transport.js +0 -3
  71. package/build/main/lib/unary.d.ts +0 -15
  72. package/build/main/lib/unary.js +0 -3
  73. package/build/main/lib/url.d.ts +0 -38
  74. package/build/main/lib/url.js +0 -65
  75. package/build/main/lib/url.spec.d.ts +0 -1
  76. package/build/main/lib/url.spec.js +0 -41
  77. package/build/main/lib/util/log.d.ts +0 -2
  78. package/build/main/lib/util/log.js +0 -15
  79. package/build/main/lib/websocket.d.ts +0 -25
  80. package/build/main/lib/websocket.js +0 -172
  81. package/build/main/lib/websocket.spec.js +0 -86
  82. package/build/main/lib/ws.spec.d.ts +0 -1
  83. package/build/main/lib/ws.spec.js +0 -115
  84. package/build/module/index.d.ts +0 -9
  85. package/build/module/index.js +0 -7
  86. package/build/module/lib/caseconv.d.ts +0 -2
  87. package/build/module/lib/caseconv.js +0 -12
  88. package/build/module/lib/encoder.d.ts +0 -59
  89. package/build/module/lib/encoder.js +0 -47
  90. package/build/module/lib/encoder.spec.d.ts +0 -1
  91. package/build/module/lib/encoder.spec.js +0 -21
  92. package/build/module/lib/errors.js +0 -164
  93. package/build/module/lib/errors.spec.d.ts +0 -1
  94. package/build/module/lib/errors.spec.js +0 -85
  95. package/build/module/lib/http.d.ts +0 -50
  96. package/build/module/lib/http.js +0 -108
  97. package/build/module/lib/http.spec.d.ts +0 -1
  98. package/build/module/lib/http.spec.js +0 -54
  99. package/build/module/lib/middleware.js +0 -32
  100. package/build/module/lib/runtime.d.ts +0 -5
  101. package/build/module/lib/runtime.js +0 -21
  102. package/build/module/lib/stream.d.ts +0 -76
  103. package/build/module/lib/stream.js +0 -2
  104. package/build/module/lib/transport.d.ts +0 -13
  105. package/build/module/lib/transport.js +0 -2
  106. package/build/module/lib/unary.d.ts +0 -15
  107. package/build/module/lib/unary.js +0 -2
  108. package/build/module/lib/url.d.ts +0 -38
  109. package/build/module/lib/url.js +0 -65
  110. package/build/module/lib/url.spec.d.ts +0 -1
  111. package/build/module/lib/url.spec.js +0 -34
  112. package/build/module/lib/util/log.d.ts +0 -2
  113. package/build/module/lib/util/log.js +0 -11
  114. package/build/module/lib/websocket.d.ts +0 -25
  115. package/build/module/lib/websocket.js +0 -181
  116. package/build/module/lib/websocket.spec.d.ts +0 -1
  117. package/build/module/lib/websocket.spec.js +0 -82
  118. package/build/module/lib/ws.spec.d.ts +0 -1
  119. package/build/module/lib/ws.spec.js +0 -94
  120. package/build/tsconfig.module.tsbuildinfo +0 -1
  121. package/build/tsconfig.tsbuildinfo +0 -1
  122. package/coverage/base.css +0 -224
  123. package/coverage/block-navigation.js +0 -87
  124. package/coverage/caseconv.ts.html +0 -124
  125. package/coverage/encoder.ts.html +0 -403
  126. package/coverage/errors.ts.html +0 -727
  127. package/coverage/favicon.png +0 -0
  128. package/coverage/http.ts.html +0 -532
  129. package/coverage/index.html +0 -221
  130. package/coverage/lcov-report/base.css +0 -224
  131. package/coverage/lcov-report/block-navigation.js +0 -87
  132. package/coverage/lcov-report/caseconv.ts.html +0 -124
  133. package/coverage/lcov-report/encoder.ts.html +0 -403
  134. package/coverage/lcov-report/errors.ts.html +0 -727
  135. package/coverage/lcov-report/favicon.png +0 -0
  136. package/coverage/lcov-report/http.ts.html +0 -532
  137. package/coverage/lcov-report/index.html +0 -221
  138. package/coverage/lcov-report/middleware.ts.html +0 -286
  139. package/coverage/lcov-report/prettify.css +0 -1
  140. package/coverage/lcov-report/prettify.js +0 -2
  141. package/coverage/lcov-report/runtime.ts.html +0 -154
  142. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  143. package/coverage/lcov-report/sorter.js +0 -196
  144. package/coverage/lcov-report/url.ts.html +0 -322
  145. package/coverage/lcov-report/websocket.ts.html +0 -760
  146. package/coverage/lcov.info +0 -552
  147. package/coverage/middleware.ts.html +0 -286
  148. package/coverage/prettify.css +0 -1
  149. package/coverage/prettify.js +0 -2
  150. package/coverage/runtime.ts.html +0 -154
  151. package/coverage/sort-arrow-sprite.png +0 -0
  152. package/coverage/sorter.js +0 -196
  153. package/coverage/url.ts.html +0 -322
  154. package/coverage/websocket.ts.html +0 -760
  155. package/src/lib/caseconv.ts +0 -13
  156. package/src/lib/encoder.spec.ts +0 -23
  157. package/src/lib/encoder.ts +0 -105
  158. package/src/lib/errors.spec.ts +0 -98
  159. package/src/lib/errors.ts +0 -214
  160. package/src/lib/http.spec.ts +0 -85
  161. package/src/lib/http.ts +0 -149
  162. package/src/lib/runtime.ts +0 -23
  163. package/src/lib/transport.ts +0 -14
  164. package/src/lib/unary.ts +0 -21
  165. package/src/lib/url.spec.ts +0 -37
  166. package/src/lib/url.ts +0 -79
  167. package/src/lib/util/log.ts +0 -12
  168. package/src/lib/websocket.spec.ts +0 -106
  169. package/src/lib/websocket.ts +0 -225
  170. package/src/types/example.d.ts +0 -24
  171. package/tsconfig.module.json +0 -9
  172. package/yarn.lock +0 -5878
  173. /package/{build/main/lib → dist}/errors.spec.d.ts +0 -0
  174. /package/{build/main/lib → dist}/http.spec.d.ts +0 -0
  175. /package/{build/main/lib → dist}/websocket.spec.d.ts +0 -0
@@ -1,164 +0,0 @@
1
- import { z } from 'zod';
2
- export class BaseTypedError extends Error {
3
- discriminator = 'FreighterError';
4
- type;
5
- constructor(message, type) {
6
- super(message);
7
- this.type = type;
8
- }
9
- }
10
- export const isTypedError = (error) => {
11
- if (!error || typeof error !== 'object') {
12
- return false;
13
- }
14
- const typedError = error;
15
- if (typedError.discriminator !== 'FreighterError') {
16
- return false;
17
- }
18
- if (!('type' in typedError)) {
19
- throw new Error(
20
- `Freighter error is missing its type property: ${typedError}`
21
- );
22
- }
23
- return true;
24
- };
25
- export const assertErrorType = (type, error) => {
26
- if (!error) {
27
- throw new Error(`Expected error of type ${type} but got nothing instead`);
28
- }
29
- if (!isTypedError(error)) {
30
- throw new Error(`Expected a typed error, got: ${error}`);
31
- }
32
- if (error.type !== type) {
33
- throw new Error(
34
- `Expected error of type ${type}, got ${error.type}: ${error}`
35
- );
36
- }
37
- return error;
38
- };
39
- export const UNKNOWN = 'unknown';
40
- export const NONE = 'nil';
41
- export const FREIGHTER = 'freighter';
42
- export const ErrorPayloadSchema = z.object({
43
- type: z.string(),
44
- data: z.string(),
45
- });
46
- class Registry {
47
- entries;
48
- constructor() {
49
- this.entries = {};
50
- }
51
- register(_type, provider) {
52
- if (this.entries[_type]) {
53
- throw new Error(`Error type ${_type} is already registered`);
54
- }
55
- this.entries[_type] = provider;
56
- }
57
- encode(error) {
58
- if (!error) {
59
- return { type: NONE, data: '' };
60
- }
61
- if (isTypedError(error) && this.entries[error.type]) {
62
- return { type: error.type, data: this.entries[error.type].encode(error) };
63
- }
64
- return { type: UNKNOWN, data: JSON.stringify(error) };
65
- }
66
- decode(payload) {
67
- if (payload.type === NONE) {
68
- return undefined;
69
- }
70
- if (payload.type === UNKNOWN) {
71
- return new UnknownError(payload.data);
72
- }
73
- const provider = this.entries[payload.type];
74
- if (!provider) {
75
- return new UnknownError(payload.data);
76
- }
77
- return provider.decode(payload.data);
78
- }
79
- }
80
- const REGISTRY = new Registry();
81
- /**
82
- * Registers a custom error type with the error registry, which allows it to be
83
- * encoded/decoded and sent over the network.
84
- *
85
- * @param type - A unique string identifier for the error type.
86
- * @param encode - A function that encodes the error into a string.
87
- * @param decode - A function that decodes the error from a string.
88
- */
89
- export const registerError = ({ type, encode, decode }) => {
90
- REGISTRY.register(type, { encode, decode });
91
- };
92
- /**
93
- * Encodes an error into a payload that can be sent between a freighter server
94
- * and client.
95
- * @param error - The error to encode.
96
- * @returns The encoded error.
97
- */
98
- export const encodeError = (error) => {
99
- return REGISTRY.encode(error);
100
- };
101
- /**
102
- * Decodes an error payload into an exception. If a custom decoder can be found
103
- * for the error type, it will be used. Otherwise, a generic Error containing
104
- * the error data is returned.
105
- *
106
- * @param payload - The encoded error payload.
107
- * @returns The decoded error.
108
- */
109
- export const decodeError = (payload) => {
110
- return REGISTRY.decode(payload);
111
- };
112
- export class UnknownError extends BaseTypedError {
113
- constructor(message) {
114
- super(message, UNKNOWN);
115
- }
116
- }
117
- /** Thrown/returned when a stream closed normally. */
118
- export class EOF extends BaseTypedError {
119
- constructor() {
120
- super('EOF', FREIGHTER);
121
- }
122
- }
123
- /** Thrown/returned when a stream is closed abnormally. */
124
- export class StreamClosed extends BaseTypedError {
125
- constructor() {
126
- super('StreamClosed', FREIGHTER);
127
- }
128
- }
129
- /** Thrown when a target is unreachable. */
130
- export class Unreachable extends BaseTypedError {
131
- constructor() {
132
- super('Unreachable', FREIGHTER);
133
- }
134
- }
135
- const freighterErrorEncoder = (error) => {
136
- if (error instanceof EOF) {
137
- return 'EOF';
138
- }
139
- if (error instanceof StreamClosed) {
140
- return 'StreamClosed';
141
- }
142
- if (error instanceof Unreachable) {
143
- return 'Unreachable';
144
- }
145
- throw new Error(`Unknown error type: ${error}`);
146
- };
147
- const freighterErrorDecoder = (encoded) => {
148
- switch (encoded) {
149
- case 'EOF':
150
- return new EOF();
151
- case 'StreamClosed':
152
- return new StreamClosed();
153
- case 'Unreachable':
154
- return new Unreachable();
155
- default:
156
- throw new Error(`Unknown error type: ${encoded}`);
157
- }
158
- };
159
- registerError({
160
- type: FREIGHTER,
161
- encode: freighterErrorEncoder,
162
- decode: freighterErrorDecoder,
163
- });
164
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9lcnJvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLENBQUMsRUFBRSxNQUFNLEtBQUssQ0FBQztBQVd4QixNQUFNLE9BQU8sY0FBZSxTQUFRLEtBQUs7SUFDdkMsYUFBYSxHQUFxQixnQkFBZ0IsQ0FBQztJQUNuRCxJQUFJLENBQVM7SUFFYixZQUFZLE9BQWUsRUFBRSxJQUFZO1FBQ3ZDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNmLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO0lBQ25CLENBQUM7Q0FDRjtBQUtELE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxDQUFDLEtBQWMsRUFBdUIsRUFBRTtJQUNsRSxJQUFJLENBQUMsS0FBSyxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRTtRQUN2QyxPQUFPLEtBQUssQ0FBQztLQUNkO0lBQ0QsTUFBTSxVQUFVLEdBQUcsS0FBbUIsQ0FBQztJQUN2QyxJQUFJLFVBQVUsQ0FBQyxhQUFhLEtBQUssZ0JBQWdCLEVBQUU7UUFDakQsT0FBTyxLQUFLLENBQUM7S0FDZDtJQUNELElBQUksQ0FBQyxDQUFDLE1BQU0sSUFBSSxVQUFVLENBQUMsRUFBRTtRQUMzQixNQUFNLElBQUksS0FBSyxDQUNiLGlEQUFpRCxVQUFVLEVBQUUsQ0FDOUQsQ0FBQztLQUNIO0lBQ0QsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsQ0FBSSxJQUFZLEVBQUUsS0FBYSxFQUFLLEVBQUU7SUFDbkUsSUFBSSxDQUFDLEtBQUssRUFBRTtRQUNWLE1BQU0sSUFBSSxLQUFLLENBQUMsMEJBQTBCLElBQUksMEJBQTBCLENBQUMsQ0FBQztLQUMzRTtJQUNELElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLEVBQUU7UUFDeEIsTUFBTSxJ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
@@ -1 +0,0 @@
1
- export {};
@@ -1,85 +0,0 @@
1
- import test from 'ava';
2
- import {
3
- assertErrorType,
4
- BaseTypedError,
5
- decodeError,
6
- encodeError,
7
- EOF,
8
- FREIGHTER,
9
- isTypedError,
10
- NONE,
11
- registerError,
12
- StreamClosed,
13
- UNKNOWN,
14
- UnknownError,
15
- Unreachable,
16
- } from './errors';
17
- class MyCustomError extends BaseTypedError {
18
- constructor(message) {
19
- super(message, 'MyCustomError');
20
- }
21
- }
22
- const myCustomErrorEncoder = (error) => {
23
- return error.message;
24
- };
25
- const myCustomErrorDecoder = (encoded) => {
26
- return new MyCustomError(encoded);
27
- };
28
- test('isTypedError', (t) => {
29
- const error = new MyCustomError('test');
30
- const fError = isTypedError(error);
31
- t.is(fError, true);
32
- t.is(error.type, 'MyCustomError');
33
- });
34
- test('encoding and decoding a custom error through registry', (t) => {
35
- registerError({
36
- type: 'MyCustomError',
37
- encode: myCustomErrorEncoder,
38
- decode: myCustomErrorDecoder,
39
- });
40
- const error = new MyCustomError('test');
41
- const encoded = encodeError(error);
42
- t.is(encoded.type, 'MyCustomError');
43
- t.is(encoded.data, 'test');
44
- const decoded = assertErrorType('MyCustomError', decodeError(encoded));
45
- t.is(decoded.message, 'test');
46
- });
47
- test('encoding and decoding a null error', (t) => {
48
- const encoded = encodeError(null);
49
- t.is(encoded.type, NONE);
50
- t.is(encoded.data, '');
51
- const decoded = decodeError(encoded);
52
- t.is(decoded, undefined);
53
- });
54
- test('encoding and decoding an unrecognized error', (t) => {
55
- const error = new Error('test');
56
- const encoded = encodeError(error);
57
- t.is(encoded.type, UNKNOWN);
58
- t.is(encoded.data, '{}');
59
- const decoded = decodeError(encoded);
60
- t.deepEqual(decoded, new UnknownError('{}'));
61
- });
62
- test('registering duplicate error should throw', (t) => {
63
- registerError({
64
- type: 'MyDuplicateError',
65
- encode: myCustomErrorEncoder,
66
- decode: myCustomErrorDecoder,
67
- });
68
- t.throws(() => {
69
- registerError({
70
- type: 'MyDuplicateError',
71
- encode: myCustomErrorEncoder,
72
- decode: myCustomErrorDecoder,
73
- });
74
- });
75
- });
76
- test('encoding and decoding freighter errors', (t) => {
77
- [new EOF(), new StreamClosed(), new Unreachable()].forEach((error) => {
78
- const encoded = encodeError(error);
79
- t.is(encoded.type, FREIGHTER);
80
- t.is(encoded.data, error.message);
81
- const decoded = decodeError(encoded);
82
- t.deepEqual(decoded, error);
83
- });
84
- });
85
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JzLnNwZWMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2Vycm9ycy5zcGVjLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sSUFBSSxNQUFNLEtBQUssQ0FBQztBQUV2QixPQUFPLEVBQ0wsZUFBZSxFQUNmLGNBQWMsRUFDZCxXQUFXLEVBQ1gsV0FBVyxFQUNYLEdBQUcsRUFDSCxTQUFTLEVBQ1QsWUFBWSxFQUNaLElBQUksRUFDSixhQUFhLEVBQ2IsWUFBWSxFQUVaLE9BQU8sRUFDUCxZQUFZLEVBQ1osV0FBVyxHQUNaLE1BQU0sVUFBVSxDQUFDO0FBRWxCLE1BQU0sYUFBYyxTQUFRLGNBQWM7SUFDeEMsWUFBWSxPQUFlO1FBQ3pCLEtBQUssQ0FBQyxPQUFPLEVBQUUsZUFBZSxDQUFDLENBQUM7SUFDbEMsQ0FBQztDQUNGO0FBRUQsTUFBTSxvQkFBb0IsR0FBRyxDQUFDLEtBQW9CLEVBQVUsRUFBRTtJQUM1RCxPQUFPLEtBQUssQ0FBQyxPQUFPLENBQUM7QUFDdkIsQ0FBQyxDQUFDO0FBRUYsTUFBTSxvQkFBb0IsR0FBRyxDQUFDLE9BQWUsRUFBYyxFQUFFO0lBQzNELE9BQU8sSUFBSSxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDcEMsQ0FBQyxDQUFDO0FBRUYsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFO0lBQ3pCLE1BQU0sS0FBSyxHQUFHLElBQUksYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3hDLE1BQU0sTUFBTSxHQUFHLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNuQyxDQUFDLENBQUMsRUFBRSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNuQixDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsZUFBZSxDQUFDLENBQUM7QUFDcEMsQ0FBQyxDQUFDLENBQUM7QUFFSCxJQUFJLENBQUMsdURBQXVELEVB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
@@ -1,50 +0,0 @@
1
- import { AxiosRequestConfig } from 'axios';
2
- import { ZodSchema } from 'zod';
3
- import { EncoderDecoder } from './encoder';
4
- import { MiddlewareCollector } from './middleware';
5
- import { UnaryClient } from './unary';
6
- import URL from './url';
7
- /**
8
- * HTTPClientFactory provides a POST and GET implementation of the Unary
9
- * protocol.
10
- *
11
- * @param url - The base URL of the API.
12
- * @param encoder - The encoder/decoder to use for the request/response.
13
- */
14
- export declare class HTTPClientFactory extends MiddlewareCollector {
15
- endpoint: URL;
16
- encoder: EncoderDecoder;
17
- constructor(endpoint: URL, encoder: EncoderDecoder);
18
- getClient(): GETClient;
19
- postClient(): POSTClient;
20
- }
21
- export declare const CONTENT_TYPE_HEADER_KEY = "Content-Type";
22
- declare class Core extends MiddlewareCollector {
23
- endpoint: URL;
24
- encoder: EncoderDecoder;
25
- constructor(endpoint: URL, encoder: EncoderDecoder);
26
- get headers(): {
27
- "Content-Type": string;
28
- };
29
- requestConfig(): AxiosRequestConfig;
30
- execute<RS>(request: AxiosRequestConfig, resSchema: ZodSchema<RS>): Promise<[RS | undefined, Error | undefined]>;
31
- }
32
- /**
33
- * Implementation of the UnaryClient protocol backed by HTTP GET requests. It
34
- * should not be instantiated directly, but through the HTTPClientFactory.
35
- */
36
- export declare class GETClient extends Core implements UnaryClient {
37
- send<RQ, RS>(target: string, req: RQ, resSchema: ZodSchema<RS>): Promise<[RS | undefined, Error | undefined]>;
38
- }
39
- /**
40
- * Implementation of the UnaryClient protocol backed by HTTP POST requests. It
41
- * should not be instantiated directly, but through the HTTPClientFactory.
42
- */
43
- export declare class POSTClient extends Core implements UnaryClient {
44
- send<RQ, RS>(target: string, req: RQ, resSchema: ZodSchema<RS>): Promise<[RS | undefined, Error | undefined]>;
45
- }
46
- export declare const buildQueryString: ({ request, prefix, }: {
47
- request: Record<string, unknown>;
48
- prefix?: string | undefined;
49
- }) => string;
50
- export {};
@@ -1,108 +0,0 @@
1
- import axios from 'axios';
2
- import { decodeError, ErrorPayloadSchema } from './errors';
3
- import { MiddlewareCollector } from './middleware';
4
- /**
5
- * HTTPClientFactory provides a POST and GET implementation of the Unary
6
- * protocol.
7
- *
8
- * @param url - The base URL of the API.
9
- * @param encoder - The encoder/decoder to use for the request/response.
10
- */
11
- export class HTTPClientFactory extends MiddlewareCollector {
12
- endpoint;
13
- encoder;
14
- constructor(endpoint, encoder) {
15
- super();
16
- this.endpoint = endpoint;
17
- this.encoder = encoder;
18
- }
19
- getClient() {
20
- const gc = new GETClient(this.endpoint, this.encoder);
21
- gc.use(...this.middleware);
22
- return gc;
23
- }
24
- postClient() {
25
- const pc = new POSTClient(this.endpoint, this.encoder);
26
- pc.use(...this.middleware);
27
- return pc;
28
- }
29
- }
30
- export const CONTENT_TYPE_HEADER_KEY = 'Content-Type';
31
- class Core extends MiddlewareCollector {
32
- endpoint;
33
- encoder;
34
- constructor(endpoint, encoder) {
35
- super();
36
- this.endpoint = endpoint.replace({ protocol: 'http' });
37
- this.encoder = encoder;
38
- }
39
- get headers() {
40
- return {
41
- [CONTENT_TYPE_HEADER_KEY]: this.encoder.contentType,
42
- };
43
- }
44
- requestConfig() {
45
- return {
46
- headers: this.headers,
47
- responseType: 'arraybuffer',
48
- withCredentials: false,
49
- validateStatus: () => true,
50
- };
51
- }
52
- async execute(request, resSchema) {
53
- let rs = undefined;
54
- if (!request.url)
55
- throw new Error('[freighter.http] - expected valid request url');
56
- const err = await this.executeMiddleware({ target: request.url, protocol: 'http', params: {} }, async (md) => {
57
- request.headers = { ...request.headers, ...this.headers, ...md.params };
58
- const httpRes = await axios.request(request);
59
- if (httpRes.status < 200 || httpRes.status >= 300) {
60
- try {
61
- const err = this.encoder.decode(httpRes.data, ErrorPayloadSchema);
62
- return decodeError(err);
63
- }
64
- catch {
65
- return new Error(httpRes.data);
66
- }
67
- }
68
- rs = this.encoder.decode(httpRes.data, resSchema);
69
- return undefined;
70
- });
71
- return [rs, err];
72
- }
73
- }
74
- /**
75
- * Implementation of the UnaryClient protocol backed by HTTP GET requests. It
76
- * should not be instantiated directly, but through the HTTPClientFactory.
77
- */
78
- export class GETClient extends Core {
79
- async send(target, req, resSchema) {
80
- const request = this.requestConfig();
81
- request.method = 'GET';
82
- request.url =
83
- this.endpoint.child(target).stringify() +
84
- buildQueryString({ request: req });
85
- return await this.execute(request, resSchema);
86
- }
87
- }
88
- /**
89
- * Implementation of the UnaryClient protocol backed by HTTP POST requests. It
90
- * should not be instantiated directly, but through the HTTPClientFactory.
91
- */
92
- export class POSTClient extends Core {
93
- async send(target, req, resSchema) {
94
- const url = this.endpoint.child(target).stringify();
95
- const request = this.requestConfig();
96
- request.method = 'POST';
97
- request.url = url;
98
- request.data = this.encoder.encode(req);
99
- return await this.execute(request, resSchema);
100
- }
101
- }
102
- export const buildQueryString = ({ request, prefix = '', }) => {
103
- return ('?' +
104
- Object.keys(request)
105
- .map((key) => `${prefix}${key}=${request[key]}`)
106
- .join('&'));
107
- };
108
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvaHR0cC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQTZCLE1BQU0sT0FBTyxDQUFDO0FBSWxELE9BQU8sRUFBRSxXQUFXLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDM0QsT0FBTyxFQUFZLG1CQUFtQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBSTdEOzs7Ozs7R0FNRztBQUNILE1BQU0sT0FBTyxpQkFBa0IsU0FBUSxtQkFBbUI7SUFDeEQsUUFBUSxDQUFNO0lBQ2QsT0FBTyxDQUFpQjtJQUV4QixZQUFZLFFBQWEsRUFBRSxPQUF1QjtRQUNoRCxLQUFLLEVBQUUsQ0FBQztRQUNSLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO0lBQ3pCLENBQUM7SUFFRCxTQUFTO1FBQ1AsTUFBTSxFQUFFLEdBQUcsSUFBSSxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDdEQsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUMzQixPQUFPLEVBQUUsQ0FBQztJQUNaLENBQUM7SUFFRCxVQUFVO1FBQ1IsTUFBTSxFQUFFLEdBQUcsSUFBSSxVQUFVLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDdkQsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUMzQixPQUFPLEVBQUUsQ0FBQztJQUNaLENBQUM7Q0FDRjtBQUVELE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFHLGNBQWMsQ0FBQztBQUV0RCxNQUFNLElBQUssU0FBUSxtQkFBbUI7SUFDcEMsUUFBUSxDQUFNO0lBQ2QsT0FB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
@@ -1 +0,0 @@
1
- export {};
@@ -1,54 +0,0 @@
1
- import test from 'ava';
2
- import { z } from 'zod';
3
- import { JSONEncoderDecoder } from './encoder';
4
- import { HTTPClientFactory } from './http';
5
- import URL from './url';
6
- const ENDPOINT = new URL({
7
- host: '127.0.0.1',
8
- port: 8080,
9
- pathPrefix: 'unary',
10
- });
11
- const factory = new HTTPClientFactory(ENDPOINT, new JSONEncoderDecoder());
12
- const MessageSchema = z.object({
13
- id: z.number().optional(),
14
- message: z.string().optional(),
15
- });
16
- const getClient = factory.getClient();
17
- const postClient = factory.postClient();
18
- test('[http] - post echo', async (t) => {
19
- const [response, error] = await postClient.send('/echo', {
20
- id: 1,
21
- message: 'hello',
22
- }, MessageSchema);
23
- t.is(error, undefined);
24
- t.deepEqual(response, { id: 2, message: 'hello' });
25
- });
26
- test('[http] - get echo', async (t) => {
27
- const [response, error] = await getClient.send('/echo', {
28
- id: 1,
29
- message: 'hello',
30
- }, MessageSchema);
31
- t.is(error, undefined);
32
- t.deepEqual(response, { id: 2, message: 'hello' });
33
- });
34
- test('[http] - get not found', async (t) => {
35
- const [response, error] = await getClient.send('/not-found', {}, MessageSchema);
36
- t.is(error?.message, 'Cannot GET /unary/not-found');
37
- t.is(response, undefined);
38
- });
39
- test('[http] - post not found', async (t) => {
40
- const [response, error] = await postClient.send('/not-found', {}, MessageSchema);
41
- t.is(error?.message, 'Cannot POST /unary/not-found');
42
- t.is(response, undefined);
43
- });
44
- test('[http] - middleware', async (t) => {
45
- const client = factory.getClient();
46
- client.use(async (md, next) => {
47
- md.params['Test'] = 'test';
48
- return await next(md);
49
- });
50
- const [response, error] = await client.send('/middlewareCheck', {}, MessageSchema);
51
- t.is(error, undefined);
52
- t.is(response?.message, '');
53
- });
54
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC5zcGVjLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9odHRwLnNwZWMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxJQUFJLE1BQU0sS0FBSyxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxDQUFDLEVBQUUsTUFBTSxLQUFLLENBQUM7QUFFeEIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQy9DLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUMzQyxPQUFPLEdBQUcsTUFBTSxPQUFPLENBQUM7QUFFeEIsTUFBTSxRQUFRLEdBQUcsSUFBSSxHQUFHLENBQUM7SUFDdkIsSUFBSSxFQUFFLFdBQVc7SUFDakIsSUFBSSxFQUFFLElBQUk7SUFDVixVQUFVLEVBQUUsT0FBTztDQUNwQixDQUFDLENBQUM7QUFFSCxNQUFNLE9BQU8sR0FBRyxJQUFJLGlCQUFpQixDQUFDLFFBQVEsRUFBRSxJQUFJLGtCQUFrQixFQUFFLENBQUMsQ0FBQztBQUUxRSxNQUFNLGFBQWEsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDO0lBQzdCLEVBQUUsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQ3pCLE9BQU8sRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFO0NBQy9CLENBQUMsQ0FBQztBQUlILE1BQU0sU0FBUyxHQUFHLE9BQU8sQ0FBQyxTQUFTLEVBQUUsQ0FBQztBQUN0QyxNQUFNLFVBQVUsR0FBRyxPQUFPLENBQUMsVUFBVSxFQUFFLENBQUM7QUFFeEMsSUFBSSxDQUFDLG9CQUFvQixFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsRUFBRTtJQUNyQyxNQUFNLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxHQUFHLE1BQU0sVUFBVSxDQUFDLElBQUksQ0FDN0MsT0FBTyxFQUNQO1FBQ0UsRUFBRSxFQUFFLENBQUM7UUFDTCxP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
@@ -1,32 +0,0 @@
1
- /**
2
- * MiddlewareCollector is a class that can be used to collect and execute
3
- * middleware in order to implement the Transport interface.
4
- */
5
- export class MiddlewareCollector {
6
- middleware = [];
7
- /** Implements the Transport interface */
8
- use(...mw) {
9
- this.middleware.push(...mw);
10
- }
11
- /**
12
- * Executes middleware in order, passing the the metadata to each middleware
13
- * until the end of the chain is reached. It then calls the finalizer with the
14
- * metadata.
15
- *
16
- * @param md - The metadata to pass to the middleware.
17
- * @param finalizer - The finalizer to call with the metadata.
18
- * @returns An error if one was encountered, otherwise undefined.
19
- */
20
- executeMiddleware(md, finalizer) {
21
- let i = 0;
22
- const next = (md) => {
23
- if (i == this.middleware.length)
24
- return finalizer(md);
25
- const _mw = this.middleware[i];
26
- i++;
27
- return _mw(md, next);
28
- };
29
- return next(md);
30
- }
31
- }
32
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlkZGxld2FyZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvbWlkZGxld2FyZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFnQ0E7OztHQUdHO0FBQ0gsTUFBTSxPQUFPLG1CQUFtQjtJQUM5QixVQUFVLEdBQWlCLEVBQUUsQ0FBQztJQUU5Qix5Q0FBeUM7SUFDekMsR0FBRyxDQUFDLEdBQUcsRUFBZ0I7UUFDckIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDSCxpQkFBaUIsQ0FDZixFQUFZLEVBQ1osU0FBb0I7UUFFcEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ1YsTUFBTSxJQUFJLEdBQUcsQ0FBQyxFQUFZLEVBQThCLEVBQUU7WUFDeEQsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNO2dCQUFFLE9BQU8sU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ3RELE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDL0IsQ0FBQyxFQUFFLENBQUM7WUFDSixPQUFPLEdBQUcsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDdkIsQ0FBQyxDQUFDO1FBQ0YsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDbEIsQ0FBQztDQUNGIn0=
@@ -1,5 +0,0 @@
1
- export declare enum Runtime {
2
- Browser = 'browser',
3
- Node = 'node',
4
- }
5
- export declare const RUNTIME: Runtime;
@@ -1,21 +0,0 @@
1
- export var Runtime;
2
- (function (Runtime) {
3
- Runtime['Browser'] = 'browser';
4
- Runtime['Node'] = 'node';
5
- })(Runtime || (Runtime = {}));
6
- const detectRuntime = () => {
7
- if (
8
- typeof process !== 'undefined' &&
9
- process.versions != null &&
10
- process.versions.node != null
11
- ) {
12
- return Runtime.Node;
13
- }
14
- if (typeof window !== 'undefined' && typeof window.document !== 'undefined') {
15
- return Runtime.Browser;
16
- }
17
- console.warn('Freighter unable to safely detect runtime, assuming browser');
18
- return Runtime.Browser;
19
- };
20
- export const RUNTIME = detectRuntime();
21
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVudGltZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvcnVudGltZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQU4sSUFBWSxPQUdYO0FBSEQsV0FBWSxPQUFPO0lBQ2pCLDhCQUFtQixDQUFBO0lBQ25CLHdCQUFhLENBQUE7QUFDZixDQUFDLEVBSFcsT0FBTyxLQUFQLE9BQU8sUUFHbEI7QUFFRCxNQUFNLGFBQWEsR0FBRyxHQUFZLEVBQUU7SUFDbEMsSUFDRSxPQUFPLE9BQU8sS0FBSyxXQUFXO1FBQzlCLE9BQU8sQ0FBQyxRQUFRLElBQUksSUFBSTtRQUN4QixPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksSUFBSSxJQUFJLEVBQzdCO1FBQ0EsT0FBTyxPQUFPLENBQUMsSUFBSSxDQUFDO0tBQ3JCO0lBRUQsSUFBSSxPQUFPLE1BQU0sS0FBSyxXQUFXLElBQUksT0FBTyxNQUFNLENBQUMsUUFBUSxLQUFLLFdBQVcsRUFBRTtRQUMzRSxPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUM7S0FDeEI7SUFFRCxPQUFPLENBQUMsSUFBSSxDQUFDLDZEQUE2RCxDQUFDLENBQUM7SUFDNUUsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDO0FBQ3pCLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLE9BQU8sR0FBRyxhQUFhLEVBQUUsQ0FBQyJ9
@@ -1,76 +0,0 @@
1
- import { ZodSchema } from 'zod';
2
- import { Transport } from './transport';
3
- /**
4
- * Interface for an entity that receives a stream of responses.
5
- */
6
- export interface StreamReceiver<RS> {
7
- /**
8
- * Receives a response from the stream. It's not safe to call receive
9
- * concurrently.
10
- *
11
- * @returns freighter.EOF: if the server closed the stream nominally.
12
- * @returns Error: if the server closed the stream abnormally,
13
- * returns the error the server returned.
14
- * @raises Error: if the transport fails.
15
- */
16
- receive(): Promise<[RS | undefined, Error | undefined]>;
17
- /**
18
- * @returns true if the stream has received a response
19
- */
20
- received(): boolean;
21
- }
22
- /**
23
- * Interface for an entity that sends a stream of requests.
24
- */
25
- export interface StreamSender<RQ> {
26
- /**
27
- * Sends a request to the stream. It is not safe to call send concurrently
28
- * with closeSend or send.
29
-
30
- * @param req - the request to send.
31
- * @returns freighter.EOF: if the server closed the stream. The caller
32
- * can discover the error returned by the server by calling receive().
33
- * @returns undefined: if the message was sent successfully.
34
- * @raises freighter.StreamClosed: if the client called close_send()
35
- * @raises Error: if the transport fails.
36
- */
37
- send(req: RQ): Error | undefined;
38
- }
39
- /**
40
- * Extension of the StreamSender interface that allows the client to close the sending
41
- * direction of the stream when finished issuing requrest.
42
- */
43
- export interface StreamSenderCloser<RQ> extends StreamSender<RQ> {
44
- /**
45
- * Lets the server know no more messages will be sent. If the client attempts
46
- * to call send() after calling closeSend(), a freighter.StreamClosed
47
- * exception will be raised. close_send is idempotent. If the server has
48
- * already closed the stream, close_send will do nothing.
49
-
50
- * After calling close_send, the client is responsible for calling receive()
51
- * to successfully receive the server's acknowledgement.
52
- */
53
- closeSend(): void;
54
- }
55
- /**
56
- * Interface for a bidirectional stream between a client and a server.
57
- */
58
- export interface Stream<RQ, RS> extends StreamSenderCloser<RQ>, StreamReceiver<RS> {
59
- }
60
- /**
61
- * Interface for a bidirectional stream between a client and a server.
62
- */
63
- export interface StreamClient extends Transport {
64
- /**
65
- * Dials the target and returns a stream that can be used to issue requests
66
- * and receive responses
67
- *
68
- * @param target - The target to dial. In some implementations, this may be
69
- * an endpoint path, or in others, a complete hostname or URL.
70
- * @param reqSchema - The schema for the request type. This is used to
71
- * validate the request before sending it.
72
- * @param resSchema - The schema for the response type. This is used to
73
- * validate the response before returning it.
74
- */
75
- stream<RQ, RS>(target: string, reqSchema: ZodSchema<RQ>, resSchema: ZodSchema<RS>): Promise<Stream<RQ, RS>>;
76
- }
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyZWFtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9zdHJlYW0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiJ9
@@ -1,13 +0,0 @@
1
- import { Middleware } from './middleware';
2
- /**
3
- * Transport is a based interface that represents a general transport for
4
- * exchanging messages between a client and a server.
5
- */
6
- export interface Transport {
7
- /**
8
- * Use registers middleware that will be executed in order when the transport
9
- *
10
- * @param mw - The middleware to register.
11
- */
12
- use(...mw: Middleware[]): void;
13
- }
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNwb3J0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi90cmFuc3BvcnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiJ9