{"_id":"@amitdhoju/meroshare","_rev":"8-ba9875005e9a61dc8c5474d67c765a1a","name":"@amitdhoju/meroshare","dist-tags":{"latest":"0.3.0"},"versions":{"0.0.1":{"name":"@amitdhoju/meroshare","version":"0.0.1","keywords":["meroshare","cdsc","nepal","ipo","share","stock"],"author":{"name":"amitdhoju"},"license":"MIT","_id":"@amitdhoju/meroshare@0.0.1","maintainers":[{"name":"amitdhoju","email":"amitdhoju@gmail.com"}],"bin":{"meroshare":"dist/cli.js"},"dist":{"shasum":"4c7add7fd1f2e21c7e6cc3b0f55c232116555fa3","tarball":"https://registry.npmjs.org/@amitdhoju/meroshare/-/meroshare-0.0.1.tgz","fileCount":9,"integrity":"sha512-41SAbqW9GQsw3v0mZuyzN2BAja/3eTCSd6ZuNaAx8UmP7xstxeODcyikuB8jkUj7EEqN3hQOQQYFelO9Ww519A==","signatures":[{"sig":"MEUCIQCh+HdL/K/Eg/+EtVpTlqrcJA4JdRzOCk/Gne+WIXuCdAIgMt9YnDXMXP6qB6ZBQ7mlcwnuv2x+Cc15gwKaDtf6WGg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":107944},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=20"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"scripts":{"cli":"tsx src/cli.ts","dev":"tsup --watch","demo":"tsx demo/index.ts","lint":"biome check .","build":"tsup","check":"biome check --write .","format":"biome format --write .","release":"npm run build && changeset publish","version":"changeset version","changeset":"changeset"},"_npmUser":{"name":"amitdhoju","email":"amitdhoju@gmail.com"},"_npmVersion":"10.9.4","description":"Type-safe Meroshare API client for login, IPO application, and applied IPO lookup","directories":{},"_nodeVersion":"22.21.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.3","tsup":"^8.3.5","typescript":"^5.7.2","@types/node":"^25.9.1","@biomejs/biome":"^1.9.4","@changesets/cli":"^2.27.10"},"_npmOperationalInternal":{"tmp":"tmp/meroshare_0.0.1_1780136081298_0.06940395678184563","host":"s3://npm-registry-packages-npm-production"}},"0.0.2":{"name":"@amitdhoju/meroshare","version":"0.0.2","keywords":["meroshare","cdsc","nepal","ipo","share","stock"],"author":{"name":"amitdhoju"},"license":"MIT","_id":"@amitdhoju/meroshare@0.0.2","maintainers":[{"name":"amitdhoju","email":"amitdhoju@gmail.com"}],"bin":{"meroshare":"dist/cli.js"},"dist":{"shasum":"342ad1add5f5bd8dcdda2adb94356a6ef44c7bc6","tarball":"https://registry.npmjs.org/@amitdhoju/meroshare/-/meroshare-0.0.2.tgz","fileCount":9,"integrity":"sha512-a1zlouvtePUOTRAz+DrZJt0jET6CCwo5sgZhM/kRnUsqFotUZFFFoEgxGkHdEu/9+kp/iIWqPwHnrdtzuX1pSg==","signatures":[{"sig":"MEUCIQCmtSSbGZ/OnFsv2l8yHvLKGZjm33n1tO6XdrZ75jK2MQIga/PISX12TP/bpH2+sv9FFl7Vfet1F4x+3TkWLxuYUPA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":107944},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=20"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"gitHead":"088d47a3a47f47a8b40b9cd8c8fe4969fda084c1","scripts":{"cli":"tsx src/cli.ts","dev":"tsup --watch","demo":"tsx demo/index.ts","lint":"biome check .","build":"tsup","check":"biome check --write .","format":"biome format --write .","release":"npm run build && changeset publish","version":"changeset version","changeset":"changeset"},"_npmUser":{"name":"amitdhoju","email":"amitdhoju@gmail.com"},"_npmVersion":"10.9.4","description":"Type-safe Meroshare API client for login, IPO application, and applied IPO lookup","directories":{},"_nodeVersion":"22.21.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.3","tsup":"^8.3.5","typescript":"^5.7.2","@types/node":"^25.9.1","@biomejs/biome":"^1.9.4","@changesets/cli":"^2.27.10"},"_npmOperationalInternal":{"tmp":"tmp/meroshare_0.0.2_1780136284432_0.6057913716602816","host":"s3://npm-registry-packages-npm-production"}},"0.0.3":{"name":"@amitdhoju/meroshare","version":"0.0.3","keywords":["meroshare","cdsc","nepal","ipo","share","stock"],"author":{"name":"amitdhoju"},"license":"MIT","_id":"@amitdhoju/meroshare@0.0.3","maintainers":[{"name":"amitdhoju","email":"amitdhoju@gmail.com"}],"bin":{"meroshare":"dist/cli.js"},"dist":{"shasum":"a54d13d1490b80a21fada0c3d7f831172dcbf987","tarball":"https://registry.npmjs.org/@amitdhoju/meroshare/-/meroshare-0.0.3.tgz","fileCount":9,"integrity":"sha512-AQMVfnjSccKVv9JxFDrZ/vkTAEzTWbdeRFAStVssOdadI4lcT3L+1dAsaqw2p7b8zOZYMpclmCokqTlZsSQbzA==","signatures":[{"sig":"MEYCIQCCKchN5Nx+ErNhfEgLSBOTw4+gz8ABv4LBPqzNHpz6xQIhAL53uvLdISvkA35uM26FUAdQ7gVXeke7IBBM91iUtVwL","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":107944},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=20"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"gitHead":"f473262b182a07d411a64a123589b93acdd874d5","scripts":{"cli":"tsx src/cli.ts","dev":"tsup --watch","demo":"tsx demo/index.ts","lint":"biome check .","build":"tsup","check":"biome check --write .","format":"biome format --write .","release":"npm run build && changeset publish","version":"changeset version","changeset":"changeset"},"_npmUser":{"name":"amitdhoju","email":"amitdhoju@gmail.com"},"_npmVersion":"10.9.4","description":"Type-safe Meroshare API client for login, IPO application, and applied IPO lookup","directories":{},"_nodeVersion":"22.21.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.3","tsup":"^8.3.5","typescript":"^5.7.2","@types/node":"^25.9.1","@biomejs/biome":"^1.9.4","@changesets/cli":"^2.27.10"},"_npmOperationalInternal":{"tmp":"tmp/meroshare_0.0.3_1780136357050_0.4221714224591462","host":"s3://npm-registry-packages-npm-production"}},"0.0.4":{"name":"@amitdhoju/meroshare","version":"0.0.4","keywords":["meroshare","cdsc","nepal","ipo","share","stock"],"author":{"name":"amitdhoju"},"license":"MIT","_id":"@amitdhoju/meroshare@0.0.4","maintainers":[{"name":"amitdhoju","email":"amitdhoju@gmail.com"}],"bin":{"meroshare":"dist/cli.js"},"dist":{"shasum":"eeff37f7be1ae4b43001d1afd3135e0251a7296a","tarball":"https://registry.npmjs.org/@amitdhoju/meroshare/-/meroshare-0.0.4.tgz","fileCount":9,"integrity":"sha512-aWYC4GZgYUcXIEm13kt8wPn4UwQLZiBQbzjct4pmsJ8+YhrY1gq6gXSWJ4vqhGYkBaV7kFsOPJHQmvN48VCwrQ==","signatures":[{"sig":"MEUCIQDI7FT04saLYSq2EA52uAy/c/vPeyYq6qSbjBB20SCzQwIgYoNM5+Adib5Eeq1m40bHUOeoj3/pwYiB4pIfW8fe56w=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":114524},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=20"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"gitHead":"f5bb3e39945d4e6c9ebf0d04c30330d389fc8d69","scripts":{"cli":"tsx src/cli.ts","dev":"tsup --watch","demo":"tsx demo/index.ts","lint":"biome check .","build":"tsup","check":"biome check --write .","format":"biome format --write .","release":"npm run build && changeset publish","version":"changeset version","changeset":"changeset"},"_npmUser":{"name":"amitdhoju","email":"amitdhoju@gmail.com"},"_npmVersion":"10.9.4","description":"Type-safe Meroshare API client for login, IPO application, and applied IPO lookup","directories":{},"_nodeVersion":"22.21.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.3","tsup":"^8.3.5","typescript":"^5.7.2","@types/node":"^25.9.1","@biomejs/biome":"^1.9.4","@changesets/cli":"^2.27.10"},"_npmOperationalInternal":{"tmp":"tmp/meroshare_0.0.4_1780138510986_0.17163448889295152","host":"s3://npm-registry-packages-npm-production"}},"0.0.5":{"name":"@amitdhoju/meroshare","version":"0.0.5","keywords":["meroshare","cdsc","nepal","ipo","share","stock"],"author":{"name":"amitdhoju"},"license":"MIT","_id":"@amitdhoju/meroshare@0.0.5","maintainers":[{"name":"amitdhoju","email":"amitdhoju@gmail.com"}],"bin":{"meroshare":"dist/cli.js"},"dist":{"shasum":"7fcd8c14e02779e9c037d0065066611ca14f7f70","tarball":"https://registry.npmjs.org/@amitdhoju/meroshare/-/meroshare-0.0.5.tgz","fileCount":9,"integrity":"sha512-qCoJQb526ktOohub8MufW7zbnzlRB3k0vOVpa9/CrVkOWkMUfl3Pk/lUkI+fH/W6b7UIK0VhmC+4zMsMxZEMPg==","signatures":[{"sig":"MEYCIQCjdDzJlHBu8Nibq7+Ib9wQ88LdpB3sFKjVzHXT32cuwwIhAMqD5Pm6OexXkrqHCAQ1lU+bJ8e71ioH8Lg7Vl4q7lpz","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":115989},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=20"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"gitHead":"88a146f3b2e3b1a0bf3fd4394ebda5b78ee249c2","scripts":{"cli":"tsx src/cli.ts","dev":"tsup --watch","demo":"tsx demo/index.ts","lint":"biome check .","build":"tsup","check":"biome check --write .","format":"biome format --write .","release":"npm run build && changeset publish","version":"changeset version","changeset":"changeset"},"_npmUser":{"name":"amitdhoju","email":"amitdhoju@gmail.com"},"_npmVersion":"10.9.4","description":"Type-safe Meroshare API client for login, IPO application, and applied IPO lookup","directories":{},"_nodeVersion":"22.21.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.3","tsup":"^8.3.5","typescript":"^5.7.2","@types/node":"^25.9.1","@biomejs/biome":"^1.9.4","@changesets/cli":"^2.27.10"},"_npmOperationalInternal":{"tmp":"tmp/meroshare_0.0.5_1780144311639_0.19794364849867674","host":"s3://npm-registry-packages-npm-production"}},"0.0.6":{"name":"@amitdhoju/meroshare","version":"0.0.6","keywords":["meroshare","cdsc","nepal","ipo","share","stock"],"author":{"name":"amitdhoju"},"license":"MIT","_id":"@amitdhoju/meroshare@0.0.6","maintainers":[{"name":"amitdhoju","email":"amitdhoju@gmail.com"}],"bin":{"meroshare":"dist/cli.js"},"dist":{"shasum":"ad02f15520750f012168aa4e8e53cbc46e146d2c","tarball":"https://registry.npmjs.org/@amitdhoju/meroshare/-/meroshare-0.0.6.tgz","fileCount":9,"integrity":"sha512-NubUytpbcOSJAcK23quscsYTwznMI7L0kwfn56A6n+GuHbgJkn46kgbHWRBRHRFq4qXuvryh7XlelWzeoHBAew==","signatures":[{"sig":"MEYCIQDl0d4pfyjhSoe8Z1RK8ZKy9KnEMF7a2dDQmDgh/2WOngIhAI6IiC4qR7ZevoZlmXaa0iKhNopDg6NEBA9pI7PaIi9c","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":120690},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=20"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"gitHead":"a77a2c984dc1cc8a9d2468dd7aef463a557d659e","scripts":{"cli":"tsx src/cli.ts","dev":"tsup --watch","demo":"tsx demo/index.ts","lint":"biome check .","build":"tsup","check":"biome check --write .","format":"biome format --write .","release":"npm run build && changeset publish","version":"changeset version","changeset":"changeset"},"_npmUser":{"name":"amitdhoju","email":"amitdhoju@gmail.com"},"_npmVersion":"10.9.4","description":"Type-safe Meroshare API client for login, IPO application, and applied IPO lookup","directories":{},"_nodeVersion":"22.21.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.3","tsup":"^8.3.5","typescript":"^5.7.2","@types/node":"^25.9.1","@biomejs/biome":"^1.9.4","@changesets/cli":"^2.27.10"},"_npmOperationalInternal":{"tmp":"tmp/meroshare_0.0.6_1780296120299_0.7399892092292828","host":"s3://npm-registry-packages-npm-production"}},"0.1.0":{"name":"@amitdhoju/meroshare","version":"0.1.0","keywords":["meroshare","cdsc","nepal","ipo","share","stock"],"author":{"name":"amitdhoju"},"license":"MIT","_id":"@amitdhoju/meroshare@0.1.0","maintainers":[{"name":"amitdhoju","email":"amitdhoju@gmail.com"}],"bin":{"meroshare":"dist/cli.js"},"dist":{"shasum":"4e5a8fca2ff68e089a5de1b950ac2563706ee9d6","tarball":"https://registry.npmjs.org/@amitdhoju/meroshare/-/meroshare-0.1.0.tgz","fileCount":9,"integrity":"sha512-RCNYc/0egZcCs9xvRF8DtY5UoE/rgWdklO+bajbT1KcjubRBbL4L5khOxoUcSNB6tJF+V4g13olqY3T/qYWpMw==","signatures":[{"sig":"MEQCIEMFj8/Klju8haB3ZDc+oVhAwmIVz9brN/3/BmM3X8BHAiAc81iUO1B77phxCN428fLizT2G1UXnBQPI99+j47tZJQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":247548},"main":"./dist/index.cjs","type":"module","_from":"file:amitdhoju-meroshare-0.1.0.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=20"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"scripts":{"cli":"tsx src/cli.ts","dev":"tsup --watch","demo":"tsx demo/index.ts","lint":"biome check .","build":"tsup","check":"biome check --write .","format":"biome format --write .","release":"npm run build && changeset publish","version":"changeset version","changeset":"changeset","mock-server":"tsx src/mock-server.ts","release:full":"npm run build && npm run changeset && npm run version && npm run release","mock-examples":"tsx examples/mock-usage.ts","mock-server:watch":"tsx --watch src/mock-server.ts"},"_npmUser":{"name":"amitdhoju","email":"amitdhoju@gmail.com"},"_resolved":"/private/var/folders/g1/mz2j4_6n7h74vjfk9zv7z9x00000gn/T/3bb96c30c2db7591070c7722fc9c7736/amitdhoju-meroshare-0.1.0.tgz","_integrity":"sha512-RCNYc/0egZcCs9xvRF8DtY5UoE/rgWdklO+bajbT1KcjubRBbL4L5khOxoUcSNB6tJF+V4g13olqY3T/qYWpMw==","_npmVersion":"10.9.4","description":"Type-safe Meroshare API client for login, IPO application, and applied IPO lookup","directories":{},"_nodeVersion":"22.21.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.3","tsup":"^8.3.5","typescript":"^5.7.2","@types/node":"^25.9.1","@biomejs/biome":"^1.9.4","@changesets/cli":"^2.27.10"},"_npmOperationalInternal":{"tmp":"tmp/meroshare_0.1.0_1781079081642_0.020293067273852827","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@amitdhoju/meroshare","version":"0.3.0","description":"Type-safe Meroshare API client for login, IPO application, and applied IPO lookup","type":"module","main":"./dist/index.cjs","module":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"bin":{"meroshare":"dist/cli.js"},"keywords":["meroshare","cdsc","nepal","ipo","share","stock"],"author":{"name":"amitdhoju"},"license":"MIT","devDependencies":{"@biomejs/biome":"^1.9.4","@changesets/cli":"^2.27.10","@types/node":"^25.9.1","tsup":"^8.3.5","tsx":"^4.22.3","typescript":"^5.7.2"},"engines":{"node":">=20"},"publishConfig":{"access":"public"},"scripts":{"build":"tsup","dev":"tsup --watch","cli":"tsx src/cli.ts","lint":"biome check .","format":"biome format --write .","check":"biome check --write .","changeset":"changeset","version":"changeset version","release":"npm run build && changeset publish","release:full":"npm run build && npm run changeset && npm run version && npm run release","demo":"tsx demo/index.ts","mock-server":"tsx src/mock-server.ts","mock-server:watch":"tsx --watch src/mock-server.ts","mock-examples":"tsx examples/mock-usage.ts"},"_id":"@amitdhoju/meroshare@0.3.0","_integrity":"sha512-sN3nRs5nu+LfKHQYIBtADP4RMpNxbtVRnXXCvrnuY1UdMbfrE7agMp5AAAaHpdVWunUlKOFcbuGOF56JnhE4kQ==","_resolved":"/private/var/folders/g1/mz2j4_6n7h74vjfk9zv7z9x00000gn/T/b4a2e5486bee9bd7fd6675593769fdcd/amitdhoju-meroshare-0.3.0.tgz","_from":"file:amitdhoju-meroshare-0.3.0.tgz","_nodeVersion":"22.21.1","_npmVersion":"10.9.4","dist":{"integrity":"sha512-sN3nRs5nu+LfKHQYIBtADP4RMpNxbtVRnXXCvrnuY1UdMbfrE7agMp5AAAaHpdVWunUlKOFcbuGOF56JnhE4kQ==","shasum":"2ddff9db8c0a5d4d7710842cf0683a0f98c93e03","tarball":"https://registry.npmjs.org/@amitdhoju/meroshare/-/meroshare-0.3.0.tgz","fileCount":9,"unpackedSize":251744,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIC9DLkyQxfj2DqC9wzo4wrIH3Qqx1eCu/RQ1C14bQExIAiEAkQesHsjkC6yZlrBwZvrX9pC6yO7tWYPJ6OEpvh5HgFQ="}]},"_npmUser":{"name":"amitdhoju","email":"amitdhoju@gmail.com"},"directories":{},"maintainers":[{"name":"amitdhoju","email":"amitdhoju@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/meroshare_0.3.0_1782212447700_0.9154557632138782"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-30T10:14:41.101Z","modified":"2026-06-23T11:00:47.949Z","0.0.1":"2026-05-30T10:14:41.503Z","0.0.2":"2026-05-30T10:18:04.590Z","0.0.3":"2026-05-30T10:19:17.194Z","0.0.4":"2026-05-30T10:55:11.109Z","0.0.5":"2026-05-30T12:31:51.777Z","0.0.6":"2026-06-01T06:42:00.429Z","0.1.0":"2026-06-10T08:11:21.774Z","0.3.0":"2026-06-23T11:00:47.839Z"},"author":{"name":"amitdhoju"},"license":"MIT","keywords":["meroshare","cdsc","nepal","ipo","share","stock"],"description":"Type-safe Meroshare API client for login, IPO application, and applied IPO lookup","maintainers":[{"name":"amitdhoju","email":"amitdhoju@gmail.com"}],"readme":"# @amitdhoju/meroshare\n\nType-safe Meroshare API client for Node.js. Supports login, portfolio, IPO application, and more. Uses the native `fetch` API — zero runtime dependencies.\n\n## What's New\n\n- **Credential Caching** — Save BOID + password and CRN + PIN with master PIN encryption. Load credentials automatically on next login/apply.\n- **View Credentials** — Menu option `[v]` to view saved credentials (passwords masked).\n- **Recent Applications Status** — Menu option `[b]` to quickly view status of last 10 IPO applications (selected, applied, rejected).\n- **Save Output to File** — Export any menu output to JSON. Saves to `~/.meroshare-exports/`.\n- **Clean Table Display** — All data now shows in formatted tables with `console.table()` — no more JSON dumps in the CLI.\n\n## Installation\n\n```bash\nnpm install @amitdhoju/meroshare\n```\n\n## Requirements\n\n- Node.js >= 20\n\n## CLI\n\nRun the interactive menu without writing any code:\n\n```bash\nnpx @amitdhoju/meroshare\n```\n\nOr install globally:\n\n```bash\nnpm install -g @amitdhoju/meroshare\nmeroshare\n```\n\nThe CLI is menu-driven and stays open until you exit. It automatically restores your session on startup (valid for 15 minutes).\n\n**Not logged in — guest menu:**\n\n```\n── Meroshare ──────────────────────────────────────\n  [1] Login\n  [0] Exit\n──────────────────────────────────────────────────\nChoose:\n```\n\nSelecting `[1]` prompts for your DP Code (or numeric Client ID), BOID username, and password.\n\n**Logged in — main menu:**\n\n```\n── Meroshare ──────────────────────────────────────\n  [1]  Own Detail\n  [2]  Portfolio\n  [3]  Applicable Issues  (open for application)\n  [4]  Current Issues     (all open on market)\n  [5]  Issue Detail       (enter ID)\n  [6]  Applications / Applied IPOs\n  [b]  Recent Applications Status (last 10)\n  [a]  Apply IPO\n  [7]  Banks\n  [8]  Bank Accounts      (enter bank ID)\n  [v]  View Credentials\n  [h]  Help\n  [9]  Logout\n  [0]  Exit\n──────────────────────────────────────────────────\nChoose:\n```\n\n**Key Features:**\n\n- **Menu options [1-8]** — View account, portfolio, issues, applications, and banks\n- **Option [a]** — Guided IPO application flow with credential caching\n- **Option [b]** — Quick view of recent 10 application statuses (selected ✓ / applied • / rejected ✗)\n- **Option [v]** — View saved credentials (passwords masked)\n- **Save output** — After any menu option, you're prompted to save output as JSON to `~/.meroshare-exports/`\n- **Formatted tables** — All data displays in clean, aligned tables\n- **Credential persistence** — Saves and loads login/apply credentials with master PIN protection (4-6 digits)\n- **Session caching** — Token cached for 15 minutes in `~/.meroshare-session.json`\n\nOptions `[5]` and `[8]` prompt for an ID before fetching. Selecting `[9]` logs out; `[0]` or Ctrl+C exits.\n\n## CLI Features\n\n### Credential Caching\n\nSave your login and application credentials locally (encrypted with master PIN):\n\n- After login, you're prompted: \"Save these credentials for next time? [y/N]:\"\n- Set a 4-6 digit master PIN to encrypt credentials\n- Next login, you're prompted: \"Use saved credentials? [y/N]:\"\n- Enter your master PIN to decrypt and use saved BOID + password\n- Same workflow for CRN + PIN during IPO applications\n- Credentials stored in `~/.meroshare-creds.json` (AES-256-GCM encrypted)\n- View saved credentials anytime with menu option `[v]` (passwords masked)\n\n### Export Data\n\nAfter any menu option, you're prompted: \"Save output to file? [y/N]:\"\n\n- Exports as formatted JSON to `~/.meroshare-exports/[type]-[timestamp].json`\n- Works for: portfolio, issues, applications, banks, account details, etc.\n- Keep records of your applications and holdings\n\n### Recent Applications Status\n\nMenu option `[b]` shows your last 10 IPO applications with quick status view:\n\n```\nStatus Legend: ✓ Selected/Allotted | • Applied | ✗ Rejected/Not Selected\n\n┌────────┬──────┬────────────────────────┬──────────────┬────────────────┐\n│ Status │ ID   │ Scrip                  │ Company      │ Share Status   │\n├────────┼──────┼────────────────────────┼──────────────┼────────────────┤\n│ ✓ Sel. │ 1001 │ SAMPLE                 │ Sample Ltd   │ Allotted       │\n│ • App. │ 1002 │ TEST                   │ Test Inc     │ Applied        │\n│ ✗ Rej. │ 1003 │ DEMO                   │ Demo Corp    │ Not Selected   │\n└────────┴──────┴────────────────────────┴──────────────┴────────────────┘\n```\n\n## Quick Start\n\nNo config files or env vars needed — credentials are passed directly.\n\n```ts\nimport { MeroshareClient, MeroshareError } from \"@amitdhoju/meroshare\";\n\nconst client = new MeroshareClient();\n\n// Step 1: find your numeric clientId from the DP list (one-time lookup)\nconst dps = await client.getDPList();\nconst { id: clientId } = client.getDPId(\"13010\", dps); // your DP code string\n\n// Step 2: login — token is stored internally on the client instance\nawait client.login(clientId, \"00549011\", \"your-password\");\n\n// Step 3: call any endpoint\nconst me = await client.getOwnDetail();\nconst portfolio = await client.getPortfolio(me.demat, me.clientCode);\n\n// Step 4: logout when done\nawait client.logout();\n```\n\n### JavaScript (ESM)\n\n```js\nimport { MeroshareClient } from \"@amitdhoju/meroshare\";\n\nconst client = new MeroshareClient();\nconst dps = await client.getDPList();\nconst { id: clientId } = client.getDPId(\"13010\", dps);\nawait client.login(clientId, \"00549011\", \"your-password\");\nconst me = await client.getOwnDetail();\nconsole.log(me.name, me.demat);\nawait client.logout();\n```\n\n### JavaScript (CommonJS)\n\n```js\nconst { MeroshareClient } = require(\"@amitdhoju/meroshare\");\n\n// top-level await not available in CJS — wrap in async function\nasync function main() {\n  const client = new MeroshareClient();\n  const dps = await client.getDPList();\n  const { id: clientId } = client.getDPId(\"13010\", dps);\n  await client.login(clientId, \"00549011\", \"your-password\");\n  const me = await client.getOwnDetail();\n  console.log(me.name);\n  await client.logout();\n}\n\nmain().catch(console.error);\n```\n\n### If you already know your clientId\n\nIf you've run `getDPList()` before and know your numeric clientId (e.g. `164`), skip the lookup:\n\n```ts\nconst client = new MeroshareClient();\nawait client.login(164, \"00549011\", \"your-password\");\n```\n\n### Persisting the session token\n\nTo avoid re-logging in on every run (e.g. in a serverless function or cron job):\n\n```ts\nimport { MeroshareClient } from \"@amitdhoju/meroshare\";\n\n// After first login, save the token somewhere (env, DB, secrets manager, etc.)\nconst client = new MeroshareClient();\nawait client.login(164, \"00549011\", \"your-password\");\nconst token = client.getToken(); // save this\n\n// On the next run, restore the token instead of logging in again\nconst client2 = new MeroshareClient();\nclient2.setToken(token!);\nconst me = await client2.getOwnDetail(); // works immediately\n```\n\n### Error handling\n\n```ts\nimport { MeroshareClient, MeroshareError } from \"@amitdhoju/meroshare\";\n\nconst client = new MeroshareClient();\ntry {\n  await client.login(164, \"00549011\", \"wrong-password\");\n} catch (e) {\n  if (e instanceof MeroshareError) {\n    console.log(e.status);  // HTTP status code, e.g. 401\n    console.log(e.message); // clean message from the server\n  }\n}\n```\n\n## API Reference\n\n### `MeroshareClient`\n\nAll methods require login first, except `getDPList`.\n\n---\n\n#### Auth\n\n##### `getDPList(): Promise<DP[]>`\n\nFetch all registered depository participants (brokers). Use this to find your `clientId`.\n\n**Endpoint:** `GET /meroShare/capital/`\n\n```ts\nconst dps = await client.getDPList();\n// [{ code: \"13010\", id: 164, name: \"Nabil Investment Banking Ltd.\" }, ...]\n```\n\n---\n\n##### `login(clientId, username, password): Promise<LoginResponse>`\n\nLogin and store the session token internally.\n\n**Endpoint:** `POST /meroShare/auth/`\n\n```ts\nawait client.login(164, \"00549011\", \"your-password\");\n```\n\n---\n\n##### `getOwnDetail(): Promise<OwnDetail>`\n\nFetch the logged-in user's profile (boid, demat, clientCode, etc).\n\n**Endpoint:** `GET /meroShare/ownDetail/`\n\n```ts\nconst detail = await client.getOwnDetail();\n// { boid, demat, clientCode, name, email, ... }\n```\n\n---\n\n##### `logout(): Promise<void>`\n\nLogout and clear the stored token.\n\n**Endpoint:** `GET /meroShare/logout/`\n\n---\n\n#### Portfolio\n\n##### `getPortfolio(demat, clientCode, options?): Promise<PortfolioResponse>`\n\nFetch the user's stock portfolio.\n\n**Endpoint:** `POST /meroShareView/myPortfolio/`\n\n| Option | Type   | Default | Description      |\n| ------ | ------ | ------- | ---------------- |\n| `page` | number | `1`     | Page number      |\n| `size` | number | `200`   | Results per page |\n\n```ts\nconst portfolio = await client.getPortfolio(detail.demat, detail.clientCode);\n// { meroShareMyPortfolio: [...], totalItems, totalValueOfLastTransPrice, ... }\n```\n\n---\n\n#### Issues\n\n##### `getApplicableIssues(options?): Promise<IssueListResponse>`\n\nFetch IPO/FPO issues currently open for application.\n\n**Endpoint:** `POST /meroShare/companyShare/applicableIssue/`\n\n```ts\nconst { object: issues } = await client.getApplicableIssues();\n// [{ companyShareId, scrip, companyName, shareTypeName, ... }]\n```\n\n---\n\n##### `getCurrentIssues(options?): Promise<IssueListResponse>`\n\nFetch all currently open share issues.\n\n**Endpoint:** `POST /meroShare/companyShare/currentIssue`\n\n---\n\n##### `getIssueDetail(companyShareId): Promise<IssueDetail>`\n\nFetch details for a specific issue (min/max units, share value, etc).\n\n**Endpoint:** `GET /meroShare/active/:companyShareId`\n\n```ts\nconst detail = await client.getIssueDetail(787);\n// { minUnit, maxUnit, multipleOf, shareValue, scrip, ... }\n```\n\n---\n\n#### Applications\n\n##### `getApplications(options?): Promise<ApplicationsResponse>`\n\nFetch all IPO/FPO applications submitted by the logged-in user.\n\n**Endpoint:** `POST /meroShare/applicantForm/active/search/`\n\n```ts\nconst { object: apps } = await client.getApplications();\n// [{ companyShareId, scrip, companyName, statusName, applicantFormId, ... }]\n```\n\n---\n\n##### `checkAlreadyApplied(companyShareId): Promise<boolean>`\n\nCheck whether the user has already applied for a specific issue.\n\n**Endpoint:** `POST /meroShare/applicantForm/active/search/`\n\n```ts\nconst applied = await client.checkAlreadyApplied(787);\n```\n\n---\n\n##### `getAppliedIPOs(options?): Promise<AppliedIPOsResponse>`\n\nFetch the applied IPO history report.\n\n**Endpoint:** `POST /meroShare/applicantForm/report/applied/search/`\n\n```ts\nconst { object: history } = await client.getAppliedIPOs({ page: 1, size: 20 });\n// [{ companyName, appliedKitta, appliedDate, statusName, ... }]\n```\n\n---\n\n#### Banks\n\n##### `getBankList(): Promise<Bank[]>`\n\nFetch the user's linked banks.\n\n**Endpoint:** `GET /meroShare/bank/`\n\n```ts\nconst banks = await client.getBankList();\n// [{ id: 37, code: \"401\", name: \"Nabil Bank Ltd.\" }]\n```\n\n---\n\n##### `getBankAccounts(bankId): Promise<BankAccount[]>`\n\nFetch accounts for a specific bank.\n\n**Endpoint:** `GET /meroShare/bank/:bankId`\n\n```ts\nconst accounts = await client.getBankAccounts(37);\n// [{ id, accountNumber, accountBranchId, accountTypeId, accountTypeName, branchName }]\n```\n\n---\n\n#### Apply\n\n##### `applyIPO(payload): Promise<ApplyIPOResponse>`\n\nApply for an open IPO/FPO.\n\n**Endpoint:** `POST /meroShare/applicantForm/share/apply`\n\n```ts\nawait client.applyIPO({\n  demat: detail.demat,\n  boid: detail.boid,\n  accountNumber: bankAccount.accountNumber,\n  customerId: bankAccount.id,\n  accountBranchId: bankAccount.accountBranchId,\n  accountTypeId: bankAccount.accountTypeId,\n  appliedKitta: \"10\",\n  crnNumber: \"your-crn\",\n  transactionPIN: \"1234\",\n  companyShareId: \"787\",\n  bankId: \"37\",\n});\n```\n\n---\n\n#### Helpers\n\n##### `getDPId(dpCode, dpList): { id: number; name: string }`\n\nFind a DP's numeric `id` and `name` from a list by its string code.\n\n```ts\nconst { id, name } = client.getDPId(\"13010\", dps);\n```\n\n---\n\n## All Endpoints\n\n| Method | Endpoint                                          | Description               |\n| ------ | ------------------------------------------------- | ------------------------- |\n| GET    | `/meroShare/capital/`                             | DP / broker list          |\n| POST   | `/meroShare/auth/`                                | Login                     |\n| GET    | `/meroShare/ownDetail/`                           | Logged-in user profile    |\n| GET    | `/meroShare/logout/`                              | Logout                    |\n| POST   | `/meroShareView/myPortfolio/`                     | Portfolio                 |\n| POST   | `/meroShare/companyShare/applicableIssue/`        | Open IPOs for application |\n| POST   | `/meroShare/companyShare/currentIssue`            | All current issues        |\n| GET    | `/meroShare/active/:id`                           | Issue detail              |\n| POST   | `/meroShare/applicantForm/active/search/`         | My applications           |\n| POST   | `/meroShare/applicantForm/report/applied/search/` | Applied IPO history       |\n| GET    | `/meroShare/bank/`                                | Linked banks              |\n| GET    | `/meroShare/bank/:bankId`                         | Bank accounts             |\n| POST   | `/meroShare/applicantForm/share/apply`            | Apply for IPO             |\n\nAll endpoints use base URL: `https://webbackend.cdsc.com.np/api`\n\n## License\n\nMIT\n","readmeFilename":"README.md"}