redis-smq-web-server 9.0.0-next.1 → 9.0.0-next.11

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 (107) hide show
  1. package/CHANGELOG.md +88 -0
  2. package/README.md +99 -69
  3. package/dist/cjs/bin/cli.d.ts +1 -0
  4. package/dist/cjs/bin/cli.js +42 -7
  5. package/dist/cjs/bin/cli.js.map +1 -1
  6. package/dist/cjs/src/config/parse-config.d.ts.map +1 -1
  7. package/dist/cjs/src/config/parse-config.js +16 -29
  8. package/dist/cjs/src/config/parse-config.js.map +1 -1
  9. package/dist/cjs/src/config/types/index.d.ts +16 -5
  10. package/dist/cjs/src/config/types/index.d.ts.map +1 -1
  11. package/dist/cjs/src/index.d.ts +4 -1
  12. package/dist/cjs/src/index.d.ts.map +1 -1
  13. package/dist/cjs/src/index.js +54 -25
  14. package/dist/cjs/src/index.js.map +1 -1
  15. package/dist/cjs/tests/common/config.d.ts +3 -0
  16. package/dist/cjs/tests/common/config.d.ts.map +1 -0
  17. package/dist/cjs/tests/common/config.js +24 -0
  18. package/dist/cjs/tests/common/config.js.map +1 -0
  19. package/dist/cjs/tests/common/redis-client.d.ts +94 -0
  20. package/dist/cjs/tests/common/redis-client.d.ts.map +1 -0
  21. package/dist/cjs/tests/common/redis-client.js +40 -0
  22. package/dist/cjs/tests/common/redis-client.js.map +1 -0
  23. package/dist/cjs/tests/common/start-api-server.d.ts +3 -0
  24. package/dist/cjs/tests/common/start-api-server.d.ts.map +1 -0
  25. package/dist/cjs/tests/common/start-api-server.js +38 -0
  26. package/dist/cjs/tests/common/start-api-server.js.map +1 -0
  27. package/dist/cjs/tests/common/start-cli.d.ts +10 -0
  28. package/dist/cjs/tests/common/start-cli.d.ts.map +1 -0
  29. package/dist/cjs/tests/common/start-cli.js +70 -0
  30. package/dist/cjs/tests/common/start-cli.js.map +1 -0
  31. package/dist/cjs/tests/common/start-redis-server.d.ts +3 -0
  32. package/dist/cjs/tests/common/start-redis-server.d.ts.map +1 -0
  33. package/dist/cjs/tests/common/start-redis-server.js +37 -0
  34. package/dist/cjs/tests/common/start-redis-server.js.map +1 -0
  35. package/dist/cjs/tests/common/start-web-server.d.ts +3 -0
  36. package/dist/cjs/tests/common/start-web-server.d.ts.map +1 -0
  37. package/dist/cjs/tests/common/start-web-server.js +33 -0
  38. package/dist/cjs/tests/common/start-web-server.js.map +1 -0
  39. package/dist/cjs/tests/setup.d.ts +2 -0
  40. package/dist/cjs/tests/setup.d.ts.map +1 -0
  41. package/dist/cjs/tests/setup.js +27 -0
  42. package/dist/cjs/tests/setup.js.map +1 -0
  43. package/dist/cjs/tests/tests/test00001.test.d.ts +2 -0
  44. package/dist/cjs/tests/tests/test00001.test.d.ts.map +1 -0
  45. package/dist/cjs/tests/tests/test00001.test.js +118 -0
  46. package/dist/cjs/tests/tests/test00001.test.js.map +1 -0
  47. package/dist/cjs/tests/tests/test00002.test.d.ts +2 -0
  48. package/dist/cjs/tests/tests/test00002.test.d.ts.map +1 -0
  49. package/dist/cjs/tests/tests/test00002.test.js +68 -0
  50. package/dist/cjs/tests/tests/test00002.test.js.map +1 -0
  51. package/dist/cjs/tests/tests/test00003.test.d.ts +2 -0
  52. package/dist/cjs/tests/tests/test00003.test.d.ts.map +1 -0
  53. package/dist/cjs/tests/tests/test00003.test.js +117 -0
  54. package/dist/cjs/tests/tests/test00003.test.js.map +1 -0
  55. package/dist/esm/bin/cli.d.ts +1 -0
  56. package/dist/esm/bin/cli.js +41 -7
  57. package/dist/esm/bin/cli.js.map +1 -1
  58. package/dist/esm/src/config/parse-config.d.ts.map +1 -1
  59. package/dist/esm/src/config/parse-config.js +18 -28
  60. package/dist/esm/src/config/parse-config.js.map +1 -1
  61. package/dist/esm/src/config/types/index.d.ts +16 -5
  62. package/dist/esm/src/config/types/index.d.ts.map +1 -1
  63. package/dist/esm/src/index.d.ts +4 -1
  64. package/dist/esm/src/index.d.ts.map +1 -1
  65. package/dist/esm/src/index.js +55 -25
  66. package/dist/esm/src/index.js.map +1 -1
  67. package/dist/esm/tests/common/config.d.ts +3 -0
  68. package/dist/esm/tests/common/config.d.ts.map +1 -0
  69. package/dist/esm/tests/common/config.js +21 -0
  70. package/dist/esm/tests/common/config.js.map +1 -0
  71. package/dist/esm/tests/common/redis-client.d.ts +94 -0
  72. package/dist/esm/tests/common/redis-client.d.ts.map +1 -0
  73. package/dist/esm/tests/common/redis-client.js +20 -0
  74. package/dist/esm/tests/common/redis-client.js.map +1 -0
  75. package/dist/esm/tests/common/start-api-server.d.ts +3 -0
  76. package/dist/esm/tests/common/start-api-server.d.ts.map +1 -0
  77. package/dist/esm/tests/common/start-api-server.js +21 -0
  78. package/dist/esm/tests/common/start-api-server.js.map +1 -0
  79. package/dist/esm/tests/common/start-cli.d.ts +10 -0
  80. package/dist/esm/tests/common/start-cli.d.ts.map +1 -0
  81. package/dist/esm/tests/common/start-cli.js +54 -0
  82. package/dist/esm/tests/common/start-cli.js.map +1 -0
  83. package/dist/esm/tests/common/start-redis-server.d.ts +3 -0
  84. package/dist/esm/tests/common/start-redis-server.d.ts.map +1 -0
  85. package/dist/esm/tests/common/start-redis-server.js +22 -0
  86. package/dist/esm/tests/common/start-redis-server.js.map +1 -0
  87. package/dist/esm/tests/common/start-web-server.d.ts +3 -0
  88. package/dist/esm/tests/common/start-web-server.d.ts.map +1 -0
  89. package/dist/esm/tests/common/start-web-server.js +16 -0
  90. package/dist/esm/tests/common/start-web-server.js.map +1 -0
  91. package/dist/esm/tests/setup.d.ts +2 -0
  92. package/dist/esm/tests/setup.d.ts.map +1 -0
  93. package/dist/esm/tests/setup.js +16 -0
  94. package/dist/esm/tests/setup.js.map +1 -0
  95. package/dist/esm/tests/tests/test00001.test.d.ts +2 -0
  96. package/dist/esm/tests/tests/test00001.test.d.ts.map +1 -0
  97. package/dist/esm/tests/tests/test00001.test.js +103 -0
  98. package/dist/esm/tests/tests/test00001.test.js.map +1 -0
  99. package/dist/esm/tests/tests/test00002.test.d.ts +2 -0
  100. package/dist/esm/tests/tests/test00002.test.d.ts.map +1 -0
  101. package/dist/esm/tests/tests/test00002.test.js +57 -0
  102. package/dist/esm/tests/tests/test00002.test.js.map +1 -0
  103. package/dist/esm/tests/tests/test00003.test.d.ts +2 -0
  104. package/dist/esm/tests/tests/test00003.test.d.ts.map +1 -0
  105. package/dist/esm/tests/tests/test00003.test.js +102 -0
  106. package/dist/esm/tests/tests/test00003.test.js.map +1 -0
  107. package/package.json +19 -8
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../../tests/setup.ts"],"names":[],"mappings":";;;;;;;;;;;AASA,mCAAoE;AAEpE,0EAGwC;AACxC,8DAGkC;AAElC,IAAA,kBAAS,EAAC,GAAS,EAAE;IACnB,MAAM,IAAA,uCAAe,GAAE,CAAC;AAC1B,CAAC,CAAA,CAAC,CAAC;AAEH,IAAA,iBAAQ,EAAC,GAAS,EAAE;IAClB,MAAM,IAAA,qCAAmB,GAAE,CAAC;IAC5B,MAAM,IAAA,2CAAmB,GAAE,CAAC;AAC9B,CAAC,CAAA,CAAC,CAAC;AAEH,IAAA,mBAAU,EAAC,GAAS,EAAE;IACpB,MAAM,KAAK,GAAG,MAAM,IAAA,wCAAsB,GAAE,CAAC;IAC7C,MAAM,KAAK,CAAC,aAAa,EAAE,CAAC;AAC9B,CAAC,CAAA,CAAC,CAAC;AAEH,IAAA,kBAAS,EAAC,GAAS,EAAE,kDAAC,OAAA,KAAK,CAAC,CAAA,GAAA,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=test00001.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test00001.test.d.ts","sourceRoot":"","sources":["../../../../tests/tests/test00001.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,118 @@
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
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ const vitest_1 = require("vitest");
16
+ const supertest_1 = __importDefault(require("supertest"));
17
+ const config_js_1 = require("../common/config.js");
18
+ const start_web_server_js_1 = require("../common/start-web-server.js");
19
+ (0, vitest_1.describe)('RedisSMQWebServer E2E Tests', () => {
20
+ var _a;
21
+ const serverUrl = `http://localhost:${(_a = config_js_1.config.webServer) === null || _a === void 0 ? void 0 : _a.port}`;
22
+ (0, vitest_1.it)('should serve index.html for root path', () => __awaiter(void 0, void 0, void 0, function* () {
23
+ yield (0, start_web_server_js_1.startWebServer)();
24
+ const response = yield (0, supertest_1.default)(serverUrl)
25
+ .get('/')
26
+ .expect(200)
27
+ .expect('Content-Type', /text\/html/);
28
+ (0, vitest_1.expect)(response.text).toContain('<!doctype html>');
29
+ }));
30
+ (0, vitest_1.it)('should inject web UI config into index.html', () => __awaiter(void 0, void 0, void 0, function* () {
31
+ yield (0, start_web_server_js_1.startWebServer)();
32
+ const response = yield (0, supertest_1.default)(serverUrl).get('/').expect(200);
33
+ (0, vitest_1.expect)(response.text).toContain('window.configs');
34
+ (0, vitest_1.expect)(response.text).toContain('"BASE_PATH":"/"');
35
+ (0, vitest_1.expect)(response.text).toContain('"API_URL":"/"');
36
+ }));
37
+ (0, vitest_1.it)('should set cache headers for asset files', () => __awaiter(void 0, void 0, void 0, function* () {
38
+ yield (0, start_web_server_js_1.startWebServer)();
39
+ const response = yield (0, supertest_1.default)(serverUrl).get('/index.html').expect(200);
40
+ (0, vitest_1.expect)(response.headers['cache-control']).toContain('no-cache');
41
+ const match = response.text.match(/<script[^>]+src=["']([^"']+)["']/i);
42
+ (0, vitest_1.expect)(match, 'index.html should include at least one script tag with src').toBeTruthy();
43
+ const scriptSrc = (match === null || match === void 0 ? void 0 : match[1]) || '';
44
+ (0, vitest_1.expect)(scriptSrc.length).toBeGreaterThan(0);
45
+ const assetPath = scriptSrc.startsWith('http')
46
+ ? scriptSrc.replace(serverUrl, '')
47
+ : scriptSrc;
48
+ const assetRes = yield (0, supertest_1.default)(serverUrl).get(assetPath).expect(200);
49
+ (0, vitest_1.expect)(assetRes.headers['cache-control']).toBeDefined();
50
+ }));
51
+ (0, vitest_1.it)('should return 404 for non-existent static files', () => __awaiter(void 0, void 0, void 0, function* () {
52
+ yield (0, start_web_server_js_1.startWebServer)();
53
+ yield (0, supertest_1.default)(serverUrl)
54
+ .get('/assets/non-existent-file-12345.js')
55
+ .expect(404);
56
+ }));
57
+ (0, vitest_1.it)('should set ETag header for static files', () => __awaiter(void 0, void 0, void 0, function* () {
58
+ yield (0, start_web_server_js_1.startWebServer)();
59
+ const response = yield (0, supertest_1.default)(serverUrl).get('/').expect(200);
60
+ (0, vitest_1.expect)(response.headers['etag']).toBeDefined();
61
+ }));
62
+ (0, vitest_1.it)('should route /api requests to embedded REST API', () => __awaiter(void 0, void 0, void 0, function* () {
63
+ yield (0, start_web_server_js_1.startWebServer)();
64
+ yield (0, supertest_1.default)(serverUrl)
65
+ .get('/api/v1/queues')
66
+ .expect(200)
67
+ .expect('Content-Type', /application\/json/);
68
+ }));
69
+ (0, vitest_1.it)('should serve index.html for non-API routes', () => __awaiter(void 0, void 0, void 0, function* () {
70
+ yield (0, start_web_server_js_1.startWebServer)();
71
+ const response = yield (0, supertest_1.default)(serverUrl)
72
+ .get('/queues/my-queue/messages/123/details')
73
+ .expect(200)
74
+ .expect('Content-Type', /text\/html/);
75
+ (0, vitest_1.expect)(response.text).toContain('<!doctype html>');
76
+ }));
77
+ (0, vitest_1.it)('should not serve index.html for /api routes', () => __awaiter(void 0, void 0, void 0, function* () {
78
+ yield (0, start_web_server_js_1.startWebServer)();
79
+ const response = yield (0, supertest_1.default)(serverUrl).get('/api/v1/queues');
80
+ (0, vitest_1.expect)(response.headers['content-type']).not.toContain('text/html');
81
+ }));
82
+ (0, vitest_1.it)('should not serve index.html for /docs routes', () => __awaiter(void 0, void 0, void 0, function* () {
83
+ yield (0, start_web_server_js_1.startWebServer)();
84
+ const response = yield (0, supertest_1.default)(serverUrl).get('/docs');
85
+ (0, vitest_1.expect)(response.text).toContain('Swagger UI');
86
+ }));
87
+ (0, vitest_1.it)('should include rate limit headers', () => __awaiter(void 0, void 0, void 0, function* () {
88
+ yield (0, start_web_server_js_1.startWebServer)();
89
+ const response = yield (0, supertest_1.default)(serverUrl).get('/');
90
+ (0, vitest_1.expect)(response.headers['x-ratelimit-limit']).toBeDefined();
91
+ (0, vitest_1.expect)(response.headers['x-ratelimit-remaining']).toBeDefined();
92
+ }));
93
+ (0, vitest_1.it)('should handle concurrent requests', () => __awaiter(void 0, void 0, void 0, function* () {
94
+ yield (0, start_web_server_js_1.startWebServer)();
95
+ const requests = Array(50)
96
+ .fill(null)
97
+ .map(() => (0, supertest_1.default)(serverUrl).get('/'));
98
+ const responses = yield Promise.all(requests);
99
+ const successfulResponses = responses.filter((r) => r.status === 200);
100
+ (0, vitest_1.expect)(successfulResponses.length).toBe(50);
101
+ }));
102
+ (0, vitest_1.it)('should shutdown gracefully', () => __awaiter(void 0, void 0, void 0, function* () {
103
+ yield (0, start_web_server_js_1.startWebServer)();
104
+ yield new Promise((resolve) => setTimeout(resolve, 500));
105
+ let response = yield (0, supertest_1.default)(serverUrl).get('/');
106
+ (0, vitest_1.expect)(response.status).toBe(200);
107
+ yield (0, start_web_server_js_1.shutdownWebServer)();
108
+ yield new Promise((resolve) => setTimeout(resolve, 500));
109
+ try {
110
+ response = yield (0, supertest_1.default)(serverUrl).get('/');
111
+ (0, vitest_1.expect)(response.status).not.toBe(200);
112
+ }
113
+ catch (err) {
114
+ (0, vitest_1.expect)(err).toBeDefined();
115
+ }
116
+ }));
117
+ });
118
+ //# sourceMappingURL=test00001.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test00001.test.js","sourceRoot":"","sources":["../../../../tests/tests/test00001.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=test00002.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test00002.test.d.ts","sourceRoot":"","sources":["../../../../tests/tests/test00002.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,68 @@
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
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ const vitest_1 = require("vitest");
16
+ const supertest_1 = __importDefault(require("supertest"));
17
+ const start_api_server_js_1 = require("../common/start-api-server.js");
18
+ const index_js_1 = require("../../index.js");
19
+ const config_js_1 = require("../common/config.js");
20
+ const redis_smq_common_1 = require("redis-smq-common");
21
+ (0, vitest_1.describe)('RedisSMQWebServer with apiProxyTarget', () => {
22
+ let webServerUrl;
23
+ let webServer;
24
+ (0, vitest_1.beforeEach)(() => __awaiter(void 0, void 0, void 0, function* () {
25
+ const apiPort = yield (0, start_api_server_js_1.startApiServer)();
26
+ const apiProxyTarget = `http://127.0.0.1:${apiPort}`;
27
+ const webServerPort = yield redis_smq_common_1.net.getRandomPort();
28
+ webServer = new index_js_1.RedisSMQWebServer(Object.assign(Object.assign({}, config_js_1.config), { webServer: {
29
+ port: webServerPort,
30
+ apiProxyTarget,
31
+ } }));
32
+ yield webServer.run();
33
+ webServerUrl = `http://127.0.0.1:${webServerPort}`;
34
+ }));
35
+ (0, vitest_1.afterEach)(() => __awaiter(void 0, void 0, void 0, function* () {
36
+ yield webServer.shutdown();
37
+ yield (0, start_api_server_js_1.stopApiServer)();
38
+ }));
39
+ (0, vitest_1.it)('proxies /api/v1 endpoints', () => __awaiter(void 0, void 0, void 0, function* () {
40
+ yield (0, supertest_1.default)(webServerUrl)
41
+ .get('/api/v1/queues')
42
+ .expect(200)
43
+ .expect('Content-Type', /application\/json/);
44
+ }));
45
+ (0, vitest_1.it)('proxies /docs', () => __awaiter(void 0, void 0, void 0, function* () {
46
+ const res = yield (0, supertest_1.default)(webServerUrl).get('/docs').expect(200);
47
+ (0, vitest_1.expect)(res.text).toContain('Swagger UI');
48
+ }));
49
+ (0, vitest_1.it)('serves SPA index.html for non-API routes', () => __awaiter(void 0, void 0, void 0, function* () {
50
+ const res = yield (0, supertest_1.default)(webServerUrl)
51
+ .get('/queues/my-queue')
52
+ .expect(200)
53
+ .expect('Content-Type', /text\/html/);
54
+ (0, vitest_1.expect)(res.text).toContain('<!doctype html>');
55
+ }));
56
+ (0, vitest_1.it)('serves assets as static files', () => __awaiter(void 0, void 0, void 0, function* () {
57
+ const res = yield (0, supertest_1.default)(webServerUrl).get('/').expect(200);
58
+ const match = res.text.match(/<script[^>]+src=["']([^"']+)["']/i);
59
+ (0, vitest_1.expect)(match).toBeTruthy();
60
+ const scriptSrc = (match === null || match === void 0 ? void 0 : match[1]) || '';
61
+ const assetPath = scriptSrc.startsWith('http')
62
+ ? scriptSrc.replace(webServerUrl, '')
63
+ : scriptSrc;
64
+ const assetRes = yield (0, supertest_1.default)(webServerUrl).get(assetPath).expect(200);
65
+ (0, vitest_1.expect)(assetRes.headers['cache-control']).toBeDefined();
66
+ }));
67
+ });
68
+ //# sourceMappingURL=test00002.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test00002.test.js","sourceRoot":"","sources":["../../../../tests/tests/test00002.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=test00003.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test00003.test.d.ts","sourceRoot":"","sources":["../../../../tests/tests/test00003.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,117 @@
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
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ const vitest_1 = require("vitest");
16
+ const supertest_1 = __importDefault(require("supertest"));
17
+ const start_api_server_js_1 = require("../common/start-api-server.js");
18
+ const start_cli_js_1 = require("../common/start-cli.js");
19
+ (0, vitest_1.describe)('RedisSMQ Web Server CLI e2e tests', () => {
20
+ (0, vitest_1.describe)('serves SPA with default basePath "/"', () => {
21
+ let started;
22
+ (0, vitest_1.beforeAll)(() => __awaiter(void 0, void 0, void 0, function* () {
23
+ started = yield (0, start_cli_js_1.startCliWithArgs)([
24
+ '--base-path',
25
+ '/',
26
+ '--enable-log',
27
+ '0',
28
+ ]);
29
+ }));
30
+ (0, vitest_1.afterAll)(() => __awaiter(void 0, void 0, void 0, function* () {
31
+ yield started.stop();
32
+ }));
33
+ (0, vitest_1.it)('returns index.html for / and caches assets', () => __awaiter(void 0, void 0, void 0, function* () {
34
+ var _a;
35
+ const res = yield (0, supertest_1.default)(started.url).get('/index.html').expect(200);
36
+ (0, vitest_1.expect)(res.headers['content-type']).toMatch(/text\/html/);
37
+ (0, vitest_1.expect)(res.headers['cache-control']).toMatch(/no-cache/);
38
+ const match = res.text.match(/<script[^>]+src=["']([^"']+)["']/i);
39
+ (0, vitest_1.expect)(match).toBeTruthy();
40
+ const scriptSrc = (_a = match === null || match === void 0 ? void 0 : match[1]) !== null && _a !== void 0 ? _a : '';
41
+ const assetPath = scriptSrc.startsWith('http')
42
+ ? scriptSrc.replace(started.url, '')
43
+ : scriptSrc;
44
+ const assetRes = yield (0, supertest_1.default)(started.url).get(assetPath).expect(200);
45
+ (0, vitest_1.expect)(assetRes.headers['cache-control']).toBeDefined();
46
+ (0, vitest_1.expect)(assetRes.headers['cache-control']).toMatch(/max-age=\d+/);
47
+ }));
48
+ (0, vitest_1.it)('SPA fallback works on non-API route', () => __awaiter(void 0, void 0, void 0, function* () {
49
+ const res = yield (0, supertest_1.default)(started.url).get('/queues/demo').expect(200);
50
+ (0, vitest_1.expect)(res.headers['content-type']).toMatch(/text\/html/);
51
+ }));
52
+ });
53
+ (0, vitest_1.describe)('respects custom basePath "/ui"', () => {
54
+ let started;
55
+ (0, vitest_1.beforeAll)(() => __awaiter(void 0, void 0, void 0, function* () {
56
+ started = yield (0, start_cli_js_1.startCliWithArgs)([
57
+ '--base-path',
58
+ '/ui',
59
+ '--enable-log',
60
+ '0',
61
+ ]);
62
+ }));
63
+ (0, vitest_1.afterAll)(() => __awaiter(void 0, void 0, void 0, function* () {
64
+ yield started.stop();
65
+ }));
66
+ (0, vitest_1.it)('redirects "/" to "/ui"', () => __awaiter(void 0, void 0, void 0, function* () {
67
+ const res = yield (0, supertest_1.default)(started.url).get('/').expect(302);
68
+ (0, vitest_1.expect)(res.headers.location).toBe('/ui');
69
+ }));
70
+ (0, vitest_1.it)('serves index.html at "/ui" and SPA fallback under it', () => __awaiter(void 0, void 0, void 0, function* () {
71
+ const res = yield (0, supertest_1.default)(started.url).get('/ui').expect(200);
72
+ (0, vitest_1.expect)(res.headers['content-type']).toMatch(/text\/html/);
73
+ const sub = yield (0, supertest_1.default)(started.url).get('/ui/queues').expect(200);
74
+ (0, vitest_1.expect)(sub.headers['content-type']).toMatch(/text\/html/);
75
+ }));
76
+ (0, vitest_1.it)('serves api requests under custom basePath', () => __awaiter(void 0, void 0, void 0, function* () {
77
+ yield (0, supertest_1.default)(started.url)
78
+ .get('/ui/api/v1/queues')
79
+ .expect((r) => {
80
+ (0, vitest_1.expect)(r.headers['content-type']).not.toMatch(/text\/html/);
81
+ });
82
+ }));
83
+ });
84
+ (0, vitest_1.describe)('proxies API when apiProxyTarget is set', () => {
85
+ let started;
86
+ (0, vitest_1.beforeAll)(() => __awaiter(void 0, void 0, void 0, function* () {
87
+ const port = yield (0, start_api_server_js_1.startApiServer)();
88
+ started = yield (0, start_cli_js_1.startCliWithArgs)([
89
+ '--base-path',
90
+ '/',
91
+ '--api-proxy-target',
92
+ `http://127.0.0.1:${port}`,
93
+ '--enable-log',
94
+ '0',
95
+ ]);
96
+ }));
97
+ (0, vitest_1.afterAll)(() => __awaiter(void 0, void 0, void 0, function* () {
98
+ yield started.stop();
99
+ yield (0, start_api_server_js_1.stopApiServer)();
100
+ }));
101
+ (0, vitest_1.it)('proxies /api/v1 endpoints', () => __awaiter(void 0, void 0, void 0, function* () {
102
+ yield (0, supertest_1.default)(started.url)
103
+ .get('/api/v1/queues')
104
+ .expect(200)
105
+ .expect('Content-Type', /application\/json/);
106
+ }));
107
+ (0, vitest_1.it)('proxies /docs', () => __awaiter(void 0, void 0, void 0, function* () {
108
+ const res = yield (0, supertest_1.default)(started.url).get('/docs').expect(200);
109
+ (0, vitest_1.expect)(res.text).toMatch(/<html|<!doctype/i);
110
+ }));
111
+ (0, vitest_1.it)('keeps SPA behavior for non-API routes', () => __awaiter(void 0, void 0, void 0, function* () {
112
+ const res = yield (0, supertest_1.default)(started.url).get('/about').expect(200);
113
+ (0, vitest_1.expect)(res.headers['content-type']).toMatch(/text\/html/);
114
+ }));
115
+ });
116
+ });
117
+ //# sourceMappingURL=test00003.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test00003.test.js","sourceRoot":"","sources":["../../../../tests/tests/test00003.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,3 @@
1
+ #!/usr/bin/env node
1
2
  export {};
2
3
  //# sourceMappingURL=cli.d.ts.map
@@ -1,19 +1,53 @@
1
+ #!/usr/bin/env node
1
2
  import { Command } from 'commander';
2
3
  import { RedisSMQWebServer } from '../src/index.js';
3
4
  import { defaultConfig } from '../src/config/parse-config.js';
5
+ import { EConsoleLoggerLevel } from 'redis-smq-common';
6
+ import { defaultConfig as defaultRedisSMQConfig } from 'redis-smq';
7
+ const defaultLogLevel = typeof defaultRedisSMQConfig.logger.options.logLevel === 'number'
8
+ ? defaultRedisSMQConfig.logger.options.logLevel
9
+ : EConsoleLoggerLevel[defaultRedisSMQConfig.logger.options.logLevel];
4
10
  const program = new Command();
5
11
  program
6
12
  .name('redis-smq-web-server')
7
13
  .description('Web server for RedisSMQ Web UI');
8
14
  program
9
- .option('-p, --port <port>', 'Port to run the server on', String(defaultConfig.port))
10
- .option('-B, --base-path <basePath>', 'base public path for the RedisSMQ Web UI SPA', String(defaultConfig.basePath))
11
- .option('-H, --redis-host <redisHost>', 'Redis server host', defaultConfig.redisHost)
12
- .option('-P, --redis-port <redisPort>', 'Redis server port', String(defaultConfig.redisPort))
13
- .option('-D, --redis-db <redisDB>', 'Redis database number', String(defaultConfig.redisDB))
14
- .option('-x, --api-proxy-target <url>', 'Proxy target for API (/api, /docs, /assets). Example: http://127.0.0.1:7210', defaultConfig.apiProxyTarget);
15
+ .option('-p, --port <number>', 'Port to run the server on', String(defaultConfig.webServer?.port))
16
+ .option('-b, --base-path <string>', 'Base public path for the RedisSMQ Web UI SPA', defaultConfig.webServer?.basePath)
17
+ .option('-t, --api-proxy-target <string>', 'Proxy target for API (/api, /docs, /assets). Example: http://127.0.0.1:6000', defaultConfig.webServer?.apiProxyTarget)
18
+ .option('-c, --redis-client <ioredis|redis>', 'Redis client. Valid options are: ioredis, redis.', defaultRedisSMQConfig.redis.client)
19
+ .option('-r, --redis-host <string>', 'Redis server host', defaultRedisSMQConfig.redis.options.host)
20
+ .option('-o, --redis-port <number>', 'Redis server port', String(defaultRedisSMQConfig.redis.options.port))
21
+ .option('-d, --redis-db <number>', 'Redis database number', String(defaultRedisSMQConfig.redis.options.db))
22
+ .option('-e, --enable-log <0|1>', 'Enable console logging. Valid options are: 0, 1', String(Number(defaultRedisSMQConfig.logger.enabled)))
23
+ .option('-v, --log-level <0|1|2|3>', `Log level. Numbers: ${EConsoleLoggerLevel.DEBUG}=DEBUG, ${EConsoleLoggerLevel.INFO}=INFO, ${EConsoleLoggerLevel.WARN}=WARN, ${EConsoleLoggerLevel.ERROR}=ERROR`, String(defaultLogLevel));
15
24
  program.parse();
16
25
  const options = program.opts();
17
- const server = new RedisSMQWebServer(options);
26
+ const config = {
27
+ webServer: {
28
+ port: Number(options.port),
29
+ basePath: options.basePath,
30
+ apiProxyTarget: options.apiProxyTarget,
31
+ },
32
+ apiServer: {
33
+ port: Number(options.port),
34
+ basePath: options.basePath,
35
+ },
36
+ redis: {
37
+ client: options.redisClient,
38
+ options: {
39
+ host: options.redisHost,
40
+ port: Number(options.redisPort),
41
+ db: Number(options.redisDb),
42
+ },
43
+ },
44
+ logger: {
45
+ enabled: Boolean(Number(options.enableLog)),
46
+ options: {
47
+ logLevel: Number(options.logLevel),
48
+ },
49
+ },
50
+ };
51
+ const server = new RedisSMQWebServer(config);
18
52
  server.run();
19
53
  //# sourceMappingURL=cli.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../../bin/cli.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAE9D,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,sBAAsB,CAAC;KAC5B,WAAW,CAAC,gCAAgC,CAAC,CAAC;AAEjD,OAAO;KACJ,MAAM,CACL,mBAAmB,EACnB,2BAA2B,EAC3B,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAC3B;KACA,MAAM,CACL,4BAA4B,EAC5B,8CAA8C,EAC9C,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,CAC/B;KACA,MAAM,CACL,8BAA8B,EAC9B,mBAAmB,EACnB,aAAa,CAAC,SAAS,CACxB;KACA,MAAM,CACL,8BAA8B,EAC9B,mBAAmB,EACnB,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC,CAChC;KACA,MAAM,CACL,0BAA0B,EAC1B,uBAAuB,EACvB,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,CAC9B;KACA,MAAM,CACL,8BAA8B,EAC9B,6EAA6E,EAC7E,aAAa,CAAC,cAAc,CAC7B,CAAC;AAEJ,OAAO,CAAC,KAAK,EAAE,CAAC;AAEhB,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;AAC/B,MAAM,MAAM,GAAG,IAAI,iBAAiB,CAAC,OAAO,CAAC,CAAC;AAC9C,MAAM,CAAC,GAAG,EAAE,CAAC"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../../bin/cli.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"parse-config.d.ts","sourceRoot":"","sources":["../../../../src/config/parse-config.ts"],"names":[],"mappings":"AASA,OAAO,EACL,wBAAwB,EACxB,8BAA8B,EAC/B,MAAM,kBAAkB,CAAC;AAG1B,eAAO,MAAM,aAAa,EAAE,wBAO3B,CAAC;AAEF,wBAAgB,WAAW,CACzB,MAAM,GAAE,OAAO,CAAC,wBAAwB,CAAM,GAC7C,8BAA8B,CA2BhC"}
1
+ {"version":3,"file":"parse-config.d.ts","sourceRoot":"","sources":["../../../../src/config/parse-config.ts"],"names":[],"mappings":"AASA,OAAO,EACL,wBAAwB,EACxB,8BAA8B,EAC/B,MAAM,kBAAkB,CAAC;AAG1B,eAAO,MAAM,aAAa,EAAE,wBAM3B,CAAC;AAMF,wBAAgB,WAAW,CACzB,MAAM,GAAE,OAAO,CAAC,wBAAwB,CAAM,GAC7C,8BAA8B,CAkBhC"}
@@ -1,36 +1,26 @@
1
- import { ERedisConfigClient } from 'redis-smq-common';
1
+ import { parseConfig as parseRestApiConfig } from 'redis-smq-rest-api';
2
2
  export const defaultConfig = {
3
- port: 8080,
4
- basePath: '/',
5
- redisPort: 6379,
6
- redisHost: '127.0.0.1',
7
- redisDB: 1,
8
- apiProxyTarget: undefined,
3
+ webServer: {
4
+ port: 8080,
5
+ basePath: '/',
6
+ apiProxyTarget: undefined,
7
+ },
9
8
  };
10
9
  export function parseConfig(config = {}) {
11
- const cfg = {
12
- ...defaultConfig,
13
- ...config,
14
- };
15
- const webServerCfg = {
16
- port: cfg.port,
17
- basePath: cfg.basePath,
18
- apiProxyTarget: cfg.apiProxyTarget,
10
+ const restApiParsedConfig = parseRestApiConfig(config);
11
+ const webServer = {
12
+ ...defaultConfig.webServer,
13
+ ...config.webServer,
19
14
  };
15
+ const basePath = String(webServer.basePath).replace(/\/+$/, '') || '/';
20
16
  return {
21
- redis: {
22
- client: ERedisConfigClient.IOREDIS,
23
- options: {
24
- port: cfg.redisPort,
25
- host: cfg.redisHost,
26
- db: cfg.redisDB,
27
- showFriendlyErrorStack: true,
28
- },
29
- },
30
- webServer: webServerCfg,
31
- apiServer: {
32
- port: cfg.port,
33
- basePath: cfg.basePath,
17
+ ...restApiParsedConfig,
18
+ webServer: {
19
+ port: Number(webServer.port),
20
+ basePath,
21
+ apiProxyTarget: webServer.apiProxyTarget
22
+ ? String(webServer.apiProxyTarget)
23
+ : undefined,
34
24
  },
35
25
  };
36
26
  }
@@ -1 +1 @@
1
- {"version":3,"file":"parse-config.js","sourceRoot":"","sources":["../../../../src/config/parse-config.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAEtD,MAAM,CAAC,MAAM,aAAa,GAA6B;IACrD,IAAI,EAAE,IAAI;IACV,QAAQ,EAAE,GAAG;IACb,SAAS,EAAE,IAAI;IACf,SAAS,EAAE,WAAW;IACtB,OAAO,EAAE,CAAC;IACV,cAAc,EAAE,SAAS;CAC1B,CAAC;AAEF,MAAM,UAAU,WAAW,CACzB,SAA4C,EAAE;IAE9C,MAAM,GAAG,GAA6B;QACpC,GAAG,aAAa;QAChB,GAAG,MAAM;KACV,CAAC;IACF,MAAM,YAAY,GAAG;QACnB,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,QAAQ,EAAE,GAAG,CAAC,QAAQ;QACtB,cAAc,EAAE,GAAG,CAAC,cAAc;KACnC,CAAC;IACF,OAAO;QACL,KAAK,EAAE;YACL,MAAM,EAAE,kBAAkB,CAAC,OAAO;YAClC,OAAO,EAAE;gBACP,IAAI,EAAE,GAAG,CAAC,SAAS;gBACnB,IAAI,EAAE,GAAG,CAAC,SAAS;gBACnB,EAAE,EAAE,GAAG,CAAC,OAAO;gBACf,sBAAsB,EAAE,IAAI;aAC7B;SACF;QACD,SAAS,EAAE,YAAY;QAEvB,SAAS,EAAE;YACT,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,QAAQ,EAAE,GAAG,CAAC,QAAQ;SACvB;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"parse-config.js","sourceRoot":"","sources":["../../../../src/config/parse-config.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,WAAW,IAAI,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAEvE,MAAM,CAAC,MAAM,aAAa,GAA6B;IACrD,SAAS,EAAE;QACT,IAAI,EAAE,IAAI;QACV,QAAQ,EAAE,GAAG;QACb,cAAc,EAAE,SAAS;KAC1B;CACF,CAAC;AAMF,MAAM,UAAU,WAAW,CACzB,SAA4C,EAAE;IAE9C,MAAM,mBAAmB,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;IACvD,MAAM,SAAS,GAAG;QAChB,GAAG,aAAa,CAAC,SAAS;QAC1B,GAAG,MAAM,CAAC,SAAS;KACpB,CAAC;IAEF,MAAM,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC;IACvE,OAAO;QACL,GAAG,mBAAmB;QACtB,SAAS,EAAE;YACT,IAAI,EAAE,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC;YAC5B,QAAQ;YACR,cAAc,EAAE,SAAS,CAAC,cAAc;gBACtC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC;gBAClC,CAAC,CAAC,SAAS;SACd;KACF,CAAC;AACJ,CAAC"}
@@ -1,12 +1,23 @@
1
- import { IRedisSMQRestApiParsedConfig } from 'redis-smq-rest-api';
2
- export interface IRedisSMQWebServerConfig {
3
- port: number;
1
+ import { IRedisSMQRestApiConfig, IRedisSMQRestApiParsedConfig } from 'redis-smq-rest-api';
2
+ import { EConsoleLoggerLevel, ERedisConfigClient } from 'redis-smq-common';
3
+ export interface IRedisSMQWebServerCliOptions {
4
+ port: string;
4
5
  basePath: string;
5
- redisPort: number;
6
+ redisClient: ERedisConfigClient;
7
+ redisPort: string;
6
8
  redisHost: string;
7
- redisDB: number;
9
+ redisDb: string;
10
+ enableLog: string;
11
+ logLevel: EConsoleLoggerLevel;
8
12
  apiProxyTarget?: string;
9
13
  }
14
+ export interface IRedisSMQWebServerConfig extends IRedisSMQRestApiConfig {
15
+ webServer?: {
16
+ port?: number;
17
+ basePath?: string;
18
+ apiProxyTarget?: string;
19
+ };
20
+ }
10
21
  export interface IRedisSMQWebServerParsedConfig extends IRedisSMQRestApiParsedConfig {
11
22
  webServer: {
12
23
  port: number;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/config/types/index.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,4BAA4B,EAAE,MAAM,oBAAoB,CAAC;AAElE,MAAM,WAAW,wBAAwB;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAKhB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,8BACf,SAAQ,4BAA4B;IACpC,SAAS,EAAE;QACT,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,EAAE,MAAM,CAAC;QAKjB,cAAc,CAAC,EAAE,MAAM,CAAC;KACzB,CAAC;CACH"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/config/types/index.ts"],"names":[],"mappings":"AASA,OAAO,EACL,sBAAsB,EACtB,4BAA4B,EAC7B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAE3E,MAAM,WAAW,4BAA4B;IAC3C,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,kBAAkB,CAAC;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,mBAAmB,CAAC;IAC9B,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,wBAAyB,SAAQ,sBAAsB;IACtE,SAAS,CAAC,EAAE;QACV,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,QAAQ,CAAC,EAAE,MAAM,CAAC;QAKlB,cAAc,CAAC,EAAE,MAAM,CAAC;KACzB,CAAC;CACH;AAED,MAAM,WAAW,8BACf,SAAQ,4BAA4B;IACpC,SAAS,EAAE;QACT,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,EAAE,MAAM,CAAC;QAKjB,cAAc,CAAC,EAAE,MAAM,CAAC;KACzB,CAAC;CACH"}
@@ -1,4 +1,5 @@
1
1
  import { IRedisSMQWebServerConfig } from './config/types/index.js';
2
+ import { ILogger } from 'redis-smq-common';
2
3
  export declare class RedisSMQWebServer {
3
4
  private readonly app;
4
5
  private readonly config;
@@ -8,9 +9,11 @@ export declare class RedisSMQWebServer {
8
9
  private restApi;
9
10
  private bootstrapped;
10
11
  private httpServer;
11
- constructor(config?: Partial<IRedisSMQWebServerConfig>);
12
+ protected logger: ILogger;
13
+ constructor(config?: IRedisSMQWebServerConfig);
12
14
  private setupMiddleware;
13
15
  private setupApi;
16
+ private sendIndexHtml;
14
17
  private setupRoutes;
15
18
  private bootstrap;
16
19
  run(): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAcA,OAAO,EACL,wBAAwB,EAEzB,MAAM,yBAAyB,CAAC;AAMjC,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAa;IACjC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAiC;IACxD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAuB;IACnD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAuB;IACtD,OAAO,CAAC,OAAO,CAAgC;IAC/C,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,UAAU,CAA4B;gBAElC,MAAM,GAAE,OAAO,CAAC,wBAAwB,CAAM;YAW5C,eAAe;YAsBf,QAAQ;YAuBR,WAAW;YAoCX,SAAS;IAQV,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;IAcpB,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;CAmBvC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAcA,OAAO,EACL,wBAAwB,EAEzB,MAAM,yBAAyB,CAAC;AAKjC,OAAO,EAAgB,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAOzD,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAa;IACjC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAiC;IACxD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAuB;IACnD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAuB;IACtD,OAAO,CAAC,OAAO,CAAgC;IAC/C,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,UAAU,CAA4B;IAC9C,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC;gBAEd,MAAM,GAAE,wBAA6B;YAYnC,eAAe;YA4Bf,QAAQ;IAyCtB,OAAO,CAAC,aAAa;YAeP,WAAW;YA8BX,SAAS;IAWV,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;IAepB,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;CAmBvC"}