@commitspark/git-adapter-github 0.8.3 → 0.21.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.
Files changed (138) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/README.md +63 -2
  3. package/dist/cjs/{axios-cache-key-generator.js → axios/cache-key-generator.js} +4 -4
  4. package/dist/cjs/axios/cache-key-generator.js.map +1 -0
  5. package/dist/cjs/axios/cached-instance.js +19 -0
  6. package/dist/cjs/axios/cached-instance.js.map +1 -0
  7. package/dist/cjs/errors.js +58 -0
  8. package/dist/cjs/errors.js.map +1 -0
  9. package/dist/cjs/github-adapter.js +166 -0
  10. package/dist/cjs/github-adapter.js.map +1 -0
  11. package/dist/cjs/index.js +10 -6
  12. package/dist/cjs/index.js.map +1 -1
  13. package/dist/cjs/model/addition.model.js.map +1 -0
  14. package/dist/cjs/model/deletion.model.js.map +1 -0
  15. package/dist/cjs/util/entries-to-actions-converter.js +28 -0
  16. package/dist/cjs/util/entries-to-actions-converter.js.map +1 -0
  17. package/dist/cjs/util/entry-factory.js +20 -0
  18. package/dist/cjs/util/entry-factory.js.map +1 -0
  19. package/dist/cjs/{graphql-query-factory.service.js → util/graphql-query-factory.js} +16 -16
  20. package/dist/cjs/util/graphql-query-factory.js.map +1 -0
  21. package/dist/cjs/util/path-factory.js +18 -0
  22. package/dist/cjs/util/path-factory.js.map +1 -0
  23. package/dist/cjs/util/types.js +7 -0
  24. package/dist/cjs/util/types.js.map +1 -0
  25. package/dist/esm/{axios-cache-key-generator.js → axios/cache-key-generator.js} +2 -3
  26. package/dist/esm/axios/cache-key-generator.js.map +1 -0
  27. package/dist/esm/axios/cached-instance.js +12 -0
  28. package/dist/esm/axios/cached-instance.js.map +1 -0
  29. package/dist/esm/errors.js +51 -0
  30. package/dist/esm/errors.js.map +1 -0
  31. package/dist/esm/github-adapter.js +148 -0
  32. package/dist/esm/github-adapter.js.map +1 -0
  33. package/dist/esm/index.js +10 -4
  34. package/dist/esm/index.js.map +1 -1
  35. package/dist/esm/model/addition.model.js.map +1 -0
  36. package/dist/esm/model/deletion.model.js.map +1 -0
  37. package/dist/esm/util/entries-to-actions-converter.js +25 -0
  38. package/dist/esm/util/entries-to-actions-converter.js.map +1 -0
  39. package/dist/esm/util/entry-factory.js +17 -0
  40. package/dist/esm/util/entry-factory.js.map +1 -0
  41. package/{src/graphql-query-factory.service.ts → dist/esm/util/graphql-query-factory.js} +12 -16
  42. package/dist/esm/util/graphql-query-factory.js.map +1 -0
  43. package/dist/esm/util/path-factory.js +12 -0
  44. package/dist/esm/util/path-factory.js.map +1 -0
  45. package/dist/esm/util/types.js +4 -0
  46. package/dist/esm/util/types.js.map +1 -0
  47. package/dist/tsconfig.build.cjs.tsbuildinfo +1 -1
  48. package/dist/tsconfig.build.esm.tsbuildinfo +1 -1
  49. package/dist/tsconfig.build.types.tsbuildinfo +1 -1
  50. package/dist/types/axios/cache-key-generator.d.ts +3 -0
  51. package/dist/types/axios/cache-key-generator.d.ts.map +1 -0
  52. package/dist/types/axios/cached-instance.d.ts +4 -0
  53. package/dist/types/axios/cached-instance.d.ts.map +1 -0
  54. package/dist/types/errors.d.ts +4 -0
  55. package/dist/types/errors.d.ts.map +1 -0
  56. package/dist/types/github-adapter.d.ts +9 -0
  57. package/dist/types/github-adapter.d.ts.map +1 -0
  58. package/dist/types/index.d.ts +3 -4
  59. package/dist/types/index.d.ts.map +1 -1
  60. package/dist/types/model/addition.model.d.ts.map +1 -0
  61. package/dist/types/model/deletion.model.d.ts.map +1 -0
  62. package/dist/types/util/entries-to-actions-converter.d.ts +8 -0
  63. package/dist/types/util/entries-to-actions-converter.d.ts.map +1 -0
  64. package/dist/types/{entry-factory.service.d.ts → util/entry-factory.d.ts} +2 -4
  65. package/dist/types/util/entry-factory.d.ts.map +1 -0
  66. package/dist/types/util/graphql-query-factory.d.ts +5 -0
  67. package/dist/types/util/graphql-query-factory.d.ts.map +1 -0
  68. package/dist/types/util/path-factory.d.ts +4 -0
  69. package/dist/types/util/path-factory.d.ts.map +1 -0
  70. package/dist/types/util/types.d.ts +4 -0
  71. package/dist/types/util/types.d.ts.map +1 -0
  72. package/package.json +3 -3
  73. package/src/{axios-cache-key-generator.ts → axios/cache-key-generator.ts} +1 -3
  74. package/src/axios/cached-instance.ts +17 -0
  75. package/src/errors.ts +54 -0
  76. package/src/github-adapter.ts +250 -0
  77. package/src/index.ts +24 -7
  78. package/src/util/entries-to-actions-converter.ts +36 -0
  79. package/src/util/entry-factory.ts +34 -0
  80. package/{dist/esm/graphql-query-factory.service.js → src/util/graphql-query-factory.ts} +18 -18
  81. package/src/util/path-factory.ts +19 -0
  82. package/src/util/types.ts +3 -0
  83. package/dist/cjs/addition.model.js.map +0 -1
  84. package/dist/cjs/axios-cache-key-generator.js.map +0 -1
  85. package/dist/cjs/container.js +0 -25
  86. package/dist/cjs/container.js.map +0 -1
  87. package/dist/cjs/deletion.model.js.map +0 -1
  88. package/dist/cjs/entries-to-actions-converter.service.js +0 -31
  89. package/dist/cjs/entries-to-actions-converter.service.js.map +0 -1
  90. package/dist/cjs/entry-factory.service.js +0 -25
  91. package/dist/cjs/entry-factory.service.js.map +0 -1
  92. package/dist/cjs/git-hub-adapter.service.js +0 -154
  93. package/dist/cjs/git-hub-adapter.service.js.map +0 -1
  94. package/dist/cjs/graphql-query-factory.service.js.map +0 -1
  95. package/dist/cjs/path-factory.service.js +0 -20
  96. package/dist/cjs/path-factory.service.js.map +0 -1
  97. package/dist/esm/addition.model.js.map +0 -1
  98. package/dist/esm/axios-cache-key-generator.js.map +0 -1
  99. package/dist/esm/container.js +0 -19
  100. package/dist/esm/container.js.map +0 -1
  101. package/dist/esm/deletion.model.js.map +0 -1
  102. package/dist/esm/entries-to-actions-converter.service.js +0 -27
  103. package/dist/esm/entries-to-actions-converter.service.js.map +0 -1
  104. package/dist/esm/entry-factory.service.js +0 -21
  105. package/dist/esm/entry-factory.service.js.map +0 -1
  106. package/dist/esm/git-hub-adapter.service.js +0 -135
  107. package/dist/esm/git-hub-adapter.service.js.map +0 -1
  108. package/dist/esm/graphql-query-factory.service.js.map +0 -1
  109. package/dist/esm/path-factory.service.js +0 -14
  110. package/dist/esm/path-factory.service.js.map +0 -1
  111. package/dist/types/addition.model.d.ts.map +0 -1
  112. package/dist/types/axios-cache-key-generator.d.ts +0 -4
  113. package/dist/types/axios-cache-key-generator.d.ts.map +0 -1
  114. package/dist/types/container.d.ts +0 -3
  115. package/dist/types/container.d.ts.map +0 -1
  116. package/dist/types/deletion.model.d.ts.map +0 -1
  117. package/dist/types/entries-to-actions-converter.service.d.ts +0 -10
  118. package/dist/types/entries-to-actions-converter.service.d.ts.map +0 -1
  119. package/dist/types/entry-factory.service.d.ts.map +0 -1
  120. package/dist/types/git-hub-adapter.service.d.ts +0 -24
  121. package/dist/types/git-hub-adapter.service.d.ts.map +0 -1
  122. package/dist/types/graphql-query-factory.service.d.ts +0 -7
  123. package/dist/types/graphql-query-factory.service.d.ts.map +0 -1
  124. package/dist/types/path-factory.service.d.ts +0 -6
  125. package/dist/types/path-factory.service.d.ts.map +0 -1
  126. package/src/container.ts +0 -27
  127. package/src/entries-to-actions-converter.service.ts +0 -37
  128. package/src/entry-factory.service.ts +0 -35
  129. package/src/git-hub-adapter.service.ts +0 -205
  130. package/src/path-factory.service.ts +0 -21
  131. /package/dist/cjs/{addition.model.js → model/addition.model.js} +0 -0
  132. /package/dist/cjs/{deletion.model.js → model/deletion.model.js} +0 -0
  133. /package/dist/esm/{addition.model.js → model/addition.model.js} +0 -0
  134. /package/dist/esm/{deletion.model.js → model/deletion.model.js} +0 -0
  135. /package/dist/types/{addition.model.d.ts → model/addition.model.d.ts} +0 -0
  136. /package/dist/types/{deletion.model.d.ts → model/deletion.model.d.ts} +0 -0
  137. /package/src/{addition.model.ts → model/addition.model.ts} +0 -0
  138. /package/src/{deletion.model.ts → model/deletion.model.ts} +0 -0
@@ -0,0 +1,250 @@
1
+ import { AxiosCacheInstance, CacheAxiosResponse } from 'axios-cache-interceptor'
2
+ import {
3
+ Commit,
4
+ CommitDraft,
5
+ Entry,
6
+ ErrorCode,
7
+ GitAdapterError,
8
+ } from '@commitspark/git-adapter'
9
+ import { GitHubRepositoryOptions } from './index'
10
+ import {
11
+ createBlobContentQuery,
12
+ createBlobsContentQuery,
13
+ createCommitMutation,
14
+ createLatestCommitQuery,
15
+ } from './util/graphql-query-factory'
16
+ import { convertEntriesToActions } from './util/entries-to-actions-converter'
17
+ import { getPathEntryFolder, getPathSchema } from './util/path-factory'
18
+ import { createEntriesFromBlobsQueryResponseData } from './util/entry-factory'
19
+ import { handleHttpErrors, handleGraphQLErrors } from './errors'
20
+
21
+ export const API_URL = 'https://api.github.com/graphql'
22
+
23
+ export const getEntries = async (
24
+ gitRepositoryOptions: GitHubRepositoryOptions,
25
+ axiosCacheInstance: AxiosCacheInstance,
26
+ commitHash: string,
27
+ ): Promise<Entry[]> => {
28
+ const token = gitRepositoryOptions.accessToken
29
+ const pathEntryFolder = getPathEntryFolder(gitRepositoryOptions)
30
+
31
+ const queryFilesContent = createBlobsContentQuery()
32
+
33
+ let filesContentResponse: CacheAxiosResponse | undefined
34
+ try {
35
+ filesContentResponse = await axiosCacheInstance.post(
36
+ API_URL,
37
+ {
38
+ query: queryFilesContent,
39
+ variables: {
40
+ repositoryOwner: gitRepositoryOptions.repositoryOwner,
41
+ repositoryName: gitRepositoryOptions.repositoryName,
42
+ expression: `${commitHash}:${pathEntryFolder}`,
43
+ },
44
+ },
45
+ {
46
+ headers: {
47
+ authorization: `Bearer ${token}`,
48
+ },
49
+ },
50
+ )
51
+ } catch (error) {
52
+ handleHttpErrors(error)
53
+ }
54
+
55
+ if (!filesContentResponse) {
56
+ throw new GitAdapterError(
57
+ ErrorCode.INTERNAL_ERROR,
58
+ 'Failed to fetch entries',
59
+ )
60
+ }
61
+
62
+ handleGraphQLErrors(filesContentResponse)
63
+
64
+ if (!filesContentResponse.data.data.repository?.object?.entries) {
65
+ return []
66
+ }
67
+
68
+ return createEntriesFromBlobsQueryResponseData(
69
+ filesContentResponse.data.data.repository.object.entries,
70
+ )
71
+ }
72
+
73
+ export const getSchema = async (
74
+ gitRepositoryOptions: GitHubRepositoryOptions,
75
+ axiosCacheInstance: AxiosCacheInstance,
76
+ commitHash: string,
77
+ ): Promise<string> => {
78
+ const repositoryOwner = gitRepositoryOptions.repositoryOwner
79
+ const repositoryName = gitRepositoryOptions.repositoryName
80
+ const token = gitRepositoryOptions.accessToken
81
+ const schemaFilePath = getPathSchema(gitRepositoryOptions)
82
+
83
+ const queryContent = createBlobContentQuery()
84
+
85
+ let response: CacheAxiosResponse | undefined
86
+ try {
87
+ response = await axiosCacheInstance.post(
88
+ API_URL,
89
+ {
90
+ query: queryContent,
91
+ variables: {
92
+ repositoryOwner: repositoryOwner,
93
+ repositoryName: repositoryName,
94
+ expression: `${commitHash}:${schemaFilePath}`,
95
+ },
96
+ },
97
+ {
98
+ headers: {
99
+ authorization: `Bearer ${token}`,
100
+ },
101
+ },
102
+ )
103
+ } catch (error) {
104
+ handleHttpErrors(error)
105
+ }
106
+
107
+ if (!response) {
108
+ throw new GitAdapterError(
109
+ ErrorCode.INTERNAL_ERROR,
110
+ `Failed to fetch schema`,
111
+ )
112
+ }
113
+
114
+ handleGraphQLErrors(response)
115
+
116
+ const schema = response.data?.data?.repository?.object?.text
117
+
118
+ if (!schema) {
119
+ throw new GitAdapterError(
120
+ ErrorCode.NOT_FOUND,
121
+ `"${schemaFilePath}" not found in Git repository "${repositoryOwner}/${repositoryName}" at commit "${commitHash}"`,
122
+ )
123
+ }
124
+
125
+ return schema
126
+ }
127
+
128
+ export const getLatestCommitHash = async (
129
+ gitRepositoryOptions: GitHubRepositoryOptions,
130
+ axiosCacheInstance: AxiosCacheInstance,
131
+ ref: string,
132
+ ): Promise<string> => {
133
+ const token = gitRepositoryOptions.accessToken
134
+
135
+ const queryLatestCommit = createLatestCommitQuery()
136
+
137
+ let response: CacheAxiosResponse | undefined
138
+ try {
139
+ response = await axiosCacheInstance.post(
140
+ API_URL,
141
+ {
142
+ query: queryLatestCommit,
143
+ variables: {
144
+ repositoryOwner: gitRepositoryOptions.repositoryOwner,
145
+ repositoryName: gitRepositoryOptions.repositoryName,
146
+ ref: ref,
147
+ },
148
+ },
149
+ {
150
+ cache: false, // must not use cache, so we always get the branch's current head
151
+ headers: {
152
+ authorization: `Bearer ${token}`,
153
+ },
154
+ },
155
+ )
156
+ } catch (error) {
157
+ handleHttpErrors(error)
158
+ }
159
+
160
+ if (!response) {
161
+ throw new GitAdapterError(
162
+ ErrorCode.INTERNAL_ERROR,
163
+ 'Failed to fetch latest commit',
164
+ )
165
+ }
166
+ handleGraphQLErrors(response)
167
+
168
+ if (!response.data.data.repository) {
169
+ throw new GitAdapterError(
170
+ ErrorCode.NOT_FOUND,
171
+ `No repository found "${gitRepositoryOptions.repositoryOwner}/${gitRepositoryOptions.repositoryName}"`,
172
+ )
173
+ }
174
+
175
+ const lastCommit =
176
+ response.data.data.repository.ref?.target?.oid ??
177
+ response.data.data.repository.object?.oid ??
178
+ undefined
179
+ if (!lastCommit) {
180
+ throw new GitAdapterError(
181
+ ErrorCode.NOT_FOUND,
182
+ `No commit found for ref "${ref}"`,
183
+ )
184
+ }
185
+
186
+ return lastCommit
187
+ }
188
+
189
+ export const createCommit = async (
190
+ gitRepositoryOptions: GitHubRepositoryOptions,
191
+ axiosCacheInstance: AxiosCacheInstance,
192
+ commitDraft: CommitDraft,
193
+ ): Promise<Commit> => {
194
+ const token = gitRepositoryOptions.accessToken
195
+ const pathEntryFolder = getPathEntryFolder(gitRepositoryOptions)
196
+
197
+ const { additions, deletions } = convertEntriesToActions(
198
+ commitDraft.entries,
199
+ pathEntryFolder,
200
+ )
201
+
202
+ const mutateCommit = createCommitMutation()
203
+
204
+ let response: CacheAxiosResponse | undefined
205
+ try {
206
+ response = await axiosCacheInstance.post(
207
+ API_URL,
208
+ {
209
+ query: mutateCommit,
210
+ variables: {
211
+ repositoryNameWithOwner: `${gitRepositoryOptions.repositoryOwner}/${gitRepositoryOptions.repositoryName}`,
212
+ branchName: commitDraft.ref,
213
+ commitMessage: commitDraft.message ?? '-',
214
+ precedingCommitSha: commitDraft.parentSha,
215
+ additions: additions,
216
+ deletions: deletions,
217
+ },
218
+ },
219
+ {
220
+ cache: false,
221
+ headers: {
222
+ authorization: `Bearer ${token}`,
223
+ },
224
+ },
225
+ )
226
+ } catch (error) {
227
+ handleHttpErrors(error)
228
+ }
229
+
230
+ if (!response) {
231
+ throw new GitAdapterError(
232
+ ErrorCode.INTERNAL_ERROR,
233
+ `Failed to create commit`,
234
+ )
235
+ }
236
+
237
+ handleGraphQLErrors(response)
238
+
239
+ const mutationResult = response.data.data.commitCreate
240
+
241
+ if (mutationResult.errors) {
242
+ const errorMessage = JSON.stringify(mutationResult.errors)
243
+ throw new GitAdapterError(
244
+ ErrorCode.BAD_REQUEST,
245
+ `Failed to create commit: ${errorMessage}`,
246
+ )
247
+ }
248
+
249
+ return { ref: mutationResult.commit.oid }
250
+ }
package/src/index.ts CHANGED
@@ -1,9 +1,13 @@
1
- import { GitAdapter, GitRepositoryOptions } from '@commitspark/git-adapter'
2
- import { gitHubAdapterService } from './container'
1
+ import { GitAdapter, CommitDraft } from '@commitspark/git-adapter'
2
+ import { createAxiosCachedInstance } from './axios/cached-instance'
3
+ import {
4
+ createCommit,
5
+ getEntries,
6
+ getLatestCommitHash,
7
+ getSchema,
8
+ } from './github-adapter'
3
9
 
4
- export { GitHubAdapterService } from './git-hub-adapter.service'
5
-
6
- export interface GitHubRepositoryOptions extends GitRepositoryOptions {
10
+ export interface GitHubRepositoryOptions {
7
11
  repositoryOwner: string
8
12
  repositoryName: string
9
13
  accessToken: string
@@ -11,6 +15,19 @@ export interface GitHubRepositoryOptions extends GitRepositoryOptions {
11
15
  pathEntryFolder?: string
12
16
  }
13
17
 
14
- export function createAdapter(): GitAdapter {
15
- return gitHubAdapterService
18
+ export function createAdapter(
19
+ gitRepositoryOptions: GitHubRepositoryOptions,
20
+ ): GitAdapter {
21
+ const axiosCacheInstance = createAxiosCachedInstance()
22
+
23
+ return {
24
+ getEntries: (commitHash: string) =>
25
+ getEntries(gitRepositoryOptions, axiosCacheInstance, commitHash),
26
+ getSchema: (commitHash: string) =>
27
+ getSchema(gitRepositoryOptions, axiosCacheInstance, commitHash),
28
+ getLatestCommitHash: (ref: string) =>
29
+ getLatestCommitHash(gitRepositoryOptions, axiosCacheInstance, ref),
30
+ createCommit: (commitDraft: CommitDraft) =>
31
+ createCommit(gitRepositoryOptions, axiosCacheInstance, commitDraft),
32
+ }
16
33
  }
@@ -0,0 +1,36 @@
1
+ import { EntryDraft } from '@commitspark/git-adapter'
2
+ import { stringify } from 'yaml'
3
+ import { AdditionModel } from '../model/addition.model'
4
+ import { DeletionModel } from '../model/deletion.model'
5
+ import { ENTRY_EXTENSION } from './types'
6
+
7
+ export function convertEntriesToActions(
8
+ entryDrafts: EntryDraft[],
9
+ pathEntryFolder: string,
10
+ ): {
11
+ additions: AdditionModel[]
12
+ deletions: DeletionModel[]
13
+ } {
14
+ const additions: AdditionModel[] = []
15
+ const deletions: DeletionModel[] = []
16
+ entryDrafts.forEach((entryDraft) => {
17
+ const entryPath = `${pathEntryFolder}/${entryDraft.id}${ENTRY_EXTENSION}`
18
+ if (entryDraft.deletion) {
19
+ deletions.push(new DeletionModel(entryPath))
20
+ } else {
21
+ additions.push(
22
+ new AdditionModel(
23
+ entryPath,
24
+ stringify({
25
+ metadata: entryDraft.metadata,
26
+ data: entryDraft.data,
27
+ }),
28
+ ),
29
+ )
30
+ }
31
+ })
32
+ return {
33
+ additions,
34
+ deletions,
35
+ }
36
+ }
@@ -0,0 +1,34 @@
1
+ import { parse } from 'yaml'
2
+ import { Entry } from '@commitspark/git-adapter'
3
+ import { ENTRY_EXTENSION } from './types'
4
+
5
+ interface TreeEntry {
6
+ name: string
7
+ object: {
8
+ __typename: string
9
+ text: string
10
+ }
11
+ }
12
+
13
+ export function createEntriesFromBlobsQueryResponseData(
14
+ entries: TreeEntry[],
15
+ ): Entry[] {
16
+ return entries
17
+ .filter(
18
+ (entry: TreeEntry) =>
19
+ entry.name.endsWith(ENTRY_EXTENSION) &&
20
+ entry.object['__typename'] === 'Blob',
21
+ )
22
+ .map((entry: TreeEntry) => {
23
+ const fileContent = parse(entry.object.text)
24
+ const id = entry.name.substring(
25
+ 0,
26
+ entry.name.length - ENTRY_EXTENSION.length,
27
+ )
28
+ return {
29
+ id: id,
30
+ metadata: fileContent.metadata,
31
+ data: fileContent.data,
32
+ } as Entry
33
+ })
34
+ }
@@ -1,6 +1,5 @@
1
- export class GraphqlQueryFactoryService {
2
- createBlobsContentQuery() {
3
- return `
1
+ export function createBlobsContentQuery(): string {
2
+ return `
4
3
  query ($repositoryOwner: String!, $repositoryName: String!, $expression: String!) {
5
4
  repository(owner: $repositoryOwner, name: $repositoryName) {
6
5
  object(expression: $expression) {
@@ -18,10 +17,11 @@ export class GraphqlQueryFactoryService {
18
17
  }
19
18
  }
20
19
  }
21
- `;
22
- }
23
- createBlobContentQuery() {
24
- return `
20
+ `
21
+ }
22
+
23
+ export function createBlobContentQuery(): string {
24
+ return `
25
25
  query ($repositoryOwner: String!, $repositoryName: String!, $expression: String!) {
26
26
  repository(owner: $repositoryOwner, name: $repositoryName) {
27
27
  object(expression: $expression) {
@@ -31,10 +31,11 @@ export class GraphqlQueryFactoryService {
31
31
  }
32
32
  }
33
33
  }
34
- `;
35
- }
36
- createCommitMutation() {
37
- return `
34
+ `
35
+ }
36
+
37
+ export function createCommitMutation(): string {
38
+ return `
38
39
  mutation (
39
40
  $repositoryNameWithOwner: String!,
40
41
  $branchName: String!,
@@ -63,10 +64,11 @@ export class GraphqlQueryFactoryService {
63
64
  }
64
65
  }
65
66
  }
66
- `;
67
- }
68
- createLatestCommitQuery() {
69
- return `
67
+ `
68
+ }
69
+
70
+ export function createLatestCommitQuery(): string {
71
+ return `
70
72
  query ($repositoryOwner: String!, $repositoryName: String!, $ref: String!) {
71
73
  repository(owner: $repositoryOwner, name: $repositoryName) {
72
74
  ref(qualifiedName: $ref) {
@@ -79,7 +81,5 @@ export class GraphqlQueryFactoryService {
79
81
  }
80
82
  }
81
83
  }
82
- `;
83
- }
84
+ `
84
85
  }
85
- //# sourceMappingURL=graphql-query-factory.service.js.map
@@ -0,0 +1,19 @@
1
+ import { GitHubRepositoryOptions } from '../index'
2
+ import { PATH_ENTRY_FOLDER, PATH_SCHEMA_FILE } from './types'
3
+
4
+ export function getPathSchema(gitRepositoryOptions: GitHubRepositoryOptions) {
5
+ return gitRepositoryOptions.pathSchemaFile ?? PATH_SCHEMA_FILE
6
+ }
7
+
8
+ export function getPathEntryFolder(
9
+ gitRepositoryOptions: GitHubRepositoryOptions,
10
+ ): string {
11
+ const pathEntryFolder =
12
+ gitRepositoryOptions.pathEntryFolder ?? PATH_ENTRY_FOLDER
13
+
14
+ if (pathEntryFolder.endsWith('/')) {
15
+ return pathEntryFolder.substring(0, pathEntryFolder.length - 1)
16
+ }
17
+
18
+ return pathEntryFolder
19
+ }
@@ -0,0 +1,3 @@
1
+ export const ENTRY_EXTENSION = '.yaml'
2
+ export const PATH_SCHEMA_FILE = 'commitspark/schema/schema.graphql'
3
+ export const PATH_ENTRY_FOLDER = 'commitspark/entries/'
@@ -1 +0,0 @@
1
- {"version":3,"file":"addition.model.js","sourceRoot":"","sources":["../../src/addition.model.ts"],"names":[],"mappings":";;;AAAA,MAAa,aAAa;IAExB,YACW,IAAY,EACrB,QAAgB;QADP,SAAI,GAAJ,IAAI,CAAQ;QAGrB,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA;IAClE,CAAC;CACF;AARD,sCAQC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"axios-cache-key-generator.js","sourceRoot":"","sources":["../../src/axios-cache-key-generator.ts"],"names":[],"mappings":";;;AAEA,MAAM,sBAAsB,GAAG,CAC7B,OAAiC,EACjC,EAAE;;IACF,MAAM,aAAa,GAAG,MAAA,OAAO,CAAC,OAAO,0CAAE,aAAa,CAAA;IACpD,MAAM,GAAG,GAA2C;QAClD,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,uCAAuC;KAC5D,CAAA;IAED,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;QAChC,uGAAuG;QACvG,+EAA+E;QAC/E,GAAG,CAAC,MAAM,CAAC,GAAG,aAAa,CAAA;IAC7B,CAAC;IAED,OAAO,GAAG,CAAA;AACZ,CAAC,CAAA;AAEQ,wDAAsB"}
@@ -1,25 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.gitHubAdapterService = void 0;
7
- const entries_to_actions_converter_service_1 = require("./entries-to-actions-converter.service");
8
- const git_hub_adapter_service_1 = require("./git-hub-adapter.service");
9
- const graphql_query_factory_service_1 = require("./graphql-query-factory.service");
10
- const axios_1 = __importDefault(require("axios"));
11
- const axios_cache_interceptor_1 = require("axios-cache-interceptor");
12
- const path_factory_service_1 = require("./path-factory.service");
13
- const entry_factory_service_1 = require("./entry-factory.service");
14
- const axios_cache_key_generator_1 = require("./axios-cache-key-generator");
15
- const cachedHttpAdapter = (0, axios_cache_interceptor_1.setupCache)(axios_1.default.create(), {
16
- ttl: git_hub_adapter_service_1.GitHubAdapterService.QUERY_CACHE_SECONDS * 1000, // milliseconds
17
- methods: ['get', 'post'],
18
- generateKey: (0, axios_cache_interceptor_1.buildKeyGenerator)(axios_cache_key_generator_1.axiosCacheKeyGenerator),
19
- });
20
- const graphqlQueryFactoryService = new graphql_query_factory_service_1.GraphqlQueryFactoryService();
21
- const entriesToActionsConverterService = new entries_to_actions_converter_service_1.EntriesToActionsConverterService();
22
- const pathFactoryService = new path_factory_service_1.PathFactoryService();
23
- const entryFactoryService = new entry_factory_service_1.EntryFactoryService();
24
- exports.gitHubAdapterService = new git_hub_adapter_service_1.GitHubAdapterService(cachedHttpAdapter, graphqlQueryFactoryService, entriesToActionsConverterService, pathFactoryService, entryFactoryService);
25
- //# sourceMappingURL=container.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"container.js","sourceRoot":"","sources":["../../src/container.ts"],"names":[],"mappings":";;;;;;AAAA,iGAAyF;AACzF,uEAAgE;AAChE,mFAA4E;AAC5E,kDAAyB;AACzB,qEAAuE;AACvE,iEAA2D;AAC3D,mEAA6D;AAC7D,2EAAoE;AAEpE,MAAM,iBAAiB,GAAG,IAAA,oCAAU,EAAC,eAAK,CAAC,MAAM,EAAE,EAAE;IACnD,GAAG,EAAE,8CAAoB,CAAC,mBAAmB,GAAG,IAAI,EAAE,eAAe;IACrE,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,IAAA,2CAAiB,EAAC,kDAAsB,CAAC;CACvD,CAAC,CAAA;AAEF,MAAM,0BAA0B,GAAG,IAAI,0DAA0B,EAAE,CAAA;AACnE,MAAM,gCAAgC,GAAG,IAAI,uEAAgC,EAAE,CAAA;AAC/E,MAAM,kBAAkB,GAAG,IAAI,yCAAkB,EAAE,CAAA;AACnD,MAAM,mBAAmB,GAAG,IAAI,2CAAmB,EAAE,CAAA;AAExC,QAAA,oBAAoB,GAAG,IAAI,8CAAoB,CAC1D,iBAAiB,EACjB,0BAA0B,EAC1B,gCAAgC,EAChC,kBAAkB,EAClB,mBAAmB,CACpB,CAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"deletion.model.js","sourceRoot":"","sources":["../../src/deletion.model.ts"],"names":[],"mappings":";;;AAAA,MAAa,aAAa;IACxB,YAAqB,IAAY;QAAZ,SAAI,GAAJ,IAAI,CAAQ;IAAG,CAAC;CACtC;AAFD,sCAEC"}
@@ -1,31 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.EntriesToActionsConverterService = void 0;
4
- const git_adapter_1 = require("@commitspark/git-adapter");
5
- const yaml_1 = require("yaml");
6
- const addition_model_1 = require("./addition.model");
7
- const deletion_model_1 = require("./deletion.model");
8
- class EntriesToActionsConverterService {
9
- convert(entryDrafts, pathEntryFolder) {
10
- const additions = [];
11
- const deletions = [];
12
- entryDrafts.forEach((entryDraft) => {
13
- const entryPath = `${pathEntryFolder}/${entryDraft.id}${git_adapter_1.ENTRY_EXTENSION}`;
14
- if (entryDraft.deletion) {
15
- deletions.push(new deletion_model_1.DeletionModel(entryPath));
16
- }
17
- else {
18
- additions.push(new addition_model_1.AdditionModel(entryPath, (0, yaml_1.stringify)({
19
- metadata: entryDraft.metadata,
20
- data: entryDraft.data,
21
- })));
22
- }
23
- });
24
- return {
25
- additions,
26
- deletions,
27
- };
28
- }
29
- }
30
- exports.EntriesToActionsConverterService = EntriesToActionsConverterService;
31
- //# sourceMappingURL=entries-to-actions-converter.service.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"entries-to-actions-converter.service.js","sourceRoot":"","sources":["../../src/entries-to-actions-converter.service.ts"],"names":[],"mappings":";;;AAAA,0DAAsE;AACtE,+BAAgC;AAChC,qDAAgD;AAChD,qDAAgD;AAEhD,MAAa,gCAAgC;IAC3C,OAAO,CACL,WAAyB,EACzB,eAAuB;QAKvB,MAAM,SAAS,GAAoB,EAAE,CAAA;QACrC,MAAM,SAAS,GAAoB,EAAE,CAAA;QACrC,WAAW,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,EAAE;YACjC,MAAM,SAAS,GAAG,GAAG,eAAe,IAAI,UAAU,CAAC,EAAE,GAAG,6BAAe,EAAE,CAAA;YACzE,IAAI,UAAU,CAAC,QAAQ,EAAE,CAAC;gBACxB,SAAS,CAAC,IAAI,CAAC,IAAI,8BAAa,CAAC,SAAS,CAAC,CAAC,CAAA;YAC9C,CAAC;iBAAM,CAAC;gBACN,SAAS,CAAC,IAAI,CACZ,IAAI,8BAAa,CACf,SAAS,EACT,IAAA,gBAAS,EAAC;oBACR,QAAQ,EAAE,UAAU,CAAC,QAAQ;oBAC7B,IAAI,EAAE,UAAU,CAAC,IAAI;iBACtB,CAAC,CACH,CACF,CAAA;YACH,CAAC;QACH,CAAC,CAAC,CAAA;QACF,OAAO;YACL,SAAS;YACT,SAAS;SACV,CAAA;IACH,CAAC;CACF;AA/BD,4EA+BC"}
@@ -1,25 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.EntryFactoryService = void 0;
4
- const yaml_1 = require("yaml");
5
- const git_adapter_1 = require("@commitspark/git-adapter");
6
- class EntryFactoryService {
7
- createFromBlobsQueryResponseData(entries) {
8
- {
9
- return entries
10
- .filter((entry) => entry.name.endsWith(git_adapter_1.ENTRY_EXTENSION) &&
11
- entry.object['__typename'] === 'Blob')
12
- .map((entry) => {
13
- const fileContent = (0, yaml_1.parse)(entry.object.text);
14
- const id = entry.name.substring(0, entry.name.length - git_adapter_1.ENTRY_EXTENSION.length);
15
- return {
16
- id: id,
17
- metadata: fileContent.metadata,
18
- data: fileContent.data,
19
- };
20
- });
21
- }
22
- }
23
- }
24
- exports.EntryFactoryService = EntryFactoryService;
25
- //# sourceMappingURL=entry-factory.service.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"entry-factory.service.js","sourceRoot":"","sources":["../../src/entry-factory.service.ts"],"names":[],"mappings":";;;AAAA,+BAA4B;AAC5B,0DAAiE;AAUjE,MAAa,mBAAmB;IACvB,gCAAgC,CAAC,OAAoB;QAC1D,CAAC;YACC,OAAO,OAAO;iBACX,MAAM,CACL,CAAC,KAAgB,EAAE,EAAE,CACnB,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,6BAAe,CAAC;gBACpC,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,MAAM,CACxC;iBACA,GAAG,CAAC,CAAC,KAAgB,EAAE,EAAE;gBACxB,MAAM,WAAW,GAAG,IAAA,YAAK,EAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;gBAC5C,MAAM,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,CAC7B,CAAC,EACD,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,6BAAe,CAAC,MAAM,CAC3C,CAAA;gBACD,OAAO;oBACL,EAAE,EAAE,EAAE;oBACN,QAAQ,EAAE,WAAW,CAAC,QAAQ;oBAC9B,IAAI,EAAE,WAAW,CAAC,IAAI;iBACd,CAAA;YACZ,CAAC,CAAC,CAAA;QACN,CAAC;IACH,CAAC;CACF;AAvBD,kDAuBC"}