github-repository-provider 7.30.20 → 7.30.21
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/package.json +1 -1
- package/src/github-branch.mjs +12 -39
- package/src/github-repository.mjs +37 -0
package/package.json
CHANGED
package/src/github-branch.mjs
CHANGED
|
@@ -11,7 +11,6 @@ import {
|
|
|
11
11
|
*/
|
|
12
12
|
export class GithubBranch extends Branch {
|
|
13
13
|
#entries = new Map();
|
|
14
|
-
#commits = new Map();
|
|
15
14
|
|
|
16
15
|
/**
|
|
17
16
|
* Writes content into the branch
|
|
@@ -44,10 +43,6 @@ export class GithubBranch extends Branch {
|
|
|
44
43
|
* @param {Object} options
|
|
45
44
|
*/
|
|
46
45
|
async commit(message, entries, options) {
|
|
47
|
-
const updates = await Promise.all(
|
|
48
|
-
entries.map(entry => this.writeEntry(entry))
|
|
49
|
-
);
|
|
50
|
-
|
|
51
46
|
/*
|
|
52
47
|
* 1st. commit on empty tree
|
|
53
48
|
* https://stackoverflow.com/questions/9765453/is-gits-semi-secret-empty-tree-object-reliable-and-why-is-there-not-a-symbolic/9766506#9766506
|
|
@@ -56,42 +51,20 @@ export class GithubBranch extends Branch {
|
|
|
56
51
|
* sha256:6ef19b41225c5369f1c104d45d8d85efa9b057b53b14b4b9b939dd74decc5321
|
|
57
52
|
*/
|
|
58
53
|
|
|
59
|
-
const
|
|
60
|
-
|
|
61
|
-
const tree = await this.owner.addTree(updates, commit.tree.sha);
|
|
62
|
-
|
|
63
|
-
let r = await this.provider.fetchJSON(`${this.api}/git/commits`, {
|
|
64
|
-
method: "POST",
|
|
65
|
-
body: JSON.stringify({
|
|
66
|
-
message,
|
|
67
|
-
tree: tree.sha,
|
|
68
|
-
parents: [shaLatestCommit]
|
|
69
|
-
})
|
|
70
|
-
});
|
|
71
|
-
|
|
72
|
-
this.#commits.set(r.json.sha, r.json);
|
|
73
|
-
|
|
74
|
-
return this.owner.setRefId(this.ref, r.json.sha, options);
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
/**
|
|
78
|
-
* {@link https://developer.github.com/v3/git/commits/#get-a-commit}
|
|
79
|
-
* @param {string} sha
|
|
80
|
-
* @return {Object} response
|
|
81
|
-
*/
|
|
82
|
-
async commitForSha(sha) {
|
|
83
|
-
const commit = this.#commits.get(sha);
|
|
84
|
-
if (commit) {
|
|
85
|
-
return commit;
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
const { json } = await this.provider.fetchJSON(
|
|
89
|
-
`${this.api}/git/commits/${sha}`
|
|
54
|
+
const updates = await Promise.all(
|
|
55
|
+
entries.map(entry => this.writeEntry(entry))
|
|
90
56
|
);
|
|
91
57
|
|
|
92
|
-
this
|
|
58
|
+
const shaLatestCommit = await this.refId();
|
|
59
|
+
const latestCommit = await this.owner.commitForSha(shaLatestCommit);
|
|
60
|
+
const tree = await this.owner.addTree(updates, latestCommit.tree.sha);
|
|
61
|
+
const commit = await this.owner.addCommit(
|
|
62
|
+
tree.sha,
|
|
63
|
+
[shaLatestCommit],
|
|
64
|
+
message
|
|
65
|
+
);
|
|
93
66
|
|
|
94
|
-
return
|
|
67
|
+
return this.owner.setRefId(this.ref, commit.sha, options);
|
|
95
68
|
}
|
|
96
69
|
|
|
97
70
|
/**
|
|
@@ -126,7 +99,7 @@ export class GithubBranch extends Branch {
|
|
|
126
99
|
}
|
|
127
100
|
|
|
128
101
|
async *entries(patterns) {
|
|
129
|
-
const commit = await this.commitForSha(await this.refId());
|
|
102
|
+
const commit = await this.owner.commitForSha(await this.refId());
|
|
130
103
|
|
|
131
104
|
for (const entry of matcher(
|
|
132
105
|
await this.owner.tree(commit.tree.sha),
|
|
@@ -14,6 +14,7 @@ const conflictErrorActions = {
|
|
|
14
14
|
export class GithubRepository extends Repository {
|
|
15
15
|
#refs = new Map();
|
|
16
16
|
#trees = new Map();
|
|
17
|
+
#commits = new Map();
|
|
17
18
|
|
|
18
19
|
static get attributeMapping() {
|
|
19
20
|
return {
|
|
@@ -62,6 +63,8 @@ export class GithubRepository extends Repository {
|
|
|
62
63
|
const { response, json } = await this.provider.fetchJSON(next);
|
|
63
64
|
|
|
64
65
|
for (const c of json) {
|
|
66
|
+
this.#commits.set(c.sha, json);
|
|
67
|
+
|
|
65
68
|
yield {
|
|
66
69
|
sha: c.sha,
|
|
67
70
|
message: c.message,
|
|
@@ -73,6 +76,40 @@ export class GithubRepository extends Repository {
|
|
|
73
76
|
} while (next);
|
|
74
77
|
}
|
|
75
78
|
|
|
79
|
+
async addCommit(tree, parents, message) {
|
|
80
|
+
let r = await this.provider.fetchJSON(`${this.api}/git/commits`, {
|
|
81
|
+
method: "POST",
|
|
82
|
+
body: JSON.stringify({
|
|
83
|
+
tree,
|
|
84
|
+
parents,
|
|
85
|
+
message
|
|
86
|
+
})
|
|
87
|
+
});
|
|
88
|
+
|
|
89
|
+
this.#commits.set(r.json.sha, r.json);
|
|
90
|
+
return r.json;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
/**
|
|
94
|
+
* {@link https://developer.github.com/v3/git/commits/#get-a-commit}
|
|
95
|
+
* @param {string} sha
|
|
96
|
+
* @return {Object} response
|
|
97
|
+
*/
|
|
98
|
+
async commitForSha(sha) {
|
|
99
|
+
const commit = this.#commits.get(sha);
|
|
100
|
+
if (commit) {
|
|
101
|
+
return commit;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
const { json } = await this.provider.fetchJSON(
|
|
105
|
+
`${this.api}/git/commits/${sha}`
|
|
106
|
+
);
|
|
107
|
+
|
|
108
|
+
this.#commits.set(sha, json);
|
|
109
|
+
|
|
110
|
+
return json;
|
|
111
|
+
}
|
|
112
|
+
|
|
76
113
|
/**
|
|
77
114
|
* @see https://developer.github.com/v3/git/trees/
|
|
78
115
|
* @param {string} sha
|