@conduitplatform/module-tools 0.16.0-alpha.7

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 (91) hide show
  1. package/README.mdx +18 -0
  2. package/dist/ManagedModule.d.ts +79 -0
  3. package/dist/ManagedModule.js +433 -0
  4. package/dist/ManagedModule.js.map +1 -0
  5. package/dist/classes/ConduitActiveSchema.d.ts +16 -0
  6. package/dist/classes/ConduitActiveSchema.js +57 -0
  7. package/dist/classes/ConduitActiveSchema.js.map +1 -0
  8. package/dist/classes/ConduitServiceModule.d.ts +26 -0
  9. package/dist/classes/ConduitServiceModule.js +184 -0
  10. package/dist/classes/ConduitServiceModule.js.map +1 -0
  11. package/dist/classes/ConfigController.d.ts +7 -0
  12. package/dist/classes/ConfigController.js +27 -0
  13. package/dist/classes/ConfigController.js.map +1 -0
  14. package/dist/classes/GrpcServer.d.ts +22 -0
  15. package/dist/classes/GrpcServer.js +207 -0
  16. package/dist/classes/GrpcServer.js.map +1 -0
  17. package/dist/classes/index.d.ts +4 -0
  18. package/dist/classes/index.js +21 -0
  19. package/dist/classes/index.js.map +1 -0
  20. package/dist/grpc_health_check.proto +21 -0
  21. package/dist/helpers/GrpcHelper.d.ts +8 -0
  22. package/dist/helpers/GrpcHelper.js +43 -0
  23. package/dist/helpers/GrpcHelper.js.map +1 -0
  24. package/dist/helpers/TypeHelpers.d.ts +44 -0
  25. package/dist/helpers/TypeHelpers.js +144 -0
  26. package/dist/helpers/TypeHelpers.js.map +1 -0
  27. package/dist/helpers/index.d.ts +3 -0
  28. package/dist/helpers/index.js +20 -0
  29. package/dist/helpers/index.js.map +1 -0
  30. package/dist/helpers/wrapGrpcFunctions.d.ts +5 -0
  31. package/dist/helpers/wrapGrpcFunctions.js +56 -0
  32. package/dist/helpers/wrapGrpcFunctions.js.map +1 -0
  33. package/dist/index.d.ts +6 -0
  34. package/dist/index.js +23 -0
  35. package/dist/index.js.map +1 -0
  36. package/dist/interfaces/ConduitService.d.ts +8 -0
  37. package/dist/interfaces/ConduitService.js +3 -0
  38. package/dist/interfaces/ConduitService.js.map +1 -0
  39. package/dist/interfaces/index.d.ts +1 -0
  40. package/dist/interfaces/index.js +18 -0
  41. package/dist/interfaces/index.js.map +1 -0
  42. package/dist/logging/index.d.ts +16 -0
  43. package/dist/logging/index.js +255 -0
  44. package/dist/logging/index.js.map +1 -0
  45. package/dist/metrics/MetricsServer.d.ts +9 -0
  46. package/dist/metrics/MetricsServer.js +94 -0
  47. package/dist/metrics/MetricsServer.js.map +1 -0
  48. package/dist/metrics/clientMiddleware.d.ts +2 -0
  49. package/dist/metrics/clientMiddleware.js +265 -0
  50. package/dist/metrics/clientMiddleware.js.map +1 -0
  51. package/dist/metrics/config/defaults.d.ts +91 -0
  52. package/dist/metrics/config/defaults.js +93 -0
  53. package/dist/metrics/config/defaults.js.map +1 -0
  54. package/dist/metrics/index.d.ts +22 -0
  55. package/dist/metrics/index.js +152 -0
  56. package/dist/metrics/index.js.map +1 -0
  57. package/dist/module.proto +14 -0
  58. package/dist/routing/ProxyRouteBuilder.d.ts +21 -0
  59. package/dist/routing/ProxyRouteBuilder.js +81 -0
  60. package/dist/routing/ProxyRouteBuilder.js.map +1 -0
  61. package/dist/routing/RouteBuilder.d.ts +23 -0
  62. package/dist/routing/RouteBuilder.js +107 -0
  63. package/dist/routing/RouteBuilder.js.map +1 -0
  64. package/dist/routing/RoutingManager.d.ts +32 -0
  65. package/dist/routing/RoutingManager.js +198 -0
  66. package/dist/routing/RoutingManager.js.map +1 -0
  67. package/dist/routing/RoutingUtilities.d.ts +7 -0
  68. package/dist/routing/RoutingUtilities.js +13 -0
  69. package/dist/routing/RoutingUtilities.js.map +1 -0
  70. package/dist/routing/index.d.ts +5 -0
  71. package/dist/routing/index.js +22 -0
  72. package/dist/routing/index.js.map +1 -0
  73. package/dist/routing/wrapRouterFunctions.d.ts +7 -0
  74. package/dist/routing/wrapRouterFunctions.js +136 -0
  75. package/dist/routing/wrapRouterFunctions.js.map +1 -0
  76. package/dist/utilities/convictConfigParser.d.ts +2 -0
  77. package/dist/utilities/convictConfigParser.js +18 -0
  78. package/dist/utilities/convictConfigParser.js.map +1 -0
  79. package/dist/utilities/index.d.ts +3 -0
  80. package/dist/utilities/index.js +20 -0
  81. package/dist/utilities/index.js.map +1 -0
  82. package/dist/utilities/initializeSdk.d.ts +2 -0
  83. package/dist/utilities/initializeSdk.js +64 -0
  84. package/dist/utilities/initializeSdk.js.map +1 -0
  85. package/dist/utilities/linearBackoffTimeout.d.ts +9 -0
  86. package/dist/utilities/linearBackoffTimeout.js +119 -0
  87. package/dist/utilities/linearBackoffTimeout.js.map +1 -0
  88. package/dist/utilities/merge.d.ts +1 -0
  89. package/dist/utilities/merge.js +15 -0
  90. package/dist/utilities/merge.js.map +1 -0
  91. package/package.json +57 -0
@@ -0,0 +1,152 @@
1
+ "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ var __values = (this && this.__values) || function(o) {
14
+ var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
15
+ if (m) return m.call(o);
16
+ if (o && typeof o.length === "number") return {
17
+ next: function () {
18
+ if (o && i >= o.length) o = void 0;
19
+ return { value: o && o[i++], done: !o };
20
+ }
21
+ };
22
+ throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
23
+ };
24
+ var __importDefault = (this && this.__importDefault) || function (mod) {
25
+ return (mod && mod.__esModule) ? mod : { "default": mod };
26
+ };
27
+ Object.defineProperty(exports, "__esModule", { value: true });
28
+ exports.ConduitMetrics = void 0;
29
+ var prom_client_1 = require("prom-client");
30
+ var MetricsServer_1 = require("./MetricsServer");
31
+ var defaults_1 = __importDefault(require("./config/defaults"));
32
+ var grpc_sdk_1 = require("@conduitplatform/grpc-sdk");
33
+ var ConduitMetrics = /** @class */ (function () {
34
+ function ConduitMetrics(moduleName, instance) {
35
+ this.moduleName = moduleName;
36
+ this.instance = instance;
37
+ this._registry = new prom_client_1.Registry();
38
+ this._registry.setDefaultLabels({
39
+ module_name: this.moduleName,
40
+ module_instance: this.instance,
41
+ });
42
+ this.collectDefaultMetrics();
43
+ this._httpServer = new MetricsServer_1.MetricsServer(moduleName, instance, this._registry);
44
+ this._httpServer.initialize();
45
+ }
46
+ ConduitMetrics.prototype.initializeDefaultMetrics = function () {
47
+ var e_1, _a;
48
+ try {
49
+ for (var _b = __values(Object.values(defaults_1.default)), _c = _b.next(); !_c.done; _c = _b.next()) {
50
+ var metric = _c.value;
51
+ this.registerMetric(metric.type, metric.config);
52
+ }
53
+ }
54
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
55
+ finally {
56
+ try {
57
+ if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
58
+ }
59
+ finally { if (e_1) throw e_1.error; }
60
+ }
61
+ };
62
+ ConduitMetrics.prototype.registerMetric = function (type, config) {
63
+ if (this.getMetric(config.name))
64
+ return;
65
+ var metricConfig = JSON.parse(JSON.stringify(config));
66
+ metricConfig.name = this.addPrefix(config.name);
67
+ switch (type) {
68
+ case grpc_sdk_1.MetricType.Counter:
69
+ this.createCounter(metricConfig);
70
+ break;
71
+ case grpc_sdk_1.MetricType.Gauge:
72
+ this.createGauge(metricConfig);
73
+ break;
74
+ case grpc_sdk_1.MetricType.Histogram:
75
+ this.createHistogram(metricConfig);
76
+ break;
77
+ case grpc_sdk_1.MetricType.Summary:
78
+ this.createSummary(metricConfig);
79
+ break;
80
+ }
81
+ };
82
+ ConduitMetrics.prototype.collectDefaultMetrics = function () {
83
+ (0, prom_client_1.collectDefaultMetrics)({
84
+ register: this._registry,
85
+ prefix: 'conduit_',
86
+ // probably not needed
87
+ labels: {
88
+ module_name: this.moduleName,
89
+ instance_instance: this.instance,
90
+ },
91
+ });
92
+ };
93
+ ConduitMetrics.prototype.createCounter = function (config) {
94
+ return new prom_client_1.Counter(__assign(__assign({}, config), { registers: [this._registry] }));
95
+ };
96
+ ConduitMetrics.prototype.createSummary = function (config) {
97
+ return new prom_client_1.Summary(__assign(__assign({}, config), { registers: [this._registry] }));
98
+ };
99
+ ConduitMetrics.prototype.createHistogram = function (config) {
100
+ return new prom_client_1.Histogram(__assign(__assign({}, config), { registers: [this._registry] }));
101
+ };
102
+ ConduitMetrics.prototype.createGauge = function (config) {
103
+ return new prom_client_1.Gauge(__assign(__assign({}, config), { registers: [this._registry] }));
104
+ };
105
+ ConduitMetrics.prototype.getMetric = function (name) {
106
+ return this._registry.getSingleMetric(this.addPrefix(name));
107
+ };
108
+ ConduitMetrics.prototype.increment = function (metric, increment, labels) {
109
+ if (increment === void 0) { increment = 1; }
110
+ var metricInstance = this._registry.getSingleMetric(this.addPrefix(metric));
111
+ if (!(metricInstance instanceof prom_client_1.Counter) && !(metricInstance instanceof prom_client_1.Gauge)) {
112
+ throw new Error("Metric ".concat(metric, " is not an incrementable metric"));
113
+ }
114
+ return labels
115
+ ? metricInstance.labels(__assign({}, labels)).inc(increment)
116
+ : metricInstance.inc(increment);
117
+ };
118
+ ConduitMetrics.prototype.decrement = function (metric, decrement, labels) {
119
+ if (decrement === void 0) { decrement = 1; }
120
+ var metricInstance = this._registry.getSingleMetric(this.addPrefix(metric));
121
+ if (!(metricInstance instanceof prom_client_1.Gauge)) {
122
+ throw new Error("Metric ".concat(metric, " is not a decrementable metric"));
123
+ }
124
+ return labels
125
+ ? metricInstance.labels(__assign({}, labels)).dec(decrement)
126
+ : metricInstance.dec(decrement);
127
+ };
128
+ ConduitMetrics.prototype.set = function (metric, value, labels) {
129
+ var metricInstance = this._registry.getSingleMetric(this.addPrefix(metric));
130
+ if (!(metricInstance instanceof prom_client_1.Gauge)) {
131
+ throw new Error("Metric ".concat(metric, " is not a Gauge"));
132
+ }
133
+ return labels
134
+ ? metricInstance.labels(__assign({}, labels)).set(value)
135
+ : metricInstance.set(value);
136
+ };
137
+ ConduitMetrics.prototype.observe = function (metric, value, labels) {
138
+ var metricInstance = this._registry.getSingleMetric(this.addPrefix(metric));
139
+ if (!(metricInstance instanceof prom_client_1.Histogram) && !(metricInstance instanceof prom_client_1.Summary)) {
140
+ throw new Error("Metric ".concat(metric, " is not a Histogram"));
141
+ }
142
+ return labels
143
+ ? metricInstance.labels(__assign({}, labels)).observe(value)
144
+ : metricInstance.observe(value);
145
+ };
146
+ ConduitMetrics.prototype.addPrefix = function (metric) {
147
+ return "conduit_".concat(metric);
148
+ };
149
+ return ConduitMetrics;
150
+ }());
151
+ exports.ConduitMetrics = ConduitMetrics;
152
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/metrics/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ syntax = "proto3";
2
+ package conduit.module.v1;
3
+
4
+ message SetConfigRequest {
5
+ string newConfig = 1;
6
+ }
7
+
8
+ message SetConfigResponse {
9
+ string updatedConfig = 1;
10
+ }
11
+
12
+ service ConduitModule {
13
+ rpc SetConfig(SetConfigRequest) returns (SetConfigResponse);
14
+ }
@@ -0,0 +1,21 @@
1
+ import { ProxyMiddlewareOptions, ProxyRouteActions, ProxyRouteOptions } from '@conduitplatform/grpc-sdk';
2
+ import { RoutingManager } from './RoutingManager';
3
+ export declare class ProxyRouteBuilder {
4
+ private readonly manager?;
5
+ private _options;
6
+ private _proxy;
7
+ constructor(manager?: RoutingManager | undefined);
8
+ method(action: ProxyRouteActions): ProxyRouteBuilder;
9
+ path(path: string): ProxyRouteBuilder;
10
+ target(target: string): ProxyRouteBuilder;
11
+ options(options: ProxyRouteOptions): ProxyRouteBuilder;
12
+ proxy(proxy: ProxyMiddlewareOptions): ProxyRouteBuilder;
13
+ middleware(middleware: string | string[], allowDuplicates?: boolean): ProxyRouteBuilder;
14
+ add(): void;
15
+ build(): {
16
+ input: {
17
+ options: ProxyRouteOptions;
18
+ proxy: ProxyMiddlewareOptions;
19
+ };
20
+ };
21
+ }
@@ -0,0 +1,81 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ProxyRouteBuilder = void 0;
4
+ var ProxyRouteBuilder = /** @class */ (function () {
5
+ function ProxyRouteBuilder(manager) {
6
+ this.manager = manager;
7
+ this._options = { path: '' };
8
+ this._proxy = { target: '' };
9
+ }
10
+ ProxyRouteBuilder.prototype.method = function (action) {
11
+ this._options.action = action;
12
+ return this;
13
+ };
14
+ ProxyRouteBuilder.prototype.path = function (path) {
15
+ this._options.path = path;
16
+ return this;
17
+ };
18
+ ProxyRouteBuilder.prototype.target = function (target) {
19
+ this._proxy.target = target;
20
+ return this;
21
+ };
22
+ ProxyRouteBuilder.prototype.options = function (options) {
23
+ this._options = options;
24
+ return this;
25
+ };
26
+ ProxyRouteBuilder.prototype.proxy = function (proxy) {
27
+ this._proxy = proxy;
28
+ return this;
29
+ };
30
+ ProxyRouteBuilder.prototype.middleware = function (middleware, allowDuplicates) {
31
+ var _this = this;
32
+ if (allowDuplicates === void 0) { allowDuplicates = false; }
33
+ if (!Array.isArray(middleware)) {
34
+ middleware = [middleware];
35
+ }
36
+ if (this._options.middlewares) {
37
+ if (allowDuplicates) {
38
+ this._options.middlewares = this._options.middlewares.concat(middleware);
39
+ }
40
+ else {
41
+ this._options.middlewares = this._options.middlewares.concat(middleware.filter(function (mid) { var _a; return ((_a = _this._options.middlewares) === null || _a === void 0 ? void 0 : _a.indexOf(mid)) === -1; }));
42
+ }
43
+ }
44
+ else {
45
+ this._options.middlewares = middleware;
46
+ }
47
+ return this;
48
+ };
49
+ ProxyRouteBuilder.prototype.add = function () {
50
+ if (!this.manager)
51
+ throw new Error('Builder not setup with manager');
52
+ if (!this._options.path)
53
+ throw new Error('Cannot build route without path');
54
+ if (!this._proxy.target)
55
+ throw new Error('Cannot build route without target');
56
+ var input = {
57
+ options: this._options,
58
+ proxy: this._proxy,
59
+ };
60
+ this.manager.proxyRoute(input);
61
+ };
62
+ ProxyRouteBuilder.prototype.build = function () {
63
+ if (!this.manager)
64
+ throw new Error('Builder not setup with manager');
65
+ if (!this._options.path)
66
+ throw new Error('Cannot build route without path');
67
+ if (!this._proxy.target)
68
+ throw new Error('Cannot build route without target');
69
+ if (!this._options.action)
70
+ throw new Error('Cannot build route without action');
71
+ return {
72
+ input: {
73
+ options: this._options,
74
+ proxy: this._proxy,
75
+ },
76
+ };
77
+ };
78
+ return ProxyRouteBuilder;
79
+ }());
80
+ exports.ProxyRouteBuilder = ProxyRouteBuilder;
81
+ //# sourceMappingURL=ProxyRouteBuilder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProxyRouteBuilder.js","sourceRoot":"","sources":["../../src/routing/ProxyRouteBuilder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ import { ConduitModel, ConduitRoute, ConduitRouteActions, ConduitRouteOption } from '@conduitplatform/grpc-sdk';
2
+ import { RoutingManager } from './RoutingManager';
3
+ import { RequestHandlers } from './wrapRouterFunctions';
4
+ export declare class RouteBuilder {
5
+ private readonly manager?;
6
+ private readonly _options;
7
+ private _returns;
8
+ private _handler;
9
+ constructor(manager?: RoutingManager | undefined);
10
+ method(action: ConduitRouteActions): RouteBuilder;
11
+ name(name: string): RouteBuilder;
12
+ description(description: string): RouteBuilder;
13
+ cacheControl(cache: string): RouteBuilder;
14
+ middleware(middleware: string | string[], allowDuplicates?: boolean): RouteBuilder;
15
+ path(path: string): RouteBuilder;
16
+ queryParams(params: ConduitRouteOption | ConduitModel): RouteBuilder;
17
+ urlParams(params: ConduitRouteOption | ConduitModel): RouteBuilder;
18
+ bodyParams(params: ConduitRouteOption | ConduitModel): RouteBuilder;
19
+ return(name: string, fields: ConduitModel | string): RouteBuilder;
20
+ handler(fn: RequestHandlers): RouteBuilder;
21
+ add(): void;
22
+ build(): ConduitRoute;
23
+ }
@@ -0,0 +1,107 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RouteBuilder = void 0;
4
+ var grpc_sdk_1 = require("@conduitplatform/grpc-sdk");
5
+ var RouteBuilder = /** @class */ (function () {
6
+ function RouteBuilder(manager) {
7
+ this.manager = manager;
8
+ this._options = {};
9
+ }
10
+ RouteBuilder.prototype.method = function (action) {
11
+ this._options.action = action;
12
+ return this;
13
+ };
14
+ RouteBuilder.prototype.name = function (name) {
15
+ this._options.name = name;
16
+ return this;
17
+ };
18
+ RouteBuilder.prototype.description = function (description) {
19
+ this._options.description = description;
20
+ return this;
21
+ };
22
+ RouteBuilder.prototype.cacheControl = function (cache) {
23
+ this._options.cacheControl = cache;
24
+ return this;
25
+ };
26
+ RouteBuilder.prototype.middleware = function (middleware, allowDuplicates) {
27
+ var _this = this;
28
+ var _a, _b, _c;
29
+ if (allowDuplicates === void 0) { allowDuplicates = false; }
30
+ if (!Array.isArray(middleware)) {
31
+ middleware = [middleware];
32
+ }
33
+ if (this._options.middlewares !== undefined &&
34
+ ((_a = this._options.middlewares) === null || _a === void 0 ? void 0 : _a.length) !== 0) {
35
+ if (allowDuplicates) {
36
+ this._options.middlewares = (_b = this._options.middlewares) === null || _b === void 0 ? void 0 : _b.concat(middleware);
37
+ }
38
+ else {
39
+ // add to existing middlewares and filter out potential duplicates
40
+ this._options.middlewares = (_c = this._options.middlewares) === null || _c === void 0 ? void 0 : _c.concat(middleware.filter(function (mid) { var _a; return ((_a = _this._options.middlewares) === null || _a === void 0 ? void 0 : _a.indexOf(mid)) === -1; }));
41
+ }
42
+ }
43
+ else {
44
+ this._options.middlewares = middleware;
45
+ }
46
+ return this;
47
+ };
48
+ RouteBuilder.prototype.path = function (path) {
49
+ this._options.path = path;
50
+ return this;
51
+ };
52
+ RouteBuilder.prototype.queryParams = function (params) {
53
+ this._options.queryParams = params;
54
+ return this;
55
+ };
56
+ RouteBuilder.prototype.urlParams = function (params) {
57
+ this._options.urlParams = params;
58
+ return this;
59
+ };
60
+ RouteBuilder.prototype.bodyParams = function (params) {
61
+ this._options.bodyParams = params;
62
+ return this;
63
+ };
64
+ RouteBuilder.prototype.return = function (name, fields) {
65
+ this._returns = new grpc_sdk_1.ConduitRouteReturnDefinition(name, fields);
66
+ return this;
67
+ };
68
+ RouteBuilder.prototype.handler = function (fn) {
69
+ this._handler = fn;
70
+ return this;
71
+ };
72
+ RouteBuilder.prototype.add = function () {
73
+ if (!this.manager)
74
+ throw new Error('Builder not setup with manager');
75
+ if (!this._options)
76
+ throw new Error('Cannot build route without options');
77
+ if (!this._options.action)
78
+ throw new Error('Cannot build route without action');
79
+ if (!this._options.path)
80
+ throw new Error('Cannot build route without action');
81
+ if (!this._returns)
82
+ throw new Error('Cannot build route without return');
83
+ if (!this._handler)
84
+ throw new Error('Cannot build route without handler');
85
+ this.manager.route(this._options, this._returns, this._handler);
86
+ };
87
+ RouteBuilder.prototype.build = function () {
88
+ if (!this._options)
89
+ throw new Error('Cannot build route without options');
90
+ if (!this._options.action)
91
+ throw new Error('Cannot build route without action');
92
+ if (!this._options.path)
93
+ throw new Error('Cannot build route without action');
94
+ if (!this._returns)
95
+ throw new Error('Cannot build route without return');
96
+ if (!this._handler)
97
+ throw new Error('Cannot build route without handler');
98
+ return {
99
+ input: this._options,
100
+ returnType: this._returns,
101
+ handler: this._handler,
102
+ };
103
+ };
104
+ return RouteBuilder;
105
+ }());
106
+ exports.RouteBuilder = RouteBuilder;
107
+ //# sourceMappingURL=RouteBuilder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RouteBuilder.js","sourceRoot":"","sources":["../../src/routing/RouteBuilder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ import { RouteBuilder } from './RouteBuilder';
2
+ import { RequestHandlers } from './wrapRouterFunctions';
3
+ import { Admin, ConduitMiddlewareOptions, ConduitRouteOptions, ConduitRouteReturnDefinition, ConduitSocketEventHandler, ConduitSocketOptions, ParsedRouterRequest, ProxyMiddlewareOptions, ProxyRouteOptions, Router, UnparsedRouterResponse } from '@conduitplatform/grpc-sdk';
4
+ import { GrpcServer } from '../classes';
5
+ import { ProxyRouteBuilder } from './ProxyRouteBuilder';
6
+ export declare class RoutingManager {
7
+ private readonly _router;
8
+ private readonly _server;
9
+ private _moduleRoutes;
10
+ private _moduleProxyRoutes;
11
+ private _routeHandlers;
12
+ private readonly isAdmin;
13
+ constructor(_router: Router | Admin, _server: GrpcServer);
14
+ get(path: string): RouteBuilder;
15
+ post(path: string): RouteBuilder;
16
+ delete(path: string): RouteBuilder;
17
+ update(path: string): RouteBuilder;
18
+ patch(path: string): RouteBuilder;
19
+ proxy(): ProxyRouteBuilder;
20
+ clear(): void;
21
+ middleware(input: ConduitMiddlewareOptions, handler: (request: ParsedRouterRequest) => Promise<UnparsedRouterResponse>): void;
22
+ route(input: ConduitRouteOptions, type: ConduitRouteReturnDefinition, handler: RequestHandlers): void;
23
+ proxyRoute(input: {
24
+ options: ProxyRouteOptions;
25
+ proxy: ProxyMiddlewareOptions;
26
+ }): void;
27
+ socket(input: ConduitSocketOptions, events: Record<string, ConduitSocketEventHandler>): void;
28
+ registerRoutes(): Promise<any>;
29
+ private generateGrpcName;
30
+ private extractNameFromPath;
31
+ private parseRouteObject;
32
+ }
@@ -0,0 +1,198 @@
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 __generator = (this && this.__generator) || function (thisArg, body) {
12
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
13
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14
+ function verb(n) { return function (v) { return step([n, v]); }; }
15
+ function step(op) {
16
+ if (f) throw new TypeError("Generator is already executing.");
17
+ while (_) try {
18
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
19
+ if (y = 0, t) op = [op[0] & 2, t.value];
20
+ switch (op[0]) {
21
+ case 0: case 1: t = op; break;
22
+ case 4: _.label++; return { value: op[1], done: false };
23
+ case 5: _.label++; y = op[1]; op = [0]; continue;
24
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
25
+ default:
26
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
27
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
28
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
29
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
30
+ if (t[2]) _.ops.pop();
31
+ _.trys.pop(); continue;
32
+ }
33
+ op = body.call(thisArg, _);
34
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
35
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
+ }
37
+ };
38
+ var __importDefault = (this && this.__importDefault) || function (mod) {
39
+ return (mod && mod.__esModule) ? mod : { "default": mod };
40
+ };
41
+ Object.defineProperty(exports, "__esModule", { value: true });
42
+ exports.RoutingManager = void 0;
43
+ var RouteBuilder_1 = require("./RouteBuilder");
44
+ var RoutingUtilities_1 = require("./RoutingUtilities");
45
+ var fs_1 = __importDefault(require("fs"));
46
+ var path_1 = __importDefault(require("path"));
47
+ var grpc_sdk_1 = require("@conduitplatform/grpc-sdk");
48
+ var ProxyRouteBuilder_1 = require("./ProxyRouteBuilder");
49
+ var RoutingManager = /** @class */ (function () {
50
+ function RoutingManager(_router, _server) {
51
+ this._router = _router;
52
+ this._server = _server;
53
+ this._moduleRoutes = {};
54
+ this._moduleProxyRoutes = {};
55
+ this._routeHandlers = {};
56
+ this.isAdmin = false;
57
+ if (_router instanceof grpc_sdk_1.Admin) {
58
+ this.isAdmin = true;
59
+ }
60
+ }
61
+ RoutingManager.prototype.get = function (path) {
62
+ return new RouteBuilder_1.RouteBuilder(this).method(grpc_sdk_1.ConduitRouteActions.GET).path(path);
63
+ };
64
+ RoutingManager.prototype.post = function (path) {
65
+ return new RouteBuilder_1.RouteBuilder(this).method(grpc_sdk_1.ConduitRouteActions.POST).path(path);
66
+ };
67
+ RoutingManager.prototype.delete = function (path) {
68
+ return new RouteBuilder_1.RouteBuilder(this).method(grpc_sdk_1.ConduitRouteActions.DELETE).path(path);
69
+ };
70
+ RoutingManager.prototype.update = function (path) {
71
+ return new RouteBuilder_1.RouteBuilder(this).method(grpc_sdk_1.ConduitRouteActions.UPDATE).path(path);
72
+ };
73
+ RoutingManager.prototype.patch = function (path) {
74
+ return new RouteBuilder_1.RouteBuilder(this).method(grpc_sdk_1.ConduitRouteActions.PATCH).path(path);
75
+ };
76
+ RoutingManager.prototype.proxy = function () {
77
+ return new ProxyRouteBuilder_1.ProxyRouteBuilder(this);
78
+ };
79
+ RoutingManager.prototype.clear = function () {
80
+ this._moduleRoutes = {};
81
+ this._routeHandlers = {};
82
+ this._moduleProxyRoutes = {};
83
+ };
84
+ RoutingManager.prototype.middleware = function (input, handler) {
85
+ var routeObject = this.parseRouteObject({
86
+ options: input,
87
+ grpcFunction: input.name,
88
+ });
89
+ this._moduleRoutes[routeObject.grpcFunction] = routeObject;
90
+ this._routeHandlers[routeObject.grpcFunction] = handler;
91
+ };
92
+ RoutingManager.prototype.route = function (input, type, handler) {
93
+ var routeObject = this.parseRouteObject({
94
+ options: input,
95
+ returns: {
96
+ name: type.name,
97
+ fields: JSON.stringify(type.fields),
98
+ },
99
+ grpcFunction: this.generateGrpcName(input),
100
+ });
101
+ this._moduleRoutes[routeObject.grpcFunction] = routeObject;
102
+ this._routeHandlers[routeObject.grpcFunction] = handler;
103
+ };
104
+ RoutingManager.prototype.proxyRoute = function (input) {
105
+ var routeObject = this.parseRouteObject({
106
+ options: input,
107
+ });
108
+ this._moduleProxyRoutes[routeObject.options.path + routeObject.proxy.target] =
109
+ routeObject;
110
+ };
111
+ RoutingManager.prototype.socket = function (input, events) {
112
+ var _this = this;
113
+ var eventsObj = {};
114
+ var routeObject = this.parseRouteObject({
115
+ options: input,
116
+ events: '',
117
+ });
118
+ var primary;
119
+ Object.keys(events).forEach(function (eventName) {
120
+ var _a, _b, _c;
121
+ if (!primary)
122
+ primary = eventName;
123
+ var event = events[eventName];
124
+ eventsObj[eventName] = {
125
+ grpcFunction: eventName,
126
+ params: JSON.stringify(event.params),
127
+ returns: {
128
+ name: (_b = (_a = event.returnType) === null || _a === void 0 ? void 0 : _a.name) !== null && _b !== void 0 ? _b : '',
129
+ fields: JSON.stringify((_c = event.returnType) === null || _c === void 0 ? void 0 : _c.fields),
130
+ },
131
+ };
132
+ _this._routeHandlers[eventName] = event.handler;
133
+ });
134
+ routeObject.events = JSON.stringify(eventsObj);
135
+ this._moduleRoutes[primary] = routeObject;
136
+ };
137
+ RoutingManager.prototype.registerRoutes = function () {
138
+ return __awaiter(this, void 0, void 0, function () {
139
+ var modifiedFunctions, protoDescriptions, protoPath, paths;
140
+ return __generator(this, function (_a) {
141
+ switch (_a.label) {
142
+ case 0:
143
+ if (Object.keys(this._routeHandlers).length === 0)
144
+ return [2 /*return*/];
145
+ modifiedFunctions = (0, RoutingUtilities_1.wrapFunctionsAsync)(this._routeHandlers, this.isAdmin ? 'admin' : 'client');
146
+ return [4 /*yield*/, this._router.generateProtoFile(this._router.moduleName, Object.values(this._moduleRoutes))];
147
+ case 1:
148
+ protoDescriptions = _a.sent();
149
+ protoPath = path_1.default.resolve(__dirname, Math.random().toString(36).substring(7));
150
+ fs_1.default.writeFileSync(protoPath, protoDescriptions.protoFile);
151
+ return [4 /*yield*/, this._server.addService(protoPath, protoDescriptions.formattedModuleName +
152
+ (this.isAdmin ? '.admin.Admin' : '.router.Router'), modifiedFunctions)];
153
+ case 2:
154
+ _a.sent();
155
+ paths = Object.values(this._moduleRoutes);
156
+ return [2 /*return*/, this._router.register(paths, protoDescriptions.protoFile)];
157
+ }
158
+ });
159
+ });
160
+ };
161
+ RoutingManager.prototype.generateGrpcName = function (options) {
162
+ if (options.name) {
163
+ return options.name.charAt(0).toUpperCase() + options.name.slice(1);
164
+ }
165
+ else {
166
+ var name_1 = options.action.charAt(0) +
167
+ options.action.slice(1).toLowerCase() +
168
+ this.extractNameFromPath(options.path);
169
+ return name_1.charAt(0).toUpperCase() + name_1.slice(1);
170
+ }
171
+ };
172
+ RoutingManager.prototype.extractNameFromPath = function (path) {
173
+ path = path.replace(/[-:]/g, '/');
174
+ return path
175
+ .split('/')
176
+ .map(function (word) { return word.charAt(0).toUpperCase() + word.slice(1).toLowerCase(); })
177
+ .join('');
178
+ };
179
+ RoutingManager.prototype.parseRouteObject = function (routeObject) {
180
+ if (!routeObject.options.middlewares) {
181
+ routeObject.options.middlewares = [];
182
+ }
183
+ for (var option in routeObject.options) {
184
+ if (!routeObject.options.hasOwnProperty(option))
185
+ continue;
186
+ if (option === 'middlewares')
187
+ continue;
188
+ if (typeof routeObject.options[option] === 'string' ||
189
+ routeObject.options[option] instanceof String)
190
+ continue;
191
+ routeObject.options[option] = JSON.stringify(routeObject.options[option]);
192
+ }
193
+ return routeObject;
194
+ };
195
+ return RoutingManager;
196
+ }());
197
+ exports.RoutingManager = RoutingManager;
198
+ //# sourceMappingURL=RoutingManager.js.map