core-js 2.5.6 → 2.6.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.
Files changed (46) 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 +1268 -853
  7. package/client/core.min.js +5 -5
  8. package/client/core.min.js.map +1 -1
  9. package/client/library.js +124 -116
  10. package/client/library.min.js +5 -5
  11. package/client/library.min.js.map +1 -1
  12. package/client/shim.js +1205 -790
  13. package/client/shim.min.js +4 -4
  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/modules/es6.typed.array-buffer.js +3 -3
  29. package/library/shim.js +1 -0
  30. package/modules/_advance-string-index.js +8 -0
  31. package/modules/_core.js +1 -1
  32. package/modules/_fix-re-wks.js +74 -6
  33. package/modules/_regexp-exec-abstract.js +21 -0
  34. package/modules/_regexp-exec.js +58 -0
  35. package/modules/_shared.js +1 -1
  36. package/modules/es6.regexp.exec.js +9 -0
  37. package/modules/es6.regexp.match.js +38 -8
  38. package/modules/es6.regexp.replace.js +116 -10
  39. package/modules/es6.regexp.search.js +29 -8
  40. package/modules/es6.regexp.split.js +91 -30
  41. package/modules/es6.typed.array-buffer.js +3 -3
  42. package/modules/library/_regexp-exec-abstract.js +1 -0
  43. package/modules/library/_regexp-exec.js +1 -0
  44. package/modules/library/es6.regexp.exec.js +1 -0
  45. package/package.json +3 -3
  46. package/shim.js +1 -0
@@ -1,12 +1,24 @@
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 $min = Math.min;
11
+ var $push = [].push;
12
+ var $SPLIT = 'split';
13
+ var LENGTH = 'length';
14
+ var LAST_INDEX = 'lastIndex';
15
+
16
+ // eslint-disable-next-line no-empty
17
+ var SUPPORTS_Y = !!(function () { try { return new RegExp('x', 'y'); } catch (e) {} })();
18
+
1
19
  // @@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';
20
+ require('./_fix-re-wks')('split', 2, function (defined, SPLIT, $split, maybeCallNative) {
21
+ var internalSplit;
10
22
  if (
11
23
  'abbc'[$SPLIT](/(b)*/)[1] == 'c' ||
12
24
  'test'[$SPLIT](/(?:)/, -1)[LENGTH] != 4 ||
@@ -15,13 +27,12 @@ require('./_fix-re-wks')('split', 2, function (defined, SPLIT, $split) {
15
27
  '.'[$SPLIT](/()()/)[LENGTH] > 1 ||
16
28
  ''[$SPLIT](/.?/)[LENGTH]
17
29
  ) {
18
- var NPCG = /()??/.exec('')[1] === undefined; // nonparticipating capturing group
19
30
  // based on es5-shim implementation, need to rework it
20
- $split = function (separator, limit) {
31
+ internalSplit = function (separator, limit) {
21
32
  var string = String(this);
22
33
  if (separator === undefined && limit === 0) return [];
23
34
  // If `separator` is not a regex, use native split
24
- if (!isRegExp(separator)) return _split.call(string, separator, limit);
35
+ if (!isRegExp(separator)) return $split.call(string, separator, limit);
25
36
  var output = [];
26
37
  var flags = (separator.ignoreCase ? 'i' : '') +
27
38
  (separator.multiline ? 'm' : '') +
@@ -31,19 +42,11 @@ require('./_fix-re-wks')('split', 2, function (defined, SPLIT, $split) {
31
42
  var splitLimit = limit === undefined ? 4294967295 : limit >>> 0;
32
43
  // Make `global` and avoid `lastIndex` issues by working with a copy
33
44
  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];
45
+ var match, lastIndex, lastLength;
46
+ while (match = regexpExec.call(separatorCopy, string)) {
47
+ lastIndex = separatorCopy[LAST_INDEX];
40
48
  if (lastIndex > lastLastIndex) {
41
49
  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
50
  if (match[LENGTH] > 1 && match.index < string[LENGTH]) $push.apply(output, match.slice(1));
48
51
  lastLength = match[0][LENGTH];
49
52
  lastLastIndex = lastIndex;
@@ -58,14 +61,72 @@ require('./_fix-re-wks')('split', 2, function (defined, SPLIT, $split) {
58
61
  };
59
62
  // Chakra, V8
60
63
  } else if ('0'[$SPLIT](undefined, 0)[LENGTH]) {
61
- $split = function (separator, limit) {
62
- return separator === undefined && limit === 0 ? [] : _split.call(this, separator, limit);
64
+ internalSplit = function (separator, limit) {
65
+ return separator === undefined && limit === 0 ? [] : $split.call(this, separator, limit);
63
66
  };
67
+ } else {
68
+ internalSplit = $split;
64
69
  }
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];
70
+
71
+ return [
72
+ // `String.prototype.split` method
73
+ // https://tc39.github.io/ecma262/#sec-string.prototype.split
74
+ function split(separator, limit) {
75
+ var O = defined(this);
76
+ var splitter = separator == undefined ? undefined : separator[SPLIT];
77
+ return splitter !== undefined
78
+ ? splitter.call(separator, O, limit)
79
+ : internalSplit.call(String(O), separator, limit);
80
+ },
81
+ // `RegExp.prototype[@@split]` method
82
+ // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@split
83
+ //
84
+ // NOTE: This cannot be properly polyfilled in engines that don't support
85
+ // the 'y' flag.
86
+ function (regexp, limit) {
87
+ var res = maybeCallNative(internalSplit, regexp, this, limit, internalSplit !== $split);
88
+ if (res.done) return res.value;
89
+
90
+ var rx = anObject(regexp);
91
+ var S = String(this);
92
+ var C = speciesConstructor(rx, RegExp);
93
+
94
+ var unicodeMatching = rx.unicode;
95
+ var flags = (rx.ignoreCase ? 'i' : '') +
96
+ (rx.multiline ? 'm' : '') +
97
+ (rx.unicode ? 'u' : '') +
98
+ (SUPPORTS_Y ? 'y' : 'g');
99
+
100
+ // ^(? + rx + ) is needed, in combination with some S slicing, to
101
+ // simulate the 'y' flag.
102
+ var splitter = new C(SUPPORTS_Y ? rx : '^(?:' + rx.source + ')', flags);
103
+ var lim = limit === undefined ? 0xffffffff : limit >>> 0;
104
+ if (lim === 0) return [];
105
+ if (S.length === 0) return callRegExpExec(splitter, S) === null ? [S] : [];
106
+ var p = 0;
107
+ var q = 0;
108
+ var A = [];
109
+ while (q < S.length) {
110
+ splitter.lastIndex = SUPPORTS_Y ? q : 0;
111
+ var z = callRegExpExec(splitter, SUPPORTS_Y ? S : S.slice(q));
112
+ var e;
113
+ if (
114
+ z === null ||
115
+ (e = $min(toLength(splitter.lastIndex + (SUPPORTS_Y ? 0 : q)), S.length)) === p
116
+ ) {
117
+ q = advanceStringIndex(S, q, unicodeMatching);
118
+ } else {
119
+ A.push(S.slice(p, q));
120
+ if (A.length === lim) return A;
121
+ for (var i = 1; i <= z.length - 1; i++) {
122
+ A.push(z[i]);
123
+ if (A.length === lim) return A;
124
+ }
125
+ q = p = e;
126
+ }
127
+ }
128
+ A.push(S.slice(p));
129
+ return A;
130
+ }
131
+ ];
71
132
  });
@@ -32,12 +32,12 @@ $export($export.P + $export.U + $export.F * require('./_fails')(function () {
32
32
  if ($slice !== undefined && end === undefined) return $slice.call(anObject(this), start); // FF fix
33
33
  var len = anObject(this).byteLength;
34
34
  var first = toAbsoluteIndex(start, len);
35
- var final = toAbsoluteIndex(end === undefined ? len : end, len);
36
- var result = new (speciesConstructor(this, $ArrayBuffer))(toLength(final - first));
35
+ var fin = toAbsoluteIndex(end === undefined ? len : end, len);
36
+ var result = new (speciesConstructor(this, $ArrayBuffer))(toLength(fin - first));
37
37
  var viewS = new $DataView(this);
38
38
  var viewT = new $DataView(result);
39
39
  var index = 0;
40
- while (first < final) {
40
+ while (first < fin) {
41
41
  viewT.setUint8(index++, viewS.getUint8(first++));
42
42
  } return result;
43
43
  }
@@ -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.6",
4
+ "version": "2.6.2",
5
5
  "repository": {
6
6
  "type": "git",
7
7
  "url": "https://github.com/zloirock/core-js.git"
@@ -11,7 +11,7 @@
11
11
  "LiveScript": "1.3.x",
12
12
  "es-observable-tests": "0.2.x",
13
13
  "eslint": "4.19.x",
14
- "eslint-plugin-import": "2.11.x",
14
+ "eslint-plugin-import": "2.12.x",
15
15
  "grunt": "^1.0.2",
16
16
  "grunt-cli": "^1.2.0",
17
17
  "grunt-contrib-clean": "^1.1.0",
@@ -21,7 +21,7 @@
21
21
  "grunt-karma": "^2.0.0",
22
22
  "grunt-livescript": "0.6.x",
23
23
  "karma": "^2.0.0",
24
- "karma-qunit": "^2.0.1",
24
+ "karma-qunit": "^2.1.0",
25
25
  "karma-chrome-launcher": "^2.2.0",
26
26
  "karma-firefox-launcher": "^1.0.1",
27
27
  "karma-ie-launcher": "^1.0.0",
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');