core-js 2.5.7 → 2.6.3

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.
Files changed (44) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/LICENSE +1 -1
  3. package/README.md +62 -62
  4. package/bower.json +1 -1
  5. package/build/config.js +1 -0
  6. package/client/core.js +1337 -920
  7. package/client/core.min.js +5 -5
  8. package/client/core.min.js.map +1 -1
  9. package/client/library.js +121 -113
  10. package/client/library.min.js +5 -5
  11. package/client/library.min.js.map +1 -1
  12. package/client/shim.js +1207 -790
  13. package/client/shim.min.js +5 -5
  14. package/client/shim.min.js.map +1 -1
  15. package/es6/index.js +1 -0
  16. package/es6/regexp.js +1 -0
  17. package/fn/regexp/index.js +1 -0
  18. package/library/es6/index.js +1 -0
  19. package/library/es6/regexp.js +1 -0
  20. package/library/fn/regexp/index.js +1 -0
  21. package/library/modules/_advance-string-index.js +8 -0
  22. package/library/modules/_core.js +1 -1
  23. package/library/modules/_fix-re-wks.js +74 -6
  24. package/library/modules/_regexp-exec-abstract.js +1 -0
  25. package/library/modules/_regexp-exec.js +1 -0
  26. package/library/modules/_shared.js +1 -1
  27. package/library/modules/es6.regexp.exec.js +1 -0
  28. package/library/shim.js +1 -0
  29. package/modules/_advance-string-index.js +8 -0
  30. package/modules/_core.js +1 -1
  31. package/modules/_fix-re-wks.js +74 -6
  32. package/modules/_regexp-exec-abstract.js +21 -0
  33. package/modules/_regexp-exec.js +58 -0
  34. package/modules/_shared.js +1 -1
  35. package/modules/es6.regexp.exec.js +9 -0
  36. package/modules/es6.regexp.match.js +38 -8
  37. package/modules/es6.regexp.replace.js +116 -10
  38. package/modules/es6.regexp.search.js +29 -8
  39. package/modules/es6.regexp.split.js +94 -31
  40. package/modules/library/_regexp-exec-abstract.js +1 -0
  41. package/modules/library/_regexp-exec.js +1 -0
  42. package/modules/library/es6.regexp.exec.js +1 -0
  43. package/package.json +1 -1
  44. package/shim.js +1 -0
@@ -1,12 +1,26 @@
1
+ 'use strict';
2
+
3
+ var isRegExp = require('./_is-regexp');
4
+ var anObject = require('./_an-object');
5
+ var speciesConstructor = require('./_species-constructor');
6
+ var advanceStringIndex = require('./_advance-string-index');
7
+ var toLength = require('./_to-length');
8
+ var callRegExpExec = require('./_regexp-exec-abstract');
9
+ var regexpExec = require('./_regexp-exec');
10
+ var fails = require('./_fails');
11
+ var $min = Math.min;
12
+ var $push = [].push;
13
+ var $SPLIT = 'split';
14
+ var LENGTH = 'length';
15
+ var LAST_INDEX = 'lastIndex';
16
+ var MAX_UINT32 = 0xffffffff;
17
+
18
+ // babel-minify transpiles RegExp('x', 'y') -> /x/y and it causes SyntaxError
19
+ var SUPPORTS_Y = !fails(function () { RegExp(MAX_UINT32, 'y'); });
20
+
1
21
  // @@split logic
2
- require('./_fix-re-wks')('split', 2, function (defined, SPLIT, $split) {
3
- 'use strict';
4
- var isRegExp = require('./_is-regexp');
5
- var _split = $split;
6
- var $push = [].push;
7
- var $SPLIT = 'split';
8
- var LENGTH = 'length';
9
- var LAST_INDEX = 'lastIndex';
22
+ require('./_fix-re-wks')('split', 2, function (defined, SPLIT, $split, maybeCallNative) {
23
+ var internalSplit;
10
24
  if (
11
25
  'abbc'[$SPLIT](/(b)*/)[1] == 'c' ||
12
26
  'test'[$SPLIT](/(?:)/, -1)[LENGTH] != 4 ||
@@ -15,35 +29,26 @@ require('./_fix-re-wks')('split', 2, function (defined, SPLIT, $split) {
15
29
  '.'[$SPLIT](/()()/)[LENGTH] > 1 ||
16
30
  ''[$SPLIT](/.?/)[LENGTH]
17
31
  ) {
18
- var NPCG = /()??/.exec('')[1] === undefined; // nonparticipating capturing group
19
32
  // based on es5-shim implementation, need to rework it
20
- $split = function (separator, limit) {
33
+ internalSplit = function (separator, limit) {
21
34
  var string = String(this);
22
35
  if (separator === undefined && limit === 0) return [];
23
36
  // If `separator` is not a regex, use native split
24
- if (!isRegExp(separator)) return _split.call(string, separator, limit);
37
+ if (!isRegExp(separator)) return $split.call(string, separator, limit);
25
38
  var output = [];
26
39
  var flags = (separator.ignoreCase ? 'i' : '') +
27
40
  (separator.multiline ? 'm' : '') +
28
41
  (separator.unicode ? 'u' : '') +
29
42
  (separator.sticky ? 'y' : '');
30
43
  var lastLastIndex = 0;
31
- var splitLimit = limit === undefined ? 4294967295 : limit >>> 0;
44
+ var splitLimit = limit === undefined ? MAX_UINT32 : limit >>> 0;
32
45
  // Make `global` and avoid `lastIndex` issues by working with a copy
33
46
  var separatorCopy = new RegExp(separator.source, flags + 'g');
34
- var separator2, match, lastIndex, lastLength, i;
35
- // Doesn't need flags gy, but they don't hurt
36
- if (!NPCG) separator2 = new RegExp('^' + separatorCopy.source + '$(?!\\s)', flags);
37
- while (match = separatorCopy.exec(string)) {
38
- // `separatorCopy.lastIndex` is not reliable cross-browser
39
- lastIndex = match.index + match[0][LENGTH];
47
+ var match, lastIndex, lastLength;
48
+ while (match = regexpExec.call(separatorCopy, string)) {
49
+ lastIndex = separatorCopy[LAST_INDEX];
40
50
  if (lastIndex > lastLastIndex) {
41
51
  output.push(string.slice(lastLastIndex, match.index));
42
- // Fix browsers whose `exec` methods don't consistently return `undefined` for NPCG
43
- // eslint-disable-next-line no-loop-func
44
- if (!NPCG && match[LENGTH] > 1) match[0].replace(separator2, function () {
45
- for (i = 1; i < arguments[LENGTH] - 2; i++) if (arguments[i] === undefined) match[i] = undefined;
46
- });
47
52
  if (match[LENGTH] > 1 && match.index < string[LENGTH]) $push.apply(output, match.slice(1));
48
53
  lastLength = match[0][LENGTH];
49
54
  lastLastIndex = lastIndex;
@@ -58,14 +63,72 @@ require('./_fix-re-wks')('split', 2, function (defined, SPLIT, $split) {
58
63
  };
59
64
  // Chakra, V8
60
65
  } else if ('0'[$SPLIT](undefined, 0)[LENGTH]) {
61
- $split = function (separator, limit) {
62
- return separator === undefined && limit === 0 ? [] : _split.call(this, separator, limit);
66
+ internalSplit = function (separator, limit) {
67
+ return separator === undefined && limit === 0 ? [] : $split.call(this, separator, limit);
63
68
  };
69
+ } else {
70
+ internalSplit = $split;
64
71
  }
65
- // 21.1.3.17 String.prototype.split(separator, limit)
66
- return [function split(separator, limit) {
67
- var O = defined(this);
68
- var fn = separator == undefined ? undefined : separator[SPLIT];
69
- return fn !== undefined ? fn.call(separator, O, limit) : $split.call(String(O), separator, limit);
70
- }, $split];
72
+
73
+ return [
74
+ // `String.prototype.split` method
75
+ // https://tc39.github.io/ecma262/#sec-string.prototype.split
76
+ function split(separator, limit) {
77
+ var O = defined(this);
78
+ var splitter = separator == undefined ? undefined : separator[SPLIT];
79
+ return splitter !== undefined
80
+ ? splitter.call(separator, O, limit)
81
+ : internalSplit.call(String(O), separator, limit);
82
+ },
83
+ // `RegExp.prototype[@@split]` method
84
+ // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@split
85
+ //
86
+ // NOTE: This cannot be properly polyfilled in engines that don't support
87
+ // the 'y' flag.
88
+ function (regexp, limit) {
89
+ var res = maybeCallNative(internalSplit, regexp, this, limit, internalSplit !== $split);
90
+ if (res.done) return res.value;
91
+
92
+ var rx = anObject(regexp);
93
+ var S = String(this);
94
+ var C = speciesConstructor(rx, RegExp);
95
+
96
+ var unicodeMatching = rx.unicode;
97
+ var flags = (rx.ignoreCase ? 'i' : '') +
98
+ (rx.multiline ? 'm' : '') +
99
+ (rx.unicode ? 'u' : '') +
100
+ (SUPPORTS_Y ? 'y' : 'g');
101
+
102
+ // ^(? + rx + ) is needed, in combination with some S slicing, to
103
+ // simulate the 'y' flag.
104
+ var splitter = new C(SUPPORTS_Y ? rx : '^(?:' + rx.source + ')', flags);
105
+ var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;
106
+ if (lim === 0) return [];
107
+ if (S.length === 0) return callRegExpExec(splitter, S) === null ? [S] : [];
108
+ var p = 0;
109
+ var q = 0;
110
+ var A = [];
111
+ while (q < S.length) {
112
+ splitter.lastIndex = SUPPORTS_Y ? q : 0;
113
+ var z = callRegExpExec(splitter, SUPPORTS_Y ? S : S.slice(q));
114
+ var e;
115
+ if (
116
+ z === null ||
117
+ (e = $min(toLength(splitter.lastIndex + (SUPPORTS_Y ? 0 : q)), S.length)) === p
118
+ ) {
119
+ q = advanceStringIndex(S, q, unicodeMatching);
120
+ } else {
121
+ A.push(S.slice(p, q));
122
+ if (A.length === lim) return A;
123
+ for (var i = 1; i <= z.length - 1; i++) {
124
+ A.push(z[i]);
125
+ if (A.length === lim) return A;
126
+ }
127
+ q = p = e;
128
+ }
129
+ }
130
+ A.push(S.slice(p));
131
+ return A;
132
+ }
133
+ ];
71
134
  });
@@ -0,0 +1 @@
1
+ // empty
@@ -0,0 +1 @@
1
+ // empty
@@ -0,0 +1 @@
1
+ // empty
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "core-js",
3
3
  "description": "Standard library",
4
- "version": "2.5.7",
4
+ "version": "2.6.3",
5
5
  "repository": {
6
6
  "type": "git",
7
7
  "url": "https://github.com/zloirock/core-js.git"
package/shim.js CHANGED
@@ -99,6 +99,7 @@ require('./modules/es6.array.find-index');
99
99
  require('./modules/es6.array.species');
100
100
  require('./modules/es6.array.iterator');
101
101
  require('./modules/es6.regexp.constructor');
102
+ require('./modules/es6.regexp.exec');
102
103
  require('./modules/es6.regexp.to-string');
103
104
  require('./modules/es6.regexp.flags');
104
105
  require('./modules/es6.regexp.match');