Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions .editorconfig
Original file line number Diff line number Diff line change
Expand Up @@ -13,3 +13,7 @@ end_of_line = lf
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true

[*.{kt,kts}]
# Kotlin extension filenames intentionally mirror Swift's Type+operation style.
ktlint_standard_filename = disabled
5 changes: 2 additions & 3 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -1,3 +1,2 @@
*.pbxproj -text
# specific for windows script files
*.bat text eol=crlf
# Nitrogen owns generated formatting, including intentional trailing spaces.
nitrogen/generated/** -whitespace
20 changes: 18 additions & 2 deletions .github/workflows/build-android.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,19 +2,29 @@ name: Build Example (Android)

on:
pull_request:
branches: [main]
branches: [main, develop]
paths:
- '.github/workflows/build-android.yml'
- 'android/**'
- 'cpp/**'
- 'example/android/**'
- 'nitrogen/**'
- 'nitro.json'
- 'src/specs/**'
- 'package.json'
- 'yarn.lock'
- '*.gradle'
- '*.gradle.kts'
push:
branches: [main]
branches: [main, develop]
paths:
- '.github/workflows/build-android.yml'
- 'android/**'
- 'cpp/**'
- 'example/android/**'
- 'nitrogen/**'
- 'nitro.json'
- 'src/specs/**'
- 'package.json'
- 'yarn.lock'
- '*.gradle'
Expand Down Expand Up @@ -79,3 +89,9 @@ jobs:

- name: Build Android example
run: yarn turbo run build:android

- name: Compile library with v2 features disabled
working-directory: example/android
env:
VISION_CAMERA_MLKIT_DISABLE_V2_FEATURES: 'true'
run: ./gradlew :react-native-vision-camera-mlkit:compileDebugKotlin --no-daemon
18 changes: 14 additions & 4 deletions .github/workflows/build-ios.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,18 +2,28 @@ name: Build Example (iOS)

on:
pull_request:
branches: [main]
branches: [main, develop]
paths:
- '.github/workflows/build-ios.yml'
- 'cpp/**'
- 'ios/**'
- 'example/ios/**'
- 'nitrogen/**'
- 'nitro.json'
- 'src/specs/**'
- '*.podspec'
- 'package.json'
- 'yarn.lock'
push:
branches: [main]
branches: [main, develop]
paths:
- '.github/workflows/build-ios.yml'
- 'cpp/**'
- 'ios/**'
- 'example/ios/**'
- 'nitrogen/**'
- 'nitro.json'
- 'src/specs/**'
- '*.podspec'
- 'package.json'
- 'yarn.lock'
Expand All @@ -32,7 +42,7 @@ jobs:
runs-on: macos-latest

env:
XCODE_VERSION: 16.3
XCODE_VERSION: latest-stable
RCT_USE_RN_DEP: 1
RCT_USE_PREBUILT_RNCORE: 1

Expand Down Expand Up @@ -86,7 +96,7 @@ jobs:
exit 1
fi

echo "IOS_DESTINATION=platform=iOS Simulator,OS=${IOS_RUNTIME},name=iPhone 15" >> "$GITHUB_ENV"
echo "IOS_DESTINATION=OS=${IOS_RUNTIME},name=iPhone 15" >> "$GITHUB_ENV"

- name: Install CocoaPods
run: |
Expand Down
14 changes: 12 additions & 2 deletions .github/workflows/build-package.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@ name: Build Package

on:
pull_request:
branches: [main]
branches: [main, develop]
push:
branches: [main]
branches: [main, develop]

permissions:
contents: read
Expand All @@ -23,5 +23,15 @@ jobs:
- name: Setup environment
uses: ./.github/actions/setup

- name: Verify generated Nitro specs are current
run: |
yarn specs
if [ -n "$(git status --porcelain --untracked-files=all -- nitrogen)" ]; then
echo "Generated Nitro specs are out of date. Run 'yarn specs' and commit the results."
git status --short --untracked-files=all -- nitrogen
git diff -- nitrogen
exit 1
fi

- name: Build library
run: yarn prepare
4 changes: 2 additions & 2 deletions .github/workflows/ktlint-format.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,14 @@ name: Ktlint Format (Android)

on:
push:
branches: [main]
branches: [main, develop]
paths:
- '.github/workflows/ktlint-format.yml'
- 'android/**/*.kt'
- 'android/**/*.kts'
- '.editorconfig'
pull_request:
branches: [main]
branches: [main, develop]
paths:
- '.github/workflows/ktlint-format.yml'
- 'android/**/*.kt'
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/lint-typecheck.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@ name: Lint & Typecheck

on:
pull_request:
branches: [main]
branches: [main, develop]
push:
branches: [main]
branches: [main, develop]

permissions:
contents: read
Expand Down
67 changes: 41 additions & 26 deletions .github/workflows/npm-release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,38 +3,55 @@ name: NPM Release
on:
release:
types: [published]
workflow_dispatch:

permissions:
contents: read
id-token: write

jobs:
build:
name: Build package
runs-on: ubuntu-latest
outputs:
tarball: ${{ steps.pack.outputs.tarball }}

steps:
- name: Checkout repository
uses: actions/checkout@v4
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0

- name: Setup environment
uses: ./.github/actions/setup

- name: Validate release tag
run: |
PACKAGE_VERSION="$(node -p "require('./package.json').version")"
EXPECTED_TAG="v${PACKAGE_VERSION}"

if [[ "$GITHUB_REF_TYPE" != "tag" || "$GITHUB_REF_NAME" != "$EXPECTED_TAG" ]]; then
echo "Release ref must be the package version tag: $EXPECTED_TAG" >&2
exit 1
fi

- name: Build package
run: yarn prepare

- name: Upload build artifacts
uses: actions/upload-artifact@v4
- name: Pack package
id: pack
run: |
TARBALL="$(npm pack | tail -n 1)"

if [[ ! "$TARBALL" =~ ^react-native-vision-camera-mlkit-[0-9A-Za-z._-]+\.tgz$ ]]; then
echo "Unexpected package tarball name: $TARBALL" >&2
exit 1
fi

echo "tarball=$TARBALL" >> "$GITHUB_OUTPUT"

- name: Upload package tarball
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
with:
name: lib
path: |
bin
android
ios
package.json
README.md
LICENSE*
name: package-tarball
path: ${{ steps.pack.outputs.tarball }}
if-no-files-found: error

publish:
name: Publish to npm
Expand All @@ -46,22 +63,18 @@ jobs:
id-token: write

steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Setup environment
uses: ./.github/actions/setup

- name: Setup Node.js for npm
uses: actions/setup-node@v4
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
with:
node-version: 20
# npm trusted publishing requires npm >=11.5.1 and Node >=22.14.0.
# Node 24.7.0 ships npm 11.5.1.
node-version: 24.7.0
registry-url: https://registry.npmjs.org

- name: Download build artifacts (overwrite into repo root)
uses: actions/download-artifact@v4
- name: Download package tarball
uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4.3.0
with:
name: lib
name: package-tarball
path: .

- name: Determine npm tag
Expand All @@ -80,9 +93,11 @@ jobs:
fi

- name: Publish package
env:
PACKAGE_TARBALL: ${{ needs.build.outputs.tarball }}
run: |
if [ "${{ steps.npm-tag.outputs.tag }}" = "latest" ]; then
npm publish --provenance --access public
npm publish "$PACKAGE_TARBALL" --ignore-scripts --provenance --access public
else
npm publish --provenance --access public --tag ${{ steps.npm-tag.outputs.tag }}
npm publish "$PACKAGE_TARBALL" --ignore-scripts --provenance --access public --tag ${{ steps.npm-tag.outputs.tag }}
fi
4 changes: 2 additions & 2 deletions .github/workflows/swift-format.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,13 @@ name: Swift Format (iOS)

on:
pull_request:
branches: [main]
branches: [main, develop]
paths:
- '.github/workflows/swift-format.yml'
- 'ios/**/*.swift'
- '.swift-format'
push:
branches: [main]
branches: [main, develop]
paths:
- '.github/workflows/swift-format.yml'
- 'ios/**/*.swift'
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/unit-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@ name: Unit Tests

on:
pull_request:
branches: [main]
branches: [main, develop]
push:
branches: [main]
branches: [main, develop]

permissions:
contents: read
Expand Down
3 changes: 0 additions & 3 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -92,6 +92,3 @@ lib/
# React Native Codegen
ios/generated
android/generated

# React Native Nitro Modules
nitrogen/
Loading
Loading