@webda/core 3.11.1 → 3.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (89) hide show
  1. package/lib/core.d.ts +1 -1
  2. package/lib/core.js +2 -2
  3. package/lib/core.js.map +1 -1
  4. package/lib/index.d.ts +0 -3
  5. package/lib/index.js +14 -17
  6. package/lib/index.js.map +1 -1
  7. package/lib/models/coremodel.d.ts +120 -6
  8. package/lib/models/coremodel.js +92 -13
  9. package/lib/models/coremodel.js.map +1 -1
  10. package/lib/models/coremodel.spec.js +12 -8
  11. package/lib/models/coremodel.spec.js.map +1 -1
  12. package/lib/models/user.d.ts +13 -0
  13. package/lib/models/user.js +20 -0
  14. package/lib/models/user.js.map +1 -1
  15. package/lib/queues/pubsubservice.d.ts +20 -0
  16. package/lib/queues/pubsubservice.js +27 -0
  17. package/lib/queues/pubsubservice.js.map +1 -1
  18. package/lib/queues/queueservice.d.ts +0 -12
  19. package/lib/queues/queueservice.js +4 -26
  20. package/lib/queues/queueservice.js.map +1 -1
  21. package/lib/services/cloudbinary.js.map +1 -1
  22. package/lib/services/configuration.d.ts +3 -2
  23. package/lib/services/configuration.js +4 -2
  24. package/lib/services/configuration.js.map +1 -1
  25. package/lib/services/cryptoservice.d.ts +49 -1
  26. package/lib/services/cryptoservice.js +123 -4
  27. package/lib/services/cryptoservice.js.map +1 -1
  28. package/lib/services/cryptoservice.spec.js +40 -0
  29. package/lib/services/cryptoservice.spec.js.map +1 -1
  30. package/lib/services/domainservice.js +1 -1
  31. package/lib/services/domainservice.js.map +1 -1
  32. package/lib/services/prometheus.spec.js +1 -1
  33. package/lib/services/prometheus.spec.js.map +1 -1
  34. package/lib/services/service.d.ts +18 -1
  35. package/lib/services/service.js +24 -0
  36. package/lib/services/service.js.map +1 -1
  37. package/lib/services/service.spec.js +8 -0
  38. package/lib/services/service.spec.js.map +1 -1
  39. package/lib/stores/file.js +0 -9
  40. package/lib/stores/file.js.map +1 -1
  41. package/lib/stores/file.spec.js +9 -0
  42. package/lib/stores/file.spec.js.map +1 -1
  43. package/lib/stores/memory.js +2 -0
  44. package/lib/stores/memory.js.map +1 -1
  45. package/lib/stores/store.d.ts +41 -3
  46. package/lib/stores/store.js +117 -51
  47. package/lib/stores/store.js.map +1 -1
  48. package/lib/stores/store.spec.js +2 -2
  49. package/lib/stores/store.spec.js.map +1 -1
  50. package/lib/stores/webdaql/query.d.ts +82 -13
  51. package/lib/stores/webdaql/query.js +131 -3
  52. package/lib/stores/webdaql/query.js.map +1 -1
  53. package/lib/stores/webdaql/query.spec.js +27 -0
  54. package/lib/stores/webdaql/query.spec.js.map +1 -1
  55. package/lib/test.js +2 -1
  56. package/lib/test.js.map +1 -1
  57. package/lib/utils/context.d.ts +5 -1
  58. package/lib/utils/context.js +14 -8
  59. package/lib/utils/context.js.map +1 -1
  60. package/lib/utils/context.spec.js +15 -0
  61. package/lib/utils/context.spec.js.map +1 -1
  62. package/lib/utils/logger.d.ts +1 -1
  63. package/lib/utils/logger.js +3 -0
  64. package/lib/utils/logger.js.map +1 -1
  65. package/lib/utils/serializers.d.ts +5 -0
  66. package/lib/utils/serializers.js +22 -0
  67. package/lib/utils/serializers.js.map +1 -1
  68. package/lib/utils/serializers.spec.js +57 -1
  69. package/lib/utils/serializers.spec.js.map +1 -1
  70. package/package.json +6 -5
  71. package/webda.module.json +14 -113
  72. package/lib/services/echo.d.ts +0 -45
  73. package/lib/services/echo.js +0 -49
  74. package/lib/services/echo.js.map +0 -1
  75. package/lib/services/echo.spec.d.ts +0 -1
  76. package/lib/services/echo.spec.js +0 -47
  77. package/lib/services/echo.spec.js.map +0 -1
  78. package/lib/services/proxy.d.ts +0 -197
  79. package/lib/services/proxy.js +0 -336
  80. package/lib/services/proxy.js.map +0 -1
  81. package/lib/services/proxy.spec.d.ts +0 -1
  82. package/lib/services/proxy.spec.js +0 -188
  83. package/lib/services/proxy.spec.js.map +0 -1
  84. package/lib/services/version.d.ts +0 -34
  85. package/lib/services/version.js +0 -53
  86. package/lib/services/version.js.map +0 -1
  87. package/lib/services/version.spec.d.ts +0 -1
  88. package/lib/services/version.spec.js +0 -24
  89. package/lib/services/version.spec.js.map +0 -1
@@ -1,336 +0,0 @@
1
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
- return c > 3 && r && Object.defineProperty(target, key, r), r;
6
- };
7
- import * as http from "http";
8
- import * as https from "https";
9
- import { Counter, Gauge, Histogram } from "../core.js";
10
- import { WebdaError } from "../errors.js";
11
- import { Route, Service, ServiceParameters } from "./service.js";
12
- export function createHttpHeader(line, headers) {
13
- return (Object.keys(headers)
14
- .reduce(function (head, key) {
15
- var value = headers[key];
16
- if (!Array.isArray(value)) {
17
- head.push(key + ": " + value);
18
- return head;
19
- }
20
- for (var i = 0; i < value.length; i++) {
21
- head.push(key + ": " + value[i]);
22
- }
23
- return head;
24
- }, [line])
25
- .join("\r\n") + "\r\n\r\n");
26
- }
27
- /**
28
- * Proxy to a backend service
29
- */
30
- export class ProxyParameters extends ServiceParameters {
31
- constructor(params) {
32
- super(params);
33
- if (this.backend?.endsWith("/")) {
34
- this.backend = this.backend.substring(0, this.backend.length - 1);
35
- }
36
- this.proxyHeaders ?? (this.proxyHeaders = true);
37
- }
38
- }
39
- /**
40
- * Proxy to starling computation api
41
- *
42
- * @WebdaModda
43
- */
44
- export class ProxyService extends Service {
45
- /**
46
- * @override
47
- */
48
- initMetrics() {
49
- super.initMetrics();
50
- this.metrics.http_request_total = this.getMetric(Counter, {
51
- name: "proxy_request_total",
52
- help: "number of request",
53
- labelNames: ["method", "statuscode", "handler", "host"]
54
- });
55
- this.metrics.http_request_in_flight = this.getMetric(Gauge, {
56
- name: "proxy_request_in_flight",
57
- help: "number of request in flight",
58
- labelNames: ["method", "statuscode", "handler", "host"]
59
- });
60
- this.metrics.http_request_duration_milliseconds = this.getMetric(Histogram, {
61
- name: "proxy_request_duration_milliseconds",
62
- help: "request duration",
63
- labelNames: ["method", "statuscode", "handler", "host"]
64
- });
65
- this.metrics.http_errors = this.getMetric(Counter, {
66
- name: "proxy_request_errors",
67
- help: "request errors",
68
- labelNames: ["method", "statuscode", "handler", "host"]
69
- });
70
- }
71
- /**
72
- * @override
73
- */
74
- loadParameters(params) {
75
- return new ProxyParameters(params);
76
- }
77
- resolve() {
78
- // Register the proxy on the 'upgrade' event of http socket
79
- this.getWebda().on("Webda.Init.Http", (evt) => {
80
- evt.on("upgrade", (req, socket, head) => {
81
- this.proxyWS(req, socket, head);
82
- });
83
- });
84
- return super.resolve();
85
- }
86
- /**
87
- * Create the request to the backend
88
- * @param url
89
- * @param method
90
- * @param headers
91
- * @param callback
92
- * @returns
93
- */
94
- createRequest(url, method, headers, callback, options = { timeout: 30000 }) {
95
- let mod = http;
96
- if (url.startsWith("https://")) {
97
- mod = https;
98
- }
99
- return mod.request(url, {
100
- method,
101
- headers,
102
- ...options
103
- }, callback);
104
- }
105
- /**
106
- * Filter backend headers to send to the client
107
- *
108
- * @param responseHeaders
109
- * @returns
110
- */
111
- filterHeaders(responseHeaders = {}) {
112
- const headers = {};
113
- Object.keys(responseHeaders)
114
- // Filter all CORS by default
115
- .filter(k => !k.startsWith("access") && k !== "")
116
- .forEach(k => {
117
- headers[k] = responseHeaders[k];
118
- });
119
- return headers;
120
- }
121
- /**
122
- * Forward the response
123
- * Allow you to intercept and override part of the answer
124
- *
125
- * @param response
126
- * @param context
127
- */
128
- forwardResponse(response, context) {
129
- context.writeHead(response.statusCode, this.filterHeaders(response.headers));
130
- response.pipe(context.getStream());
131
- }
132
- /**
133
- * Allow subclass to implement custom override
134
- * @param context
135
- * @returns
136
- */
137
- getRequestHeaders(context) {
138
- const headers = { ...context.getHeaders() };
139
- if (this.parameters.proxyHeaders) {
140
- let xff = context.getHeader("x-forwarded-for");
141
- if (!xff) {
142
- xff += `, ${context.getClientIp()}`;
143
- }
144
- else {
145
- xff = context.getClientIp();
146
- }
147
- const protocol = context.getProtocol();
148
- headers["X-Rewrite-URL"] = context.getRelativeUri();
149
- headers["X-Forwarded-Host"] = context.getHeader("x-forwarded-host", `${context.getHost()}`);
150
- headers["X-Forwarded-Proto"] = context.getHeader("x-forwarded-proto", protocol.substring(0, protocol.length - 1));
151
- headers["X-Forwarded-For"] = xff;
152
- }
153
- return headers;
154
- }
155
- /**
156
- * Proxy to an url
157
- * @param ctx
158
- * @param host
159
- * @param url prefix to remove
160
- */
161
- async proxy(ctx, host, url) {
162
- const subUrl = ctx.getHttpContext().getRelativeUri().substring(url.length);
163
- return this.rawProxy(ctx, host, subUrl);
164
- }
165
- /**
166
- * Proxy request to the backend errored
167
- * @param e
168
- */
169
- onError(e) {
170
- this.log("ERROR", "Proxying error", e);
171
- }
172
- /**
173
- * Proxy WebService
174
- */
175
- async proxyWS(req, socket, head) {
176
- if (!req.url.startsWith(this.parameters.url)) {
177
- return;
178
- }
179
- if (req.method !== "GET" || !req.headers.upgrade) {
180
- socket.destroy();
181
- }
182
- if (req.headers.upgrade.toLowerCase() !== "websocket") {
183
- socket.destroy();
184
- }
185
- // Proxy WS Only works with a WebdaServer from @webda/shell for now
186
- const webdaContext = await this.getWebda().getContextFromRequest(req);
187
- await webdaContext.init();
188
- return this.rawProxyWS(webdaContext, `${this.getBackend(webdaContext)}${req.url.substring(this.parameters.url.length)}`, socket);
189
- }
190
- /**
191
- * Create the request to the WS backend
192
- * @param url
193
- * @param context
194
- * @returns
195
- */
196
- createWSRequest(url, context) {
197
- const Url = new URL(url);
198
- return (Url.protocol === "http:" ? http : https).request({
199
- path: Url.pathname + Url.search,
200
- method: "GET",
201
- headers: { ...this.getRequestHeaders(context.getHttpContext()), host: Url.host },
202
- host: Url.hostname,
203
- port: Url.port
204
- });
205
- }
206
- /**
207
- *
208
- * @param context
209
- * @param url
210
- * @param socket
211
- */
212
- async rawProxyWS(context, url, socket) {
213
- this.log("DEBUG", "Proxying upgrade request", `${url}`);
214
- const proxyReq = this.createWSRequest(url, context);
215
- proxyReq.on("response", res => {
216
- // @ts-ignore
217
- if (!res.upgrade) {
218
- socket.write(createHttpHeader("HTTP/" + res.httpVersion + " " + res.statusCode + " " + res.statusMessage, res.headers));
219
- res.pipe(socket);
220
- }
221
- });
222
- const onError = err => {
223
- this.log("ERROR", err);
224
- socket.end();
225
- };
226
- proxyReq.on("error", onError);
227
- proxyReq.on("upgrade", (proxyRes, proxySocket, proxyHead) => {
228
- proxySocket.on("error", onError);
229
- // Allow us to listen when the websocket has completed
230
- proxySocket.on("end", function () {
231
- socket.end();
232
- });
233
- // The pipe below will end proxySocket if socket closes cleanly, but not
234
- // if it errors (eg, vanishes from the net and starts returning
235
- // EHOSTUNREACH). We need to do that explicitly.
236
- socket.on("error", function () {
237
- /* c8 ignore next 2 */
238
- proxySocket.end();
239
- });
240
- proxySocket.setTimeout(0);
241
- proxySocket.setNoDelay(true);
242
- proxySocket.setKeepAlive(true, 0);
243
- if (proxyHead && proxyHead.length)
244
- proxySocket.unshift(proxyHead);
245
- //
246
- // Remark: Handle writing the headers to the socket when switching protocols
247
- // Also handles when a header is an array
248
- //
249
- socket.write(createHttpHeader("HTTP/1.1 101 Switching Protocols", proxyRes.headers));
250
- proxySocket.pipe(socket).pipe(proxySocket);
251
- });
252
- proxyReq.end();
253
- }
254
- /**
255
- * Proxy an url to the response directly
256
- * @param ctx
257
- * @param url
258
- */
259
- async rawProxy(ctx, host, url = "/", headers = {}) {
260
- if (!url.startsWith("/")) {
261
- url = "/" + url;
262
- }
263
- this.log("DEBUG", "Proxying to", `${ctx.getHttpContext().getMethod()} ${host} ${url}`);
264
- this.metrics.http_request_in_flight.inc();
265
- await new Promise((resolve, reject) => {
266
- const labels = {
267
- method: ctx.getHttpContext().getMethod(),
268
- host,
269
- handler: url
270
- };
271
- const onError = e => {
272
- this.metrics.http_request_in_flight.dec();
273
- this.metrics.http_errors.inc({ ...labels, statuscode: -1 });
274
- this.onError(e);
275
- resolve();
276
- };
277
- let Host;
278
- try {
279
- Host = new URL(host).host;
280
- }
281
- catch (err) {
282
- // Skip wrong host
283
- }
284
- try {
285
- const req = this.createRequest(`${host}${url}`, ctx.getHttpContext().getMethod(), {
286
- ...this.getRequestHeaders(ctx.getHttpContext()),
287
- Host,
288
- ...headers
289
- }, res => {
290
- res.on("end", () => {
291
- this.metrics.http_request_in_flight.dec();
292
- resolve();
293
- });
294
- res.on("error", onError);
295
- this.metrics.http_request_total.inc({
296
- ...labels,
297
- statuscode: res.statusCode
298
- });
299
- if (res.statusCode >= 400) {
300
- this.metrics.http_errors.inc(labels);
301
- }
302
- this.forwardResponse(res, ctx);
303
- });
304
- req.on("error", onError);
305
- ctx.getHttpContext().getRawStream().pipe(req);
306
- }
307
- catch (e) {
308
- onError(e);
309
- }
310
- });
311
- }
312
- /**
313
- * Simplify override for dynamic backend
314
- * @param _ctx
315
- * @returns
316
- */
317
- getBackend(_ctx) {
318
- return this.parameters.backend;
319
- }
320
- /**
321
- * Proxy route
322
- * @param ctx
323
- */
324
- async proxyRoute(ctx) {
325
- if (this.parameters.requireAuthentication && !ctx.getCurrentUserId()) {
326
- throw new WebdaError.Unauthorized("You need to be authenticated to access this route");
327
- }
328
- // Add any additional controls here
329
- await this.proxy(ctx, this.getBackend(ctx), this.parameters.url);
330
- }
331
- }
332
- __decorate([
333
- Route("./{+path}", ["GET", "POST", "DELETE", "PUT", "PATCH"]),
334
- Route(".", ["GET", "POST", "DELETE", "PUT", "PATCH"])
335
- ], ProxyService.prototype, "proxyRoute", null);
336
- //# sourceMappingURL=proxy.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"proxy.js","sourceRoot":"","sources":["../../src/services/proxy.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- export {};
@@ -1,188 +0,0 @@
1
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
- return c > 3 && r && Object.defineProperty(target, key, r), r;
6
- };
7
- import { suite, test } from "@testdeck/mocha";
8
- import * as assert from "assert";
9
- import { EventEmitter } from "events";
10
- import * as http from "http";
11
- import sinon from "sinon";
12
- import { WebSocket, WebSocketServer } from "ws";
13
- import { WebdaError } from "../errors.js";
14
- import { WebdaTest } from "../test.js";
15
- import { HttpContext } from "../utils/httpcontext.js";
16
- import { createHttpHeader, ProxyService } from "./proxy.js";
17
- let WSProxyTest = class WSProxyTest extends WebdaTest {
18
- cov() {
19
- assert.strictEqual(createHttpHeader("plop", { test: ["1", "2"] }), `plop\r\ntest: 1\r\ntest: 2\r\n\r\n`);
20
- }
21
- async wsProxy() {
22
- const proxyService = new ProxyService(this.webda, "proxy", {
23
- url: "/proxy",
24
- backend: "http://localhost:28888/"
25
- });
26
- const socket = new EventEmitter();
27
- socket.destroy = sinon.stub();
28
- socket.end = sinon.stub();
29
- proxyService.proxyWS({ url: "/toto" }, socket, undefined);
30
- assert.ok(!socket.destroy.calledOnce);
31
- proxyService.proxyWS({ url: "/proxy/", method: "POST" }, socket, undefined);
32
- assert.ok(socket.destroy.calledOnce);
33
- socket.destroy.resetHistory();
34
- proxyService.proxyWS({ url: "/proxy/", method: "GET", headers: {} }, socket, undefined);
35
- assert.ok(socket.destroy.calledOnce);
36
- socket.destroy.resetHistory();
37
- proxyService.proxyWS({ url: "/proxy/", method: "GET", headers: { upgrade: "toto" } }, socket, undefined);
38
- assert.ok(socket.destroy.calledOnce);
39
- const proxyRequestSocket = new EventEmitter();
40
- proxyRequestSocket.end = sinon.stub();
41
- const createRequest = sinon.stub(proxyService, "createWSRequest").callsFake(() => {
42
- return proxyRequestSocket;
43
- });
44
- const ctx = await this.newContext();
45
- await proxyService.rawProxyWS(ctx, "", socket);
46
- proxyRequestSocket.emit("error");
47
- assert.ok(socket.end.calledOnce);
48
- socket.write = sinon.stub();
49
- proxyRequestSocket.emit("response", {
50
- pipe: sinon.stub(),
51
- headers: {},
52
- httpVersion: "1.0",
53
- statusCode: 200,
54
- statusMessage: "OK"
55
- });
56
- assert.ok(socket.write.calledOnce);
57
- createRequest.restore();
58
- return new Promise(async (resolve, reject) => {
59
- try {
60
- console.log("WS server constructor");
61
- const wss = new WebSocketServer({ port: 28888 });
62
- wss.on("connection", function connection(ws) {
63
- ws.on("error", console.error);
64
- ws.on("message", function message(data) {
65
- console.log("received: %s", data);
66
- ws.send(data);
67
- });
68
- ws.send("something");
69
- });
70
- this.registerService(proxyService);
71
- await proxyService.resolve().init();
72
- console.log("Http server constructor");
73
- const httpServer = http
74
- .createServer((req, res) => {
75
- console.log("Got request", req.url);
76
- })
77
- .listen("28887");
78
- this.webda.emit("Webda.Init.Http", httpServer);
79
- // @ts-ignore
80
- this.webda.getContextFromRequest = async (req, res) => this.webda.newWebContext(new HttpContext("localhost", "GET", "/proxy/", "http", "28887", req.headers), res, true);
81
- const ws = new WebSocket("ws://localhost:28887/proxy/");
82
- ws.on("error", console.error);
83
- ws.on("open", function open() {
84
- console.log("connected");
85
- ws.send(Date.now());
86
- });
87
- ws.on("close", function close() {
88
- console.log("disconnected");
89
- });
90
- ws.on("message", function message(data) {
91
- if (isNaN(data)) {
92
- return;
93
- }
94
- console.log(`Round-trip time: ${Date.now() - data} ms`);
95
- ws.close();
96
- wss.close();
97
- httpServer.close();
98
- resolve();
99
- });
100
- }
101
- catch (err) {
102
- console.error(err);
103
- }
104
- });
105
- }
106
- };
107
- __decorate([
108
- test
109
- ], WSProxyTest.prototype, "cov", null);
110
- __decorate([
111
- test
112
- ], WSProxyTest.prototype, "wsProxy", null);
113
- WSProxyTest = __decorate([
114
- suite
115
- ], WSProxyTest);
116
- let ProxyTest = class ProxyTest extends WebdaTest {
117
- async before() {
118
- await super.before();
119
- this.fakeServe();
120
- }
121
- fakeServe() {
122
- this.server = http
123
- .createServer((req, res) => {
124
- if (req.url === "/plop404") {
125
- res.writeHead(404);
126
- res.end();
127
- return;
128
- }
129
- else if (req.url === "/plop500") {
130
- res.end();
131
- return;
132
- }
133
- res.writeHead(200, { "X-URL": req.url });
134
- // Just simple echo
135
- req.pipe(res);
136
- })
137
- .listen(28888);
138
- }
139
- after() {
140
- this.server?.close();
141
- }
142
- async proxy() {
143
- const proxyService = new ProxyService(this.webda, "proxy", {
144
- url: "/proxy",
145
- backend: "http://localhost:28888/"
146
- });
147
- this.registerService(proxyService);
148
- await proxyService.resolve().init();
149
- this.webda.getRouter().remapRoutes();
150
- let ctx = await this.newContext();
151
- ctx.getHttpContext().setClientIp("127.0.0.1");
152
- let exec = this.getExecutor(ctx, "test.webda.io", "PUT", "/proxy/test/plop", "Bouzouf");
153
- await exec.execute(ctx);
154
- assert.notStrictEqual(ctx.getStream().size(), 0);
155
- assert.strictEqual(ctx.getResponseBody().toString(), "Bouzouf");
156
- exec = this.getExecutor(ctx, "test.webda.io", "PUT", "/proxy/test/plop/toto?query=1&query2=test,test2", "Bouzouf");
157
- await exec.execute(ctx);
158
- assert.notStrictEqual(ctx.getStream().size(), 0);
159
- assert.strictEqual(ctx.getResponseBody().toString(), "Bouzouf");
160
- assert.strictEqual(ctx.getResponseHeaders()["x-url"], "/test/plop/toto?query=1&query2=test,test2");
161
- exec = this.getExecutor(ctx, "test.webda.io", "GET", "/proxy/plop404", "Bouzouf");
162
- await exec.execute(ctx);
163
- proxyService.getParameters().backend = "http://256.256.256.256/";
164
- exec = this.getExecutor(ctx, "test.webda.io", "GET", "/proxy/webda", "Bouzouf");
165
- await exec.execute(ctx);
166
- proxyService.getParameters().backend = "https://www.loopingz.com/";
167
- exec = this.getExecutor(ctx, "test.webda.io", "GET", "/proxy/webda", "Bouzouf");
168
- await exec.execute(ctx);
169
- proxyService.getParameters().requireAuthentication = true;
170
- await assert.rejects(() => this.execute(ctx, "test.webda.io", "GET", "/proxy"), WebdaError.Unauthorized);
171
- ctx.reinit();
172
- ctx.getSession().login("test", "test");
173
- await this.execute(ctx, "test.webda.io", "GET", "/proxy", undefined, {
174
- "x-forwarded-for": "10.0.0.8"
175
- });
176
- //assert.strictEqual(ctx.getResponseHeaders()["x-forwarded-for"], "127.0.0.1, 10.0.0.8");
177
- // cov
178
- proxyService.getParameters().url = undefined;
179
- proxyService.resolve();
180
- }
181
- };
182
- __decorate([
183
- test
184
- ], ProxyTest.prototype, "proxy", null);
185
- ProxyTest = __decorate([
186
- suite
187
- ], ProxyTest);
188
- //# sourceMappingURL=proxy.spec.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"proxy.spec.js","sourceRoot":"","sources":["../../src/services/proxy.spec.ts"],"names":[],"mappings":"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"}
@@ -1,34 +0,0 @@
1
- import { OperationContext, Service, ServiceParameters } from "../index.js";
2
- /**
3
- * Version parameters
4
- */
5
- export declare class VersionServiceParameters extends ServiceParameters {
6
- /**
7
- * To force version otherwise would read from package.json
8
- */
9
- version?: string;
10
- /**
11
- * @default /version
12
- */
13
- url?: string;
14
- }
15
- /**
16
- * Display the version of the app on a route
17
- * @WebdaModda VersionService
18
- */
19
- export declare class VersionService<T extends VersionServiceParameters = VersionServiceParameters> extends Service<T> {
20
- /**
21
- * @inheritdoc
22
- */
23
- initRoutes(): void;
24
- /**
25
- * @inheritdoc
26
- */
27
- loadParameters(params: any): VersionServiceParameters;
28
- /**
29
- * Serve the version of the app
30
- *
31
- * @param ctx
32
- */
33
- version(ctx: OperationContext): void;
34
- }
@@ -1,53 +0,0 @@
1
- import { Service, ServiceParameters } from "../index.js";
2
- /**
3
- * Version parameters
4
- */
5
- export class VersionServiceParameters extends ServiceParameters {
6
- }
7
- /**
8
- * Display the version of the app on a route
9
- * @WebdaModda VersionService
10
- */
11
- export class VersionService extends Service {
12
- /**
13
- * @inheritdoc
14
- */
15
- initRoutes() {
16
- super.initRoutes();
17
- this.addRoute(this.parameters.url, ["GET"], this.version, {
18
- get: {
19
- summary: "Get the version of the application",
20
- responses: {
21
- 200: {
22
- description: "Version of the application",
23
- content: {
24
- "text/plain": {
25
- schema: {
26
- type: "string"
27
- }
28
- }
29
- }
30
- }
31
- }
32
- }
33
- });
34
- }
35
- /**
36
- * @inheritdoc
37
- */
38
- loadParameters(params) {
39
- params.version = params.version || this.getWebda().getApplication().getPackageDescription().version;
40
- params.url = params.url || "/version";
41
- return new VersionServiceParameters(params);
42
- }
43
- /**
44
- * Serve the version of the app
45
- *
46
- * @param ctx
47
- */
48
- version(ctx) {
49
- ctx.setHeader("Content-Type", "text/plain");
50
- ctx.write(this.parameters.version);
51
- }
52
- }
53
- //# sourceMappingURL=version.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/services/version.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAExE;;GAEG;AACH,MAAM,OAAO,wBAAyB,SAAQ,iBAAiB;CAS9D;AAED;;;GAGG;AACH,MAAM,OAAO,cAA8E,SAAQ,OAAU;IAC3G;;OAEG;IACH,UAAU;QACR,KAAK,CAAC,UAAU,EAAE,CAAC;QACnB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,OAAO,EAAE;YACxD,GAAG,EAAE;gBACH,OAAO,EAAE,oCAAoC;gBAC7C,SAAS,EAAE;oBACT,GAAG,EAAE;wBACH,WAAW,EAAE,4BAA4B;wBACzC,OAAO,EAAE;4BACP,YAAY,EAAE;gCACZ,MAAM,EAAE;oCACN,IAAI,EAAE,QAAQ;iCACf;6BACF;yBACF;qBACF;iBACF;aACF;SACF,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,cAAc,CAAC,MAAW;QACxB,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC,cAAc,EAAE,CAAC,qBAAqB,EAAE,CAAC,OAAO,CAAC;QACpG,MAAM,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,IAAI,UAAU,CAAC;QACtC,OAAO,IAAI,wBAAwB,CAAC,MAAM,CAAC,CAAC;IAC9C,CAAC;IAED;;;;OAIG;IACH,OAAO,CAAC,GAAqB;QAC3B,GAAG,CAAC,SAAS,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC;QAC5C,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;IACrC,CAAC;CACF"}
@@ -1 +0,0 @@
1
- export {};