@commitspark/git-adapter-github 0.21.0 → 0.31.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 +21 -0
- package/dist/cjs/axios/cached-instance.js +2 -2
- package/dist/cjs/axios/cached-instance.js.map +1 -1
- package/dist/cjs/github-adapter.js +27 -52
- 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/index.js +7 -7
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/types.js +10 -0
- package/dist/cjs/types.js.map +1 -0
- package/dist/cjs/util/entries-to-actions-converter.js +6 -6
- 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 +5 -5
- package/dist/cjs/util/path-factory.js.map +1 -1
- package/dist/esm/axios/cached-instance.js +1 -1
- package/dist/esm/axios/cached-instance.js.map +1 -1
- package/dist/esm/github-adapter.js +15 -39
- 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/index.js +2 -2
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/package.json +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 +3 -3
- 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/types/github-adapter.d.ts +1 -2
- 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/entries-to-actions-converter.d.ts +2 -2
- package/dist/types/util/entries-to-actions-converter.d.ts.map +1 -1
- package/dist/types/util/entry-factory.d.ts +2 -9
- package/dist/types/util/entry-factory.d.ts.map +1 -1
- package/dist/types/util/path-factory.d.ts +1 -1
- package/dist/types/util/path-factory.d.ts.map +1 -1
- package/package.json +5 -3
- package/src/axios/cached-instance.ts +1 -1
- package/src/github-adapter.ts +26 -55
- 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/index.ts +2 -2
- package/src/types.ts +6 -0
- package/src/util/entries-to-actions-converter.ts +3 -3
- package/src/util/entry-factory.ts +13 -22
- package/src/util/path-factory.ts +4 -4
- 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/tsconfig.build.cjs.tsbuildinfo +0 -1
- package/dist/tsconfig.build.esm.tsbuildinfo +0 -1
- package/dist/tsconfig.build.types.tsbuildinfo +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,27 @@ 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.31.0] - 2026-02-19
|
|
9
|
+
|
|
10
|
+
### Fixed
|
|
11
|
+
|
|
12
|
+
- Fix incorrect ESM build configuration leading to broken build output
|
|
13
|
+
|
|
14
|
+
### Changed
|
|
15
|
+
|
|
16
|
+
- Upgrade dependencies
|
|
17
|
+
|
|
18
|
+
## [0.30.0] - 2025-11-28
|
|
19
|
+
|
|
20
|
+
### Added
|
|
21
|
+
|
|
22
|
+
- Support loading thousands of entries
|
|
23
|
+
|
|
24
|
+
### Changed
|
|
25
|
+
|
|
26
|
+
- Increase request timeout to avoid artificially aborting requests
|
|
27
|
+
- Upgrade dependencies
|
|
28
|
+
|
|
8
29
|
## [0.21.0] - 2025-11-11
|
|
9
30
|
|
|
10
31
|
### Added
|
|
@@ -6,13 +6,13 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
exports.createAxiosCachedInstance = exports.QUERY_CACHE_SECONDS = void 0;
|
|
7
7
|
const axios_cache_interceptor_1 = require("axios-cache-interceptor");
|
|
8
8
|
const axios_1 = __importDefault(require("axios"));
|
|
9
|
-
const
|
|
9
|
+
const cache_key_generator_ts_1 = require("./cache-key-generator.js");
|
|
10
10
|
exports.QUERY_CACHE_SECONDS = 10 * 60;
|
|
11
11
|
const createAxiosCachedInstance = () => {
|
|
12
12
|
return (0, axios_cache_interceptor_1.setupCache)(axios_1.default.create(), {
|
|
13
13
|
ttl: exports.QUERY_CACHE_SECONDS * 1000, // milliseconds
|
|
14
14
|
methods: ['get', 'post'],
|
|
15
|
-
generateKey: (0, axios_cache_interceptor_1.buildKeyGenerator)(
|
|
15
|
+
generateKey: (0, axios_cache_interceptor_1.buildKeyGenerator)(cache_key_generator_ts_1.cacheKeyGenerator), //
|
|
16
16
|
});
|
|
17
17
|
};
|
|
18
18
|
exports.createAxiosCachedInstance = createAxiosCachedInstance;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cached-instance.js","sourceRoot":"","sources":["../../../src/axios/cached-instance.ts"],"names":[],"mappings":";;;;;;AAAA,qEAIgC;AAChC,kDAAyB;AACzB
|
|
1
|
+
{"version":3,"file":"cached-instance.js","sourceRoot":"","sources":["../../../src/axios/cached-instance.ts"],"names":[],"mappings":";;;;;;AAAA,qEAIgC;AAChC,kDAAyB;AACzB,qEAA4D;AAE/C,QAAA,mBAAmB,GAAG,EAAE,GAAG,EAAE,CAAA;AAEnC,MAAM,yBAAyB,GAAG,GAAuB,EAAE;IAChE,OAAO,IAAA,oCAAU,EAAC,eAAK,CAAC,MAAM,EAAE,EAAE;QAChC,GAAG,EAAE,2BAAmB,GAAG,IAAI,EAAE,eAAe;QAChD,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC;QACxB,WAAW,EAAE,IAAA,2CAAiB,EAAC,0CAAiB,CAAC,EAAE,EAAE;KACtD,CAAC,CAAA;AACJ,CAAC,CAAA;AANY,QAAA,yBAAyB,6BAMrC"}
|
|
@@ -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
|
|
15
|
-
const
|
|
16
|
-
const
|
|
17
|
-
const
|
|
18
|
-
const
|
|
19
|
-
|
|
14
|
+
const graphql_query_factory_ts_1 = require("./github-api/graphql-query-factory.js");
|
|
15
|
+
const entries_to_actions_converter_ts_1 = require("./util/entries-to-actions-converter.js");
|
|
16
|
+
const path_factory_ts_1 = require("./util/path-factory.js");
|
|
17
|
+
const entry_factory_ts_1 = require("./util/entry-factory.js");
|
|
18
|
+
const errors_ts_1 = require("./errors.js");
|
|
19
|
+
const get_entry_content_ts_1 = require("./github-api/get-entry-content.js");
|
|
20
|
+
const get_file_paths_ts_1 = require("./github-api/get-file-paths.js");
|
|
21
|
+
const types_ts_1 = require("./types.js");
|
|
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_ts_1.getFilePaths)(gitRepositoryOptions, axiosCacheInstance, commitHash);
|
|
24
|
+
const filePathsContentMap = yield (0, get_entry_content_ts_1.getEntryContent)(gitRepositoryOptions, axiosCacheInstance, commitHash, filenames);
|
|
25
|
+
return (0, entry_factory_ts_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* () {
|
|
@@ -55,11 +30,11 @@ const getSchema = (gitRepositoryOptions, axiosCacheInstance, commitHash) => __aw
|
|
|
55
30
|
const repositoryOwner = gitRepositoryOptions.repositoryOwner;
|
|
56
31
|
const repositoryName = gitRepositoryOptions.repositoryName;
|
|
57
32
|
const token = gitRepositoryOptions.accessToken;
|
|
58
|
-
const schemaFilePath = (0,
|
|
59
|
-
const queryContent = (0,
|
|
33
|
+
const schemaFilePath = (0, path_factory_ts_1.getPathSchema)(gitRepositoryOptions);
|
|
34
|
+
const queryContent = (0, graphql_query_factory_ts_1.createSingleBlobContentQuery)();
|
|
60
35
|
let response;
|
|
61
36
|
try {
|
|
62
|
-
response = yield axiosCacheInstance.post(
|
|
37
|
+
response = yield axiosCacheInstance.post(types_ts_1.GITHUB_GRAPHQL_API_URL, {
|
|
63
38
|
query: queryContent,
|
|
64
39
|
variables: {
|
|
65
40
|
repositoryOwner: repositoryOwner,
|
|
@@ -73,12 +48,12 @@ const getSchema = (gitRepositoryOptions, axiosCacheInstance, commitHash) => __aw
|
|
|
73
48
|
});
|
|
74
49
|
}
|
|
75
50
|
catch (error) {
|
|
76
|
-
(0,
|
|
51
|
+
(0, errors_ts_1.handleHttpErrors)(error);
|
|
77
52
|
}
|
|
78
53
|
if (!response) {
|
|
79
54
|
throw new git_adapter_1.GitAdapterError(git_adapter_1.ErrorCode.INTERNAL_ERROR, `Failed to fetch schema`);
|
|
80
55
|
}
|
|
81
|
-
(0,
|
|
56
|
+
(0, errors_ts_1.handleGraphQLErrors)(response);
|
|
82
57
|
const schema = (_d = (_c = (_b = (_a = response.data) === null || _a === void 0 ? void 0 : _a.data) === null || _b === void 0 ? void 0 : _b.repository) === null || _c === void 0 ? void 0 : _c.object) === null || _d === void 0 ? void 0 : _d.text;
|
|
83
58
|
if (!schema) {
|
|
84
59
|
throw new git_adapter_1.GitAdapterError(git_adapter_1.ErrorCode.NOT_FOUND, `"${schemaFilePath}" not found in Git repository "${repositoryOwner}/${repositoryName}" at commit "${commitHash}"`);
|
|
@@ -89,10 +64,10 @@ exports.getSchema = getSchema;
|
|
|
89
64
|
const getLatestCommitHash = (gitRepositoryOptions, axiosCacheInstance, ref) => __awaiter(void 0, void 0, void 0, function* () {
|
|
90
65
|
var _a, _b, _c, _d, _e;
|
|
91
66
|
const token = gitRepositoryOptions.accessToken;
|
|
92
|
-
const queryLatestCommit = (0,
|
|
67
|
+
const queryLatestCommit = (0, graphql_query_factory_ts_1.createLatestCommitQuery)();
|
|
93
68
|
let response;
|
|
94
69
|
try {
|
|
95
|
-
response = yield axiosCacheInstance.post(
|
|
70
|
+
response = yield axiosCacheInstance.post(types_ts_1.GITHUB_GRAPHQL_API_URL, {
|
|
96
71
|
query: queryLatestCommit,
|
|
97
72
|
variables: {
|
|
98
73
|
repositoryOwner: gitRepositoryOptions.repositoryOwner,
|
|
@@ -107,12 +82,12 @@ const getLatestCommitHash = (gitRepositoryOptions, axiosCacheInstance, ref) => _
|
|
|
107
82
|
});
|
|
108
83
|
}
|
|
109
84
|
catch (error) {
|
|
110
|
-
(0,
|
|
85
|
+
(0, errors_ts_1.handleHttpErrors)(error);
|
|
111
86
|
}
|
|
112
87
|
if (!response) {
|
|
113
88
|
throw new git_adapter_1.GitAdapterError(git_adapter_1.ErrorCode.INTERNAL_ERROR, 'Failed to fetch latest commit');
|
|
114
89
|
}
|
|
115
|
-
(0,
|
|
90
|
+
(0, errors_ts_1.handleGraphQLErrors)(response);
|
|
116
91
|
if (!response.data.data.repository) {
|
|
117
92
|
throw new git_adapter_1.GitAdapterError(git_adapter_1.ErrorCode.NOT_FOUND, `No repository found "${gitRepositoryOptions.repositoryOwner}/${gitRepositoryOptions.repositoryName}"`);
|
|
118
93
|
}
|
|
@@ -126,12 +101,12 @@ exports.getLatestCommitHash = getLatestCommitHash;
|
|
|
126
101
|
const createCommit = (gitRepositoryOptions, axiosCacheInstance, commitDraft) => __awaiter(void 0, void 0, void 0, function* () {
|
|
127
102
|
var _a;
|
|
128
103
|
const token = gitRepositoryOptions.accessToken;
|
|
129
|
-
const pathEntryFolder = (0,
|
|
130
|
-
const { additions, deletions } = (0,
|
|
131
|
-
const mutateCommit = (0,
|
|
104
|
+
const pathEntryFolder = (0, path_factory_ts_1.getPathEntryFolder)(gitRepositoryOptions);
|
|
105
|
+
const { additions, deletions } = (0, entries_to_actions_converter_ts_1.convertEntriesToActions)(commitDraft.entries, pathEntryFolder);
|
|
106
|
+
const mutateCommit = (0, graphql_query_factory_ts_1.createCommitMutation)();
|
|
132
107
|
let response;
|
|
133
108
|
try {
|
|
134
|
-
response = yield axiosCacheInstance.post(
|
|
109
|
+
response = yield axiosCacheInstance.post(types_ts_1.GITHUB_GRAPHQL_API_URL, {
|
|
135
110
|
query: mutateCommit,
|
|
136
111
|
variables: {
|
|
137
112
|
repositoryNameWithOwner: `${gitRepositoryOptions.repositoryOwner}/${gitRepositoryOptions.repositoryName}`,
|
|
@@ -149,12 +124,12 @@ const createCommit = (gitRepositoryOptions, axiosCacheInstance, commitDraft) =>
|
|
|
149
124
|
});
|
|
150
125
|
}
|
|
151
126
|
catch (error) {
|
|
152
|
-
(0,
|
|
127
|
+
(0, errors_ts_1.handleHttpErrors)(error);
|
|
153
128
|
}
|
|
154
129
|
if (!response) {
|
|
155
130
|
throw new git_adapter_1.GitAdapterError(git_adapter_1.ErrorCode.INTERNAL_ERROR, `Failed to create commit`);
|
|
156
131
|
}
|
|
157
|
-
(0,
|
|
132
|
+
(0, errors_ts_1.handleGraphQLErrors)(response);
|
|
158
133
|
const mutationResult = response.data.data.commitCreate;
|
|
159
134
|
if (mutationResult.errors) {
|
|
160
135
|
const errorMessage = JSON.stringify(mutationResult.errors);
|
|
@@ -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_ts_1 = require("./graphql-query-factory.js");
|
|
14
|
+
const types_ts_1 = require("../types.js");
|
|
15
|
+
const errors_ts_1 = require("../errors.js");
|
|
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_ts_1.createBlobsContentByFilePathsQuery)(filePaths, commitHash, types_ts_1.QUERY_BATCH_SIZE);
|
|
19
|
+
const requestPromises = [];
|
|
20
|
+
for (const contentQuery of queries) {
|
|
21
|
+
try {
|
|
22
|
+
requestPromises.push(axiosCacheInstance
|
|
23
|
+
.post(types_ts_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_ts_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_ts_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,yEAA+E;AAC/E,0CAAsE;AACtE,4CAAoE;AAE7D,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,6DAAkC,EAC3E,SAAS,EACT,UAAU,EACV,2BAAgB,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,iCAAsB,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,4BAAgB,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,+BAAmB,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_ts_1 = require("../util/path-factory.js");
|
|
15
|
+
const errors_ts_1 = require("../errors.js");
|
|
16
|
+
const types_ts_1 = require("../types.js");
|
|
17
|
+
const getFilePaths = (gitRepositoryOptions, axiosCacheInstance, treeSha) => __awaiter(void 0, void 0, void 0, function* () {
|
|
18
|
+
const pathEntryFolder = (0, path_factory_ts_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_ts_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_ts_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,6DAA4D;AAC5D,4CAA+C;AAC/C,0CAAiD;AAE1C,MAAM,YAAY,GAAG,CAC1B,oBAA6C,EAC7C,kBAAsC,EACtC,OAAe,EACI,EAAE;IACrB,MAAM,eAAe,GAAG,IAAA,oCAAkB,EAAC,oBAAoB,CAAC,CAAA;IAChE,MAAM,EAAE,eAAe,EAAE,cAAc,EAAE,WAAW,EAAE,GAAG,oBAAoB,CAAA;IAE7E,sIAAsI;IACtI,MAAM,UAAU,GACd,8BAAmB;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,4BAAgB,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"}
|
package/dist/cjs/index.js
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.createAdapter = createAdapter;
|
|
4
|
-
const
|
|
5
|
-
const
|
|
4
|
+
const cached_instance_ts_1 = require("./axios/cached-instance.js");
|
|
5
|
+
const github_adapter_ts_1 = require("./github-adapter.js");
|
|
6
6
|
function createAdapter(gitRepositoryOptions) {
|
|
7
|
-
const axiosCacheInstance = (0,
|
|
7
|
+
const axiosCacheInstance = (0, cached_instance_ts_1.createAxiosCachedInstance)();
|
|
8
8
|
return {
|
|
9
|
-
getEntries: (commitHash) => (0,
|
|
10
|
-
getSchema: (commitHash) => (0,
|
|
11
|
-
getLatestCommitHash: (ref) => (0,
|
|
12
|
-
createCommit: (commitDraft) => (0,
|
|
9
|
+
getEntries: (commitHash) => (0, github_adapter_ts_1.getEntries)(gitRepositoryOptions, axiosCacheInstance, commitHash),
|
|
10
|
+
getSchema: (commitHash) => (0, github_adapter_ts_1.getSchema)(gitRepositoryOptions, axiosCacheInstance, commitHash),
|
|
11
|
+
getLatestCommitHash: (ref) => (0, github_adapter_ts_1.getLatestCommitHash)(gitRepositoryOptions, axiosCacheInstance, ref),
|
|
12
|
+
createCommit: (commitDraft) => (0, github_adapter_ts_1.createCommit)(gitRepositoryOptions, axiosCacheInstance, commitDraft),
|
|
13
13
|
};
|
|
14
14
|
}
|
|
15
15
|
//# sourceMappingURL=index.js.map
|
package/dist/cjs/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;AAiBA,sCAeC;AA/BD,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;AAiBA,sCAeC;AA/BD,mEAAsE;AACtE,2DAK4B;AAU5B,SAAgB,aAAa,CAC3B,oBAA6C;IAE7C,MAAM,kBAAkB,GAAG,IAAA,8CAAyB,GAAE,CAAA;IAEtD,OAAO;QACL,UAAU,EAAE,CAAC,UAAkB,EAAE,EAAE,CACjC,IAAA,8BAAU,EAAC,oBAAoB,EAAE,kBAAkB,EAAE,UAAU,CAAC;QAClE,SAAS,EAAE,CAAC,UAAkB,EAAE,EAAE,CAChC,IAAA,6BAAS,EAAC,oBAAoB,EAAE,kBAAkB,EAAE,UAAU,CAAC;QACjE,mBAAmB,EAAE,CAAC,GAAW,EAAE,EAAE,CACnC,IAAA,uCAAmB,EAAC,oBAAoB,EAAE,kBAAkB,EAAE,GAAG,CAAC;QACpE,YAAY,EAAE,CAAC,WAAwB,EAAE,EAAE,CACzC,IAAA,gCAAY,EAAC,oBAAoB,EAAE,kBAAkB,EAAE,WAAW,CAAC;KACtE,CAAA;AACH,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"}
|
|
@@ -2,19 +2,19 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.convertEntriesToActions = convertEntriesToActions;
|
|
4
4
|
const yaml_1 = require("yaml");
|
|
5
|
-
const
|
|
6
|
-
const
|
|
7
|
-
const
|
|
5
|
+
const addition_model_ts_1 = require("../model/addition.model.js");
|
|
6
|
+
const deletion_model_ts_1 = require("../model/deletion.model.js");
|
|
7
|
+
const types_ts_1 = require("../types.js");
|
|
8
8
|
function convertEntriesToActions(entryDrafts, pathEntryFolder) {
|
|
9
9
|
const additions = [];
|
|
10
10
|
const deletions = [];
|
|
11
11
|
entryDrafts.forEach((entryDraft) => {
|
|
12
|
-
const entryPath = `${pathEntryFolder}/${entryDraft.id}${
|
|
12
|
+
const entryPath = `${pathEntryFolder}/${entryDraft.id}${types_ts_1.ENTRY_EXTENSION}`;
|
|
13
13
|
if (entryDraft.deletion) {
|
|
14
|
-
deletions.push(new
|
|
14
|
+
deletions.push(new deletion_model_ts_1.DeletionModel(entryPath));
|
|
15
15
|
}
|
|
16
16
|
else {
|
|
17
|
-
additions.push(new
|
|
17
|
+
additions.push(new addition_model_ts_1.AdditionModel(entryPath, (0, yaml_1.stringify)({
|
|
18
18
|
metadata: entryDraft.metadata,
|
|
19
19
|
data: entryDraft.data,
|
|
20
20
|
})));
|
|
@@ -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,
|
|
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,kEAA0D;AAC1D,kEAA0D;AAC1D,0CAA6C;AAE7C,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,0BAAe,EAAE,CAAA;QACzE,IAAI,UAAU,CAAC,QAAQ,EAAE,CAAC;YACxB,SAAS,CAAC,IAAI,CAAC,IAAI,iCAAa,CAAC,SAAS,CAAC,CAAC,CAAA;QAC9C,CAAC;aAAM,CAAC;YACN,SAAS,CAAC,IAAI,CACZ,IAAI,iCAAa,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
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
.map((
|
|
11
|
-
const fileContent = (0, yaml_1.parse)(
|
|
12
|
-
const id =
|
|
5
|
+
const types_ts_1 = require("../types.js");
|
|
6
|
+
const path_factory_ts_1 = require("./path-factory.js");
|
|
7
|
+
function createEntriesFromFileContent(gitRepositoryOptions, filePathContentMap) {
|
|
8
|
+
return Array.from(filePathContentMap)
|
|
9
|
+
.filter(([filePath]) => filePath.endsWith(types_ts_1.ENTRY_EXTENSION))
|
|
10
|
+
.map(([filePath, content]) => {
|
|
11
|
+
const fileContent = (0, yaml_1.parse)(content);
|
|
12
|
+
const id = filePath.substring((0, path_factory_ts_1.getPathEntryFolder)(gitRepositoryOptions).length, // strip folder path back out
|
|
13
|
+
filePath.length - types_ts_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,0CAA6C;AAC7C,uDAAsD;AAGtD,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,0BAAe,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,oCAAkB,EAAC,oBAAoB,CAAC,CAAC,MAAM,EAAE,6BAA6B;QAC9E,QAAQ,CAAC,MAAM,GAAG,0BAAe,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,16 +2,16 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.getPathSchema = getPathSchema;
|
|
4
4
|
exports.getPathEntryFolder = getPathEntryFolder;
|
|
5
|
-
const
|
|
5
|
+
const types_ts_1 = require("../types.js");
|
|
6
6
|
function getPathSchema(gitRepositoryOptions) {
|
|
7
7
|
var _a;
|
|
8
|
-
return (_a = gitRepositoryOptions.pathSchemaFile) !== null && _a !== void 0 ? _a :
|
|
8
|
+
return (_a = gitRepositoryOptions.pathSchemaFile) !== null && _a !== void 0 ? _a : types_ts_1.PATH_SCHEMA_FILE;
|
|
9
9
|
}
|
|
10
10
|
function getPathEntryFolder(gitRepositoryOptions) {
|
|
11
11
|
var _a;
|
|
12
|
-
const pathEntryFolder = (_a = gitRepositoryOptions.pathEntryFolder) !== null && _a !== void 0 ? _a :
|
|
13
|
-
if (pathEntryFolder.endsWith('/')) {
|
|
14
|
-
return pathEntryFolder
|
|
12
|
+
const pathEntryFolder = (_a = gitRepositoryOptions.pathEntryFolder) !== null && _a !== void 0 ? _a : types_ts_1.PATH_ENTRY_FOLDER;
|
|
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,0CAAiE;AAEjE,SAAgB,aAAa,CAAC,oBAA6C;;IACzE,OAAO,MAAA,oBAAoB,CAAC,cAAc,mCAAI,2BAAgB,CAAA;AAChE,CAAC;AAED,SAAgB,kBAAkB,CAChC,oBAA6C;;IAE7C,MAAM,eAAe,GACnB,MAAA,oBAAoB,CAAC,eAAe,mCAAI,4BAAiB,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,6 +1,6 @@
|
|
|
1
1
|
import { buildKeyGenerator, setupCache, } from 'axios-cache-interceptor';
|
|
2
2
|
import axios from 'axios';
|
|
3
|
-
import { cacheKeyGenerator } from
|
|
3
|
+
import { cacheKeyGenerator } from "./cache-key-generator.js";
|
|
4
4
|
export const QUERY_CACHE_SECONDS = 10 * 60;
|
|
5
5
|
export const createAxiosCachedInstance = () => {
|
|
6
6
|
return setupCache(axios.create(), {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cached-instance.js","sourceRoot":"","sources":["../../../src/axios/cached-instance.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,iBAAiB,EACjB,UAAU,GACX,MAAM,yBAAyB,CAAA;AAChC,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,iBAAiB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"cached-instance.js","sourceRoot":"","sources":["../../../src/axios/cached-instance.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,iBAAiB,EACjB,UAAU,GACX,MAAM,yBAAyB,CAAA;AAChC,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AAE5D,MAAM,CAAC,MAAM,mBAAmB,GAAG,EAAE,GAAG,EAAE,CAAA;AAE1C,MAAM,CAAC,MAAM,yBAAyB,GAAG,GAAuB,EAAE;IAChE,OAAO,UAAU,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE;QAChC,GAAG,EAAE,mBAAmB,GAAG,IAAI,EAAE,eAAe;QAChD,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC;QACxB,WAAW,EAAE,iBAAiB,CAAC,iBAAiB,CAAC,EAAE,EAAE;KACtD,CAAC,CAAA;AACJ,CAAC,CAAA"}
|