diff options
author | Bartek IwaĆczuk <biwanczuk@gmail.com> | 2020-08-07 22:47:18 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-08-07 16:47:18 -0400 |
commit | 59ca66a207ceb4699e1322ce22f953ac0f124f13 (patch) | |
tree | 775b30b9a46f3c824d97060fb147336ecb6b83b7 /core/core.js | |
parent | 479164d287604d079f6342e656f2ac95b109367f (diff) |
Encode op errors as strings instead of numbers (#6977)
Diffstat (limited to 'core/core.js')
-rw-r--r-- | core/core.js | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/core/core.js b/core/core.js index b3c0ddc13..5f9d6f981 100644 --- a/core/core.js +++ b/core/core.js @@ -38,6 +38,7 @@ SharedQueue Binary Layout let initialized = false; let opsCache = {}; + const errorMap = {}; function maybeInit() { if (!initialized) { @@ -187,11 +188,26 @@ SharedQueue Binary Layout return send(opsCache[opName], control, ...zeroCopy); } + function registerErrorClass(errorName, errorClass) { + if (typeof errorMap[errorName] !== "undefined") { + throw new TypeError(`Error class for "${errorName}" already registered`); + } + errorMap[errorName] = errorClass; + } + + function getErrorClass(errorName) { + const errorClass = errorMap[errorName]; + assert(errorClass); + return errorClass; + } + Object.assign(window.Deno.core, { setAsyncHandler, dispatch: send, dispatchByName: dispatch, ops, + registerErrorClass, + getErrorClass, // sharedQueue is private but exposed for testing. sharedQueue: { MAX_RECORDS, |