@meframe/server 0.0.2 → 0.0.4
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/cjs/ServerExporter.cjs.js +16 -0
- package/dist/cjs/ServerExporter.cjs.js.map +1 -0
- package/dist/cjs/ServerExporterBase.js +299 -0
- package/dist/cjs/ServerExporterBase.js.map +1 -0
- package/dist/cjs/index.cjs.js +6 -0
- package/dist/cjs/index.cjs.js.map +1 -0
- package/dist/cjs/package.json +3 -0
- package/dist/cjs/runner/runner.js +76 -0
- package/dist/cjs/runner/runner.js.map +1 -0
- package/dist/cjs/types.js +3 -0
- package/dist/cjs/types.js.map +1 -0
- package/dist/cjs/utils/abort-gate.js +52 -0
- package/dist/cjs/utils/abort-gate.js.map +1 -0
- package/dist/esm/ServerExporter.d.ts +5 -0
- package/dist/esm/ServerExporter.d.ts.map +1 -0
- package/dist/esm/ServerExporter.js +8 -0
- package/dist/esm/ServerExporter.js.map +1 -0
- package/dist/{ServerExporter.d.ts → esm/ServerExporterBase.d.ts} +5 -2
- package/dist/esm/ServerExporterBase.d.ts.map +1 -0
- package/dist/{ServerExporter.js → esm/ServerExporterBase.js} +113 -72
- package/dist/esm/ServerExporterBase.js.map +1 -0
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/{runner → esm/runner}/runner.d.ts +0 -1
- package/dist/esm/runner/runner.d.ts.map +1 -0
- package/dist/{runner → esm/runner}/runner.js +27 -5
- package/dist/esm/runner/runner.js.map +1 -0
- package/dist/{types.d.ts → esm/types.d.ts} +5 -0
- package/dist/esm/types.d.ts.map +1 -0
- package/dist/esm/types.js.map +1 -0
- package/dist/esm/utils/abort-gate.d.ts +10 -0
- package/dist/esm/utils/abort-gate.d.ts.map +1 -0
- package/dist/esm/utils/abort-gate.js +45 -0
- package/dist/esm/utils/abort-gate.js.map +1 -0
- package/dist/runner-browser/runner.mjs +2220 -1990
- package/package.json +12 -10
- package/dist/ServerExporter.d.ts.map +0 -1
- package/dist/ServerExporter.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/runner/runner-browser.d.ts +0 -21
- package/dist/runner/runner-browser.d.ts.map +0 -1
- package/dist/runner/runner-browser.js +0 -223
- package/dist/runner/runner-browser.js.map +0 -1
- package/dist/runner/runner.d.ts.map +0 -1
- package/dist/runner/runner.js.map +0 -1
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js.map +0 -1
- /package/dist/{index.d.ts → esm/index.d.ts} +0 -0
- /package/dist/{index.js → esm/index.js} +0 -0
- /package/dist/{types.js → esm/types.js} +0 -0
|
@@ -4,7 +4,8 @@ import os from 'node:os';
|
|
|
4
4
|
import path from 'node:path';
|
|
5
5
|
import { launch } from 'puppeteer-core';
|
|
6
6
|
import { runExportInPage } from './runner/runner.js';
|
|
7
|
-
|
|
7
|
+
import { AbortError, createAbortError, createAbortGate, throwIfAborted, } from './utils/abort-gate.js';
|
|
8
|
+
export class ServerExporterBase {
|
|
8
9
|
store;
|
|
9
10
|
options;
|
|
10
11
|
maxJobs;
|
|
@@ -19,24 +20,56 @@ export class ServerExporter {
|
|
|
19
20
|
this.runnerModuleCodePromise = Promise.resolve(options.runner.moduleCode);
|
|
20
21
|
}
|
|
21
22
|
}
|
|
22
|
-
|
|
23
|
+
createAbortError(message = 'Export aborted') {
|
|
24
|
+
return createAbortError(message);
|
|
25
|
+
}
|
|
26
|
+
async abortMultipartUploadBestEffort(input) {
|
|
27
|
+
if (!input.uploadId)
|
|
28
|
+
return;
|
|
29
|
+
try {
|
|
30
|
+
await this.store.abortMultipartUpload({ key: input.key, uploadId: input.uploadId });
|
|
31
|
+
}
|
|
32
|
+
catch (abortErr) {
|
|
33
|
+
input.logger.warn('[ServerExporter] abort failed', abortErr);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
async acquireSlot(abortSignal) {
|
|
37
|
+
if (abortSignal?.aborted) {
|
|
38
|
+
throw this.createAbortError();
|
|
39
|
+
}
|
|
23
40
|
if (this.activeJobs < this.maxJobs) {
|
|
24
41
|
this.activeJobs += 1;
|
|
25
42
|
return;
|
|
26
43
|
}
|
|
27
|
-
await new Promise((resolve) => {
|
|
28
|
-
|
|
44
|
+
await new Promise((resolve, reject) => {
|
|
45
|
+
const waiter = { resolve, reject, abortSignal };
|
|
46
|
+
if (abortSignal) {
|
|
47
|
+
const abortListener = () => {
|
|
48
|
+
const idx = this.waiters.indexOf(waiter);
|
|
49
|
+
if (idx >= 0)
|
|
50
|
+
this.waiters.splice(idx, 1);
|
|
51
|
+
abortSignal.removeEventListener('abort', abortListener);
|
|
52
|
+
reject(this.createAbortError());
|
|
53
|
+
};
|
|
54
|
+
waiter.abortListener = abortListener;
|
|
55
|
+
abortSignal.addEventListener('abort', abortListener, { once: true });
|
|
56
|
+
}
|
|
57
|
+
this.waiters.push(waiter);
|
|
29
58
|
});
|
|
30
59
|
this.activeJobs += 1;
|
|
31
60
|
}
|
|
32
61
|
releaseSlot() {
|
|
33
62
|
this.activeJobs -= 1;
|
|
34
63
|
const next = this.waiters.shift();
|
|
35
|
-
if (next)
|
|
36
|
-
next
|
|
64
|
+
if (next) {
|
|
65
|
+
if (next.abortSignal && next.abortListener) {
|
|
66
|
+
next.abortSignal.removeEventListener('abort', next.abortListener);
|
|
67
|
+
}
|
|
68
|
+
next.resolve();
|
|
69
|
+
}
|
|
37
70
|
}
|
|
38
71
|
async exportToStore(input) {
|
|
39
|
-
await this.acquireSlot();
|
|
72
|
+
await this.acquireSlot(input.abortSignal);
|
|
40
73
|
const jobId = crypto.randomUUID();
|
|
41
74
|
const logger = this.options.logger ?? console;
|
|
42
75
|
const t0 = Date.now();
|
|
@@ -51,6 +84,7 @@ export class ServerExporter {
|
|
|
51
84
|
};
|
|
52
85
|
const partSizeBytes = this.options.upload?.partSizeBytes ?? 8 * 1024 * 1024;
|
|
53
86
|
const contentType = this.options.upload?.contentType ?? 'video/mp4';
|
|
87
|
+
const partUrlExpiresInSeconds = this.options.upload?.partUrlExpiresInSeconds ?? 600;
|
|
54
88
|
if (partSizeBytes < 5 * 1024 * 1024) {
|
|
55
89
|
throw new Error('upload.partSizeBytes must be >= 5 MiB for multipart upload');
|
|
56
90
|
}
|
|
@@ -59,10 +93,14 @@ export class ServerExporter {
|
|
|
59
93
|
`${new Date().toISOString().replace(/[:.]/g, '-')}-${jobId}.mp4`;
|
|
60
94
|
let browser = null;
|
|
61
95
|
let page = null;
|
|
62
|
-
let abortListener = null;
|
|
63
96
|
let uploadId = null;
|
|
64
97
|
let userDataDir = null;
|
|
65
98
|
let abortedByUser = false;
|
|
99
|
+
const { abortPromise, dispose: disposeAbortGate } = createAbortGate(input.abortSignal, () => {
|
|
100
|
+
abortedByUser = true;
|
|
101
|
+
// Hard-stop the page so the job can exit quickly (runner promise rejects on page close).
|
|
102
|
+
void page?.close({ runBeforeUnload: false }).catch(() => { });
|
|
103
|
+
});
|
|
66
104
|
try {
|
|
67
105
|
log('Preparing job', {
|
|
68
106
|
key,
|
|
@@ -70,8 +108,10 @@ export class ServerExporter {
|
|
|
70
108
|
headless: this.options.browser?.headless ?? true,
|
|
71
109
|
executablePath: this.options.browser?.executablePath,
|
|
72
110
|
});
|
|
111
|
+
throwIfAborted(input.abortSignal);
|
|
73
112
|
userDataDir = await fs.mkdtemp(path.join(this.options.browser?.userDataDirBase ?? os.tmpdir(), 'meframe-server-'));
|
|
74
113
|
log('Created userDataDir', { userDataDir });
|
|
114
|
+
throwIfAborted(input.abortSignal);
|
|
75
115
|
const uploadInit = await this.store.createMultipartUpload({
|
|
76
116
|
key,
|
|
77
117
|
contentType,
|
|
@@ -87,9 +127,11 @@ export class ServerExporter {
|
|
|
87
127
|
this.options.onProgress?.({ jobId, ...evt });
|
|
88
128
|
};
|
|
89
129
|
log('Loading runner bundle...');
|
|
130
|
+
throwIfAborted(input.abortSignal);
|
|
90
131
|
const runnerModuleCode = await this.getRunnerModuleCode();
|
|
91
132
|
log('Runner bundle loaded', { bytes: runnerModuleCode.length });
|
|
92
133
|
log('Launching browser...');
|
|
134
|
+
throwIfAborted(input.abortSignal);
|
|
93
135
|
browser = await launch({
|
|
94
136
|
headless: this.options.browser?.headless ?? true,
|
|
95
137
|
executablePath: this.options.browser?.executablePath,
|
|
@@ -98,55 +140,55 @@ export class ServerExporter {
|
|
|
98
140
|
});
|
|
99
141
|
log('Browser launched');
|
|
100
142
|
log('Creating page...');
|
|
143
|
+
throwIfAborted(input.abortSignal);
|
|
101
144
|
page = await browser.newPage();
|
|
102
145
|
log('Page created');
|
|
103
146
|
// Forward runner logs / errors to Node side for observability.
|
|
104
|
-
page.on('console', (msg) => logger.info(
|
|
105
|
-
page.on('pageerror', (err) => logger.error(
|
|
106
|
-
page.on('error', (err) => logger.error(
|
|
147
|
+
page.on('console', (msg) => logger.info(`[runner:console][${jobId}][${msg?.type?.() ?? 'log'}]`, msg.text()));
|
|
148
|
+
page.on('pageerror', (err) => logger.error(`[runner:pageerror][${jobId}]`, err));
|
|
149
|
+
page.on('error', (err) => logger.error(`[runner:error][${jobId}]`, err));
|
|
107
150
|
page.on('requestfailed', (req) => {
|
|
108
|
-
|
|
151
|
+
const failure = req?.failure?.();
|
|
152
|
+
if (failure?.errorText === 'net::ERR_ABORTED')
|
|
153
|
+
return;
|
|
154
|
+
logger.warn(`[runner:requestfailed][${jobId}]`, {
|
|
109
155
|
url: req?.url?.(),
|
|
110
156
|
method: req?.method?.(),
|
|
111
|
-
failure
|
|
157
|
+
failure,
|
|
112
158
|
});
|
|
113
159
|
});
|
|
114
|
-
if (input.abortSignal) {
|
|
115
|
-
abortListener = () => {
|
|
116
|
-
// Best-effort; page may already be closed.
|
|
117
|
-
abortedByUser = true;
|
|
118
|
-
void page?.evaluate(() => window.__serverAbort?.()).catch(() => { });
|
|
119
|
-
};
|
|
120
|
-
input.abortSignal.addEventListener('abort', abortListener);
|
|
121
|
-
}
|
|
122
160
|
log('Running export in page...');
|
|
123
|
-
await
|
|
124
|
-
|
|
125
|
-
|
|
161
|
+
await Promise.race([
|
|
162
|
+
runExportInPage(page, {
|
|
163
|
+
requestPartUrl: async (partNumber) => this.store.getUploadPartUrl({
|
|
164
|
+
key,
|
|
165
|
+
uploadId: uploadId,
|
|
166
|
+
partNumber,
|
|
167
|
+
expiresInSeconds: partUrlExpiresInSeconds,
|
|
168
|
+
}),
|
|
169
|
+
reportPartDone: async (partNumber, etag) => {
|
|
170
|
+
const normalizedEtag = etag.replaceAll('"', '');
|
|
171
|
+
parts.push({ partNumber, etag: normalizedEtag });
|
|
172
|
+
},
|
|
173
|
+
reportProgress: async (event) => onProgress(event),
|
|
174
|
+
reportError: async (message) => {
|
|
175
|
+
throw new Error(message);
|
|
176
|
+
},
|
|
177
|
+
reportComplete: async (_totalBytes) => {
|
|
178
|
+
// no-op, completion handled after runner resolves
|
|
179
|
+
},
|
|
180
|
+
}, {
|
|
181
|
+
model: input.model,
|
|
182
|
+
exportOptions: input.exportOptions ?? {},
|
|
183
|
+
partSizeBytes,
|
|
126
184
|
uploadId: uploadId,
|
|
127
|
-
|
|
128
|
-
|
|
185
|
+
key,
|
|
186
|
+
runnerModuleCode,
|
|
187
|
+
pageUrl: input.pageUrl,
|
|
188
|
+
workerPath: input.workerPath,
|
|
129
189
|
}),
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
},
|
|
133
|
-
reportProgress: async (event) => onProgress(event),
|
|
134
|
-
reportError: async (message) => {
|
|
135
|
-
throw new Error(message);
|
|
136
|
-
},
|
|
137
|
-
reportComplete: async (_totalBytes) => {
|
|
138
|
-
// no-op, completion handled after runner resolves
|
|
139
|
-
},
|
|
140
|
-
}, {
|
|
141
|
-
model: input.model,
|
|
142
|
-
exportOptions: input.exportOptions ?? {},
|
|
143
|
-
partSizeBytes,
|
|
144
|
-
uploadId: uploadId,
|
|
145
|
-
key,
|
|
146
|
-
runnerModuleCode,
|
|
147
|
-
pageUrl: input.pageUrl,
|
|
148
|
-
workerPath: input.workerPath,
|
|
149
|
-
});
|
|
190
|
+
abortPromise,
|
|
191
|
+
]);
|
|
150
192
|
log('Runner resolved');
|
|
151
193
|
parts.sort((a, b) => a.partNumber - b.partNumber);
|
|
152
194
|
this.assertPartsValid(parts);
|
|
@@ -158,6 +200,7 @@ export class ServerExporter {
|
|
|
158
200
|
catch (error) {
|
|
159
201
|
const isAbort = abortedByUser ||
|
|
160
202
|
input.abortSignal?.aborted === true ||
|
|
203
|
+
error instanceof AbortError ||
|
|
161
204
|
(error instanceof DOMException && error.name === 'AbortError') ||
|
|
162
205
|
(error instanceof Error && error.name === 'AbortError');
|
|
163
206
|
if (isAbort) {
|
|
@@ -166,37 +209,30 @@ export class ServerExporter {
|
|
|
166
209
|
else {
|
|
167
210
|
logger.error('[ServerExporter] export failed', error);
|
|
168
211
|
}
|
|
169
|
-
|
|
170
|
-
try {
|
|
171
|
-
const keyToAbort = key;
|
|
172
|
-
const uploadIdToAbort = uploadId ?? error?.uploadId;
|
|
173
|
-
if (uploadIdToAbort) {
|
|
174
|
-
await this.store.abortMultipartUpload({ key: keyToAbort, uploadId: uploadIdToAbort });
|
|
175
|
-
}
|
|
176
|
-
}
|
|
177
|
-
catch (abortErr) {
|
|
178
|
-
logger.warn('[ServerExporter] abort failed', abortErr);
|
|
179
|
-
}
|
|
212
|
+
await this.abortMultipartUploadBestEffort({ key, uploadId, logger });
|
|
180
213
|
if (isAbort) {
|
|
181
|
-
throw
|
|
214
|
+
throw this.createAbortError();
|
|
182
215
|
}
|
|
183
216
|
throw error;
|
|
184
217
|
}
|
|
185
218
|
finally {
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
const cleanupTasks = [];
|
|
219
|
+
disposeAbortGate();
|
|
220
|
+
// Cleanup order matters: Chromium may still be writing to the profile directory
|
|
221
|
+
// while closing. Close the browser first, then remove userDataDir.
|
|
190
222
|
if (browser) {
|
|
191
|
-
|
|
223
|
+
try {
|
|
224
|
+
await browser.close();
|
|
225
|
+
}
|
|
226
|
+
catch (e) {
|
|
227
|
+
logger.warn('[ServerExporter] cleanup failed', e);
|
|
228
|
+
}
|
|
192
229
|
}
|
|
193
230
|
if (userDataDir) {
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
logger.warn('[ServerExporter] cleanup failed', r.reason);
|
|
231
|
+
try {
|
|
232
|
+
await fs.rm(userDataDir, { recursive: true, force: true });
|
|
233
|
+
}
|
|
234
|
+
catch (e) {
|
|
235
|
+
logger.warn('[ServerExporter] cleanup failed', e);
|
|
200
236
|
}
|
|
201
237
|
}
|
|
202
238
|
this.releaseSlot();
|
|
@@ -227,8 +263,8 @@ export class ServerExporter {
|
|
|
227
263
|
}
|
|
228
264
|
async getRunnerModuleCode() {
|
|
229
265
|
if (!this.runnerModuleCodePromise) {
|
|
230
|
-
|
|
231
|
-
const runnerModuleFile =
|
|
266
|
+
const promise = (async () => {
|
|
267
|
+
const runnerModuleFile = this.getRunnerModuleFile();
|
|
232
268
|
try {
|
|
233
269
|
return await fs.readFile(runnerModuleFile, 'utf8');
|
|
234
270
|
}
|
|
@@ -239,6 +275,11 @@ export class ServerExporter {
|
|
|
239
275
|
throw e;
|
|
240
276
|
}
|
|
241
277
|
})();
|
|
278
|
+
// Only cache successful reads; allow retry if it fails.
|
|
279
|
+
this.runnerModuleCodePromise = promise.then((code) => code, (err) => {
|
|
280
|
+
this.runnerModuleCodePromise = null;
|
|
281
|
+
throw err;
|
|
282
|
+
});
|
|
242
283
|
}
|
|
243
284
|
return await this.runnerModuleCodePromise;
|
|
244
285
|
}
|
|
@@ -248,4 +289,4 @@ export class ServerExporter {
|
|
|
248
289
|
return prefix.endsWith('/') ? prefix : `${prefix}/`;
|
|
249
290
|
}
|
|
250
291
|
}
|
|
251
|
-
//# sourceMappingURL=
|
|
292
|
+
//# sourceMappingURL=ServerExporterBase.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ServerExporterBase.js","sourceRoot":"","sources":["../../src/ServerExporterBase.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,EAA2B,MAAM,gBAAgB,CAAC;AAQjE,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EACL,UAAU,EACV,gBAAgB,EAChB,eAAe,EACf,cAAc,GACf,MAAM,uBAAuB,CAAC;AAE/B,MAAM,OAAgB,kBAAkB;IAGrB,KAAK,CAAiC;IACtC,OAAO,CAAwB;IAC/B,OAAO,CAAS;IACzB,UAAU,GAAG,CAAC,CAAC;IACf,OAAO,GAKV,EAAE,CAAC;IACA,uBAAuB,GAA2B,IAAI,CAAC;IAE/D,YAAY,OAA8B;QACxC,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;QAC3B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,WAAW,EAAE,OAAO,IAAI,CAAC,CAAC;QACjD,IAAI,OAAO,OAAO,CAAC,MAAM,EAAE,UAAU,KAAK,QAAQ,EAAE,CAAC;YACnD,IAAI,CAAC,uBAAuB,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QAC5E,CAAC;IACH,CAAC;IAEO,gBAAgB,CAAC,OAAO,GAAG,gBAAgB;QACjD,OAAO,gBAAgB,CAAC,OAAO,CAAC,CAAC;IACnC,CAAC;IAEO,KAAK,CAAC,8BAA8B,CAAC,KAI5C;QACC,IAAI,CAAC,KAAK,CAAC,QAAQ;YAAE,OAAO;QAC5B,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;QACtF,CAAC;QAAC,OAAO,QAAQ,EAAE,CAAC;YAClB,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,+BAA+B,EAAE,QAAQ,CAAC,CAAC;QAC/D,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,WAAW,CAAC,WAAyB;QACjD,IAAI,WAAW,EAAE,OAAO,EAAE,CAAC;YACzB,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAChC,CAAC;QACD,IAAI,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;YACnC,IAAI,CAAC,UAAU,IAAI,CAAC,CAAC;YACrB,OAAO;QACT,CAAC;QACD,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC1C,MAAM,MAAM,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAmC,CAAC;YACjF,IAAI,WAAW,EAAE,CAAC;gBAChB,MAAM,aAAa,GAAG,GAAG,EAAE;oBACzB,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;oBACzC,IAAI,GAAG,IAAI,CAAC;wBAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;oBAC1C,WAAW,CAAC,mBAAmB,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;oBACxD,MAAM,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC;gBAClC,CAAC,CAAC;gBACF,MAAM,CAAC,aAAa,GAAG,aAAa,CAAC;gBACrC,WAAW,CAAC,gBAAgB,CAAC,OAAO,EAAE,aAAa,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;YACvE,CAAC;YACD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC5B,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,UAAU,IAAI,CAAC,CAAC;IACvB,CAAC;IAEO,WAAW;QACjB,IAAI,CAAC,UAAU,IAAI,CAAC,CAAC;QACrB,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QAClC,IAAI,IAAI,EAAE,CAAC;YACT,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;gBAC3C,IAAI,CAAC,WAAW,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;YACpE,CAAC;YACD,IAAI,CAAC,OAAO,EAAE,CAAC;QACjB,CAAC;IACH,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,KAAyB;QAC3C,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QAC1C,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;QAClC,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC;QAC9C,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACtB,MAAM,GAAG,GAAG,CAAC,OAAe,EAAE,KAA+B,EAAE,EAAE;YAC/D,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC;YAClC,IAAI,KAAK,EAAE,CAAC;gBACV,MAAM,CAAC,IAAI,CAAC,oBAAoB,KAAK,KAAK,SAAS,OAAO,OAAO,EAAE,EAAE,KAAK,CAAC,CAAC;YAC9E,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,IAAI,CAAC,oBAAoB,KAAK,KAAK,SAAS,OAAO,OAAO,EAAE,CAAC,CAAC;YACvE,CAAC;QACH,CAAC,CAAC;QACF,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,aAAa,IAAI,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;QAC5E,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,WAAW,IAAI,WAAW,CAAC;QACpE,MAAM,uBAAuB,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,uBAAuB,IAAI,GAAG,CAAC;QACpF,IAAI,aAAa,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI,EAAE,CAAC;YACpC,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAC;QAChF,CAAC;QACD,MAAM,GAAG,GACP,KAAK,CAAC,GAAG;YACT,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,SAAS,CAAC,EAAE;gBAC1D,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,IAAI,KAAK,MAAM,CAAC;QAErE,IAAI,OAAO,GAAmB,IAAI,CAAC;QACnC,IAAI,IAAI,GAAgB,IAAI,CAAC;QAC7B,IAAI,QAAQ,GAAkB,IAAI,CAAC;QACnC,IAAI,WAAW,GAAkB,IAAI,CAAC;QACtC,IAAI,aAAa,GAAG,KAAK,CAAC;QAC1B,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,gBAAgB,EAAE,GAAG,eAAe,CAAC,KAAK,CAAC,WAAW,EAAE,GAAG,EAAE;YAC1F,aAAa,GAAG,IAAI,CAAC;YACrB,yFAAyF;YACzF,KAAK,IAAI,EAAE,KAAK,CAAC,EAAE,eAAe,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QAC/D,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC;YACH,GAAG,CAAC,eAAe,EAAE;gBACnB,GAAG;gBACH,aAAa;gBACb,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,QAAQ,IAAI,IAAI;gBAChD,cAAc,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,cAAc;aACrD,CAAC,CAAC;YAEH,cAAc,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;YAClC,WAAW,GAAG,MAAM,EAAE,CAAC,OAAO,CAC5B,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,eAAe,IAAI,EAAE,CAAC,MAAM,EAAE,EAAE,iBAAiB,CAAC,CACnF,CAAC;YACF,GAAG,CAAC,qBAAqB,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC;YAE5C,cAAc,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;YAClC,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,qBAAqB,CAAC;gBACxD,GAAG;gBACH,WAAW;gBACX,QAAQ,EAAE,KAAK,CAAC,QAAQ;aACzB,CAAC,CAAC;YACH,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC;YAC/B,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;YACvD,CAAC;YACD,GAAG,CAAC,0BAA0B,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;YAE9C,MAAM,KAAK,GAAgD,EAAE,CAAC;YAC9D,MAAM,UAAU,GAAG,CAAC,GAAwB,EAAE,EAAE;gBAC9C,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC;YAC/C,CAAC,CAAC;YAEF,GAAG,CAAC,0BAA0B,CAAC,CAAC;YAChC,cAAc,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;YAClC,MAAM,gBAAgB,GAAG,MAAM,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC1D,GAAG,CAAC,sBAAsB,EAAE,EAAE,KAAK,EAAE,gBAAgB,CAAC,MAAM,EAAE,CAAC,CAAC;YAEhE,GAAG,CAAC,sBAAsB,CAAC,CAAC;YAC5B,cAAc,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;YAClC,OAAO,GAAG,MAAM,MAAM,CAAC;gBACrB,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,QAAQ,IAAI,IAAI;gBAChD,cAAc,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,cAAc;gBACpD,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,UAAU;gBACtC,WAAW;aACZ,CAAC,CAAC;YACH,GAAG,CAAC,kBAAkB,CAAC,CAAC;YAExB,GAAG,CAAC,kBAAkB,CAAC,CAAC;YACxB,cAAc,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;YAClC,IAAI,GAAG,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;YAC/B,GAAG,CAAC,cAAc,CAAC,CAAC;YAEpB,+DAA+D;YAC/D,IAAI,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,GAAQ,EAAE,EAAE,CAC9B,MAAM,CAAC,IAAI,CAAC,oBAAoB,KAAK,KAAK,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,KAAK,GAAG,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,CACjF,CAAC;YACF,IAAI,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,GAAQ,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,sBAAsB,KAAK,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;YACtF,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAQ,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,kBAAkB,KAAK,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;YAC9E,IAAI,CAAC,EAAE,CAAC,eAAe,EAAE,CAAC,GAAQ,EAAE,EAAE;gBACpC,MAAM,OAAO,GAAG,GAAG,EAAE,OAAO,EAAE,EAAE,CAAC;gBACjC,IAAI,OAAO,EAAE,SAAS,KAAK,kBAAkB;oBAAE,OAAO;gBACtD,MAAM,CAAC,IAAI,CAAC,0BAA0B,KAAK,GAAG,EAAE;oBAC9C,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;oBACjB,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE;oBACvB,OAAO;iBACR,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;YAEH,GAAG,CAAC,2BAA2B,CAAC,CAAC;YACjC,MAAM,OAAO,CAAC,IAAI,CAAC;gBACjB,eAAe,CACb,IAAI,EACJ;oBACE,cAAc,EAAE,KAAK,EAAE,UAAkB,EAAE,EAAE,CAC3C,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC;wBAC1B,GAAG;wBACH,QAAQ,EAAE,QAAS;wBACnB,UAAU;wBACV,gBAAgB,EAAE,uBAAuB;qBAC1C,CAAC;oBACJ,cAAc,EAAE,KAAK,EAAE,UAAkB,EAAE,IAAY,EAAE,EAAE;wBACzD,MAAM,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;wBAChD,KAAK,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC,CAAC;oBACnD,CAAC;oBACD,cAAc,EAAE,KAAK,EAAE,KAA0B,EAAE,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC;oBACvE,WAAW,EAAE,KAAK,EAAE,OAAe,EAAE,EAAE;wBACrC,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;oBAC3B,CAAC;oBACD,cAAc,EAAE,KAAK,EAAE,WAAmB,EAAE,EAAE;wBAC5C,kDAAkD;oBACpD,CAAC;iBACF,EACD;oBACE,KAAK,EAAE,KAAK,CAAC,KAAK;oBAClB,aAAa,EAAE,KAAK,CAAC,aAAa,IAAI,EAAE;oBACxC,aAAa;oBACb,QAAQ,EAAE,QAAS;oBACnB,GAAG;oBACH,gBAAgB;oBAChB,OAAO,EAAE,KAAK,CAAC,OAAO;oBACtB,UAAU,EAAE,KAAK,CAAC,UAAU;iBAC7B,CACF;gBACD,YAAY;aACb,CAAC,CAAC;YACH,GAAG,CAAC,iBAAiB,CAAC,CAAC;YAEvB,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC;YAClD,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;YAC7B,GAAG,CAAC,gCAAgC,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;YAC/D,MAAM,IAAI,CAAC,KAAK,CAAC,uBAAuB,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,QAAS,EAAE,KAAK,EAAE,CAAC,CAAC;YAC9E,GAAG,CAAC,kBAAkB,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;YACjC,OAAO,EAAE,GAAG,EAAE,CAAC;QACjB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,OAAO,GACX,aAAa;gBACb,KAAK,CAAC,WAAW,EAAE,OAAO,KAAK,IAAI;gBACnC,KAAK,YAAY,UAAU;gBAC3B,CAAC,KAAK,YAAY,YAAY,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,CAAC;gBAC9D,CAAC,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,CAAC,CAAC;YAE1D,IAAI,OAAO,EAAE,CAAC;gBACZ,MAAM,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;YACjD,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,KAAK,CAAC,gCAAgC,EAAE,KAAK,CAAC,CAAC;YACxD,CAAC;YAED,MAAM,IAAI,CAAC,8BAA8B,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;YACrE,IAAI,OAAO,EAAE,CAAC;gBACZ,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAChC,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;gBAAS,CAAC;YACT,gBAAgB,EAAE,CAAC;YAEnB,gFAAgF;YAChF,mEAAmE;YACnE,IAAI,OAAO,EAAE,CAAC;gBACZ,IAAI,CAAC;oBACH,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;gBACxB,CAAC;gBAAC,OAAO,CAAC,EAAE,CAAC;oBACX,MAAM,CAAC,IAAI,CAAC,iCAAiC,EAAE,CAAC,CAAC,CAAC;gBACpD,CAAC;YACH,CAAC;YACD,IAAI,WAAW,EAAE,CAAC;gBAChB,IAAI,CAAC;oBACH,MAAM,EAAE,CAAC,EAAE,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC7D,CAAC;gBAAC,OAAO,CAAC,EAAE,CAAC;oBACX,MAAM,CAAC,IAAI,CAAC,iCAAiC,EAAE,CAAC,CAAC,CAAC;gBACpD,CAAC;YACH,CAAC;YAED,IAAI,CAAC,WAAW,EAAE,CAAC;QACrB,CAAC;IACH,CAAC;IAEO,gBAAgB,CAAC,KAAkD;QACzE,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;QACtD,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;QAC/B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACtC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAE,CAAC;YACvB,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,UAAU,IAAI,CAAC,EAAE,CAAC;gBAC/D,MAAM,IAAI,KAAK,CAAC,uBAAuB,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;YAC5D,CAAC;YACD,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;gBACf,MAAM,IAAI,KAAK,CAAC,yBAAyB,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;YAC9D,CAAC;YACD,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;gBAC9B,MAAM,IAAI,KAAK,CAAC,yBAAyB,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;YAC9D,CAAC;YACD,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAE1B,MAAM,QAAQ,GAAG,CAAC,GAAG,CAAC,CAAC;YACvB,IAAI,IAAI,CAAC,UAAU,KAAK,QAAQ,EAAE,CAAC;gBACjC,MAAM,IAAI,KAAK,CAAC,uCAAuC,QAAQ,SAAS,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;YAC7F,CAAC;QACH,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,mBAAmB;QAC/B,IAAI,CAAC,IAAI,CAAC,uBAAuB,EAAE,CAAC;YAClC,MAAM,OAAO,GAAG,CAAC,KAAK,IAAI,EAAE;gBAC1B,MAAM,gBAAgB,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;gBACpD,IAAI,CAAC;oBACH,OAAO,MAAM,EAAE,CAAC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;gBACrD,CAAC;gBAAC,OAAO,CAAM,EAAE,CAAC;oBAChB,IAAI,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;wBACtD,MAAM,IAAI,KAAK,CACb,oGAAoG,CACrG,CAAC;oBACJ,CAAC;oBACD,MAAM,CAAC,CAAC;gBACV,CAAC;YACH,CAAC,CAAC,EAAE,CAAC;YACL,wDAAwD;YACxD,IAAI,CAAC,uBAAuB,GAAG,OAAO,CAAC,IAAI,CACzC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,EACd,CAAC,GAAG,EAAE,EAAE;gBACN,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC;gBACpC,MAAM,GAAG,CAAC;YACZ,CAAC,CACF,CAAC;QACJ,CAAC;QACD,OAAO,MAAM,IAAI,CAAC,uBAAuB,CAAC;IAC5C,CAAC;IAEO,kBAAkB,CAAC,MAA0B;QACnD,IAAI,CAAC,MAAM;YAAE,OAAO,UAAU,CAAC;QAC/B,OAAO,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,GAAG,CAAC;IACtD,CAAC;CACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,mBAAmB,EACnB,kBAAkB,EAClB,mBAAmB,EACnB,oBAAoB,EACpB,qBAAqB,GACtB,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC"}
|
|
@@ -19,7 +19,6 @@ export interface RunnerBridge {
|
|
|
19
19
|
reportProgress(event: ExportProgressEvent): Promise<void>;
|
|
20
20
|
reportError(message: string): Promise<void>;
|
|
21
21
|
reportComplete(totalBytes: number): Promise<void>;
|
|
22
|
-
onAbortRequested?: () => void;
|
|
23
22
|
}
|
|
24
23
|
export declare function runExportInPage(page: Page, bridge: RunnerBridge, params: RunnerParams): Promise<void>;
|
|
25
24
|
//# sourceMappingURL=runner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../../src/runner/runner.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAEvD,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,GAAG,CAAC;IACX,aAAa,EAAE,GAAG,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,gBAAgB,EAAE,MAAM,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,YAAY;IAC3B,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE,CAAC,CAAC;IAC/F,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAChE,cAAc,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1D,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5C,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACnD;AAED,wBAAsB,eAAe,CACnC,IAAI,EAAE,IAAI,EACV,MAAM,EAAE,YAAY,EACpB,MAAM,EAAE,YAAY,GACnB,OAAO,CAAC,IAAI,CAAC,CAsFf"}
|
|
@@ -1,23 +1,39 @@
|
|
|
1
1
|
export async function runExportInPage(page, bridge, params) {
|
|
2
2
|
const { model, exportOptions, partSizeBytes, uploadId, key, // reserved for future use (e.g., logging)
|
|
3
3
|
runnerModuleCode, pageUrl, workerPath, } = params;
|
|
4
|
+
let settled = false;
|
|
4
5
|
let doneResolve;
|
|
5
6
|
let doneReject;
|
|
6
7
|
const done = new Promise((resolve, reject) => {
|
|
7
|
-
doneResolve =
|
|
8
|
-
|
|
8
|
+
doneResolve = () => {
|
|
9
|
+
if (settled)
|
|
10
|
+
return;
|
|
11
|
+
settled = true;
|
|
12
|
+
resolve();
|
|
13
|
+
};
|
|
14
|
+
doneReject = (err) => {
|
|
15
|
+
if (settled)
|
|
16
|
+
return;
|
|
17
|
+
settled = true;
|
|
18
|
+
reject(err);
|
|
19
|
+
};
|
|
9
20
|
});
|
|
21
|
+
// Ensure the promise settles if the page is closed / crashes.
|
|
22
|
+
const onPageClose = () => doneReject(new Error('Runner page closed'));
|
|
23
|
+
const onPageError = (err) => doneReject(err instanceof Error ? err : new Error(`Runner page error: ${String(err)}`));
|
|
24
|
+
page.once('close', onPageClose);
|
|
25
|
+
page.once('error', onPageError);
|
|
10
26
|
// Bridge functions exposed to the browser context
|
|
11
27
|
await page.exposeFunction('runnerRequestPartUrl', bridge.requestPartUrl);
|
|
12
28
|
await page.exposeFunction('runnerReportPartDone', bridge.reportPartDone);
|
|
13
29
|
await page.exposeFunction('runnerReportProgress', bridge.reportProgress);
|
|
14
30
|
await page.exposeFunction('runnerReportError', async (message) => {
|
|
15
|
-
await bridge.reportError(message);
|
|
16
31
|
doneReject(new Error(message));
|
|
32
|
+
await bridge.reportError(message).catch(() => { });
|
|
17
33
|
});
|
|
18
34
|
await page.exposeFunction('runnerReportComplete', async (totalBytes) => {
|
|
19
|
-
await bridge.reportComplete(totalBytes);
|
|
20
35
|
doneResolve();
|
|
36
|
+
await bridge.reportComplete(totalBytes).catch(() => { });
|
|
21
37
|
});
|
|
22
38
|
const runnerConfig = {
|
|
23
39
|
model,
|
|
@@ -46,6 +62,12 @@ ${runnerModuleCode}
|
|
|
46
62
|
</head>
|
|
47
63
|
<body></body>
|
|
48
64
|
</html>`);
|
|
49
|
-
|
|
65
|
+
try {
|
|
66
|
+
await done;
|
|
67
|
+
}
|
|
68
|
+
finally {
|
|
69
|
+
page.off('close', onPageClose);
|
|
70
|
+
page.off('error', onPageError);
|
|
71
|
+
}
|
|
50
72
|
}
|
|
51
73
|
//# sourceMappingURL=runner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../../../src/runner/runner.ts"],"names":[],"mappings":"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"}
|
|
@@ -55,6 +55,11 @@ export interface ServerExporterOptions {
|
|
|
55
55
|
keyPrefix?: string;
|
|
56
56
|
partSizeBytes?: number;
|
|
57
57
|
contentType?: string;
|
|
58
|
+
/**
|
|
59
|
+
* Expiration for pre-signed part upload URLs requested from store.getUploadPartUrl().
|
|
60
|
+
* Defaults to 600 seconds.
|
|
61
|
+
*/
|
|
62
|
+
partUrlExpiresInSeconds?: number;
|
|
58
63
|
};
|
|
59
64
|
onProgress?: (evt: {
|
|
60
65
|
jobId: string;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export declare class AbortError extends Error {
|
|
2
|
+
name: string;
|
|
3
|
+
}
|
|
4
|
+
export declare function createAbortError(message?: string): Error;
|
|
5
|
+
export declare function throwIfAborted(abortSignal?: AbortSignal): void;
|
|
6
|
+
export declare function createAbortGate(abortSignal: AbortSignal | undefined, onAbort: () => void): {
|
|
7
|
+
abortPromise: Promise<never>;
|
|
8
|
+
dispose: () => void;
|
|
9
|
+
};
|
|
10
|
+
//# sourceMappingURL=abort-gate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"abort-gate.d.ts","sourceRoot":"","sources":["../../../src/utils/abort-gate.ts"],"names":[],"mappings":"AAAA,qBAAa,UAAW,SAAQ,KAAK;IAC1B,IAAI,SAAgB;CAC9B;AAED,wBAAgB,gBAAgB,CAAC,OAAO,SAAmB,GAAG,KAAK,CAElE;AAED,wBAAgB,cAAc,CAAC,WAAW,CAAC,EAAE,WAAW,GAAG,IAAI,CAI9D;AAED,wBAAgB,eAAe,CAC7B,WAAW,EAAE,WAAW,GAAG,SAAS,EACpC,OAAO,EAAE,MAAM,IAAI,GAClB;IAAE,YAAY,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IAAC,OAAO,EAAE,MAAM,IAAI,CAAA;CAAE,CAmCvD"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
export class AbortError extends Error {
|
|
2
|
+
name = 'AbortError';
|
|
3
|
+
}
|
|
4
|
+
export function createAbortError(message = 'Export aborted') {
|
|
5
|
+
return new AbortError(message);
|
|
6
|
+
}
|
|
7
|
+
export function throwIfAborted(abortSignal) {
|
|
8
|
+
if (abortSignal?.aborted) {
|
|
9
|
+
throw createAbortError();
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
export function createAbortGate(abortSignal, onAbort) {
|
|
13
|
+
if (!abortSignal) {
|
|
14
|
+
return { abortPromise: new Promise(() => { }), dispose: () => { } };
|
|
15
|
+
}
|
|
16
|
+
if (abortSignal.aborted) {
|
|
17
|
+
onAbort();
|
|
18
|
+
const abortPromise = Promise.reject(createAbortError());
|
|
19
|
+
// Prevent unhandled rejection if the job ends before this promise is awaited.
|
|
20
|
+
void abortPromise.catch(() => { });
|
|
21
|
+
return { abortPromise, dispose: () => { } };
|
|
22
|
+
}
|
|
23
|
+
let disposed = false;
|
|
24
|
+
let abortListener = null;
|
|
25
|
+
const abortPromise = new Promise((_, reject) => {
|
|
26
|
+
abortListener = () => {
|
|
27
|
+
if (disposed)
|
|
28
|
+
return;
|
|
29
|
+
onAbort();
|
|
30
|
+
reject(createAbortError());
|
|
31
|
+
};
|
|
32
|
+
abortSignal.addEventListener('abort', abortListener, { once: true });
|
|
33
|
+
});
|
|
34
|
+
// Prevent unhandled rejection if abort fires after the main flow already resolved/rejected.
|
|
35
|
+
void abortPromise.catch(() => { });
|
|
36
|
+
const dispose = () => {
|
|
37
|
+
disposed = true;
|
|
38
|
+
if (abortListener) {
|
|
39
|
+
abortSignal.removeEventListener('abort', abortListener);
|
|
40
|
+
abortListener = null;
|
|
41
|
+
}
|
|
42
|
+
};
|
|
43
|
+
return { abortPromise, dispose };
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=abort-gate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"abort-gate.js","sourceRoot":"","sources":["../../../src/utils/abort-gate.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,UAAW,SAAQ,KAAK;IAC1B,IAAI,GAAG,YAAY,CAAC;CAC9B;AAED,MAAM,UAAU,gBAAgB,CAAC,OAAO,GAAG,gBAAgB;IACzD,OAAO,IAAI,UAAU,CAAC,OAAO,CAAC,CAAC;AACjC,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,WAAyB;IACtD,IAAI,WAAW,EAAE,OAAO,EAAE,CAAC;QACzB,MAAM,gBAAgB,EAAE,CAAC;IAC3B,CAAC;AACH,CAAC;AAED,MAAM,UAAU,eAAe,CAC7B,WAAoC,EACpC,OAAmB;IAEnB,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,OAAO,EAAE,YAAY,EAAE,IAAI,OAAO,CAAQ,GAAG,EAAE,GAAE,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,GAAE,CAAC,EAAE,CAAC;IAC3E,CAAC;IAED,IAAI,WAAW,CAAC,OAAO,EAAE,CAAC;QACxB,OAAO,EAAE,CAAC;QACV,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC,CAAC;QACxD,8EAA8E;QAC9E,KAAK,YAAY,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QAClC,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,GAAG,EAAE,GAAE,CAAC,EAAE,CAAC;IAC7C,CAAC;IAED,IAAI,QAAQ,GAAG,KAAK,CAAC;IACrB,IAAI,aAAa,GAAwB,IAAI,CAAC;IAC9C,MAAM,YAAY,GAAG,IAAI,OAAO,CAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE;QACpD,aAAa,GAAG,GAAG,EAAE;YACnB,IAAI,QAAQ;gBAAE,OAAO;YACrB,OAAO,EAAE,CAAC;YACV,MAAM,CAAC,gBAAgB,EAAE,CAAC,CAAC;QAC7B,CAAC,CAAC;QACF,WAAW,CAAC,gBAAgB,CAAC,OAAO,EAAE,aAAa,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IACvE,CAAC,CAAC,CAAC;IACH,4FAA4F;IAC5F,KAAK,YAAY,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IAElC,MAAM,OAAO,GAAG,GAAG,EAAE;QACnB,QAAQ,GAAG,IAAI,CAAC;QAChB,IAAI,aAAa,EAAE,CAAC;YAClB,WAAW,CAAC,mBAAmB,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;YACxD,aAAa,GAAG,IAAI,CAAC;QACvB,CAAC;IACH,CAAC,CAAC;IAEF,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,CAAC;AACnC,CAAC"}
|