@inweb/client 26.6.4 → 26.6.6
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/dist/client.js +38 -44
- package/dist/client.js.map +1 -1
- package/dist/client.min.js +1 -1
- package/dist/client.module.js +18 -14
- package/dist/client.module.js.map +1 -1
- package/lib/Api/Assembly.d.ts +6 -3
- package/lib/Api/File.d.ts +6 -3
- package/lib/Api/HttpClient.d.ts +1 -1
- package/lib/Api/IHttpClient.d.ts +4 -2
- package/lib/Api/Model.d.ts +5 -2
- package/package.json +2 -2
- package/src/Api/Assembly.ts +7 -4
- package/src/Api/Endpoint.ts +2 -0
- package/src/Api/File.ts +7 -4
- package/src/Api/HttpClient.ts +61 -75
- package/src/Api/IHttpClient.ts +4 -2
- package/src/Api/Model.ts +5 -2
package/lib/Api/Assembly.d.ts
CHANGED
|
@@ -250,14 +250,17 @@ export declare class Assembly extends Endpoint {
|
|
|
250
250
|
* descriptions, or geometry data.
|
|
251
251
|
*
|
|
252
252
|
* @param dataId - Resource file name.
|
|
253
|
-
* @param ranges - A
|
|
254
|
-
*
|
|
253
|
+
* @param ranges - A ranges of resource file contents to download. See
|
|
254
|
+
* {@link https://developer.mozilla.org/docs/Web/HTTP/Guides/Range_requests | HTTP range requests} for
|
|
255
|
+
* more details.
|
|
256
|
+
* @param requestId - Specify a non-empty `requestId` to append the `?requestId=` search parameter to
|
|
257
|
+
* the server request. If specified, server-side caching may not work.
|
|
255
258
|
* @param onProgress - Download progress callback.
|
|
256
259
|
* @param signal - An
|
|
257
260
|
* {@link https://developer.mozilla.org/docs/Web/API/AbortController | AbortController} signal. Allows
|
|
258
261
|
* to communicate with a fetch request and abort it if desired.
|
|
259
262
|
*/
|
|
260
|
-
downloadResourceRange(dataId: string, requestId: number, ranges: Array<{
|
|
263
|
+
downloadResourceRange(dataId: string, requestId: number | string, ranges: Array<{
|
|
261
264
|
begin: number;
|
|
262
265
|
end: number;
|
|
263
266
|
requestId: number;
|
package/lib/Api/File.d.ts
CHANGED
|
@@ -375,14 +375,17 @@ export declare class File extends Endpoint {
|
|
|
375
375
|
* contain model scene descriptions, or geometry data, or exported files.
|
|
376
376
|
*
|
|
377
377
|
* @param dataId - Resource file name.
|
|
378
|
-
* @param ranges - A
|
|
379
|
-
*
|
|
378
|
+
* @param ranges - A ranges of resource file contents to download. See
|
|
379
|
+
* {@link https://developer.mozilla.org/docs/Web/HTTP/Guides/Range_requests | HTTP range requests} for
|
|
380
|
+
* more details.
|
|
381
|
+
* @param requestId - Specify a non-empty `requestId` to append the `?requestId=` search parameter to
|
|
382
|
+
* the server request. If specified, server-side caching may not work.
|
|
380
383
|
* @param onProgress - Download progress callback.
|
|
381
384
|
* @param signal - An
|
|
382
385
|
* {@link https://developer.mozilla.org/docs/Web/API/AbortController | AbortController} signal. Allows
|
|
383
386
|
* to communicate with a fetch request and abort it if desired.
|
|
384
387
|
*/
|
|
385
|
-
downloadResourceRange(dataId: string, requestId: number, ranges: Array<{
|
|
388
|
+
downloadResourceRange(dataId: string, requestId: number | string, ranges: Array<{
|
|
386
389
|
begin: number;
|
|
387
390
|
end: number;
|
|
388
391
|
requestId: number;
|
package/lib/Api/HttpClient.d.ts
CHANGED
|
@@ -11,7 +11,7 @@ export declare class HttpClient implements IHttpClient {
|
|
|
11
11
|
delete(relativePath: string, init?: RequestInit): Promise<Response>;
|
|
12
12
|
uploadFile(relativePath: string, file: File, onProgress?: (progress: number) => void, init?: RequestInit): Promise<XMLHttpRequest>;
|
|
13
13
|
downloadFile(relativePath: string, onProgress?: (progress: number, chunk: Uint8Array) => void, init?: RequestInit): Promise<Response>;
|
|
14
|
-
downloadFileRange(relativePath: string, reserved: number, ranges: Array<{
|
|
14
|
+
downloadFileRange(relativePath: string, reserved: number | string, ranges: Array<{
|
|
15
15
|
begin: number;
|
|
16
16
|
end: number;
|
|
17
17
|
requestId: number;
|
package/lib/Api/IHttpClient.d.ts
CHANGED
|
@@ -89,12 +89,14 @@ export interface IHttpClient {
|
|
|
89
89
|
*
|
|
90
90
|
* @param relativePath - Download endpoint relative path.
|
|
91
91
|
* @param reserved - Reserved, do not use.
|
|
92
|
-
* @param ranges - A ranges of resource file contents to download.
|
|
92
|
+
* @param ranges - A ranges of resource file contents to download. See
|
|
93
|
+
* {@link https://developer.mozilla.org/docs/Web/HTTP/Guides/Range_requests | HTTP range requests} for
|
|
94
|
+
* more details.
|
|
93
95
|
* @param onProgress - Download progress callback.
|
|
94
96
|
* @param init - A set of options that can be used to configure a fetch request. See
|
|
95
97
|
* {@link https://developer.mozilla.org/docs/Web/API/RequestInit | RequestInit} for more details.
|
|
96
98
|
*/
|
|
97
|
-
downloadFileRange(relativePath: string, reserved: number, ranges: Array<{
|
|
99
|
+
downloadFileRange(relativePath: string, reserved: number | string, ranges: Array<{
|
|
98
100
|
begin: number;
|
|
99
101
|
end: number;
|
|
100
102
|
requestId: number;
|
package/lib/Api/Model.d.ts
CHANGED
|
@@ -146,8 +146,11 @@ export declare class Model extends Endpoint {
|
|
|
146
146
|
* or geometry data.
|
|
147
147
|
*
|
|
148
148
|
* @param dataId - Resource file name.
|
|
149
|
-
* @param ranges - A
|
|
150
|
-
*
|
|
149
|
+
* @param ranges - A ranges of resource file contents to download. See
|
|
150
|
+
* {@link https://developer.mozilla.org/docs/Web/HTTP/Guides/Range_requests | HTTP range requests} for
|
|
151
|
+
* more details.
|
|
152
|
+
* @param requestId - Specify a non-empty `requestId` to append the `?requestId=` search parameter to
|
|
153
|
+
* the server request. If specified, server-side caching may not work.
|
|
151
154
|
* @param onProgress - Download progress callback.
|
|
152
155
|
* @param signal - An
|
|
153
156
|
* {@link https://developer.mozilla.org/docs/Web/API/AbortController | AbortController} signal. Allows
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@inweb/client",
|
|
3
|
-
"version": "26.6.
|
|
3
|
+
"version": "26.6.6",
|
|
4
4
|
"description": "JavaScript REST API client for the Open Cloud Server",
|
|
5
5
|
"homepage": "https://cloud.opendesign.com/docs/index.html",
|
|
6
6
|
"license": "SEE LICENSE IN LICENSE",
|
|
@@ -26,6 +26,6 @@
|
|
|
26
26
|
"docs": "typedoc"
|
|
27
27
|
},
|
|
28
28
|
"dependencies": {
|
|
29
|
-
"@inweb/eventemitter2": "~26.6.
|
|
29
|
+
"@inweb/eventemitter2": "~26.6.6"
|
|
30
30
|
}
|
|
31
31
|
}
|
package/src/Api/Assembly.ts
CHANGED
|
@@ -435,8 +435,11 @@ export class Assembly extends Endpoint {
|
|
|
435
435
|
* descriptions, or geometry data.
|
|
436
436
|
*
|
|
437
437
|
* @param dataId - Resource file name.
|
|
438
|
-
* @param ranges - A
|
|
439
|
-
*
|
|
438
|
+
* @param ranges - A ranges of resource file contents to download. See
|
|
439
|
+
* {@link https://developer.mozilla.org/docs/Web/HTTP/Guides/Range_requests | HTTP range requests} for
|
|
440
|
+
* more details.
|
|
441
|
+
* @param requestId - Specify a non-empty `requestId` to append the `?requestId=` search parameter to
|
|
442
|
+
* the server request. If specified, server-side caching may not work.
|
|
440
443
|
* @param onProgress - Download progress callback.
|
|
441
444
|
* @param signal - An
|
|
442
445
|
* {@link https://developer.mozilla.org/docs/Web/API/AbortController | AbortController} signal. Allows
|
|
@@ -444,14 +447,14 @@ export class Assembly extends Endpoint {
|
|
|
444
447
|
*/
|
|
445
448
|
downloadResourceRange(
|
|
446
449
|
dataId: string,
|
|
447
|
-
requestId: number,
|
|
450
|
+
requestId: number | string,
|
|
448
451
|
ranges: Array<{ begin: number; end: number; requestId: number }>,
|
|
449
452
|
onProgress?: (progress: number, chunk: Uint8Array, requestId: number) => void,
|
|
450
453
|
signal?: AbortSignal
|
|
451
454
|
): Promise<ArrayBuffer> {
|
|
452
455
|
return this.httpClient
|
|
453
456
|
.downloadFileRange(
|
|
454
|
-
this.getEndpointPath(`/downloads/${dataId}?requestId
|
|
457
|
+
this.getEndpointPath(`/downloads/${dataId}${requestId ? "?requestId=" + requestId : ""}`),
|
|
455
458
|
requestId,
|
|
456
459
|
ranges,
|
|
457
460
|
onProgress,
|
package/src/Api/Endpoint.ts
CHANGED
|
@@ -54,6 +54,8 @@ export class Endpoint {
|
|
|
54
54
|
this.headers = headers;
|
|
55
55
|
}
|
|
56
56
|
|
|
57
|
+
// Internal: append the `?version=` search param to the specified relative path.
|
|
58
|
+
|
|
57
59
|
appendVersionParam(relativePath: string): string {
|
|
58
60
|
if (this._useVersion === undefined) return relativePath;
|
|
59
61
|
const delimiter = relativePath.includes("?") ? "&" : "?";
|
package/src/Api/File.ts
CHANGED
|
@@ -606,8 +606,11 @@ export class File extends Endpoint {
|
|
|
606
606
|
* contain model scene descriptions, or geometry data, or exported files.
|
|
607
607
|
*
|
|
608
608
|
* @param dataId - Resource file name.
|
|
609
|
-
* @param ranges - A
|
|
610
|
-
*
|
|
609
|
+
* @param ranges - A ranges of resource file contents to download. See
|
|
610
|
+
* {@link https://developer.mozilla.org/docs/Web/HTTP/Guides/Range_requests | HTTP range requests} for
|
|
611
|
+
* more details.
|
|
612
|
+
* @param requestId - Specify a non-empty `requestId` to append the `?requestId=` search parameter to
|
|
613
|
+
* the server request. If specified, server-side caching may not work.
|
|
611
614
|
* @param onProgress - Download progress callback.
|
|
612
615
|
* @param signal - An
|
|
613
616
|
* {@link https://developer.mozilla.org/docs/Web/API/AbortController | AbortController} signal. Allows
|
|
@@ -615,14 +618,14 @@ export class File extends Endpoint {
|
|
|
615
618
|
*/
|
|
616
619
|
downloadResourceRange(
|
|
617
620
|
dataId: string,
|
|
618
|
-
requestId: number,
|
|
621
|
+
requestId: number | string,
|
|
619
622
|
ranges: Array<{ begin: number; end: number; requestId: number }>,
|
|
620
623
|
onProgress?: (progress: number, chunk: Uint8Array, requestId: number) => void,
|
|
621
624
|
signal?: AbortSignal
|
|
622
625
|
): Promise<ArrayBuffer> {
|
|
623
626
|
return this.httpClient
|
|
624
627
|
.downloadFileRange(
|
|
625
|
-
this.getEndpointPath(`/downloads/${dataId}?requestId
|
|
628
|
+
this.getEndpointPath(`/downloads/${dataId}${requestId ? "?requestId=" + requestId : ""}`),
|
|
626
629
|
requestId,
|
|
627
630
|
ranges,
|
|
628
631
|
onProgress,
|
package/src/Api/HttpClient.ts
CHANGED
|
@@ -85,101 +85,87 @@ export class HttpClient implements IHttpClient {
|
|
|
85
85
|
});
|
|
86
86
|
}
|
|
87
87
|
|
|
88
|
-
// async downloadFile(
|
|
89
|
-
// relativePath: string,
|
|
90
|
-
// onProgress?: (progress: number, chunk: Uint8Array) => void,
|
|
91
|
-
// init: RequestInit = {}
|
|
92
|
-
// ): Promise<Response> {
|
|
93
|
-
// const response = await this.get(relativePath, init);
|
|
94
|
-
// const teedOff = response.body.tee();
|
|
95
|
-
// if (onProgress) {
|
|
96
|
-
// const contentLength = response.headers.get("Content-Length");
|
|
97
|
-
// const total = parseInt(contentLength, 10) || 1;
|
|
98
|
-
// let loaded = 0;
|
|
99
|
-
// const reader = teedOff[0].getReader();
|
|
100
|
-
// reader.read().then(function processChunk({ done, value }) {
|
|
101
|
-
// if (done) return;
|
|
102
|
-
// loaded += value.length;
|
|
103
|
-
// onProgress(loaded / total, value);
|
|
104
|
-
// reader.read().then(processChunk);
|
|
105
|
-
// });
|
|
106
|
-
// }
|
|
107
|
-
// return new Response(teedOff[1]);
|
|
108
|
-
// }
|
|
109
|
-
|
|
110
88
|
async downloadFile(
|
|
111
89
|
relativePath: string,
|
|
112
90
|
onProgress?: (progress: number, chunk: Uint8Array) => void,
|
|
113
91
|
init: RequestInit = {}
|
|
114
92
|
): Promise<Response> {
|
|
115
93
|
const response = await this.get(relativePath, init);
|
|
94
|
+
if (!onProgress) return response;
|
|
95
|
+
|
|
116
96
|
const contentLength = response.headers.get("Content-Length");
|
|
117
97
|
const total = parseInt(contentLength || "", 10) || 1;
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
98
|
+
|
|
99
|
+
const stream = new ReadableStream({
|
|
100
|
+
async start(controller) {
|
|
101
|
+
const reader = response.body.getReader();
|
|
102
|
+
let loaded = 0;
|
|
103
|
+
while (true) {
|
|
104
|
+
const { done, value } = await reader.read();
|
|
105
|
+
if (done) break;
|
|
106
|
+
controller.enqueue(value);
|
|
107
|
+
loaded += value.length;
|
|
108
|
+
onProgress(loaded / total, value);
|
|
109
|
+
}
|
|
110
|
+
controller.close();
|
|
111
|
+
},
|
|
112
|
+
});
|
|
113
|
+
|
|
114
|
+
return new Response(stream);
|
|
134
115
|
}
|
|
135
116
|
|
|
136
117
|
async downloadFileRange(
|
|
137
118
|
relativePath: string,
|
|
138
|
-
reserved: number,
|
|
119
|
+
reserved: number | string,
|
|
139
120
|
ranges: Array<{ begin: number; end: number; requestId: number }>,
|
|
140
121
|
onProgress?: (progress: number, chunk: Uint8Array, requestId: number) => void,
|
|
141
122
|
init: RequestInit = {}
|
|
142
123
|
): Promise<Response> {
|
|
143
|
-
const headers = {
|
|
144
|
-
|
|
124
|
+
const headers = {
|
|
125
|
+
...init.headers,
|
|
126
|
+
Range: "bytes=" + ranges.map((x) => `${x.begin}-${x.end}`).join(","),
|
|
127
|
+
};
|
|
145
128
|
const response = await this.get(relativePath, { ...init, headers });
|
|
129
|
+
if (!onProgress) return response;
|
|
130
|
+
|
|
146
131
|
const contentLength = response.headers.get("content-length");
|
|
147
132
|
const total = parseInt(contentLength || "", 10) || 1;
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
}
|
|
133
|
+
|
|
134
|
+
const stream = new ReadableStream({
|
|
135
|
+
async start(controller) {
|
|
136
|
+
const reader = response.body.getReader();
|
|
137
|
+
let loaded = 0;
|
|
138
|
+
let rangedIndex = 0;
|
|
139
|
+
let rangePos = 0;
|
|
140
|
+
while (true) {
|
|
141
|
+
const { done, value } = await reader.read();
|
|
142
|
+
if (done) break;
|
|
143
|
+
controller.enqueue(value);
|
|
144
|
+
loaded += value.length;
|
|
145
|
+
let chunkLeft = value.length;
|
|
146
|
+
let chunkPos = 0;
|
|
147
|
+
while (chunkLeft > 0) {
|
|
148
|
+
const range = ranges[rangedIndex];
|
|
149
|
+
const rangeLeft = range.end - range.begin + 1 - rangePos;
|
|
150
|
+
if (chunkLeft < rangeLeft) {
|
|
151
|
+
const chunk = value.subarray(chunkPos, chunkPos + chunkLeft);
|
|
152
|
+
onProgress(loaded / total, chunk, range.requestId);
|
|
153
|
+
rangePos += chunkLeft;
|
|
154
|
+
chunkLeft = 0;
|
|
155
|
+
} else {
|
|
156
|
+
const chunk = value.subarray(chunkPos, chunkPos + rangeLeft);
|
|
157
|
+
onProgress(loaded / total, chunk, range.requestId);
|
|
158
|
+
chunkPos += rangeLeft;
|
|
159
|
+
chunkLeft -= rangeLeft;
|
|
160
|
+
rangedIndex++;
|
|
161
|
+
rangePos = 0;
|
|
178
162
|
}
|
|
179
163
|
}
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
}
|
|
183
|
-
);
|
|
164
|
+
}
|
|
165
|
+
controller.close();
|
|
166
|
+
},
|
|
167
|
+
});
|
|
168
|
+
|
|
169
|
+
return new Response(stream);
|
|
184
170
|
}
|
|
185
171
|
}
|
package/src/Api/IHttpClient.ts
CHANGED
|
@@ -131,14 +131,16 @@ export interface IHttpClient {
|
|
|
131
131
|
*
|
|
132
132
|
* @param relativePath - Download endpoint relative path.
|
|
133
133
|
* @param reserved - Reserved, do not use.
|
|
134
|
-
* @param ranges - A ranges of resource file contents to download.
|
|
134
|
+
* @param ranges - A ranges of resource file contents to download. See
|
|
135
|
+
* {@link https://developer.mozilla.org/docs/Web/HTTP/Guides/Range_requests | HTTP range requests} for
|
|
136
|
+
* more details.
|
|
135
137
|
* @param onProgress - Download progress callback.
|
|
136
138
|
* @param init - A set of options that can be used to configure a fetch request. See
|
|
137
139
|
* {@link https://developer.mozilla.org/docs/Web/API/RequestInit | RequestInit} for more details.
|
|
138
140
|
*/
|
|
139
141
|
downloadFileRange(
|
|
140
142
|
relativePath: string,
|
|
141
|
-
reserved: number,
|
|
143
|
+
reserved: number | string,
|
|
142
144
|
ranges: Array<{ begin: number; end: number; requestId: number }>,
|
|
143
145
|
onProgress?: (progress: number, chunk: Uint8Array, requestId: number) => void,
|
|
144
146
|
init?: RequestInit
|
package/src/Api/Model.ts
CHANGED
|
@@ -253,8 +253,11 @@ export class Model extends Endpoint {
|
|
|
253
253
|
* or geometry data.
|
|
254
254
|
*
|
|
255
255
|
* @param dataId - Resource file name.
|
|
256
|
-
* @param ranges - A
|
|
257
|
-
*
|
|
256
|
+
* @param ranges - A ranges of resource file contents to download. See
|
|
257
|
+
* {@link https://developer.mozilla.org/docs/Web/HTTP/Guides/Range_requests | HTTP range requests} for
|
|
258
|
+
* more details.
|
|
259
|
+
* @param requestId - Specify a non-empty `requestId` to append the `?requestId=` search parameter to
|
|
260
|
+
* the server request. If specified, server-side caching may not work.
|
|
258
261
|
* @param onProgress - Download progress callback.
|
|
259
262
|
* @param signal - An
|
|
260
263
|
* {@link https://developer.mozilla.org/docs/Web/API/AbortController | AbortController} signal. Allows
|