chrome-webstore-upload 3.1.4 → 3.2.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/index.d.ts +2 -1
- package/index.js +14 -2
- package/package.json +2 -2
package/index.d.ts
CHANGED
|
@@ -28,10 +28,11 @@ declare class APIClient {
|
|
|
28
28
|
refreshToken: string;
|
|
29
29
|
clientSecret: string | undefined;
|
|
30
30
|
constructor(options: APIClientOptions);
|
|
31
|
-
uploadExisting(readStream: ReadStream | ReadableStream, token?: string | Promise<string
|
|
31
|
+
uploadExisting(readStream: ReadStream | ReadableStream, token?: string | Promise<string>, maxAwaitInProgressResponseSeconds?: number): Promise<ItemResource>;
|
|
32
32
|
publish(target?: string, token?: string | Promise<string>, deployPercentage?: number | undefined): Promise<PublishResponse>;
|
|
33
33
|
get(projection?: string, token?: string | Promise<string>): Promise<ItemResource>;
|
|
34
34
|
fetchToken(): Promise<string>;
|
|
35
|
+
_waitUploadSuccess(response: ItemResource, maxAwaitInProgressResponseSeconds: number): Promise<ItemResource>;
|
|
35
36
|
_headers(token: string): {
|
|
36
37
|
Authorization: string;
|
|
37
38
|
'x-goog-api-version': string;
|
package/index.js
CHANGED
|
@@ -14,6 +14,7 @@ const publishURI = ({ extensionId, target = 'default', deployPercentage }) => {
|
|
|
14
14
|
};
|
|
15
15
|
const getURI = (id, projection) => `${rootURI}/chromewebstore/v1.1/items/${id}?projection=${projection}`;
|
|
16
16
|
const requiredFields = ['extensionId', 'clientId', 'refreshToken'];
|
|
17
|
+
const retryIntervalSeconds = 2;
|
|
17
18
|
function throwIfNotOk(request, response) {
|
|
18
19
|
if (!request.ok) {
|
|
19
20
|
const error = new Error(request.statusText ?? 'Unknown error');
|
|
@@ -43,7 +44,7 @@ class APIClient {
|
|
|
43
44
|
this.refreshToken = options.refreshToken;
|
|
44
45
|
this.clientSecret = options.clientSecret;
|
|
45
46
|
}
|
|
46
|
-
async uploadExisting(readStream, token = this.fetchToken()) {
|
|
47
|
+
async uploadExisting(readStream, token = this.fetchToken(), maxAwaitInProgressResponseSeconds = 0) {
|
|
47
48
|
if (!readStream) {
|
|
48
49
|
throw new Error('Read stream missing');
|
|
49
50
|
}
|
|
@@ -58,7 +59,7 @@ class APIClient {
|
|
|
58
59
|
});
|
|
59
60
|
const response = await request.json();
|
|
60
61
|
throwIfNotOk(request, response);
|
|
61
|
-
return response;
|
|
62
|
+
return this._waitUploadSuccess(response, maxAwaitInProgressResponseSeconds);
|
|
62
63
|
}
|
|
63
64
|
async publish(target = 'default', token = this.fetchToken(), deployPercentage = undefined) {
|
|
64
65
|
const { extensionId } = this;
|
|
@@ -102,6 +103,17 @@ class APIClient {
|
|
|
102
103
|
throwIfNotOk(request, response);
|
|
103
104
|
return response.access_token;
|
|
104
105
|
}
|
|
106
|
+
async _waitUploadSuccess(response, maxAwaitInProgressResponseSeconds) {
|
|
107
|
+
if (response.uploadState !== 'IN_PROGRESS' || maxAwaitInProgressResponseSeconds < retryIntervalSeconds) {
|
|
108
|
+
return response;
|
|
109
|
+
}
|
|
110
|
+
// Wait before checking again
|
|
111
|
+
await new Promise(resolve => {
|
|
112
|
+
setTimeout(resolve, retryIntervalSeconds * 1000);
|
|
113
|
+
});
|
|
114
|
+
// Retry fetching the item resource
|
|
115
|
+
return this._waitUploadSuccess(await this.get('DRAFT'), maxAwaitInProgressResponseSeconds - retryIntervalSeconds);
|
|
116
|
+
}
|
|
105
117
|
_headers(token) {
|
|
106
118
|
return {
|
|
107
119
|
Authorization: `Bearer ${token}`,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "chrome-webstore-upload",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.2.0",
|
|
4
4
|
"description": "Upload Chrome Extensions to the Chrome Web Store",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"chrome",
|
|
@@ -68,7 +68,7 @@
|
|
|
68
68
|
"node-fetch": "^2.7.0",
|
|
69
69
|
"typescript": "^5.3.3",
|
|
70
70
|
"utc-version": "^2.0.2",
|
|
71
|
-
"vitest": "^
|
|
71
|
+
"vitest": "^3.2.4",
|
|
72
72
|
"xo": "^0.58.0"
|
|
73
73
|
},
|
|
74
74
|
"engines": {
|