Skip to content

Commit 1d378ec

Browse files
authored
feat: turbo module support (#19)
* feat: turbo module support - Rewrite iOS from Swift to ObjC++ (CGImageSource/Photos framework) - Adapt Android Kotlin to NativeExifySpec codegen base class - Rename readAsync/writeAsync to read/write - Update example app to use expo-camera - Add tidy, format, clean scripts - Fix GPS values to return absolute values per Exif standard - Filter internal kCGImageDestinationLossyCompressionQuality from iOS tags Closes #13 * refactor: restore android package path and rename index.tsx to ts * ci: simplify workflow, replace turbo builds with prebuild
1 parent db06c70 commit 1d378ec

62 files changed

Lines changed: 7788 additions & 9379 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.gitattributes

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
*.pbxproj -text
22
# specific for windows script files
3-
*.bat text eol=crlf
3+
*.bat text eol=crlf
Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
name: 🐛 Bug report
2+
description: Report a reproducible bug or regression in this library.
3+
labels: [bug]
4+
body:
5+
- type: markdown
6+
attributes:
7+
value: |
8+
# Bug report
9+
10+
👋 Hi!
11+
12+
**Please fill the following carefully before opening a new issue ❗**
13+
*(Your issue may be closed if it doesn't provide the required pieces of information)*
14+
- type: checkboxes
15+
attributes:
16+
label: Before submitting a new issue
17+
description: Please perform simple checks first.
18+
options:
19+
- label: I tested using the latest version of the library, as the bug might be already fixed.
20+
required: true
21+
- label: I tested using a [supported version](https://github.com/reactwg/react-native-releases/blob/main/docs/support.md) of react native.
22+
required: true
23+
- label: I checked for possible duplicate issues, with possible answers.
24+
required: true
25+
- type: textarea
26+
id: summary
27+
attributes:
28+
label: Bug summary
29+
description: |
30+
Provide a clear and concise description of what the bug is.
31+
If needed, you can also provide other samples: error messages / stack traces, screenshots, gifs, etc.
32+
validations:
33+
required: true
34+
- type: input
35+
id: library-version
36+
attributes:
37+
label: Library version
38+
description: What version of the library are you using?
39+
placeholder: "x.x.x"
40+
validations:
41+
required: true
42+
- type: textarea
43+
id: react-native-info
44+
attributes:
45+
label: Environment info
46+
description: Run `react-native info` in your terminal and paste the results here.
47+
render: shell
48+
validations:
49+
required: true
50+
- type: textarea
51+
id: steps-to-reproduce
52+
attributes:
53+
label: Steps to reproduce
54+
description: |
55+
You must provide a clear list of steps and code to reproduce the problem.
56+
value: |
57+
1. …
58+
2. …
59+
validations:
60+
required: true
61+
- type: input
62+
id: reproducible-example
63+
attributes:
64+
label: Reproducible example repository
65+
description: Please provide a link to a repository on GitHub with a reproducible example.
66+
validations:
67+
required: true

.github/ISSUE_TEMPLATE/config.yml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
blank_issues_enabled: false
2+
contact_links:
3+
- name: Feature Request 💡
4+
url: https://github.com/lodev09/react-native-exify/discussions/new?category=ideas
5+
about: If you have a feature request, please create a new discussion on GitHub.
6+
- name: Discussions on GitHub 💬
7+
url: https://github.com/lodev09/react-native-exify/discussions
8+
about: If this library works as promised but you need help, please ask questions there.

.github/PULL_REQUEST_TEMPLATE.md

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
## Summary
2+
3+
<!-- Describe what this PR does and why -->
4+
5+
## Type of Change
6+
7+
- [ ] Bug fix
8+
- [ ] New feature
9+
- [ ] Breaking change
10+
- [ ] Documentation update
11+
12+
## Test Plan
13+
14+
<!-- How did you test these changes? -->
15+
16+
## Screenshots / Videos
17+
18+
<!-- Add screenshots or videos if applicable -->
19+
20+
## Checklist
21+
22+
- [ ] I tested on iOS
23+
- [ ] I tested on Android
24+
- [ ] I tested on Web
25+
- [ ] I updated the documentation (if needed)

.github/actions/setup/action.yml

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,17 +5,13 @@ runs:
55
using: composite
66
steps:
77
- name: Setup Node.js
8-
uses: actions/setup-node@v3
8+
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
99
with:
1010
node-version-file: .nvmrc
1111

12-
- name: Enable Corepack
13-
run: corepack enable
14-
shell: bash
15-
16-
- name: Cache dependencies
12+
- name: Restore dependencies
1713
id: yarn-cache
18-
uses: actions/cache@v3
14+
uses: actions/cache/restore@5a3ec84eff668545956fd18022155c47e93e2684 # v4.2.3
1915
with:
2016
path: |
2117
**/node_modules
@@ -29,3 +25,12 @@ runs:
2925
if: steps.yarn-cache.outputs.cache-hit != 'true'
3026
run: yarn install --immutable
3127
shell: bash
28+
29+
- name: Cache dependencies
30+
if: steps.yarn-cache.outputs.cache-hit != 'true'
31+
uses: actions/cache/save@5a3ec84eff668545956fd18022155c47e93e2684 # v4.2.3
32+
with:
33+
path: |
34+
**/node_modules
35+
.yarn/install-state.gz
36+
key: ${{ steps.yarn-cache.outputs.cache-primary-key }}

.github/workflows/ci.yml

Lines changed: 14 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,21 @@ on:
66
pull_request:
77
branches:
88
- main
9+
merge_group:
10+
types:
11+
- checks_requested
12+
13+
concurrency:
14+
group: ${{ github.workflow }}-${{ github.ref }}
15+
cancel-in-progress: true
916

1017
jobs:
1118
lint:
1219
runs-on: ubuntu-latest
20+
1321
steps:
1422
- name: Checkout
15-
uses: actions/checkout@v3
23+
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
1624

1725
- name: Setup
1826
uses: ./.github/actions/setup
@@ -25,48 +33,29 @@ jobs:
2533

2634
test:
2735
runs-on: ubuntu-latest
36+
2837
steps:
2938
- name: Checkout
30-
uses: actions/checkout@v3
39+
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
3140

3241
- name: Setup
3342
uses: ./.github/actions/setup
3443

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

38-
verify:
47+
build:
3948
runs-on: ubuntu-latest
40-
steps:
41-
- name: Checkout
42-
uses: actions/checkout@v3
43-
44-
- name: Setup
45-
uses: ./.github/actions/setup
4649

47-
- name: Run expo doctor
48-
run: yarn example doctor
49-
50-
build-library:
51-
runs-on: ubuntu-latest
5250
steps:
5351
- name: Checkout
54-
uses: actions/checkout@v3
52+
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
5553

5654
- name: Setup
5755
uses: ./.github/actions/setup
5856

5957
- name: Build package
6058
run: yarn prepare
6159

62-
prebuild:
63-
runs-on: macos-14
64-
steps:
65-
- name: Checkout
66-
uses: actions/checkout@v3
67-
68-
- name: Setup
69-
uses: ./.github/actions/setup
70-
7160
- name: Prebuild example
72-
run: yarn example setup
61+
run: yarn example prebuild --no-install

.gitignore

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,7 @@
55
# XDE
66
.expo/
77

8-
# Editors
9-
*.sublime-*
8+
# VSCode
109
.vscode/
1110
jsconfig.json
1211

@@ -29,6 +28,7 @@ DerivedData
2928
*.ipa
3029
*.xcuserstate
3130
project.xcworkspace
31+
**/.xcode.env.local
3232

3333
# Android/IJ
3434
#
@@ -72,9 +72,18 @@ android/keystores/debug.keystore
7272
# Expo
7373
.expo/
7474

75+
# Turborepo
76+
.turbo/
77+
7578
# generated by bob
7679
lib/
7780

78-
# Example
79-
example/ios
80-
example/android
81+
# React Native Codegen
82+
ios/generated
83+
android/generated
84+
85+
# React Native Nitro Modules
86+
nitrogen/
87+
88+
# Agents
89+
.claude

.nvmrc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
v18
1+
v22.20.0

.yarn/releases/yarn-4.11.0.cjs

Lines changed: 942 additions & 0 deletions
Large diffs are not rendered by default.

.yarnrc.yml

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,4 @@
1-
compressionLevel: mixed
2-
3-
enableGlobalCache: false
4-
5-
nmHoistingLimits: workspaces
6-
71
nodeLinker: node-modules
2+
nmHoistingLimits: workspaces
83

9-
plugins:
10-
spec: "@yarnpkg/plugin-workspace-tools"
4+
yarnPath: .yarn/releases/yarn-4.11.0.cjs

0 commit comments

Comments
 (0)