@clerk/shared
Version:
Internal package utils used by the Clerk SDKs
1 lines • 3.67 kB
Source Map (JSON)
{"version":3,"file":"deprecated.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,IAAY;AAC1C,MAAa,cAAc,QAAgB,SAAiB,QAAuB;CACjF,MAAM,cAAc,kBAAkB,KAAK,wBAAwB;CACnE,MAAM,YAAY,OAAO;CACzB,IAAI,kBAAkB,IAAI,SAAS,KAAK,aACtC;CAEF,kBAAkB,IAAI,SAAS;CAE/B,QAAQ,KACN,iCAAiC,OAAO,kEAAkE,SAC5G;AACF;AAyBA,MAAa,sBAAsB,KAAe,UAAkB,SAAiB,WAAW,UAAgB;CAC9G,MAAM,SAAS,WAAW,MAAM,IAAI;CAEpC,IAAI,QAAQ,OAAO;CACnB,OAAO,eAAe,QAAQ,UAAU;EACtC,MAAM;GACJ,WAAW,UAAU,SAAS,GAAG,IAAI,KAAK,GAAG,UAAU;GACvD,OAAO;EACT;EACA,IAAI,GAAY;GACd,QAAQ;EACV;CACF,CAAC;AACH;;;;;;;;;;;AAYA,MAAa,4BACX,KACA,UACA,SACA,QACS;CACT,IAAI,QAAQ,IAAI;CAChB,OAAO,eAAe,KAAK,UAAU;EACnC,MAAM;GACJ,WAAW,UAAU,SAAS,GAAG;GACjC,OAAO;EACT;EACA,IAAI,GAAY;GACd,QAAQ;EACV;CACF,CAAC;AACH"}