/** * Copyright 2020 Google Inc. All rights reserved. * * 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. */ const isNodeEnv = typeof document === 'undefined'; /** * A debug function that can be used in any environment. * * If used in Node, it falls back to the {@link https://www.npmjs.com/package/debug | debug module}. * In the browser it uses `console.log`. * * @param prefix - this will be prefixed to each log. * @returns a function that can be called to log to that debug channel. * * @example * ``` * const log = debug('Page'); * * log('new page created') * // logs "Page: new page created" * ``` */ export const debug = (prefix: string): ((...args: unknown[]) => void) => { if (isNodeEnv) { // eslint-disable-next-line @typescript-eslint/no-var-requires return require('debug')(prefix); } // eslint-disable-next-line no-console return (...logArgs: unknown[]): void => console.log(`${prefix}:`, ...logArgs); };