condenser 1.2 → 1.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (50) hide show
  1. checksums.yaml +4 -4
  2. data/lib/condenser/asset.rb +19 -16
  3. data/lib/condenser/build_cache.rb +1 -1
  4. data/lib/condenser/context.rb +9 -25
  5. data/lib/condenser/helpers/parse_helpers.rb +1 -1
  6. data/lib/condenser/manifest.rb +3 -1
  7. data/lib/condenser/pipeline.rb +8 -3
  8. data/lib/condenser/processors/babel_processor.rb +1 -1
  9. data/lib/condenser/processors/css_media_combiner_processor.rb +81 -0
  10. data/lib/condenser/processors/js_analyzer.rb +0 -2
  11. data/lib/condenser/processors/purgecss_processor.rb +6 -4
  12. data/lib/condenser/processors/rollup_processor.rb +37 -35
  13. data/lib/condenser/resolve.rb +1 -3
  14. data/lib/condenser/templating_engine/ejs.rb +1 -1
  15. data/lib/condenser/transformers/dart_sass_transformer.rb +285 -0
  16. data/lib/condenser/transformers/jst_transformer.rb +67 -17
  17. data/lib/condenser/transformers/sass/functions.rb +133 -0
  18. data/lib/condenser/transformers/sass/importer.rb +48 -0
  19. data/lib/condenser/transformers/sass.rb +4 -0
  20. data/lib/condenser/transformers/sass_transformer.rb +124 -281
  21. data/lib/condenser/transformers/svg_transformer/base.rb +26 -0
  22. data/lib/condenser/transformers/svg_transformer/tag.rb +54 -0
  23. data/lib/condenser/transformers/svg_transformer/template.rb +151 -0
  24. data/lib/condenser/transformers/svg_transformer/template_error.rb +2 -0
  25. data/lib/condenser/transformers/svg_transformer/value.rb +13 -0
  26. data/lib/condenser/transformers/svg_transformer/var_generator.rb +10 -0
  27. data/lib/condenser/transformers/svg_transformer.rb +19 -0
  28. data/lib/condenser/version.rb +1 -1
  29. data/lib/condenser.rb +17 -5
  30. data/test/cache_test.rb +46 -2
  31. data/test/dependency_test.rb +2 -2
  32. data/test/manifest_test.rb +34 -0
  33. data/test/minifiers/terser_minifier_test.rb +0 -1
  34. data/test/minifiers/uglify_minifier_test.rb +0 -1
  35. data/test/postprocessors/css_media_combiner_test.rb +107 -0
  36. data/test/postprocessors/purgecss_test.rb +62 -0
  37. data/test/preprocessor/babel_test.rb +693 -299
  38. data/test/preprocessor/js_analyzer_test.rb +0 -2
  39. data/test/processors/rollup_test.rb +50 -20
  40. data/test/resolve_test.rb +8 -9
  41. data/test/server_test.rb +6 -1
  42. data/test/templates/ejs_test.rb +2 -11
  43. data/test/templates/erb_test.rb +0 -5
  44. data/test/test_helper.rb +3 -1
  45. data/test/transformers/dart_scss_test.rb +139 -0
  46. data/test/transformers/jst_test.rb +165 -21
  47. data/test/transformers/scss_test.rb +14 -0
  48. data/test/transformers/svg_test.rb +40 -0
  49. metadata +23 -6
  50. data/lib/condenser/transformers/sass_transformer/importer.rb +0 -50
@@ -4,6 +4,10 @@ class CondenserBabelTest < ActiveSupport::TestCase
4
4
 
5
5
  def setup
6
6
  super
7
+ @env.unregister_preprocessor('application/javascript', Condenser::JSAnalyzer)
8
+ @env.register_preprocessor 'application/javascript', Condenser::BabelProcessor.new(@npm_dir,
9
+ presets: [ ['@babel/preset-env', { modules: false, targets: { browsers: 'firefox > 41' } }] ]
10
+ )
7
11
  @env.unregister_minifier 'application/javascript'
8
12
  end
9
13
 
@@ -38,64 +42,12 @@ class CondenserBabelTest < ActiveSupport::TestCase
38
42
  /assets/error.js: Unexpected token (3:13)
39
43
 
40
44
  1 | console.log('this file has an error');
41
- 2 |
45
+ 2 |
42
46
  > 3 | var error = {;
43
47
  | ^
44
- 4 |
48
+ 4 |
45
49
  ERROR
46
50
  end
47
-
48
- test 'not duplicating babel-helpers' do
49
- file 'a.js', <<-JS
50
- export default class {
51
- constructor(height, width) {
52
- console.log('A');
53
- }
54
- };
55
- JS
56
- file 'b.js', <<-JS
57
- export default class {
58
- constructor(height, width) {
59
- console.log('B');
60
- }
61
- };
62
- JS
63
- file 'c.js', <<~JS
64
- import a from 'a';
65
- import b from 'b';
66
-
67
- new a();
68
- new b();
69
- JS
70
-
71
- assert_exported_file 'c.js', 'application/javascript', <<~JS
72
- (function () {
73
- 'use strict';
74
-
75
- function _classCallCheck(instance, Constructor) {
76
- if (!(instance instanceof Constructor)) {
77
- throw new TypeError("Cannot call a class as a function");
78
- }
79
- }
80
-
81
- var _default = function _default(height, width) {
82
- _classCallCheck(this, _default);
83
-
84
- console.log('A');
85
- };
86
-
87
- var _default$1 = function _default(height, width) {
88
- _classCallCheck(this, _default);
89
-
90
- console.log('B');
91
- };
92
-
93
- new _default();
94
- new _default$1();
95
-
96
- }());
97
- JS
98
- end
99
51
 
100
52
  test 'not duplicating polyfills' do
101
53
  file 'a.js', <<-JS
@@ -122,21 +74,27 @@ class CondenserBabelTest < ActiveSupport::TestCase
122
74
 
123
75
  var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
124
76
 
77
+ function getDefaultExportFromCjs (x) {
78
+ return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;
79
+ }
80
+
125
81
  var check = function (it) {
126
- return it && it.Math == Math && it;
82
+ return it && it.Math === Math && it;
127
83
  };
128
84
 
129
85
  // https://github.com/zloirock/core-js/issues/86#issuecomment-115759028
130
- var global_1 =
131
- // eslint-disable-next-line no-undef
86
+ var global$9 =
87
+ // eslint-disable-next-line es/no-global-this -- safe
132
88
  check(typeof globalThis == 'object' && globalThis) ||
133
89
  check(typeof window == 'object' && window) ||
90
+ // eslint-disable-next-line no-restricted-globals -- safe
134
91
  check(typeof self == 'object' && self) ||
135
92
  check(typeof commonjsGlobal == 'object' && commonjsGlobal) ||
136
- // eslint-disable-next-line no-new-func
93
+ check(typeof commonjsGlobal == 'object' && commonjsGlobal) ||
94
+ // eslint-disable-next-line no-new-func -- fallback
137
95
  (function () { return this; })() || Function('return this')();
138
96
 
139
- var fails = function (exec) {
97
+ var fails$8 = function (exec) {
140
98
  try {
141
99
  return !!exec();
142
100
  } catch (error) {
@@ -144,29 +102,115 @@ class CondenserBabelTest < ActiveSupport::TestCase
144
102
  }
145
103
  };
146
104
 
147
- // Thank's IE8 for his funny defineProperty
148
- var descriptors = !fails(function () {
149
- return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] != 7;
105
+ var fails$7 = fails$8;
106
+
107
+ var functionBindNative = !fails$7(function () {
108
+ // eslint-disable-next-line es/no-function-prototype-bind -- safe
109
+ var test = (function () { /* empty */ }).bind();
110
+ // eslint-disable-next-line no-prototype-builtins -- safe
111
+ return typeof test != 'function' || test.hasOwnProperty('prototype');
112
+ });
113
+
114
+ var NATIVE_BIND$3 = functionBindNative;
115
+
116
+ var FunctionPrototype$1 = Function.prototype;
117
+ var apply$1 = FunctionPrototype$1.apply;
118
+ var call$6 = FunctionPrototype$1.call;
119
+
120
+ // eslint-disable-next-line es/no-reflect -- safe
121
+ var functionApply = typeof Reflect == 'object' && Reflect.apply || (NATIVE_BIND$3 ? call$6.bind(apply$1) : function () {
122
+ return call$6.apply(apply$1, arguments);
123
+ });
124
+
125
+ var NATIVE_BIND$2 = functionBindNative;
126
+
127
+ var FunctionPrototype = Function.prototype;
128
+ var call$5 = FunctionPrototype.call;
129
+ var uncurryThisWithBind = NATIVE_BIND$2 && FunctionPrototype.bind.bind(call$5, call$5);
130
+
131
+ var functionUncurryThis = NATIVE_BIND$2 ? uncurryThisWithBind : function (fn) {
132
+ return function () {
133
+ return call$5.apply(fn, arguments);
134
+ };
135
+ };
136
+
137
+ var uncurryThis$9 = functionUncurryThis;
138
+
139
+ var toString$1 = uncurryThis$9({}.toString);
140
+ var stringSlice = uncurryThis$9(''.slice);
141
+
142
+ var classofRaw$1 = function (it) {
143
+ return stringSlice(toString$1(it), 8, -1);
144
+ };
145
+
146
+ var classofRaw = classofRaw$1;
147
+ var uncurryThis$8 = functionUncurryThis;
148
+
149
+ var functionUncurryThisClause = function (fn) {
150
+ // Nashorn bug:
151
+ // https://github.com/zloirock/core-js/issues/1128
152
+ // https://github.com/zloirock/core-js/issues/1130
153
+ if (classofRaw(fn) === 'Function') return uncurryThis$8(fn);
154
+ };
155
+
156
+ var documentAll$2 = typeof document == 'object' && document.all;
157
+
158
+ // https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot
159
+ // eslint-disable-next-line unicorn/no-typeof-undefined -- required for testing
160
+ var IS_HTMLDDA = typeof documentAll$2 == 'undefined' && documentAll$2 !== undefined;
161
+
162
+ var documentAll_1 = {
163
+ all: documentAll$2,
164
+ IS_HTMLDDA: IS_HTMLDDA
165
+ };
166
+
167
+ var $documentAll$1 = documentAll_1;
168
+
169
+ var documentAll$1 = $documentAll$1.all;
170
+
171
+ // `IsCallable` abstract operation
172
+ // https://tc39.es/ecma262/#sec-iscallable
173
+ var isCallable$7 = $documentAll$1.IS_HTMLDDA ? function (argument) {
174
+ return typeof argument == 'function' || argument === documentAll$1;
175
+ } : function (argument) {
176
+ return typeof argument == 'function';
177
+ };
178
+
179
+ var objectGetOwnPropertyDescriptor = {};
180
+
181
+ var fails$6 = fails$8;
182
+
183
+ // Detect IE8's incomplete defineProperty implementation
184
+ var descriptors = !fails$6(function () {
185
+ // eslint-disable-next-line es/no-object-defineproperty -- required for testing
186
+ return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] !== 7;
150
187
  });
151
188
 
152
- var nativePropertyIsEnumerable = {}.propertyIsEnumerable;
153
- var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;
189
+ var NATIVE_BIND$1 = functionBindNative;
190
+
191
+ var call$4 = Function.prototype.call;
192
+
193
+ var functionCall = NATIVE_BIND$1 ? call$4.bind(call$4) : function () {
194
+ return call$4.apply(call$4, arguments);
195
+ };
196
+
197
+ var objectPropertyIsEnumerable = {};
198
+
199
+ var $propertyIsEnumerable = {}.propertyIsEnumerable;
200
+ // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe
201
+ var getOwnPropertyDescriptor$1 = Object.getOwnPropertyDescriptor;
154
202
 
155
203
  // Nashorn ~ JDK8 bug
156
- var NASHORN_BUG = getOwnPropertyDescriptor && !nativePropertyIsEnumerable.call({ 1: 2 }, 1);
204
+ var NASHORN_BUG = getOwnPropertyDescriptor$1 && !$propertyIsEnumerable.call({ 1: 2 }, 1);
157
205
 
158
206
  // `Object.prototype.propertyIsEnumerable` method implementation
159
- // https://tc39.github.io/ecma262/#sec-object.prototype.propertyisenumerable
160
- var f = NASHORN_BUG ? function propertyIsEnumerable(V) {
161
- var descriptor = getOwnPropertyDescriptor(this, V);
207
+ // https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable
208
+ objectPropertyIsEnumerable.f = NASHORN_BUG ? function propertyIsEnumerable(V) {
209
+ var descriptor = getOwnPropertyDescriptor$1(this, V);
162
210
  return !!descriptor && descriptor.enumerable;
163
- } : nativePropertyIsEnumerable;
164
-
165
- var objectPropertyIsEnumerable = {
166
- f: f
167
- };
211
+ } : $propertyIsEnumerable;
168
212
 
169
- var createPropertyDescriptor = function (bitmap, value) {
213
+ var createPropertyDescriptor$2 = function (bitmap, value) {
170
214
  return {
171
215
  enumerable: !(bitmap & 1),
172
216
  configurable: !(bitmap & 2),
@@ -175,211 +219,521 @@ class CondenserBabelTest < ActiveSupport::TestCase
175
219
  };
176
220
  };
177
221
 
178
- var toString = {}.toString;
222
+ var uncurryThis$7 = functionUncurryThis;
223
+ var fails$5 = fails$8;
224
+ var classof = classofRaw$1;
179
225
 
180
- var classofRaw = function (it) {
181
- return toString.call(it).slice(8, -1);
182
- };
183
-
184
- var split = ''.split;
226
+ var $Object$2 = Object;
227
+ var split = uncurryThis$7(''.split);
185
228
 
186
229
  // fallback for non-array-like ES3 and non-enumerable old V8 strings
187
- var indexedObject = fails(function () {
230
+ var indexedObject = fails$5(function () {
188
231
  // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346
189
- // eslint-disable-next-line no-prototype-builtins
190
- return !Object('z').propertyIsEnumerable(0);
232
+ // eslint-disable-next-line no-prototype-builtins -- safe
233
+ return !$Object$2('z').propertyIsEnumerable(0);
191
234
  }) ? function (it) {
192
- return classofRaw(it) == 'String' ? split.call(it, '') : Object(it);
193
- } : Object;
235
+ return classof(it) === 'String' ? split(it, '') : $Object$2(it);
236
+ } : $Object$2;
237
+
238
+ // we can't use just `it == null` since of `document.all` special case
239
+ // https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot-aec
240
+ var isNullOrUndefined$2 = function (it) {
241
+ return it === null || it === undefined;
242
+ };
243
+
244
+ var isNullOrUndefined$1 = isNullOrUndefined$2;
245
+
246
+ var $TypeError$5 = TypeError;
194
247
 
195
248
  // `RequireObjectCoercible` abstract operation
196
- // https://tc39.github.io/ecma262/#sec-requireobjectcoercible
197
- var requireObjectCoercible = function (it) {
198
- if (it == undefined) throw TypeError("Can't call method on " + it);
249
+ // https://tc39.es/ecma262/#sec-requireobjectcoercible
250
+ var requireObjectCoercible$2 = function (it) {
251
+ if (isNullOrUndefined$1(it)) throw new $TypeError$5("Can't call method on " + it);
199
252
  return it;
200
253
  };
201
254
 
202
255
  // toObject with fallback for non-array-like ES3 strings
256
+ var IndexedObject$1 = indexedObject;
257
+ var requireObjectCoercible$1 = requireObjectCoercible$2;
203
258
 
259
+ var toIndexedObject$3 = function (it) {
260
+ return IndexedObject$1(requireObjectCoercible$1(it));
261
+ };
204
262
 
263
+ var isCallable$6 = isCallable$7;
264
+ var $documentAll = documentAll_1;
205
265
 
206
- var toIndexedObject = function (it) {
207
- return indexedObject(requireObjectCoercible(it));
266
+ var documentAll = $documentAll.all;
267
+
268
+ var isObject$4 = $documentAll.IS_HTMLDDA ? function (it) {
269
+ return typeof it == 'object' ? it !== null : isCallable$6(it) || it === documentAll;
270
+ } : function (it) {
271
+ return typeof it == 'object' ? it !== null : isCallable$6(it);
272
+ };
273
+
274
+ var path$3 = {};
275
+
276
+ var path$2 = path$3;
277
+ var global$8 = global$9;
278
+ var isCallable$5 = isCallable$7;
279
+
280
+ var aFunction = function (variable) {
281
+ return isCallable$5(variable) ? variable : undefined;
208
282
  };
209
283
 
210
- var isObject = function (it) {
211
- return typeof it === 'object' ? it !== null : typeof it === 'function';
284
+ var getBuiltIn$1 = function (namespace, method) {
285
+ return arguments.length < 2 ? aFunction(path$2[namespace]) || aFunction(global$8[namespace])
286
+ : path$2[namespace] && path$2[namespace][method] || global$8[namespace] && global$8[namespace][method];
212
287
  };
213
288
 
214
- // `ToPrimitive` abstract operation
215
- // https://tc39.github.io/ecma262/#sec-toprimitive
216
- // instead of the ES6 spec version, we didn't implement @@toPrimitive case
217
- // and the second argument - flag - preferred type is a string
218
- var toPrimitive = function (input, PREFERRED_STRING) {
219
- if (!isObject(input)) return input;
289
+ var uncurryThis$6 = functionUncurryThis;
290
+
291
+ var objectIsPrototypeOf = uncurryThis$6({}.isPrototypeOf);
292
+
293
+ var engineUserAgent = typeof navigator != 'undefined' && String(navigator.userAgent) || '';
294
+
295
+ var global$7 = global$9;
296
+ var userAgent = engineUserAgent;
297
+
298
+ var process = global$7.process;
299
+ var Deno = global$7.Deno;
300
+ var versions = process && process.versions || Deno && Deno.version;
301
+ var v8 = versions && versions.v8;
302
+ var match, version;
303
+
304
+ if (v8) {
305
+ match = v8.split('.');
306
+ // in old Chrome, versions of V8 isn't V8 = Chrome / 10
307
+ // but their correct versions are not interesting for us
308
+ version = match[0] > 0 && match[0] < 4 ? 1 : +(match[0] + match[1]);
309
+ }
310
+
311
+ // BrowserFS NodeJS `process` polyfill incorrectly set `.v8` to `0.0`
312
+ // so check `userAgent` even if `.v8` exists, but 0
313
+ if (!version && userAgent) {
314
+ match = userAgent.match(/Edge\\/(\\d+)/);
315
+ if (!match || match[1] >= 74) {
316
+ match = userAgent.match(/Chrome\\/(\\d+)/);
317
+ if (match) version = +match[1];
318
+ }
319
+ }
320
+
321
+ var engineV8Version = version;
322
+
323
+ /* eslint-disable es/no-symbol -- required for testing */
324
+ var V8_VERSION = engineV8Version;
325
+ var fails$4 = fails$8;
326
+ var global$6 = global$9;
327
+
328
+ var $String$2 = global$6.String;
329
+
330
+ // eslint-disable-next-line es/no-object-getownpropertysymbols -- required for testing
331
+ var symbolConstructorDetection = !!Object.getOwnPropertySymbols && !fails$4(function () {
332
+ var symbol = Symbol('symbol detection');
333
+ // Chrome 38 Symbol has incorrect toString conversion
334
+ // `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances
335
+ // nb: Do not call `String` directly to avoid this being optimized out to `symbol+''` which will,
336
+ // of course, fail.
337
+ return !$String$2(symbol) || !(Object(symbol) instanceof Symbol) ||
338
+ // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances
339
+ !Symbol.sham && V8_VERSION && V8_VERSION < 41;
340
+ });
341
+
342
+ /* eslint-disable es/no-symbol -- required for testing */
343
+ var NATIVE_SYMBOL$1 = symbolConstructorDetection;
344
+
345
+ var useSymbolAsUid = NATIVE_SYMBOL$1
346
+ && !Symbol.sham
347
+ && typeof Symbol.iterator == 'symbol';
348
+
349
+ var getBuiltIn = getBuiltIn$1;
350
+ var isCallable$4 = isCallable$7;
351
+ var isPrototypeOf = objectIsPrototypeOf;
352
+ var USE_SYMBOL_AS_UID$1 = useSymbolAsUid;
353
+
354
+ var $Object$1 = Object;
355
+
356
+ var isSymbol$2 = USE_SYMBOL_AS_UID$1 ? function (it) {
357
+ return typeof it == 'symbol';
358
+ } : function (it) {
359
+ var $Symbol = getBuiltIn('Symbol');
360
+ return isCallable$4($Symbol) && isPrototypeOf($Symbol.prototype, $Object$1(it));
361
+ };
362
+
363
+ var $String$1 = String;
364
+
365
+ var tryToString$1 = function (argument) {
366
+ try {
367
+ return $String$1(argument);
368
+ } catch (error) {
369
+ return 'Object';
370
+ }
371
+ };
372
+
373
+ var isCallable$3 = isCallable$7;
374
+ var tryToString = tryToString$1;
375
+
376
+ var $TypeError$4 = TypeError;
377
+
378
+ // `Assert: IsCallable(argument) is true`
379
+ var aCallable$2 = function (argument) {
380
+ if (isCallable$3(argument)) return argument;
381
+ throw new $TypeError$4(tryToString(argument) + ' is not a function');
382
+ };
383
+
384
+ var aCallable$1 = aCallable$2;
385
+ var isNullOrUndefined = isNullOrUndefined$2;
386
+
387
+ // `GetMethod` abstract operation
388
+ // https://tc39.es/ecma262/#sec-getmethod
389
+ var getMethod$1 = function (V, P) {
390
+ var func = V[P];
391
+ return isNullOrUndefined(func) ? undefined : aCallable$1(func);
392
+ };
393
+
394
+ var call$3 = functionCall;
395
+ var isCallable$2 = isCallable$7;
396
+ var isObject$3 = isObject$4;
397
+
398
+ var $TypeError$3 = TypeError;
399
+
400
+ // `OrdinaryToPrimitive` abstract operation
401
+ // https://tc39.es/ecma262/#sec-ordinarytoprimitive
402
+ var ordinaryToPrimitive$1 = function (input, pref) {
220
403
  var fn, val;
221
- if (PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val;
222
- if (typeof (fn = input.valueOf) == 'function' && !isObject(val = fn.call(input))) return val;
223
- if (!PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val;
224
- throw TypeError("Can't convert object to primitive value");
404
+ if (pref === 'string' && isCallable$2(fn = input.toString) && !isObject$3(val = call$3(fn, input))) return val;
405
+ if (isCallable$2(fn = input.valueOf) && !isObject$3(val = call$3(fn, input))) return val;
406
+ if (pref !== 'string' && isCallable$2(fn = input.toString) && !isObject$3(val = call$3(fn, input))) return val;
407
+ throw new $TypeError$3("Can't convert object to primitive value");
408
+ };
409
+
410
+ var shared$1 = {exports: {}};
411
+
412
+ var global$5 = global$9;
413
+
414
+ // eslint-disable-next-line es/no-object-defineproperty -- safe
415
+ var defineProperty$1 = Object.defineProperty;
416
+
417
+ var defineGlobalProperty$1 = function (key, value) {
418
+ try {
419
+ defineProperty$1(global$5, key, { value: value, configurable: true, writable: true });
420
+ } catch (error) {
421
+ global$5[key] = value;
422
+ } return value;
225
423
  };
226
424
 
227
- var hasOwnProperty = {}.hasOwnProperty;
425
+ var global$4 = global$9;
426
+ var defineGlobalProperty = defineGlobalProperty$1;
427
+
428
+ var SHARED = '__core-js_shared__';
429
+ var store$1 = global$4[SHARED] || defineGlobalProperty(SHARED, {});
430
+
431
+ var sharedStore = store$1;
432
+
433
+ var store = sharedStore;
434
+
435
+ (shared$1.exports = function (key, value) {
436
+ return store[key] || (store[key] = value !== undefined ? value : {});
437
+ })('versions', []).push({
438
+ version: '3.34.0',
439
+ mode: 'pure' ,
440
+ copyright: '© 2014-2023 Denis Pushkarev (zloirock.ru)',
441
+ license: 'https://github.com/zloirock/core-js/blob/v3.34.0/LICENSE',
442
+ source: 'https://github.com/zloirock/core-js'
443
+ });
444
+
445
+ var sharedExports = shared$1.exports;
446
+
447
+ var requireObjectCoercible = requireObjectCoercible$2;
448
+
449
+ var $Object = Object;
450
+
451
+ // `ToObject` abstract operation
452
+ // https://tc39.es/ecma262/#sec-toobject
453
+ var toObject$2 = function (argument) {
454
+ return $Object(requireObjectCoercible(argument));
455
+ };
456
+
457
+ var uncurryThis$5 = functionUncurryThis;
458
+ var toObject$1 = toObject$2;
459
+
460
+ var hasOwnProperty = uncurryThis$5({}.hasOwnProperty);
228
461
 
229
- var has = function (it, key) {
230
- return hasOwnProperty.call(it, key);
462
+ // `HasOwnProperty` abstract operation
463
+ // https://tc39.es/ecma262/#sec-hasownproperty
464
+ // eslint-disable-next-line es/no-object-hasown -- safe
465
+ var hasOwnProperty_1 = Object.hasOwn || function hasOwn(it, key) {
466
+ return hasOwnProperty(toObject$1(it), key);
231
467
  };
232
468
 
233
- var document = global_1.document;
469
+ var uncurryThis$4 = functionUncurryThis;
470
+
471
+ var id = 0;
472
+ var postfix = Math.random();
473
+ var toString = uncurryThis$4(1.0.toString);
474
+
475
+ var uid$1 = function (key) {
476
+ return 'Symbol(' + (key === undefined ? '' : key) + ')_' + toString(++id + postfix, 36);
477
+ };
478
+
479
+ var global$3 = global$9;
480
+ var shared = sharedExports;
481
+ var hasOwn$3 = hasOwnProperty_1;
482
+ var uid = uid$1;
483
+ var NATIVE_SYMBOL = symbolConstructorDetection;
484
+ var USE_SYMBOL_AS_UID = useSymbolAsUid;
485
+
486
+ var Symbol$1 = global$3.Symbol;
487
+ var WellKnownSymbolsStore = shared('wks');
488
+ var createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol$1['for'] || Symbol$1 : Symbol$1 && Symbol$1.withoutSetter || uid;
489
+
490
+ var wellKnownSymbol$1 = function (name) {
491
+ if (!hasOwn$3(WellKnownSymbolsStore, name)) {
492
+ WellKnownSymbolsStore[name] = NATIVE_SYMBOL && hasOwn$3(Symbol$1, name)
493
+ ? Symbol$1[name]
494
+ : createWellKnownSymbol('Symbol.' + name);
495
+ } return WellKnownSymbolsStore[name];
496
+ };
497
+
498
+ var call$2 = functionCall;
499
+ var isObject$2 = isObject$4;
500
+ var isSymbol$1 = isSymbol$2;
501
+ var getMethod = getMethod$1;
502
+ var ordinaryToPrimitive = ordinaryToPrimitive$1;
503
+ var wellKnownSymbol = wellKnownSymbol$1;
504
+
505
+ var $TypeError$2 = TypeError;
506
+ var TO_PRIMITIVE = wellKnownSymbol('toPrimitive');
507
+
508
+ // `ToPrimitive` abstract operation
509
+ // https://tc39.es/ecma262/#sec-toprimitive
510
+ var toPrimitive$1 = function (input, pref) {
511
+ if (!isObject$2(input) || isSymbol$1(input)) return input;
512
+ var exoticToPrim = getMethod(input, TO_PRIMITIVE);
513
+ var result;
514
+ if (exoticToPrim) {
515
+ if (pref === undefined) pref = 'default';
516
+ result = call$2(exoticToPrim, input, pref);
517
+ if (!isObject$2(result) || isSymbol$1(result)) return result;
518
+ throw new $TypeError$2("Can't convert object to primitive value");
519
+ }
520
+ if (pref === undefined) pref = 'number';
521
+ return ordinaryToPrimitive(input, pref);
522
+ };
523
+
524
+ var toPrimitive = toPrimitive$1;
525
+ var isSymbol = isSymbol$2;
526
+
527
+ // `ToPropertyKey` abstract operation
528
+ // https://tc39.es/ecma262/#sec-topropertykey
529
+ var toPropertyKey$2 = function (argument) {
530
+ var key = toPrimitive(argument, 'string');
531
+ return isSymbol(key) ? key : key + '';
532
+ };
533
+
534
+ var global$2 = global$9;
535
+ var isObject$1 = isObject$4;
536
+
537
+ var document$1 = global$2.document;
234
538
  // typeof document.createElement is 'object' in old IE
235
- var EXISTS = isObject(document) && isObject(document.createElement);
539
+ var EXISTS = isObject$1(document$1) && isObject$1(document$1.createElement);
236
540
 
237
541
  var documentCreateElement = function (it) {
238
- return EXISTS ? document.createElement(it) : {};
542
+ return EXISTS ? document$1.createElement(it) : {};
239
543
  };
240
544
 
241
- // Thank's IE8 for his funny defineProperty
242
- var ie8DomDefine = !descriptors && !fails(function () {
243
- return Object.defineProperty(documentCreateElement('div'), 'a', {
545
+ var DESCRIPTORS$5 = descriptors;
546
+ var fails$3 = fails$8;
547
+ var createElement = documentCreateElement;
548
+
549
+ // Thanks to IE8 for its funny defineProperty
550
+ var ie8DomDefine = !DESCRIPTORS$5 && !fails$3(function () {
551
+ // eslint-disable-next-line es/no-object-defineproperty -- required for testing
552
+ return Object.defineProperty(createElement('div'), 'a', {
244
553
  get: function () { return 7; }
245
- }).a != 7;
554
+ }).a !== 7;
246
555
  });
247
556
 
248
- var nativeGetOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;
557
+ var DESCRIPTORS$4 = descriptors;
558
+ var call$1 = functionCall;
559
+ var propertyIsEnumerableModule$1 = objectPropertyIsEnumerable;
560
+ var createPropertyDescriptor$1 = createPropertyDescriptor$2;
561
+ var toIndexedObject$2 = toIndexedObject$3;
562
+ var toPropertyKey$1 = toPropertyKey$2;
563
+ var hasOwn$2 = hasOwnProperty_1;
564
+ var IE8_DOM_DEFINE$1 = ie8DomDefine;
565
+
566
+ // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe
567
+ var $getOwnPropertyDescriptor$1 = Object.getOwnPropertyDescriptor;
249
568
 
250
569
  // `Object.getOwnPropertyDescriptor` method
251
- // https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptor
252
- var f$1 = descriptors ? nativeGetOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {
253
- O = toIndexedObject(O);
254
- P = toPrimitive(P, true);
255
- if (ie8DomDefine) try {
256
- return nativeGetOwnPropertyDescriptor(O, P);
570
+ // https://tc39.es/ecma262/#sec-object.getownpropertydescriptor
571
+ objectGetOwnPropertyDescriptor.f = DESCRIPTORS$4 ? $getOwnPropertyDescriptor$1 : function getOwnPropertyDescriptor(O, P) {
572
+ O = toIndexedObject$2(O);
573
+ P = toPropertyKey$1(P);
574
+ if (IE8_DOM_DEFINE$1) try {
575
+ return $getOwnPropertyDescriptor$1(O, P);
257
576
  } catch (error) { /* empty */ }
258
- if (has(O, P)) return createPropertyDescriptor(!objectPropertyIsEnumerable.f.call(O, P), O[P]);
577
+ if (hasOwn$2(O, P)) return createPropertyDescriptor$1(!call$1(propertyIsEnumerableModule$1.f, O, P), O[P]);
259
578
  };
260
579
 
261
- var objectGetOwnPropertyDescriptor = {
262
- f: f$1
263
- };
580
+ var fails$2 = fails$8;
581
+ var isCallable$1 = isCallable$7;
264
582
 
265
583
  var replacement = /#|\\.prototype\\./;
266
584
 
267
- var isForced = function (feature, detection) {
585
+ var isForced$1 = function (feature, detection) {
268
586
  var value = data[normalize(feature)];
269
- return value == POLYFILL ? true
270
- : value == NATIVE ? false
271
- : typeof detection == 'function' ? fails(detection)
587
+ return value === POLYFILL ? true
588
+ : value === NATIVE ? false
589
+ : isCallable$1(detection) ? fails$2(detection)
272
590
  : !!detection;
273
591
  };
274
592
 
275
- var normalize = isForced.normalize = function (string) {
593
+ var normalize = isForced$1.normalize = function (string) {
276
594
  return String(string).replace(replacement, '.').toLowerCase();
277
595
  };
278
596
 
279
- var data = isForced.data = {};
280
- var NATIVE = isForced.NATIVE = 'N';
281
- var POLYFILL = isForced.POLYFILL = 'P';
597
+ var data = isForced$1.data = {};
598
+ var NATIVE = isForced$1.NATIVE = 'N';
599
+ var POLYFILL = isForced$1.POLYFILL = 'P';
282
600
 
283
- var isForced_1 = isForced;
601
+ var isForced_1 = isForced$1;
284
602
 
285
- var path = {};
603
+ var uncurryThis$3 = functionUncurryThisClause;
604
+ var aCallable = aCallable$2;
605
+ var NATIVE_BIND = functionBindNative;
286
606
 
287
- var aFunction = function (it) {
288
- if (typeof it != 'function') {
289
- throw TypeError(String(it) + ' is not a function');
290
- } return it;
291
- };
607
+ var bind$1 = uncurryThis$3(uncurryThis$3.bind);
292
608
 
293
609
  // optional / simple context binding
294
- var functionBindContext = function (fn, that, length) {
295
- aFunction(fn);
296
- if (that === undefined) return fn;
297
- switch (length) {
298
- case 0: return function () {
299
- return fn.call(that);
300
- };
301
- case 1: return function (a) {
302
- return fn.call(that, a);
303
- };
304
- case 2: return function (a, b) {
305
- return fn.call(that, a, b);
306
- };
307
- case 3: return function (a, b, c) {
308
- return fn.call(that, a, b, c);
309
- };
310
- }
311
- return function (/* ...args */) {
610
+ var functionBindContext = function (fn, that) {
611
+ aCallable(fn);
612
+ return that === undefined ? fn : NATIVE_BIND ? bind$1(fn, that) : function (/* ...args */) {
312
613
  return fn.apply(that, arguments);
313
614
  };
314
615
  };
315
616
 
316
- var anObject = function (it) {
317
- if (!isObject(it)) {
318
- throw TypeError(String(it) + ' is not an object');
319
- } return it;
617
+ var objectDefineProperty = {};
618
+
619
+ var DESCRIPTORS$3 = descriptors;
620
+ var fails$1 = fails$8;
621
+
622
+ // V8 ~ Chrome 36-
623
+ // https://bugs.chromium.org/p/v8/issues/detail?id=3334
624
+ var v8PrototypeDefineBug = DESCRIPTORS$3 && fails$1(function () {
625
+ // eslint-disable-next-line es/no-object-defineproperty -- required for testing
626
+ return Object.defineProperty(function () { /* empty */ }, 'prototype', {
627
+ value: 42,
628
+ writable: false
629
+ }).prototype !== 42;
630
+ });
631
+
632
+ var isObject = isObject$4;
633
+
634
+ var $String = String;
635
+ var $TypeError$1 = TypeError;
636
+
637
+ // `Assert: Type(argument) is Object`
638
+ var anObject$1 = function (argument) {
639
+ if (isObject(argument)) return argument;
640
+ throw new $TypeError$1($String(argument) + ' is not an object');
320
641
  };
321
642
 
322
- var nativeDefineProperty = Object.defineProperty;
643
+ var DESCRIPTORS$2 = descriptors;
644
+ var IE8_DOM_DEFINE = ie8DomDefine;
645
+ var V8_PROTOTYPE_DEFINE_BUG = v8PrototypeDefineBug;
646
+ var anObject = anObject$1;
647
+ var toPropertyKey = toPropertyKey$2;
648
+
649
+ var $TypeError = TypeError;
650
+ // eslint-disable-next-line es/no-object-defineproperty -- safe
651
+ var $defineProperty = Object.defineProperty;
652
+ // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe
653
+ var $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;
654
+ var ENUMERABLE = 'enumerable';
655
+ var CONFIGURABLE = 'configurable';
656
+ var WRITABLE = 'writable';
323
657
 
324
658
  // `Object.defineProperty` method
325
- // https://tc39.github.io/ecma262/#sec-object.defineproperty
326
- var f$2 = descriptors ? nativeDefineProperty : function defineProperty(O, P, Attributes) {
659
+ // https://tc39.es/ecma262/#sec-object.defineproperty
660
+ objectDefineProperty.f = DESCRIPTORS$2 ? V8_PROTOTYPE_DEFINE_BUG ? function defineProperty(O, P, Attributes) {
661
+ anObject(O);
662
+ P = toPropertyKey(P);
663
+ anObject(Attributes);
664
+ if (typeof O === 'function' && P === 'prototype' && 'value' in Attributes && WRITABLE in Attributes && !Attributes[WRITABLE]) {
665
+ var current = $getOwnPropertyDescriptor(O, P);
666
+ if (current && current[WRITABLE]) {
667
+ O[P] = Attributes.value;
668
+ Attributes = {
669
+ configurable: CONFIGURABLE in Attributes ? Attributes[CONFIGURABLE] : current[CONFIGURABLE],
670
+ enumerable: ENUMERABLE in Attributes ? Attributes[ENUMERABLE] : current[ENUMERABLE],
671
+ writable: false
672
+ };
673
+ }
674
+ } return $defineProperty(O, P, Attributes);
675
+ } : $defineProperty : function defineProperty(O, P, Attributes) {
327
676
  anObject(O);
328
- P = toPrimitive(P, true);
677
+ P = toPropertyKey(P);
329
678
  anObject(Attributes);
330
- if (ie8DomDefine) try {
331
- return nativeDefineProperty(O, P, Attributes);
679
+ if (IE8_DOM_DEFINE) try {
680
+ return $defineProperty(O, P, Attributes);
332
681
  } catch (error) { /* empty */ }
333
- if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported');
682
+ if ('get' in Attributes || 'set' in Attributes) throw new $TypeError('Accessors not supported');
334
683
  if ('value' in Attributes) O[P] = Attributes.value;
335
684
  return O;
336
685
  };
337
686
 
338
- var objectDefineProperty = {
339
- f: f$2
340
- };
687
+ var DESCRIPTORS$1 = descriptors;
688
+ var definePropertyModule = objectDefineProperty;
689
+ var createPropertyDescriptor = createPropertyDescriptor$2;
341
690
 
342
- var createNonEnumerableProperty = descriptors ? function (object, key, value) {
343
- return objectDefineProperty.f(object, key, createPropertyDescriptor(1, value));
691
+ var createNonEnumerableProperty$1 = DESCRIPTORS$1 ? function (object, key, value) {
692
+ return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));
344
693
  } : function (object, key, value) {
345
694
  object[key] = value;
346
695
  return object;
347
696
  };
348
697
 
349
- var getOwnPropertyDescriptor$1 = objectGetOwnPropertyDescriptor.f;
350
-
351
-
352
-
353
-
354
-
698
+ var global$1 = global$9;
699
+ var apply = functionApply;
700
+ var uncurryThis$2 = functionUncurryThisClause;
701
+ var isCallable = isCallable$7;
702
+ var getOwnPropertyDescriptor = objectGetOwnPropertyDescriptor.f;
703
+ var isForced = isForced_1;
704
+ var path$1 = path$3;
705
+ var bind = functionBindContext;
706
+ var createNonEnumerableProperty = createNonEnumerableProperty$1;
707
+ var hasOwn$1 = hasOwnProperty_1;
355
708
 
356
709
  var wrapConstructor = function (NativeConstructor) {
357
710
  var Wrapper = function (a, b, c) {
358
- if (this instanceof NativeConstructor) {
711
+ if (this instanceof Wrapper) {
359
712
  switch (arguments.length) {
360
713
  case 0: return new NativeConstructor();
361
714
  case 1: return new NativeConstructor(a);
362
715
  case 2: return new NativeConstructor(a, b);
363
716
  } return new NativeConstructor(a, b, c);
364
- } return NativeConstructor.apply(this, arguments);
717
+ } return apply(NativeConstructor, this, arguments);
365
718
  };
366
719
  Wrapper.prototype = NativeConstructor.prototype;
367
720
  return Wrapper;
368
721
  };
369
722
 
370
723
  /*
371
- options.target - name of the target object
372
- options.global - target is the global object
373
- options.stat - export as static methods of target
374
- options.proto - export as prototype methods of target
375
- options.real - real prototype method for the `pure` version
376
- options.forced - export even if the native feature is available
377
- options.bind - bind methods to the target, required for the `pure` version
378
- options.wrap - wrap constructors to preventing global pollution, required for the `pure` version
379
- options.unsafe - use the simple assignment of property instead of delete + defineProperty
380
- options.sham - add a flag to not completely full polyfills
381
- options.enumerable - export as enumerable property
382
- options.noTargetGet - prevent calling a getter on target
724
+ options.target - name of the target object
725
+ options.global - target is the global object
726
+ options.stat - export as static methods of target
727
+ options.proto - export as prototype methods of target
728
+ options.real - real prototype method for the `pure` version
729
+ options.forced - export even if the native feature is available
730
+ options.bind - bind methods to the target, required for the `pure` version
731
+ options.wrap - wrap constructors to preventing global pollution, required for the `pure` version
732
+ options.unsafe - use the simple assignment of property instead of delete + defineProperty
733
+ options.sham - add a flag to not completely full polyfills
734
+ options.enumerable - export as enumerable property
735
+ options.dontCallGetSet - prevent calling a getter on target
736
+ options.name - the .name of the function if it does not match the key
383
737
  */
384
738
  var _export = function (options, source) {
385
739
  var TARGET = options.target;
@@ -387,37 +741,37 @@ class CondenserBabelTest < ActiveSupport::TestCase
387
741
  var STATIC = options.stat;
388
742
  var PROTO = options.proto;
389
743
 
390
- var nativeSource = GLOBAL ? global_1 : STATIC ? global_1[TARGET] : (global_1[TARGET] || {}).prototype;
744
+ var nativeSource = GLOBAL ? global$1 : STATIC ? global$1[TARGET] : (global$1[TARGET] || {}).prototype;
391
745
 
392
- var target = GLOBAL ? path : path[TARGET] || (path[TARGET] = {});
746
+ var target = GLOBAL ? path$1 : path$1[TARGET] || createNonEnumerableProperty(path$1, TARGET, {})[TARGET];
393
747
  var targetPrototype = target.prototype;
394
748
 
395
749
  var FORCED, USE_NATIVE, VIRTUAL_PROTOTYPE;
396
750
  var key, sourceProperty, targetProperty, nativeProperty, resultProperty, descriptor;
397
751
 
398
752
  for (key in source) {
399
- FORCED = isForced_1(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);
753
+ FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);
400
754
  // contains in native
401
- USE_NATIVE = !FORCED && nativeSource && has(nativeSource, key);
755
+ USE_NATIVE = !FORCED && nativeSource && hasOwn$1(nativeSource, key);
402
756
 
403
757
  targetProperty = target[key];
404
758
 
405
- if (USE_NATIVE) if (options.noTargetGet) {
406
- descriptor = getOwnPropertyDescriptor$1(nativeSource, key);
759
+ if (USE_NATIVE) if (options.dontCallGetSet) {
760
+ descriptor = getOwnPropertyDescriptor(nativeSource, key);
407
761
  nativeProperty = descriptor && descriptor.value;
408
762
  } else nativeProperty = nativeSource[key];
409
763
 
410
764
  // export native or implementation
411
765
  sourceProperty = (USE_NATIVE && nativeProperty) ? nativeProperty : source[key];
412
766
 
413
- if (USE_NATIVE && typeof targetProperty === typeof sourceProperty) continue;
767
+ if (USE_NATIVE && typeof targetProperty == typeof sourceProperty) continue;
414
768
 
415
- // bind timers to global for call from export context
416
- if (options.bind && USE_NATIVE) resultProperty = functionBindContext(sourceProperty, global_1);
417
- // wrap global constructors for prevent changs in this version
769
+ // bind methods to global for calling from export context
770
+ if (options.bind && USE_NATIVE) resultProperty = bind(sourceProperty, global$1);
771
+ // wrap global constructors for prevent changes in this version
418
772
  else if (options.wrap && USE_NATIVE) resultProperty = wrapConstructor(sourceProperty);
419
773
  // make static versions for prototype methods
420
- else if (PROTO && typeof sourceProperty == 'function') resultProperty = functionBindContext(Function.call, sourceProperty);
774
+ else if (PROTO && isCallable(sourceProperty)) resultProperty = uncurryThis$2(sourceProperty);
421
775
  // default case
422
776
  else resultProperty = sourceProperty;
423
777
 
@@ -426,17 +780,17 @@ class CondenserBabelTest < ActiveSupport::TestCase
426
780
  createNonEnumerableProperty(resultProperty, 'sham', true);
427
781
  }
428
782
 
429
- target[key] = resultProperty;
783
+ createNonEnumerableProperty(target, key, resultProperty);
430
784
 
431
785
  if (PROTO) {
432
786
  VIRTUAL_PROTOTYPE = TARGET + 'Prototype';
433
- if (!has(path, VIRTUAL_PROTOTYPE)) {
434
- createNonEnumerableProperty(path, VIRTUAL_PROTOTYPE, {});
787
+ if (!hasOwn$1(path$1, VIRTUAL_PROTOTYPE)) {
788
+ createNonEnumerableProperty(path$1, VIRTUAL_PROTOTYPE, {});
435
789
  }
436
790
  // export virtual prototype methods
437
- path[VIRTUAL_PROTOTYPE][key] = sourceProperty;
791
+ createNonEnumerableProperty(path$1[VIRTUAL_PROTOTYPE], key, sourceProperty);
438
792
  // export real prototype methods
439
- if (options.real && targetPrototype && !targetPrototype[key]) {
793
+ if (options.real && targetPrototype && (FORCED || !targetPrototype[key])) {
440
794
  createNonEnumerableProperty(targetPrototype, key, sourceProperty);
441
795
  }
442
796
  }
@@ -446,44 +800,72 @@ class CondenserBabelTest < ActiveSupport::TestCase
446
800
  var ceil = Math.ceil;
447
801
  var floor = Math.floor;
448
802
 
449
- // `ToInteger` abstract operation
450
- // https://tc39.github.io/ecma262/#sec-tointeger
451
- var toInteger = function (argument) {
452
- return isNaN(argument = +argument) ? 0 : (argument > 0 ? floor : ceil)(argument);
803
+ // `Math.trunc` method
804
+ // https://tc39.es/ecma262/#sec-math.trunc
805
+ // eslint-disable-next-line es/no-math-trunc -- safe
806
+ var mathTrunc = Math.trunc || function trunc(x) {
807
+ var n = +x;
808
+ return (n > 0 ? floor : ceil)(n);
453
809
  };
454
810
 
455
- var min = Math.min;
811
+ var trunc = mathTrunc;
456
812
 
457
- // `ToLength` abstract operation
458
- // https://tc39.github.io/ecma262/#sec-tolength
459
- var toLength = function (argument) {
460
- return argument > 0 ? min(toInteger(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991
813
+ // `ToIntegerOrInfinity` abstract operation
814
+ // https://tc39.es/ecma262/#sec-tointegerorinfinity
815
+ var toIntegerOrInfinity$2 = function (argument) {
816
+ var number = +argument;
817
+ // eslint-disable-next-line no-self-compare -- NaN check
818
+ return number !== number || number === 0 ? 0 : trunc(number);
461
819
  };
462
820
 
821
+ var toIntegerOrInfinity$1 = toIntegerOrInfinity$2;
822
+
463
823
  var max = Math.max;
464
824
  var min$1 = Math.min;
465
825
 
466
826
  // Helper for a popular repeating case of the spec:
467
827
  // Let integer be ? ToInteger(index).
468
828
  // If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).
469
- var toAbsoluteIndex = function (index, length) {
470
- var integer = toInteger(index);
829
+ var toAbsoluteIndex$1 = function (index, length) {
830
+ var integer = toIntegerOrInfinity$1(index);
471
831
  return integer < 0 ? max(integer + length, 0) : min$1(integer, length);
472
832
  };
473
833
 
834
+ var toIntegerOrInfinity = toIntegerOrInfinity$2;
835
+
836
+ var min = Math.min;
837
+
838
+ // `ToLength` abstract operation
839
+ // https://tc39.es/ecma262/#sec-tolength
840
+ var toLength$1 = function (argument) {
841
+ return argument > 0 ? min(toIntegerOrInfinity(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991
842
+ };
843
+
844
+ var toLength = toLength$1;
845
+
846
+ // `LengthOfArrayLike` abstract operation
847
+ // https://tc39.es/ecma262/#sec-lengthofarraylike
848
+ var lengthOfArrayLike$1 = function (obj) {
849
+ return toLength(obj.length);
850
+ };
851
+
852
+ var toIndexedObject$1 = toIndexedObject$3;
853
+ var toAbsoluteIndex = toAbsoluteIndex$1;
854
+ var lengthOfArrayLike = lengthOfArrayLike$1;
855
+
474
856
  // `Array.prototype.{ indexOf, includes }` methods implementation
475
857
  var createMethod = function (IS_INCLUDES) {
476
858
  return function ($this, el, fromIndex) {
477
- var O = toIndexedObject($this);
478
- var length = toLength(O.length);
859
+ var O = toIndexedObject$1($this);
860
+ var length = lengthOfArrayLike(O);
479
861
  var index = toAbsoluteIndex(fromIndex, length);
480
862
  var value;
481
863
  // Array#includes uses SameValueZero equality algorithm
482
- // eslint-disable-next-line no-self-compare
483
- if (IS_INCLUDES && el != el) while (length > index) {
864
+ // eslint-disable-next-line no-self-compare -- NaN check
865
+ if (IS_INCLUDES && el !== el) while (length > index) {
484
866
  value = O[index++];
485
- // eslint-disable-next-line no-self-compare
486
- if (value != value) return true;
867
+ // eslint-disable-next-line no-self-compare -- NaN check
868
+ if (value !== value) return true;
487
869
  // Array#indexOf ignores holes, Array#includes - not
488
870
  } else for (;length > index; index++) {
489
871
  if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;
@@ -493,33 +875,38 @@ class CondenserBabelTest < ActiveSupport::TestCase
493
875
 
494
876
  var arrayIncludes = {
495
877
  // `Array.prototype.includes` method
496
- // https://tc39.github.io/ecma262/#sec-array.prototype.includes
878
+ // https://tc39.es/ecma262/#sec-array.prototype.includes
497
879
  includes: createMethod(true),
498
880
  // `Array.prototype.indexOf` method
499
- // https://tc39.github.io/ecma262/#sec-array.prototype.indexof
881
+ // https://tc39.es/ecma262/#sec-array.prototype.indexof
500
882
  indexOf: createMethod(false)
501
883
  };
502
884
 
503
- var hiddenKeys = {};
885
+ var hiddenKeys$1 = {};
504
886
 
887
+ var uncurryThis$1 = functionUncurryThis;
888
+ var hasOwn = hasOwnProperty_1;
889
+ var toIndexedObject = toIndexedObject$3;
505
890
  var indexOf = arrayIncludes.indexOf;
891
+ var hiddenKeys = hiddenKeys$1;
506
892
 
893
+ var push = uncurryThis$1([].push);
507
894
 
508
895
  var objectKeysInternal = function (object, names) {
509
896
  var O = toIndexedObject(object);
510
897
  var i = 0;
511
898
  var result = [];
512
899
  var key;
513
- for (key in O) !has(hiddenKeys, key) && has(O, key) && result.push(key);
900
+ for (key in O) !hasOwn(hiddenKeys, key) && hasOwn(O, key) && push(result, key);
514
901
  // Don't enum bug & hidden keys
515
- while (names.length > i) if (has(O, key = names[i++])) {
516
- ~indexOf(result, key) || result.push(key);
902
+ while (names.length > i) if (hasOwn(O, key = names[i++])) {
903
+ ~indexOf(result, key) || push(result, key);
517
904
  }
518
905
  return result;
519
906
  };
520
907
 
521
908
  // IE8- don't enum bug keys
522
- var enumBugKeys = [
909
+ var enumBugKeys$1 = [
523
910
  'constructor',
524
911
  'hasOwnProperty',
525
912
  'isPrototypeOf',
@@ -529,32 +916,42 @@ class CondenserBabelTest < ActiveSupport::TestCase
529
916
  'valueOf'
530
917
  ];
531
918
 
919
+ var internalObjectKeys = objectKeysInternal;
920
+ var enumBugKeys = enumBugKeys$1;
921
+
532
922
  // `Object.keys` method
533
- // https://tc39.github.io/ecma262/#sec-object.keys
534
- var objectKeys = Object.keys || function keys(O) {
535
- return objectKeysInternal(O, enumBugKeys);
923
+ // https://tc39.es/ecma262/#sec-object.keys
924
+ // eslint-disable-next-line es/no-object-keys -- safe
925
+ var objectKeys$1 = Object.keys || function keys(O) {
926
+ return internalObjectKeys(O, enumBugKeys);
536
927
  };
537
928
 
538
- var f$3 = Object.getOwnPropertySymbols;
929
+ var objectGetOwnPropertySymbols = {};
539
930
 
540
- var objectGetOwnPropertySymbols = {
541
- f: f$3
542
- };
931
+ // eslint-disable-next-line es/no-object-getownpropertysymbols -- safe
932
+ objectGetOwnPropertySymbols.f = Object.getOwnPropertySymbols;
543
933
 
544
- // `ToObject` abstract operation
545
- // https://tc39.github.io/ecma262/#sec-toobject
546
- var toObject = function (argument) {
547
- return Object(requireObjectCoercible(argument));
548
- };
934
+ var DESCRIPTORS = descriptors;
935
+ var uncurryThis = functionUncurryThis;
936
+ var call = functionCall;
937
+ var fails = fails$8;
938
+ var objectKeys = objectKeys$1;
939
+ var getOwnPropertySymbolsModule = objectGetOwnPropertySymbols;
940
+ var propertyIsEnumerableModule = objectPropertyIsEnumerable;
941
+ var toObject = toObject$2;
942
+ var IndexedObject = indexedObject;
549
943
 
550
- var nativeAssign = Object.assign;
944
+ // eslint-disable-next-line es/no-object-assign -- safe
945
+ var $assign = Object.assign;
946
+ // eslint-disable-next-line es/no-object-defineproperty -- required for testing
551
947
  var defineProperty = Object.defineProperty;
948
+ var concat = uncurryThis([].concat);
552
949
 
553
950
  // `Object.assign` method
554
- // https://tc39.github.io/ecma262/#sec-object.assign
555
- var objectAssign = !nativeAssign || fails(function () {
951
+ // https://tc39.es/ecma262/#sec-object.assign
952
+ var objectAssign = !$assign || fails(function () {
556
953
  // should have correct order of operations (Edge bug)
557
- if (descriptors && nativeAssign({ b: 1 }, nativeAssign(defineProperty({}, 'a', {
954
+ if (DESCRIPTORS && $assign({ b: 1 }, $assign(defineProperty({}, 'a', {
558
955
  enumerable: true,
559
956
  get: function () {
560
957
  defineProperty(this, 'b', {
@@ -566,51 +963,61 @@ class CondenserBabelTest < ActiveSupport::TestCase
566
963
  // should work with symbols and should have deterministic property order (V8 bug)
567
964
  var A = {};
568
965
  var B = {};
569
- // eslint-disable-next-line no-undef
570
- var symbol = Symbol();
966
+ // eslint-disable-next-line es/no-symbol -- safe
967
+ var symbol = Symbol('assign detection');
571
968
  var alphabet = 'abcdefghijklmnopqrst';
572
969
  A[symbol] = 7;
573
970
  alphabet.split('').forEach(function (chr) { B[chr] = chr; });
574
- return nativeAssign({}, A)[symbol] != 7 || objectKeys(nativeAssign({}, B)).join('') != alphabet;
575
- }) ? function assign(target, source) { // eslint-disable-line no-unused-vars
971
+ return $assign({}, A)[symbol] !== 7 || objectKeys($assign({}, B)).join('') !== alphabet;
972
+ }) ? function assign(target, source) { // eslint-disable-line no-unused-vars -- required for `.length`
576
973
  var T = toObject(target);
577
974
  var argumentsLength = arguments.length;
578
975
  var index = 1;
579
- var getOwnPropertySymbols = objectGetOwnPropertySymbols.f;
580
- var propertyIsEnumerable = objectPropertyIsEnumerable.f;
976
+ var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;
977
+ var propertyIsEnumerable = propertyIsEnumerableModule.f;
581
978
  while (argumentsLength > index) {
582
- var S = indexedObject(arguments[index++]);
583
- var keys = getOwnPropertySymbols ? objectKeys(S).concat(getOwnPropertySymbols(S)) : objectKeys(S);
979
+ var S = IndexedObject(arguments[index++]);
980
+ var keys = getOwnPropertySymbols ? concat(objectKeys(S), getOwnPropertySymbols(S)) : objectKeys(S);
584
981
  var length = keys.length;
585
982
  var j = 0;
586
983
  var key;
587
984
  while (length > j) {
588
985
  key = keys[j++];
589
- if (!descriptors || propertyIsEnumerable.call(S, key)) T[key] = S[key];
986
+ if (!DESCRIPTORS || call(propertyIsEnumerable, S, key)) T[key] = S[key];
590
987
  }
591
988
  } return T;
592
- } : nativeAssign;
989
+ } : $assign;
990
+
991
+ var $ = _export;
992
+ var assign$3 = objectAssign;
593
993
 
594
994
  // `Object.assign` method
595
- // https://tc39.github.io/ecma262/#sec-object.assign
596
- _export({ target: 'Object', stat: true, forced: Object.assign !== objectAssign }, {
597
- assign: objectAssign
995
+ // https://tc39.es/ecma262/#sec-object.assign
996
+ // eslint-disable-next-line es/no-object-assign -- required for testing
997
+ $({ target: 'Object', stat: true, arity: 2, forced: Object.assign !== assign$3 }, {
998
+ assign: assign$3
598
999
  });
599
1000
 
600
- var assign = path.Object.assign;
1001
+ var path = path$3;
1002
+
1003
+ var assign$2 = path.Object.assign;
1004
+
1005
+ var parent = assign$2;
1006
+
1007
+ var assign$1 = parent;
601
1008
 
602
- var assign$1 = assign;
1009
+ var assign = assign$1;
603
1010
 
604
- var assign$2 = assign$1;
1011
+ var _Object$assign = /*@__PURE__*/getDefaultExportFromCjs(assign);
605
1012
 
606
1013
  function a () {
607
- console.log(assign$2({}, {
1014
+ console.log(_Object$assign({}, {
608
1015
  a: 1
609
1016
  }));
610
1017
  }
611
1018
 
612
1019
  function b () {
613
- console.log(assign$2({}, {
1020
+ console.log(_Object$assign({}, {
614
1021
  b: 1
615
1022
  }));
616
1023
  }
@@ -618,48 +1025,35 @@ class CondenserBabelTest < ActiveSupport::TestCase
618
1025
  a();
619
1026
  b();
620
1027
 
621
- }());
1028
+ })();
622
1029
  JS
623
1030
  end
624
1031
 
625
1032
  test 'npm modules also get babelized' do
626
1033
  file "#{@npm_path}/module/name.js", <<~JS
627
- export default class { };
1034
+ export default function x(y) { return y?.z; }
628
1035
  JS
629
-
1036
+
630
1037
  file 'name.js', <<~JS
631
- import C from 'module/name';
632
-
633
- class D extends C { }
1038
+ import x from 'module/name';
1039
+
1040
+ var d = {};
1041
+ console.log(x(d?.z));
634
1042
  JS
635
-
636
- assert_file 'name.js', 'application/javascript', <<~JS
637
- import _Reflect$construct from "@babel/runtime-corejs3/core-js-stable/reflect/construct";
638
- import _classCallCheck from "@babel/runtime-corejs3/helpers/esm/classCallCheck";
639
- import _inherits from "@babel/runtime-corejs3/helpers/esm/inherits";
640
- import _possibleConstructorReturn from "@babel/runtime-corejs3/helpers/esm/possibleConstructorReturn";
641
- import _getPrototypeOf from "@babel/runtime-corejs3/helpers/esm/getPrototypeOf";
642
-
643
- function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = _Reflect$construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
644
-
645
- function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !_Reflect$construct) return false; if (_Reflect$construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(_Reflect$construct(Date, [], function () {})); return true; } catch (e) { return false; } }
646
-
647
- import C from 'module/name';
648
-
649
- var D = /*#__PURE__*/function (_C) {
650
- _inherits(D, _C);
651
-
652
- var _super = _createSuper(D);
653
-
654
- function D() {
655
- _classCallCheck(this, D);
656
-
657
- return _super.apply(this, arguments);
1043
+
1044
+ assert_exported_file 'name.js', 'application/javascript', <<~JS
1045
+ (function () {
1046
+ 'use strict';
1047
+
1048
+ function x(y) {
1049
+ return y === null || y === void 0 ? void 0 : y.z;
658
1050
  }
659
-
660
- return D;
661
- }(C);
1051
+
1052
+ var d = {};
1053
+ console.log(x(d === null || d === void 0 ? void 0 : d.z));
1054
+
1055
+ })();
662
1056
  JS
663
-
1057
+
664
1058
  end
665
1059
  end