summaryrefslogtreecommitdiff
path: root/core/core.js
diff options
context:
space:
mode:
authorBartek IwaƄczuk <biwanczuk@gmail.com>2020-08-07 22:47:18 +0200
committerGitHub <noreply@github.com>2020-08-07 16:47:18 -0400
commit59ca66a207ceb4699e1322ce22f953ac0f124f13 (patch)
tree775b30b9a46f3c824d97060fb147336ecb6b83b7 /core/core.js
parent479164d287604d079f6342e656f2ac95b109367f (diff)
Encode op errors as strings instead of numbers (#6977)
Diffstat (limited to 'core/core.js')
-rw-r--r--core/core.js16
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,