@commitspark/git-adapter-github 0.21.0 → 0.30.0
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/CHANGELOG.md +11 -0
- package/dist/cjs/github-adapter.js +12 -37
- package/dist/cjs/github-adapter.js.map +1 -1
- package/dist/cjs/github-api/get-entry-content.js +53 -0
- package/dist/cjs/github-api/get-entry-content.js.map +1 -0
- package/dist/cjs/github-api/get-file-paths.js +48 -0
- package/dist/cjs/github-api/get-file-paths.js.map +1 -0
- package/dist/cjs/{util → github-api}/graphql-query-factory.js +32 -23
- package/dist/cjs/github-api/graphql-query-factory.js.map +1 -0
- package/dist/cjs/types.js +10 -0
- package/dist/cjs/types.js.map +1 -0
- package/dist/cjs/util/entries-to-actions-converter.js +1 -1
- package/dist/cjs/util/entries-to-actions-converter.js.map +1 -1
- package/dist/cjs/util/entry-factory.js +10 -9
- package/dist/cjs/util/entry-factory.js.map +1 -1
- package/dist/cjs/util/path-factory.js +3 -3
- package/dist/cjs/util/path-factory.js.map +1 -1
- package/dist/esm/github-adapter.js +13 -37
- package/dist/esm/github-adapter.js.map +1 -1
- package/dist/esm/github-api/get-entry-content.js +40 -0
- package/dist/esm/github-api/get-entry-content.js.map +1 -0
- package/dist/esm/github-api/get-file-paths.js +35 -0
- package/dist/esm/github-api/get-file-paths.js.map +1 -0
- package/dist/esm/{util → github-api}/graphql-query-factory.js +30 -21
- package/dist/esm/github-api/graphql-query-factory.js.map +1 -0
- package/dist/esm/types.js +7 -0
- package/dist/esm/types.js.map +1 -0
- package/dist/esm/util/entries-to-actions-converter.js +1 -1
- package/dist/esm/util/entries-to-actions-converter.js.map +1 -1
- package/dist/esm/util/entry-factory.js +9 -8
- package/dist/esm/util/entry-factory.js.map +1 -1
- package/dist/esm/util/path-factory.js +3 -3
- package/dist/esm/util/path-factory.js.map +1 -1
- package/dist/tsconfig.build.cjs.tsbuildinfo +1 -1
- package/dist/tsconfig.build.esm.tsbuildinfo +1 -1
- package/dist/tsconfig.build.types.tsbuildinfo +1 -1
- package/dist/types/github-adapter.d.ts +0 -1
- package/dist/types/github-adapter.d.ts.map +1 -1
- package/dist/types/github-api/get-entry-content.d.ts +4 -0
- package/dist/types/github-api/get-entry-content.d.ts.map +1 -0
- package/dist/types/github-api/get-file-paths.d.ts +4 -0
- package/dist/types/github-api/get-file-paths.d.ts.map +1 -0
- package/dist/types/github-api/graphql-query-factory.d.ts +8 -0
- package/dist/types/github-api/graphql-query-factory.d.ts.map +1 -0
- package/dist/types/types.d.ts +7 -0
- package/dist/types/types.d.ts.map +1 -0
- package/dist/types/util/entry-factory.d.ts +2 -9
- package/dist/types/util/entry-factory.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/github-adapter.ts +23 -52
- package/src/github-api/get-entry-content.ts +76 -0
- package/src/github-api/get-file-paths.ts +66 -0
- package/src/{util → github-api}/graphql-query-factory.ts +42 -21
- package/src/types.ts +6 -0
- package/src/util/entries-to-actions-converter.ts +1 -1
- package/src/util/entry-factory.ts +13 -22
- package/src/util/path-factory.ts +3 -3
- package/dist/cjs/util/graphql-query-factory.js.map +0 -1
- package/dist/cjs/util/types.js +0 -7
- package/dist/cjs/util/types.js.map +0 -1
- package/dist/esm/util/graphql-query-factory.js.map +0 -1
- package/dist/esm/util/types.js +0 -4
- package/dist/esm/util/types.js.map +0 -1
- package/dist/types/util/graphql-query-factory.d.ts +0 -5
- package/dist/types/util/graphql-query-factory.d.ts.map +0 -1
- package/dist/types/util/types.d.ts +0 -4
- package/dist/types/util/types.d.ts.map +0 -1
- package/src/util/types.ts +0 -3
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,17 @@ All notable changes to this project will be documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
+
## [0.30.0] - 2025-11-28
|
|
9
|
+
|
|
10
|
+
### Added
|
|
11
|
+
|
|
12
|
+
- Support loading thousands of entries
|
|
13
|
+
|
|
14
|
+
### Changed
|
|
15
|
+
|
|
16
|
+
- Increase request timeout to avoid artificially aborting requests
|
|
17
|
+
- Upgrade dependencies
|
|
18
|
+
|
|
8
19
|
## [0.21.0] - 2025-11-11
|
|
9
20
|
|
|
10
21
|
### Added
|
|
@@ -9,45 +9,20 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
9
9
|
});
|
|
10
10
|
};
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
exports.createCommit = exports.getLatestCommitHash = exports.getSchema = exports.getEntries =
|
|
12
|
+
exports.createCommit = exports.getLatestCommitHash = exports.getSchema = exports.getEntries = void 0;
|
|
13
13
|
const git_adapter_1 = require("@commitspark/git-adapter");
|
|
14
|
-
const graphql_query_factory_1 = require("./
|
|
14
|
+
const graphql_query_factory_1 = require("./github-api/graphql-query-factory");
|
|
15
15
|
const entries_to_actions_converter_1 = require("./util/entries-to-actions-converter");
|
|
16
16
|
const path_factory_1 = require("./util/path-factory");
|
|
17
17
|
const entry_factory_1 = require("./util/entry-factory");
|
|
18
18
|
const errors_1 = require("./errors");
|
|
19
|
-
|
|
19
|
+
const get_entry_content_1 = require("./github-api/get-entry-content");
|
|
20
|
+
const get_file_paths_1 = require("./github-api/get-file-paths");
|
|
21
|
+
const types_1 = require("./types");
|
|
20
22
|
const getEntries = (gitRepositoryOptions, axiosCacheInstance, commitHash) => __awaiter(void 0, void 0, void 0, function* () {
|
|
21
|
-
|
|
22
|
-
const
|
|
23
|
-
|
|
24
|
-
const queryFilesContent = (0, graphql_query_factory_1.createBlobsContentQuery)();
|
|
25
|
-
let filesContentResponse;
|
|
26
|
-
try {
|
|
27
|
-
filesContentResponse = yield axiosCacheInstance.post(exports.API_URL, {
|
|
28
|
-
query: queryFilesContent,
|
|
29
|
-
variables: {
|
|
30
|
-
repositoryOwner: gitRepositoryOptions.repositoryOwner,
|
|
31
|
-
repositoryName: gitRepositoryOptions.repositoryName,
|
|
32
|
-
expression: `${commitHash}:${pathEntryFolder}`,
|
|
33
|
-
},
|
|
34
|
-
}, {
|
|
35
|
-
headers: {
|
|
36
|
-
authorization: `Bearer ${token}`,
|
|
37
|
-
},
|
|
38
|
-
});
|
|
39
|
-
}
|
|
40
|
-
catch (error) {
|
|
41
|
-
(0, errors_1.handleHttpErrors)(error);
|
|
42
|
-
}
|
|
43
|
-
if (!filesContentResponse) {
|
|
44
|
-
throw new git_adapter_1.GitAdapterError(git_adapter_1.ErrorCode.INTERNAL_ERROR, 'Failed to fetch entries');
|
|
45
|
-
}
|
|
46
|
-
(0, errors_1.handleGraphQLErrors)(filesContentResponse);
|
|
47
|
-
if (!((_b = (_a = filesContentResponse.data.data.repository) === null || _a === void 0 ? void 0 : _a.object) === null || _b === void 0 ? void 0 : _b.entries)) {
|
|
48
|
-
return [];
|
|
49
|
-
}
|
|
50
|
-
return (0, entry_factory_1.createEntriesFromBlobsQueryResponseData)(filesContentResponse.data.data.repository.object.entries);
|
|
23
|
+
const filenames = yield (0, get_file_paths_1.getFilePaths)(gitRepositoryOptions, axiosCacheInstance, commitHash);
|
|
24
|
+
const filePathsContentMap = yield (0, get_entry_content_1.getEntryContent)(gitRepositoryOptions, axiosCacheInstance, commitHash, filenames);
|
|
25
|
+
return (0, entry_factory_1.createEntriesFromFileContent)(gitRepositoryOptions, filePathsContentMap);
|
|
51
26
|
});
|
|
52
27
|
exports.getEntries = getEntries;
|
|
53
28
|
const getSchema = (gitRepositoryOptions, axiosCacheInstance, commitHash) => __awaiter(void 0, void 0, void 0, function* () {
|
|
@@ -56,10 +31,10 @@ const getSchema = (gitRepositoryOptions, axiosCacheInstance, commitHash) => __aw
|
|
|
56
31
|
const repositoryName = gitRepositoryOptions.repositoryName;
|
|
57
32
|
const token = gitRepositoryOptions.accessToken;
|
|
58
33
|
const schemaFilePath = (0, path_factory_1.getPathSchema)(gitRepositoryOptions);
|
|
59
|
-
const queryContent = (0, graphql_query_factory_1.
|
|
34
|
+
const queryContent = (0, graphql_query_factory_1.createSingleBlobContentQuery)();
|
|
60
35
|
let response;
|
|
61
36
|
try {
|
|
62
|
-
response = yield axiosCacheInstance.post(
|
|
37
|
+
response = yield axiosCacheInstance.post(types_1.GITHUB_GRAPHQL_API_URL, {
|
|
63
38
|
query: queryContent,
|
|
64
39
|
variables: {
|
|
65
40
|
repositoryOwner: repositoryOwner,
|
|
@@ -92,7 +67,7 @@ const getLatestCommitHash = (gitRepositoryOptions, axiosCacheInstance, ref) => _
|
|
|
92
67
|
const queryLatestCommit = (0, graphql_query_factory_1.createLatestCommitQuery)();
|
|
93
68
|
let response;
|
|
94
69
|
try {
|
|
95
|
-
response = yield axiosCacheInstance.post(
|
|
70
|
+
response = yield axiosCacheInstance.post(types_1.GITHUB_GRAPHQL_API_URL, {
|
|
96
71
|
query: queryLatestCommit,
|
|
97
72
|
variables: {
|
|
98
73
|
repositoryOwner: gitRepositoryOptions.repositoryOwner,
|
|
@@ -131,7 +106,7 @@ const createCommit = (gitRepositoryOptions, axiosCacheInstance, commitDraft) =>
|
|
|
131
106
|
const mutateCommit = (0, graphql_query_factory_1.createCommitMutation)();
|
|
132
107
|
let response;
|
|
133
108
|
try {
|
|
134
|
-
response = yield axiosCacheInstance.post(
|
|
109
|
+
response = yield axiosCacheInstance.post(types_1.GITHUB_GRAPHQL_API_URL, {
|
|
135
110
|
query: mutateCommit,
|
|
136
111
|
variables: {
|
|
137
112
|
repositoryNameWithOwner: `${gitRepositoryOptions.repositoryOwner}/${gitRepositoryOptions.repositoryName}`,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"github-adapter.js","sourceRoot":"","sources":["../../src/github-adapter.ts"],"names":[],"mappings":";;;;;;;;;;;;AACA,0DAMiC;AAEjC,
|
|
1
|
+
{"version":3,"file":"github-adapter.js","sourceRoot":"","sources":["../../src/github-adapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,53 @@
|
|
|
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
|
+
exports.getEntryContent = void 0;
|
|
13
|
+
const graphql_query_factory_1 = require("./graphql-query-factory");
|
|
14
|
+
const types_1 = require("../types");
|
|
15
|
+
const errors_1 = require("../errors");
|
|
16
|
+
const getEntryContent = (gitRepositoryOptions, axiosCacheInstance, commitHash, filePaths) => __awaiter(void 0, void 0, void 0, function* () {
|
|
17
|
+
const filePathsContentMap = new Map();
|
|
18
|
+
const { queries, queryFilenameAliasMap } = (0, graphql_query_factory_1.createBlobsContentByFilePathsQuery)(filePaths, commitHash, types_1.QUERY_BATCH_SIZE);
|
|
19
|
+
const requestPromises = [];
|
|
20
|
+
for (const contentQuery of queries) {
|
|
21
|
+
try {
|
|
22
|
+
requestPromises.push(axiosCacheInstance
|
|
23
|
+
.post(types_1.GITHUB_GRAPHQL_API_URL, {
|
|
24
|
+
query: contentQuery,
|
|
25
|
+
variables: {
|
|
26
|
+
repositoryOwner: gitRepositoryOptions.repositoryOwner,
|
|
27
|
+
repositoryName: gitRepositoryOptions.repositoryName,
|
|
28
|
+
},
|
|
29
|
+
}, {
|
|
30
|
+
headers: {
|
|
31
|
+
authorization: `Bearer ${gitRepositoryOptions.accessToken}`,
|
|
32
|
+
},
|
|
33
|
+
timeout: 30000,
|
|
34
|
+
})
|
|
35
|
+
.then((contentResponse) => processContentResponse(filePathsContentMap, queryFilenameAliasMap, contentResponse)));
|
|
36
|
+
}
|
|
37
|
+
catch (error) {
|
|
38
|
+
(0, errors_1.handleHttpErrors)(error);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
yield Promise.all(requestPromises);
|
|
42
|
+
return filePathsContentMap;
|
|
43
|
+
});
|
|
44
|
+
exports.getEntryContent = getEntryContent;
|
|
45
|
+
const processContentResponse = (filePathsContentMap, queryFilenameAliasMap, contentResponse) => {
|
|
46
|
+
(0, errors_1.handleGraphQLErrors)(contentResponse);
|
|
47
|
+
const filesResponseData = contentResponse.data.data.repository;
|
|
48
|
+
for (const [queryAlias, fileObject] of Object.entries(filesResponseData)) {
|
|
49
|
+
filePathsContentMap.set(queryFilenameAliasMap.get(queryAlias), // we assume we received only those files we know about
|
|
50
|
+
fileObject.text);
|
|
51
|
+
}
|
|
52
|
+
};
|
|
53
|
+
//# sourceMappingURL=get-entry-content.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-entry-content.js","sourceRoot":"","sources":["../../../src/github-api/get-entry-content.ts"],"names":[],"mappings":";;;;;;;;;;;;AAEA,mEAA4E;AAC5E,oCAAmE;AACnE,sCAAiE;AAE1D,MAAM,eAAe,GAAG,CAC7B,oBAA6C,EAC7C,kBAAsC,EACtC,UAAkB,EAClB,SAAmB,EACW,EAAE;IAChC,MAAM,mBAAmB,GAAG,IAAI,GAAG,EAAkB,CAAA;IAErD,MAAM,EAAE,OAAO,EAAE,qBAAqB,EAAE,GAAG,IAAA,0DAAkC,EAC3E,SAAS,EACT,UAAU,EACV,wBAAgB,CACjB,CAAA;IAED,MAAM,eAAe,GAAG,EAAE,CAAA;IAC1B,KAAK,MAAM,YAAY,IAAI,OAAO,EAAE,CAAC;QACnC,IAAI,CAAC;YACH,eAAe,CAAC,IAAI,CAClB,kBAAkB;iBACf,IAAI,CACH,8BAAsB,EACtB;gBACE,KAAK,EAAE,YAAY;gBACnB,SAAS,EAAE;oBACT,eAAe,EAAE,oBAAoB,CAAC,eAAe;oBACrD,cAAc,EAAE,oBAAoB,CAAC,cAAc;iBACpD;aACF,EACD;gBACE,OAAO,EAAE;oBACP,aAAa,EAAE,UAAU,oBAAoB,CAAC,WAAW,EAAE;iBAC5D;gBACD,OAAO,EAAE,KAAK;aACf,CACF;iBACA,IAAI,CAAC,CAAC,eAAe,EAAE,EAAE,CACxB,sBAAsB,CACpB,mBAAmB,EACnB,qBAAqB,EACrB,eAAe,CAChB,CACF,CACJ,CAAA;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAA,yBAAgB,EAAC,KAAK,CAAC,CAAA;QACzB,CAAC;IACH,CAAC;IACD,MAAM,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAA;IAElC,OAAO,mBAAmB,CAAA;AAC5B,CAAC,CAAA,CAAA;AAlDY,QAAA,eAAe,mBAkD3B;AAED,MAAM,sBAAsB,GAAG,CAC7B,mBAAwC,EACxC,qBAA0C,EAC1C,eAAmC,EAC7B,EAAE;IACR,IAAA,4BAAmB,EAAC,eAAe,CAAC,CAAA;IACpC,MAAM,iBAAiB,GAAG,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,UAGnD,CAAA;IAED,KAAK,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,iBAAiB,CAAC,EAAE,CAAC;QACzE,mBAAmB,CAAC,GAAG,CACrB,qBAAqB,CAAC,GAAG,CAAC,UAAU,CAAW,EAAE,uDAAuD;QACxG,UAAU,CAAC,IAAI,CAChB,CAAA;IACH,CAAC;AACH,CAAC,CAAA"}
|
|
@@ -0,0 +1,48 @@
|
|
|
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
|
+
exports.getFilePaths = void 0;
|
|
13
|
+
const git_adapter_1 = require("@commitspark/git-adapter");
|
|
14
|
+
const path_factory_1 = require("../util/path-factory");
|
|
15
|
+
const errors_1 = require("../errors");
|
|
16
|
+
const types_1 = require("../types");
|
|
17
|
+
const getFilePaths = (gitRepositoryOptions, axiosCacheInstance, treeSha) => __awaiter(void 0, void 0, void 0, function* () {
|
|
18
|
+
const pathEntryFolder = (0, path_factory_1.getPathEntryFolder)(gitRepositoryOptions);
|
|
19
|
+
const { repositoryOwner, repositoryName, accessToken } = gitRepositoryOptions;
|
|
20
|
+
// hard limit of 100,000 entries and 7MB response size; see https://docs.github.com/en/rest/git/trees?apiVersion=2022-11-28#get-a-tree
|
|
21
|
+
const restApiUrl = types_1.GITHUB_REST_API_URL +
|
|
22
|
+
`/repos/${repositoryOwner}/${repositoryName}/git/trees/${treeSha}?recursive=1`;
|
|
23
|
+
let response;
|
|
24
|
+
try {
|
|
25
|
+
response = yield axiosCacheInstance.get(restApiUrl, {
|
|
26
|
+
headers: {
|
|
27
|
+
Authorization: `Bearer ${accessToken}`,
|
|
28
|
+
Accept: 'application/vnd.github+json',
|
|
29
|
+
},
|
|
30
|
+
timeout: 30000,
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
catch (error) {
|
|
34
|
+
(0, errors_1.handleHttpErrors)(error);
|
|
35
|
+
}
|
|
36
|
+
if (response === undefined) {
|
|
37
|
+
throw new git_adapter_1.GitAdapterError(git_adapter_1.ErrorCode.INTERNAL_ERROR, 'Failed to fetch repository file list.');
|
|
38
|
+
}
|
|
39
|
+
const data = response.data;
|
|
40
|
+
if (data.truncated) {
|
|
41
|
+
throw new git_adapter_1.GitAdapterError(git_adapter_1.ErrorCode.INTERNAL_ERROR, `Too many files in repository.`);
|
|
42
|
+
}
|
|
43
|
+
return data.tree
|
|
44
|
+
.filter((entry) => entry.type === 'blob' && entry.path.startsWith(pathEntryFolder))
|
|
45
|
+
.map((entry) => entry.path);
|
|
46
|
+
});
|
|
47
|
+
exports.getFilePaths = getFilePaths;
|
|
48
|
+
//# sourceMappingURL=get-file-paths.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-file-paths.js","sourceRoot":"","sources":["../../../src/github-api/get-file-paths.ts"],"names":[],"mappings":";;;;;;;;;;;;AAEA,0DAAqE;AACrE,uDAAyD;AACzD,sCAA4C;AAC5C,oCAA8C;AAEvC,MAAM,YAAY,GAAG,CAC1B,oBAA6C,EAC7C,kBAAsC,EACtC,OAAe,EACI,EAAE;IACrB,MAAM,eAAe,GAAG,IAAA,iCAAkB,EAAC,oBAAoB,CAAC,CAAA;IAChE,MAAM,EAAE,eAAe,EAAE,cAAc,EAAE,WAAW,EAAE,GAAG,oBAAoB,CAAA;IAE7E,sIAAsI;IACtI,MAAM,UAAU,GACd,2BAAmB;QACnB,UAAU,eAAe,IAAI,cAAc,cAAc,OAAO,cAAc,CAAA;IAEhF,IAAI,QAAQ,CAAA;IACZ,IAAI,CAAC;QACH,QAAQ,GAAG,MAAM,kBAAkB,CAAC,GAAG,CAAC,UAAU,EAAE;YAClD,OAAO,EAAE;gBACP,aAAa,EAAE,UAAU,WAAW,EAAE;gBACtC,MAAM,EAAE,6BAA6B;aACtC;YACD,OAAO,EAAE,KAAK;SACf,CAAC,CAAA;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAA,yBAAgB,EAAC,KAAK,CAAC,CAAA;IACzB,CAAC;IAED,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,MAAM,IAAI,6BAAe,CACvB,uBAAS,CAAC,cAAc,EACxB,uCAAuC,CACxC,CAAA;IACH,CAAC;IAED,MAAM,IAAI,GAAG,QAAQ,CAAC,IAA0B,CAAA;IAEhD,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;QACnB,MAAM,IAAI,6BAAe,CACvB,uBAAS,CAAC,cAAc,EACxB,+BAA+B,CAChC,CAAA;IACH,CAAC;IAED,OAAO,IAAI,CAAC,IAAI;SACb,MAAM,CACL,CAAC,KAAK,EAAE,EAAE,CACR,KAAK,CAAC,IAAI,KAAK,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,CAClE;SACA,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;AAC/B,CAAC,CAAA,CAAA;AAhDY,QAAA,YAAY,gBAgDxB"}
|
|
@@ -1,42 +1,51 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
-
exports.
|
|
3
|
+
exports.createSingleBlobContentQuery = createSingleBlobContentQuery;
|
|
4
|
+
exports.createBlobsContentByFilePathsQuery = createBlobsContentByFilePathsQuery;
|
|
5
5
|
exports.createCommitMutation = createCommitMutation;
|
|
6
6
|
exports.createLatestCommitQuery = createLatestCommitQuery;
|
|
7
|
-
function
|
|
7
|
+
function createSingleBlobContentQuery() {
|
|
8
8
|
return `
|
|
9
9
|
query ($repositoryOwner: String!, $repositoryName: String!, $expression: String!) {
|
|
10
10
|
repository(owner: $repositoryOwner, name: $repositoryName) {
|
|
11
11
|
object(expression: $expression) {
|
|
12
|
-
... on
|
|
13
|
-
|
|
14
|
-
name
|
|
15
|
-
object {
|
|
16
|
-
__typename
|
|
17
|
-
... on Blob {
|
|
18
|
-
text
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
}
|
|
12
|
+
... on Blob {
|
|
13
|
+
text
|
|
22
14
|
}
|
|
23
15
|
}
|
|
24
16
|
}
|
|
25
17
|
}
|
|
26
18
|
`;
|
|
27
19
|
}
|
|
28
|
-
function
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
20
|
+
function createBlobsContentByFilePathsQuery(filePaths, commitHash, batchSize) {
|
|
21
|
+
const queries = [];
|
|
22
|
+
const queryFilenameAliasMap = new Map();
|
|
23
|
+
for (let fileIndex = 0; fileIndex < filePaths.length; fileIndex += batchSize) {
|
|
24
|
+
// cut file content query into batches and use GraphQL aliases for maximum throughput in regard to GitHub API limits
|
|
25
|
+
const batchFilenames = filePaths.slice(fileIndex, fileIndex + batchSize);
|
|
26
|
+
let query = `
|
|
27
|
+
query ($repositoryOwner: String!, $repositoryName: String!) {
|
|
28
|
+
repository(owner: $repositoryOwner, name: $repositoryName) {`;
|
|
29
|
+
for (const [j, filename] of batchFilenames.entries()) {
|
|
30
|
+
const fileAliasIndex = fileIndex + j;
|
|
31
|
+
const fileAlias = `file${fileAliasIndex}`;
|
|
32
|
+
// using one query variable per file would significantly blow up query size, which would in turn require a lower
|
|
33
|
+
// batch size to avoid GitHub erroring out, and in consequence much lower throughput; we therefore use this poor
|
|
34
|
+
// man's manual escaping of filenames instead and write them directly into the query strings
|
|
35
|
+
const escapedExpression = JSON.stringify(`${commitHash}:${filename}`);
|
|
36
|
+
query += ` ${fileAlias}: object(expression: ${escapedExpression}) {
|
|
37
|
+
... on Blob {
|
|
38
|
+
text
|
|
37
39
|
}
|
|
38
40
|
}
|
|
39
|
-
|
|
41
|
+
`;
|
|
42
|
+
queryFilenameAliasMap.set(fileAlias, filename);
|
|
43
|
+
}
|
|
44
|
+
query += ` }
|
|
45
|
+
}`;
|
|
46
|
+
queries.push(query);
|
|
47
|
+
}
|
|
48
|
+
return { queries, queryFilenameAliasMap };
|
|
40
49
|
}
|
|
41
50
|
function createCommitMutation() {
|
|
42
51
|
return `
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"graphql-query-factory.js","sourceRoot":"","sources":["../../../src/github-api/graphql-query-factory.ts"],"names":[],"mappings":";;AAAA,oEAYC;AAED,gFAyCC;AAED,oDA+BC;AAED,0DAeC;AAzGD,SAAgB,4BAA4B;IAC1C,OAAO;;;;;;;;;;KAUJ,CAAA;AACL,CAAC;AAED,SAAgB,kCAAkC,CAChD,SAAmB,EACnB,UAAkB,EAClB,SAAiB;IAEjB,MAAM,OAAO,GAAG,EAAE,CAAA;IAClB,MAAM,qBAAqB,GAAG,IAAI,GAAG,EAAkB,CAAA;IACvD,KACE,IAAI,SAAS,GAAG,CAAC,EACjB,SAAS,GAAG,SAAS,CAAC,MAAM,EAC5B,SAAS,IAAI,SAAS,EACtB,CAAC;QACD,oHAAoH;QAEpH,MAAM,cAAc,GAAG,SAAS,CAAC,KAAK,CAAC,SAAS,EAAE,SAAS,GAAG,SAAS,CAAC,CAAA;QAExE,IAAI,KAAK,GAAG;;qEAEqD,CAAA;QAEjE,KAAK,MAAM,CAAC,CAAC,EAAE,QAAQ,CAAC,IAAI,cAAc,CAAC,OAAO,EAAE,EAAE,CAAC;YACrD,MAAM,cAAc,GAAG,SAAS,GAAG,CAAC,CAAA;YACpC,MAAM,SAAS,GAAG,OAAO,cAAc,EAAE,CAAA;YACzC,gHAAgH;YAChH,gHAAgH;YAChH,4FAA4F;YAC5F,MAAM,iBAAiB,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,UAAU,IAAI,QAAQ,EAAE,CAAC,CAAA;YACrE,KAAK,IAAI,OAAO,SAAS,wBAAwB,iBAAiB;;;;;CAKvE,CAAA;YACK,qBAAqB,CAAC,GAAG,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAA;QAChD,CAAC;QACD,KAAK,IAAI;EACX,CAAA;QACE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IACrB,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,qBAAqB,EAAE,CAAA;AAC3C,CAAC;AAED,SAAgB,oBAAoB;IAClC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KA6BJ,CAAA;AACL,CAAC;AAED,SAAgB,uBAAuB;IACrC,OAAO;;;;;;;;;;;;;KAaJ,CAAA;AACL,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.GITHUB_REST_API_URL = exports.GITHUB_GRAPHQL_API_URL = exports.QUERY_BATCH_SIZE = exports.PATH_ENTRY_FOLDER = exports.PATH_SCHEMA_FILE = exports.ENTRY_EXTENSION = void 0;
|
|
4
|
+
exports.ENTRY_EXTENSION = '.yaml';
|
|
5
|
+
exports.PATH_SCHEMA_FILE = 'commitspark/schema/schema.graphql';
|
|
6
|
+
exports.PATH_ENTRY_FOLDER = 'commitspark/entries/';
|
|
7
|
+
exports.QUERY_BATCH_SIZE = 250;
|
|
8
|
+
exports.GITHUB_GRAPHQL_API_URL = 'https://api.github.com/graphql';
|
|
9
|
+
exports.GITHUB_REST_API_URL = 'https://api.github.com';
|
|
10
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":";;;AAAa,QAAA,eAAe,GAAG,OAAO,CAAA;AACzB,QAAA,gBAAgB,GAAG,mCAAmC,CAAA;AACtD,QAAA,iBAAiB,GAAG,sBAAsB,CAAA;AAC1C,QAAA,gBAAgB,GAAG,GAAG,CAAA;AACtB,QAAA,sBAAsB,GAAG,gCAAgC,CAAA;AACzD,QAAA,mBAAmB,GAAG,wBAAwB,CAAA"}
|
|
@@ -4,7 +4,7 @@ exports.convertEntriesToActions = convertEntriesToActions;
|
|
|
4
4
|
const yaml_1 = require("yaml");
|
|
5
5
|
const addition_model_1 = require("../model/addition.model");
|
|
6
6
|
const deletion_model_1 = require("../model/deletion.model");
|
|
7
|
-
const types_1 = require("
|
|
7
|
+
const types_1 = require("../types");
|
|
8
8
|
function convertEntriesToActions(entryDrafts, pathEntryFolder) {
|
|
9
9
|
const additions = [];
|
|
10
10
|
const deletions = [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entries-to-actions-converter.js","sourceRoot":"","sources":["../../../src/util/entries-to-actions-converter.ts"],"names":[],"mappings":";;AAMA,0DA6BC;AAlCD,+BAAgC;AAChC,4DAAuD;AACvD,4DAAuD;AACvD,
|
|
1
|
+
{"version":3,"file":"entries-to-actions-converter.js","sourceRoot":"","sources":["../../../src/util/entries-to-actions-converter.ts"],"names":[],"mappings":";;AAMA,0DA6BC;AAlCD,+BAAgC;AAChC,4DAAuD;AACvD,4DAAuD;AACvD,oCAA0C;AAE1C,SAAgB,uBAAuB,CACrC,WAAyB,EACzB,eAAuB;IAKvB,MAAM,SAAS,GAAoB,EAAE,CAAA;IACrC,MAAM,SAAS,GAAoB,EAAE,CAAA;IACrC,WAAW,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,EAAE;QACjC,MAAM,SAAS,GAAG,GAAG,eAAe,IAAI,UAAU,CAAC,EAAE,GAAG,uBAAe,EAAE,CAAA;QACzE,IAAI,UAAU,CAAC,QAAQ,EAAE,CAAC;YACxB,SAAS,CAAC,IAAI,CAAC,IAAI,8BAAa,CAAC,SAAS,CAAC,CAAC,CAAA;QAC9C,CAAC;aAAM,CAAC;YACN,SAAS,CAAC,IAAI,CACZ,IAAI,8BAAa,CACf,SAAS,EACT,IAAA,gBAAS,EAAC;gBACR,QAAQ,EAAE,UAAU,CAAC,QAAQ;gBAC7B,IAAI,EAAE,UAAU,CAAC,IAAI;aACtB,CAAC,CACH,CACF,CAAA;QACH,CAAC;IACH,CAAC,CAAC,CAAA;IACF,OAAO;QACL,SAAS;QACT,SAAS;KACV,CAAA;AACH,CAAC"}
|
|
@@ -1,15 +1,16 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.createEntriesFromFileContent = createEntriesFromFileContent;
|
|
4
4
|
const yaml_1 = require("yaml");
|
|
5
|
-
const types_1 = require("
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
.map((
|
|
11
|
-
const fileContent = (0, yaml_1.parse)(
|
|
12
|
-
const id =
|
|
5
|
+
const types_1 = require("../types");
|
|
6
|
+
const path_factory_1 = require("./path-factory");
|
|
7
|
+
function createEntriesFromFileContent(gitRepositoryOptions, filePathContentMap) {
|
|
8
|
+
return Array.from(filePathContentMap)
|
|
9
|
+
.filter(([filePath]) => filePath.endsWith(types_1.ENTRY_EXTENSION))
|
|
10
|
+
.map(([filePath, content]) => {
|
|
11
|
+
const fileContent = (0, yaml_1.parse)(content);
|
|
12
|
+
const id = filePath.substring((0, path_factory_1.getPathEntryFolder)(gitRepositoryOptions).length, // strip folder path back out
|
|
13
|
+
filePath.length - types_1.ENTRY_EXTENSION.length);
|
|
13
14
|
return {
|
|
14
15
|
id: id,
|
|
15
16
|
metadata: fileContent.metadata,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entry-factory.js","sourceRoot":"","sources":["../../../src/util/entry-factory.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"entry-factory.js","sourceRoot":"","sources":["../../../src/util/entry-factory.ts"],"names":[],"mappings":";;AAMA,oEAkBC;AAxBD,+BAA4B;AAE5B,oCAA0C;AAC1C,iDAAmD;AAGnD,SAAgB,4BAA4B,CAC1C,oBAA6C,EAC7C,kBAAuC;IAEvC,OAAO,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC;SAClC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,uBAAe,CAAC,CAAC;SAC1D,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,OAAO,CAAC,EAAE,EAAE;QAC3B,MAAM,WAAW,GAAG,IAAA,YAAK,EAAC,OAAO,CAAC,CAAA;QAClC,MAAM,EAAE,GAAG,QAAQ,CAAC,SAAS,CAC3B,IAAA,iCAAkB,EAAC,oBAAoB,CAAC,CAAC,MAAM,EAAE,6BAA6B;QAC9E,QAAQ,CAAC,MAAM,GAAG,uBAAe,CAAC,MAAM,CACzC,CAAA;QACD,OAAO;YACL,EAAE,EAAE,EAAE;YACN,QAAQ,EAAE,WAAW,CAAC,QAAQ;YAC9B,IAAI,EAAE,WAAW,CAAC,IAAI;SACd,CAAA;IACZ,CAAC,CAAC,CAAA;AACN,CAAC"}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.getPathSchema = getPathSchema;
|
|
4
4
|
exports.getPathEntryFolder = getPathEntryFolder;
|
|
5
|
-
const types_1 = require("
|
|
5
|
+
const types_1 = require("../types");
|
|
6
6
|
function getPathSchema(gitRepositoryOptions) {
|
|
7
7
|
var _a;
|
|
8
8
|
return (_a = gitRepositoryOptions.pathSchemaFile) !== null && _a !== void 0 ? _a : types_1.PATH_SCHEMA_FILE;
|
|
@@ -10,8 +10,8 @@ function getPathSchema(gitRepositoryOptions) {
|
|
|
10
10
|
function getPathEntryFolder(gitRepositoryOptions) {
|
|
11
11
|
var _a;
|
|
12
12
|
const pathEntryFolder = (_a = gitRepositoryOptions.pathEntryFolder) !== null && _a !== void 0 ? _a : types_1.PATH_ENTRY_FOLDER;
|
|
13
|
-
if (pathEntryFolder.endsWith('/')) {
|
|
14
|
-
return pathEntryFolder
|
|
13
|
+
if (!pathEntryFolder.endsWith('/')) {
|
|
14
|
+
return pathEntryFolder + '/';
|
|
15
15
|
}
|
|
16
16
|
return pathEntryFolder;
|
|
17
17
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"path-factory.js","sourceRoot":"","sources":["../../../src/util/path-factory.ts"],"names":[],"mappings":";;AAGA,sCAEC;AAED,gDAWC;AAjBD,
|
|
1
|
+
{"version":3,"file":"path-factory.js","sourceRoot":"","sources":["../../../src/util/path-factory.ts"],"names":[],"mappings":";;AAGA,sCAEC;AAED,gDAWC;AAjBD,oCAA8D;AAE9D,SAAgB,aAAa,CAAC,oBAA6C;;IACzE,OAAO,MAAA,oBAAoB,CAAC,cAAc,mCAAI,wBAAgB,CAAA;AAChE,CAAC;AAED,SAAgB,kBAAkB,CAChC,oBAA6C;;IAE7C,MAAM,eAAe,GACnB,MAAA,oBAAoB,CAAC,eAAe,mCAAI,yBAAiB,CAAA;IAE3D,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QACnC,OAAO,eAAe,GAAG,GAAG,CAAA;IAC9B,CAAC;IAED,OAAO,eAAe,CAAA;AACxB,CAAC"}
|
|
@@ -1,50 +1,26 @@
|
|
|
1
1
|
import { ErrorCode, GitAdapterError, } from '@commitspark/git-adapter';
|
|
2
|
-
import {
|
|
2
|
+
import { createSingleBlobContentQuery, createCommitMutation, createLatestCommitQuery, } from './github-api/graphql-query-factory';
|
|
3
3
|
import { convertEntriesToActions } from './util/entries-to-actions-converter';
|
|
4
4
|
import { getPathEntryFolder, getPathSchema } from './util/path-factory';
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
|
|
5
|
+
import { createEntriesFromFileContent } from './util/entry-factory';
|
|
6
|
+
import { handleGraphQLErrors, handleHttpErrors } from './errors';
|
|
7
|
+
import { getEntryContent } from './github-api/get-entry-content';
|
|
8
|
+
import { getFilePaths } from './github-api/get-file-paths';
|
|
9
|
+
import { GITHUB_GRAPHQL_API_URL } from './types';
|
|
8
10
|
export const getEntries = async (gitRepositoryOptions, axiosCacheInstance, commitHash) => {
|
|
9
|
-
const
|
|
10
|
-
const
|
|
11
|
-
|
|
12
|
-
let filesContentResponse;
|
|
13
|
-
try {
|
|
14
|
-
filesContentResponse = await axiosCacheInstance.post(API_URL, {
|
|
15
|
-
query: queryFilesContent,
|
|
16
|
-
variables: {
|
|
17
|
-
repositoryOwner: gitRepositoryOptions.repositoryOwner,
|
|
18
|
-
repositoryName: gitRepositoryOptions.repositoryName,
|
|
19
|
-
expression: `${commitHash}:${pathEntryFolder}`,
|
|
20
|
-
},
|
|
21
|
-
}, {
|
|
22
|
-
headers: {
|
|
23
|
-
authorization: `Bearer ${token}`,
|
|
24
|
-
},
|
|
25
|
-
});
|
|
26
|
-
}
|
|
27
|
-
catch (error) {
|
|
28
|
-
handleHttpErrors(error);
|
|
29
|
-
}
|
|
30
|
-
if (!filesContentResponse) {
|
|
31
|
-
throw new GitAdapterError(ErrorCode.INTERNAL_ERROR, 'Failed to fetch entries');
|
|
32
|
-
}
|
|
33
|
-
handleGraphQLErrors(filesContentResponse);
|
|
34
|
-
if (!filesContentResponse.data.data.repository?.object?.entries) {
|
|
35
|
-
return [];
|
|
36
|
-
}
|
|
37
|
-
return createEntriesFromBlobsQueryResponseData(filesContentResponse.data.data.repository.object.entries);
|
|
11
|
+
const filenames = await getFilePaths(gitRepositoryOptions, axiosCacheInstance, commitHash);
|
|
12
|
+
const filePathsContentMap = await getEntryContent(gitRepositoryOptions, axiosCacheInstance, commitHash, filenames);
|
|
13
|
+
return createEntriesFromFileContent(gitRepositoryOptions, filePathsContentMap);
|
|
38
14
|
};
|
|
39
15
|
export const getSchema = async (gitRepositoryOptions, axiosCacheInstance, commitHash) => {
|
|
40
16
|
const repositoryOwner = gitRepositoryOptions.repositoryOwner;
|
|
41
17
|
const repositoryName = gitRepositoryOptions.repositoryName;
|
|
42
18
|
const token = gitRepositoryOptions.accessToken;
|
|
43
19
|
const schemaFilePath = getPathSchema(gitRepositoryOptions);
|
|
44
|
-
const queryContent =
|
|
20
|
+
const queryContent = createSingleBlobContentQuery();
|
|
45
21
|
let response;
|
|
46
22
|
try {
|
|
47
|
-
response = await axiosCacheInstance.post(
|
|
23
|
+
response = await axiosCacheInstance.post(GITHUB_GRAPHQL_API_URL, {
|
|
48
24
|
query: queryContent,
|
|
49
25
|
variables: {
|
|
50
26
|
repositoryOwner: repositoryOwner,
|
|
@@ -75,7 +51,7 @@ export const getLatestCommitHash = async (gitRepositoryOptions, axiosCacheInstan
|
|
|
75
51
|
const queryLatestCommit = createLatestCommitQuery();
|
|
76
52
|
let response;
|
|
77
53
|
try {
|
|
78
|
-
response = await axiosCacheInstance.post(
|
|
54
|
+
response = await axiosCacheInstance.post(GITHUB_GRAPHQL_API_URL, {
|
|
79
55
|
query: queryLatestCommit,
|
|
80
56
|
variables: {
|
|
81
57
|
repositoryOwner: gitRepositoryOptions.repositoryOwner,
|
|
@@ -114,7 +90,7 @@ export const createCommit = async (gitRepositoryOptions, axiosCacheInstance, com
|
|
|
114
90
|
const mutateCommit = createCommitMutation();
|
|
115
91
|
let response;
|
|
116
92
|
try {
|
|
117
|
-
response = await axiosCacheInstance.post(
|
|
93
|
+
response = await axiosCacheInstance.post(GITHUB_GRAPHQL_API_URL, {
|
|
118
94
|
query: mutateCommit,
|
|
119
95
|
variables: {
|
|
120
96
|
repositoryNameWithOwner: `${gitRepositoryOptions.repositoryOwner}/${gitRepositoryOptions.repositoryName}`,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"github-adapter.js","sourceRoot":"","sources":["../../src/github-adapter.ts"],"names":[],"mappings":"AACA,OAAO,EAIL,SAAS,EACT,eAAe,GAChB,MAAM,0BAA0B,CAAA;AAEjC,OAAO,EACL,
|
|
1
|
+
{"version":3,"file":"github-adapter.js","sourceRoot":"","sources":["../../src/github-adapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { createBlobsContentByFilePathsQuery } from './graphql-query-factory';
|
|
2
|
+
import { GITHUB_GRAPHQL_API_URL, QUERY_BATCH_SIZE } from '../types';
|
|
3
|
+
import { handleGraphQLErrors, handleHttpErrors } from '../errors';
|
|
4
|
+
export const getEntryContent = async (gitRepositoryOptions, axiosCacheInstance, commitHash, filePaths) => {
|
|
5
|
+
const filePathsContentMap = new Map();
|
|
6
|
+
const { queries, queryFilenameAliasMap } = createBlobsContentByFilePathsQuery(filePaths, commitHash, QUERY_BATCH_SIZE);
|
|
7
|
+
const requestPromises = [];
|
|
8
|
+
for (const contentQuery of queries) {
|
|
9
|
+
try {
|
|
10
|
+
requestPromises.push(axiosCacheInstance
|
|
11
|
+
.post(GITHUB_GRAPHQL_API_URL, {
|
|
12
|
+
query: contentQuery,
|
|
13
|
+
variables: {
|
|
14
|
+
repositoryOwner: gitRepositoryOptions.repositoryOwner,
|
|
15
|
+
repositoryName: gitRepositoryOptions.repositoryName,
|
|
16
|
+
},
|
|
17
|
+
}, {
|
|
18
|
+
headers: {
|
|
19
|
+
authorization: `Bearer ${gitRepositoryOptions.accessToken}`,
|
|
20
|
+
},
|
|
21
|
+
timeout: 30000,
|
|
22
|
+
})
|
|
23
|
+
.then((contentResponse) => processContentResponse(filePathsContentMap, queryFilenameAliasMap, contentResponse)));
|
|
24
|
+
}
|
|
25
|
+
catch (error) {
|
|
26
|
+
handleHttpErrors(error);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
await Promise.all(requestPromises);
|
|
30
|
+
return filePathsContentMap;
|
|
31
|
+
};
|
|
32
|
+
const processContentResponse = (filePathsContentMap, queryFilenameAliasMap, contentResponse) => {
|
|
33
|
+
handleGraphQLErrors(contentResponse);
|
|
34
|
+
const filesResponseData = contentResponse.data.data.repository;
|
|
35
|
+
for (const [queryAlias, fileObject] of Object.entries(filesResponseData)) {
|
|
36
|
+
filePathsContentMap.set(queryFilenameAliasMap.get(queryAlias), // we assume we received only those files we know about
|
|
37
|
+
fileObject.text);
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
//# sourceMappingURL=get-entry-content.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-entry-content.js","sourceRoot":"","sources":["../../../src/github-api/get-entry-content.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kCAAkC,EAAE,MAAM,yBAAyB,CAAA;AAC5E,OAAO,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAA;AACnE,OAAO,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAA;AAEjE,MAAM,CAAC,MAAM,eAAe,GAAG,KAAK,EAClC,oBAA6C,EAC7C,kBAAsC,EACtC,UAAkB,EAClB,SAAmB,EACW,EAAE;IAChC,MAAM,mBAAmB,GAAG,IAAI,GAAG,EAAkB,CAAA;IAErD,MAAM,EAAE,OAAO,EAAE,qBAAqB,EAAE,GAAG,kCAAkC,CAC3E,SAAS,EACT,UAAU,EACV,gBAAgB,CACjB,CAAA;IAED,MAAM,eAAe,GAAG,EAAE,CAAA;IAC1B,KAAK,MAAM,YAAY,IAAI,OAAO,EAAE,CAAC;QACnC,IAAI,CAAC;YACH,eAAe,CAAC,IAAI,CAClB,kBAAkB;iBACf,IAAI,CACH,sBAAsB,EACtB;gBACE,KAAK,EAAE,YAAY;gBACnB,SAAS,EAAE;oBACT,eAAe,EAAE,oBAAoB,CAAC,eAAe;oBACrD,cAAc,EAAE,oBAAoB,CAAC,cAAc;iBACpD;aACF,EACD;gBACE,OAAO,EAAE;oBACP,aAAa,EAAE,UAAU,oBAAoB,CAAC,WAAW,EAAE;iBAC5D;gBACD,OAAO,EAAE,KAAK;aACf,CACF;iBACA,IAAI,CAAC,CAAC,eAAe,EAAE,EAAE,CACxB,sBAAsB,CACpB,mBAAmB,EACnB,qBAAqB,EACrB,eAAe,CAChB,CACF,CACJ,CAAA;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,gBAAgB,CAAC,KAAK,CAAC,CAAA;QACzB,CAAC;IACH,CAAC;IACD,MAAM,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAA;IAElC,OAAO,mBAAmB,CAAA;AAC5B,CAAC,CAAA;AAED,MAAM,sBAAsB,GAAG,CAC7B,mBAAwC,EACxC,qBAA0C,EAC1C,eAAmC,EAC7B,EAAE;IACR,mBAAmB,CAAC,eAAe,CAAC,CAAA;IACpC,MAAM,iBAAiB,GAAG,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,UAGnD,CAAA;IAED,KAAK,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,iBAAiB,CAAC,EAAE,CAAC;QACzE,mBAAmB,CAAC,GAAG,CACrB,qBAAqB,CAAC,GAAG,CAAC,UAAU,CAAW,EAAE,uDAAuD;QACxG,UAAU,CAAC,IAAI,CAChB,CAAA;IACH,CAAC;AACH,CAAC,CAAA"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { ErrorCode, GitAdapterError } from '@commitspark/git-adapter';
|
|
2
|
+
import { getPathEntryFolder } from '../util/path-factory';
|
|
3
|
+
import { handleHttpErrors } from '../errors';
|
|
4
|
+
import { GITHUB_REST_API_URL } from '../types';
|
|
5
|
+
export const getFilePaths = async (gitRepositoryOptions, axiosCacheInstance, treeSha) => {
|
|
6
|
+
const pathEntryFolder = getPathEntryFolder(gitRepositoryOptions);
|
|
7
|
+
const { repositoryOwner, repositoryName, accessToken } = gitRepositoryOptions;
|
|
8
|
+
// hard limit of 100,000 entries and 7MB response size; see https://docs.github.com/en/rest/git/trees?apiVersion=2022-11-28#get-a-tree
|
|
9
|
+
const restApiUrl = GITHUB_REST_API_URL +
|
|
10
|
+
`/repos/${repositoryOwner}/${repositoryName}/git/trees/${treeSha}?recursive=1`;
|
|
11
|
+
let response;
|
|
12
|
+
try {
|
|
13
|
+
response = await axiosCacheInstance.get(restApiUrl, {
|
|
14
|
+
headers: {
|
|
15
|
+
Authorization: `Bearer ${accessToken}`,
|
|
16
|
+
Accept: 'application/vnd.github+json',
|
|
17
|
+
},
|
|
18
|
+
timeout: 30000,
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
catch (error) {
|
|
22
|
+
handleHttpErrors(error);
|
|
23
|
+
}
|
|
24
|
+
if (response === undefined) {
|
|
25
|
+
throw new GitAdapterError(ErrorCode.INTERNAL_ERROR, 'Failed to fetch repository file list.');
|
|
26
|
+
}
|
|
27
|
+
const data = response.data;
|
|
28
|
+
if (data.truncated) {
|
|
29
|
+
throw new GitAdapterError(ErrorCode.INTERNAL_ERROR, `Too many files in repository.`);
|
|
30
|
+
}
|
|
31
|
+
return data.tree
|
|
32
|
+
.filter((entry) => entry.type === 'blob' && entry.path.startsWith(pathEntryFolder))
|
|
33
|
+
.map((entry) => entry.path);
|
|
34
|
+
};
|
|
35
|
+
//# sourceMappingURL=get-file-paths.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-file-paths.js","sourceRoot":"","sources":["../../../src/github-api/get-file-paths.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAA;AACrE,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAA;AAC5C,OAAO,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAA;AAE9C,MAAM,CAAC,MAAM,YAAY,GAAG,KAAK,EAC/B,oBAA6C,EAC7C,kBAAsC,EACtC,OAAe,EACI,EAAE;IACrB,MAAM,eAAe,GAAG,kBAAkB,CAAC,oBAAoB,CAAC,CAAA;IAChE,MAAM,EAAE,eAAe,EAAE,cAAc,EAAE,WAAW,EAAE,GAAG,oBAAoB,CAAA;IAE7E,sIAAsI;IACtI,MAAM,UAAU,GACd,mBAAmB;QACnB,UAAU,eAAe,IAAI,cAAc,cAAc,OAAO,cAAc,CAAA;IAEhF,IAAI,QAAQ,CAAA;IACZ,IAAI,CAAC;QACH,QAAQ,GAAG,MAAM,kBAAkB,CAAC,GAAG,CAAC,UAAU,EAAE;YAClD,OAAO,EAAE;gBACP,aAAa,EAAE,UAAU,WAAW,EAAE;gBACtC,MAAM,EAAE,6BAA6B;aACtC;YACD,OAAO,EAAE,KAAK;SACf,CAAC,CAAA;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,gBAAgB,CAAC,KAAK,CAAC,CAAA;IACzB,CAAC;IAED,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,MAAM,IAAI,eAAe,CACvB,SAAS,CAAC,cAAc,EACxB,uCAAuC,CACxC,CAAA;IACH,CAAC;IAED,MAAM,IAAI,GAAG,QAAQ,CAAC,IAA0B,CAAA;IAEhD,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;QACnB,MAAM,IAAI,eAAe,CACvB,SAAS,CAAC,cAAc,EACxB,+BAA+B,CAChC,CAAA;IACH,CAAC;IAED,OAAO,IAAI,CAAC,IAAI;SACb,MAAM,CACL,CAAC,KAAK,EAAE,EAAE,CACR,KAAK,CAAC,IAAI,KAAK,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,CAClE;SACA,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;AAC/B,CAAC,CAAA"}
|