@toa.io/extensions.stash 0.20.0-dev.31 → 0.20.0-dev.34

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@toa.io/extensions.stash",
3
- "version": "0.20.0-dev.31",
3
+ "version": "0.20.0-dev.34",
4
4
  "description": "Toa Stash",
5
5
  "author": "temich <tema.gurtovoy@gmail.com>",
6
6
  "homepage": "https://github.com/toa-io/toa#readme",
@@ -17,6 +17,7 @@
17
17
  "access": "public"
18
18
  },
19
19
  "dependencies": {
20
+ "@toa.io/pointer": "0.20.0-dev.34",
20
21
  "ioredis": "5.3.2",
21
22
  "msgpackr": "1.9.5",
22
23
  "redlock-temp-fix": "5.0.0-beta.2"
@@ -29,5 +30,5 @@
29
30
  "preset": "ts-jest",
30
31
  "testEnvironment": "node"
31
32
  },
32
- "gitHead": "f9ad6bf2bab1298b96ca52557b7e36b6041cfc88"
33
+ "gitHead": "7035b1985fe9bb844069308a272d061bfbd38bf0"
33
34
  }
package/readme.md CHANGED
@@ -31,7 +31,7 @@ Values are encoded using [msgpack](https://msgpack.org).
31
31
 
32
32
  `async lock<T>(id: string | string[], routine: async? () => T): T`
33
33
 
34
- Executes `routine` once a lock is succesively acquired. Lock ID is component-scoped.
34
+ Executes `routine` once a lock is successfully acquired. Lock ID is component-scoped.
35
35
 
36
36
  ```javascript
37
37
  async function computation (input, context) {
@@ -49,13 +49,13 @@ stash: ~
49
49
 
50
50
  ## Deployment
51
51
 
52
- `stash` context annotation is a [Pointer](/libraries/pointer)-like.
52
+ `stash` context annotation is a [Pointer](/libraries/pointer) with ID `stash`.
53
53
 
54
54
  ```yaml
55
55
  stash: # shortcut is available
56
- default: redis://redis.example.com
56
+ .: redis://redis.example.com
57
57
  dummies.dummy: redis://dummies.redis.example.com
58
58
  ```
59
59
 
60
- Neither Password Authentication nor TLS are implemented.
60
+ Neither password authentication nor TLS are implemented.
61
61
  [#367](https://github.com/toa-io/toa/issues/367)
package/source/Aspect.ts CHANGED
@@ -6,15 +6,14 @@ import type { Redis } from 'ioredis'
6
6
 
7
7
  export class Aspect extends Connector implements extensions.Aspect {
8
8
  public readonly name = 'stash'
9
- private readonly redis: Redis
10
- private readonly redlock: Redlock
9
+ private readonly connection: Connection
10
+ private redis: Redis | null = null
11
+ private redlock: Redlock | null = null
11
12
 
12
13
  public constructor (connection: Connection) {
13
14
  super()
14
15
 
15
- this.redis = connection.redis
16
- this.redlock = new Redlock([this.redis], { retryCount: -1 })
17
-
16
+ this.connection = connection
18
17
  this.depends(connection)
19
18
  }
20
19
 
@@ -37,6 +36,11 @@ export class Aspect extends Connector implements extensions.Aspect {
37
36
  return await this.lock(args[0] as Resources, args[1] as () => any)
38
37
  }
39
38
 
39
+ protected override async open (): Promise<void> {
40
+ this.redis = this.connection.redises[0]
41
+ this.redlock = new Redlock(this.connection.redises, { retryCount: -1 })
42
+ }
43
+
40
44
  private async store (key: string, value: object, ...args: unknown[]): Promise<void> {
41
45
  const buffer = encode(value)
42
46
 
@@ -46,12 +50,16 @@ export class Aspect extends Connector implements extensions.Aspect {
46
50
  }
47
51
 
48
52
  private async fetch (key: string): Promise<object | null> {
53
+ if (this.redis === null) return null
54
+
49
55
  const buffer = await this.redis.getBuffer(key)
50
56
 
51
57
  return buffer === null ? null : decode(buffer)
52
58
  }
53
59
 
54
- private async lock<T> (key: Resources, routine: Routine<T>): Promise<T> {
60
+ private async lock<T> (key: Resources, routine: Routine<T>): Promise<T | null> {
61
+ if (this.redlock === null) return null
62
+
55
63
  if (typeof key === 'string') key = [key]
56
64
 
57
65
  return await this.redlock.using<T>(key, 5000, routine)
@@ -1,29 +1,46 @@
1
1
  import { Redis, type ClusterOptions } from 'ioredis'
2
2
  import { Connector, type Locator } from '@toa.io/core'
3
+ import { resolve } from '@toa.io/pointer'
4
+ import { ID } from './extension'
3
5
 
4
6
  export class Connection extends Connector {
5
- public readonly redis: Redis
6
- private readonly url: string
7
+ public readonly redises: Redis[] = []
8
+ private readonly locator: Locator
7
9
 
8
- public constructor (url: string, locator: Locator) {
10
+ public constructor (locator: Locator) {
9
11
  super()
10
12
 
11
- const keyPrefix = `${locator.namespace}:${locator.name}:`
12
- const options: ClusterOptions = { keyPrefix, enableReadyCheck: true, lazyConnect: true }
13
-
14
- this.redis = new Redis(url, options)
15
- this.url = url
13
+ this.locator = locator
16
14
  }
17
15
 
18
16
  protected override async open (): Promise<void> {
19
- await this.redis.connect()
17
+ const keyPrefix = `${this.locator.namespace}:${this.locator.name}:`
18
+ const options: ClusterOptions = { keyPrefix, enableReadyCheck: true, lazyConnect: true }
19
+ const urls = await this.resolveURLs()
20
+
21
+ for (const url of urls)
22
+ this.redises.push(new Redis(url, options))
23
+
24
+ const connecting = this.redises.map(this.connectNode.bind(this))
20
25
 
21
- console.log('Stash connected to ' + this.url)
26
+ await Promise.all(connecting)
22
27
  }
23
28
 
24
29
  protected override async close (): Promise<void> {
25
- this.redis.disconnect()
30
+ for (const redis of this.redises)
31
+ redis.disconnect()
32
+
33
+ console.log('Stash disconnected')
34
+ }
35
+
36
+ private async connectNode (redis: Redis): Promise<void> {
37
+ await redis.connect()
38
+
39
+ console.log(`Stash connected to ${redis.options.host as string}:${String(redis.options.port)}`)
40
+ }
26
41
 
27
- console.log('Stash disconnected from ' + this.url)
42
+ private async resolveURLs (): Promise<string[]> {
43
+ if (process.env.TOA_DEV === '1') return ['redis://localhost']
44
+ else return await resolve(ID, this.locator.id)
28
45
  }
29
46
  }
@@ -1,46 +1,30 @@
1
- import { uris } from '@toa.io/pointer'
1
+ import { createVariables, type URIMap, type Request } from '@toa.io/pointer'
2
2
  import { Aspect } from './Aspect'
3
3
  import { Connection } from './Connection'
4
4
  import type { Locator, extensions } from '@toa.io/core'
5
5
  import type { context } from '@toa.io/norm'
6
- import type * as operations from '@toa.io/operations'
6
+ import type { Dependency } from '@toa.io/operations'
7
7
 
8
8
  export class Factory implements extensions.Factory {
9
9
  public aspect (locator: Locator): extensions.Aspect {
10
- const url = this.url()
11
- const connection = new Connection(url, locator)
10
+ const connection = new Connection(locator)
12
11
 
13
12
  return new Aspect(connection)
14
13
  }
15
-
16
- private url (): string {
17
- if (process.env.TOA_DEV === '1') return 'redis://localhost'
18
-
19
- const url = process.env[URL_VARIABLE]
20
-
21
- if (url === undefined) throw new Error(`${URL_VARIABLE} is not set`)
22
-
23
- return url
24
- }
25
14
  }
26
15
 
27
- export function deployment (instances: context.Dependency[], annotation: Annotation): Dependency {
28
- const pointer = uris.construct(annotation)
29
- const variables: Variables = {}
30
-
31
- for (const instance of instances) {
32
- const resolution = uris.resolve(instance.locator, pointer)
33
- const variable: Variable = { name: URL_VARIABLE, value: resolution.url.href }
34
-
35
- variables[instance.locator.label] = [variable]
36
- }
16
+ export function deployment (instances: context.Dependency[], annotation: URIMap): Dependency {
17
+ const requests: Request[] = instances.map((instance) => createRequest(instance))
18
+ const variables = createVariables(ID, annotation, requests)
37
19
 
38
20
  return { variables }
39
21
  }
40
22
 
41
- const URL_VARIABLE = 'TOA_STASH'
23
+ function createRequest (instance: context.Dependency): Request {
24
+ return {
25
+ group: instance.locator.label,
26
+ selectors: [instance.locator.id]
27
+ }
28
+ }
42
29
 
43
- type Dependency = operations.deployment.Dependency
44
- type Variables = operations.deployment.Variables
45
- type Variable = operations.deployment.Variable
46
- type Annotation = uris.URIs | string
30
+ export const ID = 'stash'
@@ -2,13 +2,15 @@ import { Connector, type extensions } from '@toa.io/core';
2
2
  import type { Connection } from './Connection';
3
3
  export declare class Aspect extends Connector implements extensions.Aspect {
4
4
  readonly name = "stash";
5
- private readonly redis;
6
- private readonly redlock;
5
+ private readonly connection;
6
+ private redis;
7
+ private redlock;
7
8
  constructor(connection: Connection);
8
9
  invoke(method: 'store', key: string, value: object): Promise<void>;
9
10
  invoke(method: 'fetch', key: string): Promise<object>;
10
11
  invoke<T>(method: 'lock', key: Resources, routine: Routine<T>): Promise<T>;
11
12
  invoke(method: string, ...args: unknown[]): Promise<any>;
13
+ protected open(): Promise<void>;
12
14
  private store;
13
15
  private fetch;
14
16
  private lock;
@@ -9,12 +9,12 @@ const msgpackr_1 = require("msgpackr");
9
9
  const core_1 = require("@toa.io/core");
10
10
  class Aspect extends core_1.Connector {
11
11
  name = 'stash';
12
- redis;
13
- redlock;
12
+ connection;
13
+ redis = null;
14
+ redlock = null;
14
15
  constructor(connection) {
15
16
  super();
16
- this.redis = connection.redis;
17
- this.redlock = new redlock_temp_fix_1.default([this.redis], { retryCount: -1 });
17
+ this.connection = connection;
18
18
  this.depends(connection);
19
19
  }
20
20
  async invoke(method, ...args) {
@@ -29,6 +29,10 @@ class Aspect extends core_1.Connector {
29
29
  if (method === 'lock')
30
30
  return await this.lock(args[0], args[1]);
31
31
  }
32
+ async open() {
33
+ this.redis = this.connection.redises[0];
34
+ this.redlock = new redlock_temp_fix_1.default(this.connection.redises, { retryCount: -1 });
35
+ }
32
36
  async store(key, value, ...args) {
33
37
  const buffer = (0, msgpackr_1.encode)(value);
34
38
  // eslint-disable-next-line @typescript-eslint/ban-ts-comment
@@ -36,10 +40,14 @@ class Aspect extends core_1.Connector {
36
40
  await this.redis.set(key, buffer, ...args);
37
41
  }
38
42
  async fetch(key) {
43
+ if (this.redis === null)
44
+ return null;
39
45
  const buffer = await this.redis.getBuffer(key);
40
46
  return buffer === null ? null : (0, msgpackr_1.decode)(buffer);
41
47
  }
42
48
  async lock(key, routine) {
49
+ if (this.redlock === null)
50
+ return null;
43
51
  if (typeof key === 'string')
44
52
  key = [key];
45
53
  return await this.redlock.using(key, 5000, routine);
@@ -1 +1 @@
1
- {"version":3,"file":"Aspect.js","sourceRoot":"","sources":["../source/Aspect.ts"],"names":[],"mappings":";;;;;;AAAA,wEAAsC;AACtC,uCAAyC;AACzC,uCAAyD;AAIzD,MAAa,MAAO,SAAQ,gBAAS;IACnB,IAAI,GAAG,OAAO,CAAA;IACb,KAAK,CAAO;IACZ,OAAO,CAAS;IAEjC,YAAoB,UAAsB;QACxC,KAAK,EAAE,CAAA;QAEP,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC,KAAK,CAAA;QAC7B,IAAI,CAAC,OAAO,GAAG,IAAI,0BAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC,EAAE,CAAC,CAAA;QAE5D,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAA;IAC1B,CAAC;IAMM,KAAK,CAAC,MAAM,CAAE,MAAc,EAAE,GAAG,IAAe;QACrD,6DAA6D;QAC7D,mBAAmB;QACnB,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,UAAU;YAAE,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC,CAAA;QAEhF,IAAI,MAAM,KAAK,OAAO;YACpB,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAW,EAAE,IAAI,CAAC,CAAC,CAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;QAE1E,IAAI,MAAM,KAAK,OAAO;YACpB,OAAO,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAW,CAAC,CAAA;QAE5C,IAAI,MAAM,KAAK,MAAM;YACnB,OAAO,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAc,EAAE,IAAI,CAAC,CAAC,CAAc,CAAC,CAAA;IACtE,CAAC;IAEO,KAAK,CAAC,KAAK,CAAE,GAAW,EAAE,KAAa,EAAE,GAAG,IAAe;QACjE,MAAM,MAAM,GAAG,IAAA,iBAAM,EAAC,KAAK,CAAC,CAAA;QAE5B,6DAA6D;QAC7D,mBAAmB;QACnB,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,CAAA;IAC5C,CAAC;IAEO,KAAK,CAAC,KAAK,CAAE,GAAW;QAC9B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAA;QAE9C,OAAO,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAA,iBAAM,EAAC,MAAM,CAAC,CAAA;IAChD,CAAC;IAEO,KAAK,CAAC,IAAI,CAAK,GAAc,EAAE,OAAmB;QACxD,IAAI,OAAO,GAAG,KAAK,QAAQ;YAAE,GAAG,GAAG,CAAC,GAAG,CAAC,CAAA;QAExC,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAI,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC,CAAA;IACxD,CAAC;CACF;AApDD,wBAoDC"}
1
+ {"version":3,"file":"Aspect.js","sourceRoot":"","sources":["../source/Aspect.ts"],"names":[],"mappings":";;;;;;AAAA,wEAAsC;AACtC,uCAAyC;AACzC,uCAAyD;AAIzD,MAAa,MAAO,SAAQ,gBAAS;IACnB,IAAI,GAAG,OAAO,CAAA;IACb,UAAU,CAAY;IAC/B,KAAK,GAAiB,IAAI,CAAA;IAC1B,OAAO,GAAmB,IAAI,CAAA;IAEtC,YAAoB,UAAsB;QACxC,KAAK,EAAE,CAAA;QAEP,IAAI,CAAC,UAAU,GAAG,UAAU,CAAA;QAC5B,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAA;IAC1B,CAAC;IAMM,KAAK,CAAC,MAAM,CAAE,MAAc,EAAE,GAAG,IAAe;QACrD,6DAA6D;QAC7D,mBAAmB;QACnB,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,UAAU;YAAE,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC,CAAA;QAEhF,IAAI,MAAM,KAAK,OAAO;YACpB,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAW,EAAE,IAAI,CAAC,CAAC,CAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;QAE1E,IAAI,MAAM,KAAK,OAAO;YACpB,OAAO,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAW,CAAC,CAAA;QAE5C,IAAI,MAAM,KAAK,MAAM;YACnB,OAAO,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAc,EAAE,IAAI,CAAC,CAAC,CAAc,CAAC,CAAA;IACtE,CAAC;IAEkB,KAAK,CAAC,IAAI;QAC3B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;QACvC,IAAI,CAAC,OAAO,GAAG,IAAI,0BAAO,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC,EAAE,CAAC,CAAA;IACzE,CAAC;IAEO,KAAK,CAAC,KAAK,CAAE,GAAW,EAAE,KAAa,EAAE,GAAG,IAAe;QACjE,MAAM,MAAM,GAAG,IAAA,iBAAM,EAAC,KAAK,CAAC,CAAA;QAE5B,6DAA6D;QAC7D,mBAAmB;QACnB,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,CAAA;IAC5C,CAAC;IAEO,KAAK,CAAC,KAAK,CAAE,GAAW;QAC9B,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI;YAAE,OAAO,IAAI,CAAA;QAEpC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAA;QAE9C,OAAO,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAA,iBAAM,EAAC,MAAM,CAAC,CAAA;IAChD,CAAC;IAEO,KAAK,CAAC,IAAI,CAAK,GAAc,EAAE,OAAmB;QACxD,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI;YAAE,OAAO,IAAI,CAAA;QAEtC,IAAI,OAAO,GAAG,KAAK,QAAQ;YAAE,GAAG,GAAG,CAAC,GAAG,CAAC,CAAA;QAExC,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAI,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC,CAAA;IACxD,CAAC;CACF;AA5DD,wBA4DC"}
@@ -1,9 +1,11 @@
1
1
  import { Redis } from 'ioredis';
2
2
  import { Connector, type Locator } from '@toa.io/core';
3
3
  export declare class Connection extends Connector {
4
- readonly redis: Redis;
5
- private readonly url;
6
- constructor(url: string, locator: Locator);
4
+ readonly redises: Redis[];
5
+ private readonly locator;
6
+ constructor(locator: Locator);
7
7
  protected open(): Promise<void>;
8
8
  protected close(): Promise<void>;
9
+ private connectNode;
10
+ private resolveURLs;
9
11
  }
@@ -3,23 +3,38 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Connection = void 0;
4
4
  const ioredis_1 = require("ioredis");
5
5
  const core_1 = require("@toa.io/core");
6
+ const pointer_1 = require("@toa.io/pointer");
7
+ const extension_1 = require("./extension");
6
8
  class Connection extends core_1.Connector {
7
- redis;
8
- url;
9
- constructor(url, locator) {
9
+ redises = [];
10
+ locator;
11
+ constructor(locator) {
10
12
  super();
11
- const keyPrefix = `${locator.namespace}:${locator.name}:`;
12
- const options = { keyPrefix, enableReadyCheck: true, lazyConnect: true };
13
- this.redis = new ioredis_1.Redis(url, options);
14
- this.url = url;
13
+ this.locator = locator;
15
14
  }
16
15
  async open() {
17
- await this.redis.connect();
18
- console.log('Stash connected to ' + this.url);
16
+ const keyPrefix = `${this.locator.namespace}:${this.locator.name}:`;
17
+ const options = { keyPrefix, enableReadyCheck: true, lazyConnect: true };
18
+ const urls = await this.resolveURLs();
19
+ for (const url of urls)
20
+ this.redises.push(new ioredis_1.Redis(url, options));
21
+ const connecting = this.redises.map(this.connectNode.bind(this));
22
+ await Promise.all(connecting);
19
23
  }
20
24
  async close() {
21
- this.redis.disconnect();
22
- console.log('Stash disconnected from ' + this.url);
25
+ for (const redis of this.redises)
26
+ redis.disconnect();
27
+ console.log('Stash disconnected');
28
+ }
29
+ async connectNode(redis) {
30
+ await redis.connect();
31
+ console.log(`Stash connected to ${redis.options.host}:${String(redis.options.port)}`);
32
+ }
33
+ async resolveURLs() {
34
+ if (process.env.TOA_DEV === '1')
35
+ return ['redis://localhost'];
36
+ else
37
+ return await (0, pointer_1.resolve)(extension_1.ID, this.locator.id);
23
38
  }
24
39
  }
25
40
  exports.Connection = Connection;
@@ -1 +1 @@
1
- {"version":3,"file":"Connection.js","sourceRoot":"","sources":["../source/Connection.ts"],"names":[],"mappings":";;;AAAA,qCAAoD;AACpD,uCAAsD;AAEtD,MAAa,UAAW,SAAQ,gBAAS;IACvB,KAAK,CAAO;IACX,GAAG,CAAQ;IAE5B,YAAoB,GAAW,EAAE,OAAgB;QAC/C,KAAK,EAAE,CAAA;QAEP,MAAM,SAAS,GAAG,GAAG,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,IAAI,GAAG,CAAA;QACzD,MAAM,OAAO,GAAmB,EAAE,SAAS,EAAE,gBAAgB,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,CAAA;QAExF,IAAI,CAAC,KAAK,GAAG,IAAI,eAAK,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;QACpC,IAAI,CAAC,GAAG,GAAG,GAAG,CAAA;IAChB,CAAC;IAEkB,KAAK,CAAC,IAAI;QAC3B,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAA;QAE1B,OAAO,CAAC,GAAG,CAAC,qBAAqB,GAAG,IAAI,CAAC,GAAG,CAAC,CAAA;IAC/C,CAAC;IAEkB,KAAK,CAAC,KAAK;QAC5B,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,CAAA;QAEvB,OAAO,CAAC,GAAG,CAAC,0BAA0B,GAAG,IAAI,CAAC,GAAG,CAAC,CAAA;IACpD,CAAC;CACF;AAzBD,gCAyBC"}
1
+ {"version":3,"file":"Connection.js","sourceRoot":"","sources":["../source/Connection.ts"],"names":[],"mappings":";;;AAAA,qCAAoD;AACpD,uCAAsD;AACtD,6CAAyC;AACzC,2CAAgC;AAEhC,MAAa,UAAW,SAAQ,gBAAS;IACvB,OAAO,GAAY,EAAE,CAAA;IACpB,OAAO,CAAS;IAEjC,YAAoB,OAAgB;QAClC,KAAK,EAAE,CAAA;QAEP,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;IACxB,CAAC;IAEkB,KAAK,CAAC,IAAI;QAC3B,MAAM,SAAS,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,CAAA;QACnE,MAAM,OAAO,GAAmB,EAAE,SAAS,EAAE,gBAAgB,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,CAAA;QACxF,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE,CAAA;QAErC,KAAK,MAAM,GAAG,IAAI,IAAI;YACpB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,eAAK,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAA;QAE5C,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;QAEhE,MAAM,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;IAC/B,CAAC;IAEkB,KAAK,CAAC,KAAK;QAC5B,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,OAAO;YAC9B,KAAK,CAAC,UAAU,EAAE,CAAA;QAEpB,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAA;IACnC,CAAC;IAEO,KAAK,CAAC,WAAW,CAAE,KAAY;QACrC,MAAM,KAAK,CAAC,OAAO,EAAE,CAAA;QAErB,OAAO,CAAC,GAAG,CAAC,sBAAsB,KAAK,CAAC,OAAO,CAAC,IAAc,IAAI,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACjG,CAAC;IAEO,KAAK,CAAC,WAAW;QACvB,IAAI,OAAO,CAAC,GAAG,CAAC,OAAO,KAAK,GAAG;YAAE,OAAO,CAAC,mBAAmB,CAAC,CAAA;;YACxD,OAAO,MAAM,IAAA,iBAAO,EAAC,cAAE,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;IAChD,CAAC;CACF;AAxCD,gCAwCC"}
@@ -1,12 +1,9 @@
1
- import { uris } from '@toa.io/pointer';
1
+ import { type URIMap } from '@toa.io/pointer';
2
2
  import type { Locator, extensions } from '@toa.io/core';
3
3
  import type { context } from '@toa.io/norm';
4
- import type * as operations from '@toa.io/operations';
4
+ import type { Dependency } from '@toa.io/operations';
5
5
  export declare class Factory implements extensions.Factory {
6
6
  aspect(locator: Locator): extensions.Aspect;
7
- private url;
8
7
  }
9
- export declare function deployment(instances: context.Dependency[], annotation: Annotation): Dependency;
10
- type Dependency = operations.deployment.Dependency;
11
- type Annotation = uris.URIs | string;
12
- export {};
8
+ export declare function deployment(instances: context.Dependency[], annotation: URIMap): Dependency;
9
+ export declare const ID = "stash";
@@ -1,35 +1,27 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.deployment = exports.Factory = void 0;
3
+ exports.ID = exports.deployment = exports.Factory = void 0;
4
4
  const pointer_1 = require("@toa.io/pointer");
5
5
  const Aspect_1 = require("./Aspect");
6
6
  const Connection_1 = require("./Connection");
7
7
  class Factory {
8
8
  aspect(locator) {
9
- const url = this.url();
10
- const connection = new Connection_1.Connection(url, locator);
9
+ const connection = new Connection_1.Connection(locator);
11
10
  return new Aspect_1.Aspect(connection);
12
11
  }
13
- url() {
14
- if (process.env.TOA_DEV === '1')
15
- return 'redis://localhost';
16
- const url = process.env[URL_VARIABLE];
17
- if (url === undefined)
18
- throw new Error(`${URL_VARIABLE} is not set`);
19
- return url;
20
- }
21
12
  }
22
13
  exports.Factory = Factory;
23
14
  function deployment(instances, annotation) {
24
- const pointer = pointer_1.uris.construct(annotation);
25
- const variables = {};
26
- for (const instance of instances) {
27
- const resolution = pointer_1.uris.resolve(instance.locator, pointer);
28
- const variable = { name: URL_VARIABLE, value: resolution.url.href };
29
- variables[instance.locator.label] = [variable];
30
- }
15
+ const requests = instances.map((instance) => createRequest(instance));
16
+ const variables = (0, pointer_1.createVariables)(exports.ID, annotation, requests);
31
17
  return { variables };
32
18
  }
33
19
  exports.deployment = deployment;
34
- const URL_VARIABLE = 'TOA_STASH';
20
+ function createRequest(instance) {
21
+ return {
22
+ group: instance.locator.label,
23
+ selectors: [instance.locator.id]
24
+ };
25
+ }
26
+ exports.ID = 'stash';
35
27
  //# sourceMappingURL=extension.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"extension.js","sourceRoot":"","sources":["../source/extension.ts"],"names":[],"mappings":";;;AAAA,6CAAsC;AACtC,qCAAiC;AACjC,6CAAyC;AAKzC,MAAa,OAAO;IACX,MAAM,CAAE,OAAgB;QAC7B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QACtB,MAAM,UAAU,GAAG,IAAI,uBAAU,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;QAE/C,OAAO,IAAI,eAAM,CAAC,UAAU,CAAC,CAAA;IAC/B,CAAC;IAEO,GAAG;QACT,IAAI,OAAO,CAAC,GAAG,CAAC,OAAO,KAAK,GAAG;YAAE,OAAO,mBAAmB,CAAA;QAE3D,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAA;QAErC,IAAI,GAAG,KAAK,SAAS;YAAE,MAAM,IAAI,KAAK,CAAC,GAAG,YAAY,aAAa,CAAC,CAAA;QAEpE,OAAO,GAAG,CAAA;IACZ,CAAC;CACF;AAjBD,0BAiBC;AAED,SAAgB,UAAU,CAAE,SAA+B,EAAE,UAAsB;IACjF,MAAM,OAAO,GAAG,cAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAA;IAC1C,MAAM,SAAS,GAAc,EAAE,CAAA;IAE/B,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE;QAChC,MAAM,UAAU,GAAG,cAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;QAC1D,MAAM,QAAQ,GAAa,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,UAAU,CAAC,GAAG,CAAC,IAAI,EAAE,CAAA;QAE7E,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;KAC/C;IAED,OAAO,EAAE,SAAS,EAAE,CAAA;AACtB,CAAC;AAZD,gCAYC;AAED,MAAM,YAAY,GAAG,WAAW,CAAA"}
1
+ {"version":3,"file":"extension.js","sourceRoot":"","sources":["../source/extension.ts"],"names":[],"mappings":";;;AAAA,6CAA4E;AAC5E,qCAAiC;AACjC,6CAAyC;AAKzC,MAAa,OAAO;IACX,MAAM,CAAE,OAAgB;QAC7B,MAAM,UAAU,GAAG,IAAI,uBAAU,CAAC,OAAO,CAAC,CAAA;QAE1C,OAAO,IAAI,eAAM,CAAC,UAAU,CAAC,CAAA;IAC/B,CAAC;CACF;AAND,0BAMC;AAED,SAAgB,UAAU,CAAE,SAA+B,EAAE,UAAkB;IAC7E,MAAM,QAAQ,GAAc,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAA;IAChF,MAAM,SAAS,GAAG,IAAA,yBAAe,EAAC,UAAE,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAA;IAE3D,OAAO,EAAE,SAAS,EAAE,CAAA;AACtB,CAAC;AALD,gCAKC;AAED,SAAS,aAAa,CAAE,QAA4B;IAClD,OAAO;QACL,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAC,KAAK;QAC7B,SAAS,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;KACjC,CAAA;AACH,CAAC;AAEY,QAAA,EAAE,GAAG,OAAO,CAAA"}
@@ -1,3 +0,0 @@
1
- export const Redlock = jest.fn(() => ({
2
- using: jest.fn(async () => undefined)
3
- }))
@@ -1,114 +0,0 @@
1
- import Redlock from 'redlock-temp-fix'
2
- import { encode } from 'msgpackr'
3
- import { generate } from 'randomstring'
4
- import { Aspect } from './Aspect'
5
- import * as mock from './Connection.fixtures'
6
- import type { Connection } from './Connection'
7
- import type { Cluster } from 'ioredis'
8
-
9
- jest.mock('redlock-temp-fix')
10
-
11
- let aspect: Aspect
12
- let connection: jest.MockedObject<Connection>
13
- let redis: jest.MockedObject<Cluster>
14
- let redlock: jest.MockedObject<Redlock>
15
-
16
- const key = generate()
17
-
18
- beforeEach(() => {
19
- jest.clearAllMocks()
20
-
21
- connection = new mock.Connection() as unknown as jest.MockedObject<Connection>
22
- redis = connection.redis as unknown as jest.MockedObject<Cluster>
23
- aspect = new Aspect(connection)
24
- const m = (Redlock as unknown as jest.Mock<Redlock>).mock
25
- redlock = (Redlock as unknown as jest.Mock<Redlock>).mock.instances[0] as unknown as jest.MockedObject<Redlock>
26
- })
27
-
28
- it('should depend on Connection', async () => {
29
- expect(connection.link).toHaveBeenCalledWith(aspect)
30
- })
31
-
32
- it('should set', async () => {
33
- const value = generate()
34
-
35
- await aspect.invoke('set', key, value)
36
-
37
- expect(redis.set).toHaveBeenCalledWith(key, value)
38
- })
39
-
40
- it('should get', async () => {
41
- const value = await aspect.invoke('get', key)
42
-
43
- expect(redis.get).toHaveBeenCalledWith(key)
44
- expect(value).toStrictEqual(await redis.get.mock.results[0].value)
45
- })
46
-
47
- describe('buffers', () => {
48
- it.each([
49
- ['object', { [generate()]: generate() }],
50
- ['array', [generate(), generate()]]
51
- ])('should encode %s', async (_, value) => {
52
- await aspect.invoke('store', key, value)
53
-
54
- const buffer = encode(value)
55
-
56
- expect(redis.set).toHaveBeenCalledWith(key, buffer)
57
- })
58
-
59
- it('should pass arguments', async () => {
60
- const value = [1, 2]
61
- const buffer = encode(value)
62
-
63
- await aspect.invoke('store', key, value, 'EX', 1000)
64
-
65
- expect(redis.set).toHaveBeenCalledWith(key, buffer, 'EX', 1000)
66
- })
67
-
68
- it.each([
69
- ['object', { [generate()]: generate() }],
70
- ['array', [generate(), generate()]]
71
- ])('should decode %s', async (_, value) => {
72
- const buffer = encode(value)
73
-
74
- redis.getBuffer.mockImplementationOnce(async () => buffer)
75
-
76
- const output = await aspect.invoke('fetch', key)
77
-
78
- expect(redis.getBuffer).toHaveBeenCalledWith(key)
79
- expect(output).toStrictEqual(value)
80
- })
81
- })
82
-
83
- it('should create DLM', async () => {
84
- expect(Redlock).toHaveBeenCalledWith([redis], { retryCount: -1 })
85
- })
86
-
87
- it('should acquire lock', async () => {
88
- const keys = [generate(), generate()]
89
- const callback = jest.fn()
90
-
91
- await aspect.invoke('lock', keys, callback)
92
-
93
- expect(redlock.using).toHaveBeenCalledWith(keys, 5000, callback)
94
- })
95
-
96
- it('should return result', async () => {
97
- const keys = [generate(), generate()]
98
- const callback = jest.fn()
99
-
100
- redlock.using.mockImplementationOnce(async () => generate())
101
-
102
- const result = await aspect.invoke('lock', keys, callback)
103
-
104
- expect(result).toStrictEqual(await redlock.using.mock.results[0].value)
105
- })
106
-
107
- it('should handle non-array key', async () => {
108
- const key = generate()
109
- const callback = jest.fn()
110
-
111
- await aspect.invoke('lock', key, callback)
112
-
113
- expect(redlock.using).toHaveBeenCalledWith([key], 5000, callback)
114
- })
@@ -1,18 +0,0 @@
1
- import { generate } from 'randomstring'
2
- import type * as redis from 'ioredis'
3
-
4
- export const Redis = jest.fn(() => ({
5
- connect: jest.fn(async () => undefined),
6
- disconnect: jest.fn(),
7
- get: jest.fn(async () => generate()),
8
- getBuffer: jest.fn(async () => Buffer.from(generate())),
9
- set: jest.fn(async () => undefined),
10
- on: jest.fn()
11
- })) as unknown as jest.Mock<typeof redis.Cluster>
12
-
13
- export const Connection = jest.fn(() => ({
14
- redis: new Redis(),
15
- link: jest.fn()
16
- }))
17
-
18
- export const ioredis = { Redis }
@@ -1,51 +0,0 @@
1
- import { generate } from 'randomstring'
2
- import { Connection } from './Connection'
3
- import { Connector, type Locator } from '@toa.io/core'
4
- import { Redis } from './Connection.fixtures'
5
- import type * as redis from 'ioredis'
6
-
7
- jest.mock('ioredis', () => ({
8
- Redis: jest.fn((nodes: string[], options: redis.ClusterOptions) => new Redis(nodes, options))
9
- }))
10
-
11
- let connection: Connection
12
- let cluster: jest.MockedObject<redis.Cluster>
13
-
14
- const url = generate()
15
-
16
- const locator = {
17
- namespace: generate(),
18
- name: generate()
19
- } as unknown as Locator
20
-
21
- beforeEach(() => {
22
- jest.clearAllMocks()
23
-
24
- connection = new Connection(url, locator)
25
- cluster = Redis.mock.results[0].value
26
- })
27
-
28
- it('should be instance of Connector', async () => {
29
- expect(connection).toBeInstanceOf(Connector)
30
- })
31
-
32
- it('should connect', async () => {
33
- const keyPrefix = `${locator.namespace}:${locator.name}:`
34
- const options: redis.ClusterOptions = { keyPrefix, enableReadyCheck: true, lazyConnect: true }
35
-
36
- expect(Redis).toHaveBeenCalledWith(url, options)
37
-
38
- await connection.connect()
39
-
40
- expect(cluster.connect).toHaveBeenCalled()
41
- })
42
-
43
- it('should disconnect', async () => {
44
- await connection.disconnect()
45
-
46
- expect(cluster.disconnect).toHaveBeenCalled()
47
- })
48
-
49
- it('should expose cluster', async () => {
50
- expect(connection.redis).toStrictEqual(cluster)
51
- })
@@ -1,4 +0,0 @@
1
- /// <reference types="jest" />
2
- export declare const Redlock: jest.Mock<{
3
- using: jest.Mock<Promise<undefined>, []>;
4
- }, []>;
@@ -1,7 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Redlock = void 0;
4
- exports.Redlock = jest.fn(() => ({
5
- using: jest.fn(async () => undefined)
6
- }));
7
- //# sourceMappingURL=Aspect.fixtures.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Aspect.fixtures.js","sourceRoot":"","sources":["../source/Aspect.fixtures.ts"],"names":[],"mappings":";;;AAAa,QAAA,OAAO,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;IACpC,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,SAAS,CAAC;CACtC,CAAC,CAAC,CAAA"}
@@ -1 +0,0 @@
1
- export {};
@@ -1,109 +0,0 @@
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
- var __importDefault = (this && this.__importDefault) || function (mod) {
26
- return (mod && mod.__esModule) ? mod : { "default": mod };
27
- };
28
- Object.defineProperty(exports, "__esModule", { value: true });
29
- const redlock_temp_fix_1 = __importDefault(require("redlock-temp-fix"));
30
- const msgpackr_1 = require("msgpackr");
31
- const randomstring_1 = require("randomstring");
32
- const Aspect_1 = require("./Aspect");
33
- const mock = __importStar(require("./Connection.fixtures"));
34
- jest.mock('redlock-temp-fix');
35
- let aspect;
36
- let connection;
37
- let redis;
38
- let redlock;
39
- const key = (0, randomstring_1.generate)();
40
- beforeEach(() => {
41
- jest.clearAllMocks();
42
- connection = new mock.Connection();
43
- redis = connection.redis;
44
- aspect = new Aspect_1.Aspect(connection);
45
- const m = redlock_temp_fix_1.default.mock;
46
- redlock = redlock_temp_fix_1.default.mock.instances[0];
47
- });
48
- it('should depend on Connection', async () => {
49
- expect(connection.link).toHaveBeenCalledWith(aspect);
50
- });
51
- it('should set', async () => {
52
- const value = (0, randomstring_1.generate)();
53
- await aspect.invoke('set', key, value);
54
- expect(redis.set).toHaveBeenCalledWith(key, value);
55
- });
56
- it('should get', async () => {
57
- const value = await aspect.invoke('get', key);
58
- expect(redis.get).toHaveBeenCalledWith(key);
59
- expect(value).toStrictEqual(await redis.get.mock.results[0].value);
60
- });
61
- describe('buffers', () => {
62
- it.each([
63
- ['object', { [(0, randomstring_1.generate)()]: (0, randomstring_1.generate)() }],
64
- ['array', [(0, randomstring_1.generate)(), (0, randomstring_1.generate)()]]
65
- ])('should encode %s', async (_, value) => {
66
- await aspect.invoke('store', key, value);
67
- const buffer = (0, msgpackr_1.encode)(value);
68
- expect(redis.set).toHaveBeenCalledWith(key, buffer);
69
- });
70
- it('should pass arguments', async () => {
71
- const value = [1, 2];
72
- const buffer = (0, msgpackr_1.encode)(value);
73
- await aspect.invoke('store', key, value, 'EX', 1000);
74
- expect(redis.set).toHaveBeenCalledWith(key, buffer, 'EX', 1000);
75
- });
76
- it.each([
77
- ['object', { [(0, randomstring_1.generate)()]: (0, randomstring_1.generate)() }],
78
- ['array', [(0, randomstring_1.generate)(), (0, randomstring_1.generate)()]]
79
- ])('should decode %s', async (_, value) => {
80
- const buffer = (0, msgpackr_1.encode)(value);
81
- redis.getBuffer.mockImplementationOnce(async () => buffer);
82
- const output = await aspect.invoke('fetch', key);
83
- expect(redis.getBuffer).toHaveBeenCalledWith(key);
84
- expect(output).toStrictEqual(value);
85
- });
86
- });
87
- it('should create DLM', async () => {
88
- expect(redlock_temp_fix_1.default).toHaveBeenCalledWith([redis], { retryCount: -1 });
89
- });
90
- it('should acquire lock', async () => {
91
- const keys = [(0, randomstring_1.generate)(), (0, randomstring_1.generate)()];
92
- const callback = jest.fn();
93
- await aspect.invoke('lock', keys, callback);
94
- expect(redlock.using).toHaveBeenCalledWith(keys, 5000, callback);
95
- });
96
- it('should return result', async () => {
97
- const keys = [(0, randomstring_1.generate)(), (0, randomstring_1.generate)()];
98
- const callback = jest.fn();
99
- redlock.using.mockImplementationOnce(async () => (0, randomstring_1.generate)());
100
- const result = await aspect.invoke('lock', keys, callback);
101
- expect(result).toStrictEqual(await redlock.using.mock.results[0].value);
102
- });
103
- it('should handle non-array key', async () => {
104
- const key = (0, randomstring_1.generate)();
105
- const callback = jest.fn();
106
- await aspect.invoke('lock', key, callback);
107
- expect(redlock.using).toHaveBeenCalledWith([key], 5000, callback);
108
- });
109
- //# sourceMappingURL=Aspect.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Aspect.test.js","sourceRoot":"","sources":["../source/Aspect.test.ts"],"names":[],"mappings":"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"}
@@ -1,10 +0,0 @@
1
- /// <reference types="jest" />
2
- import type * as redis from 'ioredis';
3
- export declare const Redis: jest.Mock<typeof redis.Cluster, any>;
4
- export declare const Connection: jest.Mock<{
5
- redis: typeof redis.Cluster;
6
- link: jest.Mock<any, any>;
7
- }, []>;
8
- export declare const ioredis: {
9
- Redis: jest.Mock<typeof redis.Cluster, any>;
10
- };
@@ -1,18 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ioredis = exports.Connection = exports.Redis = void 0;
4
- const randomstring_1 = require("randomstring");
5
- exports.Redis = jest.fn(() => ({
6
- connect: jest.fn(async () => undefined),
7
- disconnect: jest.fn(),
8
- get: jest.fn(async () => (0, randomstring_1.generate)()),
9
- getBuffer: jest.fn(async () => Buffer.from((0, randomstring_1.generate)())),
10
- set: jest.fn(async () => undefined),
11
- on: jest.fn()
12
- }));
13
- exports.Connection = jest.fn(() => ({
14
- redis: new exports.Redis(),
15
- link: jest.fn()
16
- }));
17
- exports.ioredis = { Redis: exports.Redis };
18
- //# sourceMappingURL=Connection.fixtures.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Connection.fixtures.js","sourceRoot":"","sources":["../source/Connection.fixtures.ts"],"names":[],"mappings":";;;AAAA,+CAAuC;AAG1B,QAAA,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;IAClC,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,SAAS,CAAC;IACvC,UAAU,EAAE,IAAI,CAAC,EAAE,EAAE;IACrB,GAAG,EAAE,IAAI,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,IAAA,uBAAQ,GAAE,CAAC;IACpC,SAAS,EAAE,IAAI,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAA,uBAAQ,GAAE,CAAC,CAAC;IACvD,GAAG,EAAE,IAAI,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,SAAS,CAAC;IACnC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE;CACd,CAAC,CAA+C,CAAA;AAEpC,QAAA,UAAU,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;IACvC,KAAK,EAAE,IAAI,aAAK,EAAE;IAClB,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE;CAChB,CAAC,CAAC,CAAA;AAEU,QAAA,OAAO,GAAG,EAAE,KAAK,EAAL,aAAK,EAAE,CAAA"}
@@ -1 +0,0 @@
1
- export {};
@@ -1,39 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const randomstring_1 = require("randomstring");
4
- const Connection_1 = require("./Connection");
5
- const core_1 = require("@toa.io/core");
6
- const Connection_fixtures_1 = require("./Connection.fixtures");
7
- jest.mock('ioredis', () => ({
8
- Redis: jest.fn((nodes, options) => new Connection_fixtures_1.Redis(nodes, options))
9
- }));
10
- let connection;
11
- let cluster;
12
- const url = (0, randomstring_1.generate)();
13
- const locator = {
14
- namespace: (0, randomstring_1.generate)(),
15
- name: (0, randomstring_1.generate)()
16
- };
17
- beforeEach(() => {
18
- jest.clearAllMocks();
19
- connection = new Connection_1.Connection(url, locator);
20
- cluster = Connection_fixtures_1.Redis.mock.results[0].value;
21
- });
22
- it('should be instance of Connector', async () => {
23
- expect(connection).toBeInstanceOf(core_1.Connector);
24
- });
25
- it('should connect', async () => {
26
- const keyPrefix = `${locator.namespace}:${locator.name}:`;
27
- const options = { keyPrefix, enableReadyCheck: true, lazyConnect: true };
28
- expect(Connection_fixtures_1.Redis).toHaveBeenCalledWith(url, options);
29
- await connection.connect();
30
- expect(cluster.connect).toHaveBeenCalled();
31
- });
32
- it('should disconnect', async () => {
33
- await connection.disconnect();
34
- expect(cluster.disconnect).toHaveBeenCalled();
35
- });
36
- it('should expose cluster', async () => {
37
- expect(connection.redis).toStrictEqual(cluster);
38
- });
39
- //# sourceMappingURL=Connection.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Connection.test.js","sourceRoot":"","sources":["../source/Connection.test.ts"],"names":[],"mappings":";;AAAA,+CAAuC;AACvC,6CAAyC;AACzC,uCAAsD;AACtD,+DAA6C;AAG7C,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC;IAC1B,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,KAAe,EAAE,OAA6B,EAAE,EAAE,CAAC,IAAI,2BAAK,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;CAC9F,CAAC,CAAC,CAAA;AAEH,IAAI,UAAsB,CAAA;AAC1B,IAAI,OAAyC,CAAA;AAE7C,MAAM,GAAG,GAAG,IAAA,uBAAQ,GAAE,CAAA;AAEtB,MAAM,OAAO,GAAG;IACd,SAAS,EAAE,IAAA,uBAAQ,GAAE;IACrB,IAAI,EAAE,IAAA,uBAAQ,GAAE;CACK,CAAA;AAEvB,UAAU,CAAC,GAAG,EAAE;IACd,IAAI,CAAC,aAAa,EAAE,CAAA;IAEpB,UAAU,GAAG,IAAI,uBAAU,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;IACzC,OAAO,GAAG,2BAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAA;AACvC,CAAC,CAAC,CAAA;AAEF,EAAE,CAAC,iCAAiC,EAAE,KAAK,IAAI,EAAE;IAC/C,MAAM,CAAC,UAAU,CAAC,CAAC,cAAc,CAAC,gBAAS,CAAC,CAAA;AAC9C,CAAC,CAAC,CAAA;AAEF,EAAE,CAAC,gBAAgB,EAAE,KAAK,IAAI,EAAE;IAC9B,MAAM,SAAS,GAAG,GAAG,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,IAAI,GAAG,CAAA;IACzD,MAAM,OAAO,GAAyB,EAAE,SAAS,EAAE,gBAAgB,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,CAAA;IAE9F,MAAM,CAAC,2BAAK,CAAC,CAAC,oBAAoB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;IAEhD,MAAM,UAAU,CAAC,OAAO,EAAE,CAAA;IAE1B,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,gBAAgB,EAAE,CAAA;AAC5C,CAAC,CAAC,CAAA;AAEF,EAAE,CAAC,mBAAmB,EAAE,KAAK,IAAI,EAAE;IACjC,MAAM,UAAU,CAAC,UAAU,EAAE,CAAA;IAE7B,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,gBAAgB,EAAE,CAAA;AAC/C,CAAC,CAAC,CAAA;AAEF,EAAE,CAAC,uBAAuB,EAAE,KAAK,IAAI,EAAE;IACrC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,CAAA;AACjD,CAAC,CAAC,CAAA"}
@@ -1 +0,0 @@
1
- export {};
@@ -1,12 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const ioredis_1 = require("ioredis");
4
- const url = 'redis://localhost';
5
- const options = { keyPrefix: 'test', enableReadyCheck: true, lazyConnect: true };
6
- const redis = new ioredis_1.Redis(url, options);
7
- it('should get/set', async () => {
8
- await redis.set('foo', 'bar');
9
- const bar = await redis.get('foo');
10
- expect(bar).toStrictEqual('bar');
11
- });
12
- //# sourceMappingURL=redis.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"redis.test.js","sourceRoot":"","sources":["../source/redis.test.ts"],"names":[],"mappings":";;AAAA,qCAA+C;AAE/C,MAAM,GAAG,GAAG,mBAAmB,CAAA;AAC/B,MAAM,OAAO,GAAmB,EAAE,SAAS,EAAE,MAAM,EAAE,gBAAgB,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,CAAA;AAChG,MAAM,KAAK,GAAG,IAAI,eAAK,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;AAErC,EAAE,CAAC,gBAAgB,EAAE,KAAK,IAAI,EAAE;IAC9B,MAAM,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;IAC7B,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;IAElC,MAAM,CAAC,GAAG,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,CAAA;AAClC,CAAC,CAAC,CAAA"}
@@ -1 +0,0 @@
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.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.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.esnext.intl.d.ts","../../../node_modules/typescript/lib/lib.esnext.full.d.ts","../source/aspect.fixtures.ts","../../../node_modules/@types/node/assert.d.ts","../../../node_modules/@types/node/assert/strict.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/ioredis/built/types.d.ts","../../../node_modules/ioredis/built/command.d.ts","../../../node_modules/ioredis/built/scanstream.d.ts","../../../node_modules/ioredis/built/utils/rediscommander.d.ts","../../../node_modules/ioredis/built/transaction.d.ts","../../../node_modules/ioredis/built/utils/commander.d.ts","../../../node_modules/ioredis/built/connectors/abstractconnector.d.ts","../../../node_modules/ioredis/built/connectors/connectorconstructor.d.ts","../../../node_modules/ioredis/built/connectors/sentinelconnector/types.d.ts","../../../node_modules/ioredis/built/connectors/sentinelconnector/sentineliterator.d.ts","../../../node_modules/ioredis/built/connectors/sentinelconnector/index.d.ts","../../../node_modules/ioredis/built/connectors/standaloneconnector.d.ts","../../../node_modules/ioredis/built/redis/redisoptions.d.ts","../../../node_modules/ioredis/built/cluster/util.d.ts","../../../node_modules/ioredis/built/cluster/clusteroptions.d.ts","../../../node_modules/ioredis/built/cluster/index.d.ts","../../../node_modules/denque/index.d.ts","../../../node_modules/ioredis/built/subscriptionset.d.ts","../../../node_modules/ioredis/built/datahandler.d.ts","../../../node_modules/ioredis/built/redis.d.ts","../../../node_modules/ioredis/built/pipeline.d.ts","../../../node_modules/ioredis/built/index.d.ts","../../../node_modules/redlock-temp-fix/dist/index.d.ts","../../../node_modules/msgpackr/index.d.ts","../../../node_modules/@types/randomstring/index.d.ts","../../../runtime/core/types/bindings.d.ts","../../../runtime/core/types/connector.d.ts","../../../runtime/core/types/locator.d.ts","../../../runtime/core/types/request.d.ts","../../../runtime/core/types/exception.d.ts","../../../runtime/core/types/reply.d.ts","../../../runtime/core/types/component.d.ts","../../../runtime/core/types/context.d.ts","../../../runtime/core/types/storages.d.ts","../../../runtime/core/types/extensions.d.ts","../../../runtime/core/types/bridges.d.ts","../../../runtime/core/types/message.d.ts","../../../runtime/core/types/receiver.d.ts","../../../runtime/core/types/index.d.ts","../source/connection.ts","../source/aspect.ts","../source/connection.fixtures.ts","../source/aspect.test.ts","../source/connection.test.ts","../../../libraries/pointer/types/uris.d.ts","../../../libraries/pointer/types/index.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","../../../operations/types/deployment/dependency.d.ts","../../../operations/types/deployment/index.d.ts","../../../operations/types/index.d.ts","../source/extension.ts","../source/index.ts","../../../node_modules/@babel/types/lib/index.d.ts","../../../node_modules/@types/babel__generator/index.d.ts","../../../node_modules/@babel/parser/typings/babel-parser.d.ts","../../../node_modules/@types/babel__template/index.d.ts","../../../node_modules/@types/babel__traverse/index.d.ts","../../../node_modules/@types/babel__core/index.d.ts","../../../node_modules/@types/connect/index.d.ts","../../../node_modules/@types/body-parser/index.d.ts","../../../node_modules/@types/range-parser/index.d.ts","../../../node_modules/@types/qs/index.d.ts","../../../node_modules/@types/express-serve-static-core/index.d.ts","../../../node_modules/@types/mime/mime.d.ts","../../../node_modules/@types/mime/index.d.ts","../../../node_modules/@types/serve-static/index.d.ts","../../../node_modules/@types/express/index.d.ts","../../../node_modules/@types/graceful-fs/index.d.ts","../../../node_modules/@types/istanbul-lib-coverage/index.d.ts","../../../node_modules/@types/istanbul-lib-report/index.d.ts","../../../node_modules/@types/istanbul-reports/index.d.ts","../../../node_modules/jest-matcher-utils/node_modules/chalk/index.d.ts","../../../node_modules/jest-diff/build/cleanupsemantic.d.ts","../../../node_modules/pretty-format/build/types.d.ts","../../../node_modules/pretty-format/build/index.d.ts","../../../node_modules/jest-diff/build/types.d.ts","../../../node_modules/jest-diff/build/difflines.d.ts","../../../node_modules/jest-diff/build/printdiffs.d.ts","../../../node_modules/jest-diff/build/index.d.ts","../../../node_modules/jest-matcher-utils/build/index.d.ts","../../../node_modules/@types/jest/index.d.ts","../../../node_modules/@types/js-yaml/index.d.ts","../../../node_modules/@types/json-schema/index.d.ts","../../../node_modules/@types/json5/index.d.ts","../../../node_modules/@types/lodash/common/common.d.ts","../../../node_modules/@types/lodash/common/array.d.ts","../../../node_modules/@types/lodash/common/collection.d.ts","../../../node_modules/@types/lodash/common/date.d.ts","../../../node_modules/@types/lodash/common/function.d.ts","../../../node_modules/@types/lodash/common/lang.d.ts","../../../node_modules/@types/lodash/common/math.d.ts","../../../node_modules/@types/lodash/common/number.d.ts","../../../node_modules/@types/lodash/common/object.d.ts","../../../node_modules/@types/lodash/common/seq.d.ts","../../../node_modules/@types/lodash/common/string.d.ts","../../../node_modules/@types/lodash/common/util.d.ts","../../../node_modules/@types/lodash/index.d.ts","../../../node_modules/@types/minimist/index.d.ts","../../../node_modules/form-data/index.d.ts","../../../node_modules/@types/node-fetch/externals.d.ts","../../../node_modules/@types/node-fetch/index.d.ts","../../../node_modules/@types/normalize-package-data/index.d.ts","../../../node_modules/@types/parse-json/index.d.ts","../../../node_modules/@types/prettier/index.d.ts","../../../node_modules/@types/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/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":"8730f4bf322026ff5229336391a18bcaa1f94d4f82416c8b2f3954e2ccaae2ba","affectsGlobalScope":true},"dc47c4fa66b9b9890cf076304de2a9c5201e94b740cffdf09f87296d877d71f6","7a387c58583dfca701b6c85e0adaf43fb17d590fb16d5b2dc0a2fbd89f35c467","8a12173c586e95f4433e0c6dc446bc88346be73ffe9ca6eec7aa63c8f3dca7f9","5f4e733ced4e129482ae2186aae29fde948ab7182844c3a5a51dd346182c7b06","4b421cbfb3a38a27c279dec1e9112c3d1da296f77a1a85ddadf7e7a425d45d18","1fc5ab7a764205c68fa10d381b08417795fc73111d6dd16b5b1ed36badb743d9","746d62152361558ea6d6115cf0da4dd10ede041d14882ede3568bce5dc4b4f1f","d11a03592451da2d1065e09e61f4e2a9bf68f780f4f6623c18b57816a9679d17","aea179452def8a6152f98f63b191b84e7cbd69b0e248c91e61fb2e52328abe8c",{"version":"3aafcb693fe5b5c3bd277bd4c3a617b53db474fe498fc5df067c5603b1eebde7","affectsGlobalScope":true},{"version":"f3d4da15233e593eacb3965cde7960f3fddf5878528d882bcedd5cbaba0193c7","affectsGlobalScope":true},{"version":"7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481","affectsGlobalScope":true},{"version":"097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd","affectsGlobalScope":true},{"version":"adb996790133eb33b33aadb9c09f15c2c575e71fb57a62de8bf74dbf59ec7dfb","affectsGlobalScope":true},{"version":"8cc8c5a3bac513368b0157f3d8b31cfdcfe78b56d3724f30f80ed9715e404af8","affectsGlobalScope":true},{"version":"cdccba9a388c2ee3fd6ad4018c640a471a6c060e96f1232062223063b0a5ac6a","affectsGlobalScope":true},{"version":"c5c05907c02476e4bde6b7e76a79ffcd948aedd14b6a8f56e4674221b0417398","affectsGlobalScope":true},{"version":"5f406584aef28a331c36523df688ca3650288d14f39c5d2e555c95f0d2ff8f6f","affectsGlobalScope":true},{"version":"22f230e544b35349cfb3bd9110b6ef37b41c6d6c43c3314a31bd0d9652fcec72","affectsGlobalScope":true},{"version":"7ea0b55f6b315cf9ac2ad622b0a7813315bb6e97bf4bb3fbf8f8affbca7dc695","affectsGlobalScope":true},{"version":"3013574108c36fd3aaca79764002b3717da09725a36a6fc02eac386593110f93","affectsGlobalScope":true},{"version":"eb26de841c52236d8222f87e9e6a235332e0788af8c87a71e9e210314300410a","affectsGlobalScope":true},{"version":"3be5a1453daa63e031d266bf342f3943603873d890ab8b9ada95e22389389006","affectsGlobalScope":true},{"version":"17bb1fc99591b00515502d264fa55dc8370c45c5298f4a5c2083557dccba5a2a","affectsGlobalScope":true},{"version":"7ce9f0bde3307ca1f944119f6365f2d776d281a393b576a18a2f2893a2d75c98","affectsGlobalScope":true},{"version":"6a6b173e739a6a99629a8594bfb294cc7329bfb7b227f12e1f7c11bc163b8577","affectsGlobalScope":true},{"version":"81cac4cbc92c0c839c70f8ffb94eb61e2d32dc1c3cf6d95844ca099463cf37ea","affectsGlobalScope":true},{"version":"b0124885ef82641903d232172577f2ceb5d3e60aed4da1153bab4221e1f6dd4e","affectsGlobalScope":true},{"version":"0eb85d6c590b0d577919a79e0084fa1744c1beba6fd0d4e951432fa1ede5510a","affectsGlobalScope":true},{"version":"da233fc1c8a377ba9e0bed690a73c290d843c2c3d23a7bd7ec5cd3d7d73ba1e0","affectsGlobalScope":true},{"version":"d154ea5bb7f7f9001ed9153e876b2d5b8f5c2bb9ec02b3ae0d239ec769f1f2ae","affectsGlobalScope":true},{"version":"bb2d3fb05a1d2ffbca947cc7cbc95d23e1d053d6595391bd325deb265a18d36c","affectsGlobalScope":true},{"version":"c80df75850fea5caa2afe43b9949338ce4e2de086f91713e9af1a06f973872b8","affectsGlobalScope":true},{"version":"9d57b2b5d15838ed094aa9ff1299eecef40b190722eb619bac4616657a05f951","affectsGlobalScope":true},{"version":"6c51b5dd26a2c31dbf37f00cfc32b2aa6a92e19c995aefb5b97a3a64f1ac99de","affectsGlobalScope":true},{"version":"6e7997ef61de3132e4d4b2250e75343f487903ddf5370e7ce33cf1b9db9a63ed","affectsGlobalScope":true},{"version":"2ad234885a4240522efccd77de6c7d99eecf9b4de0914adb9a35c0c22433f993","affectsGlobalScope":true},{"version":"5e5e095c4470c8bab227dbbc61374878ecead104c74ab9960d3adcccfee23205","affectsGlobalScope":true},{"version":"09aa50414b80c023553090e2f53827f007a301bc34b0495bfb2c3c08ab9ad1eb","affectsGlobalScope":true},{"version":"d7f680a43f8cd12a6b6122c07c54ba40952b0c8aa140dcfcf32eb9e6cb028596","affectsGlobalScope":true},{"version":"3787b83e297de7c315d55d4a7c546ae28e5f6c0a361b7a1dcec1f1f50a54ef11","affectsGlobalScope":true},{"version":"e7e8e1d368290e9295ef18ca23f405cf40d5456fa9f20db6373a61ca45f75f40","affectsGlobalScope":true},{"version":"faf0221ae0465363c842ce6aa8a0cbda5d9296940a8e26c86e04cc4081eea21e","affectsGlobalScope":true},{"version":"06393d13ea207a1bfe08ec8d7be562549c5e2da8983f2ee074e00002629d1871","affectsGlobalScope":true},{"version":"2768ef564cfc0689a1b76106c421a2909bdff0acbe87da010785adab80efdd5c","affectsGlobalScope":true},{"version":"b248e32ca52e8f5571390a4142558ae4f203ae2f94d5bac38a3084d529ef4e58","affectsGlobalScope":true},{"version":"6c55633c733c8378db65ac3da7a767c3cf2cf3057f0565a9124a16a3a2019e87","affectsGlobalScope":true},{"version":"fb4416144c1bf0323ccbc9afb0ab289c07312214e8820ad17d709498c865a3fe","affectsGlobalScope":true},{"version":"5b0ca94ec819d68d33da516306c15297acec88efeb0ae9e2b39f71dbd9685ef7","affectsGlobalScope":true},{"version":"34c839eaaa6d78c8674ae2c37af2236dee6831b13db7b4ef4df3ec889a04d4f2","affectsGlobalScope":true},{"version":"34478567f8a80171f88f2f30808beb7da15eac0538ae91282dd33dce928d98ed","affectsGlobalScope":true},{"version":"ab7d58e6161a550ff92e5aff755dc37fe896245348332cd5f1e1203479fe0ed1","affectsGlobalScope":true},{"version":"6bda95ea27a59a276e46043b7065b55bd4b316c25e70e29b572958fa77565d43","affectsGlobalScope":true},{"version":"aedb8de1abb2ff1095c153854a6df7deae4a5709c37297f9d6e9948b6806fa66","affectsGlobalScope":true},{"version":"a4da0551fd39b90ca7ce5f68fb55d4dc0c1396d589b612e1902f68ee090aaada","affectsGlobalScope":true},{"version":"11ffe3c281f375fff9ffdde8bbec7669b4dd671905509079f866f2354a788064","affectsGlobalScope":true},{"version":"52d1bb7ab7a3306fd0375c8bff560feed26ed676a5b0457fa8027b563aecb9a4","affectsGlobalScope":true},"d96fa8a56871904776165ceb8e00bd56127e1a017bb2664cae76223b5f815141",{"version":"db54bf4636b3734cb157795e96f5435f78819c79b779defc0a57dddfbc33be6f","signature":"42285f2e9f96b5b2e222af41d315e8b615ddd5c7ed91083b351f8b220159c08f"},"587f13f1e8157bd8cec0adda0de4ef558bb8573daa9d518d1e2af38e87ecc91f","a69c09dbea52352f479d3e7ac949fde3d17b195abe90b045d619f747b38d6d1a",{"version":"bce910d9164785c9f0d4dcea4be359f5f92130c7c7833dea6138ab1db310a1f9","affectsGlobalScope":true},"7a435e0c814f58f23e9a0979045ec0ef5909aac95a70986e8bcce30c27dff228",{"version":"a7534271773a27ff7d136d550e86b41894d8090fa857ba4c02b5bb18d2eb1c8e","affectsGlobalScope":true},"db71be322f07f769200108aa19b79a75dd19a187c9dca2a30c4537b233aa2863","57135ce61976a8b1dadd01bb412406d1805b90db6e8ecb726d0d78e0b5f76050",{"version":"49479e21a040c0177d1b1bc05a124c0383df7a08a0726ad4d9457619642e875a","affectsGlobalScope":true},"82408ed3e959ddc60d3e9904481b5a8dc16469928257af22a3f7d1a3bc7fd8c4","b8e431e9b9bb2dc832b23d4e3e02774e953d5537998923f215ea446169e9a61e","3690133deae19c8127c5505fcb67b04bdc9eb053796008538a9b9abbb70d85aa","5b1c0a23f464f894e7c2b2b6c56df7b9afa60ed48c5345f8618d389a636b2108","be2b092f2765222757c6441b86c53a5ea8dfed47bbc43eab4c5fe37942c866b3","8e6b05abc98adba15e1ac78e137c64576c74002e301d682e66feb77a23907ab8","1ca735bb3d407b2af4fbee7665f3a0a83be52168c728cc209755060ba7ed67bd",{"version":"6b526a5ec4a401ca7c26cfe6a48e641d8f30af76673bad3b06a1b4504594a960","affectsGlobalScope":true},{"version":"b85c02e14ecb2a873dad5a1de72319b265160ba48f1b83661aeb3bba1366c1bc","affectsGlobalScope":true},"7a2ba0c9af860ac3e77b35ed01fd96d15986f17aa22fe40f188ae556fb1070df","fc3764040518a1008dd04bdc80964591b566b896283e00df85c95851c1f46237","55709608060f77965c270ac10ac646286589f1bd1cb174fff1778a2dd9a7ef31","790623a47c5eda62910098884ecb154dc0e5f3a23fc36c1bfb3b5b9ed44e2c2d","42b40e40f2a358cda332456214fad311e1806a6abf3cebaaac72496e07556642","354612fe1d49ecc9551ea3a27d94eef2887b64ef4a71f72ca444efe0f2f0ba80",{"version":"125af9d85cb9d5e508353f10a8d52f01652d2d48b2cea54789a33e5b4d289c1c","affectsGlobalScope":true},"f5490f53d40291cc8607f5463434d1ac6c5564bc4fbb03abceb03a8f6b014457","5e2b91328a540a0933ab5c2203f4358918e6f0fe7505d22840a891a6117735f1","3abc3512fa04aa0230f59ea1019311fd8667bd935d28306311dccc8b17e79d5d",{"version":"14a50dafe3f45713f7f27cb6320dff07c6ac31678f07959c2134260061bf91ff","affectsGlobalScope":true},{"version":"19da7150ca062323b1db6311a6ef058c9b0a39cc64d836b5e9b75d301869653b","affectsGlobalScope":true},"1349077576abb41f0e9c78ec30762ff75b710208aff77f5fdcc6a8c8ce6289dd","e2ce82603102b5c0563f59fb40314cc1ff95a4d521a66ad14146e130ea80d89c","a3e0395220255a350aa9c6d56f882bfcb5b85c19fddf5419ec822cf22246a26d","c27b01e8ddff5cd280711af5e13aecd9a3228d1c256ea797dd64f8fdec5f7df5","898840e876dfd21843db9f2aa6ae38ba2eab550eb780ff62b894b9fbfebfae6b","0cab4d7d4edc40cd3af9eea7c3ed6d1016910c0954c49c4297e479bf3822a625","1b952304137851e45bc009785de89ada562d9376177c97e37702e39e60c2f1ff","785e5be57d4f20f290a20e7b0c6263f6c57fd6e51283050756cef07d6d651c68","44b8b584a338b190a59f4f6929d072431950c7bd92ec2694821c11bce180c8a5","164deb2409ac5f4da3cd139dbcee7f7d66753d90363a4d7e2db8d8874f272270","1fb6c5ec52332a8b531a8d7a5300ac9301f98c4fe62f68e744e0841ccba65e7e",{"version":"ab294c4b7279318ee2a8fdf681305457ecc05970c94108d304933f18823eeac1","affectsGlobalScope":true},"ad08154d9602429522cac965a715fde27d421d69b24756c5d291877dda75353e","bbda6ea452a2386093a1eda18a6e26a989e98869f1b9f37e46f510a986d2e740","812b25f798033c202baedf386a1ccc41f9191b122f089bffd10fdccce99fba11","993325544790073f77e945bee046d53988c0bc3ac5695c9cf8098166feb82661",{"version":"75dd741ca6a6c8d2437a6ca8349b64b816421dbf9fe82dd026afaba965576962","affectsGlobalScope":true},{"version":"8799401a7ab57764f0d464513a7fa7c72e1d70a226b172ec60fff534ea94d108","affectsGlobalScope":true},"2ce2210032ccaff7710e2abf6a722e62c54960458e73e356b6a365c93ab6ca66","92db194ef7d208d5e4b6242a3434573fd142a621ff996d84cc9dbba3553277d0","16a3080e885ed52d4017c902227a8d0d8daf723d062bec9e45627c6fdcd6699b",{"version":"0bd9543cd8fc0959c76fb8f4f5a26626c2ed62ef4be98fd857bce268066db0a2","affectsGlobalScope":true},"1ca6858a0cbcd74d7db72d7b14c5360a928d1d16748a55ecfa6bfaff8b83071b",{"version":"ab9b9a36e5284fd8d3bf2f7d5fcbc60052f25f27e4d20954782099282c60d23e","affectsGlobalScope":true},"247aa3419c98713231952b33801d4f46563fe542e03604acd8c63ac45a32409c","e8a5beb73e49b5a4899f12b21fa436f4088f5c6b22ed3e6718fcdf526539d851","911484710eb1feaf615cb68eb5875cbfb8edab2a032f0e4fe5a7f8b17e3a997c","4b16f3af68c203b4518ce37421fbb64d8e52f3b454796cd62157cfca503b1e08","4fc05cd35f313ea6bc2cd52bfd0d3d1a79c894aeaeffd7c285153cb7d243f19b","29994a97447d10d003957bcc0c9355c272d8cf0f97143eb1ade331676e860945","6865b4ef724cb739f8f1511295f7ce77c52c67ff4af27e07b61471d81de8ecfc","9cddf06f2bc6753a8628670a737754b5c7e93e2cfe982a300a0b43cf98a7d032","3f8e68bd94e82fe4362553aa03030fcf94c381716ce3599d242535b0d9953e49","63e628515ec7017458620e1624c594c9bd76382f606890c8eebf2532bcab3b7c","355d5e2ba58012bc059e347a70aa8b72d18d82f0c3491e9660adaf852648f032","0c543e751bbd130170ed4efdeca5ff681d06a99f70b5d6fe7defad449d08023d","c301dded041994ed4899a7cf08d1d6261a94788da88a4318c1c2338512431a03","236c2990d130b924b4442194bdafefa400fcbd0c125a5e2c3e106a0dbe43eaad","ded3d0fb8ac3980ae7edcc723cc2ad35da1798d52cceff51c92abe320432ceeb","fbb60baf8c207f19aa1131365e57e1c7974a4f7434c1f8d12e13508961fb20ec","00011159f97bde4bdb1913f30ef185e6948b8d7ad022b1f829284dfc78feaabf","ed849d616865076f44a41c87f27698f7cdf230290c44bafc71d7c2bc6919b202","9a0a0af04065ddfecc29d2b090659fce57f46f64c7a04a9ba63835ef2b2d0efa","10297d22a9209a718b9883a384db19249b206a0897e95f2b9afeed3144601cb0","620d6e0143dba8d88239e321315ddfb662283da3ada6b00cbc935d5c2cee4202","34d206f6ba993e601dade2791944bdf742ab0f7a8caccc661106c87438f4f904","05ca49cc7ba9111f6c816ecfadb9305fffeb579840961ee8286cc89749f06ebd","413cb21741d7a91a92729839c3ad340685cf69a84d67a835e0dfc2de92789867","2a644159d517fde538191edfe276c4b2185bab433b9dfd0445fa080fd34b0c8b",{"version":"4698841dc5a91fe716dd41ec7136867bbde9a274ce21031e5ef6ce2d8a552ceb","affectsGlobalScope":true},"5c705ea6d923f75118d05b15d9277a792534f537f3f0e3bd558706b7719e0b4b","4b0bbac779edb0daa8ac8c983a5bc3dcb22a7831efc9c3b0e1c09fb7871d5e78","f7d594d8d16c7e9fa2e0dd3635e4ad8ed3b5cf9e8cf4a0ed2b91771b91ff79d2","f215f4a31cde19ad564123449d598e8f5d54ee01723c9f2e08a6551603796c99","425a8261e16e3e5c1b4e21efbdb8b12ac26b70b1932427732840b527d9725b33","290a1a95e7f4311064d71b5307e157e2922ba6498584c77a58c2285b0e2d7886","5e1ebcc9c30ad16e8a375e471d1bdf2346aae0a7f8749ce54a85eabb98985978","eccae7a0380fece7bedcce018b5429da725a59c76eaf1f29d9483ea909115ea0","863a16bffa4414a6784927eec1b17523521761b2b2344a0b98f140c91d659859","753bfdb96253efc3ecd0bf53ca17bbac7274cb274c3f82ccf865b05c75bf287d","2ece68fc449934b9b5988584816a997bd94e8960bc28ba83b58c0b79b639447b","67f637033109e2ae0272428c6b27a0be1c323b43b37e3ac55d09c993b205867b","a06788dcbb350c361b23aad1671f6818641850ab75050e7abc0ae42f6ae49090","436a237807dbe653fffafdba822497101474034aa46d5a69fca5ecd6290964fe",{"version":"1e791b88b61bcad1e065bf9c5b7ed67b928547a1358f4b31c69a34f8b9f42a70","signature":"9d32045f9c21ac3a479ad28844a6fe853f1697f6ce89e07eed2f28353d8f4147"},{"version":"ed7e5376314f743bda511e277a31be4e27df7f54571fd98f339b444571850644","signature":"0a3c74f035db1dfcb1e6a89778bab6b8acff994d9a769cdcbf682c47edbb4120"},{"version":"2d32f84aa1b45b97c2b6764312124316f537191a07a47f9f2e5f758cc14eaf7b","signature":"8d9f71ec03a7526098b696ab56d7f1574a2c506a64066ac95326cf9c70d2c77f"},{"version":"44670cbdd51281b468db7f1b612a5f463256c2b2ac8cc03ff18363416cbb492b","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"db13bd42670f8646a7015025eb401296f2c68e745e0bd19c896f1493e476fa8c","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},"c83d342e4f8ca0e94a489159b3db36112ff9b2bdb76c136a3796be7e8a2e0830","5d5b0aec689e9d7dbd9f68d95a1b83264d9af4903d77fe3dfb34a7a2702f87f8","76ac98764b6a936d05a6e20e5fb1862f225d192ba2bed9727456ac5b7f06c0e6","71e46111f57a5c82031adbac22eb542b5f63a8be4d5ee9253036cafe81d16112","330049770d8233563a03bc26f6836ba1117bbfea6e1d6745566827c3d362ea3b","15404adef03a041ef04b7f73e1b464b7ee5eefc7e824a2a3339e88d0e27667d6","d7bf963173d1f020696f88e067dffa762855d6ed4d64ee7b014aef1d3df5ce7c","6e77fb2250275d3945569ac61104a29927624b5a7ba0e905e7e1defd1f2ed151","0d61eb780d608df42f8a7ddd3cbe90c89d1880978db22e02da54c6b749bb5f13",{"version":"ff474759c808a17a112526e94042b199d7d8bbda732ba28a3829c3b02fe8dece","signature":"0c1235722104d8d2b3c04b62b529deaccf63cb5a58e1521de606c078ee4aa5b2"},{"version":"656ef010f0eaf914b81429ab63d15052c0b351cf28d60995096374cb5253f455","signature":"c7b7afc6417e2d677eb9c1f2defc832788088924914bf0f971e88fa3b9d038c8"},"3078727fed04c123165efdb42deeac5dceaa42ac62216ca13cb809dc7e13415f","cc957354aa3c94c9961ebf46282cfde1e81d107fc5785a61f62c67f1dd3ac2eb","b4f76b34637d79cefad486127115fed843762c69512d7101b7096e1293699679","93de1c6dab503f053efe8d304cb522bb3a89feab8c98f307a674a4fae04773e9","dae3d1adc67ac3dbd1cd471889301339ec439837b5df565982345be20c8fca9a","b6ddf3a46ccfa4441d8be84d2e9bf3087573c48804196faedbd4a25b60631beb","6d829824ead8999f87b6df21200df3c6150391b894b4e80662caa462bd48d073","afc559c1b93df37c25aef6b3dfa2d64325b0e112e887ee18bf7e6f4ec383fc90","16d51f964ec125ad2024cf03f0af444b3bc3ec3614d9345cc54d09bab45c9a4c","ba601641fac98c229ccd4a303f747de376d761babb33229bb7153bed9356c9cc",{"version":"c5dd1fef4cd4aaffc78786047bed5ae6fc1200d19a1946cbc4e2d3ed4d62c8fa","affectsGlobalScope":true},"5b9ecf7da4d71cf3832dbb8336150fa924631811f488ad4690c2dfec2b4fb1d7","951c85f75aac041dddbedfedf565886a7b494e29ec1532e2a9b4a6180560b50e","e6f0cb9d8cb2e38bec66e032e73caa3e7c6671f21ed7196acb821aec462051f2","15c88bfd1b8dc7231ff828ae8df5d955bae5ebca4cf2bcb417af5821e52299ae","bf88ef4208a770ca39a844b182b3695df536326ea566893fdc5b8418702a331e","8b06ac3faeacb8484d84ddb44571d8f410697f98d7bfa86c0fda60373a9f5215","7eb06594824ada538b1d8b48c3925a83e7db792f47a081a62cf3e5c4e23cf0ee","f5638f7c2f12a9a1a57b5c41b3c1ea7db3876c003bab68e6a57afd6bcc169af0","0d14fa22c41fdc7277e6f71473b20ebc07f40f00e38875142335d5b63cdfc9d2","d8aab31ba8e618cc3eea10b0945de81cb93b7e8150a013a482332263b9305322","462bccdf75fcafc1ae8c30400c9425e1a4681db5d605d1a0edb4f990a54d8094","5923d8facbac6ecf7c84739a5c701a57af94a6f6648d6229a6c768cf28f0f8cb","7adecb2c3238794c378d336a8182d4c3dd2c4fa6fa1785e2797a3db550edea62","dc12dc0e5aa06f4e1a7692149b78f89116af823b9e1f1e4eae140cd3e0e674e6","1bfc6565b90c8771615cd8cfcf9b36efc0275e5e83ac7d9181307e96eb495161","8a8a96898906f065f296665e411f51010b51372fa260d5373bf9f64356703190","7f82ef88bdb67d9a850dd1c7cd2d690f33e0f0acd208e3c9eba086f3670d4f73",{"version":"af9b69886a3c5cf847341a3f777d47984152051a82fffe72a97158e4ffa94780","affectsGlobalScope":true},"686e548ae30250d62532c8cacb43fccc922b693408371bd3503563c4a0f28eed","dca41e86e89dfb2e85e6935260250f02eb6683b86c2fa16bec729ddd1bcd9b4b","96d14f21b7652903852eef49379d04dbda28c16ed36468f8c9fa08f7c14c9538","675e702f2032766a91eeadee64f51014c64688525da99dccd8178f0c599f13a8","458111fc89d11d2151277c822dfdc1a28fa5b6b2493cf942e37d4cd0a6ee5f22","d70c026dd2eeaa974f430ea229230a1897fdb897dc74659deebe2afd4feeb08f","187119ff4f9553676a884e296089e131e8cc01691c546273b1d0089c3533ce42","febf0b2de54781102b00f61653b21377390a048fbf5262718c91860d11ff34a6","98f9d826db9cd99d27a01a59ee5f22863df00ccf1aaf43e1d7db80ebf716f7c3","0aaef8cded245bf5036a7a40b65622dd6c4da71f7a35343112edbe112b348a1e","00baffbe8a2f2e4875367479489b5d43b5fc1429ecb4a4cc98cfc3009095f52a","dcd91d3b697cb650b95db5471189b99815af5db2a1cd28760f91e0b12ede8ed5","3c92b6dfd43cc1c2485d9eba5ff0b74a19bb8725b692773ef1d66dac48cda4bd","3cf0d343c2276842a5b617f22ba82af6322c7cfe8bb52238ffc0c491a3c21019","df996e25faa505f85aeb294d15ebe61b399cf1d1e49959cdfaf2cc0815c203f9",{"version":"f2eff8704452659641164876c1ef0df4174659ce7311b0665798ea3f556fa9ad","affectsGlobalScope":true},"209e814e8e71aec74f69686a9506dd7610b97ab59dcee9446266446f72a76d05","736097ddbb2903bef918bb3b5811ef1c9c5656f2a73bd39b22a91b9cc2525e50","3898e3dbe94b6fe529fbe8f0faee1309c1923100516d7a014b301955e52ece77","3663d1b50f356656a314e5df169bb51cb9d5fd75905fa703f75db6bb32030568","6fa0008bf91a4cc9c8963bace4bba0bd6865cbfa29c3e3ccc461155660fb113a","2b8264b2fefd7367e0f20e2c04eed5d3038831fe00f5efbc110ff0131aab899b","bc88e4049153bc4dddb4503ed7e624eb141edfa9064b3659d6c86e900fe9e621","2b93035328f7778d200252681c1d86285d501ed424825a18f81e4c3028aa51d9","2ac9c8332c5f8510b8bdd571f8271e0f39b0577714d5e95c1e79a12b2616f069","42c21aa963e7b86fa00801d96e88b36803188018d5ad91db2a9101bccd40b3ff","d31eb848cdebb4c55b4893b335a7c0cca95ad66dee13cbb7d0893810c0a9c301","b9f96255e1048ed2ea33ec553122716f0e57fc1c3ad778e9aa15f5b46547bd23","7a9e0a564fee396cacf706523b5aeed96e04c6b871a8bebefad78499fbffc5bc","906c751ef5822ec0dadcea2f0e9db64a33fb4ee926cc9f7efa38afe5d5371b2a","5387c049e9702f2d2d7ece1a74836a14b47fbebe9bbeb19f94c580a37c855351","c68391fb9efad5d99ff332c65b1606248c4e4a9f1dd9a087204242b56c7126d6","e9cf02252d3a0ced987d24845dcb1f11c1be5541f17e5daa44c6de2d18138d0c","e8b02b879754d85f48489294f99147aeccc352c760d95a6fe2b6e49cd400b2fe","9f6908ab3d8a86c68b86e38578afc7095114e66b2fc36a2a96e9252aac3998e0","0eedb2344442b143ddcd788f87096961cd8572b64f10b4afc3356aa0460171c6","71405cc70f183d029cc5018375f6c35117ffdaf11846c35ebf85ee3956b1b2a6","c68baff4d8ba346130e9753cefe2e487a16731bf17e05fdacc81e8c9a26aae9d","2cd15528d8bb5d0453aa339b4b52e0696e8b07e790c153831c642c3dea5ac8af","479d622e66283ffa9883fbc33e441f7fc928b2277ff30aacbec7b7761b4e9579","ade307876dc5ca267ca308d09e737b611505e015c535863f22420a11fffc1c54","f8cdefa3e0dee639eccbe9794b46f90291e5fd3989fcba60d2f08fde56179fb9","86c5a62f99aac7053976e317dbe9acb2eaf903aaf3d2e5bb1cafe5c2df7b37a8","2b300954ce01a8343866f737656e13243e86e5baef51bd0631b21dcef1f6e954","a2d409a9ffd872d6b9d78ead00baa116bbc73cfa959fce9a2f29d3227876b2a1","b288936f560cd71f4a6002953290de9ff8dfbfbf37f5a9391be5c83322324898","61178a781ef82e0ff54f9430397e71e8f365fc1e3725e0e5346f2de7b0d50dfa","6a6ccb37feb3aad32d9be026a3337db195979cd5727a616fc0f557e974101a54","c649ea79205c029a02272ef55b7ab14ada0903db26144d2205021f24727ac7a3","38e2b02897c6357bbcff729ef84c736727b45cc152abe95a7567caccdfad2a1d","d6610ea7e0b1a7686dba062a1e5544dd7d34140f4545305b7c6afaebfb348341","3dee35db743bdba2c8d19aece7ac049bde6fa587e195d86547c882784e6ba34c","b15e55c5fa977c2f25ca0b1db52cfa2d1fd4bf0baf90a8b90d4a7678ca462ff1","f41d30972724714763a2698ae949fbc463afb203b5fa7c4ad7e4de0871129a17","843dd7b6a7c6269fd43827303f5cbe65c1fecabc30b4670a50d5a15d57daeeb9","f06d8b8567ee9fd799bf7f806efe93b67683ef24f4dea5b23ef12edff4434d9d","6017384f697ff38bc3ef6a546df5b230c3c31329db84cbfe686c83bec011e2b2","e1a5b30d9248549ca0c0bb1d653bafae20c64c4aa5928cc4cd3017b55c2177b0","a593632d5878f17295bd53e1c77f27bf4c15212822f764a2bfc1702f4b413fa0","a868a534ba1c2ca9060b8a13b0ffbbbf78b4be7b0ff80d8c75b02773f7192c29","da7545aba8f54a50fde23e2ede00158dc8112560d934cee58098dfb03aae9b9d","34baf65cfee92f110d6653322e2120c2d368ee64b3c7981dff08ed105c4f19b0","a1a261624efb3a00ff346b13580f70f3463b8cdcc58b60f5793ff11785d52cab","b0d10e46cfe3f6c476b69af02eaa38e4ccc7430221ce3109ae84bb9fb8282298","fab58e600970e66547644a44bc9918e3223aa2cbd9e8763cec004b2cfb48827e","ea2d34766aa08df002a696e27d2140c0834cb8d7e9cb35687ecfd578253c196c","67483628398336d0f9368578a9514bd8cc823a4f3b3ab784f3942077e5047335","70e9a18da08294f75bf23e46c7d69e67634c0765d355887b9b41f0d959e1426e","e9eb1b173aa166892f3eddab182e49cfe59aa2e14d33aedb6b49d175ed6a3750"],"options":{"declaration":true,"esModuleInterop":true,"experimentalDecorators":true,"module":1,"noImplicitOverride":true,"outDir":"./","skipLibCheck":true,"sourceMap":true,"strict":true,"target":99},"fileIdsList":[[107],[107,136,137,138,139,154,155,156],[107,136,137,138,153,154],[107,136,139],[107,136,139,153,154,156],[107,136,153],[107,153,154,155,160,164,167],[107,168],[107,159],[107,153],[107,170],[107,170,171,172,173,174],[107,170,172],[80,107,114,176],[80,107,114],[77,80,107,114,178,179],[107,177,179,180,183],[78,107,114],[107,186],[107,187],[107,192,197],[107,202,204,205,206,207,208,209,210,211,212,213,214],[107,202,203,205,206,207,208,209,210,211,212,213,214],[107,203,204,205,206,207,208,209,210,211,212,213,214],[107,202,203,204,206,207,208,209,210,211,212,213,214],[107,202,203,204,205,207,208,209,210,211,212,213,214],[107,202,203,204,205,206,208,209,210,211,212,213,214],[107,202,203,204,205,206,207,209,210,211,212,213,214],[107,202,203,204,205,206,207,208,210,211,212,213,214],[107,202,203,204,205,206,207,208,209,211,212,213,214],[107,202,203,204,205,206,207,208,209,210,212,213,214],[107,202,203,204,205,206,207,208,209,210,211,213,214],[107,202,203,204,205,206,207,208,209,210,211,212,214],[107,202,203,204,205,206,207,208,209,210,211,212,213],[107,181],[107,182],[80,106,107,114,216,217],[61,107],[64,107],[65,70,98,107],[66,77,78,85,95,106,107],[66,67,77,85,107],[68,107],[69,70,78,86,107],[70,95,103,107],[71,73,77,85,107],[72,107],[73,74,107],[77,107],[75,77,107],[77,78,79,95,106,107],[77,78,79,92,95,98,107],[107,111],[73,77,80,85,95,106,107],[77,78,80,81,85,95,103,106,107],[80,82,95,103,106,107],[61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113],[77,83,107],[84,106,107],[73,77,85,95,107],[86,107],[87,107],[64,88,107],[89,105,107,111],[90,107],[91,107],[77,92,93,107],[92,94,107,109],[65,77,95,96,97,98,107],[65,95,97,107],[95,96,107],[98,107],[99,107],[95,107],[77,101,102,107],[101,102,107],[70,85,95,103,107],[104,107],[85,105,107],[65,80,91,106,107],[70,107],[95,107,108],[107,109],[107,110],[65,70,77,79,88,95,106,107,109,111],[95,107,112],[107,222,261],[107,222,246,261],[107,261],[107,222],[107,222,247,261],[107,222,223,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],[107,247,261],[80,107,114,182],[107,114],[107,266],[80,95,107,114],[73,107,114,120,127,128],[77,107,114,115,116,117,119,120,128,129,134],[73,107,114],[107,114,115],[107,115],[107,121],[77,103,107,114,115,121,123,124,129],[107,123],[107,127],[85,103,107,114,115,121],[77,107,114,115,131,132],[107,115,116,117,118,121,125,126,127,128,129,130,134,135],[107,116,120,130,134],[77,107,114,115,116,117,119,120,127,130,131,133],[107,120,122,125,126],[95,107,114],[107,116],[107,118],[85,103,107,114],[107,115,116,118],[107,190,193],[107,190,193,194,195],[107,192],[107,189,196],[107,191],[77,107,114,136],[107,165],[107,166],[107,141,145,147,153],[107,141,142,143,145],[107,141,143,145,149],[107,140,146,147,148,153],[107,140,141,142,143,144,145,146,147,148,149,150,151,152],[107,141,151],[107,144],[107,141,142],[107,153,161,162],[107,163],[153,154],[136],[136,153],[153,160,164,167],[168]],"referencedMap":[[60,1],[157,2],[155,3],[156,4],[158,5],[154,6],[168,7],[169,8],[160,9],[159,10],[172,11],[170,1],[175,12],[171,11],[173,13],[174,11],[177,14],[176,15],[180,16],[184,17],[185,18],[186,1],[187,19],[188,20],[198,21],[199,1],[200,1],[201,1],[203,22],[204,23],[202,24],[205,25],[206,26],[207,27],[208,28],[209,29],[210,30],[211,31],[212,32],[213,33],[214,34],[182,35],[181,36],[215,1],[217,1],[218,37],[61,38],[62,38],[64,39],[65,40],[66,41],[67,42],[68,43],[69,44],[70,45],[71,46],[72,47],[73,48],[74,48],[76,49],[75,50],[77,49],[78,51],[79,52],[63,53],[113,1],[80,54],[81,55],[82,56],[114,57],[83,58],[84,59],[85,60],[86,61],[87,62],[88,63],[89,64],[90,65],[91,66],[92,67],[93,67],[94,68],[95,69],[97,70],[96,71],[98,72],[99,73],[100,74],[101,75],[102,76],[103,77],[104,78],[105,79],[106,80],[107,81],[108,82],[109,83],[110,84],[111,85],[112,86],[219,1],[220,1],[221,1],[179,1],[139,1],[178,1],[246,87],[247,88],[222,89],[225,89],[244,87],[245,87],[235,87],[234,90],[232,87],[227,87],[240,87],[238,87],[242,87],[226,87],[239,87],[243,87],[228,87],[229,87],[241,87],[223,87],[230,87],[231,87],[233,87],[237,87],[248,91],[236,87],[224,87],[261,92],[260,1],[255,91],[257,93],[256,91],[249,91],[250,91],[252,91],[254,91],[258,93],[259,93],[251,93],[253,93],[183,94],[262,1],[263,1],[264,1],[265,95],[266,1],[267,96],[131,1],[216,97],[129,98],[130,99],[128,100],[116,101],[121,102],[122,103],[125,104],[124,105],[123,106],[126,107],[133,108],[136,109],[135,110],[134,111],[127,112],[117,113],[132,114],[119,115],[115,116],[120,117],[118,101],[190,1],[194,118],[196,119],[195,118],[193,120],[197,121],[189,1],[138,74],[192,122],[191,1],[137,123],[11,1],[12,1],[16,1],[15,1],[2,1],[17,1],[18,1],[19,1],[20,1],[21,1],[22,1],[23,1],[24,1],[3,1],[4,1],[28,1],[25,1],[26,1],[27,1],[29,1],[30,1],[31,1],[5,1],[32,1],[33,1],[34,1],[35,1],[6,1],[39,1],[36,1],[37,1],[38,1],[40,1],[7,1],[41,1],[46,1],[47,1],[42,1],[43,1],[44,1],[45,1],[8,1],[51,1],[48,1],[49,1],[50,1],[52,1],[9,1],[53,1],[54,1],[55,1],[56,1],[57,1],[1,1],[10,1],[59,1],[58,1],[14,1],[13,1],[165,1],[166,124],[167,125],[140,10],[150,126],[146,127],[141,1],[147,128],[144,1],[149,129],[153,130],[142,1],[151,1],[152,131],[145,132],[143,1],[148,133],[161,10],[163,134],[162,135],[164,135]],"exportedModulesMap":[[155,136],[156,137],[154,138],[168,139],[169,140],[160,9],[159,10],[172,11],[170,1],[175,12],[171,11],[173,13],[174,11],[177,14],[176,15],[180,16],[184,17],[185,18],[186,1],[187,19],[188,20],[198,21],[199,1],[200,1],[201,1],[203,22],[204,23],[202,24],[205,25],[206,26],[207,27],[208,28],[209,29],[210,30],[211,31],[212,32],[213,33],[214,34],[182,35],[181,36],[215,1],[217,1],[218,37],[61,38],[62,38],[64,39],[65,40],[66,41],[67,42],[68,43],[69,44],[70,45],[71,46],[72,47],[73,48],[74,48],[76,49],[75,50],[77,49],[78,51],[79,52],[63,53],[113,1],[80,54],[81,55],[82,56],[114,57],[83,58],[84,59],[85,60],[86,61],[87,62],[88,63],[89,64],[90,65],[91,66],[92,67],[93,67],[94,68],[95,69],[97,70],[96,71],[98,72],[99,73],[100,74],[101,75],[102,76],[103,77],[104,78],[105,79],[106,80],[107,81],[108,82],[109,83],[110,84],[111,85],[112,86],[219,1],[220,1],[221,1],[179,1],[139,1],[178,1],[246,87],[247,88],[222,89],[225,89],[244,87],[245,87],[235,87],[234,90],[232,87],[227,87],[240,87],[238,87],[242,87],[226,87],[239,87],[243,87],[228,87],[229,87],[241,87],[223,87],[230,87],[231,87],[233,87],[237,87],[248,91],[236,87],[224,87],[261,92],[260,1],[255,91],[257,93],[256,91],[249,91],[250,91],[252,91],[254,91],[258,93],[259,93],[251,93],[253,93],[183,94],[262,1],[263,1],[264,1],[265,95],[266,1],[267,96],[131,1],[216,97],[129,98],[130,99],[128,100],[116,101],[121,102],[122,103],[125,104],[124,105],[123,106],[126,107],[133,108],[136,109],[135,110],[134,111],[127,112],[117,113],[132,114],[119,115],[115,116],[120,117],[118,101],[190,1],[194,118],[196,119],[195,118],[193,120],[197,121],[189,1],[138,74],[192,122],[191,1],[137,123],[11,1],[12,1],[16,1],[15,1],[2,1],[17,1],[18,1],[19,1],[20,1],[21,1],[22,1],[23,1],[24,1],[3,1],[4,1],[28,1],[25,1],[26,1],[27,1],[29,1],[30,1],[31,1],[5,1],[32,1],[33,1],[34,1],[35,1],[6,1],[39,1],[36,1],[37,1],[38,1],[40,1],[7,1],[41,1],[46,1],[47,1],[42,1],[43,1],[44,1],[45,1],[8,1],[51,1],[48,1],[49,1],[50,1],[52,1],[9,1],[53,1],[54,1],[55,1],[56,1],[57,1],[1,1],[10,1],[59,1],[58,1],[14,1],[13,1],[165,1],[166,124],[167,125],[140,10],[150,126],[146,127],[141,1],[147,128],[144,1],[149,129],[153,130],[142,1],[151,1],[152,131],[145,132],[143,1],[148,133],[161,10],[163,134],[162,135],[164,135]],"semanticDiagnosticsPerFile":[60,157,155,156,158,154,168,169,160,159,172,170,175,171,173,174,177,176,180,184,185,186,187,188,198,199,200,201,203,204,202,205,206,207,208,209,210,211,212,213,214,182,181,215,217,218,61,62,64,65,66,67,68,69,70,71,72,73,74,76,75,77,78,79,63,113,80,81,82,114,83,84,85,86,87,88,89,90,91,92,93,94,95,97,96,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,219,220,221,179,139,178,246,247,222,225,244,245,235,234,232,227,240,238,242,226,239,243,228,229,241,223,230,231,233,237,248,236,224,261,260,255,257,256,249,250,252,254,258,259,251,253,183,262,263,264,265,266,267,131,216,129,130,128,116,121,122,125,124,123,126,133,136,135,134,127,117,132,119,115,120,118,190,194,196,195,193,197,189,138,192,191,137,11,12,16,15,2,17,18,19,20,21,22,23,24,3,4,28,25,26,27,29,30,31,5,32,33,34,35,6,39,36,37,38,40,7,41,46,47,42,43,44,45,8,51,48,49,50,52,9,53,54,55,56,57,1,10,59,58,14,13,165,166,167,140,150,146,141,147,144,149,153,142,151,152,145,143,148,161,163,162,164]},"version":"4.9.5"}