@toa.io/extensions.origins 1.0.0-alpha.0 → 1.0.0-alpha.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (58) hide show
  1. package/package.json +7 -7
  2. package/source/annotation.ts +2 -1
  3. package/source/manifest.ts +2 -1
  4. package/transpiled/Factory.d.ts +17 -0
  5. package/transpiled/Factory.js +65 -0
  6. package/transpiled/Factory.js.map +1 -0
  7. package/transpiled/annotation.d.ts +10 -0
  8. package/transpiled/annotation.js +91 -0
  9. package/transpiled/annotation.js.map +1 -0
  10. package/transpiled/constants.d.ts +1 -0
  11. package/transpiled/constants.js +3 -0
  12. package/transpiled/constants.js.map +1 -0
  13. package/transpiled/env.d.ts +5 -0
  14. package/transpiled/env.js +40 -0
  15. package/transpiled/env.js.map +1 -0
  16. package/transpiled/extension.d.ts +10 -0
  17. package/transpiled/extension.js +49 -0
  18. package/transpiled/extension.js.map +1 -0
  19. package/transpiled/index.d.ts +2 -0
  20. package/transpiled/index.js +9 -0
  21. package/transpiled/index.js.map +1 -0
  22. package/transpiled/manifest.d.ts +2 -0
  23. package/transpiled/manifest.js +36 -0
  24. package/transpiled/manifest.js.map +1 -0
  25. package/transpiled/protocols/amqp/aspect.d.ts +11 -0
  26. package/transpiled/protocols/amqp/aspect.js +53 -0
  27. package/transpiled/protocols/amqp/aspect.js.map +1 -0
  28. package/transpiled/protocols/amqp/deployment.d.ts +5 -0
  29. package/transpiled/protocols/amqp/deployment.js +55 -0
  30. package/transpiled/protocols/amqp/deployment.js.map +1 -0
  31. package/transpiled/protocols/amqp/id.d.ts +1 -0
  32. package/transpiled/protocols/amqp/id.js +3 -0
  33. package/transpiled/protocols/amqp/id.js.map +1 -0
  34. package/transpiled/protocols/amqp/index.d.ts +5 -0
  35. package/transpiled/protocols/amqp/index.js +10 -0
  36. package/transpiled/protocols/amqp/index.js.map +1 -0
  37. package/transpiled/protocols/amqp/protocols.d.ts +2 -0
  38. package/transpiled/protocols/amqp/protocols.js +3 -0
  39. package/transpiled/protocols/amqp/protocols.js.map +1 -0
  40. package/transpiled/protocols/http/.aspect/permissions.d.ts +7 -0
  41. package/transpiled/protocols/http/.aspect/permissions.js +52 -0
  42. package/transpiled/protocols/http/.aspect/permissions.js.map +1 -0
  43. package/transpiled/protocols/http/aspect.d.ts +11 -0
  44. package/transpiled/protocols/http/aspect.js +87 -0
  45. package/transpiled/protocols/http/aspect.js.map +1 -0
  46. package/transpiled/protocols/http/id.d.ts +1 -0
  47. package/transpiled/protocols/http/id.js +3 -0
  48. package/transpiled/protocols/http/id.js.map +1 -0
  49. package/transpiled/protocols/http/index.d.ts +4 -0
  50. package/transpiled/protocols/http/index.js +8 -0
  51. package/transpiled/protocols/http/index.js.map +1 -0
  52. package/transpiled/protocols/http/protocols.d.ts +2 -0
  53. package/transpiled/protocols/http/protocols.js +3 -0
  54. package/transpiled/protocols/http/protocols.js.map +1 -0
  55. package/transpiled/protocols/index.d.ts +9 -0
  56. package/transpiled/protocols/index.js +10 -0
  57. package/transpiled/protocols/index.js.map +1 -0
  58. 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": "1.0.0-alpha.0",
3
+ "version": "1.0.0-alpha.11",
4
4
  "description": "Toa Origins",
5
5
  "author": "temich <tema.gurtovoy@gmail.com>",
6
6
  "homepage": "https://github.com/toa-io/toa#readme",
@@ -17,12 +17,12 @@
17
17
  "main": "transpiled/index.js",
18
18
  "types": "transpiled/index.d.ts",
19
19
  "dependencies": {
20
- "@toa.io/core": "1.0.0-alpha.0",
21
- "@toa.io/generic": "1.0.0-alpha.0",
22
- "@toa.io/pointer": "1.0.0-alpha.0",
23
- "@toa.io/schemas": "1.0.0-alpha.0",
20
+ "@toa.io/core": "1.0.0-alpha.11",
21
+ "@toa.io/generic": "1.0.0-alpha.11",
22
+ "@toa.io/pointer": "1.0.0-alpha.11",
23
+ "@toa.io/schemas": "1.0.0-alpha.11",
24
24
  "comq": "0.10.1",
25
- "msgpackr": "1.9.5"
25
+ "msgpackr": "1.10.1"
26
26
  },
27
27
  "scripts": {
28
28
  "transpile": "tsc"
@@ -31,5 +31,5 @@
31
31
  "preset": "ts-jest",
32
32
  "testEnvironment": "node"
33
33
  },
34
- "gitHead": "06c64546f6292cc07c52f74b31415101037f7616"
34
+ "gitHead": "e343ac81eef12957cfa5e520119b1276b8ec0ad2"
35
35
  }
@@ -1,6 +1,7 @@
1
1
  import { resolve } from 'node:path'
2
2
  import * as schemas from '@toa.io/schemas'
3
3
  import { type Protocol, protocols } from './protocols'
4
+ import type { Schema } from '@toa.io/schemas'
4
5
  import type { Instance } from './extension'
5
6
 
6
7
  export function normalize (instances: Instance[], annotation: Annotation): void {
@@ -75,7 +76,7 @@ function resolveProtocol (reference: string): Protocol {
75
76
  }
76
77
 
77
78
  const path = resolve(__dirname, '../schemas/annotation.cos.yaml')
78
- const schema = schemas.schema(path)
79
+ const schema: Schema<any> = schemas.schema(path)
79
80
 
80
81
  export type Component = Origins | Properties
81
82
  export type Annotation = Record<string, Component>
@@ -1,11 +1,12 @@
1
1
  import { resolve } from 'node:path'
2
2
  import * as schemas from '@toa.io/schemas'
3
+ import type { Schema } from '@toa.io/schemas'
3
4
 
4
5
  export function validate (manifest: Manifest): void {
5
6
  if (manifest !== null) schema.validate(manifest)
6
7
  }
7
8
 
8
9
  const path = resolve(__dirname, '../schemas/manifest.cos.yaml')
9
- const schema = schemas.schema(path)
10
+ const schema: Schema<any> = schemas.schema(path)
10
11
 
11
12
  export type Manifest = Record<string, string | null> | null
@@ -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,3 @@
1
+ 'use strict';
2
+ exports.PREFIX = 'TOA_ORIGINS_';
3
+ //# sourceMappingURL=constants.js.map
@@ -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,5 @@
1
+ /**
2
+ * @param {toa.core.Locator} locator
3
+ * @param {toa.origins.Manifest} manifest
4
+ */
5
+ export function apply(locator: toa.core.Locator, manifest: toa.origins.Manifest): void;
@@ -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,CAAC;QACjC,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;IACtC,CAAC;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,2 @@
1
+ export { deployment, manifest } from './extension';
2
+ export { Factory } from './Factory';
@@ -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,2 @@
1
+ export declare function validate(manifest: Manifest): void;
2
+ export type Manifest = Record<string, string | null> | null;
@@ -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;AAG1C,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,GAAgB,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA"}
@@ -0,0 +1,11 @@
1
+ export function create(resolve: any): Aspect;
2
+ declare class Aspect extends Connector {
3
+ constructor(resolve: any);
4
+ name: "amqp";
5
+ open(): Promise<void>;
6
+ close(): Promise<void>;
7
+ invoke(origin: any, method: any, ...args: any[]): Promise<any>;
8
+ #private;
9
+ }
10
+ import { Connector } from "@toa.io/core";
11
+ 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,CAAC;YAClD,MAAM,IAAI,KAAK,CAAC,WAAW,MAAM,gBAAgB,MAAM,gBAAgB,CAAC,CAAA;QAC1E,CAAC;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,5 @@
1
+ /**
2
+ * @param {toa.norm.context.dependencies.Instance[]} instances
3
+ * @returns {toa.deployment.dependency.Variables}
4
+ */
5
+ export function deployment(instances: toa.norm.context.dependencies.Instance[]): toa.deployment.dependency.Variables;
@@ -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,CAAC;QAC9C,MAAM,OAAO,GAAG,EAAE,CAAA;QAElB,KAAK,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC3D,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,CAAC;gBACjC,MAAM,aAAa,GAAG,aAAa,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;gBAEpD,OAAO,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,CAAA;YAChC,CAAC;QACH,CAAC;QAED,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,OAAO,CAAA;IACpC,CAAC;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,3 @@
1
+ 'use strict';
2
+ exports.id = 'amqp';
3
+ //# sourceMappingURL=id.js.map
@@ -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,5 @@
1
+ import protocols = require("./protocols");
2
+ import { id } from "./id";
3
+ import { create } from "./aspect";
4
+ import { deployment } from "./deployment";
5
+ export { protocols, id, create, deployment };
@@ -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,2 @@
1
+ declare const _exports: string[];
2
+ export = _exports;
@@ -0,0 +1,3 @@
1
+ 'use strict';
2
+ module.exports = ['amqp:', 'amqps:'];
3
+ //# sourceMappingURL=protocols.js.map
@@ -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,7 @@
1
+ export class Permissions extends Connector {
2
+ constructor(resolve: any);
3
+ open(): Promise<void>;
4
+ test(url: any): boolean;
5
+ #private;
6
+ }
7
+ import { Connector } from "@toa.io/core";
@@ -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,CAAC;YACzB,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;QACxB,CAAC;QAED,KAAK,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;YACrD,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;QAC5B,CAAC;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,11 @@
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
+ open(): Promise<void>;
7
+ invoke(name: any, path: any, request: any, options: any): Promise<any>;
8
+ #private;
9
+ }
10
+ import { Connector } from "@toa.io/core";
11
+ export {};
@@ -0,0 +1,87 @@
1
+ 'use strict';
2
+ const { Connector } = require('@toa.io/core');
3
+ const { retry } = require('@toa.io/generic');
4
+ const { Permissions } = require('./.aspect/permissions');
5
+ const protocols = require('./protocols');
6
+ const protocol = require('./index');
7
+ class Aspect extends Connector {
8
+ /** @readonly */
9
+ name = protocol.id;
10
+ #resolve;
11
+ #origins;
12
+ #permissions;
13
+ constructor(resolve, permissions) {
14
+ super();
15
+ this.#resolve = resolve;
16
+ this.#permissions = permissions;
17
+ this.depends(permissions);
18
+ }
19
+ async open() {
20
+ const { origins } = await this.#resolve();
21
+ this.#origins = origins;
22
+ }
23
+ async invoke(name, path, request, options) {
24
+ let origin = this.#origins[name];
25
+ if (origin === undefined) {
26
+ if (isAbsoluteURL(name))
27
+ return this.#invokeURL(name, /** @type {Request} */ path);
28
+ else
29
+ throw new Error(`Origin '${name}' is not defined`);
30
+ }
31
+ // absolute urls are forbidden when using origins
32
+ if (typeof path === 'string' && isAbsoluteURL(path))
33
+ throw new Error(`Absolute URLs are forbidden (${path})`);
34
+ if (options?.substitutions !== undefined)
35
+ origin = substitute(origin, options.substitutions);
36
+ const url = path === undefined ? new URL(origin) : new URL(path, origin);
37
+ return this.#request(url.href, request, options?.retry);
38
+ }
39
+ async #invokeURL(url, request) {
40
+ if (this.#permissions.test(url) === false)
41
+ throw new Error(`URL '${url}' is not allowed`);
42
+ return this.#request(url, request);
43
+ }
44
+ async #request(url, request, options) {
45
+ const call = () => fetch(url, request);
46
+ if (options === undefined)
47
+ return call();
48
+ else
49
+ return this.#retry(call, options);
50
+ }
51
+ /**
52
+ * @param {Function} call
53
+ * @param {toa.generic.retry.Options} options
54
+ * @return {any}
55
+ */
56
+ #retry(call, options) {
57
+ return retry(async (retry) => {
58
+ const response = await call();
59
+ if (Math.floor(response.status / 100) !== 2)
60
+ return retry();
61
+ return response;
62
+ }, options);
63
+ }
64
+ }
65
+ /**
66
+ * @param {string} origin
67
+ * @param {string[]} substitutions
68
+ * @returns {string}
69
+ */
70
+ function substitute(origin, substitutions) {
71
+ const replace = () => substitutions.shift();
72
+ return origin.replace(PLACEHOLDER, replace);
73
+ }
74
+ /**
75
+ * @param {string} path
76
+ * @returns {boolean}
77
+ */
78
+ function isAbsoluteURL(path) {
79
+ return protocols.findIndex((protocol) => path.indexOf(protocol) === 0) !== -1;
80
+ }
81
+ const PLACEHOLDER = /\*/g;
82
+ function create(resolve) {
83
+ const permissions = new Permissions(resolve);
84
+ return new Aspect(resolve, permissions);
85
+ }
86
+ exports.create = create;
87
+ //# 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,3 @@
1
+ 'use strict';
2
+ exports.id = 'http';
3
+ //# sourceMappingURL=id.js.map
@@ -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,4 @@
1
+ import protocols = require("./protocols");
2
+ import { id } from "./id";
3
+ import { create } from "./aspect";
4
+ export { protocols, id, create };
@@ -0,0 +1,8 @@
1
+ 'use strict';
2
+ const protocols = require('./protocols');
3
+ const { id } = require('./id');
4
+ const { create } = require('./aspect');
5
+ exports.protocols = protocols;
6
+ exports.id = id;
7
+ exports.create = create;
8
+ //# sourceMappingURL=index.js.map
@@ -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,2 @@
1
+ declare const _exports: string[];
2
+ export = _exports;
@@ -0,0 +1,3 @@
1
+ 'use strict';
2
+ module.exports = ['http:', 'https:'];
3
+ //# sourceMappingURL=protocols.js.map
@@ -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
+ {"program":{"fileNames":["../../../node_modules/typescript/lib/lib.es5.d.ts","../../../node_modules/typescript/lib/lib.es2015.d.ts","../../../node_modules/typescript/lib/lib.es2016.d.ts","../../../node_modules/typescript/lib/lib.es2017.d.ts","../../../node_modules/typescript/lib/lib.es2018.d.ts","../../../node_modules/typescript/lib/lib.es2019.d.ts","../../../node_modules/typescript/lib/lib.es2020.d.ts","../../../node_modules/typescript/lib/lib.es2021.d.ts","../../../node_modules/typescript/lib/lib.es2022.d.ts","../../../node_modules/typescript/lib/lib.es2023.d.ts","../../../node_modules/typescript/lib/lib.esnext.d.ts","../../../node_modules/typescript/lib/lib.dom.d.ts","../../../node_modules/typescript/lib/lib.dom.iterable.d.ts","../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts","../../../node_modules/typescript/lib/lib.scripthost.d.ts","../../../node_modules/typescript/lib/lib.es2015.core.d.ts","../../../node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../node_modules/typescript/lib/lib.es2017.date.d.ts","../../../node_modules/typescript/lib/lib.es2017.object.d.ts","../../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.es2017.string.d.ts","../../../node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../node_modules/typescript/lib/lib.es2019.array.d.ts","../../../node_modules/typescript/lib/lib.es2019.object.d.ts","../../../node_modules/typescript/lib/lib.es2019.string.d.ts","../../../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../node_modules/typescript/lib/lib.es2019.intl.d.ts","../../../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../node_modules/typescript/lib/lib.es2020.date.d.ts","../../../node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.es2020.string.d.ts","../../../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../node_modules/typescript/lib/lib.es2020.number.d.ts","../../../node_modules/typescript/lib/lib.es2021.promise.d.ts","../../../node_modules/typescript/lib/lib.es2021.string.d.ts","../../../node_modules/typescript/lib/lib.es2021.weakref.d.ts","../../../node_modules/typescript/lib/lib.es2021.intl.d.ts","../../../node_modules/typescript/lib/lib.es2022.array.d.ts","../../../node_modules/typescript/lib/lib.es2022.error.d.ts","../../../node_modules/typescript/lib/lib.es2022.intl.d.ts","../../../node_modules/typescript/lib/lib.es2022.object.d.ts","../../../node_modules/typescript/lib/lib.es2022.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.es2022.string.d.ts","../../../node_modules/typescript/lib/lib.es2022.regexp.d.ts","../../../node_modules/typescript/lib/lib.es2023.array.d.ts","../../../node_modules/typescript/lib/lib.es2023.collection.d.ts","../../../node_modules/typescript/lib/lib.esnext.intl.d.ts","../../../node_modules/typescript/lib/lib.esnext.disposable.d.ts","../../../node_modules/typescript/lib/lib.esnext.decorators.d.ts","../../../node_modules/typescript/lib/lib.decorators.d.ts","../../../node_modules/typescript/lib/lib.decorators.legacy.d.ts","../../../node_modules/typescript/lib/lib.esnext.full.d.ts","../../../node_modules/msgpackr/index.d.ts","../../../operations/types/dependency.d.ts","../../../operations/types/index.d.ts","../../../libraries/pointer/transpiled/Deployment.d.ts","../../../libraries/pointer/transpiled/annotation.d.ts","../../../libraries/pointer/transpiled/createVariables.d.ts","../../../libraries/pointer/transpiled/resolve.d.ts","../../../libraries/pointer/transpiled/naming.d.ts","../../../libraries/pointer/transpiled/index.d.ts","../../../libraries/generic/types/promex.d.ts","../../../libraries/generic/types/merge.d.ts","../../../libraries/generic/types/map.d.ts","../../../libraries/generic/types/letters.d.ts","../../../libraries/generic/types/index.d.ts","../source/protocols/amqp/protocols.js","../source/protocols/amqp/id.js","../../../node_modules/comq/types/diagnostic.d.ts","../../../node_modules/comq/types/channel.d.ts","../../../node_modules/comq/types/encoding.d.ts","../../../node_modules/comq/types/topology.d.ts","../../../node_modules/comq/types/amqp.d.ts","../../../node_modules/comq/types/io.d.ts","../../../node_modules/comq/types/connection.d.ts","../../../node_modules/comq/types/index.d.ts","../../../runtime/core/types/bindings.d.ts","../../../runtime/core/types/connector.d.ts","../../../runtime/core/types/locator.d.ts","../../../runtime/core/types/exception.d.ts","../../../runtime/core/types/request.d.ts","../../../runtime/core/types/component.d.ts","../../../runtime/core/types/context.d.ts","../../../runtime/core/types/storages.d.ts","../../../runtime/core/types/extensions.d.ts","../../../runtime/core/types/bridges.ts","../../../runtime/core/types/operations.d.ts","../../../runtime/core/types/message.d.ts","../../../runtime/core/types/receiver.d.ts","../../../runtime/core/types/index.ts","../source/protocols/amqp/aspect.js","../source/protocols/amqp/deployment.js","../source/protocols/amqp/index.js","../source/protocols/http/protocols.js","../source/protocols/http/id.js","../source/protocols/http/.aspect/permissions.js","../source/protocols/http/aspect.js","../source/protocols/http/index.js","../source/protocols/index.ts","../../../libraries/schemas/types/schema.d.ts","../../../libraries/schemas/types/namespace.d.ts","../../../libraries/schemas/types/index.d.ts","../source/annotation.ts","../source/manifest.ts","../../../runtime/norm/types/component.d.ts","../../../runtime/norm/types/context/declaration.d.ts","../../../runtime/norm/types/context.d.ts","../../../runtime/norm/types/index.d.ts","../source/extension.ts","../source/Factory.ts","../source/constants.js","../source/env.js","../source/index.ts","../../../node_modules/@babel/types/lib/index.d.ts","../../../node_modules/@types/babel__generator/index.d.ts","../../../node_modules/@babel/parser/typings/babel-parser.d.ts","../../../node_modules/@types/babel__template/index.d.ts","../../../node_modules/@types/babel__traverse/index.d.ts","../../../node_modules/@types/babel__core/index.d.ts","../../../node_modules/@types/bcryptjs/index.d.ts","../../../node_modules/@types/cookie/index.d.ts","../../../node_modules/@types/node/assert.d.ts","../../../node_modules/@types/node/assert/strict.d.ts","../../../node_modules/buffer/index.d.ts","../../../node_modules/undici-types/header.d.ts","../../../node_modules/undici-types/readable.d.ts","../../../node_modules/undici-types/file.d.ts","../../../node_modules/undici-types/fetch.d.ts","../../../node_modules/undici-types/formdata.d.ts","../../../node_modules/undici-types/connector.d.ts","../../../node_modules/undici-types/client.d.ts","../../../node_modules/undici-types/errors.d.ts","../../../node_modules/undici-types/dispatcher.d.ts","../../../node_modules/undici-types/global-dispatcher.d.ts","../../../node_modules/undici-types/global-origin.d.ts","../../../node_modules/undici-types/pool-stats.d.ts","../../../node_modules/undici-types/pool.d.ts","../../../node_modules/undici-types/handlers.d.ts","../../../node_modules/undici-types/balanced-pool.d.ts","../../../node_modules/undici-types/agent.d.ts","../../../node_modules/undici-types/mock-interceptor.d.ts","../../../node_modules/undici-types/mock-agent.d.ts","../../../node_modules/undici-types/mock-client.d.ts","../../../node_modules/undici-types/mock-pool.d.ts","../../../node_modules/undici-types/mock-errors.d.ts","../../../node_modules/undici-types/proxy-agent.d.ts","../../../node_modules/undici-types/api.d.ts","../../../node_modules/undici-types/cookies.d.ts","../../../node_modules/undici-types/patch.d.ts","../../../node_modules/undici-types/filereader.d.ts","../../../node_modules/undici-types/diagnostics-channel.d.ts","../../../node_modules/undici-types/websocket.d.ts","../../../node_modules/undici-types/content-type.d.ts","../../../node_modules/undici-types/cache.d.ts","../../../node_modules/undici-types/interceptors.d.ts","../../../node_modules/undici-types/index.d.ts","../../../node_modules/@types/node/globals.d.ts","../../../node_modules/@types/node/async_hooks.d.ts","../../../node_modules/@types/node/buffer.d.ts","../../../node_modules/@types/node/child_process.d.ts","../../../node_modules/@types/node/cluster.d.ts","../../../node_modules/@types/node/console.d.ts","../../../node_modules/@types/node/constants.d.ts","../../../node_modules/@types/node/crypto.d.ts","../../../node_modules/@types/node/dgram.d.ts","../../../node_modules/@types/node/diagnostics_channel.d.ts","../../../node_modules/@types/node/dns.d.ts","../../../node_modules/@types/node/dns/promises.d.ts","../../../node_modules/@types/node/domain.d.ts","../../../node_modules/@types/node/dom-events.d.ts","../../../node_modules/@types/node/events.d.ts","../../../node_modules/@types/node/fs.d.ts","../../../node_modules/@types/node/fs/promises.d.ts","../../../node_modules/@types/node/http.d.ts","../../../node_modules/@types/node/http2.d.ts","../../../node_modules/@types/node/https.d.ts","../../../node_modules/@types/node/inspector.d.ts","../../../node_modules/@types/node/module.d.ts","../../../node_modules/@types/node/net.d.ts","../../../node_modules/@types/node/os.d.ts","../../../node_modules/@types/node/path.d.ts","../../../node_modules/@types/node/perf_hooks.d.ts","../../../node_modules/@types/node/process.d.ts","../../../node_modules/@types/node/punycode.d.ts","../../../node_modules/@types/node/querystring.d.ts","../../../node_modules/@types/node/readline.d.ts","../../../node_modules/@types/node/readline/promises.d.ts","../../../node_modules/@types/node/repl.d.ts","../../../node_modules/@types/node/stream.d.ts","../../../node_modules/@types/node/stream/promises.d.ts","../../../node_modules/@types/node/stream/consumers.d.ts","../../../node_modules/@types/node/stream/web.d.ts","../../../node_modules/@types/node/string_decoder.d.ts","../../../node_modules/@types/node/test.d.ts","../../../node_modules/@types/node/timers.d.ts","../../../node_modules/@types/node/timers/promises.d.ts","../../../node_modules/@types/node/tls.d.ts","../../../node_modules/@types/node/trace_events.d.ts","../../../node_modules/@types/node/tty.d.ts","../../../node_modules/@types/node/url.d.ts","../../../node_modules/@types/node/util.d.ts","../../../node_modules/@types/node/v8.d.ts","../../../node_modules/@types/node/vm.d.ts","../../../node_modules/@types/node/wasi.d.ts","../../../node_modules/@types/node/worker_threads.d.ts","../../../node_modules/@types/node/zlib.d.ts","../../../node_modules/@types/node/globals.global.d.ts","../../../node_modules/@types/node/index.d.ts","../../../node_modules/@types/cors/index.d.ts","../../../node_modules/minimatch/dist/cjs/ast.d.ts","../../../node_modules/minimatch/dist/cjs/escape.d.ts","../../../node_modules/minimatch/dist/cjs/unescape.d.ts","../../../node_modules/minimatch/dist/cjs/index.d.ts","../../../node_modules/@types/glob/index.d.ts","../../../node_modules/@types/graceful-fs/index.d.ts","../../../node_modules/@types/istanbul-lib-coverage/index.d.ts","../../../node_modules/@types/istanbul-lib-report/index.d.ts","../../../node_modules/@types/istanbul-reports/index.d.ts","../../../node_modules/@jest/expect-utils/build/index.d.ts","../../../node_modules/chalk/index.d.ts","../../../node_modules/@sinclair/typebox/typebox.d.ts","../../../node_modules/@jest/schemas/build/index.d.ts","../../../node_modules/pretty-format/build/index.d.ts","../../../node_modules/jest-matcher-utils/node_modules/jest-diff/build/index.d.ts","../../../node_modules/jest-matcher-utils/build/index.d.ts","../../../node_modules/expect/build/index.d.ts","../../../node_modules/@types/jest/index.d.ts","../../../node_modules/@types/js-yaml/index.d.ts","../../../node_modules/@types/json-schema/index.d.ts","../../../node_modules/@types/json5/index.d.ts","../../../node_modules/@types/lodash/common/common.d.ts","../../../node_modules/@types/lodash/common/array.d.ts","../../../node_modules/@types/lodash/common/collection.d.ts","../../../node_modules/@types/lodash/common/date.d.ts","../../../node_modules/@types/lodash/common/function.d.ts","../../../node_modules/@types/lodash/common/lang.d.ts","../../../node_modules/@types/lodash/common/math.d.ts","../../../node_modules/@types/lodash/common/number.d.ts","../../../node_modules/@types/lodash/common/object.d.ts","../../../node_modules/@types/lodash/common/seq.d.ts","../../../node_modules/@types/lodash/common/string.d.ts","../../../node_modules/@types/lodash/common/util.d.ts","../../../node_modules/@types/lodash/index.d.ts","../../../node_modules/@types/minimatch/index.d.ts","../../../node_modules/@types/minimist/index.d.ts","../../../node_modules/@types/mute-stream/index.d.ts","../../../node_modules/@types/negotiator/index.d.ts","../../../node_modules/@types/normalize-package-data/index.d.ts","../../../node_modules/@types/parse-json/index.d.ts","../../../node_modules/@types/prettier/index.d.ts","../../../node_modules/@types/randomstring/index.d.ts","../../../node_modules/@types/semver/classes/semver.d.ts","../../../node_modules/@types/semver/functions/parse.d.ts","../../../node_modules/@types/semver/functions/valid.d.ts","../../../node_modules/@types/semver/functions/clean.d.ts","../../../node_modules/@types/semver/functions/inc.d.ts","../../../node_modules/@types/semver/functions/diff.d.ts","../../../node_modules/@types/semver/functions/major.d.ts","../../../node_modules/@types/semver/functions/minor.d.ts","../../../node_modules/@types/semver/functions/patch.d.ts","../../../node_modules/@types/semver/functions/prerelease.d.ts","../../../node_modules/@types/semver/functions/compare.d.ts","../../../node_modules/@types/semver/functions/rcompare.d.ts","../../../node_modules/@types/semver/functions/compare-loose.d.ts","../../../node_modules/@types/semver/functions/compare-build.d.ts","../../../node_modules/@types/semver/functions/sort.d.ts","../../../node_modules/@types/semver/functions/rsort.d.ts","../../../node_modules/@types/semver/functions/gt.d.ts","../../../node_modules/@types/semver/functions/lt.d.ts","../../../node_modules/@types/semver/functions/eq.d.ts","../../../node_modules/@types/semver/functions/neq.d.ts","../../../node_modules/@types/semver/functions/gte.d.ts","../../../node_modules/@types/semver/functions/lte.d.ts","../../../node_modules/@types/semver/functions/cmp.d.ts","../../../node_modules/@types/semver/functions/coerce.d.ts","../../../node_modules/@types/semver/classes/comparator.d.ts","../../../node_modules/@types/semver/classes/range.d.ts","../../../node_modules/@types/semver/functions/satisfies.d.ts","../../../node_modules/@types/semver/ranges/max-satisfying.d.ts","../../../node_modules/@types/semver/ranges/min-satisfying.d.ts","../../../node_modules/@types/semver/ranges/to-comparators.d.ts","../../../node_modules/@types/semver/ranges/min-version.d.ts","../../../node_modules/@types/semver/ranges/valid.d.ts","../../../node_modules/@types/semver/ranges/outside.d.ts","../../../node_modules/@types/semver/ranges/gtr.d.ts","../../../node_modules/@types/semver/ranges/ltr.d.ts","../../../node_modules/@types/semver/ranges/intersects.d.ts","../../../node_modules/@types/semver/ranges/simplify.d.ts","../../../node_modules/@types/semver/ranges/subset.d.ts","../../../node_modules/@types/semver/internals/identifiers.d.ts","../../../node_modules/@types/semver/index.d.ts","../../../node_modules/@types/ssh2-streams/index.d.ts","../../../node_modules/@types/ssh2/index.d.ts","../../../node_modules/@types/stack-utils/index.d.ts","../../../node_modules/@types/statuses/index.d.ts","../../../node_modules/@types/uuid/index.d.ts","../../../node_modules/@types/webidl-conversions/index.d.ts","../../../node_modules/@types/whatwg-url/index.d.ts","../../../node_modules/@types/wrap-ansi/index.d.ts","../../../node_modules/@types/yargs-parser/index.d.ts","../../../node_modules/@types/yargs/index.d.ts"],"fileInfos":[{"version":"f33e5332b24c3773e930e212cbb8b6867c8ba3ec4492064ea78e55a524d57450","affectsGlobalScope":true},"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","26f2f787e82c4222710f3b676b4d83eb5ad0a72fa7b746f03449e7a026ce5073","9a68c0c07ae2fa71b44384a839b7b8d81662a236d4b9ac30916718f7510b1b2d","5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569","5514e54f17d6d74ecefedc73c504eadffdeda79c7ea205cf9febead32d45c4bc","1c0cdb8dc619bc549c3e5020643e7cf7ae7940058e8c7e5aefa5871b6d86f44b","bed7b7ba0eb5a160b69af72814b4dde371968e40b6c5e73d3a9f7bee407d158c",{"version":"21e41a76098aa7a191028256e52a726baafd45a925ea5cf0222eb430c96c1d83","affectsGlobalScope":true},{"version":"35299ae4a62086698444a5aaee27fc7aa377c68cbb90b441c9ace246ffd05c97","affectsGlobalScope":true},{"version":"80e18897e5884b6723488d4f5652167e7bb5024f946743134ecc4aa4ee731f89","affectsGlobalScope":true},{"version":"cd034f499c6cdca722b60c04b5b1b78e058487a7085a8e0d6fb50809947ee573","affectsGlobalScope":true},{"version":"138fb588d26538783b78d1e3b2c2cc12d55840b97bf5e08bca7f7a174fbe2f17","affectsGlobalScope":true},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true},{"version":"4443e68b35f3332f753eacc66a04ac1d2053b8b035a0e0ac1d455392b5e243b3","affectsGlobalScope":true},{"version":"bc47685641087c015972a3f072480889f0d6c65515f12bd85222f49a98952ed7","affectsGlobalScope":true},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true},{"version":"93495ff27b8746f55d19fcbcdbaccc99fd95f19d057aed1bd2c0cafe1335fbf0","affectsGlobalScope":true},{"version":"6fc23bb8c3965964be8c597310a2878b53a0306edb71d4b5a4dfe760186bcc01","affectsGlobalScope":true},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true},{"version":"bb42a7797d996412ecdc5b2787720de477103a0b2e53058569069a0e2bae6c7e","affectsGlobalScope":true},{"version":"4738f2420687fd85629c9efb470793bb753709c2379e5f85bc1815d875ceadcd","affectsGlobalScope":true},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true},{"version":"9fc46429fbe091ac5ad2608c657201eb68b6f1b8341bd6d670047d32ed0a88fa","affectsGlobalScope":true},{"version":"61c37c1de663cf4171e1192466e52c7a382afa58da01b1dc75058f032ddf0839","affectsGlobalScope":true},{"version":"b541a838a13f9234aba650a825393ffc2292dc0fc87681a5d81ef0c96d281e7a","affectsGlobalScope":true},{"version":"e0275cd0e42990dc3a16f0b7c8bca3efe87f1c8ad404f80c6db1c7c0b828c59f","affectsGlobalScope":true},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true},{"version":"49ed889be54031e1044af0ad2c603d627b8bda8b50c1a68435fe85583901d072","affectsGlobalScope":true},{"version":"e93d098658ce4f0c8a0779e6cab91d0259efb88a318137f686ad76f8410ca270","affectsGlobalScope":true},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true},{"version":"bf14a426dbbf1022d11bd08d6b8e709a2e9d246f0c6c1032f3b2edb9a902adbe","affectsGlobalScope":true},{"version":"ec0104fee478075cb5171e5f4e3f23add8e02d845ae0165bfa3f1099241fa2aa","affectsGlobalScope":true},{"version":"2b72d528b2e2fe3c57889ca7baef5e13a56c957b946906d03767c642f386bbc3","affectsGlobalScope":true},{"version":"acae90d417bee324b1372813b5a00829d31c7eb670d299cd7f8f9a648ac05688","affectsGlobalScope":true},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true},{"version":"af3dd424cf267428f30ccfc376f47a2c0114546b55c44d8c0f1d57d841e28d74","affectsGlobalScope":true},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","affectsGlobalScope":true},{"version":"51e547984877a62227042850456de71a5c45e7fe86b7c975c6e68896c86fa23b","affectsGlobalScope":true},{"version":"62a4966981264d1f04c44eb0f4b5bdc3d81c1a54725608861e44755aa24ad6a5","affectsGlobalScope":true},{"version":"4fa6ed14e98aa80b91f61b9805c653ee82af3502dc21c9da5268d3857772ca05","affectsGlobalScope":true},{"version":"e6633e05da3ff36e6da2ec170d0d03ccf33de50ca4dc6f5aeecb572cedd162fb","affectsGlobalScope":true},{"version":"86a34c7a13de9cabc43161348f663624b56871ed80986e41d214932ddd8d6719","affectsGlobalScope":true},{"version":"8444af78980e3b20b49324f4a16ba35024fef3ee069a0eb67616ea6ca821c47a","affectsGlobalScope":true},{"version":"caccc56c72713969e1cfe5c3d44e5bab151544d9d2b373d7dbe5a1e4166652be","affectsGlobalScope":true},{"version":"3287d9d085fbd618c3971944b65b4be57859f5415f495b33a6adc994edd2f004","affectsGlobalScope":true},{"version":"50d53ccd31f6667aff66e3d62adf948879a3a16f05d89882d1188084ee415bbc","affectsGlobalScope":true},{"version":"08a58483392df5fcc1db57d782e87734f77ae9eab42516028acbfe46f29a3ef7","affectsGlobalScope":true},{"version":"436aaf437562f276ec2ddbee2f2cdedac7664c1e4c1d2c36839ddd582eeb3d0a","affectsGlobalScope":true},{"version":"13f6e6380c78e15e140243dc4be2fa546c287c6d61f4729bc2dd7cf449605471","affectsGlobalScope":true},{"version":"4350e5922fecd4bedda2964d69c213a1436349d0b8d260dd902795f5b94dc74b","affectsGlobalScope":true},{"version":"d4b1d2c51d058fc21ec2629fff7a76249dec2e36e12960ea056e3ef89174080f","affectsGlobalScope":true},{"version":"33358442698bb565130f52ba79bfd3d4d484ac85fe33f3cb1759c54d18201393","affectsGlobalScope":true},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true},"fd1adc28ce106d6b5f7204355726a7ec922191ad5a8cc1a01841cbf9df9a7e64","9c27c480056fd6f51691274b2900434ea2d94f3f4fb7aa3dc636f1a6fdc0077b","7fb2db0c433324740f8fbe131d3e8feef5b1003d4e9812398748f0febd4261da","6e77fb2250275d3945569ac61104a29927624b5a7ba0e905e7e1defd1f2ed151","2790a9aa9f46374da594d045c1c92f277d74741c9adf0591353528148004cc50","31db44390050eec522abcf9268e697fc78d609e2b5e547c51533f885b9e3c9a8","ee3ed46dc8dccb018423839a1ee04b4bce7b0300d1debcaf52abbf97aaf75e87","e8bb99484b05d5b923363d02b6641cd2d2feac44d6f9480cf0be54f59db2c480","53d785402c344d04199b00b6dd00e9382cad52548ddc6c907f49157efa44cb00","95edbe862fbb62a384d2adec2b2278c5ece55d935d382da1386c4a63057b39a5","4386f08376491cdc43b83e6dc3e29173263e0e353a41863de4bc35ca14be916d","6c898f2bb237aee867bc2f89a2d9201b4c336c10320d083371ecf148bb0ffd54","937cbc9ffa856e3e4811c23481bf5416112fd6c8e6f31bbd2525cfff22fb8905","f7913adfae3602c58650945fc516db14ee8ee0ff761fd153bc7ee60089985e0a","c7c21a3a3ddc7780bd13068e7b5a723346b4d3d8ddb705c1d1ab690037d4653a",{"version":"96e7be849824a0e893e8ab857a028209b86f1804edc65d28fdcf32ee9978a142","signature":"7e2eff3e1139fb63fcd72a2f1a53a7781e30bb509305e0dfa8c552779f607e88"},{"version":"70adfdd684410770fcdf755750e2a0eb3804903f7b91516a9cce9891a5b003d9","signature":"18371ac3f35d9efffecfcdf14d9f440622e2ed8872d66dbbbed2a71f7082eb4e"},"3488b6a8a63710bef00bfec939073f16fb5dff3202551b8295978844894751cd","68bdb410327adddbccfba6a338a867d1d0fa4e48386d98b7bdc861f92ebf3ddf","4b16679b0f7378842ff9f482df9037cd1f5e2e400c90ddd764f331cbe23dd1b4","94f91b3d112e13ae8da95d492faaac48b36b172bbeaad21be05d0396c1f277e4","1c0c9696e9dbe9f406437da313618a3e36de69bd10cec98a28bff2e074fd1ee7","46e4cc64a82224228d590a421fe89a9cc2375b2db1669a74e31477f314dc6f92","0a850b3b9d35c3a5ddb4dee5ed0c9d1de171d69ad4f5e179d8a27645fb42335f","f293b8edde762f4ec34b5bb6f7a99df838f0cf71670d9fe6553f309bb559ea30","a082f228d494500d41d1b7618b581357f833030a9cdbebeec705c88f8e5a8173","b297d49b7ce31c940c72329a2a8e0d3ea4493da2d02dbb2e10d18a70c41c2dbd","5b12673719e49d2ef56a8263d60f95b6b4e48aa6bd1837c7b2e3c39232431ffb","2beb94ef1961eb5c639e8f3cbbe1483bf2d9d53855fde0b20c1a3429d3a6160b","d9c3ed7e2851a2331b0053d3128d730aa19ce0685a0a0409adc0e1e86c00e17c","93f5a43dafa0ed136ac2c886648862de399d97aefb32c946dfe2ab780cd460f6","279541f81029449f33b96790cd7222664bdf66eaa6c1c719c8b451ae8b69ebe5","863a16bffa4414a6784927eec1b17523521761b2b2344a0b98f140c91d659859","1d59fdf9e61f92e14aebf97a22991748e60be71db2145783aa81e12e449b3a08","1f3d731ec6a2963e054fe46cfe1eecea1b29f71fc4ee1bf9ddd1c9908637b48d","d721d38f03dbf541b5fc4fe9056ef0fbd2b1650af027b57a41050b6d5eb7deea","dcd8de07b4735d845b06e546f4f4c6014388cceaf171495e8e7ec40551e167cf","a06788dcbb350c361b23aad1671f6818641850ab75050e7abc0ae42f6ae49090","d0527ff4a59e0993c280322bacc078d1ae663b6a4d198698cc4d50fcfa145d05",{"version":"ef88a0b62294b3db6953c44c9ce92730d000bc303c67e0aac38618ed7b53e0a2","signature":"69d458edf95708728df77306a56ed62643ca804d0d360008a4e4fe9d6d6dfd8e"},{"version":"13e5077961333dfef7b45b61cf397824a29d5714f70019b492cdbdc2cd972d07","signature":"4ff8ab5333ebf91e138ae7f2aa7c2b573af6c287220388ae9f47242c9e0cd5b5"},{"version":"7ff4d9a694191b925a8d779db5143ce8b24efa116f09af2a7797f5253d83d92f","signature":"3dc1d4404ab4ec6b709830df84377c9a0c9e04b3e53a15b26719135f37d40f7f"},{"version":"459f9fff2e8effefafbf6e7ac9b44b827327d4b3a513b729d6d6094fa2318d26","signature":"7e2eff3e1139fb63fcd72a2f1a53a7781e30bb509305e0dfa8c552779f607e88"},{"version":"55aece49d3a387b3acc7fbf672328c62422aebb7e98cf9e8c1f62da780d615fb","signature":"ee57cf1731dc27fa5f1db512b4964be0efb2aa24adde19892c21a0d5c765ec03"},{"version":"6152f81fc56c9bb7861c382fa6d235075dfe4080e6570d9a728903fc37c81af0","signature":"ffe1b4673d41b1f40610de2517e0428c67a6981ddc881e583b33561572ea6aae"},{"version":"15a49a2929b03c5931a1ca663b4103e5b6bd64b4217d1f1c2d7a381aa108da59","signature":"28d3554b38d500c9323ae01c053aa0336d3832e2e75cd4aedce1bea5141af0f6"},{"version":"bab73c662d5c3f79a86a4e6dc3ad616287d1de1a17e91b40a21d57d3ddc3af06","signature":"cdc7b5474fc61d043a72869dc60a85a2e68da61afc4fc4a1b644ed9b28fdc82a"},{"version":"8afc29dcfc689168c29ab085ee8996e205d7e3367c455da79969152938f6cd0d","signature":"f53be8979697a1e2c81f318dde8b792b601461d9ef4f4fed33a00393d8653236"},"fa8f0e2be1c4afd57834adef975c24d2072aae796f0c9ae8928edc7a59119a4b","737c0fb72ee31b95412399b944f7584a4033c553126f3675e567aeeebe9cd50a","3836f34a2657045779393e3952dd4f6a6dd47248ca4850bffb46ab4f5793ebeb",{"version":"299f0c142b4d9b29f9dce26d5892899e4915832731aa11084ca206ef39e612e5","signature":"fd264726367f522dbf60f46b2c014d1a433e9015870eb15574257fd35e616af2"},{"version":"d718e21fff2fde1575fc68e95e94f04102fbf40511c0e1c655ed6f86e43a81b2","signature":"02cd5fcc7ca5feba54971ad54e819212216af17387904fefb0d0fbb8dc47ec38"},"8ad066c1733d278694e9e32415d98d72a702867626be6e0401a6cd8a541905fc","71e46111f57a5c82031adbac22eb542b5f63a8be4d5ee9253036cafe81d16112","bee841486123ba419b764cc86c5e4faf47317eb9c2d048408b88e7efa885106e","53e95c2c536d057f438646855f24e39f888dc415ca56ef8fae1ec1d5b5485883",{"version":"ba3a9e16a4404b0da1113e0ab593b2f4401b0f30a73bc76e80159cde25665741","signature":"dafc15b2377bb59f132d10f8c8285f7dc2e64d3288a290db35a4366b69bed024"},{"version":"859a6e76cf34d82fb71e864d5dfe6470dd298c39b088325bd346eff87a48c458","signature":"97d4814e25bfa13cf15afa5e4892df2ba7e1e60310398bf242a02be9da8f9a64"},{"version":"86ed435bb953c97e7476d851f6d8ebf8a1b6c84616328f9de1f3aa8c87b5a9fa","signature":"af898d865eba87228607c9f51ebadc3281b779546a827477c88b2221132ba137"},{"version":"ee5b11bf95024d740540a1137f9f6a79c730403d9801bbeeeb30c6309063d28c","signature":"206cc1c976788945272abac46d80680d95d691db82cb3fb932f1da766a8f95f8"},{"version":"3153f06c2c3a14ae77ab7c1472ddd0bf3e28aff57c73aef2df8b167b3ff20057","signature":"a0be985fe55ad62bff14e3a560588107ba65d3751cbdc32ff83cc8baa65f850c"},"923c136dcbf20f140c369078a7eb56f6697889d104397d694f70e21dd08b1810","2c8e55457aaf4902941dfdba4061935922e8ee6e120539c9801cd7b400fae050","8041cfce439ff29d339742389de04c136e3029d6b1817f07b2d7fcbfb7534990","670a76db379b27c8ff42f1ba927828a22862e2ab0b0908e38b671f0e912cc5ed","9d38964b57191567a14b396422c87488cecd48f405c642daa734159875ee81d9","069bebfee29864e3955378107e243508b163e77ab10de6a5ee03ae06939f0bb9","dbe8bd931d343b9804d5398afb6dd6d6728975b2e23a3314bc4911f81c5e5a33","1748c03e7a7d118f7f6648c709507971eb0d416f489958492c5ae625de445184","09df3b4f1c937f02e7fee2836d4c4d7a63e66db70fd4d4e97126f4542cc21d9d","7394959e5a741b185456e1ef5d64599c36c60a323207450991e7a42e08911419","ef18cbf1d8374576e3db03ff33c2c7499845972eb0c4adf87392949709c5e160","5929864ce17fba74232584d90cb721a89b7ad277220627cc97054ba15a98ea8f","7180c03fd3cb6e22f911ce9ba0f8a7008b1a6ddbe88ccf16a9c8140ef9ac1686","25c8056edf4314820382a5fdb4bb7816999acdcb929c8f75e3f39473b87e85bc","54cb85a47d760da1c13c00add10d26b5118280d44d58e6908d8e89abbd9d7725","3e4825171442666d31c845aeb47fcd34b62e14041bb353ae2b874285d78482aa","c6fd2c5a395f2432786c9cb8deb870b9b0e8ff7e22c029954fabdd692bff6195","a967bfe3ad4e62243eb604bf956101e4c740f5921277c60debaf325c1320bf88","e9775e97ac4877aebf963a0289c81abe76d1ec9a2a7778dbe637e5151f25c5f3","471e1da5a78350bc55ef8cef24eb3aca6174143c281b8b214ca2beda51f5e04a","cadc8aced301244057c4e7e73fbcae534b0f5b12a37b150d80e5a45aa4bebcbd","385aab901643aa54e1c36f5ef3107913b10d1b5bb8cbcd933d4263b80a0d7f20","9670d44354bab9d9982eca21945686b5c24a3f893db73c0dae0fd74217a4c219","db3435f3525cd785bf21ec6769bf8da7e8a776be1a99e2e7efb5f244a2ef5fee","c3b170c45fc031db31f782e612adf7314b167e60439d304b49e704010e7bafe5","40383ebef22b943d503c6ce2cb2e060282936b952a01bea5f9f493d5fb487cc7","4893a895ea92c85345017a04ed427cbd6a1710453338df26881a6019432febdd","3a84b7cb891141824bd00ef8a50b6a44596aded4075da937f180c90e362fe5f6","13f6f39e12b1518c6650bbb220c8985999020fe0f21d818e28f512b7771d00f9","9b5369969f6e7175740bf51223112ff209f94ba43ecd3bb09eefff9fd675624a","4fe9e626e7164748e8769bbf74b538e09607f07ed17c2f20af8d680ee49fc1da","24515859bc0b836719105bb6cc3d68255042a9f02a6022b3187948b204946bd2","33203609eba548914dc83ddf6cadbc0bcb6e8ef89f6d648ca0908ae887f9fcc5","0db18c6e78ea846316c012478888f33c11ffadab9efd1cc8bcc12daded7a60b6","89167d696a849fce5ca508032aabfe901c0868f833a8625d5a9c6e861ef935d2","e53a3c2a9f624d90f24bf4588aacd223e7bec1b9d0d479b68d2f4a9e6011147f","339dc5265ee5ed92e536a93a04c4ebbc2128f45eeec6ed29f379e0085283542c","9f0a92164925aa37d4a5d9dd3e0134cff8177208dba55fd2310cd74beea40ee2","8bfdb79bf1a9d435ec48d9372dc93291161f152c0865b81fc0b2694aedb4578d","2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","d32275be3546f252e3ad33976caf8c5e842c09cb87d468cb40d5f4cf092d1acc","4a0c3504813a3289f7fb1115db13967c8e004aa8e4f8a9021b95285502221bd1",{"version":"4d719cfab49ae4045d15cb6bed0f38ad3d7d6eb7f277d2603502a0f862ca3182","affectsGlobalScope":true},"cce1f5f86974c1e916ec4a8cab6eec9aa8e31e8148845bf07fbaa8e1d97b1a2c",{"version":"5a856afb15f9dc9983faa391dde989826995a33983c1cccb173e9606688e9709","affectsGlobalScope":true},"546ab07e19116d935ad982e76a223275b53bff7771dab94f433b7ab04652936e","7b43160a49cf2c6082da0465876c4a0b164e160b81187caeb0a6ca7a281e85ba",{"version":"aefb5a4a209f756b580eb53ea771cca8aad411603926f307a5e5b8ec6b16dcf6","affectsGlobalScope":true},"a40826e8476694e90da94aa008283a7de50d1dafd37beada623863f1901cb7fb","f5a8b7ec4b798c88679194a8ebc25dcb6f5368e6e5811fcda9fe12b0d445b8db","b86e1a45b29437f3a99bad4147cb9fe2357617e8008c0484568e5bb5138d6e13","b5b719a47968cd61a6f83f437236bb6fe22a39223b6620da81ef89f5d7a78fb7","42c431e7965b641106b5e25ab3283aa4865ca7bb9909610a2abfa6226e4348be","0b7e732af0a9599be28c091d6bd1cb22c856ec0d415d4749c087c3881ca07a56","b7fe70be794e13d1b7940e318b8770cd1fb3eced7707805318a2e3aaac2c3e9e",{"version":"2c71199d1fc83bf17636ad5bf63a945633406b7b94887612bba4ef027c662b3e","affectsGlobalScope":true},{"version":"8d6138a264ddc6f94f16e99d4e117a2d6eb31b217891cf091b6437a2f114d561","affectsGlobalScope":true},"3b4c85eea12187de9929a76792b98406e8778ce575caca8c574f06da82622c54","f788131a39c81e0c9b9e463645dd7132b5bc1beb609b0e31e5c1ceaea378b4df","0c236069ce7bded4f6774946e928e4b3601894d294054af47a553f7abcafe2c1","21894466693f64957b9bd4c80fa3ec7fdfd4efa9d1861e070aca23f10220c9b2","396a8939b5e177542bdf9b5262b4eee85d29851b2d57681fa9d7eae30e225830","21773f5ac69ddf5a05636ba1f50b5239f4f2d27e4420db147fc2f76a5ae598ac",{"version":"6ec93c745c5e3e25e278fa35451bf18ef857f733de7e57c15e7920ac463baa2a","affectsGlobalScope":true},"a5fe4cc622c3bf8e09ababde5f4096ceac53163eefcd95e9cd53f062ff9bb67a","30c2ec6abf6aaa60eb4f32fb1235531506b7961c6d1bdc7430711aec8fd85295","0f05c06ff6196958d76b865ae17245b52d8fe01773626ac3c43214a2458ea7b7",{"version":"308b84e1943ef30015469770e931eb21b795348893b2a6562ca54ea8f0b3c41c","affectsGlobalScope":true},{"version":"d48009cbe8a30a504031cc82e1286f78fed33b7a42abf7602c23b5547b382563","affectsGlobalScope":true},"7aaeb5e62f90e1b2be0fc4844df78cdb1be15c22b427bc6c39d57308785b8f10","3ba30205a029ebc0c91d7b1ab4da73f6277d730ca1fc6692d5a9144c6772c76b","d8dba11dc34d50cb4202de5effa9a1b296d7a2f4a029eec871f894bddfb6430d","8b71dd18e7e63b6f991b511a201fad7c3bf8d1e0dd98acb5e3d844f335a73634","01d8e1419c84affad359cc240b2b551fb9812b450b4d3d456b64cda8102d4f60","458b216959c231df388a5de9dcbcafd4b4ca563bc3784d706d0455467d7d4942","269929a24b2816343a178008ac9ae9248304d92a8ba8e233055e0ed6dbe6ef71","93452d394fdd1dc551ec62f5042366f011a00d342d36d50793b3529bfc9bd633","f8c87b19eae111f8720b0345ab301af8d81add39621b63614dfc2d15fd6f140a","831c22d257717bf2cbb03afe9c4bcffc5ccb8a2074344d4238bf16d3a857bb12",{"version":"24ba151e213906027e2b1f5223d33575a3612b0234a0e2b56119520bbe0e594b","affectsGlobalScope":true},{"version":"cbf046714f3a3ba2544957e1973ac94aa819fa8aa668846fa8de47eb1c41b0b2","affectsGlobalScope":true},"aa34c3aa493d1c699601027c441b9664547c3024f9dbab1639df7701d63d18fa","eae74e3d50820f37c72c0679fed959cd1e63c98f6a146a55b8c4361582fa6a52","7c651f8dce91a927ab62925e73f190763574c46098f2b11fb8ddc1b147a6709a","7440ab60f4cb031812940cc38166b8bb6fbf2540cfe599f87c41c08011f0c1df",{"version":"aed89e3c18f4c659ee8153a76560dffda23e2d801e1e60d7a67abd84bc555f8d","affectsGlobalScope":true},{"version":"0ed13c80faeb2b7160bffb4926ff299c468e67a37a645b3ae0917ba0db633c1b","affectsGlobalScope":true},"e393915d3dc385e69c0e2390739c87b2d296a610662eb0b1cb85224e55992250","2f940651c2f30e6b29f8743fae3f40b7b1c03615184f837132b56ea75edad08b","5749c327c3f789f658072f8340786966c8b05ea124a56c1d8d60e04649495a4d",{"version":"c9d62b2a51b2ff166314d8be84f6881a7fcbccd37612442cf1c70d27d5352f50","affectsGlobalScope":true},"e7dbf5716d76846c7522e910896c5747b6df1abd538fee8f5291bdc843461795",{"version":"ab9b9a36e5284fd8d3bf2f7d5fcbc60052f25f27e4d20954782099282c60d23e","affectsGlobalScope":true},"b510d0a18e3db42ac9765d26711083ec1e8b4e21caaca6dc4d25ae6e8623f447","efdced704bd09db6984a2a26e3573bc43cdc2379bdef3bcff6cff77efe8ba82b","c56ef8201a294d65d1132160ebc76ed0c0a98dcf983d20775c8c8c0912210572","de0199a112f75809a7f80ec071495159dcf3e434bc021347e0175627398264c3","1a2bed55cfa62b4649485df27c0e560b04d4da4911e3a9f0475468721495563f","854045924626ba585f454b53531c42aed4365f02301aa8eca596423f4675b71f","fd326577c62145816fe1acc306c734c2396487f76719d3785d4e825b34540b33","afe73051ff6a03a9565cbd8ebb0e956ee3df5e913ad5c1ded64218aabfa3dcb5","035a5df183489c2e22f3cf59fc1ed2b043d27f357eecc0eb8d8e840059d44245","a4809f4d92317535e6b22b01019437030077a76fec1d93b9881c9ed4738fcc54","5f53fa0bd22096d2a78533f94e02c899143b8f0f9891a46965294ee8b91a9434","cdcc132f207d097d7d3aa75615ab9a2e71d6a478162dde8b67f88ea19f3e54de","0d14fa22c41fdc7277e6f71473b20ebc07f40f00e38875142335d5b63cdfc9d2","c085e9aa62d1ae1375794c1fb927a445fa105fed891a7e24edbb1c3300f7384a","f315e1e65a1f80992f0509e84e4ae2df15ecd9ef73df975f7c98813b71e4c8da","5b9586e9b0b6322e5bfbd2c29bd3b8e21ab9d871f82346cb71020e3d84bae73e","3e70a7e67c2cb16f8cd49097360c0309fe9d1e3210ff9222e9dac1f8df9d4fb6","ab68d2a3e3e8767c3fba8f80de099a1cfc18c0de79e42cb02ae66e22dfe14a66","d96cc6598148bf1a98fb2e8dcf01c63a4b3558bdaec6ef35e087fd0562eb40ec",{"version":"b2fdcc3836d425833af10e536ae5491c34e218bc71870f12a401720f874b6ce4","affectsGlobalScope":true},"686e548ae30250d62532c8cacb43fccc922b693408371bd3503563c4a0f28eed","f3d8c757e148ad968f0d98697987db363070abada5f503da3c06aefd9d4248c1","96d14f21b7652903852eef49379d04dbda28c16ed36468f8c9fa08f7c14c9538","b8442e9db28157344d1bc5d8a5a256f1692de213f0c0ddeb84359834015a008c","458111fc89d11d2151277c822dfdc1a28fa5b6b2493cf942e37d4cd0a6ee5f22","da2b6356b84a40111aaecb18304ea4e4fcb43d70efb1c13ca7d7a906445ee0d3","187119ff4f9553676a884e296089e131e8cc01691c546273b1d0089c3533ce42","febf0b2de54781102b00f61653b21377390a048fbf5262718c91860d11ff34a6","6f294731b495c65ecf46a5694f0082954b961cf05463bea823f8014098eaffa0","0aaef8cded245bf5036a7a40b65622dd6c4da71f7a35343112edbe112b348a1e","00baffbe8a2f2e4875367479489b5d43b5fc1429ecb4a4cc98cfc3009095f52a","68a0d0c508e1b6d8d23a519a8a0a3303dc5baa4849ca049f21e5bad41945e3fc","3c92b6dfd43cc1c2485d9eba5ff0b74a19bb8725b692773ef1d66dac48cda4bd","b03afe4bec768ae333582915146f48b161e567a81b5ebc31c4d78af089770ac9","df996e25faa505f85aeb294d15ebe61b399cf1d1e49959cdfaf2cc0815c203f9","4f6a12044ee6f458db11964153830abbc499e73d065c51c329ec97407f4b13dd","963d59066dd6742da1918a6213a209bcc205b8ee53b1876ee2b4e6d80f97c85e","fbca5ffaebf282ec3cdac47b0d1d4a138a8b0bb32105251a38acb235087d3318","dcefc29f25daf56cd69c0a3d3d19f51938efe1e6a15391950be43a76222ee3ed","f4694959db84d3792ca4d4e04c0bc157c4d28627cb0406c9236351f261a3f5e0","22293bd6fa12747929f8dfca3ec1684a3fe08638aa18023dd286ab337e88a592","916be7d770b0ae0406be9486ac12eb9825f21514961dd050594c4b250617d5a8","d88a5e779faf033be3d52142a04fbe1cb96009868e3bbdd296b2bc6c59e06c0e",{"version":"4698841dc5a91fe716dd41ec7136867bbde9a274ce21031e5ef6ce2d8a552ceb","affectsGlobalScope":true},"5b5337f28573ffdbc95c3653c4a7961d0f02fdf4788888253bf74a3b5a05443e","9871b7ee672bc16c78833bdab3052615834b08375cb144e4d2cba74473f4a589","c863198dae89420f3c552b5a03da6ed6d0acfa3807a64772b895db624b0de707","8b03a5e327d7db67112ebbc93b4f744133eda2c1743dbb0a990c61a8007823ef","86c73f2ee1752bac8eeeece234fd05dfcf0637a4fbd8032e4f5f43102faa8eec","42fad1f540271e35ca37cecda12c4ce2eef27f0f5cf0f8dd761d723c744d3159","ff3743a5de32bee10906aff63d1de726f6a7fd6ee2da4b8229054dfa69de2c34","83acd370f7f84f203e71ebba33ba61b7f1291ca027d7f9a662c6307d74e4ac22","1445cec898f90bdd18b2949b9590b3c012f5b7e1804e6e329fb0fe053946d5ec","0e5318ec2275d8da858b541920d9306650ae6ac8012f0e872fe66eb50321a669","cf530297c3fb3a92ec9591dd4fa229d58b5981e45fe6702a0bd2bea53a5e59be","c1f6f7d08d42148ddfe164d36d7aba91f467dbcb3caa715966ff95f55048b3a4","f4e9bf9103191ef3b3612d3ec0044ca4044ca5be27711fe648ada06fad4bcc85","0c1ee27b8f6a00097c2d6d91a21ee4d096ab52c1e28350f6362542b55380059a","7677d5b0db9e020d3017720f853ba18f415219fb3a9597343b1b1012cfd699f7","bc1c6bc119c1784b1a2be6d9c47addec0d83ef0d52c8fbe1f14a51b4dfffc675","52cf2ce99c2a23de70225e252e9822a22b4e0adb82643ab0b710858810e00bf1","770625067bb27a20b9826255a8d47b6b5b0a2d3dfcbd21f89904c731f671ba77","d1ed6765f4d7906a05968fb5cd6d1db8afa14dbe512a4884e8ea5c0f5e142c80","799c0f1b07c092626cf1efd71d459997635911bb5f7fc1196efe449bba87e965","2a184e4462b9914a30b1b5c41cf80c6d3428f17b20d3afb711fff3f0644001fd","9eabde32a3aa5d80de34af2c2206cdc3ee094c6504a8d0c2d6d20c7c179503cc","397c8051b6cfcb48aa22656f0faca2553c5f56187262135162ee79d2b2f6c966","a8ead142e0c87dcd5dc130eba1f8eeed506b08952d905c47621dc2f583b1bff9","a02f10ea5f73130efca046429254a4e3c06b5475baecc8f7b99a0014731be8b3","c2576a4083232b0e2d9bd06875dd43d371dee2e090325a9eac0133fd5650c1cb","4c9a0564bb317349de6a24eb4efea8bb79898fa72ad63a1809165f5bd42970dd","f40ac11d8859092d20f953aae14ba967282c3bb056431a37fced1866ec7a2681","cc11e9e79d4746cc59e0e17473a59d6f104692fd0eeea1bdb2e206eabed83b03","b444a410d34fb5e98aa5ee2b381362044f4884652e8bc8a11c8fe14bbd85518e","c35808c1f5e16d2c571aa65067e3cb95afeff843b259ecfa2fc107a9519b5392","14d5dc055143e941c8743c6a21fa459f961cbc3deedf1bfe47b11587ca4b3ef5","a3ad4e1fc542751005267d50a6298e6765928c0c3a8dce1572f2ba6ca518661c","f237e7c97a3a89f4591afd49ecb3bd8d14f51a1c4adc8fcae3430febedff5eb6","3ffdfbec93b7aed71082af62b8c3e0cc71261cc68d796665faa1e91604fbae8f","662201f943ed45b1ad600d03a90dffe20841e725203ced8b708c91fcd7f9379a","c9ef74c64ed051ea5b958621e7fb853fe3b56e8787c1587aefc6ea988b3c7e79","2462ccfac5f3375794b861abaa81da380f1bbd9401de59ffa43119a0b644253d","34baf65cfee92f110d6653322e2120c2d368ee64b3c7981dff08ed105c4f19b0","85f8ebd7f245e8bf29da270e8b53dcdd17528826ffd27176c5fc7e426213ef5a","7abf54763b6709a2b72ecd1247c3cfe96f8c44fe6e7ce3897951ee8f4c394640","85976d1088db28912f61f76fd68103dd3625480f5ad5ba4c98519a81693ef717","ab82804a14454734010dcdcd43f564ff7b0389bee4c5692eec76ff5b30d4cf66","1f4ae755492a669b317903a6b1664cb7af3fe0c3d1eec6447f4e95a80616d15a","12fe557e4c2d5ce9e11362f69a8d7c05d0588de4ae415afe8c5106da5c2772aa","f2f23fe34b735887db1d5597714ae37a6ffae530cafd6908c9d79d485667c956","7fae4b2bc906f3e6840725cc24affaa4e684e6c9cc20254242c5df4bede5b6f6","24112d1a55250f4da7f9edb9dabeac8e3badebdf4a55b421fc7b8ca5ccc03133","bae8d023ef6b23df7da26f51cea44321f95817c190342a36882e93b80d07a960","5d30d04a14ed8527ac5d654dc345a4db11b593334c11a65efb6e4facc5484a0e"],"root":[83,84,[107,111],[113,115],119,120,[125,129]],"options":{"allowJs":true,"declaration":true,"esModuleInterop":true,"experimentalDecorators":true,"module":1,"noImplicitOverride":true,"outDir":"./","skipLibCheck":true,"sourceMap":true,"strict":true,"target":99},"fileIdsList":[[69,77,82,106,115,119,120,125,217],[115,118,125,197,217],[217],[82,127,217],[69,71,77,82,106,119,120,124,217],[125,126,217],[118,197,217],[92,106,109,217],[82,83,217],[83,84,107,108,217],[82,106,217],[82,106,110,112,114,217],[110,111,113,217],[106,109,114,126,217],[78,79,80,81,205,217],[71,217],[72,217],[71,72,73,217],[72,73,74,75,76,217],[116,117,217],[116,217],[130,217],[217,237],[130,131,132,133,134,217],[130,132,217],[190,217,224],[187,188,217,224,229],[188,217,224],[217,232],[217,233],[217,239,242],[217,247,249,250,251,252,253,254,255,256,257,258,259],[217,247,248,250,251,252,253,254,255,256,257,258,259],[217,248,249,250,251,252,253,254,255,256,257,258,259],[217,247,248,249,251,252,253,254,255,256,257,258,259],[217,247,248,249,250,252,253,254,255,256,257,258,259],[217,247,248,249,250,251,253,254,255,256,257,258,259],[217,247,248,249,250,251,252,254,255,256,257,258,259],[217,247,248,249,250,251,252,253,255,256,257,258,259],[217,247,248,249,250,251,252,253,254,256,257,258,259],[217,247,248,249,250,251,252,253,254,255,257,258,259],[217,247,248,249,250,251,252,253,254,255,256,258,259],[217,247,248,249,250,251,252,253,254,255,256,257,259],[217,247,248,249,250,251,252,253,254,255,256,257,258],[205,217,224],[138,217],[174,217],[175,180,208,217],[176,187,188,195,205,216,217],[176,177,187,195,217],[178,217],[179,180,188,196,217],[180,205,213,217],[181,183,187,195,217],[182,217],[183,184,217],[187,217],[185,187,217],[174,187,217],[187,188,189,205,216,217],[187,188,189,202,205,208,217],[172,217,221],[183,187,190,195,205,216,217],[187,188,190,191,195,205,213,216,217],[190,192,205,213,216,217],[138,139,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223],[187,193,217],[194,216,217,221],[183,187,195,205,217],[196,217],[197,217],[174,198,217],[199,215,217,221],[200,217],[201,217],[187,202,203,217],[202,204,217,219],[175,187,205,206,207,208,217],[175,205,207,217],[205,206,217],[208,217],[209,217],[174,205,217],[187,211,212,217],[211,212,217],[180,195,205,213,217],[214,217],[195,215,217],[175,190,201,216,217],[180,217],[205,217,218],[194,217,219],[217,220],[175,180,187,189,198,205,216,217,219,221],[205,217,222],[217,268,307],[217,268,292,307],[217,307],[217,268],[217,268,293,307],[217,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306],[217,293,307],[187,195,205,217,224,308],[217,316],[85,217],[85,86,88,90,217],[90,91,217],[85,87,88,89,187,205,217],[217,235,241],[217,236,240],[217,239],[217,229],[217,226,227,228],[205,217],[217,238],[149,153,216,217],[149,205,216,217],[144,217],[146,149,213,216,217],[195,213,217],[217,224],[144,217,224],[146,149,195,216,217],[141,142,145,148,175,187,205,216,217],[141,147,217],[145,149,175,208,216,217,224],[175,217,224],[165,175,217,224],[143,144,217,224],[149,217],[143,144,145,146,147,148,149,150,151,153,154,155,156,157,158,159,160,161,162,163,164,166,167,168,169,170,171,217],[149,156,157,217],[147,149,157,158,217],[148,217],[141,144,149,217],[149,153,157,158,217],[153,217],[147,149,152,216,217],[141,146,147,149,153,156,217],[175,205,217],[144,149,165,175,217,221,224],[70,217],[106,217],[97,99,217],[94,95,97,217],[94,97,101,217],[93,98,99,100,106,217],[93,94,95,96,97,98,99,100,101,102,103,104,105,217],[94,104,217],[96,217],[94,95,217],[106,121,122,217],[123,217],[121,123,217],[77,106,120],[125],[71,119,120,124],[125,126],[106,126]],"referencedMap":[[126,1],[119,2],[127,3],[128,4],[125,5],[129,6],[120,7],[107,8],[108,9],[84,3],[109,10],[83,3],[112,11],[113,12],[111,3],[114,13],[110,3],[115,14],[82,15],[81,3],[80,3],[79,3],[78,3],[72,16],[73,17],[74,18],[77,19],[76,3],[75,17],[118,20],[117,21],[116,3],[132,22],[130,3],[235,3],[238,23],[237,3],[135,24],[131,22],[133,25],[134,22],[136,3],[137,3],[225,26],[230,27],[231,28],[232,3],[233,29],[234,30],[243,31],[244,3],[245,3],[246,3],[248,32],[249,33],[247,34],[250,35],[251,36],[252,37],[253,38],[254,39],[255,40],[256,41],[257,42],[258,43],[259,44],[260,3],[261,3],[262,45],[263,3],[138,46],[139,46],[174,47],[175,48],[176,49],[177,50],[178,51],[179,52],[180,53],[181,54],[182,55],[183,56],[184,56],[186,57],[185,58],[187,59],[188,60],[189,61],[173,62],[223,3],[190,63],[191,64],[192,65],[224,66],[193,67],[194,68],[195,69],[196,70],[197,71],[198,72],[199,73],[200,74],[201,75],[202,76],[203,76],[204,77],[205,78],[207,79],[206,80],[208,81],[209,82],[210,83],[211,84],[212,85],[213,86],[214,87],[215,88],[216,89],[217,90],[218,91],[219,92],[220,93],[221,94],[222,95],[264,3],[265,3],[266,3],[267,3],[292,96],[293,97],[268,98],[271,98],[290,96],[291,96],[281,96],[280,99],[278,96],[273,96],[286,96],[284,96],[288,96],[272,96],[285,96],[289,96],[274,96],[275,96],[287,96],[269,96],[276,96],[277,96],[279,96],[283,96],[294,100],[282,96],[270,96],[307,101],[306,3],[301,100],[303,102],[302,100],[295,100],[296,100],[298,100],[300,100],[304,102],[305,102],[297,102],[299,102],[308,45],[309,103],[310,3],[311,3],[312,3],[313,3],[314,3],[315,3],[316,3],[317,104],[140,3],[236,3],[89,3],[86,105],[91,106],[85,3],[87,3],[92,107],[90,108],[88,3],[242,109],[241,110],[240,111],[226,112],[227,112],[229,113],[228,112],[69,114],[239,115],[66,3],[67,3],[12,3],[13,3],[17,3],[16,3],[2,3],[18,3],[19,3],[20,3],[21,3],[22,3],[23,3],[24,3],[25,3],[3,3],[4,3],[26,3],[30,3],[27,3],[28,3],[29,3],[31,3],[32,3],[33,3],[5,3],[34,3],[35,3],[36,3],[37,3],[6,3],[41,3],[38,3],[39,3],[40,3],[42,3],[7,3],[43,3],[48,3],[49,3],[44,3],[45,3],[46,3],[47,3],[8,3],[53,3],[50,3],[51,3],[52,3],[54,3],[9,3],[55,3],[56,3],[57,3],[60,3],[58,3],[59,3],[61,3],[62,3],[10,3],[1,3],[11,3],[65,3],[64,3],[68,3],[63,3],[15,3],[14,3],[156,116],[163,117],[155,116],[170,118],[147,119],[146,120],[169,121],[164,122],[167,123],[149,124],[148,125],[144,126],[143,127],[166,128],[145,129],[150,130],[151,3],[154,130],[141,3],[172,131],[171,130],[158,132],[159,133],[161,134],[157,135],[160,136],[165,121],[152,137],[153,138],[162,139],[142,140],[168,141],[70,3],[71,142],[93,143],[102,144],[98,145],[94,3],[99,146],[96,3],[101,147],[106,148],[95,3],[104,3],[103,3],[105,149],[97,150],[100,151],[121,143],[123,152],[122,153],[124,154]],"exportedModulesMap":[[126,155],[119,156],[125,157],[129,158],[115,159],[82,15],[81,3],[80,3],[79,3],[78,3],[72,16],[73,17],[74,18],[77,19],[76,3],[75,17],[118,20],[117,21],[116,3],[132,22],[130,3],[235,3],[238,23],[237,3],[135,24],[131,22],[133,25],[134,22],[136,3],[137,3],[225,26],[230,27],[231,28],[232,3],[233,29],[234,30],[243,31],[244,3],[245,3],[246,3],[248,32],[249,33],[247,34],[250,35],[251,36],[252,37],[253,38],[254,39],[255,40],[256,41],[257,42],[258,43],[259,44],[260,3],[261,3],[262,45],[263,3],[138,46],[139,46],[174,47],[175,48],[176,49],[177,50],[178,51],[179,52],[180,53],[181,54],[182,55],[183,56],[184,56],[186,57],[185,58],[187,59],[188,60],[189,61],[173,62],[223,3],[190,63],[191,64],[192,65],[224,66],[193,67],[194,68],[195,69],[196,70],[197,71],[198,72],[199,73],[200,74],[201,75],[202,76],[203,76],[204,77],[205,78],[207,79],[206,80],[208,81],[209,82],[210,83],[211,84],[212,85],[213,86],[214,87],[215,88],[216,89],[217,90],[218,91],[219,92],[220,93],[221,94],[222,95],[264,3],[265,3],[266,3],[267,3],[292,96],[293,97],[268,98],[271,98],[290,96],[291,96],[281,96],[280,99],[278,96],[273,96],[286,96],[284,96],[288,96],[272,96],[285,96],[289,96],[274,96],[275,96],[287,96],[269,96],[276,96],[277,96],[279,96],[283,96],[294,100],[282,96],[270,96],[307,101],[306,3],[301,100],[303,102],[302,100],[295,100],[296,100],[298,100],[300,100],[304,102],[305,102],[297,102],[299,102],[308,45],[309,103],[310,3],[311,3],[312,3],[313,3],[314,3],[315,3],[316,3],[317,104],[140,3],[236,3],[89,3],[86,105],[91,106],[85,3],[87,3],[92,107],[90,108],[88,3],[242,109],[241,110],[240,111],[226,112],[227,112],[229,113],[228,112],[69,114],[239,115],[66,3],[67,3],[12,3],[13,3],[17,3],[16,3],[2,3],[18,3],[19,3],[20,3],[21,3],[22,3],[23,3],[24,3],[25,3],[3,3],[4,3],[26,3],[30,3],[27,3],[28,3],[29,3],[31,3],[32,3],[33,3],[5,3],[34,3],[35,3],[36,3],[37,3],[6,3],[41,3],[38,3],[39,3],[40,3],[42,3],[7,3],[43,3],[48,3],[49,3],[44,3],[45,3],[46,3],[47,3],[8,3],[53,3],[50,3],[51,3],[52,3],[54,3],[9,3],[55,3],[56,3],[57,3],[60,3],[58,3],[59,3],[61,3],[62,3],[10,3],[1,3],[11,3],[65,3],[64,3],[68,3],[63,3],[15,3],[14,3],[156,116],[163,117],[155,116],[170,118],[147,119],[146,120],[169,121],[164,122],[167,123],[149,124],[148,125],[144,126],[143,127],[166,128],[145,129],[150,130],[151,3],[154,130],[141,3],[172,131],[171,130],[158,132],[159,133],[161,134],[157,135],[160,136],[165,121],[152,137],[153,138],[162,139],[142,140],[168,141],[70,3],[71,142],[93,143],[102,144],[98,145],[94,3],[99,146],[96,3],[101,147],[106,148],[95,3],[104,3],[103,3],[105,149],[97,150],[100,151],[121,143],[123,152],[122,153],[124,154]],"semanticDiagnosticsPerFile":[126,119,127,128,125,129,120,107,108,84,109,83,112,113,111,114,110,115,82,81,80,79,78,72,73,74,77,76,75,118,117,116,132,130,235,238,237,135,131,133,134,136,137,225,230,231,232,233,234,243,244,245,246,248,249,247,250,251,252,253,254,255,256,257,258,259,260,261,262,263,138,139,174,175,176,177,178,179,180,181,182,183,184,186,185,187,188,189,173,223,190,191,192,224,193,194,195,196,197,198,199,200,201,202,203,204,205,207,206,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,264,265,266,267,292,293,268,271,290,291,281,280,278,273,286,284,288,272,285,289,274,275,287,269,276,277,279,283,294,282,270,307,306,301,303,302,295,296,298,300,304,305,297,299,308,309,310,311,312,313,314,315,316,317,140,236,89,86,91,85,87,92,90,88,242,241,240,226,227,229,228,69,239,66,67,12,13,17,16,2,18,19,20,21,22,23,24,25,3,4,26,30,27,28,29,31,32,33,5,34,35,36,37,6,41,38,39,40,42,7,43,48,49,44,45,46,47,8,53,50,51,52,54,9,55,56,57,60,58,59,61,62,10,1,11,65,64,68,63,15,14,156,163,155,170,147,146,169,164,167,149,148,144,143,166,145,150,151,154,141,172,171,158,159,161,157,160,165,152,153,162,142,168,70,71,93,102,98,94,99,96,101,106,95,104,103,105,97,100,121,123,122,124]},"version":"5.3.3"}