@livequery/nestjs 2.0.2 → 2.0.4
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/ApiGateway.d.ts +11 -12
- package/build/src/ApiGateway.js +33 -43
- package/build/src/ApiGateway.js.map +1 -1
- package/build/src/ApiGatewayLinker.d.ts +14 -0
- package/build/src/ApiGatewayLinker.js +70 -0
- package/build/src/ApiGatewayLinker.js.map +1 -0
- package/build/src/RxjsUdp.d.ts +8 -0
- package/build/src/RxjsUdp.js +49 -0
- package/build/src/RxjsUdp.js.map +1 -0
- package/build/src/const.d.ts +3 -0
- package/build/src/const.js +3 -0
- package/build/src/const.js.map +1 -1
- package/build/src/helpers/createDatasourceMapper.d.ts +1 -1
- package/build/src/index.d.ts +1 -1
- package/build/src/index.js +1 -1
- package/build/src/index.js.map +1 -1
- package/package.json +2 -2
|
@@ -1,6 +1,4 @@
|
|
|
1
1
|
import { LivequeryWebsocketSync } from './LivequeryWebsocketSync.js';
|
|
2
|
-
import { Observable } from 'rxjs';
|
|
3
|
-
import { ApiGatewayConnector } from './ApiGatewayConnector.js';
|
|
4
2
|
export type Routing = {
|
|
5
3
|
[ref: string]: {
|
|
6
4
|
dpaths: string[];
|
|
@@ -14,6 +12,10 @@ export type Routing = {
|
|
|
14
12
|
};
|
|
15
13
|
};
|
|
16
14
|
export type ServiceApiMetadata = {
|
|
15
|
+
id: string;
|
|
16
|
+
namespace: string;
|
|
17
|
+
role: 'service' | 'gateway';
|
|
18
|
+
host: string;
|
|
17
19
|
name: string;
|
|
18
20
|
port: number;
|
|
19
21
|
paths: Array<{
|
|
@@ -21,6 +23,7 @@ export type ServiceApiMetadata = {
|
|
|
21
23
|
path: string;
|
|
22
24
|
}>;
|
|
23
25
|
websocket?: string;
|
|
26
|
+
sig: string;
|
|
24
27
|
};
|
|
25
28
|
export type ServiceApiStatus = {
|
|
26
29
|
id: string;
|
|
@@ -30,20 +33,16 @@ export type ServiceApiStatus = {
|
|
|
30
33
|
id: string;
|
|
31
34
|
online: false;
|
|
32
35
|
};
|
|
33
|
-
export type
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
ip_addresses: string[];
|
|
39
|
-
}>;
|
|
40
|
-
$node_id: (id: string) => ApiGatewayConnector;
|
|
36
|
+
export type ApiGatewayClientOptions = {
|
|
37
|
+
id: string;
|
|
38
|
+
name: string;
|
|
39
|
+
controllers: any[];
|
|
40
|
+
port: number;
|
|
41
41
|
};
|
|
42
42
|
export declare class ApiGateway {
|
|
43
43
|
#private;
|
|
44
|
-
private ApiGatewayConnector;
|
|
45
44
|
private LivequeryWebsocketSync;
|
|
46
|
-
constructor(
|
|
45
|
+
constructor(LivequeryWebsocketSync: LivequeryWebsocketSync);
|
|
47
46
|
private get;
|
|
48
47
|
private post;
|
|
49
48
|
private patch;
|
package/build/src/ApiGateway.js
CHANGED
|
@@ -1,28 +1,42 @@
|
|
|
1
1
|
import { __decorate, __metadata, __param } from "tslib";
|
|
2
|
-
import { Controller, Delete, Get,
|
|
2
|
+
import { Controller, Delete, Get, Optional, Patch, Post, Put, Request, Res, } from '@nestjs/common';
|
|
3
3
|
import * as http from 'http';
|
|
4
4
|
import { IncomingMessage } from 'http';
|
|
5
5
|
import { LivequeryWebsocketSync } from './LivequeryWebsocketSync.js';
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
6
|
+
import { API_GATEWAY_NAMESPACE } from './const.js';
|
|
7
|
+
import { RxjsUdp } from './RxjsUdp.js';
|
|
8
|
+
import { mergeMap } from 'rxjs/operators';
|
|
8
9
|
let ApiGateway = class ApiGateway {
|
|
9
|
-
ApiGatewayConnector;
|
|
10
10
|
LivequeryWebsocketSync;
|
|
11
11
|
#services = new Map;
|
|
12
12
|
#routing = {};
|
|
13
|
-
|
|
14
|
-
|
|
13
|
+
#udp = new RxjsUdp();
|
|
14
|
+
constructor(LivequeryWebsocketSync) {
|
|
15
15
|
this.LivequeryWebsocketSync = LivequeryWebsocketSync;
|
|
16
|
-
|
|
16
|
+
this.#udp = new RxjsUdp();
|
|
17
|
+
this.#udp.pipe(mergeMap(async ({ host, port }) => {
|
|
18
|
+
const r = await fetch(`http://${host}:${port}/api-gateway/metadata`).then(r => r.json());
|
|
19
|
+
r.data && r.data.namespace == API_GATEWAY_NAMESPACE && this.#join({ ...r.data, host });
|
|
20
|
+
})).subscribe();
|
|
21
|
+
this.#udp.broadcast({
|
|
22
|
+
namespace: API_GATEWAY_NAMESPACE,
|
|
23
|
+
host: '',
|
|
24
|
+
id: '',
|
|
25
|
+
name: '',
|
|
26
|
+
paths: [],
|
|
27
|
+
port: 0,
|
|
28
|
+
role: 'gateway',
|
|
29
|
+
sig: ''
|
|
30
|
+
});
|
|
17
31
|
}
|
|
18
32
|
async #disconnect(id) {
|
|
19
33
|
const service = this.#services.get(id);
|
|
20
34
|
if (!service)
|
|
21
35
|
return;
|
|
22
|
-
process.env.LIVEQUERY_API_GATEWAY_DEBUG && console.log(`Service API OFFLINE: ${service.
|
|
23
|
-
process.env.LIVEQUERY_API_GATEWAY_DEBUG && console.log(`Websocket API OFFLINE: ${service.
|
|
36
|
+
process.env.LIVEQUERY_API_GATEWAY_DEBUG && console.log(`Service API OFFLINE: ${service.name} at ${service.host}:${service.port}`);
|
|
37
|
+
process.env.LIVEQUERY_API_GATEWAY_DEBUG && console.log(`Websocket API OFFLINE: ${service.name} at ${service.host}:${service.port}${service.websocket}`);
|
|
24
38
|
this.#services.delete(id);
|
|
25
|
-
const hostname = `${service.host}:${service.
|
|
39
|
+
const hostname = `${service.host}:${service.port}`;
|
|
26
40
|
for (let routes = [this.#routing]; routes.length > 0; routes = routes.map(c => [...Object.values(c)].map(c => c.children).filter(c => !!c)).flat(2)) {
|
|
27
41
|
for (const route of routes) {
|
|
28
42
|
for (const { methods } of Object.values(route || {})) {
|
|
@@ -35,36 +49,13 @@ let ApiGateway = class ApiGateway {
|
|
|
35
49
|
}
|
|
36
50
|
}
|
|
37
51
|
}
|
|
38
|
-
async #
|
|
39
|
-
|
|
40
|
-
for (const hostname of hosts) {
|
|
41
|
-
const connected = await new Promise(s => {
|
|
42
|
-
const request = http.request({
|
|
43
|
-
hostname,
|
|
44
|
-
port,
|
|
45
|
-
method: 'HEAD'
|
|
46
|
-
});
|
|
47
|
-
request.on('response', () => s(true));
|
|
48
|
-
request.on('error', () => s(false));
|
|
49
|
-
request.end();
|
|
50
|
-
});
|
|
51
|
-
if (connected)
|
|
52
|
-
return hostname;
|
|
53
|
-
await firstValueFrom(timer(1000));
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
async #join(id, ip_addresses) {
|
|
58
|
-
if (this.#services.has(id))
|
|
59
|
-
return;
|
|
60
|
-
const metadata = await this.ApiGatewayConnector.$node_id(id).list();
|
|
61
|
-
const host = await this.#find_api_host(ip_addresses, metadata.port);
|
|
62
|
-
if (!host)
|
|
52
|
+
async #join(metadata) {
|
|
53
|
+
if (this.#services.has(metadata.id))
|
|
63
54
|
return;
|
|
64
|
-
this.#services.set(id,
|
|
65
|
-
const hostname = `${host}:${metadata.port}`;
|
|
66
|
-
process.env.LIVEQUERY_API_GATEWAY_DEBUG && console.log(`Service API online: ${metadata.name} at ${host}:${metadata.port}`);
|
|
67
|
-
process.env.LIVEQUERY_API_GATEWAY_DEBUG && console.log(`Websocket API online: ${metadata.name} at ${host}:${metadata.port}${metadata.websocket}`);
|
|
55
|
+
this.#services.set(metadata.id, metadata);
|
|
56
|
+
const hostname = `${metadata.host}:${metadata.port}`;
|
|
57
|
+
process.env.LIVEQUERY_API_GATEWAY_DEBUG && console.log(`Service API online: ${metadata.name} at ${metadata.host}:${metadata.port}`);
|
|
58
|
+
metadata.websocket && process.env.LIVEQUERY_API_GATEWAY_DEBUG && console.log(`Websocket API online: ${metadata.name} at ${metadata.host}:${metadata.port}${metadata.websocket}`);
|
|
68
59
|
metadata.websocket && this.LivequeryWebsocketSync?.connect(`ws://${hostname}${metadata.websocket}`);
|
|
69
60
|
for (const { method, path } of metadata.paths) {
|
|
70
61
|
const refs = path.split('/').map(r => {
|
|
@@ -154,7 +145,7 @@ let ApiGateway = class ApiGateway {
|
|
|
154
145
|
})
|
|
155
146
|
.on('error', e => {
|
|
156
147
|
console.error(e);
|
|
157
|
-
res.json({ error: { code: "
|
|
148
|
+
res.json({ error: { code: "SERVICE_API_OFFLINE" } });
|
|
158
149
|
})
|
|
159
150
|
.on('upgrade', (ireq, socket, head) => {
|
|
160
151
|
}));
|
|
@@ -217,9 +208,8 @@ __decorate([
|
|
|
217
208
|
], ApiGateway.prototype, "del", null);
|
|
218
209
|
ApiGateway = __decorate([
|
|
219
210
|
Controller(`*`),
|
|
220
|
-
__param(0,
|
|
221
|
-
|
|
222
|
-
__metadata("design:paramtypes", [Object, LivequeryWebsocketSync])
|
|
211
|
+
__param(0, Optional()),
|
|
212
|
+
__metadata("design:paramtypes", [LivequeryWebsocketSync])
|
|
223
213
|
], ApiGateway);
|
|
224
214
|
export { ApiGateway };
|
|
225
215
|
//# sourceMappingURL=ApiGateway.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ApiGateway.js","sourceRoot":"","sources":["../../src/ApiGateway.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,
|
|
1
|
+
{"version":3,"file":"ApiGateway.js","sourceRoot":"","sources":["../../src/ApiGateway.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { ModulesContainer } from "@nestjs/core";
|
|
2
|
+
import { ServiceApiMetadata } from "./ApiGateway.js";
|
|
3
|
+
import { LivequeryWebsocketSync } from "./LivequeryWebsocketSync.js";
|
|
4
|
+
export declare class ApiGatewayLinker {
|
|
5
|
+
private LivequeryWebsocketSync;
|
|
6
|
+
private readonly modulesContainer;
|
|
7
|
+
private static udp;
|
|
8
|
+
constructor(LivequeryWebsocketSync: LivequeryWebsocketSync, modulesContainer: ModulesContainer);
|
|
9
|
+
onModuleInit(): void;
|
|
10
|
+
static broadcast(name: string, local_api_port: number): Promise<void>;
|
|
11
|
+
metadata(): {
|
|
12
|
+
data: ServiceApiMetadata;
|
|
13
|
+
};
|
|
14
|
+
}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { __decorate, __metadata, __param } from "tslib";
|
|
2
|
+
import { Controller, Get, Inject, Optional } from "@nestjs/common";
|
|
3
|
+
import { ModulesContainer } from "@nestjs/core";
|
|
4
|
+
import { listPaths } from "./helpers/listPaths.js";
|
|
5
|
+
import { LivequeryWebsocketSync, WEBSOCKET_PATH } from "./LivequeryWebsocketSync.js";
|
|
6
|
+
import { BehaviorSubject, merge } from "rxjs";
|
|
7
|
+
import { randomUUID, createHash } from "crypto";
|
|
8
|
+
import { API_GATEWAY_NAMESPACE } from "./const.js";
|
|
9
|
+
import { filter, tap } from 'rxjs/operators';
|
|
10
|
+
import { RxjsUdp } from "./RxjsUdp.js";
|
|
11
|
+
const $METADATA = new BehaviorSubject({
|
|
12
|
+
namespace: API_GATEWAY_NAMESPACE,
|
|
13
|
+
role: 'service',
|
|
14
|
+
host: '',
|
|
15
|
+
id: randomUUID(),
|
|
16
|
+
name: '',
|
|
17
|
+
paths: [],
|
|
18
|
+
port: 0,
|
|
19
|
+
sig: ''
|
|
20
|
+
});
|
|
21
|
+
let ApiGatewayLinker = class ApiGatewayLinker {
|
|
22
|
+
LivequeryWebsocketSync;
|
|
23
|
+
modulesContainer;
|
|
24
|
+
static udp = new RxjsUdp();
|
|
25
|
+
constructor(LivequeryWebsocketSync, modulesContainer) {
|
|
26
|
+
this.LivequeryWebsocketSync = LivequeryWebsocketSync;
|
|
27
|
+
this.modulesContainer = modulesContainer;
|
|
28
|
+
const paths = [...this.modulesContainer.values()].map(m => (listPaths([...m.controllers.keys()].map(c => c)))).flat(2);
|
|
29
|
+
$METADATA.next({
|
|
30
|
+
...$METADATA.getValue(),
|
|
31
|
+
paths,
|
|
32
|
+
websocket: this.LivequeryWebsocketSync ? WEBSOCKET_PATH : undefined
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
onModuleInit() {
|
|
36
|
+
$METADATA.next({
|
|
37
|
+
...$METADATA.getValue(),
|
|
38
|
+
sig: createHash('md5').update(API_GATEWAY_NAMESPACE).digest('base64')
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
static async broadcast(name, local_api_port) {
|
|
42
|
+
$METADATA.next({
|
|
43
|
+
...$METADATA.getValue(),
|
|
44
|
+
name,
|
|
45
|
+
port: local_api_port
|
|
46
|
+
});
|
|
47
|
+
const $udp = new RxjsUdp();
|
|
48
|
+
merge($udp.pipe(filter(m => m.role == 'gateway')), $METADATA.pipe(filter(m => !!m.sig))).pipe(tap(() => $udp.broadcast($METADATA.getValue()))).subscribe();
|
|
49
|
+
}
|
|
50
|
+
metadata() {
|
|
51
|
+
return {
|
|
52
|
+
data: $METADATA.getValue()
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
};
|
|
56
|
+
__decorate([
|
|
57
|
+
Get('metadata'),
|
|
58
|
+
__metadata("design:type", Function),
|
|
59
|
+
__metadata("design:paramtypes", []),
|
|
60
|
+
__metadata("design:returntype", void 0)
|
|
61
|
+
], ApiGatewayLinker.prototype, "metadata", null);
|
|
62
|
+
ApiGatewayLinker = __decorate([
|
|
63
|
+
Controller('/api-gateway'),
|
|
64
|
+
__param(0, Optional()),
|
|
65
|
+
__param(0, Inject()),
|
|
66
|
+
__metadata("design:paramtypes", [LivequeryWebsocketSync,
|
|
67
|
+
ModulesContainer])
|
|
68
|
+
], ApiGatewayLinker);
|
|
69
|
+
export { ApiGatewayLinker };
|
|
70
|
+
//# sourceMappingURL=ApiGatewayLinker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ApiGatewayLinker.js","sourceRoot":"","sources":["../../src/ApiGatewayLinker.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { Observable } from "rxjs";
|
|
2
|
+
import { ServiceApiMetadata } from "./ApiGateway.js";
|
|
3
|
+
export declare class RxjsUdp extends Observable<ServiceApiMetadata> {
|
|
4
|
+
#private;
|
|
5
|
+
readonly id: `${string}-${string}-${string}-${string}-${string}`;
|
|
6
|
+
constructor();
|
|
7
|
+
broadcast(metadata: ServiceApiMetadata): Promise<void>;
|
|
8
|
+
}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { createSocket } from "dgram";
|
|
2
|
+
import { Observable } from "rxjs";
|
|
3
|
+
import { networkInterfaces } from 'os';
|
|
4
|
+
import { API_GATEWAY_NAMESPACE, API_GATEWAY_UDP_ADDRESS, API_GATEWAY_UDP_PORT } from "./const.js";
|
|
5
|
+
import { randomUUID } from "crypto";
|
|
6
|
+
export class RxjsUdp extends Observable {
|
|
7
|
+
id = randomUUID();
|
|
8
|
+
#udp = createSocket({
|
|
9
|
+
type: 'udp4',
|
|
10
|
+
reuseAddr: true
|
|
11
|
+
});
|
|
12
|
+
#broadcast_ips = ['localhost', '255.255.255.255'];
|
|
13
|
+
constructor() {
|
|
14
|
+
super(o => {
|
|
15
|
+
this.#udp.bind({
|
|
16
|
+
address: '0.0.0.0',
|
|
17
|
+
port: API_GATEWAY_UDP_PORT,
|
|
18
|
+
}, () => this.#udp.setBroadcast(true));
|
|
19
|
+
this.#udp.on('message', async (raw, rinfo) => {
|
|
20
|
+
try {
|
|
21
|
+
const info = JSON.parse(raw.toString('utf-8'));
|
|
22
|
+
if (info.namespace == API_GATEWAY_NAMESPACE && info.id != this.id) {
|
|
23
|
+
o.next({ ...info, host: rinfo.address });
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
catch (e) {
|
|
27
|
+
}
|
|
28
|
+
});
|
|
29
|
+
const network_address = (Object.entries(networkInterfaces())
|
|
30
|
+
.filter(([i]) => !i.startsWith('lo'))
|
|
31
|
+
.map(e => e[1])
|
|
32
|
+
.flat(2)
|
|
33
|
+
.filter(d => d.family == 'IPv4')
|
|
34
|
+
.map(d => d.address.split('.').slice(0, 3).join('.') + '.255'));
|
|
35
|
+
const env_address = API_GATEWAY_UDP_ADDRESS.split(',').map(a => a.trim()).filter(a => !!a);
|
|
36
|
+
for (const address of [...network_address, ...env_address]) {
|
|
37
|
+
const splited = address.split('.');
|
|
38
|
+
splited.length == 4 && this.#broadcast_ips.push(address);
|
|
39
|
+
splited.length == 3 && new Array(256).fill(0).map((_, i) => this.#broadcast_ips.push(`${address}.${i}`));
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
async broadcast(metadata) {
|
|
44
|
+
for (const host of this.#broadcast_ips) {
|
|
45
|
+
await this.#udp.send(JSON.stringify({ ...metadata, id: this.id }), API_GATEWAY_UDP_PORT, host);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=RxjsUdp.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RxjsUdp.js","sourceRoot":"","sources":["../../src/RxjsUdp.ts"],"names":[],"mappings":"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"}
|
package/build/src/const.d.ts
CHANGED
package/build/src/const.js
CHANGED
|
@@ -1,2 +1,5 @@
|
|
|
1
1
|
export const LIVEQUERY_MAGIC_KEY = `${process.env.LIVEQUERY_MAGIC_KEY || 'livequery'}/`;
|
|
2
|
+
export const API_GATEWAY_NAMESPACE = process.env.API_GATEWAY_NAMESPACE || 'default';
|
|
3
|
+
export const API_GATEWAY_UDP_PORT = Number(process.env.API_GATEWAY_UDP_PORT || 13579);
|
|
4
|
+
export const API_GATEWAY_UDP_ADDRESS = process.env.API_GATEWAY_UDP_ADDRESS || '';
|
|
2
5
|
//# sourceMappingURL=const.js.map
|
package/build/src/const.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"const.js","sourceRoot":"","sources":["../../src/const.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,mBAAmB,GAAG,
|
|
1
|
+
{"version":3,"file":"const.js","sourceRoot":"","sources":["../../src/const.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,mBAAmB,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,WACrE,GAAG,CAAA;AAEP,MAAM,CAAC,MAAM,qBAAqB,GAAG,OAAO,CAAC,GAAG,CAAC,qBAAqB,IAAI,SAAS,CAAA;AACnF,MAAM,CAAC,MAAM,oBAAoB,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB,IAAI,KAAK,CAAC,CAAA;AACrF,MAAM,CAAC,MAAM,uBAAuB,GAAI,OAAO,CAAC,GAAG,CAAC,uBAAuB,IAAI,EAAE,CAAA"}
|
|
@@ -14,4 +14,4 @@ export declare const createDatasourceMapper: <Options, StreamPayload, Connection
|
|
|
14
14
|
new (): LivequeryDatasource<Options, StreamPayload, Connection>;
|
|
15
15
|
}, inject_tokens: {
|
|
16
16
|
[connection_name: string]: any;
|
|
17
|
-
}, ...observables: Array<Observable<StreamPayload>>) => [(options: Options) => <TFunction extends Function, Y>(target:
|
|
17
|
+
}, ...observables: Array<Observable<StreamPayload>>) => [(options: Options) => <TFunction extends Function, Y>(target: object | TFunction, propertyKey?: string | symbol, descriptor?: TypedPropertyDescriptor<Y>) => void, import("@nestjs/common").FactoryProvider<any>];
|
package/build/src/index.d.ts
CHANGED
|
@@ -7,4 +7,4 @@ export { createDatasourceMapper, LivequeryDatasourceOptions, LivequeryDatasource
|
|
|
7
7
|
export { LivequeryDatasourceInterceptors } from './LivequeryDatasourceInterceptors.js';
|
|
8
8
|
export { UseWebsocketPublicKey, UseWebsocketPrivateKey } from './UseWebsocketShareKeyPair.js';
|
|
9
9
|
export { ApiGateway } from './ApiGateway.js';
|
|
10
|
-
export {
|
|
10
|
+
export { ApiGatewayLinker } from './ApiGatewayLinker.js';
|
package/build/src/index.js
CHANGED
|
@@ -7,5 +7,5 @@ export { createDatasourceMapper } from './helpers/createDatasourceMapper.js';
|
|
|
7
7
|
export { LivequeryDatasourceInterceptors } from './LivequeryDatasourceInterceptors.js';
|
|
8
8
|
export { UseWebsocketPublicKey, UseWebsocketPrivateKey } from './UseWebsocketShareKeyPair.js';
|
|
9
9
|
export { ApiGateway } from './ApiGateway.js';
|
|
10
|
-
export {
|
|
10
|
+
export { ApiGatewayLinker } from './ApiGatewayLinker.js';
|
|
11
11
|
//# 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,SAAS,EAAE,MAAM,wBAAwB,CAAA;AAElD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAC1D,OAAO,EAAE,oBAAoB,EAAwB,uBAAuB,EAAE,MAAM,2BAA2B,CAAA;AAC/G,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAA;AACpE,OAAO,EAAE,sBAAsB,EAAmD,MAAM,qCAAqC,CAAA;AAC7H,OAAO,EAAE,+BAA+B,EAAE,MAAM,sCAAsC,CAAA;AACtF,OAAO,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAA;AAC7F,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAA;AAElD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAC1D,OAAO,EAAE,oBAAoB,EAAwB,uBAAuB,EAAE,MAAM,2BAA2B,CAAA;AAC/G,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAA;AACpE,OAAO,EAAE,sBAAsB,EAAmD,MAAM,qCAAqC,CAAA;AAC7H,OAAO,EAAE,+BAA+B,EAAE,MAAM,sCAAsC,CAAA;AACtF,OAAO,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAA;AAC7F,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA"}
|
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.4",
|
|
9
9
|
"description": "Nestjs decorators for @livequery ecosystem",
|
|
10
10
|
"main": "./build/src/index.js",
|
|
11
11
|
"types": "./build/src/index.d.ts",
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
},
|
|
23
23
|
"type": "module",
|
|
24
24
|
"devDependencies": {
|
|
25
|
-
"@livequery/types": "2.0.
|
|
25
|
+
"@livequery/types": "2.0.7",
|
|
26
26
|
"@nestjs/common": "x",
|
|
27
27
|
"@nestjs/core": "x",
|
|
28
28
|
"@types/express": "x",
|