babel-plugin-polyfill-corejs3 0.8.1 → 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,38 +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;
33
20
  const presetEnvCompat = "#__secret_key__@babel/preset-env__compatibility";
34
21
  const runtimeCompat = "#__secret_key__@babel/runtime__compatibility";
35
22
  const uniqueObjects = ["array", "string", "iterator", "async-iterator", "dom-collections"].map(v => new RegExp(`[a-z]*\\.${v}\\..*`));
36
-
37
23
  const esnextFallback = (name, cb) => {
38
24
  if (cb(name)) return true;
39
25
  if (!name.startsWith("es.")) return false;
@@ -41,7 +27,6 @@ const esnextFallback = (name, cb) => {
41
27
  if (!_data.default[fallback]) return false;
42
28
  return cb(fallback);
43
29
  };
44
-
45
30
  var _default = (0, _helperDefinePolyfillProvider.default)(function ({
46
31
  getUtils,
47
32
  method,
@@ -68,21 +53,17 @@ var _default = (0, _helperDefinePolyfillProvider.default)(function ({
68
53
  instance: _builtInDefinitions.InstanceProperties
69
54
  });
70
55
  const available = new Set((0, _getModulesListForTargetVersion.default)(version));
71
-
72
56
  function getCoreJSPureBase(useProposalBase) {
73
57
  return useBabelRuntime ? useProposalBase ? `${_utils.BABEL_RUNTIME}/core-js` : `${_utils.BABEL_RUNTIME}/core-js-stable` : useProposalBase ? "core-js-pure/features" : "core-js-pure/stable";
74
58
  }
75
-
76
59
  function maybeInjectGlobalImpl(name, utils) {
77
60
  if (shouldInjectPolyfill(name)) {
78
61
  debug(name);
79
62
  utils.injectGlobalImport((0, _utils.coreJSModule)(name));
80
63
  return true;
81
64
  }
82
-
83
65
  return false;
84
66
  }
85
-
86
67
  function maybeInjectGlobal(names, utils, fallback = true) {
87
68
  for (const name of names) {
88
69
  if (fallback) {
@@ -92,93 +73,75 @@ var _default = (0, _helperDefinePolyfillProvider.default)(function ({
92
73
  }
93
74
  }
94
75
  }
95
-
96
76
  function maybeInjectPure(desc, hint, utils, object) {
97
77
  if (desc.pure && !(object && desc.exclude && desc.exclude.includes(object)) && esnextFallback(desc.name, shouldInjectPolyfill)) {
98
78
  const {
99
79
  name
100
80
  } = desc;
101
81
  let useProposalBase = false;
102
-
103
82
  if (proposals || shippedProposals && name.startsWith("esnext.")) {
104
83
  useProposalBase = true;
105
84
  } else if (name.startsWith("es.") && !available.has(name)) {
106
85
  useProposalBase = true;
107
86
  }
108
-
109
87
  const coreJSPureBase = getCoreJSPureBase(useProposalBase);
110
88
  return utils.injectDefaultImport(`${coreJSPureBase}/${desc.pure}${ext}`, hint);
111
89
  }
112
90
  }
113
-
114
91
  function isFeatureStable(name) {
115
92
  if (name.startsWith("esnext.")) {
116
- 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
117
95
  // the proposal is not stage 4
118
-
119
96
  return esName in _data.default;
120
97
  }
121
-
122
98
  return true;
123
99
  }
124
-
125
100
  return {
126
101
  name: "corejs3",
127
102
  runtimeName: noRuntimeName ? null : _utils.BABEL_RUNTIME,
128
103
  polyfills: _data.default,
129
-
130
104
  filterPolyfills(name) {
131
105
  if (!available.has(name)) return false;
132
106
  if (proposals || method === "entry-global") return true;
133
-
134
107
  if (shippedProposals && _shippedProposals.default.has(name)) {
135
108
  return true;
136
109
  }
137
-
138
110
  return isFeatureStable(name);
139
111
  },
140
-
141
112
  entryGlobal(meta, utils, path) {
142
113
  if (meta.kind !== "import") return;
143
114
  const modules = (0, _utils.isCoreJSSource)(meta.source);
144
115
  if (!modules) return;
145
-
146
116
  if (modules.length === 1 && meta.source === (0, _utils.coreJSModule)(modules[0]) && shouldInjectPolyfill(modules[0])) {
147
117
  // Avoid infinite loop: do not replace imports with a new copy of
148
118
  // themselves.
149
119
  debug(null);
150
120
  return;
151
121
  }
152
-
153
122
  const modulesSet = new Set(modules);
154
123
  const filteredModules = modules.filter(module => {
155
124
  if (!module.startsWith("esnext.")) return true;
156
125
  const stable = module.replace("esnext.", "es.");
157
-
158
126
  if (modulesSet.has(stable) && shouldInjectPolyfill(stable)) {
159
127
  return false;
160
128
  }
161
-
162
129
  return true;
163
130
  });
164
131
  maybeInjectGlobal(filteredModules, utils, false);
165
132
  path.remove();
166
133
  },
167
-
168
134
  usageGlobal(meta, utils, path) {
169
135
  const resolved = resolve(meta);
170
136
  if (!resolved) return;
171
137
  if ((0, _usageFilters.default)(resolved.desc, path)) return;
172
138
  let deps = resolved.desc.global;
173
-
174
139
  if (resolved.kind !== "global" && "object" in meta && meta.object && meta.placement === "prototype") {
175
140
  const low = meta.object.toLowerCase();
176
141
  deps = deps.filter(m => uniqueObjects.some(v => v.test(m)) ? m.includes(low) : true);
177
142
  }
178
-
179
143
  maybeInjectGlobal(deps, utils);
180
144
  },
181
-
182
145
  usagePure(meta, utils, path) {
183
146
  if (meta.kind === "in") {
184
147
  if (meta.key === "Symbol.iterator") {
@@ -188,28 +151,23 @@ var _default = (0, _helperDefinePolyfillProvider.default)(function ({
188
151
 
189
152
  return;
190
153
  }
191
-
192
154
  if (path.parentPath.isUnaryExpression({
193
155
  operator: "delete"
194
156
  })) return;
195
-
196
157
  if (meta.kind === "property") {
197
158
  // We can't compile destructuring and updateExpression.
198
159
  if (!path.isMemberExpression()) return;
199
160
  if (!path.isReferenced()) return;
200
161
  if (path.parentPath.isUpdateExpression()) return;
201
-
202
162
  if (t.isSuper(path.node.object)) {
203
163
  return;
204
164
  }
205
-
206
165
  if (meta.key === "Symbol.iterator") {
207
166
  if (!shouldInjectPolyfill("es.symbol.iterator")) return;
208
167
  const {
209
168
  parent,
210
169
  node
211
170
  } = path;
212
-
213
171
  if (t.isCallExpression(parent, {
214
172
  callee: node
215
173
  })) {
@@ -222,15 +180,12 @@ var _default = (0, _helperDefinePolyfillProvider.default)(function ({
222
180
  } else {
223
181
  path.replaceWith(t.callExpression(utils.injectDefaultImport((0, _utils.coreJSPureHelper)("get-iterator-method", useBabelRuntime, ext), "getIteratorMethod"), [path.node.object]));
224
182
  }
225
-
226
183
  return;
227
184
  }
228
185
  }
229
-
230
186
  let resolved = resolve(meta);
231
187
  if (!resolved) return;
232
188
  if ((0, _usageFilters.default)(resolved.desc, path)) return;
233
-
234
189
  if (useBabelRuntime && resolved.desc.pure && resolved.desc.pure.slice(-6) === "/index") {
235
190
  // Remove /index, since it doesn't exist in @babel/runtime-corejs3s
236
191
  resolved = _extends({}, resolved, {
@@ -239,22 +194,22 @@ var _default = (0, _helperDefinePolyfillProvider.default)(function ({
239
194
  })
240
195
  });
241
196
  }
242
-
243
197
  if (resolved.kind === "global") {
244
198
  const id = maybeInjectPure(resolved.desc, resolved.name, utils);
245
199
  if (id) path.replaceWith(id);
246
200
  } else if (resolved.kind === "static") {
247
- const id = maybeInjectPure(resolved.desc, resolved.name, utils, // @ts-expect-error
201
+ const id = maybeInjectPure(resolved.desc, resolved.name, utils,
202
+ // @ts-expect-error
248
203
  meta.object);
249
204
  if (id) path.replaceWith(id);
250
205
  } else if (resolved.kind === "instance") {
251
- 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
252
208
  meta.object);
253
209
  if (!id) return;
254
210
  const {
255
211
  node
256
212
  } = path;
257
-
258
213
  if (t.isCallExpression(path.parent, {
259
214
  callee: node
260
215
  })) {
@@ -264,13 +219,11 @@ var _default = (0, _helperDefinePolyfillProvider.default)(function ({
264
219
  }
265
220
  }
266
221
  },
267
-
268
222
  visitor: method === "usage-global" && {
269
223
  // import("foo")
270
224
  CallExpression(path) {
271
225
  if (path.get("callee").isImport()) {
272
226
  const utils = getUtils(path);
273
-
274
227
  if (isWebpack) {
275
228
  // Webpack uses Promise.all to handle dynamic import.
276
229
  maybeInjectGlobal(_builtInDefinitions.PromiseDependenciesWithIterators, utils);
@@ -279,35 +232,29 @@ var _default = (0, _helperDefinePolyfillProvider.default)(function ({
279
232
  }
280
233
  }
281
234
  },
282
-
283
235
  // (async function () { }).finally(...)
284
236
  Function(path) {
285
237
  if (path.node.async) {
286
238
  maybeInjectGlobal(_builtInDefinitions.PromiseDependencies, getUtils(path));
287
239
  }
288
240
  },
289
-
290
241
  // for-of, [a, b] = c
291
242
  "ForOfStatement|ArrayPattern"(path) {
292
243
  maybeInjectGlobal(_builtInDefinitions.CommonIterators, getUtils(path));
293
244
  },
294
-
295
245
  // [...spread]
296
246
  SpreadElement(path) {
297
247
  if (!path.parentPath.isObjectExpression()) {
298
248
  maybeInjectGlobal(_builtInDefinitions.CommonIterators, getUtils(path));
299
249
  }
300
250
  },
301
-
302
251
  // yield*
303
252
  YieldExpression(path) {
304
253
  if (path.node.delegate) {
305
254
  maybeInjectGlobal(_builtInDefinitions.CommonIterators, getUtils(path));
306
255
  }
307
256
  }
308
-
309
257
  }
310
258
  };
311
259
  });
312
-
313
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.1",
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": "4b3c67a6a946df756123952a0033dc4426696131"
46
+ "gitHead": "74956db5d547985ac8e60bf1af56f4c61af12e4e"
47
47
  }