cypress 12.16.0 → 12.17.0
Sign up to get free protection for your applications and to get access to all the features.
- package/package.json +4 -4
- package/react/dist/cypress-react.cjs.js +96 -33
- package/react/dist/cypress-react.esm-bundler.js +96 -33
- package/react/package.json +2 -2
- package/react18/dist/cypress-react.cjs.js +50 -6
- package/react18/dist/cypress-react.esm-bundler.js +50 -6
- package/types/cypress-npm-api.d.ts +2 -2
- package/types/cypress.d.ts +12 -1
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "cypress",
|
3
|
-
"version": "12.
|
3
|
+
"version": "12.17.0",
|
4
4
|
"main": "index.js",
|
5
5
|
"scripts": {
|
6
6
|
"postinstall": "node index.js --exec install",
|
@@ -44,7 +44,7 @@
|
|
44
44
|
"pretty-bytes": "^5.6.0",
|
45
45
|
"proxy-from-env": "1.0.0",
|
46
46
|
"request-progress": "^3.0.0",
|
47
|
-
"semver": "^7.3
|
47
|
+
"semver": "^7.5.3",
|
48
48
|
"supports-color": "^8.1.1",
|
49
49
|
"tmp": "~0.2.1",
|
50
50
|
"untildify": "^4.0.0",
|
@@ -118,8 +118,8 @@
|
|
118
118
|
},
|
119
119
|
"buildInfo": {
|
120
120
|
"commitBranch": "develop",
|
121
|
-
"commitSha": "
|
122
|
-
"commitDate": "2023-
|
121
|
+
"commitSha": "12823cd59771ebf40b095cc8c49063f5f4109adf",
|
122
|
+
"commitDate": "2023-07-05T17:53:14.000Z",
|
123
123
|
"stable": true
|
124
124
|
},
|
125
125
|
"description": "Cypress is a next generation front end testing tool built for the modern web",
|
@@ -273,11 +273,29 @@ const MAX_SAFE_INTEGER$1 = Number.MAX_SAFE_INTEGER ||
|
|
273
273
|
// Max safe segment length for coercion.
|
274
274
|
const MAX_SAFE_COMPONENT_LENGTH = 16;
|
275
275
|
|
276
|
+
// Max safe length for a build identifier. The max length minus 6 characters for
|
277
|
+
// the shortest version with a build 0.0.0+BUILD.
|
278
|
+
const MAX_SAFE_BUILD_LENGTH = MAX_LENGTH$1 - 6;
|
279
|
+
|
280
|
+
const RELEASE_TYPES = [
|
281
|
+
'major',
|
282
|
+
'premajor',
|
283
|
+
'minor',
|
284
|
+
'preminor',
|
285
|
+
'patch',
|
286
|
+
'prepatch',
|
287
|
+
'prerelease',
|
288
|
+
];
|
289
|
+
|
276
290
|
var constants = {
|
277
|
-
SEMVER_SPEC_VERSION,
|
278
291
|
MAX_LENGTH: MAX_LENGTH$1,
|
279
|
-
MAX_SAFE_INTEGER: MAX_SAFE_INTEGER$1,
|
280
292
|
MAX_SAFE_COMPONENT_LENGTH,
|
293
|
+
MAX_SAFE_BUILD_LENGTH,
|
294
|
+
MAX_SAFE_INTEGER: MAX_SAFE_INTEGER$1,
|
295
|
+
RELEASE_TYPES,
|
296
|
+
SEMVER_SPEC_VERSION,
|
297
|
+
FLAG_INCLUDE_PRERELEASE: 0b001,
|
298
|
+
FLAG_LOOSE: 0b010,
|
281
299
|
};
|
282
300
|
|
283
301
|
function createCommonjsModule(fn) {
|
@@ -286,22 +304,48 @@ function createCommonjsModule(fn) {
|
|
286
304
|
}
|
287
305
|
|
288
306
|
var re_1 = createCommonjsModule(function (module, exports) {
|
289
|
-
const { MAX_SAFE_COMPONENT_LENGTH } = constants;
|
307
|
+
const { MAX_SAFE_COMPONENT_LENGTH, MAX_SAFE_BUILD_LENGTH } = constants;
|
290
308
|
|
291
309
|
exports = module.exports = {};
|
292
310
|
|
293
311
|
// The actual regexps go on exports.re
|
294
312
|
const re = exports.re = [];
|
313
|
+
const safeRe = exports.safeRe = [];
|
295
314
|
const src = exports.src = [];
|
296
315
|
const t = exports.t = {};
|
297
316
|
let R = 0;
|
298
317
|
|
318
|
+
const LETTERDASHNUMBER = '[a-zA-Z0-9-]';
|
319
|
+
|
320
|
+
// Replace some greedy regex tokens to prevent regex dos issues. These regex are
|
321
|
+
// used internally via the safeRe object since all inputs in this library get
|
322
|
+
// normalized first to trim and collapse all extra whitespace. The original
|
323
|
+
// regexes are exported for userland consumption and lower level usage. A
|
324
|
+
// future breaking change could export the safer regex only with a note that
|
325
|
+
// all input should have extra whitespace removed.
|
326
|
+
const safeRegexReplacements = [
|
327
|
+
['\\s', 1],
|
328
|
+
['\\d', MAX_SAFE_COMPONENT_LENGTH],
|
329
|
+
[LETTERDASHNUMBER, MAX_SAFE_BUILD_LENGTH],
|
330
|
+
];
|
331
|
+
|
332
|
+
const makeSafeRegex = (value) => {
|
333
|
+
for (const [token, max] of safeRegexReplacements) {
|
334
|
+
value = value
|
335
|
+
.split(`${token}*`).join(`${token}{0,${max}}`)
|
336
|
+
.split(`${token}+`).join(`${token}{1,${max}}`);
|
337
|
+
}
|
338
|
+
return value
|
339
|
+
};
|
340
|
+
|
299
341
|
const createToken = (name, value, isGlobal) => {
|
342
|
+
const safe = makeSafeRegex(value);
|
300
343
|
const index = R++;
|
301
344
|
debug_1(name, index, value);
|
302
345
|
t[name] = index;
|
303
346
|
src[index] = value;
|
304
347
|
re[index] = new RegExp(value, isGlobal ? 'g' : undefined);
|
348
|
+
safeRe[index] = new RegExp(safe, isGlobal ? 'g' : undefined);
|
305
349
|
};
|
306
350
|
|
307
351
|
// The following Regular Expressions can be used for tokenizing,
|
@@ -311,13 +355,13 @@ const createToken = (name, value, isGlobal) => {
|
|
311
355
|
// A single `0`, or a non-zero digit followed by zero or more digits.
|
312
356
|
|
313
357
|
createToken('NUMERICIDENTIFIER', '0|[1-9]\\d*');
|
314
|
-
createToken('NUMERICIDENTIFIERLOOSE', '
|
358
|
+
createToken('NUMERICIDENTIFIERLOOSE', '\\d+');
|
315
359
|
|
316
360
|
// ## Non-numeric Identifier
|
317
361
|
// Zero or more digits, followed by a letter or hyphen, and then zero or
|
318
362
|
// more letters, digits, or hyphens.
|
319
363
|
|
320
|
-
createToken('NONNUMERICIDENTIFIER',
|
364
|
+
createToken('NONNUMERICIDENTIFIER', `\\d*[a-zA-Z-]${LETTERDASHNUMBER}*`);
|
321
365
|
|
322
366
|
// ## Main Version
|
323
367
|
// Three dot-separated numeric identifiers.
|
@@ -352,7 +396,7 @@ createToken('PRERELEASELOOSE', `(?:-?(${src[t.PRERELEASEIDENTIFIERLOOSE]
|
|
352
396
|
// ## Build Metadata Identifier
|
353
397
|
// Any combination of digits, letters, or hyphens.
|
354
398
|
|
355
|
-
createToken('BUILDIDENTIFIER',
|
399
|
+
createToken('BUILDIDENTIFIER', `${LETTERDASHNUMBER}+`);
|
356
400
|
|
357
401
|
// ## Build Metadata
|
358
402
|
// Plus sign, followed by one or more period-separated build metadata
|
@@ -470,16 +514,20 @@ createToken('GTE0', '^\\s*>=\\s*0\\.0\\.0\\s*$');
|
|
470
514
|
createToken('GTE0PRE', '^\\s*>=\\s*0\\.0\\.0-0\\s*$');
|
471
515
|
});
|
472
516
|
|
473
|
-
// parse out just the options we care about
|
474
|
-
|
475
|
-
const
|
476
|
-
const parseOptions = options =>
|
477
|
-
!options
|
478
|
-
|
479
|
-
|
480
|
-
|
481
|
-
|
482
|
-
|
517
|
+
// parse out just the options we care about
|
518
|
+
const looseOption = Object.freeze({ loose: true });
|
519
|
+
const emptyOpts = Object.freeze({ });
|
520
|
+
const parseOptions = options => {
|
521
|
+
if (!options) {
|
522
|
+
return emptyOpts
|
523
|
+
}
|
524
|
+
|
525
|
+
if (typeof options !== 'object') {
|
526
|
+
return looseOption
|
527
|
+
}
|
528
|
+
|
529
|
+
return options
|
530
|
+
};
|
483
531
|
var parseOptions_1 = parseOptions;
|
484
532
|
|
485
533
|
const numeric = /^[0-9]+$/;
|
@@ -507,7 +555,7 @@ var identifiers = {
|
|
507
555
|
};
|
508
556
|
|
509
557
|
const { MAX_LENGTH, MAX_SAFE_INTEGER } = constants;
|
510
|
-
const { re, t } = re_1;
|
558
|
+
const { safeRe: re, t } = re_1;
|
511
559
|
|
512
560
|
|
513
561
|
const { compareIdentifiers } = identifiers;
|
@@ -523,7 +571,7 @@ class SemVer {
|
|
523
571
|
version = version.version;
|
524
572
|
}
|
525
573
|
} else if (typeof version !== 'string') {
|
526
|
-
throw new TypeError(`Invalid
|
574
|
+
throw new TypeError(`Invalid version. Must be a string. Got type "${typeof version}".`)
|
527
575
|
}
|
528
576
|
|
529
577
|
if (version.length > MAX_LENGTH) {
|
@@ -682,36 +730,36 @@ class SemVer {
|
|
682
730
|
|
683
731
|
// preminor will bump the version up to the next minor release, and immediately
|
684
732
|
// down to pre-release. premajor and prepatch work the same way.
|
685
|
-
inc (release, identifier) {
|
733
|
+
inc (release, identifier, identifierBase) {
|
686
734
|
switch (release) {
|
687
735
|
case 'premajor':
|
688
736
|
this.prerelease.length = 0;
|
689
737
|
this.patch = 0;
|
690
738
|
this.minor = 0;
|
691
739
|
this.major++;
|
692
|
-
this.inc('pre', identifier);
|
740
|
+
this.inc('pre', identifier, identifierBase);
|
693
741
|
break
|
694
742
|
case 'preminor':
|
695
743
|
this.prerelease.length = 0;
|
696
744
|
this.patch = 0;
|
697
745
|
this.minor++;
|
698
|
-
this.inc('pre', identifier);
|
746
|
+
this.inc('pre', identifier, identifierBase);
|
699
747
|
break
|
700
748
|
case 'prepatch':
|
701
749
|
// If this is already a prerelease, it will bump to the next version
|
702
750
|
// drop any prereleases that might already exist, since they are not
|
703
751
|
// relevant at this point.
|
704
752
|
this.prerelease.length = 0;
|
705
|
-
this.inc('patch', identifier);
|
706
|
-
this.inc('pre', identifier);
|
753
|
+
this.inc('patch', identifier, identifierBase);
|
754
|
+
this.inc('pre', identifier, identifierBase);
|
707
755
|
break
|
708
756
|
// If the input is a non-prerelease version, this acts the same as
|
709
757
|
// prepatch.
|
710
758
|
case 'prerelease':
|
711
759
|
if (this.prerelease.length === 0) {
|
712
|
-
this.inc('patch', identifier);
|
760
|
+
this.inc('patch', identifier, identifierBase);
|
713
761
|
}
|
714
|
-
this.inc('pre', identifier);
|
762
|
+
this.inc('pre', identifier, identifierBase);
|
715
763
|
break
|
716
764
|
|
717
765
|
case 'major':
|
@@ -753,9 +801,15 @@ class SemVer {
|
|
753
801
|
break
|
754
802
|
// This probably shouldn't be used publicly.
|
755
803
|
// 1.0.0 'pre' would become 1.0.0-0 which is the wrong direction.
|
756
|
-
case 'pre':
|
804
|
+
case 'pre': {
|
805
|
+
const base = Number(identifierBase) ? 1 : 0;
|
806
|
+
|
807
|
+
if (!identifier && identifierBase === false) {
|
808
|
+
throw new Error('invalid increment argument: identifier is empty')
|
809
|
+
}
|
810
|
+
|
757
811
|
if (this.prerelease.length === 0) {
|
758
|
-
this.prerelease = [
|
812
|
+
this.prerelease = [base];
|
759
813
|
} else {
|
760
814
|
let i = this.prerelease.length;
|
761
815
|
while (--i >= 0) {
|
@@ -766,27 +820,36 @@ class SemVer {
|
|
766
820
|
}
|
767
821
|
if (i === -1) {
|
768
822
|
// didn't increment anything
|
769
|
-
this.prerelease.
|
823
|
+
if (identifier === this.prerelease.join('.') && identifierBase === false) {
|
824
|
+
throw new Error('invalid increment argument: identifier already exists')
|
825
|
+
}
|
826
|
+
this.prerelease.push(base);
|
770
827
|
}
|
771
828
|
}
|
772
829
|
if (identifier) {
|
773
830
|
// 1.2.0-beta.1 bumps to 1.2.0-beta.2,
|
774
831
|
// 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0
|
832
|
+
let prerelease = [identifier, base];
|
833
|
+
if (identifierBase === false) {
|
834
|
+
prerelease = [identifier];
|
835
|
+
}
|
775
836
|
if (compareIdentifiers(this.prerelease[0], identifier) === 0) {
|
776
837
|
if (isNaN(this.prerelease[1])) {
|
777
|
-
this.prerelease =
|
838
|
+
this.prerelease = prerelease;
|
778
839
|
}
|
779
840
|
} else {
|
780
|
-
this.prerelease =
|
841
|
+
this.prerelease = prerelease;
|
781
842
|
}
|
782
843
|
}
|
783
844
|
break
|
784
|
-
|
845
|
+
}
|
785
846
|
default:
|
786
847
|
throw new Error(`invalid increment argument: ${release}`)
|
787
848
|
}
|
788
|
-
this.format();
|
789
|
-
this.
|
849
|
+
this.raw = this.format();
|
850
|
+
if (this.build.length) {
|
851
|
+
this.raw += `+${this.build.join('.')}`;
|
852
|
+
}
|
790
853
|
return this
|
791
854
|
}
|
792
855
|
}
|
@@ -253,11 +253,29 @@ const MAX_SAFE_INTEGER$1 = Number.MAX_SAFE_INTEGER ||
|
|
253
253
|
// Max safe segment length for coercion.
|
254
254
|
const MAX_SAFE_COMPONENT_LENGTH = 16;
|
255
255
|
|
256
|
+
// Max safe length for a build identifier. The max length minus 6 characters for
|
257
|
+
// the shortest version with a build 0.0.0+BUILD.
|
258
|
+
const MAX_SAFE_BUILD_LENGTH = MAX_LENGTH$1 - 6;
|
259
|
+
|
260
|
+
const RELEASE_TYPES = [
|
261
|
+
'major',
|
262
|
+
'premajor',
|
263
|
+
'minor',
|
264
|
+
'preminor',
|
265
|
+
'patch',
|
266
|
+
'prepatch',
|
267
|
+
'prerelease',
|
268
|
+
];
|
269
|
+
|
256
270
|
var constants = {
|
257
|
-
SEMVER_SPEC_VERSION,
|
258
271
|
MAX_LENGTH: MAX_LENGTH$1,
|
259
|
-
MAX_SAFE_INTEGER: MAX_SAFE_INTEGER$1,
|
260
272
|
MAX_SAFE_COMPONENT_LENGTH,
|
273
|
+
MAX_SAFE_BUILD_LENGTH,
|
274
|
+
MAX_SAFE_INTEGER: MAX_SAFE_INTEGER$1,
|
275
|
+
RELEASE_TYPES,
|
276
|
+
SEMVER_SPEC_VERSION,
|
277
|
+
FLAG_INCLUDE_PRERELEASE: 0b001,
|
278
|
+
FLAG_LOOSE: 0b010,
|
261
279
|
};
|
262
280
|
|
263
281
|
function createCommonjsModule(fn) {
|
@@ -266,22 +284,48 @@ function createCommonjsModule(fn) {
|
|
266
284
|
}
|
267
285
|
|
268
286
|
var re_1 = createCommonjsModule(function (module, exports) {
|
269
|
-
const { MAX_SAFE_COMPONENT_LENGTH } = constants;
|
287
|
+
const { MAX_SAFE_COMPONENT_LENGTH, MAX_SAFE_BUILD_LENGTH } = constants;
|
270
288
|
|
271
289
|
exports = module.exports = {};
|
272
290
|
|
273
291
|
// The actual regexps go on exports.re
|
274
292
|
const re = exports.re = [];
|
293
|
+
const safeRe = exports.safeRe = [];
|
275
294
|
const src = exports.src = [];
|
276
295
|
const t = exports.t = {};
|
277
296
|
let R = 0;
|
278
297
|
|
298
|
+
const LETTERDASHNUMBER = '[a-zA-Z0-9-]';
|
299
|
+
|
300
|
+
// Replace some greedy regex tokens to prevent regex dos issues. These regex are
|
301
|
+
// used internally via the safeRe object since all inputs in this library get
|
302
|
+
// normalized first to trim and collapse all extra whitespace. The original
|
303
|
+
// regexes are exported for userland consumption and lower level usage. A
|
304
|
+
// future breaking change could export the safer regex only with a note that
|
305
|
+
// all input should have extra whitespace removed.
|
306
|
+
const safeRegexReplacements = [
|
307
|
+
['\\s', 1],
|
308
|
+
['\\d', MAX_SAFE_COMPONENT_LENGTH],
|
309
|
+
[LETTERDASHNUMBER, MAX_SAFE_BUILD_LENGTH],
|
310
|
+
];
|
311
|
+
|
312
|
+
const makeSafeRegex = (value) => {
|
313
|
+
for (const [token, max] of safeRegexReplacements) {
|
314
|
+
value = value
|
315
|
+
.split(`${token}*`).join(`${token}{0,${max}}`)
|
316
|
+
.split(`${token}+`).join(`${token}{1,${max}}`);
|
317
|
+
}
|
318
|
+
return value
|
319
|
+
};
|
320
|
+
|
279
321
|
const createToken = (name, value, isGlobal) => {
|
322
|
+
const safe = makeSafeRegex(value);
|
280
323
|
const index = R++;
|
281
324
|
debug_1(name, index, value);
|
282
325
|
t[name] = index;
|
283
326
|
src[index] = value;
|
284
327
|
re[index] = new RegExp(value, isGlobal ? 'g' : undefined);
|
328
|
+
safeRe[index] = new RegExp(safe, isGlobal ? 'g' : undefined);
|
285
329
|
};
|
286
330
|
|
287
331
|
// The following Regular Expressions can be used for tokenizing,
|
@@ -291,13 +335,13 @@ const createToken = (name, value, isGlobal) => {
|
|
291
335
|
// A single `0`, or a non-zero digit followed by zero or more digits.
|
292
336
|
|
293
337
|
createToken('NUMERICIDENTIFIER', '0|[1-9]\\d*');
|
294
|
-
createToken('NUMERICIDENTIFIERLOOSE', '
|
338
|
+
createToken('NUMERICIDENTIFIERLOOSE', '\\d+');
|
295
339
|
|
296
340
|
// ## Non-numeric Identifier
|
297
341
|
// Zero or more digits, followed by a letter or hyphen, and then zero or
|
298
342
|
// more letters, digits, or hyphens.
|
299
343
|
|
300
|
-
createToken('NONNUMERICIDENTIFIER',
|
344
|
+
createToken('NONNUMERICIDENTIFIER', `\\d*[a-zA-Z-]${LETTERDASHNUMBER}*`);
|
301
345
|
|
302
346
|
// ## Main Version
|
303
347
|
// Three dot-separated numeric identifiers.
|
@@ -332,7 +376,7 @@ createToken('PRERELEASELOOSE', `(?:-?(${src[t.PRERELEASEIDENTIFIERLOOSE]
|
|
332
376
|
// ## Build Metadata Identifier
|
333
377
|
// Any combination of digits, letters, or hyphens.
|
334
378
|
|
335
|
-
createToken('BUILDIDENTIFIER',
|
379
|
+
createToken('BUILDIDENTIFIER', `${LETTERDASHNUMBER}+`);
|
336
380
|
|
337
381
|
// ## Build Metadata
|
338
382
|
// Plus sign, followed by one or more period-separated build metadata
|
@@ -450,16 +494,20 @@ createToken('GTE0', '^\\s*>=\\s*0\\.0\\.0\\s*$');
|
|
450
494
|
createToken('GTE0PRE', '^\\s*>=\\s*0\\.0\\.0-0\\s*$');
|
451
495
|
});
|
452
496
|
|
453
|
-
// parse out just the options we care about
|
454
|
-
|
455
|
-
const
|
456
|
-
const parseOptions = options =>
|
457
|
-
!options
|
458
|
-
|
459
|
-
|
460
|
-
|
461
|
-
|
462
|
-
|
497
|
+
// parse out just the options we care about
|
498
|
+
const looseOption = Object.freeze({ loose: true });
|
499
|
+
const emptyOpts = Object.freeze({ });
|
500
|
+
const parseOptions = options => {
|
501
|
+
if (!options) {
|
502
|
+
return emptyOpts
|
503
|
+
}
|
504
|
+
|
505
|
+
if (typeof options !== 'object') {
|
506
|
+
return looseOption
|
507
|
+
}
|
508
|
+
|
509
|
+
return options
|
510
|
+
};
|
463
511
|
var parseOptions_1 = parseOptions;
|
464
512
|
|
465
513
|
const numeric = /^[0-9]+$/;
|
@@ -487,7 +535,7 @@ var identifiers = {
|
|
487
535
|
};
|
488
536
|
|
489
537
|
const { MAX_LENGTH, MAX_SAFE_INTEGER } = constants;
|
490
|
-
const { re, t } = re_1;
|
538
|
+
const { safeRe: re, t } = re_1;
|
491
539
|
|
492
540
|
|
493
541
|
const { compareIdentifiers } = identifiers;
|
@@ -503,7 +551,7 @@ class SemVer {
|
|
503
551
|
version = version.version;
|
504
552
|
}
|
505
553
|
} else if (typeof version !== 'string') {
|
506
|
-
throw new TypeError(`Invalid
|
554
|
+
throw new TypeError(`Invalid version. Must be a string. Got type "${typeof version}".`)
|
507
555
|
}
|
508
556
|
|
509
557
|
if (version.length > MAX_LENGTH) {
|
@@ -662,36 +710,36 @@ class SemVer {
|
|
662
710
|
|
663
711
|
// preminor will bump the version up to the next minor release, and immediately
|
664
712
|
// down to pre-release. premajor and prepatch work the same way.
|
665
|
-
inc (release, identifier) {
|
713
|
+
inc (release, identifier, identifierBase) {
|
666
714
|
switch (release) {
|
667
715
|
case 'premajor':
|
668
716
|
this.prerelease.length = 0;
|
669
717
|
this.patch = 0;
|
670
718
|
this.minor = 0;
|
671
719
|
this.major++;
|
672
|
-
this.inc('pre', identifier);
|
720
|
+
this.inc('pre', identifier, identifierBase);
|
673
721
|
break
|
674
722
|
case 'preminor':
|
675
723
|
this.prerelease.length = 0;
|
676
724
|
this.patch = 0;
|
677
725
|
this.minor++;
|
678
|
-
this.inc('pre', identifier);
|
726
|
+
this.inc('pre', identifier, identifierBase);
|
679
727
|
break
|
680
728
|
case 'prepatch':
|
681
729
|
// If this is already a prerelease, it will bump to the next version
|
682
730
|
// drop any prereleases that might already exist, since they are not
|
683
731
|
// relevant at this point.
|
684
732
|
this.prerelease.length = 0;
|
685
|
-
this.inc('patch', identifier);
|
686
|
-
this.inc('pre', identifier);
|
733
|
+
this.inc('patch', identifier, identifierBase);
|
734
|
+
this.inc('pre', identifier, identifierBase);
|
687
735
|
break
|
688
736
|
// If the input is a non-prerelease version, this acts the same as
|
689
737
|
// prepatch.
|
690
738
|
case 'prerelease':
|
691
739
|
if (this.prerelease.length === 0) {
|
692
|
-
this.inc('patch', identifier);
|
740
|
+
this.inc('patch', identifier, identifierBase);
|
693
741
|
}
|
694
|
-
this.inc('pre', identifier);
|
742
|
+
this.inc('pre', identifier, identifierBase);
|
695
743
|
break
|
696
744
|
|
697
745
|
case 'major':
|
@@ -733,9 +781,15 @@ class SemVer {
|
|
733
781
|
break
|
734
782
|
// This probably shouldn't be used publicly.
|
735
783
|
// 1.0.0 'pre' would become 1.0.0-0 which is the wrong direction.
|
736
|
-
case 'pre':
|
784
|
+
case 'pre': {
|
785
|
+
const base = Number(identifierBase) ? 1 : 0;
|
786
|
+
|
787
|
+
if (!identifier && identifierBase === false) {
|
788
|
+
throw new Error('invalid increment argument: identifier is empty')
|
789
|
+
}
|
790
|
+
|
737
791
|
if (this.prerelease.length === 0) {
|
738
|
-
this.prerelease = [
|
792
|
+
this.prerelease = [base];
|
739
793
|
} else {
|
740
794
|
let i = this.prerelease.length;
|
741
795
|
while (--i >= 0) {
|
@@ -746,27 +800,36 @@ class SemVer {
|
|
746
800
|
}
|
747
801
|
if (i === -1) {
|
748
802
|
// didn't increment anything
|
749
|
-
this.prerelease.
|
803
|
+
if (identifier === this.prerelease.join('.') && identifierBase === false) {
|
804
|
+
throw new Error('invalid increment argument: identifier already exists')
|
805
|
+
}
|
806
|
+
this.prerelease.push(base);
|
750
807
|
}
|
751
808
|
}
|
752
809
|
if (identifier) {
|
753
810
|
// 1.2.0-beta.1 bumps to 1.2.0-beta.2,
|
754
811
|
// 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0
|
812
|
+
let prerelease = [identifier, base];
|
813
|
+
if (identifierBase === false) {
|
814
|
+
prerelease = [identifier];
|
815
|
+
}
|
755
816
|
if (compareIdentifiers(this.prerelease[0], identifier) === 0) {
|
756
817
|
if (isNaN(this.prerelease[1])) {
|
757
|
-
this.prerelease =
|
818
|
+
this.prerelease = prerelease;
|
758
819
|
}
|
759
820
|
} else {
|
760
|
-
this.prerelease =
|
821
|
+
this.prerelease = prerelease;
|
761
822
|
}
|
762
823
|
}
|
763
824
|
break
|
764
|
-
|
825
|
+
}
|
765
826
|
default:
|
766
827
|
throw new Error(`invalid increment argument: ${release}`)
|
767
828
|
}
|
768
|
-
this.format();
|
769
|
-
this.
|
829
|
+
this.raw = this.format();
|
830
|
+
if (this.build.length) {
|
831
|
+
this.raw += `+${this.build.join('.')}`;
|
832
|
+
}
|
770
833
|
return this
|
771
834
|
}
|
772
835
|
}
|
package/react/package.json
CHANGED
@@ -17,7 +17,7 @@
|
|
17
17
|
},
|
18
18
|
"devDependencies": {
|
19
19
|
"@cypress/mount-utils": "0.0.0-development",
|
20
|
-
"@types/semver": "7.
|
20
|
+
"@types/semver": "7.5.0",
|
21
21
|
"@vitejs/plugin-react": "4.0.0",
|
22
22
|
"axios": "0.21.2",
|
23
23
|
"cypress": "0.0.0-development",
|
@@ -26,7 +26,7 @@
|
|
26
26
|
"react-dom": "16.8.6",
|
27
27
|
"react-router": "6.0.0-alpha.1",
|
28
28
|
"react-router-dom": "6.0.0-alpha.1",
|
29
|
-
"semver": "^7.3
|
29
|
+
"semver": "^7.5.3",
|
30
30
|
"typescript": "^4.7.4",
|
31
31
|
"vite": "4.3.2",
|
32
32
|
"vite-plugin-require-transform": "1.0.12"
|
@@ -282,11 +282,29 @@ const MAX_SAFE_INTEGER$1 = Number.MAX_SAFE_INTEGER ||
|
|
282
282
|
// Max safe segment length for coercion.
|
283
283
|
const MAX_SAFE_COMPONENT_LENGTH = 16;
|
284
284
|
|
285
|
+
// Max safe length for a build identifier. The max length minus 6 characters for
|
286
|
+
// the shortest version with a build 0.0.0+BUILD.
|
287
|
+
const MAX_SAFE_BUILD_LENGTH = MAX_LENGTH$1 - 6;
|
288
|
+
|
289
|
+
const RELEASE_TYPES = [
|
290
|
+
'major',
|
291
|
+
'premajor',
|
292
|
+
'minor',
|
293
|
+
'preminor',
|
294
|
+
'patch',
|
295
|
+
'prepatch',
|
296
|
+
'prerelease',
|
297
|
+
];
|
298
|
+
|
285
299
|
var constants = {
|
286
|
-
SEMVER_SPEC_VERSION,
|
287
300
|
MAX_LENGTH: MAX_LENGTH$1,
|
288
|
-
MAX_SAFE_INTEGER: MAX_SAFE_INTEGER$1,
|
289
301
|
MAX_SAFE_COMPONENT_LENGTH,
|
302
|
+
MAX_SAFE_BUILD_LENGTH,
|
303
|
+
MAX_SAFE_INTEGER: MAX_SAFE_INTEGER$1,
|
304
|
+
RELEASE_TYPES,
|
305
|
+
SEMVER_SPEC_VERSION,
|
306
|
+
FLAG_INCLUDE_PRERELEASE: 0b001,
|
307
|
+
FLAG_LOOSE: 0b010,
|
290
308
|
};
|
291
309
|
|
292
310
|
function createCommonjsModule(fn) {
|
@@ -295,22 +313,48 @@ function createCommonjsModule(fn) {
|
|
295
313
|
}
|
296
314
|
|
297
315
|
createCommonjsModule(function (module, exports) {
|
298
|
-
const { MAX_SAFE_COMPONENT_LENGTH } = constants;
|
316
|
+
const { MAX_SAFE_COMPONENT_LENGTH, MAX_SAFE_BUILD_LENGTH } = constants;
|
299
317
|
|
300
318
|
exports = module.exports = {};
|
301
319
|
|
302
320
|
// The actual regexps go on exports.re
|
303
321
|
const re = exports.re = [];
|
322
|
+
const safeRe = exports.safeRe = [];
|
304
323
|
const src = exports.src = [];
|
305
324
|
const t = exports.t = {};
|
306
325
|
let R = 0;
|
307
326
|
|
327
|
+
const LETTERDASHNUMBER = '[a-zA-Z0-9-]';
|
328
|
+
|
329
|
+
// Replace some greedy regex tokens to prevent regex dos issues. These regex are
|
330
|
+
// used internally via the safeRe object since all inputs in this library get
|
331
|
+
// normalized first to trim and collapse all extra whitespace. The original
|
332
|
+
// regexes are exported for userland consumption and lower level usage. A
|
333
|
+
// future breaking change could export the safer regex only with a note that
|
334
|
+
// all input should have extra whitespace removed.
|
335
|
+
const safeRegexReplacements = [
|
336
|
+
['\\s', 1],
|
337
|
+
['\\d', MAX_SAFE_COMPONENT_LENGTH],
|
338
|
+
[LETTERDASHNUMBER, MAX_SAFE_BUILD_LENGTH],
|
339
|
+
];
|
340
|
+
|
341
|
+
const makeSafeRegex = (value) => {
|
342
|
+
for (const [token, max] of safeRegexReplacements) {
|
343
|
+
value = value
|
344
|
+
.split(`${token}*`).join(`${token}{0,${max}}`)
|
345
|
+
.split(`${token}+`).join(`${token}{1,${max}}`);
|
346
|
+
}
|
347
|
+
return value
|
348
|
+
};
|
349
|
+
|
308
350
|
const createToken = (name, value, isGlobal) => {
|
351
|
+
const safe = makeSafeRegex(value);
|
309
352
|
const index = R++;
|
310
353
|
debug_1(name, index, value);
|
311
354
|
t[name] = index;
|
312
355
|
src[index] = value;
|
313
356
|
re[index] = new RegExp(value, isGlobal ? 'g' : undefined);
|
357
|
+
safeRe[index] = new RegExp(safe, isGlobal ? 'g' : undefined);
|
314
358
|
};
|
315
359
|
|
316
360
|
// The following Regular Expressions can be used for tokenizing,
|
@@ -320,13 +364,13 @@ const createToken = (name, value, isGlobal) => {
|
|
320
364
|
// A single `0`, or a non-zero digit followed by zero or more digits.
|
321
365
|
|
322
366
|
createToken('NUMERICIDENTIFIER', '0|[1-9]\\d*');
|
323
|
-
createToken('NUMERICIDENTIFIERLOOSE', '
|
367
|
+
createToken('NUMERICIDENTIFIERLOOSE', '\\d+');
|
324
368
|
|
325
369
|
// ## Non-numeric Identifier
|
326
370
|
// Zero or more digits, followed by a letter or hyphen, and then zero or
|
327
371
|
// more letters, digits, or hyphens.
|
328
372
|
|
329
|
-
createToken('NONNUMERICIDENTIFIER',
|
373
|
+
createToken('NONNUMERICIDENTIFIER', `\\d*[a-zA-Z-]${LETTERDASHNUMBER}*`);
|
330
374
|
|
331
375
|
// ## Main Version
|
332
376
|
// Three dot-separated numeric identifiers.
|
@@ -361,7 +405,7 @@ createToken('PRERELEASELOOSE', `(?:-?(${src[t.PRERELEASEIDENTIFIERLOOSE]
|
|
361
405
|
// ## Build Metadata Identifier
|
362
406
|
// Any combination of digits, letters, or hyphens.
|
363
407
|
|
364
|
-
createToken('BUILDIDENTIFIER',
|
408
|
+
createToken('BUILDIDENTIFIER', `${LETTERDASHNUMBER}+`);
|
365
409
|
|
366
410
|
// ## Build Metadata
|
367
411
|
// Plus sign, followed by one or more period-separated build metadata
|
@@ -261,11 +261,29 @@ const MAX_SAFE_INTEGER$1 = Number.MAX_SAFE_INTEGER ||
|
|
261
261
|
// Max safe segment length for coercion.
|
262
262
|
const MAX_SAFE_COMPONENT_LENGTH = 16;
|
263
263
|
|
264
|
+
// Max safe length for a build identifier. The max length minus 6 characters for
|
265
|
+
// the shortest version with a build 0.0.0+BUILD.
|
266
|
+
const MAX_SAFE_BUILD_LENGTH = MAX_LENGTH$1 - 6;
|
267
|
+
|
268
|
+
const RELEASE_TYPES = [
|
269
|
+
'major',
|
270
|
+
'premajor',
|
271
|
+
'minor',
|
272
|
+
'preminor',
|
273
|
+
'patch',
|
274
|
+
'prepatch',
|
275
|
+
'prerelease',
|
276
|
+
];
|
277
|
+
|
264
278
|
var constants = {
|
265
|
-
SEMVER_SPEC_VERSION,
|
266
279
|
MAX_LENGTH: MAX_LENGTH$1,
|
267
|
-
MAX_SAFE_INTEGER: MAX_SAFE_INTEGER$1,
|
268
280
|
MAX_SAFE_COMPONENT_LENGTH,
|
281
|
+
MAX_SAFE_BUILD_LENGTH,
|
282
|
+
MAX_SAFE_INTEGER: MAX_SAFE_INTEGER$1,
|
283
|
+
RELEASE_TYPES,
|
284
|
+
SEMVER_SPEC_VERSION,
|
285
|
+
FLAG_INCLUDE_PRERELEASE: 0b001,
|
286
|
+
FLAG_LOOSE: 0b010,
|
269
287
|
};
|
270
288
|
|
271
289
|
function createCommonjsModule(fn) {
|
@@ -274,22 +292,48 @@ function createCommonjsModule(fn) {
|
|
274
292
|
}
|
275
293
|
|
276
294
|
createCommonjsModule(function (module, exports) {
|
277
|
-
const { MAX_SAFE_COMPONENT_LENGTH } = constants;
|
295
|
+
const { MAX_SAFE_COMPONENT_LENGTH, MAX_SAFE_BUILD_LENGTH } = constants;
|
278
296
|
|
279
297
|
exports = module.exports = {};
|
280
298
|
|
281
299
|
// The actual regexps go on exports.re
|
282
300
|
const re = exports.re = [];
|
301
|
+
const safeRe = exports.safeRe = [];
|
283
302
|
const src = exports.src = [];
|
284
303
|
const t = exports.t = {};
|
285
304
|
let R = 0;
|
286
305
|
|
306
|
+
const LETTERDASHNUMBER = '[a-zA-Z0-9-]';
|
307
|
+
|
308
|
+
// Replace some greedy regex tokens to prevent regex dos issues. These regex are
|
309
|
+
// used internally via the safeRe object since all inputs in this library get
|
310
|
+
// normalized first to trim and collapse all extra whitespace. The original
|
311
|
+
// regexes are exported for userland consumption and lower level usage. A
|
312
|
+
// future breaking change could export the safer regex only with a note that
|
313
|
+
// all input should have extra whitespace removed.
|
314
|
+
const safeRegexReplacements = [
|
315
|
+
['\\s', 1],
|
316
|
+
['\\d', MAX_SAFE_COMPONENT_LENGTH],
|
317
|
+
[LETTERDASHNUMBER, MAX_SAFE_BUILD_LENGTH],
|
318
|
+
];
|
319
|
+
|
320
|
+
const makeSafeRegex = (value) => {
|
321
|
+
for (const [token, max] of safeRegexReplacements) {
|
322
|
+
value = value
|
323
|
+
.split(`${token}*`).join(`${token}{0,${max}}`)
|
324
|
+
.split(`${token}+`).join(`${token}{1,${max}}`);
|
325
|
+
}
|
326
|
+
return value
|
327
|
+
};
|
328
|
+
|
287
329
|
const createToken = (name, value, isGlobal) => {
|
330
|
+
const safe = makeSafeRegex(value);
|
288
331
|
const index = R++;
|
289
332
|
debug_1(name, index, value);
|
290
333
|
t[name] = index;
|
291
334
|
src[index] = value;
|
292
335
|
re[index] = new RegExp(value, isGlobal ? 'g' : undefined);
|
336
|
+
safeRe[index] = new RegExp(safe, isGlobal ? 'g' : undefined);
|
293
337
|
};
|
294
338
|
|
295
339
|
// The following Regular Expressions can be used for tokenizing,
|
@@ -299,13 +343,13 @@ const createToken = (name, value, isGlobal) => {
|
|
299
343
|
// A single `0`, or a non-zero digit followed by zero or more digits.
|
300
344
|
|
301
345
|
createToken('NUMERICIDENTIFIER', '0|[1-9]\\d*');
|
302
|
-
createToken('NUMERICIDENTIFIERLOOSE', '
|
346
|
+
createToken('NUMERICIDENTIFIERLOOSE', '\\d+');
|
303
347
|
|
304
348
|
// ## Non-numeric Identifier
|
305
349
|
// Zero or more digits, followed by a letter or hyphen, and then zero or
|
306
350
|
// more letters, digits, or hyphens.
|
307
351
|
|
308
|
-
createToken('NONNUMERICIDENTIFIER',
|
352
|
+
createToken('NONNUMERICIDENTIFIER', `\\d*[a-zA-Z-]${LETTERDASHNUMBER}*`);
|
309
353
|
|
310
354
|
// ## Main Version
|
311
355
|
// Three dot-separated numeric identifiers.
|
@@ -340,7 +384,7 @@ createToken('PRERELEASELOOSE', `(?:-?(${src[t.PRERELEASEIDENTIFIERLOOSE]
|
|
340
384
|
// ## Build Metadata Identifier
|
341
385
|
// Any combination of digits, letters, or hyphens.
|
342
386
|
|
343
|
-
createToken('BUILDIDENTIFIER',
|
387
|
+
createToken('BUILDIDENTIFIER', `${LETTERDASHNUMBER}+`);
|
344
388
|
|
345
389
|
// ## Build Metadata
|
346
390
|
// Plus sign, followed by one or more period-separated build metadata
|
@@ -187,8 +187,8 @@ declare namespace CypressCommandLine {
|
|
187
187
|
interface AttemptResult {
|
188
188
|
state: string
|
189
189
|
error: TestError | null
|
190
|
-
|
191
|
-
|
190
|
+
wallClockStartedAt: dateTimeISO
|
191
|
+
wallClockDuration: ms
|
192
192
|
videoTimestamp: ms
|
193
193
|
screenshots: ScreenshotInformation[]
|
194
194
|
}
|
package/types/cypress.d.ts
CHANGED
@@ -6364,7 +6364,18 @@ declare namespace Cypress {
|
|
6364
6364
|
stderr: string
|
6365
6365
|
}
|
6366
6366
|
|
6367
|
-
type
|
6367
|
+
type TypedArray =
|
6368
|
+
| Int8Array
|
6369
|
+
| Uint8Array
|
6370
|
+
| Uint8ClampedArray
|
6371
|
+
| Int16Array
|
6372
|
+
| Uint16Array
|
6373
|
+
| Int32Array
|
6374
|
+
| Uint32Array
|
6375
|
+
| Float32Array
|
6376
|
+
| Float64Array
|
6377
|
+
|
6378
|
+
type FileReference = string | BufferType | FileReferenceObject | TypedArray
|
6368
6379
|
interface FileReferenceObject {
|
6369
6380
|
/*
|
6370
6381
|
* Buffers will be used as-is, while strings will be interpreted as an alias or a file path.
|