Files
lnreader/package.json
T
Patrick Loser eafa545b2a Use novel refactor (#1838)
* init

* feat: add zustand dependency and persistence key contract

* refactor: extract bootstrap data loading into reusable service

* refactor: move chapter mutations into store-ready action helpers

* feat: add zustand novel store with cache and core actions

* refactor: bridge novel persistence contracts for migration safety

* refactor: migrate NovelScreen domain flows to zustand selectors

* refactor: migrate NovelScreenList to selector-based store access

* refactor: move reader chapter flows onto store boundaries

* refactor: decouple useNovelSettings from broad context domain state

* refactor: align migrateNovel with stable persistence contracts

* refactor: cut novel-reader consumers to store-only context boundary

* refactor: retire legacy useNovel and route cache cleanup export

* test: update suites for store-only context boundary cutover

* test: modernize store-era mocks and add contract coverage

* test: finalize Task-15 sweep—remove dead useNovelData and lint clear mocksContract

Final validation confirms mock-contract test suite clean and target file deletion verified with zero stale references in src/ scope.

* remove imports from NovelScreen

* reworked ai output

* improvements

* implemented synchronus novel and chapter fetch

* refactor tests

* fix db tests

* Update remaining tests.

* Harden chapter actions and bootstrap flows

* Only count filtered chapters

* improved chapter insert speed by optimizing triggers

* Improved the batching function

* Added drizzle support to dbManager.batch

* removed better-sqlite3 for testing

* fix tests

* Update updateNovelChapters fucntion

* reverse read filter

* fix snackbar

* fixed page bottomsheet

* resolved paged novels showing wrong chapter number on opening

* use openPage instead of setPageIndex in chapterDrawer

* fix lint & tests

* fix type issues

* fix various smaller issues

* updated novel restore

* Delete tsconfig.tsbuildinfo
2026-05-06 16:55:55 +02:00

180 lines
7.0 KiB
JSON

{
"name": "lnreader",
"version": "2.0.3",
"private": true,
"scripts": {
"dev:android:release": "pnpm run generate:env:release && rock run:android --variant \"release\" --active-arch-only",
"dev:android": "pnpm run generate:env:debug && rock run:android --app-id-suffix \"debug\" --active-arch-only",
"dev:ios": "rock run:ios",
"dev:start": "rock start",
"dev:clean-start": "pnpm run dev:start -- --reset-cache",
"build:release:android": "pnpm run generate:env:release && rock build:android --variant \"release\"",
"build:open-apk": "open ./android/app/build/outputs/apk/release/",
"generate:env:debug": "node scripts/generate-env-file.cjs --build-type Debug",
"generate:env:release": "node scripts/generate-env-file.cjs --build-type Release",
"generate:string-types": "node scripts/generate-string-types.cjs",
"generate:db-migration": "drizzle-kit generate",
"upgrade:migration-format": "drizzle-kit up",
"test": "jest",
"test:watch": "jest --watch",
"test:coverage": "jest --coverage",
"test:queries": "jest --testPathPattern=queries",
"test:db": "jest --selectProjects db",
"test:rn": "jest --selectProjects rn",
"lint": "eslint ./src --ext .js,.jsx,.ts,.tsx",
"lint:fix": "pnpm run lint -- --fix",
"format": "prettier --write \"./src/**/*.{js,jsx,ts,tsx}\" ./scripts",
"format:check": "prettier --check \"./src/**/*.{js,jsx,ts,tsx}\" ./scripts",
"type-check": "tsc --noEmit",
"clean:full": "rm -rf node_modules/ ./android/build/ ./android/app/build/ ./android/app/.cxx && pnpm i && cd android/ && ./gradlew clean && cd .. && pnpm run dev:start -- --reset-cache",
"clean:android": "rm -rf ./android/build/ ./android/app/build/ ./android/app/.cxx && cd android/ && ./gradlew clean && cd .. && pnpm run dev:start -- --reset-cache",
"prepare": "husky install",
"nix:shell": "nix develop --extra-experimental-features nix-command --extra-experimental-features flakes",
"nix:emulator": "nix develop .#emulator --extra-experimental-features nix-command --extra-experimental-features flakes"
},
"codegenConfig": {
"name": "LNReaderSpec",
"type": "modules",
"jsSrcsDir": "specs",
"android": {
"javaPackageName": "com.lnreader.spec"
},
"ios": {
"modulesProvider": {
"NativeEpubUtil": "RCTNativeEpubUtil",
"NativeFile": "RCTNativeFile",
"NativeVolumeButtonListener": "RCTNativeVolumeButtonListener",
"NativeZipArchive": "RCTNativeZipArchive"
}
}
},
"dependencies": {
"@cd-z/react-native-epub-creator": "^3.0.0",
"@gorhom/bottom-sheet": "^5.2.8",
"@legendapp/list": "^2.0.19",
"@noble/ciphers": "^2.1.1",
"@op-engineering/op-sqlite": "^15.2.9",
"@preeternal/react-native-cookie-manager": "^6.3.1",
"@react-native-community/slider": "^5.1.2",
"@react-native-documents/picker": "^12.0.1",
"@react-native-google-signin/google-signin": "^16.1.2",
"@react-native-vector-icons/common": "^13.0.0",
"@react-native-vector-icons/material-design-icons": "^13.0.0",
"@react-native/assets-registry": "^0.83.4",
"@react-native/codegen": "^0.83.4",
"@react-native/gradle-plugin": "^0.83.4",
"@react-navigation/bottom-tabs": "^7.15.9",
"@react-navigation/native": "^7.2.2",
"@react-navigation/native-stack": "^7.14.10",
"@react-navigation/stack": "^7.8.9",
"@shopify/flash-list": "^2.3.1",
"babel-plugin-inline-import": "^3.0.0",
"cheerio": "1.0.0-rc.12",
"color": "^5.0.3",
"dayjs": "^1.11.20",
"drizzle-orm": "1.0.0-beta.20",
"expo": "^55.0.9",
"expo-clipboard": "~55.0.9",
"expo-document-picker": "~55.0.9",
"expo-file-system": "~55.0.12",
"expo-haptics": "~55.0.9",
"expo-keep-awake": "~55.0.4",
"expo-linear-gradient": "~55.0.9",
"expo-linking": "~55.0.9",
"expo-localization": "~55.0.9",
"expo-navigation-bar": "~55.0.9",
"expo-notifications": "~55.0.14",
"expo-speech": "~55.0.9",
"expo-web-browser": "~55.0.10",
"htmlparser2": "^12.0.0",
"i18n-js": "^4.5.3",
"lodash-es": "^4.17.23",
"lottie-ios": "^3.5.0",
"lottie-react-native": "^5.1.6",
"protobufjs": "^8.0.0",
"react": "^19.2.4",
"react-native": "^0.83.4",
"react-native-background-actions": "^4.0.1",
"react-native-device-info": "^15.0.2",
"react-native-draggable-flatlist": "^4.0.3",
"react-native-drawer-layout": "^4.2.2",
"react-native-edge-to-edge": "^1.8.1",
"react-native-error-boundary": "^3.1.0",
"react-native-file-access": "^4.0.2",
"react-native-gesture-handler": "^2.30.1",
"react-native-lottie-splash-screen": "^1.1.2",
"react-native-mmkv": "^4.3.0",
"react-native-nitro-modules": "^0.35.2",
"react-native-pager-view": "^8.0.0",
"react-native-paper": "^5.15.0",
"react-native-reanimated": "^4.3.0",
"react-native-saf-x": "^2.2.3",
"react-native-safe-area-context": "^5.7.0",
"react-native-screens": "^4.24.0",
"react-native-shimmer-placeholder": "^2.0.9",
"react-native-tab-view": "^4.3.0",
"react-native-url-polyfill": "^3.0.0",
"react-native-webview": "^13.16.1",
"react-native-worklets": "^0.8.1",
"react-native-zip-archive": "^7.0.2",
"sanitize-html": "^2.17.2",
"urlencode": "^2.0.0",
"zustand": "^5.0.12"
},
"devDependencies": {
"@babel/core": "^7.29.0",
"@babel/plugin-transform-export-namespace-from": "^7.27.1",
"@babel/preset-env": "^7.29.2",
"@babel/runtime": "^7.29.2",
"@react-native/babel-preset": "^0.83.4",
"@react-native/eslint-config": "^0.83.4",
"@react-native/eslint-plugin": "^0.83.4",
"@react-native/metro-config": "^0.83.4",
"@react-native/typescript-config": "^0.83.4",
"@rock-js/platform-android": "^0.12.12",
"@rock-js/platform-ios": "^0.12.12",
"@rock-js/plugin-metro": "^0.12.12",
"@rock-js/provider-github": "^0.12.12",
"@testing-library/react-native": "^13.3.3",
"@types/better-sqlite3": "^7.6.13",
"@types/color": "^4.2.1",
"@types/jest": "^29.5.14",
"@types/lodash-es": "^4.17.12",
"@types/react": "~19.2.14",
"@types/sanitize-html": "^2.16.1",
"@typescript-eslint/eslint-plugin": "^8.58.0",
"@typescript-eslint/parser": "^8.58.0",
"babel-plugin-module-resolver": "^5.0.3",
"babel-plugin-react-compiler": "^1.0.0",
"better-sqlite3": "^12.9.0",
"drizzle-kit": "1.0.0-beta.20",
"eslint": "^8.57.1",
"eslint-plugin-eslint-comments": "^3.2.0",
"eslint-plugin-ft-flow": "^3.0.11",
"eslint-plugin-jest": "^29.15.1",
"eslint-plugin-react": "^7.37.5",
"eslint-plugin-react-hooks": "^7.0.1",
"eslint-plugin-react-native": "^5.0.0",
"eslint-plugin-testing-library": "^7.16.2",
"hermes-compiler": "0.14.1",
"husky": "^7.0.4",
"jest": "^29.7.0",
"jest-expo": "^55.0.11",
"lint-staged": "^12.5.0",
"prettier": "2.8.8",
"react-test-renderer": "19.2.4",
"rock": "^0.12.12",
"typescript": "~5.9.3"
},
"lint-staged": {
"*.{js,jsx,ts,tsx}": [
"eslint --fix",
"prettier --check"
]
},
"engines": {
"node": ">=20"
},
"packageManager": "pnpm@10.27.0"
}