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.
@@ -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 as WorkletsConfig } from "@rollipop/rolldown/experimental";
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
- * `react-native-worklets` transformation configuration.
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.2";
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 [code, dedent`
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: ${JSON.stringify(origin)},
60
- bundleEntry: ${JSON.stringify(bundleEntry)},
61
- platform: ${JSON.stringify(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
- `].join("\n");
89
+ `
90
+ ].join("\n");
66
91
  }
67
92
  }
68
93
  };
@@ -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, resolvePackageJson } from "../utils/node-resolve.js";
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") {