@toa.io/extensions.mail 1.0.0-alpha.143

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 (47) hide show
  1. package/LICENSE +22 -0
  2. package/components/mail.agent/manifest.toa.yaml +25 -0
  3. package/components/mail.agent/operations/providers/Console.js +11 -0
  4. package/components/mail.agent/operations/providers/Resend.js +24 -0
  5. package/components/mail.agent/operations/providers/index.js +2 -0
  6. package/components/mail.agent/operations/send.js +81 -0
  7. package/cucumber.js +7 -0
  8. package/features/mail.feature +49 -0
  9. package/features/steps/.env.example +0 -0
  10. package/features/steps/Calls.ts +36 -0
  11. package/features/steps/Render.ts +29 -0
  12. package/features/steps/Service.ts +45 -0
  13. package/features/steps/components/spam/manifest.toa.yaml +18 -0
  14. package/features/steps/components/spam/operations/send.js +12 -0
  15. package/features/steps/environment.ts +1 -0
  16. package/features/steps/tsconfig.json +9 -0
  17. package/package.json +30 -0
  18. package/source/Annotation.ts +5 -0
  19. package/source/Aspect.ts +34 -0
  20. package/source/Composition.ts +52 -0
  21. package/source/Factory.ts +22 -0
  22. package/source/deployment.ts +17 -0
  23. package/source/index.ts +3 -0
  24. package/source/types.ts +22 -0
  25. package/transpiled/Annotation.d.ts +5 -0
  26. package/transpiled/Annotation.js +3 -0
  27. package/transpiled/Annotation.js.map +1 -0
  28. package/transpiled/Aspect.d.ts +14 -0
  29. package/transpiled/Aspect.js +50 -0
  30. package/transpiled/Aspect.js.map +1 -0
  31. package/transpiled/Composition.d.ts +13 -0
  32. package/transpiled/Composition.js +39 -0
  33. package/transpiled/Composition.js.map +1 -0
  34. package/transpiled/Factory.d.ts +8 -0
  35. package/transpiled/Factory.js +19 -0
  36. package/transpiled/Factory.js.map +1 -0
  37. package/transpiled/deployment.d.ts +2 -0
  38. package/transpiled/deployment.js +18 -0
  39. package/transpiled/deployment.js.map +1 -0
  40. package/transpiled/index.d.ts +3 -0
  41. package/transpiled/index.js +10 -0
  42. package/transpiled/index.js.map +1 -0
  43. package/transpiled/tsconfig.tsbuildinfo +1 -0
  44. package/transpiled/types.d.ts +17 -0
  45. package/transpiled/types.js +2 -0
  46. package/transpiled/types.js.map +1 -0
  47. package/tsconfig.json +12 -0
package/LICENSE ADDED
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2020-present Artem Gurtovoi
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,25 @@
1
+ namespace: mail
2
+ name: agent
3
+
4
+ operations:
5
+ send:
6
+ input:
7
+ properties:
8
+ to: { type: string }
9
+ subject: { type: string }
10
+ text: { type: string }
11
+ template: { type: string }
12
+ data: { type: object, default: { } }
13
+ required: [to]
14
+ oneOf:
15
+ - required: [subject, text]
16
+ - required: [template]
17
+
18
+ configuration:
19
+ schema:
20
+ properties:
21
+ provider: { type: string, enum: [Console, Resend] }
22
+ from: { type: string, format: email }
23
+ templates: { type: string, format: uri }
24
+ options: { type: object }
25
+ required: [provider, from]
@@ -0,0 +1,11 @@
1
+ export class Console {
2
+ logs
3
+
4
+ constructor (context) {
5
+ this.logs = context.logs
6
+ }
7
+
8
+ send (message) {
9
+ this.logs.debug('Email kinda sent', message)
10
+ }
11
+ }
@@ -0,0 +1,24 @@
1
+ import * as assert from 'node:assert'
2
+ import * as resend from 'resend'
3
+
4
+ export class Resend {
5
+ resend
6
+ logs
7
+
8
+ constructor (context) {
9
+ const key = context.configuration.options?.key
10
+
11
+ assert.ok(typeof key === 'string', 'Resend API key is not set')
12
+
13
+ this.resend = new resend.Resend(key)
14
+ this.logs = context.logs
15
+ }
16
+
17
+ /**
18
+ * @param {toa.extensions.mail.Message} message
19
+ * @return {Promise<void>}
20
+ */
21
+ async send (message) {
22
+ await this.resend.emails.send(message)
23
+ }
24
+ }
@@ -0,0 +1,2 @@
1
+ export { Console } from './Console'
2
+ export { Resend } from './Resend'
@@ -0,0 +1,81 @@
1
+ import * as assert from 'node:assert'
2
+ import * as providers from './providers'
3
+ import { load as parse } from 'cheerio'
4
+
5
+ export class Effect {
6
+ /**
7
+ * Base url for rendering
8
+ */
9
+ base
10
+ from
11
+ provider
12
+ logs
13
+
14
+ mount (context) {
15
+ assert.ok(context.configuration.provider in providers, `Unknown mail provider ${context.configuration.provider}`)
16
+
17
+ const Provider = providers[context.configuration.provider]
18
+
19
+ this.provider = new Provider(context)
20
+ this.from = context.configuration.from
21
+ this.base = context.configuration.templates
22
+ this.logs = context.logs
23
+ }
24
+
25
+ async execute ({ to, subject, text, template, data }) {
26
+ if (to.endsWith('.null')) {
27
+ this.logs.debug('Mail skipped', { to, template })
28
+
29
+ return
30
+ }
31
+
32
+ const properties = template === undefined ? { text } : await this.html(template, data)
33
+
34
+ if (subject !== undefined)
35
+ properties.subject = subject
36
+
37
+ const message = {
38
+ ...properties,
39
+ to,
40
+ from: this.from
41
+ }
42
+
43
+ this.logs.debug('Sending mail', message)
44
+
45
+ await this.provider.send(message)
46
+ }
47
+
48
+ async html (template, data) {
49
+ const { title, html } = await this.render(template, data)
50
+
51
+ /** @type {toa.extensions.mail.Message} */
52
+ return { subject: title, html }
53
+ }
54
+
55
+ async render (template, data) {
56
+ assert.ok(this.base !== undefined, 'Base url for rendering is not set, cannot send HTML mail')
57
+
58
+ const url = new URL(`./${template}/`, this.base).href
59
+
60
+ this.logs.debug('Requesting render', { url, data })
61
+
62
+ const response = await fetch(url, {
63
+ method: 'POST',
64
+ headers: {
65
+ 'content-type': 'application/json'
66
+ },
67
+ body: JSON.stringify(data)
68
+ })
69
+
70
+ const type = response.headers.get('content-type')
71
+
72
+ assert.ok(response.status >= 200 && response.status < 300, `Failed to render ${response.status}`)
73
+ assert.ok(type === 'text/html', `Rendering reply must be text/html, ${type} received`)
74
+
75
+ const html = await response.text()
76
+ const $ = parse(html)
77
+ const title = $('title').text()
78
+
79
+ return { title, html }
80
+ }
81
+ }
package/cucumber.js ADDED
@@ -0,0 +1,7 @@
1
+ module.exports = {
2
+ default: {
3
+ requireModule: ['ts-node/register'],
4
+ require: ['./features/**/*.ts'],
5
+ failFast: true
6
+ }
7
+ }
@@ -0,0 +1,49 @@
1
+ Feature: Sending an email
2
+
3
+ Scenario: Sending an email
4
+ Given the `mail.agent` configuration:
5
+ """yaml
6
+ templates: http://localhost:8088/emails/
7
+ provider: Console
8
+ from: noreply@nobody.null
9
+ """
10
+ And the service is running
11
+ And the spam is running
12
+ And rendering is sending:
13
+ """html
14
+ <head>
15
+ <title>Hello!</title>
16
+ </head>
17
+ <body>
18
+ <p>This is a beautiful email</p>
19
+ </body>
20
+ """
21
+ When `spam.send` is called:
22
+ """yaml
23
+ to: no@one
24
+ template: hello
25
+ """
26
+ When `spam.send` is called:
27
+ """yaml
28
+ to: some@one
29
+ template: bye
30
+ data:
31
+ name: Some One
32
+ """
33
+ Then go check the email or logs
34
+
35
+ Scenario: Sending text email
36
+ Given the `mail.agent` configuration:
37
+ """yaml
38
+ provider: Console
39
+ from: noreply@nobody.null
40
+ """
41
+ And the service is running
42
+ And the spam is running
43
+ When `spam.send` is called:
44
+ """yaml
45
+ to: no@one
46
+ subject: Test
47
+ text: hello!
48
+ """
49
+ Then go check the email or logs
File without changes
@@ -0,0 +1,36 @@
1
+ import { after, binding, given, then } from 'cucumber-tsflow'
2
+ import * as boot from '@toa.io/boot'
3
+ import { Locator, type Remote } from '@toa.io/core'
4
+ import { load as parse } from 'js-yaml'
5
+
6
+ @binding()
7
+ export class Calls {
8
+ private spam!: Remote
9
+
10
+ @given('`spam.send` is called:')
11
+ public async call (yaml: string): Promise<void> {
12
+ this.spam ??= await this.connect()
13
+
14
+ const input = parse(yaml)
15
+
16
+ await this.spam.invoke('send', { input })
17
+ }
18
+
19
+ @then('go check the email or logs')
20
+ public sent (): void {
21
+ }
22
+
23
+ @after()
24
+ private async disconnect (): Promise<void> {
25
+ await this.spam?.disconnect(true)
26
+ }
27
+
28
+ private async connect (): Promise<Remote> {
29
+ const locator = new Locator('spam', 'default')
30
+ const remote = await boot.remote(locator)
31
+
32
+ await remote.connect()
33
+
34
+ return remote
35
+ }
36
+ }
@@ -0,0 +1,29 @@
1
+ import * as assert from 'node:assert'
2
+ import { createServer, type Server } from 'node:http'
3
+ import { once } from 'node:events'
4
+ import { after, binding, given } from 'cucumber-tsflow'
5
+
6
+ @binding()
7
+ export class Render {
8
+ private server: Server | null = null
9
+
10
+ @given('rendering is sending:')
11
+ public async run (html: string): Promise<void> {
12
+ this.server = createServer((req, res) => {
13
+ assert.ok(req.method === 'POST')
14
+ assert.ok(req.headers['content-type'] === 'application/json')
15
+
16
+ res.writeHead(200, { 'content-Type': 'text/html' })
17
+ res.end(html)
18
+ })
19
+
20
+ await once(this.server.listen(8088), 'listening')
21
+ }
22
+
23
+ @after()
24
+ public async stop (): Promise<void> {
25
+ if (this.server === null) return
26
+
27
+ await once(this.server.close(), 'close')
28
+ }
29
+ }
@@ -0,0 +1,45 @@
1
+ import { resolve } from 'node:path'
2
+ import { after, binding, given } from 'cucumber-tsflow'
3
+ import { load as parse } from 'js-yaml'
4
+ import { encode } from '@toa.io/generic'
5
+ import * as boot from '@toa.io/boot'
6
+ import { Factory } from '../../source'
7
+ import type { Connector } from '@toa.io/core'
8
+
9
+ @binding()
10
+ export class Service {
11
+ private service: Connector | null = null
12
+ private composition: Connector | null = null
13
+
14
+ @given('the service is running')
15
+ public async start (): Promise<void> {
16
+ const factory = new Factory(boot)
17
+
18
+ this.service = factory.service()
19
+
20
+ await this.service.connect()
21
+ }
22
+
23
+ @given('the `{word}` configuration:')
24
+ public async configure (id: string, yaml: string): Promise<void> {
25
+ const [name, namespace = 'default'] = id.split('.').reverse()
26
+ const key = `TOA_CONFIGURATION_${namespace.toUpperCase()}_${name.toUpperCase()}`
27
+ const configuration = parse(yaml)
28
+
29
+ process.env[key] = encode(configuration)
30
+ }
31
+
32
+ @given('the spam is running')
33
+ public async runSpam (): Promise<void> {
34
+ const spam = resolve(__dirname, './components/spam')
35
+
36
+ this.composition = await boot.composition([spam])
37
+ await this.composition.connect()
38
+ }
39
+
40
+ @after()
41
+ public async stop (): Promise<void> {
42
+ await this.service?.disconnect(true)
43
+ await this.composition?.disconnect(true)
44
+ }
45
+ }
@@ -0,0 +1,18 @@
1
+ name: spam
2
+
3
+ operations:
4
+ send:
5
+ input:
6
+ type: object
7
+ properties:
8
+ to: { type: string }
9
+ subject: { type: string }
10
+ text: { type: string }
11
+ template: { type: string }
12
+ data: { type: object }
13
+ required: [to]
14
+ oneOf:
15
+ - required: [subject, text]
16
+ - required: [template]
17
+
18
+ mail: ~
@@ -0,0 +1,12 @@
1
+ 'use strict'
2
+
3
+ /**
4
+ * @param {toa.extensions.mail.Message} input
5
+ * @param context
6
+ * @return {Promise<void>}
7
+ */
8
+ async function effect (input, context) {
9
+ await context.mail.send(input)
10
+ }
11
+
12
+ exports.effect = effect
@@ -0,0 +1 @@
1
+ process.env.TOA_DEV = '1'
@@ -0,0 +1,9 @@
1
+ {
2
+ "compilerOptions": {
3
+ "target": "ESNext",
4
+ "noEmit": true,
5
+ "moduleResolution": "node",
6
+ "experimentalDecorators": true,
7
+ "emitDecoratorMetadata": true
8
+ }
9
+ }
package/package.json ADDED
@@ -0,0 +1,30 @@
1
+ {
2
+ "name": "@toa.io/extensions.mail",
3
+ "version": "1.0.0-alpha.143",
4
+ "description": "Toa Mail",
5
+ "author": "temich <tema.gurtovoy@gmail.com>",
6
+ "homepage": "https://github.com/toa-io/toa#readme",
7
+ "main": "transpiled/index.js",
8
+ "types": "transpiled/index.d.ts",
9
+ "repository": {
10
+ "type": "git",
11
+ "url": "git+https://github.com/toa-io/toa.git"
12
+ },
13
+ "bugs": {
14
+ "url": "https://github.com/toa-io/toa/issues"
15
+ },
16
+ "publishConfig": {
17
+ "access": "public"
18
+ },
19
+ "scripts": {
20
+ "test": "jest",
21
+ "transpile": "tsc",
22
+ "features": "cucumber-js"
23
+ },
24
+ "dependencies": {
25
+ "@toa.io/schemas": "1.0.0-alpha.143",
26
+ "cheerio": "1.0.0",
27
+ "resend": "4.1.2"
28
+ },
29
+ "gitHead": "a98d593cac7077f15ef3d178c35dbb9f5742af47"
30
+ }
@@ -0,0 +1,5 @@
1
+ export interface Annotation {
2
+ provider: string
3
+ from: string
4
+ templates?: string
5
+ }
@@ -0,0 +1,34 @@
1
+ import * as assert from 'node:assert'
2
+ import { Connector, type Remote, type extensions, Locator } from '@toa.io/core'
3
+ import type { Bootloader } from './Factory'
4
+
5
+ export class Aspect extends Connector implements extensions.Aspect {
6
+ public readonly name = 'mail'
7
+
8
+ private readonly boot: Bootloader
9
+ private remote!: Remote
10
+
11
+ public constructor (boot: Bootloader) {
12
+ super()
13
+ this.boot = boot
14
+ }
15
+
16
+ public async invoke (operation: string, args: Input): Promise<unknown> {
17
+ assert.ok(operation === 'send', `Unknown mail extension operation '${operation}'`)
18
+
19
+ const { sync, ...input } = args
20
+
21
+ return await this.remote.invoke(operation, { input, task: sync !== true })
22
+ }
23
+
24
+ protected override async open (): Promise<void> {
25
+ const locator = new Locator('agent', 'mail')
26
+
27
+ this.remote = await this.boot.remote(locator)
28
+ this.depends(this.remote)
29
+
30
+ await this.remote.connect()
31
+ }
32
+ }
33
+
34
+ type Input = { sync?: boolean } & toa.extensions.mail.Message
@@ -0,0 +1,52 @@
1
+ import { resolve } from 'node:path'
2
+ import { readdirSync } from 'node:fs'
3
+ import { Connector } from '@toa.io/core'
4
+ import type { Dirent } from 'node:fs'
5
+ import type { Bootloader } from './Factory'
6
+
7
+ export class Composition extends Connector {
8
+ private readonly boot: Bootloader
9
+
10
+ public constructor (boot: Bootloader) {
11
+ super()
12
+ this.boot = boot
13
+ }
14
+
15
+ protected override async open (): Promise<void> {
16
+ const paths = find()
17
+ const composition = await this.boot.composition(paths)
18
+
19
+ await composition.connect()
20
+
21
+ this.depends(composition)
22
+ }
23
+ }
24
+
25
+ function find (): string[] {
26
+ return entries().map((entry) => resolve(ROOT, entry.name))
27
+ }
28
+
29
+ function entries (): Dirent[] {
30
+ const entries = readdirSync(ROOT, { withFileTypes: true })
31
+
32
+ return entries.filter((entry) => entry.isDirectory())
33
+ }
34
+
35
+ export function components (): Components {
36
+ const labels: string[] = []
37
+ const paths: string[] = []
38
+
39
+ for (const entry of entries()) {
40
+ labels.push(entry.name.replace('.', '-'))
41
+ paths.push(resolve(ROOT, entry.name))
42
+ }
43
+
44
+ return { labels, paths }
45
+ }
46
+
47
+ interface Components {
48
+ labels: string[]
49
+ paths: string[]
50
+ }
51
+
52
+ const ROOT = resolve(__dirname, '../components/')
@@ -0,0 +1,22 @@
1
+ import { Composition } from './Composition'
2
+ import { Aspect } from './Aspect'
3
+ import type { Connector, extensions } from '@toa.io/core'
4
+
5
+ export class Factory implements extensions.Factory {
6
+ private readonly boot: Bootloader
7
+
8
+ public constructor (boot: Bootloader) {
9
+ this.boot = boot
10
+ }
11
+
12
+ public aspect (): extensions.Aspect {
13
+ return new Aspect(this.boot)
14
+ }
15
+
16
+ public service (): Connector {
17
+ return new Composition(this.boot)
18
+ }
19
+ }
20
+
21
+ // eslint-disable-next-line @typescript-eslint/consistent-type-imports
22
+ export type Bootloader = typeof import('@toa.io/boot')
@@ -0,0 +1,17 @@
1
+ import { components } from './Composition'
2
+ import type { Dependency, Service } from '@toa.io/operations'
3
+
4
+ export function deployment (): Dependency {
5
+ const labels = components().labels
6
+
7
+ const service: Service = {
8
+ group: 'mail',
9
+ name: 'agent',
10
+ // eslint-disable-next-line @typescript-eslint/no-var-requires
11
+ version: require('../package.json').version,
12
+ variables: [],
13
+ components: labels
14
+ }
15
+
16
+ return { services: [service] }
17
+ }
@@ -0,0 +1,3 @@
1
+ export { components } from './Composition'
2
+ export { deployment } from './deployment'
3
+ export { Factory } from './Factory'
@@ -0,0 +1,22 @@
1
+ // eslint-disable-next-line @typescript-eslint/no-namespace
2
+ declare namespace toa.extensions.mail {
3
+ interface Properties {
4
+ to: string
5
+ from: string
6
+ subject: string
7
+ }
8
+
9
+ interface TextMessage extends Properties {
10
+ text: string
11
+ }
12
+
13
+ interface HTMLMessage extends Properties {
14
+ html: string
15
+ }
16
+
17
+ export type Message = TextMessage | HTMLMessage
18
+
19
+ export interface Aspect {
20
+ send: (message: Message) => Promise<void>
21
+ }
22
+ }
@@ -0,0 +1,5 @@
1
+ export interface Annotation {
2
+ provider: string;
3
+ from: string;
4
+ templates?: string;
5
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=Annotation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Annotation.js","sourceRoot":"","sources":["../source/Annotation.ts"],"names":[],"mappings":""}
@@ -0,0 +1,14 @@
1
+ import { Connector, type extensions } from '@toa.io/core';
2
+ import type { Bootloader } from './Factory';
3
+ export declare class Aspect extends Connector implements extensions.Aspect {
4
+ readonly name = "mail";
5
+ private readonly boot;
6
+ private remote;
7
+ constructor(boot: Bootloader);
8
+ invoke(operation: string, args: Input): Promise<unknown>;
9
+ protected open(): Promise<void>;
10
+ }
11
+ type Input = {
12
+ sync?: boolean;
13
+ } & toa.extensions.mail.Message;
14
+ export {};
@@ -0,0 +1,50 @@
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.Aspect = void 0;
27
+ const assert = __importStar(require("node:assert"));
28
+ const core_1 = require("@toa.io/core");
29
+ class Aspect extends core_1.Connector {
30
+ name = 'mail';
31
+ boot;
32
+ remote;
33
+ constructor(boot) {
34
+ super();
35
+ this.boot = boot;
36
+ }
37
+ async invoke(operation, args) {
38
+ assert.ok(operation === 'send', `Unknown mail extension operation '${operation}'`);
39
+ const { sync, ...input } = args;
40
+ return await this.remote.invoke(operation, { input, task: sync !== true });
41
+ }
42
+ async open() {
43
+ const locator = new core_1.Locator('agent', 'mail');
44
+ this.remote = await this.boot.remote(locator);
45
+ this.depends(this.remote);
46
+ await this.remote.connect();
47
+ }
48
+ }
49
+ exports.Aspect = Aspect;
50
+ //# sourceMappingURL=Aspect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Aspect.js","sourceRoot":"","sources":["../source/Aspect.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,oDAAqC;AACrC,uCAA+E;AAG/E,MAAa,MAAO,SAAQ,gBAAS;IACnB,IAAI,GAAG,MAAM,CAAA;IAEZ,IAAI,CAAY;IACzB,MAAM,CAAS;IAEvB,YAAoB,IAAgB;QAClC,KAAK,EAAE,CAAA;QACP,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;IAClB,CAAC;IAEM,KAAK,CAAC,MAAM,CAAE,SAAiB,EAAE,IAAW;QACjD,MAAM,CAAC,EAAE,CAAC,SAAS,KAAK,MAAM,EAAE,qCAAqC,SAAS,GAAG,CAAC,CAAA;QAElF,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,GAAG,IAAI,CAAA;QAE/B,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,KAAK,IAAI,EAAE,CAAC,CAAA;IAC5E,CAAC;IAEkB,KAAK,CAAC,IAAI;QAC3B,MAAM,OAAO,GAAG,IAAI,cAAO,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;QAE5C,IAAI,CAAC,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;QAC7C,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QAEzB,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAA;IAC7B,CAAC;CACF;AA3BD,wBA2BC"}
@@ -0,0 +1,13 @@
1
+ import { Connector } from '@toa.io/core';
2
+ import type { Bootloader } from './Factory';
3
+ export declare class Composition extends Connector {
4
+ private readonly boot;
5
+ constructor(boot: Bootloader);
6
+ protected open(): Promise<void>;
7
+ }
8
+ export declare function components(): Components;
9
+ interface Components {
10
+ labels: string[];
11
+ paths: string[];
12
+ }
13
+ export {};
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.components = exports.Composition = void 0;
4
+ const node_path_1 = require("node:path");
5
+ const node_fs_1 = require("node:fs");
6
+ const core_1 = require("@toa.io/core");
7
+ class Composition extends core_1.Connector {
8
+ boot;
9
+ constructor(boot) {
10
+ super();
11
+ this.boot = boot;
12
+ }
13
+ async open() {
14
+ const paths = find();
15
+ const composition = await this.boot.composition(paths);
16
+ await composition.connect();
17
+ this.depends(composition);
18
+ }
19
+ }
20
+ exports.Composition = Composition;
21
+ function find() {
22
+ return entries().map((entry) => (0, node_path_1.resolve)(ROOT, entry.name));
23
+ }
24
+ function entries() {
25
+ const entries = (0, node_fs_1.readdirSync)(ROOT, { withFileTypes: true });
26
+ return entries.filter((entry) => entry.isDirectory());
27
+ }
28
+ function components() {
29
+ const labels = [];
30
+ const paths = [];
31
+ for (const entry of entries()) {
32
+ labels.push(entry.name.replace('.', '-'));
33
+ paths.push((0, node_path_1.resolve)(ROOT, entry.name));
34
+ }
35
+ return { labels, paths };
36
+ }
37
+ exports.components = components;
38
+ const ROOT = (0, node_path_1.resolve)(__dirname, '../components/');
39
+ //# sourceMappingURL=Composition.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Composition.js","sourceRoot":"","sources":["../source/Composition.ts"],"names":[],"mappings":";;;AAAA,yCAAmC;AACnC,qCAAqC;AACrC,uCAAwC;AAIxC,MAAa,WAAY,SAAQ,gBAAS;IACvB,IAAI,CAAY;IAEjC,YAAoB,IAAgB;QAClC,KAAK,EAAE,CAAA;QACP,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;IAClB,CAAC;IAEkB,KAAK,CAAC,IAAI;QAC3B,MAAM,KAAK,GAAG,IAAI,EAAE,CAAA;QACpB,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAA;QAEtD,MAAM,WAAW,CAAC,OAAO,EAAE,CAAA;QAE3B,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAA;IAC3B,CAAC;CACF;AAhBD,kCAgBC;AAED,SAAS,IAAI;IACX,OAAO,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAA,mBAAO,EAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAA;AAC5D,CAAC;AAED,SAAS,OAAO;IACd,MAAM,OAAO,GAAG,IAAA,qBAAW,EAAC,IAAI,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAA;IAE1D,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAA;AACvD,CAAC;AAED,SAAgB,UAAU;IACxB,MAAM,MAAM,GAAa,EAAE,CAAA;IAC3B,MAAM,KAAK,GAAa,EAAE,CAAA;IAE1B,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,EAAE,CAAC;QAC9B,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAA;QACzC,KAAK,CAAC,IAAI,CAAC,IAAA,mBAAO,EAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAA;IACvC,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAA;AAC1B,CAAC;AAVD,gCAUC;AAOD,MAAM,IAAI,GAAG,IAAA,mBAAO,EAAC,SAAS,EAAE,gBAAgB,CAAC,CAAA"}
@@ -0,0 +1,8 @@
1
+ import type { Connector, extensions } from '@toa.io/core';
2
+ export declare class Factory implements extensions.Factory {
3
+ private readonly boot;
4
+ constructor(boot: Bootloader);
5
+ aspect(): extensions.Aspect;
6
+ service(): Connector;
7
+ }
8
+ export type Bootloader = typeof import('@toa.io/boot');
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Factory = void 0;
4
+ const Composition_1 = require("./Composition");
5
+ const Aspect_1 = require("./Aspect");
6
+ class Factory {
7
+ boot;
8
+ constructor(boot) {
9
+ this.boot = boot;
10
+ }
11
+ aspect() {
12
+ return new Aspect_1.Aspect(this.boot);
13
+ }
14
+ service() {
15
+ return new Composition_1.Composition(this.boot);
16
+ }
17
+ }
18
+ exports.Factory = Factory;
19
+ //# sourceMappingURL=Factory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Factory.js","sourceRoot":"","sources":["../source/Factory.ts"],"names":[],"mappings":";;;AAAA,+CAA2C;AAC3C,qCAAiC;AAGjC,MAAa,OAAO;IACD,IAAI,CAAY;IAEjC,YAAoB,IAAgB;QAClC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;IAClB,CAAC;IAEM,MAAM;QACX,OAAO,IAAI,eAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAC9B,CAAC;IAEM,OAAO;QACZ,OAAO,IAAI,yBAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACnC,CAAC;CACF;AAdD,0BAcC"}
@@ -0,0 +1,2 @@
1
+ import type { Dependency } from '@toa.io/operations';
2
+ export declare function deployment(): Dependency;
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.deployment = void 0;
4
+ const Composition_1 = require("./Composition");
5
+ function deployment() {
6
+ const labels = (0, Composition_1.components)().labels;
7
+ const service = {
8
+ group: 'mail',
9
+ name: 'agent',
10
+ // eslint-disable-next-line @typescript-eslint/no-var-requires
11
+ version: require('../package.json').version,
12
+ variables: [],
13
+ components: labels
14
+ };
15
+ return { services: [service] };
16
+ }
17
+ exports.deployment = deployment;
18
+ //# sourceMappingURL=deployment.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deployment.js","sourceRoot":"","sources":["../source/deployment.ts"],"names":[],"mappings":";;;AAAA,+CAA0C;AAG1C,SAAgB,UAAU;IACxB,MAAM,MAAM,GAAG,IAAA,wBAAU,GAAE,CAAC,MAAM,CAAA;IAElC,MAAM,OAAO,GAAY;QACvB,KAAK,EAAE,MAAM;QACb,IAAI,EAAE,OAAO;QACb,8DAA8D;QAC9D,OAAO,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC,OAAO;QAC3C,SAAS,EAAE,EAAE;QACb,UAAU,EAAE,MAAM;KACnB,CAAA;IAED,OAAO,EAAE,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAA;AAChC,CAAC;AAbD,gCAaC"}
@@ -0,0 +1,3 @@
1
+ export { components } from './Composition';
2
+ export { deployment } from './deployment';
3
+ export { Factory } from './Factory';
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Factory = exports.deployment = exports.components = void 0;
4
+ var Composition_1 = require("./Composition");
5
+ Object.defineProperty(exports, "components", { enumerable: true, get: function () { return Composition_1.components; } });
6
+ var deployment_1 = require("./deployment");
7
+ Object.defineProperty(exports, "deployment", { enumerable: true, get: function () { return deployment_1.deployment; } });
8
+ var Factory_1 = require("./Factory");
9
+ Object.defineProperty(exports, "Factory", { enumerable: true, get: function () { return Factory_1.Factory; } });
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../source/index.ts"],"names":[],"mappings":";;;AAAA,6CAA0C;AAAjC,yGAAA,UAAU,OAAA;AACnB,2CAAyC;AAAhC,wGAAA,UAAU,OAAA;AACnB,qCAAmC;AAA1B,kGAAA,OAAO,OAAA"}
@@ -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","../source/Annotation.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/operations.d.ts","../../../runtime/core/types/component.d.ts","../../../runtime/core/types/context.d.ts","../../../runtime/core/types/storages.d.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","../../../runtime/core/types/extensions.d.ts","../../../runtime/core/types/bridges.ts","../../../runtime/core/types/remote.d.ts","../../../runtime/core/types/message.d.ts","../../../runtime/core/types/receiver.d.ts","../../../runtime/core/types/index.ts","../source/Composition.ts","../../../runtime/boot/types/composition.d.ts","../../../runtime/boot/types/bindings.d.ts","../../../runtime/boot/types/index.d.ts","../source/Factory.ts","../source/Aspect.ts","../../../operations/types/dependency.ts","../../../operations/types/index.ts","../source/deployment.ts","../source/index.ts","../source/types.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/caseless/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/conventional-commits-parser/index.d.ts","../../../node_modules/@types/cors/index.d.ts","../../../node_modules/@types/duplexify/index.d.ts","../../../node_modules/@types/graceful-fs/index.d.ts","../../../node_modules/@types/http-cache-semantics/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/jest-matcher-utils/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/long/index.d.ts","../../../node_modules/@types/minimatch/index.d.ts","../../../node_modules/@types/minimist/index.d.ts","../../../node_modules/@types/negotiator/index.d.ts","../../../node_modules/@types/normalize-package-data/index.d.ts","../../../node_modules/@types/randomstring/index.d.ts","../../../node_modules/@types/request/node_modules/form-data/index.d.ts","../../../node_modules/@types/tough-cookie/index.d.ts","../../../node_modules/@types/request/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/uuid/index.d.ts","../../../node_modules/@types/webidl-conversions/index.d.ts","../../../node_modules/@types/whatwg-url/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",{"version":"04baef83c4be2d8c262d77a8fc603c3b7adc4929db0e59aadf0ea73692163aee","signature":"6096e3aedc07b4629f2419fdb7f6aabc045f6ccbc2e2f0c5ea0e3e9474ac5100"},"360748ddf78dcf045b72c26569a82a3a4097963a4de9ca165a608ee557a70d77","b297d49b7ce31c940c72329a2a8e0d3ea4493da2d02dbb2e10d18a70c41c2dbd","ae1b493f13f348cb8e05c1217e500ab7365162758dd02304ae07b36ce5eadfa3","2beb94ef1961eb5c639e8f3cbbe1483bf2d9d53855fde0b20c1a3429d3a6160b","a52a24e0f94197f743997495bd7395239843226d1389ac05bfbde5eaca166e65","5c35e8ebe93b84dfffca5ab4348524af630144bd40640c09275011389c2620ac","d85578011e82176f27814764118ee840b4c1ab195aa1a8a551d7ef259930b03d","279541f81029449f33b96790cd7222664bdf66eaa6c1c719c8b451ae8b69ebe5","863a16bffa4414a6784927eec1b17523521761b2b2344a0b98f140c91d659859","503d1e771e298776cb5c75e2ed29962ce9a7360dafc65b5126911b3fa8a2c339","71e46111f57a5c82031adbac22eb542b5f63a8be4d5ee9253036cafe81d16112","bee841486123ba419b764cc86c5e4faf47317eb9c2d048408b88e7efa885106e","53e95c2c536d057f438646855f24e39f888dc415ca56ef8fae1ec1d5b5485883","a95f1ba9fe001c254c7405c949f88d2c8df2a335f95d8e9ccd14ee0054284ab9","1f3d731ec6a2963e054fe46cfe1eecea1b29f71fc4ee1bf9ddd1c9908637b48d","e125f1060f25e6fe336221493926a866bc8d6ac66c8a292bc658f987ec5c2587","dcd8de07b4735d845b06e546f4f4c6014388cceaf171495e8e7ec40551e167cf","a06788dcbb350c361b23aad1671f6818641850ab75050e7abc0ae42f6ae49090","0c07ec827d8a0b669851f65f0f8a59abb73fec2b50099c673848ef449a10feb6",{"version":"bcc5893257efbabfd009d545acadbff81bb73a862bf719480b00d440a95624b7","signature":"ddef916106f970ae8f2163f2a4bd4a4c82de352314777bcca644c75db44c727a"},"12eba3057b31f38f7f407d9963b6c84a48ee9077fa6e67fdecaa7a982c0920f3","40bc28aa8f307424fb257bd737c444d5c1ecc483739cbe4909a3c052995529b5","afe4235e76dcd0fe96858112508d1de4a1a032256f35f46a36b562f0a182d112",{"version":"cba23c29534e774ed21b06c937cca96f97995a94a3aa2ab927923e722dbd56dd","signature":"22b76d56cd1538a56e5a85dd7f2a9657db3898098098121b1fa89d0c51338ef6"},{"version":"c6c28ebe12d7490ea38896eb9181ccb97814675502edd961be3163e1ca2f83d0","signature":"c90860cdc41d7baa147a7b5f472ebf485c41df0672b18a9a7bf5c7a6b2864c03"},"c5a68394960c2fe824c802e5e7d59dfab5ce5cbc5d95b1e4a5fab8032deaeb4c","6e77fb2250275d3945569ac61104a29927624b5a7ba0e905e7e1defd1f2ed151",{"version":"f71dbea0fbf4d99ebf62f930c5b68cf8c073dd42a7d43b8850e3231e07297285","signature":"e59441419bf9f9a6d60da138e0fabb7098668ae150b51c3c3e5a9ef20e211b44"},{"version":"be70199ae5691c8bc61d61dca8eec5201233e8ecad7267332e933eaae3e8394a","signature":"6c0db4d92f519ab19e2923264e2bbf9585c8a69ef713cdce8bedfdaf848cc6ac"},{"version":"20a94b57f8520e8a3261b225fa4d17312e3a4d4e5323b756a7677a2296084ca6","signature":"2af870ad6db3d90714cc31f078bb32afe7a99af0c00a6b9f530f9b66830fef5c","affectsGlobalScope":true},"7983487d0fbefb9b6ccc94390e8c826328d87e21cd4a62ea5b4c6b8f99f32550","2c8e55457aaf4902941dfdba4061935922e8ee6e120539c9801cd7b400fae050","5f02abbb1b17e3d1e68c5eea14adf4705696e6255e2982b010c0dc2a5417b606","670a76db379b27c8ff42f1ba927828a22862e2ab0b0908e38b671f0e912cc5ed","9e0cf651e8e2c5b9bebbabdff2f7c6f8cedd91b1d9afcc0a854cdff053a88f1b","069bebfee29864e3955378107e243508b163e77ab10de6a5ee03ae06939f0bb9","dbe8bd931d343b9804d5398afb6dd6d6728975b2e23a3314bc4911f81c5e5a33","2174e20517788d2a1379fc0aaacd87899a70f9e0197b4295edabfe75c4db03d8","09df3b4f1c937f02e7fee2836d4c4d7a63e66db70fd4d4e97126f4542cc21d9d","7394959e5a741b185456e1ef5d64599c36c60a323207450991e7a42e08911419","8e9c23ba78aabc2e0a27033f18737a6df754067731e69dc5f52823957d60a4b6","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","f96f3c445afc7d65d4790386e37c5b57f095f285cc89b8315b209fe0c81837c1","efdced704bd09db6984a2a26e3573bc43cdc2379bdef3bcff6cff77efe8ba82b","f6e4d465828539e051c5c1a40ee835fd954ce5cfc45de8e31ac1561bad5d947b","afe73051ff6a03a9565cbd8ebb0e956ee3df5e913ad5c1ded64218aabfa3dcb5","d7dbe0ad36bdca8a6ecf143422a48e72cc8927bab7b23a1a2485c2f78a7022c6","035a5df183489c2e22f3cf59fc1ed2b043d27f357eecc0eb8d8e840059d44245","a4809f4d92317535e6b22b01019437030077a76fec1d93b9881c9ed4738fcc54","5f53fa0bd22096d2a78533f94e02c899143b8f0f9891a46965294ee8b91a9434","cdcc132f207d097d7d3aa75615ab9a2e71d6a478162dde8b67f88ea19f3e54de","0d14fa22c41fdc7277e6f71473b20ebc07f40f00e38875142335d5b63cdfc9d2","c085e9aa62d1ae1375794c1fb927a445fa105fed891a7e24edbb1c3300f7384a","f315e1e65a1f80992f0509e84e4ae2df15ecd9ef73df975f7c98813b71e4c8da","5b9586e9b0b6322e5bfbd2c29bd3b8e21ab9d871f82346cb71020e3d84bae73e","3e70a7e67c2cb16f8cd49097360c0309fe9d1e3210ff9222e9dac1f8df9d4fb6","ab68d2a3e3e8767c3fba8f80de099a1cfc18c0de79e42cb02ae66e22dfe14a66","d96cc6598148bf1a98fb2e8dcf01c63a4b3558bdaec6ef35e087fd0562eb40ec",{"version":"b2fdcc3836d425833af10e536ae5491c34e218bc71870f12a401720f874b6ce4","affectsGlobalScope":true},"686e548ae30250d62532c8cacb43fccc922b693408371bd3503563c4a0f28eed","f3d8c757e148ad968f0d98697987db363070abada5f503da3c06aefd9d4248c1","96d14f21b7652903852eef49379d04dbda28c16ed36468f8c9fa08f7c14c9538","0e60e0cbf2283adfd5a15430ae548cd2f662d581b5da6ecd98220203e7067c70","8841e2aa774b89bd23302dede20663306dc1b9902431ac64b24be8b8d0e3f649","fbca5ffaebf282ec3cdac47b0d1d4a138a8b0bb32105251a38acb235087d3318","f4694959db84d3792ca4d4e04c0bc157c4d28627cb0406c9236351f261a3f5e0","22293bd6fa12747929f8dfca3ec1684a3fe08638aa18023dd286ab337e88a592",{"version":"4698841dc5a91fe716dd41ec7136867bbde9a274ce21031e5ef6ce2d8a552ceb","affectsGlobalScope":true},"e91ad231af87f864b3f07cd0e39b1cf6c133988156f087c1c3ccb0a5491c9115","03c258e060b7da220973f84b89615e4e9850e9b5d30b3a8e4840b3e3268ae8eb","319c37263037e8d9481a3dc7eadf6afa6a5f5c002189ebe28776ac1a62a38e15","cf3d384d082b933d987c4e2fe7bfb8710adfd9dc8155190056ed6695a25a559e","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","7d8ddf0f021c53099e34ee831a06c394d50371816caa98684812f089b4c6b3d4","7abf54763b6709a2b72ecd1247c3cfe96f8c44fe6e7ce3897951ee8f4c394640","85976d1088db28912f61f76fd68103dd3625480f5ad5ba4c98519a81693ef717","ab82804a14454734010dcdcd43f564ff7b0389bee4c5692eec76ff5b30d4cf66","7d2b7fe4adb76d8253f20e4dbdce044f1cdfab4902ec33c3604585f553883f7d","f2f23fe34b735887db1d5597714ae37a6ffae530cafd6908c9d79d485667c956","5bba0e6cd8375fd37047e99a080d1bd9a808c95ecb7f3043e3adc125196f6607","bae8d023ef6b23df7da26f51cea44321f95817c190342a36882e93b80d07a960","26a770cec4bd2e7dbba95c6e536390fffe83c6268b78974a93727903b515c4e7"],"root":[69,89,93,94,[97,99]],"options":{"allowJs":true,"declaration":true,"esModuleInterop":true,"experimentalDecorators":true,"module":1,"noImplicitOverride":true,"outDir":"./","skipLibCheck":true,"sourceMap":true,"strict":true,"target":99},"fileIdsList":[[187],[88,93,108,187],[88,93,158,167,187],[88,89,92,94,187],[89,96,187],[89,93,97,187],[100,187],[187,205],[100,101,102,103,104,187],[100,102,187],[175,187,194],[160,187,194],[158,187,194],[187,200],[187,201],[187,207,210],[108,187],[144,187],[145,150,178,187],[146,157,158,165,175,186,187],[146,147,157,165,187],[148,187],[149,150,158,166,187],[150,175,183,187],[151,153,157,165,187],[152,187],[153,154,187],[157,187],[155,157,187],[144,157,187],[157,158,159,175,186,187],[157,158,159,172,175,178,187],[142,187,191],[153,157,160,165,175,186,187],[157,158,160,161,165,175,183,186,187],[160,162,175,183,186,187],[108,109,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193],[157,163,187],[164,186,187,191],[153,157,165,175,187],[166,187],[167,187],[144,168,187],[169,185,187,191],[170,187],[171,187],[157,172,173,187],[172,174,187,189],[145,157,175,176,177,178,187],[145,175,177,187],[175,176,187],[178,187],[179,187],[144,175,187],[157,181,182,187],[181,182,187],[150,165,175,183,187],[184,187],[165,185,187],[145,160,171,186,187],[150,187],[175,187,188],[164,187,189],[187,190],[145,150,157,159,168,175,186,187,189,191],[175,187,192],[107,158,160,162,165,175,186,187,194,221,222],[160,175,187,194],[187,224,263],[187,224,248,263],[187,263],[187,224],[187,224,249,263],[187,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262],[187,249,263],[157,165,175,187,194,264],[187,270],[187,203,209],[187,204,208],[187,207],[187,206],[119,123,186,187],[119,175,186,187],[114,187],[116,119,183,186,187],[165,183,187],[187,194],[114,187,194],[116,119,165,186,187],[111,112,115,118,145,157,175,186,187],[111,117,187],[115,119,145,178,186,187,194],[145,187,194],[135,145,187,194],[113,114,187,194],[119,187],[113,114,115,116,117,118,119,120,121,123,124,125,126,127,128,129,130,131,132,133,134,136,137,138,139,140,141,187],[119,126,127,187],[117,119,127,128,187],[118,187],[111,114,119,187],[119,123,127,128,187],[123,187],[117,119,122,186,187],[111,116,117,119,123,126,187],[145,175,187],[114,119,135,145,187,191,194],[82,88,187],[95,187],[88,187],[88,90,91,187],[74,77,187],[71,72,74,75,187],[71,74,83,187],[70,76,77,78,82,88,187],[70,71,72,73,74,75,76,77,78,83,84,85,86,87,187],[74,187],[71,86,187],[76,187],[73,187],[71,72,187],[79,80,88,187],[81,187],[79,81,187],[88,93],[88,92],[96],[89,93,97]],"referencedMap":[[69,1],[94,2],[89,3],[93,4],[97,5],[98,6],[99,1],[102,7],[100,1],[203,1],[206,8],[205,1],[105,9],[101,7],[103,10],[104,7],[106,1],[107,1],[195,11],[196,12],[197,11],[198,13],[199,1],[200,1],[201,14],[202,15],[211,16],[212,1],[213,1],[214,1],[215,1],[216,1],[217,1],[218,1],[108,17],[109,17],[144,18],[145,19],[146,20],[147,21],[148,22],[149,23],[150,24],[151,25],[152,26],[153,27],[154,27],[156,28],[155,29],[157,30],[158,31],[159,32],[143,33],[193,1],[160,34],[161,35],[162,36],[194,37],[163,38],[164,39],[165,40],[166,41],[167,42],[168,43],[169,44],[170,45],[171,46],[172,47],[173,47],[174,48],[175,49],[177,50],[176,51],[178,52],[179,53],[180,54],[181,55],[182,56],[183,57],[184,58],[185,59],[186,60],[187,61],[188,62],[189,63],[190,64],[191,65],[192,66],[219,1],[220,1],[223,67],[221,68],[248,69],[249,70],[224,71],[227,71],[246,69],[247,69],[237,69],[236,72],[234,69],[229,69],[242,69],[240,69],[244,69],[228,69],[241,69],[245,69],[230,69],[231,69],[243,69],[225,69],[232,69],[233,69],[235,69],[239,69],[250,73],[238,69],[226,69],[263,74],[262,1],[257,73],[259,75],[258,73],[251,73],[252,73],[254,73],[256,73],[260,75],[261,75],[253,75],[255,75],[264,11],[265,76],[266,1],[222,1],[267,1],[268,1],[269,1],[270,1],[271,77],[110,1],[210,78],[209,79],[204,1],[208,80],[207,81],[66,1],[67,1],[12,1],[13,1],[17,1],[16,1],[2,1],[18,1],[19,1],[20,1],[21,1],[22,1],[23,1],[24,1],[25,1],[3,1],[4,1],[26,1],[30,1],[27,1],[28,1],[29,1],[31,1],[32,1],[33,1],[5,1],[34,1],[35,1],[36,1],[37,1],[6,1],[41,1],[38,1],[39,1],[40,1],[42,1],[7,1],[43,1],[48,1],[49,1],[44,1],[45,1],[46,1],[47,1],[8,1],[53,1],[50,1],[51,1],[52,1],[54,1],[9,1],[55,1],[56,1],[57,1],[60,1],[58,1],[59,1],[61,1],[62,1],[10,1],[1,1],[11,1],[65,1],[64,1],[68,1],[63,1],[15,1],[14,1],[126,82],[133,83],[125,82],[140,84],[117,85],[116,86],[139,87],[134,88],[137,89],[119,90],[118,91],[114,92],[113,93],[136,94],[115,95],[120,96],[121,1],[124,96],[111,1],[142,97],[141,96],[128,98],[129,99],[131,100],[127,101],[130,102],[135,87],[122,103],[123,104],[132,105],[112,106],[138,107],[95,108],[96,109],[91,110],[90,1],[92,111],[70,110],[84,112],[76,113],[71,1],[77,114],[73,1],[83,115],[88,116],[72,1],[86,1],[75,117],[87,118],[85,119],[74,120],[78,121],[79,110],[81,122],[80,123],[82,124]],"exportedModulesMap":[[94,125],[89,125],[93,126],[97,127],[98,128],[102,7],[100,1],[203,1],[206,8],[205,1],[105,9],[101,7],[103,10],[104,7],[106,1],[107,1],[195,11],[196,12],[197,11],[198,13],[199,1],[200,1],[201,14],[202,15],[211,16],[212,1],[213,1],[214,1],[215,1],[216,1],[217,1],[218,1],[108,17],[109,17],[144,18],[145,19],[146,20],[147,21],[148,22],[149,23],[150,24],[151,25],[152,26],[153,27],[154,27],[156,28],[155,29],[157,30],[158,31],[159,32],[143,33],[193,1],[160,34],[161,35],[162,36],[194,37],[163,38],[164,39],[165,40],[166,41],[167,42],[168,43],[169,44],[170,45],[171,46],[172,47],[173,47],[174,48],[175,49],[177,50],[176,51],[178,52],[179,53],[180,54],[181,55],[182,56],[183,57],[184,58],[185,59],[186,60],[187,61],[188,62],[189,63],[190,64],[191,65],[192,66],[219,1],[220,1],[223,67],[221,68],[248,69],[249,70],[224,71],[227,71],[246,69],[247,69],[237,69],[236,72],[234,69],[229,69],[242,69],[240,69],[244,69],[228,69],[241,69],[245,69],[230,69],[231,69],[243,69],[225,69],[232,69],[233,69],[235,69],[239,69],[250,73],[238,69],[226,69],[263,74],[262,1],[257,73],[259,75],[258,73],[251,73],[252,73],[254,73],[256,73],[260,75],[261,75],[253,75],[255,75],[264,11],[265,76],[266,1],[222,1],[267,1],[268,1],[269,1],[270,1],[271,77],[110,1],[210,78],[209,79],[204,1],[208,80],[207,81],[66,1],[67,1],[12,1],[13,1],[17,1],[16,1],[2,1],[18,1],[19,1],[20,1],[21,1],[22,1],[23,1],[24,1],[25,1],[3,1],[4,1],[26,1],[30,1],[27,1],[28,1],[29,1],[31,1],[32,1],[33,1],[5,1],[34,1],[35,1],[36,1],[37,1],[6,1],[41,1],[38,1],[39,1],[40,1],[42,1],[7,1],[43,1],[48,1],[49,1],[44,1],[45,1],[46,1],[47,1],[8,1],[53,1],[50,1],[51,1],[52,1],[54,1],[9,1],[55,1],[56,1],[57,1],[60,1],[58,1],[59,1],[61,1],[62,1],[10,1],[1,1],[11,1],[65,1],[64,1],[68,1],[63,1],[15,1],[14,1],[126,82],[133,83],[125,82],[140,84],[117,85],[116,86],[139,87],[134,88],[137,89],[119,90],[118,91],[114,92],[113,93],[136,94],[115,95],[120,96],[121,1],[124,96],[111,1],[142,97],[141,96],[128,98],[129,99],[131,100],[127,101],[130,102],[135,87],[122,103],[123,104],[132,105],[112,106],[138,107],[95,108],[96,109],[91,110],[90,1],[92,111],[70,110],[84,112],[76,113],[71,1],[77,114],[73,1],[83,115],[88,116],[72,1],[86,1],[75,117],[87,118],[85,119],[74,120],[78,121],[79,110],[81,122],[80,123],[82,124]],"semanticDiagnosticsPerFile":[69,94,89,93,97,98,99,102,100,203,206,205,105,101,103,104,106,107,195,196,197,198,199,200,201,202,211,212,213,214,215,216,217,218,108,109,144,145,146,147,148,149,150,151,152,153,154,156,155,157,158,159,143,193,160,161,162,194,163,164,165,166,167,168,169,170,171,172,173,174,175,177,176,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,219,220,223,221,248,249,224,227,246,247,237,236,234,229,242,240,244,228,241,245,230,231,243,225,232,233,235,239,250,238,226,263,262,257,259,258,251,252,254,256,260,261,253,255,264,265,266,222,267,268,269,270,271,110,210,209,204,208,207,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,126,133,125,140,117,116,139,134,137,119,118,114,113,136,115,120,121,124,111,142,141,128,129,131,127,130,135,122,123,132,112,138,95,96,91,90,92,70,84,76,71,77,73,83,88,72,86,75,87,85,74,78,79,81,80,82]},"version":"5.3.3"}
@@ -0,0 +1,17 @@
1
+ declare namespace toa.extensions.mail {
2
+ interface Properties {
3
+ to: string;
4
+ from: string;
5
+ subject: string;
6
+ }
7
+ interface TextMessage extends Properties {
8
+ text: string;
9
+ }
10
+ interface HTMLMessage extends Properties {
11
+ html: string;
12
+ }
13
+ type Message = TextMessage | HTMLMessage;
14
+ interface Aspect {
15
+ send: (message: Message) => Promise<void>;
16
+ }
17
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../source/types.ts"],"names":[],"mappings":""}
package/tsconfig.json ADDED
@@ -0,0 +1,12 @@
1
+ {
2
+ "extends": "../../tsconfig.json",
3
+ "compilerOptions": {
4
+ "outDir": "./transpiled"
5
+ },
6
+ "include": [
7
+ "source"
8
+ ],
9
+ "exclude": [
10
+ "**/*.test.ts"
11
+ ]
12
+ }