@redocly/cli 1.0.0-beta.100 → 1.0.0-beta.101

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.
@@ -15,3 +15,4 @@ export declare const getOutputFileName: jest.Mock<{
15
15
  ext: string;
16
16
  }, []>;
17
17
  export declare const handleError: jest.Mock<any, any>;
18
+ export declare const exitWithError: jest.Mock<any, any>;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.handleError = exports.getOutputFileName = exports.printLintTotals = exports.printUnusedWarnings = exports.printExecutionTime = exports.getExecutionTime = exports.pluralize = exports.slash = exports.dumpBundle = exports.getTotals = exports.getFallbackEntryPointsOrExit = void 0;
3
+ exports.exitWithError = exports.handleError = exports.getOutputFileName = exports.printLintTotals = exports.printUnusedWarnings = exports.printExecutionTime = exports.getExecutionTime = exports.pluralize = exports.slash = exports.dumpBundle = exports.getTotals = exports.getFallbackEntryPointsOrExit = void 0;
4
4
  exports.getFallbackEntryPointsOrExit = jest.fn((entrypoints) => entrypoints.map(() => ({ path: '' })));
5
5
  exports.getTotals = jest.fn(() => ({ errors: 0 }));
6
6
  exports.dumpBundle = jest.fn(() => '');
@@ -12,3 +12,4 @@ exports.printUnusedWarnings = jest.fn();
12
12
  exports.printLintTotals = jest.fn();
13
13
  exports.getOutputFileName = jest.fn(() => ({ outputFile: 'test.yaml', ext: 'yaml' }));
14
14
  exports.handleError = jest.fn();
15
+ exports.exitWithError = jest.fn();
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ const join_1 = require("../../commands/join");
13
+ const utils_1 = require("../../utils");
14
+ const colorette_1 = require("colorette");
15
+ jest.mock('../../utils');
16
+ jest.mock('colorette');
17
+ describe('handleJoin fails', () => {
18
+ const colloreteYellowMock = colorette_1.yellow;
19
+ colloreteYellowMock.mockImplementation((string) => string);
20
+ it('should call exitWithError because only one entrypoint', () => __awaiter(void 0, void 0, void 0, function* () {
21
+ yield join_1.handleJoin({ entrypoints: ['first.yaml'] }, 'cli-version');
22
+ expect(utils_1.exitWithError).toHaveBeenCalledWith(`At least 2 entrypoints should be provided. \n\n`);
23
+ }));
24
+ it('should call exitWithError because passed all 3 options for tags', () => __awaiter(void 0, void 0, void 0, function* () {
25
+ yield join_1.handleJoin({
26
+ entrypoints: ['first.yaml', 'second.yaml'],
27
+ 'prefix-tags-with-info-prop': 'something',
28
+ 'without-x-tag-groups': true,
29
+ 'prefix-tags-with-filename': true,
30
+ }, 'cli-version');
31
+ expect(utils_1.exitWithError).toHaveBeenCalledWith(`You use prefix-tags-with-filename, prefix-tags-with-info-prop, without-x-tag-groups together.\nPlease choose only one! \n\n`);
32
+ }));
33
+ it('should call exitWithError because passed all 2 options for tags', () => __awaiter(void 0, void 0, void 0, function* () {
34
+ yield join_1.handleJoin({
35
+ entrypoints: ['first.yaml', 'second.yaml'],
36
+ 'without-x-tag-groups': true,
37
+ 'prefix-tags-with-filename': true,
38
+ }, 'cli-version');
39
+ expect(utils_1.exitWithError).toHaveBeenCalledWith(`You use prefix-tags-with-filename, without-x-tag-groups together.\nPlease choose only one! \n\n`);
40
+ }));
41
+ });
@@ -1,7 +1,10 @@
1
- export declare function handleJoin(argv: {
1
+ declare type JoinArgv = {
2
2
  entrypoints: string[];
3
3
  lint?: boolean;
4
4
  'prefix-tags-with-info-prop'?: string;
5
5
  'prefix-tags-with-filename'?: boolean;
6
6
  'prefix-components-with-info-prop'?: string;
7
- }, packageVersion: string): Promise<void>;
7
+ 'without-x-tag-groups'?: boolean;
8
+ };
9
+ export declare function handleJoin(argv: JoinArgv, packageVersion: string): Promise<void>;
10
+ export {};
@@ -12,12 +12,15 @@ Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.handleJoin = void 0;
13
13
  const path = require("path");
14
14
  const colorette_1 = require("colorette");
15
+ const outdent_1 = require("outdent");
15
16
  const perf_hooks_1 = require("perf_hooks");
16
17
  const isEqual = require('lodash.isequal');
17
18
  const openapi_core_1 = require("@redocly/openapi-core");
18
19
  const utils_1 = require("../utils");
19
20
  const js_utils_1 = require("../js-utils");
20
21
  const COMPONENTS = 'components';
22
+ const Tags = 'tags';
23
+ const xTagGroups = 'x-tagGroups';
21
24
  let potentialConflictsTotal = 0;
22
25
  function handleJoin(argv, packageVersion) {
23
26
  return __awaiter(this, void 0, void 0, function* () {
@@ -25,6 +28,15 @@ function handleJoin(argv, packageVersion) {
25
28
  if (argv.entrypoints.length < 2) {
26
29
  return utils_1.exitWithError(`At least 2 entrypoints should be provided. \n\n`);
27
30
  }
31
+ const { 'prefix-components-with-info-prop': prefixComponentsWithInfoProp, 'prefix-tags-with-filename': prefixTagsWithFilename, 'prefix-tags-with-info-prop': prefixTagsWithInfoProp, 'without-x-tag-groups': withoutXTagGroups, } = argv;
32
+ const usedTagsOptions = [
33
+ prefixTagsWithFilename && 'prefix-tags-with-filename',
34
+ prefixTagsWithInfoProp && 'prefix-tags-with-info-prop',
35
+ withoutXTagGroups && 'without-x-tag-groups',
36
+ ].filter(Boolean);
37
+ if (usedTagsOptions.length > 1) {
38
+ return utils_1.exitWithError(`You use ${colorette_1.yellow(usedTagsOptions.join(', '))} together.\nPlease choose only one! \n\n`);
39
+ }
28
40
  const config = yield openapi_core_1.loadConfig();
29
41
  const entrypoints = yield utils_1.getFallbackEntryPointsOrExit(argv.entrypoints, config);
30
42
  const externalRefResolver = new openapi_core_1.BaseResolver(config.resolve);
@@ -67,14 +79,8 @@ function handleJoin(argv, packageVersion) {
67
79
  tags: {},
68
80
  paths: {},
69
81
  components: {},
70
- xWebhooks: {}
82
+ xWebhooks: {},
71
83
  };
72
- const prefixComponentsWithInfoProp = argv['prefix-components-with-info-prop'];
73
- const prefixTagsWithFilename = argv['prefix-tags-with-filename'];
74
- const prefixTagsWithInfoProp = argv['prefix-tags-with-info-prop'];
75
- if (prefixTagsWithFilename && prefixTagsWithInfoProp) {
76
- return utils_1.exitWithError(`You used ${colorette_1.yellow('prefix-tags-with-filename')} and ${colorette_1.yellow('prefix-tags-with-info-prop')} that do not go together.\nPlease choose only one! \n\n`);
77
- }
78
84
  addInfoSectionAndSpecVersion(documents, prefixComponentsWithInfoProp);
79
85
  for (const document of documents) {
80
86
  const openapi = document.parsed;
@@ -100,52 +106,78 @@ function handleJoin(argv, packageVersion) {
100
106
  replace$Refs(openapi, componentsPrefix);
101
107
  }
102
108
  }
103
- iteratePotentialConflicts(potentialConflicts);
109
+ iteratePotentialConflicts(potentialConflicts, withoutXTagGroups);
104
110
  const specFilename = 'openapi.yaml';
105
111
  const noRefs = true;
106
- if (!potentialConflictsTotal) {
107
- utils_1.writeYaml(joinedDef, specFilename, noRefs);
112
+ if (potentialConflictsTotal) {
113
+ return utils_1.exitWithError(`Please fix conflicts before running ${colorette_1.yellow('join')}.`);
108
114
  }
115
+ utils_1.writeYaml(joinedDef, specFilename, noRefs);
109
116
  utils_1.printExecutionTime('join', startedAt, specFilename);
110
- function populateTags({ entrypoint, entrypointFilename, tags, potentialConflicts, tagsPrefix, componentsPrefix }) {
111
- const xTagGroups = 'x-tagGroups';
112
- const Tags = 'tags';
117
+ function populateTags({ entrypoint, entrypointFilename, tags, potentialConflicts, tagsPrefix, componentsPrefix, }) {
113
118
  if (!joinedDef.hasOwnProperty(Tags)) {
114
119
  joinedDef[Tags] = [];
115
120
  }
116
- if (!joinedDef.hasOwnProperty(xTagGroups)) {
117
- joinedDef[xTagGroups] = [];
118
- }
119
121
  if (!potentialConflicts.tags.hasOwnProperty('all')) {
120
122
  potentialConflicts.tags['all'] = {};
121
123
  }
122
- if (!joinedDef[xTagGroups].some((g) => g.name === entrypointFilename)) {
123
- joinedDef[xTagGroups].push({ name: entrypointFilename, tags: [] });
124
- }
125
- const indexGroup = joinedDef[xTagGroups].findIndex((item) => item.name === entrypointFilename);
126
- if (!joinedDef[xTagGroups][indexGroup].hasOwnProperty(Tags)) {
127
- joinedDef[xTagGroups][indexGroup][Tags] = [];
124
+ if (withoutXTagGroups && !potentialConflicts.tags.hasOwnProperty('description')) {
125
+ potentialConflicts.tags['description'] = {};
128
126
  }
129
127
  for (const tag of tags) {
130
128
  const entrypointTagName = addPrefix(tag.name, tagsPrefix);
131
129
  if (tag.description) {
132
130
  tag.description = addComponentsPrefix(tag.description, componentsPrefix);
133
131
  }
134
- if (!joinedDef.tags.find((t) => t.name === entrypointTagName)) {
132
+ const tagDuplicate = joinedDef.tags.find((t) => t.name === entrypointTagName);
133
+ if (tagDuplicate && withoutXTagGroups) {
134
+ // If tag already exist and `without-x-tag-groups` option;
135
+ // check if description are different for potential conflicts warning;
136
+ const isTagDescriptionNotEqual = tag.hasOwnProperty('description') && tagDuplicate.description !== tag.description;
137
+ potentialConflicts.tags.description[entrypointTagName].push(...(isTagDescriptionNotEqual ? [entrypoint] : []));
138
+ }
139
+ else {
140
+ // Instead add tag to joinedDef;
135
141
  tag['x-displayName'] = tag['x-displayName'] || tag.name;
136
142
  tag.name = entrypointTagName;
137
143
  joinedDef.tags.push(tag);
144
+ if (withoutXTagGroups) {
145
+ potentialConflicts.tags.description[entrypointTagName] = [entrypoint];
146
+ }
138
147
  }
139
- if (!joinedDef[xTagGroups][indexGroup][Tags].find((t) => t === entrypointTagName)) {
140
- joinedDef[xTagGroups][indexGroup][Tags].push(entrypointTagName);
148
+ if (!withoutXTagGroups) {
149
+ createXTagGroups(entrypointFilename);
150
+ populateXTagGroups(entrypointTagName, getIndexGroup(entrypointFilename));
141
151
  }
142
- const doesEntrypointExist = !potentialConflicts.tags.all[entrypointTagName] || (potentialConflicts.tags.all[entrypointTagName] &&
143
- !potentialConflicts.tags.all[entrypointTagName].includes(entrypoint));
152
+ const doesEntrypointExist = !potentialConflicts.tags.all[entrypointTagName] ||
153
+ (potentialConflicts.tags.all[entrypointTagName] &&
154
+ !potentialConflicts.tags.all[entrypointTagName].includes(entrypoint));
144
155
  potentialConflicts.tags.all[entrypointTagName] = [
145
- ...(potentialConflicts.tags.all[entrypointTagName] || []), ...(doesEntrypointExist ? [entrypoint] : [])
156
+ ...(potentialConflicts.tags.all[entrypointTagName] || []),
157
+ ...(!withoutXTagGroups && doesEntrypointExist ? [entrypoint] : []),
146
158
  ];
147
159
  }
148
160
  }
161
+ function getIndexGroup(entrypointFilename) {
162
+ return joinedDef[xTagGroups].findIndex((item) => item.name === entrypointFilename);
163
+ }
164
+ function createXTagGroups(entrypointFilename) {
165
+ if (!joinedDef.hasOwnProperty(xTagGroups)) {
166
+ joinedDef[xTagGroups] = [];
167
+ }
168
+ if (!joinedDef[xTagGroups].some((g) => g.name === entrypointFilename)) {
169
+ joinedDef[xTagGroups].push({ name: entrypointFilename, tags: [] });
170
+ }
171
+ const indexGroup = getIndexGroup(entrypointFilename);
172
+ if (!joinedDef[xTagGroups][indexGroup].hasOwnProperty(Tags)) {
173
+ joinedDef[xTagGroups][indexGroup][Tags] = [];
174
+ }
175
+ }
176
+ function populateXTagGroups(entrypointTagName, indexGroup) {
177
+ if (!joinedDef[xTagGroups][indexGroup][Tags].find((t) => t.name === entrypointTagName)) {
178
+ joinedDef[xTagGroups][indexGroup][Tags].push(entrypointTagName);
179
+ }
180
+ }
149
181
  function collectServers(openapi) {
150
182
  const { servers } = openapi;
151
183
  if (servers) {
@@ -162,8 +194,7 @@ function handleJoin(argv, packageVersion) {
162
194
  function collectInfoDescriptions(openapi, { entrypointFilename, componentsPrefix }) {
163
195
  const { info } = openapi;
164
196
  if (info === null || info === void 0 ? void 0 : info.description) {
165
- const xTagGroups = 'x-tagGroups';
166
- const groupIndex = joinedDef[xTagGroups] ? joinedDef[xTagGroups].findIndex((item) => item.name === entrypointFilename) : -1;
197
+ const groupIndex = joinedDef[xTagGroups] ? getIndexGroup(entrypointFilename) : -1;
167
198
  if (joinedDef.hasOwnProperty(xTagGroups) &&
168
199
  groupIndex !== -1 &&
169
200
  joinedDef[xTagGroups][groupIndex]['tags'] &&
@@ -306,7 +337,7 @@ function validateComponentsDifference(files) {
306
337
  }
307
338
  return isDiffer;
308
339
  }
309
- function iteratePotentialConflicts(potentialConflicts) {
340
+ function iteratePotentialConflicts(potentialConflicts, withoutXTagGroups) {
310
341
  for (const group of Object.keys(potentialConflicts)) {
311
342
  for (const [key, value] of Object.entries(potentialConflicts[group])) {
312
343
  const conflicts = filterConflicts(value);
@@ -321,20 +352,31 @@ function iteratePotentialConflicts(potentialConflicts) {
321
352
  }
322
353
  }
323
354
  else {
324
- showConflicts(colorette_1.green(group) + ' => ' + key, conflicts);
325
- potentialConflictsTotal += conflicts.length;
355
+ if (withoutXTagGroups && group === 'tags') {
356
+ duplicateTagDescriptionWarning(conflicts);
357
+ }
358
+ else {
359
+ potentialConflictsTotal += conflicts.length;
360
+ showConflicts(colorette_1.green(group) + ' => ' + key, conflicts);
361
+ }
362
+ }
363
+ if (group === 'tags' && !withoutXTagGroups) {
364
+ prefixTagSuggestion(conflicts.length);
326
365
  }
327
- prefixTagSuggestion(group, conflicts.length);
328
366
  }
329
367
  }
330
368
  }
331
369
  }
332
- function prefixTagSuggestion(group, conflictsLength) {
333
- if (group === 'tags') {
334
- process.stderr.write(colorette_1.green(`
335
- ${conflictsLength} conflict(s) on tags.
336
- Suggestion: please use ${colorette_1.blue('prefix-tags-with-filename')} or ${colorette_1.blue('prefix-tags-with-info-prop')} to prevent naming conflicts. \n\n`));
337
- }
370
+ function duplicateTagDescriptionWarning(conflicts) {
371
+ const tagsKeys = conflicts.map(([tagName]) => `\`${tagName}\``);
372
+ const joinString = colorette_1.yellow(', ');
373
+ process.stderr.write(colorette_1.yellow(`\nwarning: ${tagsKeys.length} conflict(s) on the ${colorette_1.red(tagsKeys.join(joinString))} tags description.\n`));
374
+ }
375
+ function prefixTagSuggestion(conflictsLength) {
376
+ process.stderr.write(colorette_1.green(outdent_1.outdent `\n
377
+ ${conflictsLength} conflict(s) on tags.
378
+ Suggestion: please use ${colorette_1.blue('prefix-tags-with-filename')}, ${colorette_1.blue('prefix-tags-with-info-prop')} or ${colorette_1.blue('without-x-tag-groups')} to prevent naming conflicts.\n\n
379
+ `));
338
380
  }
339
381
  function showConflicts(key, conflicts) {
340
382
  for (const [path, files] of conflicts) {
package/lib/index.js CHANGED
@@ -76,6 +76,10 @@ yargs
76
76
  requiresArg: true,
77
77
  type: 'string',
78
78
  },
79
+ 'without-x-tag-groups': {
80
+ description: 'Skip automated x-tagGroups creation',
81
+ type: 'boolean'
82
+ }
79
83
  }), (argv) => {
80
84
  join_1.handleJoin(argv, version);
81
85
  })
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@redocly/cli",
3
- "version": "1.0.0-beta.100",
3
+ "version": "1.0.0-beta.101",
4
4
  "description": "",
5
5
  "license": "MIT",
6
6
  "bin": {
@@ -35,7 +35,7 @@
35
35
  "Andriy Leliv <andriy@redoc.ly> (https://redoc.ly/)"
36
36
  ],
37
37
  "dependencies": {
38
- "@redocly/openapi-core": "1.0.0-beta.100",
38
+ "@redocly/openapi-core": "1.0.0-beta.101",
39
39
  "assert-node-version": "^1.0.3",
40
40
  "chokidar": "^3.5.1",
41
41
  "colorette": "^1.2.0",
@@ -9,3 +9,4 @@ export const printUnusedWarnings = jest.fn();
9
9
  export const printLintTotals = jest.fn();
10
10
  export const getOutputFileName = jest.fn(() => ({ outputFile: 'test.yaml', ext: 'yaml' }));
11
11
  export const handleError = jest.fn();
12
+ export const exitWithError = jest.fn();
@@ -0,0 +1,47 @@
1
+ import { handleJoin } from '../../commands/join';
2
+ import { exitWithError } from '../../utils';
3
+ import { yellow } from 'colorette';
4
+
5
+ jest.mock('../../utils');
6
+ jest.mock('colorette');
7
+
8
+ describe('handleJoin fails', () => {
9
+ const colloreteYellowMock = yellow as jest.Mock<any, any>;
10
+ colloreteYellowMock.mockImplementation((string: string) => string);
11
+
12
+ it('should call exitWithError because only one entrypoint', async () => {
13
+ await handleJoin({ entrypoints: ['first.yaml'] }, 'cli-version');
14
+ expect(exitWithError).toHaveBeenCalledWith(`At least 2 entrypoints should be provided. \n\n`);
15
+ });
16
+
17
+ it('should call exitWithError because passed all 3 options for tags', async () => {
18
+ await handleJoin(
19
+ {
20
+ entrypoints: ['first.yaml', 'second.yaml'],
21
+ 'prefix-tags-with-info-prop': 'something',
22
+ 'without-x-tag-groups': true,
23
+ 'prefix-tags-with-filename': true,
24
+ },
25
+ 'cli-version',
26
+ );
27
+
28
+ expect(exitWithError).toHaveBeenCalledWith(
29
+ `You use prefix-tags-with-filename, prefix-tags-with-info-prop, without-x-tag-groups together.\nPlease choose only one! \n\n`,
30
+ );
31
+ });
32
+
33
+ it('should call exitWithError because passed all 2 options for tags', async () => {
34
+ await handleJoin(
35
+ {
36
+ entrypoints: ['first.yaml', 'second.yaml'],
37
+ 'without-x-tag-groups': true,
38
+ 'prefix-tags-with-filename': true,
39
+ },
40
+ 'cli-version',
41
+ );
42
+
43
+ expect(exitWithError).toHaveBeenCalledWith(
44
+ `You use prefix-tags-with-filename, without-x-tag-groups together.\nPlease choose only one! \n\n`,
45
+ );
46
+ });
47
+ });
@@ -1,5 +1,6 @@
1
1
  import * as path from 'path';
2
2
  import { red, blue, yellow, green } from 'colorette';
3
+ import { outdent } from 'outdent';
3
4
  import { performance } from 'perf_hooks';
4
5
  const isEqual = require('lodash.isequal');
5
6
  import {
@@ -29,29 +30,54 @@ import {
29
30
  import { isObject, isString } from '../js-utils';
30
31
 
31
32
  const COMPONENTS = 'components';
33
+ const Tags = 'tags';
34
+ const xTagGroups = 'x-tagGroups';
32
35
  let potentialConflictsTotal = 0;
33
36
 
34
37
  type JoinDocumentContext = {
35
- entrypoint: string,
36
- entrypointFilename: string,
37
- tags: Oas3Tag[],
38
- potentialConflicts: any,
39
- tagsPrefix: string,
40
- componentsPrefix: string | undefined
41
- }
42
-
43
- export async function handleJoin (argv: {
44
- entrypoints: string[],
45
- lint?: boolean,
46
- 'prefix-tags-with-info-prop'?: string,
47
- 'prefix-tags-with-filename'?: boolean,
48
- 'prefix-components-with-info-prop'?: string
49
- },
50
- packageVersion: string
51
- ) {
38
+ entrypoint: string;
39
+ entrypointFilename: string;
40
+ tags: Oas3Tag[];
41
+ potentialConflicts: any;
42
+ tagsPrefix: string;
43
+ componentsPrefix: string | undefined;
44
+ };
45
+
46
+ type JoinArgv = {
47
+ entrypoints: string[];
48
+ lint?: boolean;
49
+ 'prefix-tags-with-info-prop'?: string;
50
+ 'prefix-tags-with-filename'?: boolean;
51
+ 'prefix-components-with-info-prop'?: string;
52
+ 'without-x-tag-groups'?: boolean;
53
+ };
54
+
55
+
56
+ export async function handleJoin(argv: JoinArgv, packageVersion: string) {
52
57
  const startedAt = performance.now();
53
- if (argv.entrypoints.length < 2) { return exitWithError(`At least 2 entrypoints should be provided. \n\n`); }
58
+ if (argv.entrypoints.length < 2) {
59
+ return exitWithError(`At least 2 entrypoints should be provided. \n\n`);
60
+ }
61
+
62
+ const {
63
+ 'prefix-components-with-info-prop': prefixComponentsWithInfoProp,
64
+ 'prefix-tags-with-filename': prefixTagsWithFilename,
65
+ 'prefix-tags-with-info-prop': prefixTagsWithInfoProp,
66
+ 'without-x-tag-groups': withoutXTagGroups,
67
+ } = argv;
54
68
 
69
+ const usedTagsOptions = [
70
+ prefixTagsWithFilename && 'prefix-tags-with-filename',
71
+ prefixTagsWithInfoProp && 'prefix-tags-with-info-prop',
72
+ withoutXTagGroups && 'without-x-tag-groups',
73
+ ].filter(Boolean);
74
+
75
+ if (usedTagsOptions.length > 1) {
76
+ return exitWithError(
77
+ `You use ${yellow(usedTagsOptions.join(', '))} together.\nPlease choose only one! \n\n`,
78
+ );
79
+ }
80
+
55
81
  const config: Config = await loadConfig();
56
82
  const entrypoints = await getFallbackEntryPointsOrExit(argv.entrypoints, config);
57
83
  const externalRefResolver = new BaseResolver(config.resolve);
@@ -71,7 +97,7 @@ packageVersion: string
71
97
  }))
72
98
  );
73
99
 
74
- for (const { problems, bundle: document } of (bundleResults as any)) {
100
+ for (const { problems, bundle: document } of bundleResults as any) {
75
101
  const fileTotals = getTotals(problems);
76
102
  if (fileTotals.errors) {
77
103
  formatProblems(problems, {
@@ -104,18 +130,9 @@ packageVersion: string
104
130
  tags: {},
105
131
  paths: {},
106
132
  components: {},
107
- xWebhooks: {}
133
+ xWebhooks: {},
108
134
  };
109
135
 
110
- const prefixComponentsWithInfoProp = argv['prefix-components-with-info-prop'];
111
- const prefixTagsWithFilename = argv['prefix-tags-with-filename'];
112
- const prefixTagsWithInfoProp = argv['prefix-tags-with-info-prop'];
113
- if (prefixTagsWithFilename && prefixTagsWithInfoProp) {
114
- return exitWithError(
115
- `You used ${yellow('prefix-tags-with-filename')} and ${yellow('prefix-tags-with-info-prop')} that do not go together.\nPlease choose only one! \n\n`
116
- );
117
- }
118
-
119
136
  addInfoSectionAndSpecVersion(documents, prefixComponentsWithInfoProp);
120
137
 
121
138
  for (const document of documents) {
@@ -141,10 +158,15 @@ packageVersion: string
141
158
  if (componentsPrefix) { replace$Refs(openapi, componentsPrefix); }
142
159
  }
143
160
 
144
- iteratePotentialConflicts(potentialConflicts);
161
+ iteratePotentialConflicts(potentialConflicts, withoutXTagGroups);
145
162
  const specFilename = 'openapi.yaml';
146
163
  const noRefs = true;
147
- if (!potentialConflictsTotal) { writeYaml(joinedDef, specFilename, noRefs); }
164
+
165
+ if (potentialConflictsTotal) {
166
+ return exitWithError(`Please fix conflicts before running ${yellow('join')}.`);
167
+ }
168
+
169
+ writeYaml(joinedDef, specFilename, noRefs);
148
170
  printExecutionTime('join', startedAt, specFilename);
149
171
 
150
172
  function populateTags({
@@ -153,42 +175,87 @@ packageVersion: string
153
175
  tags,
154
176
  potentialConflicts,
155
177
  tagsPrefix,
156
- componentsPrefix
178
+ componentsPrefix,
157
179
  }: JoinDocumentContext) {
158
- const xTagGroups = 'x-tagGroups';
159
- const Tags = 'tags';
160
- if (!joinedDef.hasOwnProperty(Tags)) { joinedDef[Tags] = []; }
161
- if (!joinedDef.hasOwnProperty(xTagGroups)) { joinedDef[xTagGroups] = []; }
162
- if (!potentialConflicts.tags.hasOwnProperty('all')) { potentialConflicts.tags['all'] = {}; }
163
- if (!joinedDef[xTagGroups].some((g: any) => g.name === entrypointFilename)) {
164
- joinedDef[xTagGroups].push({ name: entrypointFilename, tags: [] });
180
+ if (!joinedDef.hasOwnProperty(Tags)) {
181
+ joinedDef[Tags] = [];
182
+ }
183
+ if (!potentialConflicts.tags.hasOwnProperty('all')) {
184
+ potentialConflicts.tags['all'] = {};
185
+ }
186
+ if (withoutXTagGroups && !potentialConflicts.tags.hasOwnProperty('description')) {
187
+ potentialConflicts.tags['description'] = {};
165
188
  }
166
- const indexGroup = joinedDef[xTagGroups].findIndex((item: any) => item.name === entrypointFilename);
167
- if (!joinedDef[xTagGroups][indexGroup].hasOwnProperty(Tags)) { joinedDef[xTagGroups][indexGroup][Tags] = []; }
168
189
  for (const tag of tags) {
169
190
  const entrypointTagName = addPrefix(tag.name, tagsPrefix);
170
191
  if (tag.description) {
171
192
  tag.description = addComponentsPrefix(tag.description, componentsPrefix!);
172
193
  }
173
- if (!joinedDef.tags.find((t: any) => t.name === entrypointTagName)) {
194
+
195
+ const tagDuplicate = joinedDef.tags.find((t: Oas3Tag) => t.name === entrypointTagName);
196
+
197
+ if (tagDuplicate && withoutXTagGroups) {
198
+ // If tag already exist and `without-x-tag-groups` option;
199
+ // check if description are different for potential conflicts warning;
200
+ const isTagDescriptionNotEqual =
201
+ tag.hasOwnProperty('description') && tagDuplicate.description !== tag.description;
202
+
203
+ potentialConflicts.tags.description[entrypointTagName].push(
204
+ ...(isTagDescriptionNotEqual ? [entrypoint] : []),
205
+ );
206
+ } else {
207
+ // Instead add tag to joinedDef;
174
208
  tag['x-displayName'] = tag['x-displayName'] || tag.name;
175
209
  tag.name = entrypointTagName;
176
210
  joinedDef.tags.push(tag);
211
+
212
+ if (withoutXTagGroups) {
213
+ potentialConflicts.tags.description[entrypointTagName] = [entrypoint];
214
+ }
177
215
  }
178
- if (!joinedDef[xTagGroups][indexGroup][Tags].find((t: any) => t === entrypointTagName)) {
179
- joinedDef[xTagGroups][indexGroup][Tags].push(entrypointTagName);
216
+
217
+ if (!withoutXTagGroups) {
218
+ createXTagGroups(entrypointFilename);
219
+ populateXTagGroups(entrypointTagName, getIndexGroup(entrypointFilename));
180
220
  }
181
221
 
182
- const doesEntrypointExist = !potentialConflicts.tags.all[entrypointTagName] || (
183
- potentialConflicts.tags.all[entrypointTagName] &&
184
- !potentialConflicts.tags.all[entrypointTagName].includes(entrypoint)
185
- )
222
+ const doesEntrypointExist =
223
+ !potentialConflicts.tags.all[entrypointTagName] ||
224
+ (potentialConflicts.tags.all[entrypointTagName] &&
225
+ !potentialConflicts.tags.all[entrypointTagName].includes(entrypoint));
186
226
  potentialConflicts.tags.all[entrypointTagName] = [
187
- ...(potentialConflicts.tags.all[entrypointTagName] || []), ...(doesEntrypointExist ? [entrypoint] : [])
227
+ ...(potentialConflicts.tags.all[entrypointTagName] || []),
228
+ ...(!withoutXTagGroups && doesEntrypointExist ? [entrypoint] : []),
188
229
  ];
189
230
  }
190
231
  }
191
232
 
233
+ function getIndexGroup(entrypointFilename: string): number {
234
+ return joinedDef[xTagGroups].findIndex((item: any) => item.name === entrypointFilename);
235
+ }
236
+
237
+ function createXTagGroups(entrypointFilename: string) {
238
+ if (!joinedDef.hasOwnProperty(xTagGroups)) {
239
+ joinedDef[xTagGroups] = [];
240
+ }
241
+
242
+ if (!joinedDef[xTagGroups].some((g: any) => g.name === entrypointFilename)) {
243
+ joinedDef[xTagGroups].push({ name: entrypointFilename, tags: [] });
244
+ }
245
+
246
+ const indexGroup = getIndexGroup(entrypointFilename);
247
+
248
+ if (!joinedDef[xTagGroups][indexGroup].hasOwnProperty(Tags)) {
249
+ joinedDef[xTagGroups][indexGroup][Tags] = [];
250
+ }
251
+ }
252
+
253
+ function populateXTagGroups(entrypointTagName: string, indexGroup: number) {
254
+ if (!joinedDef[xTagGroups][indexGroup][Tags].find((t: Oas3Tag) => t.name === entrypointTagName)) {
255
+ joinedDef[xTagGroups][indexGroup][Tags].push(entrypointTagName);
256
+ }
257
+ }
258
+
192
259
  function collectServers(openapi: Oas3Definition) {
193
260
  const { servers } = openapi;
194
261
  if (servers) {
@@ -210,15 +277,17 @@ packageVersion: string
210
277
  ) {
211
278
  const { info } = openapi;
212
279
  if (info?.description) {
213
- const xTagGroups = 'x-tagGroups';
214
- const groupIndex = joinedDef[xTagGroups] ? joinedDef[xTagGroups].findIndex((item: any) => item.name === entrypointFilename) : -1;
280
+ const groupIndex = joinedDef[xTagGroups] ? getIndexGroup(entrypointFilename) : -1;
215
281
  if (
216
282
  joinedDef.hasOwnProperty(xTagGroups) &&
217
283
  groupIndex !== -1 &&
218
284
  joinedDef[xTagGroups][groupIndex]['tags'] &&
219
285
  joinedDef[xTagGroups][groupIndex]['tags'].length
220
286
  ) {
221
- joinedDef[xTagGroups][groupIndex]['description'] = addComponentsPrefix(info.description, componentsPrefix!);
287
+ joinedDef[xTagGroups][groupIndex]['description'] = addComponentsPrefix(
288
+ info.description,
289
+ componentsPrefix!,
290
+ );
222
291
  }
223
292
  }
224
293
  }
@@ -369,7 +438,7 @@ function validateComponentsDifference(files: any) {
369
438
  return isDiffer;
370
439
  }
371
440
 
372
- function iteratePotentialConflicts(potentialConflicts: any) {
441
+ function iteratePotentialConflicts(potentialConflicts: any, withoutXTagGroups?: boolean) {
373
442
  for (const group of Object.keys(potentialConflicts)) {
374
443
  for (const [key, value] of Object.entries(potentialConflicts[group])) {
375
444
  const conflicts = filterConflicts(value as object);
@@ -383,22 +452,45 @@ function iteratePotentialConflicts(potentialConflicts: any) {
383
452
  }
384
453
  }
385
454
  } else {
386
- showConflicts(green(group) +' => '+ key, conflicts);
387
- potentialConflictsTotal += conflicts.length;
455
+ if (withoutXTagGroups && group === 'tags') {
456
+ duplicateTagDescriptionWarning(conflicts);
457
+ } else {
458
+ potentialConflictsTotal += conflicts.length;
459
+ showConflicts(green(group) + ' => ' + key, conflicts);
460
+ }
461
+ }
462
+
463
+ if (group === 'tags' && !withoutXTagGroups) {
464
+ prefixTagSuggestion(conflicts.length);
388
465
  }
389
- prefixTagSuggestion(group, conflicts.length);
390
466
  }
391
467
  }
392
468
  }
393
469
  }
394
470
 
395
- function prefixTagSuggestion(group: string, conflictsLength: number) {
396
- if (group === 'tags') {
397
- process.stderr.write(green(`
398
- ${conflictsLength} conflict(s) on tags.
399
- Suggestion: please use ${blue('prefix-tags-with-filename')} or ${blue('prefix-tags-with-info-prop')} to prevent naming conflicts. \n\n`
400
- ));
401
- }
471
+ function duplicateTagDescriptionWarning(conflicts: [string, any][]) {
472
+ const tagsKeys = conflicts.map(([tagName]) => `\`${tagName}\``);
473
+ const joinString = yellow(', ');
474
+ process.stderr.write(
475
+ yellow(
476
+ `\nwarning: ${tagsKeys.length} conflict(s) on the ${red(
477
+ tagsKeys.join(joinString),
478
+ )} tags description.\n`,
479
+ ),
480
+ );
481
+ }
482
+
483
+ function prefixTagSuggestion(conflictsLength: number) {
484
+ process.stderr.write(
485
+ green(
486
+ outdent`\n
487
+ ${conflictsLength} conflict(s) on tags.
488
+ Suggestion: please use ${blue('prefix-tags-with-filename')}, ${blue(
489
+ 'prefix-tags-with-info-prop',
490
+ )} or ${blue('without-x-tag-groups')} to prevent naming conflicts.\n\n
491
+ `,
492
+ ),
493
+ );
402
494
  }
403
495
 
404
496
  function showConflicts(key: string, conflicts: any) {
@@ -484,5 +576,5 @@ function replace$Refs(obj: any, componentsPrefix: string) {
484
576
  }
485
577
  }
486
578
  }
487
- })
579
+ });
488
580
  }
package/src/index.ts CHANGED
@@ -83,6 +83,10 @@ yargs
83
83
  requiresArg: true,
84
84
  type: 'string',
85
85
  },
86
+ 'without-x-tag-groups': {
87
+ description: 'Skip automated x-tagGroups creation',
88
+ type: 'boolean'
89
+ }
86
90
  }),
87
91
  (argv) => {
88
92
  handleJoin(argv, version);
@@ -1 +1 @@
1
- {"program":{"fileNames":["../../node_modules/typescript/lib/lib.es5.d.ts","../../node_modules/typescript/lib/lib.es2015.d.ts","../../node_modules/typescript/lib/lib.es2016.d.ts","../../node_modules/typescript/lib/lib.es2017.d.ts","../../node_modules/typescript/lib/lib.es2018.d.ts","../../node_modules/typescript/lib/lib.es2019.d.ts","../../node_modules/typescript/lib/lib.es2020.d.ts","../../node_modules/typescript/lib/lib.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.es2020.bigint.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.esnext.intl.d.ts","../../node_modules/colorette/index.d.ts","../core/node_modules/@types/node/assert.d.ts","../core/node_modules/@types/node/globals.d.ts","../core/node_modules/@types/node/async_hooks.d.ts","../core/node_modules/@types/node/buffer.d.ts","../core/node_modules/@types/node/child_process.d.ts","../core/node_modules/@types/node/cluster.d.ts","../core/node_modules/@types/node/console.d.ts","../core/node_modules/@types/node/constants.d.ts","../core/node_modules/@types/node/crypto.d.ts","../core/node_modules/@types/node/dgram.d.ts","../core/node_modules/@types/node/dns.d.ts","../core/node_modules/@types/node/domain.d.ts","../core/node_modules/@types/node/events.d.ts","../core/node_modules/@types/node/fs.d.ts","../core/node_modules/@types/node/fs/promises.d.ts","../core/node_modules/@types/node/http.d.ts","../core/node_modules/@types/node/http2.d.ts","../core/node_modules/@types/node/https.d.ts","../core/node_modules/@types/node/inspector.d.ts","../core/node_modules/@types/node/module.d.ts","../core/node_modules/@types/node/net.d.ts","../core/node_modules/@types/node/os.d.ts","../core/node_modules/@types/node/path.d.ts","../core/node_modules/@types/node/perf_hooks.d.ts","../core/node_modules/@types/node/process.d.ts","../core/node_modules/@types/node/punycode.d.ts","../core/node_modules/@types/node/querystring.d.ts","../core/node_modules/@types/node/readline.d.ts","../core/node_modules/@types/node/repl.d.ts","../core/node_modules/@types/node/stream.d.ts","../core/node_modules/@types/node/string_decoder.d.ts","../core/node_modules/@types/node/timers.d.ts","../core/node_modules/@types/node/tls.d.ts","../core/node_modules/@types/node/trace_events.d.ts","../core/node_modules/@types/node/tty.d.ts","../core/node_modules/@types/node/url.d.ts","../core/node_modules/@types/node/util.d.ts","../core/node_modules/@types/node/v8.d.ts","../core/node_modules/@types/node/vm.d.ts","../core/node_modules/@types/node/wasi.d.ts","../core/node_modules/@types/node/worker_threads.d.ts","../core/node_modules/@types/node/zlib.d.ts","../core/node_modules/@types/node/globals.global.d.ts","../core/node_modules/@types/node/index.d.ts","../../node_modules/@types/minimatch/index.d.ts","../../node_modules/@types/glob/index.d.ts","../../node_modules/glob-promise/lib/index.d.ts","../core/lib/typings/openapi.d.ts","../../node_modules/yaml-ast-parser/dist/src/mark.d.ts","../../node_modules/yaml-ast-parser/dist/src/exception.d.ts","../../node_modules/yaml-ast-parser/dist/src/yamlAST.d.ts","../../node_modules/yaml-ast-parser/dist/src/loader.d.ts","../../node_modules/yaml-ast-parser/dist/src/dumper.d.ts","../../node_modules/yaml-ast-parser/dist/src/scalarInference.d.ts","../../node_modules/yaml-ast-parser/dist/src/index.d.ts","../core/lib/types/index.d.ts","../../node_modules/@types/js-yaml/index.d.ts","../core/lib/typings/swagger.d.ts","../core/lib/visitors.d.ts","../core/lib/oas-types.d.ts","../core/lib/config/types.d.ts","../core/lib/resolve.d.ts","../core/lib/ref-utils.d.ts","../core/lib/walk.d.ts","../core/lib/config/config.d.ts","../core/lib/config/rules.d.ts","../core/lib/config/builtIn.d.ts","../core/lib/config/load.d.ts","../core/lib/config/utils.d.ts","../core/lib/config/config-resolvers.d.ts","../core/lib/config/index.d.ts","../core/lib/js-yaml/index.d.ts","../core/lib/utils.d.ts","../core/lib/types/oas3_1.d.ts","../core/lib/types/oas3.d.ts","../core/lib/types/oas2.d.ts","../core/lib/types/redocly-yaml.d.ts","../core/lib/typings/common.d.ts","../core/lib/rules/other/stats.d.ts","../core/lib/redocly/registry-api-types.d.ts","../core/lib/redocly/registry-api.d.ts","../core/lib/redocly/redocly-client-types.d.ts","../core/lib/redocly/index.d.ts","../core/lib/format/codeframes.d.ts","../core/lib/format/format.d.ts","../core/lib/lint.d.ts","../core/lib/bundle.d.ts","../core/lib/index.d.ts","./src/types.ts","./src/utils.ts","./src/assert-node-version.ts","../../node_modules/@types/yargs-parser/index.d.ts","./node_modules/@types/yargs/index.d.ts","../../node_modules/anymatch/index.d.ts","../../node_modules/chokidar/types/index.d.ts","../../node_modules/handlebars/types/index.d.ts","../../node_modules/portfinder/lib/portfinder.d.ts","./src/commands/preview-docs/preview-server/server.ts","./src/commands/preview-docs/preview-server/preview-server.ts","./src/commands/preview-docs/index.ts","./src/commands/stats.ts","./src/js-utils.ts","./src/commands/split/types.ts","./src/commands/split/index.ts","./src/commands/join.ts","../../node_modules/form-data/index.d.ts","../../node_modules/@types/node-fetch/externals.d.ts","../../node_modules/@types/node-fetch/index.d.ts","./src/commands/login.ts","./src/commands/push.ts","./src/commands/lint.ts","./src/commands/bundle.ts","./src/index.ts","./src/__mocks__/fs.ts","./src/__mocks__/utils.ts","./src/__mocks__/@redocly/openapi-core.ts","./src/__tests__/utils.test.ts","./src/__tests__/commands/bundle.test.ts","./src/__tests__/commands/push-region.test.ts","./src/__tests__/commands/push.test.ts","./src/commands/split/__tests__/index.test.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/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-diff/build/cleanupSemantic.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/pretty-format/build/types.d.ts","../../node_modules/pretty-format/build/index.d.ts","../../node_modules/@types/jest/index.d.ts","../../node_modules/@types/js-levenshtein/index.d.ts","../../node_modules/@types/json-schema/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/lodash.isequal/index.d.ts","../../node_modules/@types/normalize-package-data/index.d.ts","../../node_modules/@types/pluralize/index.d.ts","../../node_modules/@types/prettier/index.d.ts","../../node_modules/@types/stack-utils/index.d.ts","../../node_modules/@types/node/index.d.ts"],"fileInfos":[{"version":"ac3a8c4040e183ce38da69d23b96939112457d1936198e6542672b7963cf0fce","affectsGlobalScope":true},"dc47c4fa66b9b9890cf076304de2a9c5201e94b740cffdf09f87296d877d71f6","7a387c58583dfca701b6c85e0adaf43fb17d590fb16d5b2dc0a2fbd89f35c467","8a12173c586e95f4433e0c6dc446bc88346be73ffe9ca6eec7aa63c8f3dca7f9","5f4e733ced4e129482ae2186aae29fde948ab7182844c3a5a51dd346182c7b06","e6b724280c694a9f588847f754198fb96c43d805f065c3a5b28bbc9594541c84","e21c071ca3e1b4a815d5f04a7475adcaeea5d64367e840dd0154096d705c3940",{"version":"cce43d02223f8049864f8568bed322c39424013275cd3bcc3f51492d8b546cb3","affectsGlobalScope":true},{"version":"43fb1d932e4966a39a41b464a12a81899d9ae5f2c829063f5571b6b87e6d2f9c","affectsGlobalScope":true},{"version":"cdccba9a388c2ee3fd6ad4018c640a471a6c060e96f1232062223063b0a5ac6a","affectsGlobalScope":true},{"version":"8dff1b4c2df638fcd976cbb0e636f23ab5968e836cd45084cc31d47d1ab19c49","affectsGlobalScope":true},{"version":"2bb4b3927299434052b37851a47bf5c39764f2ba88a888a107b32262e9292b7c","affectsGlobalScope":true},{"version":"810627a82ac06fb5166da5ada4159c4ec11978dfbb0805fe804c86406dab8357","affectsGlobalScope":true},{"version":"62d80405c46c3f4c527ee657ae9d43fda65a0bf582292429aea1e69144a522a6","affectsGlobalScope":true},{"version":"3013574108c36fd3aaca79764002b3717da09725a36a6fc02eac386593110f93","affectsGlobalScope":true},{"version":"8f4c9f651c8294a2eb1cbd12581fe25bfb901ab1d474bb93cd38c7e2f4be7a30","affectsGlobalScope":true},{"version":"3be5a1453daa63e031d266bf342f3943603873d890ab8b9ada95e22389389006","affectsGlobalScope":true},{"version":"17bb1fc99591b00515502d264fa55dc8370c45c5298f4a5c2083557dccba5a2a","affectsGlobalScope":true},{"version":"7ce9f0bde3307ca1f944119f6365f2d776d281a393b576a18a2f2893a2d75c98","affectsGlobalScope":true},{"version":"6a6b173e739a6a99629a8594bfb294cc7329bfb7b227f12e1f7c11bc163b8577","affectsGlobalScope":true},{"version":"12a310447c5d23c7d0d5ca2af606e3bd08afda69100166730ab92c62999ebb9d","affectsGlobalScope":true},{"version":"b0124885ef82641903d232172577f2ceb5d3e60aed4da1153bab4221e1f6dd4e","affectsGlobalScope":true},{"version":"0eb85d6c590b0d577919a79e0084fa1744c1beba6fd0d4e951432fa1ede5510a","affectsGlobalScope":true},{"version":"da233fc1c8a377ba9e0bed690a73c290d843c2c3d23a7bd7ec5cd3d7d73ba1e0","affectsGlobalScope":true},{"version":"df9c8a72ca8b0ed62f5470b41208a0587f0f73f0a7db28e5a1272cf92537518e","affectsGlobalScope":true},{"version":"bb2d3fb05a1d2ffbca947cc7cbc95d23e1d053d6595391bd325deb265a18d36c","affectsGlobalScope":true},{"version":"c80df75850fea5caa2afe43b9949338ce4e2de086f91713e9af1a06f973872b8","affectsGlobalScope":true},{"version":"9d57b2b5d15838ed094aa9ff1299eecef40b190722eb619bac4616657a05f951","affectsGlobalScope":true},{"version":"6c51b5dd26a2c31dbf37f00cfc32b2aa6a92e19c995aefb5b97a3a64f1ac99de","affectsGlobalScope":true},{"version":"93544ca2f26a48716c1b6c5091842cad63129daac422dfa4bc52460465f22bb1","affectsGlobalScope":true},{"version":"2ad234885a4240522efccd77de6c7d99eecf9b4de0914adb9a35c0c22433f993","affectsGlobalScope":true},{"version":"60761e6ea886034af0f294f025a7199360ce4e2c8ba4ec6408bc049cf9b89799","affectsGlobalScope":true},{"version":"7435b75fdf3509622e79622dbe5091cf4b09688410ee2034e4fc17d0c99d0862","affectsGlobalScope":true},{"version":"e7e8e1d368290e9295ef18ca23f405cf40d5456fa9f20db6373a61ca45f75f40","affectsGlobalScope":true},{"version":"faf0221ae0465363c842ce6aa8a0cbda5d9296940a8e26c86e04cc4081eea21e","affectsGlobalScope":true},{"version":"06393d13ea207a1bfe08ec8d7be562549c5e2da8983f2ee074e00002629d1871","affectsGlobalScope":true},{"version":"9f1817f7c3f02f6d56e0f403b927e90bb133f371dcebc36fa7d6d208ef6899da","affectsGlobalScope":true},{"version":"506b80b9951c9381dc5f11897b31fca5e2a65731d96ddefa19687fbc26b23c6e","affectsGlobalScope":true},"a456dd94a596de621bd25cf3c91278101ea62782c3ac4435aef9190a2336ddde","4c2c4f53e8eedd970f8afa369d7371544fb6231bf95e659f8602e09abe74d5a5",{"version":"51d9e2eaf087398ff58dd41c0bd2ab20ca78b4dc3691cd3c26d556747c3dab05","affectsGlobalScope":true},"c2b5085f47e41d6940bbc5b0d3bd7cc0037c752efb18aecd243c9cf83ad0c0b7","3143a5add0467b83150961ecd33773b561a1207aec727002aa1d70333068eb1b","9b2a8f604e7c0482a9061755f00b287cc99bd8718dc82d8207dd74c599b6dc43","d0fc76a91c828fbe3f0be5d683273634b7b101068333ceed975a8a9ac464137b",{"version":"1a048ff164b8d9609f5de3139d4e37f6e8a82af82087ac414b9208f52ef8aac7","affectsGlobalScope":true},"3111079f3cb5f2b9c812ca3f46161562bce5bfb355e915f46ed46c41714dc1c3","50ae84dc0183f9f69b4d0933e240fb76cc77fddb2ec223dd070d12420b6ccfa6","b32b6b16cb0bda68199582ad6f22242d07ee75fac9b1f28a98cd838afc5eea45","4441ee4119824bfaebc49308559edd7545978f9cb41a40f115074e1031dde75f",{"version":"60693a88462d0e97900123b5bf7c73e146ce0cc94da46a61fe6775b430d2ff05","affectsGlobalScope":true},{"version":"588c69eda58b9202676ec7ca11a72c3762819b46a0ed72462c769846153c447c","affectsGlobalScope":true},"cc829932ffaf5c49092f878bec18af1fa5d8591b45a45e2b7f757f793cb3b4ed","47db10fdc4e76c4f4598cf7c91ba6bfde6cf6d8082c51860fe751643bf359739","53d2c24a3cbc00a88ebaf8ab8e1b6e206bc3a6647d544f877241684ea3d484e3","ecee890ff04b70d8e8815fb753c20f24f95203426267a577823d375009c1ace7","0ce99c641ea20b0c0c09d093fc28f18f5ab31dc80033707a1ac3154399de2559","7dc9ed91e245cf0c4f8add7f6845d0cb08cceec4408ce3398c51e1f6dd7679ec","44e42ed6ec9c4451ebe89524e80ac8564e9dd0988c56e6c58f393c810730595d","d79fda68cbfb361c4ee9cd9ea169babb65887534d64017726cd01f54783d20a5","1606ea615c0a5ea9f5c1376a33e34c0e1112e8dee31a5b3b8a74ce781893aa6f","9fef9de633d01cb7f01f68195626a890ededd25cf96a1e785617d08c8668230d","4455c78d226d061b1203c7614c6c6eb5f4f9db5f00d44ff47d0112de8766fbc4",{"version":"ec369bb9d97c4dc09dd2a4093b7ca3ba69ad284831fccac8a1977785e9e38ce5","affectsGlobalScope":true},"4465a636f5f6e9665a90e30691862c9e0a3ac2edc0e66296704f10865e924f2a","9af781f03d44f5635ed7844be0ce370d9d595d4b4ec67cad88f0fac03255257e","f9fd4c3ef6de27fa0e256f4e75b61711c4be05a3399f7714621d3edc832e36b0","e49290b7a927995c0d7e6b2b9c8296284b68a9036d9966531de65185269258d7","c3689f70ce7563c2299f2dcb3c72efdf6f87ae510e7456fa6223c767d0ca99fc","874ca809b79276460011480a2829f4c8d4db29416dd411f71efbf8f497f0ac09","bb1e8c36fe44bf321d130de5c60e605ac0c76f5b7aa03f17f18ccfa38f922015","605c24042a348b033b30121cff64380eb5d6d82853c5608f1f94ef72385cf5c9","23a28f834a078986bbf58f4e3705956983ff81c3c2493f3db3e5f0e8a9507779","4febdf7f3ec92706c58e0b4e8159cd6de718284ef384260b07c9641c13fc70ce",{"version":"eabefc2999c1489cf870e0c85af908900462fa245822d9a4616780a1a129945d","affectsGlobalScope":true},"7335933d9f30dcfd2c4b6080a8b78e81912a7fcefb1dafccb67ca4cb4b3ac23d","a6bfe9de9adef749010c118104b071d14943802ff0614732b47ce4f1c3e383cd","4c3d0e10396646db4a1e917fb852077ee77ae62e512913bef9cccc2bb0f8bd0e","3b220849d58140dcc6718f5b52dcd29fdb79c45bc28f561cbd29eb1cac6cce13","0ee22fce41f7417a24c808d266e91b850629113c104713a35854393d55994beb","22d1b1d965baba05766613e2e6c753bb005d4386c448cafd72c309ba689e8c24",{"version":"2708349d5a11a5c2e5f3a0765259ebe7ee00cdcc8161cb9990cb4910328442a1","affectsGlobalScope":true},"79d679a1d56574cc5cef92be1f0e5e8fb4af62fb55933b236670a0e0a23c83f6","8841e2aa774b89bd23302dede20663306dc1b9902431ac64b24be8b8d0e3f649","fd326577c62145816fe1acc306c734c2396487f76719d3785d4e825b34540b33","ad7118e1b64e20fabb52ad24c16add91835d4fa79fa344e8260fc4a3a79a3a41","98ff615c968cfa7c9fd52d0b79180d71de471ddadc81dd47e764694ca887f1dd","8d1539367a9f5a03698f4c37111251eb76433ea8fcb5f1e546571b8513cac822","9ad71085f8ab35282a341995f85c6e06a19e6d5ab73b39f634b444ce8742a664","ee94d8f60c253d9994559ad325e9cb8a7af6bd36176884cb869ee5a40daa766c","606de01a4212a48518a219585f673504d3c0c26b361706006038a71bf8b9f42c","76de776e227ad01b703ce076b32177da31a765d5b5a681d5bb4c4e0f4876840f","aa4c984c8f2919742d06f305b1870bf180275cbe015490451a6374e6f6b9998a","46b9cdcd62e90f604876c143481ac7ff2c89cdfb902179bda0d8ee44c0695beb","f7376eb8232cc156bc6afff5d564a40ad2504b8e88a4543adf6f4e945d186474","686e548ae30250d62532c8cacb43fccc922b693408371bd3503563c4a0f28eed","07dba097a66bf3b0bb04497bc136dba51a9cdb94cd8ad663eab82f5f6f83c21e","07981dc93c563507c26821c74a49bbbe2352b310fe74f91599c33d90c4acb376","60c67218e451d0a4644389c5902d4ec99bd63572f94c3d41dd86a4367de0d80e","c8ad695329bb68238f54553349cb8774bc3966c8a119aa240c689f2535c803ca","f0433d6c3e0d3ea7d957535c338c82fdb0c10b2c6fa759ee323438747d006929","b5e4fa898ff7e7a88489f9b7b47294cf78d986ab96c7d25807ff3e5e9fec6465","8cae8c496b7cdd6881404d5c629357badb099229ccf7c6730da9c1ab78ec9559","ecba6db9ca957c821dab2e8ed44e45211a791aa14d7413bf4e58275968a00673","6df8cf3b5add85842da66e0fb16df4e33e29cb832be0dd067ed6b148ec709226","759c54bac5348f5c1376dda8d4cc283eb2b0356b898827206b811be769ff6c7b","df10a03e5141d8aa63a17e68833c51bfaaf94fbb0dd71c5dda47a22efb3821a7","191e80abbb0947ea4af8c03c4251ff6e572a8f405189739f32c31fbaaa421a05","9630421fdcc7c076b84ba338894e78ffc0d96a362d05303a0b719f8ef5811728","88dc0dcab75df96583b348f379c7aec6712561d17d8ce208d36ab492b23ae46d","ec3bc0a0573da655bab5c8f96c6e905b25e2fcf799996ea025eea985656e0bc4","c6d8058f53245666fe420e069fb8ca88286153c12d6accacc84edec2eb3694e2","fdb7f9800267358d093879ae8ebe6322fec83a7f3c1f9b53fc27f85af4cd8723","c2bff909cb7d9a3939b3dbb2b1e3ce0fec7b747c74b9c47648c42b40a0724fa3","de41964adcdb5316152314f126b999cd651719d90b9d7fca50f8461c256b4e2b","fbbedd7745fef1135414280adf758927576b94d0cadba64d5c7ec24cdbc9c37a","1f7d50dbb3ea1f13f7ef1c82e0d77017660da61daf75ba427de32f67f25ace0c","7d74698235b0646f1d0217fa509d2731a855b420137355347dcf463e72fcd479","bd3355eb75d5c515a96f5b930cf4adcf62b4e7105fc30aba24d976b83f31163e","6b9775a46498c8b2bb7c92dbbdd6ae0d17f2698c8c87e286ee8b8d4414231a9f","de964a6cafbc7909ec88f74393327f89fc3e4b309e90639f7102df4e0edb5e06","036c607f3926e7e7704c4c1a497bc130f3257523e22bf0c0748e311c50f284cb","d5531816f67bb2247ecd105ddfa30f3e399ed2cb5ebb40c3d7ad2922405b5fe1","704fcfe996ab3b59214f9283f7515890972a075742121f1d1bf44aad05cd966d","9b8453ae568d8af6690fabfbd855c19a775fe8fdf7fa576961963b7e5bab6443","e06be111acc4813d7322918330ea53c3d4b74886a89b0c496a64979561e040b8","007bd38bbfb1a1b4aec076d52d7c98d0e9e12c5716e7cf0d4ec1c9949794bf2d","1be7961694e69bcf6dde648a4f5f537fe197e1b2b9a48fd8c0e561c79416eb17","a9333528c51a010dc4b6d5fc90af50c3edc2a2e8beee1f46e52fbfb635301156","ba37366c716b76a402bddee0e3974ad55d69943aabdb25bd4602e5172f7a7c15","70e9a18da08294f75bf23e46c7d69e67634c0765d355887b9b41f0d959e1426e","99bbadcf4153b61d79a2616b377da8f42a16fcb41d2136f1f6c2cf070b084216","4fb0b7d532aa6fb850b6cd2f1ee4f00802d877b5c66a51903bc1fb0624126349","a7e430e32eaefba6b1ebf23a94a4562bfe7051cc83558d33ddc8ff342f3c18e9",{"version":"f3a68054f682f21cec1eb6bc37d3c4c7f73b7723c7256f8a1ccc75873024aaa6","affectsGlobalScope":true},"5b72d384b825756c53642e763bae92e03623950dc1b4c132938364cb0c5e577d","f2045729c599b3e083819ef5e2bf84c64e52877c1e4fa224eacc5f6892e13213","9aa9facdd19fa4ff59d22445655090446e92047c8d4fd37770176f5a39e0c23a","228fafe6eafe9c54d13eaed8d9302b281babe1d9415771958fedb89a11aaef1e","3a2adbe59d431ae55f84724a535014d07f55e417b95a4f852b5359b9af8578c8","f121f2b65b93d73dca9a0d8df21461c0506d8cb309fcfa7d3aa32d64757783c4","6afdb1ccecb27c9a02303b4fc3b8fcc1037d0c62c1746100dbd1751594369d15","0229beadeaa75ebc04fb2c1b1abdd6a39dcc3145fa19104a59d3feb26514244e","8eee2b7ea707957c02860ac6bca8bbd1d57247385a60230b4d2ee28b2e4bab82","736097ddbb2903bef918bb3b5811ef1c9c5656f2a73bd39b22a91b9cc2525e50","208bb742e0f201470da121bc73847c74b62cff4172f38ae5949ae77d6c9c6b71","3663d1b50f356656a314e5df169bb51cb9d5fd75905fa703f75db6bb32030568","3da9fb38176c01819f54378976aedb30d2bb68fbce52a91deda9c7d3e159850f","69e81e18bb59fc56cc81c65c28a0e2bb49164627a5643dfbdb349cdb3aea83c2","b5920ff9f287bbcb9172732b2a1ca55b8dacba8347fa5548eb989140cfcbfd9e","bd0dac35f879debc94a781110f617a66f555af80456d76a78d3fc3ef6c5c87ec","7c211d0fdaf457a25c8076ebe21e11feef8a7413ac24ae93502e94f766989e60","6bcd7d885b9c22c3b319fd7413d23fc97293d75c642e14c496b752af78726b87","cc1c12d2c83e15bb072c98a0bb29bba40a7d6fe8b252c64a6f30d488c0a72da5","ac32b9211f9657c2d92ab649ea55a65911a73206d61da868df58061c75e55cb4","83e3f698e40c319c3ee2a8e02f389c8ff5322c364b879b4b53ba3131a4b8d124","c982ec91d1713653202498476d3435fb497d8129aed637a270ea7283796aaab6","6ed11aa8b11a848cdbafec7d87bc97ad31387bbf3d8c768ec113ea608c1711c2","0d63d482b41627bee84a1964f53572f98f6e4f618da38c71bed676b5d0f7afe8","74ec27fa777819b9de52c1095bb9d7f8452af7f49ed65853eda9782bf4108c2b","573c0dec8be2f89b41ecfa6722fd67ed89ff1f5d64a2d7ef31c66233af913807","cc957354aa3c94c9961ebf46282cfde1e81d107fc5785a61f62c67f1dd3ac2eb","a46a2e69d12afe63876ec1e58d70e5dbee6d3e74132f4468f570c3d69f809f1c","93de1c6dab503f053efe8d304cb522bb3a89feab8c98f307a674a4fae04773e9","fc72135da24040641388fb5f2c2a7a99aa5b962c0fa125bd96fabeec63dd2e63","5426e62886b7be7806312d31a00e8f7dccd6fe63ba9bbefe99ee2eab29cc48a3","3ebae8c00411116a66fca65b08228ea0cf0b72724701f9b854442100aab55aba","8b06ac3faeacb8484d84ddb44571d8f410697f98d7bfa86c0fda60373a9f5215","7eb06594824ada538b1d8b48c3925a83e7db792f47a081a62cf3e5c4e23cf0ee","f5638f7c2f12a9a1a57b5c41b3c1ea7db3876c003bab68e6a57afd6bcc169af0","d8aab31ba8e618cc3eea10b0945de81cb93b7e8150a013a482332263b9305322","69da61a7b5093dac77fa3bec8be95dcf9a74c95a0e9161edb98bb24e30e439d2","561eca7a381b96d6ccac6e4061e6d2ae53f5bc44203f3fd9f5b26864c32ae6e9","62ea38627e3ebab429f7616812a9394d327c2bc271003dfba985de9b4137369f","b4439890c168d646357928431100daac5cbdee1d345a34e6bf6eca9f3abe22bc","5d72971a459517c44c1379dab9ed248e87a61ba0a1e0f25c9d67e1e640cd9a09","02d734976af36f4273d930bea88b3e62adf6b078cf120c1c63d49aa8d8427c5c",{"version":"516a426e3960379f310107635b8f3a7e8c307c6c665080b128039d9299ec4087","affectsGlobalScope":true},"21bb8dda75eb025927e9d62d8fa619e349ebc5ba0b8b9dddd8fdfc9ff058e2b8","f3e604694b624fa3f83f6684185452992088f5efb2cf136b62474aa106d6f1b6","675e702f2032766a91eeadee64f51014c64688525da99dccd8178f0c599f13a8","fe4a2042d087990ebfc7dc0142d5aaf5a152e4baea86b45f283f103ec1e871ea","d70c026dd2eeaa974f430ea229230a1897fdb897dc74659deebe2afd4feeb08f","187119ff4f9553676a884e296089e131e8cc01691c546273b1d0089c3533ce42","febf0b2de54781102b00f61653b21377390a048fbf5262718c91860d11ff34a6","ca59fe42b81228a317812e95a2e72ccc8c7f1911b5f0c2a032adf41a0161ec5d","9364c7566b0be2f7b70ff5285eb34686f83ccb01bda529b82d23b2a844653bfb","00baffbe8a2f2e4875367479489b5d43b5fc1429ecb4a4cc98cfc3009095f52a","ae9930989ed57478eb03b9b80ad3efa7a3eacdfeff0f78ecf7894c4963a64f93","3c92b6dfd43cc1c2485d9eba5ff0b74a19bb8725b692773ef1d66dac48cda4bd","3e59f00ab03c33717b3130066d4debb272da90eeded4935ff0604c2bc25a5cae","df996e25faa505f85aeb294d15ebe61b399cf1d1e49959cdfaf2cc0815c203f9",{"version":"f2eff8704452659641164876c1ef0df4174659ce7311b0665798ea3f556fa9ad","affectsGlobalScope":true},"6bb8d7433a29fbd33df8e9693f1788a273a9eb90b96c8f99c745678c7db623f1","6fa0008bf91a4cc9c8963bace4bba0bd6865cbfa29c3e3ccc461155660fb113a","8f7a2387ecc680872d09a6edbca1612d699f77ee5a5129944935c3798a613d04","1583b9baa41a4db2f2bd4fedfafbe791a986fd785749d5cae2ff5171344e9b4c","b0d10e46cfe3f6c476b69af02eaa38e4ccc7430221ce3109ae84bb9fb8282298"],"options":{"composite":true,"declaration":true,"module":1,"noImplicitAny":true,"noImplicitReturns":true,"noImplicitThis":true,"noUnusedLocals":true,"noUnusedParameters":true,"outDir":"./lib","rootDir":"./src","strictFunctionTypes":true,"strictNullChecks":true,"strictPropertyInitialization":true,"target":3},"fileIdsList":[[161],[161,162,163,164,165],[161,163],[52,53,83,84],[53,83],[168],[169],[175,177],[193],[181,183,184,185,186,187,188,189,190,191,192,193],[181,182,184,185,186,187,188,189,190,191,192,193],[182,183,184,185,186,187,188,189,190,191,192,193],[181,182,183,185,186,187,188,189,190,191,192,193],[181,182,183,184,186,187,188,189,190,191,192,193],[181,182,183,184,185,187,188,189,190,191,192,193],[181,182,183,184,185,186,188,189,190,191,192,193],[181,182,183,184,185,186,187,189,190,191,192,193],[181,182,183,184,185,186,187,188,190,191,192,193],[181,182,183,184,185,186,187,188,189,191,192,193],[181,182,183,184,185,186,187,188,189,190,192,193],[181,182,183,184,185,186,187,188,189,190,191,193],[181,182,183,184,185,186,187,188,189,190,191,192],[55,75,83,145,146],[52,53,133,199],[55,69,83],[85],[171,172],[171,172,173,174],[176],[88],[89,90,91,92,93],[90],[89],[131],[127,151],[127,148,149],[127,149],[129],[62,129],[39,53,63,127,128,129],[39,62,63,127,129,141],[39,63,127,128,129],[39,127,129],[39,127,129,134,138],[39,53,55,62,129,135,136,137],[53,55,81],[39,48,53,62,63,127,129,147,148],[39,62,127,142,143],[39,53,62,63,127,129,141,142],[127],[39,63,127,129],[127,128,130,132,139,140,143,144,148,149,150,151],[39,53,62,63,67,69,86,127,128],[95,98,99,101,103,110],[100],[100,101,104],[83,95,99,100,103],[100,104,105,106,107,108,109],[100,104],[99,104,127],[95,99,103],[94,103],[103],[87,95,97,98,99,101,102,103,110,111,112,113,114,115,116,117,118,122,123,124,125,126],[96],[95,101,103,110],[98],[100,120,121],[100,119],[87,101],[94,95,100],[87,97,117],[95],[87,96],[103,110,111],[87,95,97,102,103,112],[87,95,98,99,101,102],[40],[42],[43,48],[44,52,53,60,69],[44,45,52,60],[46,76],[47,48,53,61],[48,69],[49,50,52,60],[50],[51,52],[52],[52,53,54,69,75],[53,54],[55,60,69,75],[52,53,55,56,60,69,72,75],[55,57,69,72,75],[40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82],[52,58],[59,75],[50,52,60,69],[61],[62],[42,63],[64,74],[65],[66],[52,67],[67,68,76,78],[52,69],[70],[71],[60,69,72],[73],[60,74],[66,75],[76],[69,77],[78],[79],[52,54,69,75,78,80],[69,81]],"referencedMap":[[163,1],[166,2],[162,1],[164,3],[165,1],[85,4],[167,5],[169,6],[170,7],[178,8],[194,9],[182,10],[183,11],[181,12],[184,13],[185,14],[186,15],[187,16],[188,17],[189,18],[190,19],[191,20],[192,21],[193,22],[147,23],[134,24],[145,25],[86,26],[173,27],[175,28],[174,27],[177,29],[89,30],[94,31],[91,32],[93,32],[90,33],[132,34],[157,35],[158,36],[159,37],[156,38],[130,39],[151,40],[144,41],[150,42],[148,43],[139,44],[138,45],[137,46],[149,47],[160,48],[143,49],[142,50],[140,51],[152,52],[128,50],[129,53],[126,54],[106,55],[109,56],[104,57],[110,58],[107,59],[105,60],[100,61],[108,59],[123,62],[124,63],[127,64],[111,65],[125,66],[99,67],[122,68],[121,55],[120,69],[102,70],[101,71],[118,72],[115,73],[114,73],[113,73],[116,73],[97,74],[112,75],[98,76],[103,77],[40,78],[42,79],[43,80],[44,81],[45,82],[46,83],[47,84],[48,85],[49,86],[50,87],[51,88],[52,89],[53,90],[54,91],[55,92],[56,93],[57,94],[83,95],[58,96],[59,97],[60,98],[61,99],[62,100],[63,101],[64,102],[65,103],[66,104],[67,105],[68,106],[69,107],[70,108],[71,109],[72,110],[73,111],[74,112],[75,113],[76,114],[77,115],[78,116],[79,117],[80,118],[81,119]],"exportedModulesMap":[[163,1],[166,2],[162,1],[164,3],[165,1],[85,4],[167,5],[169,6],[170,7],[178,8],[194,9],[182,10],[183,11],[181,12],[184,13],[185,14],[186,15],[187,16],[188,17],[189,18],[190,19],[191,20],[192,21],[193,22],[147,23],[134,24],[145,25],[86,26],[173,27],[175,28],[174,27],[177,29],[89,30],[94,31],[91,32],[93,32],[90,33],[132,34],[157,35],[158,36],[159,37],[156,38],[130,39],[151,40],[144,41],[150,42],[148,43],[139,44],[138,45],[137,46],[149,47],[160,48],[143,49],[142,50],[140,51],[152,52],[128,50],[129,53],[126,54],[106,55],[109,56],[104,57],[110,58],[107,59],[105,60],[100,61],[108,59],[123,62],[124,63],[127,64],[111,65],[125,66],[99,67],[122,68],[121,55],[120,69],[102,70],[101,71],[118,72],[115,73],[114,73],[113,73],[116,73],[97,74],[112,75],[98,76],[103,77],[40,78],[42,79],[43,80],[44,81],[45,82],[46,83],[47,84],[48,85],[49,86],[50,87],[51,88],[52,89],[53,90],[54,91],[55,92],[56,93],[57,94],[83,95],[58,96],[59,97],[60,98],[61,99],[62,100],[63,101],[64,102],[65,103],[66,104],[67,105],[68,106],[69,107],[70,108],[71,109],[72,110],[73,111],[74,112],[75,113],[76,114],[77,115],[78,116],[79,117],[80,118],[81,119]],"semanticDiagnosticsPerFile":[163,161,166,162,164,165,85,167,168,169,170,178,179,96,180,194,182,183,181,184,185,186,187,188,189,190,191,192,193,84,146,147,195,196,197,198,131,133,134,39,145,86,135,171,173,175,174,172,136,177,176,9,8,2,10,11,12,13,14,15,16,17,3,4,21,18,19,20,22,23,24,5,25,26,27,28,6,29,30,31,32,7,37,33,34,35,36,1,38,92,89,94,91,88,93,90,132,155,153,154,157,158,159,156,130,151,144,150,148,139,138,137,149,160,143,142,140,152,141,128,129,126,106,109,104,110,107,105,100,108,123,124,127,111,125,99,122,121,119,120,102,101,118,95,115,114,113,116,117,87,97,112,98,103,40,42,43,44,45,46,47,48,49,50,51,52,53,54,41,82,55,56,57,83,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81]},"version":"4.3.3"}
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.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.es2020.bigint.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.esnext.intl.d.ts","../../node_modules/colorette/index.d.ts","../core/node_modules/@types/node/assert.d.ts","../core/node_modules/@types/node/globals.d.ts","../core/node_modules/@types/node/async_hooks.d.ts","../core/node_modules/@types/node/buffer.d.ts","../core/node_modules/@types/node/child_process.d.ts","../core/node_modules/@types/node/cluster.d.ts","../core/node_modules/@types/node/console.d.ts","../core/node_modules/@types/node/constants.d.ts","../core/node_modules/@types/node/crypto.d.ts","../core/node_modules/@types/node/dgram.d.ts","../core/node_modules/@types/node/dns.d.ts","../core/node_modules/@types/node/domain.d.ts","../core/node_modules/@types/node/events.d.ts","../core/node_modules/@types/node/fs.d.ts","../core/node_modules/@types/node/fs/promises.d.ts","../core/node_modules/@types/node/http.d.ts","../core/node_modules/@types/node/http2.d.ts","../core/node_modules/@types/node/https.d.ts","../core/node_modules/@types/node/inspector.d.ts","../core/node_modules/@types/node/module.d.ts","../core/node_modules/@types/node/net.d.ts","../core/node_modules/@types/node/os.d.ts","../core/node_modules/@types/node/path.d.ts","../core/node_modules/@types/node/perf_hooks.d.ts","../core/node_modules/@types/node/process.d.ts","../core/node_modules/@types/node/punycode.d.ts","../core/node_modules/@types/node/querystring.d.ts","../core/node_modules/@types/node/readline.d.ts","../core/node_modules/@types/node/repl.d.ts","../core/node_modules/@types/node/stream.d.ts","../core/node_modules/@types/node/string_decoder.d.ts","../core/node_modules/@types/node/timers.d.ts","../core/node_modules/@types/node/tls.d.ts","../core/node_modules/@types/node/trace_events.d.ts","../core/node_modules/@types/node/tty.d.ts","../core/node_modules/@types/node/url.d.ts","../core/node_modules/@types/node/util.d.ts","../core/node_modules/@types/node/v8.d.ts","../core/node_modules/@types/node/vm.d.ts","../core/node_modules/@types/node/wasi.d.ts","../core/node_modules/@types/node/worker_threads.d.ts","../core/node_modules/@types/node/zlib.d.ts","../core/node_modules/@types/node/globals.global.d.ts","../core/node_modules/@types/node/index.d.ts","../../node_modules/@types/minimatch/index.d.ts","../../node_modules/@types/glob/index.d.ts","../../node_modules/glob-promise/lib/index.d.ts","../core/lib/typings/openapi.d.ts","../../node_modules/yaml-ast-parser/dist/src/mark.d.ts","../../node_modules/yaml-ast-parser/dist/src/exception.d.ts","../../node_modules/yaml-ast-parser/dist/src/yamlAST.d.ts","../../node_modules/yaml-ast-parser/dist/src/loader.d.ts","../../node_modules/yaml-ast-parser/dist/src/dumper.d.ts","../../node_modules/yaml-ast-parser/dist/src/scalarInference.d.ts","../../node_modules/yaml-ast-parser/dist/src/index.d.ts","../core/lib/types/index.d.ts","../../node_modules/@types/js-yaml/index.d.ts","../core/lib/typings/swagger.d.ts","../core/lib/visitors.d.ts","../core/lib/oas-types.d.ts","../core/lib/config/types.d.ts","../core/lib/resolve.d.ts","../core/lib/ref-utils.d.ts","../core/lib/walk.d.ts","../core/lib/config/config.d.ts","../core/lib/config/rules.d.ts","../core/lib/config/builtIn.d.ts","../core/lib/config/load.d.ts","../core/lib/config/utils.d.ts","../core/lib/config/config-resolvers.d.ts","../core/lib/config/index.d.ts","../core/lib/js-yaml/index.d.ts","../core/lib/utils.d.ts","../core/lib/types/oas3_1.d.ts","../core/lib/types/oas3.d.ts","../core/lib/types/oas2.d.ts","../core/lib/types/redocly-yaml.d.ts","../core/lib/typings/common.d.ts","../core/lib/rules/other/stats.d.ts","../core/lib/redocly/registry-api-types.d.ts","../core/lib/redocly/registry-api.d.ts","../core/lib/redocly/redocly-client-types.d.ts","../core/lib/redocly/index.d.ts","../core/lib/format/codeframes.d.ts","../core/lib/format/format.d.ts","../core/lib/lint.d.ts","../core/lib/bundle.d.ts","../core/lib/index.d.ts","./src/types.ts","./src/utils.ts","./src/assert-node-version.ts","../../node_modules/@types/yargs-parser/index.d.ts","./node_modules/@types/yargs/index.d.ts","../../node_modules/anymatch/index.d.ts","../../node_modules/chokidar/types/index.d.ts","../../node_modules/handlebars/types/index.d.ts","../../node_modules/portfinder/lib/portfinder.d.ts","./src/commands/preview-docs/preview-server/server.ts","./src/commands/preview-docs/preview-server/preview-server.ts","./src/commands/preview-docs/index.ts","./src/commands/stats.ts","./src/js-utils.ts","./src/commands/split/types.ts","./src/commands/split/index.ts","../../node_modules/outdent/lib/index.d.ts","./src/commands/join.ts","../../node_modules/form-data/index.d.ts","../../node_modules/@types/node-fetch/externals.d.ts","../../node_modules/@types/node-fetch/index.d.ts","./src/commands/login.ts","./src/commands/push.ts","./src/commands/lint.ts","./src/commands/bundle.ts","./src/index.ts","./src/__mocks__/fs.ts","./src/__mocks__/utils.ts","./src/__mocks__/@redocly/openapi-core.ts","./src/__tests__/utils.test.ts","./src/__tests__/commands/bundle.test.ts","./src/__tests__/commands/join.test.ts","./src/__tests__/commands/push-region.test.ts","./src/__tests__/commands/push.test.ts","./src/commands/split/__tests__/index.test.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/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-diff/build/cleanupSemantic.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/pretty-format/build/types.d.ts","../../node_modules/pretty-format/build/index.d.ts","../../node_modules/@types/jest/index.d.ts","../../node_modules/@types/js-levenshtein/index.d.ts","../../node_modules/@types/json-schema/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/lodash.isequal/index.d.ts","../../node_modules/@types/normalize-package-data/index.d.ts","../../node_modules/@types/pluralize/index.d.ts","../../node_modules/@types/prettier/index.d.ts","../../node_modules/@types/stack-utils/index.d.ts","../../node_modules/@types/node/index.d.ts"],"fileInfos":[{"version":"ac3a8c4040e183ce38da69d23b96939112457d1936198e6542672b7963cf0fce","affectsGlobalScope":true},"dc47c4fa66b9b9890cf076304de2a9c5201e94b740cffdf09f87296d877d71f6","7a387c58583dfca701b6c85e0adaf43fb17d590fb16d5b2dc0a2fbd89f35c467","8a12173c586e95f4433e0c6dc446bc88346be73ffe9ca6eec7aa63c8f3dca7f9","5f4e733ced4e129482ae2186aae29fde948ab7182844c3a5a51dd346182c7b06","e6b724280c694a9f588847f754198fb96c43d805f065c3a5b28bbc9594541c84","e21c071ca3e1b4a815d5f04a7475adcaeea5d64367e840dd0154096d705c3940",{"version":"cce43d02223f8049864f8568bed322c39424013275cd3bcc3f51492d8b546cb3","affectsGlobalScope":true},{"version":"43fb1d932e4966a39a41b464a12a81899d9ae5f2c829063f5571b6b87e6d2f9c","affectsGlobalScope":true},{"version":"cdccba9a388c2ee3fd6ad4018c640a471a6c060e96f1232062223063b0a5ac6a","affectsGlobalScope":true},{"version":"8dff1b4c2df638fcd976cbb0e636f23ab5968e836cd45084cc31d47d1ab19c49","affectsGlobalScope":true},{"version":"2bb4b3927299434052b37851a47bf5c39764f2ba88a888a107b32262e9292b7c","affectsGlobalScope":true},{"version":"810627a82ac06fb5166da5ada4159c4ec11978dfbb0805fe804c86406dab8357","affectsGlobalScope":true},{"version":"62d80405c46c3f4c527ee657ae9d43fda65a0bf582292429aea1e69144a522a6","affectsGlobalScope":true},{"version":"3013574108c36fd3aaca79764002b3717da09725a36a6fc02eac386593110f93","affectsGlobalScope":true},{"version":"8f4c9f651c8294a2eb1cbd12581fe25bfb901ab1d474bb93cd38c7e2f4be7a30","affectsGlobalScope":true},{"version":"3be5a1453daa63e031d266bf342f3943603873d890ab8b9ada95e22389389006","affectsGlobalScope":true},{"version":"17bb1fc99591b00515502d264fa55dc8370c45c5298f4a5c2083557dccba5a2a","affectsGlobalScope":true},{"version":"7ce9f0bde3307ca1f944119f6365f2d776d281a393b576a18a2f2893a2d75c98","affectsGlobalScope":true},{"version":"6a6b173e739a6a99629a8594bfb294cc7329bfb7b227f12e1f7c11bc163b8577","affectsGlobalScope":true},{"version":"12a310447c5d23c7d0d5ca2af606e3bd08afda69100166730ab92c62999ebb9d","affectsGlobalScope":true},{"version":"b0124885ef82641903d232172577f2ceb5d3e60aed4da1153bab4221e1f6dd4e","affectsGlobalScope":true},{"version":"0eb85d6c590b0d577919a79e0084fa1744c1beba6fd0d4e951432fa1ede5510a","affectsGlobalScope":true},{"version":"da233fc1c8a377ba9e0bed690a73c290d843c2c3d23a7bd7ec5cd3d7d73ba1e0","affectsGlobalScope":true},{"version":"df9c8a72ca8b0ed62f5470b41208a0587f0f73f0a7db28e5a1272cf92537518e","affectsGlobalScope":true},{"version":"bb2d3fb05a1d2ffbca947cc7cbc95d23e1d053d6595391bd325deb265a18d36c","affectsGlobalScope":true},{"version":"c80df75850fea5caa2afe43b9949338ce4e2de086f91713e9af1a06f973872b8","affectsGlobalScope":true},{"version":"9d57b2b5d15838ed094aa9ff1299eecef40b190722eb619bac4616657a05f951","affectsGlobalScope":true},{"version":"6c51b5dd26a2c31dbf37f00cfc32b2aa6a92e19c995aefb5b97a3a64f1ac99de","affectsGlobalScope":true},{"version":"93544ca2f26a48716c1b6c5091842cad63129daac422dfa4bc52460465f22bb1","affectsGlobalScope":true},{"version":"2ad234885a4240522efccd77de6c7d99eecf9b4de0914adb9a35c0c22433f993","affectsGlobalScope":true},{"version":"60761e6ea886034af0f294f025a7199360ce4e2c8ba4ec6408bc049cf9b89799","affectsGlobalScope":true},{"version":"7435b75fdf3509622e79622dbe5091cf4b09688410ee2034e4fc17d0c99d0862","affectsGlobalScope":true},{"version":"e7e8e1d368290e9295ef18ca23f405cf40d5456fa9f20db6373a61ca45f75f40","affectsGlobalScope":true},{"version":"faf0221ae0465363c842ce6aa8a0cbda5d9296940a8e26c86e04cc4081eea21e","affectsGlobalScope":true},{"version":"06393d13ea207a1bfe08ec8d7be562549c5e2da8983f2ee074e00002629d1871","affectsGlobalScope":true},{"version":"9f1817f7c3f02f6d56e0f403b927e90bb133f371dcebc36fa7d6d208ef6899da","affectsGlobalScope":true},{"version":"506b80b9951c9381dc5f11897b31fca5e2a65731d96ddefa19687fbc26b23c6e","affectsGlobalScope":true},"a456dd94a596de621bd25cf3c91278101ea62782c3ac4435aef9190a2336ddde","4c2c4f53e8eedd970f8afa369d7371544fb6231bf95e659f8602e09abe74d5a5",{"version":"51d9e2eaf087398ff58dd41c0bd2ab20ca78b4dc3691cd3c26d556747c3dab05","affectsGlobalScope":true},"c2b5085f47e41d6940bbc5b0d3bd7cc0037c752efb18aecd243c9cf83ad0c0b7","3143a5add0467b83150961ecd33773b561a1207aec727002aa1d70333068eb1b","9b2a8f604e7c0482a9061755f00b287cc99bd8718dc82d8207dd74c599b6dc43","d0fc76a91c828fbe3f0be5d683273634b7b101068333ceed975a8a9ac464137b",{"version":"1a048ff164b8d9609f5de3139d4e37f6e8a82af82087ac414b9208f52ef8aac7","affectsGlobalScope":true},"3111079f3cb5f2b9c812ca3f46161562bce5bfb355e915f46ed46c41714dc1c3","50ae84dc0183f9f69b4d0933e240fb76cc77fddb2ec223dd070d12420b6ccfa6","b32b6b16cb0bda68199582ad6f22242d07ee75fac9b1f28a98cd838afc5eea45","4441ee4119824bfaebc49308559edd7545978f9cb41a40f115074e1031dde75f",{"version":"60693a88462d0e97900123b5bf7c73e146ce0cc94da46a61fe6775b430d2ff05","affectsGlobalScope":true},{"version":"588c69eda58b9202676ec7ca11a72c3762819b46a0ed72462c769846153c447c","affectsGlobalScope":true},"cc829932ffaf5c49092f878bec18af1fa5d8591b45a45e2b7f757f793cb3b4ed","47db10fdc4e76c4f4598cf7c91ba6bfde6cf6d8082c51860fe751643bf359739","53d2c24a3cbc00a88ebaf8ab8e1b6e206bc3a6647d544f877241684ea3d484e3","ecee890ff04b70d8e8815fb753c20f24f95203426267a577823d375009c1ace7","0ce99c641ea20b0c0c09d093fc28f18f5ab31dc80033707a1ac3154399de2559","7dc9ed91e245cf0c4f8add7f6845d0cb08cceec4408ce3398c51e1f6dd7679ec","44e42ed6ec9c4451ebe89524e80ac8564e9dd0988c56e6c58f393c810730595d","d79fda68cbfb361c4ee9cd9ea169babb65887534d64017726cd01f54783d20a5","1606ea615c0a5ea9f5c1376a33e34c0e1112e8dee31a5b3b8a74ce781893aa6f","9fef9de633d01cb7f01f68195626a890ededd25cf96a1e785617d08c8668230d","4455c78d226d061b1203c7614c6c6eb5f4f9db5f00d44ff47d0112de8766fbc4",{"version":"ec369bb9d97c4dc09dd2a4093b7ca3ba69ad284831fccac8a1977785e9e38ce5","affectsGlobalScope":true},"4465a636f5f6e9665a90e30691862c9e0a3ac2edc0e66296704f10865e924f2a","9af781f03d44f5635ed7844be0ce370d9d595d4b4ec67cad88f0fac03255257e","f9fd4c3ef6de27fa0e256f4e75b61711c4be05a3399f7714621d3edc832e36b0","e49290b7a927995c0d7e6b2b9c8296284b68a9036d9966531de65185269258d7","c3689f70ce7563c2299f2dcb3c72efdf6f87ae510e7456fa6223c767d0ca99fc","874ca809b79276460011480a2829f4c8d4db29416dd411f71efbf8f497f0ac09","bb1e8c36fe44bf321d130de5c60e605ac0c76f5b7aa03f17f18ccfa38f922015","605c24042a348b033b30121cff64380eb5d6d82853c5608f1f94ef72385cf5c9","23a28f834a078986bbf58f4e3705956983ff81c3c2493f3db3e5f0e8a9507779","4febdf7f3ec92706c58e0b4e8159cd6de718284ef384260b07c9641c13fc70ce",{"version":"eabefc2999c1489cf870e0c85af908900462fa245822d9a4616780a1a129945d","affectsGlobalScope":true},"7335933d9f30dcfd2c4b6080a8b78e81912a7fcefb1dafccb67ca4cb4b3ac23d","a6bfe9de9adef749010c118104b071d14943802ff0614732b47ce4f1c3e383cd","4c3d0e10396646db4a1e917fb852077ee77ae62e512913bef9cccc2bb0f8bd0e","3b220849d58140dcc6718f5b52dcd29fdb79c45bc28f561cbd29eb1cac6cce13","0ee22fce41f7417a24c808d266e91b850629113c104713a35854393d55994beb","22d1b1d965baba05766613e2e6c753bb005d4386c448cafd72c309ba689e8c24",{"version":"2708349d5a11a5c2e5f3a0765259ebe7ee00cdcc8161cb9990cb4910328442a1","affectsGlobalScope":true},"79d679a1d56574cc5cef92be1f0e5e8fb4af62fb55933b236670a0e0a23c83f6","8841e2aa774b89bd23302dede20663306dc1b9902431ac64b24be8b8d0e3f649","fd326577c62145816fe1acc306c734c2396487f76719d3785d4e825b34540b33","ad7118e1b64e20fabb52ad24c16add91835d4fa79fa344e8260fc4a3a79a3a41","98ff615c968cfa7c9fd52d0b79180d71de471ddadc81dd47e764694ca887f1dd","8d1539367a9f5a03698f4c37111251eb76433ea8fcb5f1e546571b8513cac822","9ad71085f8ab35282a341995f85c6e06a19e6d5ab73b39f634b444ce8742a664","ee94d8f60c253d9994559ad325e9cb8a7af6bd36176884cb869ee5a40daa766c","606de01a4212a48518a219585f673504d3c0c26b361706006038a71bf8b9f42c","76de776e227ad01b703ce076b32177da31a765d5b5a681d5bb4c4e0f4876840f","aa4c984c8f2919742d06f305b1870bf180275cbe015490451a6374e6f6b9998a","46b9cdcd62e90f604876c143481ac7ff2c89cdfb902179bda0d8ee44c0695beb","f7376eb8232cc156bc6afff5d564a40ad2504b8e88a4543adf6f4e945d186474","686e548ae30250d62532c8cacb43fccc922b693408371bd3503563c4a0f28eed","07dba097a66bf3b0bb04497bc136dba51a9cdb94cd8ad663eab82f5f6f83c21e","07981dc93c563507c26821c74a49bbbe2352b310fe74f91599c33d90c4acb376","60c67218e451d0a4644389c5902d4ec99bd63572f94c3d41dd86a4367de0d80e","c8ad695329bb68238f54553349cb8774bc3966c8a119aa240c689f2535c803ca","f0433d6c3e0d3ea7d957535c338c82fdb0c10b2c6fa759ee323438747d006929","b5e4fa898ff7e7a88489f9b7b47294cf78d986ab96c7d25807ff3e5e9fec6465","8cae8c496b7cdd6881404d5c629357badb099229ccf7c6730da9c1ab78ec9559","ecba6db9ca957c821dab2e8ed44e45211a791aa14d7413bf4e58275968a00673","6df8cf3b5add85842da66e0fb16df4e33e29cb832be0dd067ed6b148ec709226","759c54bac5348f5c1376dda8d4cc283eb2b0356b898827206b811be769ff6c7b","df10a03e5141d8aa63a17e68833c51bfaaf94fbb0dd71c5dda47a22efb3821a7","191e80abbb0947ea4af8c03c4251ff6e572a8f405189739f32c31fbaaa421a05","9630421fdcc7c076b84ba338894e78ffc0d96a362d05303a0b719f8ef5811728","88dc0dcab75df96583b348f379c7aec6712561d17d8ce208d36ab492b23ae46d","ec3bc0a0573da655bab5c8f96c6e905b25e2fcf799996ea025eea985656e0bc4","c6d8058f53245666fe420e069fb8ca88286153c12d6accacc84edec2eb3694e2","fdb7f9800267358d093879ae8ebe6322fec83a7f3c1f9b53fc27f85af4cd8723","c2bff909cb7d9a3939b3dbb2b1e3ce0fec7b747c74b9c47648c42b40a0724fa3","de41964adcdb5316152314f126b999cd651719d90b9d7fca50f8461c256b4e2b","fbbedd7745fef1135414280adf758927576b94d0cadba64d5c7ec24cdbc9c37a","1f7d50dbb3ea1f13f7ef1c82e0d77017660da61daf75ba427de32f67f25ace0c","7d74698235b0646f1d0217fa509d2731a855b420137355347dcf463e72fcd479","bd3355eb75d5c515a96f5b930cf4adcf62b4e7105fc30aba24d976b83f31163e","6b9775a46498c8b2bb7c92dbbdd6ae0d17f2698c8c87e286ee8b8d4414231a9f","de964a6cafbc7909ec88f74393327f89fc3e4b309e90639f7102df4e0edb5e06","036c607f3926e7e7704c4c1a497bc130f3257523e22bf0c0748e311c50f284cb","d5531816f67bb2247ecd105ddfa30f3e399ed2cb5ebb40c3d7ad2922405b5fe1","704fcfe996ab3b59214f9283f7515890972a075742121f1d1bf44aad05cd966d","9b8453ae568d8af6690fabfbd855c19a775fe8fdf7fa576961963b7e5bab6443","e06be111acc4813d7322918330ea53c3d4b74886a89b0c496a64979561e040b8","007bd38bbfb1a1b4aec076d52d7c98d0e9e12c5716e7cf0d4ec1c9949794bf2d","1be7961694e69bcf6dde648a4f5f537fe197e1b2b9a48fd8c0e561c79416eb17","a9333528c51a010dc4b6d5fc90af50c3edc2a2e8beee1f46e52fbfb635301156","ba37366c716b76a402bddee0e3974ad55d69943aabdb25bd4602e5172f7a7c15","70e9a18da08294f75bf23e46c7d69e67634c0765d355887b9b41f0d959e1426e","99bbadcf4153b61d79a2616b377da8f42a16fcb41d2136f1f6c2cf070b084216","4fb0b7d532aa6fb850b6cd2f1ee4f00802d877b5c66a51903bc1fb0624126349","a7e430e32eaefba6b1ebf23a94a4562bfe7051cc83558d33ddc8ff342f3c18e9",{"version":"f3a68054f682f21cec1eb6bc37d3c4c7f73b7723c7256f8a1ccc75873024aaa6","affectsGlobalScope":true},"5b72d384b825756c53642e763bae92e03623950dc1b4c132938364cb0c5e577d","f2045729c599b3e083819ef5e2bf84c64e52877c1e4fa224eacc5f6892e13213","9aa9facdd19fa4ff59d22445655090446e92047c8d4fd37770176f5a39e0c23a","228fafe6eafe9c54d13eaed8d9302b281babe1d9415771958fedb89a11aaef1e","3a2adbe59d431ae55f84724a535014d07f55e417b95a4f852b5359b9af8578c8","f121f2b65b93d73dca9a0d8df21461c0506d8cb309fcfa7d3aa32d64757783c4","6afdb1ccecb27c9a02303b4fc3b8fcc1037d0c62c1746100dbd1751594369d15","0229beadeaa75ebc04fb2c1b1abdd6a39dcc3145fa19104a59d3feb26514244e","6da649544254ad3a2df7deb094377505876f21258bd0e8f1be624a0566ecaa52","1cc0b040bbedbb12bd56982677ef15cfff8bc5fb4521fafaa2eff2786eb744f3","736097ddbb2903bef918bb3b5811ef1c9c5656f2a73bd39b22a91b9cc2525e50","208bb742e0f201470da121bc73847c74b62cff4172f38ae5949ae77d6c9c6b71","3663d1b50f356656a314e5df169bb51cb9d5fd75905fa703f75db6bb32030568","3da9fb38176c01819f54378976aedb30d2bb68fbce52a91deda9c7d3e159850f","69e81e18bb59fc56cc81c65c28a0e2bb49164627a5643dfbdb349cdb3aea83c2","b5920ff9f287bbcb9172732b2a1ca55b8dacba8347fa5548eb989140cfcbfd9e","bd0dac35f879debc94a781110f617a66f555af80456d76a78d3fc3ef6c5c87ec","ad37ef3fe7f48a3b04e43e0abfd330228a92fc2c65f427fe28a209045ae291f6","6bcd7d885b9c22c3b319fd7413d23fc97293d75c642e14c496b752af78726b87","b59f4ef3cad4b3ede50d804c30b8c1ec563812278bd7afd33942b833c5baf5a8","ac32b9211f9657c2d92ab649ea55a65911a73206d61da868df58061c75e55cb4","83e3f698e40c319c3ee2a8e02f389c8ff5322c364b879b4b53ba3131a4b8d124","c982ec91d1713653202498476d3435fb497d8129aed637a270ea7283796aaab6","0e86c6adbee7211f7cc070b1595d58f866096e221724d928801128577ecd30fe","6ed11aa8b11a848cdbafec7d87bc97ad31387bbf3d8c768ec113ea608c1711c2","0d63d482b41627bee84a1964f53572f98f6e4f618da38c71bed676b5d0f7afe8","74ec27fa777819b9de52c1095bb9d7f8452af7f49ed65853eda9782bf4108c2b","573c0dec8be2f89b41ecfa6722fd67ed89ff1f5d64a2d7ef31c66233af913807","cc957354aa3c94c9961ebf46282cfde1e81d107fc5785a61f62c67f1dd3ac2eb","a46a2e69d12afe63876ec1e58d70e5dbee6d3e74132f4468f570c3d69f809f1c","93de1c6dab503f053efe8d304cb522bb3a89feab8c98f307a674a4fae04773e9","fc72135da24040641388fb5f2c2a7a99aa5b962c0fa125bd96fabeec63dd2e63","5426e62886b7be7806312d31a00e8f7dccd6fe63ba9bbefe99ee2eab29cc48a3","3ebae8c00411116a66fca65b08228ea0cf0b72724701f9b854442100aab55aba","8b06ac3faeacb8484d84ddb44571d8f410697f98d7bfa86c0fda60373a9f5215","7eb06594824ada538b1d8b48c3925a83e7db792f47a081a62cf3e5c4e23cf0ee","f5638f7c2f12a9a1a57b5c41b3c1ea7db3876c003bab68e6a57afd6bcc169af0","d8aab31ba8e618cc3eea10b0945de81cb93b7e8150a013a482332263b9305322","69da61a7b5093dac77fa3bec8be95dcf9a74c95a0e9161edb98bb24e30e439d2","561eca7a381b96d6ccac6e4061e6d2ae53f5bc44203f3fd9f5b26864c32ae6e9","62ea38627e3ebab429f7616812a9394d327c2bc271003dfba985de9b4137369f","b4439890c168d646357928431100daac5cbdee1d345a34e6bf6eca9f3abe22bc","5d72971a459517c44c1379dab9ed248e87a61ba0a1e0f25c9d67e1e640cd9a09","02d734976af36f4273d930bea88b3e62adf6b078cf120c1c63d49aa8d8427c5c",{"version":"516a426e3960379f310107635b8f3a7e8c307c6c665080b128039d9299ec4087","affectsGlobalScope":true},"21bb8dda75eb025927e9d62d8fa619e349ebc5ba0b8b9dddd8fdfc9ff058e2b8","f3e604694b624fa3f83f6684185452992088f5efb2cf136b62474aa106d6f1b6","675e702f2032766a91eeadee64f51014c64688525da99dccd8178f0c599f13a8","fe4a2042d087990ebfc7dc0142d5aaf5a152e4baea86b45f283f103ec1e871ea","d70c026dd2eeaa974f430ea229230a1897fdb897dc74659deebe2afd4feeb08f","187119ff4f9553676a884e296089e131e8cc01691c546273b1d0089c3533ce42","febf0b2de54781102b00f61653b21377390a048fbf5262718c91860d11ff34a6","ca59fe42b81228a317812e95a2e72ccc8c7f1911b5f0c2a032adf41a0161ec5d","9364c7566b0be2f7b70ff5285eb34686f83ccb01bda529b82d23b2a844653bfb","00baffbe8a2f2e4875367479489b5d43b5fc1429ecb4a4cc98cfc3009095f52a","ae9930989ed57478eb03b9b80ad3efa7a3eacdfeff0f78ecf7894c4963a64f93","3c92b6dfd43cc1c2485d9eba5ff0b74a19bb8725b692773ef1d66dac48cda4bd","3e59f00ab03c33717b3130066d4debb272da90eeded4935ff0604c2bc25a5cae","df996e25faa505f85aeb294d15ebe61b399cf1d1e49959cdfaf2cc0815c203f9",{"version":"f2eff8704452659641164876c1ef0df4174659ce7311b0665798ea3f556fa9ad","affectsGlobalScope":true},"6bb8d7433a29fbd33df8e9693f1788a273a9eb90b96c8f99c745678c7db623f1","6fa0008bf91a4cc9c8963bace4bba0bd6865cbfa29c3e3ccc461155660fb113a","8f7a2387ecc680872d09a6edbca1612d699f77ee5a5129944935c3798a613d04","1583b9baa41a4db2f2bd4fedfafbe791a986fd785749d5cae2ff5171344e9b4c","b0d10e46cfe3f6c476b69af02eaa38e4ccc7430221ce3109ae84bb9fb8282298"],"options":{"composite":true,"declaration":true,"module":1,"noImplicitAny":true,"noImplicitReturns":true,"noImplicitThis":true,"noUnusedLocals":true,"noUnusedParameters":true,"outDir":"./lib","rootDir":"./src","strictFunctionTypes":true,"strictNullChecks":true,"strictPropertyInitialization":true,"target":3},"fileIdsList":[[163],[163,164,165,166,167],[163,165],[52,53,83,84],[53,83],[170],[171],[177,179],[195],[183,185,186,187,188,189,190,191,192,193,194,195],[183,184,186,187,188,189,190,191,192,193,194,195],[184,185,186,187,188,189,190,191,192,193,194,195],[183,184,185,187,188,189,190,191,192,193,194,195],[183,184,185,186,188,189,190,191,192,193,194,195],[183,184,185,186,187,189,190,191,192,193,194,195],[183,184,185,186,187,188,190,191,192,193,194,195],[183,184,185,186,187,188,189,191,192,193,194,195],[183,184,185,186,187,188,189,190,192,193,194,195],[183,184,185,186,187,188,189,190,191,193,194,195],[183,184,185,186,187,188,189,190,191,192,194,195],[183,184,185,186,187,188,189,190,191,192,193,195],[183,184,185,186,187,188,189,190,191,192,193,194],[55,75,83,146,147],[52,53,133,201],[55,69,83],[85],[173,174],[173,174,175,176],[178],[88],[89,90,91,92,93],[90],[89],[131],[127,152],[39,129,145],[127,149,150],[127,150],[129],[62,129],[39,53,63,127,128,129],[39,62,63,127,129,141,144],[39,63,127,128,129],[39,127,129],[39,127,129,134,138],[39,53,55,62,129,135,136,137],[53,55,81],[39,48,53,62,63,127,129,148,149],[39,62,127,142,143],[39,53,62,63,127,129,141,142],[127],[39,63,127,129],[127,128,130,132,139,140,143,145,149,150,151,152],[39,53,62,63,67,69,86,127,128],[95,98,99,101,103,110],[100],[100,101,104],[83,95,99,100,103],[100,104,105,106,107,108,109],[100,104],[99,104,127],[95,99,103],[94,103],[103],[87,95,97,98,99,101,102,103,110,111,112,113,114,115,116,117,118,122,123,124,125,126],[96],[95,101,103,110],[98],[100,120,121],[100,119],[87,101],[94,95,100],[87,97,117],[95],[87,96],[103,110,111],[87,95,97,102,103,112],[87,95,98,99,101,102],[40],[42],[43,48],[44,52,53,60,69],[44,45,52,60],[46,76],[47,48,53,61],[48,69],[49,50,52,60],[50],[51,52],[52],[52,53,54,69,75],[53,54],[55,60,69,75],[52,53,55,56,60,69,72,75],[55,57,69,72,75],[40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82],[52,58],[59,75],[50,52,60,69],[61],[62],[42,63],[64,74],[65],[66],[52,67],[67,68,76,78],[52,69],[70],[71],[60,69,72],[73],[60,74],[66,75],[76],[69,77],[78],[79],[52,54,69,75,78,80],[69,81]],"referencedMap":[[165,1],[168,2],[164,1],[166,3],[167,1],[85,4],[169,5],[171,6],[172,7],[180,8],[196,9],[184,10],[185,11],[183,12],[186,13],[187,14],[188,15],[189,16],[190,17],[191,18],[192,19],[193,20],[194,21],[195,22],[148,23],[134,24],[146,25],[86,26],[175,27],[177,28],[176,27],[179,29],[89,30],[94,31],[91,32],[93,32],[90,33],[132,34],[158,35],[159,36],[160,37],[161,38],[157,39],[130,40],[152,41],[145,42],[151,43],[149,44],[139,45],[138,46],[137,47],[150,48],[162,49],[143,50],[142,51],[140,52],[153,53],[128,51],[129,54],[126,55],[106,56],[109,57],[104,58],[110,59],[107,60],[105,61],[100,62],[108,60],[123,63],[124,64],[127,65],[111,66],[125,67],[99,68],[122,69],[121,56],[120,70],[102,71],[101,72],[118,73],[115,74],[114,74],[113,74],[116,74],[97,75],[112,76],[98,77],[103,78],[40,79],[42,80],[43,81],[44,82],[45,83],[46,84],[47,85],[48,86],[49,87],[50,88],[51,89],[52,90],[53,91],[54,92],[55,93],[56,94],[57,95],[83,96],[58,97],[59,98],[60,99],[61,100],[62,101],[63,102],[64,103],[65,104],[66,105],[67,106],[68,107],[69,108],[70,109],[71,110],[72,111],[73,112],[74,113],[75,114],[76,115],[77,116],[78,117],[79,118],[80,119],[81,120]],"exportedModulesMap":[[165,1],[168,2],[164,1],[166,3],[167,1],[85,4],[169,5],[171,6],[172,7],[180,8],[196,9],[184,10],[185,11],[183,12],[186,13],[187,14],[188,15],[189,16],[190,17],[191,18],[192,19],[193,20],[194,21],[195,22],[148,23],[134,24],[146,25],[86,26],[175,27],[177,28],[176,27],[179,29],[89,30],[94,31],[91,32],[93,32],[90,33],[132,34],[158,35],[159,36],[160,37],[161,38],[157,39],[130,40],[152,41],[145,42],[151,43],[149,44],[139,45],[138,46],[137,47],[150,48],[162,49],[143,50],[142,51],[140,52],[153,53],[128,51],[129,54],[126,55],[106,56],[109,57],[104,58],[110,59],[107,60],[105,61],[100,62],[108,60],[123,63],[124,64],[127,65],[111,66],[125,67],[99,68],[122,69],[121,56],[120,70],[102,71],[101,72],[118,73],[115,74],[114,74],[113,74],[116,74],[97,75],[112,76],[98,77],[103,78],[40,79],[42,80],[43,81],[44,82],[45,83],[46,84],[47,85],[48,86],[49,87],[50,88],[51,89],[52,90],[53,91],[54,92],[55,93],[56,94],[57,95],[83,96],[58,97],[59,98],[60,99],[61,100],[62,101],[63,102],[64,103],[65,104],[66,105],[67,106],[68,107],[69,108],[70,109],[71,110],[72,111],[73,112],[74,113],[75,114],[76,115],[77,116],[78,117],[79,118],[80,119],[81,120]],"semanticDiagnosticsPerFile":[165,163,168,164,166,167,85,169,170,171,172,180,181,96,182,196,184,185,183,186,187,188,189,190,191,192,193,194,195,84,147,148,197,198,199,200,131,133,134,39,146,86,135,173,175,177,176,174,144,136,179,178,9,8,2,10,11,12,13,14,15,16,17,3,4,21,18,19,20,22,23,24,5,25,26,27,28,6,29,30,31,32,7,37,33,34,35,36,1,38,92,89,94,91,88,93,90,132,156,154,155,158,159,160,161,157,130,152,145,151,149,139,138,137,150,162,143,142,140,153,141,128,129,126,106,109,104,110,107,105,100,108,123,124,127,111,125,99,122,121,119,120,102,101,118,95,115,114,113,116,117,87,97,112,98,103,40,42,43,44,45,46,47,48,49,50,51,52,53,54,41,82,55,56,57,83,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81]},"version":"4.3.3"}