{"_id":"@altaga/hac-cli","_rev":"2-a2e3aca441289de98abb750f5019e5b1","name":"@altaga/hac-cli","dist-tags":{"latest":"1.0.1"},"versions":{"1.0.0":{"name":"@altaga/hac-cli","version":"1.0.0","keywords":["hac","hedera","cloudflare","workers","nextjs","opennext","deploy","cli"],"author":{"name":"Altaga"},"license":"MIT","_id":"@altaga/hac-cli@1.0.0","maintainers":[{"name":"altaga","email":"v.a.i@hotmail.com"}],"bin":{"hac":"dist/bin/hac.js"},"dist":{"shasum":"6505967b6ba99992e3b5f13a68ba63ff8e438403","tarball":"https://registry.npmjs.org/@altaga/hac-cli/-/hac-cli-1.0.0.tgz","fileCount":18,"integrity":"sha512-uTGY7We4bAim0CaL2OON7LAAlRMj9yWo8O8UmiLJ/ATz8xBvkKpQWY9tTrxRm4iBWokdfE56+d4lMJGC6kfmQA==","signatures":[{"sig":"MEYCIQDPlfA0I3WlibE0rWq7qI/lrRUdFyM2ZM5pUMp5pcyQvQIhAPWxgGVZZWc1AdQD0R5BWsjLb1PkDQIu+L3nwtZ+UQP6","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":49511},"main":"dist/index.js","type":"commonjs","engines":{"node":">=18"},"scripts":{"test":"node test/test_smoke.js","build":"babel src --out-dir dist --extensions \".js\" --copy-files","prepack":"npm run build","release":"node scripts/publish.mjs","pack:check":"node scripts/pack-check.mjs","ensure-scope":"node scripts/ensure-scope.mjs","prepublishOnly":"npm test && npm run pack:check"},"_npmUser":{"name":"altaga","email":"v.a.i@hotmail.com"},"_npmVersion":"11.12.1","description":"Deploy static sites and Cloudflare Workers to Hedera Ambassadors Cloud (HAC).","directories":{},"_nodeVersion":"22.13.1","dependencies":{"esbuild":"0.25.12"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@babel/cli":"^7.28.6","@babel/core":"^7.29.0","@babel/preset-env":"^7.29.3"},"_npmOperationalInternal":{"tmp":"tmp/hac-cli_1.0.0_1786348870694_0.005999294599153826","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@altaga/hac-cli","version":"1.0.1","description":"Deploy static sites and Cloudflare Workers to Hedera Ambassadors Cloud (HAC).","type":"commonjs","main":"dist/index.js","bin":{"hac":"dist/hac.js"},"sideEffects":false,"engines":{"node":">=18"},"scripts":{"build":"node scripts/build.mjs","prepack":"npm run build","prepublishOnly":"npm test && npm run pack:check","pack:check":"node scripts/pack-check.mjs","ensure-scope":"node scripts/ensure-scope.mjs","release":"node scripts/publish.mjs","test":"npm run build && node test/test_smoke.js","hac":"node src/bin/hac.js"},"keywords":["hac","hedera","cloudflare","workers","nextjs","opennext","deploy","cli"],"author":{"name":"Altaga"},"license":"MIT","publishConfig":{"access":"public"},"dependencies":{"esbuild":"0.25.12"},"_id":"@altaga/hac-cli@1.0.1","_nodeVersion":"22.13.1","_npmVersion":"11.12.1","dist":{"integrity":"sha512-4SfMgsTkicTfDPTD7yj3+qymeIoKAnkf473m/U88yYJxo9AlgSe5t8h2qrGyof1mBb0gJJyFCm0/2XUKWgb1Mg==","shasum":"aca0b7f64d324e79901f6336522d269c93287f32","tarball":"https://registry.npmjs.org/@altaga/hac-cli/-/hac-cli-1.0.1.tgz","fileCount":5,"unpackedSize":42086,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCAXC62P5A4lXkvntRe/gcKclEqH1AadDaPc+depfw6cAIgUnK1DPTY0WOnafTYWneu0On1p1EjZ4KFilKwUQ0CpFc="}]},"_npmUser":{"name":"altaga","email":"v.a.i@hotmail.com"},"directories":{},"maintainers":[{"name":"altaga","email":"v.a.i@hotmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/hac-cli_1.0.1_1786349141266_0.16631602878244323"},"_hasShrinkwrap":false}},"time":{"created":"2026-08-10T08:01:10.468Z","modified":"2026-08-10T08:05:41.551Z","1.0.0":"2026-08-10T08:01:10.846Z","1.0.1":"2026-08-10T08:05:41.395Z"},"author":{"name":"Altaga"},"license":"MIT","keywords":["hac","hedera","cloudflare","workers","nextjs","opennext","deploy","cli"],"description":"Deploy static sites and Cloudflare Workers to Hedera Ambassadors Cloud (HAC).","maintainers":[{"name":"altaga","email":"v.a.i@hotmail.com"}],"readme":"# @altaga/hac-cli\n\nPush **static sites**, **Worker functions** (with the Hiero/Hashgraph SDK), and\nfull **Next.js SSR** apps to **Hedera Ambassadors Cloud (HAC)** from your terminal.\n\nOne app = one dedicated Worker. Each app also gets scoped D1 + KV, reachable\nfrom your Worker via `env.hac`.\n\n## Install\n\n```bash\nnpm i -g @altaga/hac-cli\n# or per-project\nnpm i -D @altaga/hac-cli\n```\n\n## Quick start\n\n```bash\nnpm i -D @altaga/hac-cli\nnpx hac login --api https://your-hac-api.example --key hac_xxx\nnpx hac init --app-id app_123\nnpx hac deploy\n```\n\nInside a project, `hac login` defaults to **project-local** (`./.hac/config.json`).\nUse `--global` for `~/.hac/config.json`.\n\nYou can also use env vars (recommended for CI):\n\n```bash\nHAC_API_URL=https://your-hac-api.example\nHAC_TOKEN=hac_xxx\n```\n\nResolve order: `--key` / `--api` → env → `.env.local` → `./.hac` → `~/.hac`.\n\nNo provider URL is baked into this package — configure your operator endpoint via login or env.\n\n## Commands\n\n| Command | What it does |\n| --- | --- |\n| `hac login` | Save `hac_*` key. Default: `./.hac` in a project, `~/.hac` otherwise. `--local` / `--global`. |\n| `hac logout` | Clear saved credentials (`--local` / `--global`). |\n| `hac whoami` | Show the logged-in account + which store was used. |\n| `hac init` | Create `hac.json`. `--create --name --subdomain --worker --app-id --build --build-command --framework --force`. |\n| `hac deploy` | Build, upload the static site, deploy the Worker. `--skip-build`, `--static`. |\n\n## `hac.json`\n\n```json\n{\n  \"appId\": \"app_123\",\n  \"hostname\": \"myapp.example.com\",\n  \"framework\": \"static\",\n  \"buildDir\": \"dist\",\n  \"buildCommand\": \"npm run build\",\n  \"workerEntry\": \"src/worker.js\",\n  \"secrets\": [\"HEDERA_OPERATOR_KEY\"]\n}\n```\n\n`secrets` are read from the matching environment variables at deploy time and\npushed as encrypted Worker bindings (their values never touch `hac.json`).\n\n## Worker functions\n\nAny ESM `export default { fetch }` entry works. The platform keeps\n`@hashgraph/sdk` external and injects it at runtime, plus an `env.hac` helper for\nscoped storage. See [`examples/worker.js`](./examples/worker.js).\n\n```js\nimport { Client, AccountBalanceQuery, AccountId } from \"@hashgraph/sdk\";\n\nexport default {\n  async fetch(request, env) {\n    // env.hac.db.query(...) / env.hac.kv.get(...) / env.hac.assets.serve(request)\n    return env.hac.assets.serve(request);\n  },\n};\n```\n\n## Next.js (SSR)\n\n```bash\nnpm i -D @opennextjs/cloudflare\nhac init --framework nextjs\nhac deploy\n```\n\n`hac deploy` runs `opennextjs-cloudflare build`, uploads `.open-next/assets`\nvia Cloudflare Workers Assets, and deploys the asset-backed Worker. Free tier\nallows 10ms CPU/request — very heavy SSR pages may hit that limit.\n\n## Programmatic use\n\nThe same logic is importable (built to CommonJS in `dist/`):\n\n```js\nconst { HacApi, deploy } = require(\"hac-cli\");\n```\n\n## Develop\n\n```bash\nnpm install\nnpm run build   # babel src -> dist\nnpm test        # smoke test against dist\n```\n\n## License\n\nMIT\n","readmeFilename":"README.md"}