@amazon/vinyl-util 3.0.1 → 3.1.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.
Files changed (55) hide show
  1. package/dist/browserTestUtil/index.js.map +2 -2
  2. package/dist/browserTestUtil/types/current/mock/dom/lib.dom.d.ts.map +1 -1
  3. package/dist/browserTestUtil/types/current/tsconfig.tsbuildinfo +1 -1
  4. package/dist/index.cjs +165 -178
  5. package/dist/index.cjs.map +4 -4
  6. package/dist/index.js +165 -178
  7. package/dist/index.js.map +4 -4
  8. package/dist/polyfill/index.js +35 -32
  9. package/dist/polyfill/index.js.map +3 -3
  10. package/dist/polyfill/tsconfig.tsbuildinfo +1 -1
  11. package/dist/test/benchmark.js.map +2 -2
  12. package/dist/testUtil/index.js +0 -36
  13. package/dist/testUtil/index.js.map +3 -3
  14. package/dist/testUtil/types/current/index.d.ts +0 -1
  15. package/dist/testUtil/types/current/index.d.ts.map +1 -1
  16. package/dist/testUtil/types/current/index.js +0 -1
  17. package/dist/testUtil/types/current/tsconfig.tsbuildinfo +1 -1
  18. package/dist/testUtil/types/ts3.7/index.d.ts +0 -1
  19. package/dist/testUtil/types/ts4.1/index.d.ts +0 -1
  20. package/dist/testUtil/types/ts4.7/index.d.ts +0 -1
  21. package/dist/types/current/index.d.ts +1 -1
  22. package/dist/types/current/index.d.ts.map +1 -1
  23. package/dist/types/current/index.js +1 -1
  24. package/dist/types/current/network/responseUtil.d.ts +21 -0
  25. package/dist/types/current/network/responseUtil.d.ts.map +1 -1
  26. package/dist/types/current/network/responseUtil.js +30 -0
  27. package/dist/types/current/tsconfig.tsbuildinfo +1 -1
  28. package/dist/types/current/util/async/never.d.ts.map +1 -1
  29. package/dist/types/current/util/type.d.ts.map +1 -1
  30. package/dist/types/current/util/webm/parseWebm.d.ts +43 -0
  31. package/dist/types/current/util/webm/parseWebm.d.ts.map +1 -0
  32. package/dist/types/current/util/webm/parseWebm.js +166 -0
  33. package/dist/types/ts3.7/index.d.ts +1 -1
  34. package/dist/types/ts3.7/network/responseUtil.d.ts +21 -0
  35. package/dist/types/ts3.7/util/webm/parseWebm.d.ts +43 -0
  36. package/dist/types/ts4.1/index.d.ts +1 -1
  37. package/dist/types/ts4.1/network/responseUtil.d.ts +21 -0
  38. package/dist/types/ts4.1/util/webm/parseWebm.d.ts +43 -0
  39. package/dist/types/ts4.7/index.d.ts +1 -1
  40. package/dist/types/ts4.7/network/responseUtil.d.ts +21 -0
  41. package/dist/types/ts4.7/util/webm/parseWebm.d.ts +43 -0
  42. package/dist/unit/types/current/tsconfig.tsbuildinfo +1 -1
  43. package/package.json +4 -4
  44. package/dist/testUtil/types/current/patch/addPatchTests.d.ts +0 -35
  45. package/dist/testUtil/types/current/patch/addPatchTests.d.ts.map +0 -1
  46. package/dist/testUtil/types/current/patch/addPatchTests.js +0 -54
  47. package/dist/testUtil/types/ts3.7/patch/addPatchTests.d.ts +0 -35
  48. package/dist/testUtil/types/ts4.1/patch/addPatchTests.d.ts +0 -35
  49. package/dist/testUtil/types/ts4.7/patch/addPatchTests.d.ts +0 -35
  50. package/dist/types/current/patch/patchTarget.d.ts +0 -114
  51. package/dist/types/current/patch/patchTarget.d.ts.map +0 -1
  52. package/dist/types/current/patch/patchTarget.js +0 -219
  53. package/dist/types/ts3.7/patch/patchTarget.d.ts +0 -114
  54. package/dist/types/ts4.1/patch/patchTarget.d.ts +0 -114
  55. 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
- // src/patch/patchTarget.ts
4422
- function patchTarget(target, ...patchFactories) {
4423
- const n = patchFactories.length;
4424
- if (n === 0) {
4425
- let disposed = false;
4426
- return {
4427
- patched: target,
4428
- eventFabricated: emptySignal,
4429
- eventSquelched: emptySignal,
4430
- dispose: () => {
4431
- if (disposed) throw new DisposedError();
4432
- disposed = true;
4433
- }
4434
- };
4435
- } else if (n === 1) {
4436
- return _patchTarget(target, patchFactories[0]);
4437
- } else {
4438
- const { add, dispose } = createDisposer();
4439
- let patched = target;
4440
- const eventFabricated = add(new SignalImpl());
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
- next.eventSquelched.listen(
4451
- (event) => eventSquelched.dispatch(event)
4452
- );
4453
- });
4454
- for (let i = patchedChain.length - 1; i >= 0; i--) {
4455
- add(patchedChain[i]);
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,