gcb-host 0.7.1 → 0.8.1
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 +22 -1
- package/bin/gcb.js +3 -3
- package/lib/audit.d.ts +4 -4
- package/lib/audit.d.ts.map +1 -1
- package/lib/audit.js +15 -14
- package/lib/audit.js.map +1 -1
- package/lib/broker.d.ts +12 -13
- package/lib/broker.d.ts.map +1 -1
- package/lib/broker.js +77 -53
- package/lib/broker.js.map +1 -1
- package/lib/commands/authorize.d.ts +43 -13
- package/lib/commands/authorize.d.ts.map +1 -1
- package/lib/commands/authorize.js +146 -53
- package/lib/commands/authorize.js.map +1 -1
- package/lib/commands/compose.d.ts +8 -10
- package/lib/commands/compose.d.ts.map +1 -1
- package/lib/commands/compose.js +33 -44
- package/lib/commands/compose.js.map +1 -1
- package/lib/commands/config.d.ts.map +1 -1
- package/lib/commands/config.js +59 -41
- package/lib/commands/config.js.map +1 -1
- package/lib/commands/deployment.d.ts +11 -11
- package/lib/commands/deployment.d.ts.map +1 -1
- package/lib/commands/deployment.js +19 -18
- package/lib/commands/deployment.js.map +1 -1
- package/lib/commands/diagnose.d.ts.map +1 -1
- package/lib/commands/diagnose.js +51 -33
- package/lib/commands/diagnose.js.map +1 -1
- package/lib/commands/doctor.d.ts +5 -5
- package/lib/commands/doctor.d.ts.map +1 -1
- package/lib/commands/doctor.js +53 -32
- package/lib/commands/doctor.js.map +1 -1
- package/lib/commands/host.d.ts +7 -7
- package/lib/commands/host.d.ts.map +1 -1
- package/lib/commands/host.js +144 -93
- package/lib/commands/host.js.map +1 -1
- package/lib/commands/init.d.ts +33 -33
- package/lib/commands/init.d.ts.map +1 -1
- package/lib/commands/init.js +93 -75
- package/lib/commands/init.js.map +1 -1
- package/lib/commands/stage.d.ts +6 -6
- package/lib/commands/stage.d.ts.map +1 -1
- package/lib/commands/stage.js +21 -15
- package/lib/commands/stage.js.map +1 -1
- package/lib/config.d.ts +29 -28
- package/lib/config.d.ts.map +1 -1
- package/lib/config.js +100 -84
- package/lib/config.js.map +1 -1
- package/lib/daemon.d.ts +9 -9
- package/lib/daemon.d.ts.map +1 -1
- package/lib/daemon.js +21 -18
- package/lib/daemon.js.map +1 -1
- package/lib/device-flow.d.ts +23 -22
- package/lib/device-flow.d.ts.map +1 -1
- package/lib/device-flow.js +33 -28
- package/lib/device-flow.js.map +1 -1
- package/lib/gh.d.ts +2 -2
- package/lib/gh.d.ts.map +1 -1
- package/lib/gh.js +74 -46
- package/lib/gh.js.map +1 -1
- package/lib/http.d.ts.map +1 -1
- package/lib/http.js +35 -18
- package/lib/http.js.map +1 -1
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js.map +1 -1
- package/lib/policy.d.ts +25 -25
- package/lib/policy.d.ts.map +1 -1
- package/lib/policy.js +57 -36
- package/lib/policy.js.map +1 -1
- package/lib/providers/github-app.d.ts +12 -12
- package/lib/providers/github-app.d.ts.map +1 -1
- package/lib/providers/github-app.js +194 -125
- package/lib/providers/github-app.js.map +1 -1
- package/lib/providers/index.d.ts +8 -9
- package/lib/providers/index.d.ts.map +1 -1
- package/lib/providers/index.js +5 -5
- package/lib/providers/index.js.map +1 -1
- package/lib/providers/static.d.ts +3 -3
- package/lib/providers/static.d.ts.map +1 -1
- package/lib/providers/static.js +14 -12
- package/lib/providers/static.js.map +1 -1
- package/lib/proxy.d.ts +10 -10
- package/lib/proxy.d.ts.map +1 -1
- package/lib/proxy.js +18 -16
- package/lib/proxy.js.map +1 -1
- package/lib/public-repo.d.ts +10 -10
- package/lib/public-repo.d.ts.map +1 -1
- package/lib/public-repo.js +17 -14
- package/lib/public-repo.js.map +1 -1
- package/lib/reload.d.ts +4 -4
- package/lib/reload.d.ts.map +1 -1
- package/lib/reload.js +24 -14
- package/lib/reload.js.map +1 -1
- package/package.json +10 -10
package/lib/daemon.js
CHANGED
|
@@ -3,14 +3,14 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Startup is fail-fast on purpose. A broker that cannot read its private key, or whose
|
|
5
5
|
* configuration is over-broad or malformed, must not come up and quietly serve nothing — an
|
|
6
|
-
* operator has to see the failure. `--check` performs the same validation and provider
|
|
7
|
-
*
|
|
8
|
-
*
|
|
6
|
+
* operator has to see the failure. `--check` performs the same validation and provider construction
|
|
7
|
+
* without binding the socket, which is what a deployment script should run before restarting the
|
|
8
|
+
* service.
|
|
9
9
|
*/
|
|
10
10
|
import { createHash } from 'node:crypto';
|
|
11
11
|
import { createAudit } from './audit.js';
|
|
12
12
|
import { startBroker } from './broker.js';
|
|
13
|
-
import { assertKeysReadable, assertUserTokensReadable, loadConfigText, readConfigText, resolveConfigPath } from './config.js';
|
|
13
|
+
import { assertKeysReadable, assertUserTokensReadable, loadConfigText, readConfigText, resolveConfigPath, } from './config.js';
|
|
14
14
|
import { createProvider } from './providers/index.js';
|
|
15
15
|
import { ConfigWatcher } from './reload.js';
|
|
16
16
|
/** Usage text. */
|
|
@@ -20,8 +20,8 @@ const USAGE = 'usage: gcb daemon [--config <path>] [--check]\n' +
|
|
|
20
20
|
/**
|
|
21
21
|
* Parse the daemon's command line.
|
|
22
22
|
*
|
|
23
|
-
* @param argv -
|
|
24
|
-
* @returns
|
|
23
|
+
* @param argv - Arguments after the script name.
|
|
24
|
+
* @returns The parsed arguments.
|
|
25
25
|
*/
|
|
26
26
|
export function parseArgs(argv) {
|
|
27
27
|
let configPath;
|
|
@@ -29,8 +29,9 @@ export function parseArgs(argv) {
|
|
|
29
29
|
let help = false;
|
|
30
30
|
for (let index = 0; index < argv.length; index += 1) {
|
|
31
31
|
const argument = argv[index];
|
|
32
|
-
if (argument === undefined)
|
|
32
|
+
if (argument === undefined) {
|
|
33
33
|
continue;
|
|
34
|
+
}
|
|
34
35
|
if (argument === '--config') {
|
|
35
36
|
configPath = argv[index + 1];
|
|
36
37
|
index += 1;
|
|
@@ -50,9 +51,9 @@ export function parseArgs(argv) {
|
|
|
50
51
|
/**
|
|
51
52
|
* Build providers for every configured host.
|
|
52
53
|
*
|
|
53
|
-
* @param config -
|
|
54
|
-
* @param deps -
|
|
55
|
-
* @returns
|
|
54
|
+
* @param config - The validated configuration.
|
|
55
|
+
* @param deps - Injectable dependencies, for tests.
|
|
56
|
+
* @returns Host -> provider.
|
|
56
57
|
*/
|
|
57
58
|
export function buildProviders(config, deps = {}) {
|
|
58
59
|
const providers = new Map();
|
|
@@ -67,9 +68,9 @@ export function buildProviders(config, deps = {}) {
|
|
|
67
68
|
/**
|
|
68
69
|
* Run the daemon.
|
|
69
70
|
*
|
|
70
|
-
* @param argv -
|
|
71
|
-
* @param io -
|
|
72
|
-
* @returns
|
|
71
|
+
* @param argv - Arguments after the script name.
|
|
72
|
+
* @param io - Injectable streams.
|
|
73
|
+
* @returns The process exit code, once the daemon has shut down.
|
|
73
74
|
*/
|
|
74
75
|
export async function runDaemon(argv, io = {}) {
|
|
75
76
|
const { stderr = process.stderr, stdout = process.stdout } = io;
|
|
@@ -88,7 +89,7 @@ export async function runDaemon(argv, io = {}) {
|
|
|
88
89
|
assertUserTokensReadable(next);
|
|
89
90
|
return {
|
|
90
91
|
config: next,
|
|
91
|
-
providers: buildProviders(next, { log:
|
|
92
|
+
providers: buildProviders(next, { log: message => stderr.write(`gcb daemon: ${message}\n`) }),
|
|
92
93
|
digest: createHash('sha256').update(text).digest('hex'),
|
|
93
94
|
};
|
|
94
95
|
};
|
|
@@ -96,6 +97,7 @@ export async function runDaemon(argv, io = {}) {
|
|
|
96
97
|
let providers;
|
|
97
98
|
let initialDigest;
|
|
98
99
|
try {
|
|
100
|
+
;
|
|
99
101
|
({ config, providers, digest: initialDigest } = load());
|
|
100
102
|
}
|
|
101
103
|
catch (error) {
|
|
@@ -109,8 +111,9 @@ export async function runDaemon(argv, io = {}) {
|
|
|
109
111
|
})
|
|
110
112
|
.join(', ');
|
|
111
113
|
stderr.write(`gcb daemon: config ${resolved} ok: ${summary}\n`);
|
|
112
|
-
if (checkOnly)
|
|
114
|
+
if (checkOnly) {
|
|
113
115
|
return 0;
|
|
116
|
+
}
|
|
114
117
|
const audit = createAudit({ path: config.auditPath, stderr });
|
|
115
118
|
let broker;
|
|
116
119
|
try {
|
|
@@ -118,7 +121,7 @@ export async function runDaemon(argv, io = {}) {
|
|
|
118
121
|
config,
|
|
119
122
|
audit,
|
|
120
123
|
providers,
|
|
121
|
-
log:
|
|
124
|
+
log: message => stderr.write(`gcb daemon: ${message}\n`),
|
|
122
125
|
});
|
|
123
126
|
}
|
|
124
127
|
catch (error) {
|
|
@@ -147,13 +150,13 @@ export async function runDaemon(argv, io = {}) {
|
|
|
147
150
|
audit.record({ event: 'config', decision: 'reload', digest: next.digest });
|
|
148
151
|
return next.digest;
|
|
149
152
|
},
|
|
150
|
-
onError:
|
|
153
|
+
onError: error => {
|
|
151
154
|
stderr.write(`gcb daemon: config reload failed: ${error.message}\n`);
|
|
152
155
|
audit.record({ event: 'config', decision: 'reload-failed', reason: error.message });
|
|
153
156
|
},
|
|
154
157
|
});
|
|
155
158
|
watcher.start();
|
|
156
|
-
await new Promise(
|
|
159
|
+
await new Promise(resolve => {
|
|
157
160
|
const shutdown = (signal) => {
|
|
158
161
|
stderr.write(`gcb daemon: ${signal} received, shutting down\n`);
|
|
159
162
|
watcher.stop();
|
package/lib/daemon.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"daemon.js","sourceRoot":"","sources":["../src/daemon.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,
|
|
1
|
+
{"version":3,"file":"daemon.js","sourceRoot":"","sources":["../src/daemon.ts"],"names":[],"mappings":"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"}
|
package/lib/device-flow.d.ts
CHANGED
|
@@ -2,13 +2,14 @@
|
|
|
2
2
|
* The device flow: how a person authorizes the app when the host has no browser.
|
|
3
3
|
*
|
|
4
4
|
* The point of it here is that it is the only way to obtain a **user** token without a callback
|
|
5
|
-
* server: GitHub hands the tool a short code to display, the person types it on whatever device has
|
|
6
|
-
* browser, and the tool collects the token by polling. An installation token can never be a
|
|
7
|
-
* which is exactly what is wanted — a pull request authored by the app is one reviewers
|
|
5
|
+
* server: GitHub hands the tool a short code to display, the person types it on whatever device has
|
|
6
|
+
* a browser, and the tool collects the token by polling. An installation token can never be a
|
|
7
|
+
* person's, which is exactly what is wanted — a pull request authored by the app is one reviewers
|
|
8
|
+
* may skip.
|
|
8
9
|
*
|
|
9
10
|
* Only the three exchanges live here, with fetch and sleep injected so they can be tested without a
|
|
10
|
-
* network or a clock. Deciding where the refresh token is stored, and who is allowed to ask for
|
|
11
|
-
* somebody else's business.
|
|
11
|
+
* network or a clock. Deciding where the refresh token is stored, and who is allowed to ask for
|
|
12
|
+
* one, is somebody else's business.
|
|
12
13
|
*/
|
|
13
14
|
/** What a fetch has to look like for these exchanges. */
|
|
14
15
|
export type Fetcher = (url: string, init: {
|
|
@@ -48,34 +49,34 @@ export declare const DEVICE_GRANT = "urn:ietf:params:oauth:grant-type:device_cod
|
|
|
48
49
|
/**
|
|
49
50
|
* Ask for a code to show a person.
|
|
50
51
|
*
|
|
51
|
-
* @param clientId -
|
|
52
|
-
* @param fetcher -
|
|
53
|
-
* @returns
|
|
54
|
-
* @throws {Error}
|
|
52
|
+
* @param clientId - The app's client id, which a device flow needs and a secret it does not.
|
|
53
|
+
* @param fetcher - How to make the request.
|
|
54
|
+
* @returns The code to display and how to poll for it.
|
|
55
|
+
* @throws {Error} When GitHub refuses, naming the status and whatever it said.
|
|
55
56
|
*/
|
|
56
57
|
export declare function startDeviceFlow(clientId: string, fetcher: Fetcher): Promise<DeviceCode>;
|
|
57
58
|
/**
|
|
58
59
|
* Wait until the person has authorized, then collect the token.
|
|
59
60
|
*
|
|
60
|
-
* `authorization_pending` is the normal answer while waiting, `slow_down` means GitHub wants a
|
|
61
|
-
* pause, and the rest are endings. Anything else is a failure worth showing.
|
|
61
|
+
* `authorization_pending` is the normal answer while waiting, `slow_down` means GitHub wants a
|
|
62
|
+
* longer pause, and the rest are endings. Anything else is a failure worth showing.
|
|
62
63
|
*
|
|
63
|
-
* @param clientId -
|
|
64
|
-
* @param code -
|
|
65
|
-
* @param fetcher -
|
|
66
|
-
* @param sleep -
|
|
67
|
-
* @returns
|
|
68
|
-
* @throws {Error}
|
|
64
|
+
* @param clientId - The app's client id.
|
|
65
|
+
* @param code - What {@link startDeviceFlow} returned.
|
|
66
|
+
* @param fetcher - How to make the request.
|
|
67
|
+
* @param sleep - How to wait.
|
|
68
|
+
* @returns The token, and the refresh token when there is one.
|
|
69
|
+
* @throws {Error} When the code expires, is refused, or GitHub answers something unexpected.
|
|
69
70
|
*/
|
|
70
71
|
export declare function collectUserToken(clientId: string, code: DeviceCode, fetcher: Fetcher, sleep: Sleep): Promise<UserToken>;
|
|
71
72
|
/**
|
|
72
73
|
* Trade a refresh token for a fresh user token.
|
|
73
74
|
*
|
|
74
|
-
* @param clientId -
|
|
75
|
-
* @param refreshToken -
|
|
76
|
-
* @param fetcher -
|
|
77
|
-
* @returns
|
|
78
|
-
* @throws {Error}
|
|
75
|
+
* @param clientId - The app's client id.
|
|
76
|
+
* @param refreshToken - The one from last time.
|
|
77
|
+
* @param fetcher - How to make the request.
|
|
78
|
+
* @returns The new token, and the new refresh token to keep instead of the old one.
|
|
79
|
+
* @throws {Error} When GitHub refuses, which one day means the person has to authorize again.
|
|
79
80
|
*/
|
|
80
81
|
export declare function refreshUserToken(clientId: string, refreshToken: string, fetcher: Fetcher): Promise<UserToken>;
|
|
81
82
|
//# sourceMappingURL=device-flow.d.ts.map
|
package/lib/device-flow.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"device-flow.d.ts","sourceRoot":"","sources":["../src/device-flow.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"device-flow.d.ts","sourceRoot":"","sources":["../src/device-flow.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,yDAAyD;AACzD,MAAM,MAAM,OAAO,GAAG,CACpB,GAAG,EAAE,MAAM,EACX,IAAI,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,WAAW,CAAA;CAAE,KAC1F,OAAO,CAAC;IAAE,EAAE,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC,CAAA;CAAE,CAAC,CAAA;AAEtE,sCAAsC;AACtC,MAAM,MAAM,KAAK,GAAG,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;AAEjD,2CAA2C;AAC3C,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAA;IAChC,oCAAoC;IACpC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,qDAAqD;IACrD,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;CAC1B;AAED,0DAA0D;AAC1D,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,8FAA8F;IAC9F,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAA;IAC9B,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAA;CACnC;AAED,6EAA6E;AAC7E,eAAO,MAAM,eAAe,yCAAyC,CAAA;AACrE,eAAO,MAAM,SAAS,gDAAgD,CAAA;AACtE,sEAAsE;AACtE,eAAO,MAAM,YAAY,iDAAiD,CAAA;AAmB1E;;;;;;;GAOG;AACH,wBAAsB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC,CA8B7F;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,gBAAgB,CACpC,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,UAAU,EAChB,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,KAAK,GACX,OAAO,CAAC,SAAS,CAAC,CAkDpB;AAED;;;;;;;;GAQG;AACH,wBAAsB,gBAAgB,CACpC,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,SAAS,CAAC,CA0BpB"}
|
package/lib/device-flow.js
CHANGED
|
@@ -2,13 +2,14 @@
|
|
|
2
2
|
* The device flow: how a person authorizes the app when the host has no browser.
|
|
3
3
|
*
|
|
4
4
|
* The point of it here is that it is the only way to obtain a **user** token without a callback
|
|
5
|
-
* server: GitHub hands the tool a short code to display, the person types it on whatever device has
|
|
6
|
-
* browser, and the tool collects the token by polling. An installation token can never be a
|
|
7
|
-
* which is exactly what is wanted — a pull request authored by the app is one reviewers
|
|
5
|
+
* server: GitHub hands the tool a short code to display, the person types it on whatever device has
|
|
6
|
+
* a browser, and the tool collects the token by polling. An installation token can never be a
|
|
7
|
+
* person's, which is exactly what is wanted — a pull request authored by the app is one reviewers
|
|
8
|
+
* may skip.
|
|
8
9
|
*
|
|
9
10
|
* Only the three exchanges live here, with fetch and sleep injected so they can be tested without a
|
|
10
|
-
* network or a clock. Deciding where the refresh token is stored, and who is allowed to ask for
|
|
11
|
-
* somebody else's business.
|
|
11
|
+
* network or a clock. Deciding where the refresh token is stored, and who is allowed to ask for
|
|
12
|
+
* one, is somebody else's business.
|
|
12
13
|
*/
|
|
13
14
|
/** GitHub's endpoints. A constant so a test can see what is being called. */
|
|
14
15
|
export const DEVICE_CODE_URL = 'https://github.com/login/device/code';
|
|
@@ -21,8 +22,8 @@ export const DEVICE_GRANT = 'urn:ietf:params:oauth:grant-type:device_code';
|
|
|
21
22
|
* A refused request can answer with a page rather than with JSON. Letting `JSON.parse` throw there
|
|
22
23
|
* replaces "GitHub answered 500" with an error about a token, which is the wrong story entirely.
|
|
23
24
|
*
|
|
24
|
-
* @param text -
|
|
25
|
-
* @returns
|
|
25
|
+
* @param text - The response body.
|
|
26
|
+
* @returns The parsed object, or an empty one when it is not JSON.
|
|
26
27
|
*/
|
|
27
28
|
function parseJson(text) {
|
|
28
29
|
try {
|
|
@@ -36,10 +37,10 @@ function parseJson(text) {
|
|
|
36
37
|
/**
|
|
37
38
|
* Ask for a code to show a person.
|
|
38
39
|
*
|
|
39
|
-
* @param clientId -
|
|
40
|
-
* @param fetcher -
|
|
41
|
-
* @returns
|
|
42
|
-
* @throws {Error}
|
|
40
|
+
* @param clientId - The app's client id, which a device flow needs and a secret it does not.
|
|
41
|
+
* @param fetcher - How to make the request.
|
|
42
|
+
* @returns The code to display and how to poll for it.
|
|
43
|
+
* @throws {Error} When GitHub refuses, naming the status and whatever it said.
|
|
43
44
|
*/
|
|
44
45
|
export async function startDeviceFlow(clientId, fetcher) {
|
|
45
46
|
const body = new URLSearchParams({ client_id: clientId }).toString();
|
|
@@ -67,23 +68,24 @@ export async function startDeviceFlow(clientId, fetcher) {
|
|
|
67
68
|
/**
|
|
68
69
|
* Wait until the person has authorized, then collect the token.
|
|
69
70
|
*
|
|
70
|
-
* `authorization_pending` is the normal answer while waiting, `slow_down` means GitHub wants a
|
|
71
|
-
* pause, and the rest are endings. Anything else is a failure worth showing.
|
|
71
|
+
* `authorization_pending` is the normal answer while waiting, `slow_down` means GitHub wants a
|
|
72
|
+
* longer pause, and the rest are endings. Anything else is a failure worth showing.
|
|
72
73
|
*
|
|
73
|
-
* @param clientId -
|
|
74
|
-
* @param code -
|
|
75
|
-
* @param fetcher -
|
|
76
|
-
* @param sleep -
|
|
77
|
-
* @returns
|
|
78
|
-
* @throws {Error}
|
|
74
|
+
* @param clientId - The app's client id.
|
|
75
|
+
* @param code - What {@link startDeviceFlow} returned.
|
|
76
|
+
* @param fetcher - How to make the request.
|
|
77
|
+
* @param sleep - How to wait.
|
|
78
|
+
* @returns The token, and the refresh token when there is one.
|
|
79
|
+
* @throws {Error} When the code expires, is refused, or GitHub answers something unexpected.
|
|
79
80
|
*/
|
|
80
81
|
export async function collectUserToken(clientId, code, fetcher, sleep) {
|
|
81
82
|
const deadline = Date.now() + code.expiresIn * 1_000;
|
|
82
83
|
let interval = code.interval;
|
|
83
84
|
for (;;) {
|
|
84
85
|
await sleep(Math.max(interval, 1) * 1_000);
|
|
85
|
-
if (Date.now() > deadline)
|
|
86
|
+
if (Date.now() > deadline) {
|
|
86
87
|
throw new Error('the device code expired before it was authorized');
|
|
88
|
+
}
|
|
87
89
|
const response = await fetcher(TOKEN_URL, {
|
|
88
90
|
method: 'POST',
|
|
89
91
|
headers: { accept: 'application/json', 'content-type': 'application/x-www-form-urlencoded' },
|
|
@@ -102,27 +104,30 @@ export async function collectUserToken(clientId, code, fetcher, sleep) {
|
|
|
102
104
|
expiresInSeconds: parsed.expires_in,
|
|
103
105
|
};
|
|
104
106
|
}
|
|
105
|
-
if (parsed.error === 'authorization_pending')
|
|
107
|
+
if (parsed.error === 'authorization_pending') {
|
|
106
108
|
continue;
|
|
109
|
+
}
|
|
107
110
|
if (parsed.error === 'slow_down') {
|
|
108
111
|
interval += 5;
|
|
109
112
|
continue;
|
|
110
113
|
}
|
|
111
|
-
if (parsed.error === 'access_denied')
|
|
114
|
+
if (parsed.error === 'access_denied') {
|
|
112
115
|
throw new Error('the authorization was denied');
|
|
113
|
-
|
|
116
|
+
}
|
|
117
|
+
if (parsed.error === 'expired_token') {
|
|
114
118
|
throw new Error('the device code expired');
|
|
119
|
+
}
|
|
115
120
|
throw new Error(`GitHub answered ${response.status} to the token request: ${text.slice(0, 200)}`);
|
|
116
121
|
}
|
|
117
122
|
}
|
|
118
123
|
/**
|
|
119
124
|
* Trade a refresh token for a fresh user token.
|
|
120
125
|
*
|
|
121
|
-
* @param clientId -
|
|
122
|
-
* @param refreshToken -
|
|
123
|
-
* @param fetcher -
|
|
124
|
-
* @returns
|
|
125
|
-
* @throws {Error}
|
|
126
|
+
* @param clientId - The app's client id.
|
|
127
|
+
* @param refreshToken - The one from last time.
|
|
128
|
+
* @param fetcher - How to make the request.
|
|
129
|
+
* @returns The new token, and the new refresh token to keep instead of the old one.
|
|
130
|
+
* @throws {Error} When GitHub refuses, which one day means the person has to authorize again.
|
|
126
131
|
*/
|
|
127
132
|
export async function refreshUserToken(clientId, refreshToken, fetcher) {
|
|
128
133
|
const response = await fetcher(TOKEN_URL, {
|
package/lib/device-flow.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"device-flow.js","sourceRoot":"","sources":["../src/device-flow.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"device-flow.js","sourceRoot":"","sources":["../src/device-flow.ts"],"names":[],"mappings":"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"}
|
package/lib/gh.d.ts
CHANGED
|
@@ -32,8 +32,8 @@ export interface GhRunOptions {
|
|
|
32
32
|
/**
|
|
33
33
|
* Run one allowed action.
|
|
34
34
|
*
|
|
35
|
-
* @param options -
|
|
36
|
-
* @returns
|
|
35
|
+
* @param options - Action, values, repository and token.
|
|
36
|
+
* @returns The bounded process result.
|
|
37
37
|
*/
|
|
38
38
|
export declare function runGhAction(options: GhRunOptions): Promise<GhRunResult>;
|
|
39
39
|
//# sourceMappingURL=gh.d.ts.map
|
package/lib/gh.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gh.d.ts","sourceRoot":"","sources":["../src/gh.ts"],"names":[],"mappings":"AAaA,OAAO,EAAyC,KAAK,YAAY,EAAE,MAAM,UAAU,
|
|
1
|
+
{"version":3,"file":"gh.d.ts","sourceRoot":"","sources":["../src/gh.ts"],"names":[],"mappings":"AAaA,OAAO,EAAyC,KAAK,YAAY,EAAE,MAAM,UAAU,CAAA;AAInF,8DAA8D;AAC9D,eAAO,MAAM,uBAAuB,SAAU,CAAA;AAE9C,8DAA8D;AAC9D,eAAO,MAAM,aAAa,OAAQ,CAAA;AAElC,uCAAuC;AACvC,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;IAC5B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,GAAG,IAAI,CAAA;IACtC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAA;IAC3B,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAA;IAC1B,6DAA6D;IAC7D,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CACxB;AAED,uCAAuC;AACvC,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAA;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAA;IAChC,+DAA+D;IAC/D,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAA;IAChC,gFAAgF;IAChF,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAC/B;AAuID;;;;;GAKG;AACH,wBAAsB,WAAW,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC,CA0N7E"}
|