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.
- package/CHANGELOG.md +12 -0
- package/LICENSE +1 -1
- package/README.md +62 -62
- package/bower.json +1 -1
- package/build/config.js +1 -0
- package/client/core.js +1337 -920
- package/client/core.min.js +5 -5
- package/client/core.min.js.map +1 -1
- package/client/library.js +121 -113
- package/client/library.min.js +5 -5
- package/client/library.min.js.map +1 -1
- package/client/shim.js +1207 -790
- package/client/shim.min.js +5 -5
- package/client/shim.min.js.map +1 -1
- package/es6/index.js +1 -0
- package/es6/regexp.js +1 -0
- package/fn/regexp/index.js +1 -0
- package/library/es6/index.js +1 -0
- package/library/es6/regexp.js +1 -0
- package/library/fn/regexp/index.js +1 -0
- package/library/modules/_advance-string-index.js +8 -0
- package/library/modules/_core.js +1 -1
- package/library/modules/_fix-re-wks.js +74 -6
- package/library/modules/_regexp-exec-abstract.js +1 -0
- package/library/modules/_regexp-exec.js +1 -0
- package/library/modules/_shared.js +1 -1
- package/library/modules/es6.regexp.exec.js +1 -0
- package/library/shim.js +1 -0
- package/modules/_advance-string-index.js +8 -0
- package/modules/_core.js +1 -1
- package/modules/_fix-re-wks.js +74 -6
- package/modules/_regexp-exec-abstract.js +21 -0
- package/modules/_regexp-exec.js +58 -0
- package/modules/_shared.js +1 -1
- package/modules/es6.regexp.exec.js +9 -0
- package/modules/es6.regexp.match.js +38 -8
- package/modules/es6.regexp.replace.js +116 -10
- package/modules/es6.regexp.search.js +29 -8
- package/modules/es6.regexp.split.js +94 -31
- package/modules/library/_regexp-exec-abstract.js +1 -0
- package/modules/library/_regexp-exec.js +1 -0
- package/modules/library/es6.regexp.exec.js +1 -0
- package/package.json +1 -1
- 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
|
-
|
|
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
|
-
|
|
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
|
|
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 ?
|
|
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
|
|
35
|
-
|
|
36
|
-
|
|
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
|
-
|
|
62
|
-
return separator === undefined && limit === 0 ? [] :
|
|
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
|
-
|
|
66
|
-
return [
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
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
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');
|