@primer/components
Version:
Primer react components
100 lines (82 loc) • 2.01 kB
JavaScript
;
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;