basesource.js 681 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. /**
  2. * @typedef Slice
  3. * @property {number} offset
  4. * @property {number} length
  5. */
  6. export class BaseSource {
  7. /**
  8. *
  9. * @param {Slice[]} slices
  10. * @returns {ArrayBuffer[]}
  11. */
  12. async fetch(slices, signal = undefined) {
  13. return Promise.all(
  14. slices.map((slice) => this.fetchSlice(slice, signal)),
  15. );
  16. }
  17. /**
  18. *
  19. * @param {Slice} slice
  20. * @returns {ArrayBuffer}
  21. */
  22. async fetchSlice(slice) {
  23. throw new Error(`fetching of slice ${slice} not possible, not implemented`);
  24. }
  25. /**
  26. * Returns the filesize if already determined and null otherwise
  27. */
  28. get fileSize() {
  29. return null;
  30. }
  31. async close() {
  32. // no-op by default
  33. }
  34. }