@toa.io/extensions.origins 0.20.0-dev.38 → 0.20.0-dev.39
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/package.json +6 -6
- package/transpiled/Factory.d.ts +17 -0
- package/transpiled/Factory.js +65 -0
- package/transpiled/Factory.js.map +1 -0
- package/transpiled/annotation.d.ts +10 -0
- package/transpiled/annotation.js +91 -0
- package/transpiled/annotation.js.map +1 -0
- package/transpiled/constants.d.ts +1 -0
- package/transpiled/constants.js +3 -0
- package/transpiled/constants.js.map +1 -0
- package/transpiled/env.d.ts +5 -0
- package/transpiled/env.js +40 -0
- package/transpiled/env.js.map +1 -0
- package/transpiled/extension.d.ts +10 -0
- package/transpiled/extension.js +49 -0
- package/transpiled/extension.js.map +1 -0
- package/transpiled/index.d.ts +2 -0
- package/transpiled/index.js +9 -0
- package/transpiled/index.js.map +1 -0
- package/transpiled/manifest.d.ts +2 -0
- package/transpiled/manifest.js +36 -0
- package/transpiled/manifest.js.map +1 -0
- package/transpiled/protocols/amqp/aspect.d.ts +9 -0
- package/transpiled/protocols/amqp/aspect.js +53 -0
- package/transpiled/protocols/amqp/aspect.js.map +1 -0
- package/transpiled/protocols/amqp/deployment.d.ts +5 -0
- package/transpiled/protocols/amqp/deployment.js +55 -0
- package/transpiled/protocols/amqp/deployment.js.map +1 -0
- package/transpiled/protocols/amqp/id.d.ts +1 -0
- package/transpiled/protocols/amqp/id.js +3 -0
- package/transpiled/protocols/amqp/id.js.map +1 -0
- package/transpiled/protocols/amqp/index.d.ts +5 -0
- package/transpiled/protocols/amqp/index.js +10 -0
- package/transpiled/protocols/amqp/index.js.map +1 -0
- package/transpiled/protocols/amqp/protocols.d.ts +2 -0
- package/transpiled/protocols/amqp/protocols.js +3 -0
- package/transpiled/protocols/amqp/protocols.js.map +1 -0
- package/transpiled/protocols/http/.aspect/permissions.d.ts +6 -0
- package/transpiled/protocols/http/.aspect/permissions.js +52 -0
- package/transpiled/protocols/http/.aspect/permissions.js.map +1 -0
- package/transpiled/protocols/http/aspect.d.ts +10 -0
- package/transpiled/protocols/http/aspect.js +88 -0
- package/transpiled/protocols/http/aspect.js.map +1 -0
- package/transpiled/protocols/http/id.d.ts +1 -0
- package/transpiled/protocols/http/id.js +3 -0
- package/transpiled/protocols/http/id.js.map +1 -0
- package/transpiled/protocols/http/index.d.ts +4 -0
- package/transpiled/protocols/http/index.js +8 -0
- package/transpiled/protocols/http/index.js.map +1 -0
- package/transpiled/protocols/http/protocols.d.ts +2 -0
- package/transpiled/protocols/http/protocols.js +3 -0
- package/transpiled/protocols/http/protocols.js.map +1 -0
- package/transpiled/protocols/index.d.ts +9 -0
- package/transpiled/protocols/index.js +10 -0
- package/transpiled/protocols/index.js.map +1 -0
- package/transpiled/tsconfig.tsbuildinfo +1 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@toa.io/extensions.origins",
|
|
3
|
-
"version": "0.20.0-dev.
|
|
3
|
+
"version": "0.20.0-dev.39",
|
|
4
4
|
"description": "Toa Origins",
|
|
5
5
|
"author": "temich <tema.gurtovoy@gmail.com>",
|
|
6
6
|
"homepage": "https://github.com/toa-io/toa#readme",
|
|
@@ -17,10 +17,10 @@
|
|
|
17
17
|
"main": "transpiled/index.js",
|
|
18
18
|
"types": "transpiled/index.d.ts",
|
|
19
19
|
"dependencies": {
|
|
20
|
-
"@toa.io/core": "0.20.0-dev.
|
|
21
|
-
"@toa.io/generic": "0.20.0-dev.
|
|
22
|
-
"@toa.io/pointer": "0.20.0-dev.
|
|
23
|
-
"@toa.io/schemas": "0.20.0-dev.
|
|
20
|
+
"@toa.io/core": "0.20.0-dev.39",
|
|
21
|
+
"@toa.io/generic": "0.20.0-dev.39",
|
|
22
|
+
"@toa.io/pointer": "0.20.0-dev.39",
|
|
23
|
+
"@toa.io/schemas": "0.20.0-dev.39",
|
|
24
24
|
"comq": "0.8.0",
|
|
25
25
|
"msgpackr": "1.9.5",
|
|
26
26
|
"node-fetch": "2.6.7"
|
|
@@ -36,5 +36,5 @@
|
|
|
36
36
|
"preset": "ts-jest",
|
|
37
37
|
"testEnvironment": "node"
|
|
38
38
|
},
|
|
39
|
-
"gitHead": "
|
|
39
|
+
"gitHead": "501be16de01f5ad46b3425eff85d6c641f81b885"
|
|
40
40
|
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { type URIMap } from '@toa.io/pointer';
|
|
2
|
+
import type { Locator, extensions } from '@toa.io/core';
|
|
3
|
+
import type { Manifest } from './manifest';
|
|
4
|
+
export declare class Factory implements extensions.Factory {
|
|
5
|
+
aspect(locator: Locator, manifest: Manifest): extensions.Aspect[];
|
|
6
|
+
private createAspect;
|
|
7
|
+
private resolver;
|
|
8
|
+
private getURIs;
|
|
9
|
+
private filterOrigins;
|
|
10
|
+
private readOrigin;
|
|
11
|
+
private getProperties;
|
|
12
|
+
}
|
|
13
|
+
export interface Configuration {
|
|
14
|
+
origins: URIMap;
|
|
15
|
+
properties: Record<string, boolean>;
|
|
16
|
+
}
|
|
17
|
+
export type Resolver = () => Promise<Configuration>;
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Factory = void 0;
|
|
4
|
+
const msgpackr_1 = require("msgpackr");
|
|
5
|
+
const pointer_1 = require("@toa.io/pointer");
|
|
6
|
+
const generic_1 = require("@toa.io/generic");
|
|
7
|
+
const protocols_1 = require("./protocols");
|
|
8
|
+
const extension_1 = require("./extension");
|
|
9
|
+
class Factory {
|
|
10
|
+
aspect(locator, manifest) {
|
|
11
|
+
return protocols_1.protocols.map((protocol) => this.createAspect(locator, manifest, protocol));
|
|
12
|
+
}
|
|
13
|
+
createAspect(locator, manifest, protocol) {
|
|
14
|
+
const resolver = this.resolver(locator, manifest, protocol);
|
|
15
|
+
return protocol.create(resolver);
|
|
16
|
+
}
|
|
17
|
+
resolver(locator, manifest, protocol) {
|
|
18
|
+
return (0, generic_1.memo)(async () => {
|
|
19
|
+
const uris = await this.getURIs(locator, manifest);
|
|
20
|
+
const allProperties = this.getProperties(locator);
|
|
21
|
+
const origins = this.filterOrigins(uris, protocol.protocols);
|
|
22
|
+
const properties = allProperties['.' + protocol.id] ?? {};
|
|
23
|
+
return { origins, properties };
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
async getURIs(locator, manifest) {
|
|
27
|
+
const map = {};
|
|
28
|
+
if (manifest === null)
|
|
29
|
+
return map;
|
|
30
|
+
for (const [name, value] of Object.entries(manifest))
|
|
31
|
+
try {
|
|
32
|
+
map[name] = await this.readOrigin(locator, name);
|
|
33
|
+
}
|
|
34
|
+
catch {
|
|
35
|
+
// eslint-disable-next-line max-depth
|
|
36
|
+
if (value === null)
|
|
37
|
+
throw new Error(`Origin value ${name} is not defined`);
|
|
38
|
+
map[name] = [value];
|
|
39
|
+
}
|
|
40
|
+
return map;
|
|
41
|
+
}
|
|
42
|
+
filterOrigins(uris, protocols) {
|
|
43
|
+
const filtered = {};
|
|
44
|
+
for (const [name, references] of Object.entries(uris)) {
|
|
45
|
+
const url = new URL(references[0]);
|
|
46
|
+
if (protocols.includes(url.protocol))
|
|
47
|
+
filtered[name] = references;
|
|
48
|
+
}
|
|
49
|
+
return filtered;
|
|
50
|
+
}
|
|
51
|
+
async readOrigin(locator, name) {
|
|
52
|
+
const id = extension_1.ID_PREFIX + locator.label;
|
|
53
|
+
return await (0, pointer_1.resolve)(id, name);
|
|
54
|
+
}
|
|
55
|
+
getProperties(locator) {
|
|
56
|
+
const variable = extension_1.ENV_PREFIX + locator.uppercase + extension_1.PROPERTIES_SUFFIX;
|
|
57
|
+
const value = process.env[variable];
|
|
58
|
+
if (value === undefined)
|
|
59
|
+
return {};
|
|
60
|
+
const buffer = Buffer.from(value, 'base64');
|
|
61
|
+
return (0, msgpackr_1.decode)(buffer);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
exports.Factory = Factory;
|
|
65
|
+
//# sourceMappingURL=Factory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Factory.js","sourceRoot":"","sources":["../source/Factory.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { Instance } from './extension';
|
|
2
|
+
export declare function normalize(instances: Instance[], annotation: Annotation): void;
|
|
3
|
+
export declare function split(component: Component): {
|
|
4
|
+
origins: Origins;
|
|
5
|
+
properties: Properties;
|
|
6
|
+
};
|
|
7
|
+
export type Component = Origins | Properties;
|
|
8
|
+
export type Annotation = Record<string, Component>;
|
|
9
|
+
export type Properties = Partial<Record<'.http', Record<string, boolean>>>;
|
|
10
|
+
export type Origins = Record<string, string | string[]>;
|
|
@@ -0,0 +1,91 @@
|
|
|
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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
exports.split = exports.normalize = void 0;
|
|
27
|
+
const node_path_1 = require("node:path");
|
|
28
|
+
const schemas = __importStar(require("@toa.io/schemas"));
|
|
29
|
+
const protocols_1 = require("./protocols");
|
|
30
|
+
function normalize(instances, annotation) {
|
|
31
|
+
schema.validate(annotation);
|
|
32
|
+
mergeDefaults(annotation, instances);
|
|
33
|
+
checkProtocols(annotation);
|
|
34
|
+
}
|
|
35
|
+
exports.normalize = normalize;
|
|
36
|
+
function split(component) {
|
|
37
|
+
const origins = {};
|
|
38
|
+
const properties = {};
|
|
39
|
+
for (const [key, value] of Object.entries(component))
|
|
40
|
+
if (key[0] === '.')
|
|
41
|
+
properties[key] = value;
|
|
42
|
+
else
|
|
43
|
+
origins[key] = value;
|
|
44
|
+
return { origins, properties };
|
|
45
|
+
}
|
|
46
|
+
exports.split = split;
|
|
47
|
+
function mergeDefaults(annotation, instances) {
|
|
48
|
+
for (const instance of instances) {
|
|
49
|
+
const component = annotation[instance.locator.id] ?? {};
|
|
50
|
+
annotation[instance.locator.id] = mergeInstance(component, instance);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
function mergeInstance(origins, instance) {
|
|
54
|
+
if (instance.manifest === null)
|
|
55
|
+
return origins;
|
|
56
|
+
for (const [origin, value] of Object.entries(instance.manifest))
|
|
57
|
+
if (origins[origin] === undefined)
|
|
58
|
+
if (value === null)
|
|
59
|
+
throw new Error(`Origin '${origin}' is not defined for '${instance.locator.id}'`);
|
|
60
|
+
else
|
|
61
|
+
origins[origin] = value;
|
|
62
|
+
return origins;
|
|
63
|
+
}
|
|
64
|
+
function checkProtocols(annotation) {
|
|
65
|
+
for (const component of Object.values(annotation)) {
|
|
66
|
+
const { origins } = split(component);
|
|
67
|
+
const urlSets = Object.values(origins);
|
|
68
|
+
for (const urls of urlSets)
|
|
69
|
+
checkURLs(Array.isArray(urls) ? urls : [urls]);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
function checkURLs(urls) {
|
|
73
|
+
let id = null;
|
|
74
|
+
for (const url of urls) {
|
|
75
|
+
const protocol = resolveProtocol(url);
|
|
76
|
+
if (id === null)
|
|
77
|
+
id = protocol.id;
|
|
78
|
+
else if (id !== protocol.id)
|
|
79
|
+
throw new Error(`Origin has inconsistent protocols: ${id}, ${protocol.id}`);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
function resolveProtocol(reference) {
|
|
83
|
+
const url = new URL(reference);
|
|
84
|
+
for (const protocol of protocols_1.protocols)
|
|
85
|
+
if (protocol.protocols.includes(url.protocol))
|
|
86
|
+
return protocol;
|
|
87
|
+
throw new Error(`Protocol '${url.protocol}' is not supported.`);
|
|
88
|
+
}
|
|
89
|
+
const path = (0, node_path_1.resolve)(__dirname, '../schemas/annotation.cos.yaml');
|
|
90
|
+
const schema = schemas.schema(path);
|
|
91
|
+
//# sourceMappingURL=annotation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"annotation.js","sourceRoot":"","sources":["../source/annotation.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export const PREFIX: "TOA_ORIGINS_";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../source/constants.js"],"names":[],"mappings":"AAAA,YAAY,CAAA;AAEZ,OAAO,CAAC,MAAM,GAAG,cAAc,CAAA"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
const { PREFIX } = require('./constants');
|
|
3
|
+
const { overwrite, remap, letters: { up } } = require('@toa.io/generic');
|
|
4
|
+
/**
|
|
5
|
+
* @param {toa.core.Locator} locator
|
|
6
|
+
* @param {toa.origins.Manifest} manifest
|
|
7
|
+
*/
|
|
8
|
+
function apply(locator, manifest) {
|
|
9
|
+
const variable = PREFIX + locator.uppercase;
|
|
10
|
+
const envValue = readEnv(variable);
|
|
11
|
+
overwrite(manifest, envValue);
|
|
12
|
+
addCredentials(manifest, variable);
|
|
13
|
+
}
|
|
14
|
+
function readEnv(variable) {
|
|
15
|
+
if (!(variable in process.env))
|
|
16
|
+
return;
|
|
17
|
+
const base64 = process.env[variable];
|
|
18
|
+
const json = atob(base64);
|
|
19
|
+
return JSON.parse(json);
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* @param {toa.origins.Manifest} manifest
|
|
23
|
+
* @param {string} variable
|
|
24
|
+
*/
|
|
25
|
+
function addCredentials(manifest, variable) {
|
|
26
|
+
const prefix = variable + '_';
|
|
27
|
+
remap(manifest, (reference, origin) => {
|
|
28
|
+
const originPrefix = prefix + up(origin);
|
|
29
|
+
const username = process.env[originPrefix + '_USERNAME'];
|
|
30
|
+
const password = process.env[originPrefix + '_PASSWORD'];
|
|
31
|
+
if (username === undefined && password === undefined)
|
|
32
|
+
return;
|
|
33
|
+
const url = new URL(reference);
|
|
34
|
+
url.username = username;
|
|
35
|
+
url.password = password;
|
|
36
|
+
manifest[origin] = url.href;
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
exports.apply = apply;
|
|
40
|
+
//# sourceMappingURL=env.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"env.js","sourceRoot":"","sources":["../source/env.js"],"names":[],"mappings":"AAAA,YAAY,CAAA;AAEZ,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,aAAa,CAAC,CAAA;AACzC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAA;AAExE;;;GAGG;AACH,SAAS,KAAK,CAAE,OAAO,EAAE,QAAQ;IAC/B,MAAM,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAC,SAAS,CAAA;IAC3C,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAA;IAElC,SAAS,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;IAC7B,cAAc,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;AACpC,CAAC;AAED,SAAS,OAAO,CAAE,QAAQ;IACxB,IAAI,CAAC,CAAC,QAAQ,IAAI,OAAO,CAAC,GAAG,CAAC;QAAE,OAAM;IAEtC,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;IACpC,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,CAAA;IAEzB,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;AACzB,CAAC;AAED;;;GAGG;AACH,SAAS,cAAc,CAAE,QAAQ,EAAE,QAAQ;IACzC,MAAM,MAAM,GAAG,QAAQ,GAAG,GAAG,CAAA;IAE7B,KAAK,CAAC,QAAQ,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE;QACpC,MAAM,YAAY,GAAG,MAAM,GAAG,EAAE,CAAC,MAAM,CAAC,CAAA;QACxC,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,GAAG,WAAW,CAAC,CAAA;QACxD,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,GAAG,WAAW,CAAC,CAAA;QAExD,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,KAAK,SAAS;YAAE,OAAM;QAE5D,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,CAAA;QAE9B,GAAG,CAAC,QAAQ,GAAG,QAAQ,CAAA;QACvB,GAAG,CAAC,QAAQ,GAAG,QAAQ,CAAA;QAEvB,QAAQ,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,IAAI,CAAA;IAC7B,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,OAAO,CAAC,KAAK,GAAG,KAAK,CAAA"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { type Annotation } from './annotation';
|
|
2
|
+
import { type Manifest } from './manifest';
|
|
3
|
+
import type { Dependency } from '@toa.io/operations';
|
|
4
|
+
import type { context } from '@toa.io/norm';
|
|
5
|
+
export declare function deployment(instances: Instance[], annotation?: Annotation): Dependency;
|
|
6
|
+
export declare function manifest(manifest: Manifest): Manifest;
|
|
7
|
+
export declare const ID_PREFIX = "origins-";
|
|
8
|
+
export declare const ENV_PREFIX = "TOA_ORIGINS_";
|
|
9
|
+
export declare const PROPERTIES_SUFFIX = "__PROPERTIES";
|
|
10
|
+
export type Instance = context.Dependency<Manifest>;
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PROPERTIES_SUFFIX = exports.ENV_PREFIX = exports.ID_PREFIX = exports.manifest = exports.deployment = void 0;
|
|
4
|
+
const msgpackr_1 = require("msgpackr");
|
|
5
|
+
const pointer_1 = require("@toa.io/pointer");
|
|
6
|
+
const generic_1 = require("@toa.io/generic");
|
|
7
|
+
const annotation_1 = require("./annotation");
|
|
8
|
+
const manifest_1 = require("./manifest");
|
|
9
|
+
function deployment(instances, annotation = {}) {
|
|
10
|
+
(0, annotation_1.normalize)(instances, annotation);
|
|
11
|
+
const variables = {};
|
|
12
|
+
for (const instance of instances) {
|
|
13
|
+
const component = annotation[instance.locator.id];
|
|
14
|
+
const { origins, properties } = (0, annotation_1.split)(component);
|
|
15
|
+
const instanceVariables = createInstanceVariables(instance, origins);
|
|
16
|
+
const propertiesVariable = createPropertiesVariable(instance.locator, properties);
|
|
17
|
+
(0, generic_1.merge)(variables, instanceVariables);
|
|
18
|
+
(0, generic_1.merge)(variables, propertiesVariable);
|
|
19
|
+
}
|
|
20
|
+
return { variables };
|
|
21
|
+
}
|
|
22
|
+
exports.deployment = deployment;
|
|
23
|
+
function manifest(manifest) {
|
|
24
|
+
(0, manifest_1.validate)(manifest);
|
|
25
|
+
return manifest;
|
|
26
|
+
}
|
|
27
|
+
exports.manifest = manifest;
|
|
28
|
+
function createInstanceVariables(instance, origins) {
|
|
29
|
+
if (instance.manifest === null)
|
|
30
|
+
return {};
|
|
31
|
+
const label = instance.locator.label;
|
|
32
|
+
const id = exports.ID_PREFIX + label;
|
|
33
|
+
const selectors = Object.keys(instance.manifest);
|
|
34
|
+
const request = { group: label, selectors };
|
|
35
|
+
return (0, pointer_1.createVariables)(id, origins, [request]);
|
|
36
|
+
}
|
|
37
|
+
function createPropertiesVariable(locator, properties) {
|
|
38
|
+
const name = exports.ENV_PREFIX + locator.uppercase + exports.PROPERTIES_SUFFIX;
|
|
39
|
+
const value = (0, msgpackr_1.encode)(properties).toString('base64');
|
|
40
|
+
return {
|
|
41
|
+
[locator.label]: [
|
|
42
|
+
{ name, value }
|
|
43
|
+
]
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
exports.ID_PREFIX = 'origins-';
|
|
47
|
+
exports.ENV_PREFIX = 'TOA_ORIGINS_';
|
|
48
|
+
exports.PROPERTIES_SUFFIX = '__PROPERTIES';
|
|
49
|
+
//# sourceMappingURL=extension.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extension.js","sourceRoot":"","sources":["../source/extension.ts"],"names":[],"mappings":";;;AAAA,uCAAiC;AACjC,6CAA+D;AAC/D,6CAAuC;AACvC,6CAA+F;AAC/F,yCAAoD;AAKpD,SAAgB,UAAU,CAAE,SAAqB,EAAE,aAAyB,EAAE;IAC5E,IAAA,sBAAS,EAAC,SAAS,EAAE,UAAU,CAAC,CAAA;IAEhC,MAAM,SAAS,GAAc,EAAE,CAAA;IAE/B,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE;QAChC,MAAM,SAAS,GAAG,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;QACjD,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,IAAA,kBAAK,EAAC,SAAS,CAAC,CAAA;QAChD,MAAM,iBAAiB,GAAG,uBAAuB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;QACpE,MAAM,kBAAkB,GAAG,wBAAwB,CAAC,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC,CAAA;QAEjF,IAAA,eAAK,EAAC,SAAS,EAAE,iBAAiB,CAAC,CAAA;QACnC,IAAA,eAAK,EAAC,SAAS,EAAE,kBAAkB,CAAC,CAAA;KACrC;IAED,OAAO,EAAE,SAAS,EAAE,CAAA;AACtB,CAAC;AAhBD,gCAgBC;AAED,SAAgB,QAAQ,CAAE,QAAkB;IAC1C,IAAA,mBAAQ,EAAC,QAAQ,CAAC,CAAA;IAElB,OAAO,QAAQ,CAAA;AACjB,CAAC;AAJD,4BAIC;AAED,SAAS,uBAAuB,CAAE,QAAkB,EAAE,OAAgB;IACpE,IAAI,QAAQ,CAAC,QAAQ,KAAK,IAAI;QAAE,OAAO,EAAE,CAAA;IAEzC,MAAM,KAAK,GAAW,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAA;IAC5C,MAAM,EAAE,GAAG,iBAAS,GAAG,KAAK,CAAA;IAC5B,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA;IAChD,MAAM,OAAO,GAAY,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,CAAA;IAEpD,OAAO,IAAA,yBAAe,EAAC,EAAE,EAAE,OAAO,EAAE,CAAC,OAAO,CAAC,CAAC,CAAA;AAChD,CAAC;AAED,SAAS,wBAAwB,CAAE,OAAgB,EAAE,UAAsB;IACzE,MAAM,IAAI,GAAG,kBAAU,GAAG,OAAO,CAAC,SAAS,GAAG,yBAAiB,CAAA;IAC/D,MAAM,KAAK,GAAG,IAAA,iBAAM,EAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA;IAEnD,OAAO;QACL,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YACf,EAAE,IAAI,EAAE,KAAK,EAAE;SAChB;KACF,CAAA;AACH,CAAC;AAEY,QAAA,SAAS,GAAG,UAAU,CAAA;AACtB,QAAA,UAAU,GAAG,cAAc,CAAA;AAC3B,QAAA,iBAAiB,GAAG,cAAc,CAAA"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Factory = exports.manifest = exports.deployment = void 0;
|
|
4
|
+
var extension_1 = require("./extension");
|
|
5
|
+
Object.defineProperty(exports, "deployment", { enumerable: true, get: function () { return extension_1.deployment; } });
|
|
6
|
+
Object.defineProperty(exports, "manifest", { enumerable: true, get: function () { return extension_1.manifest; } });
|
|
7
|
+
var Factory_1 = require("./Factory");
|
|
8
|
+
Object.defineProperty(exports, "Factory", { enumerable: true, get: function () { return Factory_1.Factory; } });
|
|
9
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../source/index.ts"],"names":[],"mappings":";;;AAAA,yCAAkD;AAAzC,uGAAA,UAAU,OAAA;AAAE,qGAAA,QAAQ,OAAA;AAC7B,qCAAmC;AAA1B,kGAAA,OAAO,OAAA"}
|
|
@@ -0,0 +1,36 @@
|
|
|
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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
exports.validate = void 0;
|
|
27
|
+
const node_path_1 = require("node:path");
|
|
28
|
+
const schemas = __importStar(require("@toa.io/schemas"));
|
|
29
|
+
function validate(manifest) {
|
|
30
|
+
if (manifest !== null)
|
|
31
|
+
schema.validate(manifest);
|
|
32
|
+
}
|
|
33
|
+
exports.validate = validate;
|
|
34
|
+
const path = (0, node_path_1.resolve)(__dirname, '../schemas/manifest.cos.yaml');
|
|
35
|
+
const schema = schemas.schema(path);
|
|
36
|
+
//# sourceMappingURL=manifest.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manifest.js","sourceRoot":"","sources":["../source/manifest.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,yCAAmC;AACnC,yDAA0C;AAE1C,SAAgB,QAAQ,CAAE,QAAkB;IAC1C,IAAI,QAAQ,KAAK,IAAI;QAAE,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA;AAClD,CAAC;AAFD,4BAEC;AAED,MAAM,IAAI,GAAG,IAAA,mBAAO,EAAC,SAAS,EAAE,8BAA8B,CAAC,CAAA;AAC/D,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export function create(resolve: any): Aspect;
|
|
2
|
+
declare class Aspect extends Connector {
|
|
3
|
+
constructor(resolve: any);
|
|
4
|
+
name: "amqp";
|
|
5
|
+
invoke(origin: any, method: any, ...args: any[]): Promise<any>;
|
|
6
|
+
#private;
|
|
7
|
+
}
|
|
8
|
+
import { Connector } from "@toa.io/core";
|
|
9
|
+
export {};
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
const { assert } = require('comq');
|
|
3
|
+
const { Connector } = require('@toa.io/core');
|
|
4
|
+
const protocol = require('./index');
|
|
5
|
+
class Aspect extends Connector {
|
|
6
|
+
name = protocol.id;
|
|
7
|
+
#resolve;
|
|
8
|
+
/** @type {Record<string, Partial<comq.IO>>} */
|
|
9
|
+
#origins = {};
|
|
10
|
+
constructor(resolve) {
|
|
11
|
+
super();
|
|
12
|
+
this.#resolve = resolve;
|
|
13
|
+
}
|
|
14
|
+
async open() {
|
|
15
|
+
const cfg = await this.#resolve();
|
|
16
|
+
const promises = Object.entries(cfg.origins).map(this.#open);
|
|
17
|
+
await Promise.all(promises);
|
|
18
|
+
}
|
|
19
|
+
async close() {
|
|
20
|
+
const promises = Object.values(this.#origins).map(this.#close);
|
|
21
|
+
await Promise.all(promises);
|
|
22
|
+
}
|
|
23
|
+
async invoke(origin, method, ...args) {
|
|
24
|
+
if (this.#origins[origin]?.[method] === undefined) {
|
|
25
|
+
throw new Error(`Origin "${origin}" or method "${method}" is undefined`);
|
|
26
|
+
}
|
|
27
|
+
return this.#origins[origin][method](...args);
|
|
28
|
+
}
|
|
29
|
+
#open = async ([origin, references]) => {
|
|
30
|
+
const io = await assert(...references);
|
|
31
|
+
this.#origins[origin] = restrict(io);
|
|
32
|
+
};
|
|
33
|
+
#close = async (io) => {
|
|
34
|
+
await io.close();
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* @param {comq.IO} io
|
|
39
|
+
* @return {Partial<comq.IO>}
|
|
40
|
+
*/
|
|
41
|
+
function restrict(io) {
|
|
42
|
+
// noinspection JSUnresolvedReference
|
|
43
|
+
return {
|
|
44
|
+
request: (...args) => io.request(...args),
|
|
45
|
+
emit: (...args) => io.emit(...args),
|
|
46
|
+
close: () => io.close()
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
function create(resolve) {
|
|
50
|
+
return new Aspect(resolve);
|
|
51
|
+
}
|
|
52
|
+
exports.create = create;
|
|
53
|
+
//# sourceMappingURL=aspect.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"aspect.js","sourceRoot":"","sources":["../../../source/protocols/amqp/aspect.js"],"names":[],"mappings":"AAAA,YAAY,CAAA;AAEZ,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;AAClC,MAAM,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC,cAAc,CAAC,CAAA;AAC7C,MAAM,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAC,CAAA;AAEnC,MAAM,MAAO,SAAQ,SAAS;IAC5B,IAAI,GAAG,QAAQ,CAAC,EAAE,CAAA;IAElB,QAAQ,CAAA;IAER,+CAA+C;IAC/C,QAAQ,GAAG,EAAE,CAAA;IAEb,YAAa,OAAO;QAClB,KAAK,EAAE,CAAA;QAEP,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAA;IACzB,CAAC;IAED,KAAK,CAAC,IAAI;QACR,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAA;QACjC,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QAE5D,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;IAC7B,CAAC;IAED,KAAK,CAAC,KAAK;QACT,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QAE9D,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;IAC7B,CAAC;IAED,KAAK,CAAC,MAAM,CAAE,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI;QACnC,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,SAAS,EAAE;YACjD,MAAM,IAAI,KAAK,CAAC,WAAW,MAAM,gBAAgB,MAAM,gBAAgB,CAAC,CAAA;SACzE;QAED,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC,CAAA;IAC/C,CAAC;IAED,KAAK,GAAG,KAAK,EAAE,CAAC,MAAM,EAAE,UAAU,CAAC,EAAE,EAAE;QACrC,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,GAAG,UAAU,CAAC,CAAA;QAEtC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAA;IACtC,CAAC,CAAA;IAED,MAAM,GAAG,KAAK,EAAE,EAAE,EAAE,EAAE;QACpB,MAAM,EAAE,CAAC,KAAK,EAAE,CAAA;IAClB,CAAC,CAAA;CACF;AAED;;;GAGG;AACH,SAAS,QAAQ,CAAE,EAAE;IACnB,qCAAqC;IACrC,OAAO;QACL,OAAO,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;QACzC,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;QACnC,KAAK,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,KAAK,EAAE;KACxB,CAAA;AACH,CAAC;AAED,SAAS,MAAM,CAAE,OAAO;IACtB,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,CAAA;AAC5B,CAAC;AAED,OAAO,CAAC,MAAM,GAAG,MAAM,CAAA"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
const { letters: { up } } = require('@toa.io/generic');
|
|
3
|
+
const protocols = require('./protocols');
|
|
4
|
+
/**
|
|
5
|
+
* @param {toa.norm.context.dependencies.Instance[]} instances
|
|
6
|
+
* @returns {toa.deployment.dependency.Variables}
|
|
7
|
+
*/
|
|
8
|
+
function deployment(instances) {
|
|
9
|
+
/** @type {toa.deployment.dependency.Variables} */
|
|
10
|
+
const variables = {};
|
|
11
|
+
for (const { locator, manifest } of instances) {
|
|
12
|
+
const secrets = [];
|
|
13
|
+
for (const [origin, reference] of Object.entries(manifest)) {
|
|
14
|
+
let protocol;
|
|
15
|
+
const match = reference.match(RX);
|
|
16
|
+
if (match !== null)
|
|
17
|
+
protocol = match.groups.protocol;
|
|
18
|
+
if (protocols.includes(protocol)) {
|
|
19
|
+
const originSecrets = createSecrets(locator, origin);
|
|
20
|
+
secrets.push(...originSecrets);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
variables[locator.label] = secrets;
|
|
24
|
+
}
|
|
25
|
+
return variables;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* @param {toa.core.Locator} locator
|
|
29
|
+
* @param {string} origin
|
|
30
|
+
* @return {toa.deployment.dependency.Variable[]}
|
|
31
|
+
*/
|
|
32
|
+
function createSecrets(locator, origin) {
|
|
33
|
+
const properties = ['username', 'password'];
|
|
34
|
+
return properties.map((property) => createSecret(locator, origin, property));
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* @param {toa.core.Locator} locator
|
|
38
|
+
* @param {string} origin
|
|
39
|
+
* @param {string} property
|
|
40
|
+
* @return {toa.deployment.dependency.Variable}
|
|
41
|
+
*/
|
|
42
|
+
function createSecret(locator, origin, property) {
|
|
43
|
+
const variable = `TOA_ORIGINS_${locator.uppercase}_${up(origin)}_${up(property)}`;
|
|
44
|
+
const secret = `toa-origins-${locator.label}-${origin}`;
|
|
45
|
+
return {
|
|
46
|
+
name: variable,
|
|
47
|
+
secret: {
|
|
48
|
+
name: secret,
|
|
49
|
+
key: property
|
|
50
|
+
}
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
const RX = /^(?<protocol>\w{1,12}:)/;
|
|
54
|
+
exports.deployment = deployment;
|
|
55
|
+
//# sourceMappingURL=deployment.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deployment.js","sourceRoot":"","sources":["../../../source/protocols/amqp/deployment.js"],"names":[],"mappings":"AAAA,YAAY,CAAA;AAEZ,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAA;AACtD,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,CAAA;AAExC;;;GAGG;AACH,SAAS,UAAU,CAAE,SAAS;IAC5B,kDAAkD;IAClD,MAAM,SAAS,GAAG,EAAE,CAAA;IAEpB,KAAK,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,SAAS,EAAE;QAC7C,MAAM,OAAO,GAAG,EAAE,CAAA;QAElB,KAAK,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;YAC1D,IAAI,QAAQ,CAAA;YAEZ,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;YAEjC,IAAI,KAAK,KAAK,IAAI;gBAAE,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAA;YAEpD,IAAI,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;gBAChC,MAAM,aAAa,GAAG,aAAa,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;gBAEpD,OAAO,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,CAAA;aAC/B;SACF;QAED,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,OAAO,CAAA;KACnC;IAED,OAAO,SAAS,CAAA;AAClB,CAAC;AAED;;;;GAIG;AACH,SAAS,aAAa,CAAE,OAAO,EAAE,MAAM;IACrC,MAAM,UAAU,GAAG,CAAC,UAAU,EAAE,UAAU,CAAC,CAAA;IAE3C,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAA;AAC9E,CAAC;AAED;;;;;GAKG;AACH,SAAS,YAAY,CAAE,OAAO,EAAE,MAAM,EAAE,QAAQ;IAC9C,MAAM,QAAQ,GAAG,eAAe,OAAO,CAAC,SAAS,IAAI,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAA;IACjF,MAAM,MAAM,GAAG,eAAe,OAAO,CAAC,KAAK,IAAI,MAAM,EAAE,CAAA;IAEvD,OAAO;QACL,IAAI,EAAE,QAAQ;QACd,MAAM,EAAE;YACN,IAAI,EAAE,MAAM;YACZ,GAAG,EAAE,QAAQ;SACd;KACF,CAAA;AACH,CAAC;AAED,MAAM,EAAE,GAAG,yBAAyB,CAAA;AAEpC,OAAO,CAAC,UAAU,GAAG,UAAU,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export const id: "amqp";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"id.js","sourceRoot":"","sources":["../../../source/protocols/amqp/id.js"],"names":[],"mappings":"AAAA,YAAY,CAAA;AAEZ,OAAO,CAAC,EAAE,GAAG,MAAM,CAAA"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
const protocols = require('./protocols');
|
|
3
|
+
const { id } = require('./id');
|
|
4
|
+
const { create } = require('./aspect');
|
|
5
|
+
const { deployment } = require('./deployment');
|
|
6
|
+
exports.protocols = protocols;
|
|
7
|
+
exports.id = id;
|
|
8
|
+
exports.create = create;
|
|
9
|
+
exports.deployment = deployment;
|
|
10
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../source/protocols/amqp/index.js"],"names":[],"mappings":"AAAA,YAAY,CAAA;AAEZ,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,CAAA;AACxC,MAAM,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;AAC9B,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,UAAU,CAAC,CAAA;AACtC,MAAM,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC,cAAc,CAAC,CAAA;AAE9C,OAAO,CAAC,SAAS,GAAG,SAAS,CAAA;AAC7B,OAAO,CAAC,EAAE,GAAG,EAAE,CAAA;AACf,OAAO,CAAC,MAAM,GAAG,MAAM,CAAA;AACvB,OAAO,CAAC,UAAU,GAAG,UAAU,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"protocols.js","sourceRoot":"","sources":["../../../source/protocols/amqp/protocols.js"],"names":[],"mappings":"AAAA,YAAY,CAAA;AAEZ,MAAM,CAAC,OAAO,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
const { echo } = require('@toa.io/generic');
|
|
3
|
+
const { Connector } = require('@toa.io/core');
|
|
4
|
+
class Permissions extends Connector {
|
|
5
|
+
/** @type {RegExp[]} */
|
|
6
|
+
#allowances = [];
|
|
7
|
+
/** @type {RegExp[]} */
|
|
8
|
+
#denials = [];
|
|
9
|
+
#resolve;
|
|
10
|
+
constructor(resolve) {
|
|
11
|
+
super();
|
|
12
|
+
this.#resolve = resolve;
|
|
13
|
+
}
|
|
14
|
+
async open() {
|
|
15
|
+
const { properties } = await this.#resolve();
|
|
16
|
+
if (properties !== undefined)
|
|
17
|
+
this.#parse(properties);
|
|
18
|
+
}
|
|
19
|
+
test(url) {
|
|
20
|
+
const denial = this.#denials.findIndex((regexp) => regexp.test(url));
|
|
21
|
+
if (denial !== -1)
|
|
22
|
+
return false;
|
|
23
|
+
const allowance = this.#allowances.findIndex((regexp) => regexp.test(url));
|
|
24
|
+
return allowance !== -1;
|
|
25
|
+
}
|
|
26
|
+
#parse(properties) {
|
|
27
|
+
if ('null' in properties) {
|
|
28
|
+
const always = /** @type {RegExp} */ { test: () => true };
|
|
29
|
+
this.#addRule(always, properties.null);
|
|
30
|
+
delete properties.null;
|
|
31
|
+
}
|
|
32
|
+
for (const [key, rule] of Object.entries(properties)) {
|
|
33
|
+
const match = key.match(EXPRESSION);
|
|
34
|
+
if (match === null)
|
|
35
|
+
throw new Error(`'${key}' is not a regular expression`);
|
|
36
|
+
const expression = echo(match.groups.expression);
|
|
37
|
+
const regex = new RegExp(expression);
|
|
38
|
+
this.#addRule(regex, rule);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* @param {RegExp} regex
|
|
43
|
+
* @param {boolean} rule
|
|
44
|
+
*/
|
|
45
|
+
#addRule(regex, rule) {
|
|
46
|
+
const rules = rule ? this.#allowances : this.#denials;
|
|
47
|
+
rules.push(regex);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
const EXPRESSION = /^\/(?<expression>.+)\/$/;
|
|
51
|
+
exports.Permissions = Permissions;
|
|
52
|
+
//# sourceMappingURL=permissions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"permissions.js","sourceRoot":"","sources":["../../../../source/protocols/http/.aspect/permissions.js"],"names":[],"mappings":"AAAA,YAAY,CAAA;AAEZ,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAA;AAC3C,MAAM,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC,cAAc,CAAC,CAAA;AAE7C,MAAM,WAAY,SAAQ,SAAS;IACjC,uBAAuB;IACvB,WAAW,GAAG,EAAE,CAAA;IAEhB,uBAAuB;IACvB,QAAQ,GAAG,EAAE,CAAA;IAEb,QAAQ,CAAA;IAER,YAAa,OAAO;QAClB,KAAK,EAAE,CAAA;QAEP,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAA;IACzB,CAAC;IAED,KAAK,CAAC,IAAI;QACR,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAA;QAE5C,IAAI,UAAU,KAAK,SAAS;YAAE,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;IACvD,CAAC;IAED,IAAI,CAAE,GAAG;QACP,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;QAEpE,IAAI,MAAM,KAAK,CAAC,CAAC;YAAE,OAAO,KAAK,CAAA;QAE/B,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;QAE1E,OAAO,SAAS,KAAK,CAAC,CAAC,CAAA;IACzB,CAAC;IAED,MAAM,CAAE,UAAU;QAChB,IAAI,MAAM,IAAI,UAAU,EAAE;YACxB,MAAM,MAAM,GAAG,qBAAqB,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,CAAA;YAEzD,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC,IAAI,CAAC,CAAA;YACtC,OAAO,UAAU,CAAC,IAAI,CAAA;SACvB;QAED,KAAK,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;YACpD,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,CAAA;YAEnC,IAAI,KAAK,KAAK,IAAI;gBAAE,MAAM,IAAI,KAAK,CAAC,IAAI,GAAG,+BAA+B,CAAC,CAAA;YAE3E,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;YAChD,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,UAAU,CAAC,CAAA;YAEpC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;SAC3B;IACH,CAAC;IAED;;;OAGG;IACH,QAAQ,CAAE,KAAK,EAAE,IAAI;QACnB,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAA;QAErD,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IACnB,CAAC;CACF;AAED,MAAM,UAAU,GAAG,yBAAyB,CAAA;AAE5C,OAAO,CAAC,WAAW,GAAG,WAAW,CAAA"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export function create(resolve: any): Aspect;
|
|
2
|
+
declare class Aspect extends Connector {
|
|
3
|
+
constructor(resolve: any, permissions: any);
|
|
4
|
+
/** @readonly */
|
|
5
|
+
readonly name: "http";
|
|
6
|
+
invoke(name: any, path: any, request: any, options: any): Promise<any>;
|
|
7
|
+
#private;
|
|
8
|
+
}
|
|
9
|
+
import { Connector } from "@toa.io/core";
|
|
10
|
+
export {};
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
const fetch = require('node-fetch');
|
|
3
|
+
const { Connector } = require('@toa.io/core');
|
|
4
|
+
const { retry } = require('@toa.io/generic');
|
|
5
|
+
const { Permissions } = require('./.aspect/permissions');
|
|
6
|
+
const protocols = require('./protocols');
|
|
7
|
+
const protocol = require('./index');
|
|
8
|
+
class Aspect extends Connector {
|
|
9
|
+
/** @readonly */
|
|
10
|
+
name = protocol.id;
|
|
11
|
+
#resolve;
|
|
12
|
+
#origins;
|
|
13
|
+
#permissions;
|
|
14
|
+
constructor(resolve, permissions) {
|
|
15
|
+
super();
|
|
16
|
+
this.#resolve = resolve;
|
|
17
|
+
this.#permissions = permissions;
|
|
18
|
+
this.depends(permissions);
|
|
19
|
+
}
|
|
20
|
+
async open() {
|
|
21
|
+
const { origins } = await this.#resolve();
|
|
22
|
+
this.#origins = origins;
|
|
23
|
+
}
|
|
24
|
+
async invoke(name, path, request, options) {
|
|
25
|
+
let origin = this.#origins[name];
|
|
26
|
+
if (origin === undefined) {
|
|
27
|
+
if (isAbsoluteURL(name))
|
|
28
|
+
return this.#invokeURL(name, /** @type {Request} */ path);
|
|
29
|
+
else
|
|
30
|
+
throw new Error(`Origin '${name}' is not defined`);
|
|
31
|
+
}
|
|
32
|
+
// absolute urls are forbidden when using origins
|
|
33
|
+
if (typeof path === 'string' && isAbsoluteURL(path))
|
|
34
|
+
throw new Error(`Absolute URLs are forbidden (${path})`);
|
|
35
|
+
if (options?.substitutions !== undefined)
|
|
36
|
+
origin = substitute(origin, options.substitutions);
|
|
37
|
+
const url = path === undefined ? new URL(origin) : new URL(path, origin);
|
|
38
|
+
return this.#request(url.href, request, options?.retry);
|
|
39
|
+
}
|
|
40
|
+
async #invokeURL(url, request) {
|
|
41
|
+
if (this.#permissions.test(url) === false)
|
|
42
|
+
throw new Error(`URL '${url}' is not allowed`);
|
|
43
|
+
return this.#request(url, request);
|
|
44
|
+
}
|
|
45
|
+
async #request(url, request, options) {
|
|
46
|
+
const call = () => fetch(url, request);
|
|
47
|
+
if (options === undefined)
|
|
48
|
+
return call();
|
|
49
|
+
else
|
|
50
|
+
return this.#retry(call, options);
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* @param {Function} call
|
|
54
|
+
* @param {toa.generic.retry.Options} options
|
|
55
|
+
* @return {any}
|
|
56
|
+
*/
|
|
57
|
+
#retry(call, options) {
|
|
58
|
+
return retry(async (retry) => {
|
|
59
|
+
const response = await call();
|
|
60
|
+
if (Math.floor(response.status / 100) !== 2)
|
|
61
|
+
return retry();
|
|
62
|
+
return response;
|
|
63
|
+
}, options);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* @param {string} origin
|
|
68
|
+
* @param {string[]} substitutions
|
|
69
|
+
* @returns {string}
|
|
70
|
+
*/
|
|
71
|
+
function substitute(origin, substitutions) {
|
|
72
|
+
const replace = () => substitutions.shift();
|
|
73
|
+
return origin.replace(PLACEHOLDER, replace);
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* @param {string} path
|
|
77
|
+
* @returns {boolean}
|
|
78
|
+
*/
|
|
79
|
+
function isAbsoluteURL(path) {
|
|
80
|
+
return protocols.findIndex((protocol) => path.indexOf(protocol) === 0) !== -1;
|
|
81
|
+
}
|
|
82
|
+
const PLACEHOLDER = /\*/g;
|
|
83
|
+
function create(resolve) {
|
|
84
|
+
const permissions = new Permissions(resolve);
|
|
85
|
+
return new Aspect(resolve, permissions);
|
|
86
|
+
}
|
|
87
|
+
exports.create = create;
|
|
88
|
+
//# sourceMappingURL=aspect.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"aspect.js","sourceRoot":"","sources":["../../../source/protocols/http/aspect.js"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export const id: "http";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"id.js","sourceRoot":"","sources":["../../../source/protocols/http/id.js"],"names":[],"mappings":"AAAA,YAAY,CAAA;AAEZ,OAAO,CAAC,EAAE,GAAG,MAAM,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../source/protocols/http/index.js"],"names":[],"mappings":"AAAA,YAAY,CAAA;AAEZ,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,CAAA;AACxC,MAAM,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;AAC9B,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,UAAU,CAAC,CAAA;AAEtC,OAAO,CAAC,SAAS,GAAG,SAAS,CAAA;AAC7B,OAAO,CAAC,EAAE,GAAG,EAAE,CAAA;AACf,OAAO,CAAC,MAAM,GAAG,MAAM,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"protocols.js","sourceRoot":"","sources":["../../../source/protocols/http/protocols.js"],"names":[],"mappings":"AAAA,YAAY,CAAA;AAEZ,MAAM,CAAC,OAAO,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { type Resolver } from '../Factory';
|
|
2
|
+
import type { extensions } from '@toa.io/core';
|
|
3
|
+
export declare const protocols: Protocol[];
|
|
4
|
+
export interface Protocol {
|
|
5
|
+
id: ProtocolID;
|
|
6
|
+
protocols: string[];
|
|
7
|
+
create: (resolver: Resolver) => extensions.Aspect;
|
|
8
|
+
}
|
|
9
|
+
export type ProtocolID = 'http' | 'amqp';
|
|
@@ -0,0 +1,10 @@
|
|
|
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.protocols = void 0;
|
|
7
|
+
const amqp_1 = __importDefault(require("./amqp"));
|
|
8
|
+
const http_1 = __importDefault(require("./http"));
|
|
9
|
+
exports.protocols = [http_1.default, amqp_1.default];
|
|
10
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../source/protocols/index.ts"],"names":[],"mappings":"AAAA,YAAY,CAAA;;;;;;AAGZ,kDAAyB;AACzB,kDAAyB;AAGZ,QAAA,SAAS,GAAe,CAAC,cAAI,EAAE,cAAI,CAAC,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":"4.9.5"}
|