create-crossbind 2.0.0-beta.64 → 2.0.0-beta.65

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 (29) hide show
  1. package/package.json +1 -1
  2. package/src/manifest.json +8 -0
  3. package/templates/backend-nodejs-native/package.json +3 -3
  4. package/templates/backend-nodejs-standalone/package.json +1 -1
  5. package/templates/backend-nodejs-wasm/package.json +2 -2
  6. package/templates/cloud-cloudflare-worker/package.json +1 -1
  7. package/templates/desktop-app/README.md +102 -0
  8. package/templates/desktop-app/_gitignore +3 -0
  9. package/templates/desktop-app/crossbind.config.js +17 -0
  10. package/templates/desktop-app/e2e/run.mjs +60 -0
  11. package/templates/desktop-app/index.html +11 -0
  12. package/templates/desktop-app/package.json +38 -0
  13. package/templates/desktop-app/src/main.js +15 -0
  14. package/templates/desktop-app/src/native/native.cpp +9 -0
  15. package/templates/desktop-app/src/native/native.h +12 -0
  16. package/templates/desktop-app/vite.config.js +6 -0
  17. package/templates/desktop-electron/package.json +3 -3
  18. package/templates/lib-cmake/package.json +1 -1
  19. package/templates/lib-prebuilt/package.json +2 -2
  20. package/templates/lib-source/package.json +1 -1
  21. package/templates/mobile-reactnative-cli/package.json +15 -15
  22. package/templates/mobile-reactnative-expo/package-lock.json +36 -36
  23. package/templates/mobile-reactnative-expo/package.json +6 -6
  24. package/templates/native-executable/package.json +2 -2
  25. package/templates/web-react-rspack/package.json +3 -3
  26. package/templates/web-react-vite/package.json +2 -2
  27. package/templates/web-svelte-vite/package.json +2 -2
  28. package/templates/web-vanilla/package.json +2 -2
  29. package/templates/web-vue-vite/package.json +2 -2
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "create-crossbind",
3
- "version": "2.0.0-beta.64",
3
+ "version": "2.0.0-beta.65",
4
4
  "description": "Create crossbind Applications",
5
5
  "homepage": "https://github.com/crossbind/crossbind/tree/main/tooling/create-app#readme",
6
6
  "repository": {
package/src/manifest.json CHANGED
@@ -59,6 +59,14 @@
59
59
  "nativeFolders": false,
60
60
  "keepLockfile": true
61
61
  },
62
+ {
63
+ "key": "desktop-app",
64
+ "group": "Desktop",
65
+ "framework": null,
66
+ "label": "App",
67
+ "kind": "app",
68
+ "source": "examples/desktop-app"
69
+ },
62
70
  {
63
71
  "key": "desktop-electron",
64
72
  "group": "Desktop",
@@ -12,11 +12,11 @@
12
12
  "e2e:prod": "node e2e/run.mjs"
13
13
  },
14
14
  "dependencies": {
15
- "@crossbind/example-lib-prebuilt-matrix": "^2.0.0-beta.64"
15
+ "@crossbind/example-lib-prebuilt-matrix": "^2.0.0-beta.65"
16
16
  },
17
17
  "devDependencies": {
18
- "@crossbind/core-embind-napi": "^2.0.0-beta.64",
19
- "crossbind": "^2.0.0-beta.64"
18
+ "@crossbind/core-embind-napi": "^2.0.0-beta.65",
19
+ "crossbind": "^2.0.0-beta.65"
20
20
  },
21
21
  "keywords": [
22
22
  "crossbind-sample",
@@ -11,7 +11,7 @@
11
11
  "e2e:prod": "node e2e/run.mjs"
12
12
  },
13
13
  "dependencies": {
14
- "@crossbind/example-lib-prebuilt-matrix": "^2.0.0-beta.64"
14
+ "@crossbind/example-lib-prebuilt-matrix": "^2.0.0-beta.65"
15
15
  },
16
16
  "keywords": [
17
17
  "crossbind-sample",
@@ -10,10 +10,10 @@
10
10
  "build": "crossbind build -p wasm -a wasm32 -r st -e node -b release"
11
11
  },
12
12
  "dependencies": {
13
- "@crossbind/example-lib-prebuilt-matrix": "^2.0.0-beta.64"
13
+ "@crossbind/example-lib-prebuilt-matrix": "^2.0.0-beta.65"
14
14
  },
15
15
  "devDependencies": {
16
- "crossbind": "^2.0.0-beta.64"
16
+ "crossbind": "^2.0.0-beta.65"
17
17
  },
18
18
  "keywords": [
19
19
  "crossbind-sample",
@@ -23,7 +23,7 @@
23
23
  ],
24
24
  "dependencies": {},
25
25
  "devDependencies": {
26
- "crossbind": "^2.0.0-beta.64",
26
+ "crossbind": "^2.0.0-beta.65",
27
27
  "wrangler": "^4.136.3",
28
28
  "@playwright/test": "^1.63.0"
29
29
  },
@@ -0,0 +1,102 @@
1
+ # @crossbind/example-desktop-app
2
+ **crossbind desktop app sample**
3
+
4
+ A macOS, Linux, Windows, iOS and Android app whose page runs in the system webview and whose C++ runs natively in the
5
+ app: crossbind builds `src/native` and the matrix library into the app's own host, and the page calls it with the same
6
+ `initNative()` and awaited calls as a web build that runs its module in a worker. There is no Node.js and no browser
7
+ engine in the app; the page uses the system's own, WKWebView on macOS and iOS, WebKitGTK on Linux, WebView2 on
8
+ Windows and Android System WebView on Android.
9
+
10
+ # Getting Started
11
+
12
+ >**Note**: Make sure you have completed the [crossbind - Prerequisites](https://crossbind.dev/docs/guide/getting-started/prerequisites) instructions.
13
+ Apps build on macOS with Xcode's command line tools, iOS apps with Xcode and its iOS platform, and Linux, Windows and
14
+ Android apps in crossbind's linux, windows and android-app images, which carry everything they build with; the
15
+ bindings are generated in Docker. A macOS or iOS build fetches React Native's Hermes once into `~/.crossbind/hermes`.
16
+
17
+ ## Setup
18
+
19
+ Install the dependencies:
20
+
21
+ ```bash
22
+ pnpm install
23
+ ```
24
+
25
+ Inside the crossbind repository, build the library's archives first:
26
+ `pnpm --filter @crossbind/example-lib-prebuilt-matrix run build:desktop`, `run build:ios` for the iOS app and
27
+ `run build:android` for the Android app.
28
+
29
+ ## Get Started
30
+
31
+ ```bash
32
+ pnpm dev
33
+ ```
34
+
35
+ opens the app on Vite's dev server: edits to the page reload it, edits to the C++ rebuild the app and open it again,
36
+ and the page's console shows in the terminal. Closing the window ends the session.
37
+
38
+ ## Build
39
+
40
+ ```bash
41
+ pnpm build
42
+ ```
43
+
44
+ writes the app to `dist/crossbind-example-desktop-app.app`, signed ad hoc, so it opens on the Mac that built it. On
45
+ Linux it writes `dist/crossbind-example-desktop-app-linux-<arch>/` and the same as a `.tar.gz`, which runs where
46
+ WebKitGTK 4.1 is installed (`libwebkit2gtk-4.1-0` on Debian and Ubuntu).
47
+
48
+ ```bash
49
+ pnpm build:linux
50
+ ```
51
+
52
+ writes the Linux app for x64 and arm64, on a Mac as well.
53
+
54
+ ```bash
55
+ pnpm build:windows
56
+ ```
57
+
58
+ writes the Windows app for x64 and arm64, on a Mac or Linux as well: `dist/crossbind-example-desktop-app-win32-<arch>/`
59
+ and the same as a `.zip`, which runs where the WebView2 Runtime is installed, as on Windows 11.
60
+
61
+ ## iOS
62
+
63
+ ```bash
64
+ pnpm dev:ios
65
+ ```
66
+
67
+ opens the app in the iOS Simulator on Vite's dev server, as `pnpm dev` does on the desktop; ending the app in the
68
+ Simulator ends the session.
69
+
70
+ ```bash
71
+ pnpm build:ios
72
+ ```
73
+
74
+ writes the app's Xcode project to `dist/crossbind-example-desktop-app-ios/`. Open it in Xcode to run the app on an
75
+ iPhone, once `crossbind.config.js` names the app's bundle id and Apple team (`app: { id, team }`).
76
+
77
+ ## Android
78
+
79
+ ```bash
80
+ pnpm dev:android
81
+ ```
82
+
83
+ opens the app on the attached Android device or the running emulator on Vite's dev server, as `pnpm dev` does on the
84
+ desktop; ending the app ends the session. Start an emulator first, in Android Studio's Device Manager, or connect a
85
+ phone with USB debugging on. crossbind reaches it with the machine's `adb` (`brew install --cask
86
+ android-platform-tools` on macOS, `sudo apt install adb` on Debian and Ubuntu, or Android Studio's).
87
+
88
+ ```bash
89
+ pnpm build:android
90
+ ```
91
+
92
+ writes `dist/crossbind-example-desktop-app-android.apk`, signed with this machine's debug key, which `adb install`
93
+ puts on a device. With `CROSSBIND_ANDROID_KEYSTORE`, `CROSSBIND_ANDROID_KEY_ALIAS` and
94
+ `CROSSBIND_ANDROID_KEYSTORE_PASSWORD` set to Google Play's upload key, the APK is signed with it and
95
+ `dist/crossbind-example-desktop-app-android.aab` is the bundle Google Play takes. Gradle runs in Docker, so no JDK or
96
+ Android SDK is needed; the Gradle project it builds stays in `dist/crossbind-example-desktop-app-android/`.
97
+
98
+ ## Test
99
+
100
+ `pnpm run e2e:prod` opens the built app and waits for the page to log the result; with `CROSSBIND_APP_PLATFORM=ios` it
101
+ builds the Xcode project for the Simulator and opens the app there, and with `android` it builds the Gradle project as
102
+ a debug APK and opens the app on the attached device.
@@ -0,0 +1,3 @@
1
+ node_modules
2
+ .crossbind
3
+ dist
@@ -0,0 +1,17 @@
1
+ import Matrix from '@crossbind/example-lib-prebuilt-matrix/crossbind.config.js';
2
+
3
+ export default {
4
+ general: {
5
+ name: 'crossbind-example-desktop-app',
6
+ },
7
+ dependencies: [
8
+ Matrix,
9
+ ],
10
+ // The page runs in the system webview and the C++ in the app's own process.
11
+ target: {
12
+ runtimeEnv: 'app',
13
+ },
14
+ paths: {
15
+ config: import.meta.url,
16
+ },
17
+ };
@@ -0,0 +1,60 @@
1
+ import { spawn } from 'node:child_process';
2
+ import { existsSync } from 'node:fs';
3
+ import { resolve } from 'node:path';
4
+ import config from '../crossbind.config.js';
5
+
6
+ // Opens the app `pnpm build` made and waits for its page to log what the C++ returned. With CROSSBIND_APP_PLATFORM=ios
7
+ // the app is the Xcode project `pnpm build:ios` made, built and opened in the Simulator, and with android the Gradle
8
+ // project `pnpm build:android` made, built and opened on the attached device.
9
+ // A cold Simulator on a CI runner can take over a minute to show the page.
10
+ const RUN_TIMEOUT_MS = 300000;
11
+ const EXPECTED = 'Matrix multiplier with c++ => J₃ * (2*J₃) = 6*J₃';
12
+
13
+ const root = resolve(import.meta.dirname, '..');
14
+ const { name } = config.general;
15
+ const env = { CROSSBIND_APP_CONSOLE: '1' };
16
+
17
+ function missing(file) {
18
+ console.error(`FAIL: ${file} is missing - run \`pnpm build\` first.`);
19
+ process.exit(1);
20
+ }
21
+
22
+ async function open() {
23
+ const platform = process.env.CROSSBIND_APP_PLATFORM;
24
+ if (platform) {
25
+ const project = `${root}/dist/${name}-${platform}`;
26
+ if (!existsSync(project)) missing(project);
27
+ const { buildForSimulator, openInSimulator, buildApk, openOnDevice } = await import('crossbind');
28
+ return platform === 'ios' ? openInSimulator(buildForSimulator(project), { env }) : openOnDevice(buildApk(project), { env });
29
+ }
30
+ // A macOS app is a bundle; a Linux or Windows app a directory named after its platform and arch.
31
+ const executable = process.platform === 'darwin'
32
+ ? `${root}/dist/${name}.app/Contents/MacOS/${name}`
33
+ : `${root}/dist/${name}-${process.platform}-${process.arch}/${name}${process.platform === 'win32' ? '.exe' : ''}`;
34
+ if (!existsSync(executable)) missing(executable);
35
+ return { child: spawn(executable, [], { env: { ...process.env, ...env } }), close: () => {} };
36
+ }
37
+
38
+ let out = '';
39
+ const { child: app, close } = await open();
40
+
41
+ function finish(problem) {
42
+ clearTimeout(timer);
43
+ close();
44
+ app.kill();
45
+ if (problem) {
46
+ console.error(`FAIL: ${problem}:\n${out}`);
47
+ process.exit(1);
48
+ }
49
+ console.log(`ok: ${EXPECTED}`);
50
+ process.exit(0);
51
+ }
52
+
53
+ const timer = setTimeout(() => finish('the page did not log the result in time'), RUN_TIMEOUT_MS);
54
+ const read = (chunk) => {
55
+ out += chunk;
56
+ if (out.includes(EXPECTED)) finish();
57
+ };
58
+ app.stdout.on('data', read);
59
+ app.stderr.on('data', read);
60
+ app.on('exit', (code) => finish(`the app exited with ${code} before the page logged the result`));
@@ -0,0 +1,11 @@
1
+ <!doctype html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="utf-8">
5
+ <title>crossbind desktop app sample</title>
6
+ </head>
7
+ <body>
8
+ <p>Matrix multiplier with c++ =&gt; <span id="cppMessage">loading ...</span></p>
9
+ <script type="module" src="/src/main.js"></script>
10
+ </body>
11
+ </html>
@@ -0,0 +1,38 @@
1
+ {
2
+ "name": "@crossbind/example-desktop-app",
3
+ "private": true,
4
+ "version": "0.0.0",
5
+ "description": "crossbind - desktop app sample",
6
+ "homepage": "https://github.com/crossbind/crossbind/tree/main/examples/desktop-app#readme",
7
+ "repository": "https://github.com/crossbind/crossbind.git",
8
+ "license": "MIT",
9
+ "type": "module",
10
+ "scripts": {
11
+ "dev": "crossbind app dev",
12
+ "dev:ios": "crossbind app dev -p ios",
13
+ "dev:android": "crossbind app dev -p android",
14
+ "build": "crossbind app build",
15
+ "build:linux": "crossbind app build -p linux",
16
+ "build:windows": "crossbind app build -p windows",
17
+ "build:ios": "crossbind app build -p ios",
18
+ "build:android": "crossbind app build -p android",
19
+ "e2e:prod": "node e2e/run.mjs"
20
+ },
21
+ "dependencies": {
22
+ "@crossbind/example-lib-prebuilt-matrix": "^2.0.0-beta.65"
23
+ },
24
+ "devDependencies": {
25
+ "@crossbind/core-app-host": "^2.0.0-beta.65",
26
+ "@crossbind/plugin-vite": "^2.0.0-beta.65",
27
+ "crossbind": "^2.0.0-beta.65",
28
+ "vite": "^8.2.1"
29
+ },
30
+ "keywords": [
31
+ "crossbind-sample",
32
+ "desktop",
33
+ "app",
34
+ "webview",
35
+ "c++",
36
+ "vite"
37
+ ]
38
+ }
@@ -0,0 +1,15 @@
1
+ import { initNative, Native } from './native/native.h';
2
+
3
+ const message = document.querySelector('#cppMessage');
4
+
5
+ initNative()
6
+ .then(() => Native.sample())
7
+ .then((result) => {
8
+ message.textContent = result;
9
+ // During development the page's console shows in the terminal that runs `pnpm dev`.
10
+ console.log(`Matrix multiplier with c++ => ${result}`);
11
+ })
12
+ .catch((error) => {
13
+ message.textContent = error.message;
14
+ console.error(error);
15
+ });
@@ -0,0 +1,9 @@
1
+ #include "native.h"
2
+ #include <Matrix.h>
3
+
4
+ std::string Native::sample() {
5
+ auto firstMatrix = std::make_shared<Matrix>(9, 1);
6
+ auto secondMatrix = std::make_shared<Matrix>(9, 2);
7
+ auto resultStr = std::to_string(firstMatrix->multiple(secondMatrix)->get(0));
8
+ return "J₃ * (2*J₃) = " + resultStr + "*J₃";
9
+ }
@@ -0,0 +1,12 @@
1
+ #ifndef _NATIVE_H
2
+ #define _NATIVE_H
3
+
4
+ #include <string>
5
+ #include <memory>
6
+
7
+ class Native {
8
+ public:
9
+ static std::string sample();
10
+ };
11
+
12
+ #endif
@@ -0,0 +1,6 @@
1
+ import { defineConfig } from 'vite';
2
+ import viteCrossbindPlugin from '@crossbind/plugin-vite';
3
+
4
+ export default defineConfig({
5
+ plugins: [viteCrossbindPlugin()],
6
+ });
@@ -16,10 +16,10 @@
16
16
  "e2e:prod": "electron-builder --dir && playwright test --project=packaged"
17
17
  },
18
18
  "devDependencies": {
19
- "@crossbind/core-embind-napi": "^2.0.0-beta.64",
20
- "@crossbind/example-lib-prebuilt-matrix": "^2.0.0-beta.64",
19
+ "@crossbind/core-embind-napi": "^2.0.0-beta.65",
20
+ "@crossbind/example-lib-prebuilt-matrix": "^2.0.0-beta.65",
21
21
  "@playwright/test": "^1.63.0",
22
- "crossbind": "^2.0.0-beta.64",
22
+ "crossbind": "^2.0.0-beta.65",
23
23
  "electron": "^44.5.1",
24
24
  "electron-builder": "^26.15.3"
25
25
  },
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@crossbind/example-lib-cmake",
3
- "version": "2.0.0-beta.64",
3
+ "version": "2.0.0-beta.65",
4
4
  "description": "crossbind sample library: simple cmake library",
5
5
  "homepage": "https://github.com/crossbind/crossbind/tree/main/examples/lib-cmake#readme",
6
6
  "repository": "https://github.com/crossbind/crossbind.git",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@crossbind/example-lib-prebuilt-matrix",
3
- "version": "2.0.0-beta.64",
3
+ "version": "2.0.0-beta.65",
4
4
  "description": "crossbind sample prebuilt library: matrix multiplier",
5
5
  "homepage": "https://github.com/crossbind/crossbind/tree/main/examples/lib-prebuilt-matrix#readme",
6
6
  "repository": "https://github.com/crossbind/crossbind.git",
@@ -18,7 +18,7 @@
18
18
  "prepublishOnly": "crossbind build"
19
19
  },
20
20
  "devDependencies": {
21
- "crossbind": "^2.0.0-beta.64"
21
+ "crossbind": "^2.0.0-beta.65"
22
22
  },
23
23
  "keywords": [
24
24
  "crossbind-sample",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@crossbind/example-lib-source",
3
- "version": "2.0.0-beta.64",
3
+ "version": "2.0.0-beta.65",
4
4
  "description": "crossbind sample library: simple source library",
5
5
  "homepage": "https://github.com/crossbind/crossbind/tree/main/examples/lib-source#readme",
6
6
  "repository": "https://github.com/crossbind/crossbind.git",
@@ -20,12 +20,12 @@
20
20
  "e2e:android": "pnpm run run:android && pnpm run maestro:android"
21
21
  },
22
22
  "dependencies": {
23
- "@crossbind/core-embind-jsi": "^2.0.0-beta.64",
24
- "@crossbind/plugin-react-native": "^2.0.0-beta.64",
25
- "@crossbind/plugin-react-native-ios-helper": "^2.0.0-beta.64",
26
- "@crossbind/example-lib-prebuilt-matrix": "^2.0.0-beta.64",
27
- "react": "19.3.0",
28
- "react-native": "0.87.1",
23
+ "@crossbind/core-embind-jsi": "^2.0.0-beta.65",
24
+ "@crossbind/plugin-react-native": "^2.0.0-beta.65",
25
+ "@crossbind/plugin-react-native-ios-helper": "^2.0.0-beta.65",
26
+ "@crossbind/example-lib-prebuilt-matrix": "^2.0.0-beta.65",
27
+ "react": "19.3.1",
28
+ "react-native": "0.88.0",
29
29
  "react-native-safe-area-context": "^5.8.0",
30
30
  "hermes-compiler": "250829098.0.17"
31
31
  },
@@ -36,22 +36,22 @@
36
36
  "@react-native-community/cli": "20.2.0",
37
37
  "@react-native-community/cli-platform-android": "20.2.0",
38
38
  "@react-native-community/cli-platform-ios": "20.2.0",
39
- "@react-native/babel-preset": "0.87.1",
40
- "@react-native/codegen": "0.87.1",
41
- "@react-native/eslint-config": "0.87.1",
42
- "@react-native/jest-preset": "0.87.1",
43
- "@react-native/gradle-plugin": "0.87.1",
44
- "@react-native/metro-config": "0.87.1",
45
- "@react-native/typescript-config": "0.87.1",
39
+ "@react-native/babel-preset": "0.88.0",
40
+ "@react-native/codegen": "0.88.0",
41
+ "@react-native/eslint-config": "0.88.0",
42
+ "@react-native/jest-preset": "0.88.0",
43
+ "@react-native/gradle-plugin": "0.88.0",
44
+ "@react-native/metro-config": "0.88.0",
45
+ "@react-native/typescript-config": "0.88.0",
46
46
  "@types/jest": "^29.5.13",
47
47
  "@types/react": "^19.3.0",
48
48
  "@types/react-test-renderer": "^19.3.0",
49
49
  "eslint": "^8.19.0",
50
50
  "jest": "^29.6.3",
51
51
  "prettier": "3.9.10",
52
- "react-test-renderer": "19.3.0",
52
+ "react-test-renderer": "19.3.1",
53
53
  "typescript": "^6.0.3",
54
- "@crossbind/plugin-metro": "^2.0.0-beta.64"
54
+ "@crossbind/plugin-metro": "^2.0.0-beta.65"
55
55
  },
56
56
  "engines": {
57
57
  "node": ">=24"
@@ -9,10 +9,10 @@
9
9
  "version": "0.0.0",
10
10
  "license": "MIT",
11
11
  "dependencies": {
12
- "@crossbind/core-embind-jsi": "2.0.0-beta.63",
13
- "@crossbind/example-lib-prebuilt-matrix": "2.0.0-beta.63",
14
- "@crossbind/plugin-react-native": "2.0.0-beta.63",
15
- "@crossbind/plugin-react-native-ios-helper": "2.0.0-beta.63",
12
+ "@crossbind/core-embind-jsi": "2.0.0-beta.64",
13
+ "@crossbind/example-lib-prebuilt-matrix": "2.0.0-beta.64",
14
+ "@crossbind/plugin-react-native": "2.0.0-beta.64",
15
+ "@crossbind/plugin-react-native-ios-helper": "2.0.0-beta.64",
16
16
  "expo": "~58.0.14",
17
17
  "expo-constants": "~58.0.12",
18
18
  "expo-device": "~58.0.5",
@@ -38,8 +38,8 @@
38
38
  "react-native-worklets": "0.13.0"
39
39
  },
40
40
  "devDependencies": {
41
- "@crossbind/plugin-metro": "2.0.0-beta.63",
42
- "@crossbind/typescript-config": "2.0.0-beta.63",
41
+ "@crossbind/plugin-metro": "2.0.0-beta.64",
42
+ "@crossbind/typescript-config": "2.0.0-beta.64",
43
43
  "@types/react": "~19.3.0",
44
44
  "typescript": "~6.0.3"
45
45
  }
@@ -1135,9 +1135,9 @@
1135
1135
  }
1136
1136
  },
1137
1137
  "node_modules/@crossbind/core-embind-jsi": {
1138
- "version": "2.0.0-beta.63",
1139
- "resolved": "https://registry.npmjs.org/@crossbind/core-embind-jsi/-/core-embind-jsi-2.0.0-beta.63.tgz",
1140
- "integrity": "sha512-AKiXLVzFqCCE6WZNHdGXHMbOoAS/JveS7e0CWTzKGby+pSWnZrtHKR0kScp9yuSLiDCtbxMKbsR8XpQwQanoyg==",
1138
+ "version": "2.0.0-beta.64",
1139
+ "resolved": "https://registry.npmjs.org/@crossbind/core-embind-jsi/-/core-embind-jsi-2.0.0-beta.64.tgz",
1140
+ "integrity": "sha512-PUN1QGVm4y6bf4ZVWaGrwrFsLIZ0CZM6t7KQu5Kw8KjZ3H8HCjEvtIZ+YHkzsutrWImgX6yE5f6YaY9RvSFTMQ==",
1141
1141
  "license": "MIT",
1142
1142
  "peerDependencies": {
1143
1143
  "@babel/runtime": "*",
@@ -1153,26 +1153,26 @@
1153
1153
  }
1154
1154
  },
1155
1155
  "node_modules/@crossbind/core-embind-rust": {
1156
- "version": "2.0.0-beta.63",
1157
- "resolved": "https://registry.npmjs.org/@crossbind/core-embind-rust/-/core-embind-rust-2.0.0-beta.63.tgz",
1158
- "integrity": "sha512-pn9zjGwTgv89e/6+7w1qwZoOeERieo0j/0CXTGILX9JgLA+LHOEvmV41TMGZbuPS98K6klYQOgT5dMjyz3mA+Q==",
1156
+ "version": "2.0.0-beta.64",
1157
+ "resolved": "https://registry.npmjs.org/@crossbind/core-embind-rust/-/core-embind-rust-2.0.0-beta.64.tgz",
1158
+ "integrity": "sha512-QNzBaBya2zHzv7UR9ZD/P3s2fYKwDwf9fMr8BMZLwfaqLZ/z194pdQpfof7Rr6TcYgogkiyii3jjW1RHdMsrzg==",
1159
1159
  "license": "MIT"
1160
1160
  },
1161
1161
  "node_modules/@crossbind/example-lib-prebuilt-matrix": {
1162
- "version": "2.0.0-beta.63",
1163
- "resolved": "https://registry.npmjs.org/@crossbind/example-lib-prebuilt-matrix/-/example-lib-prebuilt-matrix-2.0.0-beta.63.tgz",
1164
- "integrity": "sha512-I+Lq6d7SbE0aeyQGibr9zFZm5QwBPPe7HkEF101kjJQAGHt1BA3Hm+5iT6X6DKpQc4Qdv5HKY184W6smwnRIKw==",
1162
+ "version": "2.0.0-beta.64",
1163
+ "resolved": "https://registry.npmjs.org/@crossbind/example-lib-prebuilt-matrix/-/example-lib-prebuilt-matrix-2.0.0-beta.64.tgz",
1164
+ "integrity": "sha512-aSaS0wEMJINzKMWP3apt5YuQoGq4KeOh4wjBJN2uoh+SalaHsS4Ry9q4wepf1alNorHTKj++ephKYog2QnttQg==",
1165
1165
  "license": "MIT"
1166
1166
  },
1167
1167
  "node_modules/@crossbind/plugin-metro": {
1168
- "version": "2.0.0-beta.63",
1169
- "resolved": "https://registry.npmjs.org/@crossbind/plugin-metro/-/plugin-metro-2.0.0-beta.63.tgz",
1170
- "integrity": "sha512-VrCt6al9+bVoh10/pkrpHXIZHQRBQaHd9m8w3L98FKx7k71XLf8KkLpPOh8PVF4a8zUtq7dMkvhBWsDGD/aIEg==",
1168
+ "version": "2.0.0-beta.64",
1169
+ "resolved": "https://registry.npmjs.org/@crossbind/plugin-metro/-/plugin-metro-2.0.0-beta.64.tgz",
1170
+ "integrity": "sha512-3diPMLq5dwU3fgf+UnYNMPHAqV3+KnKsVzpuOjro26bcQoMJnGkdjZhzRJV634jej0zOHx2vFTdESawe2gxNTQ==",
1171
1171
  "license": "MIT",
1172
1172
  "dependencies": {
1173
1173
  "@babel/runtime": "^7.29.7",
1174
1174
  "@react-native/metro-babel-transformer": "^0.87.1",
1175
- "crossbind": "^2.0.0-beta.63",
1175
+ "crossbind": "^2.0.0-beta.64",
1176
1176
  "upath": "^3.0.8"
1177
1177
  },
1178
1178
  "bin": {
@@ -1184,16 +1184,16 @@
1184
1184
  }
1185
1185
  },
1186
1186
  "node_modules/@crossbind/plugin-react-native": {
1187
- "version": "2.0.0-beta.63",
1188
- "resolved": "https://registry.npmjs.org/@crossbind/plugin-react-native/-/plugin-react-native-2.0.0-beta.63.tgz",
1189
- "integrity": "sha512-YPda8D4wEtzb0DKOh3PwsVFHrhJC2ph4L6YERurW36PC64i40CBMi8XTKjC5WV8Rs4ZMkzS+p0XfcBqI+UjHFw==",
1187
+ "version": "2.0.0-beta.64",
1188
+ "resolved": "https://registry.npmjs.org/@crossbind/plugin-react-native/-/plugin-react-native-2.0.0-beta.64.tgz",
1189
+ "integrity": "sha512-VYBrcjbsKQbIAryDQpLOLa9s3FuHVq4o2W2GAKcMLwNke7vt518sClyYqAizX0TNgxnDdVAbeOQn1TqNqwZG4w==",
1190
1190
  "license": "MIT",
1191
1191
  "dependencies": {
1192
1192
  "@babel/runtime": "^7.29.7",
1193
- "@crossbind/core-embind-jsi": "^2.0.0-beta.63",
1194
- "@crossbind/core-embind-rust": "^2.0.0-beta.63",
1195
- "@crossbind/plugin-metro": "^2.0.0-beta.63",
1196
- "crossbind": "^2.0.0-beta.63",
1193
+ "@crossbind/core-embind-jsi": "^2.0.0-beta.64",
1194
+ "@crossbind/core-embind-rust": "^2.0.0-beta.64",
1195
+ "@crossbind/plugin-metro": "^2.0.0-beta.64",
1196
+ "crossbind": "^2.0.0-beta.64",
1197
1197
  "upath": "^3.0.8"
1198
1198
  },
1199
1199
  "peerDependencies": {
@@ -1208,15 +1208,15 @@
1208
1208
  }
1209
1209
  },
1210
1210
  "node_modules/@crossbind/plugin-react-native-ios-helper": {
1211
- "version": "2.0.0-beta.63",
1212
- "resolved": "https://registry.npmjs.org/@crossbind/plugin-react-native-ios-helper/-/plugin-react-native-ios-helper-2.0.0-beta.63.tgz",
1213
- "integrity": "sha512-R316Mv9CXgtSirUiBvv+x1oP1kHlPe88i6x+hJyMnKH797OqtNTUUqZ60zwKDpKBp1YTA7bKt+g/EwMuf5RSOg==",
1211
+ "version": "2.0.0-beta.64",
1212
+ "resolved": "https://registry.npmjs.org/@crossbind/plugin-react-native-ios-helper/-/plugin-react-native-ios-helper-2.0.0-beta.64.tgz",
1213
+ "integrity": "sha512-HtjbyX5bf1+OSuG4LPASyBd2Br27TYBI+ctSXk7WFYoDi5Buk82VyMx/DY44DmoUaEwVBNM/yM0ugh+4pV8Ttg==",
1214
1214
  "license": "MIT"
1215
1215
  },
1216
1216
  "node_modules/@crossbind/typescript-config": {
1217
- "version": "2.0.0-beta.63",
1218
- "resolved": "https://registry.npmjs.org/@crossbind/typescript-config/-/typescript-config-2.0.0-beta.63.tgz",
1219
- "integrity": "sha512-rChV9RlG2eXeUGeUVL7xkTrG37dmoso+xBkiREJTS05eWtHe9BU64NnYjtb0To43i1Y4KYXdfNwVoEz8tOknew==",
1217
+ "version": "2.0.0-beta.64",
1218
+ "resolved": "https://registry.npmjs.org/@crossbind/typescript-config/-/typescript-config-2.0.0-beta.64.tgz",
1219
+ "integrity": "sha512-L1wT4uBXNchD4bwUpyAPPBzQtzw/XdO56Ohd6bjmU8NPMfeDp3KQ2G3aAGJ8r/ggk48I5ps0+m6n/G43f+w9gg==",
1220
1220
  "dev": true,
1221
1221
  "license": "MIT"
1222
1222
  },
@@ -4166,9 +4166,9 @@
4166
4166
  }
4167
4167
  },
4168
4168
  "node_modules/crossbind": {
4169
- "version": "2.0.0-beta.63",
4170
- "resolved": "https://registry.npmjs.org/crossbind/-/crossbind-2.0.0-beta.63.tgz",
4171
- "integrity": "sha512-5HHU0OwbgXO0JL5t5ZSxXsSbNsKKE05sk1NshLDbi2eBJNXR6q89Jc9qk8rUa6r9WOSbfA+U1WcOKplDp6rbkA==",
4169
+ "version": "2.0.0-beta.64",
4170
+ "resolved": "https://registry.npmjs.org/crossbind/-/crossbind-2.0.0-beta.64.tgz",
4171
+ "integrity": "sha512-NdTwEMZzpR2BuKqC5opLERnPk4HftRfdYQ+82dZKPFK8oDaVZM0RT7bqCuci5RWQeyI+r6uZI6UXT0FII3xw+Q==",
4172
4172
  "license": "MIT",
4173
4173
  "dependencies": {
4174
4174
  "@rollup/plugin-commonjs": "^29.0.3",
@@ -4186,7 +4186,7 @@
4186
4186
  "upath": "^3.0.8"
4187
4187
  },
4188
4188
  "bin": {
4189
- "crossbind": "src/bin.js"
4189
+ "crossbind": "src/cli.js"
4190
4190
  },
4191
4191
  "engines": {
4192
4192
  "node": ">=24"
@@ -23,10 +23,10 @@
23
23
  "e2e:android": "npm run run:android && npm run maestro:android"
24
24
  },
25
25
  "dependencies": {
26
- "@crossbind/core-embind-jsi": "2.0.0-beta.64",
27
- "@crossbind/plugin-react-native": "2.0.0-beta.64",
28
- "@crossbind/plugin-react-native-ios-helper": "2.0.0-beta.64",
29
- "@crossbind/example-lib-prebuilt-matrix": "2.0.0-beta.64",
26
+ "@crossbind/core-embind-jsi": "2.0.0-beta.65",
27
+ "@crossbind/plugin-react-native": "2.0.0-beta.65",
28
+ "@crossbind/plugin-react-native-ios-helper": "2.0.0-beta.65",
29
+ "@crossbind/example-lib-prebuilt-matrix": "2.0.0-beta.65",
30
30
  "hermes-compiler": "260318099.0.4",
31
31
  "expo": "~58.0.14",
32
32
  "expo-constants": "~58.0.12",
@@ -54,8 +54,8 @@
54
54
  "devDependencies": {
55
55
  "@types/react": "~19.3.0",
56
56
  "typescript": "~6.0.3",
57
- "@crossbind/typescript-config": "2.0.0-beta.64",
58
- "@crossbind/plugin-metro": "2.0.0-beta.64"
57
+ "@crossbind/typescript-config": "2.0.0-beta.65",
58
+ "@crossbind/plugin-metro": "2.0.0-beta.65"
59
59
  },
60
60
  "overrides": {
61
61
  "uuid": "11.1.1",
@@ -12,10 +12,10 @@
12
12
  "e2e:prod": "node e2e/run.mjs"
13
13
  },
14
14
  "dependencies": {
15
- "@crossbind/example-lib-prebuilt-matrix": "^2.0.0-beta.64"
15
+ "@crossbind/example-lib-prebuilt-matrix": "^2.0.0-beta.65"
16
16
  },
17
17
  "devDependencies": {
18
- "crossbind": "^2.0.0-beta.64"
18
+ "crossbind": "^2.0.0-beta.65"
19
19
  },
20
20
  "keywords": [
21
21
  "crossbind-sample",
@@ -16,7 +16,7 @@
16
16
  "dependencies": {
17
17
  "react": "^19.3.0",
18
18
  "react-dom": "^19.3.0",
19
- "@crossbind/example-lib-prebuilt-matrix": "^2.0.0-beta.64"
19
+ "@crossbind/example-lib-prebuilt-matrix": "^2.0.0-beta.65"
20
20
  },
21
21
  "devDependencies": {
22
22
  "@rspack/plugin-react-refresh": "^2.0.2",
@@ -29,8 +29,8 @@
29
29
  "react-refresh": "^0.19.0",
30
30
  "@playwright/test": "^1.63.0",
31
31
  "serve": "^14.2.6",
32
- "@crossbind/plugin-webpack": "^2.0.0-beta.64",
33
- "@crossbind/plugin-webpack-loader": "^2.0.0-beta.64"
32
+ "@crossbind/plugin-webpack": "^2.0.0-beta.65",
33
+ "@crossbind/plugin-webpack-loader": "^2.0.0-beta.65"
34
34
  },
35
35
  "keywords": [
36
36
  "crossbind-sample",
@@ -18,7 +18,7 @@
18
18
  "dependencies": {
19
19
  "react": "^19.3.0",
20
20
  "react-dom": "^19.3.0",
21
- "@crossbind/example-lib-prebuilt-matrix": "^2.0.0-beta.64"
21
+ "@crossbind/example-lib-prebuilt-matrix": "^2.0.0-beta.65"
22
22
  },
23
23
  "devDependencies": {
24
24
  "@eslint/js": "^10.0.1",
@@ -31,7 +31,7 @@
31
31
  "globals": "^17.12.0",
32
32
  "vite": "^8.2.1",
33
33
  "@playwright/test": "^1.63.0",
34
- "@crossbind/plugin-vite": "^2.0.0-beta.64"
34
+ "@crossbind/plugin-vite": "^2.0.0-beta.65"
35
35
  },
36
36
  "keywords": [
37
37
  "crossbind-sample",
@@ -15,14 +15,14 @@
15
15
  "e2e:prod": "playwright test --config playwright.prod.config.cjs"
16
16
  },
17
17
  "dependencies": {
18
- "@crossbind/example-lib-prebuilt-matrix": "^2.0.0-beta.64"
18
+ "@crossbind/example-lib-prebuilt-matrix": "^2.0.0-beta.65"
19
19
  },
20
20
  "devDependencies": {
21
21
  "@sveltejs/vite-plugin-svelte": "^7.3.0",
22
22
  "svelte": "^5.57.1",
23
23
  "vite": "^8.2.1",
24
24
  "@playwright/test": "^1.63.0",
25
- "@crossbind/plugin-vite": "^2.0.0-beta.64"
25
+ "@crossbind/plugin-vite": "^2.0.0-beta.65"
26
26
  },
27
27
  "keywords": [
28
28
  "crossbind-sample",
@@ -12,10 +12,10 @@
12
12
  "e2e:prod": "playwright test --config playwright.prod.config.cjs"
13
13
  },
14
14
  "dependencies": {
15
- "@crossbind/example-lib-prebuilt-matrix": "^2.0.0-beta.64"
15
+ "@crossbind/example-lib-prebuilt-matrix": "^2.0.0-beta.65"
16
16
  },
17
17
  "devDependencies": {
18
- "crossbind": "^2.0.0-beta.64",
18
+ "crossbind": "^2.0.0-beta.65",
19
19
  "serve": "^14.2.6",
20
20
  "@playwright/test": "^1.63.0"
21
21
  },
@@ -16,13 +16,13 @@
16
16
  },
17
17
  "dependencies": {
18
18
  "vue": "^3.5.43",
19
- "@crossbind/example-lib-prebuilt-matrix": "^2.0.0-beta.64"
19
+ "@crossbind/example-lib-prebuilt-matrix": "^2.0.0-beta.65"
20
20
  },
21
21
  "devDependencies": {
22
22
  "@vitejs/plugin-vue": "^6.0.9",
23
23
  "vite": "^8.2.1",
24
24
  "@playwright/test": "^1.63.0",
25
- "@crossbind/plugin-vite": "^2.0.0-beta.64"
25
+ "@crossbind/plugin-vite": "^2.0.0-beta.65"
26
26
  },
27
27
  "keywords": [
28
28
  "crossbind-sample",