UNPKG

@primer/components

Version:
100 lines (82 loc) 2.01 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Deprecations = exports.useDeprecation = exports.deprecate = void 0; var _react = require("react"); // eslint-disable-next-line @typescript-eslint/no-empty-function const noop = () => {}; // eslint-disable-next-line import/no-mutable-exports let deprecate = noop; exports.deprecate = deprecate; if (process.env.NODE_ENV !== 'production') { exports.deprecate = deprecate = ({ name, message, version }) => { Deprecations.deprecate({ name, message, version }); }; } // eslint-disable-next-line import/no-mutable-exports let useDeprecation = null; exports.useDeprecation = useDeprecation; if (process.env.NODE_ENV !== 'production') { exports.useDeprecation = useDeprecation = ({ name, message, version }) => { const ref = (0, _react.useRef)(false); const logDeprecation = (0, _react.useCallback)(() => { if (!ref.current) { ref.current = true; deprecate({ name, message, version }); } }, [name, message, version]); return logDeprecation; }; } else { exports.useDeprecation = useDeprecation = () => { return noop; }; } class Deprecations { static instance = null; static get() { if (!Deprecations.instance) { Deprecations.instance = new Deprecations(); } return Deprecations.instance; } constructor() { this.deprecations = []; } static deprecate({ name, message, version }) { const msg = `WARNING! ${name} is deprecated and will be removed in version ${version}. ${message}`; // eslint-disable-next-line no-console console.warn(msg); this.get().deprecations.push({ name, message, version }); } static getDeprecations() { return this.get().deprecations; } static clearDeprecations() { this.get().deprecations.length = 0; } } exports.Deprecations = Deprecations;