Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: V3 🫴 #656

Merged
merged 96 commits into from
Apr 30, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
96 commits
Select commit Hold shift + click to select a range
94522bd
feat: Scaffold TurboModule base
mrousavy Mar 23, 2024
157aef1
fix: Set it up
mrousavy Mar 23, 2024
fe3b567
fix: Create proper types and delete yarn
mrousavy Mar 24, 2024
c0145b7
create example
mrousavy Mar 24, 2024
35321fb
Disable Flipper
mrousavy Mar 24, 2024
6375e75
feat: Upgrade to RN 0.74
mrousavy Mar 25, 2024
532ce93
Update Podfile.lock
mrousavy Mar 25, 2024
e0edd0e
Deps
mrousavy Mar 25, 2024
f113a18
create MmkvHostObject.h
mrousavy Mar 25, 2024
d1691a6
Delete iOS
mrousavy Mar 25, 2024
78265aa
Create Logger and Buffers and such
mrousavy Mar 25, 2024
eb8a4a0
Update Logger.cpp
mrousavy Mar 25, 2024
02d7102
fix some types
mrousavy Mar 25, 2024
6e8e20f
fix: Fix build now?
mrousavy Mar 25, 2024
e33c6e3
fix: Properly configure
mrousavy Mar 25, 2024
c6f8715
Create `initialize(...)`
mrousavy Mar 25, 2024
803fad6
Separate to Platform Context
mrousavy Mar 25, 2024
c03ef4d
feat: Use `ArrayBuffer` instead of `Uint8Array`
mrousavy Mar 25, 2024
81b562f
Add a few optimizations
mrousavy Mar 25, 2024
6c89901
Clang Format
mrousavy Mar 25, 2024
b2d80fa
feat: Add `trim()` func and `size` property
mrousavy Mar 25, 2024
e6ee073
fix: Only enable WeakRef if it is supported
mrousavy Mar 25, 2024
d73d846
Update MmkvHostObject.cpp
mrousavy Mar 25, 2024
731a3a6
fix: Refactor everything to use proper types
mrousavy Mar 25, 2024
bafd495
Move to namespace
mrousavy Mar 25, 2024
c47bef8
Try something idk
mrousavy Mar 25, 2024
b6a095b
fix: Pin RN CLI to 14
mrousavy Mar 25, 2024
97bf859
Use a single CMakeLists target again
mrousavy Mar 25, 2024
c01acb5
perf: Clear memory cache on `trim` and dtor
mrousavy Mar 25, 2024
29501c0
Update CMakeLists.txt
mrousavy Mar 25, 2024
e89a472
fix: Only generate C++ bindings, skip Java/ObjC
mrousavy Mar 26, 2024
8fa5ec7
fix: Use `FORCE_POSIX` to force C++
mrousavy Mar 27, 2024
3c2babd
fix: Fix closing destroy
mrousavy Mar 27, 2024
ee1caba
fix: Fix includes
mrousavy Mar 27, 2024
529ac38
Simplify podspec.
mrousavy Mar 27, 2024
b62ed49
feat: Autolink iOS
mrousavy Mar 27, 2024
030f142
Update package.json
mrousavy Mar 27, 2024
5ebd3ba
Delete Java part
mrousavy Mar 27, 2024
3219efa
Try updating name
mrousavy Mar 27, 2024
c1e72b2
Update CMakeLists.txt
mrousavy Mar 27, 2024
0f33f1c
fix: Fix Android build
mrousavy Mar 27, 2024
87dedcd
feat: Create PlatformContext TurboModule
mrousavy Mar 27, 2024
660cda3
feat: Implement MmkvPlatformContext on iOS
mrousavy Mar 27, 2024
d5b8248
lint c++
mrousavy Mar 27, 2024
4ab420b
feat: Update MMKV to latest
mrousavy Mar 27, 2024
51bdace
V3
mrousavy Mar 27, 2024
0615dba
chore: release 3.0.0-beta.1
mrousavy Mar 27, 2024
c462b3c
fix: Use `__dirname` until latest RC with patch is out
mrousavy Mar 27, 2024
2989c33
fix: Extract to `Types`
mrousavy Mar 27, 2024
5a4319e
fix: Lazily create TurboModule
mrousavy Mar 27, 2024
1350529
fix: Use `Proxy` for lazily getting TurboModules
mrousavy Mar 27, 2024
c2e610d
fix: Fix lazy init
mrousavy Mar 27, 2024
7018389
fix: Fix lazy export
mrousavy Mar 27, 2024
ae8c148
Update Podfile.lock
mrousavy Mar 27, 2024
cb5347b
fix: Only log Warnings or Errors in Release
mrousavy Mar 27, 2024
13c3783
fix: Add dev dependencies
mrousavy Mar 27, 2024
94f7b41
Update yarn.lock
mrousavy Mar 27, 2024
2a91b73
Update README.md
mrousavy Mar 27, 2024
84016a1
fix: Try use `WeakRef`
mrousavy Mar 27, 2024
6dfc8e1
fix: Always `trim`, remove `WeakRef`
mrousavy Mar 27, 2024
4d31746
Clang format
mrousavy Mar 27, 2024
e38c016
Use `yarn pods` in CI
mrousavy Mar 27, 2024
c1eedbc
fix: Fix dependencies
mrousavy Mar 27, 2024
32a606a
chore: Bump to react-native 74 RC 6
mrousavy Apr 2, 2024
070a966
chore: Bump CLI to alpha 2
mrousavy Apr 2, 2024
ba75a00
Update to RN 0.74 stable
mrousavy Apr 22, 2024
2d6ef8f
Merge branch 'master' into feat/turbomodule
mrousavy Apr 22, 2024
d5b016d
Added formatter
mrousavy Apr 22, 2024
4e93c86
fix: Upgrade and include config
mrousavy Apr 29, 2024
524f68d
chore: release 3.0.0-beta.2
mrousavy Apr 29, 2024
6eacc14
fix: Sync before destroying
mrousavy Apr 29, 2024
2c3e4d2
Update project.pbxproj
mrousavy Apr 29, 2024
ca27f83
fix: Don't destroy all instances on module invalidate
mrousavy Apr 29, 2024
fa0d02e
Update NativeMmkvModule.cpp
mrousavy Apr 29, 2024
7d4170b
fix: Update Pods
mrousavy Apr 29, 2024
4970bb7
fix: Remove unnecessary example lint
mrousavy Apr 29, 2024
8bba35b
Update package.json
mrousavy Apr 29, 2024
aa987fc
Update LazyTurboModule.ts
mrousavy Apr 29, 2024
40febd5
Update NativeMmkvModule.cpp
mrousavy Apr 29, 2024
ac130f8
fix: Increase heap
mrousavy Apr 29, 2024
7549b0f
feat: Upgrade MMKV for new APIs
mrousavy Apr 29, 2024
8770d5d
fix: Throw error if TurboModules are not found
mrousavy Apr 30, 2024
65b11cb
Add README
mrousavy Apr 30, 2024
de62b9d
fix: Fix export
mrousavy Apr 30, 2024
3347538
Update README.md
mrousavy Apr 30, 2024
b104454
Merge branch 'master' into feat/turbomodule
mrousavy Apr 30, 2024
57a4545
fix: Use `isTest`
mrousavy Apr 30, 2024
01cfa5e
fix: Bump packages
mrousavy Apr 30, 2024
4b3d8a4
chore: release 3.0.0-beta.3
mrousavy Apr 30, 2024
a77d2d6
fix: Fix `cxxModuleCMakeListsPath` path on CLI
mrousavy Apr 30, 2024
c318819
chore: release 3.0.0-beta.4
mrousavy Apr 30, 2024
dee46cc
Use `.eslintrc` and `.prettierrc`
mrousavy Apr 30, 2024
a161611
Update .eslintrc.js
mrousavy Apr 30, 2024
71bd447
fix: Ignore `MMKV/`
mrousavy Apr 30, 2024
47a2a13
fix: Fix iOS CI
mrousavy Apr 30, 2024
cbd3f43
fix: Use Vector initialize list
mrousavy Apr 30, 2024
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
7 changes: 7 additions & 0 deletions .eslintrc.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
module.exports = {
root: true,
extends: ['@react-native', 'plugin:prettier/recommended'],
rules: {
'prettier/prettier': ['warn'],
},
};
3 changes: 3 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
*.pbxproj -text
# specific for windows script files
*.bat text eol=crlf
4 changes: 3 additions & 1 deletion .github/workflows/build-ios.yml
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,8 @@ jobs:
key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }}
restore-keys: |
${{ runner.os }}-yarn-
- name: Install node_modules
run: yarn install --frozen-lockfile --cwd ../..
- name: Install node_modules for example/
run: yarn install --frozen-lockfile --cwd ..

Expand All @@ -66,7 +68,7 @@ jobs:
restore-keys: |
${{ runner.os }}-pods-
- name: Install Pods
run: bundle exec pod check || bundle exec pod install
run: yarn pods
- name: Install xcpretty
run: gem install xcpretty
- name: Build App
Expand Down
8 changes: 1 addition & 7 deletions .github/workflows/validate-js.yml
Original file line number Diff line number Diff line change
Expand Up @@ -96,12 +96,6 @@ jobs:
- name: Run ESLint with auto-fix
run: yarn lint --fix

- name: Run ESLint in example/
run: cd example && yarn lint -f @jamesacarr/github-actions && cd ..

- name: Run ESLint in example/ with auto-fix
run: cd example && yarn lint --fix && cd ..

- name: Verify no files have changed after auto-fix
run: git diff --exit-code HEAD

Expand Down Expand Up @@ -130,4 +124,4 @@ jobs:
run: yarn install --frozen-lockfile --cwd example

- name: Run Jest
run: yarn test
run: yarn test
105 changes: 12 additions & 93 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -31,21 +31,26 @@ project.xcworkspace

# Android/IJ
#
.idea
.classpath
.cxx
.gradle
.idea
.project
.settings
local.properties
android.iml

# Cocoapods
#
example/ios/Pods

# Ruby
example/vendor/

# node.js
#
node_modules/
npm-debug.log
yarn-debug.log
yarn-error.log

# BUCK
buck-out/
Expand All @@ -54,96 +59,10 @@ android/app/libs
android/keystores/debug.keystore

# Expo
.expo/*
.expo/

# Turborepo
.turbo/

# generated by bob
lib/

# Built application files
*.apk
*.aar
*.ap_
*.aab

# Files for the ART/Dalvik VM
*.dex

# Java class files
*.class

# Generated files
bin/
gen/
out/
# Uncomment the following line in case you need and you don't have the release build type files in your app
# release/

# Gradle files
.gradle/
build/

# Local configuration file (sdk path, etc)
local.properties

# Proguard folder generated by Eclipse
proguard/

# Log Files
*.log

# Android Studio Navigation editor temp files
.navigation/

# Android Studio captures folder
captures/

# IntelliJ
*.iml
.idea/workspace.xml
.idea/tasks.xml
.idea/gradle.xml
.idea/assetWizardSettings.xml
.idea/dictionaries
.idea/libraries
# Android Studio 3 in .gitignore file.
.idea/caches
.idea/modules.xml
# Comment next line if keeping position of elements in Navigation Editor is relevant for you
.idea/navEditor.xml

# Keystore files
# Uncomment the following lines if you do not want to check your keystore files in.
#*.jks
#*.keystore

# External native build folder generated in Android Studio 2.2 and later
.externalNativeBuild
.cxx/

# Google Services (e.g. APIs or Firebase)
# google-services.json

# Freeline
freeline.py
freeline/
freeline_project_description.json

# fastlane
fastlane/report.xml
fastlane/Preview.html
fastlane/screenshots
fastlane/test_output
fastlane/readme.md

# Version control
vcs.xml

# lint
lint/intermediates/
lint/generated/
lint/outputs/
lint/tmp/
# lint/reports/

# Android Profiling
*.hprof
1 change: 1 addition & 0 deletions .nvmrc
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
v18
10 changes: 10 additions & 0 deletions .prettierrc.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
module.exports = {
bracketSpacing: true,
bracketSameLine: true,
singleQuote: true,
trailingComma: 'all',
semi: false,
tabWidth: 2,
useTabs: false,
printWidth: 140
}
1 change: 1 addition & 0 deletions .watchmanconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{}
133 changes: 133 additions & 0 deletions CODE_OF_CONDUCT.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,133 @@

# Contributor Covenant Code of Conduct

## Our Pledge

We as members, contributors, and leaders pledge to make participation in our
community a harassment-free experience for everyone, regardless of age, body
size, visible or invisible disability, ethnicity, sex characteristics, gender
identity and expression, level of experience, education, socio-economic status,
nationality, personal appearance, race, caste, color, religion, or sexual
identity and orientation.

We pledge to act and interact in ways that contribute to an open, welcoming,
diverse, inclusive, and healthy community.

## Our Standards

Examples of behavior that contributes to a positive environment for our
community include:

* Demonstrating empathy and kindness toward other people
* Being respectful of differing opinions, viewpoints, and experiences
* Giving and gracefully accepting constructive feedback
* Accepting responsibility and apologizing to those affected by our mistakes,
and learning from the experience
* Focusing on what is best not just for us as individuals, but for the overall
community

Examples of unacceptable behavior include:

* The use of sexualized language or imagery, and sexual attention or advances of
any kind
* Trolling, insulting or derogatory comments, and personal or political attacks
* Public or private harassment
* Publishing others' private information, such as a physical or email address,
without their explicit permission
* Other conduct which could reasonably be considered inappropriate in a
professional setting

## Enforcement Responsibilities

Community leaders are responsible for clarifying and enforcing our standards of
acceptable behavior and will take appropriate and fair corrective action in
response to any behavior that they deem inappropriate, threatening, offensive,
or harmful.

Community leaders have the right and responsibility to remove, edit, or reject
comments, commits, code, wiki edits, issues, and other contributions that are
not aligned to this Code of Conduct, and will communicate reasons for moderation
decisions when appropriate.

## Scope

This Code of Conduct applies within all community spaces, and also applies when
an individual is officially representing the community in public spaces.
Examples of representing our community include using an official e-mail address,
posting via an official social media account, or acting as an appointed
representative at an online or offline event.

## Enforcement

Instances of abusive, harassing, or otherwise unacceptable behavior may be
reported to the community leaders responsible for enforcement at
[INSERT CONTACT METHOD].
All complaints will be reviewed and investigated promptly and fairly.

All community leaders are obligated to respect the privacy and security of the
reporter of any incident.

## Enforcement Guidelines

Community leaders will follow these Community Impact Guidelines in determining
the consequences for any action they deem in violation of this Code of Conduct:

### 1. Correction

**Community Impact**: Use of inappropriate language or other behavior deemed
unprofessional or unwelcome in the community.

**Consequence**: A private, written warning from community leaders, providing
clarity around the nature of the violation and an explanation of why the
behavior was inappropriate. A public apology may be requested.

### 2. Warning

**Community Impact**: A violation through a single incident or series of
actions.

**Consequence**: A warning with consequences for continued behavior. No
interaction with the people involved, including unsolicited interaction with
those enforcing the Code of Conduct, for a specified period of time. This
includes avoiding interactions in community spaces as well as external channels
like social media. Violating these terms may lead to a temporary or permanent
ban.

### 3. Temporary Ban

**Community Impact**: A serious violation of community standards, including
sustained inappropriate behavior.

**Consequence**: A temporary ban from any sort of interaction or public
communication with the community for a specified period of time. No public or
private interaction with the people involved, including unsolicited interaction
with those enforcing the Code of Conduct, is allowed during this period.
Violating these terms may lead to a permanent ban.

### 4. Permanent Ban

**Community Impact**: Demonstrating a pattern of violation of community
standards, including sustained inappropriate behavior, harassment of an
individual, or aggression toward or disparagement of classes of individuals.

**Consequence**: A permanent ban from any sort of public interaction within the
community.

## Attribution

This Code of Conduct is adapted from the [Contributor Covenant][homepage],
version 2.1, available at
[https://www.contributor-covenant.org/version/2/1/code_of_conduct.html][v2.1].

Community Impact Guidelines were inspired by
[Mozilla's code of conduct enforcement ladder][Mozilla CoC].

For answers to common questions about this code of conduct, see the FAQ at
[https://www.contributor-covenant.org/faq][FAQ]. Translations are available at
[https://www.contributor-covenant.org/translations][translations].

[homepage]: https://www.contributor-covenant.org
[v2.1]: https://www.contributor-covenant.org/version/2/1/code_of_conduct.html
[Mozilla CoC]: https://github.com/mozilla/diversity
[FAQ]: https://www.contributor-covenant.org/faq
[translations]: https://www.contributor-covenant.org/translations
Loading
Loading