gitextract_dgxiax_y/ ├── .clang-format ├── .github/ │ ├── FUNDING.yml │ ├── dependabot.yml │ └── workflows/ │ ├── build-android-release.yml │ ├── build-android.yml │ ├── build-ios-release.yml │ ├── build-ios.yml │ ├── harness-android.yml │ ├── harness-ios.yml │ ├── lint-cpp.yml │ ├── lint-typescript.yml │ ├── run-nitrogen.yml │ ├── test-js.yml │ └── update-lockfiles.yml ├── .gitignore ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── LICENSE ├── README.md ├── README_V3.md ├── babel.config.js ├── bunfig.toml ├── docs/ │ ├── HOOKS.md │ ├── LISTENERS.md │ ├── MIGRATE_FROM_ASYNC_STORAGE.md │ ├── V4_UPGRADE_GUIDE.md │ ├── WRAPPER_JOTAI.md │ ├── WRAPPER_MOBX.md │ ├── WRAPPER_MOBXPERSIST.md │ ├── WRAPPER_REACT_QUERY.md │ ├── WRAPPER_RECOIL.md │ ├── WRAPPER_REDUX.md │ ├── WRAPPER_TINYBASE.md │ └── WRAPPER_ZUSTAND_PERSIST_MIDDLEWARE.md ├── example/ │ ├── .eslintrc.js │ ├── .gitignore │ ├── .prettierrc.js │ ├── .watchmanconfig │ ├── Gemfile │ ├── README.md │ ├── __tests__/ │ │ └── MMKV.harness.ts │ ├── android/ │ │ ├── app/ │ │ │ ├── build.gradle │ │ │ ├── debug.keystore │ │ │ ├── proguard-rules.pro │ │ │ └── src/ │ │ │ └── main/ │ │ │ ├── AndroidManifest.xml │ │ │ ├── java/ │ │ │ │ └── com/ │ │ │ │ └── mrousavy/ │ │ │ │ └── mmkv/ │ │ │ │ └── example/ │ │ │ │ ├── MainActivity.kt │ │ │ │ └── MainApplication.kt │ │ │ └── res/ │ │ │ ├── drawable/ │ │ │ │ └── rn_edit_text_material.xml │ │ │ └── values/ │ │ │ ├── strings.xml │ │ │ └── styles.xml │ │ ├── build.gradle │ │ ├── gradle/ │ │ │ └── wrapper/ │ │ │ ├── gradle-wrapper.jar │ │ │ └── gradle-wrapper.properties │ │ ├── gradle.properties │ │ ├── gradlew │ │ ├── gradlew.bat │ │ └── settings.gradle │ ├── app.json │ ├── babel.config.js │ ├── index.js │ ├── ios/ │ │ ├── .xcode.env │ │ ├── MmkvExample/ │ │ │ ├── AppDelegate.swift │ │ │ ├── Images.xcassets/ │ │ │ │ ├── AppIcon.appiconset/ │ │ │ │ │ └── Contents.json │ │ │ │ └── Contents.json │ │ │ ├── Info.plist │ │ │ ├── LaunchScreen.storyboard │ │ │ └── PrivacyInfo.xcprivacy │ │ ├── MmkvExample.xcodeproj/ │ │ │ ├── project.pbxproj │ │ │ └── xcshareddata/ │ │ │ └── xcschemes/ │ │ │ └── MmkvExample.xcscheme │ │ ├── MmkvExample.xcworkspace/ │ │ │ └── contents.xcworkspacedata │ │ └── Podfile │ ├── jest.config.js │ ├── metro.config.js │ ├── package.json │ ├── rn-harness.config.mjs │ ├── src/ │ │ └── App.tsx │ └── tsconfig.json ├── jest.config.js ├── package.json ├── packages/ │ └── react-native-mmkv/ │ ├── .gitignore │ ├── .watchmanconfig │ ├── NitroMmkv.podspec │ ├── README.md │ ├── __bun_tests__/ │ │ └── use-jest-instead.test.ts │ ├── __mocks__/ │ │ └── react-native-nitro-modules.js │ ├── android/ │ │ ├── CMakeLists.txt │ │ ├── build.gradle │ │ ├── fix-prefab.gradle │ │ ├── gradle.properties │ │ └── src/ │ │ └── main/ │ │ ├── AndroidManifest.xml │ │ ├── cpp/ │ │ │ └── cpp-adapter.cpp │ │ └── java/ │ │ └── com/ │ │ └── margelo/ │ │ └── nitro/ │ │ └── mmkv/ │ │ ├── HybridMMKVPlatformContext.kt │ │ └── NitroMmkvPackage.java │ ├── babel.config.js │ ├── cpp/ │ │ ├── HybridMMKV.cpp │ │ ├── HybridMMKV.hpp │ │ ├── HybridMMKVFactory.cpp │ │ ├── HybridMMKVFactory.hpp │ │ ├── MMKVTypes.hpp │ │ ├── MMKVValueChangedListenerRegistry.cpp │ │ ├── MMKVValueChangedListenerRegistry.hpp │ │ └── ManagedMMBuffer.hpp │ ├── ios/ │ │ └── HybridMMKVPlatformContext.swift │ ├── nitro.json │ ├── nitrogen/ │ │ └── generated/ │ │ ├── .gitattributes │ │ ├── android/ │ │ │ ├── NitroMmkv+autolinking.cmake │ │ │ ├── NitroMmkv+autolinking.gradle │ │ │ ├── NitroMmkvOnLoad.cpp │ │ │ ├── NitroMmkvOnLoad.hpp │ │ │ ├── c++/ │ │ │ │ ├── JHybridMMKVPlatformContextSpec.cpp │ │ │ │ └── JHybridMMKVPlatformContextSpec.hpp │ │ │ └── kotlin/ │ │ │ └── com/ │ │ │ └── margelo/ │ │ │ └── nitro/ │ │ │ └── mmkv/ │ │ │ ├── HybridMMKVPlatformContextSpec.kt │ │ │ └── NitroMmkvOnLoad.kt │ │ ├── ios/ │ │ │ ├── NitroMmkv+autolinking.rb │ │ │ ├── NitroMmkv-Swift-Cxx-Bridge.cpp │ │ │ ├── NitroMmkv-Swift-Cxx-Bridge.hpp │ │ │ ├── NitroMmkv-Swift-Cxx-Umbrella.hpp │ │ │ ├── NitroMmkvAutolinking.mm │ │ │ ├── NitroMmkvAutolinking.swift │ │ │ ├── c++/ │ │ │ │ ├── HybridMMKVPlatformContextSpecSwift.cpp │ │ │ │ └── HybridMMKVPlatformContextSpecSwift.hpp │ │ │ └── swift/ │ │ │ ├── HybridMMKVPlatformContextSpec.swift │ │ │ └── HybridMMKVPlatformContextSpec_cxx.swift │ │ └── shared/ │ │ └── c++/ │ │ ├── Configuration.hpp │ │ ├── EncryptionType.hpp │ │ ├── HybridMMKVFactorySpec.cpp │ │ ├── HybridMMKVFactorySpec.hpp │ │ ├── HybridMMKVPlatformContextSpec.cpp │ │ ├── HybridMMKVPlatformContextSpec.hpp │ │ ├── HybridMMKVSpec.cpp │ │ ├── HybridMMKVSpec.hpp │ │ ├── Listener.hpp │ │ └── Mode.hpp │ ├── package.json │ ├── react-native.config.js │ ├── src/ │ │ ├── __tests__/ │ │ │ └── hooks.test.tsx │ │ ├── addMemoryWarningListener/ │ │ │ ├── addMemoryWarningListener.mock.ts │ │ │ ├── addMemoryWarningListener.ts │ │ │ └── addMemoryWarningListener.web.ts │ │ ├── createMMKV/ │ │ │ ├── createMMKV.ts │ │ │ ├── createMMKV.web.ts │ │ │ ├── createMockMMKV.ts │ │ │ └── getDefaultMMKVInstance.ts │ │ ├── deleteMMKV/ │ │ │ ├── deleteMMKV.ts │ │ │ └── deleteMMKV.web.ts │ │ ├── existsMMKV/ │ │ │ ├── existsMMKV.ts │ │ │ └── existsMMKV.web.ts │ │ ├── getMMKVFactory.ts │ │ ├── hooks/ │ │ │ ├── createMMKVHook.ts │ │ │ ├── useMMKV.ts │ │ │ ├── useMMKVBoolean.ts │ │ │ ├── useMMKVBuffer.ts │ │ │ ├── useMMKVKeys.ts │ │ │ ├── useMMKVListener.ts │ │ │ ├── useMMKVNumber.ts │ │ │ ├── useMMKVObject.ts │ │ │ └── useMMKVString.ts │ │ ├── index.ts │ │ ├── isTest.ts │ │ ├── specs/ │ │ │ ├── MMKV.nitro.ts │ │ │ ├── MMKVFactory.nitro.ts │ │ │ └── MMKVPlatformContext.nitro.ts │ │ └── web/ │ │ ├── createTextDecoder.ts │ │ ├── createTextEncoder.ts │ │ └── getLocalStorage.ts │ └── tsconfig.json └── scripts/ ├── clang-format.sh └── release.sh