From 905ac51afb4ef1cbcd68e1c8eb4ce32297bf764f Mon Sep 17 00:00:00 2001 From: Justin Halsall Date: Wed, 1 Apr 2026 12:00:00 +0800 Subject: [PATCH] Chore: Move most types from rrweb to @rrweb/types package (#1031) * Chore: Add move most types from rrweb to @rrweb/types package * Split off type imports * Split off type import to its own line * Get vite to generate type definitions * Apply formatting changes * noEmit not allowed in tsconfig, moved it to build step * Align version of @rrweb/types with main rrweb package Based on @mark-fenng's comments https://github.com/rrweb-io/rrweb/pull/1031/files#r1002298176 * Move up keywords --- .vscode/rrweb-monorepo.code-workspace | 7 +- packages/rrdom/package.json | 1 + packages/rrdom/src/diff.ts | 2 +- packages/rrdom/src/index.ts | 2 +- packages/rrdom/test/diff.test.ts | 6 +- packages/rrdom/tsconfig.json | 3 + packages/rrweb-player/package.json | 1 + packages/rrweb-player/src/Controller.svelte | 2 +- packages/rrweb-player/src/Player.svelte | 2 +- packages/rrweb-player/src/main.ts | 2 +- packages/rrweb-player/tsconfig.json | 3 + packages/rrweb/package.json | 1 + packages/rrweb/src/index.ts | 2 +- packages/rrweb/src/packer/base.ts | 2 +- packages/rrweb/src/packer/unpack.ts | 2 +- .../src/plugins/canvas-webrtc/record/index.ts | 2 +- .../rrweb/src/plugins/console/record/index.ts | 2 +- .../rrweb/src/plugins/console/replay/index.ts | 9 +- .../src/plugins/sequential-id/record/index.ts | 2 +- .../src/plugins/sequential-id/replay/index.ts | 3 +- packages/rrweb/src/record/iframe-manager.ts | 2 +- packages/rrweb/src/record/index.ts | 4 +- packages/rrweb/src/record/mutation.ts | 5 +- packages/rrweb/src/record/observer.ts | 5 +- .../rrweb/src/record/observers/canvas/2d.ts | 2 +- .../record/observers/canvas/canvas-manager.ts | 4 +- .../src/record/observers/canvas/canvas.ts | 2 +- .../record/observers/canvas/serialize-args.ts | 2 +- .../src/record/observers/canvas/webgl.ts | 2 +- .../rrweb/src/record/shadow-dom-manager.ts | 4 +- .../rrweb/src/record/stylesheet-manager.ts | 2 +- .../workers/image-bitmap-data-url-worker.ts | 2 +- packages/rrweb/src/replay/canvas/2d.ts | 2 +- .../src/replay/canvas/deserialize-args.ts | 2 +- packages/rrweb/src/replay/canvas/index.ts | 2 +- packages/rrweb/src/replay/canvas/webgl.ts | 2 +- packages/rrweb/src/replay/index.ts | 5 +- packages/rrweb/src/replay/machine.ts | 5 +- packages/rrweb/src/replay/timer.ts | 2 +- packages/rrweb/src/types.ts | 650 +----------------- packages/rrweb/src/utils.ts | 2 +- packages/rrweb/test/e2e/webgl.test.ts | 3 +- .../adopted-style-sheet-modification.ts | 3 +- .../rrweb/test/events/adopted-style-sheet.ts | 3 +- .../rrweb/test/events/canvas-in-iframe.ts | 3 +- packages/rrweb/test/events/iframe.ts | 3 +- packages/rrweb/test/events/input.ts | 3 +- packages/rrweb/test/events/ordering.ts | 3 +- packages/rrweb/test/events/scroll.ts | 3 +- packages/rrweb/test/events/selection.ts | 3 +- packages/rrweb/test/events/shadow-dom.ts | 3 +- .../test/events/style-sheet-rule-events.ts | 3 +- .../test/events/style-sheet-text-mutation.ts | 3 +- packages/rrweb/test/integration.test.ts | 8 +- packages/rrweb/test/machine.test.ts | 2 +- packages/rrweb/test/packer.test.ts | 2 +- packages/rrweb/test/record.test.ts | 4 +- packages/rrweb/test/record/webgl.test.ts | 4 +- .../test/replay/preload-all-images.test.ts | 2 +- .../rrweb/test/replay/webgl-mutation.test.ts | 2 +- packages/rrweb/test/utils.ts | 4 +- packages/rrweb/tsconfig.json | 3 + packages/types/.gitignore | 4 + packages/types/package.json | 49 ++ packages/types/src/index.ts | 638 +++++++++++++++++ packages/types/tsconfig.json | 26 + packages/types/vite.config.js | 21 + tsconfig.json | 3 + yarn.lock | 447 +++++++++++- 69 files changed, 1307 insertions(+), 712 deletions(-) create mode 100644 packages/types/.gitignore create mode 100644 packages/types/package.json create mode 100644 packages/types/src/index.ts create mode 100644 packages/types/tsconfig.json create mode 100644 packages/types/vite.config.js diff --git a/.vscode/rrweb-monorepo.code-workspace b/.vscode/rrweb-monorepo.code-workspace index 896a62e5..6a1be41e 100644 --- a/.vscode/rrweb-monorepo.code-workspace +++ b/.vscode/rrweb-monorepo.code-workspace @@ -23,12 +23,17 @@ { "name": "rrweb-snapshot (package)", "path": "../packages/rrweb-snapshot" + }, + { + "name": "@rrweb/types", + "path": "../packages/types" } ], "settings": { "jest.disabledWorkspaceFolders": [ " rrweb monorepo", - "rrweb-player (package)" + "rrweb-player (package)", + "@rrweb/types" ] } } diff --git a/packages/rrdom/package.json b/packages/rrdom/package.json index 74ef10f1..27c1ed1f 100644 --- a/packages/rrdom/package.json +++ b/packages/rrdom/package.json @@ -43,6 +43,7 @@ "rollup-plugin-typescript2": "^0.31.2", "rollup-plugin-web-worker-loader": "^1.6.1", "ts-jest": "^27.1.3", + "@rrweb/types": "^2.0.0-alpha.3", "typescript": "^4.7.3" }, "dependencies": { diff --git a/packages/rrdom/src/diff.ts b/packages/rrdom/src/diff.ts index 1cb4dd80..f03557e7 100644 --- a/packages/rrdom/src/diff.ts +++ b/packages/rrdom/src/diff.ts @@ -6,7 +6,7 @@ import type { scrollData, styleDeclarationData, styleSheetRuleData, -} from 'rrweb/src/types'; +} from '@rrweb/types'; import type { IRRCDATASection, IRRComment, diff --git a/packages/rrdom/src/index.ts b/packages/rrdom/src/index.ts index da96b12d..2b90840d 100644 --- a/packages/rrdom/src/index.ts +++ b/packages/rrdom/src/index.ts @@ -14,7 +14,7 @@ import type { scrollData, styleSheetRuleData, styleDeclarationData, -} from 'rrweb/src/types'; +} from '@rrweb/types'; import { BaseRRNode as RRNode, BaseRRCDATASectionImpl, diff --git a/packages/rrdom/test/diff.test.ts b/packages/rrdom/test/diff.test.ts index 723b2a3e..6e02577f 100644 --- a/packages/rrdom/test/diff.test.ts +++ b/packages/rrdom/test/diff.test.ts @@ -12,12 +12,12 @@ import { import type { IRRNode } from '../src/document'; import { Replayer } from 'rrweb'; import type { + eventWithTime, canvasMutationData, styleDeclarationData, styleSheetRuleData, -} from 'rrweb/src/types'; -import { EventType, IncrementalSource } from 'rrweb/src/types'; -import type { eventWithTime } from 'rrweb/typings/types'; +} from '@rrweb/types'; +import { EventType, IncrementalSource } from '@rrweb/types'; const elementSn = { type: RRNodeType.Element, diff --git a/packages/rrdom/tsconfig.json b/packages/rrdom/tsconfig.json index 4cf4a46f..450e56e1 100644 --- a/packages/rrdom/tsconfig.json +++ b/packages/rrdom/tsconfig.json @@ -18,6 +18,9 @@ "references": [ { "path": "../rrweb-snapshot" + }, + { + "path": "../types" } ], "compileOnSave": true, diff --git a/packages/rrweb-player/package.json b/packages/rrweb-player/package.json index 9489effe..6c6a21bd 100644 --- a/packages/rrweb-player/package.json +++ b/packages/rrweb-player/package.json @@ -4,6 +4,7 @@ "devDependencies": { "@rollup/plugin-commonjs": "^22.0.0", "@rollup/plugin-node-resolve": "^13.2.1", + "@rrweb/types": "^2.0.0-alpha.3", "@types/offscreencanvas": "^2019.6.4", "eslint-config-google": "^0.14.0", "eslint-plugin-svelte3": "^4.0.0", diff --git a/packages/rrweb-player/src/Controller.svelte b/packages/rrweb-player/src/Controller.svelte index b46f32b2..1025e453 100644 --- a/packages/rrweb-player/src/Controller.svelte +++ b/packages/rrweb-player/src/Controller.svelte @@ -1,7 +1,7 @@