Skip to content

Commit

Permalink
fix(options): do not mutate original object
Browse files Browse the repository at this point in the history
  • Loading branch information
ido-pluto committed Aug 5, 2024
1 parent 926c8f0 commit 29e50be
Show file tree
Hide file tree
Showing 2 changed files with 4 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,8 @@ export default class DownloadEngineBrowser<WriteStream extends BaseDownloadEngin
* Download file
*/
public static async createFromOptions(options: DownloadEngineOptionsBrowser) {
options = structuredClone(options);

Check failure on line 47 in src/download/download-engine/engine/download-engine-browser.ts

View workflow job for this annotation

GitHub Actions / test

test/browser.test.ts > Browser Fetch API > Download file browser

DataCloneError: onWrite(cursor, data) { buffer.set(data, cursor); if (cursor + data.length > lastWrite) { ...<omitted>... } could not be cloned. ❯ Function.createFromOptions src/download/download-engine/engine/download-engine-browser.ts:47:19 ❯ Module.downloadFileBrowser src/download/browser-download.ts:21:40 ❯ test/browser.test.ts:26:34 ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ Serialized Error: { code: 25, INDEX_SIZE_ERR: 1, DOMSTRING_SIZE_ERR: 2, HIERARCHY_REQUEST_ERR: 3, WRONG_DOCUMENT_ERR: 4, INVALID_CHARACTER_ERR: 5, NO_DATA_ALLOWED_ERR: 6, NO_MODIFICATION_ALLOWED_ERR: 7, NOT_FOUND_ERR: 8, NOT_SUPPORTED_ERR: 9, INUSE_ATTRIBUTE_ERR: 10, INVALID_STATE_ERR: 11, SYNTAX_ERR: 12, INVALID_MODIFICATION_ERR: 13, NAMESPACE_ERR: 14, INVALID_ACCESS_ERR: 15, VALIDATION_ERR: 16, TYPE_MISMATCH_ERR: 17, SECURITY_ERR: 18, NETWORK_ERR: 19, ABORT_ERR: 20, URL_MISMATCH_ERR: 21, QUOTA_EXCEEDED_ERR: 22, TIMEOUT_ERR: 23, INVALID_NODE_TYPE_ERR: 24, DATA_CLONE_ERR: 25 }

Check failure on line 47 in src/download/download-engine/engine/download-engine-browser.ts

View workflow job for this annotation

GitHub Actions / Build & Test

test/browser.test.ts > Browser Fetch API > Download file browser

DataCloneError: onWrite(cursor, data) { buffer.set(data, cursor); if (cursor + data.length > lastWrite) { ...<omitted>... } could not be cloned. ❯ Function.createFromOptions src/download/download-engine/engine/download-engine-browser.ts:47:19 ❯ Module.downloadFileBrowser src/download/browser-download.ts:21:40 ❯ test/browser.test.ts:26:34 ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ Serialized Error: { code: 25, INDEX_SIZE_ERR: 1, DOMSTRING_SIZE_ERR: 2, HIERARCHY_REQUEST_ERR: 3, WRONG_DOCUMENT_ERR: 4, INVALID_CHARACTER_ERR: 5, NO_DATA_ALLOWED_ERR: 6, NO_MODIFICATION_ALLOWED_ERR: 7, NOT_FOUND_ERR: 8, NOT_SUPPORTED_ERR: 9, INUSE_ATTRIBUTE_ERR: 10, INVALID_STATE_ERR: 11, SYNTAX_ERR: 12, INVALID_MODIFICATION_ERR: 13, NAMESPACE_ERR: 14, INVALID_ACCESS_ERR: 15, VALIDATION_ERR: 16, TYPE_MISMATCH_ERR: 17, SECURITY_ERR: 18, NETWORK_ERR: 19, ABORT_ERR: 20, URL_MISMATCH_ERR: 21, QUOTA_EXCEEDED_ERR: 22, TIMEOUT_ERR: 23, INVALID_NODE_TYPE_ERR: 24, DATA_CLONE_ERR: 25 }

DownloadEngineBrowser._validateOptions(options);
const partURLs = "partURLs" in options ? options.partURLs : [options.url];

Expand Down
2 changes: 2 additions & 0 deletions src/download/download-engine/engine/download-engine-nodejs.ts
Original file line number Diff line number Diff line change
Expand Up @@ -110,6 +110,8 @@ export default class DownloadEngineNodejs<T extends DownloadEngineWriteStreamNod
* By default, it will guess the strategy based on the URL
*/
public static async createFromOptions(options: DownloadEngineOptionsNodejs) {
options = structuredClone(options);

DownloadEngineNodejs._validateOptions(options);
const partURLs = "partURLs" in options ? options.partURLs : [options.url];

Expand Down

0 comments on commit 29e50be

Please sign in to comment.