@bett3r-dev/pv3-library-load-balancer-routes 1.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md ADDED
@@ -0,0 +1,47 @@
1
+ # @bett3r-dev/pv3-library-load-balancer-routes
2
+
3
+ <!-- MONOWEAVE:BELOW -->
4
+
5
+ ## [1.2.0](git+https://github.com/bett3r-dev/pv3/compare/@bett3r-dev/pv3-library-load-balancer-routes@1.1.2...@bett3r-dev/pv3-library-load-balancer-routes@1.2.0) "@bett3r-dev/pv3-library-load-balancer-routes" (8/2/2026) <a name="1.2.0"></a>
6
+
7
+ ### Changes
8
+
9
+ * feat(tsgo): migrate build scripts from tsc to tsgo across multiple packages and update TypeScript configuration ([e0cf2b51](git+https://github.com/bett3r-dev/pv3/commits/e0cf2b51))
10
+
11
+
12
+ ## [1.1.2](git+https://github.com/bett3r-dev/pv3/compare/@bett3r-dev/pv3-library-load-balancer-routes@1.1.1...@bett3r-dev/pv3-library-load-balancer-routes@1.1.2) "@bett3r-dev/pv3-library-load-balancer-routes" (4/11/2026) <a name="1.1.2"></a>
13
+
14
+ ### Changes
15
+
16
+ * fix(build): update packages versions ([79f7da77](git+https://github.com/bett3r-dev/pv3/commits/79f7da77))
17
+ * fix(dependencies): Update jsonschema-definer to 1.5.6 ([6c7e2e45](git+https://github.com/bett3r-dev/pv3/commits/6c7e2e45))
18
+ * fix(dependencies): update jsonschema-definer to 1.5.7 and ramda to 0.32.0 ([e5af6e98](git+https://github.com/bett3r-dev/pv3/commits/e5af6e98))
19
+ * fix(dependencies): upgrade jsonschema-definer to 1.5.8 across multiple packages ([3e704d18](git+https://github.com/bett3r-dev/pv3/commits/3e704d18))
20
+
21
+
22
+ ## [1.1.0](git+https://github.com/bett3r-dev/pv3/compare/@bett3r-dev/pv3-library-load-balancer-routes@1.0.17...@bett3r-dev/pv3-library-load-balancer-routes@1.1.0) "@bett3r-dev/pv3-library-load-balancer-routes" (10/6/2025) <a name="1.1.0"></a>
23
+
24
+ ### Changes
25
+
26
+ * feat(postgres): enhance PostgresDb with improved configuration and function management ([e4717c62](git+https://github.com/bett3r-dev/pv3/commits/e4717c62))
27
+
28
+
29
+ ## [1.0.4](git+https://github.com/bett3r-dev/pv3/compare/@bett3r-dev/pv3-library-load-balancer-routes@1.0.3...@bett3r-dev/pv3-library-load-balancer-routes@1.0.4) "@bett3r-dev/pv3-library-load-balancer-routes" (6/14/2025) <a name="1.0.4"></a>
30
+
31
+ ### Changes
32
+
33
+ * fix: update @bett3r-dev/jsonschema-definer dependency to version 1.5.0 across multiple packages ([a5f23884](git+https://github.com/bett3r-dev/pv3/commits/a5f23884))
34
+
35
+
36
+ ## 1.0.0
37
+
38
+ ### Major Changes
39
+
40
+ - First Official Release of PV3
41
+
42
+ ### Patch Changes
43
+
44
+ - Updated dependencies
45
+ - @bett3r-dev/pv3-library-routes-auth@1.0.0
46
+ - @bett3r-dev/pv3-types@1.0.0
47
+ - @bett3r-dev/pv3@1.0.0
@@ -0,0 +1,4 @@
1
+ import { PortsBase } from '@bett3r-dev/pv3-types';
2
+ import { LoadBalancerRoutesAdapterType, LoadBalancerRoutesConfigType } from '../../loadBalancerRoutes.types';
3
+ export declare const NginxDockerLoadBalancerRoutes: (ports: Pick<PortsBase, 'logger' | 'configuration'>, config: LoadBalancerRoutesConfigType) => LoadBalancerRoutesAdapterType;
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/adapters/nginx-docker/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAGlD,OAAO,EAAE,6BAA6B,EAAE,4BAA4B,EAA+D,MAAM,gCAAgC,CAAC;AAW1K,eAAO,MAAM,6BAA6B,UAAY,IAAI,CAAC,SAAS,EAAE,QAAQ,GAAG,eAAe,CAAC,UAAU,4BAA4B,KAAI,6BAqC1I,CAAC"}
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.NginxDockerLoadBalancerRoutes = void 0;
7
+ const fs_1 = __importDefault(require("fs"));
8
+ const path_1 = __importDefault(require("path"));
9
+ const nginx_docker_types_1 = require("./nginx-docker.types");
10
+ const createUpstream = (service, port) => {
11
+ return `\tupstream ${service} {\n\t\tserver ${service}:${port};\n\t}`;
12
+ };
13
+ const createLocation = (service, path, isPublic = false) => {
14
+ return `\t\tlocation ${path} {${!isPublic ? '\n\t\t\tauth_request /authorization/authorize-request;' : ''}\n\t\t\tproxy_pass http://${service};\n\t}`;
15
+ };
16
+ const NginxDockerLoadBalancerRoutes = (ports, config) => {
17
+ const logger = ports.logger.createLoggerInstance('NginxDockerLoadBalancerRoutes');
18
+ const { config: nginxConfig } = ports.configuration.getModuleConfig('nginxLoadBalancerRoutes', nginx_docker_types_1.LoadBalancerRoutesNginxAdapterConfigSchema);
19
+ const templateFile = path_1.default.resolve(nginxConfig.configTemplateFilePath || './nginx.conf.template');
20
+ const template = fs_1.default.readFileSync(templateFile, 'utf-8');
21
+ const getAuthService = (services) => {
22
+ const authService = config.auth_service || Object.keys(services).find(service => Object.keys(services[service].routes).some(route => config.auth_path ? route === config.auth_path : route === '/authorization/authorize-request'));
23
+ if (!authService) {
24
+ logger.error('No auth service found in the configuration');
25
+ }
26
+ return authService || '';
27
+ };
28
+ const generateConfFile = (updates, template) => {
29
+ template.replaceAll('${domain}', config.domain);
30
+ template.replaceAll('${auth_service}', updates.auth_service || getAuthService(updates.services));
31
+ Object.entries(updates.services).forEach(([service, { port, routes }]) => {
32
+ const upstream = createUpstream(service, port);
33
+ const locations = Object.entries(routes).map(([path, isPrivate]) => {
34
+ return createLocation(service, path, isPrivate);
35
+ });
36
+ template.replace(/### Upstreams(.+?)###/, `### Upstreams\n${upstream}\n###`);
37
+ template.replace(/### Generated Locations(.+?)###/, `### Locations\n${locations.join('\n')}\n###`);
38
+ });
39
+ return template;
40
+ };
41
+ const updateLoadBalancerRoutes = async (updates) => {
42
+ const confFile = generateConfFile(updates, template);
43
+ await fs_1.default.promises.writeFile(nginxConfig.configFilePath, confFile);
44
+ };
45
+ return {
46
+ updateLoadBalancerRoutes
47
+ };
48
+ };
49
+ exports.NginxDockerLoadBalancerRoutes = NginxDockerLoadBalancerRoutes;
50
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/adapters/nginx-docker/index.ts"],"names":[],"mappings":";;;;;;AACA,4CAAoB;AACpB,gDAAwB;AAExB,6DAAkF;AAElF,MAAM,cAAc,GAAG,CAAE,OAAe,EAAE,IAAY,EAAG,EAAE;IACzD,OAAO,cAAc,OAAO,kBAAkB,OAAO,IAAI,IAAI,QAAQ,CAAC;AACxE,CAAC,CAAC;AAEF,MAAM,cAAc,GAAG,CAAE,OAAe,EAAE,IAAY,EAAE,QAAQ,GAAY,KAAK,EAAG,EAAE;IACpF,OAAO,gBAAgB,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,wDAAwD,CAAC,CAAC,CAAC,EAAE,6BAA6B,OAAO,QAAQ,CAAC;AACxJ,CAAC,CAAC;AAEK,MAAM,6BAA6B,GAAG,CAAE,KAAkD,EAAE,MAAoC,EAAkC,EAAE;IACzK,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,oBAAoB,CAAE,+BAA+B,CAAE,CAAC;IACpF,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,KAAK,CAAC,aAAa,CAAC,eAAe,CAAE,yBAAyB,EAAE,+DAA0C,CAAE,CAAC;IAC7I,MAAM,YAAY,GAAG,cAAI,CAAC,OAAO,CAAE,WAAW,CAAC,sBAAsB,IAAI,uBAAuB,CAAE,CAAC;IACnG,MAAM,QAAQ,GAAG,YAAE,CAAC,YAAY,CAAE,YAAY,EAAE,OAAO,CAAE,CAAC;IAE1D,MAAM,cAAc,GAAG,CAAE,QAAsD,EAAW,EAAE;QAC1F,MAAM,WAAW,GAAG,MAAM,CAAC,YAAY,IAAI,MAAM,CAAC,IAAI,CAAE,QAAQ,CAAE,CAAC,IAAI,CAAE,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAE,QAAQ,CAAC,OAAO,CAAC,CAAC,MAAM,CAAE,CAAC,IAAI,CAAE,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,KAAK,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,KAAK,kCAAkC,CAAE,CAAC,CAAC;QAC3O,IAAK,CAAC,WAAW,EAAG,CAAC;YACnB,MAAM,CAAC,KAAK,CAAE,4CAA4C,CAAE,CAAC;QAC/D,CAAC;QACD,OAAO,WAAW,IAAI,EAAE,CAAC;IAC3B,CAAC,CAAC;IAEF,MAAM,gBAAgB,GAAG,CAAE,OAAqC,EAAE,QAAgB,EAAG,EAAE;QACrF,QAAQ,CAAC,UAAU,CAAE,WAAW,EAAE,MAAM,CAAC,MAAM,CAAE,CAAC;QAClD,QAAQ,CAAC,UAAU,CAAE,iBAAiB,EAAE,OAAO,CAAC,YAAY,IAAI,cAAc,CAAE,OAAO,CAAC,QAAQ,CAAE,CAAC,CAAC;QACpG,MAAM,CAAC,OAAO,CAAE,OAAO,CAAC,QAAQ,CAAE,CAAC,OAAO,CAAC,CAAC,CAAE,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE;YAC1E,MAAM,QAAQ,GAAG,cAAc,CAAE,OAAO,EAAE,IAAI,CAAE,CAAC;YACjD,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,CAAE,MAAM,CAAE,CAAC,GAAG,CAAC,CAAC,CAAE,IAAI,EAAE,SAAS,CAAE,EAAE,EAAE;gBACrE,OAAO,cAAc,CAAE,OAAO,EAAE,IAAI,EAAE,SAAS,CAAE,CAAC;YACpD,CAAC,CAAC,CAAC;YACH,QAAQ,CAAC,OAAO,CAAE,uBAAuB,EAAE,kBAAkB,QAAQ,OAAO,CAAE,CAAC;YAC/E,QAAQ,CAAC,OAAO,CAAE,iCAAiC,EAAE,kBAAkB,SAAS,CAAC,IAAI,CAAE,IAAI,CAAE,OAAO,CAAE,CAAC;QACzG,CAAC,CAAC,CAAC;QACH,OAAO,QAAQ,CAAC;IAClB,CAAC,CAAC;IAGF,MAAM,wBAAwB,GAAG,KAAK,EAAG,OAAqC,EAAG,EAAE;QACjF,MAAM,QAAQ,GAAG,gBAAgB,CAAE,OAAO,EAAE,QAAQ,CAAE,CAAC;QACvD,MAAM,YAAE,CAAC,QAAQ,CAAC,SAAS,CAAE,WAAW,CAAC,cAAc,EAAE,QAAQ,CAAE,CAAC;IACtE,CAAC,CAAC;IAEF,OAAO;QACL,wBAAwB;KACzB,CAAC;AACJ,CAAC,CAAC;AArCW,QAAA,6BAA6B,GAA7B,6BAA6B,CAqCxC"}
@@ -0,0 +1,6 @@
1
+ export declare const LoadBalancerRoutesNginxAdapterConfigSchema: import("@bett3r-dev/jsonschema-definer").ObjectSchema<{
2
+ configTemplateFilePath?: string | undefined;
3
+ configFilePath: string;
4
+ }, true>;
5
+ export type LoadBalancerRoutesNginxAdapterConfigType = typeof LoadBalancerRoutesNginxAdapterConfigSchema.type;
6
+ //# sourceMappingURL=nginx-docker.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nginx-docker.types.d.ts","sourceRoot":"","sources":["../../../src/adapters/nginx-docker/nginx-docker.types.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,0CAA0C;;;QAGrD,CAAC;AAEH,MAAM,MAAM,wCAAwC,GAAG,OAAO,0CAA0C,CAAC,IAAI,CAAC"}
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.LoadBalancerRoutesNginxAdapterConfigSchema = void 0;
7
+ const jsonschema_definer_1 = __importDefault(require("@bett3r-dev/jsonschema-definer"));
8
+ exports.LoadBalancerRoutesNginxAdapterConfigSchema = jsonschema_definer_1.default.shape({
9
+ configTemplateFilePath: jsonschema_definer_1.default.string().optional(),
10
+ configFilePath: jsonschema_definer_1.default.string()
11
+ });
12
+ //# sourceMappingURL=nginx-docker.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nginx-docker.types.js","sourceRoot":"","sources":["../../../src/adapters/nginx-docker/nginx-docker.types.ts"],"names":[],"mappings":";;;;;;AAAA,wFAA+C;AAElC,QAAA,0CAA0C,GAAG,4BAAC,CAAC,KAAK,CAAC;IAChE,sBAAsB,EAAE,4BAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC7C,cAAc,EAAE,4BAAC,CAAC,MAAM,EAAE;CAC3B,CAAC,CAAC"}
@@ -0,0 +1,9 @@
1
+ import { ClusterRoutesConfigType, DatabasePort, EventStorePort, PortsBase } from '@bett3r-dev/pv3-types';
2
+ import { LoadBalancerRoutesAdapterType } from './loadBalancerRoutes.types';
3
+ export * from './adapters/nginx-docker';
4
+ export declare const LoadBalancerRoutes: (ports: Pick<PortsBase, 'logger' | 'database' | 'eventstore' | 'endpoints'>, config: ClusterRoutesConfigType, adapter: LoadBalancerRoutesAdapterType, database?: DatabasePort, eventstore?: EventStorePort) => {
5
+ start: () => Promise<void>;
6
+ processUpstreamsAndLocations: () => Promise<void>;
7
+ stop: () => Promise<void>;
8
+ };
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,uBAAuB,EAAE,YAAY,EAAE,cAAc,EAAE,SAAS,EAAoD,MAAM,uBAAuB,CAAC;AAE3J,OAAO,EAAE,6BAA6B,EAAgC,MAAM,4BAA4B,CAAC;AAEzG,cAAc,yBAAyB,CAAC;AAExC,eAAO,MAAM,kBAAkB,UAAY,IAAI,CAAC,SAAS,EAAE,QAAQ,GAAG,UAAU,GAAG,YAAY,GAAG,WAAW,CAAC,UAAU,uBAAuB,WAAW,6BAA6B,aAAa,YAAY,eAAe,cAAc;;;;CA2E5O,CAAC"}
package/build/index.js ADDED
@@ -0,0 +1,89 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.LoadBalancerRoutes = void 0;
18
+ const pv3_library_cluster_structure_1 = require("@bett3r-dev/pv3-library-cluster-structure");
19
+ const pv3_library_routes_auth_1 = require("@bett3r-dev/pv3-library-routes-auth");
20
+ const async_1 = require("async");
21
+ const pv3_1 = require("@bett3r-dev/pv3");
22
+ __exportStar(require("./adapters/nginx-docker"), exports);
23
+ const LoadBalancerRoutes = (ports, config, adapter, database, eventstore) => {
24
+ database = database || ports.database;
25
+ const cluster = (0, pv3_library_cluster_structure_1.ClusterStructure)(ports, undefined, database);
26
+ const routesAuthManager = (0, pv3_library_routes_auth_1.RoutesAuthManager)(ports, config, eventstore);
27
+ const processingQueue = (0, async_1.queue)(() => processUpstreamsAndLocations);
28
+ //FIXME: NOT TESTED, NOT WORKING
29
+ const stitchOpenApiDocs = async (state, allRoutes) => {
30
+ const openApiDocs = await Promise.all(Object.entries(state.services).map(([serviceName, service]) => {
31
+ const route = `http://${serviceName}:${service.port}${service.openApiEndpoint}`;
32
+ return fetch(route)
33
+ .then(response => response.json());
34
+ }));
35
+ const { paths, schemas } = openApiDocs.reduce((acc, openApi) => {
36
+ const schemas = openApi.components?.schemas || {};
37
+ const paths = Object.keys(openApi.paths || {}).reduce((paths, path) => {
38
+ const routes = (0, pv3_1.extractOpenApiPathEndpoints)(openApi.paths[path], path);
39
+ routes.forEach((route) => {
40
+ const routeAuth = allRoutes.find(r => r.id === route);
41
+ if (routeAuth?.visibility !== 'internal') {
42
+ paths[path] = openApi.paths[path];
43
+ }
44
+ });
45
+ return paths;
46
+ }, acc.paths);
47
+ return { paths, schemas };
48
+ }, { paths: {}, schemas: {} });
49
+ const spec = (0, pv3_1.pruneUnusedRefs)({ paths, components: { schemas } });
50
+ (0, pv3_1.generateOpenApiDocument)(spec.paths, spec.components.schemas, { name: '', version: '' }, [], '');
51
+ };
52
+ //FIXME: NOT TESTED, NOT WORKING
53
+ const processUpstreamsAndLocations = async () => {
54
+ const { state: currentState } = await cluster.getCurrentState();
55
+ const allRoutes = await routesAuthManager.getAllRoutes();
56
+ stitchOpenApiDocs(currentState, allRoutes);
57
+ const updates = Object.entries(currentState.services).reduce((acc, [serviceName, service]) => {
58
+ acc.services[serviceName] = {
59
+ port: service.port || 80,
60
+ routes: (service.endpoints || [])?.reduce((acc, route) => {
61
+ acc[route] = allRoutes[route].isPublic;
62
+ return acc;
63
+ }, {})
64
+ };
65
+ return acc;
66
+ }, { services: {} });
67
+ return adapter.updateLoadBalancerRoutes(updates);
68
+ };
69
+ const start = async () => {
70
+ cluster.subscribeToStructureChanges(() => {
71
+ processingQueue.push({});
72
+ });
73
+ routesAuthManager.subscribeToRoutesAuthChanges(() => {
74
+ processingQueue.push({});
75
+ });
76
+ return processUpstreamsAndLocations();
77
+ };
78
+ const stop = async () => {
79
+ cluster.stop();
80
+ routesAuthManager.stop();
81
+ };
82
+ return {
83
+ start,
84
+ processUpstreamsAndLocations,
85
+ stop
86
+ };
87
+ };
88
+ exports.LoadBalancerRoutes = LoadBalancerRoutes;
89
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ export declare const LoadBalancerRoutesConfigSchema: import("@bett3r-dev/jsonschema-definer").ObjectSchema<{
2
+ domain: string;
3
+ auth_service?: string | undefined;
4
+ auth_path?: string | undefined;
5
+ }, true>;
6
+ export type LoadBalancerRoutesConfigType = typeof LoadBalancerRoutesConfigSchema.type;
7
+ export type LoadBalancerServiceRoutesType = {
8
+ port: number;
9
+ routes: {
10
+ [pathIsPublic: string]: boolean;
11
+ };
12
+ };
13
+ export type UpsertLoadBalancerConfigType = {
14
+ auth_service?: string;
15
+ services: {
16
+ [service: string]: LoadBalancerServiceRoutesType;
17
+ };
18
+ };
19
+ export type LoadBalancerRoutesAdapterType = {
20
+ updateLoadBalancerRoutes: (updates: UpsertLoadBalancerConfigType) => Promise<void>;
21
+ };
22
+ //# sourceMappingURL=loadBalancerRoutes.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loadBalancerRoutes.types.d.ts","sourceRoot":"","sources":["../src/loadBalancerRoutes.types.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,8BAA8B;;;;QAIzC,CAAC;AACH,MAAM,MAAM,4BAA4B,GAAG,OAAO,8BAA8B,CAAC,IAAI,CAAC;AAEtF,MAAM,MAAM,6BAA6B,GAAG;IAC1C,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE;QACN,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC;KACjC,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,4BAA4B,GAAG;IACzC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE;QACR,CAAC,OAAO,EAAE,MAAM,GAAG,6BAA6B,CAAA;KACjD,CAAA;CACF,CAAC;AAEF,MAAM,MAAM,6BAA6B,GAAG;IAC1C,wBAAwB,EAAE,CAAE,OAAO,EAAE,4BAA4B,KAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CACrF,CAAC"}
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.LoadBalancerRoutesConfigSchema = void 0;
7
+ const jsonschema_definer_1 = __importDefault(require("@bett3r-dev/jsonschema-definer"));
8
+ exports.LoadBalancerRoutesConfigSchema = jsonschema_definer_1.default.shape({
9
+ domain: jsonschema_definer_1.default.string(),
10
+ auth_service: jsonschema_definer_1.default.string().optional(),
11
+ auth_path: jsonschema_definer_1.default.string().optional()
12
+ });
13
+ //# sourceMappingURL=loadBalancerRoutes.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loadBalancerRoutes.types.js","sourceRoot":"","sources":["../src/loadBalancerRoutes.types.ts"],"names":[],"mappings":";;;;;;AAAA,wFAA+C;AAElC,QAAA,8BAA8B,GAAG,4BAAC,CAAC,KAAK,CAAC;IACpD,MAAM,EAAE,4BAAC,CAAC,MAAM,EAAE;IAClB,YAAY,EAAE,4BAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACnC,SAAS,EAAE,4BAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACjC,CAAC,CAAC"}
package/package.json ADDED
@@ -0,0 +1,32 @@
1
+ {
2
+ "name": "@bett3r-dev/pv3-library-load-balancer-routes",
3
+ "version": "1.1.1",
4
+ "main": "build/index.js",
5
+ "types": "build/index.d.ts",
6
+ "license": "MIT",
7
+ "scripts": {
8
+ "clean": "rm -rf build && rm -rf *.tsbuildinfo",
9
+ "build": "yarn run -T tsgo --build --verbose"
10
+ },
11
+ "dependencies": {
12
+ "@bett3r-dev/jsonschema-definer": "^1.5.9",
13
+ "@bett3r-dev/pv3": "^1.1.7",
14
+ "@bett3r-dev/pv3-library-cluster-structure": "^1.1.1",
15
+ "@bett3r-dev/pv3-library-routes-auth": "^1.0.17",
16
+ "@bett3r-dev/pv3-types": "^1.4.0",
17
+ "async": "^3.2.6"
18
+ },
19
+ "publishConfig": {
20
+ "registry": "https://registry.npmjs.org/",
21
+ "access": "public"
22
+ },
23
+ "repository": {
24
+ "type": "git",
25
+ "url": "git+https://github.com/bett3r-dev/pv3.git",
26
+ "directory": "packages/pv3-library-load-balancer-routes"
27
+ },
28
+ "files": [
29
+ "build/**/*",
30
+ "README.md"
31
+ ]
32
+ }