diff options
author | Schwarzkopf Balázs <schwarzkopfb@icloud.com> | 2020-09-14 16:22:07 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-09-14 16:22:07 +0200 |
commit | f6bfdd66a69fb01077e488b5a67a38ca3d43610e (patch) | |
tree | b2613d944f83bfdc2d17691494d87ca839ed4f30 /std/node/_errors.ts | |
parent | a6f34d47222ad7cc40519bd95a58ae773d1fe656 (diff) |
feat(std/node): Add AssertionError class (#7210)
Diffstat (limited to 'std/node/_errors.ts')
-rw-r--r-- | std/node/_errors.ts | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/std/node/_errors.ts b/std/node/_errors.ts new file mode 100644 index 000000000..2321bb24f --- /dev/null +++ b/std/node/_errors.ts @@ -0,0 +1,48 @@ +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. + +// Adapted from Node.js. Copyright Joyent, Inc. and other Node contributors. + +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: + +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. + +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +// It will do so until we'll have Node errors completely ported (#5944): +// Ref: https://github.com/nodejs/node/blob/50d28d4b3a616b04537feff014aa70437f064e30/lib/internal/errors.js#L251 +// Ref: https://github.com/nodejs/node/blob/50d28d4b3a616b04537feff014aa70437f064e30/lib/internal/errors.js#L299 +// Ref: https://github.com/nodejs/node/blob/50d28d4b3a616b04537feff014aa70437f064e30/lib/internal/errors.js#L325 +// Ref: https://github.com/nodejs/node/blob/50d28d4b3a616b04537feff014aa70437f064e30/lib/internal/errors.js#L943 +class ERR_INVALID_ARG_TYPE extends TypeError { + code = "ERR_INVALID_ARG_TYPE"; + + constructor(a1: string, a2: string, a3: unknown) { + super( + `The "${a1}" argument must be of type ${a2.toLocaleLowerCase()}. Received ${typeof a3} (${a3})`, + ); + const { name } = this; + // Add the error code to the name to include it in the stack trace. + this.name = `${name} [${this.code}]`; + // Access the stack to generate the error message including the error code from the name. + this.stack; + // Reset the name to the actual name. + this.name = name; + } +} + +export const codes = { + ERR_INVALID_ARG_TYPE, +}; |