recordable 0.2.0 → 0.4.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 (88) hide show
  1. package/README.md +49 -18
  2. package/dist/actions.d.ts +4 -0
  3. package/dist/actions.d.ts.map +1 -1
  4. package/dist/actions.js +7 -5
  5. package/dist/actions.js.map +1 -1
  6. package/dist/audio/track.d.ts.map +1 -1
  7. package/dist/audio/track.js.map +1 -1
  8. package/dist/browser/cursor.d.ts +6 -0
  9. package/dist/browser/cursor.d.ts.map +1 -1
  10. package/dist/browser/cursor.js +24 -6
  11. package/dist/browser/cursor.js.map +1 -1
  12. package/dist/browser/dom.d.ts +33 -13
  13. package/dist/browser/dom.d.ts.map +1 -1
  14. package/dist/browser/dom.js +158 -56
  15. package/dist/browser/dom.js.map +1 -1
  16. package/dist/browser/page-zoom.d.ts +11 -0
  17. package/dist/browser/page-zoom.d.ts.map +1 -0
  18. package/dist/browser/page-zoom.js +37 -0
  19. package/dist/browser/page-zoom.js.map +1 -0
  20. package/dist/browser/play-button.d.ts.map +1 -1
  21. package/dist/browser/play-button.js.map +1 -1
  22. package/dist/browser/runtime.d.ts +21 -1
  23. package/dist/browser/runtime.d.ts.map +1 -1
  24. package/dist/browser/runtime.js +91 -4
  25. package/dist/browser/runtime.js.map +1 -1
  26. package/dist/browser/targets.d.ts +17 -0
  27. package/dist/browser/targets.d.ts.map +1 -0
  28. package/dist/browser/targets.js +42 -0
  29. package/dist/browser/targets.js.map +1 -0
  30. package/dist/compose/mix.d.ts.map +1 -1
  31. package/dist/compose/mix.js +1 -1
  32. package/dist/compose/mix.js.map +1 -1
  33. package/dist/compose/recordable.d.ts +13 -7
  34. package/dist/compose/recordable.d.ts.map +1 -1
  35. package/dist/compose/recordable.js +28 -13
  36. package/dist/compose/recordable.js.map +1 -1
  37. package/dist/compose/session.d.ts +16 -1
  38. package/dist/compose/session.d.ts.map +1 -1
  39. package/dist/compose/session.js +76 -18
  40. package/dist/compose/session.js.map +1 -1
  41. package/dist/config.d.ts +9 -0
  42. package/dist/config.d.ts.map +1 -1
  43. package/dist/config.js +10 -0
  44. package/dist/config.js.map +1 -1
  45. package/dist/errors.d.ts +1 -1
  46. package/dist/errors.d.ts.map +1 -1
  47. package/dist/errors.js.map +1 -1
  48. package/dist/ffmpeg.d.ts +3 -0
  49. package/dist/ffmpeg.d.ts.map +1 -1
  50. package/dist/ffmpeg.js +14 -1
  51. package/dist/ffmpeg.js.map +1 -1
  52. package/dist/formats/markdown/method.d.ts.map +1 -1
  53. package/dist/formats/markdown/method.js +4 -3
  54. package/dist/formats/markdown/method.js.map +1 -1
  55. package/dist/formats/markdown/parse.d.ts.map +1 -1
  56. package/dist/formats/markdown/parse.js +11 -1
  57. package/dist/formats/markdown/parse.js.map +1 -1
  58. package/dist/logger.d.ts.map +1 -1
  59. package/dist/logger.js +3 -1
  60. package/dist/logger.js.map +1 -1
  61. package/dist/timing.d.ts +2 -0
  62. package/dist/timing.d.ts.map +1 -1
  63. package/dist/timing.js +10 -4
  64. package/dist/timing.js.map +1 -1
  65. package/dist/validate.d.ts.map +1 -1
  66. package/dist/validate.js +11 -10
  67. package/dist/validate.js.map +1 -1
  68. package/dist/video/recorder.d.ts +4 -1
  69. package/dist/video/recorder.d.ts.map +1 -1
  70. package/dist/video/recorder.js +20 -16
  71. package/dist/video/recorder.js.map +1 -1
  72. package/dist/video/stitch.js +3 -17
  73. package/dist/video/stitch.js.map +1 -1
  74. package/dist/voiceover/compile.d.ts.map +1 -1
  75. package/dist/voiceover/compile.js +42 -24
  76. package/dist/voiceover/compile.js.map +1 -1
  77. package/dist/voiceover/elevenlabs.d.ts.map +1 -1
  78. package/dist/voiceover/elevenlabs.js +41 -11
  79. package/dist/voiceover/elevenlabs.js.map +1 -1
  80. package/dist/voiceover/mock.d.ts.map +1 -1
  81. package/dist/voiceover/mock.js +38 -15
  82. package/dist/voiceover/mock.js.map +1 -1
  83. package/package.json +3 -1
  84. package/recordable.schema.json +12 -0
  85. package/dist/targets.d.ts +0 -6
  86. package/dist/targets.d.ts.map +0 -1
  87. package/dist/targets.js +0 -13
  88. package/dist/targets.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"stitch.js","sourceRoot":"","sources":["../../src/video/stitch.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"stitch.js","sourceRoot":"","sources":["../../src/video/stitch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACxC,OAAO,EAAE,IAAI,IAAI,QAAQ,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACvE,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAsBpC,iFAAiF;AACjF,MAAM,CAAC,KAAK,UAAU,MAAM,CAC1B,IAAe,EACf,GAAmB,EACnB,GAAW,EACX,GAAW,EACX,MAAc;IAEd,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC;IACjE,IAAI,QAAQ,EAAE,CAAC;QACb,MAAM,eAAe,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IAC7C,CAAC;SAAM,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC7B,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAC9B,CAAC;SAAM,CAAC;QACN,MAAM,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;IAC1C,CAAC;AACH,CAAC;AAED;yEACyE;AACzE,KAAK,UAAU,IAAI,CACjB,QAAmB,EACnB,GAAmB,EACnB,GAAW,EACX,GAAW,EACX,MAAc;IAEd,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IAChD,MAAM,IAAI,GAAG,QAAQ;SAClB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC;SACrD,IAAI,CAAC,IAAI,CAAC,CAAC;IACd,aAAa,CAAC,QAAQ,EAAE,IAAI,GAAG,IAAI,CAAC,CAAC;IACrC,MAAM,IAAI,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;IAClE,IAAI,CAAC;QACH,MAAM,SAAS,CAAC,CAAC,GAAG,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC;QAC9C,GAAG,CAAC,QAAQ,EAAE,UAAU,QAAQ,CAAC,MAAM,WAAW,CAAC,CAAC;IACtD,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,SAAS,CAAC,CAAC,GAAG,IAAI,EAAE,GAAG,eAAe,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;QACzD,GAAG,CAAC,QAAQ,EAAE,UAAU,QAAQ,CAAC,MAAM,wBAAwB,CAAC,CAAC;IACnE,CAAC;AACH,CAAC;AAED;;;;;;;;;;GAUG;AACH,KAAK,UAAU,eAAe,CAC5B,IAAe,EACf,GAAmB,EACnB,GAAW,EACX,GAAW;IAEX,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;IACtB,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAEpE,4EAA4E;IAC5E,4EAA4E;IAC5E,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACpD,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAC3D,MAAM,QAAQ,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC;IAE3E,8EAA8E;IAC9E,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3B,MAAM,CAAC,GAAa,EAAE,CAAC;QACvB,IAAI,CAAC,KAAK,CAAC,IAAI,UAAU,GAAG,CAAC;YAC3B,CAAC,CAAC,IAAI,CAAC,oBAAoB,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACtD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,QAAQ,GAAG,CAAC;YAC7B,CAAC,CAAC,IAAI,CACJ,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAC3E,CAAC;QACJ,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;IAClE,CAAC;IAED,2EAA2E;IAC3E,IAAI,GAAG,GAAG,IAAI,CAAC;IACf,IAAI,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;IACpB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3B,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC;QACpB,MAAM,CAAC,GAAG,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAC1B,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YACV,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YACvC,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,GAAG,EAAE,CAAC,CAAC;YACxC,KAAK,CAAC,IAAI,CACR,IAAI,GAAG,MAAM,CAAC,mCAAmC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,GAAG,GAAG,CACrG,CAAC;YACF,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;QACxB,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,uBAAuB,GAAG,GAAG,CAAC,CAAC;YACxD,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC;QACnB,CAAC;QACD,GAAG,GAAG,GAAG,CAAC;IACZ,CAAC;IAED,MAAM,SAAS,CAAC;QACd,IAAI;QACJ,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;QACtC,iBAAiB;QACjB,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC;QACf,MAAM;QACN,IAAI,GAAG,GAAG;QACV,GAAG,eAAe,CAAC,GAAG,CAAC;QACvB,UAAU;QACV,SAAS;QACT,GAAG;KACJ,CAAC,CAAC;IACH,GAAG,CAAC,QAAQ,EAAE,UAAU,CAAC,yBAAyB,CAAC,CAAC;AACtD,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"compile.d.ts","sourceRoot":"","sources":["../../src/voiceover/compile.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAEtE,OAAO,EAAgB,KAAK,MAAM,EAAE,MAAM,cAAc,CAAC;AASzD,OAAO,EAA0B,KAAK,WAAW,EAAE,MAAM,YAAY,CAAC;AAStE,uEAAuE;AACvE,MAAM,WAAW,cAAc;IAC7B;2EACuE;IACvE,QAAQ,CAAC,EAAE,WAAW,CAAC;IACvB,yEAAyE;IACzE,SAAS,EAAE,MAAM,CAAC;IAClB,qFAAqF;IACrF,SAAS,CAAC,EAAE,eAAe,CAAC;IAC5B,4FAA4F;IAC5F,cAAc,CAAC,EAAE,gBAAgB,CAAC;IAClC,8DAA8D;IAC9D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,4FAA4F;IAC5F,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC;sEACkE;IAClE,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,mFAAmF;AACnF,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,gBAAgB,CAAC;IACzB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,kFAAkF;IAClF,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAwLD;;0FAE0F;AAC1F,wBAAsB,eAAe,CACnC,EAAE,EAAE,MAAM,EACV,OAAO,EAAE,cAAc,GACtB,OAAO,CAAC,cAAc,CAAC,CAgDzB"}
1
+ {"version":3,"file":"compile.d.ts","sourceRoot":"","sources":["../../src/voiceover/compile.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAGtE,OAAO,EAAgB,KAAK,MAAM,EAAE,MAAM,cAAc,CAAC;AASzD,OAAO,EAGL,KAAK,WAAW,EAEjB,MAAM,YAAY,CAAC;AASpB,uEAAuE;AACvE,MAAM,WAAW,cAAc;IAC7B;2EACuE;IACvE,QAAQ,CAAC,EAAE,WAAW,CAAC;IACvB,yEAAyE;IACzE,SAAS,EAAE,MAAM,CAAC;IAClB,qFAAqF;IACrF,SAAS,CAAC,EAAE,eAAe,CAAC;IAC5B,4FAA4F;IAC5F,cAAc,CAAC,EAAE,gBAAgB,CAAC;IAClC,8DAA8D;IAC9D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,4FAA4F;IAC5F,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC;sEACkE;IAClE,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,mFAAmF;AACnF,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,gBAAgB,CAAC;IACzB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,kFAAkF;IAClF,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAgOD;;0FAE0F;AAC1F,wBAAsB,eAAe,CACnC,EAAE,EAAE,MAAM,EACV,OAAO,EAAE,cAAc,GACtB,OAAO,CAAC,cAAc,CAAC,CAsDzB"}
@@ -1,13 +1,14 @@
1
1
  import { mkdirSync, writeFileSync } from "node:fs";
2
2
  import { join } from "node:path";
3
- import { parseMarkdown } from "../formats/markdown/parse.js";
3
+ import { parseMarkdown, } from "../formats/markdown/parse.js";
4
4
  import { truncate } from "../utils.js";
5
+ import { RecordableError } from "../errors.js";
5
6
  import { createLogger } from "../logger.js";
6
7
  import { actionDurationMs } from "../timing.js";
7
8
  import { cacheKey, FileCache } from "./cache.js";
8
9
  import { ElevenLabsProvider, DEFAULT_MODEL, DEFAULT_FORMAT, } from "./elevenlabs.js";
9
10
  import { MockTTSProvider } from "./mock.js";
10
- import { extFor } from "./types.js";
11
+ import { extFor, } from "./types.js";
11
12
  /** First-character index of the word containing `offset` (scan back to whitespace). */
12
13
  function wordStart(text, offset) {
13
14
  let i = Math.min(offset, text.length);
@@ -49,10 +50,9 @@ function keyFor(narration, vo) {
49
50
  text: narration,
50
51
  });
51
52
  }
52
- /** Synthesize one paragraph (cache-first) its `audio()` clip, a `wait`/action
53
- * pair per marker, and a tail `wait` so the voiceover finishes. */
54
- async function compileNarration(block, opts) {
55
- const { narration, markers } = block;
53
+ /** Synthesize one paragraph cache-first and write its audio asset to disk.
54
+ * A miss is a real synthesis — for a network provider, an external API call. */
55
+ async function synthesizeBlock(narration, opts) {
56
56
  const key = keyFor(narration, opts.voiceover);
57
57
  const preview = truncate(narration);
58
58
  let result = opts.cache.get(key);
@@ -60,7 +60,6 @@ async function compileNarration(block, opts) {
60
60
  opts.log("Voice", `cache hit "${preview}"`);
61
61
  }
62
62
  else {
63
- // A miss means a real synthesis — for a network provider, an external API call.
64
63
  opts.log("Voice", `synthesize "${preview}" via ${opts.providerName}`);
65
64
  result = await opts.provider.synthesize(narration, {
66
65
  format: opts.voiceover?.format,
@@ -72,12 +71,33 @@ async function compileNarration(block, opts) {
72
71
  const asset = join(opts.assetsDir, `${key}.${extFor(result.format)}`);
73
72
  mkdirSync(opts.assetsDir, { recursive: true });
74
73
  writeFileSync(asset, result.audio);
75
- const actions = [{ action: "audio", path: asset, wait: false }];
74
+ return { result, asset };
75
+ }
76
+ /** Warn that a marker can't land on its word: earlier actions in this paragraph
77
+ * (their cursor travel, typing, inserts) already ran `-gap`ms past it, so this
78
+ * one and everything after it lag. Point at the exact spot and say why. */
79
+ function warnOverrun(m, narration, preview, gap, prevOffset, warn) {
80
+ const stacked = m.offset === prevOffset;
81
+ const cause = stacked
82
+ ? `it shares a spot in the narration with the action before it`
83
+ : `the actions before it overrun by that much`;
84
+ const fix = stacked
85
+ ? `move ${markerLabel(m.step)} to the word it actually describes, or add narration between the two`
86
+ : `add words before it, space the actions out, or move it into a fenced block (no audio)`;
87
+ warn(`Voiceover timing — ${markerLabel(m.step)} can't start on ${wordAt(narration, m.offset)} ` +
88
+ `(paragraph "${preview}"): ${cause}, so it and the rest lag ${-gap}ms. Fix: ${fix}.`);
89
+ }
90
+ /** Turn a clip's alignment into timed actions: a `wait` before each marker so it
91
+ * fires on its narrated word (warn, never retime, when it overruns), the marker
92
+ * itself, then a tail `wait` so the narration finishes before the next block. */
93
+ async function placeMarkers(narration, markers, result, opts) {
94
+ const preview = truncate(narration);
76
95
  const alignment = result.alignment ?? {
77
96
  chars: [],
78
97
  startMs: [],
79
98
  endMs: [],
80
99
  };
100
+ const actions = [];
81
101
  let elapsed = 0;
82
102
  let prevOffset = -1;
83
103
  for (const m of markers) {
@@ -88,27 +108,25 @@ async function compileNarration(block, opts) {
88
108
  elapsed += gap;
89
109
  }
90
110
  else if (gap < 0) {
91
- // The action can't land on its word: earlier actions in this paragraph
92
- // (their cursor travel, typing, inserts) already ran `-gap`ms past it, so
93
- // this one and everything after it lag. Point at the exact spot and say why.
94
- const stacked = m.offset === prevOffset;
95
- const cause = stacked
96
- ? `it shares a spot in the narration with the action before it`
97
- : `the actions before it overrun by that much`;
98
- const fix = stacked
99
- ? `move ${markerLabel(m.step)} to the word it actually describes, or add narration between the two`
100
- : `add words before it, space the actions out, or move it into a fenced block (no audio)`;
101
- opts.warn(`Voiceover timing — ${markerLabel(m.step)} can't start on ${wordAt(narration, m.offset)} ` +
102
- `(paragraph "${preview}"): ${cause}, so it and the rest lag ${-gap}ms. Fix: ${fix}.`);
111
+ warnOverrun(m, narration, preview, gap, prevOffset, opts.warn);
103
112
  }
104
113
  actions.push(m.step);
105
114
  elapsed += await actionDurationMs(m.step, opts.cfg);
106
115
  prevOffset = m.offset;
107
116
  }
108
- // Let the narration finish before the next block begins.
109
117
  const tail = Math.round(result.durationMs - elapsed);
110
118
  if (tail > 0)
111
119
  actions.push({ action: "wait", ms: tail });
120
+ return actions;
121
+ }
122
+ /** Synthesize one paragraph (cache-first) → its `audio()` clip, a `wait`/action
123
+ * pair per marker, and a tail `wait` so the voiceover finishes. */
124
+ async function compileNarration(block, opts) {
125
+ const { result, asset } = await synthesizeBlock(block.narration, opts);
126
+ const actions = [
127
+ { action: "audio", path: asset, wait: false },
128
+ ...(await placeMarkers(block.narration, block.markers, result, opts)),
129
+ ];
112
130
  return { actions, asset };
113
131
  }
114
132
  /** Apply env defaults to a voiceover block — frontmatter always wins. The env
@@ -132,18 +150,18 @@ function resolveProvider(provider, voiceover) {
132
150
  if (provider)
133
151
  return provider;
134
152
  if (!voiceover) {
135
- throw new Error("compileMarkdown: no `voiceover` frontmatter and no `provider` — add a voiceover block or pass a provider.");
153
+ throw new RecordableError("CONFIG_INVALID", "compileMarkdown: no `voiceover` frontmatter and no `provider` — add a voiceover block or pass a provider.");
136
154
  }
137
155
  if (voiceover.provider === "mock")
138
156
  return new MockTTSProvider();
139
157
  const hasKey = voiceover.apiKey ?? process.env.ELEVENLABS_API_KEY;
140
158
  if (!hasKey) {
141
- throw new Error("Voiceover: ElevenLabs needs an API key — set ELEVENLABS_API_KEY (e.g. in a .env beside " +
159
+ throw new RecordableError("CONFIG_INVALID", "Voiceover: ElevenLabs needs an API key — set ELEVENLABS_API_KEY (e.g. in a .env beside " +
142
160
  "the document) or `voiceover.apiKey`, or use RECORDABLE_TTS_PROVIDER=mock for silent audio.");
143
161
  }
144
162
  const voiceId = voiceover.voiceId;
145
163
  if (!voiceId) {
146
- throw new Error("Voiceover: ElevenLabs needs a voice — set RECORDABLE_VOICE_ID (e.g. in a .env beside " +
164
+ throw new RecordableError("CONFIG_INVALID", "Voiceover: ElevenLabs needs a voice — set RECORDABLE_VOICE_ID (e.g. in a .env beside " +
147
165
  "the document) or `voiceover.voiceId`.");
148
166
  }
149
167
  return new ElevenLabsProvider({ ...voiceover, voiceId });
@@ -1 +1 @@
1
- {"version":3,"file":"compile.js","sourceRoot":"","sources":["../../src/voiceover/compile.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"compile.js","sourceRoot":"","sources":["../../src/voiceover/compile.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"elevenlabs.d.ts","sourceRoot":"","sources":["../../src/voiceover/elevenlabs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAOpD,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAUvE,eAAO,MAAM,aAAa,2BAA2B,CAAC;AACtD,eAAO,MAAM,cAAc,kBAAkB,CAAC;AAG9C,MAAM,WAAW,iBAAkB,SAAQ,eAAe;IACxD,6EAA6E;IAC7E,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,qBAAa,kBAAmB,YAAW,WAAW;IACxC,OAAO,CAAC,QAAQ,CAAC,GAAG;gBAAH,GAAG,EAAE,iBAAiB;IAE7C,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,GAAE,YAAiB,GAAG,OAAO,CAAC,SAAS,CAAC;IAK3E,8EAA8E;YAChE,WAAW;CAyD1B"}
1
+ {"version":3,"file":"elevenlabs.d.ts","sourceRoot":"","sources":["../../src/voiceover/elevenlabs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAOpD,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAUvE,eAAO,MAAM,aAAa,2BAA2B,CAAC;AACtD,eAAO,MAAM,cAAc,kBAAkB,CAAC;AAG9C,MAAM,WAAW,iBAAkB,SAAQ,eAAe;IACxD,6EAA6E;IAC7E,OAAO,EAAE,MAAM,CAAC;CACjB;AA0ED,qBAAa,kBAAmB,YAAW,WAAW;IACxC,OAAO,CAAC,QAAQ,CAAC,GAAG;gBAAH,GAAG,EAAE,iBAAiB;IAE7C,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,GAAE,YAAiB,GAAG,OAAO,CAAC,SAAS,CAAC;IAK3E,8EAA8E;YAChE,WAAW;CAkD1B"}
@@ -10,6 +10,41 @@ import { alignmentDurationMs, normalizeAlignment, } from "./alignment.js";
10
10
  export const DEFAULT_MODEL = "eleven_multilingual_v2";
11
11
  export const DEFAULT_FORMAT = "mp3_44100_128";
12
12
  const PACKAGE = "@elevenlabs/elevenlabs-js";
13
+ /** Read a property off an unknown value, or undefined if it isn't an object. */
14
+ function prop(obj, key) {
15
+ return typeof obj === "object" && obj !== null
16
+ ? obj[key]
17
+ : undefined;
18
+ }
19
+ /** Resolve the client constructor across SDK layouts. */
20
+ function resolveClientCtor(mod) {
21
+ const candidate = prop(mod, "ElevenLabsClient") ?? // named export (current ESM)
22
+ prop(prop(mod, "default"), "ElevenLabsClient") ?? // default-wrapped (CJS interop)
23
+ prop(mod, "default"); // bare default export
24
+ if (typeof candidate !== "function") {
25
+ throw new RecordableError("TTS_FAILED", `ElevenLabs: "${PACKAGE}" has no usable ElevenLabsClient export — ` +
26
+ `its API may have changed; check the installed version`);
27
+ }
28
+ return candidate;
29
+ }
30
+ /** Pull audio + optional alignment out of a synthesis response, unwrapping SDK
31
+ * drift. Throws if no usable audio is present. */
32
+ function extractSynthesis(res) {
33
+ // Response is the object directly in current SDKs, `.data`-wrapped in older.
34
+ const data = prop(res, "data") ?? res;
35
+ // Audio field is `audioBase64` (camelCase SDK) / `audio_base64` (raw REST).
36
+ const audioBase64 = prop(data, "audioBase64") ??
37
+ prop(data, "audio_base64") ??
38
+ prop(data, "audio");
39
+ if (typeof audioBase64 !== "string") {
40
+ throw new RecordableError("TTS_FAILED", "ElevenLabs returned no audio in its response");
41
+ }
42
+ const rawAlignment = prop(data, "alignment");
43
+ const alignment = typeof rawAlignment === "object" && rawAlignment !== null
44
+ ? rawAlignment
45
+ : undefined;
46
+ return { audioBase64, alignment };
47
+ }
13
48
  export class ElevenLabsProvider {
14
49
  cfg;
15
50
  constructor(cfg) {
@@ -23,7 +58,7 @@ export class ElevenLabsProvider {
23
58
  async _synthesize(text, format) {
24
59
  const apiKey = this.cfg.apiKey ?? process.env.ELEVENLABS_API_KEY;
25
60
  if (!apiKey) {
26
- throw new Error("ElevenLabs: no API key — set ELEVENLABS_API_KEY (or voiceover.apiKey)");
61
+ throw new RecordableError("CONFIG_INVALID", "ElevenLabs: no API key — set ELEVENLABS_API_KEY (or voiceover.apiKey)");
27
62
  }
28
63
  // Non-literal specifier so tsc doesn't try to resolve the optional dep; it's
29
64
  // present only when the voiceover add-on path is actually used.
@@ -32,10 +67,10 @@ export class ElevenLabsProvider {
32
67
  mod = await import(PACKAGE);
33
68
  }
34
69
  catch {
35
- throw new Error(`ElevenLabs: the "${PACKAGE}" package is not installed — ` +
70
+ throw new RecordableError("TTS_FAILED", `ElevenLabs: the "${PACKAGE}" package is not installed — ` +
36
71
  `add it to use voiceover (it is an optional dependency)`);
37
72
  }
38
- const ElevenLabsClient = mod.ElevenLabsClient ?? mod.default?.ElevenLabsClient ?? mod.default;
73
+ const ElevenLabsClient = resolveClientCtor(mod);
39
74
  const client = new ElevenLabsClient({ apiKey });
40
75
  let res;
41
76
  try {
@@ -49,15 +84,10 @@ export class ElevenLabsProvider {
49
84
  catch (e) {
50
85
  throw new RecordableError("TTS_FAILED", `ElevenLabs synthesis failed: ${e.message}`, { cause: e });
51
86
  }
52
- // Response is the object directly in current SDKs, `.data`-wrapped in older.
53
- // Audio field is `audioBase64` (camelCase SDK) / `audio_base64` (raw REST).
54
- const data = res?.data ?? res;
55
- const audioBase64 = data.audioBase64 ?? data.audio_base64 ?? data.audio;
56
- if (!audioBase64)
57
- throw new RecordableError("TTS_FAILED", "ElevenLabs returned no audio in its response");
87
+ const { audioBase64, alignment: rawAlignment } = extractSynthesis(res);
58
88
  const audio = Buffer.from(audioBase64, "base64");
59
- const alignment = data.alignment
60
- ? normalizeAlignment(data.alignment)
89
+ const alignment = rawAlignment
90
+ ? normalizeAlignment(rawAlignment)
61
91
  : undefined;
62
92
  const durationMs = alignment ? alignmentDurationMs(alignment) : 0;
63
93
  return { audio, format, durationMs, alignment };
@@ -1 +1 @@
1
- {"version":3,"file":"elevenlabs.js","sourceRoot":"","sources":["../../src/voiceover/elevenlabs.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"elevenlabs.js","sourceRoot":"","sources":["../../src/voiceover/elevenlabs.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"mock.d.ts","sourceRoot":"","sources":["../../src/voiceover/mock.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAYvE,MAAM,WAAW,WAAW;IAC1B,sEAAsE;IACtE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,0EAA0E;IAC1E,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,qBAAa,eAAgB,YAAW,WAAW;IACrC,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAAJ,IAAI,GAAE,WAAgB;IAE7C,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,GAAE,YAAiB,GAAG,OAAO,CAAC,SAAS,CAAC;CAgB7E;AAED,gFAAgF;AAChF,wBAAgB,SAAS,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,SAAO,GAAG,MAAM,CAmBvE"}
1
+ {"version":3,"file":"mock.d.ts","sourceRoot":"","sources":["../../src/voiceover/mock.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAYvE,MAAM,WAAW,WAAW;IAC1B,sEAAsE;IACtE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,0EAA0E;IAC1E,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,qBAAa,eAAgB,YAAW,WAAW;IACrC,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAAJ,IAAI,GAAE,WAAgB;IAE7C,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,GAAE,YAAiB,GAAG,OAAO,CAAC,SAAS,CAAC;CAgB7E;AAED,gFAAgF;AAChF,wBAAgB,SAAS,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,SAAO,GAAG,MAAM,CA4CvE"}
@@ -20,22 +20,45 @@ export class MockTTSProvider {
20
20
  }
21
21
  /** Build a valid silent 16-bit mono WAV of `durationMs` — ffmpeg-compatible. */
22
22
  export function silentWav(durationMs, sampleRate = 8000) {
23
+ // Canonical 44-byte RIFF/WAVE header for 16-bit mono PCM, then silent samples.
24
+ const CHANNELS = 1; // mono
25
+ const BITS_PER_SAMPLE = 16;
26
+ const BYTES_PER_SAMPLE = BITS_PER_SAMPLE / 8;
27
+ const BLOCK_ALIGN = CHANNELS * BYTES_PER_SAMPLE; // bytes per sample frame
28
+ const BYTE_RATE = sampleRate * BLOCK_ALIGN;
29
+ const FMT_CHUNK_SIZE = 16; // bytes of the fmt subchunk body (PCM)
30
+ const AUDIO_FORMAT_PCM = 1; // 1 = uncompressed PCM
31
+ const HEADER_SIZE = 44;
32
+ // Byte offsets of each field within the header (RIFF + fmt + data subchunks).
33
+ const OFF_RIFF_ID = 0; // "RIFF"
34
+ const OFF_RIFF_SIZE = 4; // file size minus 8 bytes (the "RIFF" id + this field)
35
+ const OFF_WAVE_ID = 8; // "WAVE"
36
+ const OFF_FMT_ID = 12; // "fmt "
37
+ const OFF_FMT_SIZE = 16; // fmt chunk body size
38
+ const OFF_AUDIO_FORMAT = 20; // PCM = 1
39
+ const OFF_CHANNELS = 22; // channel count
40
+ const OFF_SAMPLE_RATE = 24; // samples per second
41
+ const OFF_BYTE_RATE = 28; // sampleRate * blockAlign
42
+ const OFF_BLOCK_ALIGN = 32; // bytes per sample frame
43
+ const OFF_BITS_PER_SAMPLE = 34; // bits per sample
44
+ const OFF_DATA_ID = 36; // "data"
45
+ const OFF_DATA_SIZE = 40; // data chunk body size (= byte length of samples)
23
46
  const numSamples = Math.max(0, Math.round((durationMs / 1000) * sampleRate));
24
- const dataSize = numSamples * 2; // 16-bit mono
25
- const buf = Buffer.alloc(44 + dataSize); // samples already zero = silence
26
- buf.write("RIFF", 0, "ascii");
27
- buf.writeUInt32LE(36 + dataSize, 4);
28
- buf.write("WAVE", 8, "ascii");
29
- buf.write("fmt ", 12, "ascii");
30
- buf.writeUInt32LE(16, 16); // PCM fmt chunk size
31
- buf.writeUInt16LE(1, 20); // audioFormat = PCM
32
- buf.writeUInt16LE(1, 22); // channels = mono
33
- buf.writeUInt32LE(sampleRate, 24);
34
- buf.writeUInt32LE(sampleRate * 2, 28); // byteRate
35
- buf.writeUInt16LE(2, 32); // blockAlign
36
- buf.writeUInt16LE(16, 34); // bitsPerSample
37
- buf.write("data", 36, "ascii");
38
- buf.writeUInt32LE(dataSize, 40);
47
+ const dataSize = numSamples * BYTES_PER_SAMPLE; // 16-bit mono
48
+ const buf = Buffer.alloc(HEADER_SIZE + dataSize); // samples already zero = silence
49
+ buf.write("RIFF", OFF_RIFF_ID, "ascii");
50
+ buf.writeUInt32LE(HEADER_SIZE - 8 + dataSize, OFF_RIFF_SIZE);
51
+ buf.write("WAVE", OFF_WAVE_ID, "ascii");
52
+ buf.write("fmt ", OFF_FMT_ID, "ascii");
53
+ buf.writeUInt32LE(FMT_CHUNK_SIZE, OFF_FMT_SIZE);
54
+ buf.writeUInt16LE(AUDIO_FORMAT_PCM, OFF_AUDIO_FORMAT);
55
+ buf.writeUInt16LE(CHANNELS, OFF_CHANNELS);
56
+ buf.writeUInt32LE(sampleRate, OFF_SAMPLE_RATE);
57
+ buf.writeUInt32LE(BYTE_RATE, OFF_BYTE_RATE);
58
+ buf.writeUInt16LE(BLOCK_ALIGN, OFF_BLOCK_ALIGN);
59
+ buf.writeUInt16LE(BITS_PER_SAMPLE, OFF_BITS_PER_SAMPLE);
60
+ buf.write("data", OFF_DATA_ID, "ascii");
61
+ buf.writeUInt32LE(dataSize, OFF_DATA_SIZE);
39
62
  return buf;
40
63
  }
41
64
  //# sourceMappingURL=mock.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"mock.js","sourceRoot":"","sources":["../../src/voiceover/mock.ts"],"names":[],"mappings":"AAmBA,MAAM,OAAO,eAAe;IACG;IAA7B,YAA6B,OAAoB,EAAE;QAAtB,SAAI,GAAJ,IAAI,CAAkB;IAAG,CAAC;IAEvD,KAAK,CAAC,UAAU,CAAC,IAAY,EAAE,QAAsB,EAAE;QACrD,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,EAAE,CAAC;QAC5C,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC;QAEhD,MAAM,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;QACxB,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC;QACnD,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC;QACvD,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC;QAE5C,OAAO;YACL,KAAK,EAAE,SAAS,CAAC,UAAU,EAAE,UAAU,CAAC;YACxC,MAAM,EAAE,KAAK;YACb,UAAU;YACV,SAAS,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE;SACrC,CAAC;IACJ,CAAC;CACF;AAED,gFAAgF;AAChF,MAAM,UAAU,SAAS,CAAC,UAAkB,EAAE,UAAU,GAAG,IAAI;IAC7D,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC;IAC7E,MAAM,QAAQ,GAAG,UAAU,GAAG,CAAC,CAAC,CAAC,cAAc;IAC/C,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC,iCAAiC;IAE1E,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;IAC9B,GAAG,CAAC,aAAa,CAAC,EAAE,GAAG,QAAQ,EAAE,CAAC,CAAC,CAAC;IACpC,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;IAC9B,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC;IAC/B,GAAG,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,qBAAqB;IAChD,GAAG,CAAC,aAAa,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,oBAAoB;IAC9C,GAAG,CAAC,aAAa,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,kBAAkB;IAC5C,GAAG,CAAC,aAAa,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;IAClC,GAAG,CAAC,aAAa,CAAC,UAAU,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW;IAClD,GAAG,CAAC,aAAa,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa;IACvC,GAAG,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,gBAAgB;IAC3C,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC;IAC/B,GAAG,CAAC,aAAa,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IAChC,OAAO,GAAG,CAAC;AACb,CAAC"}
1
+ {"version":3,"file":"mock.js","sourceRoot":"","sources":["../../src/voiceover/mock.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "recordable",
3
- "version": "0.2.0",
3
+ "version": "0.4.0",
4
4
  "description": "Programmatic, repeatable browser screen recording. Script a walkthrough as a fluent chain of actions — clicks, typing, smooth zoom/scroll, an animated cursor, and manual steps like logins — and capture it to MP4.",
5
5
  "repository": {
6
6
  "type": "git",
@@ -35,7 +35,9 @@
35
35
  ],
36
36
  "scripts": {
37
37
  "build": "tsc",
38
+ "typecheck": "tsc -p tsconfig.typecheck.json",
38
39
  "test": "tsx --test test/**/*.test.ts",
40
+ "test:e2e": "tsx --test test/e2e/**/*.e2e.ts",
39
41
  "clean": "rm -rf dist",
40
42
  "gen:schema": "tsx scripts/gen-schema.ts",
41
43
  "lint": "eslint .",
@@ -52,6 +52,9 @@
52
52
  ],
53
53
  "additionalProperties": false
54
54
  },
55
+ "pageZoom": {
56
+ "type": "number"
57
+ },
55
58
  "fps": {
56
59
  "type": "number"
57
60
  },
@@ -76,6 +79,9 @@
76
79
  "type": "string"
77
80
  }
78
81
  },
82
+ "language": {
83
+ "type": "string"
84
+ },
79
85
  "typingSpeed": {
80
86
  "type": "number"
81
87
  },
@@ -440,6 +446,9 @@
440
446
  },
441
447
  "timeout": {
442
448
  "type": "number"
449
+ },
450
+ "followNewTab": {
451
+ "type": "boolean"
443
452
  }
444
453
  },
445
454
  "required": [
@@ -668,6 +677,9 @@
668
677
  }
669
678
  ]
670
679
  },
680
+ "container": {
681
+ "type": "string"
682
+ },
671
683
  "duration": {
672
684
  "type": "number"
673
685
  }
package/dist/targets.d.ts DELETED
@@ -1,6 +0,0 @@
1
- /** Resolve a target string to a Puppeteer selector.
2
- * Prefix with `text:` for plain-text matching; everything else is a CSS selector. */
3
- export declare function resolveTarget(target: string): string;
4
- /** Returns true if the string is a CSS position keyword or percentage. */
5
- export declare function isPositionValue(value: string): boolean;
6
- //# sourceMappingURL=targets.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"targets.d.ts","sourceRoot":"","sources":["../src/targets.ts"],"names":[],"mappings":"AAGA;sFACsF;AACtF,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAEpD;AAED,0EAA0E;AAC1E,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAGtD"}
package/dist/targets.js DELETED
@@ -1,13 +0,0 @@
1
- // Target resolution: author-facing target strings → Puppeteer selectors, plus
2
- // the position-keyword test used by zoom/scroll origins.
3
- /** Resolve a target string to a Puppeteer selector.
4
- * Prefix with `text:` for plain-text matching; everything else is a CSS selector. */
5
- export function resolveTarget(target) {
6
- return target.startsWith("text:") ? `::-p-text(${target.slice(5)})` : target;
7
- }
8
- /** Returns true if the string is a CSS position keyword or percentage. */
9
- export function isPositionValue(value) {
10
- const token = "(top|bottom|left|right|center|\\d+%)";
11
- return new RegExp(`^${token}(\\s+${token})?$`, "i").test(value.trim());
12
- }
13
- //# sourceMappingURL=targets.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"targets.js","sourceRoot":"","sources":["../src/targets.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,yDAAyD;AAEzD;sFACsF;AACtF,MAAM,UAAU,aAAa,CAAC,MAAc;IAC1C,OAAO,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,aAAa,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC;AAC/E,CAAC;AAED,0EAA0E;AAC1E,MAAM,UAAU,eAAe,CAAC,KAAa;IAC3C,MAAM,KAAK,GAAG,sCAAsC,CAAC;IACrD,OAAO,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,KAAK,KAAK,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;AACzE,CAAC"}