@adminide-stack/extension-api 1.1.1-alpha.97 → 1.1.3-alpha.31

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.
@@ -0,0 +1 @@
1
+ import 'babel-polyfill';
@@ -0,0 +1,452 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ require("babel-polyfill");
13
+ const abort_controller_1 = require("abort-controller");
14
+ const assert = require("assert");
15
+ const rxjs_1 = require("rxjs");
16
+ const operators_1 = require("rxjs/operators");
17
+ const utils_1 = require("../../utils");
18
+ const connection_1 = require("./connection");
19
+ const test_helper_1 = require("./test-helper");
20
+ const messages_1 = require("./messages");
21
+ // import 'jest';
22
+ describe('Connection', () => {
23
+ // Polyfill
24
+ ;
25
+ global.AbortController = abort_controller_1.default;
26
+ it('handle single request', () => __awaiter(void 0, void 0, void 0, function* () {
27
+ const method = 'test/handleSingleRequest';
28
+ const [serverTransports, clientTransports] = test_helper_1.createMessageTransports();
29
+ const server = connection_1.createConnection(serverTransports);
30
+ server.onRequest(method, (p1, _signal) => {
31
+ assert.deepStrictEqual(p1, ['foo']);
32
+ return p1;
33
+ });
34
+ server.listen();
35
+ const client = connection_1.createConnection(clientTransports);
36
+ client.listen();
37
+ assert.deepStrictEqual(yield client.sendRequest(method, ['foo']), ['foo']);
38
+ }));
39
+ it('handle single request with async result', () => __awaiter(void 0, void 0, void 0, function* () {
40
+ const method = 'test/handleSingleRequest';
41
+ const [serverTransports, clientTransports] = test_helper_1.createMessageTransports();
42
+ const server = connection_1.createConnection(serverTransports);
43
+ server.onRequest(method, (p1, _signal) => {
44
+ assert.deepStrictEqual(p1, ['foo']);
45
+ return Promise.resolve(p1);
46
+ });
47
+ server.listen();
48
+ const client = connection_1.createConnection(clientTransports);
49
+ client.listen();
50
+ assert.deepStrictEqual(yield client.sendRequest(method, ['foo']), ['foo']);
51
+ }));
52
+ it('abort undispatched request', () => __awaiter(void 0, void 0, void 0, function* () {
53
+ const [serverTransports, clientTransports] = test_helper_1.createMessageTransports();
54
+ const b1 = utils_1.createBarrier();
55
+ const b2 = utils_1.createBarrier();
56
+ const server = connection_1.createConnection(serverTransports);
57
+ server.onRequest('block', () => __awaiter(void 0, void 0, void 0, function* () {
58
+ b2.done();
59
+ yield b1.wait;
60
+ }));
61
+ server.onRequest('undispatched', () => {
62
+ throw new Error('handler should not be called');
63
+ });
64
+ server.listen();
65
+ const client = connection_1.createConnection(clientTransports);
66
+ client.listen();
67
+ client.sendRequest('block').catch(null);
68
+ yield b2.wait;
69
+ const abortController = new abort_controller_1.default();
70
+ const result = client.sendRequest('undispatched', ['foo'], abortController.signal);
71
+ abortController.abort();
72
+ b1.done();
73
+ yield assert.rejects(result, (err /** : AbortError*/) => err.name === 'AbortError');
74
+ }));
75
+ it('abort request currently being handled', () => __awaiter(void 0, void 0, void 0, function* () {
76
+ const [serverTransports, clientTransports] = test_helper_1.createMessageTransports();
77
+ const server = connection_1.createConnection(serverTransports);
78
+ server.onRequest('m', (_params, signal) => {
79
+ if (!signal) {
80
+ throw new Error('!signal');
81
+ }
82
+ return new Promise(resolve => {
83
+ signal.addEventListener('abort', () => resolve(123));
84
+ });
85
+ });
86
+ server.onRequest('ping', () => 'pong');
87
+ server.listen();
88
+ const client = connection_1.createConnection(clientTransports);
89
+ client.listen();
90
+ const abortController = new abort_controller_1.default();
91
+ const result = client.sendRequest('m', undefined, abortController.signal);
92
+ assert.strictEqual(yield client.sendRequest('ping'), 'pong'); // waits until the 'm' message starts to be handled
93
+ abortController.abort();
94
+ yield assert.rejects(result, (err /**: AbortError */) => err.name === 'AbortError');
95
+ }));
96
+ it('send request with single observable emission', () => __awaiter(void 0, void 0, void 0, function* () {
97
+ const [serverTransports, clientTransports] = test_helper_1.createMessageTransports();
98
+ const server = connection_1.createConnection(serverTransports);
99
+ server.onRequest('m', (params) => rxjs_1.of(params[0] + 1).pipe(operators_1.delay(0)));
100
+ server.listen();
101
+ const client = connection_1.createConnection(clientTransports);
102
+ client.listen();
103
+ assert.strictEqual(yield client.sendRequest('m', [1]), 2);
104
+ }));
105
+ it('observe request with single observable emission', () => __awaiter(void 0, void 0, void 0, function* () {
106
+ const [serverTransports, clientTransports] = test_helper_1.createMessageTransports();
107
+ const server = connection_1.createConnection(serverTransports);
108
+ server.onRequest('m', (params) => rxjs_1.of(params[0] + 1));
109
+ server.listen();
110
+ const client = connection_1.createConnection(clientTransports);
111
+ client.listen();
112
+ const result = client.observeRequest('m', [1]);
113
+ assert.deepStrictEqual(yield result.toPromise(), 2);
114
+ }));
115
+ it('observe request with multiple observable emissions', () => __awaiter(void 0, void 0, void 0, function* () {
116
+ const [serverTransports, clientTransports] = test_helper_1.createMessageTransports();
117
+ const server = connection_1.createConnection(serverTransports);
118
+ server.onRequest('m', (params) => new rxjs_1.Observable(observer => {
119
+ for (const v of params) {
120
+ observer.next(v + 1);
121
+ }
122
+ observer.complete();
123
+ }));
124
+ server.listen();
125
+ const client = connection_1.createConnection(clientTransports);
126
+ client.listen();
127
+ assert.deepStrictEqual(yield client
128
+ .observeRequest('m', [1, 2, 3, 4])
129
+ .pipe(operators_1.bufferCount(4))
130
+ .toPromise(), [2, 3, 4, 5]);
131
+ }));
132
+ it('handle multiple requests', () => __awaiter(void 0, void 0, void 0, function* () {
133
+ const method = 'test/handleSingleRequest';
134
+ const [serverTransports, clientTransports] = test_helper_1.createMessageTransports();
135
+ const server = connection_1.createConnection(serverTransports);
136
+ server.onRequest(method, (p1, _signal) => p1);
137
+ server.listen();
138
+ const client = connection_1.createConnection(clientTransports);
139
+ client.listen();
140
+ const promises = [];
141
+ promises.push(client.sendRequest(method, ['foo']));
142
+ promises.push(client.sendRequest(method, ['bar']));
143
+ const values = yield Promise.all(promises);
144
+ assert.deepStrictEqual(values, [['foo'], ['bar']]);
145
+ }));
146
+ it('unhandled request', () => __awaiter(void 0, void 0, void 0, function* () {
147
+ const method = 'test/handleSingleRequest';
148
+ const [serverTransports, clientTransports] = test_helper_1.createMessageTransports();
149
+ const server = connection_1.createConnection(serverTransports);
150
+ server.listen();
151
+ const client = connection_1.createConnection(clientTransports);
152
+ client.listen();
153
+ yield assert.rejects(() => client.sendRequest(method, ['foo']), (error) => error.code === messages_1.ErrorCodes.MethodNotFound);
154
+ }));
155
+ it('handler throws an Error', () => __awaiter(void 0, void 0, void 0, function* () {
156
+ const method = 'test/handleSingleRequest';
157
+ const [serverTransports, clientTransports] = test_helper_1.createMessageTransports();
158
+ const server = connection_1.createConnection(serverTransports);
159
+ server.onRequest(method, () => {
160
+ throw new Error('test');
161
+ });
162
+ server.listen();
163
+ const client = connection_1.createConnection(clientTransports);
164
+ client.listen();
165
+ yield assert.rejects(() => client.sendRequest(method, ['foo']), (error) => error.code === messages_1.ErrorCodes.InternalError &&
166
+ error.message === 'test' &&
167
+ error.data &&
168
+ typeof error.data.stack === 'string');
169
+ }));
170
+ it('handler returns a rejected Promise with an Error', () => __awaiter(void 0, void 0, void 0, function* () {
171
+ const method = 'test/handleSingleRequest';
172
+ const [serverTransports, clientTransports] = test_helper_1.createMessageTransports();
173
+ const server = connection_1.createConnection(serverTransports);
174
+ server.onRequest(method, () => Promise.reject(new Error('test')));
175
+ server.listen();
176
+ const client = connection_1.createConnection(clientTransports);
177
+ client.listen();
178
+ yield assert.rejects(() => client.sendRequest(method, ['foo']), (error) => error.code === messages_1.ErrorCodes.InternalError &&
179
+ error.message === 'test' &&
180
+ error.data &&
181
+ typeof error.data.stack === 'string');
182
+ }));
183
+ it('receives undefined request params as null', () => __awaiter(void 0, void 0, void 0, function* () {
184
+ const method = 'test/handleSingleRequest';
185
+ const [serverTransports, clientTransports] = test_helper_1.createMessageTransports();
186
+ const server = connection_1.createConnection(serverTransports);
187
+ server.onRequest(method, params => {
188
+ assert.strictEqual(params, null);
189
+ return '';
190
+ });
191
+ server.listen();
192
+ const client = connection_1.createConnection(clientTransports);
193
+ client.listen();
194
+ yield client.sendRequest(method);
195
+ }));
196
+ it('receives undefined notification params as null', () => __awaiter(void 0, void 0, void 0, function* () {
197
+ const method = 'testNotification';
198
+ const [serverTransports, clientTransports] = test_helper_1.createMessageTransports();
199
+ const server = connection_1.createConnection(serverTransports);
200
+ server.onNotification(method, params => {
201
+ assert.strictEqual(params, null);
202
+ return '';
203
+ });
204
+ server.listen();
205
+ const client = connection_1.createConnection(clientTransports);
206
+ client.listen();
207
+ client.sendNotification(method);
208
+ }));
209
+ it('receives null as null', () => __awaiter(void 0, void 0, void 0, function* () {
210
+ const method = 'test/handleSingleRequest';
211
+ const [serverTransports, clientTransports] = test_helper_1.createMessageTransports();
212
+ const server = connection_1.createConnection(serverTransports);
213
+ server.onRequest(method, params => {
214
+ assert.deepStrictEqual(params, [null]);
215
+ return null;
216
+ });
217
+ server.listen();
218
+ const client = connection_1.createConnection(clientTransports);
219
+ client.listen();
220
+ assert.strictEqual(yield client.sendRequest(method, [null]), null);
221
+ }));
222
+ it('receives 0 as 0', () => __awaiter(void 0, void 0, void 0, function* () {
223
+ const method = 'test/handleSingleRequest';
224
+ const [serverTransports, clientTransports] = test_helper_1.createMessageTransports();
225
+ const server = connection_1.createConnection(serverTransports);
226
+ server.onRequest(method, params => {
227
+ assert.deepStrictEqual(params, [0]);
228
+ return 0;
229
+ });
230
+ server.listen();
231
+ const client = connection_1.createConnection(clientTransports);
232
+ client.listen();
233
+ assert.strictEqual(yield client.sendRequest(method, [0]), 0);
234
+ }));
235
+ const testNotification = 'testNotification';
236
+ it('sends and receives notification', done => {
237
+ const [serverTransports, clientTransports] = test_helper_1.createMessageTransports();
238
+ const server = connection_1.createConnection(serverTransports);
239
+ server.onNotification(testNotification, params => {
240
+ assert.deepStrictEqual(params, [{ value: true }]);
241
+ done();
242
+ });
243
+ server.listen();
244
+ const client = connection_1.createConnection(clientTransports);
245
+ client.listen();
246
+ client.sendNotification(testNotification, [{ value: true }]);
247
+ });
248
+ it('unhandled notification event', done => {
249
+ const [serverTransports, clientTransports] = test_helper_1.createMessageTransports();
250
+ const server = connection_1.createConnection(serverTransports);
251
+ server.onUnhandledNotification(message => {
252
+ assert.strictEqual(message.method, testNotification);
253
+ assert.deepStrictEqual(message.params, [{ value: true }]);
254
+ done();
255
+ });
256
+ server.listen();
257
+ const client = connection_1.createConnection(clientTransports);
258
+ client.listen();
259
+ client.sendNotification(testNotification, [{ value: true }]);
260
+ });
261
+ it('unsubscribes client connection', () => __awaiter(void 0, void 0, void 0, function* () {
262
+ const method = 'test/handleSingleRequest';
263
+ const [serverTransports, clientTransports] = test_helper_1.createMessageTransports();
264
+ const client = connection_1.createConnection(clientTransports);
265
+ const server = connection_1.createConnection(serverTransports);
266
+ server.onRequest(method, _param => {
267
+ client.unsubscribe();
268
+ return '';
269
+ });
270
+ server.listen();
271
+ client.listen();
272
+ yield assert.rejects(() => client.sendRequest(method, ['']));
273
+ }));
274
+ it('unsubscribed connection throws', () => {
275
+ const client = connection_1.createConnection(test_helper_1.createMessagePipe());
276
+ client.listen();
277
+ client.unsubscribe();
278
+ assert.throws(() => client.sendNotification(testNotification));
279
+ });
280
+ it('two listen throw', () => {
281
+ const client = connection_1.createConnection(test_helper_1.createMessagePipe());
282
+ client.listen();
283
+ assert.throws(() => client.listen());
284
+ });
285
+ it('notify on connection unsubscribe', done => {
286
+ const client = connection_1.createConnection(test_helper_1.createMessagePipe());
287
+ client.listen();
288
+ client.onUnsubscribe(() => {
289
+ done();
290
+ });
291
+ client.unsubscribe();
292
+ });
293
+ it('params in notifications', done => {
294
+ const method = 'test';
295
+ const [serverTransports, clientTransports] = test_helper_1.createMessageTransports();
296
+ const server = connection_1.createConnection(serverTransports);
297
+ server.onNotification(method, params => {
298
+ assert.deepStrictEqual(params, [10, 'vscode']);
299
+ done();
300
+ });
301
+ server.listen();
302
+ const client = connection_1.createConnection(clientTransports);
303
+ client.listen();
304
+ client.sendNotification(method, [10, 'vscode']);
305
+ });
306
+ it('params in request/response', () => __awaiter(void 0, void 0, void 0, function* () {
307
+ const method = 'add';
308
+ const [serverTransports, clientTransports] = test_helper_1.createMessageTransports();
309
+ const server = connection_1.createConnection(serverTransports);
310
+ server.onRequest(method, (params) => {
311
+ assert.deepStrictEqual(params, [10, 20, 30]);
312
+ return params.reduce((sum, n) => sum + n, 0);
313
+ });
314
+ server.listen();
315
+ const client = connection_1.createConnection(clientTransports);
316
+ client.listen();
317
+ assert.strictEqual(yield client.sendRequest(method, [10, 20, 30]), 60);
318
+ }));
319
+ it('params in request/response with signal', () => __awaiter(void 0, void 0, void 0, function* () {
320
+ const method = 'add';
321
+ const [serverTransports, clientTransports] = test_helper_1.createMessageTransports();
322
+ const server = connection_1.createConnection(serverTransports);
323
+ server.onRequest(method, (params, _signal) => {
324
+ assert.deepStrictEqual(params, [10, 20, 30]);
325
+ return params.reduce((sum, n) => sum + n, 0);
326
+ });
327
+ server.listen();
328
+ const client = connection_1.createConnection(clientTransports);
329
+ const signal = new abort_controller_1.default().signal;
330
+ client.listen();
331
+ assert.strictEqual(yield client.sendRequest(method, [10, 20, 30], signal), 60);
332
+ }));
333
+ it('1 param as array in request', () => __awaiter(void 0, void 0, void 0, function* () {
334
+ const type = 'add';
335
+ const [serverTransports, clientTransports] = test_helper_1.createMessageTransports();
336
+ const server = connection_1.createConnection(serverTransports);
337
+ server.onRequest(type, p1 => {
338
+ assert(Array.isArray(p1));
339
+ assert.strictEqual(p1[0], 10);
340
+ assert.strictEqual(p1[1], 20);
341
+ assert.strictEqual(p1[2], 30);
342
+ return 60;
343
+ });
344
+ server.listen();
345
+ const client = connection_1.createConnection(clientTransports);
346
+ const signal = new abort_controller_1.default().signal;
347
+ client.listen();
348
+ assert.strictEqual(yield client.sendRequest(type, [10, 20, 30], signal), 60);
349
+ }));
350
+ it('1 param as array in notification', done => {
351
+ const type = 'add';
352
+ const [serverTransports, clientTransports] = test_helper_1.createMessageTransports();
353
+ const server = connection_1.createConnection(serverTransports);
354
+ server.onNotification(type, params => {
355
+ assert.deepStrictEqual(params, [10, 20, 30]);
356
+ done();
357
+ });
358
+ server.listen();
359
+ const client = connection_1.createConnection(clientTransports);
360
+ client.listen();
361
+ client.sendNotification(type, [10, 20, 30]);
362
+ });
363
+ it('untyped request/response', () => __awaiter(void 0, void 0, void 0, function* () {
364
+ const [serverTransports, clientTransports] = test_helper_1.createMessageTransports();
365
+ const server = connection_1.createConnection(serverTransports);
366
+ server.onRequest('test', (params, _signal) => {
367
+ assert.deepStrictEqual(params, [10, 20, 30]);
368
+ return params.reduce((sum, n) => sum + n, 0);
369
+ });
370
+ server.listen();
371
+ const client = connection_1.createConnection(clientTransports);
372
+ const signal = new abort_controller_1.default().signal;
373
+ client.listen();
374
+ assert.strictEqual(yield client.sendRequest('test', [10, 20, 30], signal), 60);
375
+ }));
376
+ it('untyped notification', done => {
377
+ const [serverTransports, clientTransports] = test_helper_1.createMessageTransports();
378
+ const server = connection_1.createConnection(serverTransports);
379
+ server.onNotification('test', (params) => {
380
+ assert.deepStrictEqual(params, [10, 20, 30]);
381
+ done();
382
+ });
383
+ server.listen();
384
+ const client = connection_1.createConnection(clientTransports);
385
+ client.listen();
386
+ client.sendNotification('test', [10, 20, 30]);
387
+ });
388
+ it('star request handler', () => __awaiter(void 0, void 0, void 0, function* () {
389
+ const [serverTransports, clientTransports] = test_helper_1.createMessageTransports();
390
+ const server = connection_1.createConnection(serverTransports);
391
+ server.onRequest((method, params, _signal) => {
392
+ assert.strictEqual(method, 'test');
393
+ assert.deepStrictEqual(params, [10, 20, 30]);
394
+ return params.reduce((sum, n) => sum + n, 0);
395
+ });
396
+ server.listen();
397
+ const client = connection_1.createConnection(clientTransports);
398
+ const signal = new abort_controller_1.default().signal;
399
+ client.listen();
400
+ assert.strictEqual(yield client.sendRequest('test', [10, 20, 30], signal), 60);
401
+ }));
402
+ it('star notification handler', done => {
403
+ const [serverTransports, clientTransports] = test_helper_1.createMessageTransports();
404
+ const server = connection_1.createConnection(serverTransports);
405
+ server.onNotification((method, params) => {
406
+ assert.strictEqual(method, 'test');
407
+ assert.deepStrictEqual(params, [10, 20, 30]);
408
+ done();
409
+ });
410
+ server.listen();
411
+ const client = connection_1.createConnection(clientTransports);
412
+ client.listen();
413
+ client.sendNotification('test', [10, 20, 30]);
414
+ });
415
+ it('abort signal is undefined', () => __awaiter(void 0, void 0, void 0, function* () {
416
+ const type = 'add';
417
+ const [serverTransports, clientTransports] = test_helper_1.createMessageTransports();
418
+ const server = connection_1.createConnection(serverTransports);
419
+ server.onRequest(type, (params, _signal) => {
420
+ assert.deepStrictEqual(params, [10, 20, 30]);
421
+ return params.reduce((sum, n) => sum + n, 0);
422
+ });
423
+ server.listen();
424
+ const client = connection_1.createConnection(clientTransports);
425
+ client.listen();
426
+ assert.strictEqual(yield client.sendRequest(type, [10, 20, 30], undefined), 60);
427
+ }));
428
+ it('null params in request', () => __awaiter(void 0, void 0, void 0, function* () {
429
+ const type = 'add';
430
+ const [serverTransports, clientTransports] = test_helper_1.createMessageTransports();
431
+ const server = connection_1.createConnection(serverTransports);
432
+ server.onRequest(type, _signal => 123);
433
+ server.listen();
434
+ const client = connection_1.createConnection(clientTransports);
435
+ client.listen();
436
+ client.sendRequest(type, null).then((result) => assert.strictEqual(result, 123));
437
+ }));
438
+ it('null params in notifications', done => {
439
+ const type = 'test';
440
+ const [serverTransports, clientTransports] = test_helper_1.createMessageTransports();
441
+ const server = connection_1.createConnection(serverTransports);
442
+ server.onNotification(type, params => {
443
+ assert.strictEqual(params, null);
444
+ done();
445
+ });
446
+ server.listen();
447
+ const client = connection_1.createConnection(clientTransports);
448
+ client.listen();
449
+ client.sendNotification(type, null);
450
+ });
451
+ });
452
+ //# sourceMappingURL=connection.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connection.test.js","sourceRoot":"","sources":["../../../src/connections/jsonrpc2/connection.test.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,0BAAwB;AAExB,uDAA+C;AAC/C,iCAAiC;AACjC,+BAAqC;AACrC,8CAAmD;AACnD,uCAA2C;AAC3C,6CAA+C;AAC/C,+CAA0E;AAC1E,yCAAsD;AACtD,iBAAiB;AAEjB,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;IACxB,WAAW;IACX,CAAC;IAAE,MAAc,CAAC,eAAe,GAAG,0BAAe,CAAA;IAEnD,EAAE,CAAC,uBAAuB,EAAE,GAAS,EAAE;QACnC,MAAM,MAAM,GAAG,0BAA0B,CAAA;QACzC,MAAM,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,GAAG,qCAAuB,EAAE,CAAA;QAEtE,MAAM,MAAM,GAAG,6BAAgB,CAAC,gBAAgB,CAAC,CAAA;QACjD,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,OAAO,EAAE,EAAE;YACrC,MAAM,CAAC,eAAe,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAA;YACnC,OAAO,EAAE,CAAA;QACb,CAAC,CAAC,CAAA;QACF,MAAM,CAAC,MAAM,EAAE,CAAA;QAEf,MAAM,MAAM,GAAG,6BAAgB,CAAC,gBAAgB,CAAC,CAAA;QACjD,MAAM,CAAC,MAAM,EAAE,CAAA;QACf,MAAM,CAAC,eAAe,CAAC,MAAM,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAA;IAC9E,CAAC,CAAA,CAAC,CAAA;IAEF,EAAE,CAAC,yCAAyC,EAAE,GAAS,EAAE;QACrD,MAAM,MAAM,GAAG,0BAA0B,CAAA;QACzC,MAAM,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,GAAG,qCAAuB,EAAE,CAAA;QAEtE,MAAM,MAAM,GAAG,6BAAgB,CAAC,gBAAgB,CAAC,CAAA;QACjD,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,OAAO,EAAE,EAAE;YACrC,MAAM,CAAC,eAAe,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAA;YACnC,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;QAC9B,CAAC,CAAC,CAAA;QACF,MAAM,CAAC,MAAM,EAAE,CAAA;QAEf,MAAM,MAAM,GAAG,6BAAgB,CAAC,gBAAgB,CAAC,CAAA;QACjD,MAAM,CAAC,MAAM,EAAE,CAAA;QACf,MAAM,CAAC,eAAe,CAAC,MAAM,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAA;IAC9E,CAAC,CAAA,CAAC,CAAA;IAEF,EAAE,CAAC,4BAA4B,EAAE,GAAS,EAAE;QACxC,MAAM,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,GAAG,qCAAuB,EAAE,CAAA;QACtE,MAAM,EAAE,GAAG,qBAAa,EAAE,CAAA;QAC1B,MAAM,EAAE,GAAG,qBAAa,EAAE,CAAA;QAE1B,MAAM,MAAM,GAAG,6BAAgB,CAAC,gBAAgB,CAAC,CAAA;QACjD,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,GAAS,EAAE;YACjC,EAAE,CAAC,IAAI,EAAE,CAAA;YACT,MAAM,EAAE,CAAC,IAAI,CAAA;QACjB,CAAC,CAAA,CAAC,CAAA;QACF,MAAM,CAAC,SAAS,CAAC,cAAc,EAAE,GAAG,EAAE;YAClC,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAA;QACnD,CAAC,CAAC,CAAA;QACF,MAAM,CAAC,MAAM,EAAE,CAAA;QAEf,MAAM,MAAM,GAAG,6BAAgB,CAAC,gBAAgB,CAAC,CAAA;QACjD,MAAM,CAAC,MAAM,EAAE,CAAA;QACf,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QACvC,MAAM,EAAE,CAAC,IAAI,CAAA;QACb,MAAM,eAAe,GAAG,IAAI,0BAAe,EAAE,CAAA;QAC7C,MAAM,MAAM,GAAG,MAAM,CAAC,WAAW,CAAC,cAAc,EAAE,CAAC,KAAK,CAAC,EAAE,eAAe,CAAC,MAAM,CAAC,CAAA;QAClF,eAAe,CAAC,KAAK,EAAE,CAAA;QACvB,EAAE,CAAC,IAAI,EAAE,CAAA;QACT,MAAM,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,GAAG,CAAA,kBAAkB,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,YAAY,CAAC,CAAA;IACtF,CAAC,CAAA,CAAC,CAAA;IAEF,EAAE,CAAC,uCAAuC,EAAE,GAAS,EAAE;QACnD,MAAM,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,GAAG,qCAAuB,EAAE,CAAA;QAEtE,MAAM,MAAM,GAAG,6BAAgB,CAAC,gBAAgB,CAAC,CAAA;QACjD,MAAM,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACtC,IAAI,CAAC,MAAM,EAAE;gBACT,MAAM,IAAI,KAAK,CAAC,SAAS,CAAC,CAAA;aAC7B;YACD,OAAO,IAAI,OAAO,CAAS,OAAO,CAAC,EAAE;gBACjC,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAA;YACxD,CAAC,CAAC,CAAA;QACN,CAAC,CAAC,CAAA;QACF,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,CAAA;QACtC,MAAM,CAAC,MAAM,EAAE,CAAA;QAEf,MAAM,MAAM,GAAG,6BAAgB,CAAC,gBAAgB,CAAC,CAAA;QACjD,MAAM,CAAC,MAAM,EAAE,CAAA;QACf,MAAM,eAAe,GAAG,IAAI,0BAAe,EAAE,CAAA;QAC7C,MAAM,MAAM,GAAG,MAAM,CAAC,WAAW,CAAC,GAAG,EAAE,SAAS,EAAE,eAAe,CAAC,MAAM,CAAC,CAAA;QACzE,MAAM,CAAC,WAAW,CAAC,MAAM,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAA,CAAC,mDAAmD;QAChH,eAAe,CAAC,KAAK,EAAE,CAAA;QACvB,MAAM,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,GAAG,CAAA,kBAAkB,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,YAAY,CAAC,CAAA;IACtF,CAAC,CAAA,CAAC,CAAA;IAEF,EAAE,CAAC,8CAA8C,EAAE,GAAS,EAAE;QAC1D,MAAM,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,GAAG,qCAAuB,EAAE,CAAA;QAEtE,MAAM,MAAM,GAAG,6BAAgB,CAAC,gBAAgB,CAAC,CAAA;QACjD,MAAM,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,MAAgB,EAAE,EAAE,CAAC,SAAE,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,iBAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;QAC7E,MAAM,CAAC,MAAM,EAAE,CAAA;QAEf,MAAM,MAAM,GAAG,6BAAgB,CAAC,gBAAgB,CAAC,CAAA;QACjD,MAAM,CAAC,MAAM,EAAE,CAAA;QACf,MAAM,CAAC,WAAW,CAAC,MAAM,MAAM,CAAC,WAAW,CAAS,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IACrE,CAAC,CAAA,CAAC,CAAA;IAEF,EAAE,CAAC,iDAAiD,EAAE,GAAS,EAAE;QAC7D,MAAM,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,GAAG,qCAAuB,EAAE,CAAA;QAEtE,MAAM,MAAM,GAAG,6BAAgB,CAAC,gBAAgB,CAAC,CAAA;QACjD,MAAM,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,MAAgB,EAAE,EAAE,CAAC,SAAE,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;QAC9D,MAAM,CAAC,MAAM,EAAE,CAAA;QAEf,MAAM,MAAM,GAAG,6BAAgB,CAAC,gBAAgB,CAAC,CAAA;QACjD,MAAM,CAAC,MAAM,EAAE,CAAA;QACf,MAAM,MAAM,GAAG,MAAM,CAAC,cAAc,CAAS,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;QACtD,MAAM,CAAC,eAAe,CAAC,MAAM,MAAM,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,CAAA;IACvD,CAAC,CAAA,CAAC,CAAA;IAEF,EAAE,CAAC,oDAAoD,EAAE,GAAS,EAAE;QAChE,MAAM,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,GAAG,qCAAuB,EAAE,CAAA;QACtE,MAAM,MAAM,GAAG,6BAAgB,CAAC,gBAAgB,CAAC,CAAA;QACjD,MAAM,CAAC,SAAS,CACZ,GAAG,EACH,CAAC,MAAgB,EAAE,EAAE,CACjB,IAAI,iBAAU,CAAS,QAAQ,CAAC,EAAE;YAC9B,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE;gBACpB,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;aACvB;YACD,QAAQ,CAAC,QAAQ,EAAE,CAAA;QACvB,CAAC,CAAC,CACT,CAAA;QACD,MAAM,CAAC,MAAM,EAAE,CAAA;QAEf,MAAM,MAAM,GAAG,6BAAgB,CAAC,gBAAgB,CAAC,CAAA;QACjD,MAAM,CAAC,MAAM,EAAE,CAAA;QACf,MAAM,CAAC,eAAe,CAClB,MAAM,MAAM;aACP,cAAc,CAAS,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;aACzC,IAAI,CAAC,uBAAW,CAAC,CAAC,CAAC,CAAC;aACpB,SAAS,EAAE,EAChB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CACf,CAAA;IACL,CAAC,CAAA,CAAC,CAAA;IAEF,EAAE,CAAC,0BAA0B,EAAE,GAAS,EAAE;QACtC,MAAM,MAAM,GAAG,0BAA0B,CAAA;QACzC,MAAM,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,GAAG,qCAAuB,EAAE,CAAA;QAEtE,MAAM,MAAM,GAAG,6BAAgB,CAAC,gBAAgB,CAAC,CAAA;QACjD,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,OAAO,EAAE,EAAE,CAAC,EAAE,CAAC,CAAA;QAC7C,MAAM,CAAC,MAAM,EAAE,CAAA;QAEf,MAAM,MAAM,GAAG,6BAAgB,CAAC,gBAAgB,CAAC,CAAA;QACjD,MAAM,CAAC,MAAM,EAAE,CAAA;QACf,MAAM,QAAQ,GAAsB,EAAE,CAAA;QACtC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;QAClD,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;QAElD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;QAC1C,MAAM,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;IACtD,CAAC,CAAA,CAAC,CAAA;IAEF,EAAE,CAAC,mBAAmB,EAAE,GAAS,EAAE;QAC/B,MAAM,MAAM,GAAG,0BAA0B,CAAA;QACzC,MAAM,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,GAAG,qCAAuB,EAAE,CAAA;QAEtE,MAAM,MAAM,GAAG,6BAAgB,CAAC,gBAAgB,CAAC,CAAA;QACjD,MAAM,CAAC,MAAM,EAAE,CAAA;QAEf,MAAM,MAAM,GAAG,6BAAgB,CAAC,gBAAgB,CAAC,CAAA;QACjD,MAAM,CAAC,MAAM,EAAE,CAAA;QACf,MAAM,MAAM,CAAC,OAAO,CAChB,GAAG,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,CAAC,EACzC,CAAC,KAAyB,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,qBAAU,CAAC,cAAc,CAC1E,CAAA;IACL,CAAC,CAAA,CAAC,CAAA;IAEF,EAAE,CAAC,yBAAyB,EAAE,GAAS,EAAE;QACrC,MAAM,MAAM,GAAG,0BAA0B,CAAA;QACzC,MAAM,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,GAAG,qCAAuB,EAAE,CAAA;QAEtE,MAAM,MAAM,GAAG,6BAAgB,CAAC,gBAAgB,CAAC,CAAA;QACjD,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,GAAG,EAAE;YAC1B,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,CAAA;QAC3B,CAAC,CAAC,CAAA;QACF,MAAM,CAAC,MAAM,EAAE,CAAA;QAEf,MAAM,MAAM,GAAG,6BAAgB,CAAC,gBAAgB,CAAC,CAAA;QACjD,MAAM,CAAC,MAAM,EAAE,CAAA;QACf,MAAM,MAAM,CAAC,OAAO,CAChB,GAAG,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,CAAC,EACzC,CAAC,KAAyB,EAAE,EAAE,CAC1B,KAAK,CAAC,IAAI,KAAK,qBAAU,CAAC,aAAa;YACvC,KAAK,CAAC,OAAO,KAAK,MAAM;YACxB,KAAK,CAAC,IAAI;YACV,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,KAAK,QAAQ,CAC3C,CAAA;IACL,CAAC,CAAA,CAAC,CAAA;IAEF,EAAE,CAAC,kDAAkD,EAAE,GAAS,EAAE;QAC9D,MAAM,MAAM,GAAG,0BAA0B,CAAA;QACzC,MAAM,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,GAAG,qCAAuB,EAAE,CAAA;QAEtE,MAAM,MAAM,GAAG,6BAAgB,CAAC,gBAAgB,CAAC,CAAA;QACjD,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;QACjE,MAAM,CAAC,MAAM,EAAE,CAAA;QAEf,MAAM,MAAM,GAAG,6BAAgB,CAAC,gBAAgB,CAAC,CAAA;QACjD,MAAM,CAAC,MAAM,EAAE,CAAA;QACf,MAAM,MAAM,CAAC,OAAO,CAChB,GAAG,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,CAAC,EACzC,CAAC,KAAyB,EAAE,EAAE,CAC1B,KAAK,CAAC,IAAI,KAAK,qBAAU,CAAC,aAAa;YACvC,KAAK,CAAC,OAAO,KAAK,MAAM;YACxB,KAAK,CAAC,IAAI;YACV,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,KAAK,QAAQ,CAC3C,CAAA;IACL,CAAC,CAAA,CAAC,CAAA;IAEF,EAAE,CAAC,2CAA2C,EAAE,GAAS,EAAE;QACvD,MAAM,MAAM,GAAG,0BAA0B,CAAA;QACzC,MAAM,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,GAAG,qCAAuB,EAAE,CAAA;QAEtE,MAAM,MAAM,GAAG,6BAAgB,CAAC,gBAAgB,CAAC,CAAA;QACjD,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE;YAC9B,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;YAChC,OAAO,EAAE,CAAA;QACb,CAAC,CAAC,CAAA;QACF,MAAM,CAAC,MAAM,EAAE,CAAA;QAEf,MAAM,MAAM,GAAG,6BAAgB,CAAC,gBAAgB,CAAC,CAAA;QACjD,MAAM,CAAC,MAAM,EAAE,CAAA;QACf,MAAM,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAA;IACpC,CAAC,CAAA,CAAC,CAAA;IAEF,EAAE,CAAC,gDAAgD,EAAE,GAAS,EAAE;QAC5D,MAAM,MAAM,GAAG,kBAAkB,CAAA;QACjC,MAAM,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,GAAG,qCAAuB,EAAE,CAAA;QAEtE,MAAM,MAAM,GAAG,6BAAgB,CAAC,gBAAgB,CAAC,CAAA;QACjD,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE;YACnC,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;YAChC,OAAO,EAAE,CAAA;QACb,CAAC,CAAC,CAAA;QACF,MAAM,CAAC,MAAM,EAAE,CAAA;QAEf,MAAM,MAAM,GAAG,6BAAgB,CAAC,gBAAgB,CAAC,CAAA;QACjD,MAAM,CAAC,MAAM,EAAE,CAAA;QACf,MAAM,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAA;IACnC,CAAC,CAAA,CAAC,CAAA;IAEF,EAAE,CAAC,uBAAuB,EAAE,GAAS,EAAE;QACnC,MAAM,MAAM,GAAG,0BAA0B,CAAA;QACzC,MAAM,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,GAAG,qCAAuB,EAAE,CAAA;QAEtE,MAAM,MAAM,GAAG,6BAAgB,CAAC,gBAAgB,CAAC,CAAA;QACjD,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE;YAC9B,MAAM,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC,CAAA;YACtC,OAAO,IAAI,CAAA;QACf,CAAC,CAAC,CAAA;QACF,MAAM,CAAC,MAAM,EAAE,CAAA;QAEf,MAAM,MAAM,GAAG,6BAAgB,CAAC,gBAAgB,CAAC,CAAA;QACjD,MAAM,CAAC,MAAM,EAAE,CAAA;QACf,MAAM,CAAC,WAAW,CAAC,MAAM,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAA;IACtE,CAAC,CAAA,CAAC,CAAA;IAEF,EAAE,CAAC,iBAAiB,EAAE,GAAS,EAAE;QAC7B,MAAM,MAAM,GAAG,0BAA0B,CAAA;QACzC,MAAM,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,GAAG,qCAAuB,EAAE,CAAA;QAEtE,MAAM,MAAM,GAAG,6BAAgB,CAAC,gBAAgB,CAAC,CAAA;QACjD,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE;YAC9B,MAAM,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;YACnC,OAAO,CAAC,CAAA;QACZ,CAAC,CAAC,CAAA;QACF,MAAM,CAAC,MAAM,EAAE,CAAA;QAEf,MAAM,MAAM,GAAG,6BAAgB,CAAC,gBAAgB,CAAC,CAAA;QACjD,MAAM,CAAC,MAAM,EAAE,CAAA;QACf,MAAM,CAAC,WAAW,CAAC,MAAM,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IAChE,CAAC,CAAA,CAAC,CAAA;IAEF,MAAM,gBAAgB,GAAG,kBAAkB,CAAA;IAC3C,EAAE,CAAC,iCAAiC,EAAE,IAAI,CAAC,EAAE;QACzC,MAAM,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,GAAG,qCAAuB,EAAE,CAAA;QAEtE,MAAM,MAAM,GAAG,6BAAgB,CAAC,gBAAgB,CAAC,CAAA;QACjD,MAAM,CAAC,cAAc,CAAC,gBAAgB,EAAE,MAAM,CAAC,EAAE;YAC7C,MAAM,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;YACjD,IAAI,EAAE,CAAA;QACV,CAAC,CAAC,CAAA;QACF,MAAM,CAAC,MAAM,EAAE,CAAA;QAEf,MAAM,MAAM,GAAG,6BAAgB,CAAC,gBAAgB,CAAC,CAAA;QACjD,MAAM,CAAC,MAAM,EAAE,CAAA;QACf,MAAM,CAAC,gBAAgB,CAAC,gBAAgB,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;IAChE,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,8BAA8B,EAAE,IAAI,CAAC,EAAE;QACtC,MAAM,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,GAAG,qCAAuB,EAAE,CAAA;QAEtE,MAAM,MAAM,GAAG,6BAAgB,CAAC,gBAAgB,CAAC,CAAA;QACjD,MAAM,CAAC,uBAAuB,CAAC,OAAO,CAAC,EAAE;YACrC,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAA;YACpD,MAAM,CAAC,eAAe,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;YACzD,IAAI,EAAE,CAAA;QACV,CAAC,CAAC,CAAA;QACF,MAAM,CAAC,MAAM,EAAE,CAAA;QAEf,MAAM,MAAM,GAAG,6BAAgB,CAAC,gBAAgB,CAAC,CAAA;QACjD,MAAM,CAAC,MAAM,EAAE,CAAA;QACf,MAAM,CAAC,gBAAgB,CAAC,gBAAgB,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;IAChE,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,gCAAgC,EAAE,GAAS,EAAE;QAC5C,MAAM,MAAM,GAAG,0BAA0B,CAAA;QACzC,MAAM,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,GAAG,qCAAuB,EAAE,CAAA;QAEtE,MAAM,MAAM,GAAG,6BAAgB,CAAC,gBAAgB,CAAC,CAAA;QACjD,MAAM,MAAM,GAAG,6BAAgB,CAAC,gBAAgB,CAAC,CAAA;QACjD,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE;YAC9B,MAAM,CAAC,WAAW,EAAE,CAAA;YACpB,OAAO,EAAE,CAAA;QACb,CAAC,CAAC,CAAA;QACF,MAAM,CAAC,MAAM,EAAE,CAAA;QAEf,MAAM,CAAC,MAAM,EAAE,CAAA;QACf,MAAM,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;IAChE,CAAC,CAAA,CAAC,CAAA;IAEF,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE;QACtC,MAAM,MAAM,GAAG,6BAAgB,CAAC,+BAAiB,EAAE,CAAC,CAAA;QACpD,MAAM,CAAC,MAAM,EAAE,CAAA;QACf,MAAM,CAAC,WAAW,EAAE,CAAA;QACpB,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,CAAC,CAAA;IAClE,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,kBAAkB,EAAE,GAAG,EAAE;QACxB,MAAM,MAAM,GAAG,6BAAgB,CAAC,+BAAiB,EAAE,CAAC,CAAA;QACpD,MAAM,CAAC,MAAM,EAAE,CAAA;QACf,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAA;IACxC,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,kCAAkC,EAAE,IAAI,CAAC,EAAE;QAC1C,MAAM,MAAM,GAAG,6BAAgB,CAAC,+BAAiB,EAAE,CAAC,CAAA;QACpD,MAAM,CAAC,MAAM,EAAE,CAAA;QACf,MAAM,CAAC,aAAa,CAAC,GAAG,EAAE;YACtB,IAAI,EAAE,CAAA;QACV,CAAC,CAAC,CAAA;QACF,MAAM,CAAC,WAAW,EAAE,CAAA;IACxB,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,yBAAyB,EAAE,IAAI,CAAC,EAAE;QACjC,MAAM,MAAM,GAAG,MAAM,CAAA;QACrB,MAAM,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,GAAG,qCAAuB,EAAE,CAAA;QAEtE,MAAM,MAAM,GAAG,6BAAgB,CAAC,gBAAgB,CAAC,CAAA;QACjD,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE;YACnC,MAAM,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC,CAAA;YAC9C,IAAI,EAAE,CAAA;QACV,CAAC,CAAC,CAAA;QACF,MAAM,CAAC,MAAM,EAAE,CAAA;QAEf,MAAM,MAAM,GAAG,6BAAgB,CAAC,gBAAgB,CAAC,CAAA;QACjD,MAAM,CAAC,MAAM,EAAE,CAAA;QACf,MAAM,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC,CAAA;IACnD,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,4BAA4B,EAAE,GAAS,EAAE;QACxC,MAAM,MAAM,GAAG,KAAK,CAAA;QACpB,MAAM,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,GAAG,qCAAuB,EAAE,CAAA;QAEtE,MAAM,MAAM,GAAG,6BAAgB,CAAC,gBAAgB,CAAC,CAAA;QACjD,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,MAAgB,EAAE,EAAE;YAC1C,MAAM,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAA;YAC5C,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,CAAA;QAChD,CAAC,CAAC,CAAA;QACF,MAAM,CAAC,MAAM,EAAE,CAAA;QAEf,MAAM,MAAM,GAAG,6BAAgB,CAAC,gBAAgB,CAAC,CAAA;QACjD,MAAM,CAAC,MAAM,EAAE,CAAA;QACf,MAAM,CAAC,WAAW,CAAC,MAAM,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;IAC1E,CAAC,CAAA,CAAC,CAAA;IAEF,EAAE,CAAC,wCAAwC,EAAE,GAAS,EAAE;QACpD,MAAM,MAAM,GAAG,KAAK,CAAA;QACpB,MAAM,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,GAAG,qCAAuB,EAAE,CAAA;QAEtE,MAAM,MAAM,GAAG,6BAAgB,CAAC,gBAAgB,CAAC,CAAA;QACjD,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,MAAgB,EAAE,OAAO,EAAE,EAAE;YACnD,MAAM,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAA;YAC5C,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,CAAA;QAChD,CAAC,CAAC,CAAA;QACF,MAAM,CAAC,MAAM,EAAE,CAAA;QAEf,MAAM,MAAM,GAAG,6BAAgB,CAAC,gBAAgB,CAAC,CAAA;QACjD,MAAM,MAAM,GAAG,IAAI,0BAAe,EAAE,CAAC,MAAM,CAAA;QAC3C,MAAM,CAAC,MAAM,EAAE,CAAA;QACf,MAAM,CAAC,WAAW,CAAC,MAAM,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,CAAA;IAClF,CAAC,CAAA,CAAC,CAAA;IAEF,EAAE,CAAC,6BAA6B,EAAE,GAAS,EAAE;QACzC,MAAM,IAAI,GAAG,KAAK,CAAA;QAClB,MAAM,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,GAAG,qCAAuB,EAAE,CAAA;QAEtE,MAAM,MAAM,GAAG,6BAAgB,CAAC,gBAAgB,CAAC,CAAA;QACjD,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE;YACxB,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAA;YACzB,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;YAC7B,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;YAC7B,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;YAC7B,OAAO,EAAE,CAAA;QACb,CAAC,CAAC,CAAA;QACF,MAAM,CAAC,MAAM,EAAE,CAAA;QAEf,MAAM,MAAM,GAAG,6BAAgB,CAAC,gBAAgB,CAAC,CAAA;QACjD,MAAM,MAAM,GAAG,IAAI,0BAAe,EAAE,CAAC,MAAM,CAAA;QAC3C,MAAM,CAAC,MAAM,EAAE,CAAA;QACf,MAAM,CAAC,WAAW,CAAC,MAAM,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,CAAA;IAChF,CAAC,CAAA,CAAC,CAAA;IAEF,EAAE,CAAC,kCAAkC,EAAE,IAAI,CAAC,EAAE;QAC1C,MAAM,IAAI,GAAG,KAAK,CAAA;QAClB,MAAM,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,GAAG,qCAAuB,EAAE,CAAA;QAEtE,MAAM,MAAM,GAAG,6BAAgB,CAAC,gBAAgB,CAAC,CAAA;QACjD,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE;YACjC,MAAM,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAA;YAC5C,IAAI,EAAE,CAAA;QACV,CAAC,CAAC,CAAA;QACF,MAAM,CAAC,MAAM,EAAE,CAAA;QAEf,MAAM,MAAM,GAAG,6BAAgB,CAAC,gBAAgB,CAAC,CAAA;QACjD,MAAM,CAAC,MAAM,EAAE,CAAA;QACf,MAAM,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAA;IAC/C,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,0BAA0B,EAAE,GAAS,EAAE;QACtC,MAAM,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,GAAG,qCAAuB,EAAE,CAAA;QAEtE,MAAM,MAAM,GAAG,6BAAgB,CAAC,gBAAgB,CAAC,CAAA;QACjD,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,MAAgB,EAAE,OAAO,EAAE,EAAE;YACnD,MAAM,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAA;YAC5C,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,CAAA;QAChD,CAAC,CAAC,CAAA;QACF,MAAM,CAAC,MAAM,EAAE,CAAA;QAEf,MAAM,MAAM,GAAG,6BAAgB,CAAC,gBAAgB,CAAC,CAAA;QACjD,MAAM,MAAM,GAAG,IAAI,0BAAe,EAAE,CAAC,MAAM,CAAA;QAC3C,MAAM,CAAC,MAAM,EAAE,CAAA;QACf,MAAM,CAAC,WAAW,CAAC,MAAM,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,CAAA;IAClF,CAAC,CAAA,CAAC,CAAA;IAEF,EAAE,CAAC,sBAAsB,EAAE,IAAI,CAAC,EAAE;QAC9B,MAAM,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,GAAG,qCAAuB,EAAE,CAAA;QAEtE,MAAM,MAAM,GAAG,6BAAgB,CAAC,gBAAgB,CAAC,CAAA;QACjD,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC,MAAgB,EAAE,EAAE;YAC/C,MAAM,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAA;YAC5C,IAAI,EAAE,CAAA;QACV,CAAC,CAAC,CAAA;QACF,MAAM,CAAC,MAAM,EAAE,CAAA;QAEf,MAAM,MAAM,GAAG,6BAAgB,CAAC,gBAAgB,CAAC,CAAA;QACjD,MAAM,CAAC,MAAM,EAAE,CAAA;QACf,MAAM,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAA;IACjD,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,sBAAsB,EAAE,GAAS,EAAE;QAClC,MAAM,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,GAAG,qCAAuB,EAAE,CAAA;QAEtE,MAAM,MAAM,GAAG,6BAAgB,CAAC,gBAAgB,CAAC,CAAA;QACjD,MAAM,CAAC,SAAS,CAAC,CAAC,MAAc,EAAE,MAAgB,EAAE,OAAO,EAAE,EAAE;YAC3D,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;YAClC,MAAM,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAA;YAC5C,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,CAAA;QAChD,CAAC,CAAC,CAAA;QACF,MAAM,CAAC,MAAM,EAAE,CAAA;QAEf,MAAM,MAAM,GAAG,6BAAgB,CAAC,gBAAgB,CAAC,CAAA;QACjD,MAAM,MAAM,GAAG,IAAI,0BAAe,EAAE,CAAC,MAAM,CAAA;QAC3C,MAAM,CAAC,MAAM,EAAE,CAAA;QACf,MAAM,CAAC,WAAW,CAAC,MAAM,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,CAAA;IAClF,CAAC,CAAA,CAAC,CAAA;IAEF,EAAE,CAAC,2BAA2B,EAAE,IAAI,CAAC,EAAE;QACnC,MAAM,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,GAAG,qCAAuB,EAAE,CAAA;QAEtE,MAAM,MAAM,GAAG,6BAAgB,CAAC,gBAAgB,CAAC,CAAA;QACjD,MAAM,CAAC,cAAc,CAAC,CAAC,MAAc,EAAE,MAAgB,EAAE,EAAE;YACvD,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;YAClC,MAAM,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAA;YAC5C,IAAI,EAAE,CAAA;QACV,CAAC,CAAC,CAAA;QACF,MAAM,CAAC,MAAM,EAAE,CAAA;QAEf,MAAM,MAAM,GAAG,6BAAgB,CAAC,gBAAgB,CAAC,CAAA;QACjD,MAAM,CAAC,MAAM,EAAE,CAAA;QACf,MAAM,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAA;IACjD,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,2BAA2B,EAAE,GAAS,EAAE;QACvC,MAAM,IAAI,GAAG,KAAK,CAAA;QAClB,MAAM,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,GAAG,qCAAuB,EAAE,CAAA;QAEtE,MAAM,MAAM,GAAG,6BAAgB,CAAC,gBAAgB,CAAC,CAAA;QACjD,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,MAAgB,EAAE,OAAO,EAAE,EAAE;YACjD,MAAM,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAA;YAC5C,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,CAAA;QAChD,CAAC,CAAC,CAAA;QACF,MAAM,CAAC,MAAM,EAAE,CAAA;QAEf,MAAM,MAAM,GAAG,6BAAgB,CAAC,gBAAgB,CAAC,CAAA;QACjD,MAAM,CAAC,MAAM,EAAE,CAAA;QACf,MAAM,CAAC,WAAW,CAAC,MAAM,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,SAAS,CAAC,EAAE,EAAE,CAAC,CAAA;IACnF,CAAC,CAAA,CAAC,CAAA;IAEF,EAAE,CAAC,wBAAwB,EAAE,GAAS,EAAE;QACpC,MAAM,IAAI,GAAG,KAAK,CAAA;QAClB,MAAM,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,GAAG,qCAAuB,EAAE,CAAA;QAEtE,MAAM,MAAM,GAAG,6BAAgB,CAAC,gBAAgB,CAAC,CAAA;QACjD,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,CAAA;QACtC,MAAM,CAAC,MAAM,EAAE,CAAA;QAEf,MAAM,MAAM,GAAG,6BAAgB,CAAC,gBAAgB,CAAC,CAAA;QACjD,MAAM,CAAC,MAAM,EAAE,CACV;QAAE,MAAM,CAAC,WAAmB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAW,EAAE,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAA;IACxG,CAAC,CAAA,CAAC,CAAA;IAEF,EAAE,CAAC,8BAA8B,EAAE,IAAI,CAAC,EAAE;QACtC,MAAM,IAAI,GAAG,MAAM,CAAA;QACnB,MAAM,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,GAAG,qCAAuB,EAAE,CAAA;QAEtE,MAAM,MAAM,GAAG,6BAAgB,CAAC,gBAAgB,CAAC,CAAA;QACjD,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE;YACjC,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;YAChC,IAAI,EAAE,CAAA;QACV,CAAC,CAAC,CAAA;QACF,MAAM,CAAC,MAAM,EAAE,CAAA;QAEf,MAAM,MAAM,GAAG,6BAAgB,CAAC,gBAAgB,CAAC,CAAA;QACjD,MAAM,CAAC,MAAM,EAAE,CACV;QAAE,MAAM,CAAC,gBAAwB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;IACtD,CAAC,CAAC,CAAA;AACN,CAAC,CAAC,CAAA"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,62 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const assert = require("assert");
4
+ const linkedMap_1 = require("./linkedMap");
5
+ describe('LinkedMap', () => {
6
+ it('simple', () => {
7
+ const map = new linkedMap_1.LinkedMap();
8
+ map.set('ak', 'av');
9
+ map.set('bk', 'bv');
10
+ assert.deepStrictEqual(Array.from(map.keys()), ['ak', 'bk']);
11
+ assert.deepStrictEqual(Array.from(map.values()), ['av', 'bv']);
12
+ });
13
+ it('touch first', () => {
14
+ const map = new linkedMap_1.LinkedMap();
15
+ map.set('ak', 'av');
16
+ map.set('ak', 'av', linkedMap_1.Touch.First);
17
+ assert.deepStrictEqual(Array.from(map.keys()), ['ak']);
18
+ assert.deepStrictEqual(Array.from(map.values()), ['av']);
19
+ });
20
+ it('touch last', () => {
21
+ const map = new linkedMap_1.LinkedMap();
22
+ map.set('ak', 'av');
23
+ map.set('ak', 'av', linkedMap_1.Touch.Last);
24
+ assert.deepStrictEqual(Array.from(map.keys()), ['ak']);
25
+ assert.deepStrictEqual(Array.from(map.values()), ['av']);
26
+ });
27
+ it('touch first 2', () => {
28
+ const map = new linkedMap_1.LinkedMap();
29
+ map.set('ak', 'av');
30
+ map.set('bk', 'bv');
31
+ map.set('bk', 'bv', linkedMap_1.Touch.First);
32
+ assert.deepStrictEqual(Array.from(map.keys()), ['bk', 'ak']);
33
+ assert.deepStrictEqual(Array.from(map.values()), ['bv', 'av']);
34
+ });
35
+ it('touch last 2', () => {
36
+ const map = new linkedMap_1.LinkedMap();
37
+ map.set('ak', 'av');
38
+ map.set('bk', 'bv');
39
+ map.set('ak', 'av', linkedMap_1.Touch.Last);
40
+ assert.deepStrictEqual(Array.from(map.keys()), ['bk', 'ak']);
41
+ assert.deepStrictEqual(Array.from(map.values()), ['bv', 'av']);
42
+ });
43
+ it('touch first from middle', () => {
44
+ const map = new linkedMap_1.LinkedMap();
45
+ map.set('ak', 'av');
46
+ map.set('bk', 'bv');
47
+ map.set('ck', 'cv');
48
+ map.set('bk', 'bv', linkedMap_1.Touch.First);
49
+ assert.deepStrictEqual(Array.from(map.keys()), ['bk', 'ak', 'ck']);
50
+ assert.deepStrictEqual(Array.from(map.values()), ['bv', 'av', 'cv']);
51
+ });
52
+ it('touch last from middle', () => {
53
+ const map = new linkedMap_1.LinkedMap();
54
+ map.set('ak', 'av');
55
+ map.set('bk', 'bv');
56
+ map.set('ck', 'cv');
57
+ map.set('bk', 'bv', linkedMap_1.Touch.Last);
58
+ assert.deepStrictEqual(Array.from(map.keys()), ['ak', 'ck', 'bk']);
59
+ assert.deepStrictEqual(Array.from(map.values()), ['av', 'cv', 'bv']);
60
+ });
61
+ });
62
+ //# sourceMappingURL=linkedMap.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"linkedMap.test.js","sourceRoot":"","sources":["../../../src/connections/jsonrpc2/linkedMap.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,64 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ const assert = require("assert");
13
+ const rxjs_1 = require("rxjs");
14
+ const operators_1 = require("rxjs/operators");
15
+ const connection_1 = require("../jsonrpc2/connection");
16
+ const test_helper_1 = require("../jsonrpc2/test-helper");
17
+ const proxy_1 = require("./proxy");
18
+ // import 'jest';
19
+ function createTestProxy(handler) {
20
+ Object.setPrototypeOf(handler, null);
21
+ const [clientTransports, serverTransports] = test_helper_1.createMessageTransports();
22
+ const client = connection_1.createConnection(clientTransports);
23
+ const server = connection_1.createConnection(serverTransports);
24
+ const proxy = proxy_1.createProxy(client, 'prefix');
25
+ proxy_1.handleRequests(server, 'prefix', handler);
26
+ client.listen();
27
+ server.listen();
28
+ return proxy;
29
+ }
30
+ describe('Proxy', () => {
31
+ describe('proxies calls', () => {
32
+ const proxy = createTestProxy({
33
+ $a: (n) => n + 1,
34
+ $b: (n) => Promise.resolve(n + 2),
35
+ $c: (m, n) => m + n,
36
+ $d: (...args) => args.reduce((sum, n) => sum + n, 0),
37
+ $e: () => Promise.reject('e'),
38
+ $f: () => {
39
+ throw new Error('f');
40
+ },
41
+ });
42
+ it('to functions', () => __awaiter(void 0, void 0, void 0, function* () { return assert.strictEqual(yield proxy.$a(1), 2); }));
43
+ it('to async functions', () => __awaiter(void 0, void 0, void 0, function* () { return assert.strictEqual(yield proxy.$b(1), 3); }));
44
+ it('with multiple arguments ', () => __awaiter(void 0, void 0, void 0, function* () { return assert.strictEqual(yield proxy.$c(2, 3), 5); }));
45
+ it('with variadic arguments ', () => __awaiter(void 0, void 0, void 0, function* () { return assert.strictEqual(yield proxy.$d(...[2, 3, 4]), 9); }));
46
+ it('to functions returning a rejected promise', () => __awaiter(void 0, void 0, void 0, function* () { return assert.rejects(() => proxy.$e()); }));
47
+ it('to functions throwing an error', () => __awaiter(void 0, void 0, void 0, function* () { return assert.rejects(() => proxy.$f()); }));
48
+ });
49
+ it('proxies Observables', () => __awaiter(void 0, void 0, void 0, function* () {
50
+ const proxy = createTestProxy({
51
+ $observe: (...args) => new rxjs_1.Observable(observer => {
52
+ for (const arg of args) {
53
+ observer.next(arg + 1);
54
+ }
55
+ observer.complete();
56
+ }),
57
+ });
58
+ assert.deepStrictEqual(yield proxy
59
+ .$observe(1, 2, 3, 4)
60
+ .pipe(operators_1.bufferCount(4))
61
+ .toPromise(), [2, 3, 4, 5]);
62
+ }));
63
+ });
64
+ //# sourceMappingURL=proxy.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"proxy.test.js","sourceRoot":"","sources":["../../../src/connections/proxy/proxy.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ import 'reflect-metadata';