Skip to content

Commit

Permalink
feat: V3 馃 (#656)
Browse files Browse the repository at this point in the history
* feat: Scaffold TurboModule base

* fix: Set it up

* fix: Create proper types and delete yarn

* create example

* Disable Flipper

* feat: Upgrade to RN 0.74

* Update Podfile.lock

* Deps

* create MmkvHostObject.h

* Delete iOS

* Create Logger and Buffers and such

* Update Logger.cpp

* fix some types

* fix: Fix build now?

* fix: Properly configure

* Create `initialize(...)`

* Separate to Platform Context

* feat: Use `ArrayBuffer` instead of `Uint8Array`

* Add a few optimizations

* Clang Format

* feat: Add `trim()` func and `size` property

* fix: Only enable WeakRef if it is supported

* Update MmkvHostObject.cpp

* fix: Refactor everything to use proper types

* Move to namespace

* Try something idk

* fix: Pin RN CLI to 14

* Use a single CMakeLists target again

* perf: Clear memory cache on `trim` and dtor

* Update CMakeLists.txt

* fix: Only generate C++ bindings, skip Java/ObjC

* fix: Use `FORCE_POSIX` to force C++

* fix: Fix closing destroy

* fix: Fix includes

* Simplify podspec.

* feat: Autolink iOS

* Update package.json

* Delete Java part

* Try updating name

* Update CMakeLists.txt

* fix: Fix Android build

* feat: Create PlatformContext TurboModule

* feat: Implement MmkvPlatformContext on iOS

* lint c++

* feat: Update MMKV to latest

* V3

* chore: release 3.0.0-beta.1

* fix: Use `__dirname` until latest RC with patch is out

* fix: Extract to `Types`

* fix: Lazily create TurboModule

* fix: Use `Proxy` for lazily getting TurboModules

* fix: Fix lazy init

* fix: Fix lazy export

* Update Podfile.lock

* fix: Only log Warnings or Errors in Release

* fix: Add dev dependencies

* Update yarn.lock

* Update README.md

* fix: Try use `WeakRef`

* fix: Always `trim`, remove `WeakRef`

* Clang format

* Use `yarn pods` in CI

* fix: Fix dependencies

* chore: Bump to react-native 74 RC 6

* chore: Bump CLI to alpha 2

* Update to RN 0.74 stable

* Added formatter

* fix: Upgrade and include config

* chore: release 3.0.0-beta.2

* fix: Sync before destroying

* Update project.pbxproj

* fix: Don't destroy all instances on module invalidate

This crashed the reload.

* Update NativeMmkvModule.cpp

* fix: Update Pods

* fix: Remove unnecessary example lint

* Update package.json

* Update LazyTurboModule.ts

* Update NativeMmkvModule.cpp

* fix: Increase heap

* feat: Upgrade MMKV for new APIs

* fix: Throw error if TurboModules are not found

* Add README

* fix: Fix export

* Update README.md

* fix: Use `isTest`

* fix: Bump packages

* chore: release 3.0.0-beta.3

* fix: Fix `cxxModuleCMakeListsPath` path on CLI

* chore: release 3.0.0-beta.4

* Use `.eslintrc` and `.prettierrc`

* Update .eslintrc.js

* fix: Ignore `MMKV/`

* fix: Fix iOS CI

* fix: Use Vector initialize list
  • Loading branch information
mrousavy committed Apr 30, 2024
1 parent 86d5e94 commit 03d2772
Show file tree
Hide file tree
Showing 120 changed files with 6,152 additions and 8,364 deletions.
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

0 comments on commit 03d2772

Please sign in to comment.