swc/bundler/tests/.cache/untrusted/9d431e87b7f0624e2af14cfd809e3e0cafd291c2.ts
강동윤 bbaf619f63
fix(bundler): Fix bugs (#1437)
swc_bundler:
 - [x] Fix wrapped esms. (denoland/deno#9307)
 - [x] Make test secure.
2021-03-02 17:33:03 +09:00

123 lines
3.5 KiB
TypeScript

// Loaded from https://raw.githubusercontent.com/nats-io/nats.deno/v1.0.0-rc4/nats-base-client/error.ts
/*
* Copyright 2018-2021 The NATS Authors
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
export enum ErrorCode {
// emitted by the client
API_ERROR = "BAD API",
BAD_AUTHENTICATION = "BAD_AUTHENTICATION",
BAD_CREDS = "BAD_CREDS",
BAD_HEADER = "BAD_HEADER",
BAD_JSON = "BAD_JSON",
BAD_PAYLOAD = "BAD_PAYLOAD",
BAD_SUBJECT = "BAD_SUBJECT",
CANCELLED = "CANCELLED",
CONNECTION_CLOSED = "CONNECTION_CLOSED",
CONNECTION_DRAINING = "CONNECTION_DRAINING",
CONNECTION_REFUSED = "CONNECTION_REFUSED",
CONNECTION_TIMEOUT = "CONNECTION_TIMEOUT",
DISCONNECT = "DISCONNECT",
INVALID_OPTION = "INVALID_OPTION",
INVALID_PAYLOAD_TYPE = "INVALID_PAYLOAD",
MAX_PAYLOAD_EXCEEDED = "MAX_PAYLOAD_EXCEEDED",
NO_RESPONDERS = "NO_RESPONDERS",
NOT_FUNC = "NOT_FUNC",
REQUEST_ERROR = "REQUEST_ERROR",
SERVER_OPTION_NA = "SERVER_OPT_NA",
SUB_CLOSED = "SUB_CLOSED",
SUB_DRAINING = "SUB_DRAINING",
TIMEOUT = "TIMEOUT",
TLS = "TLS",
UNKNOWN = "UNKNOWN_ERROR",
WSS_REQUIRED = "WSS_REQUIRED",
// emitted by the server
AUTHORIZATION_VIOLATION = "AUTHORIZATION_VIOLATION",
AUTHENTICATION_EXPIRED = "AUTHENTICATION_EXPIRED",
NATS_PROTOCOL_ERR = "NATS_PROTOCOL_ERR",
PERMISSIONS_VIOLATION = "PERMISSIONS_VIOLATION",
}
export class Messages {
messages: Map<string, string>;
constructor() {
this.messages = new Map<string, string>();
this.messages.set(
ErrorCode.INVALID_PAYLOAD_TYPE,
"Invalid payload type - payloads can be 'binary', 'string', or 'json'",
);
this.messages.set(ErrorCode.BAD_JSON, "Bad JSON");
this.messages.set(
ErrorCode.WSS_REQUIRED,
"TLS is required, therefore a secure websocket connection is also required",
);
}
static getMessage(s: string): string {
return messages.getMessage(s);
}
getMessage(s: string): string {
return this.messages.get(s) || s;
}
}
// safari doesn't support static class members
const messages: Messages = new Messages();
export class NatsError extends Error {
name: string;
message: string;
code: string;
chainedError?: Error;
/**
* @param {String} message
* @param {String} code
* @param {Error} [chainedError]
* @constructor
*
* @api private
*/
constructor(message: string, code: string, chainedError?: Error) {
super(message);
this.name = "NatsError";
this.message = message;
this.code = code;
this.chainedError = chainedError;
}
static errorForCode(code: string, chainedError?: Error): NatsError {
const m = Messages.getMessage(code);
return new NatsError(m, code, chainedError);
}
isAuthError(): boolean {
return this.code === ErrorCode.AUTHENTICATION_EXPIRED ||
this.code === ErrorCode.AUTHORIZATION_VIOLATION;
}
isPermissionError(): boolean {
return this.code === ErrorCode.PERMISSIONS_VIOLATION;
}
isProtocolError(): boolean {
return this.code === ErrorCode.NATS_PROTOCOL_ERR;
}
}