sockethub 4.0.0 → 5.0.0-alpha.0

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 (140) hide show
  1. package/README.md +3 -3
  2. package/bin/sockethub +23 -19
  3. package/coverage/tmp/coverage-15699-1646422276150-0.json +1 -0
  4. package/dist/bootstrap/init.js +14 -4
  5. package/dist/bootstrap/init.js.map +1 -1
  6. package/dist/bootstrap/platforms.js +81 -69
  7. package/dist/common.js +10 -12
  8. package/dist/common.js.map +1 -1
  9. package/dist/config.js +4 -22
  10. package/dist/config.js.map +1 -1
  11. package/dist/crypto.js +7 -8
  12. package/dist/crypto.js.map +1 -1
  13. package/dist/janitor.js +14 -9
  14. package/dist/janitor.js.map +1 -1
  15. package/dist/middleware/create-activity-object.js +19 -0
  16. package/dist/middleware/create-activity-object.js.map +1 -0
  17. package/dist/middleware/expand-activity-stream.js +33 -0
  18. package/dist/middleware/expand-activity-stream.js.map +1 -0
  19. package/dist/middleware/expand-activity-stream.test.data.js +360 -0
  20. package/dist/middleware/expand-activity-stream.test.data.js.map +1 -0
  21. package/dist/middleware/store-credentials.js +19 -0
  22. package/dist/middleware/store-credentials.js.map +1 -0
  23. package/dist/middleware/validate.js +77 -0
  24. package/dist/middleware/validate.js.map +1 -0
  25. package/dist/middleware/validate.test.data.js +321 -0
  26. package/dist/middleware/validate.test.data.js.map +1 -0
  27. package/dist/middleware.js +47 -49
  28. package/dist/middleware.js.map +1 -1
  29. package/dist/platform-instance.js +84 -66
  30. package/dist/platform-instance.js.map +1 -1
  31. package/dist/platform.js +50 -25
  32. package/dist/platform.js.map +1 -1
  33. package/dist/process-manager.js +7 -4
  34. package/dist/process-manager.js.map +1 -1
  35. package/dist/routes.js +9 -7
  36. package/dist/routes.js.map +1 -1
  37. package/dist/serve.js +3 -3
  38. package/dist/serve.js.map +1 -1
  39. package/dist/sockethub-client.js +2604 -0
  40. package/dist/sockethub-client.js.map +1 -0
  41. package/dist/sockethub-client.min.js +2 -0
  42. package/dist/sockethub-client.min.js.LICENSE.txt +24 -0
  43. package/dist/sockethub.js +75 -58
  44. package/dist/sockethub.js.map +1 -1
  45. package/dist/store.js +17 -0
  46. package/dist/store.js.map +1 -0
  47. package/package.json +48 -44
  48. package/src/bootstrap/init.ts +16 -2
  49. package/src/bootstrap/platforms.js +14 -18
  50. package/src/common.test.ts +44 -33
  51. package/src/common.ts +9 -17
  52. package/src/config.test.ts +16 -38
  53. package/src/config.ts +1 -23
  54. package/src/crypto.test.ts +15 -17
  55. package/src/crypto.ts +4 -5
  56. package/src/janitor.ts +19 -12
  57. package/src/middleware/create-activity-object.test.ts +10 -0
  58. package/src/middleware/create-activity-object.ts +13 -0
  59. package/src/middleware/expand-activity-stream.test.data.ts +365 -0
  60. package/src/middleware/expand-activity-stream.test.ts +78 -0
  61. package/src/middleware/expand-activity-stream.ts +27 -0
  62. package/src/middleware/store-credentials.test.ts +72 -0
  63. package/src/middleware/store-credentials.ts +16 -0
  64. package/src/{validate.d.ts → middleware/validate.d.ts} +0 -0
  65. package/src/middleware/validate.test.data.ts +320 -0
  66. package/src/middleware/validate.test.ts +47 -0
  67. package/src/middleware/validate.ts +49 -0
  68. package/src/middleware.test.ts +148 -0
  69. package/src/middleware.ts +46 -51
  70. package/src/platform-instance.test.ts +224 -196
  71. package/src/platform-instance.ts +74 -58
  72. package/src/platform.ts +44 -24
  73. package/src/process-manager.ts +7 -4
  74. package/src/routes.test.ts +32 -17
  75. package/src/routes.ts +8 -6
  76. package/src/serve.ts +1 -1
  77. package/src/sockethub-client.test.ts +235 -0
  78. package/src/sockethub-client.ts +164 -0
  79. package/src/sockethub.ts +96 -93
  80. package/src/store.test.ts +26 -0
  81. package/src/store.ts +17 -0
  82. package/tsconfig.json +8 -8
  83. package/views/examples/dummy.ejs +7 -7
  84. package/views/examples/feeds.ejs +10 -10
  85. package/views/examples/irc.ejs +65 -59
  86. package/views/examples/shared.js +31 -29
  87. package/views/examples/xmpp.ejs +49 -58
  88. package/webpack.minified.config.js +14 -0
  89. package/webpack.normal.config.js +14 -0
  90. package/coverage/clover.xml +0 -190
  91. package/coverage/coverage-final.json +0 -6
  92. package/coverage/lcov-report/base.css +0 -224
  93. package/coverage/lcov-report/block-navigation.js +0 -79
  94. package/coverage/lcov-report/common.ts.html +0 -143
  95. package/coverage/lcov-report/config.ts.html +0 -359
  96. package/coverage/lcov-report/crypto.ts.html +0 -203
  97. package/coverage/lcov-report/favicon.png +0 -0
  98. package/coverage/lcov-report/index.html +0 -171
  99. package/coverage/lcov-report/platform-instance.ts.html +0 -740
  100. package/coverage/lcov-report/prettify.css +0 -1
  101. package/coverage/lcov-report/prettify.js +0 -2
  102. package/coverage/lcov-report/routes.ts.html +0 -353
  103. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  104. package/coverage/lcov-report/sorter.js +0 -170
  105. package/coverage/lcov-report/src/common.ts.html +0 -143
  106. package/coverage/lcov-report/src/config.ts.html +0 -359
  107. package/coverage/lcov-report/src/crypto.ts.html +0 -182
  108. package/coverage/lcov-report/src/index.html +0 -156
  109. package/coverage/lcov-report/src/platform-instance.ts.html +0 -740
  110. package/coverage/lcov-report/src/routes/base.ts.html +0 -359
  111. package/coverage/lcov-report/src/routes/examples.ts.html +0 -311
  112. package/coverage/lcov-report/src/routes/index.html +0 -111
  113. package/coverage/lcov-report/src/services/http.ts.html +0 -239
  114. package/coverage/lcov-report/src/services/index.html +0 -111
  115. package/coverage/lcov-report/src/services/redis.ts.html +0 -140
  116. package/coverage/lcov-report/src/shared-resources.ts.html +0 -104
  117. package/coverage/lcov.info +0 -336
  118. package/coverage/tmp/coverage-70996-1620314182345-0.json +0 -1
  119. package/dist/bootstrap/platforms.js.map +0 -1
  120. package/dist/js/client.js +0 -177
  121. package/dist/js/client.js.map +0 -1
  122. package/dist/resource-manager.js +0 -66
  123. package/dist/resource-manager.js.map +0 -1
  124. package/dist/routes/base.js +0 -92
  125. package/dist/routes/base.js.map +0 -1
  126. package/dist/routes/examples.js +0 -93
  127. package/dist/routes/examples.js.map +0 -1
  128. package/dist/services/http.js +0 -68
  129. package/dist/services/http.js.map +0 -1
  130. package/dist/services/redis.js +0 -1
  131. package/dist/services/redis.js.map +0 -1
  132. package/dist/shared-resources.js +0 -11
  133. package/dist/shared-resources.js.map +0 -1
  134. package/dist/validate.js +0 -157
  135. package/dist/validate.js.map +0 -1
  136. package/jest.config.js +0 -18
  137. package/src/js/client.js +0 -190
  138. package/src/validate.ts +0 -147
  139. package/test/middleware-suite.js +0 -101
  140. package/test/validate-suite.js +0 -338
@@ -0,0 +1,321 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.default = [
4
+ {
5
+ "name": "mismatched types",
6
+ "valid": false,
7
+ "type": "credentials",
8
+ "input": {
9
+ "id": "blah",
10
+ "type": "send",
11
+ "context": "dummy",
12
+ "actor": {
13
+ "id": "dood@irc.freenode.net",
14
+ "type": "person",
15
+ "name": "dood"
16
+ },
17
+ "target": {
18
+ "id": "irc.freenode.net/sockethub",
19
+ "type": "person",
20
+ "name": "sockethub"
21
+ },
22
+ "object": {
23
+ "type": "credentials",
24
+ "user": 'foo',
25
+ "pass": 'bar'
26
+ }
27
+ },
28
+ 'error': "Error: credential activity streams must have credentials set as type"
29
+ },
30
+ {
31
+ "name": "basic",
32
+ "valid": true,
33
+ "type": "credentials",
34
+ "input": {
35
+ "id": "blah",
36
+ "type": "credentials",
37
+ "context": "dummy",
38
+ "actor": {
39
+ "id": "dood@irc.freenode.net",
40
+ "type": "person",
41
+ "name": "dood"
42
+ },
43
+ "object": {
44
+ 'type': 'credentials',
45
+ "user": 'foo',
46
+ "pass": 'bar'
47
+ }
48
+ },
49
+ "output": "same"
50
+ },
51
+ {
52
+ "name": "irc credentials",
53
+ "valid": true,
54
+ "type": "credentials",
55
+ "input": {
56
+ "context": "irc",
57
+ "type": "credentials",
58
+ "actor": {
59
+ "id": "sh-9K3Vk@irc.freenode.net",
60
+ "type": "person",
61
+ "name": "sh-9K3Vk",
62
+ "image": {
63
+ "height": 250,
64
+ "mediaType": "image/jpeg",
65
+ "url": "http://example.org/image.jpg",
66
+ "width": 250
67
+ },
68
+ "url": "http://sockethub.org"
69
+ },
70
+ "object": {
71
+ "type": "credentials",
72
+ "nick": "sh-9K3Vk",
73
+ "port": 6667,
74
+ "secure": false,
75
+ "server": "irc.freenode.net"
76
+ }
77
+ },
78
+ "output": "same"
79
+ },
80
+ {
81
+ "name": "bad irc credentials: user/nick host/server",
82
+ "valid": false,
83
+ "type": "credentials",
84
+ "input": {
85
+ "context": "irc",
86
+ "type": "credentials",
87
+ "actor": {
88
+ "id": "sh-9K3Vk@irc.freenode.net",
89
+ "type": "person",
90
+ "name": "sh-9K3Vk",
91
+ "image": {
92
+ "height": 250,
93
+ "mediaType": "image/jpeg",
94
+ "url": "http://example.org/image.jpg",
95
+ "width": 250
96
+ },
97
+ "url": "http://sockethub.org"
98
+ },
99
+ "object": {
100
+ "type": "credentials",
101
+ "user": "sh-9K3Vk",
102
+ "port": 6667,
103
+ "secure": false,
104
+ "host": "irc.freenode.net"
105
+ }
106
+ },
107
+ "error": "Error: /object: must NOT have additional properties"
108
+ },
109
+ {
110
+ "name": "no type specified",
111
+ "valid": false,
112
+ "type": "credentials",
113
+ "input": {
114
+ "actor": "hyper_rau@localhost",
115
+ "context": "xmpp",
116
+ "object": {
117
+ "username": "hyper_rau",
118
+ "password": "123",
119
+ "server": "localhost",
120
+ "port": 5222,
121
+ "resource": "laptop"
122
+ }
123
+ },
124
+ "error": "Error: credential activity streams must have credentials set as type"
125
+ },
126
+ {
127
+ "name": "basic person",
128
+ "type": "activity-object",
129
+ "valid": true,
130
+ "input": {
131
+ "id": "blah",
132
+ "type": "person",
133
+ "name": "dood"
134
+ },
135
+ "output": "same"
136
+ },
137
+ {
138
+ "name": "person with extras",
139
+ "valid": true,
140
+ "type": "activity-object",
141
+ "input": {
142
+ "id": "blah",
143
+ "type": "person",
144
+ "name": "bob",
145
+ "hello": "there",
146
+ "i": [
147
+ "am",
148
+ "extras"
149
+ ]
150
+ },
151
+ "output": "same"
152
+ },
153
+ {
154
+ "name": "alone credentials (as activity-object)",
155
+ "valid": false,
156
+ "type": "activity-object",
157
+ "input": {
158
+ "type": "credentials",
159
+ "nick": "sh-9K3Vk",
160
+ "port": 6667,
161
+ "secure": false,
162
+ "server": "irc.freenode.net"
163
+ },
164
+ "error": "Error: /object: must match exactly one schema in oneOf: " +
165
+ "credentials, feed, message, me, person, room, service, website, " +
166
+ "attendance, presence, relationship, topic, address"
167
+ },
168
+ {
169
+ "name": "alone credentials (as credentials)",
170
+ "valid": false,
171
+ "type": "credentials",
172
+ "input": {
173
+ "type": "credentials",
174
+ "nick": "sh-9K3Vk",
175
+ "port": 6667,
176
+ "secure": false,
177
+ "server": "irc.freenode.net"
178
+ },
179
+ "error": "Error: platform context undefined not registered with this sockethub instance."
180
+ },
181
+ {
182
+ "name": "new person",
183
+ "valid": true,
184
+ "type": "activity-object",
185
+ "input": {
186
+ "id": "sh-9K3Vk@irc.freenode.net",
187
+ "type": "person",
188
+ "name": "sh-9K3Vk",
189
+ "image": {
190
+ "height": 250,
191
+ "mediaType": "image/jpeg",
192
+ "url": "http://example.org/image.jpg",
193
+ "width": 250
194
+ },
195
+ "url": "http://sockethub.org"
196
+ },
197
+ "output": "same"
198
+ },
199
+ {
200
+ "name": "new person",
201
+ "valid": true,
202
+ "type": "activity-object",
203
+ "input": {
204
+ "id": "irc://sh-9K3Vk@irc.freenode.net",
205
+ "type": "person",
206
+ "name": "sh-9K3Vk",
207
+ "url": "http://sockethub.org"
208
+ },
209
+ "output": "same"
210
+ },
211
+ {
212
+ "name": "bad parent object",
213
+ "valid": false,
214
+ "type": "activity-stream",
215
+ "input": {
216
+ "string": "this is a string",
217
+ "array": [
218
+ "this",
219
+ "is",
220
+ {
221
+ "an": "array"
222
+ }
223
+ ],
224
+ "as": {
225
+ "id": "blah",
226
+ "type": "send",
227
+ "context": "hello",
228
+ "actor": {
229
+ "name": "dood"
230
+ },
231
+ "target": {
232
+ "type": "person",
233
+ "name": "bob"
234
+ },
235
+ "object": {
236
+ "type": "credentials"
237
+ }
238
+ },
239
+ "noId": {
240
+ "name": "dood"
241
+ },
242
+ "noId2": {
243
+ "type": "person",
244
+ "name": "bob"
245
+ },
246
+ "noDisplayName": {
247
+ "id": "larg"
248
+ }
249
+ },
250
+ "error": "Error: platform context undefined not registered with this sockethub instance."
251
+ },
252
+ {
253
+ "name": "unexpected AS",
254
+ "valid": false,
255
+ "type": "message",
256
+ "input": {
257
+ "actor": "irc://uuu@localhost",
258
+ "type": "join",
259
+ "context": "irc",
260
+ "target": "irc://irc.dooder.net/a-room"
261
+ },
262
+ "error": "Error: /actor: must be object"
263
+ },
264
+ {
265
+ "name": "missing type property",
266
+ "valid": false,
267
+ "type": "message",
268
+ "input": {
269
+ "actor": { "id": "irc://uuu@localhost", "type": "person" },
270
+ "context": "irc",
271
+ "target": { "id": "irc://irc.dooder.net/a-room", "type": "room" }
272
+ },
273
+ "error": "Error: activity stream: must have required property \'type\'"
274
+ },
275
+ {
276
+ "name": "invalid context property",
277
+ "valid": false,
278
+ "type": "message",
279
+ "input": {
280
+ "actor": { "id": "irc://uuu@localhost", "type": "person" },
281
+ "type": "foo",
282
+ "context": "foobar",
283
+ "target": { "id": "irc://irc.dooder.net/a-room", "type": "room" }
284
+ },
285
+ "error": "Error: platform context foobar not registered with this sockethub instance."
286
+ },
287
+ {
288
+ "name": "missing actor property",
289
+ "valid": false,
290
+ "type": "message",
291
+ "input": {
292
+ "type": "foo",
293
+ "context": "irc",
294
+ "target": { "id": "irc://irc.dooder.net/a-room", "type": "room" }
295
+ },
296
+ "error": "Error: activity stream: must have required property \'actor\'"
297
+ },
298
+ {
299
+ "name": "traditional message",
300
+ "valid": true,
301
+ "type": "message",
302
+ "input": {
303
+ "type": "update",
304
+ "context": "irc",
305
+ "actor": { "id": "irc://uuu@localhost", "type": "person" }
306
+ }
307
+ },
308
+ {
309
+ "name": "message with wrong type",
310
+ "valid": false,
311
+ "type": "message",
312
+ "input": {
313
+ "type": "foorg",
314
+ "context": "irc",
315
+ "actor": { "id": "irc://uuu@localhost", "type": "person" }
316
+ },
317
+ "error": "Error: platform type foorg not supported by irc platform. " +
318
+ "(types: credentials, connect, update, join, leave, send, query, announce)"
319
+ }
320
+ ];
321
+ //# sourceMappingURL=/middleware/validate.test.data.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate.test.data.js","sourceRoot":"/","sources":["middleware/validate.test.data.ts"],"names":[],"mappings":"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"}
@@ -1,56 +1,54 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- /**
4
- * a very simple middleware handler
5
- *
6
- * When initialized, provide a function which will be called if there were any failures during
7
- * the execution of functions along the chain.
8
- *
9
- * Use middleware.chain, passing in a list of functions to call in order. It then returns
10
- * a function which accepts the message from the input. That function then will
11
- * call each of the originally passed in functions, in order, with a `next` callback as
12
- * the first parameter, and any number of originating parameters.
13
- *
14
- * As one middleware function is done, they call `next` with the first argument `true`
15
- * (succeeded, continue) any parameters to pass along.
16
- *
17
- * If any of the middleware function calls the `next` handler with `false` as the first param, the
18
- * execution of the function chain is halted, and the failure callback is called. Again, any
19
- * number of params passed after the `false` will be passed to the failure callback.
20
- *
21
- */
22
- function Middleware(errorHandler) {
23
- this.errorHandler = errorHandler;
3
+ exports.MiddlewareChain = void 0;
4
+ const debug_1 = require("debug");
5
+ function middleware(name) {
6
+ return new MiddlewareChain(name);
24
7
  }
25
- Middleware.prototype.chain = function (...funcs) {
26
- let self = this;
27
- return (...params) => {
28
- let count = 0;
29
- if (typeof funcs[count] !== 'function') {
30
- throw new Error('middleware function can only take other functions as arguments.');
8
+ exports.default = middleware;
9
+ class MiddlewareChain {
10
+ constructor(name) {
11
+ this.chain = [];
12
+ this.errHandler = (err) => { throw err; };
13
+ this.name = name;
14
+ this.logger = (0, debug_1.debug)(`sockethub:middleware:${name}`);
15
+ }
16
+ use(func) {
17
+ if (typeof func !== 'function') {
18
+ throw new Error('middleware use() can only take a function as an argument');
31
19
  }
32
- function _callFunc(pos) {
33
- if (pos + 1 === funcs.length) {
34
- // last call, don't wait for next callback
35
- funcs[pos].apply(this, params);
36
- return;
20
+ if (func.length === 3) {
21
+ this.errHandler = func;
22
+ }
23
+ else if (func.length === 2) {
24
+ this.chain.push(func);
25
+ }
26
+ else {
27
+ throw new Error('middleware function provided with incorrect number of params: ' + func.length);
28
+ }
29
+ return this;
30
+ }
31
+ done() {
32
+ return (data, callback) => {
33
+ let position = 0;
34
+ if (typeof callback !== 'function') {
35
+ callback = () => { };
37
36
  }
38
- function _nextFunc(status, ..._params) {
39
- if ((typeof status === 'boolean') && (!status)) {
40
- // failed, abort.
41
- self.errorHandler(..._params);
37
+ const next = (_data) => {
38
+ if (_data instanceof Error) {
39
+ this.logger(_data);
40
+ this.errHandler(_data, data, callback);
42
41
  }
43
- else if ((status) && (_params.length > -1)) {
44
- // re-assign/update the payload object
45
- params = _params;
42
+ else if (typeof this.chain[position] === 'function') {
43
+ this.chain[position++](_data, next);
46
44
  }
47
- count = count + 1;
48
- setTimeout(_callFunc.bind(this, count), 0);
49
- }
50
- funcs[pos].apply(this, [_nextFunc].concat(params));
51
- }
52
- _callFunc(count);
53
- };
54
- };
55
- exports.default = Middleware;
56
- //# sourceMappingURL=middleware.js.map
45
+ else {
46
+ callback(_data);
47
+ }
48
+ };
49
+ next(data);
50
+ };
51
+ }
52
+ }
53
+ exports.MiddlewareChain = MiddlewareChain;
54
+ //# sourceMappingURL=/middleware.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"middleware.js","sourceRoot":"","sources":["../src/middleware.ts"],"names":[],"mappings":";;AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,SAAS,UAAU,CAAC,YAAsB;IACxC,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;AACnC,CAAC;AAED,UAAU,CAAC,SAAS,CAAC,KAAK,GAAG,UAAU,GAAG,KAAK;IAC7C,IAAI,IAAI,GAAG,IAAI,CAAC;IAChB,OAAO,CAAC,GAAG,MAAM,EAAE,EAAE;QACnB,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,IAAI,OAAO,KAAK,CAAC,KAAK,CAAC,KAAK,UAAU,EAAE;YACtC,MAAM,IAAI,KAAK,CAAC,iEAAiE,CAAC,CAAC;SACpF;QAED,SAAS,SAAS,CAAC,GAAW;YAC5B,IAAI,GAAG,GAAG,CAAC,KAAK,KAAK,CAAC,MAAM,EAAE;gBAC5B,0CAA0C;gBAC1C,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;gBAC/B,OAAO;aACR;YAED,SAAS,SAAS,CAAC,MAAM,EAAE,GAAG,OAAO;gBACnC,IAAI,CAAC,OAAO,MAAM,KAAK,SAAS,CAAC,IAAI,CAAC,CAAE,MAAM,CAAC,EAAE;oBAC/C,iBAAiB;oBACjB,IAAI,CAAC,YAAY,CAAC,GAAG,OAAO,CAAC,CAAC;iBAC/B;qBAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE;oBAC5C,sCAAsC;oBACtC,MAAM,GAAG,OAAO,CAAC;iBAClB;gBACD,KAAK,GAAG,KAAK,GAAG,CAAC,CAAC;gBAClB,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;YAC7C,CAAC;YAED,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;QACrD,CAAC;QACD,SAAS,CAAC,KAAK,CAAC,CAAC;IACnB,CAAC,CAAC;AACJ,CAAC,CAAC;AAEF,kBAAe,UAAU,CAAC"}
1
+ {"version":3,"file":"middleware.js","sourceRoot":"/","sources":["middleware.ts"],"names":[],"mappings":";;;AAAA,iCAA8B;AAE9B,SAAwB,UAAU,CAAC,IAAY;IAC7C,OAAO,IAAI,eAAe,CAAC,IAAI,CAAC,CAAC;AACnC,CAAC;AAFD,6BAEC;AAED,MAAa,eAAe;IAM1B,YAAY,IAAY;QAJhB,UAAK,GAAoB,EAAE,CAAC;QAC5B,eAAU,GAAa,CAAC,GAAU,EAAE,EAAE,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;QAI5D,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,MAAM,GAAG,IAAA,aAAK,EAAC,wBAAwB,IAAI,EAAE,CAAC,CAAC;IACtD,CAAC;IAED,GAAG,CAAC,IAAc;QAChB,IAAI,OAAO,IAAI,KAAK,UAAU,EAAE;YAC9B,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC;SAC7E;QACD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;YACrB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;SACxB;aAAM,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;YAC5B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SACvB;aAAM;YACL,MAAM,IAAI,KAAK,CACb,gEAAgE,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;SACnF;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI;QACF,OAAO,CAAC,IAAS,EAAE,QAAkB,EAAE,EAAE;YACvC,IAAI,QAAQ,GAAG,CAAC,CAAC;YACjB,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE;gBAClC,QAAQ,GAAG,GAAG,EAAE,GAAE,CAAC,CAAC;aACrB;YACD,MAAM,IAAI,GAAG,CAAC,KAAU,EAAE,EAAE;gBAC1B,IAAI,KAAK,YAAY,KAAK,EAAE;oBAC1B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;oBACnB,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;iBACxC;qBAAM,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,UAAU,EAAE;oBACrD,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;iBACrC;qBAAM;oBACL,QAAQ,CAAC,KAAK,CAAC,CAAC;iBACjB;YACH,CAAC,CAAC;YACF,IAAI,CAAC,IAAI,CAAC,CAAC;QACb,CAAC,CAAC;IACJ,CAAC;CACF;AA7CD,0CA6CC"}