rollipop 1.0.0-beta.2 → 1.0.0-beta.4
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.
- package/dist/config/types.d.ts +3 -2
- package/dist/constants.js +1 -1
- package/dist/core/plugins/babel-plugin.js +1 -1
- package/dist/core/plugins/dev-server-plugin.js +30 -5
- package/dist/core/rolldown.js +4 -10
- package/dist/hmr-runtime.iife.js +213 -139
- package/dist/index.d.ts +2 -1
- package/dist/index.js +2 -1
- package/dist/node/commands/bundle/command.js +8 -0
- package/dist/package.js +1 -1
- package/dist/server/devframe/index.js +1 -1
- package/dist/server/devframe/setup.js +4 -1
- package/dist/storage/file-storage.js +1 -1
- package/dist/utils/transform.js +2 -1
- package/dist/utils/worklets.d.ts +7 -0
- package/dist/utils/worklets.js +32 -0
- package/package.json +3 -3
- package/src/runtime/__tests__/hmr-runtime.spec.ts +171 -72
- package/src/runtime/hmr-client.ts +1 -1
- package/src/runtime/hmr-runtime.ts +76 -0
package/dist/config/types.d.ts
CHANGED
|
@@ -6,11 +6,12 @@ import { InteractiveCommand } from "../node/commands/start/setup-interactive-mod
|
|
|
6
6
|
import "../node/cli-utils.js";
|
|
7
7
|
import { Plugin } from "../core/plugins/types.js";
|
|
8
8
|
import * as swc from "@swc/core";
|
|
9
|
-
import { DevWatchOptions, RollipopReactNativeFlowConfig as FlowConfig, RollipopReactNativeReactConfig, RollipopReactNativeSwcConfig as SwcConfig, RollipopReactNativeWorkletsConfig
|
|
9
|
+
import { DevWatchOptions, RollipopReactNativeFlowConfig as FlowConfig, RollipopReactNativeReactConfig, RollipopReactNativeSwcConfig as SwcConfig, RollipopReactNativeWorkletsConfig } from "@rollipop/rolldown/experimental";
|
|
10
10
|
import * as rolldown from "@rollipop/rolldown";
|
|
11
11
|
import { TopLevelFilterExpression } from "@rollipop/rolldown/filter";
|
|
12
12
|
import * as babel from "@babel/core";
|
|
13
13
|
//#region src/config/types.d.ts
|
|
14
|
+
type WorkletsConfig = Partial<RollipopReactNativeWorkletsConfig>;
|
|
14
15
|
type RolldownExperimentalOptions = NonNullable<rolldown.InputOptions['experimental']>;
|
|
15
16
|
type RolldownTransformOptions = NonNullable<rolldown.InputOptions['transform']>;
|
|
16
17
|
type RolldownJsxOptions = ExtractObject<NonNullable<RolldownTransformOptions['jsx']>>;
|
|
@@ -227,7 +228,7 @@ export interface TransformRule<T = unknown> {
|
|
|
227
228
|
}
|
|
228
229
|
export interface ExperimentalConfig extends RolldownExperimentalOptions {
|
|
229
230
|
/**
|
|
230
|
-
*
|
|
231
|
+
* Worklets or Reanimated 3 transformation configuration. Installed versions are detected by default.
|
|
231
232
|
*/
|
|
232
233
|
worklets?: WorkletsConfig;
|
|
233
234
|
}
|
package/dist/constants.js
CHANGED
|
@@ -20,7 +20,7 @@ var constants_exports = /* @__PURE__ */ __exportAll({
|
|
|
20
20
|
ROLLIPOP_VIRTUAL_ENTRY_ID: () => ROLLIPOP_VIRTUAL_ENTRY_ID,
|
|
21
21
|
ROLLIPOP_VIRTUAL_PREFIX: () => ROLLIPOP_VIRTUAL_PREFIX
|
|
22
22
|
});
|
|
23
|
-
const ROLLIPOP_VERSION = "1.0.0-beta.
|
|
23
|
+
const ROLLIPOP_VERSION = "1.0.0-beta.4";
|
|
24
24
|
const ROLLIPOP_VIRTUAL_PREFIX = "\0rollipop/";
|
|
25
25
|
const ROLLIPOP_VIRTUAL_BOOTSTRAP_ID = `${ROLLIPOP_VIRTUAL_PREFIX}bootstrap`;
|
|
26
26
|
const ROLLIPOP_VIRTUAL_ENTRY_ID = `${ROLLIPOP_VIRTUAL_PREFIX}entry`;
|
|
@@ -62,7 +62,7 @@ function transform(code, id, options) {
|
|
|
62
62
|
sourceMaps: true,
|
|
63
63
|
...options
|
|
64
64
|
});
|
|
65
|
-
invariant(result?.code, `Failed to transform with babel: ${id}`);
|
|
65
|
+
invariant(result?.code != null, `Failed to transform with babel: ${id}`);
|
|
66
66
|
const map = result.map && {
|
|
67
67
|
...result.map,
|
|
68
68
|
names: [...result.map.names],
|
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
import { ROLLIPOP_VIRTUAL_BOOTSTRAP_ID } from "../../constants.js";
|
|
2
2
|
import { resolveFrom } from "../../utils/node-resolve.js";
|
|
3
|
+
import { createVirtualModuleId } from "../../utils/id.js";
|
|
3
4
|
import { replaceSourceMappingUrl } from "../../utils/source-map.js";
|
|
4
5
|
import { isNotNil } from "es-toolkit";
|
|
5
6
|
import dedent from "dedent";
|
|
6
7
|
import { rollipopReactRefreshWrapperPlugin } from "@rollipop/rolldown/experimental";
|
|
7
8
|
import { exactRegex, id, include } from "@rollipop/rolldown/filter";
|
|
8
9
|
//#region src/core/plugins/dev-server-plugin.ts
|
|
10
|
+
const DEV_GRAPH_META_MODULE_ID = createVirtualModuleId("dev-graph-meta");
|
|
9
11
|
const DEFAULT_REACT_REFRESH_INCLUDE_PATTERNS = [/\.[tj]sx?(?:$|\?)/];
|
|
10
12
|
const DEFAULT_REACT_REFRESH_EXCLUDE_PATTERNS = [/node_modules/];
|
|
11
13
|
function sourceMapUrlPlugin(sourceMapUrl) {
|
|
@@ -49,20 +51,43 @@ async function devServerPlugin(options) {
|
|
|
49
51
|
if (origin != null && bundleEntry != null) {
|
|
50
52
|
const registerHMRGraphPlugin = {
|
|
51
53
|
name: "rollipop:register-hmr-graph",
|
|
54
|
+
resolveId: {
|
|
55
|
+
filter: [include(id(exactRegex(DEV_GRAPH_META_MODULE_ID)))],
|
|
56
|
+
handler() {
|
|
57
|
+
return DEV_GRAPH_META_MODULE_ID;
|
|
58
|
+
}
|
|
59
|
+
},
|
|
60
|
+
load: {
|
|
61
|
+
filter: [include(id(exactRegex(DEV_GRAPH_META_MODULE_ID)))],
|
|
62
|
+
handler() {
|
|
63
|
+
return {
|
|
64
|
+
code: `export default ${JSON.stringify({
|
|
65
|
+
origin,
|
|
66
|
+
bundleEntry,
|
|
67
|
+
platform
|
|
68
|
+
})};`,
|
|
69
|
+
moduleType: "js"
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
},
|
|
52
73
|
transform: {
|
|
53
74
|
filter: [include(id(exactRegex(ROLLIPOP_VIRTUAL_BOOTSTRAP_ID)))],
|
|
54
75
|
handler(code) {
|
|
55
|
-
return [
|
|
76
|
+
return [
|
|
77
|
+
`import __graph_meta__ from ${JSON.stringify(DEV_GRAPH_META_MODULE_ID)};`,
|
|
78
|
+
code,
|
|
79
|
+
dedent`
|
|
56
80
|
if (import.meta.hot && globalThis.__rollipop_runtime__) {
|
|
57
81
|
globalThis.__rollipop_runtime__.registerGraph({
|
|
58
82
|
id: ${JSON.stringify(id$1)},
|
|
59
|
-
origin:
|
|
60
|
-
bundleEntry:
|
|
61
|
-
platform:
|
|
83
|
+
origin: __graph_meta__.origin,
|
|
84
|
+
bundleEntry: __graph_meta__.bundleEntry,
|
|
85
|
+
platform: __graph_meta__.platform,
|
|
62
86
|
runtime: import.meta.hot.runtime,
|
|
63
87
|
});
|
|
64
88
|
}
|
|
65
|
-
`
|
|
89
|
+
`
|
|
90
|
+
].join("\n");
|
|
66
91
|
}
|
|
67
92
|
}
|
|
68
93
|
};
|
package/dist/core/rolldown.js
CHANGED
|
@@ -2,7 +2,7 @@ import { ROLLIPOP_VIRTUAL_ENTRY_ID } from "../constants.js";
|
|
|
2
2
|
import { isDebugEnabled } from "../common/env.js";
|
|
3
3
|
import { CompatStatusReporter, ProgressBarStatusReporter } from "../events/builtin-reporters.js";
|
|
4
4
|
import { asLiteral, iife, nodeEnvironment } from "../common/code.js";
|
|
5
|
-
import { resolveFrom
|
|
5
|
+
import { resolveFrom } from "../utils/node-resolve.js";
|
|
6
6
|
import { getGlobalVariables } from "../internal/react-native.js";
|
|
7
7
|
import { printPluginLog } from "./plugins/context.js";
|
|
8
8
|
import { applyRolldownOptionsConfig } from "../config/compose-override.js";
|
|
@@ -12,6 +12,7 @@ import { resolveHmrConfig } from "../utils/config.js";
|
|
|
12
12
|
import { defineEnvFromObject } from "../utils/env.js";
|
|
13
13
|
import { getBaseUrl } from "../utils/server.js";
|
|
14
14
|
import { getBuildTotalModules, setBuildTotalModules } from "../utils/storage.js";
|
|
15
|
+
import { resolveWorkletsConfig } from "../utils/worklets.js";
|
|
15
16
|
import { transformWithRollipop } from "../utils/transform.js";
|
|
16
17
|
import { loadEnv } from "./env.js";
|
|
17
18
|
import { withTransformBoundary } from "./plugins/utils/transform-utils.js";
|
|
@@ -144,6 +145,7 @@ async function resolveRolldownOptions(context, config, buildOptions, devEngineOp
|
|
|
144
145
|
await resolveOutputAddon(rolldownIntro, chunk)
|
|
145
146
|
].filter(isNotNil).join("\n");
|
|
146
147
|
},
|
|
148
|
+
postFooter: rolldownOutput.postFooter ?? "\n",
|
|
147
149
|
minify: buildOptions.minify ?? rolldownOutput.minify,
|
|
148
150
|
sourcemap: buildOptions.sourcemap ?? rolldownOutput.sourcemap,
|
|
149
151
|
sourcemapPathTransform: rolldownOutput.sourcemapPathTransform ?? createProjectRootSourcemapPathTransform(config.root),
|
|
@@ -218,17 +220,9 @@ function resolveReactNativeBuiltinPluginConfig(config) {
|
|
|
218
220
|
runtimeTarget: config.runtimeTarget,
|
|
219
221
|
flow: config.transform.flow,
|
|
220
222
|
swc: resolveNativeSwcConfig(config.transform),
|
|
221
|
-
worklets: resolveWorkletsConfig(config)
|
|
223
|
+
worklets: resolveWorkletsConfig(config.experimental.worklets, config)
|
|
222
224
|
};
|
|
223
225
|
}
|
|
224
|
-
function resolveWorkletsConfig(config) {
|
|
225
|
-
const { worklets } = config.experimental ?? {};
|
|
226
|
-
if (worklets == null) return;
|
|
227
|
-
return toMerged({
|
|
228
|
-
isRelease: config.mode === "production",
|
|
229
|
-
pluginVersion: resolvePackageJson(config.root, "react-native-worklets")?.version
|
|
230
|
-
}, worklets);
|
|
231
|
-
}
|
|
232
226
|
function resolveRolldownTransformConfig(config) {
|
|
233
227
|
const { flow: _flow, babel: _babel, swc: _swc, ...transform } = config;
|
|
234
228
|
if (transform.jsx != null && typeof transform.jsx === "object") {
|