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
2 changes: 1 addition & 1 deletion .gitattributes
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
*.pbxproj -text
# specific for windows script files
*.bat text eol=crlf
*.bat text eol=crlf
67 changes: 67 additions & 0 deletions .github/ISSUE_TEMPLATE/bug_report.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
name: 🐛 Bug report
description: Report a reproducible bug or regression in this library.
labels: [bug]
body:
- type: markdown
attributes:
value: |
# Bug report

👋 Hi!

**Please fill the following carefully before opening a new issue ❗**
*(Your issue may be closed if it doesn't provide the required pieces of information)*
- type: checkboxes
attributes:
label: Before submitting a new issue
description: Please perform simple checks first.
options:
- label: I tested using the latest version of the library, as the bug might be already fixed.
required: true
- label: I tested using a [supported version](https://github.com/reactwg/react-native-releases/blob/main/docs/support.md) of react native.
required: true
- label: I checked for possible duplicate issues, with possible answers.
required: true
- type: textarea
id: summary
attributes:
label: Bug summary
description: |
Provide a clear and concise description of what the bug is.
If needed, you can also provide other samples: error messages / stack traces, screenshots, gifs, etc.
validations:
required: true
- type: input
id: library-version
attributes:
label: Library version
description: What version of the library are you using?
placeholder: "x.x.x"
validations:
required: true
- type: textarea
id: react-native-info
attributes:
label: Environment info
description: Run `react-native info` in your terminal and paste the results here.
render: shell
validations:
required: true
- type: textarea
id: steps-to-reproduce
attributes:
label: Steps to reproduce
description: |
You must provide a clear list of steps and code to reproduce the problem.
value: |
1. …
2. …
validations:
required: true
- type: input
id: reproducible-example
attributes:
label: Reproducible example repository
description: Please provide a link to a repository on GitHub with a reproducible example.
validations:
required: true
8 changes: 8 additions & 0 deletions .github/ISSUE_TEMPLATE/config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
blank_issues_enabled: false
contact_links:
- name: Feature Request 💡
url: https://github.com/lodev09/react-native-exify/discussions/new?category=ideas
about: If you have a feature request, please create a new discussion on GitHub.
- name: Discussions on GitHub 💬
url: https://github.com/lodev09/react-native-exify/discussions
about: If this library works as promised but you need help, please ask questions there.
25 changes: 25 additions & 0 deletions .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
## Summary

<!-- Describe what this PR does and why -->

## Type of Change

- [ ] Bug fix
- [ ] New feature
- [ ] Breaking change
- [ ] Documentation update

## Test Plan

<!-- How did you test these changes? -->

## Screenshots / Videos

<!-- Add screenshots or videos if applicable -->

## Checklist

- [ ] I tested on iOS
- [ ] I tested on Android
- [ ] I tested on Web
- [ ] I updated the documentation (if needed)
19 changes: 12 additions & 7 deletions .github/actions/setup/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,17 +5,13 @@ runs:
using: composite
steps:
- name: Setup Node.js
uses: actions/setup-node@v3
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
with:
node-version-file: .nvmrc

- name: Enable Corepack
run: corepack enable
shell: bash

- name: Cache dependencies
- name: Restore dependencies
id: yarn-cache
uses: actions/cache@v3
uses: actions/cache/restore@5a3ec84eff668545956fd18022155c47e93e2684 # v4.2.3
with:
path: |
**/node_modules
Expand All @@ -29,3 +25,12 @@ runs:
if: steps.yarn-cache.outputs.cache-hit != 'true'
run: yarn install --immutable
shell: bash

- name: Cache dependencies
if: steps.yarn-cache.outputs.cache-hit != 'true'
uses: actions/cache/save@5a3ec84eff668545956fd18022155c47e93e2684 # v4.2.3
with:
path: |
**/node_modules
.yarn/install-state.gz
key: ${{ steps.yarn-cache.outputs.cache-primary-key }}
39 changes: 14 additions & 25 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,21 @@ on:
pull_request:
branches:
- main
merge_group:
types:
- checks_requested

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

jobs:
lint:
runs-on: ubuntu-latest

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

- name: Setup
uses: ./.github/actions/setup
Expand All @@ -25,48 +33,29 @@ jobs:

test:
runs-on: ubuntu-latest

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

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

- name: Run unit tests
run: yarn test --maxWorkers=2 --coverage

verify:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3

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

- name: Run expo doctor
run: yarn example doctor

build-library:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0

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

- name: Build package
run: yarn prepare

prebuild:
runs-on: macos-14
steps:
- name: Checkout
uses: actions/checkout@v3

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

- name: Prebuild example
run: yarn example setup
run: yarn example prebuild --no-install
19 changes: 14 additions & 5 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,7 @@
# XDE
.expo/

# Editors
*.sublime-*
# VSCode
.vscode/
jsconfig.json

Expand All @@ -29,6 +28,7 @@ DerivedData
*.ipa
*.xcuserstate
project.xcworkspace
**/.xcode.env.local

# Android/IJ
#
Expand Down Expand Up @@ -72,9 +72,18 @@ android/keystores/debug.keystore
# Expo
.expo/

# Turborepo
.turbo/

# generated by bob
lib/

# Example
example/ios
example/android
# React Native Codegen
ios/generated
android/generated

# React Native Nitro Modules
nitrogen/

# Agents
.claude
2 changes: 1 addition & 1 deletion .nvmrc
Original file line number Diff line number Diff line change
@@ -1 +1 @@
v18
v22.20.0
942 changes: 942 additions & 0 deletions .yarn/releases/yarn-4.11.0.cjs

Large diffs are not rendered by default.

10 changes: 2 additions & 8 deletions .yarnrc.yml
Original file line number Diff line number Diff line change
@@ -1,10 +1,4 @@
compressionLevel: mixed

enableGlobalCache: false

nmHoistingLimits: workspaces

nodeLinker: node-modules
nmHoistingLimits: workspaces

plugins:
spec: "@yarnpkg/plugin-workspace-tools"
yarnPath: .yarn/releases/yarn-4.11.0.cjs
7 changes: 7 additions & 0 deletions .zed/settings.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"file_scan_exclusions": [
"**/.git",
"**/node_modules",
"**/.DS_Store"
]
}
39 changes: 39 additions & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
# Agent Instructions

## General Rules

1. YOU MUST NOT do builds unless you are told to.
2. YOU MUST NOT commit changes yourself until I explicitly tell you to.
3. YOU MUST NOT create summary documents unless you are told to.
4. YOU MUST NOT add code comments that are obvious.

## Project Overview

`@lodev09/react-native-exify` — React Native Turbo Module that reads and writes Exif metadata from/into images. iOS uses ObjC++ with CGImageSource/Photos framework. Android uses Kotlin with ExifInterface.

## API

```ts
import * as Exify from '@lodev09/react-native-exify';

Exify.read(uri) // Promise<ExifTags | null>
Exify.write(uri, tags) // Promise<ExifyWriteResult>
```

## Key Files

- `src/NativeExify.ts` — Turbo Module codegen spec
- `src/index.tsx` — Public API
- `src/types.ts` — ExifTags, ExifyWriteResult
- `ios/Exify.mm` — iOS implementation
- `android/.../ExifyModule.kt` — Android implementation
- `example/` — Expo example app with expo-camera

## Scripts

- `yarn tidy` — typecheck + lint + format + objclint + ktlint
- `yarn clean` — full clean + reinstall + prebuild

### Creating a Pull Request

When creating a PR, use the template from `.github/PULL_REQUEST_TEMPLATE.md`.
Loading
Loading