github-repository-provider 9.2.30 → 9.3.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/README.md CHANGED
@@ -1,6 +1,5 @@
1
1
  [![npm](https://img.shields.io/npm/v/github-repository-provider.svg)](https://www.npmjs.com/package/github-repository-provider)
2
2
  [![License](https://img.shields.io/badge/License-0BSD-blue.svg)](https://spdx.org/licenses/0BSD.html)
3
- [![Typed with TypeScript](https://flat.badgen.net/badge/icon/Typed?icon=typescript\&label\&labelColor=blue\&color=555555)](https://typescriptlang.org)
4
3
  [![bundlejs](https://deno.bundlejs.com/?q=github-repository-provider\&badge=detailed)](https://bundlejs.com/?q=github-repository-provider)
5
4
  [![downloads](http://img.shields.io/npm/dm/github-repository-provider.svg?style=flat-square)](https://npmjs.org/package/github-repository-provider)
6
5
  [![GitHub Issues](https://img.shields.io/github/issues/arlac77/github-repository-provider.svg?style=flat-square)](https://github.com/arlac77/github-repository-provider/issues)
package/package.json CHANGED
@@ -1,10 +1,11 @@
1
1
  {
2
2
  "name": "github-repository-provider",
3
- "version": "9.2.30",
3
+ "version": "9.3.0",
4
4
  "publishConfig": {
5
5
  "access": "public",
6
6
  "provenance": true
7
7
  },
8
+ "packageManager": "npm@11.6.0+sha512.77f3fb0dbbd881835d7bd1217deabdf7ed77fc4ec4f363df64fc3cb986404abf6c437661041080f5c5d225103508e7c9ea30cb2742b7e942675d05a10af2d7b9",
8
9
  "exports": {
9
10
  ".": {
10
11
  "default": "./src/github-provider.mjs"
@@ -32,26 +33,26 @@
32
33
  "lint:docs": "documentation lint ./src**/*.mjs"
33
34
  },
34
35
  "dependencies": {
35
- "content-entry": "^14.2.4",
36
+ "content-entry": "^14.2.5",
36
37
  "fetch-link-util": "^1.1.3",
37
38
  "fetch-rate-limit-util": "^4.5.4",
38
39
  "matching-iterator": "^2.1.4",
39
40
  "one-time-execution-method": "^3.1.3",
40
- "repository-provider": "^35.5.13"
41
+ "repository-provider": "^35.6.0"
41
42
  },
42
43
  "devDependencies": {
43
- "@types/node": "^24.3.0",
44
+ "@types/node": "^24.5.2",
44
45
  "ava": "^6.4.1",
45
46
  "c8": "^10.1.3",
46
47
  "documentation": "^14.0.3",
47
- "etag-cache-leveldb": "^2.1.15",
48
+ "etag-cache-leveldb": "^2.1.16",
48
49
  "leveldown": "^6.1.1",
49
50
  "levelup": "^5.1.1",
50
- "repository-provider-test-support": "^3.1.52",
51
- "semantic-release": "^24.2.7"
51
+ "repository-provider-test-support": "^4.0.0",
52
+ "semantic-release": "^24.2.9"
52
53
  },
53
54
  "engines": {
54
- "node": ">=22.18.0"
55
+ "node": ">=22.19.5"
55
56
  },
56
57
  "repository": {
57
58
  "type": "git",
@@ -6,20 +6,16 @@ import { RepositoryGroup, Repository } from "repository-provider";
6
6
  * - organization
7
7
  */
8
8
  export class GithubOwner extends RepositoryGroup {
9
- /**
10
- * Map attributes between external and internal representation.
11
- */
12
- static get attributeMapping() {
13
- return {
14
- ...super.attributeMapping,
15
- site_admin: "isAdmin"
16
- };
17
- }
9
+ static attributes = {
10
+ ...RepositoryGroup.attributes,
11
+ isAdmin: {
12
+ ...RepositoryGroup.attributes.isAdmin,
13
+ externalName: "site_admin"
14
+ }
15
+ };
18
16
 
19
17
  get api() {
20
- return this.type === "Organization"
21
- ? `orgs/${this.name}`
22
- : "user";
18
+ return this.type === "Organization" ? `orgs/${this.name}` : "user";
23
19
  }
24
20
 
25
21
  /**
@@ -40,7 +36,7 @@ export class GithubOwner extends RepositoryGroup {
40
36
 
41
37
  if (response.ok) {
42
38
  this.info(`Repository ${name} created`);
43
- options.defaultBranchName = "main";
39
+ options.default_branch = "main";
44
40
  return this.addRepository(name, options);
45
41
  }
46
42
 
@@ -4,7 +4,8 @@ import {
4
4
  url_attribute,
5
5
  priority_attribute,
6
6
  hostname_attribute,
7
- token_attribute
7
+ token_attribute,
8
+ object_attribute
8
9
  } from "pacc";
9
10
  import { MultiGroupProvider } from "repository-provider";
10
11
  import { GithubRepository } from "./github-repository.mjs";
@@ -56,51 +57,72 @@ export class GithubProvider extends MultiGroupProvider {
56
57
  env: ["{{instanceIdentifier}}HOST", "GH_HOST"],
57
58
  default: host
58
59
  },
59
- ssh: {
60
- ...url_attribute,
61
- default: `git@${host}:`
62
- },
60
+ ssh: url_attribute,
63
61
  url: {
64
62
  ...url_attribute,
65
- env: "{{instanceIdentifier}}SERVER_URL",
66
- set: value => (value.endsWith("/") ? value : value + "/"),
67
- default: `https://${host}/`,
68
- depends: "host"
69
- /*get: (attribute, object, properties) =>
70
- `https://${object.host || properties?.host.value}`*/
63
+ env: "{{instanceIdentifier}}SERVER_URL"
71
64
  },
72
65
  api: {
73
66
  ...url_attribute,
74
- env: "{{instanceIdentifier}}API_URL",
75
- set: value => value.replace(/\/$/, ""),
76
- depends: "host",
77
- default: `https://api.${host}`
78
- /* get: (attribute, object, properties) =>
79
- `https://api.${object.host || properties.host.value}`*/
67
+ env: "{{instanceIdentifier}}API_URL"
80
68
  },
81
- "authentication.token": {
82
- ...token_attribute,
83
- // @see https://cli.github.com/manual/gh_help_environment
84
- env: [
85
- "{{instanceIdentifier}}TOKEN",
86
- "GH_TOKEN" // declare GH_ as identifier
87
- ],
88
- additionalAttributes: { "authentication.type": "token" },
89
- mandatory: true
69
+ authentication: {
70
+ ...object_attribute,
71
+ attributes: {
72
+ token: {
73
+ ...token_attribute,
74
+ // @see https://cli.github.com/manual/gh_help_environment
75
+ env: [
76
+ "{{instanceIdentifier}}TOKEN",
77
+ "GH_TOKEN" // declare GH_ as identifier
78
+ ],
79
+ additionalValues: { "authentication.type": "token" },
80
+ mandatory: true
81
+ }
82
+ }
90
83
  },
91
84
  priority: { ...priority_attribute, default: 1000.0 }
92
85
  };
93
86
 
87
+ set ssh(value) {
88
+ this._ssh = value;
89
+ }
90
+
91
+ get ssh() {
92
+ return this._ssh ?? `git@${this.host}:`;
93
+ }
94
+
95
+ set url(value) {
96
+ this._url = value.endsWith("/") ? value : value + "/";
97
+ }
98
+
99
+ get url() {
100
+ return this._url ?? `https://${this.host}/`;
101
+ }
102
+
103
+ set api(value) {
104
+ this._api = value.replace(/\/$/, "");
105
+ }
106
+
107
+ get api() {
108
+ return this._api ?? `https://api.${this.host}`;
109
+ }
110
+
94
111
  fetch(url, options = {}) {
95
112
  options.reporter = (url, ...args) => this.trace(url.toString(), ...args);
96
113
  options.cache = this.cache;
97
114
  options.agent = this.agent;
98
115
 
116
+ const authorization = {};
117
+ if(this.authentication?.token) {
118
+ authorization.authorization = `token ${this.authentication.token}`
119
+ }
120
+
99
121
  return stateActionHandler(new URL(url, this.api), {
100
122
  ...options,
101
123
  headers: {
102
124
  accept: "application/vnd.github+json",
103
- authorization: `token ${this.authentication.token}`,
125
+ ...authorization,
104
126
  ...options.headers
105
127
  }
106
128
  });
@@ -123,7 +145,7 @@ export class GithubProvider extends MultiGroupProvider {
123
145
  const url = `user/repos?page=${page}&per_page=100`;
124
146
  const { json } = await this.fetchJSON(url);
125
147
 
126
- if (json.length === 0 || !Array.isArray(json)) {
148
+ if (json?.length === 0 || !Array.isArray(json)) {
127
149
  break;
128
150
  }
129
151
 
@@ -135,7 +157,9 @@ export class GithubProvider extends MultiGroupProvider {
135
157
  );
136
158
  });
137
159
  }
138
- } catch {}
160
+ } catch (e) {
161
+ throw e;
162
+ }
139
163
  }
140
164
 
141
165
  /**
@@ -149,9 +173,10 @@ export class GithubProvider extends MultiGroupProvider {
149
173
  * @return {string[]} common base urls of all repositories
150
174
  */
151
175
  get repositoryBases() {
176
+ const url = this.url;
152
177
  return super.repositoryBases.concat([
153
- this.url,
154
- "git+" + this.url,
178
+ url,
179
+ "git+" + url,
155
180
  `git+ssh://${this.host}`,
156
181
  `git://${this.host}/`,
157
182
  `git@${this.host}:`
@@ -12,16 +12,13 @@ export class GithubPullRequest extends PullRequest {
12
12
  */
13
13
  static validMergeMethods = new Set(["MERGE", "SQUASH", "REBASE"]);
14
14
 
15
- static get attributeMapping() {
16
- return {
17
- ...super.attributeMapping,
18
- url: "api" // TODO undefined ?
19
- };
20
- }
21
-
22
15
  static attributes = {
23
16
  ...super.attributes,
24
- maintainer_can_modify: boolean_attribute
17
+ maintainer_can_modify: boolean_attribute,
18
+ url: {
19
+ ...PullRequest.attributes.url,
20
+ externalName: "api"
21
+ }
25
22
  };
26
23
 
27
24
  /**
@@ -93,7 +90,10 @@ export class GithubPullRequest extends PullRequest {
93
90
  throw new Error(response.statusText + " (" + response.status + ")");
94
91
  }
95
92
 
96
- return new this(source, destination, json.number, json);
93
+ const pr = new this(source, destination, json.number, json);
94
+
95
+ console.log(pr);
96
+ return pr;
97
97
  }
98
98
 
99
99
  get api() {
@@ -1,17 +1,14 @@
1
1
  import { replaceWithOneTimeExecutionMethod } from "one-time-execution-method";
2
2
  import {
3
- boolean_attribute,
3
+ filterWritable,
4
+ boolean_attribute_writable,
5
+ boolean_attribute_writable_false,
4
6
  url_attribute,
5
7
  size_attribute,
6
8
  language_attribute,
7
9
  string_attribute_writable
8
10
  } from "pacc";
9
- import {
10
- Repository,
11
- mapAttributesInverse,
12
- optionJSON,
13
- Commit
14
- } from "repository-provider";
11
+ import { Repository, Commit } from "repository-provider";
15
12
  import { getHeaderLink } from "fetch-link-util";
16
13
  import { defaultStateActions, errorHandler } from "fetch-rate-limit-util";
17
14
 
@@ -28,45 +25,31 @@ export class GithubRepository extends Repository {
28
25
  #trees = new Map();
29
26
  #commits = new Map();
30
27
 
31
- static get attributeMapping() {
32
- return {
33
- ...super.attributeMapping,
34
- disabled: "isDisabled",
35
- archived: "isArchived",
36
- is_template: "isTemplate",
37
- private: "isPrivate",
38
- fork: "isFork",
39
- default_branch: "defaultBranchName",
40
- url: "api"
41
- };
42
- }
43
-
44
28
  static attributes = {
45
29
  ...super.attributes,
46
- auto_init: boolean_attribute,
47
- size: size_attribute,
48
- language: language_attribute,
49
30
  gitignore_template: string_attribute_writable,
50
31
  license_template: string_attribute_writable,
51
- allow_squash_merge: boolean_attribute,
52
- allow_merge_commit: boolean_attribute,
53
- allow_rebase_merge: boolean_attribute,
54
- allow_auto_merge: boolean_attribute,
55
- delete_branch_on_merge: boolean_attribute,
56
- issuesURL: url_attribute,
32
+ allow_squash_merge: boolean_attribute_writable_false,
33
+ allow_merge_commit: boolean_attribute_writable_false,
34
+ allow_rebase_merge: boolean_attribute_writable_false,
35
+ allow_auto_merge: boolean_attribute_writable_false,
36
+ delete_branch_on_merge: boolean_attribute_writable_false,
57
37
  squash_merge_commit_title: string_attribute_writable,
58
38
  squash_merge_commit_message: string_attribute_writable,
59
39
  merge_commit_title: string_attribute_writable,
60
- merge_commit_message: string_attribute_writable
61
- //custom_properties: default_attribute
40
+ merge_commit_message: string_attribute_writable,
41
+ size: size_attribute,
42
+ language: language_attribute,
43
+ issuesURL: url_attribute,
44
+ auto_init: boolean_attribute_writable_false,
45
+ url: {
46
+ ...super.attributes.url,
47
+ externalName: "api"
48
+ },
49
+ isTemplate: { ...super.attributes.isTemplate, externalName: "is_template" }
62
50
  };
63
51
 
64
- /**
65
- * @return {string} "main"
66
- */
67
- get defaultBranchName() {
68
- return "main";
69
- }
52
+ static defaultBranchName = "main";
70
53
 
71
54
  /**
72
55
  * {@link https://docs.github.com/en/rest/reference/commits#list-commits}
@@ -236,12 +219,7 @@ export class GithubRepository extends Repository {
236
219
  async update() {
237
220
  return this.provider.fetch(this.api, {
238
221
  method: "PATCH",
239
- body: JSON.stringify(
240
- mapAttributesInverse(
241
- optionJSON(this, undefined, this.constructor.writableAttributes),
242
- this.constructor.attributeMapping
243
- )
244
- )
222
+ body: JSON.stringify(this.toJSON(filterWritable))
245
223
  });
246
224
  }
247
225