@amazon/vinyl-util 3.0.1 → 3.2.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/dist/browserTestUtil/index.js.map +2 -2
- package/dist/browserTestUtil/types/current/mock/dom/lib.dom.d.ts.map +1 -1
- package/dist/browserTestUtil/types/current/tsconfig.tsbuildinfo +1 -1
- package/dist/index.cjs +165 -178
- package/dist/index.cjs.map +4 -4
- package/dist/index.js +165 -178
- package/dist/index.js.map +4 -4
- package/dist/polyfill/index.js +35 -32
- package/dist/polyfill/index.js.map +3 -3
- package/dist/polyfill/tsconfig.tsbuildinfo +1 -1
- package/dist/test/benchmark.js.map +2 -2
- package/dist/testUtil/index.js +0 -36
- package/dist/testUtil/index.js.map +3 -3
- package/dist/testUtil/types/current/index.d.ts +0 -1
- package/dist/testUtil/types/current/index.d.ts.map +1 -1
- package/dist/testUtil/types/current/index.js +0 -1
- package/dist/testUtil/types/current/tsconfig.tsbuildinfo +1 -1
- package/dist/testUtil/types/ts3.7/index.d.ts +0 -1
- package/dist/testUtil/types/ts4.1/index.d.ts +0 -1
- package/dist/testUtil/types/ts4.7/index.d.ts +0 -1
- package/dist/types/current/index.d.ts +1 -1
- package/dist/types/current/index.d.ts.map +1 -1
- package/dist/types/current/index.js +1 -1
- package/dist/types/current/network/responseUtil.d.ts +21 -0
- package/dist/types/current/network/responseUtil.d.ts.map +1 -1
- package/dist/types/current/network/responseUtil.js +30 -0
- package/dist/types/current/tsconfig.tsbuildinfo +1 -1
- package/dist/types/current/util/async/never.d.ts.map +1 -1
- package/dist/types/current/util/type.d.ts.map +1 -1
- package/dist/types/current/util/webm/parseWebm.d.ts +43 -0
- package/dist/types/current/util/webm/parseWebm.d.ts.map +1 -0
- package/dist/types/current/util/webm/parseWebm.js +166 -0
- package/dist/types/ts3.7/index.d.ts +1 -1
- package/dist/types/ts3.7/network/responseUtil.d.ts +21 -0
- package/dist/types/ts3.7/util/webm/parseWebm.d.ts +43 -0
- package/dist/types/ts4.1/index.d.ts +1 -1
- package/dist/types/ts4.1/network/responseUtil.d.ts +21 -0
- package/dist/types/ts4.1/util/webm/parseWebm.d.ts +43 -0
- package/dist/types/ts4.7/index.d.ts +1 -1
- package/dist/types/ts4.7/network/responseUtil.d.ts +21 -0
- package/dist/types/ts4.7/util/webm/parseWebm.d.ts +43 -0
- package/dist/unit/types/current/tsconfig.tsbuildinfo +1 -1
- package/package.json +4 -4
- package/dist/testUtil/types/current/patch/addPatchTests.d.ts +0 -35
- package/dist/testUtil/types/current/patch/addPatchTests.d.ts.map +0 -1
- package/dist/testUtil/types/current/patch/addPatchTests.js +0 -54
- package/dist/testUtil/types/ts3.7/patch/addPatchTests.d.ts +0 -35
- package/dist/testUtil/types/ts4.1/patch/addPatchTests.d.ts +0 -35
- package/dist/testUtil/types/ts4.7/patch/addPatchTests.d.ts +0 -35
- package/dist/types/current/patch/patchTarget.d.ts +0 -114
- package/dist/types/current/patch/patchTarget.d.ts.map +0 -1
- package/dist/types/current/patch/patchTarget.js +0 -219
- package/dist/types/ts3.7/patch/patchTarget.d.ts +0 -114
- package/dist/types/ts4.1/patch/patchTarget.d.ts +0 -114
- package/dist/types/ts4.7/patch/patchTarget.d.ts +0 -114
package/dist/index.js
CHANGED
|
@@ -4417,183 +4417,36 @@ function requestWithRetry(input, init, options) {
|
|
|
4417
4417
|
function isResponseError(error) {
|
|
4418
4418
|
return error instanceof RequestError && error.info.type === "response" /* RESPONSE */;
|
|
4419
4419
|
}
|
|
4420
|
-
|
|
4421
|
-
|
|
4422
|
-
|
|
4423
|
-
|
|
4424
|
-
|
|
4425
|
-
|
|
4426
|
-
|
|
4427
|
-
|
|
4428
|
-
|
|
4429
|
-
|
|
4430
|
-
|
|
4431
|
-
|
|
4432
|
-
|
|
4433
|
-
|
|
4434
|
-
|
|
4435
|
-
}
|
|
4436
|
-
|
|
4437
|
-
|
|
4438
|
-
|
|
4439
|
-
|
|
4440
|
-
|
|
4441
|
-
const eventSquelched = add(new SignalImpl());
|
|
4442
|
-
const patchedChain = [];
|
|
4443
|
-
patchFactories.forEach((factory) => {
|
|
4444
|
-
const next = patchTarget(patched, factory);
|
|
4445
|
-
patched = next.patched;
|
|
4446
|
-
patchedChain.push(next);
|
|
4447
|
-
next.eventFabricated.listen(
|
|
4448
|
-
(event) => eventFabricated.dispatch(event)
|
|
4420
|
+
async function readResponseBody(response, as) {
|
|
4421
|
+
let read;
|
|
4422
|
+
switch (as) {
|
|
4423
|
+
case "arrayBuffer":
|
|
4424
|
+
read = response.arrayBuffer();
|
|
4425
|
+
break;
|
|
4426
|
+
case "text":
|
|
4427
|
+
read = response.text();
|
|
4428
|
+
break;
|
|
4429
|
+
case "json":
|
|
4430
|
+
read = response.json();
|
|
4431
|
+
break;
|
|
4432
|
+
}
|
|
4433
|
+
try {
|
|
4434
|
+
return await read;
|
|
4435
|
+
} catch (error) {
|
|
4436
|
+
if ((error == null ? void 0 : error.name) === "AbortError")
|
|
4437
|
+
throw new ReportableError(
|
|
4438
|
+
"Response body read aborted",
|
|
4439
|
+
ErrorOrigin.INTERNAL,
|
|
4440
|
+
"silent" /* SILENT */
|
|
4449
4441
|
);
|
|
4450
|
-
|
|
4451
|
-
|
|
4452
|
-
|
|
4453
|
-
|
|
4454
|
-
|
|
4455
|
-
|
|
4456
|
-
|
|
4457
|
-
return {
|
|
4458
|
-
patched,
|
|
4459
|
-
eventFabricated,
|
|
4460
|
-
eventSquelched,
|
|
4461
|
-
dispose
|
|
4462
|
-
};
|
|
4463
|
-
}
|
|
4464
|
-
}
|
|
4465
|
-
function _patchTarget(target, patchFactory) {
|
|
4466
|
-
var _a, _b, _c;
|
|
4467
|
-
const { add, dispose } = createDisposer();
|
|
4468
|
-
const eventFabricated = add(new SignalImpl());
|
|
4469
|
-
const eventSquelched = add(new SignalImpl());
|
|
4470
|
-
const patch = add(patchFactory(target));
|
|
4471
|
-
const proxyEventHost = add(new EventHostImpl());
|
|
4472
|
-
(_a = patch.eventFabricated) == null ? void 0 : _a.listen((event) => {
|
|
4473
|
-
eventFabricated.dispatch(event);
|
|
4474
|
-
proxyEventHost.dispatch(event.type, event);
|
|
4475
|
-
});
|
|
4476
|
-
const delegatedEvents = /* @__PURE__ */ new Set();
|
|
4477
|
-
const subs = /* @__PURE__ */ new Map();
|
|
4478
|
-
let addEventListener = void 0;
|
|
4479
|
-
let removeEventListener = void 0;
|
|
4480
|
-
if (isEventTarget(target)) {
|
|
4481
|
-
if (patch.events || patch.eventFabricated) {
|
|
4482
|
-
const eventPatches = (_b = patch.events) != null ? _b : {};
|
|
4483
|
-
const observeTargetEvent = (type) => {
|
|
4484
|
-
if (!delegatedEvents.has(type)) {
|
|
4485
|
-
delegatedEvents.add(type);
|
|
4486
|
-
const targetHandler = (event) => {
|
|
4487
|
-
const patchedEvent = event.type in eventPatches ? eventPatches[event.type](event) : event;
|
|
4488
|
-
if (patchedEvent)
|
|
4489
|
-
proxyEventHost.dispatch(
|
|
4490
|
-
patchedEvent.type,
|
|
4491
|
-
patchedEvent
|
|
4492
|
-
);
|
|
4493
|
-
else eventSquelched.dispatch(event);
|
|
4494
|
-
};
|
|
4495
|
-
target.addEventListener(type, targetHandler);
|
|
4496
|
-
}
|
|
4497
|
-
};
|
|
4498
|
-
addEventListener = (type, callback, options) => {
|
|
4499
|
-
var _a2;
|
|
4500
|
-
if (typeof callback !== "function")
|
|
4501
|
-
throw new IllegalArgumentError(
|
|
4502
|
-
"only function callbacks are supported"
|
|
4503
|
-
);
|
|
4504
|
-
observeTargetEvent(type);
|
|
4505
|
-
subs.set(
|
|
4506
|
-
callback,
|
|
4507
|
-
proxyEventHost.on(type, callback, {
|
|
4508
|
-
once: typeof options === "object" ? (_a2 = options.once) != null ? _a2 : false : false
|
|
4509
|
-
})
|
|
4510
|
-
);
|
|
4511
|
-
};
|
|
4512
|
-
removeEventListener = (_, callback) => {
|
|
4513
|
-
if (typeof callback !== "function")
|
|
4514
|
-
throw new IllegalArgumentError(
|
|
4515
|
-
"only function callbacks are supported"
|
|
4516
|
-
);
|
|
4517
|
-
const sub = subs.get(callback);
|
|
4518
|
-
if (sub) {
|
|
4519
|
-
subs.delete(callback);
|
|
4520
|
-
sub();
|
|
4521
|
-
}
|
|
4522
|
-
};
|
|
4523
|
-
for (const eventPatchesKey in eventPatches) {
|
|
4524
|
-
observeTargetEvent(eventPatchesKey);
|
|
4525
|
-
}
|
|
4526
|
-
} else {
|
|
4527
|
-
addEventListener = target.addEventListener.bind(target);
|
|
4528
|
-
removeEventListener = target.removeEventListener.bind(target);
|
|
4529
|
-
}
|
|
4442
|
+
const status = response.status;
|
|
4443
|
+
const origin = status >= 500 && status < 600 ? ErrorOrigin.SERVICE_EXTERNAL : ErrorOrigin.SERVICE_INTERNAL;
|
|
4444
|
+
throw new ReportableError(
|
|
4445
|
+
`Failed to read response body: ${String(error)}`,
|
|
4446
|
+
origin,
|
|
4447
|
+
"fatal" /* FATAL */
|
|
4448
|
+
);
|
|
4530
4449
|
}
|
|
4531
|
-
const propertyPatches = (_c = patch.properties) != null ? _c : {};
|
|
4532
|
-
const patched = new Proxy(target, {
|
|
4533
|
-
get(target2, p, receiver) {
|
|
4534
|
-
const key = p;
|
|
4535
|
-
if (key === "addEventListener") {
|
|
4536
|
-
return addEventListener;
|
|
4537
|
-
} else if (key === "removeEventListener") {
|
|
4538
|
-
return removeEventListener;
|
|
4539
|
-
}
|
|
4540
|
-
const patch2 = propertyPatches[key];
|
|
4541
|
-
const value = patch2 && patch2.get ? patch2.get() : target2[key];
|
|
4542
|
-
if (typeof value === "function") {
|
|
4543
|
-
return function(...args) {
|
|
4544
|
-
return value.apply(this === receiver ? target2 : this, args);
|
|
4545
|
-
};
|
|
4546
|
-
}
|
|
4547
|
-
return value;
|
|
4548
|
-
},
|
|
4549
|
-
set(target2, p, newValue) {
|
|
4550
|
-
const key = p;
|
|
4551
|
-
const patch2 = propertyPatches[key];
|
|
4552
|
-
if (patch2 && patch2.set) patch2.set(newValue);
|
|
4553
|
-
else target2[key] = newValue;
|
|
4554
|
-
return true;
|
|
4555
|
-
}
|
|
4556
|
-
});
|
|
4557
|
-
return {
|
|
4558
|
-
patched,
|
|
4559
|
-
eventFabricated,
|
|
4560
|
-
eventSquelched,
|
|
4561
|
-
// Certain supported platforms do not support Proxy.revocable, but this is not a
|
|
4562
|
-
// requirement; we do not need to provide a Proxy to a consumer that needs its
|
|
4563
|
-
// lifespan controlled.
|
|
4564
|
-
dispose
|
|
4565
|
-
};
|
|
4566
|
-
}
|
|
4567
|
-
function logPatchedEvents(pathTarget, patched) {
|
|
4568
|
-
const eventSquelchedSub = patched.eventSquelched.listen(
|
|
4569
|
-
(event) => logDebug(pathTarget, `'${event.type}' event squelched`)
|
|
4570
|
-
);
|
|
4571
|
-
const eventFabricatedSub = patched.eventFabricated.listen(
|
|
4572
|
-
(event) => logDebug(pathTarget, `'${event.type}' event fabricated`)
|
|
4573
|
-
);
|
|
4574
|
-
return () => {
|
|
4575
|
-
eventSquelchedSub();
|
|
4576
|
-
eventFabricatedSub();
|
|
4577
|
-
};
|
|
4578
|
-
}
|
|
4579
|
-
function isEventTarget(target) {
|
|
4580
|
-
return "addEventListener" in target;
|
|
4581
|
-
}
|
|
4582
|
-
function patchTargetFromFlags(target, flags, ...patchEntries) {
|
|
4583
|
-
const pathTarget = {
|
|
4584
|
-
logPrefix: createLogPrefix("Patch")
|
|
4585
|
-
};
|
|
4586
|
-
const filtered = patchEntries.filter(([key]) => {
|
|
4587
|
-
const enabled = flags[key] === true;
|
|
4588
|
-
if (enabled) logDebug(pathTarget, `Applying '${String(key)}' patch`);
|
|
4589
|
-
return enabled;
|
|
4590
|
-
});
|
|
4591
|
-
const patchedRef = patchTarget(
|
|
4592
|
-
target,
|
|
4593
|
-
...filtered.map(([_, factory]) => factory)
|
|
4594
|
-
);
|
|
4595
|
-
logPatchedEvents(pathTarget, patchedRef);
|
|
4596
|
-
return patchedRef;
|
|
4597
4450
|
}
|
|
4598
4451
|
|
|
4599
4452
|
// src/persistence/StoragePersistence.ts
|
|
@@ -5800,6 +5653,139 @@ function resolveDots(path) {
|
|
|
5800
5653
|
}
|
|
5801
5654
|
return out.join("/");
|
|
5802
5655
|
}
|
|
5656
|
+
|
|
5657
|
+
// src/util/webm/parseWebm.ts
|
|
5658
|
+
var EBML_ID = {
|
|
5659
|
+
Segment: 408125543,
|
|
5660
|
+
Info: 357149030,
|
|
5661
|
+
TimecodeScale: 2807729,
|
|
5662
|
+
Cues: 475249515,
|
|
5663
|
+
CuePoint: 187,
|
|
5664
|
+
CueTime: 179,
|
|
5665
|
+
CueTrackPositions: 183,
|
|
5666
|
+
CueClusterPosition: 241
|
|
5667
|
+
};
|
|
5668
|
+
var DEFAULT_WEBM_TIMECODE_SCALE = 1e6;
|
|
5669
|
+
function readVint(view, pos, keepMarker) {
|
|
5670
|
+
const first2 = view.getUint8(pos);
|
|
5671
|
+
let mask = 128;
|
|
5672
|
+
let length = 1;
|
|
5673
|
+
while (length <= 8 && (first2 & mask) === 0) {
|
|
5674
|
+
mask >>= 1;
|
|
5675
|
+
length++;
|
|
5676
|
+
}
|
|
5677
|
+
if (length > 8)
|
|
5678
|
+
throw new ValidationError(
|
|
5679
|
+
"invalid EBML variable-length integer",
|
|
5680
|
+
ErrorOrigin.MEDIA
|
|
5681
|
+
);
|
|
5682
|
+
let value = keepMarker ? first2 : first2 & mask - 1;
|
|
5683
|
+
let allOnes = (first2 & mask - 1) === mask - 1;
|
|
5684
|
+
for (let i = 1; i < length; i++) {
|
|
5685
|
+
const byte = view.getUint8(pos + i);
|
|
5686
|
+
allOnes = allOnes && byte === 255;
|
|
5687
|
+
value = value * 256 + byte;
|
|
5688
|
+
}
|
|
5689
|
+
return { value: !keepMarker && allOnes ? null : value, length };
|
|
5690
|
+
}
|
|
5691
|
+
function readElementHeader(view, pos) {
|
|
5692
|
+
const { value: id, length: idLength } = readVint(view, pos, true);
|
|
5693
|
+
const { value: size, length: sizeLength } = readVint(
|
|
5694
|
+
view,
|
|
5695
|
+
pos + idLength,
|
|
5696
|
+
false
|
|
5697
|
+
);
|
|
5698
|
+
const contentStart = pos + idLength + sizeLength;
|
|
5699
|
+
return {
|
|
5700
|
+
id,
|
|
5701
|
+
contentStart,
|
|
5702
|
+
size,
|
|
5703
|
+
end: size == null ? null : contentStart + size
|
|
5704
|
+
};
|
|
5705
|
+
}
|
|
5706
|
+
function childHeaders(view, start, end) {
|
|
5707
|
+
const out = [];
|
|
5708
|
+
let pos = start;
|
|
5709
|
+
while (pos < end) {
|
|
5710
|
+
const el = readElementHeader(view, pos);
|
|
5711
|
+
out.push(el);
|
|
5712
|
+
if (el.end == null) break;
|
|
5713
|
+
pos = el.end;
|
|
5714
|
+
}
|
|
5715
|
+
return out;
|
|
5716
|
+
}
|
|
5717
|
+
function readUint(view, pos, length) {
|
|
5718
|
+
let value = 0;
|
|
5719
|
+
for (let i = 0; i < length; i++)
|
|
5720
|
+
value = value * 256 + view.getUint8(pos + i);
|
|
5721
|
+
return value;
|
|
5722
|
+
}
|
|
5723
|
+
function parseWebmInit(buffer) {
|
|
5724
|
+
var _a;
|
|
5725
|
+
const view = new DataView(buffer);
|
|
5726
|
+
const segment = childHeaders(view, 0, view.byteLength).find(
|
|
5727
|
+
(el) => el.id === EBML_ID.Segment
|
|
5728
|
+
);
|
|
5729
|
+
if (!segment)
|
|
5730
|
+
throw new ValidationError(
|
|
5731
|
+
"WebM init segment missing Segment element",
|
|
5732
|
+
ErrorOrigin.MEDIA
|
|
5733
|
+
);
|
|
5734
|
+
const segmentEnd = Math.min((_a = segment.end) != null ? _a : view.byteLength, view.byteLength);
|
|
5735
|
+
const info = childHeaders(view, segment.contentStart, segmentEnd).find(
|
|
5736
|
+
(el) => el.id === EBML_ID.Info && el.size != null
|
|
5737
|
+
);
|
|
5738
|
+
return {
|
|
5739
|
+
segmentDataStart: segment.contentStart,
|
|
5740
|
+
segmentSize: segment.size,
|
|
5741
|
+
timecodeScale: info ? readTimecodeScale(view, info.contentStart, info.end) : DEFAULT_WEBM_TIMECODE_SCALE
|
|
5742
|
+
};
|
|
5743
|
+
}
|
|
5744
|
+
function readTimecodeScale(view, start, end) {
|
|
5745
|
+
const el = childHeaders(view, start, end).find(
|
|
5746
|
+
(child) => child.id === EBML_ID.TimecodeScale && child.size
|
|
5747
|
+
);
|
|
5748
|
+
return el ? readUint(view, el.contentStart, el.size) : DEFAULT_WEBM_TIMECODE_SCALE;
|
|
5749
|
+
}
|
|
5750
|
+
function parseWebmCues(buffer) {
|
|
5751
|
+
var _a;
|
|
5752
|
+
const view = new DataView(buffer);
|
|
5753
|
+
const cues = readElementHeader(view, 0);
|
|
5754
|
+
if (cues.id !== EBML_ID.Cues)
|
|
5755
|
+
throw new ValidationError(
|
|
5756
|
+
`expected WebM 'Cues' element but had id: 0x${cues.id.toString(16)}`,
|
|
5757
|
+
ErrorOrigin.MEDIA
|
|
5758
|
+
);
|
|
5759
|
+
const cuesEnd = Math.min((_a = cues.end) != null ? _a : view.byteLength, view.byteLength);
|
|
5760
|
+
const cuePoints = [];
|
|
5761
|
+
for (const el of childHeaders(view, cues.contentStart, cuesEnd)) {
|
|
5762
|
+
if (el.id !== EBML_ID.CuePoint || el.size == null) continue;
|
|
5763
|
+
const cuePoint = parseCuePoint(view, el.contentStart, el.end);
|
|
5764
|
+
if (cuePoint) cuePoints.push(cuePoint);
|
|
5765
|
+
}
|
|
5766
|
+
return cuePoints;
|
|
5767
|
+
}
|
|
5768
|
+
function parseCuePoint(view, start, end) {
|
|
5769
|
+
let time = null;
|
|
5770
|
+
let clusterPosition = null;
|
|
5771
|
+
for (const el of childHeaders(view, start, end)) {
|
|
5772
|
+
if (el.id === EBML_ID.CueTime && el.size)
|
|
5773
|
+
time = readUint(view, el.contentStart, el.size);
|
|
5774
|
+
else if (el.id === EBML_ID.CueTrackPositions && el.size != null)
|
|
5775
|
+
clusterPosition = readCueClusterPosition(
|
|
5776
|
+
view,
|
|
5777
|
+
el.contentStart,
|
|
5778
|
+
el.end
|
|
5779
|
+
);
|
|
5780
|
+
}
|
|
5781
|
+
return time != null && clusterPosition != null ? { time, clusterPosition } : null;
|
|
5782
|
+
}
|
|
5783
|
+
function readCueClusterPosition(view, start, end) {
|
|
5784
|
+
const el = childHeaders(view, start, end).find(
|
|
5785
|
+
(child) => child.id === EBML_ID.CueClusterPosition && child.size
|
|
5786
|
+
);
|
|
5787
|
+
return el ? readUint(view, el.contentStart, el.size) : null;
|
|
5788
|
+
}
|
|
5803
5789
|
export {
|
|
5804
5790
|
Abort,
|
|
5805
5791
|
AbortError,
|
|
@@ -5810,6 +5796,7 @@ export {
|
|
|
5810
5796
|
ConsoleLogHandlerImpl,
|
|
5811
5797
|
DEFAULT_MAX_HISTORY,
|
|
5812
5798
|
DEFAULT_TIMEOUT_MESSAGE,
|
|
5799
|
+
DEFAULT_WEBM_TIMECODE_SCALE,
|
|
5813
5800
|
Deferred,
|
|
5814
5801
|
DeviceType,
|
|
5815
5802
|
DeviceVendor,
|
|
@@ -5990,7 +5977,6 @@ export {
|
|
|
5990
5977
|
logDebug,
|
|
5991
5978
|
logError,
|
|
5992
5979
|
logInfo,
|
|
5993
|
-
logPatchedEvents,
|
|
5994
5980
|
logTimer,
|
|
5995
5981
|
logVerbose,
|
|
5996
5982
|
logWarn,
|
|
@@ -6028,9 +6014,9 @@ export {
|
|
|
6028
6014
|
parseTimestamp,
|
|
6029
6015
|
parseUserAgent,
|
|
6030
6016
|
parseVersion,
|
|
6017
|
+
parseWebmCues,
|
|
6018
|
+
parseWebmInit,
|
|
6031
6019
|
patchFetch,
|
|
6032
|
-
patchTarget,
|
|
6033
|
-
patchTargetFromFlags,
|
|
6034
6020
|
persistenceRef,
|
|
6035
6021
|
plainObjectEqualRule,
|
|
6036
6022
|
plainObjectMergeRule,
|
|
@@ -6041,6 +6027,7 @@ export {
|
|
|
6041
6027
|
promise,
|
|
6042
6028
|
rangeIntersects,
|
|
6043
6029
|
rangesOf,
|
|
6030
|
+
readResponseBody,
|
|
6044
6031
|
redispatchEvents,
|
|
6045
6032
|
regexRule,
|
|
6046
6033
|
regexpEqualRule,
|