| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -1,10 +1,8 @@ | |||
| 1 | 1 | 'use strict'; | |
| 2 | 2 | ||
| 3 | 3 | const { | |
| 4 | - ObjectDefineProperties, | ||
| 5 | 4 | PromiseResolve, | |
| 6 | 5 | PromiseWithResolvers, | |
| 7 | - ReflectConstruct, | ||
| 8 | 6 | } = primordials; | |
| 9 | 7 | ||
| 10 | 8 | const { | |
@@ -31,73 +29,6 @@ const { | |||
| 31 | 29 | ||
| 32 | 30 | const assert = require('internal/assert'); | |
| 33 | 31 | ||
| 34 | - const { | ||
| 35 | - markTransferMode, | ||
| 36 | - kClone, | ||
| 37 | - kDeserialize, | ||
| 38 | - } = require('internal/worker/js_transferable'); | ||
| 39 | - | ||
| 40 | - // This class is a bit of a hack. The Node.js implementation of | ||
| 41 | - // DOMException is not transferable/cloneable. This provides us | ||
| 42 | - // with a variant that is. Unfortunately, it means playing around | ||
| 43 | - // a bit with the message, name, and code properties and the | ||
| 44 | - // prototype. We can revisit this if DOMException is ever made | ||
| 45 | - // properly cloneable. | ||
| 46 | - class CloneableDOMException extends DOMException { | ||
| 47 | - constructor(message, name) { | ||
| 48 | - super(message, name); | ||
| 49 | - markTransferMode(this, true, false); | ||
| 50 | - this[kDeserialize]({ | ||
| 51 | - message: this.message, | ||
| 52 | - name: this.name, | ||
| 53 | - code: this.code, | ||
| 54 | - }); | ||
| 55 | - } | ||
| 56 | - | ||
| 57 | - [kClone]() { | ||
| 58 | - return { | ||
| 59 | - data: { | ||
| 60 | - message: this.message, | ||
| 61 | - name: this.name, | ||
| 62 | - code: this.code, | ||
| 63 | - }, | ||
| 64 | - deserializeInfo: | ||
| 65 | - 'internal/webstreams/transfer:InternalCloneableDOMException', | ||
| 66 | - }; | ||
| 67 | - } | ||
| 68 | - | ||
| 69 | - [kDeserialize]({ message, name, code }) { | ||
| 70 | - ObjectDefineProperties(this, { | ||
| 71 | - message: { | ||
| 72 | - __proto__: null, | ||
| 73 | - configurable: true, | ||
| 74 | - enumerable: true, | ||
| 75 | - get() { return message; }, | ||
| 76 | - }, | ||
| 77 | - name: { | ||
| 78 | - __proto__: null, | ||
| 79 | - configurable: true, | ||
| 80 | - enumerable: true, | ||
| 81 | - get() { return name; }, | ||
| 82 | - }, | ||
| 83 | - code: { | ||
| 84 | - __proto__: null, | ||
| 85 | - configurable: true, | ||
| 86 | - enumerable: true, | ||
| 87 | - get() { return code; }, | ||
| 88 | - }, | ||
| 89 | - }); | ||
| 90 | - } | ||
| 91 | - } | ||
| 92 | - | ||
| 93 | - function InternalCloneableDOMException() { | ||
| 94 | - return ReflectConstruct( | ||
| 95 | - CloneableDOMException, | ||
| 96 | - [], | ||
| 97 | - DOMException); | ||
| 98 | - } | ||
| 99 | - InternalCloneableDOMException[kDeserialize] = () => {}; | ||
| 100 | - | ||
| 101 | 32 | class CrossRealmTransformReadableSource { | |
| 102 | 33 | constructor(port, unref) { | |
| 103 | 34 | this[kState] = { | |
@@ -132,7 +63,7 @@ class CrossRealmTransformReadableSource { | |||
| 132 | 63 | }; | |
| 133 | 64 | ||
| 134 | 65 | port.onmessageerror = () => { | |
| 135 | - const error = new CloneableDOMException( | ||
| 66 | + const error = new DOMException( | ||
| 136 | 67 | 'Internal transferred ReadableStream error', | |
| 137 | 68 | 'DataCloneError'); | |
| 138 | 69 | port.postMessage({ type: 'error', value: error }); | |
@@ -161,10 +92,6 @@ class CrossRealmTransformReadableSource { | |||
| 161 | 92 | try { | |
| 162 | 93 | this[kState].port.postMessage({ type: 'error', value: reason }); | |
| 163 | 94 | } catch (error) { | |
| 164 | - if (error instanceof DOMException) { | ||
| 165 | - // eslint-disable-next-line no-ex-assign | ||
| 166 | - error = new CloneableDOMException(error.message, error.name); | ||
| 167 | - } | ||
| 168 | 95 | this[kState].port.postMessage({ type: 'error', value: error }); | |
| 169 | 96 | throw error; | |
| 170 | 97 | } finally { | |
@@ -206,7 +133,7 @@ class CrossRealmTransformWritableSink { | |||
| 206 | 133 | } | |
| 207 | 134 | }; | |
| 208 | 135 | port.onmessageerror = () => { | |
| 209 | - const error = new CloneableDOMException( | ||
| 136 | + const error = new DOMException( | ||
| 210 | 137 | 'Internal transferred ReadableStream error', | |
| 211 | 138 | 'DataCloneError'); | |
| 212 | 139 | port.postMessage({ type: 'error', value: error }); | |
@@ -240,10 +167,6 @@ class CrossRealmTransformWritableSink { | |||
| 240 | 167 | try { | |
| 241 | 168 | this[kState].port.postMessage({ type: 'chunk', value: chunk }); | |
| 242 | 169 | } catch (error) { | |
| 243 | - if (error instanceof DOMException) { | ||
| 244 | - // eslint-disable-next-line no-ex-assign | ||
| 245 | - error = new CloneableDOMException(error.message, error.name); | ||
| 246 | - } | ||
| 247 | 170 | this[kState].port.postMessage({ type: 'error', value: error }); | |
| 248 | 171 | this[kState].port.close(); | |
| 249 | 172 | throw error; | |
@@ -259,10 +182,6 @@ class CrossRealmTransformWritableSink { | |||
| 259 | 182 | try { | |
| 260 | 183 | this[kState].port.postMessage({ type: 'error', value: reason }); | |
| 261 | 184 | } catch (error) { | |
| 262 | - if (error instanceof DOMException) { | ||
| 263 | - // eslint-disable-next-line no-ex-assign | ||
| 264 | - error = new CloneableDOMException(error.message, error.name); | ||
| 265 | - } | ||
| 266 | 185 | this[kState].port.postMessage({ type: 'error', value: error }); | |
| 267 | 186 | throw error; | |
| 268 | 187 | } finally { | |
@@ -308,6 +227,4 @@ module.exports = { | |||
| 308 | 227 | newCrossRealmWritableSink, | |
| 309 | 228 | CrossRealmTransformWritableSink, | |
| 310 | 229 | CrossRealmTransformReadableSource, | |
| 311 | - CloneableDOMException, | ||
| 312 | - InternalCloneableDOMException, | ||
| 313 | 230 | }; | |
| Back | FazBrowse Home | New Git URL |
0 commit comments