{"_id":"houdoku","name":"houdoku","dist-tags":{"latest":"2.14.1"},"versions":{"2.14.1":{"name":"houdoku","productName":"Houdoku","description":"Manga reader and library manager for the desktop","version":"2.14.1","scripts":{"build":"concurrently \"yarn build:main\" \"yarn build:renderer\"","build:main":"cross-env NODE_ENV=production webpack --config ./.erb/configs/webpack.config.main.prod.babel.js","build:renderer":"cross-env NODE_ENV=production webpack --config ./.erb/configs/webpack.config.renderer.prod.babel.js","rebuild":"electron-rebuild --parallel --types prod,dev,optional --module-dir src","lint":"cross-env NODE_ENV=development eslint . --cache --ext .js,.jsx,.ts,.tsx","package":"yarn build && electron-builder build --publish never","postinstall":"yarn cross-env NODE_ENV=development webpack --config ./.erb/configs/webpack.config.renderer.dev.dll.babel.js && opencollective-postinstall && yarn-deduplicate yarn.lock","start":"cross-env yarn start:renderer","start:main":"cross-env NODE_ENV=development electron -r ./.erb/scripts/BabelRegister ./src/main.dev.ts","start:renderer":"cross-env NODE_ENV=development webpack serve --config ./.erb/configs/webpack.config.renderer.dev.babel.js","publish":"cross-env NODE_ENV=production electron-builder --publish onTagOrDraft --win"},"build":{"productName":"Houdoku","appId":"com.faltro.Houdoku","files":["dist/","node_modules/","index.html","main.prod.js","main.prod.js.map","package.json"],"afterSign":".erb/scripts/Notarize.js","mac":{"target":["dmg"],"type":"distribution","hardenedRuntime":true,"entitlements":"assets/entitlements.mac.plist","entitlementsInherit":"assets/entitlements.mac.plist","gatekeeperAssess":false},"dmg":{"contents":[{"x":130,"y":220},{"x":410,"y":220,"type":"link","path":"/Applications"}]},"win":{"target":["nsis","portable","zip"]},"nsis":{"oneClick":false,"allowToChangeInstallationDirectory":true},"linux":{"target":["AppImage"],"category":"Development"},"directories":{"app":"src","buildResources":"assets","output":"release"},"extraResources":["./assets/**"],"publish":{"provider":"github","owner":"xgi","repo":"houdoku"}},"repository":{"type":"git","url":"https://github.com/xgi/houdoku"},"author":{"name":"Jake Robertson","email":"jake@faltro.com","url":"https://faltro.com"},"license":"MIT","bugs":{"url":"https://github.com/xgi/houdoku/issues"},"keywords":["manga","manga-reader","comics","electron","react","typescript","ts"],"homepage":"https://houdoku.org/","devDependencies":{"@babel/core":"^7.16.5","@babel/plugin-proposal-class-properties":"^7.16.5","@babel/plugin-proposal-decorators":"^7.16.5","@babel/plugin-proposal-do-expressions":"^7.16.5","@babel/plugin-proposal-export-default-from":"^7.16.5","@babel/plugin-proposal-export-namespace-from":"^7.16.5","@babel/plugin-proposal-function-bind":"^7.16.5","@babel/plugin-proposal-function-sent":"^7.16.5","@babel/plugin-proposal-json-strings":"^7.16.5","@babel/plugin-proposal-logical-assignment-operators":"^7.16.5","@babel/plugin-proposal-nullish-coalescing-operator":"^7.16.5","@babel/plugin-proposal-optional-chaining":"^7.16.5","@babel/plugin-proposal-pipeline-operator":"^7.16.5","@babel/plugin-proposal-throw-expressions":"^7.16.5","@babel/plugin-syntax-dynamic-import":"^7.8.3","@babel/plugin-syntax-import-meta":"^7.10.4","@babel/plugin-transform-react-constant-elements":"^7.16.5","@babel/plugin-transform-react-inline-elements":"^7.16.5","@babel/plugin-transform-runtime":"^7.16.5","@babel/preset-env":"^7.16.5","@babel/preset-react":"^7.16.5","@babel/preset-typescript":"^7.16.5","@babel/register":"^7.16.5","@electron/notarize":"^2.2.0","@electron/rebuild":"^3.3.0","@pmmmwh/react-refresh-webpack-plugin":"^0.5.4","@testing-library/react":"^12.1.2","@types/discord-rpc":"^4.0.0","@types/enzyme":"^3.10.10","@types/enzyme-adapter-react-16":"^1.0.6","@types/history":"4.7.9","@types/jsdom":"^20.0.0","@types/mousetrap":"^1.6.8","@types/node":"17.0.25","@types/node-fetch":"^2.5.12","@types/react":"^18.0.20","@types/react-dom":"^18.0.6","@types/react-router-dom":"^5.3.3","@types/rimraf":"^3.0.2","@types/semver":"^7.3.9","@types/uuid":"^8.3.3","@types/webpack-env":"^1.16.3","@typescript-eslint/eslint-plugin":"^5.23.0","@typescript-eslint/parser":"^5.23.0","babel-eslint":"^10.1.0","babel-loader":"^9.1.2","babel-plugin-dev-expression":"^0.2.3","babel-plugin-transform-react-remove-prop-types":"^0.4.24","browserslist-config-erb":"^0.0.3","chalk":"^4.1.1","concurrently":"^6.5.1","core-js":"^3.20.0","cross-env":"^7.0.2","css-loader":"^6.5.1","detect-port":"^1.3.0","discord-rpc":"^4.0.1","electron":"^27.0.4","electron-builder":"^24.6.4","electron-devtools-installer":"^3.2.0","eslint":"^8.5.0","eslint-config-airbnb":"^19.0.2","eslint-config-airbnb-typescript":"^16.1.0","eslint-config-prettier":"^8.3.0","eslint-import-resolver-webpack":"^0.13.2","eslint-plugin-compat":"^4.0.0","eslint-plugin-import":"^2.25.3","eslint-plugin-jsx-a11y":"^6.6.1","eslint-plugin-prettier":"^4.0.0","eslint-plugin-promise":"^6.0.0","eslint-plugin-react":"^7.28.0","eslint-plugin-react-hooks":"^4.3.0","file-loader":"^6.0.0","formdata-node":"^4.3.1","@tiyo/common":"1.0.0","identity-obj-proxy":"^3.0.0","mini-css-extract-plugin":"^2.4.5","opencollective-postinstall":"^2.0.3","optimize-css-assets-webpack-plugin":"^6.0.0","pkce-challenge":"^2.2.0","prettier":"^2.6.2","react-refresh":"^0.11.0","rimraf":"^3.0.2","semver":"^7.5.2","style-loader":"^3.3.1","terser-webpack-plugin":"^5.3.0","typescript":"^4.5.4","url-loader":"^4.1.0","webpack":"^5.76.0","webpack-bundle-analyzer":"^4.5.0","webpack-cli":"^4.9.1","webpack-dev-server":"^4.7.4","webpack-merge":"^5.4.0","yarn-deduplicate":"^3.1.0"},"dependencies":{"@emotion/react":"^11.10.4","@mantine/core":"^5.7.2","@mantine/hooks":"^5.7.2","@mantine/modals":"^5.7.2","@mantine/notifications":"^5.7.2","@radix-ui/react-context-menu":"^2.1.3","@tabler/icons":"^1.92.0","aki-plugin-manager":"^1.3.3","canvas":"file:.erb/pkg/canvas","electron-debug":"^3.1.0","electron-log":"^4.4.3","electron-updater":"^4.6.1","history":"^5.2.0","html-react-parser":"^5.0.6","jsdom":"^20.0.0","jszip":"^3.8.0","mousetrap":"^1.6.5","node-fetch":"^2.6.7","node-unrar-js":"^2.0.0","react":"^18.2.0","react-dom":"^18.2.0","react-router-dom":"^6.4.1","recoil":"^0.7.4","regenerator-runtime":"^0.13.5","source-map-support":"^0.5.21","uuid":"^8.3.2"},"devEngines":{"node":">=14.x","npm":">=6.x","yarn":">=1.21.3"},"browserslist":[],"prettier":{"overrides":[{"files":[".prettierrc",".babelrc",".eslintrc"],"options":{"parser":"json"}}],"singleQuote":true},"licenseText":"MIT License\n\nCopyright (c) 2018 Jake Robertson\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.","_id":"houdoku@2.14.1","dist":{"shasum":"b81a3bcd390d61228f11cef01b9397bb14fb6d73","integrity":"sha512-c4eDHIujm4CYixLHbW1G291G8liSCCYmZI3HlTme4yVychbHwBWoMUbCYcFWA7maBhZ2xtv8FxgHD0W5MZVOdg==","tarball":"https://registry.npmjs.org/houdoku/-/houdoku-2.14.1.tgz","fileCount":211,"unpackedSize":3462506,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCv0CcxeXg6jd4pm+avxcUDb7vCn3nmjGtXltLmh+XTvgIhAISLx+U1I6mUqR0sJl2Asa2OKUyBFiSybbBt6PWOyIJr"}]},"_npmUser":{"name":"r-io","email":"email4rio@gmail.com"},"directories":{},"maintainers":[{"name":"r-io","email":"email4rio@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/houdoku_2.14.1_1713940315048_0.7272066835963567"},"_hasShrinkwrap":false}},"time":{"created":"2024-04-24T06:31:55.046Z","2.14.1":"2024-04-24T06:31:55.280Z","modified":"2024-04-24T06:31:55.576Z"},"maintainers":[{"name":"r-io","email":"email4rio@gmail.com"}],"description":"Manga reader and library manager for the desktop","homepage":"https://houdoku.org/","keywords":["manga","manga-reader","comics","electron","react","typescript","ts"],"repository":{"type":"git","url":"https://github.com/xgi/houdoku"},"author":{"name":"Jake Robertson","email":"jake@faltro.com","url":"https://faltro.com"},"bugs":{"url":"https://github.com/xgi/houdoku/issues"},"license":"MIT","readme":"[![Houdoku Header](res/houdoku_header.png)](https://houdoku.org)\n\n[![houdoku.org](https://img.shields.io/badge/website-houdoku.org-7048E8?style=flat-square)](https://houdoku.org)\n[![GitHub release](https://img.shields.io/github/v/release/xgi/houdoku?style=flat-square)](https://github.com/xgi/houdoku/releases)\n![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/xgi/houdoku/publish.yml?branch=master&style=flat-square)\n\nHoudoku is a free and open source manga reader for the desktop.\n\n---\n\n## Features\n\n- Read manga from popular websites or import ones from your filesystem,\n  all in one place.\n- Download chapters for offline reading.\n- Customizable reader interface with multiple layouts and settings.\n- Tagging and filtering support to easily browse and manage large libraries.\n- Cross-platform!\n\n---\n\n![Screenshots1](res/screenshots1.png)\n![Screenshots2](res/screenshots2.png)\n\n---\n\n## Download\n\nDownload Houdoku from [the official website](https://houdoku.org/download).\n\nAlternatively, you can download manually from the\n[GitHub releases page](https://github.com/xgi/houdoku/releases).\n\n## Documentation\n\nUser guides and documentation are available on\n[houdoku.org](https://houdoku.org).\n\n## Development\n\nInstall dependencies:\n\n```\nyarn\n```\n\nStart the app in the dev environment:\n\n```\nyarn start\n```\n\n## Stack\n\n**Application**: This is an Electron application. The majority of the functionality is performed in the renderer thread. Exceptions are for cases like accessing the window class (i.e. to support minimizing the window), locating application directories, and for working with extensions. The renderer can invoke these functions through ipc.\n\n**UI**: The interface uses React components. Most base components (text, buttons, links, etc.) come from [Mantine](https://mantine.dev/).\n\n**State**: [Recoil](https://recoiljs.org) is used for state management. Hooks are used for small\nnon-shared behavior.\n\n**Storage**: Library data and settings are saved with `localStorage`. Thumbnails are stored in\nthe user-data path.\n\n**Plugins/Extensions**: See the [Tiyo](https://github.com/xgi/tiyo) repo. Dynamic loading is handled by [aki-plugin-manager](https://github.com/xgi/aki-plugin-manager).\n\n## Content Sources\n\nHoudoku allows users to import manga from their filesystem (e.g. as zip files\nor folders of images). To read manga from 3rd-party \"content sources\", the\nTiyo plugin can be installed from the Plugins tab in the client.\n\nTo learn about Tiyo or request a new content source, please go to https://github.com/xgi/tiyo\n\n## License\n\n[MIT License](https://github.com/xgi/houdoku/blob/master/LICENSE.txt)\n","readmeFilename":"README.md"}