electron-incremental-update 2.4.2 → 3.0.0-beta.2
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 +72 -43
- package/dist/download-BN4uMS4_.d.mts +39 -0
- package/dist/download-DO7iuxEJ.d.cts +39 -0
- package/dist/electron-BFoZUBhU.cjs +320 -0
- package/dist/electron-CJIoO4ny.mjs +180 -0
- package/dist/index.cjs +259 -331
- package/dist/index.d.cts +179 -169
- package/dist/index.d.mts +204 -0
- package/dist/index.mjs +271 -0
- package/dist/provider.cjs +142 -356
- package/dist/provider.d.cts +116 -117
- package/dist/provider.d.mts +133 -0
- package/dist/provider.mjs +152 -0
- package/dist/types-BM9Jfu7q.d.cts +154 -0
- package/dist/types-DASqEPXE.d.mts +154 -0
- package/dist/utils.cjs +43 -381
- package/dist/utils.d.cts +117 -85
- package/dist/utils.d.mts +161 -0
- package/dist/utils.mjs +5 -0
- package/dist/version--eVB2A7n.mjs +72 -0
- package/dist/version-aPrLuz_-.cjs +129 -0
- package/dist/vite.d.mts +565 -0
- package/dist/vite.mjs +1222 -0
- package/dist/zip-BCC7FAQ_.cjs +264 -0
- package/dist/zip-Dwm7s1C9.mjs +185 -0
- package/package.json +65 -65
- package/dist/chunk-AAAM44NW.js +0 -70
- package/dist/chunk-IVHNGRZY.js +0 -122
- package/dist/chunk-PD4EV4MM.js +0 -147
- package/dist/index.d.ts +0 -194
- package/dist/index.js +0 -309
- package/dist/provider.d.ts +0 -134
- package/dist/provider.js +0 -178
- package/dist/types-CU7GyVez.d.cts +0 -151
- package/dist/types-CU7GyVez.d.ts +0 -151
- package/dist/utils.d.ts +0 -129
- package/dist/utils.js +0 -3
- package/dist/vite.d.ts +0 -533
- package/dist/vite.js +0 -945
- package/dist/zip-Blmn2vzE.d.cts +0 -71
- package/dist/zip-CnSv_Njj.d.ts +0 -71
- package/provider.d.ts +0 -1
- package/provider.js +0 -1
- package/utils.d.ts +0 -1
- package/utils.js +0 -1
- package/vite.d.ts +0 -1
- package/vite.js +0 -1
package/dist/provider.d.cts
CHANGED
|
@@ -1,134 +1,133 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
import { I as IProvider, d as defaultIsLowerVersion, b as UpdateJSONWithURL, e as UpdateInfoWithURL, D as DownloadingInfo, f as URLHandler } from './types-CU7GyVez.cjs';
|
|
4
|
-
import { Promisable } from '@subframe7536/type-utils';
|
|
5
|
-
import 'electron';
|
|
6
|
-
import 'node:url';
|
|
1
|
+
import { a as UpdateJSONWithURL, i as UpdateInfoWithURL, m as Promisable, n as IProvider, r as URLHandler, t as DownloadingInfo } from "./types-BM9Jfu7q.cjs";
|
|
2
|
+
import { a as getHeader, i as downloadUtil, n as defaultDownloadText, o as resolveJson, r as defaultDownloadUpdateJSON, t as defaultDownloadAsar } from "./download-DO7iuxEJ.cjs";
|
|
7
3
|
|
|
4
|
+
//#region src/provider/base.d.ts
|
|
8
5
|
declare abstract class BaseProvider implements IProvider {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
6
|
+
name: string;
|
|
7
|
+
/**
|
|
8
|
+
* @inheritdoc
|
|
9
|
+
*/
|
|
10
|
+
isLowerVersion: IProvider["isLowerVersion"];
|
|
11
|
+
/**
|
|
12
|
+
* @inheritdoc
|
|
13
|
+
*/
|
|
14
|
+
verifySignaure: IProvider["verifySignaure"];
|
|
15
|
+
/**
|
|
16
|
+
* @inheritdoc
|
|
17
|
+
*/
|
|
18
|
+
unzipFile: IProvider["unzipFile"];
|
|
19
|
+
/**
|
|
20
|
+
* @inheritdoc
|
|
21
|
+
*/
|
|
22
|
+
abstract downloadJSON(name: string, versionPath: string, signal: AbortSignal): Promise<UpdateJSONWithURL>;
|
|
23
|
+
/**
|
|
24
|
+
* @inheritdoc
|
|
25
|
+
*/
|
|
26
|
+
abstract downloadAsar(info: UpdateInfoWithURL, signal: AbortSignal, onDownloading?: (info: DownloadingInfo) => void): Promise<Buffer>;
|
|
30
27
|
}
|
|
31
|
-
|
|
28
|
+
//#endregion
|
|
29
|
+
//#region src/provider/github/base.d.ts
|
|
32
30
|
interface BaseGitHubProviderOptions {
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
31
|
+
/**
|
|
32
|
+
* Github user name
|
|
33
|
+
*/
|
|
34
|
+
user: string;
|
|
35
|
+
/**
|
|
36
|
+
* Github repo name
|
|
37
|
+
*/
|
|
38
|
+
repo: string;
|
|
39
|
+
/**
|
|
40
|
+
* Extra headers
|
|
41
|
+
*/
|
|
42
|
+
extraHeaders?: Record<string, string>;
|
|
43
|
+
/**
|
|
44
|
+
* Custom url handler ({@link https://github.com/XIU2/UserScript/blob/master/GithubEnhanced-High-Speed-Download.user.js#L40 some public CDN links})
|
|
45
|
+
* @example
|
|
46
|
+
* (url) => {
|
|
47
|
+
* url.hostname = 'mirror.ghproxy.com'
|
|
48
|
+
* url.pathname = 'https://github.com' + url.pathname
|
|
49
|
+
* return url
|
|
50
|
+
* }
|
|
51
|
+
*/
|
|
52
|
+
urlHandler?: URLHandler;
|
|
55
53
|
}
|
|
56
54
|
declare abstract class BaseGitHubProvider<T extends BaseGitHubProviderOptions = BaseGitHubProviderOptions> extends BaseProvider {
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
55
|
+
protected options: T;
|
|
56
|
+
constructor(options: T);
|
|
57
|
+
get urlHandler(): URLHandler | undefined;
|
|
58
|
+
set urlHandler(handler: URLHandler);
|
|
59
|
+
protected parseURL(extraPath: string): Promise<string>;
|
|
60
|
+
protected abstract getHeaders(accept: string): Record<string, string>;
|
|
61
|
+
protected abstract getVersionURL(versionPath: string, signal: AbortSignal): Promisable<string>;
|
|
62
|
+
downloadJSON(name: string, versionPath: string, signal: AbortSignal): Promise<UpdateJSONWithURL>;
|
|
63
|
+
/**
|
|
64
|
+
* @inheritdoc
|
|
65
|
+
*/
|
|
66
|
+
downloadAsar(info: UpdateInfoWithURL, signal: AbortSignal, onDownloading?: (info: DownloadingInfo) => void): Promise<Buffer>;
|
|
69
67
|
}
|
|
70
|
-
|
|
68
|
+
//#endregion
|
|
69
|
+
//#region src/provider/github/api.d.ts
|
|
71
70
|
interface GitHubApiProviderOptions extends BaseGitHubProviderOptions {
|
|
72
|
-
|
|
71
|
+
token?: string;
|
|
73
72
|
}
|
|
73
|
+
/**
|
|
74
|
+
* Update Provider for Github API, you need to upload `version.json` to release as well
|
|
75
|
+
* - check update from `https://api.github.com/repos/{user}/{repo}/releases?per_page=1`
|
|
76
|
+
* - download update json and get version and download url
|
|
77
|
+
* - download update asar from update info
|
|
78
|
+
*
|
|
79
|
+
* you can setup `urlHandler` in options to modify url before request
|
|
80
|
+
* @param options provider options
|
|
81
|
+
*/
|
|
74
82
|
declare class GitHubApiProvider extends BaseGitHubProvider<GitHubApiProviderOptions> {
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
*
|
|
82
|
-
* you can setup `urlHandler` in options to modify url before request
|
|
83
|
-
* @param options provider options
|
|
84
|
-
*/
|
|
85
|
-
constructor(options: GitHubApiProviderOptions);
|
|
86
|
-
protected getHeaders(accept: string): Record<string, string>;
|
|
87
|
-
/**
|
|
88
|
-
* @inheritdoc
|
|
89
|
-
*/
|
|
90
|
-
protected getVersionURL(versionPath: string, signal: AbortSignal): Promise<string>;
|
|
83
|
+
name: string;
|
|
84
|
+
protected getHeaders(accept: string): Record<string, string>;
|
|
85
|
+
/**
|
|
86
|
+
* @inheritdoc
|
|
87
|
+
*/
|
|
88
|
+
protected getVersionURL(versionPath: string, signal: AbortSignal): Promise<string>;
|
|
91
89
|
}
|
|
92
|
-
|
|
90
|
+
//#endregion
|
|
91
|
+
//#region src/provider/github/atom.d.ts
|
|
92
|
+
/**
|
|
93
|
+
* Update Provider for Github repo
|
|
94
|
+
* - check update from `https://github.com/{user}/{repo}/releases.atom`
|
|
95
|
+
* - download update json from `https://github.com/{user}/{repo}/releases/download/v{version}/{versionPath}`
|
|
96
|
+
* - download update asar from `https://github.com/{user}/{repo}/releases/download/v{version}/{name}-{version}.asar.gz`
|
|
97
|
+
*
|
|
98
|
+
* you can setup `urlHandler` in options to modify url before request
|
|
99
|
+
* @param options provider options
|
|
100
|
+
*/
|
|
93
101
|
declare class GitHubAtomProvider extends BaseGitHubProvider {
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
*
|
|
101
|
-
* you can setup `urlHandler` in options to modify url before request
|
|
102
|
-
* @param options provider options
|
|
103
|
-
*/
|
|
104
|
-
constructor(options: BaseGitHubProviderOptions);
|
|
105
|
-
protected getHeaders(accept: string): Record<string, string>;
|
|
106
|
-
/**
|
|
107
|
-
* @inheritdoc
|
|
108
|
-
*/
|
|
109
|
-
protected getVersionURL(versionPath: string, signal: AbortSignal): Promise<string>;
|
|
102
|
+
name: string;
|
|
103
|
+
protected getHeaders(accept: string): Record<string, string>;
|
|
104
|
+
/**
|
|
105
|
+
* @inheritdoc
|
|
106
|
+
*/
|
|
107
|
+
protected getVersionURL(versionPath: string, signal: AbortSignal): Promise<string>;
|
|
110
108
|
}
|
|
111
|
-
|
|
109
|
+
//#endregion
|
|
110
|
+
//#region src/provider/github/file.d.ts
|
|
112
111
|
interface GitHubProviderOptions extends BaseGitHubProviderOptions {
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
112
|
+
/**
|
|
113
|
+
* Github branch name that fetch version
|
|
114
|
+
* @default 'HEAD'
|
|
115
|
+
*/
|
|
116
|
+
branch?: string;
|
|
118
117
|
}
|
|
118
|
+
/**
|
|
119
|
+
* Update Provider for Github repo
|
|
120
|
+
* - download update json from `https://github.com/{user}/{repo}/raw/HEAD/{versionPath}`
|
|
121
|
+
* - download update asar from `https://github.com/{user}/{repo}/releases/download/v{version}/{name}-{version}.asar.gz`
|
|
122
|
+
*
|
|
123
|
+
* you can setup `urlHandler` in options to modify url before request
|
|
124
|
+
* @param options provider options
|
|
125
|
+
*/
|
|
119
126
|
declare class GitHubProvider extends BaseGitHubProvider<GitHubProviderOptions> {
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
* - download update asar from `https://github.com/{user}/{repo}/releases/download/v{version}/{name}-{version}.asar.gz`
|
|
125
|
-
*
|
|
126
|
-
* you can setup `urlHandler` in options to modify url before request
|
|
127
|
-
* @param options provider options
|
|
128
|
-
*/
|
|
129
|
-
constructor(options: GitHubProviderOptions);
|
|
130
|
-
protected getHeaders(accept: string): Record<string, string>;
|
|
131
|
-
protected getVersionURL(versionPath: string): string;
|
|
127
|
+
name: string;
|
|
128
|
+
constructor(options: GitHubProviderOptions);
|
|
129
|
+
protected getHeaders(accept: string): Record<string, string>;
|
|
130
|
+
protected getVersionURL(versionPath: string): string;
|
|
132
131
|
}
|
|
133
|
-
|
|
134
|
-
export { BaseGitHubProvider,
|
|
132
|
+
//#endregion
|
|
133
|
+
export { BaseGitHubProvider, BaseGitHubProviderOptions, BaseProvider, DownloadingInfo, GitHubApiProvider, GitHubApiProviderOptions, GitHubAtomProvider, GitHubProvider, GitHubProviderOptions, IProvider, URLHandler, UpdateInfoWithURL, UpdateJSONWithURL, defaultDownloadAsar, defaultDownloadText, defaultDownloadUpdateJSON, downloadUtil, getHeader, resolveJson };
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
import { a as UpdateJSONWithURL, i as UpdateInfoWithURL, m as Promisable, n as IProvider, r as URLHandler, t as DownloadingInfo } from "./types-DASqEPXE.mjs";
|
|
2
|
+
import { a as getHeader, i as downloadUtil, n as defaultDownloadText, o as resolveJson, r as defaultDownloadUpdateJSON, t as defaultDownloadAsar } from "./download-BN4uMS4_.mjs";
|
|
3
|
+
|
|
4
|
+
//#region src/provider/base.d.ts
|
|
5
|
+
declare abstract class BaseProvider implements IProvider {
|
|
6
|
+
name: string;
|
|
7
|
+
/**
|
|
8
|
+
* @inheritdoc
|
|
9
|
+
*/
|
|
10
|
+
isLowerVersion: IProvider["isLowerVersion"];
|
|
11
|
+
/**
|
|
12
|
+
* @inheritdoc
|
|
13
|
+
*/
|
|
14
|
+
verifySignaure: IProvider["verifySignaure"];
|
|
15
|
+
/**
|
|
16
|
+
* @inheritdoc
|
|
17
|
+
*/
|
|
18
|
+
unzipFile: IProvider["unzipFile"];
|
|
19
|
+
/**
|
|
20
|
+
* @inheritdoc
|
|
21
|
+
*/
|
|
22
|
+
abstract downloadJSON(name: string, versionPath: string, signal: AbortSignal): Promise<UpdateJSONWithURL>;
|
|
23
|
+
/**
|
|
24
|
+
* @inheritdoc
|
|
25
|
+
*/
|
|
26
|
+
abstract downloadAsar(info: UpdateInfoWithURL, signal: AbortSignal, onDownloading?: (info: DownloadingInfo) => void): Promise<Buffer>;
|
|
27
|
+
}
|
|
28
|
+
//#endregion
|
|
29
|
+
//#region src/provider/github/base.d.ts
|
|
30
|
+
interface BaseGitHubProviderOptions {
|
|
31
|
+
/**
|
|
32
|
+
* Github user name
|
|
33
|
+
*/
|
|
34
|
+
user: string;
|
|
35
|
+
/**
|
|
36
|
+
* Github repo name
|
|
37
|
+
*/
|
|
38
|
+
repo: string;
|
|
39
|
+
/**
|
|
40
|
+
* Extra headers
|
|
41
|
+
*/
|
|
42
|
+
extraHeaders?: Record<string, string>;
|
|
43
|
+
/**
|
|
44
|
+
* Custom url handler ({@link https://github.com/XIU2/UserScript/blob/master/GithubEnhanced-High-Speed-Download.user.js#L40 some public CDN links})
|
|
45
|
+
* @example
|
|
46
|
+
* (url) => {
|
|
47
|
+
* url.hostname = 'mirror.ghproxy.com'
|
|
48
|
+
* url.pathname = 'https://github.com' + url.pathname
|
|
49
|
+
* return url
|
|
50
|
+
* }
|
|
51
|
+
*/
|
|
52
|
+
urlHandler?: URLHandler;
|
|
53
|
+
}
|
|
54
|
+
declare abstract class BaseGitHubProvider<T extends BaseGitHubProviderOptions = BaseGitHubProviderOptions> extends BaseProvider {
|
|
55
|
+
protected options: T;
|
|
56
|
+
constructor(options: T);
|
|
57
|
+
get urlHandler(): URLHandler | undefined;
|
|
58
|
+
set urlHandler(handler: URLHandler);
|
|
59
|
+
protected parseURL(extraPath: string): Promise<string>;
|
|
60
|
+
protected abstract getHeaders(accept: string): Record<string, string>;
|
|
61
|
+
protected abstract getVersionURL(versionPath: string, signal: AbortSignal): Promisable<string>;
|
|
62
|
+
downloadJSON(name: string, versionPath: string, signal: AbortSignal): Promise<UpdateJSONWithURL>;
|
|
63
|
+
/**
|
|
64
|
+
* @inheritdoc
|
|
65
|
+
*/
|
|
66
|
+
downloadAsar(info: UpdateInfoWithURL, signal: AbortSignal, onDownloading?: (info: DownloadingInfo) => void): Promise<Buffer>;
|
|
67
|
+
}
|
|
68
|
+
//#endregion
|
|
69
|
+
//#region src/provider/github/api.d.ts
|
|
70
|
+
interface GitHubApiProviderOptions extends BaseGitHubProviderOptions {
|
|
71
|
+
token?: string;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Update Provider for Github API, you need to upload `version.json` to release as well
|
|
75
|
+
* - check update from `https://api.github.com/repos/{user}/{repo}/releases?per_page=1`
|
|
76
|
+
* - download update json and get version and download url
|
|
77
|
+
* - download update asar from update info
|
|
78
|
+
*
|
|
79
|
+
* you can setup `urlHandler` in options to modify url before request
|
|
80
|
+
* @param options provider options
|
|
81
|
+
*/
|
|
82
|
+
declare class GitHubApiProvider extends BaseGitHubProvider<GitHubApiProviderOptions> {
|
|
83
|
+
name: string;
|
|
84
|
+
protected getHeaders(accept: string): Record<string, string>;
|
|
85
|
+
/**
|
|
86
|
+
* @inheritdoc
|
|
87
|
+
*/
|
|
88
|
+
protected getVersionURL(versionPath: string, signal: AbortSignal): Promise<string>;
|
|
89
|
+
}
|
|
90
|
+
//#endregion
|
|
91
|
+
//#region src/provider/github/atom.d.ts
|
|
92
|
+
/**
|
|
93
|
+
* Update Provider for Github repo
|
|
94
|
+
* - check update from `https://github.com/{user}/{repo}/releases.atom`
|
|
95
|
+
* - download update json from `https://github.com/{user}/{repo}/releases/download/v{version}/{versionPath}`
|
|
96
|
+
* - download update asar from `https://github.com/{user}/{repo}/releases/download/v{version}/{name}-{version}.asar.gz`
|
|
97
|
+
*
|
|
98
|
+
* you can setup `urlHandler` in options to modify url before request
|
|
99
|
+
* @param options provider options
|
|
100
|
+
*/
|
|
101
|
+
declare class GitHubAtomProvider extends BaseGitHubProvider {
|
|
102
|
+
name: string;
|
|
103
|
+
protected getHeaders(accept: string): Record<string, string>;
|
|
104
|
+
/**
|
|
105
|
+
* @inheritdoc
|
|
106
|
+
*/
|
|
107
|
+
protected getVersionURL(versionPath: string, signal: AbortSignal): Promise<string>;
|
|
108
|
+
}
|
|
109
|
+
//#endregion
|
|
110
|
+
//#region src/provider/github/file.d.ts
|
|
111
|
+
interface GitHubProviderOptions extends BaseGitHubProviderOptions {
|
|
112
|
+
/**
|
|
113
|
+
* Github branch name that fetch version
|
|
114
|
+
* @default 'HEAD'
|
|
115
|
+
*/
|
|
116
|
+
branch?: string;
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Update Provider for Github repo
|
|
120
|
+
* - download update json from `https://github.com/{user}/{repo}/raw/HEAD/{versionPath}`
|
|
121
|
+
* - download update asar from `https://github.com/{user}/{repo}/releases/download/v{version}/{name}-{version}.asar.gz`
|
|
122
|
+
*
|
|
123
|
+
* you can setup `urlHandler` in options to modify url before request
|
|
124
|
+
* @param options provider options
|
|
125
|
+
*/
|
|
126
|
+
declare class GitHubProvider extends BaseGitHubProvider<GitHubProviderOptions> {
|
|
127
|
+
name: string;
|
|
128
|
+
constructor(options: GitHubProviderOptions);
|
|
129
|
+
protected getHeaders(accept: string): Record<string, string>;
|
|
130
|
+
protected getVersionURL(versionPath: string): string;
|
|
131
|
+
}
|
|
132
|
+
//#endregion
|
|
133
|
+
export { BaseGitHubProvider, BaseGitHubProviderOptions, BaseProvider, DownloadingInfo, GitHubApiProvider, GitHubApiProviderOptions, GitHubAtomProvider, GitHubProvider, GitHubProviderOptions, IProvider, URLHandler, UpdateInfoWithURL, UpdateJSONWithURL, defaultDownloadAsar, defaultDownloadText, defaultDownloadUpdateJSON, downloadUtil, getHeader, resolveJson };
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
import { t as defaultIsLowerVersion } from "./version--eVB2A7n.mjs";
|
|
2
|
+
import { a as defaultDownloadUpdateJSON, c as resolveJson, f as defaultVerifySignature, i as defaultDownloadText, o as downloadUtil, r as defaultDownloadAsar, s as getHeader, t as defaultUnzipFile } from "./zip-Dwm7s1C9.mjs";
|
|
3
|
+
import { URL } from "node:url";
|
|
4
|
+
|
|
5
|
+
//#region src/provider/base.ts
|
|
6
|
+
var BaseProvider = class {
|
|
7
|
+
name = "BaseProvider";
|
|
8
|
+
/**
|
|
9
|
+
* @inheritdoc
|
|
10
|
+
*/
|
|
11
|
+
isLowerVersion = defaultIsLowerVersion;
|
|
12
|
+
/**
|
|
13
|
+
* @inheritdoc
|
|
14
|
+
*/
|
|
15
|
+
verifySignaure = defaultVerifySignature;
|
|
16
|
+
/**
|
|
17
|
+
* @inheritdoc
|
|
18
|
+
*/
|
|
19
|
+
unzipFile = defaultUnzipFile;
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
//#endregion
|
|
23
|
+
//#region src/provider/github/base.ts
|
|
24
|
+
var BaseGitHubProvider = class extends BaseProvider {
|
|
25
|
+
constructor(options) {
|
|
26
|
+
super();
|
|
27
|
+
this.options = options;
|
|
28
|
+
}
|
|
29
|
+
get urlHandler() {
|
|
30
|
+
return this.options.urlHandler;
|
|
31
|
+
}
|
|
32
|
+
set urlHandler(handler) {
|
|
33
|
+
this.options.urlHandler = handler;
|
|
34
|
+
}
|
|
35
|
+
async parseURL(extraPath) {
|
|
36
|
+
const url = new URL(`/${this.options.user}/${this.options.repo}/${extraPath}`, "https://github.com");
|
|
37
|
+
return (await this.urlHandler?.(url) || url).toString();
|
|
38
|
+
}
|
|
39
|
+
async downloadJSON(name, versionPath, signal) {
|
|
40
|
+
const { beta, version, ...info } = await defaultDownloadUpdateJSON(await this.parseURL(await this.getVersionURL(versionPath, signal)), this.getHeaders("json"), signal);
|
|
41
|
+
const getURL = (ver) => this.parseURL(`releases/download/v${ver}/${name}-${ver}.asar.gz`);
|
|
42
|
+
return {
|
|
43
|
+
...info,
|
|
44
|
+
version,
|
|
45
|
+
url: await getURL(version),
|
|
46
|
+
beta: {
|
|
47
|
+
...beta,
|
|
48
|
+
url: await getURL(beta.version)
|
|
49
|
+
}
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* @inheritdoc
|
|
54
|
+
*/
|
|
55
|
+
async downloadAsar(info, signal, onDownloading) {
|
|
56
|
+
return await defaultDownloadAsar(info.url, this.getHeaders("octet-stream"), signal, onDownloading);
|
|
57
|
+
}
|
|
58
|
+
};
|
|
59
|
+
|
|
60
|
+
//#endregion
|
|
61
|
+
//#region src/provider/github/api.ts
|
|
62
|
+
const ERROR_MSG = "Cannot find UpdateJSON in latest release";
|
|
63
|
+
/**
|
|
64
|
+
* Update Provider for Github API, you need to upload `version.json` to release as well
|
|
65
|
+
* - check update from `https://api.github.com/repos/{user}/{repo}/releases?per_page=1`
|
|
66
|
+
* - download update json and get version and download url
|
|
67
|
+
* - download update asar from update info
|
|
68
|
+
*
|
|
69
|
+
* you can setup `urlHandler` in options to modify url before request
|
|
70
|
+
* @param options provider options
|
|
71
|
+
*/
|
|
72
|
+
var GitHubApiProvider = class extends BaseGitHubProvider {
|
|
73
|
+
name = "GithubApiProvider";
|
|
74
|
+
getHeaders(accept) {
|
|
75
|
+
return {
|
|
76
|
+
Accept: `application/${accept}`,
|
|
77
|
+
...this.options.token ? { Authorization: `token ${this.options.token}` } : {},
|
|
78
|
+
...this.options.extraHeaders
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* @inheritdoc
|
|
83
|
+
*/
|
|
84
|
+
async getVersionURL(versionPath, signal) {
|
|
85
|
+
const basename = versionPath.slice(versionPath.lastIndexOf("/") + 1);
|
|
86
|
+
const data = await defaultDownloadText(await this.parseURL(`https://api.github.com/repos/${this.options.user}/${this.options.repo}/releases?per_page=1`), this.getHeaders("vnd.github.v3+json"), signal, resolveJson);
|
|
87
|
+
const versionAssets = data[0]?.assets.find((asset) => asset.name === basename);
|
|
88
|
+
if (!versionAssets) throw new Error(`${ERROR_MSG}, ${"message" in data ? data.message : "please check the release assets"}`);
|
|
89
|
+
return versionAssets.browser_download_url;
|
|
90
|
+
}
|
|
91
|
+
};
|
|
92
|
+
|
|
93
|
+
//#endregion
|
|
94
|
+
//#region src/provider/github/atom.ts
|
|
95
|
+
/**
|
|
96
|
+
* Update Provider for Github repo
|
|
97
|
+
* - check update from `https://github.com/{user}/{repo}/releases.atom`
|
|
98
|
+
* - download update json from `https://github.com/{user}/{repo}/releases/download/v{version}/{versionPath}`
|
|
99
|
+
* - download update asar from `https://github.com/{user}/{repo}/releases/download/v{version}/{name}-{version}.asar.gz`
|
|
100
|
+
*
|
|
101
|
+
* you can setup `urlHandler` in options to modify url before request
|
|
102
|
+
* @param options provider options
|
|
103
|
+
*/
|
|
104
|
+
var GitHubAtomProvider = class extends BaseGitHubProvider {
|
|
105
|
+
name = "GithubAtomProvider";
|
|
106
|
+
getHeaders(accept) {
|
|
107
|
+
return {
|
|
108
|
+
Accept: `application/${accept}`,
|
|
109
|
+
...this.options.extraHeaders
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* @inheritdoc
|
|
114
|
+
*/
|
|
115
|
+
async getVersionURL(versionPath, signal) {
|
|
116
|
+
return `releases/download/v${await defaultDownloadText(await this.parseURL(`releases.atom`), this.getHeaders("xml"), signal, (data, resolve, reject) => {
|
|
117
|
+
const result = data.match(/<entry>\s*<id>([^<]*\/)?([^/<]+)<\/id>/)?.[2];
|
|
118
|
+
if (result) resolve(result);
|
|
119
|
+
else reject("No tag matched");
|
|
120
|
+
})}/${versionPath}`;
|
|
121
|
+
}
|
|
122
|
+
};
|
|
123
|
+
|
|
124
|
+
//#endregion
|
|
125
|
+
//#region src/provider/github/file.ts
|
|
126
|
+
/**
|
|
127
|
+
* Update Provider for Github repo
|
|
128
|
+
* - download update json from `https://github.com/{user}/{repo}/raw/HEAD/{versionPath}`
|
|
129
|
+
* - download update asar from `https://github.com/{user}/{repo}/releases/download/v{version}/{name}-{version}.asar.gz`
|
|
130
|
+
*
|
|
131
|
+
* you can setup `urlHandler` in options to modify url before request
|
|
132
|
+
* @param options provider options
|
|
133
|
+
*/
|
|
134
|
+
var GitHubProvider = class extends BaseGitHubProvider {
|
|
135
|
+
name = "GithubProvider";
|
|
136
|
+
constructor(options) {
|
|
137
|
+
super(options);
|
|
138
|
+
if (!options.branch) this.options.branch = "HEAD";
|
|
139
|
+
}
|
|
140
|
+
getHeaders(accept) {
|
|
141
|
+
return {
|
|
142
|
+
Accept: `application/${accept}`,
|
|
143
|
+
...this.options.extraHeaders
|
|
144
|
+
};
|
|
145
|
+
}
|
|
146
|
+
getVersionURL(versionPath) {
|
|
147
|
+
return `raw/${this.options.branch}/${versionPath}`;
|
|
148
|
+
}
|
|
149
|
+
};
|
|
150
|
+
|
|
151
|
+
//#endregion
|
|
152
|
+
export { BaseGitHubProvider, BaseProvider, GitHubApiProvider, GitHubAtomProvider, GitHubProvider, defaultDownloadAsar, defaultDownloadText, defaultDownloadUpdateJSON, downloadUtil, getHeader, resolveJson };
|