cursedbelt 4.1.1 → 4.3.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 (81) hide show
  1. package/dist/react/media/CanvasVideoPlayer.d.ts +3 -2
  2. package/dist/react/media/CanvasVideoPlayer.d.ts.map +1 -1
  3. package/dist/react/media/CanvasVideoPlayer.js +4 -3
  4. package/dist/react/media/CanvasVideoPlayer.js.map +1 -1
  5. package/dist/react/media/FrameGrabber.d.ts +16 -2
  6. package/dist/react/media/FrameGrabber.d.ts.map +1 -1
  7. package/dist/react/media/FrameGrabber.js +68 -43
  8. package/dist/react/media/FrameGrabber.js.map +1 -1
  9. package/dist/react/media/PictureEditor.d.ts +17 -2
  10. package/dist/react/media/PictureEditor.d.ts.map +1 -1
  11. package/dist/react/media/PictureEditor.js +33 -7
  12. package/dist/react/media/PictureEditor.js.map +1 -1
  13. package/dist/react/media/VideoChapterEditor.d.ts +17 -2
  14. package/dist/react/media/VideoChapterEditor.d.ts.map +1 -1
  15. package/dist/react/media/VideoChapterEditor.js +21 -3
  16. package/dist/react/media/VideoChapterEditor.js.map +1 -1
  17. package/dist/react/media/VideoCutEditor.d.ts +16 -2
  18. package/dist/react/media/VideoCutEditor.d.ts.map +1 -1
  19. package/dist/react/media/VideoCutEditor.js +21 -3
  20. package/dist/react/media/VideoCutEditor.js.map +1 -1
  21. package/dist/react/media/VideoPlayer.d.ts +37 -9
  22. package/dist/react/media/VideoPlayer.d.ts.map +1 -1
  23. package/dist/react/media/VideoPlayer.js +130 -39
  24. package/dist/react/media/VideoPlayer.js.map +1 -1
  25. package/dist/react/media/hlsSource.d.ts +24 -3
  26. package/dist/react/media/hlsSource.d.ts.map +1 -1
  27. package/dist/react/media/hlsSource.js +109 -8
  28. package/dist/react/media/hlsSource.js.map +1 -1
  29. package/dist/react/media/pictureEditor.css +2 -0
  30. package/dist/react/media/sourceFault.d.ts +146 -0
  31. package/dist/react/media/sourceFault.d.ts.map +1 -0
  32. package/dist/react/media/sourceFault.js +139 -0
  33. package/dist/react/media/sourceFault.js.map +1 -0
  34. package/dist/react/media/videoChapterEditor.css +19 -0
  35. package/dist/react/media/videoCutEditor.css +22 -0
  36. package/dist/react/media-gallery/MediaGallery.d.ts +12 -1
  37. package/dist/react/media-gallery/MediaGallery.d.ts.map +1 -1
  38. package/dist/react/media-gallery/MediaGallery.js +166 -13
  39. package/dist/react/media-gallery/MediaGallery.js.map +1 -1
  40. package/dist/react/media-gallery/galleryItemMedia.d.ts +4 -0
  41. package/dist/react/media-gallery/galleryItemMedia.d.ts.map +1 -1
  42. package/dist/react/media-gallery/galleryItemMedia.js +27 -3
  43. package/dist/react/media-gallery/galleryItemMedia.js.map +1 -1
  44. package/dist/react/media-gallery/mediaGalleryModel.d.ts.map +1 -1
  45. package/dist/react/media-gallery/mediaGalleryModel.js +5 -0
  46. package/dist/react/media-gallery/mediaGalleryModel.js.map +1 -1
  47. package/dist/react/media-gallery/types.d.ts +23 -0
  48. package/dist/react/media-gallery/types.d.ts.map +1 -1
  49. package/dist/scripts/guardrailsEnforce.d.ts +1 -0
  50. package/dist/scripts/guardrailsEnforce.d.ts.map +1 -1
  51. package/dist/styles-areas/media-gallery.css +1 -1
  52. package/dist/styles-areas/media.css +1 -1
  53. package/package.json +3 -2
  54. package/scripts/guardrailsEnforce.spec.ts +244 -1
  55. package/scripts/guardrailsEnforce.ts +224 -7
  56. package/src/react/media/CanvasVideoPlayer.tsx +11 -6
  57. package/src/react/media/FrameGrabber.spec.tsx +57 -1
  58. package/src/react/media/FrameGrabber.tsx +138 -84
  59. package/src/react/media/PictureEditor.spec.tsx +90 -0
  60. package/src/react/media/PictureEditor.tsx +78 -23
  61. package/src/react/media/VideoChapterEditor.spec.tsx +86 -0
  62. package/src/react/media/VideoChapterEditor.tsx +64 -18
  63. package/src/react/media/VideoCutEditor.spec.tsx +44 -0
  64. package/src/react/media/VideoCutEditor.tsx +63 -18
  65. package/src/react/media/VideoPlayer.spec.tsx +101 -0
  66. package/src/react/media/VideoPlayer.tsx +221 -73
  67. package/src/react/media/hlsSource.answer.spec.ts +255 -0
  68. package/src/react/media/hlsSource.ts +136 -8
  69. package/src/react/media/pictureEditor.css +2 -0
  70. package/src/react/media/sourceFault.spec.tsx +224 -0
  71. package/src/react/media/sourceFault.tsx +220 -0
  72. package/src/react/media/videoChapterEditor.css +19 -0
  73. package/src/react/media/videoCutEditor.css +22 -0
  74. package/src/react/media-gallery/MediaGallery.spec.tsx +288 -0
  75. package/src/react/media-gallery/MediaGallery.tsx +356 -45
  76. package/src/react/media-gallery/galleryItemMedia.tsx +27 -4
  77. package/src/react/media-gallery/mediaGalleryModel.spec.ts +36 -0
  78. package/src/react/media-gallery/mediaGalleryModel.ts +4 -0
  79. package/src/react/media-gallery/types.ts +23 -0
  80. package/src/styles-areas/media-gallery.css +1 -1
  81. package/src/styles-areas/media.css +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"VideoPlayer.js","sourceRoot":"","sources":["../../../src/react/media/VideoPlayer.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"VideoPlayer.js","sourceRoot":"","sources":["../../../src/react/media/VideoPlayer.tsx"],"names":[],"mappings":"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"}
@@ -1,3 +1,17 @@
1
+ import { type SourceFault } from './sourceFault';
2
+ /** Which of a surface's two URLs the fault is about. */
3
+ export type HlsSourceKind = 'ladder' | 'stream';
4
+ export interface HlsSourceHooks {
5
+ /**
6
+ * Called when a source ANSWERED with something other than the bytes and there is nothing
7
+ * left to fall back to — i.e. the progressive copy, which is the one that always exists.
8
+ *
9
+ * 🔴 A fault on the LADDER alone never reaches here, and must not: a missing ladder is the
10
+ * ordinary state of most of a library, the remux plays, and a viewer told "gone" about a
11
+ * film that is about to start watching is worse off than one told nothing.
12
+ */
13
+ onFault?: (fault: SourceFault, source: HlsSourceKind) => void;
14
+ }
1
15
  /** Which URLs a surface has for one video. `streamUrl` is the one that always exists. */
2
16
  export interface HlsSourceUrls {
3
17
  /** The adaptive ladder's MASTER playlist, when one has been built. */
@@ -76,9 +90,16 @@ export declare const HLS_CONFIG: {
76
90
  readonly manifestLoadingTimeOut: 30000;
77
91
  readonly levelLoadingTimeOut: 30000;
78
92
  };
79
- export declare function attachHlsSource(el: HTMLVideoElement, urls: HlsSourceUrls): () => void;
80
- /** {@link attachHlsSource} as an effect, re-attaching whenever either URL changes. */
93
+ export declare function attachHlsSource(el: HTMLVideoElement, urls: HlsSourceUrls, hooks?: HlsSourceHooks): () => void;
94
+ /**
95
+ * {@link attachHlsSource} as an effect, re-attaching whenever either URL changes.
96
+ *
97
+ * 🔴 `onFault` is held in a REF, not listed as a dependency. A consumer passing the inline
98
+ * arrow this hook invites would otherwise tear the engine down and re-attach it on every
99
+ * render — which on a playing video is a re-buffer caused by something happening elsewhere on
100
+ * the page, and it is the same shape of bug the `slots` memo in `VideoPlayer` exists for.
101
+ */
81
102
  export declare function useHlsSource(ref: {
82
103
  current: HTMLVideoElement | null;
83
- }, urls: HlsSourceUrls): void;
104
+ }, urls: HlsSourceUrls, hooks?: HlsSourceHooks): void;
84
105
  //# sourceMappingURL=hlsSource.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"hlsSource.d.ts","sourceRoot":"","sources":["../../../src/react/media/hlsSource.ts"],"names":[],"mappings":"AAgFA,yFAAyF;AACzF,MAAM,WAAW,aAAa;IAC5B,sEAAsE;IACtE,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,wFAAwF;IACxF,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,gBAAgB,GAAG,OAAO,CAEhE;AAED;;;;;GAKG;AACH;;;;;;;;GAQG;AACH,eAAO,MAAM,eAAe,IAAI,CAAC;AAKjC;;;;;GAKG;AACH,eAAO,MAAM,UAAU;;IAErB;;;;;;;;;OASG;;IAEH,2EAA2E;;IAE3E,uFAAuF;;IAEvF;;;;;;;OAOG;;IAEH;;;;;;;OAOG;;IAEH;oFACgF;;;;CAIxE,CAAC;AAEX,wBAAgB,eAAe,CAAC,EAAE,EAAE,gBAAgB,EAAE,IAAI,EAAE,aAAa,GAAG,MAAM,IAAI,CAmHrF;AAED,sFAAsF;AACtF,wBAAgB,YAAY,CAC1B,GAAG,EAAE;IAAE,OAAO,EAAE,gBAAgB,GAAG,IAAI,CAAA;CAAE,EACzC,IAAI,EAAE,aAAa,GAClB,IAAI,CAQN"}
1
+ {"version":3,"file":"hlsSource.d.ts","sourceRoot":"","sources":["../../../src/react/media/hlsSource.ts"],"names":[],"mappings":"AAsFA,OAAO,EAAoB,KAAK,WAAW,EAAyB,MAAM,eAAe,CAAC;AAqB1F,wDAAwD;AACxD,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAEhD,MAAM,WAAW,cAAc;IAC7B;;;;;;;OAOG;IACH,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,aAAa,KAAK,IAAI,CAAC;CAC/D;AAED,yFAAyF;AACzF,MAAM,WAAW,aAAa;IAC5B,sEAAsE;IACtE,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,wFAAwF;IACxF,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,gBAAgB,GAAG,OAAO,CAEhE;AAED;;;;;GAKG;AACH;;;;;;;;GAQG;AACH,eAAO,MAAM,eAAe,IAAI,CAAC;AAKjC;;;;;GAKG;AACH,eAAO,MAAM,UAAU;;IAErB;;;;;;;;;OASG;;IAEH,2EAA2E;;IAE3E,uFAAuF;;IAEvF;;;;;;;OAOG;;IAEH;;;;;;;OAOG;;IAEH;oFACgF;;;;CAIxE,CAAC;AAEX,wBAAgB,eAAe,CAC7B,EAAE,EAAE,gBAAgB,EACpB,IAAI,EAAE,aAAa,EACnB,KAAK,GAAE,cAAmB,GACzB,MAAM,IAAI,CAiLZ;AAED;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAC1B,GAAG,EAAE;IAAE,OAAO,EAAE,gBAAgB,GAAG,IAAI,CAAA;CAAE,EACzC,IAAI,EAAE,aAAa,EACnB,KAAK,GAAE,cAAmB,GACzB,IAAI,CAoBN"}
@@ -54,6 +54,27 @@
54
54
  * not have had. That is the property `RECOVERY_BUDGET` bounds; without a budget a genuinely
55
55
  * dead ladder becomes an infinite reload loop, which is the same spinner with more requests.
56
56
  *
57
+ * ── 🔴 An ANSWER is not a hang, and a 404 was being waited out ──────────────────────────
58
+ * Owner, 2026-09-17: *"make a 404 stop the media player spinner so I don't think it's going
59
+ * to eventually load."* The recovery machinery above is right for a blip and exactly wrong
60
+ * for an answer: a ladder whose master replies `404` in 0.2 s went through four `startLoad()`
61
+ * calls and twelve seconds of backoff before the fallback it could have taken immediately,
62
+ * and a progressive copy that replies `404` produced a bare `error` event with no status on
63
+ * it, which every surface drew as "still loading" for ever.
64
+ *
65
+ * So two things happen here that did not before, and neither weakens the recoveries above:
66
+ *
67
+ * · a fatal hls.js error that carries an HTTP status (`data.response.code`) skips the
68
+ * budget entirely — `404`/`410` is final and `403` is a stale token, and asking either
69
+ * again cannot change the reply. Errors with NO status are the timeouts and stalls the
70
+ * budget was always for, and they still spend it.
71
+ * · the element's own `error` event is listened to. On the LADDER it means this browser's
72
+ * native HLS could not have it, so the progressive copy gets its turn — before this, a
73
+ * 404 ladder on an iPhone was simply a dead player, because that branch had no fallback
74
+ * at all. On the PROGRESSIVE copy there is nothing left to fall back to, so the URL is
75
+ * probed for its status and `onFault` says what it was; `sourceFault.ts` explains why a
76
+ * probe is the only way to read a status off a `<video>`.
77
+ *
57
78
  * ── 🔴 The config is tuned for a HIGH-LATENCY origin, which is what this fleet has ───────
58
79
  * hls.js's defaults assume a CDN. These segments come off a home Mac through a tunnel when
59
80
  * the edge does not hold them: measured 2026-09-17, a cold segment is 1,215–2,613 ms against
@@ -62,7 +83,8 @@
62
83
  * starting bandwidth estimate makes it open on the bottom rung and climb. Both are widened
63
84
  * below, each with its number's reason on the line.
64
85
  */
65
- import { useEffect } from 'react';
86
+ import { useEffect, useRef } from 'react';
87
+ import { probeSourceFault, sourceFaultFromStatus } from './sourceFault';
66
88
  /**
67
89
  * Does this element's browser play HLS by itself? Safari, iOS and iPadOS do; Chrome and
68
90
  * Firefox do not.
@@ -138,10 +160,18 @@ export const HLS_CONFIG = {
138
160
  manifestLoadingTimeOut: 30_000,
139
161
  levelLoadingTimeOut: 30_000,
140
162
  };
141
- export function attachHlsSource(el, urls) {
163
+ export function attachHlsSource(el, urls, hooks = {}) {
142
164
  let destroyed = false;
143
165
  let engine = null;
144
166
  let pendingRetry = null;
167
+ /**
168
+ * Which URL the element is pointed at right now, because the `error` event does not say and
169
+ * the two mean opposite things: on the ladder it means "try the copy that always exists",
170
+ * on the stream it means "there is nothing else, say so".
171
+ */
172
+ let attached = 'stream';
173
+ /** The fallback is a one-way door — a second one would re-point a source already playing. */
174
+ let fellBack = false;
145
175
  /**
146
176
  * Abandon the ladder for the progressive copy, AT THE POSITION PLAYBACK HAD REACHED.
147
177
  *
@@ -151,8 +181,10 @@ export function attachHlsSource(el, urls) {
151
181
  * the engine is destroyed, because destroying it detaches the MediaSource and resets it.
152
182
  */
153
183
  const fallBackToProgressive = () => {
154
- if (destroyed)
184
+ if (destroyed || fellBack)
155
185
  return;
186
+ fellBack = true;
187
+ attached = 'stream';
156
188
  const at = Number.isFinite(el.currentTime) ? el.currentTime : 0;
157
189
  const wasPlaying = !el.paused;
158
190
  engine?.destroy();
@@ -173,7 +205,45 @@ export function attachHlsSource(el, urls) {
173
205
  }, { once: true });
174
206
  }
175
207
  };
208
+ /**
209
+ * The element gave up. 🔴 That is an EVENT, so by definition it is not a hang — whatever
210
+ * happens next, the spinner has to stop being the answer.
211
+ */
212
+ const onElementError = () => {
213
+ if (destroyed)
214
+ return;
215
+ /*
216
+ * 🔴 While an hls.js engine is attached, the element's errors are ITS errors. The library
217
+ * listens to this same event, turns it into a fatal `MEDIA_ERROR` and expects the
218
+ * application to answer with `recoverMediaError()` — which the ERROR handler below does.
219
+ * Acting here as well would abandon the ladder for the progressive copy on the first
220
+ * buffer stall, undoing `100206d` and putting a 467 MB uncacheable stream in front of a
221
+ * recovery that costs nothing. After a fallback the engine is gone and this is live again.
222
+ */
223
+ if (engine)
224
+ return;
225
+ if (attached === 'ladder') {
226
+ // A ladder this browser's native HLS could not load — a 404 master, a half-written
227
+ // tree, a rung that is not there. The remux is the copy that always exists.
228
+ fallBackToProgressive();
229
+ return;
230
+ }
231
+ // Nothing left to try, so the only useful act is to name the reason. `currentSrc` is what
232
+ // the element actually resolved, which is the URL that failed even after a fallback.
233
+ //
234
+ // 🔴 Only when somebody is listening. A surface with no `onFault` has nowhere to put the
235
+ // answer, and a probe nobody reads is a request bought for nothing — `CanvasVideoPlayer`
236
+ // and any other caller that takes the default would otherwise pay it on every failure.
237
+ if (!hooks.onFault)
238
+ return;
239
+ void probeSourceFault(el.currentSrc || urls.streamUrl).then((fault) => {
240
+ if (!destroyed)
241
+ hooks.onFault?.(fault, 'stream');
242
+ });
243
+ };
244
+ el.addEventListener('error', onElementError);
176
245
  if (urls.hlsUrl && canPlayHlsNatively(el)) {
246
+ attached = 'ladder';
177
247
  el.src = urls.hlsUrl;
178
248
  }
179
249
  else if (urls.hlsUrl) {
@@ -195,6 +265,21 @@ export function attachHlsSource(el, urls) {
195
265
  // restart a load that is already in progress.
196
266
  if (destroyed || !data?.fatal)
197
267
  return;
268
+ /*
269
+ * 🔴 An ANSWER short-circuits the whole budget, and this branch is the owner's
270
+ * report: the master answered `404` in 0.2 s, and retrying an answer four times
271
+ * with a widening backoff is twelve seconds of spinner in front of a fallback that
272
+ * was available immediately. `response.code` is present only when the ladder
273
+ * REPLIED — a timeout or an abort carries none, so a genuinely slow origin still
274
+ * gets every recovery it had.
275
+ */
276
+ const answered = typeof data.response?.code === 'number'
277
+ ? sourceFaultFromStatus(data.response.code)
278
+ : null;
279
+ if (answered) {
280
+ fallBackToProgressive();
281
+ return;
282
+ }
198
283
  if (spent >= RECOVERY_BUDGET) {
199
284
  fallBackToProgressive();
200
285
  return;
@@ -254,6 +339,7 @@ export function attachHlsSource(el, urls) {
254
339
  }
255
340
  return () => {
256
341
  destroyed = true;
342
+ el.removeEventListener('error', onElementError);
257
343
  if (pendingRetry)
258
344
  clearTimeout(pendingRetry);
259
345
  pendingRetry = null;
@@ -261,15 +347,30 @@ export function attachHlsSource(el, urls) {
261
347
  engine = null;
262
348
  };
263
349
  }
264
- /** {@link attachHlsSource} as an effect, re-attaching whenever either URL changes. */
265
- export function useHlsSource(ref, urls) {
350
+ /**
351
+ * {@link attachHlsSource} as an effect, re-attaching whenever either URL changes.
352
+ *
353
+ * 🔴 `onFault` is held in a REF, not listed as a dependency. A consumer passing the inline
354
+ * arrow this hook invites would otherwise tear the engine down and re-attach it on every
355
+ * render — which on a playing video is a re-buffer caused by something happening elsewhere on
356
+ * the page, and it is the same shape of bug the `slots` memo in `VideoPlayer` exists for.
357
+ */
358
+ export function useHlsSource(ref, urls, hooks = {}) {
266
359
  const { hlsUrl, streamUrl } = urls;
360
+ const { onFault } = hooks;
361
+ const faultRef = useRef(onFault);
362
+ useEffect(() => {
363
+ faultRef.current = onFault;
364
+ }, [onFault]);
365
+ // Whether there is a listener at all, which IS a re-attach: `attachHlsSource` buys the
366
+ // status probe only for a surface that can use the answer.
367
+ const listening = Boolean(onFault);
267
368
  useEffect(() => {
268
369
  const el = ref.current;
269
370
  if (!el)
270
371
  return;
271
- return attachHlsSource(el, { hlsUrl, streamUrl });
272
- // `ref` is a stable object; the URLs are what a re-attach depends on.
273
- }, [ref, hlsUrl, streamUrl]);
372
+ return attachHlsSource(el, { hlsUrl, streamUrl }, listening ? { onFault: (fault, source) => faultRef.current?.(fault, source) } : {});
373
+ // `ref` and `faultRef` are stable objects; the URLs are what a re-attach depends on.
374
+ }, [ref, hlsUrl, streamUrl, listening]);
274
375
  }
275
376
  //# sourceMappingURL=hlsSource.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"hlsSource.js","sourceRoot":"","sources":["../../../src/react/media/hlsSource.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"hlsSource.js","sourceRoot":"","sources":["../../../src/react/media/hlsSource.ts"],"names":[],"mappings":"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"}
@@ -315,6 +315,8 @@
315
315
  /* guardrails-ignore no-hardcoded-colors: sits ON the picture ground, which is true black in
316
316
  both themes — the same argument as `.cbpe-hint` above. */
317
317
  color: rgb(255 255 255 / 0.82);
318
+ /* guardrails-ignore no-hardcoded-colors: the shadow that keeps this sentence readable over a
319
+ PALE frame of film — same argument as the colour it sits on, two lines up. */
318
320
  text-shadow: 0 1px 2px rgb(0 0 0 / 0.6);
319
321
  pointer-events: none;
320
322
  }
@@ -0,0 +1,146 @@
1
+ /**
2
+ * What a media URL ANSWERED, when what it answered was not the bytes.
3
+ *
4
+ * ── 🔴 The report this exists for ───────────────────────────────────────────────────────
5
+ * Owner, 2026-09-17: *"make a 404 stop the media player spinner so I don't think it's going
6
+ * to eventually load."* One item in his catalogue has no ladder, so the very first request a
7
+ * player makes is answered honestly and immediately:
8
+ *
9
+ * GET …/u_fd668e6a….hls/master.m3u8 → 404 {"error":"not_found"} in 0.2 s
10
+ *
11
+ * and the spinner then ran until he gave up. **A 404 is a COMPLETE ANSWER** — there is
12
+ * nothing still in flight, nothing to wait for, and no amount of waiting changes it — and it
13
+ * was the one status every surface here treated as "still loading".
14
+ *
15
+ * ── 🔴 The distinction this module is entirely about ────────────────────────────────────
16
+ * A hang and an answer must not look the same to somebody watching a spinner:
17
+ *
18
+ * | what happened | is it an answer? | what the viewer should see |
19
+ * |---|---|---|
20
+ * | slow segment, tunnel blinked, origin waking | no — still in flight | keep spinning |
21
+ * | `404` / `410` | yes, and it is final | the reason, now |
22
+ * | `401` / `403` | yes, and it is RECOVERABLE | re-ask the app, then the reason |
23
+ * | any other `4xx`/`5xx` | yes, and we cannot name it | the reason, now |
24
+ *
25
+ * `403` is split out because it is the one that comes back on its own: every signed URL in
26
+ * this fleet carries `exp = iat + 2 × window`, so a page left open across a window boundary
27
+ * meets a stale token legitimately and the fix is to ASK THE APP AGAIN, not to tell the
28
+ * viewer his film is gone. Collapsing it into "gone" would put a false and permanent-sounding
29
+ * sentence on screen for the one fault that clears itself.
30
+ *
31
+ * ── 🔴 Why a probe, and why only on the failure path ────────────────────────────────────
32
+ * `hls.js` hands us the status directly (`ErrorData.response.code`), so the ladder and its
33
+ * rungs cost nothing. An `<img>` and a `<video>` do NOT: both fire a bare `error` event that
34
+ * carries no status at all, so "the file is gone" and "the token went stale" and "the codec
35
+ * is unplayable" arrive as the same undifferentiated failure. {@link probeSourceFault} is the
36
+ * one way to tell them apart, and it runs ONLY after the element has already given up — so a
37
+ * gallery that is working costs exactly nothing, and a one-byte `Range` request is the whole
38
+ * price of a sentence that is true.
39
+ *
40
+ * (`bytes=0-0` is a CORS-safelisted range, so the probe is a simple request and never costs a
41
+ * preflight; the 404 in the report above answers `access-control-allow-origin: *`, which is
42
+ * what makes the status readable cross-origin at all. When it is not readable the fetch
43
+ * throws, and that is `unknown` — honest, still not a spinner.)
44
+ *
45
+ * ── 🔴 Why one module holds the reading, the wording AND the overlay ────────────────────
46
+ * Three surfaces have to agree about the same fault — the gallery's picture stage, its native
47
+ * video stage and the shared player — and the thing they must agree on is not the mechanism,
48
+ * it is the SENTENCE. Split across three files this becomes three wordings, and the owner
49
+ * meets whichever one his file happens to be behind.
50
+ *
51
+ * It is deliberately NOT a published subpath and nothing here is re-exported from
52
+ * `react/media/index.ts`. `publicSurface.baseline` charges for a permanent promise, and none
53
+ * of this is one: the wording is copy, the overlay is chrome, and a consumer that wanted to
54
+ * draw its own would be re-implementing the corner rather than importing it. (Same call the
55
+ * badge stack in `VideoPlayer.tsx` made — see that baseline entry's "what did NOT go on the
56
+ * surface".) A `.tsx` holding a component beside its helpers is `galleryItemMedia.tsx`'s
57
+ * shape, for the same reason.
58
+ */
59
+ /** Which of the three answers came back. `expired` is the only one worth re-asking. */
60
+ export type SourceFaultKind =
61
+ /** The source said there is nothing here — `404`/`410`. Final. */
62
+ 'gone'
63
+ /** The token went stale — `401`/`403`. A fresh URL from the app fixes it. */
64
+ | 'expired'
65
+ /** It answered something else, or did not answer readably. Not a hang either way. */
66
+ | 'unknown';
67
+ export interface SourceFault {
68
+ kind: SourceFaultKind;
69
+ /** The HTTP status that said so, when one was readable. Absent for an unreadable failure. */
70
+ status?: number;
71
+ }
72
+ /**
73
+ * Classify one HTTP status. `null` for anything below 400 — a source that answered `200` and
74
+ * still would not play is not a fault of the URL, and saying otherwise would blame the store
75
+ * for an unplayable codec.
76
+ */
77
+ export declare function sourceFaultFromStatus(status: number): SourceFault | null;
78
+ /**
79
+ * Is this worth asking the app for a fresh URL? Exactly one kind is.
80
+ *
81
+ * 🔴 A caller that re-asks must BOUND it — see `useItemMedia`'s one-re-ask-per-item rule. An
82
+ * unbounded retry against a URL that is never going to be fresh is the same spinner with more
83
+ * requests in it, which is the thing this whole module exists to stop.
84
+ */
85
+ export declare function isRecoverableFault(fault: SourceFault): boolean;
86
+ /**
87
+ * Ask the URL what it is, once, with a one-byte range.
88
+ *
89
+ * Only ever called after an element has already failed, so this is never on the happy path.
90
+ * Never throws: an unreadable failure (offline, CORS, DNS) resolves `unknown` rather than
91
+ * rejecting, because the caller's job at that point is to say SOMETHING instead of spinning.
92
+ *
93
+ * Reads `globalThis.fetch` at call time rather than closing over it, so a spec can install its
94
+ * own and the unit suite never puts a request on a real socket
95
+ * (`src/iframesMakeNoRealRequest.spec.ts` is the standing rule).
96
+ */
97
+ export declare function probeSourceFault(url: string | undefined): Promise<SourceFault>;
98
+ /**
99
+ * The sentence a viewer reads.
100
+ *
101
+ * 🔴 One place, because the gallery's picture stage, its native video stage and the shared
102
+ * player all have to say the SAME thing about the same fault — three copies of this is three
103
+ * wordings, and the owner would meet whichever one his file happened to be behind. The specs
104
+ * spell the sentences out as literals rather than importing them, for the reason the badge
105
+ * copy in `VideoPlayer.tsx` gives: which words are on the picture IS the deliverable, so an
106
+ * assertion that reads the function asserts nothing.
107
+ *
108
+ * `subject` is the noun for the thing that failed — "This video", "This picture", the file's
109
+ * own name. It leads the sentence, so it is capitalised by the caller.
110
+ */
111
+ export declare function sourceFaultMessage(fault: SourceFault, subject: string): string;
112
+ /**
113
+ * Did an `hls.js` error carry an ANSWER, or is the ladder still coming?
114
+ *
115
+ * 🔴 The whole of the owner's report is in this predicate. hls.js sets `response.code` only
116
+ * when the server actually replied — a timeout, an abort and a stalled fetch carry none — so a
117
+ * status here means the ladder is not on its way and never was, and the copy that always
118
+ * exists should take over NOW rather than after four retries and twelve seconds of backoff. A
119
+ * fatal error with no status is the case those retries exist for and must keep them.
120
+ *
121
+ * `unknown` rather than hls.js's `ErrorData`: the library is an OPTIONAL peer and a ~525 KB
122
+ * dynamic import in exactly one branch, so its types must not become a static dependency of
123
+ * every file that reads one of its payloads.
124
+ */
125
+ export declare function hlsErrorIsAnswer(detail: unknown): boolean;
126
+ /**
127
+ * What a video surface says once every source has ANSWERED.
128
+ *
129
+ * ── 🔴 Why it covers the picture instead of sitting beside it ───────────────────────────
130
+ * The thing being replaced is a buffering spinner drawn by Vidstack's own layout, which
131
+ * cannot be turned off from outside it — so a sentence in the corner would be a sentence NEXT
132
+ * TO a spinner, which is the owner's report ("I don't think it's going to eventually load")
133
+ * with extra words rather than without it. Opaque, `inset: 0`, over the whole surface: the
134
+ * spinner is gone because it is not visible, and that is the only lever there is.
135
+ *
136
+ * 🔴 The player is NOT unmounted by it. A `403` is recoverable and the app's fix is a fresh
137
+ * URL, which arrives as new props on the same mount; tearing the player down would throw away
138
+ * the position, the volume and the decoder to say one sentence that may be obsolete a second
139
+ * later. The gallery's stages do the opposite and REPLACE their element — there the `<video>`
140
+ * is the spinner, so nothing short of removing it would do.
141
+ */
142
+ export declare function SourceFaultOverlay({ fault, name }: {
143
+ fault: SourceFault;
144
+ name: string;
145
+ }): import("react").JSX.Element;
146
+ //# sourceMappingURL=sourceFault.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sourceFault.d.ts","sourceRoot":"","sources":["../../../src/react/media/sourceFault.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyDG;AAEH,uFAAuF;AACvF,MAAM,MAAM,eAAe;AACzB,kEAAkE;AAChE,MAAM;AACR,6EAA6E;GAC3E,SAAS;AACX,qFAAqF;GACnF,SAAS,CAAC;AAEd,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,eAAe,CAAC;IACtB,6FAA6F;IAC7F,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI,CAKxE;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAE9D;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC,WAAW,CAAC,CAqBpF;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAS9E;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAKzD;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,kBAAkB,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;IAAE,KAAK,EAAE,WAAW,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,+BA4BvF"}
@@ -0,0 +1,139 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ /**
3
+ * Classify one HTTP status. `null` for anything below 400 — a source that answered `200` and
4
+ * still would not play is not a fault of the URL, and saying otherwise would blame the store
5
+ * for an unplayable codec.
6
+ */
7
+ export function sourceFaultFromStatus(status) {
8
+ if (status === 404 || status === 410)
9
+ return { kind: 'gone', status };
10
+ if (status === 401 || status === 403)
11
+ return { kind: 'expired', status };
12
+ if (status >= 400)
13
+ return { kind: 'unknown', status };
14
+ return null;
15
+ }
16
+ /**
17
+ * Is this worth asking the app for a fresh URL? Exactly one kind is.
18
+ *
19
+ * 🔴 A caller that re-asks must BOUND it — see `useItemMedia`'s one-re-ask-per-item rule. An
20
+ * unbounded retry against a URL that is never going to be fresh is the same spinner with more
21
+ * requests in it, which is the thing this whole module exists to stop.
22
+ */
23
+ export function isRecoverableFault(fault) {
24
+ return fault.kind === 'expired';
25
+ }
26
+ /**
27
+ * Ask the URL what it is, once, with a one-byte range.
28
+ *
29
+ * Only ever called after an element has already failed, so this is never on the happy path.
30
+ * Never throws: an unreadable failure (offline, CORS, DNS) resolves `unknown` rather than
31
+ * rejecting, because the caller's job at that point is to say SOMETHING instead of spinning.
32
+ *
33
+ * Reads `globalThis.fetch` at call time rather than closing over it, so a spec can install its
34
+ * own and the unit suite never puts a request on a real socket
35
+ * (`src/iframesMakeNoRealRequest.spec.ts` is the standing rule).
36
+ */
37
+ export async function probeSourceFault(url) {
38
+ const fetchImpl = globalThis.fetch;
39
+ if (!url || typeof fetchImpl !== 'function')
40
+ return { kind: 'unknown' };
41
+ try {
42
+ const res = await fetchImpl(url, {
43
+ method: 'GET',
44
+ // One byte. The status is the whole point; the body is not wanted and a media file is
45
+ // the last thing to download twice.
46
+ headers: { Range: 'bytes=0-0' },
47
+ cache: 'no-store',
48
+ });
49
+ // 🔴 A status BELOW 400 is deliberately dropped rather than reported: the URL is fine and
50
+ // the bytes are there, so the element failed for a reason that is not the store's — an
51
+ // unplayable codec, a decode stall. Printing "could not be loaded (HTTP 200)" would blame
52
+ // the wrong thing in the one case where the file is not actually missing.
53
+ return sourceFaultFromStatus(res.status) ?? { kind: 'unknown' };
54
+ }
55
+ catch {
56
+ // No readable answer at all. Still not a hang — the element already stopped — so the
57
+ // caller states what it can rather than leaving the spinner up.
58
+ return { kind: 'unknown' };
59
+ }
60
+ }
61
+ /**
62
+ * The sentence a viewer reads.
63
+ *
64
+ * 🔴 One place, because the gallery's picture stage, its native video stage and the shared
65
+ * player all have to say the SAME thing about the same fault — three copies of this is three
66
+ * wordings, and the owner would meet whichever one his file happened to be behind. The specs
67
+ * spell the sentences out as literals rather than importing them, for the reason the badge
68
+ * copy in `VideoPlayer.tsx` gives: which words are on the picture IS the deliverable, so an
69
+ * assertion that reads the function asserts nothing.
70
+ *
71
+ * `subject` is the noun for the thing that failed — "This video", "This picture", the file's
72
+ * own name. It leads the sentence, so it is capitalised by the caller.
73
+ */
74
+ export function sourceFaultMessage(fault, subject) {
75
+ const status = fault.status != null ? ` (HTTP ${fault.status})` : '';
76
+ if (fault.kind === 'gone') {
77
+ return `${subject} is no longer on the media store${status} — nothing is still loading.`;
78
+ }
79
+ if (fault.kind === 'expired') {
80
+ return `${subject}'s link has expired${status} — reopen it for a fresh one.`;
81
+ }
82
+ return `${subject} could not be loaded${status} — nothing is still loading.`;
83
+ }
84
+ /**
85
+ * Did an `hls.js` error carry an ANSWER, or is the ladder still coming?
86
+ *
87
+ * 🔴 The whole of the owner's report is in this predicate. hls.js sets `response.code` only
88
+ * when the server actually replied — a timeout, an abort and a stalled fetch carry none — so a
89
+ * status here means the ladder is not on its way and never was, and the copy that always
90
+ * exists should take over NOW rather than after four retries and twelve seconds of backoff. A
91
+ * fatal error with no status is the case those retries exist for and must keep them.
92
+ *
93
+ * `unknown` rather than hls.js's `ErrorData`: the library is an OPTIONAL peer and a ~525 KB
94
+ * dynamic import in exactly one branch, so its types must not become a static dependency of
95
+ * every file that reads one of its payloads.
96
+ */
97
+ export function hlsErrorIsAnswer(detail) {
98
+ const data = detail;
99
+ const code = data?.response?.code;
100
+ if (!data?.fatal || typeof code !== 'number')
101
+ return false;
102
+ return sourceFaultFromStatus(code) !== null;
103
+ }
104
+ /**
105
+ * What a video surface says once every source has ANSWERED.
106
+ *
107
+ * ── 🔴 Why it covers the picture instead of sitting beside it ───────────────────────────
108
+ * The thing being replaced is a buffering spinner drawn by Vidstack's own layout, which
109
+ * cannot be turned off from outside it — so a sentence in the corner would be a sentence NEXT
110
+ * TO a spinner, which is the owner's report ("I don't think it's going to eventually load")
111
+ * with extra words rather than without it. Opaque, `inset: 0`, over the whole surface: the
112
+ * spinner is gone because it is not visible, and that is the only lever there is.
113
+ *
114
+ * 🔴 The player is NOT unmounted by it. A `403` is recoverable and the app's fix is a fresh
115
+ * URL, which arrives as new props on the same mount; tearing the player down would throw away
116
+ * the position, the volume and the decoder to say one sentence that may be obsolete a second
117
+ * later. The gallery's stages do the opposite and REPLACE their element — there the `<video>`
118
+ * is the spinner, so nothing short of removing it would do.
119
+ */
120
+ export function SourceFaultOverlay({ fault, name }) {
121
+ return (_jsxs("div", { role: 'status', style: {
122
+ position: 'absolute',
123
+ inset: 0,
124
+ display: 'flex',
125
+ flexDirection: 'column',
126
+ alignItems: 'center',
127
+ justifyContent: 'center',
128
+ gap: 6,
129
+ padding: 16,
130
+ textAlign: 'center',
131
+ // Over VIDEO content, not app chrome — dark-on-video regardless of app theme, the same
132
+ // convention the player's corner badges use and for the same reason.
133
+ // guardrails-ignore no-hardcoded-colors: see comment above.
134
+ background: 'rgba(0, 0, 0, 0.82)',
135
+ // guardrails-ignore no-hardcoded-colors: see comment above.
136
+ color: 'rgba(255, 255, 255, 0.92)',
137
+ }, children: [_jsx("span", { style: { fontSize: 13, fontWeight: 600 }, children: name }), _jsx("span", { style: { fontSize: 13, lineHeight: 1.5, maxWidth: '42ch' }, children: sourceFaultMessage(fault, 'This video') })] }));
138
+ }
139
+ //# sourceMappingURL=sourceFault.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sourceFault.js","sourceRoot":"","sources":["../../../src/react/media/sourceFault.tsx"],"names":[],"mappings":"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"}
@@ -17,6 +17,25 @@
17
17
  border-radius: var(--radius-md, 8px);
18
18
  }
19
19
 
20
+ /* Why there is no film, said IN the player's own place — the sibling of `.cbvc-nofilm` in
21
+ `videoCutEditor.css`, which documents both halves of the reasoning (why the panel wears the
22
+ video's own class, and why the turner's white-on-black note cannot be reused on a theme
23
+ surface). Restated here for the same reason every `.cbch-*` rule is a sibling of a `.cbvc-*`
24
+ one: these two sheets ride their own lazily-imported chunks and share nothing. */
25
+ .cbch-nofilm {
26
+ display: flex;
27
+ align-items: center;
28
+ justify-content: center;
29
+ min-block-size: 8rem;
30
+ margin: 0;
31
+ padding: 1.5rem;
32
+ text-align: center;
33
+ text-wrap: balance;
34
+ font-size: 13px;
35
+ line-height: 1.5;
36
+ color: var(--muted-foreground, var(--foreground));
37
+ }
38
+
20
39
  /* The one authoring row: name the section, then mark it. In that order, because the button
21
40
  is disabled until there is a name — see the component. */
22
41
  .cbch-add {