From 6ce192aa878c670beffbd583e6736d3eba038bf3 Mon Sep 17 00:00:00 2001 From: yradex <11014207+Yradex@users.noreply.github.com> Date: Fri, 3 Apr 2026 17:17:24 +0800 Subject: [PATCH] refactor(react): move worklet runtime lib outputs under runtime --- packages/react/package.json | 14 +++++------ .../src/vitest-global-setup.js | 6 ++--- .../__test__/runtimeSourceLayout.test.js | 21 +++++++++-------- packages/react/worklet-runtime/package.json | 23 +++++-------------- packages/react/worklet-runtime/tsconfig.json | 2 +- .../test/external-bundle.test.ts | 2 +- .../rspeedy/plugin-react/test/config.test.ts | 11 +++++---- 7 files changed, 35 insertions(+), 44 deletions(-) diff --git a/packages/react/package.json b/packages/react/package.json index 4427951fe7..3a2e235505 100644 --- a/packages/react/package.json +++ b/packages/react/package.json @@ -76,16 +76,16 @@ } }, "./worklet-runtime": { - "types": "./worklet-runtime/lib/index.d.ts", + "types": "./runtime/lib/worklet-runtime/index.d.ts", "default": "./worklet-runtime/dist/main.js" }, "./worklet-dev-runtime": { - "types": "./worklet-runtime/lib/index.d.ts", + "types": "./runtime/lib/worklet-runtime/index.d.ts", "default": "./worklet-runtime/dist/dev.js" }, "./worklet-runtime/bindings": { - "types": "./worklet-runtime/lib/bindings/index.d.ts", - "default": "./worklet-runtime/lib/bindings/index.js" + "types": "./runtime/lib/worklet-runtime/bindings/index.d.ts", + "default": "./runtime/lib/worklet-runtime/bindings/index.js" }, "./legacy-react-runtime": { "types": "./runtime/lib/legacy-react-runtime/index.d.ts", @@ -143,13 +143,13 @@ "./components/lib/index.d.ts" ], "worklet-runtime": [ - "./worklet-runtime/lib/index.d.ts" + "./runtime/lib/worklet-runtime/index.d.ts" ], "worklet-dev-runtime": [ - "./worklet-runtime/lib/index.d.ts" + "./runtime/lib/worklet-runtime/index.d.ts" ], "worklet-runtime/bindings": [ - "./worklet-runtime/lib/bindings/index.d.ts" + "./runtime/lib/worklet-runtime/bindings/index.d.ts" ], "legacy-react-runtime": [ "./runtime/lib/legacy-react-runtime/index.d.ts" diff --git a/packages/react/testing-library/src/vitest-global-setup.js b/packages/react/testing-library/src/vitest-global-setup.js index e3161d5afb..7abf35e436 100644 --- a/packages/react/testing-library/src/vitest-global-setup.js +++ b/packages/react/testing-library/src/vitest-global-setup.js @@ -17,9 +17,9 @@ import { snapshotInstanceManager, } from '../../runtime/lib/snapshot/index.js'; import { destroyWorklet } from '../../runtime/lib/worklet/destroy.js'; -import { initApiEnv } from '../../worklet-runtime/lib/api/lynxApi.js'; -import { initEventListeners } from '../../worklet-runtime/lib/listeners.js'; -import { initWorklet } from '../../worklet-runtime/lib/workletRuntime.js'; +import { initApiEnv } from '../../runtime/lib/worklet-runtime/api/lynxApi.js'; +import { initEventListeners } from '../../runtime/lib/worklet-runtime/listeners.js'; +import { initWorklet } from '../../runtime/lib/worklet-runtime/workletRuntime.js'; expect.addSnapshotSerializer({ test(val) { diff --git a/packages/react/worklet-runtime/__test__/runtimeSourceLayout.test.js b/packages/react/worklet-runtime/__test__/runtimeSourceLayout.test.js index 2efc7c2036..0e07a73d29 100644 --- a/packages/react/worklet-runtime/__test__/runtimeSourceLayout.test.js +++ b/packages/react/worklet-runtime/__test__/runtimeSourceLayout.test.js @@ -36,18 +36,19 @@ describe('runtime-local worklet-runtime source layout', () => { } }); - test('reads package metadata from built outputs instead of shell sources', () => { + test('keeps the shell package focused on dist-only worklet bundle outputs', () => { const workletRuntimePackageJson = JSON.parse( fs.readFileSync(workletRuntimePackageJsonPath, 'utf8'), ); expect(workletRuntimePackageJson.exports['.']).toEqual({ - types: './lib/index.d.ts', - default: './lib/index.js', + default: './dist/main.js', }); - expect(workletRuntimePackageJson.main).toBe('lib/index.js'); - expect(workletRuntimePackageJson.module).toBe('lib/index.js'); - expect(workletRuntimePackageJson.types).toBe('lib/index.d.ts'); + expect(workletRuntimePackageJson.exports['./dev']).toEqual({ + default: './dist/dev.js', + }); + expect(workletRuntimePackageJson.main).toBe('dist/main.js'); + expect(workletRuntimePackageJson.module).toBe('dist/main.js'); expect( fs.existsSync(path.join(reactPackagesDir, 'worklet-runtime', 'src')), ).toBe(false); @@ -57,16 +58,16 @@ describe('runtime-local worklet-runtime source layout', () => { const reactPackageJson = JSON.parse(fs.readFileSync(reactPackageJsonPath, 'utf8')); expect(reactPackageJson.exports['./worklet-runtime']).toEqual({ - types: './worklet-runtime/lib/index.d.ts', + types: './runtime/lib/worklet-runtime/index.d.ts', default: './worklet-runtime/dist/main.js', }); expect(reactPackageJson.exports['./worklet-dev-runtime']).toEqual({ - types: './worklet-runtime/lib/index.d.ts', + types: './runtime/lib/worklet-runtime/index.d.ts', default: './worklet-runtime/dist/dev.js', }); expect(reactPackageJson.exports['./worklet-runtime/bindings']).toEqual({ - types: './worklet-runtime/lib/bindings/index.d.ts', - default: './worklet-runtime/lib/bindings/index.js', + types: './runtime/lib/worklet-runtime/bindings/index.d.ts', + default: './runtime/lib/worklet-runtime/bindings/index.js', }); }); }); diff --git a/packages/react/worklet-runtime/package.json b/packages/react/worklet-runtime/package.json index 4bb07cba29..5c7285cb3c 100644 --- a/packages/react/worklet-runtime/package.json +++ b/packages/react/worklet-runtime/package.json @@ -6,28 +6,17 @@ "type": "module", "exports": { ".": { - "types": "./lib/index.d.ts", - "default": "./lib/index.js" + "default": "./dist/main.js" }, - "./bindings": { - "types": "./lib/bindings/index.d.ts", - "default": "./lib/bindings/index.js" - } - }, - "main": "lib/index.js", - "module": "lib/index.js", - "types": "lib/index.d.ts", - "typesVersions": { - "*": { - "bindings": [ - "./lib/bindings/index.d.ts" - ] + "./dev": { + "default": "./dist/dev.js" } }, + "main": "dist/main.js", + "module": "dist/main.js", "files": [ "CHANGELOG.md", - "dist", - "lib" + "dist" ], "scripts": { "build": "rslib build", diff --git a/packages/react/worklet-runtime/tsconfig.json b/packages/react/worklet-runtime/tsconfig.json index d138d095c8..0e1fbb9381 100644 --- a/packages/react/worklet-runtime/tsconfig.json +++ b/packages/react/worklet-runtime/tsconfig.json @@ -2,7 +2,7 @@ "extends": "../../../tsconfig.json", "compilerOptions": { "noEmit": false, - "outDir": "lib", + "outDir": "../runtime/lib/worklet-runtime", "rootDir": "../runtime/src/worklet-runtime", "stripInternal": true, "target": "ESNext", diff --git a/packages/rspeedy/lynx-bundle-rslib-config/test/external-bundle.test.ts b/packages/rspeedy/lynx-bundle-rslib-config/test/external-bundle.test.ts index 70dc7ec0f3..8bd5e4a45d 100644 --- a/packages/rspeedy/lynx-bundle-rslib-config/test/external-bundle.test.ts +++ b/packages/rspeedy/lynx-bundle-rslib-config/test/external-bundle.test.ts @@ -693,7 +693,7 @@ describe('pluginReactLynx', () => { "@lynx-js/react/internal$": "/packages/react/runtime/lib/internal.js", "@lynx-js/react/legacy-react-runtime$": "/packages/react/runtime/lib/legacy-react-runtime/index.js", "@lynx-js/react/runtime-components$": "/packages/react/components/lib/index.js", - "@lynx-js/react/worklet-runtime/bindings$": "/packages/react/worklet-runtime/lib/bindings/index.js", + "@lynx-js/react/worklet-runtime/bindings$": "/packages/react/runtime/lib/worklet-runtime/bindings/index.js", "@swc/helpers": "/node_modules//@swc/helpers", "preact$": "/node_modules//@lynx-js/internal-preact/dist/preact.mjs", "preact/compat$": "/node_modules//@lynx-js/internal-preact/compat/dist/compat.mjs", diff --git a/packages/rspeedy/plugin-react/test/config.test.ts b/packages/rspeedy/plugin-react/test/config.test.ts index ecea3690a7..9457fb4344 100644 --- a/packages/rspeedy/plugin-react/test/config.test.ts +++ b/packages/rspeedy/plugin-react/test/config.test.ts @@ -2627,16 +2627,17 @@ describe('Config', () => { ) }) - test('worklet runtime bindings resolve to the shell package build output', () => { + test('worklet runtime bindings resolve to the runtime-owned build output', () => { const require = createRequire(import.meta.url) expect( require.resolve('@lynx-js/react/worklet-runtime/bindings'), ).toContain( - '/packages/react/worklet-runtime/lib/bindings/index.js'.replaceAll( - '/', - path.sep, - ), + '/packages/react/runtime/lib/worklet-runtime/bindings/index.js' + .replaceAll( + '/', + path.sep, + ), ) })