@hero-design/snowflake-guard 1.0.7 → 1.0.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.env.example +10 -8
- package/CHANGELOG.md +12 -0
- package/README.md +14 -19
- package/lib/src/__tests__/parseSource.spec.js +1 -0
- package/lib/src/graphql/__tests__/fetchGrapql.spec.d.ts +1 -0
- package/lib/src/graphql/__tests__/fetchGrapql.spec.js +33 -0
- package/lib/src/graphql/__tests__/queryGenerators.spec.d.ts +1 -0
- package/lib/src/graphql/__tests__/queryGenerators.spec.js +82 -0
- package/lib/src/graphql/fetchGraphql.d.ts +2 -0
- package/lib/src/graphql/fetchGraphql.js +23 -0
- package/lib/src/graphql/queryGenerators.d.ts +18 -0
- package/lib/src/graphql/queryGenerators.js +61 -0
- package/lib/src/graphql/types.d.ts +17 -0
- package/lib/src/graphql/types.js +2 -0
- package/lib/src/index.js +42 -1
- package/lib/src/parseSource.d.ts +1 -0
- package/lib/src/parseSource.js +1 -0
- package/lib/tsconfig.tsbuildinfo +1 -1
- package/package.json +2 -2
- package/src/__tests__/parseSource.spec.ts +1 -0
- package/src/graphql/__tests__/fetchGrapql.spec.ts +26 -0
- package/src/graphql/__tests__/queryGenerators.spec.ts +97 -0
- package/src/graphql/fetchGraphql.ts +13 -0
- package/src/graphql/queryGenerators.ts +91 -0
- package/src/graphql/types.ts +19 -0
- package/src/index.ts +67 -7
- package/src/parseSource.ts +1 -0
- package/tsconfig.json +1 -2
package/.env.example
CHANGED
|
@@ -1,9 +1,11 @@
|
|
|
1
|
-
# The ID of your GitHub App
|
|
2
|
-
APP_ID=
|
|
3
|
-
WEBHOOK_SECRET=development
|
|
4
|
-
|
|
5
|
-
# Use `trace` to get verbose logging or `info` to show less
|
|
6
|
-
LOG_LEVEL=debug
|
|
7
|
-
|
|
8
|
-
# Go to https://smee.io/new set this to the URL that you are redirected to.
|
|
9
1
|
WEBHOOK_PROXY_URL=
|
|
2
|
+
APP_ID=
|
|
3
|
+
PRIVATE_KEY=
|
|
4
|
+
WEBHOOK_SECRET=
|
|
5
|
+
GITHUB_CLIENT_ID=
|
|
6
|
+
GITHUB_CLIENT_SECRET=
|
|
7
|
+
EH_BOT_GITHUB_TOKEN=
|
|
8
|
+
EH_BOT_NAME=
|
|
9
|
+
DB_HOST=
|
|
10
|
+
SNOWFLAKE_GUARD_SECRET=
|
|
11
|
+
PORT=4000
|
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
# @hero-design/snowflake-guard
|
|
2
2
|
|
|
3
|
+
## 1.0.9
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- [#3199](https://github.com/Thinkei/hero-design/pull/3199) [`29786f5dd`](https://github.com/Thinkei/hero-design/commit/29786f5ddb80a019b5c062f1ef974165ff3b405c) Thanks [@haudao-eh](https://github.com/haudao-eh)! - Only approve when it has requested changes
|
|
8
|
+
|
|
9
|
+
## 1.0.8
|
|
10
|
+
|
|
11
|
+
### Patch Changes
|
|
12
|
+
|
|
13
|
+
- [#3193](https://github.com/Thinkei/hero-design/pull/3193) [`420f49dde`](https://github.com/Thinkei/hero-design/commit/420f49dde89cffcc2e0832ba5d2cea9dffe983b4) Thanks [@haudao-eh](https://github.com/haudao-eh)! - Save snowflake report after analyzing PRs
|
|
14
|
+
|
|
3
15
|
## 1.0.7
|
|
4
16
|
|
|
5
17
|
### Patch Changes
|
package/README.md
CHANGED
|
@@ -1,33 +1,28 @@
|
|
|
1
1
|
# @hero-design/snowflake-guard
|
|
2
2
|
|
|
3
|
-
> A GitHub App built with [Probot](https://github.com/probot/probot) that
|
|
3
|
+
> A GitHub App built with [Probot](https://github.com/probot/probot) that analyzes PR changes and reports snowflake usage of Hero Design components.
|
|
4
4
|
|
|
5
5
|
## Setup
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
# Install dependencies
|
|
9
|
-
npm install
|
|
7
|
+
1. Copy `.env.example` to `.env` and asks Andromeda team for variable details.
|
|
10
8
|
|
|
11
|
-
|
|
12
|
-
|
|
9
|
+
```sh
|
|
10
|
+
cp .env.example .env
|
|
13
11
|
```
|
|
14
12
|
|
|
15
|
-
|
|
13
|
+
2. Install snowflake-guard[Dev] [app](https://github.com/apps/hero-design-snowflake-guard-dev) to a repository that you wish to run the app on.
|
|
14
|
+
|
|
15
|
+
3. Start the app.
|
|
16
16
|
|
|
17
17
|
```sh
|
|
18
|
-
#
|
|
19
|
-
|
|
18
|
+
# Install dependencies
|
|
19
|
+
yarn install
|
|
20
20
|
|
|
21
|
-
#
|
|
22
|
-
|
|
21
|
+
# Run the bot
|
|
22
|
+
yarn start
|
|
23
23
|
```
|
|
24
|
+
4. Open or update a pull request to trigger webhook events.
|
|
24
25
|
|
|
25
|
-
##
|
|
26
|
-
|
|
27
|
-
If you have suggestions for how @hero-design/snowflake-guard could be improved, or want to report a bug, open an issue! We'd love all and any contributions.
|
|
28
|
-
|
|
29
|
-
For more, check out the [Contributing Guide](CONTRIBUTING.md).
|
|
30
|
-
|
|
31
|
-
## License
|
|
26
|
+
## Note
|
|
32
27
|
|
|
33
|
-
|
|
28
|
+
This bot does not support hot-reload yet, please restart the app once you make any changes to the code.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,33 @@
|
|
|
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
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
const fetchGraphql_1 = __importDefault(require("../fetchGraphql"));
|
|
16
|
+
describe('fetchGraphql', () => {
|
|
17
|
+
it('calls fetch with correct arguments', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
18
|
+
process.env.SNOWFLAKE_GUARD_SECRET = 'secret';
|
|
19
|
+
const fetchMock = jest.spyOn(global, 'fetch').mockImplementation(jest.fn(() => Promise.resolve({
|
|
20
|
+
json: () => Promise.resolve({ data: 'response-data' }),
|
|
21
|
+
})));
|
|
22
|
+
const response = yield (0, fetchGraphql_1.default)('query');
|
|
23
|
+
expect(fetchMock).toHaveBeenCalledWith('http://localhost:3000/graphql', {
|
|
24
|
+
method: 'POST',
|
|
25
|
+
headers: {
|
|
26
|
+
'Content-Type': 'application/json',
|
|
27
|
+
'Snowflake-Guard-Auth': 'secret',
|
|
28
|
+
},
|
|
29
|
+
body: JSON.stringify({ query: 'query' }),
|
|
30
|
+
});
|
|
31
|
+
expect(response).toEqual({ data: 'response-data' });
|
|
32
|
+
}));
|
|
33
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const queryGenerators_1 = require("../queryGenerators");
|
|
4
|
+
const replaceWhiteSpace = (str) => str.replace(/\s/g, '');
|
|
5
|
+
describe('generateFetchReportQuery', () => {
|
|
6
|
+
it('returns correct query', () => {
|
|
7
|
+
const query = (0, queryGenerators_1.generateFetchReportQuery)({
|
|
8
|
+
repoName: 'repoName',
|
|
9
|
+
prNumber: 123,
|
|
10
|
+
});
|
|
11
|
+
expect(replaceWhiteSpace(query)).toBe(replaceWhiteSpace(`
|
|
12
|
+
query {
|
|
13
|
+
fetchHdSnowflakeGuardReport(repoName: "repoName", prNumber: 123) {
|
|
14
|
+
id
|
|
15
|
+
originalCount
|
|
16
|
+
latestCount
|
|
17
|
+
approvedCount
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
`));
|
|
21
|
+
});
|
|
22
|
+
});
|
|
23
|
+
describe('generateCreateReportQuery', () => {
|
|
24
|
+
it('returns correct query', () => {
|
|
25
|
+
const query = (0, queryGenerators_1.generateCreateReportQuery)({
|
|
26
|
+
repoName: 'repoName',
|
|
27
|
+
prNumber: 123,
|
|
28
|
+
owner: 'owner',
|
|
29
|
+
originalCount: 3,
|
|
30
|
+
latestCount: 1,
|
|
31
|
+
approvedCount: 2,
|
|
32
|
+
});
|
|
33
|
+
expect(replaceWhiteSpace(query)).toBe(replaceWhiteSpace(`
|
|
34
|
+
mutation {
|
|
35
|
+
createHdSnowflakeGuardReport(
|
|
36
|
+
input: {
|
|
37
|
+
params: {
|
|
38
|
+
repoName: "repoName"
|
|
39
|
+
prNumber: 123
|
|
40
|
+
owner: "owner"
|
|
41
|
+
originalCount: 3
|
|
42
|
+
latestCount: 1
|
|
43
|
+
approvedCount: 2
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
) {
|
|
47
|
+
hdSnowflakeGuardReport {
|
|
48
|
+
id
|
|
49
|
+
repoName
|
|
50
|
+
prNumber
|
|
51
|
+
originalCount
|
|
52
|
+
latestCount
|
|
53
|
+
approvedCount
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
`));
|
|
58
|
+
});
|
|
59
|
+
});
|
|
60
|
+
describe('generateUpdateReportQuery', () => {
|
|
61
|
+
it('returns correct query', () => {
|
|
62
|
+
const query = (0, queryGenerators_1.generateUpdateReportQuery)({
|
|
63
|
+
id: 'id',
|
|
64
|
+
latestCount: 1,
|
|
65
|
+
approvedCount: 2,
|
|
66
|
+
});
|
|
67
|
+
expect(replaceWhiteSpace(query)).toBe(replaceWhiteSpace(`
|
|
68
|
+
mutation {
|
|
69
|
+
updateHdSnowflakeGuardReport(
|
|
70
|
+
input: { id: "id", latestCount: 1, approvedCount: 2 }
|
|
71
|
+
) {
|
|
72
|
+
hdSnowflakeGuardReport {
|
|
73
|
+
id
|
|
74
|
+
latestCount
|
|
75
|
+
originalCount
|
|
76
|
+
approvedCount
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
`));
|
|
81
|
+
});
|
|
82
|
+
});
|
|
@@ -0,0 +1,23 @@
|
|
|
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 fetchGraphql = (query) => __awaiter(void 0, void 0, void 0, function* () {
|
|
13
|
+
const host = process.env.DB_HOST || 'http://localhost:3000';
|
|
14
|
+
return fetch(`${host}/graphql`, {
|
|
15
|
+
method: 'POST',
|
|
16
|
+
headers: {
|
|
17
|
+
'Content-Type': 'application/json',
|
|
18
|
+
'Snowflake-Guard-Auth': process.env.SNOWFLAKE_GUARD_SECRET || '',
|
|
19
|
+
},
|
|
20
|
+
body: JSON.stringify({ query }),
|
|
21
|
+
}).then((response) => response.json());
|
|
22
|
+
});
|
|
23
|
+
exports.default = fetchGraphql;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
declare const generateFetchReportQuery: ({ repoName, prNumber, }: {
|
|
2
|
+
repoName: string;
|
|
3
|
+
prNumber: number;
|
|
4
|
+
}) => string;
|
|
5
|
+
declare const generateCreateReportQuery: ({ repoName, prNumber, owner, originalCount, latestCount, approvedCount, }: {
|
|
6
|
+
repoName: string;
|
|
7
|
+
prNumber: number;
|
|
8
|
+
owner: string;
|
|
9
|
+
originalCount: number;
|
|
10
|
+
latestCount: number;
|
|
11
|
+
approvedCount: number;
|
|
12
|
+
}) => string;
|
|
13
|
+
declare const generateUpdateReportQuery: ({ id, latestCount, approvedCount, }: {
|
|
14
|
+
id: string;
|
|
15
|
+
latestCount: number;
|
|
16
|
+
approvedCount: number;
|
|
17
|
+
}) => string;
|
|
18
|
+
export { generateFetchReportQuery, generateCreateReportQuery, generateUpdateReportQuery, };
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.generateUpdateReportQuery = exports.generateCreateReportQuery = exports.generateFetchReportQuery = void 0;
|
|
4
|
+
const generateFetchReportQuery = ({ repoName, prNumber, }) => {
|
|
5
|
+
return `
|
|
6
|
+
query {
|
|
7
|
+
fetchHdSnowflakeGuardReport(repoName: "${repoName}", prNumber: ${prNumber}) {
|
|
8
|
+
id
|
|
9
|
+
originalCount
|
|
10
|
+
latestCount
|
|
11
|
+
approvedCount
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
`;
|
|
15
|
+
};
|
|
16
|
+
exports.generateFetchReportQuery = generateFetchReportQuery;
|
|
17
|
+
const generateCreateReportQuery = ({ repoName, prNumber, owner, originalCount, latestCount, approvedCount, }) => {
|
|
18
|
+
return `
|
|
19
|
+
mutation {
|
|
20
|
+
createHdSnowflakeGuardReport(
|
|
21
|
+
input: {
|
|
22
|
+
params: {
|
|
23
|
+
repoName: "${repoName}"
|
|
24
|
+
prNumber: ${prNumber}
|
|
25
|
+
owner: "${owner}"
|
|
26
|
+
originalCount: ${originalCount}
|
|
27
|
+
latestCount: ${latestCount}
|
|
28
|
+
approvedCount: ${approvedCount}
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
) {
|
|
32
|
+
hdSnowflakeGuardReport {
|
|
33
|
+
id
|
|
34
|
+
repoName
|
|
35
|
+
prNumber
|
|
36
|
+
originalCount
|
|
37
|
+
latestCount
|
|
38
|
+
approvedCount
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
`;
|
|
43
|
+
};
|
|
44
|
+
exports.generateCreateReportQuery = generateCreateReportQuery;
|
|
45
|
+
const generateUpdateReportQuery = ({ id, latestCount, approvedCount, }) => {
|
|
46
|
+
return `
|
|
47
|
+
mutation {
|
|
48
|
+
updateHdSnowflakeGuardReport(
|
|
49
|
+
input: { id: "${id}", latestCount: ${latestCount}, approvedCount: ${approvedCount} }
|
|
50
|
+
) {
|
|
51
|
+
hdSnowflakeGuardReport {
|
|
52
|
+
id
|
|
53
|
+
latestCount
|
|
54
|
+
originalCount
|
|
55
|
+
approvedCount
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
`;
|
|
60
|
+
};
|
|
61
|
+
exports.generateUpdateReportQuery = generateUpdateReportQuery;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export type Report = {
|
|
2
|
+
id: string;
|
|
3
|
+
repoName: string;
|
|
4
|
+
prNumber: number;
|
|
5
|
+
owner: string;
|
|
6
|
+
originalCount: number;
|
|
7
|
+
latestCount: number;
|
|
8
|
+
approvedCount: number;
|
|
9
|
+
};
|
|
10
|
+
export type FetchReportResponse = {
|
|
11
|
+
errors: {
|
|
12
|
+
message: string;
|
|
13
|
+
}[];
|
|
14
|
+
data: null | {
|
|
15
|
+
fetchHdSnowflakeGuardReport: Pick<Report, 'id' | 'originalCount' | 'latestCount' | 'approvedCount'>;
|
|
16
|
+
};
|
|
17
|
+
};
|
package/lib/src/index.js
CHANGED
|
@@ -13,6 +13,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
13
13
|
};
|
|
14
14
|
const probot_1 = require("probot");
|
|
15
15
|
const parseSource_1 = __importDefault(require("./parseSource"));
|
|
16
|
+
const fetchGraphql_1 = __importDefault(require("./graphql/fetchGraphql"));
|
|
17
|
+
const queryGenerators_1 = require("./graphql/queryGenerators");
|
|
16
18
|
const TSX_REGEX = /\.tsx$/;
|
|
17
19
|
const TEST_REGEX = /__tests__/;
|
|
18
20
|
const DIFF_LOCS_REGEX = /@@(.*)@@/g;
|
|
@@ -43,6 +45,7 @@ const checkIfDetectedSnowflakesInDiff = (diffLocs, locToComment) => {
|
|
|
43
45
|
};
|
|
44
46
|
module.exports = (app) => {
|
|
45
47
|
app.on(['pull_request.opened', 'pull_request.synchronize'], (context) => __awaiter(void 0, void 0, void 0, function* () {
|
|
48
|
+
var _a;
|
|
46
49
|
// Get PR info
|
|
47
50
|
const prNumber = context.payload.number;
|
|
48
51
|
const repoInfo = {
|
|
@@ -63,10 +66,14 @@ module.exports = (app) => {
|
|
|
63
66
|
// Get file contents
|
|
64
67
|
const prFileContentPromises = tsxFiles.map((file) => context.octokit.repos.getContent(Object.assign(Object.assign({}, repoInfo), { path: file.filename, ref: prBranch })));
|
|
65
68
|
const prFileContents = yield Promise.all(prFileContentPromises);
|
|
69
|
+
// Get comments
|
|
70
|
+
const currentComments = yield context.octokit.pulls.listReviewComments(Object.assign(Object.assign({}, repoInfo), { pull_number: prNumber }));
|
|
71
|
+
const botHasCommented = currentComments.data.some((cmt) => cmt.user.login === process.env.EH_BOT_NAME);
|
|
66
72
|
const styleComments = [];
|
|
67
73
|
const sxComments = [];
|
|
68
74
|
const styledComponentComments = [];
|
|
69
75
|
const classNameComments = [];
|
|
76
|
+
const approvedSnowflakeLocs = [];
|
|
70
77
|
prFileContents.forEach((file) => __awaiter(void 0, void 0, void 0, function* () {
|
|
71
78
|
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
72
79
|
// @ts-ignore
|
|
@@ -114,14 +121,44 @@ module.exports = (app) => {
|
|
|
114
121
|
});
|
|
115
122
|
}
|
|
116
123
|
});
|
|
124
|
+
snowflakeReport.approvedLocs.forEach((loc) => {
|
|
125
|
+
if (checkIfDetectedSnowflakesInDiff(diffLocs, loc)) {
|
|
126
|
+
approvedSnowflakeLocs.push(loc);
|
|
127
|
+
}
|
|
128
|
+
});
|
|
117
129
|
}));
|
|
118
130
|
const personalOctokit = new probot_1.ProbotOctokit({
|
|
119
131
|
auth: { token: process.env.EH_BOT_GITHUB_TOKEN },
|
|
120
132
|
});
|
|
133
|
+
// Saving report
|
|
134
|
+
const snowflakeCount = styleComments.length +
|
|
135
|
+
sxComments.length +
|
|
136
|
+
styledComponentComments.length +
|
|
137
|
+
classNameComments.length;
|
|
138
|
+
const report = (yield (0, fetchGraphql_1.default)((0, queryGenerators_1.generateFetchReportQuery)({ repoName: repoInfo.repo, prNumber })));
|
|
139
|
+
const reportData = (_a = report.data) === null || _a === void 0 ? void 0 : _a.fetchHdSnowflakeGuardReport;
|
|
140
|
+
if (reportData) {
|
|
141
|
+
yield (0, fetchGraphql_1.default)((0, queryGenerators_1.generateUpdateReportQuery)({
|
|
142
|
+
id: reportData.id,
|
|
143
|
+
latestCount: snowflakeCount,
|
|
144
|
+
approvedCount: approvedSnowflakeLocs.length,
|
|
145
|
+
}));
|
|
146
|
+
}
|
|
147
|
+
else {
|
|
148
|
+
yield (0, fetchGraphql_1.default)((0, queryGenerators_1.generateCreateReportQuery)({
|
|
149
|
+
repoName: repoInfo.repo,
|
|
150
|
+
prNumber,
|
|
151
|
+
owner: repoInfo.owner,
|
|
152
|
+
originalCount: snowflakeCount,
|
|
153
|
+
latestCount: snowflakeCount,
|
|
154
|
+
approvedCount: approvedSnowflakeLocs.length,
|
|
155
|
+
}));
|
|
156
|
+
}
|
|
121
157
|
// No snowflakes detected or only potential snowflakes using classname
|
|
122
158
|
if (styleComments.length === 0 &&
|
|
123
159
|
sxComments.length === 0 &&
|
|
124
160
|
styledComponentComments.length === 0) {
|
|
161
|
+
const shouldApprove = botHasCommented || classNameComments.length > 0;
|
|
125
162
|
const reviewBody = classNameComments.length > 0
|
|
126
163
|
? {
|
|
127
164
|
body: '[WARNING] Potential snowflakes detected in this PR using classnames. Please review the following comments.',
|
|
@@ -130,8 +167,12 @@ module.exports = (app) => {
|
|
|
130
167
|
: {
|
|
131
168
|
body: 'No snowflakes detected in this PR.',
|
|
132
169
|
};
|
|
133
|
-
|
|
170
|
+
if (shouldApprove) {
|
|
171
|
+
return personalOctokit.pulls.createReview(Object.assign(Object.assign(Object.assign({}, repoInfo), { pull_number: prNumber, commit_id: context.payload.pull_request.head.sha, event: 'APPROVE' }), reviewBody));
|
|
172
|
+
}
|
|
173
|
+
return;
|
|
134
174
|
}
|
|
175
|
+
// Snowflakes detected
|
|
135
176
|
return personalOctokit.pulls.createReview(Object.assign(Object.assign({}, repoInfo), { pull_number: prNumber, commit_id: context.payload.pull_request.head.sha, event: 'REQUEST_CHANGES', body: 'Snowflake Guard Bot has detected some snowflakes in this PR. Please review the following comments.', comments: [
|
|
136
177
|
...styleComments,
|
|
137
178
|
...sxComments,
|
package/lib/src/parseSource.d.ts
CHANGED
package/lib/src/parseSource.js
CHANGED
package/lib/tsconfig.tsbuildinfo
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"program":{"fileNames":["../node_modules/typescript/lib/lib.es6.d.ts","../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.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.es2020.bigint.d.ts","../node_modules/typescript/lib/lib.es2020.intl.d.ts","../node_modules/typescript/lib/lib.esnext.intl.d.ts","../../../node_modules/@types/pino/node_modules/@types/node/globals.d.ts","../../../node_modules/@types/pino/node_modules/@types/node/assert.d.ts","../../../node_modules/@types/pino/node_modules/@types/node/async_hooks.d.ts","../../../node_modules/@types/pino/node_modules/@types/node/buffer.d.ts","../../../node_modules/@types/events/index.d.ts","../../../node_modules/@types/pino/node_modules/@types/node/child_process.d.ts","../../../node_modules/@types/pino/node_modules/@types/node/cluster.d.ts","../../../node_modules/@types/pino/node_modules/@types/node/console.d.ts","../../../node_modules/@types/pino/node_modules/@types/node/constants.d.ts","../../../node_modules/@types/pino/node_modules/@types/node/crypto.d.ts","../../../node_modules/@types/pino/node_modules/@types/node/dgram.d.ts","../../../node_modules/@types/pino/node_modules/@types/node/dns.d.ts","../../../node_modules/@types/pino/node_modules/@types/node/domain.d.ts","../../../node_modules/@types/pino/node_modules/@types/node/events.d.ts","../../../node_modules/@types/pino/node_modules/@types/node/fs.d.ts","../../../node_modules/@types/pino/node_modules/@types/node/http.d.ts","../../../node_modules/@types/pino/node_modules/@types/node/http2.d.ts","../../../node_modules/@types/pino/node_modules/@types/node/https.d.ts","../../../node_modules/@types/pino/node_modules/@types/node/inspector.d.ts","../../../node_modules/@types/pino/node_modules/@types/node/module.d.ts","../../../node_modules/@types/pino/node_modules/@types/node/net.d.ts","../../../node_modules/@types/pino/node_modules/@types/node/os.d.ts","../../../node_modules/@types/pino/node_modules/@types/node/path.d.ts","../../../node_modules/@types/pino/node_modules/@types/node/perf_hooks.d.ts","../../../node_modules/@types/pino/node_modules/@types/node/process.d.ts","../../../node_modules/@types/pino/node_modules/@types/node/punycode.d.ts","../../../node_modules/@types/pino/node_modules/@types/node/querystring.d.ts","../../../node_modules/@types/pino/node_modules/@types/node/readline.d.ts","../../../node_modules/@types/pino/node_modules/@types/node/repl.d.ts","../../../node_modules/@types/pino/node_modules/@types/node/stream.d.ts","../../../node_modules/@types/pino/node_modules/@types/node/string_decoder.d.ts","../../../node_modules/@types/pino/node_modules/@types/node/timers.d.ts","../../../node_modules/@types/pino/node_modules/@types/node/tls.d.ts","../../../node_modules/@types/pino/node_modules/@types/node/trace_events.d.ts","../../../node_modules/@types/pino/node_modules/@types/node/tty.d.ts","../../../node_modules/@types/pino/node_modules/@types/node/url.d.ts","../../../node_modules/@types/pino/node_modules/@types/node/util.d.ts","../../../node_modules/@types/pino/node_modules/@types/node/v8.d.ts","../../../node_modules/@types/pino/node_modules/@types/node/vm.d.ts","../../../node_modules/@types/pino/node_modules/@types/node/worker_threads.d.ts","../../../node_modules/@types/pino/node_modules/@types/node/zlib.d.ts","../../../node_modules/@types/pino/node_modules/@types/node/base.d.ts","../../../node_modules/@types/pino/node_modules/@types/node/ts3.2/fs.d.ts","../../../node_modules/@types/pino/node_modules/@types/node/ts3.2/util.d.ts","../../../node_modules/@types/pino/node_modules/@types/node/ts3.2/globals.d.ts","../../../node_modules/@types/pino/node_modules/@types/node/ts3.2/index.d.ts","../../../node_modules/@types/pino/node_modules/sonic-boom/types/index.d.ts","../../../node_modules/pino-std-serializers/index.d.ts","../../../node_modules/pino-pretty/index.d.ts","../../../node_modules/@types/pino/index.d.ts","../../../node_modules/@octokit/types/dist-types/RequestMethod.d.ts","../../../node_modules/@octokit/types/dist-types/Url.d.ts","../../../node_modules/@octokit/types/dist-types/Fetch.d.ts","../../../node_modules/@octokit/types/dist-types/Signal.d.ts","../../../node_modules/@octokit/types/dist-types/RequestRequestOptions.d.ts","../../../node_modules/@octokit/types/dist-types/RequestHeaders.d.ts","../../../node_modules/@octokit/types/dist-types/RequestParameters.d.ts","../../../node_modules/@octokit/types/dist-types/EndpointOptions.d.ts","../../../node_modules/@octokit/types/dist-types/ResponseHeaders.d.ts","../../../node_modules/@octokit/types/dist-types/OctokitResponse.d.ts","../../../node_modules/@octokit/types/dist-types/EndpointDefaults.d.ts","../../../node_modules/@octokit/types/dist-types/RequestOptions.d.ts","../../../node_modules/@octokit/types/dist-types/Route.d.ts","../../../node_modules/@octokit/types/node_modules/@octokit/openapi-types/types.d.ts","../../../node_modules/@octokit/types/dist-types/generated/Endpoints.d.ts","../../../node_modules/@octokit/types/dist-types/EndpointInterface.d.ts","../../../node_modules/@octokit/types/dist-types/RequestInterface.d.ts","../../../node_modules/@octokit/types/dist-types/AuthInterface.d.ts","../../../node_modules/@octokit/types/dist-types/RequestError.d.ts","../../../node_modules/@octokit/types/dist-types/StrategyInterface.d.ts","../../../node_modules/@octokit/types/dist-types/VERSION.d.ts","../../../node_modules/@octokit/types/dist-types/GetResponseTypeFromEndpointMethod.d.ts","../../../node_modules/@octokit/types/dist-types/index.d.ts","../../../node_modules/@octokit/webhooks/node_modules/@octokit/request-error/dist-types/types.d.ts","../../../node_modules/@octokit/webhooks/node_modules/@octokit/request-error/dist-types/index.d.ts","../../../node_modules/@octokit/webhooks-types/schema.d.ts","../../../node_modules/@octokit/webhooks/dist-types/createLogger.d.ts","../../../node_modules/@octokit/webhooks/dist-types/generated/webhook-names.d.ts","../../../node_modules/@octokit/webhooks/dist-types/types.d.ts","../../../node_modules/@octokit/webhooks/dist-types/event-handler/index.d.ts","../../../node_modules/@octokit/webhooks/dist-types/middleware/node/types.d.ts","../../../node_modules/@octokit/webhooks/dist-types/middleware/node/index.d.ts","../../../node_modules/@octokit/webhooks/dist-types/index.d.ts","../../../node_modules/deepmerge/index.d.ts","../../../node_modules/before-after-hook/index.d.ts","../../../node_modules/@octokit/core/node_modules/@octokit/request/dist-types/index.d.ts","../../../node_modules/@octokit/core/node_modules/@octokit/graphql/dist-types/types.d.ts","../../../node_modules/@octokit/core/node_modules/@octokit/graphql/dist-types/error.d.ts","../../../node_modules/@octokit/core/node_modules/@octokit/graphql/dist-types/index.d.ts","../../../node_modules/@octokit/core/node_modules/@octokit/request-error/dist-types/index.d.ts","../../../node_modules/@octokit/core/dist-types/types.d.ts","../../../node_modules/@octokit/core/dist-types/index.d.ts","../../../node_modules/@octokit/request-error/node_modules/@octokit/types/dist-types/RequestMethod.d.ts","../../../node_modules/@octokit/request-error/node_modules/@octokit/types/dist-types/Url.d.ts","../../../node_modules/@octokit/request-error/node_modules/@octokit/types/dist-types/Fetch.d.ts","../../../node_modules/@octokit/request-error/node_modules/@octokit/types/dist-types/Signal.d.ts","../../../node_modules/@octokit/request-error/node_modules/@octokit/types/dist-types/RequestRequestOptions.d.ts","../../../node_modules/@octokit/request-error/node_modules/@octokit/types/dist-types/RequestHeaders.d.ts","../../../node_modules/@octokit/request-error/node_modules/@octokit/types/dist-types/RequestParameters.d.ts","../../../node_modules/@octokit/request-error/node_modules/@octokit/types/dist-types/EndpointOptions.d.ts","../../../node_modules/@octokit/request-error/node_modules/@octokit/types/dist-types/ResponseHeaders.d.ts","../../../node_modules/@octokit/request-error/node_modules/@octokit/types/dist-types/OctokitResponse.d.ts","../../../node_modules/@octokit/request-error/node_modules/@octokit/types/dist-types/EndpointDefaults.d.ts","../../../node_modules/@octokit/request-error/node_modules/@octokit/types/dist-types/RequestOptions.d.ts","../../../node_modules/@octokit/request-error/node_modules/@octokit/types/dist-types/Route.d.ts","../../../node_modules/@octokit/request-error/node_modules/@octokit/openapi-types/types.d.ts","../../../node_modules/@octokit/request-error/node_modules/@octokit/types/dist-types/generated/Endpoints.d.ts","../../../node_modules/@octokit/request-error/node_modules/@octokit/types/dist-types/EndpointInterface.d.ts","../../../node_modules/@octokit/request-error/node_modules/@octokit/types/dist-types/RequestInterface.d.ts","../../../node_modules/@octokit/request-error/node_modules/@octokit/types/dist-types/AuthInterface.d.ts","../../../node_modules/@octokit/request-error/node_modules/@octokit/types/dist-types/RequestError.d.ts","../../../node_modules/@octokit/request-error/node_modules/@octokit/types/dist-types/StrategyInterface.d.ts","../../../node_modules/@octokit/request-error/node_modules/@octokit/types/dist-types/VERSION.d.ts","../../../node_modules/@octokit/request-error/node_modules/@octokit/types/dist-types/GetResponseTypeFromEndpointMethod.d.ts","../../../node_modules/@octokit/request-error/node_modules/@octokit/types/dist-types/index.d.ts","../../../node_modules/@octokit/request-error/dist-types/types.d.ts","../../../node_modules/@octokit/request-error/dist-types/index.d.ts","../../../node_modules/@octokit/plugin-paginate-rest/dist-types/generated/paginating-endpoints.d.ts","../../../node_modules/@octokit/plugin-paginate-rest/dist-types/types.d.ts","../../../node_modules/@octokit/plugin-paginate-rest/dist-types/compose-paginate.d.ts","../../../node_modules/@octokit/plugin-paginate-rest/dist-types/paginating-endpoints.d.ts","../../../node_modules/@octokit/plugin-paginate-rest/dist-types/index.d.ts","../../../node_modules/@octokit/plugin-rest-endpoint-methods/dist-types/generated/parameters-and-response-types.d.ts","../../../node_modules/@octokit/plugin-rest-endpoint-methods/dist-types/generated/method-types.d.ts","../../../node_modules/@octokit/plugin-rest-endpoint-methods/dist-types/types.d.ts","../../../node_modules/@probot/octokit-plugin-config/dist-types/types.d.ts","../../../node_modules/probot/lib/octokit/probot-octokit.d.ts","../../../node_modules/@types/mime/index.d.ts","../../../node_modules/@types/send/index.d.ts","../../../node_modules/@types/qs/index.d.ts","../../../node_modules/@types/range-parser/index.d.ts","../../../node_modules/probot/node_modules/@types/express-serve-static-core/index.d.ts","../../../node_modules/@types/serve-static/index.d.ts","../../../node_modules/@types/connect/index.d.ts","../../../node_modules/@types/body-parser/index.d.ts","../../../node_modules/probot/node_modules/@types/express/index.d.ts","../../../node_modules/@types/ioredis/index.d.ts","../../../node_modules/@types/pino-http/index.d.ts","../../../node_modules/probot/lib/types.d.ts","../../../node_modules/probot/lib/context.d.ts","../../../node_modules/probot/lib/probot.d.ts","../../../node_modules/probot/lib/server/server.d.ts","../../../node_modules/probot/lib/run.d.ts","../../../node_modules/probot/lib/create-node-middleware.d.ts","../../../node_modules/probot/lib/create-probot.d.ts","../../../node_modules/probot/lib/index.d.ts","../../../node_modules/recast/node_modules/ast-types/lib/gen/namedTypes.d.ts","../../../node_modules/recast/node_modules/ast-types/lib/gen/kinds.d.ts","../../../node_modules/recast/node_modules/ast-types/lib/gen/builders.d.ts","../../../node_modules/recast/node_modules/ast-types/lib/types.d.ts","../../../node_modules/recast/node_modules/ast-types/lib/path.d.ts","../../../node_modules/recast/node_modules/ast-types/lib/scope.d.ts","../../../node_modules/recast/node_modules/ast-types/lib/node-path.d.ts","../../../node_modules/recast/node_modules/ast-types/lib/path-visitor.d.ts","../../../node_modules/recast/node_modules/ast-types/lib/gen/visitor.d.ts","../../../node_modules/recast/node_modules/ast-types/lib/main.d.ts","../../../node_modules/recast/lib/options.d.ts","../../../node_modules/recast/lib/parser.d.ts","../../../node_modules/recast/lib/printer.d.ts","../../../node_modules/recast/main.d.ts","../node_modules/@babel/types/lib/index.d.ts","../node_modules/@babel/parser/typings/babel-parser.d.ts","../../../node_modules/@babel/parser/node_modules/@babel/types/lib/index.d.ts","../../../node_modules/@babel/parser/typings/babel-parser.d.ts","../../../node_modules/recast/parsers/_babel_options.d.ts","../src/parsers/typescript.ts","../src/reports/reportClassName.ts","../src/reports/constants.ts","../src/reports/types.ts","../src/reports/reportInlineStyle.ts","../src/reports/reportCustomStyleProperties.ts","../src/reports/reportStyledComponents.ts","../src/parseSource.ts","../src/index.ts","../src/__tests__/parseSource.spec.ts","../../../node_modules/@types/aws-lambda/common/api-gateway.d.ts","../../../node_modules/@types/aws-lambda/common/cloudfront.d.ts","../../../node_modules/@types/aws-lambda/handler.d.ts","../../../node_modules/@types/aws-lambda/trigger/alb.d.ts","../../../node_modules/@types/aws-lambda/trigger/api-gateway-proxy.d.ts","../../../node_modules/@types/aws-lambda/trigger/api-gateway-authorizer.d.ts","../../../node_modules/@types/aws-lambda/trigger/appsync-resolver.d.ts","../../../node_modules/@types/aws-lambda/trigger/autoscaling.d.ts","../../../node_modules/@types/aws-lambda/trigger/cloudformation-custom-resource.d.ts","../../../node_modules/@types/aws-lambda/trigger/cdk-custom-resource.d.ts","../../../node_modules/@types/aws-lambda/trigger/cloudfront-request.d.ts","../../../node_modules/@types/aws-lambda/trigger/cloudfront-response.d.ts","../../../node_modules/@types/aws-lambda/trigger/eventbridge.d.ts","../../../node_modules/@types/aws-lambda/trigger/cloudwatch-events.d.ts","../../../node_modules/@types/aws-lambda/trigger/cloudwatch-logs.d.ts","../../../node_modules/@types/aws-lambda/trigger/codebuild-cloudwatch-state.d.ts","../../../node_modules/@types/aws-lambda/trigger/codecommit.d.ts","../../../node_modules/@types/aws-lambda/trigger/codepipeline.d.ts","../../../node_modules/@types/aws-lambda/trigger/codepipeline-cloudwatch-action.d.ts","../../../node_modules/@types/aws-lambda/trigger/codepipeline-cloudwatch-pipeline.d.ts","../../../node_modules/@types/aws-lambda/trigger/codepipeline-cloudwatch-stage.d.ts","../../../node_modules/@types/aws-lambda/trigger/codepipeline-cloudwatch.d.ts","../../../node_modules/@types/aws-lambda/trigger/cognito-user-pool-trigger/_common.d.ts","../../../node_modules/@types/aws-lambda/trigger/cognito-user-pool-trigger/create-auth-challenge.d.ts","../../../node_modules/@types/aws-lambda/trigger/cognito-user-pool-trigger/custom-email-sender.d.ts","../../../node_modules/@types/aws-lambda/trigger/cognito-user-pool-trigger/custom-message.d.ts","../../../node_modules/@types/aws-lambda/trigger/cognito-user-pool-trigger/custom-sms-sender.d.ts","../../../node_modules/@types/aws-lambda/trigger/cognito-user-pool-trigger/define-auth-challenge.d.ts","../../../node_modules/@types/aws-lambda/trigger/cognito-user-pool-trigger/post-authentication.d.ts","../../../node_modules/@types/aws-lambda/trigger/cognito-user-pool-trigger/post-confirmation.d.ts","../../../node_modules/@types/aws-lambda/trigger/cognito-user-pool-trigger/pre-authentication.d.ts","../../../node_modules/@types/aws-lambda/trigger/cognito-user-pool-trigger/pre-signup.d.ts","../../../node_modules/@types/aws-lambda/trigger/cognito-user-pool-trigger/pre-token-generation.d.ts","../../../node_modules/@types/aws-lambda/trigger/cognito-user-pool-trigger/pre-token-generation-v2.d.ts","../../../node_modules/@types/aws-lambda/trigger/cognito-user-pool-trigger/user-migration.d.ts","../../../node_modules/@types/aws-lambda/trigger/cognito-user-pool-trigger/verify-auth-challenge-response.d.ts","../../../node_modules/@types/aws-lambda/trigger/cognito-user-pool-trigger/index.d.ts","../../../node_modules/@types/aws-lambda/trigger/connect-contact-flow.d.ts","../../../node_modules/@types/aws-lambda/trigger/dynamodb-stream.d.ts","../../../node_modules/@types/aws-lambda/trigger/iot.d.ts","../../../node_modules/@types/aws-lambda/trigger/iot-authorizer.d.ts","../../../node_modules/@types/aws-lambda/trigger/kinesis-firehose-transformation.d.ts","../../../node_modules/@types/aws-lambda/trigger/kinesis-stream.d.ts","../../../node_modules/@types/aws-lambda/trigger/lambda-function-url.d.ts","../../../node_modules/@types/aws-lambda/trigger/lex.d.ts","../../../node_modules/@types/aws-lambda/trigger/lex-v2.d.ts","../../../node_modules/@types/aws-lambda/trigger/amplify-resolver.d.ts","../../../node_modules/@types/aws-lambda/trigger/msk.d.ts","../../../node_modules/@types/aws-lambda/trigger/s3.d.ts","../../../node_modules/@types/aws-lambda/trigger/s3-batch.d.ts","../../../node_modules/@types/aws-lambda/trigger/s3-event-notification.d.ts","../../../node_modules/@types/aws-lambda/trigger/secretsmanager.d.ts","../../../node_modules/@types/aws-lambda/trigger/self-managed-kafka.d.ts","../../../node_modules/@types/aws-lambda/trigger/ses.d.ts","../../../node_modules/@types/aws-lambda/trigger/sns.d.ts","../../../node_modules/@types/aws-lambda/trigger/sqs.d.ts","../../../node_modules/@types/aws-lambda/index.d.ts","../../../node_modules/@probot/adapter-aws-lambda-serverless/index.d.ts","../netlify/functions/snowflake.ts","../node_modules/@jest/expect-utils/build/index.d.ts","../../../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/expect/build/index.d.ts","../node_modules/@types/jest/index.d.ts","../../../node_modules/@types/body-parser/node_modules/@types/node/ts3.2/index.d.ts","../../../node_modules/@types/connect/node_modules/@types/node/ts3.2/index.d.ts","../../../node_modules/@types/ioredis/node_modules/@types/node/ts3.2/index.d.ts","../../../node_modules/@types/send/node_modules/@types/node/ts3.2/index.d.ts","../../../node_modules/@types/serve-static/node_modules/@types/node/ts3.2/index.d.ts","../../../node_modules/@types/node/index.d.ts","../../../node_modules/probot/node_modules/@types/node/ts3.2/index.d.ts","../node_modules/expect/node_modules/@types/node/ts3.2/index.d.ts"],"fileInfos":["721cec59c3fef87aaf480047d821fb758b3ec9482c4129a54631e6e25e432a31",{"version":"8730f4bf322026ff5229336391a18bcaa1f94d4f82416c8b2f3954e2ccaae2ba","affectsGlobalScope":true},"dc47c4fa66b9b9890cf076304de2a9c5201e94b740cffdf09f87296d877d71f6","7a387c58583dfca701b6c85e0adaf43fb17d590fb16d5b2dc0a2fbd89f35c467","8a12173c586e95f4433e0c6dc446bc88346be73ffe9ca6eec7aa63c8f3dca7f9","5f4e733ced4e129482ae2186aae29fde948ab7182844c3a5a51dd346182c7b06",{"version":"3aafcb693fe5b5c3bd277bd4c3a617b53db474fe498fc5df067c5603b1eebde7","affectsGlobalScope":true},{"version":"f3d4da15233e593eacb3965cde7960f3fddf5878528d882bcedd5cbaba0193c7","affectsGlobalScope":true},{"version":"7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481","affectsGlobalScope":true},{"version":"097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd","affectsGlobalScope":true},{"version":"adb996790133eb33b33aadb9c09f15c2c575e71fb57a62de8bf74dbf59ec7dfb","affectsGlobalScope":true},{"version":"8cc8c5a3bac513368b0157f3d8b31cfdcfe78b56d3724f30f80ed9715e404af8","affectsGlobalScope":true},{"version":"cdccba9a388c2ee3fd6ad4018c640a471a6c060e96f1232062223063b0a5ac6a","affectsGlobalScope":true},{"version":"c5c05907c02476e4bde6b7e76a79ffcd948aedd14b6a8f56e4674221b0417398","affectsGlobalScope":true},{"version":"5f406584aef28a331c36523df688ca3650288d14f39c5d2e555c95f0d2ff8f6f","affectsGlobalScope":true},{"version":"22f230e544b35349cfb3bd9110b6ef37b41c6d6c43c3314a31bd0d9652fcec72","affectsGlobalScope":true},{"version":"7ea0b55f6b315cf9ac2ad622b0a7813315bb6e97bf4bb3fbf8f8affbca7dc695","affectsGlobalScope":true},{"version":"3013574108c36fd3aaca79764002b3717da09725a36a6fc02eac386593110f93","affectsGlobalScope":true},{"version":"eb26de841c52236d8222f87e9e6a235332e0788af8c87a71e9e210314300410a","affectsGlobalScope":true},{"version":"3be5a1453daa63e031d266bf342f3943603873d890ab8b9ada95e22389389006","affectsGlobalScope":true},{"version":"17bb1fc99591b00515502d264fa55dc8370c45c5298f4a5c2083557dccba5a2a","affectsGlobalScope":true},{"version":"7ce9f0bde3307ca1f944119f6365f2d776d281a393b576a18a2f2893a2d75c98","affectsGlobalScope":true},{"version":"6a6b173e739a6a99629a8594bfb294cc7329bfb7b227f12e1f7c11bc163b8577","affectsGlobalScope":true},{"version":"81cac4cbc92c0c839c70f8ffb94eb61e2d32dc1c3cf6d95844ca099463cf37ea","affectsGlobalScope":true},{"version":"b0124885ef82641903d232172577f2ceb5d3e60aed4da1153bab4221e1f6dd4e","affectsGlobalScope":true},{"version":"0eb85d6c590b0d577919a79e0084fa1744c1beba6fd0d4e951432fa1ede5510a","affectsGlobalScope":true},{"version":"da233fc1c8a377ba9e0bed690a73c290d843c2c3d23a7bd7ec5cd3d7d73ba1e0","affectsGlobalScope":true},{"version":"d154ea5bb7f7f9001ed9153e876b2d5b8f5c2bb9ec02b3ae0d239ec769f1f2ae","affectsGlobalScope":true},{"version":"bb2d3fb05a1d2ffbca947cc7cbc95d23e1d053d6595391bd325deb265a18d36c","affectsGlobalScope":true},{"version":"c80df75850fea5caa2afe43b9949338ce4e2de086f91713e9af1a06f973872b8","affectsGlobalScope":true},{"version":"09aa50414b80c023553090e2f53827f007a301bc34b0495bfb2c3c08ab9ad1eb","affectsGlobalScope":true},{"version":"2768ef564cfc0689a1b76106c421a2909bdff0acbe87da010785adab80efdd5c","affectsGlobalScope":true},{"version":"52d1bb7ab7a3306fd0375c8bff560feed26ed676a5b0457fa8027b563aecb9a4","affectsGlobalScope":true},{"version":"6cf62fbc792aa81fa62f99dab5cc692c5315ecd5da09dd35f1ccc82778c4d5bc","affectsGlobalScope":true},"7860312f33f0cf2c93500787d02c4cc43ea3d0c080d4781095ac7715d5da3316","1305b079a057355f496bdde048716189178877a6b4fe0e9267a46af67f8c7561","61215c1a376bbe8f51cab4cc4ddbf3746387015113c37a84d981d4738c21b878","93d28b4eb12c68fccc1f2fc04a4ef83ea3b2a03b18055d3bf29cab267aa7042e","163b9cd8ff3c8f1d4a7fd110099bb5d606a389c58233562516d70ac2d7e0ec7c","ce629710e5e58724902b753212e97861fd73e2aa09f5d88cb6d55dc763cf8c8a","525c8fc510d9632d2a0a9de2d41c3ac1cdd79ff44d3b45c6d81cacabb683528d","8ce9418c78d3c1fb703ddbe38c936d34a989ba278666979826590dfa0772a424","b3f81dd4989859ead76eccc72ddbec4054be6a3f929f10b4d5152dfc7056aa3d","7954df44c35d39b851b996fdc1af0a252e4e23f862abfef388a058203bb94c30","ef226a42de7022eacdfa0f15aabf73b46c47af93044c8ebfab8aa8e3cf6c330c","d5b7c8819ce1bd31a45f7675309e145ec28e3aa1b60a8e0637fd0e8916255baa","3ad728027671c2c3c829e21803f8d7a15b29d808293644d50d928213280c072d","73960df01a343af100864718ac28699edf0a108d742270b8709df2f2c60192ce","d5470fad800f025be0c4bd1b14c013ea5b4aeec90e53ab0e2703a8fe01f292b3","ecf9856b1bddabca617353ec5ae8389b91e5055c8f0fbb7f3dae001db6cce4bb","dacbe08610729f6343ea9880ea8e737c6d7a6efa4a318d8f6acaf85db4aceed6","4218ced3933a31eed1278d350dd63c5900df0f0904f57d61c054d7a4b83dbe4c","03394bf8deb8781b490ae9266a843fbdf00647947d79e25fcbf1d89a9e9c8a66","358398fe4034395d85c87c319cca7a04001434b13dc68d067481ecb374385bfc","1a6016bd905855b2b45881e9edbd7ab8c7175f8bcbb711ff06989c4bcdc75486","5fb30076f0e0e5744db8993648bfb67aadd895f439edad5cce039127a87a8a36","27ef4001526ee9d8afa57687a60bb3b59c52b32d29db0a2260094ab64726164f",{"version":"0e0d58f5e90c0a270dac052b9c5ad8ccdfc8271118c2105b361063218d528d6e","affectsGlobalScope":true},"30ec6f9c683b988c3cfaa0c4690692049c4e7ed7dc6f6e94f56194c06b86f5e1","5b34786b5d59b4e627c76f1294a00b5e92260a31ca87b29d9b7cb9acd3ba1acc","e1045d32a6a59dbcbe0ed2edddc6568221acc299ac68d92284153e7c00b39d51","65dbe15ed8a8ed5d4707a63868178dc38111cfc06de28a2e50713ca017a9c157","735c23d34f165346d39c45817cb2557adf5548676687e6afbbf54a6e96731dec","7e62aac2cc9c0710d772047ad89e8d7117f52592c791eb995ce1f865fedab432","b40652bf8ce4a18133b31349086523b219724dca8df3448c1a0742528e7ad5b9","af5f07deb33b2fb92ef67ea5ebb69670b81c74908b646e7cd4361a331d2a558a","978aecd2e6bc2ac094e9a35eda98ff8586713857b3655e7c98ca5ed8f7d50662","df905913ad47e24b6cb41d33f0c1f500bf9c4befe4325413a7644c9eb1e7965c","1e3da92862604b1f7a32265169f9aa712c4567742d42597704e04ae3e07019e7","bf237fb2ca1ac62fde63e5f8178a9030e4d6b11987744007272f03a9deec6f76","4407bd5f1d6f748590ba125195eb1d7a003c2de2f3b057456d3ac76a742d2561","bf244a366e8ee68acda125761c6e337c8795b37eef05947d62f89b584de926b3","7780573ed8387aaadcc61d87f3d60d77dabf1e060da252dc72ab1d73401988bb","f409183966a1dd93d3a9cd1d54fbeb85c73101e87cd5b19467c5e37b252f3fd8","6622f76993bdfeaacb947ba7c4cf26f2e5c5194194d02d792c3cba4174cd8fce","1ed55651f38540dba21f4a864bd89834ddb552446dce8c8a5f9dc0b44ce0b024","4f54f0a9dd3b644c99ec32b32f8804d5978bc854799b228ae9c467bf3c84c64c",{"version":"4926e99d2ad39c0bbd36f2d37cc8f52756bc7a5661ad7b12815df871a4b07ba1","affectsGlobalScope":true},"7c7dabe6de2f88a1b4a4d9a15479c2a99b6f5864b434b9d960fc312ba9498c0a","172f31b538f6e3f70c2d001d665d5a46c4b043f707ba822b4d906d59bd9c229d","043e933c8127f2215f940035bfac94354b82a49f419bb77af0045f0c57e6a05e","877f45a462a235fb899bc00e0bedbf94349730a4e4dd3eac174257c66880a84d","685fbeeffdff5e703820a6328ef0c7b693d398bf8d061e1050e20344f8ddf47a","54160aaec4f72e2045e7341301c096344b9e5162a1e48333a531117af5938713","3f0d8705992ebf25221e0d3f72d496bbcebacb47c2b6ee90f4de66d760ee9152","af628c57e9826fbe767ae6afbffa7b197405a8c53ba6197bb32e806d35c1ca8f","76b87f8b5d13712d3fc53a231be1664c4071186120624f2ae1b5bf3db6c7b502","2c7742afcffed27fef8e373c7939f20b64b8783d37e737bba2b3e0d70899ee2c","a9cdd476c9e36aa3bf4212f4337254f2f2676506aabb6f7d8f6db50490d25c33","52c0780e990d8d2ef666d618a303bca67a5e968dbaa4e4eaaad4e415a7217fd1","80a16135e14ed2540f9687f4fb5daee3a4249126272a5a922a5a21ee3b7048c3","7f7aa3e938180da966143e16c4686c7eb2ab8d0f762f038648e1cc6577e1d52e","6e9413bf8a3ce70c3b7db79a29de97281576b731de079d0853f1de499304fbb3","f6aef032da1a16fa155757a6ee8a79c749e579a378d9ba54256d1cefc753d475","5f9c212f98b4df7d638dd9a8125c5e828acbf9710586cd8027e41e4e55819a37","2c574466b0d7ded0bfedaea3660d8f008cefa06db748d79274b4aaea46564763","caa881dd5d50ad64aab709ecf06219874cbc23045e46630bdcdc7c4c32892965","ae07438e2c832c3fb33b98bf3894e460fe71a590b65e6dc55d5a5e1a32062066","7e122724e79d97fc601b9517da07dacf9e8162f5d78ad5740b349e2065ded611","3c9c80b328558dde371257f1dec7ee2f26004c3497b3e302b94fc415b01c0190","3455a4c5f5feefa1f7062e4d8b00837e1edf7922b10cb50769b4ed3c5e37437f","74fd4b09963df6d2a1c94b653199c48d5a578164517a7ae27ff86771662f6764","6a6752f432019855ae0c882f1dd5b6ca11d4da35f2279e7efaa98caec41588af","569c4482357560c490a62d200409d3bedf92efa43bd2e2d728be1daa6d4140ab","7a50f76e773ead4a34b5308879130da83192040ef6dafc5f18570ff6ad2bda61","70f53130d4dcf2f25b58eba7bb7ab4dd80994ad7dab46b37e60cd13a70761fd4","6d575187149a38a8d06d986e6d8111aad796785dd57847672f01ba07987c8e3d","24a1a5007809de3b55b5f86ae8dac8a71f262d508595a04d8de76f692cd127b0","cdeea24d217b06f597246c215af7c8488a8cc963b26aeab3f30fdbc04c3638c7","32684eca94b76799df29ff777e9425062456489d4d80405f4ac5d769ac1dbb7d","b708fc2911456eb3065f831c8e152a24ec42e8b2ec260b1772e6976039616ef0","16739082244f59e0856fae2410fdc9d38eddce8ad6424dc5d4223ca59e4a7ec2","189ba8368e43627d18bb88c99de5982ac347e5911f5d89851a3c43f8b6e14569","4f10472206bfa7bed6ccad0775423dfb19daff28b7ac32ace3b72d3721596eef","7984964df543f9092f501c17ddf6e705a41b3fcfa17708716e0dfdeaf4b15087","092f926dc9f141977dc163cb0a4bd8df28d1def1a3091f30af42ea702db98fc1","f163b1edf76fbde01836f8522fbe646fe2f55e313bb7fdd363891748f9b57c60","f4fc6f33af72add3d409feae7e6eb6fd48dd05a7fda785a832addafa4c7ce8a7","758e92a92871b11a9aede1787106be4764ae6a32f6c76bb29f072bfa28d9f69a","5c291d7429bff327ce5502221f1d2fea64277760793324e7419892e3af29dd63","126eb12a1d90e542ab5c67389bf04063eb0a6102450903a4e9a660fb1b1d2abe","a513bf738f28c66621a4c2c577d72f37b74175df5c645dc6df6befdd6b090044","24a1a5007809de3b55b5f86ae8dac8a71f262d508595a04d8de76f692cd127b0","8e7ed96554279194f78c20d966ed1517aaa27dcfb60d23e5d36a51e07daeb823","63db3f21f835af9dfa90829a54ba11a5f34c9fb9f73a235d603d5705c126f7bb","54160aaec4f72e2045e7341301c096344b9e5162a1e48333a531117af5938713","3f0d8705992ebf25221e0d3f72d496bbcebacb47c2b6ee90f4de66d760ee9152","af628c57e9826fbe767ae6afbffa7b197405a8c53ba6197bb32e806d35c1ca8f","76b87f8b5d13712d3fc53a231be1664c4071186120624f2ae1b5bf3db6c7b502","2c7742afcffed27fef8e373c7939f20b64b8783d37e737bba2b3e0d70899ee2c","a9cdd476c9e36aa3bf4212f4337254f2f2676506aabb6f7d8f6db50490d25c33","52c0780e990d8d2ef666d618a303bca67a5e968dbaa4e4eaaad4e415a7217fd1","80a16135e14ed2540f9687f4fb5daee3a4249126272a5a922a5a21ee3b7048c3","7f7aa3e938180da966143e16c4686c7eb2ab8d0f762f038648e1cc6577e1d52e","6e9413bf8a3ce70c3b7db79a29de97281576b731de079d0853f1de499304fbb3","f6aef032da1a16fa155757a6ee8a79c749e579a378d9ba54256d1cefc753d475","5f9c212f98b4df7d638dd9a8125c5e828acbf9710586cd8027e41e4e55819a37","2c574466b0d7ded0bfedaea3660d8f008cefa06db748d79274b4aaea46564763","dbc551152b20e883456b43af1e13ce1fc708863e7360c34495384ff0bfc46022","569715fea4f238369afe360ad8ef8a6b2f5ae4993c8fa2da106974e9b82c9292","7e122724e79d97fc601b9517da07dacf9e8162f5d78ad5740b349e2065ded611","3c9c80b328558dde371257f1dec7ee2f26004c3497b3e302b94fc415b01c0190","3455a4c5f5feefa1f7062e4d8b00837e1edf7922b10cb50769b4ed3c5e37437f","74fd4b09963df6d2a1c94b653199c48d5a578164517a7ae27ff86771662f6764","6a6752f432019855ae0c882f1dd5b6ca11d4da35f2279e7efaa98caec41588af","6bcc43e7261c858761a8a2d30db9ce86a1cfd6a6bf18f58ecde0d772adece4ee","7a50f76e773ead4a34b5308879130da83192040ef6dafc5f18570ff6ad2bda61","70f53130d4dcf2f25b58eba7bb7ab4dd80994ad7dab46b37e60cd13a70761fd4","6d575187149a38a8d06d986e6d8111aad796785dd57847672f01ba07987c8e3d","24a1a5007809de3b55b5f86ae8dac8a71f262d508595a04d8de76f692cd127b0","5a0e97850ab7f500be1fae2c73135e8722011dbe325352405da40e5694c2105a","bbb47b581e8e5495c1754b066202d24f762fd7fccfe1fcc443aec07c992cc229","0940279b6cdfb51032bd6bb0b02c3a4ac2b0a73e380d6c48bf8b503d0de08350","06ae8b7ddac3aff63085a4c6384557b36ef61075aa6c5173fdf3834b19a702d6","b5b49a989ba1e33c2d84afe92eb47029b57df7c14a226468ca0b34c65f995a91","95eb6d75484e2d939a90fde29d6f8d44f7b60e95383b0b2fbe509312b96a5927","7acba69bb1e26caff186d177f681eab25b4b10284c2d19d6368d48f999f1857f","c523378d3aa12273db8ccda1879bc645b76161b32bde7060c7381af113879312","d0bda71c912cccf24d8774ed6bee6e19bb997022d1cd2e875169c3edd2647a74","b5421e0f77d815a6cef21c15a820d08959be4e79d465f42856c3c9c35600ac66","84e3bbd6f80983d468260fdbfeeb431cc81f7ea98d284d836e4d168e36875e86","b78cd10245a90e27e62d0558564f5d9a16576294eee724a59ae21b91f9269e4a","ba601641fac98c229ccd4a303f747de376d761babb33229bb7153bed9356c9cc","16d51f964ec125ad2024cf03f0af444b3bc3ec3614d9345cc54d09bab45c9a4c",{"version":"50072f976cfa86af1a3044f55cd729d992abe39222d2f6cdf929266c77a42b0b","affectsGlobalScope":true},"0b85cb069d0e427ba946e5eb2d86ef65ffd19867042810516d16919f6c1a5aec","6d829824ead8999f87b6df21200df3c6150391b894b4e80662caa462bd48d073","afc559c1b93df37c25aef6b3dfa2d64325b0e112e887ee18bf7e6f4ec383fc90","5c45abf1e13e4463eacfd5dedda06855da8748a6a6cb3334f582b52e219acc04","be00321090ed100e3bd1e566c0408004137e73feb19d6380eba57d68519ff6c5","90e7d6685ccdde9fbd813aff4b998c1d41204512a9a26998d611d7da665a4a44","b89a51fec964dfd1ce9d7ca0399bdaa415cc106dbce3a0081d7c8fb6035e5213","89ac227fcc00596dddb43b2c3f6d43707e62a998d043d63ce83e5b6a032c6ef6","5f0a41bd45c707df7721bffeb54e3445b0356d1d2dcc132c3dbadd68b68f3c0c","34b4cdb7eec8647ae6deb505a3c04e1c06310f68cb94bbb3ea033805dcd2c513","c8065e48aa118c1a6f0b003f53139992700438188549947f54619e8c95733744","a94a6f6aa721b13bf191faf387e3867f0b7fb63bce1dccd87a2aefeedeb986f9","cd75d46c18ea1b72aef4a46d0345a8e9e55b37cc78725e949787b240e74eed8c","606ec8b7eaaf1d2a1aa015fddcc7d711e7db777cc30b38f7cfe9d2d80ed629e1","0295c7a5d5d956391ab9bf0410e73a89e25fe26810f9a1d823cc794d682cdafc","19826a846db870c2261a3c4cf0695df889d9fe3eebe7775f3f5bc76fe7ad07a7","e04cafd03370139cdb0c846273cb19eb4264be0073c7baf78e9b2c16ffb74813","7c01c77fb7d8664daa64819245d785e106e0a3cb6e43da64346e4400d7fa9401","8c2ca98f4713d989d610fbd38a44316bc43c50aa26983e62dc31002f32ce63fa","ee931610d1cf7a6e666fad138187751392fc88bee931b94ac8c4571208dc7370","53543b3b64e624a81fc5876da6d72c94dd87655e7afc10988cf82ce7cbc74180","967e68e99b8a80551837321442a0e2f12ef50aa1ce567ec991ac6bf062a0c7cf","144ab2f3ef7404caf39c6acc88d248d7e55ab3dd1c4c0d89367ad12169aec113","759002d4454b851c51b3585e0837c77d159c59957fc519c876449ee5d80a6643","07c50b6db67b8b943aed3e410bfeebfb6d3ba1fd1e2819bc889e48f81e94ed2d","e3a5287471fb08f053c06fd998632792aa5f022e45278f1e6dd55fb2fa9e7362","28a6c8eeb48e165920067b9193555649fc43c2a28c450f23f622e5eb043d9463","1147c3efa5a256bcd6a3d2cfaf764185b7120bf985f8412d9bae596a0348f77b","923c136dcbf20f140c369078a7eb56f6697889d104397d694f70e21dd08b1810","5f02abbb1b17e3d1e68c5eea14adf4705696e6255e2982b010c0dc2a5417b606","923c136dcbf20f140c369078a7eb56f6697889d104397d694f70e21dd08b1810","96c23535f4f9dd15beb767e070559ea672f6a35f103152836a67100605136a96","68708f52470e53b6a96cdaf9f7cd5117c6aa4bc6ccbeab1d6e4f7e317318482e",{"version":"7dd0b381a26e858399db5d05b161633f68573210eba08de008827af2d66d0771","signature":"c98980b1795d9700814bffe0dfb15e7e71b28a6eca8d48b1392e26443557897b"},{"version":"82b0c28a768a9e30f5eaff7f4ea3e8df44f8df1dab1de791cd6025c2273b54fc","signature":"67c425c9dd47ace291ca621c736ac011931f5a1c5134bd8d8865a7dc47414c52"},{"version":"0aa2ada6481c4767d689e2b63af5f96c88b5df9343d6fb4bfe6047d5b4863487","signature":"b78466d1d8814283adb83523e496da2288683068fdb2876a6cea89caa6365c47"},{"version":"c5569283752502d4577545135f7d98b63cf5b9543ff2fe8a5ae63c1d34f1b2cb","signature":"b6420bcdbf4888a544dcd721ebac0aa357fa3a6e262dec9da189c105f23082ef"},{"version":"f0c595d9f6260b4d7fb0d64a760efebbf1def9832e48ac9a8a9983fafdf47245","signature":"e9b654b42bfab8bbf2a0b09b29fcc48a2025baafb2c3de8862c658f551f40ccb"},{"version":"1ea45b495fd489176ea0a644ecda5903f77df7118b37e6d933b92cbdae5f94a3","signature":"4f94845e97c2ba80789184df3e8568d524836f59e87f561860b13b41b19079b5"},{"version":"2381ab938523a13aa940f9775cb0595c8dd3931be7fa5f6b510d4843e0ee8a0c","signature":"1bce9a7853785749760d0299b09e02e8476a42a2d67a72d13eeb525313eccc1e"},{"version":"bd788f150de975eb3054e0294e34c72cd798d5f6cbbdacf38bb2c31152f36cce","signature":"24def78a0b86a0ed735255875900ac3a37240210cc5aa8641cf50aa9c6972208"},{"version":"08648815141111265c6206a7b4791338cfddc821bcfe8067525f7d99e703c978","signature":"ccf7f6f3c6b6b7d73f342c059e2c418655522e107417319639e1391492d28167"},{"version":"78fb799c1ca5d690c5d22cc029b61f9b78395a3015fb5a39da7cc1778e30b3ee","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},"78ef0198c323d0f7b16f993ada3459f0e7e20567e7f56fe0c5ee78f31cb0840c","88533ff507514078998ea6e02390b4a7934bcff52fe9b8389e06037af8619cb2","5ec614ed82e045de15417a47e2568be5310d43d4764ee43d295ea38caafbfd17","b788ef070e70003842cbd03c3e04f87d46b67a47b71e9e7d8713fd8c58c5f5ec","583d365dc19f813f1e2767771e844c7c4ea9ab1a01e85e0119f2e083488379c2","16ab5b20dbc2b0860c3c59941570e616f8a6fc31a689fdc8c1b984b96dcd11af","0dfbdeb122565d1b0ecf42a04648c7c370a880ea27b74b8c2a87cc9b9f73398d","58c7f7820dc027a539b0437be7e1f8bdf663f91fbc9e861d80bb9368a38d4a94","f8e6a8fa14ad7cfab128f9922505b57fb4fbd82828047c46d7137c066c9bff21","57ab70cf1fcc245d66577501f0846fae49a953c92f004e7927e5ea7bb57c6a68","bbc49fd9dc6ee162ba3d270c834398e0c1d44e657ac4edfa55ac837902b7e0da","6993f360de4984b6743764fad3b88246d5dc6cfa45567783fc23833ad4e50c13","715682cddbefe50e27e5e7896acf4af0ffc48f9e18f64b0a0c2f8041e3ea869b","6d2f5a67bfe2034aa77b38f10977a57e762fd64e53c14372bcc5f1d3175ca322","4ff4add7b8cf26df217f2c883292778205847aefb0fd2aee64f5a229d0ffd399","33859aa36b264dd91bef77c279a5a0d259c6b63684d0c6ad538e515c69a489ec","33fa69f400b34c83e541dd5f4474f1c6fb2788614a1790c6c7b346b5c7eaa7dd","be213d7cbc3e5982b22df412cf223c2ac9d841c75014eae4c263761cd9d5e4c0","66451f9540fdf68a5fd93898257ccd7428cf7e49029f2e71b8ce70c8d927b87a","8a051690018330af516fd9ea42b460d603f0839f44d3946ebb4b551fe3bc7703","301fb04ef91ae1340bec1ebc3acdd223861c887a4a1127303d8eef7638b2d893","06236dfec90a14b0c3db8249831069ea3f90b004d73d496a559a4466e5a344a4","fc26991e51514bfc82e0f20c25132268b1d41e8928552dbaed7cc6f3d08fc3ac","5d82bb58dec5014c02aaeb3da465d34f4b7d5c724afea07559e3dfca6d8da5bc","44448f58f4d731dc28a02b5987ab6f20b9f77ad407dcf57b68c853fe52195cd7","b2818e8d05d6e6ad0f1899abf90a70309240a15153ea4b8d5e0c151e117b7338","1c708c15bb96473ce8ec2a946bd024ecded341169a0b84846931f979172244ba","ba1b8e276abe5519e0ba134fd0afba6668ba26d8d5a1fb359d88aff6357457c2","dc187f457333356ddc1ab8ec7833cd836f85e0bbcade61290dc55116244867cb","25525e173de74143042e824eaa786fa18c6b19e9dafb64da71a5faacc5bd2a5c","7a3d649f2de01db4b316cf4a0ce5d96832ee83641f1dc84d3e9981accf29c3a1","26e4260ee185d4af23484d8c11ef422807fb8f51d33aa68d83fab72eb568f228","c4d52d78e3fb4f66735d81663e351cf56037270ed7d00a9b787e35c1fc7183ce","864a5505d0e9db2e1837dce8d8aae8b7eeaa5450754d8a1967bf2843124cc262","2d045f00292ac7a14ead30d1f83269f1f0ad3e75d1f8e5a245ab87159523cf98","54bcb32ab0c7c72b61becd622499a0ae1c309af381801a30878667e21cba85bb","20666518864143f162a9a43249db66ca1d142e445e2d363d5650a524a399b992","28439c9ebd31185ae3353dd8524115eaf595375cd94ca157eefcf1280920436a","84344d56f84577d4ac1d0d59749bb2fde14c0fb460d0bfb04e57c023748c48a6","66738976a7aa2d5fb2770a1b689f8bc643af958f836b7bc08e412d4092de3ab9","35a0eac48984d20f6da39947cf81cd71e0818feefc03dcb28b4ac7b87a636cfd","f6c226d8222108b3485eb0745e8b0ee48b0b901952660db20e983741e8852654","93c3b758c4dc64ea499c9416b1ed0e69725133644b299b86c5435e375d823c75","4e85f443714cff4858fdaffed31052492fdd03ff7883b22ed938fc0e34b48093","0146912d3cad82e53f779a0b7663f181824bba60e32715adb0e9bd02c560b8c6","b515457bebb2ad795d748d1c30d9d093a1364946379baf1fbb6f83fd17523ed5","220783c7ca903c6ce296b210fae5d7e5c5cc1942c5a469b23d537f0fbd37eb18","0974c67cf3e2d539d0046c84a5e816e235b81c8516b242ece2ed1bdbb5dbd3d6","b4186237e7787a397b6c5ae64e155e70ac2a43fdd13ff24dfb6c1e3d2f930570","2647784fffa95a08af418c179b7b75cf1d20c3d32ed71418f0a13259bf505c54","0480102d1a385b96c05316b10de45c3958512bb9e834dbecbbde9cc9c0b22db3","eea44cfed69c9b38cc6366bd149a5cfa186776ca2a9fb87a3746e33b7e4f5e74","7f375e5ef1deb2c2357cba319b51a8872063d093cab750675ac2eb1cef77bee9","b7f06aec971823244f909996a30ef2bbeae69a31c40b0b208d0dfd86a8c16d4f","0421510c9570dfae34b3911e1691f606811818df00354df7abd028cee454979f","c61d8cc814035424b5d55348b6aede37074151c408de931ac3f63c7b6f761efb","39bb270617bc26839893067727c812c0c270c59c12526958813cdce37e32784b","4666fc05a14ec56162b4ac5e535e541f9c84abaa9e95013d782c08d2f19fc568",{"version":"dadb698ae95d7ffaf0c23876cbbb946549e4980b206ebc5fc4bda91da7b22f68","signature":"d73ff7d8748035098c235ebfa8f50a1db153d94eee761bf8abb75e487472c360"},"6c1e688f95fcaf53b1e41c0fdadf2c1cfc96fa924eaf7f9fdb60f96deb0a4986","0d14fa22c41fdc7277e6f71473b20ebc07f40f00e38875142335d5b63cdfc9d2","c085e9aa62d1ae1375794c1fb927a445fa105fed891a7e24edbb1c3300f7384a","f315e1e65a1f80992f0509e84e4ae2df15ecd9ef73df975f7c98813b71e4c8da","5b9586e9b0b6322e5bfbd2c29bd3b8e21ab9d871f82346cb71020e3d84bae73e","3e70a7e67c2cb16f8cd49097360c0309fe9d1e3210ff9222e9dac1f8df9d4fb6","ab68d2a3e3e8767c3fba8f80de099a1cfc18c0de79e42cb02ae66e22dfe14a66","6d969939c4a63f70f2aa49e88da6f64b655c8e6799612807bef41ccff6ea0da9",{"version":"46894b2a21a60f8449ca6b2b7223b7179bba846a61b1434bed77b34b2902c306","affectsGlobalScope":true}],"options":{"allowSyntheticDefaultImports":true,"declaration":true,"declarationMap":false,"esModuleInterop":true,"inlineSources":false,"module":1,"noFallthroughCasesInSwitch":true,"noImplicitAny":true,"noImplicitReturns":true,"noPropertyAccessFromIndexSignature":false,"noUnusedLocals":true,"noUnusedParameters":true,"outDir":"./","skipLibCheck":true,"strict":true,"strictNullChecks":true,"target":2},"fileIdsList":[[48,70,76,77],[48,70,76,77,194],[48,70,76,77,118,119,122,124],[48,70,76,77,106,108,125],[48,70,76,77,106,120],[48,70,76,77,119,120,121],[48,70,76,77,106],[48,70,76,77,106,107],[48,70,76,77,152],[48,70,76,77,125,152,153,154],[48,70,76,77,151],[48,70,76,77,106,125,151],[48,70,76,77,106,156],[48,70,76,77,106,157],[48,70,76,77,148,149],[48,70,76,77,148],[48,70,76,77,132,133,135,138,142],[48,70,76,77,126,127,131,132],[48,70,76,77,132,136,137,138,140],[48,70,76,77,126,127,132],[48,70,76,77,127,134],[48,70,76,77,132,135,138,140,141],[48,70,76,77,126,127,130,131],[48,70,76,77,127,130,131],[48,70,76,77,128,129],[48,70,76,77,143],[48,70,76,77,130,131,135,139],[48,70,76,77,126,127,128,129,130,131,132,133,134,135,136,137,138,140,141,142,143,144,145,146,147],[48,70,76,77,90,91,93,96,100],[48,70,76,77,84,85,89,90],[48,70,76,77,90,94,95,96,98],[48,70,76,77,84,85,90],[48,70,76,77,85,92],[48,70,76,77,90,93,96,98,99],[48,70,76,77,84,85,88,89],[48,70,76,77,85,88,89],[48,70,76,77,86,87],[48,70,76,77,101],[48,70,76,77,88,89,93,97],[48,70,76,77,84,85,86,87,88,89,90,91,92,93,94,95,96,98,99,100,101,102,103,104,105],[48,70,76,77,112],[48,70,76,77,111,112,113,115],[48,70,76,77,114,116],[48,70,76,77,110],[48,70,76,77,108,109,110,111],[48,70,76,77,172,179,265],[48,70,76,77,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264],[48,70,76,77,211],[48,70,76,77,211,215],[48,70,76,77,209,211,213],[48,70,76,77,209,211],[48,70,76,77,211,217],[48,70,76,77,210,211],[48,70,76,77,221],[48,70,76,77,211,227,228,229],[48,70,76,77,211,231],[48,70,76,77,211,232,233,234,235,236,237,238,239,240,241,242,243,244],[48,70,76,77,211,214],[48,70,76,77,211,213],[48,70,76,77,211,221],[48,49,70,76,77,167,171,277],[48,49,70,76,77,171,278],[47,48,63,66,70,76,77,279],[48,49,70,76,77,83,171],[47,48,49,63,70,76,77,79,80,81,82,171],[34,35,36,37,39,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,76,77],[47,48,54,63,70,76,77],[39,47,48,54,70,76,77],[48,63,70,76,77],[45,47,48,54,70,76,77],[47,48,70,76,77],[47,63,69,70,76,77],[47,48,54,63,69,70,76,77],[47,48,49,54,63,66,69,70,76,77,171],[47,48,49,66,69,70,76,77,171],[45,47,48,63,70,76,77],[36,48,70,76,77],[48,68,70,76,77],[47,48,63,70,76,77],[48,61,70,72,76,77],[43,45,48,54,63,70,76,77],[48,70,77],[34,48,70,76,77],[48,70,75,76,77,78],[48,70,76],[48,54,70,76,77],[48,60,70,76,77],[48,76,77],[47,48,63,70,72,76,77],[47,48,70,76,77,79],[48,63,70,76,77,161,280],[48,49,70,76,77,161,171,281],[48,49,70,76,77,171,282],[48,70,76,77,83,112,116,117,160,172],[48,49,70,76,77,171,172,283],[48,70,76,77,172,174,283],[48,70,76,77,83,160,172,173,174,175,176,177,178],[48,70,76,77,124,125,150,155,157,158,159],[48,70,76,77,83,116,160,172],[48,70,76,77,172,175],[48,49,70,76,77,83,165,169,171,172,179,283],[48,70,76,77,83,116,160,169,170,171,173,179],[47,48,49,70,76,77,162,163,164,171,283],[48,70,76,77,163,165,166,168],[48,70,76,77,190],[48,70,76,77,189,190,191,192],[48,70,76,77,180,181],[48,70,76,77,180],[48,70,76,77,181,183],[48,70,76,77,180,186,187],[48,70,76,77,180,182,183,184,186,187,188],[48,70,76,77,183,184,185],[48,70,76,77,183,186,188],[48,70,76,77,183],[48,70,76,77,183,186],[48,70,76,77,180,182],[48,70,76,77,197],[48,70,76,77,207,266],[48,70,76,77,270],[48,70,76,77,272,275],[36,48,70,76,77,268,274,284],[48,70,76,77,272],[48,70,76,77,269,273],[48,70,76,77,271],[48,70,76,77,206],[48,70,76,77,179,206],[48,70,76,77,193,199,201,202,204,205],[48,70,76,77,195,198],[48,70,76,77,193],[48,70,76,77,193,200,202,203],[48,70,76,77,193,201,202],[48,70,76,77,193,202],[48,70,76,77,201],[265],[179],[194,195,198],[193],[193,202],[201]],"referencedMap":[[196,1],[197,2],[125,3],[124,4],[121,5],[122,6],[120,7],[123,8],[119,7],[153,9],[151,7],[155,10],[154,11],[152,12],[157,13],[156,7],[158,14],[150,15],[149,16],[139,1],[143,17],[136,18],[141,19],[133,20],[128,1],[147,1],[135,21],[144,1],[131,1],[142,22],[126,1],[137,23],[132,24],[130,25],[134,1],[138,1],[129,1],[145,26],[127,1],[146,1],[140,27],[148,28],[101,29],[94,30],[99,31],[91,32],[86,1],[105,1],[93,33],[102,1],[89,1],[100,34],[84,1],[95,35],[90,36],[88,37],[92,1],[96,1],[87,1],[103,38],[85,1],[104,1],[98,39],[106,40],[97,1],[109,1],[110,1],[113,41],[111,1],[116,42],[115,43],[114,44],[112,45],[108,8],[107,7],[266,46],[159,1],[270,1],[209,1],[210,1],[211,1],[265,47],[212,48],[255,49],[214,50],[213,51],[215,48],[216,48],[218,52],[217,48],[219,53],[220,53],[222,54],[223,48],[224,54],[225,48],[227,48],[228,48],[229,48],[230,55],[226,48],[231,1],[232,56],[233,56],[234,56],[235,56],[236,56],[245,57],[237,56],[238,56],[239,56],[240,56],[242,56],[241,56],[243,56],[244,56],[246,48],[247,48],[221,48],[249,58],[248,48],[250,48],[251,48],[252,59],[254,48],[253,48],[256,48],[258,48],[259,60],[257,48],[260,48],[261,48],[262,48],[263,48],[264,48],[168,61],[167,62],[38,1],[170,63],[161,1],[171,64],[83,65],[35,1],[36,1],[75,66],[37,1],[39,67],[40,68],[41,1],[42,1],[43,69],[44,70],[45,1],[46,71],[47,1],[48,72],[34,1],[49,73],[50,74],[51,75],[52,71],[53,1],[54,76],[55,1],[56,1],[57,77],[58,78],[59,1],[60,1],[61,79],[62,80],[63,71],[64,1],[65,1],[66,81],[67,1],[76,82],[78,83],[79,84],[77,85],[68,86],[69,87],[70,88],[71,69],[72,1],[73,89],[74,69],[80,90],[163,1],[164,1],[162,91],[166,92],[118,1],[269,1],[117,1],[82,1],[81,93],[173,94],[177,95],[178,96],[179,97],[160,98],[174,99],[176,100],[175,101],[172,102],[165,103],[169,104],[190,1],[191,105],[192,1],[193,106],[182,107],[181,108],[180,109],[188,110],[189,111],[186,112],[187,113],[184,114],[185,115],[183,116],[198,117],[267,118],[195,2],[194,1],[268,1],[271,119],[276,120],[275,121],[273,122],[274,123],[272,124],[7,1],[8,1],[12,1],[11,1],[3,1],[13,1],[14,1],[15,1],[16,1],[17,1],[18,1],[19,1],[20,1],[4,1],[5,1],[24,1],[21,1],[22,1],[23,1],[25,1],[26,1],[27,1],[6,1],[28,1],[29,1],[30,1],[31,1],[32,1],[2,1],[1,1],[33,1],[10,1],[9,1],[208,125],[207,126],[206,127],[199,128],[201,1],[200,129],[204,130],[203,131],[205,132],[202,133]],"exportedModulesMap":[[196,1],[197,2],[125,3],[124,4],[121,5],[122,6],[120,7],[123,8],[119,7],[153,9],[151,7],[155,10],[154,11],[152,12],[157,13],[156,7],[158,14],[150,15],[149,16],[139,1],[143,17],[136,18],[141,19],[133,20],[128,1],[147,1],[135,21],[144,1],[131,1],[142,22],[126,1],[137,23],[132,24],[130,25],[134,1],[138,1],[129,1],[145,26],[127,1],[146,1],[140,27],[148,28],[101,29],[94,30],[99,31],[91,32],[86,1],[105,1],[93,33],[102,1],[89,1],[100,34],[84,1],[95,35],[90,36],[88,37],[92,1],[96,1],[87,1],[103,38],[85,1],[104,1],[98,39],[106,40],[97,1],[109,1],[110,1],[113,41],[111,1],[116,42],[115,43],[114,44],[112,45],[108,8],[107,7],[266,46],[159,1],[270,1],[209,1],[210,1],[211,1],[265,47],[212,48],[255,49],[214,50],[213,51],[215,48],[216,48],[218,52],[217,48],[219,53],[220,53],[222,54],[223,48],[224,54],[225,48],[227,48],[228,48],[229,48],[230,55],[226,48],[231,1],[232,56],[233,56],[234,56],[235,56],[236,56],[245,57],[237,56],[238,56],[239,56],[240,56],[242,56],[241,56],[243,56],[244,56],[246,48],[247,48],[221,48],[249,58],[248,48],[250,48],[251,48],[252,59],[254,48],[253,48],[256,48],[258,48],[259,60],[257,48],[260,48],[261,48],[262,48],[263,48],[264,48],[168,61],[167,62],[38,1],[170,63],[161,1],[171,64],[83,65],[35,1],[36,1],[75,66],[37,1],[39,67],[40,68],[41,1],[42,1],[43,69],[44,70],[45,1],[46,71],[47,1],[48,72],[34,1],[49,73],[50,74],[51,75],[52,71],[53,1],[54,76],[55,1],[56,1],[57,77],[58,78],[59,1],[60,1],[61,79],[62,80],[63,71],[64,1],[65,1],[66,81],[67,1],[76,82],[78,83],[79,84],[77,85],[68,86],[69,87],[70,88],[71,69],[72,1],[73,89],[74,69],[80,90],[163,1],[164,1],[162,91],[166,92],[118,1],[269,1],[117,1],[82,1],[81,93],[173,94],[177,95],[178,96],[179,97],[160,98],[174,99],[176,100],[175,101],[172,102],[165,103],[169,104],[190,1],[191,105],[192,1],[193,106],[182,107],[181,108],[180,109],[188,110],[189,111],[186,112],[187,113],[184,114],[185,115],[183,116],[198,117],[267,134],[195,2],[194,1],[268,1],[271,119],[276,120],[275,121],[273,122],[274,123],[272,124],[7,1],[8,1],[12,1],[11,1],[3,1],[13,1],[14,1],[15,1],[16,1],[17,1],[18,1],[19,1],[20,1],[4,1],[5,1],[24,1],[21,1],[22,1],[23,1],[25,1],[26,1],[27,1],[6,1],[28,1],[29,1],[30,1],[31,1],[32,1],[2,1],[1,1],[33,1],[10,1],[9,1],[207,135],[199,136],[200,137],[204,138],[203,138],[205,138],[202,139]],"semanticDiagnosticsPerFile":[196,197,125,124,121,122,120,123,119,153,151,155,154,152,157,156,158,150,149,139,143,136,141,133,128,147,135,144,131,142,126,137,132,130,134,138,129,145,127,146,140,148,101,94,99,91,86,105,93,102,89,100,84,95,90,88,92,96,87,103,85,104,98,106,97,109,110,113,111,116,115,114,112,108,107,266,159,270,209,210,211,265,212,255,214,213,215,216,218,217,219,220,222,223,224,225,227,228,229,230,226,231,232,233,234,235,236,245,237,238,239,240,242,241,243,244,246,247,221,249,248,250,251,252,254,253,256,258,259,257,260,261,262,263,264,168,167,38,170,161,171,83,35,36,75,37,39,40,41,42,43,44,45,46,47,48,34,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,76,78,79,77,68,69,70,71,72,73,74,80,163,164,162,166,118,269,117,82,81,173,177,178,179,160,174,176,175,172,165,169,190,191,192,193,182,181,180,188,189,186,187,184,185,183,198,267,195,194,268,271,276,275,273,274,272,7,8,12,11,3,13,14,15,16,17,18,19,20,4,5,24,21,22,23,25,26,27,6,28,29,30,31,32,2,1,33,10,9,208,207,206,199,201,200,204,203,205,202]},"version":"4.9.5"}
|
|
1
|
+
{"program":{"fileNames":["../node_modules/typescript/lib/lib.es6.d.ts","../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.es2019.intl.d.ts","../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../node_modules/typescript/lib/lib.es2020.date.d.ts","../node_modules/typescript/lib/lib.es2020.promise.d.ts","../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../node_modules/typescript/lib/lib.es2020.string.d.ts","../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../node_modules/typescript/lib/lib.es2020.intl.d.ts","../node_modules/typescript/lib/lib.es2020.number.d.ts","../node_modules/typescript/lib/lib.esnext.intl.d.ts","../node_modules/@types/node/assert.d.ts","../node_modules/@types/node/assert/strict.d.ts","../../../node_modules/@types/events/index.d.ts","../../../node_modules/buffer/index.d.ts","../../../node_modules/undici-types/header.d.ts","../../../node_modules/undici-types/readable.d.ts","../../../node_modules/undici-types/file.d.ts","../../../node_modules/undici-types/fetch.d.ts","../../../node_modules/undici-types/formdata.d.ts","../../../node_modules/undici-types/connector.d.ts","../../../node_modules/undici-types/client.d.ts","../../../node_modules/undici-types/errors.d.ts","../../../node_modules/undici-types/dispatcher.d.ts","../../../node_modules/undici-types/global-dispatcher.d.ts","../../../node_modules/undici-types/global-origin.d.ts","../../../node_modules/undici-types/pool-stats.d.ts","../../../node_modules/undici-types/pool.d.ts","../../../node_modules/undici-types/handlers.d.ts","../../../node_modules/undici-types/balanced-pool.d.ts","../../../node_modules/undici-types/agent.d.ts","../../../node_modules/undici-types/mock-interceptor.d.ts","../../../node_modules/undici-types/mock-agent.d.ts","../../../node_modules/undici-types/mock-client.d.ts","../../../node_modules/undici-types/mock-pool.d.ts","../../../node_modules/undici-types/mock-errors.d.ts","../../../node_modules/undici-types/proxy-agent.d.ts","../../../node_modules/undici-types/api.d.ts","../../../node_modules/undici-types/cookies.d.ts","../../../node_modules/undici-types/patch.d.ts","../../../node_modules/undici-types/filereader.d.ts","../../../node_modules/undici-types/diagnostics-channel.d.ts","../../../node_modules/undici-types/websocket.d.ts","../../../node_modules/undici-types/content-type.d.ts","../../../node_modules/undici-types/cache.d.ts","../../../node_modules/undici-types/interceptors.d.ts","../../../node_modules/undici-types/index.d.ts","../node_modules/@types/node/globals.d.ts","../node_modules/@types/node/async_hooks.d.ts","../node_modules/@types/node/buffer.d.ts","../node_modules/@types/node/child_process.d.ts","../node_modules/@types/node/cluster.d.ts","../node_modules/@types/node/console.d.ts","../node_modules/@types/node/constants.d.ts","../node_modules/@types/node/crypto.d.ts","../node_modules/@types/node/dgram.d.ts","../node_modules/@types/node/diagnostics_channel.d.ts","../node_modules/@types/node/dns.d.ts","../node_modules/@types/node/dns/promises.d.ts","../node_modules/@types/node/domain.d.ts","../node_modules/@types/node/dom-events.d.ts","../node_modules/@types/node/events.d.ts","../node_modules/@types/node/fs.d.ts","../node_modules/@types/node/fs/promises.d.ts","../node_modules/@types/node/http.d.ts","../node_modules/@types/node/http2.d.ts","../node_modules/@types/node/https.d.ts","../node_modules/@types/node/inspector.d.ts","../node_modules/@types/node/module.d.ts","../node_modules/@types/node/net.d.ts","../node_modules/@types/node/os.d.ts","../node_modules/@types/node/path.d.ts","../node_modules/@types/node/perf_hooks.d.ts","../node_modules/@types/node/process.d.ts","../node_modules/@types/node/punycode.d.ts","../node_modules/@types/node/querystring.d.ts","../node_modules/@types/node/readline.d.ts","../node_modules/@types/node/readline/promises.d.ts","../node_modules/@types/node/repl.d.ts","../node_modules/@types/node/stream.d.ts","../node_modules/@types/node/stream/promises.d.ts","../node_modules/@types/node/stream/consumers.d.ts","../node_modules/@types/node/stream/web.d.ts","../node_modules/@types/node/string_decoder.d.ts","../node_modules/@types/node/test.d.ts","../node_modules/@types/node/timers.d.ts","../node_modules/@types/node/timers/promises.d.ts","../node_modules/@types/node/tls.d.ts","../node_modules/@types/node/trace_events.d.ts","../node_modules/@types/node/tty.d.ts","../node_modules/@types/node/url.d.ts","../node_modules/@types/node/util.d.ts","../node_modules/@types/node/v8.d.ts","../node_modules/@types/node/vm.d.ts","../node_modules/@types/node/wasi.d.ts","../node_modules/@types/node/worker_threads.d.ts","../node_modules/@types/node/zlib.d.ts","../node_modules/@types/node/globals.global.d.ts","../node_modules/@types/node/index.d.ts","../../../node_modules/@types/pino/node_modules/sonic-boom/types/index.d.ts","../../../node_modules/pino-std-serializers/index.d.ts","../../../node_modules/pino-pretty/index.d.ts","../../../node_modules/@types/pino/index.d.ts","../../../node_modules/@octokit/types/dist-types/RequestMethod.d.ts","../../../node_modules/@octokit/types/dist-types/Url.d.ts","../../../node_modules/@octokit/types/dist-types/Fetch.d.ts","../../../node_modules/@octokit/types/dist-types/Signal.d.ts","../../../node_modules/@octokit/types/dist-types/RequestRequestOptions.d.ts","../../../node_modules/@octokit/types/dist-types/RequestHeaders.d.ts","../../../node_modules/@octokit/types/dist-types/RequestParameters.d.ts","../../../node_modules/@octokit/types/dist-types/EndpointOptions.d.ts","../../../node_modules/@octokit/types/dist-types/ResponseHeaders.d.ts","../../../node_modules/@octokit/types/dist-types/OctokitResponse.d.ts","../../../node_modules/@octokit/types/dist-types/EndpointDefaults.d.ts","../../../node_modules/@octokit/types/dist-types/RequestOptions.d.ts","../../../node_modules/@octokit/types/dist-types/Route.d.ts","../../../node_modules/@octokit/types/node_modules/@octokit/openapi-types/types.d.ts","../../../node_modules/@octokit/types/dist-types/generated/Endpoints.d.ts","../../../node_modules/@octokit/types/dist-types/EndpointInterface.d.ts","../../../node_modules/@octokit/types/dist-types/RequestInterface.d.ts","../../../node_modules/@octokit/types/dist-types/AuthInterface.d.ts","../../../node_modules/@octokit/types/dist-types/RequestError.d.ts","../../../node_modules/@octokit/types/dist-types/StrategyInterface.d.ts","../../../node_modules/@octokit/types/dist-types/VERSION.d.ts","../../../node_modules/@octokit/types/dist-types/GetResponseTypeFromEndpointMethod.d.ts","../../../node_modules/@octokit/types/dist-types/index.d.ts","../../../node_modules/@octokit/request-error/dist-types/types.d.ts","../../../node_modules/@octokit/request-error/dist-types/index.d.ts","../../../node_modules/@octokit/webhooks-types/schema.d.ts","../../../node_modules/@octokit/webhooks/dist-types/createLogger.d.ts","../../../node_modules/@octokit/webhooks/dist-types/generated/webhook-names.d.ts","../../../node_modules/@octokit/webhooks/dist-types/types.d.ts","../../../node_modules/@octokit/webhooks/dist-types/event-handler/index.d.ts","../../../node_modules/@octokit/webhooks/dist-types/middleware/node/types.d.ts","../../../node_modules/@octokit/webhooks/dist-types/middleware/node/index.d.ts","../../../node_modules/@octokit/webhooks/dist-types/index.d.ts","../../../node_modules/deepmerge/index.d.ts","../../../node_modules/before-after-hook/index.d.ts","../../../node_modules/@octokit/core/node_modules/@octokit/request/dist-types/index.d.ts","../../../node_modules/@octokit/core/node_modules/@octokit/graphql/dist-types/types.d.ts","../../../node_modules/@octokit/core/node_modules/@octokit/graphql/dist-types/error.d.ts","../../../node_modules/@octokit/core/node_modules/@octokit/graphql/dist-types/index.d.ts","../../../node_modules/@octokit/core/dist-types/types.d.ts","../../../node_modules/@octokit/core/dist-types/index.d.ts","../../../node_modules/@octokit/plugin-paginate-rest/dist-types/generated/paginating-endpoints.d.ts","../../../node_modules/@octokit/plugin-paginate-rest/dist-types/types.d.ts","../../../node_modules/@octokit/plugin-paginate-rest/dist-types/compose-paginate.d.ts","../../../node_modules/@octokit/plugin-paginate-rest/dist-types/paginating-endpoints.d.ts","../../../node_modules/@octokit/plugin-paginate-rest/dist-types/index.d.ts","../../../node_modules/@octokit/plugin-rest-endpoint-methods/dist-types/generated/parameters-and-response-types.d.ts","../../../node_modules/@octokit/plugin-rest-endpoint-methods/dist-types/generated/method-types.d.ts","../../../node_modules/@octokit/plugin-rest-endpoint-methods/dist-types/types.d.ts","../../../node_modules/@probot/octokit-plugin-config/dist-types/types.d.ts","../../../node_modules/probot/lib/octokit/probot-octokit.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/index.d.ts","../../../node_modules/@types/serve-static/index.d.ts","../../../node_modules/@types/connect/index.d.ts","../../../node_modules/@types/body-parser/index.d.ts","../../../node_modules/@types/send/index.d.ts","../../../node_modules/probot/node_modules/@types/express-serve-static-core/index.d.ts","../../../node_modules/probot/node_modules/@types/express/index.d.ts","../../../node_modules/@types/ioredis/index.d.ts","../../../node_modules/@types/pino-http/index.d.ts","../../../node_modules/probot/lib/types.d.ts","../../../node_modules/probot/lib/context.d.ts","../../../node_modules/probot/lib/probot.d.ts","../../../node_modules/probot/lib/server/server.d.ts","../../../node_modules/probot/lib/run.d.ts","../../../node_modules/probot/lib/create-node-middleware.d.ts","../../../node_modules/probot/lib/create-probot.d.ts","../../../node_modules/probot/lib/index.d.ts","../../../node_modules/recast/node_modules/ast-types/lib/gen/namedTypes.d.ts","../../../node_modules/recast/node_modules/ast-types/lib/gen/kinds.d.ts","../../../node_modules/recast/node_modules/ast-types/lib/gen/builders.d.ts","../../../node_modules/recast/node_modules/ast-types/lib/types.d.ts","../../../node_modules/recast/node_modules/ast-types/lib/path.d.ts","../../../node_modules/recast/node_modules/ast-types/lib/scope.d.ts","../../../node_modules/recast/node_modules/ast-types/lib/node-path.d.ts","../../../node_modules/recast/node_modules/ast-types/lib/path-visitor.d.ts","../../../node_modules/recast/node_modules/ast-types/lib/gen/visitor.d.ts","../../../node_modules/recast/node_modules/ast-types/lib/main.d.ts","../../../node_modules/recast/lib/options.d.ts","../../../node_modules/recast/lib/parser.d.ts","../../../node_modules/recast/lib/printer.d.ts","../../../node_modules/recast/main.d.ts","../node_modules/@babel/types/lib/index.d.ts","../node_modules/@babel/parser/typings/babel-parser.d.ts","../../../node_modules/@babel/parser/node_modules/@babel/types/lib/index.d.ts","../../../node_modules/@babel/parser/typings/babel-parser.d.ts","../../../node_modules/recast/parsers/_babel_options.d.ts","../src/parsers/typescript.ts","../src/reports/reportClassName.ts","../src/reports/constants.ts","../src/reports/types.ts","../src/reports/reportInlineStyle.ts","../src/reports/reportCustomStyleProperties.ts","../src/reports/reportStyledComponents.ts","../src/parseSource.ts","../src/graphql/fetchGraphql.ts","../src/graphql/queryGenerators.ts","../src/graphql/types.ts","../src/index.ts","../src/__tests__/parseSource.spec.ts","../src/graphql/__tests__/fetchGrapql.spec.ts","../src/graphql/__tests__/queryGenerators.spec.ts","../../../node_modules/@types/aws-lambda/common/api-gateway.d.ts","../../../node_modules/@types/aws-lambda/common/cloudfront.d.ts","../../../node_modules/@types/aws-lambda/handler.d.ts","../../../node_modules/@types/aws-lambda/trigger/alb.d.ts","../../../node_modules/@types/aws-lambda/trigger/api-gateway-proxy.d.ts","../../../node_modules/@types/aws-lambda/trigger/api-gateway-authorizer.d.ts","../../../node_modules/@types/aws-lambda/trigger/appsync-resolver.d.ts","../../../node_modules/@types/aws-lambda/trigger/autoscaling.d.ts","../../../node_modules/@types/aws-lambda/trigger/cloudformation-custom-resource.d.ts","../../../node_modules/@types/aws-lambda/trigger/cdk-custom-resource.d.ts","../../../node_modules/@types/aws-lambda/trigger/cloudfront-request.d.ts","../../../node_modules/@types/aws-lambda/trigger/cloudfront-response.d.ts","../../../node_modules/@types/aws-lambda/trigger/eventbridge.d.ts","../../../node_modules/@types/aws-lambda/trigger/cloudwatch-events.d.ts","../../../node_modules/@types/aws-lambda/trigger/cloudwatch-logs.d.ts","../../../node_modules/@types/aws-lambda/trigger/codebuild-cloudwatch-state.d.ts","../../../node_modules/@types/aws-lambda/trigger/codecommit.d.ts","../../../node_modules/@types/aws-lambda/trigger/codepipeline.d.ts","../../../node_modules/@types/aws-lambda/trigger/codepipeline-cloudwatch-action.d.ts","../../../node_modules/@types/aws-lambda/trigger/codepipeline-cloudwatch-pipeline.d.ts","../../../node_modules/@types/aws-lambda/trigger/codepipeline-cloudwatch-stage.d.ts","../../../node_modules/@types/aws-lambda/trigger/codepipeline-cloudwatch.d.ts","../../../node_modules/@types/aws-lambda/trigger/cognito-user-pool-trigger/_common.d.ts","../../../node_modules/@types/aws-lambda/trigger/cognito-user-pool-trigger/create-auth-challenge.d.ts","../../../node_modules/@types/aws-lambda/trigger/cognito-user-pool-trigger/custom-email-sender.d.ts","../../../node_modules/@types/aws-lambda/trigger/cognito-user-pool-trigger/custom-message.d.ts","../../../node_modules/@types/aws-lambda/trigger/cognito-user-pool-trigger/custom-sms-sender.d.ts","../../../node_modules/@types/aws-lambda/trigger/cognito-user-pool-trigger/define-auth-challenge.d.ts","../../../node_modules/@types/aws-lambda/trigger/cognito-user-pool-trigger/post-authentication.d.ts","../../../node_modules/@types/aws-lambda/trigger/cognito-user-pool-trigger/post-confirmation.d.ts","../../../node_modules/@types/aws-lambda/trigger/cognito-user-pool-trigger/pre-authentication.d.ts","../../../node_modules/@types/aws-lambda/trigger/cognito-user-pool-trigger/pre-signup.d.ts","../../../node_modules/@types/aws-lambda/trigger/cognito-user-pool-trigger/pre-token-generation.d.ts","../../../node_modules/@types/aws-lambda/trigger/cognito-user-pool-trigger/pre-token-generation-v2.d.ts","../../../node_modules/@types/aws-lambda/trigger/cognito-user-pool-trigger/user-migration.d.ts","../../../node_modules/@types/aws-lambda/trigger/cognito-user-pool-trigger/verify-auth-challenge-response.d.ts","../../../node_modules/@types/aws-lambda/trigger/cognito-user-pool-trigger/index.d.ts","../../../node_modules/@types/aws-lambda/trigger/connect-contact-flow.d.ts","../../../node_modules/@types/aws-lambda/trigger/dynamodb-stream.d.ts","../../../node_modules/@types/aws-lambda/trigger/iot.d.ts","../../../node_modules/@types/aws-lambda/trigger/iot-authorizer.d.ts","../../../node_modules/@types/aws-lambda/trigger/kinesis-firehose-transformation.d.ts","../../../node_modules/@types/aws-lambda/trigger/kinesis-stream.d.ts","../../../node_modules/@types/aws-lambda/trigger/lambda-function-url.d.ts","../../../node_modules/@types/aws-lambda/trigger/lex.d.ts","../../../node_modules/@types/aws-lambda/trigger/lex-v2.d.ts","../../../node_modules/@types/aws-lambda/trigger/amplify-resolver.d.ts","../../../node_modules/@types/aws-lambda/trigger/msk.d.ts","../../../node_modules/@types/aws-lambda/trigger/s3.d.ts","../../../node_modules/@types/aws-lambda/trigger/s3-batch.d.ts","../../../node_modules/@types/aws-lambda/trigger/s3-event-notification.d.ts","../../../node_modules/@types/aws-lambda/trigger/secretsmanager.d.ts","../../../node_modules/@types/aws-lambda/trigger/self-managed-kafka.d.ts","../../../node_modules/@types/aws-lambda/trigger/ses.d.ts","../../../node_modules/@types/aws-lambda/trigger/sns.d.ts","../../../node_modules/@types/aws-lambda/trigger/sqs.d.ts","../../../node_modules/@types/aws-lambda/index.d.ts","../../../node_modules/@probot/adapter-aws-lambda-serverless/index.d.ts","../netlify/functions/snowflake.ts","../node_modules/@jest/expect-utils/build/index.d.ts","../../../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/expect/build/index.d.ts","../node_modules/@types/jest/index.d.ts"],"fileInfos":["721cec59c3fef87aaf480047d821fb758b3ec9482c4129a54631e6e25e432a31",{"version":"8730f4bf322026ff5229336391a18bcaa1f94d4f82416c8b2f3954e2ccaae2ba","affectsGlobalScope":true},"dc47c4fa66b9b9890cf076304de2a9c5201e94b740cffdf09f87296d877d71f6","7a387c58583dfca701b6c85e0adaf43fb17d590fb16d5b2dc0a2fbd89f35c467","8a12173c586e95f4433e0c6dc446bc88346be73ffe9ca6eec7aa63c8f3dca7f9","5f4e733ced4e129482ae2186aae29fde948ab7182844c3a5a51dd346182c7b06","4b421cbfb3a38a27c279dec1e9112c3d1da296f77a1a85ddadf7e7a425d45d18","1fc5ab7a764205c68fa10d381b08417795fc73111d6dd16b5b1ed36badb743d9",{"version":"3aafcb693fe5b5c3bd277bd4c3a617b53db474fe498fc5df067c5603b1eebde7","affectsGlobalScope":true},{"version":"f3d4da15233e593eacb3965cde7960f3fddf5878528d882bcedd5cbaba0193c7","affectsGlobalScope":true},{"version":"7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481","affectsGlobalScope":true},{"version":"097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd","affectsGlobalScope":true},{"version":"adb996790133eb33b33aadb9c09f15c2c575e71fb57a62de8bf74dbf59ec7dfb","affectsGlobalScope":true},{"version":"8cc8c5a3bac513368b0157f3d8b31cfdcfe78b56d3724f30f80ed9715e404af8","affectsGlobalScope":true},{"version":"cdccba9a388c2ee3fd6ad4018c640a471a6c060e96f1232062223063b0a5ac6a","affectsGlobalScope":true},{"version":"c5c05907c02476e4bde6b7e76a79ffcd948aedd14b6a8f56e4674221b0417398","affectsGlobalScope":true},{"version":"5f406584aef28a331c36523df688ca3650288d14f39c5d2e555c95f0d2ff8f6f","affectsGlobalScope":true},{"version":"22f230e544b35349cfb3bd9110b6ef37b41c6d6c43c3314a31bd0d9652fcec72","affectsGlobalScope":true},{"version":"7ea0b55f6b315cf9ac2ad622b0a7813315bb6e97bf4bb3fbf8f8affbca7dc695","affectsGlobalScope":true},{"version":"3013574108c36fd3aaca79764002b3717da09725a36a6fc02eac386593110f93","affectsGlobalScope":true},{"version":"eb26de841c52236d8222f87e9e6a235332e0788af8c87a71e9e210314300410a","affectsGlobalScope":true},{"version":"3be5a1453daa63e031d266bf342f3943603873d890ab8b9ada95e22389389006","affectsGlobalScope":true},{"version":"17bb1fc99591b00515502d264fa55dc8370c45c5298f4a5c2083557dccba5a2a","affectsGlobalScope":true},{"version":"7ce9f0bde3307ca1f944119f6365f2d776d281a393b576a18a2f2893a2d75c98","affectsGlobalScope":true},{"version":"6a6b173e739a6a99629a8594bfb294cc7329bfb7b227f12e1f7c11bc163b8577","affectsGlobalScope":true},{"version":"81cac4cbc92c0c839c70f8ffb94eb61e2d32dc1c3cf6d95844ca099463cf37ea","affectsGlobalScope":true},{"version":"b0124885ef82641903d232172577f2ceb5d3e60aed4da1153bab4221e1f6dd4e","affectsGlobalScope":true},{"version":"0eb85d6c590b0d577919a79e0084fa1744c1beba6fd0d4e951432fa1ede5510a","affectsGlobalScope":true},{"version":"da233fc1c8a377ba9e0bed690a73c290d843c2c3d23a7bd7ec5cd3d7d73ba1e0","affectsGlobalScope":true},{"version":"d154ea5bb7f7f9001ed9153e876b2d5b8f5c2bb9ec02b3ae0d239ec769f1f2ae","affectsGlobalScope":true},{"version":"bb2d3fb05a1d2ffbca947cc7cbc95d23e1d053d6595391bd325deb265a18d36c","affectsGlobalScope":true},{"version":"c80df75850fea5caa2afe43b9949338ce4e2de086f91713e9af1a06f973872b8","affectsGlobalScope":true},{"version":"9d57b2b5d15838ed094aa9ff1299eecef40b190722eb619bac4616657a05f951","affectsGlobalScope":true},{"version":"6c51b5dd26a2c31dbf37f00cfc32b2aa6a92e19c995aefb5b97a3a64f1ac99de","affectsGlobalScope":true},{"version":"6e7997ef61de3132e4d4b2250e75343f487903ddf5370e7ce33cf1b9db9a63ed","affectsGlobalScope":true},{"version":"2ad234885a4240522efccd77de6c7d99eecf9b4de0914adb9a35c0c22433f993","affectsGlobalScope":true},{"version":"5e5e095c4470c8bab227dbbc61374878ecead104c74ab9960d3adcccfee23205","affectsGlobalScope":true},{"version":"09aa50414b80c023553090e2f53827f007a301bc34b0495bfb2c3c08ab9ad1eb","affectsGlobalScope":true},{"version":"d7f680a43f8cd12a6b6122c07c54ba40952b0c8aa140dcfcf32eb9e6cb028596","affectsGlobalScope":true},{"version":"3787b83e297de7c315d55d4a7c546ae28e5f6c0a361b7a1dcec1f1f50a54ef11","affectsGlobalScope":true},{"version":"e7e8e1d368290e9295ef18ca23f405cf40d5456fa9f20db6373a61ca45f75f40","affectsGlobalScope":true},{"version":"faf0221ae0465363c842ce6aa8a0cbda5d9296940a8e26c86e04cc4081eea21e","affectsGlobalScope":true},{"version":"06393d13ea207a1bfe08ec8d7be562549c5e2da8983f2ee074e00002629d1871","affectsGlobalScope":true},{"version":"2768ef564cfc0689a1b76106c421a2909bdff0acbe87da010785adab80efdd5c","affectsGlobalScope":true},{"version":"b248e32ca52e8f5571390a4142558ae4f203ae2f94d5bac38a3084d529ef4e58","affectsGlobalScope":true},{"version":"52d1bb7ab7a3306fd0375c8bff560feed26ed676a5b0457fa8027b563aecb9a4","affectsGlobalScope":true},"3846d0dcf468a1d1a07e6d00eaa37ec542956fb5fe0357590a6407af20d2ff90","7394959e5a741b185456e1ef5d64599c36c60a323207450991e7a42e08911419","93d28b4eb12c68fccc1f2fc04a4ef83ea3b2a03b18055d3bf29cab267aa7042e","8e9c23ba78aabc2e0a27033f18737a6df754067731e69dc5f52823957d60a4b6","5929864ce17fba74232584d90cb721a89b7ad277220627cc97054ba15a98ea8f","7180c03fd3cb6e22f911ce9ba0f8a7008b1a6ddbe88ccf16a9c8140ef9ac1686","25c8056edf4314820382a5fdb4bb7816999acdcb929c8f75e3f39473b87e85bc","54cb85a47d760da1c13c00add10d26b5118280d44d58e6908d8e89abbd9d7725","3e4825171442666d31c845aeb47fcd34b62e14041bb353ae2b874285d78482aa","c6fd2c5a395f2432786c9cb8deb870b9b0e8ff7e22c029954fabdd692bff6195","a967bfe3ad4e62243eb604bf956101e4c740f5921277c60debaf325c1320bf88","e9775e97ac4877aebf963a0289c81abe76d1ec9a2a7778dbe637e5151f25c5f3","471e1da5a78350bc55ef8cef24eb3aca6174143c281b8b214ca2beda51f5e04a","cadc8aced301244057c4e7e73fbcae534b0f5b12a37b150d80e5a45aa4bebcbd","385aab901643aa54e1c36f5ef3107913b10d1b5bb8cbcd933d4263b80a0d7f20","9670d44354bab9d9982eca21945686b5c24a3f893db73c0dae0fd74217a4c219","db3435f3525cd785bf21ec6769bf8da7e8a776be1a99e2e7efb5f244a2ef5fee","c3b170c45fc031db31f782e612adf7314b167e60439d304b49e704010e7bafe5","40383ebef22b943d503c6ce2cb2e060282936b952a01bea5f9f493d5fb487cc7","4893a895ea92c85345017a04ed427cbd6a1710453338df26881a6019432febdd","3a84b7cb891141824bd00ef8a50b6a44596aded4075da937f180c90e362fe5f6","13f6f39e12b1518c6650bbb220c8985999020fe0f21d818e28f512b7771d00f9","9b5369969f6e7175740bf51223112ff209f94ba43ecd3bb09eefff9fd675624a","4fe9e626e7164748e8769bbf74b538e09607f07ed17c2f20af8d680ee49fc1da","24515859bc0b836719105bb6cc3d68255042a9f02a6022b3187948b204946bd2","33203609eba548914dc83ddf6cadbc0bcb6e8ef89f6d648ca0908ae887f9fcc5","0db18c6e78ea846316c012478888f33c11ffadab9efd1cc8bcc12daded7a60b6","89167d696a849fce5ca508032aabfe901c0868f833a8625d5a9c6e861ef935d2","e53a3c2a9f624d90f24bf4588aacd223e7bec1b9d0d479b68d2f4a9e6011147f","339dc5265ee5ed92e536a93a04c4ebbc2128f45eeec6ed29f379e0085283542c","9f0a92164925aa37d4a5d9dd3e0134cff8177208dba55fd2310cd74beea40ee2","8bfdb79bf1a9d435ec48d9372dc93291161f152c0865b81fc0b2694aedb4578d","2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","d32275be3546f252e3ad33976caf8c5e842c09cb87d468cb40d5f4cf092d1acc","4a0c3504813a3289f7fb1115db13967c8e004aa8e4f8a9021b95285502221bd1",{"version":"49026435d21e3d7559d723af3ae48f73ec28f9cba651b41bd2ac991012836122","affectsGlobalScope":true},"39b1a50d543770780b0409a4caacb87f3ff1d510aedfeb7dc06ed44188256f89",{"version":"b6a4a51bc749ad882c33d98563ff5a94716ca884bfde949a8c97bad530e4ee2c","affectsGlobalScope":true},"16b872cf5432818bdbf405428b4a1d77bb2a7ab908e8bd6609f9a541cea92f81","fe39ceafa361b6d339b518936275eff89a77e7dfe92f2efa5fb97abf9a95ca49",{"version":"4009dd21843fe4a62d1d97b584a2937ca9f045df6fbd65c8b264d8dd04b656fd","affectsGlobalScope":true},"a40826e8476694e90da94aa008283a7de50d1dafd37beada623863f1901cb7fb","c9e6ea53a25729dbb5b5bb6960db4387df2f8e88add9cbf36b6ff590481134f9","3e95e6310d49db6d575ac6c2896c02761426aa5aab0b18169f971151c709b770","7eb0662b995994db248290a0f0a1d8ed685991a162ff9eb4dee36f099cccd0d9","bea5c9fc0843a6961411ab4a04df856a8372448bc0d180da0c3a054ff31044b8","715873cecbfcebb49f293f0521bd0955d6298486e2eeb9c7bbf5e9f20a6ed152","c6cf9428f45f3d78b07df7d7aab1569994c177d36549e3a962f952d89f026bc4",{"version":"2c71199d1fc83bf17636ad5bf63a945633406b7b94887612bba4ef027c662b3e","affectsGlobalScope":true},{"version":"6c7b9d2139abd8f2e83ed8fa018c3799ab3187755a6665621feb6e93d3429ac3","affectsGlobalScope":true},"a019c9782ea4e21c83881c780cebce8ad86e3f78122619336eacbd87e47fe674","021ca24be8eb8c46f99b4e03ebf872931f590c9b07b88d715c68bd30495b6c44","5899ab1898582115c432cccef063298f75477bf2cebe5473360043fddd67bcc6","6b97f4106d72ae6b4ebf4e46d2fe90f4d04dd04b3dbff6e294572440a428209d","e3baa0c5780c2c805ec33a999722a2f740b572eb3746fd0a5f93a0a5c3dbf7f6","48fedd2f8549a2ae7e62f30fdb015779c2a7b536760730c5269406cd3d17cab2",{"version":"089867511b37a534ae71f3d9bc97acc0b925b7f5dbec113f98c4b49224c694eb","affectsGlobalScope":true},"c874bfffe38a94b129077eaba4e26575972d545d5d04cd64e90c02d2c029ead6","f5ce35485541e817c2d4105d3eb78e3e538bbb009515ed014694363fa3e94ceb","323506ce173f7f865f42f493885ee3dacd18db6359ea1141d57676d3781ce10c",{"version":"bd88055918cf8bf30ad7c9269177f7ebeafd4c5f0d28919edccd1c1d24f7e73c","affectsGlobalScope":true},{"version":"4ee9304173804c2c6dff4fcb8ad900619a4078b30d37f7e455236836e8e87a45","affectsGlobalScope":true},"ea3ab3727cd6c222d94003ecafa30e8550c61eadcdabbf59514aee76e86211a5","d3cdd41693c5ed6bec4f1a1c399d9501372b14bd341bc46eedacf2854c5df5a7","2de7a21c92226fb8abbeed7a0a9bd8aa6d37e4c68a8c7ff7938c644267e9fcc1","6d6070c5c81ba0bfe58988c69e3ba3149fc86421fd383f253aeb071cbf29cd41","48dab0d6e633b8052e7eaa0efb0bb3d58a733777b248765eafcb0b0349439834","d3e22aaa84d935196f465fff6645f88bb41352736c3130285eea0f2489c5f183","269929a24b2816343a178008ac9ae9248304d92a8ba8e233055e0ed6dbe6ef71","93452d394fdd1dc551ec62f5042366f011a00d342d36d50793b3529bfc9bd633","cdaaf046791d7d588f28f32197c5d6acc43343e62540a67eed194c9c20535fdc","4b1ff655bd8edd879dd4f04f15338ce0109f58ccb424165d44fa07e7ea39c4bf",{"version":"6fa61015444e843013443f2e5ca6bee5f033cbf361f953fd932abb0c029b73b2","affectsGlobalScope":true},{"version":"300f8e9de0b0c3482be3e749462b6ebc3dab8a316801f1da0def94aed0cd2018","affectsGlobalScope":true},"4e228e78c1e9b0a75c70588d59288f63a6258e8b1fe4a67b0c53fe03461421d9","24b8c93eb91a64a6fbb877a295cfac4c10aa4660599970c954a99d33697534a3","76a89af04f2ba1807309320dab5169c0d1243b80738b4a2005989e40a136733e","c045b664abf3fc2a4750fa96117ab2735e4ed45ddd571b2a6a91b9917e231a02",{"version":"ca619678b887ae262316673b55bb358c517593d3b6b96c1271972716c699da32","affectsGlobalScope":true},{"version":"0c312a7c5dec6c616f754d3a4b16318ce8d1cb912dfb3dfa0e808f45e66cbb21","affectsGlobalScope":true},"d1ef1d8516286380fd0a6f498f1650d374a8cb5f03d91633b6124e4fb8fb131d","fecdf44bec4ee9c5188e5f2f58c292c9689c02520900dceaaa6e76594de6da90","2641e5e19268b6f5038ad48a6e2598965301df8a77c48c99d8df760a6a154204",{"version":"6a4a80787c57c10b3ea8314c80d9cc6e1deb99d20adca16106a337825f582420","affectsGlobalScope":true},"f2b9440f98d6f94c8105883a2b65aee2fce0248f71f41beafd0a80636f3a565d",{"version":"ab9b9a36e5284fd8d3bf2f7d5fcbc60052f25f27e4d20954782099282c60d23e","affectsGlobalScope":true},"b510d0a18e3db42ac9765d26711083ec1e8b4e21caaca6dc4d25ae6e8623f447","172f31b538f6e3f70c2d001d665d5a46c4b043f707ba822b4d906d59bd9c229d","4fe80f12b1d5189384a219095c2eabadbb389c2d3703aae7c5376dbaa56061df","877f45a462a235fb899bc00e0bedbf94349730a4e4dd3eac174257c66880a84d","685fbeeffdff5e703820a6328ef0c7b693d398bf8d061e1050e20344f8ddf47a","54160aaec4f72e2045e7341301c096344b9e5162a1e48333a531117af5938713","3f0d8705992ebf25221e0d3f72d496bbcebacb47c2b6ee90f4de66d760ee9152","af628c57e9826fbe767ae6afbffa7b197405a8c53ba6197bb32e806d35c1ca8f","76b87f8b5d13712d3fc53a231be1664c4071186120624f2ae1b5bf3db6c7b502","2c7742afcffed27fef8e373c7939f20b64b8783d37e737bba2b3e0d70899ee2c","a9cdd476c9e36aa3bf4212f4337254f2f2676506aabb6f7d8f6db50490d25c33","52c0780e990d8d2ef666d618a303bca67a5e968dbaa4e4eaaad4e415a7217fd1","80a16135e14ed2540f9687f4fb5daee3a4249126272a5a922a5a21ee3b7048c3","7f7aa3e938180da966143e16c4686c7eb2ab8d0f762f038648e1cc6577e1d52e","6e9413bf8a3ce70c3b7db79a29de97281576b731de079d0853f1de499304fbb3","f6aef032da1a16fa155757a6ee8a79c749e579a378d9ba54256d1cefc753d475","5f9c212f98b4df7d638dd9a8125c5e828acbf9710586cd8027e41e4e55819a37","2c574466b0d7ded0bfedaea3660d8f008cefa06db748d79274b4aaea46564763","caa881dd5d50ad64aab709ecf06219874cbc23045e46630bdcdc7c4c32892965","ae07438e2c832c3fb33b98bf3894e460fe71a590b65e6dc55d5a5e1a32062066","7e122724e79d97fc601b9517da07dacf9e8162f5d78ad5740b349e2065ded611","3c9c80b328558dde371257f1dec7ee2f26004c3497b3e302b94fc415b01c0190","3455a4c5f5feefa1f7062e4d8b00837e1edf7922b10cb50769b4ed3c5e37437f","74fd4b09963df6d2a1c94b653199c48d5a578164517a7ae27ff86771662f6764","6a6752f432019855ae0c882f1dd5b6ca11d4da35f2279e7efaa98caec41588af","569c4482357560c490a62d200409d3bedf92efa43bd2e2d728be1daa6d4140ab","7a50f76e773ead4a34b5308879130da83192040ef6dafc5f18570ff6ad2bda61","70f53130d4dcf2f25b58eba7bb7ab4dd80994ad7dab46b37e60cd13a70761fd4","6d575187149a38a8d06d986e6d8111aad796785dd57847672f01ba07987c8e3d","24a1a5007809de3b55b5f86ae8dac8a71f262d508595a04d8de76f692cd127b0","cdeea24d217b06f597246c215af7c8488a8cc963b26aeab3f30fdbc04c3638c7","32684eca94b76799df29ff777e9425062456489d4d80405f4ac5d769ac1dbb7d","b708fc2911456eb3065f831c8e152a24ec42e8b2ec260b1772e6976039616ef0","16739082244f59e0856fae2410fdc9d38eddce8ad6424dc5d4223ca59e4a7ec2","189ba8368e43627d18bb88c99de5982ac347e5911f5d89851a3c43f8b6e14569","4f10472206bfa7bed6ccad0775423dfb19daff28b7ac32ace3b72d3721596eef","7984964df543f9092f501c17ddf6e705a41b3fcfa17708716e0dfdeaf4b15087","092f926dc9f141977dc163cb0a4bd8df28d1def1a3091f30af42ea702db98fc1","f163b1edf76fbde01836f8522fbe646fe2f55e313bb7fdd363891748f9b57c60","f4fc6f33af72add3d409feae7e6eb6fd48dd05a7fda785a832addafa4c7ce8a7","758e92a92871b11a9aede1787106be4764ae6a32f6c76bb29f072bfa28d9f69a","5c291d7429bff327ce5502221f1d2fea64277760793324e7419892e3af29dd63","126eb12a1d90e542ab5c67389bf04063eb0a6102450903a4e9a660fb1b1d2abe","a513bf738f28c66621a4c2c577d72f37b74175df5c645dc6df6befdd6b090044","8e7ed96554279194f78c20d966ed1517aaa27dcfb60d23e5d36a51e07daeb823","63db3f21f835af9dfa90829a54ba11a5f34c9fb9f73a235d603d5705c126f7bb","5a0e97850ab7f500be1fae2c73135e8722011dbe325352405da40e5694c2105a","bbb47b581e8e5495c1754b066202d24f762fd7fccfe1fcc443aec07c992cc229","0940279b6cdfb51032bd6bb0b02c3a4ac2b0a73e380d6c48bf8b503d0de08350","06ae8b7ddac3aff63085a4c6384557b36ef61075aa6c5173fdf3834b19a702d6","b5b49a989ba1e33c2d84afe92eb47029b57df7c14a226468ca0b34c65f995a91","95eb6d75484e2d939a90fde29d6f8d44f7b60e95383b0b2fbe509312b96a5927","7acba69bb1e26caff186d177f681eab25b4b10284c2d19d6368d48f999f1857f","c523378d3aa12273db8ccda1879bc645b76161b32bde7060c7381af113879312","d0bda71c912cccf24d8774ed6bee6e19bb997022d1cd2e875169c3edd2647a74","b5421e0f77d815a6cef21c15a820d08959be4e79d465f42856c3c9c35600ac66","16d51f964ec125ad2024cf03f0af444b3bc3ec3614d9345cc54d09bab45c9a4c","ba601641fac98c229ccd4a303f747de376d761babb33229bb7153bed9356c9cc",{"version":"d2f7baf43dfa349d4010cbd9d64d84cdf3ec26c65fa5f44c8f74f052bedd0b49","affectsGlobalScope":true},"84e3bbd6f80983d468260fdbfeeb431cc81f7ea98d284d836e4d168e36875e86","0b85cb069d0e427ba946e5eb2d86ef65ffd19867042810516d16919f6c1a5aec","6d829824ead8999f87b6df21200df3c6150391b894b4e80662caa462bd48d073","afc559c1b93df37c25aef6b3dfa2d64325b0e112e887ee18bf7e6f4ec383fc90","b78cd10245a90e27e62d0558564f5d9a16576294eee724a59ae21b91f9269e4a",{"version":"50072f976cfa86af1a3044f55cd729d992abe39222d2f6cdf929266c77a42b0b","affectsGlobalScope":true},"5c45abf1e13e4463eacfd5dedda06855da8748a6a6cb3334f582b52e219acc04","be00321090ed100e3bd1e566c0408004137e73feb19d6380eba57d68519ff6c5","90e7d6685ccdde9fbd813aff4b998c1d41204512a9a26998d611d7da665a4a44","b89a51fec964dfd1ce9d7ca0399bdaa415cc106dbce3a0081d7c8fb6035e5213","89ac227fcc00596dddb43b2c3f6d43707e62a998d043d63ce83e5b6a032c6ef6","5f0a41bd45c707df7721bffeb54e3445b0356d1d2dcc132c3dbadd68b68f3c0c","34b4cdb7eec8647ae6deb505a3c04e1c06310f68cb94bbb3ea033805dcd2c513","c8065e48aa118c1a6f0b003f53139992700438188549947f54619e8c95733744","a94a6f6aa721b13bf191faf387e3867f0b7fb63bce1dccd87a2aefeedeb986f9","cd75d46c18ea1b72aef4a46d0345a8e9e55b37cc78725e949787b240e74eed8c","606ec8b7eaaf1d2a1aa015fddcc7d711e7db777cc30b38f7cfe9d2d80ed629e1","0295c7a5d5d956391ab9bf0410e73a89e25fe26810f9a1d823cc794d682cdafc","19826a846db870c2261a3c4cf0695df889d9fe3eebe7775f3f5bc76fe7ad07a7","e04cafd03370139cdb0c846273cb19eb4264be0073c7baf78e9b2c16ffb74813","7c01c77fb7d8664daa64819245d785e106e0a3cb6e43da64346e4400d7fa9401","8c2ca98f4713d989d610fbd38a44316bc43c50aa26983e62dc31002f32ce63fa","ee931610d1cf7a6e666fad138187751392fc88bee931b94ac8c4571208dc7370","53543b3b64e624a81fc5876da6d72c94dd87655e7afc10988cf82ce7cbc74180","967e68e99b8a80551837321442a0e2f12ef50aa1ce567ec991ac6bf062a0c7cf","144ab2f3ef7404caf39c6acc88d248d7e55ab3dd1c4c0d89367ad12169aec113","759002d4454b851c51b3585e0837c77d159c59957fc519c876449ee5d80a6643","07c50b6db67b8b943aed3e410bfeebfb6d3ba1fd1e2819bc889e48f81e94ed2d","e3a5287471fb08f053c06fd998632792aa5f022e45278f1e6dd55fb2fa9e7362","28a6c8eeb48e165920067b9193555649fc43c2a28c450f23f622e5eb043d9463","1147c3efa5a256bcd6a3d2cfaf764185b7120bf985f8412d9bae596a0348f77b","923c136dcbf20f140c369078a7eb56f6697889d104397d694f70e21dd08b1810","5f02abbb1b17e3d1e68c5eea14adf4705696e6255e2982b010c0dc2a5417b606","923c136dcbf20f140c369078a7eb56f6697889d104397d694f70e21dd08b1810","96c23535f4f9dd15beb767e070559ea672f6a35f103152836a67100605136a96","68708f52470e53b6a96cdaf9f7cd5117c6aa4bc6ccbeab1d6e4f7e317318482e",{"version":"7dd0b381a26e858399db5d05b161633f68573210eba08de008827af2d66d0771","signature":"c98980b1795d9700814bffe0dfb15e7e71b28a6eca8d48b1392e26443557897b"},{"version":"82b0c28a768a9e30f5eaff7f4ea3e8df44f8df1dab1de791cd6025c2273b54fc","signature":"67c425c9dd47ace291ca621c736ac011931f5a1c5134bd8d8865a7dc47414c52"},{"version":"0aa2ada6481c4767d689e2b63af5f96c88b5df9343d6fb4bfe6047d5b4863487","signature":"b78466d1d8814283adb83523e496da2288683068fdb2876a6cea89caa6365c47"},{"version":"c5569283752502d4577545135f7d98b63cf5b9543ff2fe8a5ae63c1d34f1b2cb","signature":"b6420bcdbf4888a544dcd721ebac0aa357fa3a6e262dec9da189c105f23082ef"},{"version":"f0c595d9f6260b4d7fb0d64a760efebbf1def9832e48ac9a8a9983fafdf47245","signature":"e9b654b42bfab8bbf2a0b09b29fcc48a2025baafb2c3de8862c658f551f40ccb"},{"version":"1ea45b495fd489176ea0a644ecda5903f77df7118b37e6d933b92cbdae5f94a3","signature":"4f94845e97c2ba80789184df3e8568d524836f59e87f561860b13b41b19079b5"},{"version":"2381ab938523a13aa940f9775cb0595c8dd3931be7fa5f6b510d4843e0ee8a0c","signature":"1bce9a7853785749760d0299b09e02e8476a42a2d67a72d13eeb525313eccc1e"},{"version":"d487c162740d167d4879cbf4753531cb0f558d12955c2f12d95e213fe0c36def","signature":"b4cad15061424ae9d81c58602d1ee0177e12512aa09afd92c5d7c9471994eb50"},{"version":"f79301533e4f61e5cb09d3028e7c8db4ccf3149a2e3c6c66a007ac484d3560fa","signature":"223e7601abd4ddcf145d3baef621b402782dfe3d689dd5bd67518ec16519b554"},{"version":"ee99d1328ee18fe9392f15f159d6056998007509eb4bc49aae83eb204da509c7","signature":"46fe4082873f42e577f6a58346f9da3e3d357805a05325664a050b89e18c31fa"},{"version":"f27a80c9e1a8af20b32b753bddc1defe8774d7f42ddd43778628c80c7760d026","signature":"9622fbb941c5512f3073b872cdb381f748d86c704c9faaffa2ba35cac35e0fbe"},{"version":"1a49d95d01ecef3e7956dcc81c9eb69891093269033c0619307048ff931fadff","signature":"ccf7f6f3c6b6b7d73f342c059e2c418655522e107417319639e1391492d28167"},{"version":"bad52611d661c11873e1e10225891a794205be90d66fe3c16732675646fa2407","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"9c440d9fb88b0b2857a2ae4b2f055fe5322cd44a710a2e9cf6c66fb17946d469","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"eb6dfe687c453baa6fe385cc2cc596322baba81afdaa192abf448a348b71b744","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},"78ef0198c323d0f7b16f993ada3459f0e7e20567e7f56fe0c5ee78f31cb0840c","88533ff507514078998ea6e02390b4a7934bcff52fe9b8389e06037af8619cb2","5ec614ed82e045de15417a47e2568be5310d43d4764ee43d295ea38caafbfd17","b788ef070e70003842cbd03c3e04f87d46b67a47b71e9e7d8713fd8c58c5f5ec","583d365dc19f813f1e2767771e844c7c4ea9ab1a01e85e0119f2e083488379c2","16ab5b20dbc2b0860c3c59941570e616f8a6fc31a689fdc8c1b984b96dcd11af","0dfbdeb122565d1b0ecf42a04648c7c370a880ea27b74b8c2a87cc9b9f73398d","58c7f7820dc027a539b0437be7e1f8bdf663f91fbc9e861d80bb9368a38d4a94","f8e6a8fa14ad7cfab128f9922505b57fb4fbd82828047c46d7137c066c9bff21","57ab70cf1fcc245d66577501f0846fae49a953c92f004e7927e5ea7bb57c6a68","bbc49fd9dc6ee162ba3d270c834398e0c1d44e657ac4edfa55ac837902b7e0da","6993f360de4984b6743764fad3b88246d5dc6cfa45567783fc23833ad4e50c13","715682cddbefe50e27e5e7896acf4af0ffc48f9e18f64b0a0c2f8041e3ea869b","6d2f5a67bfe2034aa77b38f10977a57e762fd64e53c14372bcc5f1d3175ca322","4ff4add7b8cf26df217f2c883292778205847aefb0fd2aee64f5a229d0ffd399","33859aa36b264dd91bef77c279a5a0d259c6b63684d0c6ad538e515c69a489ec","33fa69f400b34c83e541dd5f4474f1c6fb2788614a1790c6c7b346b5c7eaa7dd","be213d7cbc3e5982b22df412cf223c2ac9d841c75014eae4c263761cd9d5e4c0","66451f9540fdf68a5fd93898257ccd7428cf7e49029f2e71b8ce70c8d927b87a","8a051690018330af516fd9ea42b460d603f0839f44d3946ebb4b551fe3bc7703","301fb04ef91ae1340bec1ebc3acdd223861c887a4a1127303d8eef7638b2d893","06236dfec90a14b0c3db8249831069ea3f90b004d73d496a559a4466e5a344a4","fc26991e51514bfc82e0f20c25132268b1d41e8928552dbaed7cc6f3d08fc3ac","5d82bb58dec5014c02aaeb3da465d34f4b7d5c724afea07559e3dfca6d8da5bc","44448f58f4d731dc28a02b5987ab6f20b9f77ad407dcf57b68c853fe52195cd7","b2818e8d05d6e6ad0f1899abf90a70309240a15153ea4b8d5e0c151e117b7338","1c708c15bb96473ce8ec2a946bd024ecded341169a0b84846931f979172244ba","ba1b8e276abe5519e0ba134fd0afba6668ba26d8d5a1fb359d88aff6357457c2","dc187f457333356ddc1ab8ec7833cd836f85e0bbcade61290dc55116244867cb","25525e173de74143042e824eaa786fa18c6b19e9dafb64da71a5faacc5bd2a5c","7a3d649f2de01db4b316cf4a0ce5d96832ee83641f1dc84d3e9981accf29c3a1","26e4260ee185d4af23484d8c11ef422807fb8f51d33aa68d83fab72eb568f228","c4d52d78e3fb4f66735d81663e351cf56037270ed7d00a9b787e35c1fc7183ce","864a5505d0e9db2e1837dce8d8aae8b7eeaa5450754d8a1967bf2843124cc262","2d045f00292ac7a14ead30d1f83269f1f0ad3e75d1f8e5a245ab87159523cf98","54bcb32ab0c7c72b61becd622499a0ae1c309af381801a30878667e21cba85bb","20666518864143f162a9a43249db66ca1d142e445e2d363d5650a524a399b992","28439c9ebd31185ae3353dd8524115eaf595375cd94ca157eefcf1280920436a","84344d56f84577d4ac1d0d59749bb2fde14c0fb460d0bfb04e57c023748c48a6","66738976a7aa2d5fb2770a1b689f8bc643af958f836b7bc08e412d4092de3ab9","35a0eac48984d20f6da39947cf81cd71e0818feefc03dcb28b4ac7b87a636cfd","f6c226d8222108b3485eb0745e8b0ee48b0b901952660db20e983741e8852654","93c3b758c4dc64ea499c9416b1ed0e69725133644b299b86c5435e375d823c75","4e85f443714cff4858fdaffed31052492fdd03ff7883b22ed938fc0e34b48093","0146912d3cad82e53f779a0b7663f181824bba60e32715adb0e9bd02c560b8c6","b515457bebb2ad795d748d1c30d9d093a1364946379baf1fbb6f83fd17523ed5","220783c7ca903c6ce296b210fae5d7e5c5cc1942c5a469b23d537f0fbd37eb18","0974c67cf3e2d539d0046c84a5e816e235b81c8516b242ece2ed1bdbb5dbd3d6","b4186237e7787a397b6c5ae64e155e70ac2a43fdd13ff24dfb6c1e3d2f930570","2647784fffa95a08af418c179b7b75cf1d20c3d32ed71418f0a13259bf505c54","0480102d1a385b96c05316b10de45c3958512bb9e834dbecbbde9cc9c0b22db3","eea44cfed69c9b38cc6366bd149a5cfa186776ca2a9fb87a3746e33b7e4f5e74","7f375e5ef1deb2c2357cba319b51a8872063d093cab750675ac2eb1cef77bee9","b7f06aec971823244f909996a30ef2bbeae69a31c40b0b208d0dfd86a8c16d4f","0421510c9570dfae34b3911e1691f606811818df00354df7abd028cee454979f","c61d8cc814035424b5d55348b6aede37074151c408de931ac3f63c7b6f761efb","39bb270617bc26839893067727c812c0c270c59c12526958813cdce37e32784b","4666fc05a14ec56162b4ac5e535e541f9c84abaa9e95013d782c08d2f19fc568",{"version":"dadb698ae95d7ffaf0c23876cbbb946549e4980b206ebc5fc4bda91da7b22f68","signature":"d73ff7d8748035098c235ebfa8f50a1db153d94eee761bf8abb75e487472c360"},"6c1e688f95fcaf53b1e41c0fdadf2c1cfc96fa924eaf7f9fdb60f96deb0a4986","0d14fa22c41fdc7277e6f71473b20ebc07f40f00e38875142335d5b63cdfc9d2","c085e9aa62d1ae1375794c1fb927a445fa105fed891a7e24edbb1c3300f7384a","f315e1e65a1f80992f0509e84e4ae2df15ecd9ef73df975f7c98813b71e4c8da","5b9586e9b0b6322e5bfbd2c29bd3b8e21ab9d871f82346cb71020e3d84bae73e","3e70a7e67c2cb16f8cd49097360c0309fe9d1e3210ff9222e9dac1f8df9d4fb6","ab68d2a3e3e8767c3fba8f80de099a1cfc18c0de79e42cb02ae66e22dfe14a66","6d969939c4a63f70f2aa49e88da6f64b655c8e6799612807bef41ccff6ea0da9",{"version":"46894b2a21a60f8449ca6b2b7223b7179bba846a61b1434bed77b34b2902c306","affectsGlobalScope":true}],"options":{"allowSyntheticDefaultImports":true,"declaration":true,"declarationMap":false,"esModuleInterop":true,"inlineSources":false,"module":1,"noFallthroughCasesInSwitch":true,"noImplicitAny":true,"noImplicitReturns":true,"noPropertyAccessFromIndexSignature":false,"noUnusedLocals":true,"noUnusedParameters":true,"outDir":"./","skipLibCheck":true,"strict":true,"strictNullChecks":true,"target":2},"fileIdsList":[[224],[173,174,177,178],[161,163,179],[161,175],[174,175,176],[161],[181],[179,181,182,183],[180],[161,179,180],[161,185],[161,186],[161,162],[145,146,148,151,155],[139,140,144,145],[145,149,150,151,153],[139,140,145],[140,147],[145,148,151,153,154],[139,140,143,144],[140,143,144],[141,142],[156],[143,144,148,152],[139,140,141,142,143,144,145,146,147,148,149,150,151,153,154,155,156,157,158,159,160],[167],[166,167,168,170],[169,171],[165],[163,164,165,166],[202,209,300],[244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299],[246],[246,250],[244,246,248],[244,246],[246,252],[245,246],[256],[246,262,263,264],[246,266],[246,267,268,269,270,271,272,273,274,275,276,277,278,279],[246,249],[246,248],[246,256],[100,134,195,201],[100,134,201],[97,100,134,190,191,201],[97,115,123,134],[100,138,201],[97,100,115,134,135,136,137,201],[97,134],[98,115,134,193],[100,134,193,201],[138,167,171,172,189,202],[100,134,201,202],[134,202,204],[138,189,202,203,204,205,206,207,208],[163,178,179,184,186,187,188],[138,171,189,202],[202,205],[100,134,138,198,199,201,202,209],[138,171,189,199,200,201,203,209],[97,100,134,190,191,197,201],[191,192,194,196,198],[220],[219,220,221,222],[210,211],[210],[211,213],[210,216,217],[210,212,213,214,216,217,218],[213,214,215],[213,216,218],[213],[213,216],[210,212],[227],[59,63,126],[59,115,126],[54],[56,59,123,126],[105,123],[134],[54,134],[56,59,105,126],[51,52,55,58,85,97,115,126],[51,57],[55,59,85,118,126,134],[85,134],[75,85,134],[53,54,134],[59],[53,54,55,56,57,58,59,60,61,63,64,65,66,67,68,69,70,71,72,73,74,76,77,78,79,80,81],[59,66,67],[57,59,67,68],[58],[51,54,59],[59,63,67,68],[63],[57,59,62,126],[51,56,57,59,63,66],[85,115],[54,59,75,85,131,134],[240,301],[305],[307,310],[47],[84],[85,90,118],[86,97,98,105,115,126],[86,87,97,105],[88,127],[89,90,98,106],[90,115,123],[91,93,97,105],[92],[93,94],[97],[95,97],[84,97],[97,98,99,115,126],[97,98,99,112,115,118],[82,131],[93,97,100,105,115,126,201],[97,98,100,101,105,115,123,126],[100,102,115,123,126],[47,48,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133],[97,103],[104,126,131],[93,97,105,115],[106],[107],[84,108],[109,125,131],[110],[111],[97,112,113],[112,114,127,129],[85,97,115,116,117,118],[85,115,117],[115,116],[118],[119],[84,115],[97,121,122],[121,122],[90,105,115,123],[124],[105,125],[85,100,111,126],[90,127],[115,128],[104,129],[130],[85,90,97,99,108,115,126,129,131],[115,132],[84,134,303,309],[307],[304,308],[306],[98,236],[237],[238],[209,236,237,238,239],[223,229,231,232,234,235],[225,228],[223],[223,230,232,233],[223,231,232],[223,232],[231],[300],[209],[224,225,228]],"referencedMap":[[227,1],[179,2],[178,3],[176,4],[177,5],[175,6],[174,6],[182,7],[180,6],[184,8],[183,9],[181,10],[186,11],[185,6],[187,12],[163,13],[162,6],[156,14],[149,15],[154,16],[146,17],[148,18],[155,19],[150,20],[145,21],[143,22],[158,23],[153,24],[161,25],[168,26],[171,27],[170,28],[169,29],[167,30],[301,31],[300,32],[247,33],[290,34],[249,35],[248,36],[250,33],[251,33],[253,37],[252,33],[254,38],[255,38],[257,39],[258,33],[259,39],[260,33],[262,33],[263,33],[264,33],[265,40],[261,33],[267,41],[268,41],[269,41],[270,41],[271,41],[280,42],[272,41],[273,41],[274,41],[275,41],[277,41],[276,41],[278,41],[279,41],[281,33],[282,33],[256,33],[284,43],[283,33],[285,33],[286,33],[287,44],[289,33],[288,33],[291,33],[293,33],[294,45],[292,33],[295,33],[296,33],[297,33],[298,33],[299,33],[196,46],[195,47],[192,48],[200,49],[201,50],[138,51],[135,52],[197,53],[194,54],[136,47],[203,55],[207,56],[208,57],[209,58],[189,59],[204,60],[206,61],[205,62],[202,63],[198,64],[199,65],[221,66],[223,67],[212,68],[211,69],[210,70],[218,71],[219,72],[216,73],[217,74],[214,75],[215,76],[213,77],[228,78],[66,79],[73,80],[65,79],[80,81],[57,82],[56,83],[79,84],[74,85],[77,86],[59,87],[58,88],[54,89],[53,90],[76,91],[55,92],[60,93],[64,93],[82,94],[81,93],[68,95],[69,96],[71,97],[67,98],[70,99],[75,84],[62,100],[63,101],[72,102],[52,103],[78,104],[302,105],[225,1],[306,106],[311,107],[47,108],[48,108],[84,109],[85,110],[86,111],[87,112],[88,113],[89,114],[90,115],[91,116],[92,117],[93,118],[94,118],[96,119],[95,120],[97,121],[98,122],[99,123],[83,124],[100,125],[101,126],[102,127],[134,128],[103,129],[104,130],[105,131],[106,132],[107,133],[108,134],[109,135],[110,136],[111,137],[112,138],[113,138],[114,139],[115,140],[117,141],[116,142],[118,143],[119,144],[120,145],[121,146],[122,147],[123,148],[124,149],[125,150],[126,151],[127,152],[128,153],[129,154],[130,155],[131,156],[132,157],[310,158],[308,159],[309,160],[307,161],[241,162],[242,163],[243,164],[240,165],[236,166],[229,167],[230,168],[234,169],[233,170],[235,171],[232,172]],"exportedModulesMap":[[227,1],[179,2],[178,3],[176,4],[177,5],[175,6],[174,6],[182,7],[180,6],[184,8],[183,9],[181,10],[186,11],[185,6],[187,12],[163,13],[162,6],[156,14],[149,15],[154,16],[146,17],[148,18],[155,19],[150,20],[145,21],[143,22],[158,23],[153,24],[161,25],[168,26],[171,27],[170,28],[169,29],[167,30],[301,31],[300,32],[247,33],[290,34],[249,35],[248,36],[250,33],[251,33],[253,37],[252,33],[254,38],[255,38],[257,39],[258,33],[259,39],[260,33],[262,33],[263,33],[264,33],[265,40],[261,33],[267,41],[268,41],[269,41],[270,41],[271,41],[280,42],[272,41],[273,41],[274,41],[275,41],[277,41],[276,41],[278,41],[279,41],[281,33],[282,33],[256,33],[284,43],[283,33],[285,33],[286,33],[287,44],[289,33],[288,33],[291,33],[293,33],[294,45],[292,33],[295,33],[296,33],[297,33],[298,33],[299,33],[196,46],[195,47],[192,48],[200,49],[201,50],[138,51],[135,52],[197,53],[194,54],[136,47],[203,55],[207,56],[208,57],[209,58],[189,59],[204,60],[206,61],[205,62],[202,63],[198,64],[199,65],[221,66],[223,67],[212,68],[211,69],[210,70],[218,71],[219,72],[216,73],[217,74],[214,75],[215,76],[213,77],[228,78],[66,79],[73,80],[65,79],[80,81],[57,82],[56,83],[79,84],[74,85],[77,86],[59,87],[58,88],[54,89],[53,90],[76,91],[55,92],[60,93],[64,93],[82,94],[81,93],[68,95],[69,96],[71,97],[67,98],[70,99],[75,84],[62,100],[63,101],[72,102],[52,103],[78,104],[302,173],[225,1],[306,106],[311,107],[47,108],[48,108],[84,109],[85,110],[86,111],[87,112],[88,113],[89,114],[90,115],[91,116],[92,117],[93,118],[94,118],[96,119],[95,120],[97,121],[98,122],[99,123],[83,124],[100,125],[101,126],[102,127],[134,128],[103,129],[104,130],[105,131],[106,132],[107,133],[108,134],[109,135],[110,136],[111,137],[112,138],[113,138],[114,139],[115,140],[117,141],[116,142],[118,143],[119,144],[120,145],[121,146],[122,147],[123,148],[124,149],[125,150],[126,151],[127,152],[128,153],[129,154],[130,155],[131,156],[132,157],[310,158],[308,159],[309,160],[307,161],[240,174],[229,175],[230,168],[234,171],[233,171],[235,171],[232,172]],"semanticDiagnosticsPerFile":[226,227,179,178,176,177,175,174,182,180,184,183,181,186,185,187,163,162,156,149,154,146,141,160,148,157,144,155,139,150,145,143,147,151,142,158,140,159,153,161,152,164,165,168,166,171,170,169,167,301,188,305,244,245,246,300,247,290,249,248,250,251,253,252,254,255,257,258,259,260,262,263,264,265,261,266,267,268,269,270,271,280,272,273,274,275,277,276,278,279,281,282,256,284,283,285,286,287,289,288,291,293,294,292,295,296,297,298,299,196,195,49,192,200,193,201,138,135,191,190,197,194,173,50,304,172,137,136,203,207,208,209,189,204,206,205,202,198,199,220,221,222,223,212,211,210,218,219,216,217,214,215,213,228,66,73,65,80,57,56,79,74,77,59,58,54,53,76,55,60,61,64,51,82,81,68,69,71,67,70,75,62,63,72,52,78,302,225,224,303,306,311,47,48,84,85,86,87,88,89,90,91,92,93,94,96,95,97,98,99,83,133,100,101,102,134,103,104,105,106,107,108,109,110,111,112,113,114,115,117,116,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,310,308,309,307,9,10,14,13,3,15,16,17,18,19,20,21,22,4,5,26,23,24,25,27,28,29,6,30,31,32,33,7,37,34,35,36,38,8,39,44,45,40,41,42,43,2,1,46,12,11,241,242,243,237,238,239,240,236,229,231,230,234,233,235,232]},"version":"4.9.5"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hero-design/snowflake-guard",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.9",
|
|
4
4
|
"description": "A hero-design bot detecting snowflake usage",
|
|
5
5
|
"author": "Hau Dao",
|
|
6
6
|
"license": "ISC",
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
],
|
|
15
15
|
"scripts": {
|
|
16
16
|
"build": "tsc",
|
|
17
|
-
"start": "probot run ./lib/src/index.js",
|
|
17
|
+
"start": "yarn build && probot run ./lib/src/index.js",
|
|
18
18
|
"test": "jest --passWithNoTests",
|
|
19
19
|
"deploy": "netlify deploy --site snowflake-guard.netlify.app --prod --auth $NETLIFY_AUTH_TOKEN",
|
|
20
20
|
"publish:npm": "yarn publish --access public"
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import fetchGraphql from '../fetchGraphql';
|
|
2
|
+
|
|
3
|
+
describe('fetchGraphql', () => {
|
|
4
|
+
it('calls fetch with correct arguments', async () => {
|
|
5
|
+
process.env.SNOWFLAKE_GUARD_SECRET = 'secret';
|
|
6
|
+
const fetchMock = jest.spyOn(global, 'fetch').mockImplementation(
|
|
7
|
+
jest.fn(() =>
|
|
8
|
+
Promise.resolve({
|
|
9
|
+
json: () => Promise.resolve({ data: 'response-data' }),
|
|
10
|
+
})
|
|
11
|
+
) as jest.Mock
|
|
12
|
+
);
|
|
13
|
+
const response = await fetchGraphql('query');
|
|
14
|
+
|
|
15
|
+
expect(fetchMock).toHaveBeenCalledWith('http://localhost:3000/graphql', {
|
|
16
|
+
method: 'POST',
|
|
17
|
+
headers: {
|
|
18
|
+
'Content-Type': 'application/json',
|
|
19
|
+
'Snowflake-Guard-Auth': 'secret',
|
|
20
|
+
},
|
|
21
|
+
body: JSON.stringify({ query: 'query' }),
|
|
22
|
+
});
|
|
23
|
+
|
|
24
|
+
expect(response).toEqual({ data: 'response-data' });
|
|
25
|
+
});
|
|
26
|
+
});
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import {
|
|
2
|
+
generateFetchReportQuery,
|
|
3
|
+
generateCreateReportQuery,
|
|
4
|
+
generateUpdateReportQuery,
|
|
5
|
+
} from '../queryGenerators';
|
|
6
|
+
|
|
7
|
+
const replaceWhiteSpace = (str: string) => str.replace(/\s/g, '');
|
|
8
|
+
|
|
9
|
+
describe('generateFetchReportQuery', () => {
|
|
10
|
+
it('returns correct query', () => {
|
|
11
|
+
const query = generateFetchReportQuery({
|
|
12
|
+
repoName: 'repoName',
|
|
13
|
+
prNumber: 123,
|
|
14
|
+
});
|
|
15
|
+
|
|
16
|
+
expect(replaceWhiteSpace(query)).toBe(
|
|
17
|
+
replaceWhiteSpace(`
|
|
18
|
+
query {
|
|
19
|
+
fetchHdSnowflakeGuardReport(repoName: "repoName", prNumber: 123) {
|
|
20
|
+
id
|
|
21
|
+
originalCount
|
|
22
|
+
latestCount
|
|
23
|
+
approvedCount
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
`)
|
|
27
|
+
);
|
|
28
|
+
});
|
|
29
|
+
});
|
|
30
|
+
|
|
31
|
+
describe('generateCreateReportQuery', () => {
|
|
32
|
+
it('returns correct query', () => {
|
|
33
|
+
const query = generateCreateReportQuery({
|
|
34
|
+
repoName: 'repoName',
|
|
35
|
+
prNumber: 123,
|
|
36
|
+
owner: 'owner',
|
|
37
|
+
originalCount: 3,
|
|
38
|
+
latestCount: 1,
|
|
39
|
+
approvedCount: 2,
|
|
40
|
+
});
|
|
41
|
+
|
|
42
|
+
expect(replaceWhiteSpace(query)).toBe(
|
|
43
|
+
replaceWhiteSpace(`
|
|
44
|
+
mutation {
|
|
45
|
+
createHdSnowflakeGuardReport(
|
|
46
|
+
input: {
|
|
47
|
+
params: {
|
|
48
|
+
repoName: "repoName"
|
|
49
|
+
prNumber: 123
|
|
50
|
+
owner: "owner"
|
|
51
|
+
originalCount: 3
|
|
52
|
+
latestCount: 1
|
|
53
|
+
approvedCount: 2
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
) {
|
|
57
|
+
hdSnowflakeGuardReport {
|
|
58
|
+
id
|
|
59
|
+
repoName
|
|
60
|
+
prNumber
|
|
61
|
+
originalCount
|
|
62
|
+
latestCount
|
|
63
|
+
approvedCount
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
`)
|
|
68
|
+
);
|
|
69
|
+
});
|
|
70
|
+
});
|
|
71
|
+
|
|
72
|
+
describe('generateUpdateReportQuery', () => {
|
|
73
|
+
it('returns correct query', () => {
|
|
74
|
+
const query = generateUpdateReportQuery({
|
|
75
|
+
id: 'id',
|
|
76
|
+
latestCount: 1,
|
|
77
|
+
approvedCount: 2,
|
|
78
|
+
});
|
|
79
|
+
|
|
80
|
+
expect(replaceWhiteSpace(query)).toBe(
|
|
81
|
+
replaceWhiteSpace(`
|
|
82
|
+
mutation {
|
|
83
|
+
updateHdSnowflakeGuardReport(
|
|
84
|
+
input: { id: "id", latestCount: 1, approvedCount: 2 }
|
|
85
|
+
) {
|
|
86
|
+
hdSnowflakeGuardReport {
|
|
87
|
+
id
|
|
88
|
+
latestCount
|
|
89
|
+
originalCount
|
|
90
|
+
approvedCount
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
`)
|
|
95
|
+
);
|
|
96
|
+
});
|
|
97
|
+
});
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
const fetchGraphql = async (query: string) => {
|
|
2
|
+
const host = process.env.DB_HOST || 'http://localhost:3000';
|
|
3
|
+
return fetch(`${host}/graphql`, {
|
|
4
|
+
method: 'POST',
|
|
5
|
+
headers: {
|
|
6
|
+
'Content-Type': 'application/json',
|
|
7
|
+
'Snowflake-Guard-Auth': process.env.SNOWFLAKE_GUARD_SECRET || '',
|
|
8
|
+
},
|
|
9
|
+
body: JSON.stringify({ query }),
|
|
10
|
+
}).then((response) => response.json());
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
export default fetchGraphql;
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
const generateFetchReportQuery = ({
|
|
2
|
+
repoName,
|
|
3
|
+
prNumber,
|
|
4
|
+
}: {
|
|
5
|
+
repoName: string;
|
|
6
|
+
prNumber: number;
|
|
7
|
+
}) => {
|
|
8
|
+
return `
|
|
9
|
+
query {
|
|
10
|
+
fetchHdSnowflakeGuardReport(repoName: "${repoName}", prNumber: ${prNumber}) {
|
|
11
|
+
id
|
|
12
|
+
originalCount
|
|
13
|
+
latestCount
|
|
14
|
+
approvedCount
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
`;
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
const generateCreateReportQuery = ({
|
|
21
|
+
repoName,
|
|
22
|
+
prNumber,
|
|
23
|
+
owner,
|
|
24
|
+
originalCount,
|
|
25
|
+
latestCount,
|
|
26
|
+
approvedCount,
|
|
27
|
+
}: {
|
|
28
|
+
repoName: string;
|
|
29
|
+
prNumber: number;
|
|
30
|
+
owner: string;
|
|
31
|
+
originalCount: number;
|
|
32
|
+
latestCount: number;
|
|
33
|
+
approvedCount: number;
|
|
34
|
+
}) => {
|
|
35
|
+
return `
|
|
36
|
+
mutation {
|
|
37
|
+
createHdSnowflakeGuardReport(
|
|
38
|
+
input: {
|
|
39
|
+
params: {
|
|
40
|
+
repoName: "${repoName}"
|
|
41
|
+
prNumber: ${prNumber}
|
|
42
|
+
owner: "${owner}"
|
|
43
|
+
originalCount: ${originalCount}
|
|
44
|
+
latestCount: ${latestCount}
|
|
45
|
+
approvedCount: ${approvedCount}
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
) {
|
|
49
|
+
hdSnowflakeGuardReport {
|
|
50
|
+
id
|
|
51
|
+
repoName
|
|
52
|
+
prNumber
|
|
53
|
+
originalCount
|
|
54
|
+
latestCount
|
|
55
|
+
approvedCount
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
`;
|
|
60
|
+
};
|
|
61
|
+
|
|
62
|
+
const generateUpdateReportQuery = ({
|
|
63
|
+
id,
|
|
64
|
+
latestCount,
|
|
65
|
+
approvedCount,
|
|
66
|
+
}: {
|
|
67
|
+
id: string;
|
|
68
|
+
latestCount: number;
|
|
69
|
+
approvedCount: number;
|
|
70
|
+
}) => {
|
|
71
|
+
return `
|
|
72
|
+
mutation {
|
|
73
|
+
updateHdSnowflakeGuardReport(
|
|
74
|
+
input: { id: "${id}", latestCount: ${latestCount}, approvedCount: ${approvedCount} }
|
|
75
|
+
) {
|
|
76
|
+
hdSnowflakeGuardReport {
|
|
77
|
+
id
|
|
78
|
+
latestCount
|
|
79
|
+
originalCount
|
|
80
|
+
approvedCount
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
`;
|
|
85
|
+
};
|
|
86
|
+
|
|
87
|
+
export {
|
|
88
|
+
generateFetchReportQuery,
|
|
89
|
+
generateCreateReportQuery,
|
|
90
|
+
generateUpdateReportQuery,
|
|
91
|
+
};
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export type Report = {
|
|
2
|
+
id: string;
|
|
3
|
+
repoName: string;
|
|
4
|
+
prNumber: number;
|
|
5
|
+
owner: string;
|
|
6
|
+
originalCount: number;
|
|
7
|
+
latestCount: number;
|
|
8
|
+
approvedCount: number;
|
|
9
|
+
};
|
|
10
|
+
|
|
11
|
+
export type FetchReportResponse = {
|
|
12
|
+
errors: { message: string }[];
|
|
13
|
+
data: null | {
|
|
14
|
+
fetchHdSnowflakeGuardReport: Pick<
|
|
15
|
+
Report,
|
|
16
|
+
'id' | 'originalCount' | 'latestCount' | 'approvedCount'
|
|
17
|
+
>;
|
|
18
|
+
};
|
|
19
|
+
};
|
package/src/index.ts
CHANGED
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
import { Probot, ProbotOctokit } from 'probot';
|
|
2
2
|
import parseSource from './parseSource';
|
|
3
|
+
import fetchGraphql from './graphql/fetchGraphql';
|
|
4
|
+
import {
|
|
5
|
+
generateFetchReportQuery,
|
|
6
|
+
generateUpdateReportQuery,
|
|
7
|
+
generateCreateReportQuery,
|
|
8
|
+
} from './graphql/queryGenerators';
|
|
9
|
+
import type { FetchReportResponse } from './graphql/types';
|
|
3
10
|
|
|
4
11
|
type DiffLocs = [number, number][];
|
|
5
12
|
|
|
@@ -90,10 +97,20 @@ export = (app: Probot) => {
|
|
|
90
97
|
);
|
|
91
98
|
const prFileContents = await Promise.all(prFileContentPromises);
|
|
92
99
|
|
|
100
|
+
// Get comments
|
|
101
|
+
const currentComments = await context.octokit.pulls.listReviewComments({
|
|
102
|
+
...repoInfo,
|
|
103
|
+
pull_number: prNumber,
|
|
104
|
+
});
|
|
105
|
+
const botHasCommented = currentComments.data.some(
|
|
106
|
+
(cmt) => cmt.user.login === process.env.EH_BOT_NAME
|
|
107
|
+
);
|
|
108
|
+
|
|
93
109
|
const styleComments: Comment[] = [];
|
|
94
110
|
const sxComments: Comment[] = [];
|
|
95
111
|
const styledComponentComments: Comment[] = [];
|
|
96
112
|
const classNameComments: Comment[] = [];
|
|
113
|
+
const approvedSnowflakeLocs: number[] = [];
|
|
97
114
|
|
|
98
115
|
prFileContents.forEach(async (file) => {
|
|
99
116
|
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
@@ -152,18 +169,56 @@ export = (app: Probot) => {
|
|
|
152
169
|
});
|
|
153
170
|
}
|
|
154
171
|
});
|
|
172
|
+
|
|
173
|
+
snowflakeReport.approvedLocs.forEach((loc) => {
|
|
174
|
+
if (checkIfDetectedSnowflakesInDiff(diffLocs, loc)) {
|
|
175
|
+
approvedSnowflakeLocs.push(loc);
|
|
176
|
+
}
|
|
177
|
+
});
|
|
155
178
|
});
|
|
156
179
|
|
|
157
180
|
const personalOctokit = new ProbotOctokit({
|
|
158
181
|
auth: { token: process.env.EH_BOT_GITHUB_TOKEN },
|
|
159
182
|
});
|
|
160
183
|
|
|
184
|
+
// Saving report
|
|
185
|
+
const snowflakeCount =
|
|
186
|
+
styleComments.length +
|
|
187
|
+
sxComments.length +
|
|
188
|
+
styledComponentComments.length +
|
|
189
|
+
classNameComments.length;
|
|
190
|
+
const report = (await fetchGraphql(
|
|
191
|
+
generateFetchReportQuery({ repoName: repoInfo.repo, prNumber })
|
|
192
|
+
)) as FetchReportResponse;
|
|
193
|
+
const reportData = report.data?.fetchHdSnowflakeGuardReport;
|
|
194
|
+
if (reportData) {
|
|
195
|
+
await fetchGraphql(
|
|
196
|
+
generateUpdateReportQuery({
|
|
197
|
+
id: reportData.id,
|
|
198
|
+
latestCount: snowflakeCount,
|
|
199
|
+
approvedCount: approvedSnowflakeLocs.length,
|
|
200
|
+
})
|
|
201
|
+
);
|
|
202
|
+
} else {
|
|
203
|
+
await fetchGraphql(
|
|
204
|
+
generateCreateReportQuery({
|
|
205
|
+
repoName: repoInfo.repo,
|
|
206
|
+
prNumber,
|
|
207
|
+
owner: repoInfo.owner,
|
|
208
|
+
originalCount: snowflakeCount,
|
|
209
|
+
latestCount: snowflakeCount,
|
|
210
|
+
approvedCount: approvedSnowflakeLocs.length,
|
|
211
|
+
})
|
|
212
|
+
);
|
|
213
|
+
}
|
|
214
|
+
|
|
161
215
|
// No snowflakes detected or only potential snowflakes using classname
|
|
162
216
|
if (
|
|
163
217
|
styleComments.length === 0 &&
|
|
164
218
|
sxComments.length === 0 &&
|
|
165
219
|
styledComponentComments.length === 0
|
|
166
220
|
) {
|
|
221
|
+
const shouldApprove = botHasCommented || classNameComments.length > 0;
|
|
167
222
|
const reviewBody =
|
|
168
223
|
classNameComments.length > 0
|
|
169
224
|
? {
|
|
@@ -174,15 +229,20 @@ export = (app: Probot) => {
|
|
|
174
229
|
body: 'No snowflakes detected in this PR.',
|
|
175
230
|
};
|
|
176
231
|
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
232
|
+
if (shouldApprove) {
|
|
233
|
+
return personalOctokit.pulls.createReview({
|
|
234
|
+
...repoInfo,
|
|
235
|
+
pull_number: prNumber,
|
|
236
|
+
commit_id: context.payload.pull_request.head.sha,
|
|
237
|
+
event: 'APPROVE',
|
|
238
|
+
...reviewBody,
|
|
239
|
+
});
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
return;
|
|
184
243
|
}
|
|
185
244
|
|
|
245
|
+
// Snowflakes detected
|
|
186
246
|
return personalOctokit.pulls.createReview({
|
|
187
247
|
...repoInfo,
|
|
188
248
|
pull_number: prNumber,
|
package/src/parseSource.ts
CHANGED
package/tsconfig.json
CHANGED