diff --git a/.github/workflows/check.yml b/.github/workflows/check.yml index c9708b2e..bace33bf 100644 --- a/.github/workflows/check.yml +++ b/.github/workflows/check.yml @@ -1,3 +1,5 @@ +name: Check + on: push: branches: @@ -10,6 +12,7 @@ concurrency: jobs: lint: + name: Lint runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 @@ -18,32 +21,13 @@ jobs: node-version: lts/jod - run: npm ci - run: npm run lint - test-simple: - name: Run tests which doesn't require MacOS - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - uses: actions/setup-node@v4 - with: - node-version: lts/jod - - run: npm ci - - run: npm run build - - run: npm test --workspace gyp-to-cmake --workspace cmake-rn --workspace react-native-node-api - test-windows: - name: Run tests on Windows - runs-on: windows-latest - steps: - - uses: actions/checkout@v4 - - uses: actions/setup-node@v4 - with: - node-version: lts/jod - - run: npm ci - - run: npm run build - - run: npm test --workspace gyp-to-cmake --workspace cmake-rn --workspace react-native-node-api - - test-macos: - name: Run tests which requires MacOS - runs-on: macos-latest + test: + strategy: + fail-fast: false + matrix: + runner: [ubuntu-latest, windows-latest, macos-latest] + name: Test (${{ matrix.runner }}) + runs-on: ${{ matrix.runner }} steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 @@ -58,9 +42,7 @@ jobs: uses: android-actions/setup-android@v3 # Version here should match the one in React Native template and packages/cmake-rn/src/cli.ts - run: sdkmanager --install "ndk;27.1.12297006" + - run: rustup target add x86_64-linux-android aarch64-linux-android aarch64-apple-ios-sim - run: npm ci - - run: npm run build - - run: npm run copy-node-api-headers --workspace react-native-node-api - - run: npm run build-weak-node-api --workspace react-native-node-api - - run: npm run generate-weak-node-api-injector --workspace react-native-node-api - - run: npm test --workspace @react-native-node-api/node-addon-examples + - run: npm run bootstrap + - run: npm test diff --git a/package-lock.json b/package-lock.json index 71abcb99..1c72b7dd 100644 --- a/package-lock.json +++ b/package-lock.json @@ -7,8 +7,13 @@ "name": "@react-native-node-api/root", "license": "MIT", "workspaces": [ - "apps/*", - "packages/*" + "apps/test-app", + "packages/gyp-to-cmake", + "packages/cmake-rn", + "packages/ferric", + "packages/host", + "packages/node-addon-examples", + "packages/ferric-example" ], "devDependencies": { "@eslint/js": "^9.19.0", @@ -3372,15 +3377,15 @@ } }, "node_modules/@napi-rs/cli": { - "version": "3.0.0-alpha.80", - "resolved": "https://registry.npmjs.org/@napi-rs/cli/-/cli-3.0.0-alpha.80.tgz", - "integrity": "sha512-wgzLg9ZBOHJ4NKhw6B1uFtpYKOLiQQ6/kSNJEpjylCvcMyuS/TtBX3L3lFsA9B1AxWFhnVj9yvBWiuDXpleGRg==", + "version": "3.0.0-alpha.89", + "resolved": "https://registry.npmjs.org/@napi-rs/cli/-/cli-3.0.0-alpha.89.tgz", + "integrity": "sha512-Xi/B/unPVZJx12Qmj9+Z3+vfgmGdhp2tjtvH1VFjC6VrToh/i1fOBSv77j9WhYYWayFGhIit7nLcxQWxigXr8A==", "license": "MIT", "dependencies": { "@inquirer/prompts": "^7.4.0", "@napi-rs/cross-toolchain": "^0.0.19", "@napi-rs/wasm-tools": "^0.0.3", - "@octokit/rest": "^21.1.1", + "@octokit/rest": "^22.0.0", "clipanion": "^4.0.0-rc.4", "colorette": "^2.0.20", "debug": "^4.4.0", @@ -4333,187 +4338,157 @@ } }, "node_modules/@octokit/auth-token": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-5.1.2.tgz", - "integrity": "sha512-JcQDsBdg49Yky2w2ld20IHAlwr8d/d8N6NiOXbtuoPCqzbsiJgF633mVUw3x4mo0H5ypataQIX7SFu3yy44Mpw==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-6.0.0.tgz", + "integrity": "sha512-P4YJBPdPSpWTQ1NU4XYdvHvXJJDxM6YwpS0FZHRgP7YFkdVxsWcpWGy/NVqlAA7PcPCnMacXlRm1y2PFZRWL/w==", "license": "MIT", "engines": { - "node": ">= 18" + "node": ">= 20" } }, "node_modules/@octokit/core": { - "version": "6.1.5", - "resolved": "https://registry.npmjs.org/@octokit/core/-/core-6.1.5.tgz", - "integrity": "sha512-vvmsN0r7rguA+FySiCsbaTTobSftpIDIpPW81trAmsv9TGxg3YCujAxRYp/Uy8xmDgYCzzgulG62H7KYUFmeIg==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@octokit/core/-/core-7.0.2.tgz", + "integrity": "sha512-ODsoD39Lq6vR6aBgvjTnA3nZGliknKboc9Gtxr7E4WDNqY24MxANKcuDQSF0jzapvGb3KWOEDrKfve4HoWGK+g==", "license": "MIT", "dependencies": { - "@octokit/auth-token": "^5.0.0", - "@octokit/graphql": "^8.2.2", - "@octokit/request": "^9.2.3", - "@octokit/request-error": "^6.1.8", + "@octokit/auth-token": "^6.0.0", + "@octokit/graphql": "^9.0.1", + "@octokit/request": "^10.0.2", + "@octokit/request-error": "^7.0.0", "@octokit/types": "^14.0.0", - "before-after-hook": "^3.0.2", + "before-after-hook": "^4.0.0", "universal-user-agent": "^7.0.0" }, "engines": { - "node": ">= 18" + "node": ">= 20" } }, "node_modules/@octokit/endpoint": { - "version": "10.1.4", - "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-10.1.4.tgz", - "integrity": "sha512-OlYOlZIsfEVZm5HCSR8aSg02T2lbUWOsCQoPKfTXJwDzcHQBrVBGdGXb89dv2Kw2ToZaRtudp8O3ZIYoaOjKlA==", + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-11.0.0.tgz", + "integrity": "sha512-hoYicJZaqISMAI3JfaDr1qMNi48OctWuOih1m80bkYow/ayPw6Jj52tqWJ6GEoFTk1gBqfanSoI1iY99Z5+ekQ==", "license": "MIT", "dependencies": { "@octokit/types": "^14.0.0", "universal-user-agent": "^7.0.2" }, "engines": { - "node": ">= 18" + "node": ">= 20" } }, "node_modules/@octokit/graphql": { - "version": "8.2.2", - "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-8.2.2.tgz", - "integrity": "sha512-Yi8hcoqsrXGdt0yObxbebHXFOiUA+2v3n53epuOg1QUgOB6c4XzvisBNVXJSl8RYA5KrDuSL2yq9Qmqe5N0ryA==", + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-9.0.1.tgz", + "integrity": "sha512-j1nQNU1ZxNFx2ZtKmL4sMrs4egy5h65OMDmSbVyuCzjOcwsHq6EaYjOTGXPQxgfiN8dJ4CriYHk6zF050WEULg==", "license": "MIT", "dependencies": { - "@octokit/request": "^9.2.3", + "@octokit/request": "^10.0.2", "@octokit/types": "^14.0.0", "universal-user-agent": "^7.0.0" }, "engines": { - "node": ">= 18" + "node": ">= 20" } }, "node_modules/@octokit/openapi-types": { - "version": "25.0.0", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-25.0.0.tgz", - "integrity": "sha512-FZvktFu7HfOIJf2BScLKIEYjDsw6RKc7rBJCdvCTfKsVnx2GEB/Nbzjr29DUdb7vQhlzS/j8qDzdditP0OC6aw==", + "version": "25.1.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-25.1.0.tgz", + "integrity": "sha512-idsIggNXUKkk0+BExUn1dQ92sfysJrje03Q0bv0e+KPLrvyqZF8MnBpFz8UNfYDwB3Ie7Z0TByjWfzxt7vseaA==", "license": "MIT" }, "node_modules/@octokit/plugin-paginate-rest": { - "version": "11.6.0", - "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-11.6.0.tgz", - "integrity": "sha512-n5KPteiF7pWKgBIBJSk8qzoZWcUkza2O6A0za97pMGVrGfPdltxrfmfF5GucHYvHGZD8BdaZmmHGz5cX/3gdpw==", + "version": "13.1.0", + "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-13.1.0.tgz", + "integrity": "sha512-16iNOa4rTTjaWtfsPGJcYYL79FJakseX8TQFIPfVuSPC3s5nkS/DSNQPFPc5lJHgEDBWNMxSApHrEymNblhA9w==", "license": "MIT", "dependencies": { - "@octokit/types": "^13.10.0" + "@octokit/types": "^14.1.0" }, "engines": { - "node": ">= 18" + "node": ">= 20" }, "peerDependencies": { "@octokit/core": ">=6" } }, - "node_modules/@octokit/plugin-paginate-rest/node_modules/@octokit/openapi-types": { - "version": "24.2.0", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-24.2.0.tgz", - "integrity": "sha512-9sIH3nSUttelJSXUrmGzl7QUBFul0/mB8HRYl3fOlgHbIWG+WnYDXU3v/2zMtAvuzZ/ed00Ei6on975FhBfzrg==", - "license": "MIT" - }, - "node_modules/@octokit/plugin-paginate-rest/node_modules/@octokit/types": { - "version": "13.10.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-13.10.0.tgz", - "integrity": "sha512-ifLaO34EbbPj0Xgro4G5lP5asESjwHracYJvVaPIyXMuiuXLlhic3S47cBdTb+jfODkTE5YtGCLt3Ay3+J97sA==", - "license": "MIT", - "dependencies": { - "@octokit/openapi-types": "^24.2.0" - } - }, "node_modules/@octokit/plugin-request-log": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-5.3.1.tgz", - "integrity": "sha512-n/lNeCtq+9ofhC15xzmJCNKP2BWTv8Ih2TTy+jatNCCq/gQP/V7rK3fjIfuz0pDWDALO/o/4QY4hyOF6TQQFUw==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-6.0.0.tgz", + "integrity": "sha512-UkOzeEN3W91/eBq9sPZNQ7sUBvYCqYbrrD8gTbBuGtHEuycE4/awMXcYvx6sVYo7LypPhmQwwpUe4Yyu4QZN5Q==", "license": "MIT", "engines": { - "node": ">= 18" + "node": ">= 20" }, "peerDependencies": { "@octokit/core": ">=6" } }, "node_modules/@octokit/plugin-rest-endpoint-methods": { - "version": "13.5.0", - "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-13.5.0.tgz", - "integrity": "sha512-9Pas60Iv9ejO3WlAX3maE1+38c5nqbJXV5GrncEfkndIpZrJ/WPMRd2xYDcPPEt5yzpxcjw9fWNoPhsSGzqKqw==", + "version": "16.0.0", + "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-16.0.0.tgz", + "integrity": "sha512-kJVUQk6/dx/gRNLWUnAWKFs1kVPn5O5CYZyssyEoNYaFedqZxsfYs7DwI3d67hGz4qOwaJ1dpm07hOAD1BXx6g==", "license": "MIT", "dependencies": { - "@octokit/types": "^13.10.0" + "@octokit/types": "^14.1.0" }, "engines": { - "node": ">= 18" + "node": ">= 20" }, "peerDependencies": { "@octokit/core": ">=6" } }, - "node_modules/@octokit/plugin-rest-endpoint-methods/node_modules/@octokit/openapi-types": { - "version": "24.2.0", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-24.2.0.tgz", - "integrity": "sha512-9sIH3nSUttelJSXUrmGzl7QUBFul0/mB8HRYl3fOlgHbIWG+WnYDXU3v/2zMtAvuzZ/ed00Ei6on975FhBfzrg==", - "license": "MIT" - }, - "node_modules/@octokit/plugin-rest-endpoint-methods/node_modules/@octokit/types": { - "version": "13.10.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-13.10.0.tgz", - "integrity": "sha512-ifLaO34EbbPj0Xgro4G5lP5asESjwHracYJvVaPIyXMuiuXLlhic3S47cBdTb+jfODkTE5YtGCLt3Ay3+J97sA==", - "license": "MIT", - "dependencies": { - "@octokit/openapi-types": "^24.2.0" - } - }, "node_modules/@octokit/request": { - "version": "9.2.3", - "resolved": "https://registry.npmjs.org/@octokit/request/-/request-9.2.3.tgz", - "integrity": "sha512-Ma+pZU8PXLOEYzsWf0cn/gY+ME57Wq8f49WTXA8FMHp2Ps9djKw//xYJ1je8Hm0pR2lU9FUGeJRWOtxq6olt4w==", + "version": "10.0.2", + "resolved": "https://registry.npmjs.org/@octokit/request/-/request-10.0.2.tgz", + "integrity": "sha512-iYj4SJG/2bbhh+iIpFmG5u49DtJ4lipQ+aPakjL9OKpsGY93wM8w06gvFbEQxcMsZcCvk5th5KkIm2m8o14aWA==", "license": "MIT", "dependencies": { - "@octokit/endpoint": "^10.1.4", - "@octokit/request-error": "^6.1.8", + "@octokit/endpoint": "^11.0.0", + "@octokit/request-error": "^7.0.0", "@octokit/types": "^14.0.0", - "fast-content-type-parse": "^2.0.0", + "fast-content-type-parse": "^3.0.0", "universal-user-agent": "^7.0.2" }, "engines": { - "node": ">= 18" + "node": ">= 20" } }, "node_modules/@octokit/request-error": { - "version": "6.1.8", - "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-6.1.8.tgz", - "integrity": "sha512-WEi/R0Jmq+IJKydWlKDmryPcmdYSVjL3ekaiEL1L9eo1sUnqMJ+grqmC9cjk7CA7+b2/T397tO5d8YLOH3qYpQ==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-7.0.0.tgz", + "integrity": "sha512-KRA7VTGdVyJlh0cP5Tf94hTiYVVqmt2f3I6mnimmaVz4UG3gQV/k4mDJlJv3X67iX6rmN7gSHCF8ssqeMnmhZg==", "license": "MIT", "dependencies": { "@octokit/types": "^14.0.0" }, "engines": { - "node": ">= 18" + "node": ">= 20" } }, "node_modules/@octokit/rest": { - "version": "21.1.1", - "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-21.1.1.tgz", - "integrity": "sha512-sTQV7va0IUVZcntzy1q3QqPm/r8rWtDCqpRAmb8eXXnKkjoQEtFe3Nt5GTVsHft+R6jJoHeSiVLcgcvhtue/rg==", + "version": "22.0.0", + "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-22.0.0.tgz", + "integrity": "sha512-z6tmTu9BTnw51jYGulxrlernpsQYXpui1RK21vmXn8yF5bp6iX16yfTtJYGK5Mh1qDkvDOmp2n8sRMcQmR8jiA==", "license": "MIT", "dependencies": { - "@octokit/core": "^6.1.4", - "@octokit/plugin-paginate-rest": "^11.4.2", - "@octokit/plugin-request-log": "^5.3.1", - "@octokit/plugin-rest-endpoint-methods": "^13.3.0" + "@octokit/core": "^7.0.2", + "@octokit/plugin-paginate-rest": "^13.0.1", + "@octokit/plugin-request-log": "^6.0.0", + "@octokit/plugin-rest-endpoint-methods": "^16.0.0" }, "engines": { - "node": ">= 18" + "node": ">= 20" } }, "node_modules/@octokit/types": { - "version": "14.0.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-14.0.0.tgz", - "integrity": "sha512-VVmZP0lEhbo2O1pdq63gZFiGCKkm8PPp8AUOijlwPO6hojEVjspA0MWKP7E4hbvGxzFKNqKr6p0IYtOH/Wf/zA==", + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-14.1.0.tgz", + "integrity": "sha512-1y6DgTy8Jomcpu33N+p5w58l6xyt55Ar2I91RPiIA0xCJBXyUAhXCcmZaDWSANiha7R9a6qJJ2CRomGPZ6f46g==", "license": "MIT", "dependencies": { - "@octokit/openapi-types": "^25.0.0" + "@octokit/openapi-types": "^25.1.0" } }, "node_modules/@react-native-community/cli": { @@ -6036,9 +6011,9 @@ "license": "MIT" }, "node_modules/before-after-hook": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-3.0.2.tgz", - "integrity": "sha512-Nik3Sc0ncrMK4UUdXQmAnRtzmNQTAAXmXIopizwZ1W1t8QmfJj+zL4OA2I7XPTPW5z5TDqv4hRo/JzouDJnX3A==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-4.0.0.tgz", + "integrity": "sha512-q6tR3RPqIB1pMiTRMFcZwuG5T8vwp+vUvEG0vuI6B+Rikh5BfPp2fQ82c925FOs+b0lcFQ8CFrL+KbilfZFhOQ==", "license": "Apache-2.0" }, "node_modules/bl": { @@ -7357,9 +7332,9 @@ } }, "node_modules/fast-content-type-parse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fast-content-type-parse/-/fast-content-type-parse-2.0.1.tgz", - "integrity": "sha512-nGqtvLrj5w0naR6tDPfB4cUmYCqouzyQiz6C5y/LtcDllJdrcc6WaWW6iXyIIOErTa/XRybj28aasdn4LkVk6Q==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/fast-content-type-parse/-/fast-content-type-parse-3.0.0.tgz", + "integrity": "sha512-ZvLdcY8P+N8mGQJahJV5G4U88CSvT1rP8ApL6uETe88MBXrBHAkZlSEySdUlyztF7ccb+Znos3TFqaepHxdhBg==", "funding": [ { "type": "github", @@ -11884,7 +11859,7 @@ "version": "0.1.0", "dependencies": { "@commander-js/extra-typings": "^13.1.0", - "@napi-rs/cli": "3.0.0-alpha.80", + "@napi-rs/cli": "3.0.0-alpha.89", "bufout": "^0.3.2", "chalk": "^5.4.1", "commander": "^13.1.0", diff --git a/package.json b/package.json index 416b119a..9c4e7070 100644 --- a/package.json +++ b/package.json @@ -4,8 +4,13 @@ "type": "module", "private": true, "workspaces": [ - "apps/*", - "packages/*" + "apps/test-app", + "packages/gyp-to-cmake", + "packages/cmake-rn", + "packages/ferric", + "packages/host", + "packages/node-addon-examples", + "packages/ferric-example" ], "homepage": "https://github.com/callstackincubator/react-native-node-api#readme", "scripts": { diff --git a/packages/cmake-rn/src/weak-node-api.ts b/packages/cmake-rn/src/weak-node-api.ts index 7dde4ba6..2f483c9b 100644 --- a/packages/cmake-rn/src/weak-node-api.ts +++ b/packages/cmake-rn/src/weak-node-api.ts @@ -1,6 +1,7 @@ import fs from "node:fs"; import assert from "node:assert/strict"; import path from "node:path"; +import { fileURLToPath } from "node:url"; import { isAndroidTriplet, @@ -16,12 +17,12 @@ export function toCmakePath(input: string) { } export function getWeakNodeApiPath(triplet: SupportedTriplet): string { - const { pathname } = new URL( + const basePath = fileURLToPath( import.meta.resolve("react-native-node-api/weak-node-api") ); - assert(fs.existsSync(pathname), "Weak Node API path does not exist"); + assert(fs.existsSync(basePath), "Weak Node API path does not exist"); if (isAppleTriplet(triplet)) { - const xcframeworkPath = path.join(pathname, "weak-node-api.xcframework"); + const xcframeworkPath = path.join(basePath, "weak-node-api.xcframework"); assert( fs.existsSync(xcframeworkPath), `Expected an XCFramework at ${xcframeworkPath}` @@ -29,15 +30,16 @@ export function getWeakNodeApiPath(triplet: SupportedTriplet): string { return xcframeworkPath; } else if (isAndroidTriplet(triplet)) { const libraryPath = path.join( - pathname, + basePath, "weak-node-api.android.node", ANDROID_ARCHITECTURES[triplet], "libweak-node-api.so" ); assert(fs.existsSync(libraryPath), `Expected library at ${libraryPath}`); return libraryPath; + } else { + throw new Error(`Unexpected triplet: ${triplet}`); } - return pathname; } export function getWeakNodeApiVariables(triplet: SupportedTriplet) { diff --git a/packages/ferric-example/package.json b/packages/ferric-example/package.json index 73869b66..a7918a27 100644 --- a/packages/ferric-example/package.json +++ b/packages/ferric-example/package.json @@ -11,7 +11,8 @@ "main": "ferric_example.js", "types": "ferric_example.d.ts", "scripts": { - "build": "ferric build --android --apple" + "build": "ferric build", + "bootstrap": "npm run build" }, "devDependencies": { "ferric-cli": "^0.1.0" diff --git a/packages/ferric/package.json b/packages/ferric/package.json index e9e38a24..59919d5e 100644 --- a/packages/ferric/package.json +++ b/packages/ferric/package.json @@ -16,7 +16,7 @@ "start": "tsx src/run.ts" }, "dependencies": { - "@napi-rs/cli": "3.0.0-alpha.80", + "@napi-rs/cli": "3.0.0-alpha.89", "@commander-js/extra-typings": "^13.1.0", "bufout": "^0.3.2", "chalk": "^5.4.1", diff --git a/packages/ferric/src/cargo.ts b/packages/ferric/src/cargo.ts index dde7222c..26b06970 100644 --- a/packages/ferric/src/cargo.ts +++ b/packages/ferric/src/cargo.ts @@ -2,6 +2,7 @@ import assert from "node:assert/strict"; import cp from "node:child_process"; import fs from "node:fs"; import path from "node:path"; +import { fileURLToPath } from "node:url"; import { spawn } from "bufout"; import chalk from "chalk"; @@ -14,9 +15,9 @@ import { isAppleTarget, } from "./targets.js"; -const WEAK_NODE_API_PATH = new URL( +const WEAK_NODE_API_PATH = fileURLToPath( import.meta.resolve("react-native-node-api/weak-node-api") -).pathname; +); const APPLE_XCFRAMEWORK_CHILDS_PER_TARGET: Record = { "aarch64-apple-darwin": "macos-arm64_x86_64", // Universal diff --git a/packages/host/package.json b/packages/host/package.json index 1079ef60..81831acb 100644 --- a/packages/host/package.json +++ b/packages/host/package.json @@ -44,9 +44,10 @@ "copy-node-api-headers": "tsx scripts/copy-node-api-headers.ts", "generate-weak-node-api": "tsx scripts/generate-weak-node-api.ts", "generate-weak-node-api-injector": "tsx scripts/generate-weak-node-api-injector.ts", - "build-weak-node-api": "npm run generate-weak-node-api && cmake-rn --android --apple --no-auto-link --no-weak-node-api-linkage --xcframework-extension --source ./weak-node-api", + "build-weak-node-api": "cmake-rn --no-auto-link --no-weak-node-api-linkage --xcframework-extension --source ./weak-node-api", + "build-weak-node-api:all-triplets": "cmake-rn --android --apple --no-auto-link --no-weak-node-api-linkage --xcframework-extension --source ./weak-node-api", "test": "tsx --test --test-reporter=@reporters/github --test-reporter-destination=stdout --test-reporter=spec --test-reporter-destination=stdout src/node/**/*.test.ts src/node/*.test.ts", - "bootstrap": "npm run copy-node-api-headers && npm run generate-weak-node-api-injector && npm run build-weak-node-api" + "bootstrap": "npm run copy-node-api-headers && npm run generate-weak-node-api-injector && npm run generate-weak-node-api && npm run build-weak-node-api" }, "keywords": [ "react-native", diff --git a/packages/node-addon-examples/package.json b/packages/node-addon-examples/package.json index 4700be7e..835485c9 100644 --- a/packages/node-addon-examples/package.json +++ b/packages/node-addon-examples/package.json @@ -1,5 +1,6 @@ { "name": "@react-native-node-api/node-addon-examples", + "type": "commonjs", "private": true, "homepage": "https://github.com/callstackincubator/react-native-node-api", "repository": { diff --git a/packages/node-addon-examples/scripts/build-examples.mts b/packages/node-addon-examples/scripts/build-examples.mts index f43f446f..a8d587e9 100644 --- a/packages/node-addon-examples/scripts/build-examples.mts +++ b/packages/node-addon-examples/scripts/build-examples.mts @@ -7,7 +7,8 @@ const projectDirectories = findCMakeProjects(); for (const projectDirectory of projectDirectories) { console.log(`Running "cmake-rn" in ${projectDirectory}`); execSync( - "cmake-rn --android --apple", + "cmake-rn", + // "cmake-rn --android --apple", // "cmake-rn --triplet aarch64-linux-android --triplet arm64-apple-ios-sim", { cwd: projectDirectory, diff --git a/packages/node-addon-examples/scripts/cmake-projects.mts b/packages/node-addon-examples/scripts/cmake-projects.mts index a37a84d4..a9d605f3 100644 --- a/packages/node-addon-examples/scripts/cmake-projects.mts +++ b/packages/node-addon-examples/scripts/cmake-projects.mts @@ -1,14 +1,14 @@ import { readdirSync, statSync } from "node:fs"; -import { join } from "node:path"; +import path from "node:path"; -export const EXAMPLES_DIR = new URL("../examples", import.meta.url).pathname; +export const EXAMPLES_DIR = path.resolve(import.meta.dirname, "../examples"); export function findCMakeProjects(dir = EXAMPLES_DIR): string[] { let results: string[] = []; const files = readdirSync(dir); for (const file of files) { - const fullPath = join(dir, file); + const fullPath = path.join(dir, file); if (statSync(fullPath).isDirectory()) { results = results.concat(findCMakeProjects(fullPath)); } else if (file === "CMakeLists.txt") {