From d35fcf8b838ab716e48bea247e4319b760edbedd Mon Sep 17 00:00:00 2001 From: Denis Pushkarev Date: Thu, 16 Nov 2023 02:01:56 +0700 Subject: [PATCH] avoid sharing internal `[[DedentMap]]` from `String.dedent` proposa between `core-js` instances before stabilization of the proposal --- CHANGELOG.md | 1 + .../core-js/modules/esnext.string.dedent.js | 19 +++++++------------ 2 files changed, 8 insertions(+), 12 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 34994f94c2dd..dfa05ff8b214 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,7 @@ ## Changelog ##### Unreleased - Fixed an issue getting the global object on Duktape, [#1303](https://github.com/zloirock/core-js/issues/1303) +- Avoid sharing internal `[[DedentMap]]` from [`String.dedent` proposal](https://github.com/tc39/proposal-string-dedent) between `core-js` instances before stabilization of the proposal - Some internal untangling - Compat data improvements: - Added [Deno 1.38](https://deno.com/blog/v1.38) compat data mapping diff --git a/packages/core-js/modules/esnext.string.dedent.js b/packages/core-js/modules/esnext.string.dedent.js index f600a91b8e00..eb8f69b27fe8 100644 --- a/packages/core-js/modules/esnext.string.dedent.js +++ b/packages/core-js/modules/esnext.string.dedent.js @@ -1,8 +1,6 @@ 'use strict'; var FREEZING = require('../internals/freezing'); var $ = require('../internals/export'); -var shared = require('../internals/shared'); -var getBuiltIn = require('../internals/get-built-in'); var makeBuiltIn = require('../internals/make-built-in'); var uncurryThis = require('../internals/function-uncurry-this'); var apply = require('../internals/function-apply'); @@ -12,18 +10,15 @@ var isCallable = require('../internals/is-callable'); var lengthOfArrayLike = require('../internals/length-of-array-like'); var defineProperty = require('../internals/object-define-property').f; var createArrayFromList = require('../internals/array-slice-simple'); +var WeakMapHelpers = require('../internals/weak-map-helpers'); var cooked = require('../internals/string-cooked'); var parse = require('../internals/string-parse'); var whitespaces = require('../internals/whitespaces'); -var WeakMap = getBuiltIn('WeakMap'); -var globalDedentRegistry = shared('GlobalDedentRegistry', new WeakMap()); - -/* eslint-disable no-self-assign -- prototype methods protection */ -globalDedentRegistry.has = globalDedentRegistry.has; -globalDedentRegistry.get = globalDedentRegistry.get; -globalDedentRegistry.set = globalDedentRegistry.set; -/* eslint-enable no-self-assign -- prototype methods protection */ +var DedentMap = new WeakMapHelpers.WeakMap(); +var weakMapGet = WeakMapHelpers.get; +var weakMapHas = WeakMapHelpers.has; +var weakMapSet = WeakMapHelpers.set; var $Array = Array; var $TypeError = TypeError; @@ -48,14 +43,14 @@ var dedentTemplateStringsArray = function (template) { var rawInput = template.raw; // https://github.com/tc39/proposal-string-dedent/issues/75 if (FREEZING && !isFrozen(rawInput)) throw new $TypeError('Raw template should be frozen'); - if (globalDedentRegistry.has(rawInput)) return globalDedentRegistry.get(rawInput); + if (weakMapHas(DedentMap, rawInput)) return weakMapGet(DedentMap, rawInput); var raw = dedentStringsArray(rawInput); var cookedArr = cookStrings(raw); defineProperty(cookedArr, 'raw', { value: freeze(raw) }); freeze(cookedArr); - globalDedentRegistry.set(rawInput, cookedArr); + weakMapSet(DedentMap, rawInput, cookedArr); return cookedArr; };