index_20210527214643.js 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. /*! node-domexception. MIT License. Jimmy Wärting <https://jimmy.warting.se/opensource> */
  2. if (!globalThis.DOMException) {
  3. try {
  4. const { MessageChannel } = require('worker_threads'),
  5. port = new MessageChannel().port1,
  6. ab = new ArrayBuffer()
  7. port.postMessage(ab, [ab, ab])
  8. } catch (err) {
  9. err.constructor.name === 'DOMException' && (
  10. globalThis.DOMException = err.constructor
  11. )
  12. }
  13. }
  14. module.exports = globalThis.DOMException
  15. const { MessageChannel } = require('worker_threads')
  16. async function hello() {
  17. const port = new MessageChannel().port1
  18. const ab = new ArrayBuffer()
  19. port.postMessage(ab, [ab, ab])
  20. }
  21. hello().catch(err => {
  22. console.assert(err.name === 'DataCloneError')
  23. console.assert(err.code === 25)
  24. console.assert(err instanceof DOMException)
  25. })
  26. const e1 = new DOMException('Something went wrong', 'BadThingsError')
  27. console.assert(e1.name === 'BadThingsError')
  28. console.assert(e1.code === 0)
  29. const e2 = new DOMException('Another exciting error message', 'NoModificationAllowedError')
  30. console.assert(e2.name === 'NoModificationAllowedError')
  31. console.assert(e2.code === 7)
  32. console.assert(DOMException.INUSE_ATTRIBUTE_ERR === 10)