cypress 12.16.0 → 12.17.0
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/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.
|