@squiz/component-cli-lib 1.2.1-alpha.89 → 1.2.1-alpha.90

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/lib/component-dev.d.ts +14 -0
  3. package/lib/component-dev.js +38 -0
  4. package/lib/component-dev.js.map +1 -0
  5. package/lib/component-dev.spec.d.ts +1 -0
  6. package/lib/component-dev.spec.js +91 -0
  7. package/lib/component-dev.spec.js.map +1 -0
  8. package/lib/config.d.ts +8 -0
  9. package/lib/config.js +13 -0
  10. package/lib/config.js.map +1 -0
  11. package/lib/index.d.ts +2 -0
  12. package/lib/index.js +8 -0
  13. package/lib/index.js.map +1 -0
  14. package/lib/integration-tests/__components__/big-package/manifest.json +32 -0
  15. package/lib/integration-tests/__components__/cmp-static-file-test/manifest.json +36 -0
  16. package/lib/integration-tests/__components__/invalid-manifest/manifest.json +24 -0
  17. package/lib/integration-tests/helper.d.ts +7 -0
  18. package/lib/integration-tests/helper.js +43 -0
  19. package/lib/integration-tests/helper.js.map +1 -0
  20. package/lib/integration-tests/service-deployment.spec.d.ts +1 -0
  21. package/lib/integration-tests/service-deployment.spec.js +16 -0
  22. package/lib/integration-tests/service-deployment.spec.js.map +1 -0
  23. package/lib/integration-tests/test-setup.d.ts +0 -0
  24. package/lib/integration-tests/test-setup.js +3 -0
  25. package/lib/integration-tests/test-setup.js.map +1 -0
  26. package/lib/integration-tests/upload-and-render-component.spec.d.ts +1 -0
  27. package/lib/integration-tests/upload-and-render-component.spec.js +99 -0
  28. package/lib/integration-tests/upload-and-render-component.spec.js.map +1 -0
  29. package/lib/test.d.ts +1 -0
  30. package/lib/test.js +23 -0
  31. package/lib/test.js.map +1 -0
  32. package/lib/upload-component-folder.d.ts +1 -0
  33. package/lib/upload-component-folder.js +126 -0
  34. package/lib/upload-component-folder.js.map +1 -0
  35. package/package.json +5 -5
  36. package/tsconfig.tsbuildinfo +1 -0
package/CHANGELOG.md CHANGED
@@ -3,6 +3,14 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ ## [1.2.1-alpha.90](https://gitlab.squiz.net/developer-experience/cmp/compare/v1.2.1-alpha.89...v1.2.1-alpha.90) (2022-08-05)
7
+
8
+ **Note:** Version bump only for package @squiz/component-cli-lib
9
+
10
+
11
+
12
+
13
+
6
14
  ## [1.2.1-alpha.89](https://gitlab.squiz.net/developer-experience/cmp/compare/v1.2.1-alpha.88...v1.2.1-alpha.89) (2022-08-05)
7
15
 
8
16
  **Note:** Version bump only for package @squiz/component-cli-lib
@@ -0,0 +1,14 @@
1
+ /**
2
+ * startDevelopmentRender starts a dev-mode render stack for any
3
+ * local directory. This should start an express server on a random unused port
4
+ * which can be accessed for viewing the component in development.
5
+ * As the render stack outputs log using `bunyan`, the CLI command that runs
6
+ * this function should be piped into `npx bunyan`.
7
+ * @param {string} componentPath - The directory with the component to be rendered
8
+ * @param {object} options - Additional configuration for the dev stack
9
+ * @returns a function to stop the render stack
10
+ */
11
+ export declare function startDevelopmentRender(componentPath: string, options: {
12
+ port: number;
13
+ previewFile?: string;
14
+ }): Promise<() => Promise<void>>;
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.startDevelopmentRender = void 0;
7
+ const render_runtime_lib_1 = require("@squiz/render-runtime-lib");
8
+ const path_1 = __importDefault(require("path"));
9
+ /**
10
+ * startDevelopmentRender starts a dev-mode render stack for any
11
+ * local directory. This should start an express server on a random unused port
12
+ * which can be accessed for viewing the component in development.
13
+ * As the render stack outputs log using `bunyan`, the CLI command that runs
14
+ * this function should be piped into `npx bunyan`.
15
+ * @param {string} componentPath - The directory with the component to be rendered
16
+ * @param {object} options - Additional configuration for the dev stack
17
+ * @returns a function to stop the render stack
18
+ */
19
+ async function startDevelopmentRender(componentPath, options) {
20
+ await (0, render_runtime_lib_1.startRenderStack)({
21
+ webserver: {
22
+ port: options.port,
23
+ rootUrl: `http://localhost:${options.port}`,
24
+ shouldRunMigrations: false,
25
+ },
26
+ componentRunner: {
27
+ // Considering the component path will be passed in from CLI
28
+ // We need to generate the path from the calling directory
29
+ dataMountPoint: path_1.default.resolve(process.cwd(), componentPath),
30
+ localDevMode: true,
31
+ previewFile: options.previewFile,
32
+ workerTimeout: 20000,
33
+ },
34
+ });
35
+ return () => (0, render_runtime_lib_1.stopRenderStack)();
36
+ }
37
+ exports.startDevelopmentRender = startDevelopmentRender;
38
+ //# sourceMappingURL=component-dev.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"component-dev.js","sourceRoot":"","sources":["../src/component-dev.ts"],"names":[],"mappings":";;;;;;AAAA,kEAA8E;AAC9E,gDAAwB;AAExB;;;;;;;;;GASG;AACI,KAAK,UAAU,sBAAsB,CAAC,aAAqB,EAAE,OAA+C;IACjH,MAAM,IAAA,qCAAgB,EAAC;QACrB,SAAS,EAAE;YACT,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,OAAO,EAAE,oBAAoB,OAAO,CAAC,IAAI,EAAE;YAC3C,mBAAmB,EAAE,KAAK;SAC3B;QACD,eAAe,EAAE;YACf,4DAA4D;YAC5D,0DAA0D;YAC1D,cAAc,EAAE,cAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,aAAa,CAAC;YAC1D,YAAY,EAAE,IAAI;YAClB,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,aAAa,EAAE,KAAM;SACtB;KACF,CAAC,CAAC;IAEH,OAAO,GAAG,EAAE,CAAC,IAAA,oCAAe,GAAE,CAAC;AACjC,CAAC;AAlBD,wDAkBC"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,91 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const path_1 = __importDefault(require("path"));
7
+ const promises_1 = __importDefault(require("fs/promises"));
8
+ const render_runtime_lib_1 = require("@squiz/render-runtime-lib");
9
+ const component_dev_1 = require("./component-dev");
10
+ const supertest_1 = __importDefault(require("supertest"));
11
+ jest.setTimeout(20000);
12
+ describe('component-dev', () => {
13
+ describe('production style folder structure', () => {
14
+ let doStopStack;
15
+ beforeAll(async () => {
16
+ doStopStack = await (0, component_dev_1.startDevelopmentRender)(path_1.default.join(__dirname, '../../../test-components'), { port: 0 });
17
+ });
18
+ afterAll(async () => {
19
+ await doStopStack();
20
+ });
21
+ it('should find the component', async () => {
22
+ const testServer = render_runtime_lib_1.TestHelpers.getTestServer();
23
+ const response = await testServer.get(`/r/set/test-component/1.0.0?something=hello`);
24
+ expect(response.text).toEqual('<h1>hello</h1>');
25
+ });
26
+ });
27
+ describe('local developer style folders', () => {
28
+ let doStopStack;
29
+ let version;
30
+ let componentName;
31
+ let fixtureDirectory;
32
+ beforeAll(async () => {
33
+ const { fixtureDirectory: ceratedFixtureDirectory, version: createdVersion, componentName: createdName, } = await render_runtime_lib_1.TestHelpers.ComponentFixture.setupFullComponentDirectory('<h1>Hello World</h1>');
34
+ version = createdVersion;
35
+ fixtureDirectory = ceratedFixtureDirectory;
36
+ componentName = createdName;
37
+ doStopStack = await (0, component_dev_1.startDevelopmentRender)(fixtureDirectory, { port: 0 });
38
+ });
39
+ afterAll(async () => {
40
+ await doStopStack();
41
+ await promises_1.default.rm(path_1.default.join(fixtureDirectory, componentName), { force: true, recursive: true });
42
+ });
43
+ it('should handle recursing folders to find the component', async () => {
44
+ const testServer = render_runtime_lib_1.TestHelpers.getTestServer();
45
+ const response = await testServer.get(`/r/set/${componentName}/${version}/`);
46
+ expect(response.text).toEqual('<h1>Hello World</h1>');
47
+ });
48
+ it('should handle serving static files from single component directory', async () => {
49
+ const testServer = render_runtime_lib_1.TestHelpers.getTestServer();
50
+ const response = await testServer.get(`/s/${componentName}/${version}/static.txt`);
51
+ expect(response.text).toEqual('hello');
52
+ });
53
+ });
54
+ describe('accessing local dev routes', () => {
55
+ let stopServer;
56
+ const port = 3006;
57
+ const url = `http://localhost:${port}`;
58
+ const request = (0, supertest_1.default)(url);
59
+ beforeAll(async () => {
60
+ const compDir = path_1.default.join(__dirname, '../', '../../test-components');
61
+ stopServer = await (0, component_dev_1.startDevelopmentRender)(compDir, {
62
+ port: port,
63
+ });
64
+ });
65
+ afterAll(async () => {
66
+ await stopServer();
67
+ });
68
+ describe('definition routes', () => {
69
+ render_runtime_lib_1.routeTests.definition(url, url);
70
+ });
71
+ describe('static routes', () => {
72
+ render_runtime_lib_1.routeTests.static(url);
73
+ });
74
+ describe('render routes', () => {
75
+ render_runtime_lib_1.routeTests.render(url, url);
76
+ });
77
+ describe('GET /r/set/test-component/1.0.1', () => {
78
+ //
79
+ // this scenario is different to the 'production' tests
80
+ // this is should 500 in prod and 404 locally
81
+ it('should fail validation if trying to render a component with an invalid schema', async () => {
82
+ const response = await request.get('/r/set/test-component/1.0.1?something=not-used');
83
+ expect(response.statusCode).toEqual(404);
84
+ expect(response.body).toEqual({
85
+ message: 'manifest could not be found',
86
+ });
87
+ });
88
+ });
89
+ });
90
+ });
91
+ //# sourceMappingURL=component-dev.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"component-dev.spec.js","sourceRoot":"","sources":["../src/component-dev.spec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ interface Config {
2
+ managementServiceUrl: string;
3
+ renderServiceUrl: string;
4
+ ci_buildVersion: string;
5
+ ci_buildBranch: string;
6
+ }
7
+ declare const configObj: Config;
8
+ export default configObj;
package/lib/config.js ADDED
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const component_lib_1 = require("@squiz/component-lib");
4
+ const dotenv_1 = require("dotenv");
5
+ (0, dotenv_1.config)();
6
+ const configObj = {
7
+ managementServiceUrl: (0, component_lib_1.parseEnvVarForVar)('COMPONENT_MANAGEMENT_SERVICE_URL').replace(/\/+$/, ''),
8
+ renderServiceUrl: (0, component_lib_1.parseEnvVarForVar)('COMPONENT_RENDER_SERVICE_URL').replace(/\/+$/, ''),
9
+ ci_buildVersion: (0, component_lib_1.parseEnvVarForVar)('CI_COMMIT_SHORT_SHA'),
10
+ ci_buildBranch: (0, component_lib_1.parseEnvVarForVar)('CI_COMMIT_REF_NAME'),
11
+ };
12
+ exports.default = configObj;
13
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":";;AAAA,wDAAyD;AACzD,mCAAgC;AAEhC,IAAA,eAAM,GAAE,CAAC;AAST,MAAM,SAAS,GAAW;IACxB,oBAAoB,EAAE,IAAA,iCAAiB,EAAC,kCAAkC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;IAC/F,gBAAgB,EAAE,IAAA,iCAAiB,EAAC,8BAA8B,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;IACvF,eAAe,EAAE,IAAA,iCAAiB,EAAC,qBAAqB,CAAC;IACzD,cAAc,EAAE,IAAA,iCAAiB,EAAC,oBAAoB,CAAC;CACxD,CAAC;AAEF,kBAAe,SAAS,CAAC"}
package/lib/index.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ export { uploadComponentFolder } from './upload-component-folder';
2
+ export { startDevelopmentRender } from './component-dev';
package/lib/index.js ADDED
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.startDevelopmentRender = exports.uploadComponentFolder = void 0;
4
+ var upload_component_folder_1 = require("./upload-component-folder");
5
+ Object.defineProperty(exports, "uploadComponentFolder", { enumerable: true, get: function () { return upload_component_folder_1.uploadComponentFolder; } });
6
+ var component_dev_1 = require("./component-dev");
7
+ Object.defineProperty(exports, "startDevelopmentRender", { enumerable: true, get: function () { return component_dev_1.startDevelopmentRender; } });
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,qEAAkE;AAAzD,gIAAA,qBAAqB,OAAA;AAC9B,iDAAyD;AAAhD,uHAAA,sBAAsB,OAAA"}
@@ -0,0 +1,32 @@
1
+ {
2
+ "$schema": "http://localhost:3000/schemas/v1.json#",
3
+ "name": "big-package",
4
+ "version": "1.0.2",
5
+ "main-function": "render-json",
6
+ "functions": [
7
+ {
8
+ "name": "render-json",
9
+ "entry": "render-json.js",
10
+ "input": {
11
+ "type": "object",
12
+ "properties": {
13
+ "something": {
14
+ "type": "string"
15
+ }
16
+ },
17
+ "required": ["something"]
18
+ },
19
+ "output": {
20
+ "response-type": "json",
21
+ "definition": {
22
+ "properties": {
23
+ "my-prop": {
24
+ "type": "string"
25
+ }
26
+ },
27
+ "required": ["my-prop"]
28
+ }
29
+ }
30
+ }
31
+ ]
32
+ }
@@ -0,0 +1,36 @@
1
+ {
2
+ "$schema": "http://localhost:3000/schemas/v1.json#",
3
+ "name": "cmp-static-file-test",
4
+ "version": "1.0.0",
5
+ "main-function": "main",
6
+ "functions": [
7
+ {
8
+ "entry": "main.js",
9
+ "name": "main",
10
+ "input": {
11
+ "type": "object",
12
+ "properties": {
13
+ "something": {
14
+ "type": "string"
15
+ }
16
+ },
17
+ "required": ["something"]
18
+ },
19
+ "output": {
20
+ "response-type": "html",
21
+ "static-files": [
22
+ {
23
+ "location": "header",
24
+ "file": {
25
+ "filepath": "static-library-file.js",
26
+ "type": "js"
27
+ }
28
+ }
29
+ ]
30
+ }
31
+ }
32
+ ],
33
+ "static-files": {
34
+ "location-root": "public"
35
+ }
36
+ }
@@ -0,0 +1,24 @@
1
+ {
2
+ "$schema": "http://localhost:3000/schemas/v1.json#",
3
+ "name": "invalid-manifes@t",
4
+ "version": "1.0.0",
5
+ "main-function": "main",
6
+ "functions": [
7
+ {
8
+ "entry": "main.js",
9
+ "name": "main",
10
+ "input": {
11
+ "type": "object",
12
+ "properties": {
13
+ "something": {
14
+ "type": "string"
15
+ }
16
+ },
17
+ "required": ["something"]
18
+ },
19
+ "output": {
20
+ "response-type": "html"
21
+ }
22
+ }
23
+ ]
24
+ }
@@ -0,0 +1,7 @@
1
+ export declare const managementService: import("axios").AxiosInstance;
2
+ export declare const renderService: import("axios").AxiosInstance;
3
+ export declare const ci_buildVersion: string;
4
+ export declare const ci_buildBranch: string;
5
+ export declare function getTestComponents(): string[];
6
+ export declare function createFile(filePath: string, sizeInMB: number): Promise<void>;
7
+ export declare function removeFile(filePath: string): void;
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.removeFile = exports.createFile = exports.getTestComponents = exports.ci_buildBranch = exports.ci_buildVersion = exports.renderService = exports.managementService = void 0;
7
+ const axios_1 = __importDefault(require("axios"));
8
+ const fs_1 = __importDefault(require("fs"));
9
+ const path_1 = __importDefault(require("path"));
10
+ const config_1 = __importDefault(require("../config"));
11
+ const promises_1 = __importDefault(require("fs/promises"));
12
+ const crypto_1 = require("crypto");
13
+ exports.managementService = axios_1.default.create({
14
+ baseURL: config_1.default.managementServiceUrl,
15
+ });
16
+ exports.renderService = axios_1.default.create({
17
+ baseURL: config_1.default.renderServiceUrl,
18
+ });
19
+ exports.ci_buildVersion = config_1.default.ci_buildVersion;
20
+ exports.ci_buildBranch = config_1.default.ci_buildBranch;
21
+ function getTestComponents() {
22
+ const componets = [];
23
+ const componentsDir = path_1.default.join(__dirname, '/__components__/');
24
+ const files = fs_1.default.readdirSync(componentsDir);
25
+ for (const file of files) {
26
+ const stat = fs_1.default.statSync(path_1.default.join(componentsDir, file));
27
+ if (stat.isDirectory() && file.substring(0, 4) === 'cmp-') {
28
+ componets.push(file);
29
+ }
30
+ }
31
+ return componets;
32
+ }
33
+ exports.getTestComponents = getTestComponents;
34
+ async function createFile(filePath, sizeInMB) {
35
+ const content = (0, crypto_1.randomBytes)(sizeInMB * 1000000);
36
+ await promises_1.default.writeFile(`${filePath}`, content);
37
+ }
38
+ exports.createFile = createFile;
39
+ function removeFile(filePath) {
40
+ promises_1.default.unlink(filePath);
41
+ }
42
+ exports.removeFile = removeFile;
43
+ //# sourceMappingURL=helper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helper.js","sourceRoot":"","sources":["../../src/integration-tests/helper.ts"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAC1B,4CAAoB;AACpB,gDAAwB;AACxB,uDAAmC;AACnC,2DAA8B;AAC9B,mCAAqC;AAExB,QAAA,iBAAiB,GAAG,eAAK,CAAC,MAAM,CAAC;IAC5C,OAAO,EAAE,gBAAU,CAAC,oBAAoB;CACzC,CAAC,CAAC;AAEU,QAAA,aAAa,GAAG,eAAK,CAAC,MAAM,CAAC;IACxC,OAAO,EAAE,gBAAU,CAAC,gBAAgB;CACrC,CAAC,CAAC;AAEU,QAAA,eAAe,GAAG,gBAAU,CAAC,eAAe,CAAC;AAC7C,QAAA,cAAc,GAAG,gBAAU,CAAC,cAAc,CAAC;AAExD,SAAgB,iBAAiB;IAC/B,MAAM,SAAS,GAAG,EAAE,CAAC;IACrB,MAAM,aAAa,GAAG,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,kBAAkB,CAAC,CAAC;IAC/D,MAAM,KAAK,GAAG,YAAE,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;IAC5C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;QACxB,MAAM,IAAI,GAAG,YAAE,CAAC,QAAQ,CAAC,cAAI,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC,CAAC;QACzD,IAAI,IAAI,CAAC,WAAW,EAAE,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,MAAM,EAAE;YACzD,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SACtB;KACF;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAXD,8CAWC;AACM,KAAK,UAAU,UAAU,CAAC,QAAgB,EAAE,QAAgB;IACjE,MAAM,OAAO,GAAG,IAAA,oBAAW,EAAC,QAAQ,GAAG,OAAO,CAAC,CAAC;IAChD,MAAM,kBAAG,CAAC,SAAS,CAAC,GAAG,QAAQ,EAAE,EAAE,OAAO,CAAC,CAAC;AAC9C,CAAC;AAHD,gCAGC;AAED,SAAgB,UAAU,CAAC,QAAgB;IACzC,kBAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AACvB,CAAC;AAFD,gCAEC"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const helper_1 = require("./helper");
4
+ describe('Verify latest services deployments', () => {
5
+ it('Should have latest Management API service', async () => {
6
+ const response = (await helper_1.managementService.get('/health')).data;
7
+ expect(response.buildVersion).toBe(helper_1.ci_buildVersion);
8
+ expect(response.buildBranch).toBe(helper_1.ci_buildBranch);
9
+ });
10
+ it('Should have latest Render Runtime service', async () => {
11
+ const response = (await helper_1.renderService.get('/health')).data;
12
+ expect(response.buildVersion).toBe(helper_1.ci_buildVersion);
13
+ expect(response.buildBranch).toBe(helper_1.ci_buildBranch);
14
+ });
15
+ });
16
+ //# sourceMappingURL=service-deployment.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service-deployment.spec.js","sourceRoot":"","sources":["../../src/integration-tests/service-deployment.spec.ts"],"names":[],"mappings":";;AAAA,qCAA6F;AAQ7F,QAAQ,CAAC,oCAAoC,EAAE,GAAG,EAAE;IAClD,EAAE,CAAC,2CAA2C,EAAE,KAAK,IAAI,EAAE;QACzD,MAAM,QAAQ,GAAe,CAAC,MAAM,0BAAiB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;QAC3E,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,wBAAe,CAAC,CAAC;QACpD,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,uBAAc,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2CAA2C,EAAE,KAAK,IAAI,EAAE;QACzD,MAAM,QAAQ,GAAe,CAAC,MAAM,sBAAa,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;QACvE,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,wBAAe,CAAC,CAAC;QACpD,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,uBAAc,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
File without changes
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ jest.setTimeout(60000);
3
+ //# sourceMappingURL=test-setup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-setup.js","sourceRoot":"","sources":["../../src/integration-tests/test-setup.ts"],"names":[],"mappings":";AAAA,IAAI,CAAC,UAAU,CAAC,KAAM,CAAC,CAAC"}
@@ -0,0 +1,99 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const index_1 = require("../index");
7
+ const helper_1 = require("./helper");
8
+ const config_1 = __importDefault(require("../config"));
9
+ const cli_color_1 = __importDefault(require("cli-color"));
10
+ const path_1 = __importDefault(require("path"));
11
+ const supertest_1 = __importDefault(require("supertest"));
12
+ const mockConsoleError = jest.fn();
13
+ const mockConsoleLog = jest.fn();
14
+ const orgConsoleError = console.error;
15
+ afterAll(async () => {
16
+ // clean up the component added by the test
17
+ (0, helper_1.getTestComponents)().forEach(async (componentName) => {
18
+ try {
19
+ await helper_1.managementService.delete(`/component/${componentName}`);
20
+ }
21
+ catch {
22
+ // no op
23
+ }
24
+ });
25
+ });
26
+ describe('Test isolated test cases', () => {
27
+ beforeEach(() => {
28
+ console.error = mockConsoleError;
29
+ console.log = mockConsoleLog;
30
+ });
31
+ afterEach(() => {
32
+ console.error = orgConsoleError;
33
+ });
34
+ it('Should fail uploading a component without manifest.json', async () => {
35
+ mockConsoleError.mockClear();
36
+ const componentPath = path_1.default.join(__dirname, '/__components__/invalid-upload');
37
+ await (0, index_1.uploadComponentFolder)(componentPath, config_1.default.managementServiceUrl);
38
+ expect(mockConsoleError.mock.calls[0][0]).toEqual(cli_color_1.default.red('manifest could not be found'));
39
+ });
40
+ it('Should fail uploading a component that has invalid manifest.json', async () => {
41
+ mockConsoleError.mockClear();
42
+ const componentPath = path_1.default.join(__dirname, '/__components__/invalid-manifest');
43
+ await (0, index_1.uploadComponentFolder)(componentPath, config_1.default.managementServiceUrl);
44
+ expect(mockConsoleError.mock.calls[0][0]).toEqual(cli_color_1.default.red('/name: pattern must match pattern "^[a-zA-Z0-9_\\-]+$"'));
45
+ });
46
+ it('Should fail uploading the component that has size more than 100MB', async () => {
47
+ mockConsoleError.mockClear();
48
+ const componentPath = path_1.default.join(__dirname, '/__components__/big-package');
49
+ const filePath = `${componentPath}/105mb-file`;
50
+ await (0, helper_1.createFile)(filePath, 105); // Higher limit has been used because compression reduces the size if you use closer to 100MB
51
+ await (0, index_1.uploadComponentFolder)(componentPath, config_1.default.managementServiceUrl);
52
+ expect(mockConsoleError.mock.calls[0][0]).toEqual(cli_color_1.default.red(['File size exceeds the maximum limit of 100MB'].join('')));
53
+ (0, helper_1.removeFile)(filePath);
54
+ });
55
+ });
56
+ describe('Deploy basic component having a static file', () => {
57
+ // component to deploy for this test
58
+ const componentPath = path_1.default.join(__dirname, '/__components__/cmp-static-file-test');
59
+ beforeAll(async () => {
60
+ try {
61
+ await helper_1.managementService.delete(`/component/cmp-static-file-test`);
62
+ }
63
+ catch {
64
+ // no op
65
+ }
66
+ });
67
+ beforeEach(() => {
68
+ console.error = mockConsoleError;
69
+ console.log = mockConsoleLog;
70
+ });
71
+ afterEach(() => {
72
+ console.error = orgConsoleError;
73
+ });
74
+ it('Should upload the component and return a valid url to preview', async () => {
75
+ var _a, _b;
76
+ mockConsoleLog.mockClear();
77
+ await (0, index_1.uploadComponentFolder)(componentPath, config_1.default.managementServiceUrl);
78
+ const url = ((_a = /uploaded location: (.*)/.exec(mockConsoleLog.mock.lastCall)) === null || _a === void 0 ? void 0 : _a[1]) || '';
79
+ const uploadedComponent = '<a href="/r/set/cmp-static-file-test/1.0.0">1.0.0</a>';
80
+ const get = await (0, supertest_1.default)(url).get('/');
81
+ expect(get.status).toEqual(200);
82
+ expect((_b = get === null || get === void 0 ? void 0 : get.res) === null || _b === void 0 ? void 0 : _b.text).toContain(uploadedComponent);
83
+ });
84
+ it('Should fail upload the component with same version', async () => {
85
+ mockConsoleError.mockClear();
86
+ await (0, index_1.uploadComponentFolder)(componentPath, config_1.default.managementServiceUrl);
87
+ expect(mockConsoleError.mock.calls[0][0]).toEqual(cli_color_1.default.red('Cannot upload component version, cmp-static-file-test 1.0.0 already exists'));
88
+ });
89
+ it('Should render component', async () => {
90
+ const response = await helper_1.renderService.get('/r/set/cmp-static-file-test/1.0.0/?something=hello');
91
+ expect(response.status).toEqual(200);
92
+ expect(response.data).toEqual([
93
+ '<div>Input: hello</div>',
94
+ '<div>cmp-static-file-test 1.0.0 ',
95
+ `${config_1.default.renderServiceUrl}/s/cmp-static-file-test/1.0.0/birthday-cake.png</div>`,
96
+ ].join(''));
97
+ });
98
+ });
99
+ //# sourceMappingURL=upload-and-render-component.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"upload-and-render-component.spec.js","sourceRoot":"","sources":["../../src/integration-tests/upload-and-render-component.spec.ts"],"names":[],"mappings":"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"}
package/lib/test.d.ts ADDED
@@ -0,0 +1 @@
1
+ export {};
package/lib/test.js ADDED
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const dotenv_1 = require("dotenv");
4
+ (0, dotenv_1.config)();
5
+ const component_dev_1 = require("./component-dev");
6
+ const upload_component_folder_1 = require("./upload-component-folder");
7
+ // Commands test for CMP
8
+ const command = process.argv[2];
9
+ console.log('command', command);
10
+ if (command === 'dev') {
11
+ const dataMountPoint = process.env.DATA_MOUNT_POINT || '/Users/wfagerstrom/Code/component-service/test-components';
12
+ const port = process.env.PORT || '3000';
13
+ const previewFile = process.argv[3];
14
+ (0, component_dev_1.startDevelopmentRender)(dataMountPoint, { port: parseInt(port), previewFile }).then(() => {
15
+ console.log('starting');
16
+ });
17
+ }
18
+ if (command === 'upload') {
19
+ const pathToUploadTo = process.argv[3];
20
+ const componentServiceUrl = process.env.COMPONENT_MANAGEMENT_SERVICE_URL || process.argv[4];
21
+ (0, upload_component_folder_1.uploadComponentFolder)(pathToUploadTo, componentServiceUrl);
22
+ }
23
+ //# sourceMappingURL=test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test.js","sourceRoot":"","sources":["../src/test.ts"],"names":[],"mappings":";;AAAA,mCAAgC;AAEhC,IAAA,eAAM,GAAE,CAAC;AACT,mDAAyD;AACzD,uEAAkE;AAElE,wBAAwB;AAExB,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAChC,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;AAChC,IAAI,OAAO,KAAK,KAAK,EAAE;IACrB,MAAM,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,2DAA2D,CAAC;IACnH,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,MAAM,CAAC;IAExC,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpC,IAAA,sCAAsB,EAAC,cAAc,EAAE,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;QACtF,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAC1B,CAAC,CAAC,CAAC;CACJ;AACD,IAAI,OAAO,KAAK,QAAQ,EAAE;IACxB,MAAM,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACvC,MAAM,mBAAmB,GAAG,OAAO,CAAC,GAAG,CAAC,gCAAgC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC5F,IAAA,+CAAqB,EAAC,cAAc,EAAE,mBAAmB,CAAC,CAAC;CAC5D"}
@@ -0,0 +1 @@
1
+ export declare function uploadComponentFolder(folderPath: string, componentServiceManagementUrl: string): Promise<void>;
@@ -0,0 +1,126 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.uploadComponentFolder = void 0;
7
+ const virus_scanner_lib_1 = require("@squiz/virus-scanner-lib");
8
+ const component_lib_1 = require("@squiz/component-lib");
9
+ const promises_1 = __importDefault(require("fs/promises"));
10
+ const path_1 = __importDefault(require("path"));
11
+ const axios_1 = __importDefault(require("axios"));
12
+ const cli_color_1 = __importDefault(require("cli-color"));
13
+ const config_1 = __importDefault(require("./config"));
14
+ async function uploadComponentFolder(folderPath, componentServiceManagementUrl) {
15
+ const tmpDir = path_1.default.resolve(await promises_1.default.mkdtemp('cmp-upload'));
16
+ try {
17
+ const axiosInstance = axios_1.default.create({
18
+ baseURL: componentServiceManagementUrl,
19
+ headers: {
20
+ 'content-type': 'application/json',
21
+ },
22
+ });
23
+ await preUploadChecks(folderPath);
24
+ console.log('Initial scanning');
25
+ const zip = await (0, component_lib_1.zipDirectory)(folderPath, tmpDir);
26
+ const initialUpload = await handleResponse(axiosInstance.post('upload-component'));
27
+ console.log(`deployment id: ${initialUpload.id} status: transferring`);
28
+ await (0, virus_scanner_lib_1.uploadFile)(initialUpload, zip);
29
+ await watchAndWaitForUploadAndScanComplete(initialUpload.id, axiosInstance);
30
+ console.log(`deployment id: ${initialUpload.id} status: deploying component folder`);
31
+ const result = await handleResponse(axiosInstance.post(`upload-component/next/${initialUpload.id}`));
32
+ await promises_1.default.rm(tmpDir, { force: true, recursive: true });
33
+ if (result.status === 'successful') {
34
+ console.log(`deployment id: ${initialUpload.id} status: ${cli_color_1.default.green('success')}`);
35
+ console.log(`uploaded location: ${result.accessLink}`);
36
+ }
37
+ else {
38
+ console.error('failed for an unknown reason', cli_color_1.default.red(result));
39
+ }
40
+ }
41
+ catch (e) {
42
+ await promises_1.default.rm(tmpDir, { force: true, recursive: true });
43
+ if (e instanceof Error) {
44
+ console.error(cli_color_1.default.red(e.message));
45
+ }
46
+ else {
47
+ throw e;
48
+ }
49
+ }
50
+ }
51
+ exports.uploadComponentFolder = uploadComponentFolder;
52
+ async function preUploadChecks(folderPath) {
53
+ const result = await (0, component_lib_1.loadManifest)(path_1.default.join(folderPath, `manifest.json`));
54
+ if (await checkIfVersionExists(result)) {
55
+ throw new Error(`Cannot upload component version, ${result.name} ${result.version} already exists`);
56
+ }
57
+ }
58
+ async function checkIfVersionExists(inputManifest) {
59
+ const axiosInstance = axios_1.default.create({
60
+ baseURL: config_1.default.renderServiceUrl,
61
+ });
62
+ try {
63
+ const response = await axiosInstance.get(`d/${inputManifest.name}/${inputManifest.version}/manifest.json`);
64
+ if (response.status === 200) {
65
+ return true;
66
+ }
67
+ throw new Error(`Unexpected response code ${response.status}`);
68
+ }
69
+ catch (error) {
70
+ if (isAxiosError(error)) {
71
+ const { response } = error;
72
+ if ((response === null || response === void 0 ? void 0 : response.status) === 404) {
73
+ return false;
74
+ }
75
+ }
76
+ throw error;
77
+ }
78
+ }
79
+ async function watchAndWaitForUploadAndScanComplete(id, axiosInstance) {
80
+ const poll = () => handleResponse(axiosInstance.get('upload-component/status/' + id));
81
+ return new Promise((resolve, reject) => {
82
+ const recurse = () => poll().then(async (req) => {
83
+ if (req.status == 'Success') {
84
+ resolve();
85
+ }
86
+ else if (req.status == 'Flagged') {
87
+ reject(new Error('upload has been flagged as a virus'));
88
+ }
89
+ else if (req.status == 'Error') {
90
+ reject(new Error('there has been an error'));
91
+ }
92
+ else {
93
+ setTimeout(async () => {
94
+ await recurse();
95
+ }, 1000);
96
+ }
97
+ });
98
+ recurse();
99
+ });
100
+ }
101
+ async function handleResponse(axiosInstance) {
102
+ try {
103
+ const response = await axiosInstance;
104
+ return response.data;
105
+ }
106
+ catch (error) {
107
+ throw handleError(error);
108
+ }
109
+ }
110
+ function handleError(error) {
111
+ const { response } = error;
112
+ if (!response || !isAxiosError(error)) {
113
+ return error;
114
+ }
115
+ const message = response.data.message;
116
+ if (message) {
117
+ return new Error(`Unexpected response code ${response.status}. message: ${message}`);
118
+ }
119
+ else {
120
+ return new Error(`Unexpected response code ${response.status}.`);
121
+ }
122
+ }
123
+ function isAxiosError(error) {
124
+ return error && error.isAxiosError === true;
125
+ }
126
+ //# sourceMappingURL=upload-component-folder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"upload-component-folder.js","sourceRoot":"","sources":["../src/upload-component-folder.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@squiz/component-cli-lib",
3
- "version": "1.2.1-alpha.89",
3
+ "version": "1.2.1-alpha.90",
4
4
  "description": "",
5
5
  "main": "lib/index.js",
6
6
  "scripts": {
@@ -28,13 +28,13 @@
28
28
  "typescript": "4.7.4"
29
29
  },
30
30
  "dependencies": {
31
- "@squiz/component-lib": "^1.2.1-alpha.89",
32
- "@squiz/render-runtime-lib": "^1.2.1-alpha.89",
33
- "@squiz/virus-scanner-lib": "^1.2.1-alpha.89",
31
+ "@squiz/component-lib": "^1.2.1-alpha.90",
32
+ "@squiz/render-runtime-lib": "^1.2.1-alpha.90",
33
+ "@squiz/virus-scanner-lib": "^1.2.1-alpha.90",
34
34
  "archiver": "5.3.1",
35
35
  "axios": "0.27.2",
36
36
  "cli-color": "^2.0.2",
37
37
  "supertest": "^6.2.3"
38
38
  },
39
- "gitHead": "d42ff3393c6e336ee05519872dbb58112ef045d1"
39
+ "gitHead": "e24bffe214b36e573aa683da20765bc0b7aa68a6"
40
40
  }
@@ -0,0 +1 @@
1
+ {"program":{"fileNames":["./node_modules/typescript/lib/lib.es5.d.ts","./node_modules/typescript/lib/lib.es2015.d.ts","./node_modules/typescript/lib/lib.es2016.d.ts","./node_modules/typescript/lib/lib.es2017.d.ts","./node_modules/typescript/lib/lib.es2018.d.ts","./node_modules/typescript/lib/lib.es2019.d.ts","./node_modules/typescript/lib/lib.es2020.d.ts","./node_modules/typescript/lib/lib.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.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.esnext.intl.d.ts","./node_modules/typescript/lib/lib.es2019.full.d.ts","../component-lib/lib/manifest-schemas/v1.d.ts","../component-lib/lib/manifest.d.ts","../component-lib/node_modules/uri-js/dist/es5/uri.all.d.ts","../component-lib/node_modules/ajv/dist/compile/codegen/code.d.ts","../component-lib/node_modules/ajv/dist/compile/codegen/scope.d.ts","../component-lib/node_modules/ajv/dist/compile/codegen/index.d.ts","../component-lib/node_modules/ajv/dist/compile/rules.d.ts","../component-lib/node_modules/ajv/dist/compile/util.d.ts","../component-lib/node_modules/ajv/dist/compile/validate/subschema.d.ts","../component-lib/node_modules/ajv/dist/compile/errors.d.ts","../component-lib/node_modules/ajv/dist/compile/validate/index.d.ts","../component-lib/node_modules/ajv/dist/compile/validate/datatype.d.ts","../component-lib/node_modules/ajv/dist/vocabularies/applicator/additionalitems.d.ts","../component-lib/node_modules/ajv/dist/vocabularies/applicator/items2020.d.ts","../component-lib/node_modules/ajv/dist/vocabularies/applicator/contains.d.ts","../component-lib/node_modules/ajv/dist/vocabularies/applicator/dependencies.d.ts","../component-lib/node_modules/ajv/dist/vocabularies/applicator/propertynames.d.ts","../component-lib/node_modules/ajv/dist/vocabularies/applicator/additionalproperties.d.ts","../component-lib/node_modules/ajv/dist/vocabularies/applicator/not.d.ts","../component-lib/node_modules/ajv/dist/vocabularies/applicator/anyof.d.ts","../component-lib/node_modules/ajv/dist/vocabularies/applicator/oneof.d.ts","../component-lib/node_modules/ajv/dist/vocabularies/applicator/if.d.ts","../component-lib/node_modules/ajv/dist/vocabularies/applicator/index.d.ts","../component-lib/node_modules/ajv/dist/vocabularies/validation/limitnumber.d.ts","../component-lib/node_modules/ajv/dist/vocabularies/validation/multipleof.d.ts","../component-lib/node_modules/ajv/dist/vocabularies/validation/pattern.d.ts","../component-lib/node_modules/ajv/dist/vocabularies/validation/required.d.ts","../component-lib/node_modules/ajv/dist/vocabularies/validation/uniqueitems.d.ts","../component-lib/node_modules/ajv/dist/vocabularies/validation/const.d.ts","../component-lib/node_modules/ajv/dist/vocabularies/validation/enum.d.ts","../component-lib/node_modules/ajv/dist/vocabularies/validation/index.d.ts","../component-lib/node_modules/ajv/dist/vocabularies/format/format.d.ts","../component-lib/node_modules/ajv/dist/vocabularies/unevaluated/unevaluatedproperties.d.ts","../component-lib/node_modules/ajv/dist/vocabularies/unevaluated/unevaluateditems.d.ts","../component-lib/node_modules/ajv/dist/vocabularies/validation/dependentrequired.d.ts","../component-lib/node_modules/ajv/dist/vocabularies/discriminator/types.d.ts","../component-lib/node_modules/ajv/dist/vocabularies/discriminator/index.d.ts","../component-lib/node_modules/ajv/dist/vocabularies/errors.d.ts","../component-lib/node_modules/ajv/dist/types/json-schema.d.ts","../component-lib/node_modules/ajv/dist/types/jtd-schema.d.ts","../component-lib/node_modules/ajv/dist/runtime/validation_error.d.ts","../component-lib/node_modules/ajv/dist/compile/ref_error.d.ts","../component-lib/node_modules/ajv/dist/core.d.ts","../component-lib/node_modules/ajv/dist/compile/resolve.d.ts","../component-lib/node_modules/ajv/dist/compile/index.d.ts","../component-lib/node_modules/ajv/dist/types/index.d.ts","../component-lib/node_modules/ajv/dist/ajv.d.ts","../component-lib/lib/validator/schemas.d.ts","../component-lib/lib/validator/validationfailure.d.ts","../component-lib/lib/validator/validationsuccess.d.ts","../component-lib/lib/validator/validatemanifest.d.ts","../component-lib/lib/validator/isvalidationfailure.d.ts","../component-lib/lib/component-sets/loadcomponentset.d.ts","../component-lib/lib/loaders/loadedcomponent.d.ts","../component-lib/lib/loaders/loadcomponent.d.ts","../component-lib/lib/loaders/loadmanifest.d.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/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/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/timers.d.ts","./node_modules/@types/node/timers/promises.d.ts","./node_modules/@types/node/tls.d.ts","./node_modules/@types/node/trace_events.d.ts","./node_modules/@types/node/tty.d.ts","./node_modules/@types/node/url.d.ts","./node_modules/@types/node/util.d.ts","./node_modules/@types/node/v8.d.ts","./node_modules/@types/node/vm.d.ts","./node_modules/@types/node/wasi.d.ts","./node_modules/@types/node/worker_threads.d.ts","./node_modules/@types/node/zlib.d.ts","./node_modules/@types/node/globals.global.d.ts","./node_modules/@types/node/index.d.ts","./node_modules/@types/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","../component-lib/node_modules/@types/connect/index.d.ts","../component-lib/node_modules/@types/body-parser/index.d.ts","../component-lib/node_modules/@types/serve-static/index.d.ts","../component-lib/node_modules/@types/express-serve-static-core/index.d.ts","../component-lib/node_modules/@types/qs/index.d.ts","../component-lib/node_modules/@types/express/index.d.ts","../component-lib/lib/server-utils/errormiddleware.d.ts","../component-lib/lib/server-utils/requestlogger.d.ts","../component-lib/lib/zip/zipdirectory.d.ts","../component-lib/lib/error/errorwithhttpstatuscode.d.ts","../component-lib/lib/error/badrequesterror.d.ts","../component-lib/lib/error/internalservererror.d.ts","../component-lib/lib/error/resourcenotfounderror.d.ts","../component-lib/lib/error/timeouterror.d.ts","../component-lib/lib/error/componenterror.d.ts","../component-lib/lib/error/index.d.ts","../component-lib/lib/component-context/createcomponentcontext.d.ts","../component-lib/lib/util/joinabsoluteurlpath.d.ts","../component-lib/lib/util/parseenvvarforvar.d.ts","../component-lib/lib/util/getnodeenv.d.ts","../component-lib/lib/util/ispathtryingtoaccessoutsideofroot.d.ts","../db-lib/node_modules/pg-types/index.d.ts","../db-lib/node_modules/pg-protocol/dist/messages.d.ts","../db-lib/node_modules/pg-protocol/dist/serializer.d.ts","../db-lib/node_modules/pg-protocol/dist/parser.d.ts","../db-lib/node_modules/pg-protocol/dist/index.d.ts","../db-lib/node_modules/@types/pg/index.d.ts","../db-lib/lib/repositories.d.ts","../db-lib/lib/abstractrepository.d.ts","../db-lib/lib/connectionmanager.d.ts","../db-lib/lib/migrator.d.ts","../db-lib/lib/getconnectioninfo.d.ts","../db-lib/lib/index.d.ts","../component-db-lib/node_modules/@types/pg/index.d.ts","../component-db-lib/lib/domains/component/models/component.d.ts","../component-db-lib/lib/domains/component/repositories/componentrepository.d.ts","../component-db-lib/lib/domains/component/models/componentversion.d.ts","../component-db-lib/lib/domains/component/repositories/componentversionrepository.d.ts","../component-db-lib/lib/domains/component/models/componentset.d.ts","../component-db-lib/lib/domains/component/repositories/componentsetrepository.d.ts","../component-db-lib/lib/domains/component/models/componentsetcomponentversion.d.ts","../component-db-lib/lib/domains/component/repositories/componentsetcomponentversionrepository.d.ts","../component-db-lib/lib/componentrepositories.d.ts","../component-db-lib/lib/componentconnectionmanager.d.ts","../component-db-lib/lib/createconnectionmanager.d.ts","../component-db-lib/lib/index.d.ts","../component-lib/lib/component-service/services/componentservice.d.ts","../component-lib/lib/component-service/models/componentset.d.ts","../component-lib/lib/component-service/services/componentsetservice.d.ts","../component-lib/lib/component-service/services/index.d.ts","../component-lib/lib/component-service/models/componentsetcomponentversion.d.ts","../component-lib/lib/component-service/models/index.d.ts","../component-lib/lib/index.d.ts","../render-runtime-lib/lib/component-runner/index.d.ts","../render-runtime-lib/lib/webserver/index.d.ts","../render-runtime-lib/lib/test/helpers/fixtures.d.ts","../render-runtime-lib/node_modules/@types/cookiejar/index.d.ts","../render-runtime-lib/node_modules/@types/superagent/index.d.ts","../render-runtime-lib/node_modules/@types/supertest/index.d.ts","../render-runtime-lib/lib/test/helpers/stack.d.ts","../render-runtime-lib/lib/test/index.d.ts","../render-runtime-lib/lib/webserver/controllers/test/definition-route-tests.d.ts","../render-runtime-lib/lib/webserver/controllers/test/static-route-tests.d.ts","../render-runtime-lib/lib/webserver/controllers/test/render-route-tests.d.ts","../render-runtime-lib/lib/index.d.ts","./src/component-dev.ts","./node_modules/@types/supertest/index.d.ts","./src/component-dev.spec.ts","./node_modules/dotenv/lib/main.d.ts","./src/config.ts","../virus-scanner-lib/node_modules/axios/index.d.ts","../virus-scanner-lib/lib/generated/models/initialscan.d.ts","../virus-scanner-lib/lib/generated/models/scanstatus.d.ts","../virus-scanner-lib/lib/generated/schemas/$initialscan.d.ts","../virus-scanner-lib/lib/generated/schemas/$scanstatus.d.ts","../virus-scanner-lib/lib/generated/index.d.ts","../virus-scanner-lib/lib/virusscanner.d.ts","../virus-scanner-lib/lib/uploadfile.d.ts","../virus-scanner-lib/lib/index.d.ts","./node_modules/axios/index.d.ts","./node_modules/@types/cli-color/art.d.ts","./node_modules/@types/cli-color/bare.d.ts","./node_modules/@types/cli-color/beep.d.ts","./node_modules/@types/cli-color/columns.d.ts","./node_modules/@types/cli-color/erase.d.ts","./node_modules/@types/cli-color/move.d.ts","./node_modules/@types/cli-color/get-stripped-length.d.ts","./node_modules/@types/cli-color/slice.d.ts","./node_modules/@types/cli-color/strip.d.ts","./node_modules/@types/cli-color/throbber.d.ts","./node_modules/@types/cli-color/reset.d.ts","./node_modules/@types/cli-color/window-size.d.ts","./node_modules/@types/cli-color/index.d.ts","./src/upload-component-folder.ts","./src/index.ts","./src/test.ts","./src/integration-tests/helper.ts","./src/integration-tests/service-deployment.spec.ts","./src/integration-tests/test-setup.ts","./src/integration-tests/upload-and-render-component.spec.ts","./src/integration-tests/__components__/big-package/manifest.json","./src/integration-tests/__components__/cmp-static-file-test/manifest.json","./src/integration-tests/__components__/invalid-manifest/manifest.json","./node_modules/chalk/index.d.ts","./node_modules/@sinclair/typebox/typebox.d.ts","./node_modules/@jest/schemas/build/index.d.ts","./node_modules/pretty-format/build/index.d.ts","./node_modules/jest-diff/build/index.d.ts","./node_modules/jest-matcher-utils/build/index.d.ts","./node_modules/@types/jest/index.d.ts","../render-runtime-lib/node_modules/@types/node/index.d.ts"],"fileInfos":[{"version":"f5c28122bee592cfaf5c72ed7bcc47f453b79778ffa6e301f45d21a0970719d4","affectsGlobalScope":true},"dc47c4fa66b9b9890cf076304de2a9c5201e94b740cffdf09f87296d877d71f6","7a387c58583dfca701b6c85e0adaf43fb17d590fb16d5b2dc0a2fbd89f35c467","8a12173c586e95f4433e0c6dc446bc88346be73ffe9ca6eec7aa63c8f3dca7f9","5f4e733ced4e129482ae2186aae29fde948ab7182844c3a5a51dd346182c7b06","e6b724280c694a9f588847f754198fb96c43d805f065c3a5b28bbc9594541c84","1fc5ab7a764205c68fa10d381b08417795fc73111d6dd16b5b1ed36badb743d9",{"version":"3f149f903dd20dfeb7c80e228b659f0e436532de772469980dbd00702cc05cc1","affectsGlobalScope":true},{"version":"1272277fe7daa738e555eb6cc45ded42cc2d0f76c07294142283145d49e96186","affectsGlobalScope":true},{"version":"7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481","affectsGlobalScope":true},{"version":"097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd","affectsGlobalScope":true},{"version":"adb996790133eb33b33aadb9c09f15c2c575e71fb57a62de8bf74dbf59ec7dfb","affectsGlobalScope":true},{"version":"43fb1d932e4966a39a41b464a12a81899d9ae5f2c829063f5571b6b87e6d2f9c","affectsGlobalScope":true},{"version":"cdccba9a388c2ee3fd6ad4018c640a471a6c060e96f1232062223063b0a5ac6a","affectsGlobalScope":true},{"version":"c5c05907c02476e4bde6b7e76a79ffcd948aedd14b6a8f56e4674221b0417398","affectsGlobalScope":true},{"version":"0d5f52b3174bee6edb81260ebcd792692c32c81fd55499d69531496f3f2b25e7","affectsGlobalScope":true},{"version":"810627a82ac06fb5166da5ada4159c4ec11978dfbb0805fe804c86406dab8357","affectsGlobalScope":true},{"version":"181f1784c6c10b751631b24ce60c7f78b20665db4550b335be179217bacc0d5f","affectsGlobalScope":true},{"version":"3013574108c36fd3aaca79764002b3717da09725a36a6fc02eac386593110f93","affectsGlobalScope":true},{"version":"75ec0bdd727d887f1b79ed6619412ea72ba3c81d92d0787ccb64bab18d261f14","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":"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":"09aa50414b80c023553090e2f53827f007a301bc34b0495bfb2c3c08ab9ad1eb","affectsGlobalScope":true},{"version":"d7f680a43f8cd12a6b6122c07c54ba40952b0c8aa140dcfcf32eb9e6cb028596","affectsGlobalScope":true},{"version":"3787b83e297de7c315d55d4a7c546ae28e5f6c0a361b7a1dcec1f1f50a54ef11","affectsGlobalScope":true},{"version":"e7e8e1d368290e9295ef18ca23f405cf40d5456fa9f20db6373a61ca45f75f40","affectsGlobalScope":true},{"version":"faf0221ae0465363c842ce6aa8a0cbda5d9296940a8e26c86e04cc4081eea21e","affectsGlobalScope":true},{"version":"06393d13ea207a1bfe08ec8d7be562549c5e2da8983f2ee074e00002629d1871","affectsGlobalScope":true},{"version":"cd483c056da900716879771893a3c9772b66c3c88f8943b4205aec738a94b1d0","affectsGlobalScope":true},{"version":"b248e32ca52e8f5571390a4142558ae4f203ae2f94d5bac38a3084d529ef4e58","affectsGlobalScope":true},{"version":"c37f8a49593a0030eecb51bbfa270e709bec9d79a6cc3bb851ef348d4e6b26f8","affectsGlobalScope":true},"1f03b495671c3a1bd24510f38b8947f0991dfd6bf0278c68eca14af15b306e1f","5e723070f090b6dc5210efbca97c13d4f18102fc8edcf9359c03d203c9c9db6b","3f28cb39b92af8c1fa0577f97f78649dd1088f7034bad4c2447eb247973d33a0","9f3c5498245c38c9016a369795ec5ef1768d09db63643c8dba9656e5ab294825","44a8d350600656882fd7462774e32e8d13788313ba2e36d2e8d5437ac91b98df","60bb0e47502bf8716d1230288b4e6387c1d34cded12752ab5338108e2e662e67","b8870b5155d11a273c75718a4f19026da49f91c548703858cd3400d06c3bd3b8","b3ae4ded82f27cabba780b9af9647f6e08c9a4cabe8fbb7a0cca69c7add9ef4b","8d26ae32e5c9c080e44aee4a67e5ef02b5fda0604e6fecbb7b753c537e5282d9","05c4e792dae38912ba333725cdf8c42d242337d006c0d887f4ce5a7787871a95","cd44995ee13d5d23df17a10213fed7b483fabfd5ea08f267ab52c07ce0b6b4da","58ce1486f851942bd2d3056b399079bc9cb978ec933fe9833ea417e33eab676e","1a23b521db8d7ec9e2b96c6fbd4c7e96d12f408b1e03661b3b9f7da7291103e6","d3d0d11d30c9878ada3356b9c36a2754b8c7b6204a41c86bfb1488c08ce263b0","a6493f1f479637ed89a3ebec03f6dc117e3b1851d7e938ac4c8501396b8639a8","ae0951e44973e928fe2e999b11960493835d094b16adac0b085a79cff181bcb9","9d00e3a59eff68fa8c40e89953083eeaad1c5b2580ed7da2304424b249ecb237","1609ad4d488c356ee91eba7d7aa87cc6fb59bc8ac05c1a8f08665285ba3b71ad","8add088f72326098d68d622ddb024c00ae56a912383efe96b03f0481db88f7c9","dd17fe6332567b8f13e33dd3ff8926553cdcea2ad32d4350ce0063a2addaa764","4091d56a4622480549350b8811ec64c7826cd41a70ce5d9c1cc20384bb144049","353c0125b9e50c2a71e18394d46be5ccb37161cc0f0e7c69216aa6932c8cdafb","9c5d5f167e86b6ddf7142559a17d13fd39c34e868ae947c40381db866eed6609","4430dea494b0ee77bf823d9a7c4850a539e1060d5d865316bb23fb393e4f01d7","aae698ceead4edad0695b9ea87e43f274e698bdb302c8cb5fd2cab4dc496ccf0","51631e9a0c041e12479ab01f5801d8a237327d19e9ee37d5f1f66be912631425","c9d5d8adb1455f49182751ce885745dcc5f9697e9c260388bc3ae9d1860d5d10","f64289e3fa8d5719eaf5ba1bb02dd32dbbf7c603dda75c16770a6bc6e9c6b6d9","b1aa0e2e3511a8d10990f35866405c64c9e576258ef99eeb9ebafed980fd7506","2d255a5287f2fb5295688cb25bd18e1cd59866179f795f3f1fd6b71b7f0edf8f","43c1dbb78d5277a5fdd8fddce8b257f84ffa2b4253f58b95c04a310710d19e97","6c669d7e080344c1574aa276a89e57c3b9f0e97fab96a09427e7dfb19ca261bf","b71ac126853867d8e64c910f47d46d05c5ea797987d2604f63d401507dc43b6d","9a37238558d28b7ee06d08599e92eab30b90704541cc85e6448009d6d55fffa9","120b14d66a061910309ff97e7b06b5c6c09444218178b80b687a92af4d22d5dc","3de958065e3a44cbe0bfa667813bc59c63e63c9ce522af8dc1b64714910fa9ba","66e655f7c43558bae6703242cbd6c0551a94d0a97204bd4c4bbf7e77f24d1f85","72f7b32e023814078046c036ed4b7ad92414be0aebb63e805c682e14103ae38a","a89d8e67966d085ff971c9900cfa1abdd9732bab66d9c1914ecc15befdf8623d","7dfd0308261bb91b058eb91802690fe3f09192b263e070a19df4d629df29e265","608eb9d411ac76e93a10e05f8aae92b3a5cefc87594219b737df7c8737ba2bd7","cde493e09daad4bb29922fe633f760be9f0e8e2f39cdca999cce3b8690b5e13a","3d7f9eb12aface876f7b535cc89dcd416daf77f0b3573333f16ec0a70bcf902a","93ba4ac36f570c70a12d588e21c10dda9f351fad3e77d416952acddb27bff01d","8750f9dc1e277ffff7446c95571bae61aca0984e8f99e40fc1e8cb7161ae0642","66408d81ba8962282b1a55da34c6bd767105141f54d0ba14dca330efe0c8f552","7481b9d93ca44eb1f689e0b939545ff00dead7bdb9daba401dfb74292d83f831","821e64ddbdfa10fac5f0aed1c1d4e1f275840400caa96357ddfd15d02e5afba1","53152d1fc53a5283097f9a3e2c35f338bcbf4ed7c236e2418d4e54ae03dc84b9","bf2b9e09ab805a9dfd942bce104f9b08c4aca6acd6d2bc51c1558269f7d6dbf8","c5c02cf97dd48e47f77dc973fa082b4610ea30964f8d92a83e6366ac944380d0","42bf40a061bfd8d72f0b2590bd437cffe189c19cd44e3bf5e7a0b7c6d76862d2","5b312a14de195172d56bee9129237403eca227b03c214af351196bd91cf94fe0","e6d30c042473d086896f5d16cd4fe9ab080196fe83c71fc488f10aaaf23213e3","8bd667551d33b0fed3004cff0996269c57eecf52d5c9289686a3326a248891f1","fc6c5f80278a557771c3e05a7b7165e564d596cfd182e767918720281ef3fc9a","01e3ba30dc29ed4ce3c1b499540ab47cd8aebd1422e2a9f9035bab2b3319105e","0cba3a5d7b81356222594442753cf90dd2892e5ccfe1d262aaca6896ba6c1380","a69c09dbea52352f479d3e7ac949fde3d17b195abe90b045d619f747b38d6d1a",{"version":"c2ab70bbc7a24c42a790890739dd8a0ba9d2e15038b40dff8163a97a5d148c00","affectsGlobalScope":true},"422dbb183fdced59425ca072c8bd09efaa77ce4e2ab928ec0d8a1ce062d2a45a",{"version":"fcdcb42da18dd98dc286b1876dd425791772036012ae61263c011a76b13a190f","affectsGlobalScope":true},"1dab5ab6bcf11de47ab9db295df8c4f1d92ffa750e8f095e88c71ce4c3299628","f71f46ccd5a90566f0a37b25b23bc4684381ab2180bdf6733f4e6624474e1894",{"version":"54e65985a3ee3cec182e6a555e20974ea936fc8b8d1738c14e8ed8a42bd921d4","affectsGlobalScope":true},"82408ed3e959ddc60d3e9904481b5a8dc16469928257af22a3f7d1a3bc7fd8c4","918a76828d88a73924bb26fef58040a6eb8a9adb7e407ea7264175520dda9450","34e5de87d983bc6aefef8b17658556e3157003e8d9555d3cb098c6bef0b5fbc8","cc0b61316c4f37393f1f9595e93b673f4184e9d07f4c127165a490ec4a928668","f27371653aded82b2b160f7a7033fb4a5b1534b6f6081ef7be1468f0f15327d3","c762cd6754b13a461c54b59d0ae0ab7aeef3c292c6cf889873f786ee4d8e75c9","f4ea7d5df644785bd9fbf419930cbaec118f0d8b4160037d2339b8e23c059e79",{"version":"bfea28e6162ed21a0aeed181b623dcf250aa79abf49e24a6b7e012655af36d81","affectsGlobalScope":true},"b8aca9d0c81abb02bec9b7621983ae65bde71da6727580070602bd2500a9ce2a","ae97e20f2e10dbeec193d6a2f9cd9a367a1e293e7d6b33b68bacea166afd7792","10d4796a130577d57003a77b95d8723530bbec84718e364aa2129fa8ffba0378","063f53ff674228c190efa19dd9448bcbd540acdbb48a928f4cf3a1b9f9478e43","bf73c576885408d4a176f44a9035d798827cc5020d58284cb18d7573430d9022","7ae078ca42a670445ae0c6a97c029cb83d143d62abd1730efb33f68f0b2c0e82",{"version":"e8b18c6385ff784228a6f369694fcf1a6b475355ba89090a88de13587a9391d5","affectsGlobalScope":true},"287b21dc1d1b9701c92e15e7dd673dfe6044b15812956377adffb6f08825b1bc","12eea70b5e11e924bb0543aea5eadc16ced318aa26001b453b0d561c2fd0bd1e","08777cd9318d294646b121838574e1dd7acbb22c21a03df84e1f2c87b1ad47f2","08a90bcdc717df3d50a2ce178d966a8c353fd23e5c392fd3594a6e39d9bb6304",{"version":"4cd4cff679c9b3d9239fd7bf70293ca4594583767526916af8e5d5a47d0219c7","affectsGlobalScope":true},"2a12d2da5ac4c4979401a3f6eaafa874747a37c365e4bc18aa2b171ae134d21b","002b837927b53f3714308ecd96f72ee8a053b8aeb28213d8ec6de23ed1608b66","1dc9c847473bb47279e398b22c740c83ea37a5c88bf66629666e3cf4c5b9f99c","a9e4a5a24bf2c44de4c98274975a1a705a0abbaad04df3557c2d3cd8b1727949","00fa7ce8bc8acc560dc341bbfdf37840a8c59e6a67c9bfa3fa5f36254df35db2","1b952304137851e45bc009785de89ada562d9376177c97e37702e39e60c2f1ff",{"version":"806ef4cac3b3d9fa4a48d849c8e084d7c72fcd7b16d76e06049a9ed742ff79c0","affectsGlobalScope":true},"44b8b584a338b190a59f4f6929d072431950c7bd92ec2694821c11bce180c8a5","5f0ed51db151c2cdc4fa3bb0f44ce6066912ad001b607a34e65a96c52eb76248",{"version":"3345c276cab0e76dda86c0fb79104ff915a4580ba0f3e440870e183b1baec476","affectsGlobalScope":true},"664d8f2d59164f2e08c543981453893bc7e003e4dfd29651ce09db13e9457980","103d70bfbeb3cd3a3f26d1705bf986322d8738c2c143f38ebb743b1e228d7444","f52fbf64c7e480271a9096763c4882d356b05cab05bf56a64e68a95313cd2ce2","59bdb65f28d7ce52ccfc906e9aaf422f8b8534b2d21c32a27d7819be5ad81df7",{"version":"3a2da34079a2567161c1359316a32e712404b56566c45332ac9dcee015ecce9f","affectsGlobalScope":true},"28a2e7383fd898c386ffdcacedf0ec0845e5d1a86b5a43f25b86bc315f556b79","3aff9c8c36192e46a84afe7b926136d520487155154ab9ba982a8b544ea8fc95","a880cf8d85af2e4189c709b0fea613741649c0e40fffb4360ec70762563d5de0","85bbf436a15bbeda4db888be3062d47f99c66fd05d7c50f0f6473a9151b6a070","9f9c49c95ecd25e0cb2587751925976cf64fd184714cb11e213749c80cf0f927","f0c75c08a71f9212c93a719a25fb0320d53f2e50ca89a812640e08f8ad8c408c",{"version":"ab9b9a36e5284fd8d3bf2f7d5fcbc60052f25f27e4d20954782099282c60d23e","affectsGlobalScope":true},"9cafe917bf667f1027b2bb62e2de454ecd2119c80873ad76fc41d941089753b8","16d51f964ec125ad2024cf03f0af444b3bc3ec3614d9345cc54d09bab45c9a4c","ba601641fac98c229ccd4a303f747de376d761babb33229bb7153bed9356c9cc",{"version":"ae3fe461989bbd951344efc1f1fe932360ce7392e6126bdb225a82a1bbaf15ee","affectsGlobalScope":true},"5b9ecf7da4d71cf3832dbb8336150fa924631811f488ad4690c2dfec2b4fb1d7","951c85f75aac041dddbedfedf565886a7b494e29ec1532e2a9b4a6180560b50e","f47887b61c6cf2f48746980390d6cb5b8013518951d912cfb37fe748071942be","6d829824ead8999f87b6df21200df3c6150391b894b4e80662caa462bd48d073","afc559c1b93df37c25aef6b3dfa2d64325b0e112e887ee18bf7e6f4ec383fc90","f47887b61c6cf2f48746980390d6cb5b8013518951d912cfb37fe748071942be",{"version":"ae3fe461989bbd951344efc1f1fe932360ce7392e6126bdb225a82a1bbaf15ee","affectsGlobalScope":true},"ba601641fac98c229ccd4a303f747de376d761babb33229bb7153bed9356c9cc","15c88bfd1b8dc7231ff828ae8df5d955bae5ebca4cf2bcb417af5821e52299ae","1c26b05af1ecc2d8a9d2e682931ec21658c842a792ced4dcf18ea5a49f1a695e","580304f233b87c918b6ee81c358b2efe818284fe19584e28e5a26026d8a355cf","558e0d1c797f78421be23db3c79a93db5b6c26a42a1e2b55a3efba037f26ab48","048c8482f35a0f3abd2ec8c86ba7b3c86af4906ebb7a12e4fbdc8d6896eb19dc","69c97795fcaf5bf566a1efcc24e5a5bf2d8c261ad1851239b0504c9c4a9e9cc0","9dfc364342a667c968f9be3ff7865abaf477df206a936b578b2a98eeaff0e318","56d6e24f71ed721db5a196fc6ab8523f0f469f7ae01b663ddea59981e0d82423","0bccccdd597d8a14213654d62b6ec25f37925bcd9bf6b9470006867478d7f612","b089e61130588931583bb35fa3de8fbf8695ed2b84de63d6623cdc935f6da676","9acbadd311ff3c3befca95fffdebbb1e703c437f708ff22c1324243c8f1c8d19","8671015544c781db69e1812986381ebc2b6dd303dfdf57b5c4ad45ed4c471deb","4889ae7c801238c611fcc96216b4b0bcdf39f0da707c77ca19fe561371029d11","e5e691ae3d8407aace8fba0029a6092c58eabaeeacc1325fa9c26e44f2776d53","87307be8e09e256fef6f626127e27cb03b10a9a488ebbaa0ec6ee748e9b14b78","02d39a917634d874c61968720d803fc08c236a5e5e22dfa910a8582a58d8f772","f60e3e3060207ac982da13363181fd7ee4beecc19a7c569f0d6bb034331066c2","17230b34bb564a3a2e36f9d3985372ccab4ad1722df2c43f7c5c2b553f68e5db","87ed0f84f0691d5c724b23159db96342e6b04ac69201b02c65936f4281ce1fbe","13868c5792808236b17dfe2803eafce911ea4d09d3b2fda95391891a494f988f","0dfe35191a04e8f9dc7caeb9f52f2ee07402736563d12cbccd15fb5f31ac877f","fa5c2d3fcd8e227e180815df0a0903ed4b116400452af8a75ac5b68e5e1de9da","38fe7497e80119c5beed36c7996f97964aea1975f19b9aa88fbd1e0972056bbf","2cd5befa33a9840f3d81fd45ddd5248437577a6f5982d8fca6489a731ad3501a","6a56ce54933ae2df87c81831a23e2da646c4e0fa84c69002c0a107234f5061e2","a63b55afd087ce84938e789a456e490b089ad12a2d50fe3fea66510cf80af002","016b1d5159ee90e7dc54361629b64fe3c4950705b68b431035447a0c4e33f39a","4be24031f6c5dbf4723fa0b0af3475fe7d500b8aa608c29e0e855d95fb4fd92b","fa5c2d3fcd8e227e180815df0a0903ed4b116400452af8a75ac5b68e5e1de9da","52d7bb5404c05f86c6b97365ec0a40a07ab8e809dd33a642f56b017232d546e6","4492560b6e4e1e512e47848f5b8f89df4d062eb590c08c951f3fddbb159b35fe","2c79bdadf3bca2286ef11e176b4dc832c8e3722744dc686bdde0b93dece3e5f7","d028760668055f3f238c075741ad7899b153cd34b4e90fe6d749499928554a9d","11eaaa936aa6bda15f6c29abe702e05ef8fe5a8476202b184416cfdd1caa3b91","219712a32dc57733b1d26fda15a00ca22eea92bd79518ccadafcd97a89be28b5","cddc319d62dbf2846274e3e5843c0b81528d4d633842388fd3d2666190468870","d510da3951ae86e734073b8e7825f01b3c6f63590b07b04e995d70410cb4b84b","48da6cbe78f7a59530a92ed9cbe28215fe8d9c2d70554b21b83096159af70d8d","0ce62dc8ce5e95c432ac56f1a923bd40ba36e45388429f7500ffa8b7fa703936","4ac676982840f89f64ef36c6a7efa3ff96090ea877aab1b27f105127cc3174c9","243d435f739d92379487bf3d57c115e25cf8f5fb253b05ace14a633aad5d0ebe","3e27a45e25071cca79591066da0b81e15ba793f8efe2228b930904b86c5869d1","27760aa74d9a21a71e3ca88c01b6fc637ab763a70eb9fe7e3f015d884cc07bc8","426e244ae33c547810aebd75a2d1ab965a0cb2561cfd49d9daea1b6533426daa","e58f5cdb301a37d37d13dbb184849a295c5221a8c5560f632f8c12b0d0afa284","9e2a475d65d2f09449160c6d1e3277bcf26f684a56ac607212bca7a69767dd7a","503d168e6f2d1d554a45bbaeef0358459ea9b0a8118d51d6b7aaede0f63b48e0","1efb93f7fba1b59cfb81acc7a60c8cabc1bd543b57fad08f349f18a7caa2414f","ea075c9c3ced22ce617dfe01b075bba84570b3324d984ffe0150beb2004fdf1f","29af0ec0c0aff97435147afb200b9d2dac8e51a6a7efd65d291a8033dd791713","92a5f5f848269cadd55e46460445947804a49bf80d6f36043ad6b9ff8cda815a","8d48b8f8a377ade8dd1f000625bc276eea067f2529cc9cafdf082d17142107d6","31c502014e5ba046d5cb060136929b73fd53f0f989aa37b2b0424644cb0d93ef","76232dbb982272b182a76ad8745a9b02724dc9896e2328ce360e2c56c64c9778","06ecf824b4dfc90230aa004c346ed18b0ea3f55c364ac91c31c24beb877c0777","bb5077aa8b1acaed1d5ef6c20c4efa82b74465be99b3e83137d4a50a1b48aa4a","29868a2e889c5bb3f6c00c9513f5678a5b0b86f03c6bdae433ae285ed6289ddf","fb707ce406246f61190384489204eaa70de40e9aa4dedb3fbc9eacfc2a4ee890","fce50162c435aa1421f2b095060b38691e4b34b1a25b66b41916aa0031c56a52","8750c48a3f5e9159bc7cae33f7ac334d6a81d873bb48e4261145eed5587fc21f",{"version":"66c4f777379d3b0edbb24867b73fba7dda6f4c85aae52f71a8d332b7d06f8ae3","signature":"dc4d4c50f0a28026c274a57b8a56db457ed85f5138d41489c8401de03ae09d85"},"76232dbb982272b182a76ad8745a9b02724dc9896e2328ce360e2c56c64c9778",{"version":"1f254358a2b8f3a01ccb9f5984bc2d037269f9b0987cf97a45eb173d2be580fa","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},"cfdd927a5eae7a7e623b9745722ef3f2b7a2997fddc5d32b7e3dcaeeb15ff4a3",{"version":"4197515c3fb4bc35d9015c0dbca82e0bea10f8458000c6712bb4e80ed9dc2cbc","signature":"80b8f0cbb904521beaa1c256d6c02dfbbb83740d0e1424c906103895f2938c7d"},"d88dc05fd345b7a4e1816bbfd2dd087eefa9b9e36096818c2348f5b246971125","ca9ebc5b0d02b1a6417aa85f7c8c685a8ed1b71e496367f21fa80b5884e648c7","4dd414d700d383f51e95de06a3dd767ecfc6e884207df2ab6bbf0a5ee2947197","dd1376343798071eca045504b679ce66db19e716df789de32a34e6cd4117e56e","d6916856643459f6295b01a3c2bb1a91885d50a13bb2a675b4c760947c881938","b1f03c33978d580e40b089312d9b86c827af12db5939d001e2b6ddeed864f216","4aa198370b45595ab2b079184272dacdd1d3a6e185b5a8bc25b6c57822eb301d","fb6ea4754383178e666a5839222f181c5cc28e0b07e3324dcd19dbd61062d844","37ce3e0b120cdeb2028f060b8c0e4ef399647bba65812e376b65721ac4256421","d88dc05fd345b7a4e1816bbfd2dd087eefa9b9e36096818c2348f5b246971125","a7b9533447378e7f34fa432e26be9102173e79bceb65b20d258d61c4042e90ad","d71ffe64592c4e61c6b431d8fbaff58735cd659738d788a4c8423a27f78f01b7","b869f848bec826c9d3645d10a183b905672a4675747f41700fd30e1b7e0d0308","62cc84c2971b16cc82e1f7cb1dac7d8c70b589d492fbc2f6efbcbfc53b61d514","67729b7b26e1ecf2afeb2f4a0a8c3ba16712918ef22d23bb615f033169ebe0f3","903da09dbdfea0af66cb6b7b25950e42e350f1f3cc87f3516baa553cc4de882f","e237aa7b157ebfb2699d2e3bbf07c65a8cea0382201dc44c9da006f0f730de67","05e8a403b04248dbe9eebd2025d58e95495de303f37b39f13e7562f5f414087a","a56bf5dce7c05192e4c2d95eb1527feda15f9225afea8c5ad67034a79992ebb6","fcb510be50b0756cb770f8caf321dba38ae074665efbea090584f8a8d3e6b8f4","d4c9c56a2f4ecedcc224a495dfbaee88072c8e99679504fb32ef1d0629f843a1","5ec537948044f7c0280d6175729bf7aa13deae28fe0f6346628a8cf15569aefa","94998ffb6165ce44d492327169a7f7cb0e1e11a967f068fbda6796029a4a40dd",{"version":"e0f80bf8b61bb02eb5c8d524b03e245e541740c4f68d8e864dc1b330f03c09c2","signature":"575c89f0099618634f45b3b4b9d472e691f878c12dfc6fece5ca3251de077d19"},"5a4f366f85908cc58de4dbfd113c950375333a7ba742579f34fb4ebd773558af",{"version":"8bbebd3d6e8364c40311fa4485ef84e88dce56a6c1558a4343bca2d0cee1ada7","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"e22fbd681f39e22e5869019943fdd543f31f720d1b7c64dcb042b2e0ae51bbcf","signature":"f32ecdbee19d8ade6d02097632230f05a071b5b41d1d7307a5b01a1975745891"},{"version":"cff3473b09c017b5f62f2c120d826916a0d81dc4f0d613e80850245f46582e08","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"6cbf5df81765e05550be69f69e84ba04271846b1772ae48ba76024a40fd1da34","signature":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","affectsGlobalScope":true},{"version":"9517926302645ce78b93e293ea4fd19ddb3e6aace78a8d34e0f5d64bb4663cfb","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},"c86701cdbbe77e01aada879efb3cd8c00d03bf734fef6e95e71b1c2ab4594ebd","d508d8a2559371285a7ff8dd209d14623fc5093a91c3ac357c57db2658544b23","d7ed81a187f487d40e1214f95ae045bd50b470cd5bccb025bfa6ed2c30aaca66","0d14fa22c41fdc7277e6f71473b20ebc07f40f00e38875142335d5b63cdfc9d2","d982cdd2610155b3cbcbfa62ccabcf2d2b739f821518ef113348d160ef0010d9","ffcc5500e77223169833fc6eb59b3a507944a1f89574e0a1276b0ea7fc22c4a4","22f13de9e2fe5f0f4724797abd3d34a1cdd6e47ef81fc4933fea3b8bf4ad524b","e3ba509d3dce019b3190ceb2f3fc88e2610ab717122dabd91a9efaa37804040d","cda0cb09b995489b7f4c57f168cd31b83dcbaa7aad49612734fb3c9c73f6e4f2",{"version":"1de1ad6a1929317171d8cfcd55bb2732257680c1bf89bcd53e1d46a4d8dbda22","affectsGlobalScope":true}],"options":{"composite":true,"declaration":true,"esModuleInterop":true,"module":1,"outDir":"./lib","rootDir":"./src","skipLibCheck":true,"sourceMap":true,"strict":true,"target":6},"fileIdsList":[[145,263],[145],[145,239,240,241,242,243,244,245,246,247,248,249,250],[117,120,145,152,153,154],[145,265,267],[145,156],[145,157],[102,145],[105,145],[106,111,145],[107,117,118,125,134,144,145],[107,108,117,125,145],[109,145],[110,111,118,126,145],[111,134,141,145],[112,114,117,125,145],[113,145],[114,115,145],[116,117,145],[117,145],[117,118,119,134,144,145],[117,118,119,134,145],[120,125,134,144,145],[117,118,120,121,125,134,141,144,145],[120,122,134,141,144,145],[102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151],[117,123,145],[124,144,145],[114,117,125,134,145],[126,145],[127,145],[105,128,145],[129,143,145,149],[130,145],[131,145],[117,132,145],[132,133,145,147],[117,134,135,136,145],[134,136,145],[134,135,145],[137,145],[138,145],[117,139,140,145],[139,140,145],[111,125,134,141,145],[142,145],[125,143,145],[106,120,131,144,145],[111,145],[134,145,146],[145,147],[145,148],[106,111,117,119,128,134,144,145,147,149],[134,145,150],[120,145,152,157],[145,216],[145,152],[145,265],[145,262,266],[145,264],[119,127,145,217,223,224],[127,145,223],[145,211,227],[145,224,252],[111,118,119,127,145,228,229],[145,255],[127,145,217,228,251,253,255],[145,224,227,252],[119,127,145,211,228,229,237,251],[145,191,201],[145,191,194,196,198,200],[145,191,202],[145,185,191,193,201],[145,185,191,199,201],[145,185,191,197,201],[145,185,191,195,201],[145,191,201,202,203],[117,134,141,145,152,180,181,184,185],[98,145],[145,206],[145,206,209],[47,145,204,211],[145,204,206],[145,205,207],[145,168],[145,168,169,170,171,172,173],[46,47,93,94,95,96,97,98,99,100,101,145,165,166,167,174,175,176,177,178,179,208,210],[99,145],[47,98,145,211],[47,145],[46,145],[145,164],[94,145],[92,145],[47,93,94,95,145],[120,145,152,159],[120,145,152],[145,154,155,158,160],[51,52,56,83,84,88,90,91,145],[49,50,145],[49,145],[51,91,145],[51,52,88,89,91,145],[91,145],[48,91,92,145],[51,52,90,91,145],[51,52,54,55,90,91,145],[51,52,53,90,91,145],[51,52,56,83,84,85,86,87,90,91,145],[48,51,52,56,88,90,145],[56,91,145],[58,59,60,61,62,63,64,65,66,67,91,145],[81,91,145],[57,68,76,77,78,79,80,82,145],[61,91,145],[69,70,71,72,73,74,75,91,145],[145,185,186],[145,188],[145,186,187,188,189,190],[145,185],[145,187],[145,152,181,182,183],[134,145,152,181],[145,211],[145,212,213,219,220,221,222],[145,217,223],[145,214,218],[120,145,204,269],[106,118,120,134,145,152,215],[145,230,231,232,233],[145,234,235,236],[145,229,234],[229]],"referencedMap":[[264,1],[263,2],[239,2],[240,2],[241,2],[242,2],[243,2],[245,2],[251,3],[244,2],[249,2],[246,2],[247,2],[248,2],[250,2],[155,4],[268,5],[157,6],[156,7],[102,8],[103,8],[105,9],[106,10],[107,11],[108,12],[109,13],[110,14],[111,15],[112,16],[113,17],[114,18],[115,18],[116,19],[117,20],[118,21],[119,22],[104,2],[151,2],[120,23],[121,24],[122,25],[152,26],[123,27],[124,28],[125,29],[126,30],[127,31],[128,32],[129,33],[130,34],[131,35],[132,36],[133,37],[134,38],[136,39],[135,40],[137,41],[138,42],[139,43],[140,44],[141,45],[142,46],[143,47],[144,48],[145,49],[146,50],[147,51],[148,52],[149,53],[150,54],[154,2],[153,2],[158,55],[225,56],[238,2],[262,2],[227,57],[266,58],[267,59],[265,60],[8,2],[9,2],[13,2],[12,2],[2,2],[14,2],[15,2],[16,2],[17,2],[18,2],[19,2],[20,2],[21,2],[3,2],[4,2],[25,2],[22,2],[23,2],[24,2],[26,2],[27,2],[28,2],[5,2],[29,2],[30,2],[31,2],[32,2],[6,2],[45,2],[33,2],[34,2],[35,2],[36,2],[7,2],[37,2],[42,2],[43,2],[38,2],[39,2],[40,2],[41,2],[1,2],[44,2],[11,2],[10,2],[226,61],[224,62],[228,63],[253,64],[259,2],[260,2],[261,2],[255,65],[256,66],[257,2],[258,67],[254,68],[252,69],[202,70],[201,71],[203,72],[193,2],[197,2],[199,2],[195,2],[194,73],[200,74],[198,75],[196,76],[204,77],[192,78],[175,79],[206,2],[209,80],[210,81],[205,82],[207,83],[208,84],[98,2],[169,85],[173,85],[168,2],[174,86],[170,85],[171,85],[172,85],[211,87],[100,88],[99,89],[101,90],[46,2],[47,91],[165,92],[166,92],[178,2],[179,2],[176,2],[177,2],[97,93],[93,94],[96,95],[94,2],[95,2],[167,2],[160,96],[159,97],[162,4],[164,98],[163,2],[161,55],[92,99],[49,2],[51,100],[50,101],[55,102],[90,103],[87,104],[89,105],[52,104],[53,106],[57,106],[56,107],[54,108],[88,109],[86,104],[91,110],[84,2],[85,2],[58,111],[63,104],[65,104],[60,104],[61,111],[67,104],[68,112],[59,104],[64,104],[66,104],[62,104],[82,113],[81,104],[83,114],[77,104],[79,104],[78,104],[74,104],[80,115],[75,104],[76,116],[69,104],[70,104],[71,104],[72,104],[73,104],[48,2],[187,117],[188,117],[190,118],[191,119],[189,120],[186,121],[185,78],[184,122],[181,57],[183,123],[182,57],[180,2],[212,124],[223,125],[214,124],[218,126],[219,127],[220,2],[222,2],[221,2],[213,128],[215,2],[216,129],[217,56],[234,130],[230,2],[231,2],[232,2],[233,2],[237,131],[236,132],[235,132],[229,2]],"exportedModulesMap":[[264,1],[263,2],[239,2],[240,2],[241,2],[242,2],[243,2],[245,2],[251,3],[244,2],[249,2],[246,2],[247,2],[248,2],[250,2],[155,4],[268,5],[157,6],[156,7],[102,8],[103,8],[105,9],[106,10],[107,11],[108,12],[109,13],[110,14],[111,15],[112,16],[113,17],[114,18],[115,18],[116,19],[117,20],[118,21],[119,22],[104,2],[151,2],[120,23],[121,24],[122,25],[152,26],[123,27],[124,28],[125,29],[126,30],[127,31],[128,32],[129,33],[130,34],[131,35],[132,36],[133,37],[134,38],[136,39],[135,40],[137,41],[138,42],[139,43],[140,44],[141,45],[142,46],[143,47],[144,48],[145,49],[146,50],[147,51],[148,52],[149,53],[150,54],[154,2],[153,2],[158,55],[225,56],[238,2],[262,2],[227,57],[266,58],[267,59],[265,60],[8,2],[9,2],[13,2],[12,2],[2,2],[14,2],[15,2],[16,2],[17,2],[18,2],[19,2],[20,2],[21,2],[3,2],[4,2],[25,2],[22,2],[23,2],[24,2],[26,2],[27,2],[28,2],[5,2],[29,2],[30,2],[31,2],[32,2],[6,2],[45,2],[33,2],[34,2],[35,2],[36,2],[7,2],[37,2],[42,2],[43,2],[38,2],[39,2],[40,2],[41,2],[1,2],[44,2],[11,2],[10,2],[253,64],[259,2],[260,2],[261,2],[255,133],[202,70],[201,71],[203,72],[193,2],[197,2],[199,2],[195,2],[194,73],[200,74],[198,75],[196,76],[204,77],[192,78],[175,79],[206,2],[209,80],[210,81],[205,82],[207,83],[208,84],[98,2],[169,85],[173,85],[168,2],[174,86],[170,85],[171,85],[172,85],[211,87],[100,88],[99,89],[101,90],[46,2],[47,91],[165,92],[166,92],[178,2],[179,2],[176,2],[177,2],[97,93],[93,94],[96,95],[94,2],[95,2],[167,2],[160,96],[159,97],[162,4],[164,98],[163,2],[161,55],[92,99],[49,2],[51,100],[50,101],[55,102],[90,103],[87,104],[89,105],[52,104],[53,106],[57,106],[56,107],[54,108],[88,109],[86,104],[91,110],[84,2],[85,2],[58,111],[63,104],[65,104],[60,104],[61,111],[67,104],[68,112],[59,104],[64,104],[66,104],[62,104],[82,113],[81,104],[83,114],[77,104],[79,104],[78,104],[74,104],[80,115],[75,104],[76,116],[69,104],[70,104],[71,104],[72,104],[73,104],[48,2],[187,117],[188,117],[190,118],[191,119],[189,120],[186,121],[185,78],[184,122],[181,57],[183,123],[182,57],[180,2],[212,124],[223,125],[214,124],[218,126],[219,127],[220,2],[222,2],[221,2],[213,128],[215,2],[216,129],[217,56],[234,130],[230,2],[231,2],[232,2],[233,2],[237,131],[236,132],[235,132],[229,2]],"semanticDiagnosticsPerFile":[264,263,239,240,241,242,243,245,251,244,249,246,247,248,250,155,268,157,156,102,103,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,104,151,120,121,122,152,123,124,125,126,127,128,129,130,131,132,133,134,136,135,137,138,139,140,141,142,143,144,145,146,147,148,149,150,154,153,158,225,238,262,227,266,267,265,8,9,13,12,2,14,15,16,17,18,19,20,21,3,4,25,22,23,24,26,27,28,5,29,30,31,32,6,45,33,34,35,36,7,37,42,43,38,39,40,41,1,44,11,10,226,224,228,253,259,260,261,255,256,257,258,254,252,202,201,203,193,197,199,195,194,200,198,196,204,192,175,206,209,210,205,207,208,98,169,173,168,174,170,171,172,211,100,99,101,46,47,165,166,178,179,176,177,97,93,96,94,95,167,160,159,162,164,163,161,92,49,51,50,55,90,87,89,52,53,57,56,54,88,86,91,84,85,58,63,65,60,61,67,68,59,64,66,62,82,81,83,77,79,78,74,80,75,76,69,70,71,72,73,48,187,188,190,191,189,186,185,184,181,183,182,180,212,223,214,218,219,220,222,221,213,215,216,217,234,230,231,232,233,237,236,235,229]},"version":"4.7.4"}