Now that JSS 0.0.198 ships its own `jss install` subcommand (Phases 1+2+4 of JSS#464), nosdav's wrapper-side install is duplicated infrastructure. The same code was ported into both jspod and nosdav; the two are now drift candidates.
Why consolidate
- Single source of truth. Future install features (Phase 3 `--did`, Phase 5 curated set, Phase 6 `--bundle`) land in JSS first. If nosdav's install stays separate, every new feature requires re-porting.
- Wrapper shrinks ~150 LoC (`runInstall`, `parseAppSpec`, `printInstallHelp` in `bin/nosdav.js`).
- Behavior unchanged for users — `npx nosdav-server install chrome` keeps working.
When (not yet)
Hold until JSS install stabilizes:
- JSS#464 Phase 5 (curated set)
- JSS#464 Phase 6 (`--bundle`)
- One release cycle in the wild
Sketch
Replace `runInstall` with a ~10-line delegation that spawns `jss install` from the bundled `node_modules/.bin/jss`, defaulting `--pod` to nosdav's port (5544) when the user hasn't overridden.
```js
async function runInstall(rest) {
const args = ['install', ...rest];
if (!rest.includes('--pod')) {
args.push('--pod', `http://localhost:\${options.port}\`);
}
const jssBin = join(pkgRoot, 'node_modules', '.bin', 'jss');
const child = spawn(jssBin, args, { stdio: 'inherit' });
await new Promise((resolve) => child.on('exit', (code) => process.exit(code || 0)));
}
```
Drop `parseAppSpec` and `printInstallHelp` — `jss install --help` is the source of truth.
Bonus
Because nosdav defaults to `--provision-keys ON`, the pod has a Schnorr keypair at `/private/privkey.jsonld` by default. A nosdav-specific affordance: when the user runs `nosdav install` without auth flags, nosdav could read its own privkey and pass it to `jss install --nostr-privkey ` automatically. Zero-config installs against a Nostr-keyed pod. ~10 more LoC; consider folding in.
Sibling
- jspod#48 tracks the parallel refactor on the Solid-default wrapper.
Now that JSS 0.0.198 ships its own `jss install` subcommand (Phases 1+2+4 of JSS#464), nosdav's wrapper-side install is duplicated infrastructure. The same code was ported into both jspod and nosdav; the two are now drift candidates.
Why consolidate
When (not yet)
Hold until JSS install stabilizes:
Sketch
Replace `runInstall` with a ~10-line delegation that spawns `jss install` from the bundled `node_modules/.bin/jss`, defaulting `--pod` to nosdav's port (5544) when the user hasn't overridden.
```js
async function runInstall(rest) {
const args = ['install', ...rest];
if (!rest.includes('--pod')) {
args.push('--pod', `http://localhost:\${options.port}\`);
}
const jssBin = join(pkgRoot, 'node_modules', '.bin', 'jss');
const child = spawn(jssBin, args, { stdio: 'inherit' });
await new Promise((resolve) => child.on('exit', (code) => process.exit(code || 0)));
}
```
Drop `parseAppSpec` and `printInstallHelp` — `jss install --help` is the source of truth.
Bonus
Because nosdav defaults to `--provision-keys ON`, the pod has a Schnorr keypair at `/private/privkey.jsonld` by default. A nosdav-specific affordance: when the user runs `nosdav install` without auth flags, nosdav could read its own privkey and pass it to `jss install --nostr-privkey ` automatically. Zero-config installs against a Nostr-keyed pod. ~10 more LoC; consider folding in.
Sibling