@livequery/nestjs 2.0.57 → 2.0.147
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.
- package/build/src/ApiGatewayLinker.d.ts +15 -7
- package/build/src/ApiGatewayLinker.js +55 -48
- package/build/src/ApiGatewayLinker.js.map +1 -1
- package/build/src/ApiServiceLinker.d.ts +12 -0
- package/build/src/ApiServiceLinker.js +46 -0
- package/build/src/ApiServiceLinker.js.map +1 -0
- package/build/src/LivequeryDatasourceInterceptors.d.ts +8 -2
- package/build/src/LivequeryDatasourceInterceptors.js +16 -8
- package/build/src/LivequeryDatasourceInterceptors.js.map +1 -1
- package/build/src/LivequeryInterceptor.d.ts +4 -9
- package/build/src/LivequeryInterceptor.js +33 -31
- package/build/src/LivequeryInterceptor.js.map +1 -1
- package/build/src/LivequeryWebsocketSync.d.ts +1 -61
- package/build/src/LivequeryWebsocketSync.js +4 -224
- package/build/src/LivequeryWebsocketSync.js.map +1 -1
- package/build/src/RxjsUdp.d.ts +11 -11
- package/build/src/RxjsUdp.js +37 -32
- package/build/src/RxjsUdp.js.map +1 -1
- package/build/src/SimpleApiGateway.d.ts +5 -0
- package/build/src/SimpleApiGateway.js +14 -0
- package/build/src/SimpleApiGateway.js.map +1 -0
- package/build/src/UdpDiscovery.d.ts +35 -0
- package/build/src/UdpDiscovery.js +231 -0
- package/build/src/UdpDiscovery.js.map +1 -0
- package/build/src/WebsocketGateway.d.ts +29 -0
- package/build/src/WebsocketGateway.js +257 -0
- package/build/src/WebsocketGateway.js.map +1 -0
- package/build/src/const.d.ts +1 -1
- package/build/src/const.js +1 -1
- package/build/src/const.js.map +1 -1
- package/build/src/helpers/PathHelper.d.ts +1 -1
- package/build/src/helpers/createDatasourceMapper.d.ts +3 -3
- package/build/src/helpers/createDatasourceMapper.js +2 -2
- package/build/src/helpers/createDatasourceMapper.js.map +1 -1
- package/build/src/helpers/hidePrivateFields.d.ts +1 -1
- package/build/src/helpers/listPaths.d.ts +2 -2
- package/build/src/helpers/listPaths.js +30 -19
- package/build/src/helpers/listPaths.js.map +1 -1
- package/build/src/index.d.ts +6 -4
- package/build/src/index.js +5 -3
- package/build/src/index.js.map +1 -1
- package/build/tsconfig.tsbuildinfo +1 -1
- package/package.json +3 -1
- package/build/tests/gateway.d.ts +0 -2
- package/build/tests/gateway.js +0 -17
- package/build/tests/gateway.js.map +0 -1
- package/build/tests/service.d.ts +0 -14
- package/build/tests/service.js +0 -73
- package/build/tests/service.js.map +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const
|
|
1
|
+
const REQUEST_METHODS = [
|
|
2
2
|
'GET',
|
|
3
3
|
'POST',
|
|
4
4
|
'PUT',
|
|
@@ -7,25 +7,36 @@ const RequestMethodList = [
|
|
|
7
7
|
'ALL',
|
|
8
8
|
'OPTIONS',
|
|
9
9
|
'HEAD',
|
|
10
|
-
'SEARCH'
|
|
10
|
+
'SEARCH',
|
|
11
11
|
];
|
|
12
|
-
|
|
13
|
-
return
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
12
|
+
function normalizePath(...parts) {
|
|
13
|
+
return parts
|
|
14
|
+
.flat(3)
|
|
15
|
+
.filter(part => part !== undefined && part !== null)
|
|
16
|
+
.map(part => `${part}`.trim())
|
|
17
|
+
.flatMap(part => part.split('/'))
|
|
18
|
+
.filter(part => part.trim())
|
|
19
|
+
.join('/');
|
|
20
|
+
}
|
|
21
|
+
export function listPaths(controllers) {
|
|
22
|
+
return controllers.flatMap(controller => {
|
|
23
|
+
const actions = Object.getOwnPropertyNames(controller.prototype)
|
|
24
|
+
.filter(action => action !== 'constructor');
|
|
25
|
+
const metadata = Reflect;
|
|
26
|
+
const prefixes = [metadata.getMetadata('path', controller) ?? ''].flat(2);
|
|
27
|
+
return actions.flatMap(action => {
|
|
28
|
+
const method = metadata.getMetadata('method', controller.prototype[action]);
|
|
18
29
|
if (method === undefined)
|
|
19
30
|
return [];
|
|
20
|
-
const
|
|
21
|
-
|
|
22
|
-
return
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
})
|
|
30
|
-
}
|
|
31
|
+
const methodName = REQUEST_METHODS[method];
|
|
32
|
+
if (!methodName)
|
|
33
|
+
return [];
|
|
34
|
+
const paths = [metadata.getMetadata('path', controller.prototype[action]) ?? ''].flat(3);
|
|
35
|
+
return prefixes.flatMap(prefix => paths.map(path => ({
|
|
36
|
+
method: methodName,
|
|
37
|
+
path: normalizePath(prefix, path),
|
|
38
|
+
})));
|
|
39
|
+
});
|
|
40
|
+
});
|
|
41
|
+
}
|
|
31
42
|
//# sourceMappingURL=listPaths.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"listPaths.js","sourceRoot":"","sources":["../../../src/helpers/listPaths.ts"],"names":[],"mappings":"AAAA,MAAM,
|
|
1
|
+
{"version":3,"file":"listPaths.js","sourceRoot":"","sources":["../../../src/helpers/listPaths.ts"],"names":[],"mappings":"AAAA,MAAM,eAAe,GAAG;IACpB,KAAK;IACL,MAAM;IACN,KAAK;IACL,QAAQ;IACR,OAAO;IACP,KAAK;IACL,SAAS;IACT,MAAM;IACN,QAAQ;CACF,CAAA;AAEV,SAAS,aAAa,CAAC,GAAG,KAAgB;IACtC,OAAO,KAAK;SACP,IAAI,CAAC,CAAC,CAAC;SACP,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,IAAI,CAAC;SACnD,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC;SAC7B,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;SAChC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;SAC3B,IAAI,CAAC,GAAG,CAAC,CAAA;AAClB,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,WAAkB;IACxC,OAAO,WAAW,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;QACpC,MAAM,OAAO,GAAG,MAAM,CAAC,mBAAmB,CAAC,UAAU,CAAC,SAAS,CAAC;aAC3D,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,KAAK,aAAa,CAAC,CAAA;QAC/C,MAAM,QAAQ,GAAG,OAAc,CAAA;QAC/B,MAAM,QAAQ,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC,MAAM,EAAE,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QAEzE,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;YAC5B,MAAM,MAAM,GAAG,QAAQ,CAAC,WAAW,CAAC,QAAQ,EAAE,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAA;YAC3E,IAAI,MAAM,KAAK,SAAS;gBAAE,OAAO,EAAE,CAAA;YACnC,MAAM,UAAU,GAAG,eAAe,CAAC,MAAM,CAAC,CAAA;YAC1C,IAAI,CAAC,UAAU;gBAAE,OAAO,EAAE,CAAA;YAE1B,MAAM,KAAK,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC,MAAM,EAAE,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YACxF,OAAO,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACjD,MAAM,EAAE,UAAU;gBAClB,IAAI,EAAE,aAAa,CAAC,MAAM,EAAE,IAAI,CAAC;aACpC,CAAC,CAAC,CAAC,CAAA;QACR,CAAC,CAAC,CAAA;IACN,CAAC,CAAC,CAAA;AACN,CAAC"}
|
package/build/src/index.d.ts
CHANGED
|
@@ -1,9 +1,11 @@
|
|
|
1
|
-
export {
|
|
1
|
+
export { ApiServiceLinker } from './ApiServiceLinker.js';
|
|
2
2
|
export { listPaths } from './helpers/listPaths.js';
|
|
3
|
+
export { UdpDiscovery, type UdpDiscoveryNode, type UdpDiscoveryOptions, type UdpDiscoveryPacket, type UdpDiscoveryStatus, WebsocketGateway, type RealtimeSubscription } from '@livequery/core';
|
|
3
4
|
export { LivequeryRequest } from './LivequeryRequest.js';
|
|
4
|
-
export { LivequeryInterceptor,
|
|
5
|
-
export { LivequeryWebsocketSync } from './LivequeryWebsocketSync.js';
|
|
5
|
+
export { LivequeryInterceptor, UseLivequeryInterceptor } from './LivequeryInterceptor.js';
|
|
6
6
|
export * from './helpers/createDatasourceMapper.js';
|
|
7
7
|
export * from './LivequeryDatasourceInterceptors.js';
|
|
8
|
-
export { ApiGateway } from './
|
|
8
|
+
export { ApiGateway, ApiGateway as ApiGatewayLinker } from './ApiGatewayLinker.js';
|
|
9
|
+
export { SimpleApiGateway } from './SimpleApiGateway.js';
|
|
10
|
+
export { LivequeryWebsocketSync } from './LivequeryWebsocketSync.js';
|
|
9
11
|
export * from '@livequery/types';
|
package/build/src/index.js
CHANGED
|
@@ -1,10 +1,12 @@
|
|
|
1
|
-
export {
|
|
1
|
+
export { ApiServiceLinker } from './ApiServiceLinker.js';
|
|
2
2
|
export { listPaths } from './helpers/listPaths.js';
|
|
3
|
+
export { UdpDiscovery, WebsocketGateway } from '@livequery/core';
|
|
3
4
|
export { LivequeryRequest } from './LivequeryRequest.js';
|
|
4
5
|
export { LivequeryInterceptor, UseLivequeryInterceptor } from './LivequeryInterceptor.js';
|
|
5
|
-
export { LivequeryWebsocketSync } from './LivequeryWebsocketSync.js';
|
|
6
6
|
export * from './helpers/createDatasourceMapper.js';
|
|
7
7
|
export * from './LivequeryDatasourceInterceptors.js';
|
|
8
|
-
export { ApiGateway } from './
|
|
8
|
+
export { ApiGateway, ApiGateway as ApiGatewayLinker } from './ApiGatewayLinker.js';
|
|
9
|
+
export { SimpleApiGateway } from './SimpleApiGateway.js';
|
|
10
|
+
export { LivequeryWebsocketSync } from './LivequeryWebsocketSync.js';
|
|
9
11
|
export * from '@livequery/types';
|
|
10
12
|
//# sourceMappingURL=index.js.map
|
package/build/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAA;AAClD,OAAO,EAAE,gBAAgB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAA;AAClD,OAAO,EAAE,YAAY,EAAqG,gBAAgB,EAA6B,MAAM,iBAAiB,CAAA;AAC9L,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AACxD,OAAO,EAAE,oBAAoB,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAA;AACzF,cAAc,qCAAqC,CAAA;AACnD,cAAc,sCAAsC,CAAA;AACpD,OAAO,EAAE,UAAU,EAAE,UAAU,IAAI,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAClF,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AACxD,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAA;AACpE,cAAc,kBAAkB,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"root":["../src/
|
|
1
|
+
{"root":["../src/apigatewaylinker.ts","../src/apiservicelinker.ts","../src/livequerydatasourceinterceptors.ts","../src/livequeryinterceptor.ts","../src/livequeryrequest.ts","../src/livequerywebsocketsync.ts","../src/simpleapigateway.ts","../src/index.ts","../src/helpers/createdatasourcemapper.ts","../src/helpers/listpaths.ts"],"version":"5.9.3"}
|
package/package.json
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
"repository": {
|
|
6
6
|
"url": "git@github.com:livequery/nestjs.git"
|
|
7
7
|
},
|
|
8
|
-
"version": "2.0.
|
|
8
|
+
"version": "2.0.147",
|
|
9
9
|
"description": "Nestjs decorators for @livequery ecosystem",
|
|
10
10
|
"main": "./build/src/index.js",
|
|
11
11
|
"types": "./build/src/index.d.ts",
|
|
@@ -28,6 +28,7 @@
|
|
|
28
28
|
"type": "module",
|
|
29
29
|
"devDependencies": {
|
|
30
30
|
"@livequery/types": "2.0.7",
|
|
31
|
+
"@nestjs/platform-express": "^11.1.19",
|
|
31
32
|
"@types/express": "x",
|
|
32
33
|
"@types/node": "x",
|
|
33
34
|
"@types/ws": "^8.5.10",
|
|
@@ -44,6 +45,7 @@
|
|
|
44
45
|
"express": "^4.21.2"
|
|
45
46
|
},
|
|
46
47
|
"dependencies": {
|
|
48
|
+
"@livequery/core": "file:../core",
|
|
47
49
|
"msgpackr": "^1.11.9"
|
|
48
50
|
}
|
|
49
51
|
}
|
package/build/tests/gateway.d.ts
DELETED
package/build/tests/gateway.js
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { __decorate } from "tslib";
|
|
2
|
-
import { Logger, Module } from "@nestjs/common";
|
|
3
|
-
import { ApiGateway } from "../src/ApiGateway.js";
|
|
4
|
-
import { NestFactory } from "@nestjs/core";
|
|
5
|
-
import { LivequeryWebsocketSync } from "../src/LivequeryWebsocketSync.js";
|
|
6
|
-
let AppModule = class AppModule {
|
|
7
|
-
};
|
|
8
|
-
AppModule = __decorate([
|
|
9
|
-
Module({
|
|
10
|
-
controllers: [ApiGateway],
|
|
11
|
-
providers: [LivequeryWebsocketSync, Logger]
|
|
12
|
-
})
|
|
13
|
-
], AppModule);
|
|
14
|
-
export { AppModule };
|
|
15
|
-
const app = await NestFactory.create(AppModule, { rawBody: true });
|
|
16
|
-
await app.listen(process.argv[2] || 8000);
|
|
17
|
-
//# sourceMappingURL=gateway.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"gateway.js","sourceRoot":"","sources":["../../tests/gateway.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,sBAAsB,EAAE,MAAM,kCAAkC,CAAC;AAOnE,IAAM,SAAS,GAAf,MAAM,SAAS;CAAI,CAAA;AAAb,SAAS;IAJrB,MAAM,CAAC;QACJ,WAAW,EAAE,CAAC,UAAU,CAAC;QACzB,SAAS,EAAE,CAAC,sBAAsB,EAAC,MAAM,CAAC;KAC7C,CAAC;GACW,SAAS,CAAI;;AAG1B,MAAM,GAAG,GAAG,MAAM,WAAW,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAA;AAElE,MAAM,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAA"}
|
package/build/tests/service.d.ts
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { LivequeryWebsocketSync } from "../src/LivequeryWebsocketSync.js";
|
|
2
|
-
import { LivequeryRequest } from "../src/index.js";
|
|
3
|
-
export declare class PetCollection {
|
|
4
|
-
private ws;
|
|
5
|
-
constructor(ws: LivequeryWebsocketSync);
|
|
6
|
-
list(req: LivequeryRequest): {
|
|
7
|
-
items: {
|
|
8
|
-
id: string;
|
|
9
|
-
name: string;
|
|
10
|
-
}[];
|
|
11
|
-
};
|
|
12
|
-
}
|
|
13
|
-
export declare class AppModule {
|
|
14
|
-
}
|
package/build/tests/service.js
DELETED
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
import { __decorate, __metadata, __param } from "tslib";
|
|
2
|
-
import { NestFactory } from "@nestjs/core";
|
|
3
|
-
import { LivequeryWebsocketSync } from "../src/LivequeryWebsocketSync.js";
|
|
4
|
-
import { WsAdapter } from '@nestjs/platform-ws';
|
|
5
|
-
import { UseLivequeryInterceptor } from "../src/LivequeryInterceptor.js";
|
|
6
|
-
import { ApiGatewayLinker, LivequeryRequest } from "../src/index.js";
|
|
7
|
-
import { Controller, Get, Module } from "@nestjs/common";
|
|
8
|
-
import { interval, mergeAll, mergeMap } from "rxjs";
|
|
9
|
-
async function getDatabaseClient() {
|
|
10
|
-
return {
|
|
11
|
-
async getData(n) {
|
|
12
|
-
const comments = [{
|
|
13
|
-
data: { id: '123', text: `[${n}] Comment at ${new Date().toLocaleTimeString()}` },
|
|
14
|
-
ref: 'pets',
|
|
15
|
-
type: 'added'
|
|
16
|
-
}];
|
|
17
|
-
return comments;
|
|
18
|
-
}
|
|
19
|
-
};
|
|
20
|
-
}
|
|
21
|
-
let PetCollection = class PetCollection {
|
|
22
|
-
ws;
|
|
23
|
-
constructor(ws) {
|
|
24
|
-
this.ws = ws;
|
|
25
|
-
}
|
|
26
|
-
list(req) {
|
|
27
|
-
this.ws.link(req.ref, async (o) => {
|
|
28
|
-
if (o)
|
|
29
|
-
return;
|
|
30
|
-
const client = await getDatabaseClient();
|
|
31
|
-
return interval(1000).pipe(mergeMap(async (n) => {
|
|
32
|
-
const comments = await client.getData(n);
|
|
33
|
-
return comments;
|
|
34
|
-
}), mergeAll());
|
|
35
|
-
});
|
|
36
|
-
return {
|
|
37
|
-
items: [
|
|
38
|
-
{
|
|
39
|
-
id: '123',
|
|
40
|
-
name: 'ijiji'
|
|
41
|
-
}
|
|
42
|
-
]
|
|
43
|
-
};
|
|
44
|
-
}
|
|
45
|
-
};
|
|
46
|
-
__decorate([
|
|
47
|
-
Get(),
|
|
48
|
-
UseLivequeryInterceptor(),
|
|
49
|
-
__param(0, LivequeryRequest()),
|
|
50
|
-
__metadata("design:type", Function),
|
|
51
|
-
__metadata("design:paramtypes", [Object]),
|
|
52
|
-
__metadata("design:returntype", void 0)
|
|
53
|
-
], PetCollection.prototype, "list", null);
|
|
54
|
-
PetCollection = __decorate([
|
|
55
|
-
Controller('livequery/comments'),
|
|
56
|
-
__metadata("design:paramtypes", [LivequeryWebsocketSync])
|
|
57
|
-
], PetCollection);
|
|
58
|
-
export { PetCollection };
|
|
59
|
-
let AppModule = class AppModule {
|
|
60
|
-
};
|
|
61
|
-
AppModule = __decorate([
|
|
62
|
-
Module({
|
|
63
|
-
controllers: [ApiGatewayLinker, PetCollection],
|
|
64
|
-
providers: [LivequeryWebsocketSync]
|
|
65
|
-
})
|
|
66
|
-
], AppModule);
|
|
67
|
-
export { AppModule };
|
|
68
|
-
const app = await NestFactory.create(AppModule);
|
|
69
|
-
app.useWebSocketAdapter(new WsAdapter(app));
|
|
70
|
-
const PORT = Number(process.argv[2] || 3000);
|
|
71
|
-
await app.listen(PORT);
|
|
72
|
-
ApiGatewayLinker.broadcast('Service API', PORT);
|
|
73
|
-
//# sourceMappingURL=service.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"service.js","sourceRoot":"","sources":["../../tests/service.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,sBAAsB,EAAE,MAAM,kCAAkC,CAAC;AAC1E,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAC/C,OAAO,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AACzE,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACrE,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AAOpD,KAAK,UAAU,iBAAiB;IAC5B,OAAO;QACH,KAAK,CAAC,OAAO,CAAC,CAAS;YACnB,MAAM,QAAQ,GAAgC,CAAC;oBAC3C,IAAI,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,gBAAgB,IAAI,IAAI,EAAE,CAAC,kBAAkB,EAAE,EAAE,EAAE;oBACjF,GAAG,EAAE,MAAM;oBACX,IAAI,EAAE,OAAO;iBAChB,CAAC,CAAA;YACF,OAAO,QAAQ,CAAA;QACnB,CAAC;KACJ,CAAA;AACL,CAAC;AAGM,IAAM,aAAa,GAAnB,MAAM,aAAa;IAEF;IAApB,YAAoB,EAA0B;QAA1B,OAAE,GAAF,EAAE,CAAwB;IAAI,CAAC;IAKnD,IAAI,CAAqB,GAAqB;QAE1C,IAAI,CAAC,EAAE,CAAC,IAAI,CAAU,GAAG,CAAC,GAAG,EAAE,KAAK,EAAC,CAAC,EAAC,EAAE;YAIrC,IAAI,CAAC;gBAAE,OAAM;YAKb,MAAM,MAAM,GAAG,MAAM,iBAAiB,EAAE,CAAA;YAGxC,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CACtB,QAAQ,CAAC,KAAK,EAAC,CAAC,EAAC,EAAE;gBAEf,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;gBACxC,OAAO,QAAQ,CAAA;YACnB,CAAC,CAAC,EACF,QAAQ,EAAE,CACb,CAAA;QACL,CAAC,CAAC,CAAA;QAEF,OAAO;YACH,KAAK,EAAE;gBACH;oBACI,EAAE,EAAE,KAAK;oBACT,IAAI,EAAE,OAAO;iBAChB;aACJ;SACJ,CAAA;IACL,CAAC;CACJ,CAAA;AAjCG;IAFC,GAAG,EAAE;IACL,uBAAuB,EAAE;IACpB,WAAA,gBAAgB,EAAE,CAAA;;;;yCAgCvB;AAvCQ,aAAa;IADzB,UAAU,CAAC,oBAAoB,CAAC;qCAGL,sBAAsB;GAFrC,aAAa,CAwCzB;;AAOM,IAAM,SAAS,GAAf,MAAM,SAAS;CAAI,CAAA;AAAb,SAAS;IAJrB,MAAM,CAAC;QACJ,WAAW,EAAE,CAAC,gBAAgB,EAAE,aAAa,CAAC;QAC9C,SAAS,EAAE,CAAC,sBAAsB,CAAC;KACtC,CAAC;GACW,SAAS,CAAI;;AAE1B,MAAM,GAAG,GAAG,MAAM,WAAW,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;AAC/C,GAAG,CAAC,mBAAmB,CAAC,IAAI,SAAS,CAAC,GAAG,CAAQ,CAAE,CAAA;AACnD,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAA;AAC5C,MAAM,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;AAGtB,gBAAgB,CAAC,SAAS,CAAC,aAAa,EAAE,IAAI,CAAC,CAAA"}
|