@interopio/gateway-server 0.4.0-beta
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/changelog.md +94 -0
- package/dist/gateway-ent.cjs +305 -0
- package/dist/gateway-ent.cjs.map +7 -0
- package/dist/gateway-ent.js +277 -0
- package/dist/gateway-ent.js.map +7 -0
- package/dist/index.cjs +1713 -0
- package/dist/index.cjs.map +7 -0
- package/dist/index.js +1682 -0
- package/dist/index.js.map +7 -0
- package/dist/metrics-rest.cjs +21440 -0
- package/dist/metrics-rest.cjs.map +7 -0
- package/dist/metrics-rest.js +21430 -0
- package/dist/metrics-rest.js.map +7 -0
- package/gateway-server.d.ts +69 -0
- package/package.json +66 -0
- package/readme.md +9 -0
- package/src/common/compose.ts +40 -0
- package/src/gateway/ent/config.ts +174 -0
- package/src/gateway/ent/index.ts +18 -0
- package/src/gateway/ent/logging.ts +89 -0
- package/src/gateway/ent/server.ts +34 -0
- package/src/gateway/metrics/rest.ts +20 -0
- package/src/gateway/ws/core.ts +90 -0
- package/src/index.ts +3 -0
- package/src/logger.ts +6 -0
- package/src/mesh/connections.ts +101 -0
- package/src/mesh/rest-directory/routes.ts +38 -0
- package/src/mesh/ws/broker/core.ts +163 -0
- package/src/mesh/ws/cluster/core.ts +107 -0
- package/src/mesh/ws/relays/core.ts +159 -0
- package/src/metrics/routes.ts +86 -0
- package/src/server/address.ts +47 -0
- package/src/server/cors.ts +311 -0
- package/src/server/exchange.ts +379 -0
- package/src/server/monitoring.ts +167 -0
- package/src/server/types.ts +69 -0
- package/src/server/ws-client-verify.ts +79 -0
- package/src/server.ts +316 -0
- package/src/utils.ts +10 -0
- package/types/gateway-ent.d.ts +212 -0
|
@@ -0,0 +1,277 @@
|
|
|
1
|
+
// src/gateway/ent/logging.ts
|
|
2
|
+
import { format } from "node:util";
|
|
3
|
+
var LogInfoAdapter = class {
|
|
4
|
+
constructor(event) {
|
|
5
|
+
this.event = event;
|
|
6
|
+
}
|
|
7
|
+
_parsed;
|
|
8
|
+
_timestamp;
|
|
9
|
+
_output;
|
|
10
|
+
parsed() {
|
|
11
|
+
if (this._parsed === void 0) {
|
|
12
|
+
let err = void 0;
|
|
13
|
+
let vargs = this.event.data;
|
|
14
|
+
if (this.event.data[0] instanceof Error) {
|
|
15
|
+
err = this.event.data[0];
|
|
16
|
+
vargs = vargs.slice(1);
|
|
17
|
+
}
|
|
18
|
+
const msg = format(this.event.message, ...vargs);
|
|
19
|
+
this._parsed = { err, msg };
|
|
20
|
+
}
|
|
21
|
+
return this._parsed;
|
|
22
|
+
}
|
|
23
|
+
get time() {
|
|
24
|
+
return this.event.time;
|
|
25
|
+
}
|
|
26
|
+
get level() {
|
|
27
|
+
return this.event.level;
|
|
28
|
+
}
|
|
29
|
+
get namespace() {
|
|
30
|
+
return this.event.name;
|
|
31
|
+
}
|
|
32
|
+
get file() {
|
|
33
|
+
return void 0;
|
|
34
|
+
}
|
|
35
|
+
get line() {
|
|
36
|
+
return void 0;
|
|
37
|
+
}
|
|
38
|
+
get message() {
|
|
39
|
+
return this.parsed().msg;
|
|
40
|
+
}
|
|
41
|
+
get stacktrace() {
|
|
42
|
+
return this.parsed().err;
|
|
43
|
+
}
|
|
44
|
+
get timestamp() {
|
|
45
|
+
if (this._timestamp === void 0) {
|
|
46
|
+
this._timestamp = this.time.toISOString();
|
|
47
|
+
}
|
|
48
|
+
return this._timestamp;
|
|
49
|
+
}
|
|
50
|
+
get output() {
|
|
51
|
+
if (this._output === void 0) {
|
|
52
|
+
const err = this.parsed().err;
|
|
53
|
+
const stacktrace = err ? `
|
|
54
|
+
${err.stack ?? err}` : "";
|
|
55
|
+
this._output = `${this.timestamp} ${this.level.toUpperCase()} [${this.namespace}] - ${this.message}${stacktrace}`;
|
|
56
|
+
}
|
|
57
|
+
return this._output;
|
|
58
|
+
}
|
|
59
|
+
};
|
|
60
|
+
function toLogConfig(config) {
|
|
61
|
+
let level = "info";
|
|
62
|
+
if (config?.level) {
|
|
63
|
+
if (config.level === "fatal") {
|
|
64
|
+
level = "error";
|
|
65
|
+
} else if (config.level !== "report") {
|
|
66
|
+
level = config.level;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
const result = { level };
|
|
70
|
+
const appenderFn = config?.appender;
|
|
71
|
+
if (appenderFn) {
|
|
72
|
+
result.appender = (event) => {
|
|
73
|
+
appenderFn(new LogInfoAdapter(event));
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
return result;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
// src/gateway/ent/server.ts
|
|
80
|
+
import { GatewayServer } from "@interopio/gateway-server";
|
|
81
|
+
var ServerDelegate = class {
|
|
82
|
+
constructor(config) {
|
|
83
|
+
this.config = config;
|
|
84
|
+
}
|
|
85
|
+
server;
|
|
86
|
+
async connect(cb) {
|
|
87
|
+
if (!this.server) {
|
|
88
|
+
throw new Error(`not started`);
|
|
89
|
+
}
|
|
90
|
+
const client = await this.server.gateway.connect((c, m) => cb(c, m));
|
|
91
|
+
return client;
|
|
92
|
+
}
|
|
93
|
+
info() {
|
|
94
|
+
return this.server?.gateway.info();
|
|
95
|
+
}
|
|
96
|
+
async start() {
|
|
97
|
+
if (!this.server) {
|
|
98
|
+
this.server = await GatewayServer.Factory(this.config);
|
|
99
|
+
}
|
|
100
|
+
return this;
|
|
101
|
+
}
|
|
102
|
+
async stop() {
|
|
103
|
+
await this.server?.close();
|
|
104
|
+
delete this.server;
|
|
105
|
+
return this;
|
|
106
|
+
}
|
|
107
|
+
};
|
|
108
|
+
|
|
109
|
+
// src/gateway/ent/config.ts
|
|
110
|
+
function toMetricsFilters(legacy) {
|
|
111
|
+
if (legacy) {
|
|
112
|
+
const publishers = legacy.publishers.map((publisher) => {
|
|
113
|
+
return { identity: publisher.publisher, metrics: publisher.metrics };
|
|
114
|
+
});
|
|
115
|
+
const non_matched = legacy["non-matched"];
|
|
116
|
+
return { publishers, non_matched };
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
function toMetricsPublisherConfig(legacy) {
|
|
120
|
+
const filters = toMetricsFilters(legacy?.filters);
|
|
121
|
+
const conflation = toConflation(legacy?.conflation);
|
|
122
|
+
return { ...legacy, filters, conflation };
|
|
123
|
+
}
|
|
124
|
+
function toConflation(legacy) {
|
|
125
|
+
if (legacy) {
|
|
126
|
+
return { interval: legacy.interval };
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
function toMetricsConfig(legacy) {
|
|
130
|
+
const metrics = { publishers: [] };
|
|
131
|
+
legacy?.publishers?.forEach((publisher) => {
|
|
132
|
+
if (typeof publisher === "string") {
|
|
133
|
+
if (publisher === "rest") {
|
|
134
|
+
metrics.publishers.push("rest");
|
|
135
|
+
if (legacy.rest) {
|
|
136
|
+
const conf = { ...legacy.rest };
|
|
137
|
+
const userAgent = conf["user-agent"];
|
|
138
|
+
delete conf["user-agent"];
|
|
139
|
+
const headers = { ...conf.headers, ...userAgent ? { "user-agent": userAgent } : {} };
|
|
140
|
+
delete conf.headers;
|
|
141
|
+
metrics.rest = {
|
|
142
|
+
endpoint: conf.endpoint,
|
|
143
|
+
headers,
|
|
144
|
+
...toMetricsPublisherConfig(conf)
|
|
145
|
+
};
|
|
146
|
+
metrics.rest["publishFn"] ??= "@interopio/gateway-server/metrics-rest";
|
|
147
|
+
}
|
|
148
|
+
} else if (publisher === "file") {
|
|
149
|
+
metrics.publishers.push("file");
|
|
150
|
+
if (legacy.file) {
|
|
151
|
+
const conf = { ...legacy.file };
|
|
152
|
+
const status = conf["skip-status"] === void 0 ? true : !conf["skip-status"];
|
|
153
|
+
delete conf["skip-status"];
|
|
154
|
+
metrics.file = {
|
|
155
|
+
location: conf.location,
|
|
156
|
+
status,
|
|
157
|
+
...toMetricsPublisherConfig(conf)
|
|
158
|
+
};
|
|
159
|
+
}
|
|
160
|
+
} else {
|
|
161
|
+
}
|
|
162
|
+
} else {
|
|
163
|
+
const configuration = { ...publisher.configuration };
|
|
164
|
+
const splitSize = configuration["split-size"];
|
|
165
|
+
delete configuration["split-size"];
|
|
166
|
+
const file = publisher["file"];
|
|
167
|
+
const custom = {
|
|
168
|
+
split_size: splitSize,
|
|
169
|
+
publisher: { file, configuration },
|
|
170
|
+
...toMetricsPublisherConfig(configuration)
|
|
171
|
+
};
|
|
172
|
+
metrics.publishers.push(custom);
|
|
173
|
+
}
|
|
174
|
+
});
|
|
175
|
+
if (legacy?.filters) {
|
|
176
|
+
metrics.filters = toMetricsFilters(legacy?.filters);
|
|
177
|
+
}
|
|
178
|
+
return metrics;
|
|
179
|
+
}
|
|
180
|
+
function toCluster(legacy) {
|
|
181
|
+
if (legacy?.directory) {
|
|
182
|
+
const legacyDirectory = legacy.directory;
|
|
183
|
+
const config = { endpoint: legacy?.["endpoint"] };
|
|
184
|
+
if (legacyDirectory.type === "rest") {
|
|
185
|
+
let directory = void 0;
|
|
186
|
+
if (config.endpoint === void 0) {
|
|
187
|
+
config.endpoint = legacyDirectory.config.directory_uri;
|
|
188
|
+
} else {
|
|
189
|
+
directory = { uri: legacyDirectory.config.directory_uri };
|
|
190
|
+
}
|
|
191
|
+
if (legacyDirectory.config?.announce_interval) {
|
|
192
|
+
directory ??= {};
|
|
193
|
+
directory.interval = Number(legacyDirectory.config.announce_interval);
|
|
194
|
+
}
|
|
195
|
+
if (directory !== void 0) {
|
|
196
|
+
config.directory = directory;
|
|
197
|
+
}
|
|
198
|
+
return config;
|
|
199
|
+
} else if (legacyDirectory.type === "static") {
|
|
200
|
+
config.directory = { members: legacyDirectory.members ?? [] };
|
|
201
|
+
return config;
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
function toMeshConfig(legacy) {
|
|
206
|
+
const mesh = {};
|
|
207
|
+
if (legacy?.configuration?.node_id) mesh.node = legacy.configuration.node_id;
|
|
208
|
+
if (legacy?.type === "broker") mesh.broker = { endpoint: legacy.broker.endpoint };
|
|
209
|
+
if (legacy?.type === "p2p") {
|
|
210
|
+
const cluster = toCluster(legacy.p2p);
|
|
211
|
+
if (cluster) {
|
|
212
|
+
mesh.cluster = cluster;
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
return mesh;
|
|
216
|
+
}
|
|
217
|
+
function toServerConfig(config) {
|
|
218
|
+
const gateway = {
|
|
219
|
+
route: config.route,
|
|
220
|
+
limits: config.limits,
|
|
221
|
+
origins: config.security?.origin_filters,
|
|
222
|
+
clients: config["clients"] ?? { inactive_seconds: 0, buffer_size: 100 },
|
|
223
|
+
contexts: {
|
|
224
|
+
lifetime: "retained",
|
|
225
|
+
visibility: [
|
|
226
|
+
{ context: /___channel___.+/, restrictions: "cluster" },
|
|
227
|
+
{ context: /T42\..+/, restrictions: "local" }
|
|
228
|
+
]
|
|
229
|
+
},
|
|
230
|
+
methods: {
|
|
231
|
+
visibility: [
|
|
232
|
+
{ method: /T42\..+/, restrictions: "local" }
|
|
233
|
+
]
|
|
234
|
+
},
|
|
235
|
+
peers: {
|
|
236
|
+
visibility: [
|
|
237
|
+
{ domain: "context", restrictions: "cluster" },
|
|
238
|
+
{ domain: "agm", restrictions: "local" }
|
|
239
|
+
]
|
|
240
|
+
},
|
|
241
|
+
metrics: { publishers: [] }
|
|
242
|
+
};
|
|
243
|
+
if (config.authentication?.token_ttl) gateway.token = { ttl: config.authentication?.token_ttl };
|
|
244
|
+
if (config["contexts"]) {
|
|
245
|
+
gateway.contexts = config["contexts"];
|
|
246
|
+
}
|
|
247
|
+
if (config["methods"]) {
|
|
248
|
+
gateway.methods = config["methods"];
|
|
249
|
+
}
|
|
250
|
+
if (config["peers"]) {
|
|
251
|
+
gateway.peers = config["peers"];
|
|
252
|
+
}
|
|
253
|
+
if (config.cluster?.enabled) {
|
|
254
|
+
gateway.mesh = toMeshConfig(config.cluster);
|
|
255
|
+
}
|
|
256
|
+
if (config.metrics?.publishers) gateway.metrics = toMetricsConfig(config.metrics);
|
|
257
|
+
return {
|
|
258
|
+
port: config.port ?? 3434,
|
|
259
|
+
host: config.ip ?? config["host"],
|
|
260
|
+
memory: config["memory"],
|
|
261
|
+
gateway
|
|
262
|
+
};
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
// src/gateway/ent/index.ts
|
|
266
|
+
import { IOGateway } from "@interopio/gateway";
|
|
267
|
+
function create(config) {
|
|
268
|
+
return new ServerDelegate(toServerConfig(config));
|
|
269
|
+
}
|
|
270
|
+
function configure_logging(config) {
|
|
271
|
+
IOGateway.Logging.configure(toLogConfig(config));
|
|
272
|
+
}
|
|
273
|
+
export {
|
|
274
|
+
configure_logging,
|
|
275
|
+
create
|
|
276
|
+
};
|
|
277
|
+
//# sourceMappingURL=gateway-ent.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/gateway/ent/logging.ts", "../src/gateway/ent/server.ts", "../src/gateway/ent/config.ts", "../src/gateway/ent/index.ts"],
|
|
4
|
+
"sourcesContent": ["import {LogInfo, LogLevel} from '@interopio/gateway-server/gateway-ent';\nimport {IOGateway} from '@interopio/gateway';\nimport {format} from 'node:util';\n\nclass LogInfoAdapter implements LogInfo {\n private _parsed?: { err?: Error, msg: string };\n private _timestamp?: string;\n private _output?: string;\n\n constructor(private readonly event: IOGateway.Logging.LogEvent) {\n }\n\n private parsed(): { err?: Error, msg: string } {\n if (this._parsed === undefined) {\n let err: Error | undefined = undefined;\n let vargs = this.event.data;\n if (this.event.data[0] instanceof Error) {\n err = this.event.data[0];\n vargs = vargs.slice(1);\n }\n const msg = format(this.event.message, ...vargs);\n this._parsed = {err, msg};\n }\n return this._parsed;\n }\n\n get time(): Date {\n return this.event.time;\n }\n\n get level(): LogLevel {\n return this.event.level;\n }\n\n get namespace() {\n return this.event.name;\n }\n\n get file(): string {\n return undefined as unknown as string;\n }\n\n get line(): number {\n return undefined as unknown as number;\n }\n\n get message(): string {\n return this.parsed().msg;\n }\n\n get stacktrace(): Error | undefined {\n return this.parsed().err;\n }\n\n private get timestamp(): string {\n if (this._timestamp === undefined) {\n this._timestamp = this.time.toISOString();\n }\n return this._timestamp;\n }\n\n get output(): string {\n if (this._output === undefined) {\n const err = this.parsed().err;\n const stacktrace = err ? `\\n${err.stack ?? err}` : '';\n this._output = `${this.timestamp} ${this.level.toUpperCase()} [${this.namespace}] - ${this.message}${stacktrace}`;\n }\n return this._output;\n }\n}\n\nexport function toLogConfig(config?: { level?: LogLevel; appender?: (info: LogInfo) => void }): IOGateway.Logging.LogConfig {\n let level: Exclude<LogLevel, 'report' | 'fatal'> = 'info';\n if (config?.level) {\n if (config.level === 'fatal') {\n level = 'error';\n } else if (config.level !== 'report') {\n level = config.level;\n }\n }\n const result: IOGateway.Logging.LogConfig = {level};\n const appenderFn = config?.appender;\n if (appenderFn) {\n result.appender = (event: IOGateway.Logging.LogEvent) => {\n appenderFn(new LogInfoAdapter(event));\n };\n }\n return result;\n}\n", "import {Gateway, GatewayClient, GatewayMessage} from '@interopio/gateway-server/gateway-ent';\nimport {GatewayServer} from '@interopio/gateway-server';\n\nexport class ServerDelegate implements Gateway {\n private server?: GatewayServer.Server;\n\n constructor(private readonly config: GatewayServer.ServerConfig) {\n }\n\n async connect(cb: (client: GatewayClient, msg: GatewayMessage) => void): Promise<GatewayClient> {\n if (!this.server) {\n throw new Error(`not started`);\n }\n const client = await this.server.gateway.connect((c, m) => cb(c as unknown as GatewayClient, m as GatewayMessage));\n return client as unknown as GatewayClient;\n }\n\n info(): { endpoint: string } {\n return this.server?.gateway.info() as { endpoint: string };\n }\n\n async start(): Promise<Gateway> {\n if (!this.server) {\n this.server = await GatewayServer.Factory(this.config);\n }\n return this;\n }\n\n async stop(): Promise<Gateway> {\n await this.server?.close();\n delete this.server;\n return this;\n }\n}\n", "import {GatewayServer} from '../../../gateway-server';\nimport {IOGateway} from '@interopio/gateway';\nimport { GatewayConfig, MetricsPublisherConfig } from '../../../types/gateway-ent';\n\nfunction toMetricsFilters(legacy?: MetricsPublisherConfig['filters']): IOGateway.MetricFilters | undefined {\n if (legacy) {\n const publishers = legacy.publishers.map(publisher => {\n return {identity: publisher.publisher, metrics: publisher.metrics};\n });\n const non_matched = legacy['non-matched'];\n return {publishers, non_matched};\n }\n}\n\nfunction toMetricsPublisherConfig(legacy: MetricsPublisherConfig & {\n conflation?: { 'max-datapoints-repo'?: number } & MetricsPublisherConfig['conflation']\n}): IOGateway.BasicMetricsPublisherConfig {\n const filters = toMetricsFilters(legacy?.filters);\n const conflation = toConflation(legacy?.conflation);\n return {...legacy, filters, conflation};\n}\n\nfunction toConflation(legacy?: {\n 'max-datapoints-repo'?: number\n} & MetricsPublisherConfig['conflation']): IOGateway.BasicMetricsPublisherConfig['conflation'] | undefined {\n if (legacy) {\n return {interval: legacy.interval};\n }\n}\n\nfunction toMetricsConfig(legacy: GatewayConfig['metrics']): IOGateway.GatewayConfig['metrics'] {\n const metrics: IOGateway.GatewayConfig['metrics'] = {publishers: []};\n legacy?.publishers?.forEach((publisher) => {\n if (typeof publisher === 'string') {\n if (publisher === 'rest') {\n metrics.publishers.push('rest');\n if (legacy.rest) {\n const conf = {...legacy.rest};\n const userAgent = conf[\"user-agent\"];\n delete conf['user-agent'];\n const headers = {...conf.headers, ...(userAgent ? {'user-agent': userAgent} : {})};\n delete conf.headers;\n metrics.rest = {\n endpoint: conf.endpoint,\n headers: headers,\n ...toMetricsPublisherConfig(conf)\n };\n metrics.rest['publishFn'] ??= '@interopio/gateway-server/metrics-rest'\n }\n } else if (publisher === 'file') {\n metrics.publishers.push('file');\n if (legacy.file) {\n const conf = {...legacy.file};\n const status = conf['skip-status'] === undefined ? true : !conf['skip-status'];\n delete conf['skip-status'];\n metrics.file = {\n location: conf.location,\n status: status,\n ...toMetricsPublisherConfig(conf)\n };\n }\n } else {\n // unsupported predefined type\n }\n } else {\n const configuration = {...publisher.configuration};\n const splitSize = configuration[\"split-size\"];\n delete configuration[\"split-size\"];\n const file = publisher['file'] as string;\n const custom: IOGateway.CustomMetricsPublisherConfig = {\n split_size: splitSize,\n publisher: {file, configuration},\n ...toMetricsPublisherConfig(configuration)\n }\n metrics.publishers.push(custom);\n }\n });\n if (legacy?.filters) {\n metrics.filters = toMetricsFilters(legacy?.filters);\n }\n return metrics;\n}\ntype GatewayCluster = Required<GatewayConfig>['cluster'];\ntype P2P = Required<GatewayCluster>['p2p'];\n\nfunction toCluster(legacy?: P2P): IOGateway.MeshConfig['cluster'] | undefined {\n if (legacy?.directory) {\n const legacyDirectory = legacy.directory;\n const config: IOGateway.MeshConfig['cluster'] = {endpoint: legacy?.['endpoint']};\n if (legacyDirectory.type === 'rest') {\n let directory: IOGateway.RestMeshDirectoryConfig | undefined = undefined;\n if (config.endpoint === undefined) {\n config.endpoint = legacyDirectory.config!.directory_uri!;\n }\n else {\n directory = {uri: legacyDirectory.config!.directory_uri};\n }\n if (legacyDirectory.config?.announce_interval) {\n directory ??= {};\n directory.interval = Number(legacyDirectory.config.announce_interval);\n }\n if (directory !== undefined) {\n config.directory = directory;\n }\n return config;\n }\n else if (legacyDirectory.type === 'static') {\n config.directory = {members : legacyDirectory.members ?? []};\n return config;\n }\n }\n}\n\nfunction toMeshConfig(legacy: GatewayConfig['cluster']) {\n const mesh: IOGateway.MeshConfig = {};\n if (legacy?.configuration?.node_id) mesh.node = legacy.configuration.node_id;\n if (legacy?.type === 'broker') mesh.broker = {endpoint: legacy.broker!.endpoint!};\n if (legacy?.type === 'p2p') {\n const cluster = toCluster(legacy.p2p);\n if (cluster) {\n mesh.cluster = cluster;\n }\n }\n return mesh;\n}\n\nexport function toServerConfig(config: GatewayConfig): GatewayServer.ServerConfig {\n const gateway: GatewayServer.ServerConfig[\"gateway\"] = {\n route: config.route,\n limits: config.limits,\n origins: config.security?.origin_filters as GatewayServer.OriginFilters,\n clients: config['clients'] ?? {inactive_seconds: 0, buffer_size: 100},\n contexts: {\n lifetime: 'retained',\n visibility: [\n {context: /___channel___.+/, restrictions: 'cluster'},\n {context: /T42\\..+/, restrictions: 'local'}\n ]\n },\n methods: {\n visibility: [\n {method: /T42\\..+/, restrictions: 'local'}\n ]\n },\n peers: {\n visibility: [\n {domain: 'context', restrictions: 'cluster'},\n {domain: 'agm', restrictions: 'local'}\n ]\n },\n metrics: {publishers: []}\n };\n if (config.authentication?.token_ttl) gateway.token = {ttl: config.authentication?.token_ttl as number};\n if (config['contexts']) {\n gateway.contexts = config['contexts'];\n }\n if (config['methods']) {\n gateway.methods = config['methods'];\n }\n if (config['peers']) {\n gateway.peers = config['peers'];\n }\n if (config.cluster?.enabled) {\n gateway.mesh = toMeshConfig(config.cluster);\n\n }\n if (config.metrics?.publishers) gateway.metrics = toMetricsConfig(config.metrics);\n return {\n port: config.port ?? 3434,\n host: config.ip ?? config['host'],\n memory: config['memory'],\n gateway: gateway\n };\n}\n", "import {toLogConfig} from './logging.js';\nimport {ServerDelegate} from './server.js';\nimport {toServerConfig} from './config.js';\nimport {\n Gateway,\n GatewayConfig,\n LogInfo,\n LogLevel\n} from '../../../types/gateway-ent';\nimport {IOGateway} from '@interopio/gateway';\n\nexport function create(config: GatewayConfig): Gateway {\n return new ServerDelegate(toServerConfig(config));\n}\n\nexport function configure_logging(config?: { level: LogLevel, appender?: (info: LogInfo) => void }) {\n IOGateway.Logging.configure(toLogConfig(config));\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|