@clerk/shared
Version:
Internal package utils used by the Clerk SDKs
70 lines (68 loc) • 2.1 kB
JavaScript
import { a as isTestEnvironment, i as isProductionEnvironment } from "./_chunks/runtimeEnvironment-CTVGzENl.mjs";
//#region src/deprecated.ts
/**
* Mark class method / function as deprecated.
*
* A console WARNING will be displayed when class method / function is invoked.
*
* Examples
* 1. Deprecate class method
* class Example {
* getSomething = (arg1, arg2) => {
* deprecated('Example.getSomething', 'Use `getSomethingElse` instead.');
* return `getSomethingValue:${arg1 || '-'}:${arg2 || '-'}`;
* };
* }
*
* 2. Deprecate function
* const getSomething = () => {
* deprecated('getSomething', 'Use `getSomethingElse` instead.');
* return 'getSomethingValue';
* };
*/
const displayedWarnings = /* @__PURE__ */ new Set();
const deprecated = (fnName, warning, key) => {
const hideWarning = isTestEnvironment() || isProductionEnvironment();
const messageId = key ?? fnName;
if (displayedWarnings.has(messageId) || hideWarning) return;
displayedWarnings.add(messageId);
console.warn(`Clerk - DEPRECATION WARNING: "${fnName}" is deprecated and will be removed in the next major release.\n${warning}`);
};
const deprecatedProperty = (cls, propName, warning, isStatic = false) => {
const target = isStatic ? cls : cls.prototype;
let value = target[propName];
Object.defineProperty(target, propName, {
get() {
deprecated(propName, warning, `${cls.name}:${propName}`);
return value;
},
set(v) {
value = v;
}
});
};
/**
* Mark object property as deprecated.
*
* A console WARNING will be displayed when object property is being accessed.
*
* 1. Deprecate object property
* const obj = { something: 'aloha' };
*
* deprecatedObjectProperty(obj, 'something', 'Use `somethingElse` instead.');
*/
const deprecatedObjectProperty = (obj, propName, warning, key) => {
let value = obj[propName];
Object.defineProperty(obj, propName, {
get() {
deprecated(propName, warning, key);
return value;
},
set(v) {
value = v;
}
});
};
//#endregion
export { deprecated, deprecatedObjectProperty, deprecatedProperty };
//# sourceMappingURL=deprecated.mjs.map