{"version":3,"file":"deprecated--jK9xTNh.mjs","names":[],"sources":["../../src/deprecated.ts"],"sourcesContent":["import { isProductionEnvironment, isTestEnvironment } from './utils/runtimeEnvironment';\n/**\n * Mark class method / function as deprecated.\n *\n * A console WARNING will be displayed when class method / function is invoked.\n *\n * Examples\n * 1. Deprecate class method\n * class Example {\n * getSomething = (arg1, arg2) => {\n * deprecated('Example.getSomething', 'Use `getSomethingElse` instead.');\n * return `getSomethingValue:${arg1 || '-'}:${arg2 || '-'}`;\n * };\n * }\n *\n * 2. Deprecate function\n * const getSomething = () => {\n * deprecated('getSomething', 'Use `getSomethingElse` instead.');\n * return 'getSomethingValue';\n * };\n */\nconst displayedWarnings = new Set();\nexport const deprecated = (fnName: string, warning: string, key?: string): void => {\n const hideWarning = isTestEnvironment() || isProductionEnvironment();\n const messageId = key ?? fnName;\n if (displayedWarnings.has(messageId) || hideWarning) {\n return;\n }\n displayedWarnings.add(messageId);\n\n console.warn(\n `Clerk - DEPRECATION WARNING: \"${fnName}\" is deprecated and will be removed in the next major release.\\n${warning}`,\n );\n};\n/**\n * Mark class property as deprecated.\n *\n * A console WARNING will be displayed when class property is being accessed.\n *\n * 1. Deprecate class property\n * class Example {\n * something: string;\n * constructor(something: string) {\n * this.something = something;\n * }\n * }\n *\n * deprecatedProperty(Example, 'something', 'Use `somethingElse` instead.');\n *\n * 2. Deprecate class static property\n * class Example {\n * static something: string;\n * }\n *\n * deprecatedProperty(Example, 'something', 'Use `somethingElse` instead.', true);\n */\ntype AnyClass = new (...args: any[]) => any;\n\nexport const deprecatedProperty = (cls: AnyClass, propName: string, warning: string, isStatic = false): void => {\n const target = isStatic ? cls : cls.prototype;\n\n let value = target[propName];\n Object.defineProperty(target, propName, {\n get() {\n deprecated(propName, warning, `${cls.name}:${propName}`);\n return value;\n },\n set(v: unknown) {\n value = v;\n },\n });\n};\n\n/**\n * Mark object property as deprecated.\n *\n * A console WARNING will be displayed when object property is being accessed.\n *\n * 1. Deprecate object property\n * const obj = { something: 'aloha' };\n *\n * deprecatedObjectProperty(obj, 'something', 'Use `somethingElse` instead.');\n */\nexport const deprecatedObjectProperty = (\n obj: Record,\n propName: string,\n warning: string,\n key?: string,\n): void => {\n let value = obj[propName];\n Object.defineProperty(obj, propName, {\n get() {\n deprecated(propName, warning, key);\n return value;\n },\n set(v: unknown) {\n value = v;\n },\n });\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAqBA,MAAM,oCAAoB,IAAI,KAAa;AAC3C,MAAa,cAAc,QAAgB,SAAiB,QAAuB;CACjF,MAAM,cAAc,mBAAmB,IAAI,yBAAyB;CACpE,MAAM,YAAY,OAAO;AACzB,KAAI,kBAAkB,IAAI,UAAU,IAAI,YACtC;AAEF,mBAAkB,IAAI,UAAU;AAEhC,SAAQ,KACN,iCAAiC,OAAO,kEAAkE,UAC3G;;AA0BH,MAAa,sBAAsB,KAAe,UAAkB,SAAiB,WAAW,UAAgB;CAC9G,MAAM,SAAS,WAAW,MAAM,IAAI;CAEpC,IAAI,QAAQ,OAAO;AACnB,QAAO,eAAe,QAAQ,UAAU;EACtC,MAAM;AACJ,cAAW,UAAU,SAAS,GAAG,IAAI,KAAK,GAAG,WAAW;AACxD,UAAO;;EAET,IAAI,GAAY;AACd,WAAQ;;EAEX,CAAC;;;;;;;;;;;;AAaJ,MAAa,4BACX,KACA,UACA,SACA,QACS;CACT,IAAI,QAAQ,IAAI;AAChB,QAAO,eAAe,KAAK,UAAU;EACnC,MAAM;AACJ,cAAW,UAAU,SAAS,IAAI;AAClC,UAAO;;EAET,IAAI,GAAY;AACd,WAAQ;;EAEX,CAAC"}