diff options
author | 2023-07-11 19:14:34 -0700 | |
---|---|---|
committer | 2023-07-11 19:14:34 -0700 | |
commit | cbb88672f217a90db1aa1eb29cd92d5d9035b22b (patch) | |
tree | 43a00501f3cde495967e116f0b660777051551f8 /bench/snippets/util-deprecate.mjs | |
parent | 1f900cff453700b19bca2acadfe26da4468c1282 (diff) | |
parent | 34b0e7a2bbd8bf8097341cdb0075d0908283e834 (diff) | |
download | bun-jarred/esm-conditions.tar.gz bun-jarred/esm-conditions.tar.zst bun-jarred/esm-conditions.zip |
Merge branch 'main' into jarred/esm-conditionsjarred/esm-conditions
Diffstat (limited to 'bench/snippets/util-deprecate.mjs')
-rw-r--r-- | bench/snippets/util-deprecate.mjs | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/bench/snippets/util-deprecate.mjs b/bench/snippets/util-deprecate.mjs new file mode 100644 index 000000000..364601d79 --- /dev/null +++ b/bench/snippets/util-deprecate.mjs @@ -0,0 +1,60 @@ +import { bench, run } from "./runner.mjs"; +function deprecateUsingClosure(fn, msg, code) { + if (process.noDeprecation === true) { + return fn; + } + + var realFn = fn; + var wrapper = () => { + return fnToWrap.apply(this, arguments); + }; + + var deprecater = () => { + if (process.throwDeprecation) { + var err = new Error(msg); + if (code) err.code = code; + throw err; + } else if (process.traceDeprecation) { + console.trace(msg); + } else { + console.error(msg); + } + + fnToWrap = realFn; + return realFn.apply(this, arguments); + }; + var fnToWrap = deprecater; + + return wrapper; +} + +function deprecateOriginal(fn, msg) { + var warned = false; + function deprecated() { + if (!warned) { + if (process.throwDeprecation) { + throw new Error(msg); + } else if (process.traceDeprecation) { + console.trace(msg); + } else { + console.error(msg); + } + warned = true; + } + return fn.apply(this, arguments); + } + return deprecated; +} + +const deprecatedy = deprecateUsingClosure(() => {}, "This is deprecated", "DEP0001"); +const deprecatedy2 = deprecateOriginal(() => {}, "This is deprecated"); + +bench("deprecateUsingClosure", () => { + deprecatedy(Math.random() + 1); +}); + +bench("deprecateOriginal", () => { + deprecatedy2(Math.random() + 1); +}); + +await run(); |