@toa.io/extensions.exposition 1.0.0-alpha.259 → 1.0.0-alpha.262

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.
@@ -0,0 +1,92 @@
1
+ @security
2
+ Feature: Reading the introspection map
3
+
4
+ The map declares how it is exposed in its own manifests, and those manifests are what
5
+ this mounts — not a copy of them. A route the gateway cannot answer, or an answer it
6
+ drops for want of a directive, is caught here rather than in a running application.
7
+
8
+ Background:
9
+ # developer:secret, user:12345
10
+ Given the `identity.basic` database contains:
11
+ | _id | authority | username | password |
12
+ | efe3a65ebbee47ed95a73edd911ea328 | nex | developer | $2b$10$ZRSKkgZoGnrcTNA5w5eCcu3pxDzdTduhteVYXcp56AaNcilNkwJ.O |
13
+ | e8e4f9c2a68d419b861403d71fabc915 | nex | user | $2b$10$Frszmrmsz9iwSXzBbRRMKeDVKsNxozkrLNSsN.SnVC.KPxLtQr/bK |
14
+ And the `identity.roles` database contains:
15
+ | _id | identity | role |
16
+ | 3e2b0c8a1f7d4e9ab0c6d5e4f3a2b1c0 | efe3a65ebbee47ed95a73edd911ea328 | system:introspection |
17
+ And the `identity.bans` database is empty
18
+ And the annotation of the introspection map
19
+ And the introspection components are running
20
+
21
+ Scenario: Reading the nodes
22
+ Given the `introspection.nodes` database contains:
23
+ | _id | namespace | component | version | _version | _deleted |
24
+ | 70e1a6551346c6932657cdb2526df0fa | pots | tea | 7bb04bba | 1 | null |
25
+ When the following request is received:
26
+ """
27
+ GET /introspection/nodes/ HTTP/1.1
28
+ host: nex.toa.io
29
+ authorization: Basic ZGV2ZWxvcGVyOnNlY3JldA==
30
+ accept: application/yaml
31
+ """
32
+ Then the following reply is sent:
33
+ """
34
+ 200 OK
35
+ content-type: application/yaml
36
+
37
+ - id: 70e1a6551346c6932657cdb2526df0fa
38
+ namespace: pots
39
+ component: tea
40
+ version: 7bb04bba
41
+ """
42
+
43
+ Scenario: Reading one node
44
+ Given the `introspection.nodes` database contains:
45
+ | _id | namespace | component | version | _version | _deleted |
46
+ | 70e1a6551346c6932657cdb2526df0fa | pots | tea | 7bb04bba | 1 | null |
47
+ When the following request is received:
48
+ """
49
+ GET /introspection/nodes/70e1a6551346c6932657cdb2526df0fa/ HTTP/1.1
50
+ host: nex.toa.io
51
+ authorization: Basic ZGV2ZWxvcGVyOnNlY3JldA==
52
+ accept: application/yaml
53
+ """
54
+ Then the following reply is sent:
55
+ """
56
+ 200 OK
57
+ content-type: application/yaml
58
+
59
+ namespace: pots
60
+ component: tea
61
+ """
62
+
63
+ Scenario: Reading the edges
64
+ An empty map is still a body — the directive that would drop it is the point.
65
+
66
+ Given the `introspection.edges` database is empty
67
+ When the following request is received:
68
+ """
69
+ GET /introspection/edges/ HTTP/1.1
70
+ host: nex.toa.io
71
+ authorization: Basic ZGV2ZWxvcGVyOnNlY3JldA==
72
+ accept: application/yaml
73
+ """
74
+ Then the following reply is sent:
75
+ """
76
+ 200 OK
77
+ content-type: application/yaml
78
+
79
+ []
80
+ """
81
+
82
+ Scenario: The map is not readable without the role
83
+ When the following request is received:
84
+ """
85
+ GET /introspection/nodes/ HTTP/1.1
86
+ host: nex.toa.io
87
+ authorization: Basic dXNlcjoxMjM0NQ==
88
+ """
89
+ Then the following reply is sent:
90
+ """
91
+ 403 Forbidden
92
+ """
@@ -5,6 +5,9 @@ import { timeout } from '@toa.io/generic'
5
5
  import { type Connector } from '@toa.io/core'
6
6
  import { parse } from '@toa.io/yaml'
7
7
  import { Workspace } from './Workspace'
8
+ import { components as map } from './map'
9
+
10
+ const MAP = 'introspection'
8
11
 
9
12
  @binding([Workspace])
10
13
  export class Components {
@@ -27,6 +30,17 @@ export class Components {
27
30
  await this.runComponent(name, manifest)
28
31
  }
29
32
 
33
+ /** One composition, as the explorer hosts them. */
34
+ @given('the introspection components are running')
35
+ public async runMap (): Promise<void> {
36
+ assert.ok(!(MAP in this.compositions), `Composition '${MAP}' is already running`)
37
+
38
+ this.compositions[MAP] = await boot.composition(map())
39
+
40
+ await this.compositions[MAP].connect()
41
+ await timeout(50) // discovery
42
+ }
43
+
30
44
  @given('the `{word}` is stopped')
31
45
  public async stop (name: string): Promise<void> {
32
46
  assert.ok(name in this.compositions, `Composition '${name}' is not running`)
@@ -6,6 +6,7 @@ import { encode, timeout } from '@toa.io/generic'
6
6
  import { Factory } from '../../source'
7
7
  import * as syntax from '../../source/RTD/syntax'
8
8
  import { shortcuts } from '../../source/Directive'
9
+ import { manifests } from './map'
9
10
  import type * as http from '../../source/HTTP'
10
11
 
11
12
  let instance: Connector | null = null
@@ -40,6 +41,31 @@ export class Gateway {
40
41
  this.default = false
41
42
  }
42
43
 
44
+ /**
45
+ * The routes of the introspection map, taken from its own manifests. `norm` runs the
46
+ * exposition extension over them, so what lands here is what a deployment would carry.
47
+ */
48
+ @given('the annotation of the introspection map')
49
+ public async annotateMap (): Promise<void> {
50
+ const tree: syntax.Node = { routes: [], methods: [], directives: [] }
51
+
52
+ for (const manifest of await manifests()) {
53
+ const node = manifest.extensions?.[EXPOSITION] as syntax.Node | undefined
54
+
55
+ if (node === undefined)
56
+ throw new Error(`'${manifest.namespace}.${manifest.name}' declares no exposition`)
57
+
58
+ tree.routes.push(...node.routes)
59
+ }
60
+
61
+ process.env.TOA_EXPOSITION = encode(tree)
62
+ process.env.TOA_EXPOSITION_PROPERTIES = encode(DEFAULT_PROPERTIES)
63
+
64
+ await Gateway.stop()
65
+
66
+ this.default = false
67
+ }
68
+
43
69
  @given('the `{word}` configuration:')
44
70
  public async configure (id: string, yaml: string): Promise<void> {
45
71
  const [name, namespace = 'default'] = id.split('.').reverse()
@@ -115,6 +141,8 @@ export class Gateway {
115
141
  }
116
142
  }
117
143
 
144
+ const EXPOSITION = '@toa.io/extensions.exposition'
145
+
118
146
  const DEFAULT_TREE = encode({
119
147
  routes: [],
120
148
  methods: [],
@@ -0,0 +1,26 @@
1
+ import { dirname, join } from 'node:path'
2
+ import type { Manifest } from '@toa.io/norm'
3
+
4
+ const PACKAGE = '@toa.io/extensions.introspection'
5
+ const COMPONENTS = ['introspection.nodes', 'introspection.edges']
6
+
7
+ /**
8
+ * The map's own components, as the introspection package ships them. Mounted rather
9
+ * than copied on purpose: a scenario about a manifest must read that manifest.
10
+ */
11
+ export function components (): string[] {
12
+ const root = dirname(require.resolve(PACKAGE + '/package.json'))
13
+
14
+ return COMPONENTS.map((name) => join(root, 'components', name))
15
+ }
16
+
17
+ /** `norm` declares `component` as a namespace of types; the runtime export is a function. */
18
+ export async function manifests (): Promise<Manifest[]> {
19
+ const { component } = require('@toa.io/norm') as Norm
20
+
21
+ return await Promise.all(components().map(async (path) => await component(path)))
22
+ }
23
+
24
+ interface Norm {
25
+ component: (path: string) => Promise<Manifest>
26
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@toa.io/extensions.exposition",
3
- "version": "1.0.0-alpha.259",
3
+ "version": "1.0.0-alpha.262",
4
4
  "description": "Toa Exposition",
5
5
  "author": "temich <tema.gurtovoy@gmail.com>",
6
6
  "homepage": "https://github.com/toa-io/toa#readme",
@@ -18,7 +18,7 @@
18
18
  },
19
19
  "dependencies": {
20
20
  "@simplewebauthn/server": "13.3.2",
21
- "@toa.io/core": "1.0.0-alpha.259",
21
+ "@toa.io/core": "1.0.0-alpha.262",
22
22
  "@toa.io/generic": "1.0.0-alpha.254",
23
23
  "@toa.io/schemas": "1.0.0-alpha.254",
24
24
  "bcryptjs": "3.0.3",
@@ -62,5 +62,5 @@
62
62
  },
63
63
  "testEnvironment": "node"
64
64
  },
65
- "gitHead": "3f557c2f855f078163128c317e7cb2f3629968aa"
65
+ "gitHead": "e14059cf5cc364d933f2a4b3d7114f3b5ec0764f"
66
66
  }
package/source/Context.ts CHANGED
@@ -1,6 +1,8 @@
1
1
  import type * as RTD from './RTD'
2
2
 
3
- export type Context = RTD.Context<Extension>
3
+ // the trunk is built from the context annotation and belongs to no branch,
4
+ // thus its endpoints must be fully qualified and are not versioned
5
+ export type Context = RTD.Context<Extension | undefined>
4
6
 
5
7
  interface Extension {
6
8
  namespace: string
@@ -180,13 +180,16 @@ export class EndpointsFactory implements RTD.EndpointsFactory {
180
180
  throw new Error('Cannot create Endpoint without mapping')
181
181
 
182
182
  const mapping = Mapping.create(method.mapping.query)
183
- const namespace = method.mapping.namespace ?? context.extension.namespace
184
- const component = method.mapping.component ?? context.extension.component
183
+
184
+ const branch = context.extension
185
+
186
+ const namespace = method.mapping.namespace ?? branch?.namespace
187
+ const component = method.mapping.component ?? branch?.component
185
188
 
186
189
  if (namespace === undefined || component === undefined)
187
190
  throw new Error('Annotation endpoints must be fully qualified')
188
191
 
189
- const discovery = this.remotes.discover(namespace, component, context.extension.version)
192
+ const discovery = this.remotes.discover(namespace, component, branch?.version)
190
193
 
191
194
  return new Endpoint(method.mapping.endpoint, mapping, discovery)
192
195
  }
@@ -2,10 +2,10 @@ import { generate } from 'randomstring'
2
2
  import { Connector } from '@toa.io/core'
3
3
  import { Remotes } from './Remotes'
4
4
  import type { Bootloader } from './Factory'
5
- import type { Locator } from '@toa.io/core'
5
+ import type { Locator, Source } from '@toa.io/core'
6
6
 
7
7
  jest.mock('@toa.io/boot', () => ({
8
- remote: async (locator: Locator) => await boot.remote(locator)
8
+ remote: async (locator: Locator, source?: Source) => await boot.remote(locator, source)
9
9
  }))
10
10
 
11
11
  const boot = {
@@ -27,7 +27,9 @@ beforeEach(() => {
27
27
  it('should create remote', async () => {
28
28
  const remote = await remotes.discover(namespace, name)
29
29
 
30
- expect(boot.remote).toHaveBeenCalledWith(expect.objectContaining({ namespace, name }))
30
+ expect(boot.remote).toHaveBeenCalledWith(expect.objectContaining({ namespace, name }),
31
+ expect.anything())
32
+
31
33
  expect(remote).toStrictEqual(await boot.remote.mock.results[0].value)
32
34
  })
33
35
 
@@ -40,3 +42,9 @@ it('should depend on created remotes', async () => {
40
42
 
41
43
  expect(remote.link).toHaveBeenCalledWith(remotes)
42
44
  })
45
+
46
+ it('should attribute calls to the gateway', async () => {
47
+ await remotes.discover(namespace, name)
48
+
49
+ expect(boot.remote).toHaveBeenCalledWith(expect.anything(), { service: 'exposition' })
50
+ })
package/source/Remotes.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { Locator, Connector, type Remote } from '@toa.io/core'
1
+ import { Locator, Connector, type Remote, type Source } from '@toa.io/core'
2
2
  import { type Bootloader } from './Factory'
3
3
 
4
4
  export class Remotes extends Connector {
@@ -20,7 +20,8 @@ export class Remotes extends Connector {
20
20
  }
21
21
 
22
22
  private async locate (locator: Locator): Promise<Remote> {
23
- const remote = await this.boot.remote(locator)
23
+ // the gateway is the origin of every call it forwards
24
+ const remote = await this.boot.remote(locator, SOURCE)
24
25
 
25
26
  this.depends(remote)
26
27
 
@@ -29,3 +30,5 @@ export class Remotes extends Connector {
29
30
  return remote
30
31
  }
31
32
  }
33
+
34
+ const SOURCE: Source = { service: 'exposition' }
@@ -22,7 +22,7 @@ export function deployment (_: unknown, annotation?: Annotation): Dependency {
22
22
  variables: [],
23
23
  components: labels,
24
24
  resources: annotation.resources,
25
- ingress: { hosts: [] },
25
+ ingress: { path: '/', hosts: [] },
26
26
  probe: {
27
27
  path: '/.ready',
28
28
  port: PORT,
@@ -42,8 +42,13 @@ export function deployment (_: unknown, annotation?: Annotation): Dependency {
42
42
  const { debug, authorities } = annotation
43
43
 
44
44
  service.ingress!.hosts = Object.values(authorities)
45
- service.ingress!.class = annotation.class
46
- service.ingress!.annotations = annotation.annotations
45
+
46
+ // leaving these undefined lets the context's own ingress section supply them
47
+ if (annotation.class !== undefined)
48
+ service.ingress!.class = annotation.class
49
+
50
+ if (annotation.annotations !== undefined)
51
+ service.ingress!.annotations = annotation.annotations
47
52
 
48
53
  const properties: Properties = { authorities }
49
54
 
@@ -1,5 +1,5 @@
1
1
  import type * as RTD from './RTD';
2
- export type Context = RTD.Context<Extension>;
2
+ export type Context = RTD.Context<Extension | undefined>;
3
3
  interface Extension {
4
4
  namespace: string;
5
5
  component: string;
@@ -148,11 +148,12 @@ class EndpointsFactory {
148
148
  if (method.mapping === undefined)
149
149
  throw new Error('Cannot create Endpoint without mapping');
150
150
  const mapping = Mapping_1.Mapping.create(method.mapping.query);
151
- const namespace = method.mapping.namespace ?? context.extension.namespace;
152
- const component = method.mapping.component ?? context.extension.component;
151
+ const branch = context.extension;
152
+ const namespace = method.mapping.namespace ?? branch?.namespace;
153
+ const component = method.mapping.component ?? branch?.component;
153
154
  if (namespace === undefined || component === undefined)
154
155
  throw new Error('Annotation endpoints must be fully qualified');
155
- const discovery = this.remotes.discover(namespace, component, context.extension.version);
156
+ const discovery = this.remotes.discover(namespace, component, branch?.version);
156
157
  return new Endpoint(method.mapping.endpoint, mapping, discovery);
157
158
  }
158
159
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Endpoint.js","sourceRoot":"","sources":["../source/Endpoint.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Endpoint.js","sourceRoot":"","sources":["../source/Endpoint.ts"],"names":[],"mappings":"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"}
@@ -16,11 +16,13 @@ class Remotes extends core_1.Connector {
16
16
  return this.cache[key];
17
17
  }
18
18
  async locate(locator) {
19
- const remote = await this.boot.remote(locator);
19
+ // the gateway is the origin of every call it forwards
20
+ const remote = await this.boot.remote(locator, SOURCE);
20
21
  this.depends(remote);
21
22
  await remote.connect();
22
23
  return remote;
23
24
  }
24
25
  }
25
26
  exports.Remotes = Remotes;
27
+ const SOURCE = { service: 'exposition' };
26
28
  //# sourceMappingURL=Remotes.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Remotes.js","sourceRoot":"","sources":["../source/Remotes.ts"],"names":[],"mappings":";;;AAAA,uCAA8D;AAG9D,MAAa,OAAQ,SAAQ,gBAAS;IACnB,IAAI,CAAY;IAChB,KAAK,GAAoC,EAAE,CAAA;IAE5D,YAAoB,IAAgB;QAClC,KAAK,EAAE,CAAA;QACP,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;IAClB,CAAC;IAEM,KAAK,CAAC,QAAQ,CAAE,SAAiB,EAAE,IAAY,EAAE,UAAkB,OAAO;QAC/E,MAAM,OAAO,GAAG,IAAI,cAAO,CAAC,IAAI,EAAE,SAAS,CAAC,CAAA;QAC5C,MAAM,GAAG,GAAG,OAAO,CAAC,EAAE,GAAG,GAAG,GAAG,OAAO,CAAA;QAEtC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;QAExC,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IACxB,CAAC;IAEO,KAAK,CAAC,MAAM,CAAE,OAAgB;QACpC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;QAE9C,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;QAEpB,MAAM,MAAM,CAAC,OAAO,EAAE,CAAA;QAEtB,OAAO,MAAM,CAAA;IACf,CAAC;CACF;AA3BD,0BA2BC"}
1
+ {"version":3,"file":"Remotes.js","sourceRoot":"","sources":["../source/Remotes.ts"],"names":[],"mappings":";;;AAAA,uCAA2E;AAG3E,MAAa,OAAQ,SAAQ,gBAAS;IACnB,IAAI,CAAY;IAChB,KAAK,GAAoC,EAAE,CAAA;IAE5D,YAAoB,IAAgB;QAClC,KAAK,EAAE,CAAA;QACP,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;IAClB,CAAC;IAEM,KAAK,CAAC,QAAQ,CAAE,SAAiB,EAAE,IAAY,EAAE,UAAkB,OAAO;QAC/E,MAAM,OAAO,GAAG,IAAI,cAAO,CAAC,IAAI,EAAE,SAAS,CAAC,CAAA;QAC5C,MAAM,GAAG,GAAG,OAAO,CAAC,EAAE,GAAG,GAAG,GAAG,OAAO,CAAA;QAEtC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;QAExC,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IACxB,CAAC;IAEO,KAAK,CAAC,MAAM,CAAE,OAAgB;QACpC,sDAAsD;QACtD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;QAEtD,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;QAEpB,MAAM,MAAM,CAAC,OAAO,EAAE,CAAA;QAEtB,OAAO,MAAM,CAAA;IACf,CAAC;CACF;AA5BD,0BA4BC;AAED,MAAM,MAAM,GAAW,EAAE,OAAO,EAAE,YAAY,EAAE,CAAA"}
@@ -46,7 +46,7 @@ function deployment(_, annotation) {
46
46
  variables: [],
47
47
  components: labels,
48
48
  resources: annotation.resources,
49
- ingress: { hosts: [] },
49
+ ingress: { path: '/', hosts: [] },
50
50
  probe: {
51
51
  path: '/.ready',
52
52
  port: HTTP_1.PORT,
@@ -62,8 +62,11 @@ function deployment(_, annotation) {
62
62
  }
63
63
  const { debug, authorities } = annotation;
64
64
  service.ingress.hosts = Object.values(authorities);
65
- service.ingress.class = annotation.class;
66
- service.ingress.annotations = annotation.annotations;
65
+ // leaving these undefined lets the context's own ingress section supply them
66
+ if (annotation.class !== undefined)
67
+ service.ingress.class = annotation.class;
68
+ if (annotation.annotations !== undefined)
69
+ service.ingress.annotations = annotation.annotations;
67
70
  const properties = { authorities };
68
71
  if (debug === true)
69
72
  properties.debug = true;
@@ -1 +1 @@
1
- {"version":3,"file":"deployment.js","sourceRoot":"","sources":["../source/deployment.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,8DAAgC;AAEhC,6CAAwC;AAExC,mDAAoC;AACpC,2CAAuC;AACvC,+CAA0C;AAC1C,yCAAoC;AACpC,iCAAoC;AAEpC,SAAgB,UAAU,CAAE,CAAU,EAAE,UAAuB;IAC7D,qBAAM,CAAC,EAAE,CAAC,UAAU,KAAK,SAAS,EAAE,2CAA2C,CAAC,CAAA;IAChF,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAA;IAEvC,MAAM,MAAM,GAAG,IAAA,wBAAU,GAAE,CAAC,MAAM,CAAA;IAElC,MAAM,OAAO,GAAY;QACvB,KAAK,EAAE,YAAY;QACnB,IAAI,EAAE,SAAS;QACf,IAAI,EAAE,WAAI;QACV,OAAO,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC,OAAO;QAC3C,SAAS,EAAE,EAAE;QACb,UAAU,EAAE,MAAM;QAClB,SAAS,EAAE,UAAU,CAAC,SAAS;QAC/B,OAAO,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE;QACtB,KAAK,EAAE;YACL,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,WAAI;YACV,KAAK,EAAE,YAAK;SACb;KACF,CAAA;IAED,IAAI,UAAU,EAAE,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE,CAAC;QACpC,MAAM,IAAI,GAAG,IAAA,cAAK,EAAC,UAAU,CAAC,GAAG,CAAC,EAAE,qBAAS,CAAC,CAAA;QAE9C,OAAO,CAAC,SAAU,CAAC,IAAI,CAAC;YACtB,IAAI,EAAE,gBAAgB;YACtB,KAAK,EAAE,IAAA,gBAAM,EAAC,IAAI,CAAC;SACpB,CAAC,CAAA;IACJ,CAAC;IAED,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,UAAU,CAAA;IAEzC,OAAO,CAAC,OAAQ,CAAC,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAA;IACnD,OAAO,CAAC,OAAQ,CAAC,KAAK,GAAG,UAAU,CAAC,KAAK,CAAA;IACzC,OAAO,CAAC,OAAQ,CAAC,WAAW,GAAG,UAAU,CAAC,WAAW,CAAA;IAErD,MAAM,UAAU,GAAe,EAAE,WAAW,EAAE,CAAA;IAE9C,IAAI,KAAK,KAAK,IAAI;QAChB,UAAU,CAAC,KAAK,GAAG,IAAI,CAAA;IAEzB,OAAO,CAAC,SAAU,CAAC,IAAI,CAAC;QACtB,IAAI,EAAE,2BAA2B;QACjC,KAAK,EAAE,IAAA,gBAAM,EAAC,UAAU,CAAC;KAC1B,CAAC,CAAA;IAEF,oFAAoF;IACpF,OAAO,CAAC,SAAU,CAAC,IAAI,CAAC;QACtB,IAAI,EAAE,qBAAqB;QAC3B,KAAK,EAAE,IAAA,gBAAM,EAAC,KAAK,CAAC;KACrB,CAAC,CAAA;IAEF,OAAO,EAAE,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAA;AAChC,CAAC;AAtDD,gCAsDC"}
1
+ {"version":3,"file":"deployment.js","sourceRoot":"","sources":["../source/deployment.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,8DAAgC;AAEhC,6CAAwC;AAExC,mDAAoC;AACpC,2CAAuC;AACvC,+CAA0C;AAC1C,yCAAoC;AACpC,iCAAoC;AAEpC,SAAgB,UAAU,CAAE,CAAU,EAAE,UAAuB;IAC7D,qBAAM,CAAC,EAAE,CAAC,UAAU,KAAK,SAAS,EAAE,2CAA2C,CAAC,CAAA;IAChF,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAA;IAEvC,MAAM,MAAM,GAAG,IAAA,wBAAU,GAAE,CAAC,MAAM,CAAA;IAElC,MAAM,OAAO,GAAY;QACvB,KAAK,EAAE,YAAY;QACnB,IAAI,EAAE,SAAS;QACf,IAAI,EAAE,WAAI;QACV,OAAO,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC,OAAO;QAC3C,SAAS,EAAE,EAAE;QACb,UAAU,EAAE,MAAM;QAClB,SAAS,EAAE,UAAU,CAAC,SAAS;QAC/B,OAAO,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE;QACjC,KAAK,EAAE;YACL,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,WAAI;YACV,KAAK,EAAE,YAAK;SACb;KACF,CAAA;IAED,IAAI,UAAU,EAAE,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE,CAAC;QACpC,MAAM,IAAI,GAAG,IAAA,cAAK,EAAC,UAAU,CAAC,GAAG,CAAC,EAAE,qBAAS,CAAC,CAAA;QAE9C,OAAO,CAAC,SAAU,CAAC,IAAI,CAAC;YACtB,IAAI,EAAE,gBAAgB;YACtB,KAAK,EAAE,IAAA,gBAAM,EAAC,IAAI,CAAC;SACpB,CAAC,CAAA;IACJ,CAAC;IAED,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,UAAU,CAAA;IAEzC,OAAO,CAAC,OAAQ,CAAC,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAA;IAEnD,6EAA6E;IAC7E,IAAI,UAAU,CAAC,KAAK,KAAK,SAAS;QAChC,OAAO,CAAC,OAAQ,CAAC,KAAK,GAAG,UAAU,CAAC,KAAK,CAAA;IAE3C,IAAI,UAAU,CAAC,WAAW,KAAK,SAAS;QACtC,OAAO,CAAC,OAAQ,CAAC,WAAW,GAAG,UAAU,CAAC,WAAW,CAAA;IAEvD,MAAM,UAAU,GAAe,EAAE,WAAW,EAAE,CAAA;IAE9C,IAAI,KAAK,KAAK,IAAI;QAChB,UAAU,CAAC,KAAK,GAAG,IAAI,CAAA;IAEzB,OAAO,CAAC,SAAU,CAAC,IAAI,CAAC;QACtB,IAAI,EAAE,2BAA2B;QACjC,KAAK,EAAE,IAAA,gBAAM,EAAC,UAAU,CAAC;KAC1B,CAAC,CAAA;IAEF,oFAAoF;IACpF,OAAO,CAAC,SAAU,CAAC,IAAI,CAAC;QACtB,IAAI,EAAE,qBAAqB;QAC3B,KAAK,EAAE,IAAA,gBAAM,EAAC,KAAK,CAAC;KACrB,CAAC,CAAA;IAEF,OAAO,EAAE,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAA;AAChC,CAAC;AA3DD,gCA2DC"}