@commitspark/git-adapter-github 0.8.3 → 0.20.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/README.md +24 -2
- package/dist/cjs/{axios-cache-key-generator.js → axios/cache-key-generator.js} +4 -4
- package/dist/cjs/axios/cache-key-generator.js.map +1 -0
- package/dist/cjs/axios/cached-instance.js +19 -0
- package/dist/cjs/axios/cached-instance.js.map +1 -0
- package/dist/cjs/github-adapter.js +126 -0
- package/dist/cjs/github-adapter.js.map +1 -0
- package/dist/cjs/index.js +10 -6
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/model/addition.model.js.map +1 -0
- package/dist/cjs/model/deletion.model.js.map +1 -0
- package/dist/cjs/util/entries-to-actions-converter.js +28 -0
- package/dist/cjs/util/entries-to-actions-converter.js.map +1 -0
- package/dist/cjs/util/entry-factory.js +20 -0
- package/dist/cjs/util/entry-factory.js.map +1 -0
- package/dist/cjs/{graphql-query-factory.service.js → util/graphql-query-factory.js} +16 -16
- package/dist/cjs/util/graphql-query-factory.js.map +1 -0
- package/dist/cjs/util/path-factory.js +18 -0
- package/dist/cjs/util/path-factory.js.map +1 -0
- package/dist/cjs/util/types.js +7 -0
- package/dist/cjs/util/types.js.map +1 -0
- package/dist/esm/{axios-cache-key-generator.js → axios/cache-key-generator.js} +2 -3
- package/dist/esm/axios/cache-key-generator.js.map +1 -0
- package/dist/esm/axios/cached-instance.js +12 -0
- package/dist/esm/axios/cached-instance.js.map +1 -0
- package/dist/esm/github-adapter.js +108 -0
- package/dist/esm/github-adapter.js.map +1 -0
- package/dist/esm/index.js +10 -4
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/model/addition.model.js.map +1 -0
- package/dist/esm/model/deletion.model.js.map +1 -0
- package/dist/esm/util/entries-to-actions-converter.js +25 -0
- package/dist/esm/util/entries-to-actions-converter.js.map +1 -0
- package/dist/esm/util/entry-factory.js +17 -0
- package/dist/esm/util/entry-factory.js.map +1 -0
- package/{src/graphql-query-factory.service.ts → dist/esm/util/graphql-query-factory.js} +12 -16
- package/dist/esm/util/graphql-query-factory.js.map +1 -0
- package/dist/esm/util/path-factory.js +12 -0
- package/dist/esm/util/path-factory.js.map +1 -0
- package/dist/esm/util/types.js +4 -0
- package/dist/esm/util/types.js.map +1 -0
- 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/axios/cache-key-generator.d.ts +3 -0
- package/dist/types/axios/cache-key-generator.d.ts.map +1 -0
- package/dist/types/axios/cached-instance.d.ts +4 -0
- package/dist/types/axios/cached-instance.d.ts.map +1 -0
- package/dist/types/github-adapter.d.ts +9 -0
- package/dist/types/github-adapter.d.ts.map +1 -0
- package/dist/types/index.d.ts +3 -4
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/model/addition.model.d.ts.map +1 -0
- package/dist/types/model/deletion.model.d.ts.map +1 -0
- package/dist/types/util/entries-to-actions-converter.d.ts +8 -0
- package/dist/types/util/entries-to-actions-converter.d.ts.map +1 -0
- package/dist/types/{entry-factory.service.d.ts → util/entry-factory.d.ts} +2 -4
- package/dist/types/util/entry-factory.d.ts.map +1 -0
- package/dist/types/util/graphql-query-factory.d.ts +5 -0
- package/dist/types/util/graphql-query-factory.d.ts.map +1 -0
- package/dist/types/util/path-factory.d.ts +4 -0
- package/dist/types/util/path-factory.d.ts.map +1 -0
- package/dist/types/util/types.d.ts +4 -0
- package/dist/types/util/types.d.ts.map +1 -0
- package/package.json +3 -3
- package/src/{axios-cache-key-generator.ts → axios/cache-key-generator.ts} +1 -3
- package/src/axios/cached-instance.ts +17 -0
- package/src/github-adapter.ts +179 -0
- package/src/index.ts +24 -7
- package/src/util/entries-to-actions-converter.ts +36 -0
- package/src/util/entry-factory.ts +34 -0
- package/{dist/esm/graphql-query-factory.service.js → src/util/graphql-query-factory.ts} +18 -18
- package/src/util/path-factory.ts +19 -0
- package/src/util/types.ts +3 -0
- package/dist/cjs/addition.model.js.map +0 -1
- package/dist/cjs/axios-cache-key-generator.js.map +0 -1
- package/dist/cjs/container.js +0 -25
- package/dist/cjs/container.js.map +0 -1
- package/dist/cjs/deletion.model.js.map +0 -1
- package/dist/cjs/entries-to-actions-converter.service.js +0 -31
- package/dist/cjs/entries-to-actions-converter.service.js.map +0 -1
- package/dist/cjs/entry-factory.service.js +0 -25
- package/dist/cjs/entry-factory.service.js.map +0 -1
- package/dist/cjs/git-hub-adapter.service.js +0 -154
- package/dist/cjs/git-hub-adapter.service.js.map +0 -1
- package/dist/cjs/graphql-query-factory.service.js.map +0 -1
- package/dist/cjs/path-factory.service.js +0 -20
- package/dist/cjs/path-factory.service.js.map +0 -1
- package/dist/esm/addition.model.js.map +0 -1
- package/dist/esm/axios-cache-key-generator.js.map +0 -1
- package/dist/esm/container.js +0 -19
- package/dist/esm/container.js.map +0 -1
- package/dist/esm/deletion.model.js.map +0 -1
- package/dist/esm/entries-to-actions-converter.service.js +0 -27
- package/dist/esm/entries-to-actions-converter.service.js.map +0 -1
- package/dist/esm/entry-factory.service.js +0 -21
- package/dist/esm/entry-factory.service.js.map +0 -1
- package/dist/esm/git-hub-adapter.service.js +0 -135
- package/dist/esm/git-hub-adapter.service.js.map +0 -1
- package/dist/esm/graphql-query-factory.service.js.map +0 -1
- package/dist/esm/path-factory.service.js +0 -14
- package/dist/esm/path-factory.service.js.map +0 -1
- package/dist/types/addition.model.d.ts.map +0 -1
- package/dist/types/axios-cache-key-generator.d.ts +0 -4
- package/dist/types/axios-cache-key-generator.d.ts.map +0 -1
- package/dist/types/container.d.ts +0 -3
- package/dist/types/container.d.ts.map +0 -1
- package/dist/types/deletion.model.d.ts.map +0 -1
- package/dist/types/entries-to-actions-converter.service.d.ts +0 -10
- package/dist/types/entries-to-actions-converter.service.d.ts.map +0 -1
- package/dist/types/entry-factory.service.d.ts.map +0 -1
- package/dist/types/git-hub-adapter.service.d.ts +0 -24
- package/dist/types/git-hub-adapter.service.d.ts.map +0 -1
- package/dist/types/graphql-query-factory.service.d.ts +0 -7
- package/dist/types/graphql-query-factory.service.d.ts.map +0 -1
- package/dist/types/path-factory.service.d.ts +0 -6
- package/dist/types/path-factory.service.d.ts.map +0 -1
- package/src/container.ts +0 -27
- package/src/entries-to-actions-converter.service.ts +0 -37
- package/src/entry-factory.service.ts +0 -35
- package/src/git-hub-adapter.service.ts +0 -205
- package/src/path-factory.service.ts +0 -21
- /package/dist/cjs/{addition.model.js → model/addition.model.js} +0 -0
- /package/dist/cjs/{deletion.model.js → model/deletion.model.js} +0 -0
- /package/dist/esm/{addition.model.js → model/addition.model.js} +0 -0
- /package/dist/esm/{deletion.model.js → model/deletion.model.js} +0 -0
- /package/dist/types/{addition.model.d.ts → model/addition.model.d.ts} +0 -0
- /package/dist/types/{deletion.model.d.ts → model/deletion.model.d.ts} +0 -0
- /package/src/{addition.model.ts → model/addition.model.ts} +0 -0
- /package/src/{deletion.model.ts → model/deletion.model.ts} +0 -0
|
@@ -1,205 +0,0 @@
|
|
|
1
|
-
import { GraphqlQueryFactoryService } from './graphql-query-factory.service'
|
|
2
|
-
import {
|
|
3
|
-
Commit,
|
|
4
|
-
CommitDraft,
|
|
5
|
-
Entry,
|
|
6
|
-
GitAdapter,
|
|
7
|
-
} from '@commitspark/git-adapter'
|
|
8
|
-
import { EntriesToActionsConverterService } from './entries-to-actions-converter.service'
|
|
9
|
-
import { AxiosCacheInstance, CacheAxiosResponse } from 'axios-cache-interceptor'
|
|
10
|
-
import { GitHubRepositoryOptions } from './index'
|
|
11
|
-
import { PathFactoryService } from './path-factory.service'
|
|
12
|
-
import { EntryFactoryService } from './entry-factory.service'
|
|
13
|
-
|
|
14
|
-
export class GitHubAdapterService implements GitAdapter {
|
|
15
|
-
static readonly QUERY_CACHE_SECONDS = 10 * 60
|
|
16
|
-
|
|
17
|
-
static readonly API_URL = 'https://api.github.com/graphql'
|
|
18
|
-
|
|
19
|
-
private gitRepositoryOptions: GitHubRepositoryOptions | undefined
|
|
20
|
-
|
|
21
|
-
constructor(
|
|
22
|
-
private readonly cachedHttpAdapter: AxiosCacheInstance,
|
|
23
|
-
private graphqlQueryFactory: GraphqlQueryFactoryService,
|
|
24
|
-
private entriesToActionsConverter: EntriesToActionsConverterService,
|
|
25
|
-
private pathFactory: PathFactoryService,
|
|
26
|
-
private entryFactory: EntryFactoryService,
|
|
27
|
-
) {}
|
|
28
|
-
|
|
29
|
-
public async setRepositoryOptions(
|
|
30
|
-
repositoryOptions: GitHubRepositoryOptions,
|
|
31
|
-
): Promise<void> {
|
|
32
|
-
this.gitRepositoryOptions = repositoryOptions
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
public async getEntries(commitHash: string): Promise<Entry[]> {
|
|
36
|
-
if (this.gitRepositoryOptions === undefined) {
|
|
37
|
-
throw new Error('Repository options must be set before reading')
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
const token = this.gitRepositoryOptions.accessToken
|
|
41
|
-
const pathEntryFolder = this.pathFactory.getPathEntryFolder(
|
|
42
|
-
this.gitRepositoryOptions,
|
|
43
|
-
)
|
|
44
|
-
|
|
45
|
-
const queryFilesContent = this.graphqlQueryFactory.createBlobsContentQuery()
|
|
46
|
-
const filesContentResponse = await this.cachedHttpAdapter.post(
|
|
47
|
-
GitHubAdapterService.API_URL,
|
|
48
|
-
{
|
|
49
|
-
query: queryFilesContent,
|
|
50
|
-
variables: {
|
|
51
|
-
repositoryOwner: this.gitRepositoryOptions.repositoryOwner,
|
|
52
|
-
repositoryName: this.gitRepositoryOptions.repositoryName,
|
|
53
|
-
expression: `${commitHash}:${pathEntryFolder}`,
|
|
54
|
-
},
|
|
55
|
-
},
|
|
56
|
-
{
|
|
57
|
-
headers: {
|
|
58
|
-
authorization: `Bearer ${token}`,
|
|
59
|
-
},
|
|
60
|
-
},
|
|
61
|
-
)
|
|
62
|
-
|
|
63
|
-
if (!filesContentResponse.data.data.repository?.object?.entries) {
|
|
64
|
-
return []
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
return this.entryFactory.createFromBlobsQueryResponseData(
|
|
68
|
-
filesContentResponse.data.data.repository.object.entries,
|
|
69
|
-
)
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
public async getSchema(commitHash: string): Promise<string> {
|
|
73
|
-
if (this.gitRepositoryOptions === undefined) {
|
|
74
|
-
throw new Error('Repository options must be set before reading')
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
const repositoryOwner = this.gitRepositoryOptions.repositoryOwner
|
|
78
|
-
const repositoryName = this.gitRepositoryOptions.repositoryName
|
|
79
|
-
const token = this.gitRepositoryOptions.accessToken
|
|
80
|
-
const schemaFilePath = this.pathFactory.getPathSchema(
|
|
81
|
-
this.gitRepositoryOptions,
|
|
82
|
-
)
|
|
83
|
-
|
|
84
|
-
const queryContent = this.graphqlQueryFactory.createBlobContentQuery()
|
|
85
|
-
const response = await this.cachedHttpAdapter.post(
|
|
86
|
-
GitHubAdapterService.API_URL,
|
|
87
|
-
{
|
|
88
|
-
query: queryContent,
|
|
89
|
-
variables: {
|
|
90
|
-
repositoryOwner: repositoryOwner,
|
|
91
|
-
repositoryName: repositoryName,
|
|
92
|
-
expression: `${commitHash}:${schemaFilePath}`,
|
|
93
|
-
},
|
|
94
|
-
},
|
|
95
|
-
{
|
|
96
|
-
headers: {
|
|
97
|
-
authorization: `Bearer ${token}`,
|
|
98
|
-
},
|
|
99
|
-
},
|
|
100
|
-
)
|
|
101
|
-
const schema = response.data?.data?.repository?.object?.text
|
|
102
|
-
|
|
103
|
-
if (!schema) {
|
|
104
|
-
throw new Error(
|
|
105
|
-
`"${schemaFilePath}" not found in Git repository "${repositoryOwner}/${repositoryName}" at commit "${commitHash}"`,
|
|
106
|
-
)
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
return schema
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
public async getLatestCommitHash(ref: string): Promise<string> {
|
|
113
|
-
if (this.gitRepositoryOptions === undefined) {
|
|
114
|
-
throw new Error('Repository options must be set before reading')
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
const token = this.gitRepositoryOptions.accessToken
|
|
118
|
-
|
|
119
|
-
const queryLatestCommit = this.graphqlQueryFactory.createLatestCommitQuery()
|
|
120
|
-
|
|
121
|
-
const response = await this.cachedHttpAdapter.post(
|
|
122
|
-
GitHubAdapterService.API_URL,
|
|
123
|
-
{
|
|
124
|
-
query: queryLatestCommit,
|
|
125
|
-
variables: {
|
|
126
|
-
repositoryOwner: this.gitRepositoryOptions.repositoryOwner,
|
|
127
|
-
repositoryName: this.gitRepositoryOptions.repositoryName,
|
|
128
|
-
ref: ref,
|
|
129
|
-
},
|
|
130
|
-
},
|
|
131
|
-
{
|
|
132
|
-
cache: false, // must not use cache, so we always get the branch's current head
|
|
133
|
-
headers: {
|
|
134
|
-
authorization: `Bearer ${token}`,
|
|
135
|
-
},
|
|
136
|
-
},
|
|
137
|
-
)
|
|
138
|
-
|
|
139
|
-
if (!response.data.data.repository) {
|
|
140
|
-
throw new Error(
|
|
141
|
-
`No repository found "${this.gitRepositoryOptions.repositoryOwner}/${this.gitRepositoryOptions.repositoryName}"`,
|
|
142
|
-
)
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
const lastCommit =
|
|
146
|
-
response.data.data.repository.ref?.target?.oid ??
|
|
147
|
-
response.data.data.repository.object?.oid ??
|
|
148
|
-
undefined
|
|
149
|
-
if (!lastCommit) {
|
|
150
|
-
throw new Error(`No commit found for ref "${ref}"`)
|
|
151
|
-
}
|
|
152
|
-
|
|
153
|
-
return lastCommit
|
|
154
|
-
}
|
|
155
|
-
|
|
156
|
-
public async createCommit(commitDraft: CommitDraft): Promise<Commit> {
|
|
157
|
-
if (this.gitRepositoryOptions === undefined) {
|
|
158
|
-
throw new Error('Repository options must be set before committing')
|
|
159
|
-
}
|
|
160
|
-
|
|
161
|
-
const token = this.gitRepositoryOptions.accessToken
|
|
162
|
-
const pathEntryFolder = this.pathFactory.getPathEntryFolder(
|
|
163
|
-
this.gitRepositoryOptions,
|
|
164
|
-
)
|
|
165
|
-
|
|
166
|
-
const { additions, deletions } = this.entriesToActionsConverter.convert(
|
|
167
|
-
commitDraft.entries,
|
|
168
|
-
pathEntryFolder,
|
|
169
|
-
)
|
|
170
|
-
|
|
171
|
-
const mutateCommit = this.graphqlQueryFactory.createCommitMutation()
|
|
172
|
-
const response: CacheAxiosResponse = await this.cachedHttpAdapter.post(
|
|
173
|
-
GitHubAdapterService.API_URL,
|
|
174
|
-
{
|
|
175
|
-
query: mutateCommit,
|
|
176
|
-
variables: {
|
|
177
|
-
repositoryNameWithOwner: `${this.gitRepositoryOptions.repositoryOwner}/${this.gitRepositoryOptions.repositoryName}`,
|
|
178
|
-
branchName: commitDraft.ref,
|
|
179
|
-
commitMessage: commitDraft.message ?? '-',
|
|
180
|
-
precedingCommitSha: commitDraft.parentSha,
|
|
181
|
-
additions: additions,
|
|
182
|
-
deletions: deletions,
|
|
183
|
-
},
|
|
184
|
-
},
|
|
185
|
-
{
|
|
186
|
-
cache: false,
|
|
187
|
-
headers: {
|
|
188
|
-
authorization: `Bearer ${token}`,
|
|
189
|
-
},
|
|
190
|
-
},
|
|
191
|
-
)
|
|
192
|
-
|
|
193
|
-
if (response.data.errors) {
|
|
194
|
-
throw new Error(JSON.stringify(response.data.errors))
|
|
195
|
-
}
|
|
196
|
-
|
|
197
|
-
const mutationResult = response.data.data.commitCreate
|
|
198
|
-
|
|
199
|
-
if (mutationResult.errors) {
|
|
200
|
-
throw new Error(JSON.stringify(mutationResult.errors))
|
|
201
|
-
}
|
|
202
|
-
|
|
203
|
-
return { ref: mutationResult.commit.oid }
|
|
204
|
-
}
|
|
205
|
-
}
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import { GitHubRepositoryOptions } from './index'
|
|
2
|
-
import { PATH_ENTRY_FOLDER, PATH_SCHEMA_FILE } from '@commitspark/git-adapter'
|
|
3
|
-
|
|
4
|
-
export class PathFactoryService {
|
|
5
|
-
public getPathSchema(gitRepositoryOptions: GitHubRepositoryOptions) {
|
|
6
|
-
return gitRepositoryOptions.pathSchemaFile ?? PATH_SCHEMA_FILE
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
public getPathEntryFolder(
|
|
10
|
-
gitRepositoryOptions: GitHubRepositoryOptions,
|
|
11
|
-
): string {
|
|
12
|
-
const pathEntryFolder =
|
|
13
|
-
gitRepositoryOptions.pathEntryFolder ?? PATH_ENTRY_FOLDER
|
|
14
|
-
|
|
15
|
-
if (pathEntryFolder.endsWith('/')) {
|
|
16
|
-
return pathEntryFolder.substring(0, pathEntryFolder.length - 1)
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
return pathEntryFolder
|
|
20
|
-
}
|
|
21
|
-
}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|