screenci 0.0.58 → 0.0.60

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 (51) hide show
  1. package/README.md +11 -1
  2. package/dist/cli.d.ts.map +1 -1
  3. package/dist/cli.js +36 -6
  4. package/dist/cli.js.map +1 -1
  5. package/dist/index.d.ts +3 -1
  6. package/dist/index.d.ts.map +1 -1
  7. package/dist/index.js +2 -0
  8. package/dist/index.js.map +1 -1
  9. package/dist/src/asset.d.ts +33 -10
  10. package/dist/src/asset.d.ts.map +1 -1
  11. package/dist/src/asset.js +64 -4
  12. package/dist/src/asset.js.map +1 -1
  13. package/dist/src/changeFocus.d.ts.map +1 -1
  14. package/dist/src/changeFocus.js +2 -0
  15. package/dist/src/changeFocus.js.map +1 -1
  16. package/dist/src/events.d.ts +47 -4
  17. package/dist/src/events.d.ts.map +1 -1
  18. package/dist/src/events.js +47 -4
  19. package/dist/src/events.js.map +1 -1
  20. package/dist/src/hide.d.ts +1 -4
  21. package/dist/src/hide.d.ts.map +1 -1
  22. package/dist/src/hide.js +11 -26
  23. package/dist/src/hide.js.map +1 -1
  24. package/dist/src/init.d.ts.map +1 -1
  25. package/dist/src/init.js +7 -15
  26. package/dist/src/init.js.map +1 -1
  27. package/dist/src/instrument.d.ts.map +1 -1
  28. package/dist/src/instrument.js +38 -17
  29. package/dist/src/instrument.js.map +1 -1
  30. package/dist/src/recording.d.ts +1 -1
  31. package/dist/src/recording.d.ts.map +1 -1
  32. package/dist/src/recordingData.d.ts +32 -2
  33. package/dist/src/recordingData.d.ts.map +1 -1
  34. package/dist/src/runtimeContext.d.ts +11 -2
  35. package/dist/src/runtimeContext.d.ts.map +1 -1
  36. package/dist/src/runtimeContext.js +21 -4
  37. package/dist/src/runtimeContext.js.map +1 -1
  38. package/dist/src/speed.d.ts +4 -0
  39. package/dist/src/speed.d.ts.map +1 -0
  40. package/dist/src/speed.js +23 -0
  41. package/dist/src/speed.js.map +1 -0
  42. package/dist/src/time.d.ts +4 -0
  43. package/dist/src/time.d.ts.map +1 -0
  44. package/dist/src/time.js +23 -0
  45. package/dist/src/time.js.map +1 -0
  46. package/dist/src/timelineBlock.d.ts +18 -0
  47. package/dist/src/timelineBlock.d.ts.map +1 -0
  48. package/dist/src/timelineBlock.js +49 -0
  49. package/dist/src/timelineBlock.js.map +1 -0
  50. package/dist/tsconfig.tsbuildinfo +1 -1
  51. package/package.json +1 -1
@@ -37,6 +37,12 @@ export type ActiveCueRun = {
37
37
  resolveFinished: () => void;
38
38
  startedWithExplicitStart: boolean;
39
39
  };
40
+ export type TimelineBlockType = 'hide' | 'speed' | 'time';
41
+ export type TimelineBlockState = {
42
+ type: TimelineBlockType;
43
+ multiplier?: number;
44
+ durationMs?: number;
45
+ };
40
46
  export type ScreenCIRuntimeContext = {
41
47
  cueRecorder: IEventRecorder;
42
48
  hideRecorder: IEventRecorder;
@@ -45,7 +51,7 @@ export type ScreenCIRuntimeContext = {
45
51
  clickRecorder: IEventRecorder;
46
52
  page: Page | null;
47
53
  testFilePath: string | null;
48
- insideHide: boolean;
54
+ timelineBlocks: TimelineBlockState[];
49
55
  cue: {
50
56
  activeCueName: string | null;
51
57
  activeCueRun: ActiveCueRun | null;
@@ -74,7 +80,10 @@ export declare function getRuntimeClickRecorder(): IEventRecorder;
74
80
  export declare function setRuntimePage(page: Page | null): void;
75
81
  export declare function getRuntimePage(): Page | null;
76
82
  export declare function resetCueRuntimeState(): void;
77
- export declare function setRuntimeInsideHide(insideHide: boolean): void;
83
+ export declare function pushRuntimeTimelineBlock(block: TimelineBlockState): void;
84
+ export declare function popRuntimeTimelineBlock(expectedType: TimelineBlockType): TimelineBlockState;
85
+ export declare function hasRuntimeTimelineBlock(type: TimelineBlockType): boolean;
86
+ export declare function getRuntimeTimelineBlocks(): TimelineBlockState[];
78
87
  export declare function isRuntimeInsideHide(): boolean;
79
88
  export declare function getRuntimeAutoZoomState(): AutoZoomState;
80
89
  export declare function setRuntimeAutoZoomState(state: AutoZoomState): void;
@@ -1 +1 @@
1
- {"version":3,"file":"runtimeContext.d.ts","sourceRoot":"","sources":["../../src/runtimeContext.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runtimeContext.d.ts","sourceRoot":"","sources":["../../src/runtimeContext.ts"],"names":[],"mappings":"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"}
@@ -13,7 +13,7 @@ export function createScreenCIRuntimeContext(overrides = {}) {
13
13
  clickRecorder: defaultRecorder,
14
14
  page: overrides.page ?? null,
15
15
  testFilePath: overrides.testFilePath ?? null,
16
- insideHide: false,
16
+ timelineBlocks: [],
17
17
  cue: {
18
18
  activeCueName: null,
19
19
  activeCueRun: null,
@@ -80,11 +80,28 @@ export function resetCueRuntimeState() {
80
80
  context.cue.activeCueRun = null;
81
81
  context.cue.usedCueNames.clear();
82
82
  }
83
- export function setRuntimeInsideHide(insideHide) {
84
- getScreenCIRuntimeContext().insideHide = insideHide;
83
+ export function pushRuntimeTimelineBlock(block) {
84
+ getScreenCIRuntimeContext().timelineBlocks.push(block);
85
+ }
86
+ export function popRuntimeTimelineBlock(expectedType) {
87
+ const blocks = getScreenCIRuntimeContext().timelineBlocks;
88
+ const block = blocks.pop();
89
+ if (block === undefined) {
90
+ throw new Error(`Cannot end ${expectedType}() without an active block`);
91
+ }
92
+ if (block.type !== expectedType) {
93
+ throw new Error(`Cannot end ${expectedType}() while ${block.type}() is the active block`);
94
+ }
95
+ return block;
96
+ }
97
+ export function hasRuntimeTimelineBlock(type) {
98
+ return getScreenCIRuntimeContext().timelineBlocks.some((block) => block.type === type);
99
+ }
100
+ export function getRuntimeTimelineBlocks() {
101
+ return [...getScreenCIRuntimeContext().timelineBlocks];
85
102
  }
86
103
  export function isRuntimeInsideHide() {
87
- return getScreenCIRuntimeContext().insideHide;
104
+ return hasRuntimeTimelineBlock('hide');
88
105
  }
89
106
  export function getRuntimeAutoZoomState() {
90
107
  return getScreenCIRuntimeContext().autoZoom;
@@ -1 +1 @@
1
- {"version":3,"file":"runtimeContext.js","sourceRoot":"","sources":["../../src/runtimeContext.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAE/C,OAAO,EACL,mBAAmB,GAGpB,MAAM,aAAa,CAAA;AA4CpB,MAAM,qBAAqB,GAAG,IAAI,iBAAiB,EAA0B,CAAA;AAE7E,MAAM,sBAAsB,GAAG,4BAA4B,EAAE,CAAA;AAC7D,IAAI,oBAAoB,GAAkC,IAAI,CAAA;AAE9D,MAAM,UAAU,4BAA4B,CAC1C,YAII,EAAE;IAEN,MAAM,eAAe,GAAG,SAAS,CAAC,QAAQ,IAAI,mBAAmB,CAAA;IACjE,OAAO;QACL,WAAW,EAAE,eAAe;QAC5B,YAAY,EAAE,eAAe;QAC7B,gBAAgB,EAAE,eAAe;QACjC,aAAa,EAAE,eAAe;QAC9B,aAAa,EAAE,eAAe;QAC9B,IAAI,EAAE,SAAS,CAAC,IAAI,IAAI,IAAI;QAC5B,YAAY,EAAE,SAAS,CAAC,YAAY,IAAI,IAAI;QAC5C,UAAU,EAAE,KAAK;QACjB,GAAG,EAAE;YACH,aAAa,EAAE,IAAI;YACnB,YAAY,EAAE,IAAI;YAClB,YAAY,EAAE,IAAI,GAAG,EAAU;SAChC;QACD,QAAQ,EAAE;YACR,cAAc,EAAE,KAAK;YACrB,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE,EAAE;YACX,mBAAmB,EAAE,IAAI;SAC1B;KACF,CAAA;AACH,CAAC;AAED,MAAM,UAAU,6BAA6B,CAC3C,OAA+B,EAC/B,EAAW;IAEX,OAAO,qBAAqB,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC,CAAA;AAC/C,CAAC;AAED,MAAM,UAAU,yBAAyB;IACvC,OAAO,CACL,qBAAqB,CAAC,QAAQ,EAAE;QAChC,oBAAoB;QACpB,sBAAsB,CACvB,CAAA;AACH,CAAC;AAED,MAAM,UAAU,+BAA+B,CAC7C,OAAsC;IAEtC,oBAAoB,GAAG,OAAO,CAAA;AAChC,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,QAA+B;IACnE,yBAAyB,EAAE,CAAC,WAAW,GAAG,QAAQ,IAAI,mBAAmB,CAAA;AAC3E,CAAC;AAED,MAAM,UAAU,qBAAqB;IACnC,OAAO,yBAAyB,EAAE,CAAC,WAAW,CAAA;AAChD,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,QAA+B;IACpE,yBAAyB,EAAE,CAAC,YAAY,GAAG,QAAQ,IAAI,mBAAmB,CAAA;AAC5E,CAAC;AAED,MAAM,UAAU,sBAAsB;IACpC,OAAO,yBAAyB,EAAE,CAAC,YAAY,CAAA;AACjD,CAAC;AAED,MAAM,UAAU,0BAA0B,CACxC,QAA+B;IAE/B,yBAAyB,EAAE,CAAC,gBAAgB,GAAG,QAAQ,IAAI,mBAAmB,CAAA;AAChF,CAAC;AAED,MAAM,UAAU,0BAA0B;IACxC,OAAO,yBAAyB,EAAE,CAAC,gBAAgB,CAAA;AACrD,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,QAA+B;IACrE,yBAAyB,EAAE,CAAC,aAAa,GAAG,QAAQ,IAAI,mBAAmB,CAAA;AAC7E,CAAC;AAED,MAAM,UAAU,uBAAuB;IACrC,OAAO,yBAAyB,EAAE,CAAC,aAAa,CAAA;AAClD,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,QAA+B;IACrE,yBAAyB,EAAE,CAAC,aAAa,GAAG,QAAQ,IAAI,mBAAmB,CAAA;AAC7E,CAAC;AAED,MAAM,UAAU,uBAAuB;IACrC,OAAO,yBAAyB,EAAE,CAAC,aAAa,CAAA;AAClD,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,IAAiB;IAC9C,yBAAyB,EAAE,CAAC,IAAI,GAAG,IAAI,CAAA;AACzC,CAAC;AAED,MAAM,UAAU,cAAc;IAC5B,OAAO,yBAAyB,EAAE,CAAC,IAAI,CAAA;AACzC,CAAC;AAED,MAAM,UAAU,oBAAoB;IAClC,MAAM,OAAO,GAAG,yBAAyB,EAAE,CAAA;IAC3C,OAAO,CAAC,GAAG,CAAC,aAAa,GAAG,IAAI,CAAA;IAChC,OAAO,CAAC,GAAG,CAAC,YAAY,GAAG,IAAI,CAAA;IAC/B,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,KAAK,EAAE,CAAA;AAClC,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,UAAmB;IACtD,yBAAyB,EAAE,CAAC,UAAU,GAAG,UAAU,CAAA;AACrD,CAAC;AAED,MAAM,UAAU,mBAAmB;IACjC,OAAO,yBAAyB,EAAE,CAAC,UAAU,CAAA;AAC/C,CAAC;AAED,MAAM,UAAU,uBAAuB;IACrC,OAAO,yBAAyB,EAAE,CAAC,QAAQ,CAAA;AAC7C,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,KAAoB;IAC1D,yBAAyB,EAAE,CAAC,QAAQ,GAAG,KAAK,CAAA;AAC9C,CAAC"}
1
+ {"version":3,"file":"runtimeContext.js","sourceRoot":"","sources":["../../src/runtimeContext.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { IEventRecorder } from './events.js';
2
+ export declare function setActiveSpeedRecorder(recorder: IEventRecorder | null): void;
3
+ export declare function speed(multiplier: number, fn: () => Promise<void> | void): Promise<void>;
4
+ //# sourceMappingURL=speed.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"speed.d.ts","sourceRoot":"","sources":["../../src/speed.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAUjD,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,cAAc,GAAG,IAAI,GAAG,IAAI,CAE5E;AAED,wBAAsB,KAAK,CACzB,UAAU,EAAE,MAAM,EAClB,EAAE,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,GAC7B,OAAO,CAAC,IAAI,CAAC,CAWf"}
@@ -0,0 +1,23 @@
1
+ import { setRuntimeHideRecorder } from './runtimeContext.js';
2
+ import { getActiveHideRecorder, runTimelineBlock } from './timelineBlock.js';
3
+ function assertValidSpeedMultiplier(multiplier) {
4
+ if (!Number.isFinite(multiplier) || multiplier <= 0) {
5
+ throw new Error('speed() multiplier must be a finite number greater than 0');
6
+ }
7
+ }
8
+ export function setActiveSpeedRecorder(recorder) {
9
+ setRuntimeHideRecorder(recorder);
10
+ }
11
+ export async function speed(multiplier, fn) {
12
+ assertValidSpeedMultiplier(multiplier);
13
+ const recorder = getActiveHideRecorder();
14
+ await runTimelineBlock({
15
+ type: 'speed',
16
+ recorder,
17
+ emitStart: (activeRecorder) => activeRecorder.addSpeedStart(multiplier),
18
+ emitEnd: (activeRecorder) => activeRecorder.addSpeedEnd(),
19
+ fn,
20
+ multiplier,
21
+ });
22
+ }
23
+ //# sourceMappingURL=speed.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"speed.js","sourceRoot":"","sources":["../../src/speed.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAA;AAC5D,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AAE5E,SAAS,0BAA0B,CAAC,UAAkB;IACpD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,UAAU,IAAI,CAAC,EAAE,CAAC;QACpD,MAAM,IAAI,KAAK,CAAC,2DAA2D,CAAC,CAAA;IAC9E,CAAC;AACH,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,QAA+B;IACpE,sBAAsB,CAAC,QAAQ,CAAC,CAAA;AAClC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,KAAK,CACzB,UAAkB,EAClB,EAA8B;IAE9B,0BAA0B,CAAC,UAAU,CAAC,CAAA;IACtC,MAAM,QAAQ,GAAG,qBAAqB,EAAE,CAAA;IACxC,MAAM,gBAAgB,CAAC;QACrB,IAAI,EAAE,OAAO;QACb,QAAQ;QACR,SAAS,EAAE,CAAC,cAAc,EAAE,EAAE,CAAC,cAAc,CAAC,aAAa,CAAC,UAAU,CAAC;QACvE,OAAO,EAAE,CAAC,cAAc,EAAE,EAAE,CAAC,cAAc,CAAC,WAAW,EAAE;QACzD,EAAE;QACF,UAAU;KACX,CAAC,CAAA;AACJ,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { IEventRecorder } from './events.js';
2
+ export declare function setActiveTimeRecorder(recorder: IEventRecorder | null): void;
3
+ export declare function time(durationMs: number, fn: () => Promise<void> | void): Promise<void>;
4
+ //# sourceMappingURL=time.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"time.d.ts","sourceRoot":"","sources":["../../src/time.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAYjD,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,cAAc,GAAG,IAAI,GAAG,IAAI,CAE3E;AAED,wBAAsB,IAAI,CACxB,UAAU,EAAE,MAAM,EAClB,EAAE,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,GAC7B,OAAO,CAAC,IAAI,CAAC,CAWf"}
@@ -0,0 +1,23 @@
1
+ import { setRuntimeHideRecorder } from './runtimeContext.js';
2
+ import { getActiveHideRecorder, runTimelineBlock } from './timelineBlock.js';
3
+ function assertValidTimeDuration(durationMs) {
4
+ if (!Number.isFinite(durationMs) || durationMs < 0) {
5
+ throw new Error('time() durationMs must be a finite number greater than or equal to 0');
6
+ }
7
+ }
8
+ export function setActiveTimeRecorder(recorder) {
9
+ setRuntimeHideRecorder(recorder);
10
+ }
11
+ export async function time(durationMs, fn) {
12
+ assertValidTimeDuration(durationMs);
13
+ const recorder = getActiveHideRecorder();
14
+ await runTimelineBlock({
15
+ type: 'time',
16
+ recorder,
17
+ emitStart: (activeRecorder) => activeRecorder.addTimeStart(durationMs),
18
+ emitEnd: (activeRecorder) => activeRecorder.addTimeEnd(),
19
+ fn,
20
+ durationMs,
21
+ });
22
+ }
23
+ //# sourceMappingURL=time.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"time.js","sourceRoot":"","sources":["../../src/time.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAA;AAC5D,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AAE5E,SAAS,uBAAuB,CAAC,UAAkB;IACjD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;QACnD,MAAM,IAAI,KAAK,CACb,sEAAsE,CACvE,CAAA;IACH,CAAC;AACH,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,QAA+B;IACnE,sBAAsB,CAAC,QAAQ,CAAC,CAAA;AAClC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,IAAI,CACxB,UAAkB,EAClB,EAA8B;IAE9B,uBAAuB,CAAC,UAAU,CAAC,CAAA;IACnC,MAAM,QAAQ,GAAG,qBAAqB,EAAE,CAAA;IACxC,MAAM,gBAAgB,CAAC;QACrB,IAAI,EAAE,MAAM;QACZ,QAAQ;QACR,SAAS,EAAE,CAAC,cAAc,EAAE,EAAE,CAAC,cAAc,CAAC,YAAY,CAAC,UAAU,CAAC;QACtE,OAAO,EAAE,CAAC,cAAc,EAAE,EAAE,CAAC,cAAc,CAAC,UAAU,EAAE;QACxD,EAAE;QACF,UAAU;KACX,CAAC,CAAA;AACJ,CAAC"}
@@ -0,0 +1,18 @@
1
+ import type { IEventRecorder } from './events.js';
2
+ import { type TimelineBlockType } from './runtimeContext.js';
3
+ export declare const POST_HIDE_PAUSE = 350;
4
+ type TimelineBlockRunOptions = {
5
+ type: TimelineBlockType;
6
+ recorder: IEventRecorder;
7
+ emitStart: (recorder: IEventRecorder) => void;
8
+ emitEnd: (recorder: IEventRecorder) => void;
9
+ fn: () => Promise<void> | void;
10
+ multiplier?: number;
11
+ durationMs?: number;
12
+ };
13
+ export declare function runTimelineBlock({ type, recorder, emitStart, emitEnd, fn, multiplier, durationMs, }: TimelineBlockRunOptions): Promise<void>;
14
+ export declare function getActiveHideRecorder(): IEventRecorder;
15
+ export declare function isInsideHide(): boolean;
16
+ export declare function isInsideTime(): boolean;
17
+ export {};
18
+ //# sourceMappingURL=timelineBlock.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"timelineBlock.d.ts","sourceRoot":"","sources":["../../src/timelineBlock.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAEjD,OAAO,EAML,KAAK,iBAAiB,EACvB,MAAM,qBAAqB,CAAA;AAE5B,eAAO,MAAM,eAAe,MAAM,CAAA;AAQlC,KAAK,uBAAuB,GAAG;IAC7B,IAAI,EAAE,iBAAiB,CAAA;IACvB,QAAQ,EAAE,cAAc,CAAA;IACxB,SAAS,EAAE,CAAC,QAAQ,EAAE,cAAc,KAAK,IAAI,CAAA;IAC7C,OAAO,EAAE,CAAC,QAAQ,EAAE,cAAc,KAAK,IAAI,CAAA;IAC3C,EAAE,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;IAC9B,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB,CAAA;AAED,wBAAsB,gBAAgB,CAAC,EACrC,IAAI,EACJ,QAAQ,EACR,SAAS,EACT,OAAO,EACP,EAAE,EACF,UAAU,EACV,UAAU,GACX,EAAE,uBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC,CAiBzC;AAED,wBAAgB,qBAAqB,IAAI,cAAc,CAEtD;AAED,wBAAgB,YAAY,IAAI,OAAO,CAEtC;AAED,wBAAgB,YAAY,IAAI,OAAO,CAEtC"}
@@ -0,0 +1,49 @@
1
+ import { resolveRecordingTimingDuration } from './runtimeMode.js';
2
+ import { getRuntimeHideRecorder, getRuntimeTimelineBlocks, hasRuntimeTimelineBlock, popRuntimeTimelineBlock, pushRuntimeTimelineBlock, } from './runtimeContext.js';
3
+ export const POST_HIDE_PAUSE = 350;
4
+ function sleep(ms) {
5
+ return new Promise((resolve) => setTimeout(resolve, resolveRecordingTimingDuration(ms)));
6
+ }
7
+ export async function runTimelineBlock({ type, recorder, emitStart, emitEnd, fn, multiplier, durationMs, }) {
8
+ assertTimelineBlockNesting(type);
9
+ pushRuntimeTimelineBlock({
10
+ type,
11
+ ...(multiplier !== undefined && { multiplier }),
12
+ ...(durationMs !== undefined && { durationMs }),
13
+ });
14
+ emitStart(recorder);
15
+ try {
16
+ await fn();
17
+ if (type === 'hide') {
18
+ await sleep(POST_HIDE_PAUSE);
19
+ }
20
+ }
21
+ finally {
22
+ popRuntimeTimelineBlock(type);
23
+ }
24
+ emitEnd(recorder);
25
+ }
26
+ export function getActiveHideRecorder() {
27
+ return getRuntimeHideRecorder();
28
+ }
29
+ export function isInsideHide() {
30
+ return hasRuntimeTimelineBlock('hide');
31
+ }
32
+ export function isInsideTime() {
33
+ return hasRuntimeTimelineBlock('time');
34
+ }
35
+ function assertTimelineBlockNesting(type) {
36
+ const activeBlocks = getRuntimeTimelineBlocks();
37
+ const activeTop = activeBlocks[activeBlocks.length - 1];
38
+ if (activeTop === undefined) {
39
+ return;
40
+ }
41
+ if (type === 'hide') {
42
+ if (activeTop.type === 'hide') {
43
+ throw new Error('Cannot nest hide() calls');
44
+ }
45
+ return;
46
+ }
47
+ throw new Error(`${type}() cannot be nested inside ${activeTop.type}(); only hide() inside speed() or time() is supported`);
48
+ }
49
+ //# sourceMappingURL=timelineBlock.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"timelineBlock.js","sourceRoot":"","sources":["../../src/timelineBlock.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,8BAA8B,EAAE,MAAM,kBAAkB,CAAA;AACjE,OAAO,EACL,sBAAsB,EACtB,wBAAwB,EACxB,uBAAuB,EACvB,uBAAuB,EACvB,wBAAwB,GAEzB,MAAM,qBAAqB,CAAA;AAE5B,MAAM,CAAC,MAAM,eAAe,GAAG,GAAG,CAAA;AAElC,SAAS,KAAK,CAAC,EAAU;IACvB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAC7B,UAAU,CAAC,OAAO,EAAE,8BAA8B,CAAC,EAAE,CAAC,CAAC,CACxD,CAAA;AACH,CAAC;AAYD,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,EACrC,IAAI,EACJ,QAAQ,EACR,SAAS,EACT,OAAO,EACP,EAAE,EACF,UAAU,EACV,UAAU,GACc;IACxB,0BAA0B,CAAC,IAAI,CAAC,CAAA;IAChC,wBAAwB,CAAC;QACvB,IAAI;QACJ,GAAG,CAAC,UAAU,KAAK,SAAS,IAAI,EAAE,UAAU,EAAE,CAAC;QAC/C,GAAG,CAAC,UAAU,KAAK,SAAS,IAAI,EAAE,UAAU,EAAE,CAAC;KAChD,CAAC,CAAA;IACF,SAAS,CAAC,QAAQ,CAAC,CAAA;IACnB,IAAI,CAAC;QACH,MAAM,EAAE,EAAE,CAAA;QACV,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;YACpB,MAAM,KAAK,CAAC,eAAe,CAAC,CAAA;QAC9B,CAAC;IACH,CAAC;YAAS,CAAC;QACT,uBAAuB,CAAC,IAAI,CAAC,CAAA;IAC/B,CAAC;IACD,OAAO,CAAC,QAAQ,CAAC,CAAA;AACnB,CAAC;AAED,MAAM,UAAU,qBAAqB;IACnC,OAAO,sBAAsB,EAAE,CAAA;AACjC,CAAC;AAED,MAAM,UAAU,YAAY;IAC1B,OAAO,uBAAuB,CAAC,MAAM,CAAC,CAAA;AACxC,CAAC;AAED,MAAM,UAAU,YAAY;IAC1B,OAAO,uBAAuB,CAAC,MAAM,CAAC,CAAA;AACxC,CAAC;AAED,SAAS,0BAA0B,CAAC,IAAuB;IACzD,MAAM,YAAY,GAAG,wBAAwB,EAAE,CAAA;IAC/C,MAAM,SAAS,GAAG,YAAY,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;IAEvD,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;QAC5B,OAAM;IACR,CAAC;IAED,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;QACpB,IAAI,SAAS,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YAC9B,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAA;QAC7C,CAAC;QACD,OAAM;IACR,CAAC;IAED,MAAM,IAAI,KAAK,CACb,GAAG,IAAI,8BAA8B,SAAS,CAAC,IAAI,uDAAuD,CAC3G,CAAA;AACH,CAAC"}