permaweb-deploy 4.0.0 → 5.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +174 -511
- package/dist/chunks/chalk-BP_cCc9v.js +49 -0
- package/dist/chunks/chalk-BP_cCc9v.js.map +1 -0
- package/dist/chunks/{display-WYdGiMxZ.js → display-CZV6KUcG.js} +2 -2
- package/dist/chunks/{display-WYdGiMxZ.js.map → display-CZV6KUcG.js.map} +1 -1
- package/dist/chunks/upload-workflow-f3hExxtV.js +620 -0
- package/dist/chunks/upload-workflow-f3hExxtV.js.map +1 -0
- package/dist/chunks/{uploader-CC-qBdlV.js → uploader-Bz9jraY2.js} +15 -17
- package/dist/chunks/uploader-Bz9jraY2.js.map +1 -0
- package/dist/commands/deploy.js +72 -98
- package/dist/commands/deploy.js.map +1 -1
- package/dist/commands/hyperbeam-uploaders.js +48 -0
- package/dist/commands/hyperbeam-uploaders.js.map +1 -0
- package/dist/commands/upload.js +11 -12
- package/dist/commands/upload.js.map +1 -1
- package/dist/constants/flags.js +66 -97
- package/dist/constants/flags.js.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/prompts/names.js +13 -0
- package/dist/prompts/names.js.map +1 -0
- package/dist/src/commands/deploy.d.ts +1 -1
- package/dist/src/commands/deploy.d.ts.map +1 -1
- package/dist/src/commands/hyperbeam-uploaders.d.ts +14 -0
- package/dist/src/commands/hyperbeam-uploaders.d.ts.map +1 -0
- package/dist/src/commands/upload.d.ts +1 -1
- package/dist/src/commands/upload.d.ts.map +1 -1
- package/dist/src/constants/flags.d.ts +271 -100
- package/dist/src/constants/flags.d.ts.map +1 -1
- package/dist/src/index.d.ts +2 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/prompts/names.d.ts +2 -0
- package/dist/src/prompts/names.d.ts.map +1 -0
- package/dist/src/types/index.d.ts +0 -29
- package/dist/src/types/index.d.ts.map +1 -1
- package/dist/src/utils/__tests__/hyperbeam-uploaders-cli.test.d.ts +2 -0
- package/dist/src/utils/__tests__/hyperbeam-uploaders-cli.test.d.ts.map +1 -0
- package/dist/src/utils/__tests__/names.test.d.ts +2 -0
- package/dist/src/utils/__tests__/names.test.d.ts.map +1 -0
- package/dist/src/utils/__tests__/permawebos-bundlers.test.d.ts +2 -0
- package/dist/src/utils/__tests__/permawebos-bundlers.test.d.ts.map +1 -0
- package/dist/src/utils/config-resolver.d.ts +29 -11
- package/dist/src/utils/config-resolver.d.ts.map +1 -1
- package/dist/src/utils/constants.d.ts +0 -2
- package/dist/src/utils/constants.d.ts.map +1 -1
- package/dist/src/utils/hyperbeam-uploader.d.ts +7 -0
- package/dist/src/utils/hyperbeam-uploader.d.ts.map +1 -1
- package/dist/src/utils/hyperbeam-uploaders-cli.d.ts +7 -0
- package/dist/src/utils/hyperbeam-uploaders-cli.d.ts.map +1 -0
- package/dist/src/utils/legacy-bundler-uploader.d.ts +29 -0
- package/dist/src/utils/legacy-bundler-uploader.d.ts.map +1 -0
- package/dist/src/utils/names.d.ts +46 -0
- package/dist/src/utils/names.d.ts.map +1 -0
- package/dist/src/utils/permawebos-bundlers.d.ts +28 -0
- package/dist/src/utils/permawebos-bundlers.d.ts.map +1 -0
- package/dist/src/utils/signer.d.ts +4 -6
- package/dist/src/utils/signer.d.ts.map +1 -1
- package/dist/src/utils/uploader.d.ts +5 -7
- package/dist/src/utils/uploader.d.ts.map +1 -1
- package/dist/src/utils/validators.d.ts +13 -20
- package/dist/src/utils/validators.d.ts.map +1 -1
- package/dist/src/workflows/upload-workflow.d.ts +3 -4
- package/dist/src/workflows/upload-workflow.d.ts.map +1 -1
- package/dist/tests/mocks/{turbo-handlers.d.ts → legacy-handlers.d.ts} +12 -27
- package/dist/tests/mocks/legacy-handlers.d.ts.map +1 -0
- package/dist/tests/setup.d.ts +2 -2
- package/dist/tests/setup.d.ts.map +1 -1
- package/dist/tests/types/payment-service.d.ts +2 -2
- package/dist/tests/types/payment-service.d.ts.map +1 -1
- package/dist/tests/types/upload-service.d.ts +1 -1
- package/dist/tests/types/upload-service.d.ts.map +1 -1
- package/dist/utils/config-resolver.js +4 -1
- package/dist/utils/config-resolver.js.map +1 -1
- package/dist/utils/constants.js +1 -3
- package/dist/utils/constants.js.map +1 -1
- package/dist/utils/hyperbeam-uploaders-cli.js +32 -0
- package/dist/utils/hyperbeam-uploaders-cli.js.map +1 -0
- package/dist/utils/names.js +157 -0
- package/dist/utils/names.js.map +1 -0
- package/dist/utils/permawebos-bundlers.js +120 -0
- package/dist/utils/permawebos-bundlers.js.map +1 -0
- package/dist/utils/signer.js +3 -2
- package/dist/utils/signer.js.map +1 -1
- package/dist/utils/uploader.js +1 -1
- package/dist/utils/validators.js +3 -39
- package/dist/utils/validators.js.map +1 -1
- package/dist/workflows/upload-workflow.js +5 -6
- package/dist/workflows/upload-workflow.js.map +1 -1
- package/package.json +5 -5
- package/dist/chunks/upload-workflow-BnN8mhkm.js +0 -1195
- package/dist/chunks/upload-workflow-BnN8mhkm.js.map +0 -1
- package/dist/chunks/uploader-CC-qBdlV.js.map +0 -1
- package/dist/prompts/arns.js +0 -89
- package/dist/prompts/arns.js.map +0 -1
- package/dist/src/prompts/arns.d.ts +0 -13
- package/dist/src/prompts/arns.d.ts.map +0 -1
- package/dist/tests/mocks/turbo-handlers.d.ts.map +0 -1
package/README.md
CHANGED
|
@@ -1,361 +1,278 @@
|
|
|
1
1
|
# Permaweb Deploy
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
`permaweb-deploy` uploads static sites, folders, or individual files to Arweave and can optionally update a Permaweb Name `~reference@1.0` ref value with the deployed transaction or manifest ID.
|
|
4
|
+
|
|
5
|
+
The CLI uses legacy ANS-104 bundlers for the default upload path, supports HyperBEAM bundlers when selected explicitly, and publishes names updates through [`@permaweb/references`](https://www.npmjs.com/package/@permaweb/references).
|
|
6
|
+
|
|
7
|
+
## Table of Contents
|
|
8
|
+
|
|
9
|
+
- [Features](#features)
|
|
10
|
+
- [Quick Start](#quick-start)
|
|
11
|
+
- [Installation Options](#installation-options)
|
|
12
|
+
- [Prerequisites](#prerequisites)
|
|
13
|
+
- [CLI Usage](#cli-usage)
|
|
14
|
+
- [Names Publishing](#names-publishing)
|
|
15
|
+
- [Bundlers](#bundlers)
|
|
16
|
+
- [Command Options](#command-options)
|
|
17
|
+
- [Deduplication](#deduplication)
|
|
18
|
+
- [Package Scripts](#package-scripts)
|
|
19
|
+
- [GitHub Action](#github-action)
|
|
20
|
+
- [Development](#development)
|
|
21
|
+
- [Troubleshooting](#troubleshooting)
|
|
22
|
+
- [Dependencies](#dependencies)
|
|
23
|
+
- [License](#license)
|
|
4
24
|
|
|
5
25
|
## Features
|
|
6
26
|
|
|
7
|
-
- **
|
|
8
|
-
- **
|
|
9
|
-
- **
|
|
10
|
-
- **
|
|
11
|
-
- **
|
|
12
|
-
- **
|
|
13
|
-
- **
|
|
14
|
-
- **Network Support:** Supports mainnet, testnet, and custom ARIO process IDs
|
|
15
|
-
- **Flexible Deployment:** Supports deploying a folder or a single file
|
|
16
|
-
- **Modern CLI:** Built with oclif for a robust command-line experience
|
|
17
|
-
- **TypeScript:** Fully typed for better developer experience
|
|
27
|
+
- **Arweave uploads:** Upload a folder or a single file.
|
|
28
|
+
- **Names publishing:** Update a Permaweb Names reference-id's value after upload.
|
|
29
|
+
- **Legacy bundler uploads:** Use legacy ANS-104 upload endpoints by default.
|
|
30
|
+
- **HyperBEAM uploads:** Sign ANS-104 items and post them to a HyperBEAM bundler route.
|
|
31
|
+
- **Arweave manifests:** Create manifest `0.2.0` documents for folder deployments, with SPA fallback detection.
|
|
32
|
+
- **Dedupe cache:** Reuse unchanged uploads from `.permaweb-deploy/transaction-cache.json`.
|
|
33
|
+
- **GitHub Action:** Deploy from CI and optionally update a namespace reference.
|
|
18
34
|
|
|
19
|
-
##
|
|
35
|
+
## Quick Start
|
|
20
36
|
|
|
21
|
-
Install the
|
|
37
|
+
Install the CLI in your project:
|
|
22
38
|
|
|
23
39
|
```bash
|
|
24
40
|
pnpm add -D permaweb-deploy
|
|
25
41
|
```
|
|
26
42
|
|
|
27
|
-
|
|
43
|
+
Make your Arweave JWK available with either `DEPLOY_KEY` or `--wallet`:
|
|
28
44
|
|
|
29
45
|
```bash
|
|
30
|
-
|
|
46
|
+
export DEPLOY_KEY=$(base64 -i wallet.json)
|
|
31
47
|
```
|
|
32
48
|
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
```bash
|
|
36
|
-
yarn add --dev permaweb-deploy
|
|
37
|
-
```
|
|
38
|
-
|
|
39
|
-
## Prerequisites
|
|
40
|
-
|
|
41
|
-
1. **For Arweave signer (default):** Encode your Arweave wallet key in base64 format and set it as a GitHub secret:
|
|
42
|
-
|
|
43
|
-
```bash
|
|
44
|
-
base64 -i wallet.json | pbcopy
|
|
45
|
-
```
|
|
46
|
-
|
|
47
|
-
2. **For Ethereum/Polygon/KYVE signers:** Use your raw private key (no encoding needed) as the `DEPLOY_KEY`.
|
|
48
|
-
3. Ensure that the secret name for the encoded wallet or private key is `DEPLOY_KEY`.
|
|
49
|
-
|
|
50
|
-
⚠️ **Important:** Use a dedicated wallet for deployments to minimize security risks. Ensure your wallet has sufficient Turbo Credits for uploads.
|
|
51
|
-
|
|
52
|
-
## Usage
|
|
53
|
-
|
|
54
|
-
### Interactive Mode (Easiest)
|
|
49
|
+
If you prefer not to export a key, pass `--wallet ./wallet.json` to the commands below.
|
|
55
50
|
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
Simply run the CLI for an interactive command selector:
|
|
51
|
+
Upload a built static folder:
|
|
59
52
|
|
|
60
53
|
```bash
|
|
61
|
-
permaweb-deploy
|
|
62
|
-
# or explicitly
|
|
63
|
-
permaweb-deploy interactive
|
|
54
|
+
permaweb-deploy upload --deploy-folder ./dist
|
|
64
55
|
```
|
|
65
56
|
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
- **Deploy to Permaweb** - Start the deployment wizard
|
|
69
|
-
- **Show Help** - Display help information
|
|
70
|
-
- **Exit** - Exit the CLI
|
|
71
|
-
|
|
72
|
-
**Interactive Deploy (Guided):**
|
|
73
|
-
|
|
74
|
-
Run the deploy command without arguments to be guided through all deployment options:
|
|
57
|
+
Deploy and update a Permaweb Name:
|
|
75
58
|
|
|
76
59
|
```bash
|
|
77
|
-
permaweb-deploy deploy
|
|
60
|
+
permaweb-deploy deploy --use-names --name my-app --deploy-folder ./dist
|
|
78
61
|
```
|
|
79
62
|
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
- ArNS name
|
|
83
|
-
- Wallet method (file, string, or environment variable)
|
|
84
|
-
- Signer type (Arweave, Ethereum, Polygon, KYVE)
|
|
85
|
-
- What to deploy (folder or file)
|
|
86
|
-
- Advanced options (optional: undername, TTL, network)
|
|
87
|
-
|
|
88
|
-
### Direct Commands
|
|
89
|
-
|
|
90
|
-
Use flags for faster, scriptable deployments:
|
|
63
|
+
Or deploy and update a direct reference ID:
|
|
91
64
|
|
|
92
65
|
```bash
|
|
93
|
-
|
|
94
|
-
permaweb-deploy deploy --wallet ./wallet.json
|
|
95
|
-
|
|
96
|
-
# Deployment with ArNS update
|
|
97
|
-
permaweb-deploy deploy --use-arns --arns-name my-app --wallet ./wallet.json
|
|
66
|
+
permaweb-deploy deploy --use-names --reference-id REFERENCE_ID --deploy-folder ./dist
|
|
98
67
|
```
|
|
99
68
|
|
|
100
|
-
|
|
69
|
+
For repeatable project scripts, add a build-and-deploy command:
|
|
101
70
|
|
|
102
|
-
```
|
|
103
|
-
|
|
71
|
+
```json
|
|
72
|
+
{
|
|
73
|
+
"scripts": {
|
|
74
|
+
"build": "vite build",
|
|
75
|
+
"deploy": "pnpm build && permaweb-deploy deploy --use-names --name my-app"
|
|
76
|
+
}
|
|
77
|
+
}
|
|
104
78
|
```
|
|
105
79
|
|
|
106
|
-
|
|
80
|
+
## Installation Options
|
|
107
81
|
|
|
108
82
|
```bash
|
|
109
|
-
|
|
83
|
+
pnpm add -D permaweb-deploy
|
|
110
84
|
```
|
|
111
85
|
|
|
112
|
-
Deploy a specific folder:
|
|
113
|
-
|
|
114
86
|
```bash
|
|
115
|
-
|
|
87
|
+
npm install --save-dev permaweb-deploy
|
|
116
88
|
```
|
|
117
89
|
|
|
118
|
-
Deploy a single file:
|
|
119
|
-
|
|
120
90
|
```bash
|
|
121
|
-
|
|
91
|
+
yarn add --dev permaweb-deploy
|
|
122
92
|
```
|
|
123
93
|
|
|
124
|
-
|
|
94
|
+
## Prerequisites
|
|
125
95
|
|
|
126
|
-
|
|
96
|
+
For the default Arweave signer, store your Arweave JWK as base64:
|
|
127
97
|
|
|
128
98
|
```bash
|
|
129
|
-
|
|
130
|
-
permaweb-deploy upload --wallet ./wallet.json --deploy-folder ./dist
|
|
131
|
-
permaweb-deploy upload --wallet ./wallet.json --deploy-file ./dist/index.html
|
|
132
|
-
DEPLOY_KEY=$(base64 -i wallet.json) permaweb-deploy upload --deploy-folder ./dist
|
|
99
|
+
base64 -i wallet.json
|
|
133
100
|
```
|
|
134
101
|
|
|
135
|
-
|
|
102
|
+
Set the encoded value as `DEPLOY_KEY`, or pass `--wallet ./wallet.json`.
|
|
136
103
|
|
|
137
|
-
|
|
104
|
+
Names updates currently require `--sig-type arweave`, because reference updates are signed as ANS-104 data items and posted to the names bundler endpoint. Ethereum, Polygon, and KYVE signers remain supported for upload-only flows.
|
|
138
105
|
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
106
|
+
Use a dedicated deployment wallet and make sure it has enough upload credits/balance for the selected legacy bundler.
|
|
107
|
+
|
|
108
|
+
## CLI Usage
|
|
142
109
|
|
|
143
|
-
|
|
110
|
+
Upload only:
|
|
144
111
|
|
|
145
112
|
```bash
|
|
146
|
-
permaweb-deploy deploy --
|
|
113
|
+
permaweb-deploy deploy --wallet ./wallet.json --deploy-folder ./dist
|
|
114
|
+
permaweb-deploy upload --wallet ./wallet.json --deploy-file ./dist/index.html
|
|
115
|
+
DEPLOY_KEY=$(base64 -i wallet.json) permaweb-deploy upload --deploy-folder ./dist
|
|
147
116
|
```
|
|
148
117
|
|
|
149
|
-
|
|
118
|
+
Upload and update a reference-id pointed value using the namespace name:
|
|
150
119
|
|
|
151
120
|
```bash
|
|
152
|
-
permaweb-deploy deploy --
|
|
121
|
+
permaweb-deploy deploy --use-names --name my-app --wallet ./wallet.json
|
|
153
122
|
```
|
|
154
123
|
|
|
155
|
-
|
|
124
|
+
Upload and update a direct reference ID:
|
|
156
125
|
|
|
157
126
|
```bash
|
|
158
|
-
permaweb-deploy deploy --
|
|
127
|
+
permaweb-deploy deploy --use-names --reference-id REFERENCE_ID --wallet ./wallet.json
|
|
159
128
|
```
|
|
160
129
|
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
Use on-demand payment to automatically fund uploads with ARIO or Base-ETH tokens when your Turbo balance is insufficient:
|
|
164
|
-
|
|
165
|
-
Deploy with ARIO on-demand payment:
|
|
130
|
+
Advanced: use a custom namespace root reference or namespace manifest ID:
|
|
166
131
|
|
|
167
132
|
```bash
|
|
168
|
-
permaweb-deploy deploy
|
|
133
|
+
permaweb-deploy deploy \
|
|
134
|
+
--use-names \
|
|
135
|
+
--name my-app \
|
|
136
|
+
--names-namespace NAMESPACE_ROOT_OR_MANIFEST_ID \
|
|
137
|
+
--wallet ./wallet.json
|
|
169
138
|
```
|
|
170
139
|
|
|
171
|
-
Deploy
|
|
140
|
+
Deploy a specific target:
|
|
172
141
|
|
|
173
142
|
```bash
|
|
174
|
-
permaweb-deploy deploy --
|
|
143
|
+
permaweb-deploy deploy --use-names --name my-app --wallet ./wallet.json --deploy-folder ./build
|
|
144
|
+
permaweb-deploy deploy --use-names --name my-app --wallet ./wallet.json --deploy-file ./path/to/file.txt
|
|
175
145
|
```
|
|
176
146
|
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
- `--on-demand`: Token to use for on-demand payment (`ario` or `base-eth`)
|
|
180
|
-
- `--max-token-amount`: Maximum token amount to spend (in native token units, e.g., `1.5` for 1.5 ARIO or `0.1` for 0.1 ETH)
|
|
147
|
+
## Names Publishing
|
|
181
148
|
|
|
182
|
-
|
|
149
|
+
`--name` resolves the name inside the configured namespace manifest and updates that reference. `--reference-id` bypasses namespace lookup and updates the reference directly.
|
|
183
150
|
|
|
184
|
-
|
|
185
|
-
2. If balance is insufficient, converts tokens to Turbo credits on-demand
|
|
186
|
-
3. Automatically adds a 10% buffer (`topUpBufferMultiplier: 1.1`) for reliability
|
|
187
|
-
4. Proceeds with upload once funded
|
|
151
|
+
The default namespace is the phase-2 namespace exported by `@permaweb/references`. Override it with `--names-namespace` when you want to publish against another namespace root reference or manifest.
|
|
188
152
|
|
|
189
|
-
|
|
153
|
+
Useful flags:
|
|
190
154
|
|
|
191
|
-
-
|
|
192
|
-
-
|
|
155
|
+
- `--use-names`: update a Permaweb Names reference after upload.
|
|
156
|
+
- `--name, -n`: namespace name to update.
|
|
157
|
+
- `--reference-id`: reference ID to update directly.
|
|
158
|
+
- `--names-namespace`: namespace root reference or manifest ID used to resolve `--name`.
|
|
159
|
+
- `--names-gateway`: gateway for reference and namespace reads. Default: `https://arweave.net`.
|
|
160
|
+
- `--names-graphql`: GraphQL endpoint for reference discovery. Default: `<names-gateway>/graphql`.
|
|
193
161
|
|
|
194
|
-
|
|
162
|
+
## Bundlers
|
|
195
163
|
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
| When to use | Example value |
|
|
199
|
-
| ------------------------- | ----------------------------------------------------------------- |
|
|
200
|
-
| **Default** (omit flag) | ArDrive production bundler — same as Turbo CLI defaults |
|
|
201
|
-
| **Arweave bundler** | `https://up.arweave.net` |
|
|
202
|
-
| **Development / staging** | `https://upload.ardrive.dev` |
|
|
203
|
-
| **Custom or self-hosted** | Your own base URL if it implements the selected uploader protocol |
|
|
204
|
-
|
|
205
|
-
**Examples:**
|
|
164
|
+
By default, uploads use the legacy ANS-104 endpoint at `https://up.arweave.net`. Pass `--uploader` to choose a different base URL.
|
|
206
165
|
|
|
207
166
|
```bash
|
|
208
|
-
# Deploy using Arweave’s bundler service
|
|
209
|
-
permaweb-deploy deploy --arns-name my-app --wallet ./wallet.json --uploader https://up.arweave.net
|
|
210
|
-
|
|
211
167
|
permaweb-deploy upload --wallet ./wallet.json --deploy-folder ./dist --uploader https://up.arweave.net
|
|
212
168
|
```
|
|
213
169
|
|
|
214
|
-
|
|
170
|
+
HyperBEAM upload:
|
|
215
171
|
|
|
216
172
|
```bash
|
|
217
173
|
permaweb-deploy upload \
|
|
218
174
|
--wallet ./wallet.json \
|
|
219
175
|
--deploy-folder ./dist \
|
|
220
|
-
--uploader-type hyperbeam
|
|
221
|
-
|
|
176
|
+
--uploader-type hyperbeam
|
|
177
|
+
```
|
|
222
178
|
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
179
|
+
When `--uploader-type hyperbeam` is set and `--uploader` is omitted, the CLI discovers active [PermawebOS HyperBEAM](https://ao.arweave.net/#/stake/bundle) uploaders and randomly selects a usable node. HyperBEAM uploads always check that the selected or pinned node wallet has more than 0 AR before posting data, because the node must be able to seed data to Arweave. Pass `--uploader https://hyperbeam.example.com` to pin a specific node and bypass discovery.
|
|
180
|
+
|
|
181
|
+
List discoverable HyperBEAM uploaders:
|
|
182
|
+
|
|
183
|
+
```bash
|
|
184
|
+
permaweb-deploy hyperbeam-uploaders
|
|
185
|
+
permaweb-deploy hyperbeam-uploaders --json
|
|
228
186
|
```
|
|
229
187
|
|
|
230
|
-
|
|
188
|
+
HyperBEAM auto-fund:
|
|
231
189
|
|
|
232
190
|
```bash
|
|
233
191
|
permaweb-deploy upload \
|
|
234
192
|
--wallet ./wallet.json \
|
|
235
193
|
--deploy-folder ./dist \
|
|
236
194
|
--uploader-type hyperbeam \
|
|
237
|
-
--uploader https://hyperbeam.example.com \
|
|
238
195
|
--hyperbeam-auto-fund
|
|
239
196
|
```
|
|
240
197
|
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
- Turbo billing and signer behavior follow Turbo.
|
|
244
|
-
- HyperBEAM uploads require an Arweave JWK signer. Before uploading, the CLI checks the node address from `/~meta@1.0/info/address` against `https://arweave.net/wallet/<address>/balance` and aborts if the bundler wallet has 0 AR. With `--hyperbeam-auto-fund`, the CLI signs each data item, asks the node's byte-pricing profile for a quote, sends AO to the node deposit address, imports that deposit through `/~ao-payment@1.0/ingest`, and waits for the uploader's balance at `/ledger~node-process@1.0/now/balance/<address>` before uploading. The default route is `/~bundler@1.0/item?codec-device=ans104@1.0`; override it with `--hyperbeam-upload-path` if your node exposes a different bundler route.
|
|
245
|
-
- `--hyperbeam-fund-amount` is an optional override for the minimum local ledger balance to ensure, in AO base units. Without it, `--hyperbeam-auto-fund` uses the node's byte-pricing quote for the signed byte count. Use `--hyperbeam-token-id` only for a non-default AO token process, and `--hyperbeam-ledger-id` only for a non-default local ledger profile.
|
|
246
|
-
- Use a **base URL only** (e.g. `https://up.arweave.net` or `https://hyperbeam.example.com`), not a path to a specific file or route.
|
|
247
|
-
|
|
248
|
-
### Command Options
|
|
249
|
-
|
|
250
|
-
**`deploy`** (upload by default, optional ArNS update):
|
|
251
|
-
|
|
252
|
-
- `--use-arns`: Update an ArNS/ANT record after upload
|
|
253
|
-
- `--arns-name, -n`: The ArNS name to update. Required when using `--use-arns`; also implies ArNS mode for backwards compatibility.
|
|
254
|
-
- `--ario-process, -p`: ARIO process to use (`mainnet`, `testnet`, or a custom process ID). Default: `mainnet`
|
|
255
|
-
- `--deploy-folder, -d`: Folder to deploy. Default: `./dist`
|
|
256
|
-
- `--deploy-file, -f`: Deploy a single file instead of a folder
|
|
257
|
-
- `--undername, -u`: ANT undername to update. Default: `@`
|
|
258
|
-
- `--ttl-seconds, -t`: TTL in seconds for the ANT record (60-86400). Default: `60`
|
|
259
|
-
- `--sig-type, -s`: Signer type for deployment. Choices: `arweave`, `ethereum`, `polygon`, `kyve`. Default: `arweave`
|
|
260
|
-
- `--wallet, -w`: Path to wallet file (JWK for Arweave, private key for Ethereum/Polygon/KYVE)
|
|
261
|
-
- `--private-key, -k`: Private key or JWK JSON string (alternative to `--wallet`)
|
|
262
|
-
- `--on-demand`: Enable on-demand payment with specified token. Choices: `ario`, `base-eth`
|
|
263
|
-
- `--max-token-amount`: Maximum token amount for on-demand payment (used with `--on-demand`)
|
|
264
|
-
- `--no-dedupe`: Disable deduplication (do not cache or reuse previous uploads)
|
|
265
|
-
- `--dedupe-cache-max-entries`: Maximum number of entries to keep in the dedupe cache (LRU). Default: `10000`
|
|
266
|
-
- `--uploader`: Base URL of the bundler service to use. See [Bundler service](#bundler-service) above.
|
|
267
|
-
- `--uploader-type`: Upload protocol to use (`turbo` or `hyperbeam`). Default: `turbo`
|
|
268
|
-
- `--hyperbeam-upload-path`: HyperBEAM bundler route. Default: `/~bundler@1.0/item?codec-device=ans104@1.0`
|
|
269
|
-
- `--hyperbeam-auto-fund`: Automatically fund the HyperBEAM local ledger before upload
|
|
270
|
-
- `--hyperbeam-fund-amount`: Optional minimum HyperBEAM local ledger balance override, in token base units
|
|
271
|
-
- `--hyperbeam-token-id`: Advanced AO token process ID override
|
|
272
|
-
- `--hyperbeam-ledger-id`: Advanced local HyperBEAM ledger ID override
|
|
273
|
-
- `--hyperbeam-ao-state-url`: AO state endpoint used while waiting for auto-fund transfer assignment. Default: `https://state.forward.computer`
|
|
198
|
+
HyperBEAM uploads require an Arweave JWK signer. The default route is `/~bundler@1.0/item?codec-device=ans104@1.0`; override it with `--hyperbeam-upload-path` if your node exposes a different route.
|
|
274
199
|
|
|
275
|
-
|
|
200
|
+
## Command Options
|
|
276
201
|
|
|
277
|
-
|
|
202
|
+
`deploy` supports upload flags plus names publishing flags:
|
|
278
203
|
|
|
279
|
-
|
|
204
|
+
- `--deploy-folder, -d`: folder to deploy. Default: `./dist`.
|
|
205
|
+
- `--deploy-file, -f`: deploy a single file instead of a folder.
|
|
206
|
+
- `--sig-type, -s`: signer type. Choices: `arweave`, `ethereum`, `polygon`, `kyve`. Default: `arweave`.
|
|
207
|
+
- `--wallet, -w`: path to wallet file.
|
|
208
|
+
- `--private-key, -k`: private key or JWK JSON string.
|
|
209
|
+
- `--no-dedupe`: disable dedupe cache.
|
|
210
|
+
- `--dedupe-cache-max-entries`: LRU cache size. Default: `10000`.
|
|
211
|
+
- `--uploader`: bundler service base URL. Legacy uploads default to `https://up.arweave.net`; HyperBEAM uploads auto-discover an active PermawebOS uploader when omitted.
|
|
212
|
+
- `--uploader-type`: upload protocol, `legacy` or `hyperbeam`. Default: `legacy`.
|
|
213
|
+
- `--hyperbeam-upload-path`: HyperBEAM bundler route.
|
|
214
|
+
- `--hyperbeam-auto-fund`: fund the HyperBEAM local ledger before upload.
|
|
215
|
+
- `--hyperbeam-fund-amount`: optional minimum HyperBEAM local ledger balance override.
|
|
216
|
+
- `--hyperbeam-token-id`: advanced AO token process ID override.
|
|
217
|
+
- `--hyperbeam-ledger-id`: advanced local HyperBEAM ledger ID override.
|
|
218
|
+
- `--hyperbeam-ao-state-url`: AO state endpoint used while waiting for auto-fund assignment.
|
|
219
|
+
- `--use-names`, `--name`, `--reference-id`, `--names-namespace`, `--names-gateway`, `--names-graphql`: names publishing options.
|
|
280
220
|
|
|
281
|
-
|
|
221
|
+
`upload` accepts upload, wallet, signer, bundler, and dedupe flags only.
|
|
282
222
|
|
|
283
|
-
|
|
284
|
-
2. It checks the local cache for matching hashes from previous uploads
|
|
285
|
-
3. Files that haven't changed are skipped - the existing transaction ID is reused
|
|
286
|
-
4. Only new or modified files are uploaded to Arweave
|
|
287
|
-
5. The cache is stored locally in `.permaweb-deploy/transaction-cache.json`
|
|
223
|
+
## Deduplication
|
|
288
224
|
|
|
289
|
-
|
|
225
|
+
The dedupe cache avoids re-uploading unchanged files. It hashes each deployed file and stores transaction IDs in `.permaweb-deploy/transaction-cache.json`.
|
|
290
226
|
|
|
291
|
-
|
|
227
|
+
Disable dedupe:
|
|
292
228
|
|
|
293
229
|
```bash
|
|
294
|
-
permaweb-deploy deploy --
|
|
230
|
+
permaweb-deploy deploy --use-names --name my-app --wallet ./wallet.json --no-dedupe
|
|
295
231
|
```
|
|
296
232
|
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
The dedupe cache uses an LRU (Least Recently Used) eviction strategy. By default, it keeps up to 10,000 entries. You can adjust this limit:
|
|
233
|
+
Limit cache size:
|
|
300
234
|
|
|
301
235
|
```bash
|
|
302
|
-
|
|
303
|
-
permaweb-deploy deploy --arns-name my-app --wallet ./wallet.json --dedupe-cache-max-entries 1000
|
|
236
|
+
permaweb-deploy deploy --use-names --name my-app --wallet ./wallet.json --dedupe-cache-max-entries 1000
|
|
304
237
|
```
|
|
305
238
|
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
The cache file is stored at `.permaweb-deploy/transaction-cache.json` in your project root. You can:
|
|
309
|
-
|
|
310
|
-
- Add it to `.gitignore` if you don't want to share cache across team members
|
|
311
|
-
- Commit it to share cached transaction IDs with your team (reduces duplicate uploads)
|
|
312
|
-
- Delete it to start fresh: `rm -rf .permaweb-deploy/`
|
|
313
|
-
|
|
314
|
-
### Package.json Scripts
|
|
315
|
-
|
|
316
|
-
Add deployment scripts to your `package.json`:
|
|
239
|
+
## Package Scripts
|
|
317
240
|
|
|
318
241
|
```json
|
|
319
242
|
{
|
|
320
243
|
"scripts": {
|
|
321
244
|
"build": "vite build",
|
|
322
|
-
"deploy": "pnpm build && permaweb-deploy deploy --
|
|
323
|
-
"deploy:
|
|
324
|
-
"deploy:testnet": "pnpm build && permaweb-deploy deploy --arns-name <ARNS_NAME> --ario-process testnet",
|
|
325
|
-
"deploy:on-demand": "pnpm build && permaweb-deploy deploy --arns-name <ARNS_NAME> --on-demand ario --max-token-amount 1.5"
|
|
245
|
+
"deploy": "pnpm build && permaweb-deploy deploy --use-names --name <NAME>",
|
|
246
|
+
"deploy:ref": "pnpm build && permaweb-deploy deploy --use-names --reference-id <REFERENCE_ID>"
|
|
326
247
|
}
|
|
327
248
|
}
|
|
328
249
|
```
|
|
329
250
|
|
|
330
|
-
Then deploy with:
|
|
331
|
-
|
|
332
251
|
```bash
|
|
333
252
|
DEPLOY_KEY=$(base64 -i wallet.json) pnpm deploy
|
|
334
253
|
```
|
|
335
254
|
|
|
336
|
-
Or with on-demand payment:
|
|
337
|
-
|
|
338
|
-
```bash
|
|
339
|
-
DEPLOY_KEY=$(base64 -i wallet.json) pnpm deploy:on-demand
|
|
340
|
-
```
|
|
341
|
-
|
|
342
255
|
## GitHub Action
|
|
343
256
|
|
|
344
|
-
|
|
257
|
+
```yaml
|
|
258
|
+
- uses: permaweb/permaweb-deploy@v1
|
|
259
|
+
with:
|
|
260
|
+
deploy-key: ${{ secrets.DEPLOY_KEY }}
|
|
261
|
+
name: myapp
|
|
262
|
+
deploy-folder: ./dist
|
|
263
|
+
```
|
|
345
264
|
|
|
346
|
-
|
|
265
|
+
Use a direct reference ID:
|
|
347
266
|
|
|
348
267
|
```yaml
|
|
349
268
|
- uses: permaweb/permaweb-deploy@v1
|
|
350
269
|
with:
|
|
351
270
|
deploy-key: ${{ secrets.DEPLOY_KEY }}
|
|
352
|
-
|
|
271
|
+
reference-id: ${{ secrets.NAMES_REFERENCE_ID }}
|
|
353
272
|
deploy-folder: ./dist
|
|
354
273
|
```
|
|
355
274
|
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
Automatically deploy preview builds for each pull request. The `preview` mode auto-generates an undername from the PR number and posts a comment with the preview URL:
|
|
275
|
+
PR preview names:
|
|
359
276
|
|
|
360
277
|
```yaml
|
|
361
278
|
name: Deploy PR Preview
|
|
@@ -369,327 +286,73 @@ jobs:
|
|
|
369
286
|
runs-on: ubuntu-latest
|
|
370
287
|
steps:
|
|
371
288
|
- uses: actions/checkout@v4
|
|
372
|
-
|
|
373
|
-
- name: Setup Node.js
|
|
374
|
-
uses: actions/setup-node@v4
|
|
289
|
+
- uses: actions/setup-node@v4
|
|
375
290
|
with:
|
|
376
291
|
node-version: '20'
|
|
377
|
-
|
|
378
|
-
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
- name: Build
|
|
382
|
-
run: npm run build
|
|
383
|
-
|
|
384
|
-
- name: Deploy Preview
|
|
385
|
-
uses: permaweb/permaweb-deploy@v1
|
|
292
|
+
- run: npm ci
|
|
293
|
+
- run: npm run build
|
|
294
|
+
- uses: permaweb/permaweb-deploy@v1
|
|
386
295
|
with:
|
|
387
296
|
deploy-key: ${{ secrets.DEPLOY_KEY }}
|
|
388
|
-
arns-name: myapp
|
|
389
297
|
preview: 'true'
|
|
390
298
|
github-token: ${{ secrets.GITHUB_TOKEN }}
|
|
391
299
|
deploy-folder: ./dist
|
|
392
300
|
```
|
|
393
301
|
|
|
394
|
-
When `preview` is enabled, the action
|
|
395
|
-
|
|
396
|
-
- Auto-generate an undername like `pr-123` from the PR number
|
|
397
|
-
- Post a comment on the PR with the preview URL
|
|
398
|
-
- Update the comment on subsequent pushes instead of creating new ones
|
|
399
|
-
|
|
400
|
-
### Production Deployment
|
|
401
|
-
|
|
402
|
-
Deploy to your base ArNS name when pushing to main:
|
|
403
|
-
|
|
404
|
-
```yaml
|
|
405
|
-
name: Deploy to Production
|
|
406
|
-
|
|
407
|
-
on:
|
|
408
|
-
push:
|
|
409
|
-
branches: [main]
|
|
410
|
-
|
|
411
|
-
jobs:
|
|
412
|
-
deploy:
|
|
413
|
-
runs-on: ubuntu-latest
|
|
414
|
-
steps:
|
|
415
|
-
- uses: actions/checkout@v4
|
|
416
|
-
|
|
417
|
-
- name: Setup Node.js
|
|
418
|
-
uses: actions/setup-node@v4
|
|
419
|
-
with:
|
|
420
|
-
node-version: '20'
|
|
421
|
-
|
|
422
|
-
- name: Install dependencies
|
|
423
|
-
run: npm ci
|
|
424
|
-
|
|
425
|
-
- name: Build
|
|
426
|
-
run: npm run build
|
|
427
|
-
|
|
428
|
-
- name: Deploy to Permaweb
|
|
429
|
-
uses: permaweb/permaweb-deploy@v1
|
|
430
|
-
with:
|
|
431
|
-
deploy-key: ${{ secrets.DEPLOY_KEY }}
|
|
432
|
-
arns-name: myapp
|
|
433
|
-
deploy-folder: ./dist
|
|
434
|
-
```
|
|
435
|
-
|
|
436
|
-
### With On-Demand Payment
|
|
437
|
-
|
|
438
|
-
```yaml
|
|
439
|
-
- name: Deploy with ARIO on-demand
|
|
440
|
-
uses: permaweb/permaweb-deploy@v1
|
|
441
|
-
with:
|
|
442
|
-
deploy-key: ${{ secrets.DEPLOY_KEY }}
|
|
443
|
-
arns-name: myapp
|
|
444
|
-
deploy-folder: ./dist
|
|
445
|
-
on-demand: ario
|
|
446
|
-
max-token-amount: '2.0'
|
|
447
|
-
```
|
|
448
|
-
|
|
449
|
-
### With HyperBEAM
|
|
450
|
-
|
|
451
|
-
```yaml
|
|
452
|
-
- name: Deploy through a HyperBEAM bundler
|
|
453
|
-
uses: permaweb/permaweb-deploy@v1
|
|
454
|
-
with:
|
|
455
|
-
deploy-key: ${{ secrets.DEPLOY_KEY }}
|
|
456
|
-
arns-name: myapp
|
|
457
|
-
deploy-folder: ./dist
|
|
458
|
-
uploader-type: hyperbeam
|
|
459
|
-
uploader: https://hyperbeam.example.com
|
|
460
|
-
hyperbeam-auto-fund: 'true'
|
|
461
|
-
```
|
|
462
|
-
|
|
463
|
-
### Disabling Deduplication
|
|
464
|
-
|
|
465
|
-
By default, the action caches transaction IDs to avoid re-uploading unchanged files. To disable this:
|
|
466
|
-
|
|
467
|
-
```yaml
|
|
468
|
-
- name: Deploy without dedupe
|
|
469
|
-
uses: permaweb/permaweb-deploy@v1
|
|
470
|
-
with:
|
|
471
|
-
deploy-key: ${{ secrets.DEPLOY_KEY }}
|
|
472
|
-
arns-name: myapp
|
|
473
|
-
deploy-folder: ./dist
|
|
474
|
-
no-dedupe: 'true'
|
|
475
|
-
```
|
|
476
|
-
|
|
477
|
-
You can also limit the cache size:
|
|
478
|
-
|
|
479
|
-
```yaml
|
|
480
|
-
- name: Deploy with limited cache
|
|
481
|
-
uses: permaweb/permaweb-deploy@v1
|
|
482
|
-
with:
|
|
483
|
-
deploy-key: ${{ secrets.DEPLOY_KEY }}
|
|
484
|
-
arns-name: myapp
|
|
485
|
-
deploy-folder: ./dist
|
|
486
|
-
dedupe-cache-max-entries: '1000'
|
|
487
|
-
```
|
|
488
|
-
|
|
489
|
-
---
|
|
490
|
-
|
|
491
|
-
## CLI in GitHub Actions
|
|
492
|
-
|
|
493
|
-
You can also use the CLI directly in your workflows:
|
|
494
|
-
|
|
495
|
-
**Basic Workflow:**
|
|
496
|
-
|
|
497
|
-
```yaml
|
|
498
|
-
name: Deploy to Permaweb
|
|
499
|
-
|
|
500
|
-
on:
|
|
501
|
-
push:
|
|
502
|
-
branches:
|
|
503
|
-
- main
|
|
504
|
-
|
|
505
|
-
jobs:
|
|
506
|
-
publish:
|
|
507
|
-
runs-on: ubuntu-latest
|
|
508
|
-
steps:
|
|
509
|
-
- uses: actions/checkout@v4
|
|
510
|
-
|
|
511
|
-
- uses: pnpm/action-setup@v3
|
|
512
|
-
with:
|
|
513
|
-
version: 9
|
|
514
|
-
|
|
515
|
-
- uses: actions/setup-node@v4
|
|
516
|
-
with:
|
|
517
|
-
node-version: 20
|
|
518
|
-
cache: 'pnpm'
|
|
519
|
-
|
|
520
|
-
- run: pnpm install
|
|
521
|
-
|
|
522
|
-
- run: pnpm deploy
|
|
523
|
-
env:
|
|
524
|
-
DEPLOY_KEY: ${{ secrets.DEPLOY_KEY }}
|
|
525
|
-
```
|
|
526
|
-
|
|
527
|
-
**With On-Demand Payment:**
|
|
302
|
+
When `preview` is enabled, the action generates a namespace name from the repository and PR number, deploys the content, updates that name, and posts or updates a PR comment.
|
|
528
303
|
|
|
529
|
-
|
|
530
|
-
name: Deploy to Permaweb with On-Demand Payment
|
|
304
|
+
Action inputs for names publishing:
|
|
531
305
|
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
runs-on: ubuntu-latest
|
|
540
|
-
steps:
|
|
541
|
-
- uses: actions/checkout@v4
|
|
542
|
-
|
|
543
|
-
- uses: pnpm/action-setup@v3
|
|
544
|
-
with:
|
|
545
|
-
version: 9
|
|
546
|
-
|
|
547
|
-
- uses: actions/setup-node@v4
|
|
548
|
-
with:
|
|
549
|
-
node-version: 20
|
|
550
|
-
cache: 'pnpm'
|
|
551
|
-
|
|
552
|
-
- run: pnpm install
|
|
553
|
-
- run: pnpm build
|
|
554
|
-
|
|
555
|
-
- name: Deploy with ARIO on-demand
|
|
556
|
-
run: permaweb-deploy deploy --arns-name my-app --on-demand ario --max-token-amount 2.0
|
|
557
|
-
env:
|
|
558
|
-
DEPLOY_KEY: ${{ secrets.DEPLOY_KEY }}
|
|
559
|
-
|
|
560
|
-
# Or deploy with Ethereum and Base-ETH:
|
|
561
|
-
# - name: Deploy with Base-ETH on-demand
|
|
562
|
-
# run: |
|
|
563
|
-
# permaweb-deploy deploy \
|
|
564
|
-
# --arns-name my-app \
|
|
565
|
-
# --sig-type ethereum \
|
|
566
|
-
# --on-demand base-eth \
|
|
567
|
-
# --max-token-amount 0.2
|
|
568
|
-
# env:
|
|
569
|
-
# DEPLOY_KEY: ${{ secrets.ETH_PRIVATE_KEY }}
|
|
570
|
-
```
|
|
306
|
+
- `name`: namespace name to update.
|
|
307
|
+
- `reference-id`: reference ID to update directly.
|
|
308
|
+
- `names-namespace`: namespace root reference or manifest ID.
|
|
309
|
+
- `names-gateway`: gateway for reference and namespace reads.
|
|
310
|
+
- `names-graphql`: GraphQL endpoint for reference discovery.
|
|
311
|
+
- `auto-name`: generate a namespace name from PR number or branch name.
|
|
312
|
+
- `preview`: enable `auto-name` and post a PR comment.
|
|
571
313
|
|
|
572
314
|
## Development
|
|
573
315
|
|
|
574
|
-
### Setup
|
|
575
|
-
|
|
576
316
|
```bash
|
|
577
|
-
# Install dependencies
|
|
578
317
|
pnpm install
|
|
579
|
-
|
|
580
|
-
# Build the project
|
|
581
318
|
pnpm build
|
|
582
|
-
|
|
583
|
-
# Run in development mode
|
|
584
|
-
pnpm dev
|
|
585
|
-
|
|
586
|
-
# Run tests
|
|
587
319
|
pnpm test
|
|
588
|
-
|
|
589
|
-
# Run linter
|
|
590
320
|
pnpm lint
|
|
591
|
-
|
|
592
|
-
# Format code
|
|
593
|
-
pnpm format
|
|
594
321
|
```
|
|
595
322
|
|
|
596
|
-
|
|
323
|
+
Project layout:
|
|
597
324
|
|
|
598
|
-
```
|
|
325
|
+
```text
|
|
599
326
|
permaweb-deploy/
|
|
600
|
-
├── src/
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
│ │ ├── signer.ts
|
|
609
|
-
│ │ ├── uploader.ts
|
|
610
|
-
│ │ └── __tests__/ # Unit tests
|
|
611
|
-
│ └── index.ts # Main entry point
|
|
612
|
-
├── bin/ # Executable scripts
|
|
613
|
-
│ ├── run.js
|
|
614
|
-
│ └── dev.js
|
|
615
|
-
├── .changeset/ # Changesets configuration
|
|
616
|
-
├── .husky/ # Git hooks
|
|
617
|
-
└── dist/ # Build output
|
|
327
|
+
├── src/commands
|
|
328
|
+
├── src/constants
|
|
329
|
+
├── src/prompts
|
|
330
|
+
├── src/types
|
|
331
|
+
├── src/utils
|
|
332
|
+
├── src/workflows
|
|
333
|
+
├── tests
|
|
334
|
+
└── bin
|
|
618
335
|
```
|
|
619
336
|
|
|
620
|
-
## Security & Best Practices
|
|
621
|
-
|
|
622
|
-
- **Dedicated Wallet:** Always use a dedicated wallet for deployments to minimize security risks
|
|
623
|
-
- **Wallet Encoding:** Arweave wallets must be base64 encoded to be used in the deployment script
|
|
624
|
-
- **ArNS Name:** Required only when updating an ANT/ArNS target undername or root record
|
|
625
|
-
- **Turbo Credits:** Ensure your wallet has sufficient Turbo Credits, or use on-demand payment for automatic funding
|
|
626
|
-
- **On-Demand Limits:** Set reasonable `--max-token-amount` limits to prevent unexpected costs
|
|
627
|
-
- **Secret Management:** Keep your `DEPLOY_KEY` secret secure and never commit it to your repository
|
|
628
|
-
- **Build Security:** Always check your build for exposed environmental secrets before deployment, as data on Arweave is permanent
|
|
629
|
-
|
|
630
337
|
## Troubleshooting
|
|
631
338
|
|
|
632
|
-
-
|
|
633
|
-
-
|
|
634
|
-
-
|
|
635
|
-
-
|
|
636
|
-
-
|
|
637
|
-
-
|
|
638
|
-
- **
|
|
639
|
-
|
|
640
|
-
## Contributing
|
|
641
|
-
|
|
642
|
-
Contributions are welcome! Please follow these guidelines:
|
|
643
|
-
|
|
644
|
-
1. Fork the repository
|
|
645
|
-
2. Create a feature branch
|
|
646
|
-
3. Make your changes
|
|
647
|
-
4. Run tests and linter: `pnpm test && pnpm lint`
|
|
648
|
-
5. Create a changeset: `pnpm changeset`
|
|
649
|
-
6. Commit your changes using conventional commits
|
|
650
|
-
7. Push and create a pull request
|
|
651
|
-
|
|
652
|
-
### Conventional Commits
|
|
653
|
-
|
|
654
|
-
This project uses [Conventional Commits](https://www.conventionalcommits.org/). Commit messages should follow this format:
|
|
655
|
-
|
|
656
|
-
```
|
|
657
|
-
type(scope): subject
|
|
658
|
-
|
|
659
|
-
body (optional)
|
|
660
|
-
```
|
|
661
|
-
|
|
662
|
-
Types: `feat`, `fix`, `docs`, `style`, `refactor`, `perf`, `test`, `build`, `ci`, `chore`, `revert`
|
|
663
|
-
|
|
664
|
-
### Changesets
|
|
665
|
-
|
|
666
|
-
We use [changesets](https://github.com/changesets/changesets) for version management. When making changes:
|
|
667
|
-
|
|
668
|
-
```bash
|
|
669
|
-
pnpm changeset
|
|
670
|
-
```
|
|
671
|
-
|
|
672
|
-
Follow the prompts to describe your changes.
|
|
339
|
+
- **`DEPLOY_KEY environment variable not set`:** pass `--wallet`, pass `--private-key`, or set `DEPLOY_KEY`.
|
|
340
|
+
- **`Names updates currently require --sig-type arweave`:** reference updates are signed as ANS-104 data items; use an Arweave JWK for names updates.
|
|
341
|
+
- **`Name [...] does not exist in namespace ...`:** verify the namespace manifest contains the name or use `--reference-id`.
|
|
342
|
+
- **`signer is not reference authority`:** use the wallet that controls the target reference.
|
|
343
|
+
- **`deploy-folder does not exist`:** check the build output path.
|
|
344
|
+
- **`deploy-file does not exist`:** check the file path.
|
|
345
|
+
- **Legacy upload rejected:** check the upload endpoint response and retry with another legacy bundler if needed.
|
|
673
346
|
|
|
674
347
|
## Dependencies
|
|
675
348
|
|
|
676
|
-
- **@
|
|
677
|
-
- **@
|
|
678
|
-
- **@permaweb/aoconnect** -
|
|
679
|
-
- **@
|
|
680
|
-
- **
|
|
349
|
+
- **@permaweb/references** - namespace reference reads and writes.
|
|
350
|
+
- **@dha-team/arbundles** - ANS-104 data item signing.
|
|
351
|
+
- **@permaweb/aoconnect** - AO network connectivity.
|
|
352
|
+
- **@permaweb/hyperbalance** - HyperBEAM auto-fund support.
|
|
353
|
+
- **@oclif/core** - CLI framework.
|
|
354
|
+
- **mime-types** - MIME type detection.
|
|
681
355
|
|
|
682
356
|
## License
|
|
683
357
|
|
|
684
358
|
ISC
|
|
685
|
-
|
|
686
|
-
## Author
|
|
687
|
-
|
|
688
|
-
NickJ202
|
|
689
|
-
|
|
690
|
-
## Links
|
|
691
|
-
|
|
692
|
-
- [GitHub Repository](https://github.com/permaweb/permaweb-deploy)
|
|
693
|
-
- [Issues](https://github.com/permaweb/permaweb-deploy/issues)
|
|
694
|
-
- [Arweave Documentation](https://docs.arweave.org/)
|
|
695
|
-
- [AR.IO Documentation](https://docs.ar.io/)
|