trustlocal 0.1.4 → 0.2.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 +97 -58
- package/dist/commands/doctor.d.ts +8 -0
- package/dist/commands/doctor.d.ts.map +1 -0
- package/dist/commands/doctor.js +200 -0
- package/dist/commands/doctor.js.map +1 -0
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +54 -25
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/remove.d.ts +17 -0
- package/dist/commands/remove.d.ts.map +1 -0
- package/dist/commands/remove.js +216 -0
- package/dist/commands/remove.js.map +1 -0
- package/dist/commands/status.d.ts.map +1 -1
- package/dist/commands/status.js +12 -3
- package/dist/commands/status.js.map +1 -1
- package/dist/commands/sync.d.ts.map +1 -1
- package/dist/commands/sync.js +33 -0
- package/dist/commands/sync.js.map +1 -1
- package/dist/detector/framework.d.ts +1 -1
- package/dist/detector/framework.d.ts.map +1 -1
- package/dist/detector/framework.js +47 -0
- package/dist/detector/framework.js.map +1 -1
- package/dist/index.js +20 -0
- package/dist/index.js.map +1 -1
- package/dist/injectors/astro.d.ts +6 -0
- package/dist/injectors/astro.d.ts.map +1 -0
- package/dist/injectors/astro.js +58 -0
- package/dist/injectors/astro.js.map +1 -0
- package/dist/injectors/fastify.d.ts +5 -0
- package/dist/injectors/fastify.d.ts.map +1 -0
- package/dist/injectors/fastify.js +42 -0
- package/dist/injectors/fastify.js.map +1 -0
- package/dist/injectors/nestjs.d.ts +5 -0
- package/dist/injectors/nestjs.d.ts.map +1 -0
- package/dist/injectors/nestjs.js +43 -0
- package/dist/injectors/nestjs.js.map +1 -0
- package/dist/injectors/nuxt.d.ts +8 -0
- package/dist/injectors/nuxt.d.ts.map +1 -0
- package/dist/injectors/nuxt.js +94 -0
- package/dist/injectors/nuxt.js.map +1 -0
- package/dist/mkcert/check.d.ts.map +1 -1
- package/dist/mkcert/check.js +32 -0
- package/dist/mkcert/check.js.map +1 -1
- package/package.json +9 -2
package/README.md
CHANGED
|
@@ -2,126 +2,165 @@
|
|
|
2
2
|
|
|
3
3
|
> One command. HTTPS everywhere. Zero config.
|
|
4
4
|
|
|
5
|
-
[](https://www.npmjs.com/package/trustlocal)
|
|
5
|
+
[](https://www.npmjs.com/package/trustlocal)
|
|
6
6
|
[](https://www.npmjs.com/package/trustlocal)
|
|
7
7
|
[](LICENSE)
|
|
8
|
+
[](https://nodejs.org)
|
|
8
9
|
|
|
9
|
-
|
|
10
|
+

|
|
10
11
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
## Quick start
|
|
12
|
+
`trustlocal` automates local HTTPS for web development. It uses [mkcert](https://github.com/FiloSottile/mkcert) under the hood — installing it automatically if needed, generating browser-trusted certificates, and injecting the correct SSL config into your framework. Zero manual steps.
|
|
14
13
|
|
|
15
14
|
```bash
|
|
16
15
|
npx trustlocal init
|
|
17
16
|
```
|
|
18
17
|
|
|
19
|
-
That's it.
|
|
18
|
+
That's it.
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
## The problem it solves
|
|
23
|
+
|
|
24
|
+
[mkcert](https://github.com/FiloSottile/mkcert) (58k ⭐) generates locally trusted certificates — but it stops there. You still have to:
|
|
25
|
+
|
|
26
|
+
- Wire cert files into your framework config manually
|
|
27
|
+
- Set `NODE_EXTRA_CA_CERTS` so Node trusts them
|
|
28
|
+
- Redo all of this for every teammate
|
|
29
|
+
|
|
30
|
+
`trustlocal` automates the entire chain: **install → generate → inject → sync**.
|
|
31
|
+
|
|
32
|
+
---
|
|
33
|
+
|
|
34
|
+
## Supported frameworks
|
|
20
35
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
36
|
+
| Framework | Detected by | What gets configured |
|
|
37
|
+
|---|---|---|
|
|
38
|
+
| **Next.js** | `next` in `package.json` | `next.config.js/ts` — `experimental.https` block (or CLI flags for v15+) |
|
|
39
|
+
| **Vite** | `vite` in `package.json` | `vite.config.js/ts` — `server.https` block |
|
|
40
|
+
| **Astro** | `astro` in `package.json` | `astro.config.mjs` — `server.https` block |
|
|
41
|
+
| **SvelteKit** | `@sveltejs/kit` in `package.json` | `vite.config.ts` — `server.https` block |
|
|
42
|
+
| **Nuxt** | `nuxt` in `package.json` | `nuxt.config.ts` — `devServer.https` block |
|
|
43
|
+
| **Remix** | `@remix-run/dev` in `package.json` | `vite.config.ts` — `server.https` block |
|
|
44
|
+
| **Fastify** | `fastify` in `package.json` | `.env` — `NODE_EXTRA_CA_CERTS` + server snippet printed |
|
|
45
|
+
| **NestJS** | `@nestjs/core` in `package.json` | `.env` — `NODE_EXTRA_CA_CERTS` + `main.ts` snippet printed |
|
|
46
|
+
| **Express / Node** | `express` in deps or `server.js` present | `.env` — `NODE_EXTRA_CA_CERTS` + code snippet printed |
|
|
47
|
+
| **Nginx** | `nginx.conf` in project root | `nginx.conf` — `ssl_certificate` directives injected |
|
|
48
|
+
| **Plain** | fallback | Certs placed in `.trustlocal/`, manual wiring instructions printed |
|
|
29
49
|
|
|
30
50
|
---
|
|
31
51
|
|
|
32
52
|
## Commands
|
|
33
53
|
|
|
34
|
-
### `init` —
|
|
54
|
+
### `init` — first-time setup
|
|
35
55
|
|
|
36
56
|
```bash
|
|
37
|
-
npx trustlocal init
|
|
57
|
+
npx trustlocal init
|
|
38
58
|
```
|
|
39
59
|
|
|
60
|
+
Installs mkcert if missing (no manual steps required), registers the local CA, detects your framework, generates trusted certificates, injects HTTPS config, and writes `trustlocal.json` so teammates can sync with one command.
|
|
61
|
+
|
|
62
|
+
**Options**
|
|
63
|
+
|
|
40
64
|
| Flag | Description |
|
|
41
|
-
|
|
42
|
-
| `--domains <list>` |
|
|
65
|
+
|---|---|
|
|
66
|
+
| `--domains <list>` | Extra comma-separated domains to include, e.g. `--domains myapp.local,api.local` |
|
|
43
67
|
| `--force` | Re-initialise even if `trustlocal.json` already exists |
|
|
44
68
|
| `--dry-run` | Preview what would happen without writing any files |
|
|
45
69
|
|
|
46
|
-
|
|
70
|
+
---
|
|
71
|
+
|
|
72
|
+
### `sync` — onboard a teammate
|
|
47
73
|
|
|
48
74
|
```bash
|
|
49
75
|
npx trustlocal sync
|
|
50
76
|
```
|
|
51
77
|
|
|
52
|
-
Reads `trustlocal.json`, generates fresh
|
|
78
|
+
New developer clones the repo, runs this, and has HTTPS working in under 30 seconds. Reads `trustlocal.json`, generates fresh certificates on their machine (no private key sharing), and re-injects config identically.
|
|
53
79
|
|
|
54
|
-
|
|
80
|
+
---
|
|
81
|
+
|
|
82
|
+
### `renew` — renew expiring certs
|
|
55
83
|
|
|
56
84
|
```bash
|
|
57
|
-
npx trustlocal renew
|
|
85
|
+
npx trustlocal renew
|
|
58
86
|
```
|
|
59
87
|
|
|
60
|
-
|
|
88
|
+
Certificates expire after 2 years. Deletes old certs and generates fresh ones. Framework config files are **not** touched — cert file paths stay the same.
|
|
61
89
|
|
|
62
|
-
|
|
90
|
+
| Flag | Description |
|
|
91
|
+
|---|---|
|
|
92
|
+
| `--force` | Renew even if the cert has more than 30 days remaining |
|
|
93
|
+
|
|
94
|
+
---
|
|
95
|
+
|
|
96
|
+
### `status` — check your setup
|
|
63
97
|
|
|
64
98
|
```bash
|
|
65
99
|
npx trustlocal status
|
|
66
100
|
```
|
|
67
101
|
|
|
68
|
-
|
|
102
|
+
Prints a coloured `OK / WARNING / ERROR` for each check:
|
|
103
|
+
|
|
104
|
+
- Certificate file present and expiry date
|
|
105
|
+
- HTTPS config injection still in place
|
|
106
|
+
- `NODE_EXTRA_CA_CERTS` set in `.env`
|
|
107
|
+
- `.trustlocal/` excluded from `.gitignore`
|
|
69
108
|
|
|
70
109
|
---
|
|
71
110
|
|
|
72
|
-
|
|
111
|
+
### `doctor` — diagnose issues
|
|
73
112
|
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
| **Nginx** | `nginx.conf` in project root | `nginx.conf` — `ssl_certificate` block |
|
|
80
|
-
| **Plain** | fallback | Certs placed in `.trustlocal/` with instructions |
|
|
113
|
+
```bash
|
|
114
|
+
npx trustlocal doctor
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
10-point diagnostic that checks every component of your HTTPS setup and suggests a specific fix for each problem found. Run this if something isn't working.
|
|
81
118
|
|
|
82
119
|
---
|
|
83
120
|
|
|
84
|
-
|
|
121
|
+
### `remove` — clean uninstall
|
|
85
122
|
|
|
123
|
+
```bash
|
|
124
|
+
npx trustlocal remove
|
|
86
125
|
```
|
|
87
|
-
npx trustlocal init
|
|
88
126
|
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
127
|
+
Removes everything trustlocal added: deletes the cert directory, strips HTTPS config from framework files, removes `NODE_EXTRA_CA_CERTS` from `.env`, cleans `.gitignore`, and deletes `trustlocal.json`.
|
|
128
|
+
|
|
129
|
+
| Flag | Description |
|
|
130
|
+
|---|---|
|
|
131
|
+
| `--yes` | Skip the confirmation prompt |
|
|
132
|
+
|
|
133
|
+
---
|
|
134
|
+
|
|
135
|
+
## mkcert auto-install
|
|
136
|
+
|
|
137
|
+
If mkcert is not on your machine, `trustlocal` installs it automatically — no manual steps, no package manager required.
|
|
138
|
+
|
|
139
|
+
| Platform | Install method |
|
|
140
|
+
|---|---|
|
|
141
|
+
| macOS | Homebrew → direct download fallback |
|
|
142
|
+
| Linux | apt → direct download fallback |
|
|
143
|
+
| Windows | winget → choco → scoop → direct download fallback |
|
|
144
|
+
|
|
145
|
+
The direct download fallback fetches the official binary from [GitHub releases](https://github.com/FiloSottile/mkcert/releases) using Node's built-in `https` module. No `curl`, no `wget` needed.
|
|
107
146
|
|
|
108
147
|
---
|
|
109
148
|
|
|
110
149
|
## Security
|
|
111
150
|
|
|
112
|
-
- `.trustlocal/`
|
|
113
|
-
- `trustlocal.json` is safe to commit — it contains no keys, only config metadata
|
|
114
|
-
- All
|
|
151
|
+
- `.trustlocal/` is automatically added to `.gitignore` before any cert files are written — **private keys are never committed**
|
|
152
|
+
- `trustlocal.json` is safe to commit — it contains no keys, only config metadata (framework, domains, cert dir)
|
|
153
|
+
- All certificate generation happens locally via `mkcert`. `trustlocal` never reads, stores, or transmits any private key
|
|
115
154
|
|
|
116
155
|
---
|
|
117
156
|
|
|
118
157
|
## Requirements
|
|
119
158
|
|
|
120
159
|
- Node.js 18+
|
|
121
|
-
- macOS or
|
|
160
|
+
- macOS, Linux, or Windows
|
|
122
161
|
|
|
123
162
|
---
|
|
124
163
|
|
|
125
164
|
## License
|
|
126
165
|
|
|
127
|
-
MIT © Sahil Kashyap
|
|
166
|
+
MIT © Sahil Kashyap
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AA2CH,wBAAsB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,CAmJ/C"}
|
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* `npx trustlocal doctor`
|
|
4
|
+
*
|
|
5
|
+
* Comprehensive diagnostics — checks every component of the trustlocal setup
|
|
6
|
+
* and suggests fixes for each problem found.
|
|
7
|
+
*/
|
|
8
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
9
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.runDoctor = runDoctor;
|
|
13
|
+
const promises_1 = require("fs/promises");
|
|
14
|
+
const path_1 = require("path");
|
|
15
|
+
const child_process_1 = require("child_process");
|
|
16
|
+
const logger_1 = require("../utils/logger");
|
|
17
|
+
const trustlocal_1 = require("../config/trustlocal");
|
|
18
|
+
const check_1 = require("../mkcert/check");
|
|
19
|
+
const generate_1 = require("../mkcert/generate");
|
|
20
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
21
|
+
function checkLine(level, label, detail, fix) {
|
|
22
|
+
const icon = level === 'OK' ? chalk_1.default.green('✓') :
|
|
23
|
+
level === 'WARNING' ? chalk_1.default.yellow('⚠') :
|
|
24
|
+
level === 'ERROR' ? chalk_1.default.red('✗') :
|
|
25
|
+
chalk_1.default.blue('ℹ');
|
|
26
|
+
const color = level === 'OK' ? chalk_1.default.green :
|
|
27
|
+
level === 'WARNING' ? chalk_1.default.yellow :
|
|
28
|
+
level === 'ERROR' ? chalk_1.default.red :
|
|
29
|
+
chalk_1.default.blue;
|
|
30
|
+
console.log(` ${icon} ${label.padEnd(28)} ${color(detail)}`);
|
|
31
|
+
if (fix) {
|
|
32
|
+
console.log(` ${' '.repeat(28)} ${chalk_1.default.dim('→ ' + fix)}`);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
async function fileExists(p) {
|
|
36
|
+
try {
|
|
37
|
+
await (0, promises_1.access)(p);
|
|
38
|
+
return true;
|
|
39
|
+
}
|
|
40
|
+
catch {
|
|
41
|
+
return false;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
async function fileContains(p, text) {
|
|
45
|
+
try {
|
|
46
|
+
const content = await (0, promises_1.readFile)(p, 'utf-8');
|
|
47
|
+
return content.includes(text);
|
|
48
|
+
}
|
|
49
|
+
catch {
|
|
50
|
+
return false;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
async function runDoctor() {
|
|
54
|
+
const cwd = process.cwd();
|
|
55
|
+
let issues = 0;
|
|
56
|
+
logger_1.logger.title('trustlocal doctor');
|
|
57
|
+
logger_1.logger.info('Checking your setup...');
|
|
58
|
+
logger_1.logger.blank();
|
|
59
|
+
// ── 1. Node.js version ────────────────────────────────────────────────────
|
|
60
|
+
const [major] = process.versions.node.split('.').map(Number);
|
|
61
|
+
if ((major ?? 0) >= 18) {
|
|
62
|
+
checkLine('OK', 'Node.js version', `v${process.versions.node}`);
|
|
63
|
+
}
|
|
64
|
+
else {
|
|
65
|
+
checkLine('ERROR', 'Node.js version', `v${process.versions.node} (need >= 18)`, 'Upgrade Node.js at https://nodejs.org');
|
|
66
|
+
issues++;
|
|
67
|
+
}
|
|
68
|
+
// ── 2. mkcert installed ───────────────────────────────────────────────────
|
|
69
|
+
const mkcertInfo = (0, check_1.checkMkcert)();
|
|
70
|
+
if (mkcertInfo.installed) {
|
|
71
|
+
checkLine('OK', 'mkcert installed', mkcertInfo.version ?? 'found');
|
|
72
|
+
}
|
|
73
|
+
else {
|
|
74
|
+
checkLine('ERROR', 'mkcert installed', 'Not found', 'Run `npx trustlocal init` to auto-install mkcert');
|
|
75
|
+
issues++;
|
|
76
|
+
}
|
|
77
|
+
// ── 3. Local CA trusted ───────────────────────────────────────────────────
|
|
78
|
+
if (mkcertInfo.installed && mkcertInfo.caRoot) {
|
|
79
|
+
const caRootPem = (0, path_1.join)(mkcertInfo.caRoot, 'rootCA.pem');
|
|
80
|
+
const caExists = await fileExists(caRootPem);
|
|
81
|
+
if (caExists) {
|
|
82
|
+
checkLine('OK', 'Local CA trusted', mkcertInfo.caRoot);
|
|
83
|
+
}
|
|
84
|
+
else {
|
|
85
|
+
checkLine('WARNING', 'Local CA trusted', 'rootCA.pem not found', 'Run `npx trustlocal init` or `mkcert -install` to register the local CA');
|
|
86
|
+
issues++;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
else if (!mkcertInfo.installed) {
|
|
90
|
+
checkLine('INFO', 'Local CA trusted', 'Cannot check (mkcert not installed)');
|
|
91
|
+
}
|
|
92
|
+
// ── 4. trustlocal.json ────────────────────────────────────────────────────
|
|
93
|
+
const config = await (0, trustlocal_1.readConfig)(cwd);
|
|
94
|
+
if (config) {
|
|
95
|
+
checkLine('OK', 'trustlocal.json', `Framework: ${config.framework}, domains: ${config.domains.join(', ')}`);
|
|
96
|
+
}
|
|
97
|
+
else {
|
|
98
|
+
checkLine('WARNING', 'trustlocal.json', 'Not found — project not initialised', 'Run `npx trustlocal init` to set up HTTPS');
|
|
99
|
+
issues++;
|
|
100
|
+
// Can't check further without config
|
|
101
|
+
logger_1.logger.blank();
|
|
102
|
+
printSummary(issues);
|
|
103
|
+
return;
|
|
104
|
+
}
|
|
105
|
+
// ── 5. Certificate files ──────────────────────────────────────────────────
|
|
106
|
+
const certPath = (0, path_1.join)(cwd, config.certDir, generate_1.CERT_FILENAME);
|
|
107
|
+
const keyPath = (0, path_1.join)(cwd, config.certDir, 'localhost-key.pem');
|
|
108
|
+
const certExists = await fileExists(certPath);
|
|
109
|
+
const keyExists = await fileExists(keyPath);
|
|
110
|
+
if (certExists && keyExists) {
|
|
111
|
+
checkLine('OK', 'Certificate files', `Found in ${config.certDir}/`);
|
|
112
|
+
}
|
|
113
|
+
else {
|
|
114
|
+
checkLine('ERROR', 'Certificate files', 'Missing', 'Run `npx trustlocal sync` to regenerate certificates');
|
|
115
|
+
issues++;
|
|
116
|
+
}
|
|
117
|
+
// ── 6. Certificate expiry ─────────────────────────────────────────────────
|
|
118
|
+
if (certExists) {
|
|
119
|
+
try {
|
|
120
|
+
const expiry = (0, generate_1.getCertExpiry)(certPath);
|
|
121
|
+
const now = new Date();
|
|
122
|
+
const daysLeft = Math.floor((expiry.getTime() - now.getTime()) / (1000 * 60 * 60 * 24));
|
|
123
|
+
const expiryStr = `${expiry.toISOString().split('T')[0]} (${daysLeft} days)`;
|
|
124
|
+
if (daysLeft < 0) {
|
|
125
|
+
checkLine('ERROR', 'Certificate expiry', `EXPIRED ${expiryStr}`, 'Run `npx trustlocal renew` to regenerate certificates');
|
|
126
|
+
issues++;
|
|
127
|
+
}
|
|
128
|
+
else if (daysLeft < 30) {
|
|
129
|
+
checkLine('WARNING', 'Certificate expiry', `Expiring soon: ${expiryStr}`, 'Run `npx trustlocal renew` to renew certificates');
|
|
130
|
+
issues++;
|
|
131
|
+
}
|
|
132
|
+
else {
|
|
133
|
+
checkLine('OK', 'Certificate expiry', expiryStr);
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
catch {
|
|
137
|
+
checkLine('WARNING', 'Certificate expiry', 'Could not read expiry date');
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
// ── 7. Config injection ───────────────────────────────────────────────────
|
|
141
|
+
const noInjectionFrameworks = ['express', 'fastify', 'nestjs', 'plain'];
|
|
142
|
+
if (noInjectionFrameworks.includes(config.framework)) {
|
|
143
|
+
checkLine('OK', 'Config injection', `N/A for ${config.framework} — uses .env`);
|
|
144
|
+
}
|
|
145
|
+
else {
|
|
146
|
+
const configFile = config.configFiles[0];
|
|
147
|
+
if (!configFile) {
|
|
148
|
+
checkLine('WARNING', 'Config injection', 'No config file recorded', 'Run `npx trustlocal sync` to re-inject config');
|
|
149
|
+
issues++;
|
|
150
|
+
}
|
|
151
|
+
else {
|
|
152
|
+
const hasMarker = await fileContains((0, path_1.join)(cwd, configFile), '// trustlocal:https');
|
|
153
|
+
if (hasMarker) {
|
|
154
|
+
checkLine('OK', 'Config injection', `Present in ${configFile}`);
|
|
155
|
+
}
|
|
156
|
+
else {
|
|
157
|
+
checkLine('WARNING', 'Config injection', `Not found in ${configFile}`, 'Run `npx trustlocal sync` to re-inject HTTPS config');
|
|
158
|
+
issues++;
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
// ── 8. NODE_EXTRA_CA_CERTS ────────────────────────────────────────────────
|
|
163
|
+
const hasEnvKey = await fileContains((0, path_1.join)(cwd, '.env'), 'NODE_EXTRA_CA_CERTS');
|
|
164
|
+
if (hasEnvKey) {
|
|
165
|
+
checkLine('OK', 'NODE_EXTRA_CA_CERTS', 'Set in .env');
|
|
166
|
+
}
|
|
167
|
+
else {
|
|
168
|
+
checkLine('WARNING', 'NODE_EXTRA_CA_CERTS', 'Not set in .env', 'Run `npx trustlocal sync` to add NODE_EXTRA_CA_CERTS to .env');
|
|
169
|
+
issues++;
|
|
170
|
+
}
|
|
171
|
+
// ── 9. .gitignore ─────────────────────────────────────────────────────────
|
|
172
|
+
const gitignoreOk = await fileContains((0, path_1.join)(cwd, '.gitignore'), config.certDir);
|
|
173
|
+
if (gitignoreOk) {
|
|
174
|
+
checkLine('OK', '.gitignore', `${config.certDir}/ excluded`);
|
|
175
|
+
}
|
|
176
|
+
else {
|
|
177
|
+
checkLine('ERROR', '.gitignore', `${config.certDir}/ is NOT excluded — private keys may be committed!`, 'Add `.trustlocal/` to your .gitignore immediately');
|
|
178
|
+
issues++;
|
|
179
|
+
}
|
|
180
|
+
// ── 10. openssl availability (optional) ───────────────────────────────────
|
|
181
|
+
try {
|
|
182
|
+
(0, child_process_1.execSync)('openssl version', { stdio: 'pipe', encoding: 'utf-8' });
|
|
183
|
+
checkLine('OK', 'openssl', 'Available');
|
|
184
|
+
}
|
|
185
|
+
catch {
|
|
186
|
+
checkLine('INFO', 'openssl', 'Not found (cert expiry parsing may be limited)');
|
|
187
|
+
}
|
|
188
|
+
logger_1.logger.blank();
|
|
189
|
+
printSummary(issues);
|
|
190
|
+
}
|
|
191
|
+
function printSummary(issues) {
|
|
192
|
+
if (issues === 0) {
|
|
193
|
+
logger_1.logger.success('All checks passed! Your HTTPS setup is healthy.');
|
|
194
|
+
}
|
|
195
|
+
else {
|
|
196
|
+
logger_1.logger.warn(`${issues} issue${issues === 1 ? '' : 's'} found. Follow the suggestions above to fix them.`);
|
|
197
|
+
}
|
|
198
|
+
logger_1.logger.blank();
|
|
199
|
+
}
|
|
200
|
+
//# sourceMappingURL=doctor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAuBH,MAAM,WAAW,WAAW;IAC1B,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAoJD,wBAAsB,OAAO,CAAC,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CA2ItE"}
|
package/dist/commands/init.js
CHANGED
|
@@ -63,7 +63,11 @@ const generate_1 = require("../mkcert/generate");
|
|
|
63
63
|
const trustlocal_1 = require("../config/trustlocal");
|
|
64
64
|
const nextjs_1 = require("../injectors/nextjs");
|
|
65
65
|
const vite_1 = require("../injectors/vite");
|
|
66
|
+
const astro_1 = require("../injectors/astro");
|
|
67
|
+
const nuxt_1 = require("../injectors/nuxt");
|
|
66
68
|
const express_1 = require("../injectors/express");
|
|
69
|
+
const fastify_1 = require("../injectors/fastify");
|
|
70
|
+
const nestjs_1 = require("../injectors/nestjs");
|
|
67
71
|
const nginx_1 = require("../injectors/nginx");
|
|
68
72
|
const plain_1 = require("../injectors/plain");
|
|
69
73
|
const check_2 = require("../mkcert/check");
|
|
@@ -77,28 +81,6 @@ async function prompt(question) {
|
|
|
77
81
|
});
|
|
78
82
|
});
|
|
79
83
|
}
|
|
80
|
-
/** Framework default dev ports. */
|
|
81
|
-
const FRAMEWORK_DEFAULT_PORTS = {
|
|
82
|
-
nextjs: 3000,
|
|
83
|
-
vite: 5173,
|
|
84
|
-
express: 3000,
|
|
85
|
-
};
|
|
86
|
-
/**
|
|
87
|
-
* Detect the dev server port: reads PORT from .env first, then falls back
|
|
88
|
-
* to the framework default. Returns undefined if neither is available.
|
|
89
|
-
*/
|
|
90
|
-
async function detectDevPort(cwd, framework) {
|
|
91
|
-
try {
|
|
92
|
-
const content = await (0, promises_1.readFile)((0, path_1.join)(cwd, '.env'), 'utf-8');
|
|
93
|
-
const match = /^PORT\s*=\s*(\d+)/m.exec(content);
|
|
94
|
-
if (match?.[1])
|
|
95
|
-
return parseInt(match[1], 10);
|
|
96
|
-
}
|
|
97
|
-
catch {
|
|
98
|
-
// no .env — use framework default
|
|
99
|
-
}
|
|
100
|
-
return FRAMEWORK_DEFAULT_PORTS[framework];
|
|
101
|
-
}
|
|
102
84
|
/** Collect extra .local domains from .env file */
|
|
103
85
|
async function collectEnvDomains(cwd) {
|
|
104
86
|
try {
|
|
@@ -167,6 +149,49 @@ async function runInjector(framework, configFile, cwd, caRootPem) {
|
|
|
167
149
|
}
|
|
168
150
|
break;
|
|
169
151
|
}
|
|
152
|
+
case 'astro': {
|
|
153
|
+
const configPath = (0, path_1.join)(cwd, configFile ?? 'astro.config.mjs');
|
|
154
|
+
const result = await (0, astro_1.injectAstro)(configPath);
|
|
155
|
+
if (result.alreadyConfigured)
|
|
156
|
+
logger_1.logger.warn('HTTPS already configured in Astro config — skipping injection.');
|
|
157
|
+
else
|
|
158
|
+
logger_1.logger.success(`Config updated${result.created ? ' (new file created)' : ''}`);
|
|
159
|
+
break;
|
|
160
|
+
}
|
|
161
|
+
case 'sveltekit':
|
|
162
|
+
case 'remix': {
|
|
163
|
+
const defaultConfig = 'vite.config.ts';
|
|
164
|
+
const configPath = (0, path_1.join)(cwd, configFile ?? defaultConfig);
|
|
165
|
+
const result = await (0, vite_1.injectVite)(configPath);
|
|
166
|
+
if (result.alreadyConfigured)
|
|
167
|
+
logger_1.logger.warn('HTTPS already configured in Vite config — skipping injection.');
|
|
168
|
+
else
|
|
169
|
+
logger_1.logger.success(`Config updated${result.created ? ' (new file created)' : ''}`);
|
|
170
|
+
break;
|
|
171
|
+
}
|
|
172
|
+
case 'nuxt': {
|
|
173
|
+
const configPath = (0, path_1.join)(cwd, configFile ?? 'nuxt.config.ts');
|
|
174
|
+
const result = await (0, nuxt_1.injectNuxt)(configPath);
|
|
175
|
+
if (result.alreadyConfigured)
|
|
176
|
+
logger_1.logger.warn('HTTPS already configured in Nuxt config — skipping injection.');
|
|
177
|
+
else
|
|
178
|
+
logger_1.logger.success(`Config updated${result.created ? ' (new file created)' : ''}`);
|
|
179
|
+
break;
|
|
180
|
+
}
|
|
181
|
+
case 'fastify': {
|
|
182
|
+
const envPath = (0, path_1.join)(cwd, '.env');
|
|
183
|
+
await (0, fastify_1.injectFastify)(envPath, caRootPem);
|
|
184
|
+
logger_1.logger.success('NODE_EXTRA_CA_CERTS set in .env');
|
|
185
|
+
(0, fastify_1.printFastifySnippet)(trustlocal_1.CERT_DIR);
|
|
186
|
+
break;
|
|
187
|
+
}
|
|
188
|
+
case 'nestjs': {
|
|
189
|
+
const envPath = (0, path_1.join)(cwd, '.env');
|
|
190
|
+
await (0, nestjs_1.injectNestjs)(envPath, caRootPem);
|
|
191
|
+
logger_1.logger.success('NODE_EXTRA_CA_CERTS set in .env');
|
|
192
|
+
(0, nestjs_1.printNestjsSnippet)(trustlocal_1.CERT_DIR);
|
|
193
|
+
break;
|
|
194
|
+
}
|
|
170
195
|
case 'express': {
|
|
171
196
|
const envPath = (0, path_1.join)(cwd, '.env');
|
|
172
197
|
await (0, express_1.injectExpress)(envPath, caRootPem);
|
|
@@ -237,6 +262,12 @@ async function runInit(options = {}) {
|
|
|
237
262
|
const overrides = {
|
|
238
263
|
nextjs: 'nextjs', next: 'nextjs',
|
|
239
264
|
vite: 'vite',
|
|
265
|
+
astro: 'astro',
|
|
266
|
+
sveltekit: 'sveltekit', svelte: 'sveltekit',
|
|
267
|
+
nuxt: 'nuxt',
|
|
268
|
+
remix: 'remix',
|
|
269
|
+
fastify: 'fastify',
|
|
270
|
+
nestjs: 'nestjs', nest: 'nestjs',
|
|
240
271
|
express: 'express', node: 'express',
|
|
241
272
|
nginx: 'nginx',
|
|
242
273
|
plain: 'plain',
|
|
@@ -301,11 +332,9 @@ async function runInit(options = {}) {
|
|
|
301
332
|
return new Date(Date.now() + 2 * 365 * 24 * 3600 * 1000);
|
|
302
333
|
}
|
|
303
334
|
})();
|
|
304
|
-
const port = await detectDevPort(cwd, detection.framework);
|
|
305
|
-
const httpsUrl = port ? `https://localhost:${port}` : 'https://localhost';
|
|
306
335
|
logger_1.logger.blank();
|
|
307
336
|
logger_1.logger.success('HTTPS is ready.');
|
|
308
|
-
logger_1.logger.info(
|
|
337
|
+
logger_1.logger.info('Start your dev server and open https://localhost on your configured port.');
|
|
309
338
|
logger_1.logger.blank();
|
|
310
339
|
logger_1.logger.info('Teammates: run npx trustlocal sync to get HTTPS on their machines.');
|
|
311
340
|
logger_1.logger.info(`Cert expires: ${expiry.toISOString().split('T')[0]}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `npx trustlocal remove`
|
|
3
|
+
*
|
|
4
|
+
* Removes everything trustlocal added:
|
|
5
|
+
* 1. Read trustlocal.json
|
|
6
|
+
* 2. Confirm with user
|
|
7
|
+
* 3. Remove HTTPS injection from framework config files
|
|
8
|
+
* 4. Remove NODE_EXTRA_CA_CERTS from .env
|
|
9
|
+
* 5. Remove .trustlocal/ from .gitignore
|
|
10
|
+
* 6. Delete .trustlocal/ directory (certs)
|
|
11
|
+
* 7. Delete trustlocal.json
|
|
12
|
+
*/
|
|
13
|
+
export interface RemoveOptions {
|
|
14
|
+
yes?: boolean;
|
|
15
|
+
}
|
|
16
|
+
export declare function runRemove(options?: RemoveOptions): Promise<void>;
|
|
17
|
+
//# sourceMappingURL=remove.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"remove.d.ts","sourceRoot":"","sources":["../../src/commands/remove.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAWH,MAAM,WAAW,aAAa;IAC5B,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AA0GD,wBAAsB,SAAS,CAAC,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAsE1E"}
|