summaryrefslogtreecommitdiffstats
path: root/remote/test/puppeteer/packages/puppeteer-core/src/util/ErrorLike.ts
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--remote/test/puppeteer/packages/puppeteer-core/src/util/ErrorLike.ts66
1 files changed, 66 insertions, 0 deletions
diff --git a/remote/test/puppeteer/packages/puppeteer-core/src/util/ErrorLike.ts b/remote/test/puppeteer/packages/puppeteer-core/src/util/ErrorLike.ts
new file mode 100644
index 0000000000..d4ab3044ab
--- /dev/null
+++ b/remote/test/puppeteer/packages/puppeteer-core/src/util/ErrorLike.ts
@@ -0,0 +1,66 @@
+/**
+ * @license
+ * Copyright 2022 Google Inc.
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+import type {ProtocolError} from '../common/Errors.js';
+
+/**
+ * @internal
+ */
+export interface ErrorLike extends Error {
+ name: string;
+ message: string;
+}
+
+/**
+ * @internal
+ */
+export function isErrorLike(obj: unknown): obj is ErrorLike {
+ return (
+ typeof obj === 'object' && obj !== null && 'name' in obj && 'message' in obj
+ );
+}
+
+/**
+ * @internal
+ */
+export function isErrnoException(obj: unknown): obj is NodeJS.ErrnoException {
+ return (
+ isErrorLike(obj) &&
+ ('errno' in obj || 'code' in obj || 'path' in obj || 'syscall' in obj)
+ );
+}
+
+/**
+ * @internal
+ */
+export function rewriteError(
+ error: ProtocolError,
+ message: string,
+ originalMessage?: string
+): Error {
+ error.message = message;
+ error.originalMessage = originalMessage ?? error.originalMessage;
+ return error;
+}
+
+/**
+ * @internal
+ */
+export function createProtocolErrorMessage(object: {
+ error: {message: string; data: any; code: number};
+}): string {
+ let message = object.error.message;
+ // TODO: remove the type checks when we stop connecting to BiDi with a CDP
+ // client.
+ if (
+ object.error &&
+ typeof object.error === 'object' &&
+ 'data' in object.error
+ ) {
+ message += ` ${object.error.data}`;
+ }
+ return message;
+}