{"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<string>();\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<string, any>,\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"}