babel-plugin-polyfill-corejs3 0.8.0 → 0.8.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/index.js CHANGED
@@ -2,37 +2,24 @@
2
2
 
3
3
  exports.__esModule = true;
4
4
  exports.default = void 0;
5
-
6
5
  var _data = _interopRequireDefault(require("../core-js-compat/data.js"));
7
-
8
6
  var _shippedProposals = _interopRequireDefault(require("./shipped-proposals"));
9
-
10
7
  var _getModulesListForTargetVersion = _interopRequireDefault(require("../core-js-compat/get-modules-list-for-target-version.js"));
11
-
12
8
  var _builtInDefinitions = require("./built-in-definitions");
13
-
14
9
  var _usageFilters = _interopRequireDefault(require("./usage-filters"));
15
-
16
10
  var _babel = _interopRequireWildcard(require("@babel/core"));
17
-
18
11
  var _utils = require("./utils");
19
-
20
12
  var _helperDefinePolyfillProvider = _interopRequireDefault(require("@babel/helper-define-polyfill-provider"));
21
-
22
13
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
23
-
24
14
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
25
-
26
15
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
27
-
28
16
  function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
29
-
30
17
  const {
31
18
  types: t
32
19
  } = _babel.default || _babel;
20
+ const presetEnvCompat = "#__secret_key__@babel/preset-env__compatibility";
33
21
  const runtimeCompat = "#__secret_key__@babel/runtime__compatibility";
34
22
  const uniqueObjects = ["array", "string", "iterator", "async-iterator", "dom-collections"].map(v => new RegExp(`[a-z]*\\.${v}\\..*`));
35
-
36
23
  const esnextFallback = (name, cb) => {
37
24
  if (cb(name)) return true;
38
25
  if (!name.startsWith("es.")) return false;
@@ -40,7 +27,6 @@ const esnextFallback = (name, cb) => {
40
27
  if (!_data.default[fallback]) return false;
41
28
  return cb(fallback);
42
29
  };
43
-
44
30
  var _default = (0, _helperDefinePolyfillProvider.default)(function ({
45
31
  getUtils,
46
32
  method,
@@ -52,6 +38,9 @@ var _default = (0, _helperDefinePolyfillProvider.default)(function ({
52
38
  version = 3,
53
39
  proposals,
54
40
  shippedProposals,
41
+ [presetEnvCompat]: {
42
+ noRuntimeName = false
43
+ } = {},
55
44
  [runtimeCompat]: {
56
45
  useBabelRuntime = false,
57
46
  ext = ".js"
@@ -64,21 +53,17 @@ var _default = (0, _helperDefinePolyfillProvider.default)(function ({
64
53
  instance: _builtInDefinitions.InstanceProperties
65
54
  });
66
55
  const available = new Set((0, _getModulesListForTargetVersion.default)(version));
67
-
68
56
  function getCoreJSPureBase(useProposalBase) {
69
57
  return useBabelRuntime ? useProposalBase ? `${_utils.BABEL_RUNTIME}/core-js` : `${_utils.BABEL_RUNTIME}/core-js-stable` : useProposalBase ? "core-js-pure/features" : "core-js-pure/stable";
70
58
  }
71
-
72
59
  function maybeInjectGlobalImpl(name, utils) {
73
60
  if (shouldInjectPolyfill(name)) {
74
61
  debug(name);
75
62
  utils.injectGlobalImport((0, _utils.coreJSModule)(name));
76
63
  return true;
77
64
  }
78
-
79
65
  return false;
80
66
  }
81
-
82
67
  function maybeInjectGlobal(names, utils, fallback = true) {
83
68
  for (const name of names) {
84
69
  if (fallback) {
@@ -88,93 +73,75 @@ var _default = (0, _helperDefinePolyfillProvider.default)(function ({
88
73
  }
89
74
  }
90
75
  }
91
-
92
76
  function maybeInjectPure(desc, hint, utils, object) {
93
77
  if (desc.pure && !(object && desc.exclude && desc.exclude.includes(object)) && esnextFallback(desc.name, shouldInjectPolyfill)) {
94
78
  const {
95
79
  name
96
80
  } = desc;
97
81
  let useProposalBase = false;
98
-
99
82
  if (proposals || shippedProposals && name.startsWith("esnext.")) {
100
83
  useProposalBase = true;
101
84
  } else if (name.startsWith("es.") && !available.has(name)) {
102
85
  useProposalBase = true;
103
86
  }
104
-
105
87
  const coreJSPureBase = getCoreJSPureBase(useProposalBase);
106
88
  return utils.injectDefaultImport(`${coreJSPureBase}/${desc.pure}${ext}`, hint);
107
89
  }
108
90
  }
109
-
110
91
  function isFeatureStable(name) {
111
92
  if (name.startsWith("esnext.")) {
112
- const esName = `es.${name.slice(7)}`; // If its imaginative esName is not in latest compat data, it means
93
+ const esName = `es.${name.slice(7)}`;
94
+ // If its imaginative esName is not in latest compat data, it means
113
95
  // the proposal is not stage 4
114
-
115
96
  return esName in _data.default;
116
97
  }
117
-
118
98
  return true;
119
99
  }
120
-
121
100
  return {
122
101
  name: "corejs3",
123
- runtimeName: _utils.BABEL_RUNTIME,
102
+ runtimeName: noRuntimeName ? null : _utils.BABEL_RUNTIME,
124
103
  polyfills: _data.default,
125
-
126
104
  filterPolyfills(name) {
127
105
  if (!available.has(name)) return false;
128
106
  if (proposals || method === "entry-global") return true;
129
-
130
107
  if (shippedProposals && _shippedProposals.default.has(name)) {
131
108
  return true;
132
109
  }
133
-
134
110
  return isFeatureStable(name);
135
111
  },
136
-
137
112
  entryGlobal(meta, utils, path) {
138
113
  if (meta.kind !== "import") return;
139
114
  const modules = (0, _utils.isCoreJSSource)(meta.source);
140
115
  if (!modules) return;
141
-
142
116
  if (modules.length === 1 && meta.source === (0, _utils.coreJSModule)(modules[0]) && shouldInjectPolyfill(modules[0])) {
143
117
  // Avoid infinite loop: do not replace imports with a new copy of
144
118
  // themselves.
145
119
  debug(null);
146
120
  return;
147
121
  }
148
-
149
122
  const modulesSet = new Set(modules);
150
123
  const filteredModules = modules.filter(module => {
151
124
  if (!module.startsWith("esnext.")) return true;
152
125
  const stable = module.replace("esnext.", "es.");
153
-
154
126
  if (modulesSet.has(stable) && shouldInjectPolyfill(stable)) {
155
127
  return false;
156
128
  }
157
-
158
129
  return true;
159
130
  });
160
131
  maybeInjectGlobal(filteredModules, utils, false);
161
132
  path.remove();
162
133
  },
163
-
164
134
  usageGlobal(meta, utils, path) {
165
135
  const resolved = resolve(meta);
166
136
  if (!resolved) return;
167
137
  if ((0, _usageFilters.default)(resolved.desc, path)) return;
168
138
  let deps = resolved.desc.global;
169
-
170
139
  if (resolved.kind !== "global" && "object" in meta && meta.object && meta.placement === "prototype") {
171
140
  const low = meta.object.toLowerCase();
172
141
  deps = deps.filter(m => uniqueObjects.some(v => v.test(m)) ? m.includes(low) : true);
173
142
  }
174
-
175
143
  maybeInjectGlobal(deps, utils);
176
144
  },
177
-
178
145
  usagePure(meta, utils, path) {
179
146
  if (meta.kind === "in") {
180
147
  if (meta.key === "Symbol.iterator") {
@@ -184,28 +151,23 @@ var _default = (0, _helperDefinePolyfillProvider.default)(function ({
184
151
 
185
152
  return;
186
153
  }
187
-
188
154
  if (path.parentPath.isUnaryExpression({
189
155
  operator: "delete"
190
156
  })) return;
191
-
192
157
  if (meta.kind === "property") {
193
158
  // We can't compile destructuring and updateExpression.
194
159
  if (!path.isMemberExpression()) return;
195
160
  if (!path.isReferenced()) return;
196
161
  if (path.parentPath.isUpdateExpression()) return;
197
-
198
162
  if (t.isSuper(path.node.object)) {
199
163
  return;
200
164
  }
201
-
202
165
  if (meta.key === "Symbol.iterator") {
203
166
  if (!shouldInjectPolyfill("es.symbol.iterator")) return;
204
167
  const {
205
168
  parent,
206
169
  node
207
170
  } = path;
208
-
209
171
  if (t.isCallExpression(parent, {
210
172
  callee: node
211
173
  })) {
@@ -218,15 +180,12 @@ var _default = (0, _helperDefinePolyfillProvider.default)(function ({
218
180
  } else {
219
181
  path.replaceWith(t.callExpression(utils.injectDefaultImport((0, _utils.coreJSPureHelper)("get-iterator-method", useBabelRuntime, ext), "getIteratorMethod"), [path.node.object]));
220
182
  }
221
-
222
183
  return;
223
184
  }
224
185
  }
225
-
226
186
  let resolved = resolve(meta);
227
187
  if (!resolved) return;
228
188
  if ((0, _usageFilters.default)(resolved.desc, path)) return;
229
-
230
189
  if (useBabelRuntime && resolved.desc.pure && resolved.desc.pure.slice(-6) === "/index") {
231
190
  // Remove /index, since it doesn't exist in @babel/runtime-corejs3s
232
191
  resolved = _extends({}, resolved, {
@@ -235,22 +194,22 @@ var _default = (0, _helperDefinePolyfillProvider.default)(function ({
235
194
  })
236
195
  });
237
196
  }
238
-
239
197
  if (resolved.kind === "global") {
240
198
  const id = maybeInjectPure(resolved.desc, resolved.name, utils);
241
199
  if (id) path.replaceWith(id);
242
200
  } else if (resolved.kind === "static") {
243
- const id = maybeInjectPure(resolved.desc, resolved.name, utils, // @ts-expect-error
201
+ const id = maybeInjectPure(resolved.desc, resolved.name, utils,
202
+ // @ts-expect-error
244
203
  meta.object);
245
204
  if (id) path.replaceWith(id);
246
205
  } else if (resolved.kind === "instance") {
247
- const id = maybeInjectPure(resolved.desc, `${resolved.name}InstanceProperty`, utils, // @ts-expect-error
206
+ const id = maybeInjectPure(resolved.desc, `${resolved.name}InstanceProperty`, utils,
207
+ // @ts-expect-error
248
208
  meta.object);
249
209
  if (!id) return;
250
210
  const {
251
211
  node
252
212
  } = path;
253
-
254
213
  if (t.isCallExpression(path.parent, {
255
214
  callee: node
256
215
  })) {
@@ -260,13 +219,11 @@ var _default = (0, _helperDefinePolyfillProvider.default)(function ({
260
219
  }
261
220
  }
262
221
  },
263
-
264
222
  visitor: method === "usage-global" && {
265
223
  // import("foo")
266
224
  CallExpression(path) {
267
225
  if (path.get("callee").isImport()) {
268
226
  const utils = getUtils(path);
269
-
270
227
  if (isWebpack) {
271
228
  // Webpack uses Promise.all to handle dynamic import.
272
229
  maybeInjectGlobal(_builtInDefinitions.PromiseDependenciesWithIterators, utils);
@@ -275,35 +232,29 @@ var _default = (0, _helperDefinePolyfillProvider.default)(function ({
275
232
  }
276
233
  }
277
234
  },
278
-
279
235
  // (async function () { }).finally(...)
280
236
  Function(path) {
281
237
  if (path.node.async) {
282
238
  maybeInjectGlobal(_builtInDefinitions.PromiseDependencies, getUtils(path));
283
239
  }
284
240
  },
285
-
286
241
  // for-of, [a, b] = c
287
242
  "ForOfStatement|ArrayPattern"(path) {
288
243
  maybeInjectGlobal(_builtInDefinitions.CommonIterators, getUtils(path));
289
244
  },
290
-
291
245
  // [...spread]
292
246
  SpreadElement(path) {
293
247
  if (!path.parentPath.isObjectExpression()) {
294
248
  maybeInjectGlobal(_builtInDefinitions.CommonIterators, getUtils(path));
295
249
  }
296
250
  },
297
-
298
251
  // yield*
299
252
  YieldExpression(path) {
300
253
  if (path.node.delegate) {
301
254
  maybeInjectGlobal(_builtInDefinitions.CommonIterators, getUtils(path));
302
255
  }
303
256
  }
304
-
305
257
  }
306
258
  };
307
259
  });
308
-
309
260
  exports.default = _default;
@@ -2,8 +2,6 @@
2
2
 
3
3
  exports.__esModule = true;
4
4
  exports.default = void 0;
5
-
6
5
  // This file is automatically generated by scripts/build-corejs3-shipped-proposals.mjs
7
- var _default = new Set(["esnext.array.from-async", "esnext.array.group", "esnext.array.group-to-map", "esnext.array-buffer.detached", "esnext.array-buffer.transfer", "esnext.array-buffer.transfer-to-fixed-length", "esnext.json.is-raw-json", "esnext.json.parse", "esnext.json.raw-json", "esnext.set.difference.v2", "esnext.set.intersection.v2", "esnext.set.is-disjoint-from.v2", "esnext.set.is-subset-of.v2", "esnext.set.is-superset-of.v2", "esnext.set.symmetric-difference.v2", "esnext.set.union.v2", "esnext.string.is-well-formed", "esnext.string.to-well-formed"]);
8
-
6
+ var _default = new Set(["esnext.array.from-async", "esnext.array.group", "esnext.array.group-to-map", "esnext.array-buffer.detached", "esnext.array-buffer.transfer", "esnext.array-buffer.transfer-to-fixed-length", "esnext.json.is-raw-json", "esnext.json.parse", "esnext.json.raw-json", "esnext.set.difference.v2", "esnext.set.intersection.v2", "esnext.set.is-disjoint-from.v2", "esnext.set.is-subset-of.v2", "esnext.set.is-superset-of.v2", "esnext.set.symmetric-difference.v2", "esnext.set.union.v2"]);
9
7
  exports.default = _default;
@@ -2,23 +2,17 @@
2
2
 
3
3
  exports.__esModule = true;
4
4
  exports.default = canSkipPolyfill;
5
-
6
5
  var _babel = _interopRequireWildcard(require("@babel/core"));
7
-
8
6
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
9
-
10
7
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
11
-
12
8
  const {
13
9
  types: t
14
10
  } = _babel.default || _babel;
15
-
16
11
  function canSkipPolyfill(desc, path) {
17
12
  const {
18
13
  node,
19
14
  parent
20
15
  } = path;
21
-
22
16
  switch (desc.name) {
23
17
  case "es.string.split":
24
18
  {
package/lib/utils.js CHANGED
@@ -6,29 +6,21 @@ exports.callMethod = callMethod;
6
6
  exports.coreJSModule = coreJSModule;
7
7
  exports.coreJSPureHelper = coreJSPureHelper;
8
8
  exports.isCoreJSSource = isCoreJSSource;
9
-
10
9
  var _babel = _interopRequireWildcard(require("@babel/core"));
11
-
12
10
  var _entries = _interopRequireDefault(require("../core-js-compat/entries.js"));
13
-
14
11
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
15
-
16
12
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
17
-
18
13
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
19
-
20
14
  const {
21
15
  types: t
22
16
  } = _babel.default || _babel;
23
17
  const BABEL_RUNTIME = "@babel/runtime-corejs3";
24
18
  exports.BABEL_RUNTIME = BABEL_RUNTIME;
25
-
26
19
  function callMethod(path, id) {
27
20
  const {
28
21
  object
29
22
  } = path.node;
30
23
  let context1, context2;
31
-
32
24
  if (t.isIdentifier(object)) {
33
25
  context1 = object;
34
26
  context2 = t.cloneNode(object);
@@ -36,23 +28,18 @@ function callMethod(path, id) {
36
28
  context1 = path.scope.generateDeclaredUidIdentifier("context");
37
29
  context2 = t.assignmentExpression("=", t.cloneNode(context1), object);
38
30
  }
39
-
40
31
  path.replaceWith(t.memberExpression(t.callExpression(id, [context2]), t.identifier("call")));
41
32
  path.parentPath.unshiftContainer("arguments", context1);
42
33
  }
43
-
44
34
  function isCoreJSSource(source) {
45
35
  if (typeof source === "string") {
46
36
  source = source.replace(/\\/g, "/").replace(/(\/(index)?)?(\.js)?$/i, "").toLowerCase();
47
37
  }
48
-
49
38
  return Object.prototype.hasOwnProperty.call(_entries.default, source) && _entries.default[source];
50
39
  }
51
-
52
40
  function coreJSModule(name) {
53
41
  return `core-js/modules/${name}.js`;
54
42
  }
55
-
56
43
  function coreJSPureHelper(name, useBabelRuntime, ext) {
57
44
  return useBabelRuntime ? `${BABEL_RUNTIME}/core-js/${name}${ext}` : `core-js-pure/features/${name}.js`;
58
45
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "babel-plugin-polyfill-corejs3",
3
- "version": "0.8.0",
3
+ "version": "0.8.2",
4
4
  "description": "A Babel plugin to inject imports to core-js@3 polyfills",
5
5
  "repository": {
6
6
  "type": "git",
@@ -26,22 +26,22 @@
26
26
  "babel-plugin"
27
27
  ],
28
28
  "dependencies": {
29
- "@babel/helper-define-polyfill-provider": "^0.4.0",
30
- "core-js-compat": "^3.30.1"
29
+ "@babel/helper-define-polyfill-provider": "^0.4.1",
30
+ "core-js-compat": "^3.31.0"
31
31
  },
32
32
  "devDependencies": {
33
- "@babel/core": "^7.17.8",
34
- "@babel/helper-plugin-test-runner": "^7.16.7",
35
- "@babel/plugin-syntax-dynamic-import": "^7.8.3",
36
- "@babel/plugin-transform-classes": "^7.16.7",
37
- "@babel/plugin-transform-for-of": "^7.16.7",
38
- "@babel/plugin-transform-modules-commonjs": "^7.17.7",
39
- "@babel/plugin-transform-spread": "^7.16.7",
40
- "core-js": "^3.30.1",
41
- "core-js-pure": "^3.30.1"
33
+ "@babel/core": "^7.22.6",
34
+ "@babel/helper-plugin-test-runner": "^7.22.5",
35
+ "@babel/plugin-transform-class-properties": "^7.22.5",
36
+ "@babel/plugin-transform-classes": "^7.22.6",
37
+ "@babel/plugin-transform-for-of": "^7.22.5",
38
+ "@babel/plugin-transform-modules-commonjs": "^7.22.5",
39
+ "@babel/plugin-transform-spread": "^7.22.5",
40
+ "core-js": "^3.31.0",
41
+ "core-js-pure": "^3.31.0"
42
42
  },
43
43
  "peerDependencies": {
44
44
  "@babel/core": "^7.0.0-0"
45
45
  },
46
- "gitHead": "391a1f4049fe1d6943ca8e91cf7e2e23f3f1ef73"
46
+ "gitHead": "74956db5d547985ac8e60bf1af56f4c61af12e4e"
47
47
  }