@42ws/cli 0.1.14 → 0.1.15
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 +9 -225
- package/cli.js +39 -0
- package/package.json +5 -21
- package/bin/cli.js +0 -10
- package/dist/commands/chatlog.d.ts +0 -10
- package/dist/commands/chatlog.d.ts.map +0 -1
- package/dist/commands/chatlog.js +0 -103
- package/dist/commands/chatlog.js.map +0 -1
- package/dist/commands/collections.d.ts +0 -39
- package/dist/commands/collections.d.ts.map +0 -1
- package/dist/commands/collections.js +0 -1186
- package/dist/commands/collections.js.map +0 -1
- package/dist/commands/context.d.ts +0 -12
- package/dist/commands/context.d.ts.map +0 -1
- package/dist/commands/context.js +0 -271
- package/dist/commands/context.js.map +0 -1
- package/dist/commands/dev.d.ts +0 -13
- package/dist/commands/dev.d.ts.map +0 -1
- package/dist/commands/dev.js +0 -372
- package/dist/commands/dev.js.map +0 -1
- package/dist/commands/domains.d.ts +0 -10
- package/dist/commands/domains.d.ts.map +0 -1
- package/dist/commands/domains.js +0 -179
- package/dist/commands/domains.js.map +0 -1
- package/dist/commands/editlog.d.ts +0 -12
- package/dist/commands/editlog.d.ts.map +0 -1
- package/dist/commands/editlog.js +0 -188
- package/dist/commands/editlog.js.map +0 -1
- package/dist/commands/forms.d.ts +0 -23
- package/dist/commands/forms.d.ts.map +0 -1
- package/dist/commands/forms.js +0 -558
- package/dist/commands/forms.js.map +0 -1
- package/dist/commands/init.d.ts +0 -18
- package/dist/commands/init.d.ts.map +0 -1
- package/dist/commands/init.js +0 -197
- package/dist/commands/init.js.map +0 -1
- package/dist/commands/login.d.ts +0 -7
- package/dist/commands/login.d.ts.map +0 -1
- package/dist/commands/login.js +0 -110
- package/dist/commands/login.js.map +0 -1
- package/dist/commands/logout.d.ts +0 -2
- package/dist/commands/logout.d.ts.map +0 -1
- package/dist/commands/logout.js +0 -31
- package/dist/commands/logout.js.map +0 -1
- package/dist/commands/open.d.ts +0 -6
- package/dist/commands/open.d.ts.map +0 -1
- package/dist/commands/open.js +0 -54
- package/dist/commands/open.js.map +0 -1
- package/dist/commands/prompts.d.ts +0 -7
- package/dist/commands/prompts.d.ts.map +0 -1
- package/dist/commands/prompts.js +0 -55
- package/dist/commands/prompts.js.map +0 -1
- package/dist/commands/publish.d.ts +0 -19
- package/dist/commands/publish.d.ts.map +0 -1
- package/dist/commands/publish.js +0 -437
- package/dist/commands/publish.js.map +0 -1
- package/dist/commands/pull.d.ts +0 -7
- package/dist/commands/pull.d.ts.map +0 -1
- package/dist/commands/pull.js +0 -157
- package/dist/commands/pull.js.map +0 -1
- package/dist/commands/sites.d.ts +0 -13
- package/dist/commands/sites.d.ts.map +0 -1
- package/dist/commands/sites.js +0 -316
- package/dist/commands/sites.js.map +0 -1
- package/dist/commands/upgrade.d.ts +0 -2
- package/dist/commands/upgrade.d.ts.map +0 -1
- package/dist/commands/upgrade.js +0 -15
- package/dist/commands/upgrade.js.map +0 -1
- package/dist/commands/whoami.d.ts +0 -4
- package/dist/commands/whoami.d.ts.map +0 -1
- package/dist/commands/whoami.js +0 -98
- package/dist/commands/whoami.js.map +0 -1
- package/dist/index.d.ts +0 -2
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -428
- package/dist/index.js.map +0 -1
- package/dist/lib/api.d.ts +0 -12
- package/dist/lib/api.d.ts.map +0 -1
- package/dist/lib/api.js +0 -121
- package/dist/lib/api.js.map +0 -1
- package/dist/lib/config.d.ts +0 -27
- package/dist/lib/config.d.ts.map +0 -1
- package/dist/lib/config.js +0 -65
- package/dist/lib/config.js.map +0 -1
- package/dist/lib/detect.d.ts +0 -9
- package/dist/lib/detect.d.ts.map +0 -1
- package/dist/lib/detect.js +0 -112
- package/dist/lib/detect.js.map +0 -1
- package/dist/lib/files.d.ts +0 -16
- package/dist/lib/files.d.ts.map +0 -1
- package/dist/lib/files.js +0 -200
- package/dist/lib/files.js.map +0 -1
- package/dist/lib/html.d.ts +0 -8
- package/dist/lib/html.d.ts.map +0 -1
- package/dist/lib/html.js +0 -63
- package/dist/lib/html.js.map +0 -1
- package/dist/lib/i18n.d.ts +0 -6
- package/dist/lib/i18n.d.ts.map +0 -1
- package/dist/lib/i18n.js +0 -256
- package/dist/lib/i18n.js.map +0 -1
- package/dist/lib/import-prompts.d.ts +0 -46
- package/dist/lib/import-prompts.d.ts.map +0 -1
- package/dist/lib/import-prompts.js +0 -279
- package/dist/lib/import-prompts.js.map +0 -1
- package/dist/lib/inspector-client.d.ts +0 -3
- package/dist/lib/inspector-client.d.ts.map +0 -1
- package/dist/lib/inspector-client.js +0 -253
- package/dist/lib/inspector-client.js.map +0 -1
- package/dist/lib/output.d.ts +0 -11
- package/dist/lib/output.d.ts.map +0 -1
- package/dist/lib/output.js +0 -49
- package/dist/lib/output.js.map +0 -1
- package/dist/lib/project.d.ts +0 -25
- package/dist/lib/project.d.ts.map +0 -1
- package/dist/lib/project.js +0 -62
- package/dist/lib/project.js.map +0 -1
- package/dist/lib/suggest.d.ts +0 -12
- package/dist/lib/suggest.d.ts.map +0 -1
- package/dist/lib/suggest.js +0 -36
- package/dist/lib/suggest.js.map +0 -1
- package/dist/lib/update-check.d.ts +0 -22
- package/dist/lib/update-check.d.ts.map +0 -1
- package/dist/lib/update-check.js +0 -182
- package/dist/lib/update-check.js.map +0 -1
- package/dist/run.d.ts +0 -2
- package/dist/run.d.ts.map +0 -1
- package/dist/run.js +0 -17
- package/dist/run.js.map +0 -1
- package/dist/version.d.ts +0 -2
- package/dist/version.d.ts.map +0 -1
- package/dist/version.js +0 -3
- package/dist/version.js.map +0 -1
package/dist/commands/dev.js
DELETED
|
@@ -1,372 +0,0 @@
|
|
|
1
|
-
import { createServer } from 'node:http';
|
|
2
|
-
import { existsSync, statSync, readFileSync, createReadStream, appendFileSync, mkdirSync, renameSync, } from 'node:fs';
|
|
3
|
-
import { join, resolve, basename, extname, sep } from 'node:path';
|
|
4
|
-
import { info, successMessage, error, warn, isJsonMode, success } from '../lib/output.js';
|
|
5
|
-
import { INSPECTOR_CLIENT_JS, INSPECTOR_ENDPOINT } from '../lib/inspector-client.js';
|
|
6
|
-
// 配信面比率。本来は @42ws/shared の DELIVERY_PLATFORMS が単一ソースだが、@42ws/shared は
|
|
7
|
-
// private(npm 未公開)かつ npm 配布の dist は tsc 出力で bundle しないため、ランタイムで
|
|
8
|
-
// import すると解決できず全コマンドが起動不能になる(0.1.6〜0.1.13 の実害)。CLI が必要と
|
|
9
|
-
// するのは ratio/label/w/h だけなので、ここにインラインで持つ。shared 側を変えたら追従する。
|
|
10
|
-
const DELIVERY_PLATFORMS = [
|
|
11
|
-
{ id: 'portrait', label: 'Shorts / Reels / TikTok', ratio: '9:16', w: 9, h: 16 },
|
|
12
|
-
{ id: 'square', label: 'Instagram / X カード', ratio: '1:1', w: 1, h: 1 },
|
|
13
|
-
{ id: 'tall', label: 'Instagram 縦 / Meta 広告', ratio: '4:5', w: 4, h: 5 },
|
|
14
|
-
{ id: 'landscape', label: 'OGP / YouTube / X', ratio: '16:9', w: 16, h: 9 },
|
|
15
|
-
];
|
|
16
|
-
const DEV_HELP = `
|
|
17
|
-
42ws dev — ローカル検証サーバー (AI 向けページ診断付き)
|
|
18
|
-
|
|
19
|
-
Usage:
|
|
20
|
-
42ws dev [options] Start a local server that serves your site and
|
|
21
|
-
injects the inspector (default port 4242)
|
|
22
|
-
42ws dev errors [site] Print recent client errors collected by the server
|
|
23
|
-
|
|
24
|
-
Options:
|
|
25
|
-
--site <name> Site name (used for the log filename). Defaults to 42ws.json or dir name.
|
|
26
|
-
--dir <path> Directory to serve. Defaults to 42ws.json "output" or current dir.
|
|
27
|
-
--port <n> Port to listen on (default 4242)
|
|
28
|
-
--spa Fall back to index.html for unknown routes
|
|
29
|
-
--lines <n> (errors) Number of recent log lines to print (default 100)
|
|
30
|
-
|
|
31
|
-
Notes:
|
|
32
|
-
- HTML レスポンスの </body> 直前に inspector を inject します。
|
|
33
|
-
- ブラウザで開き「検証する」を押して問題の要素をクリックすると、診断パックが
|
|
34
|
-
クリップボードにコピーされます。AI にそのまま貼り付けてください。
|
|
35
|
-
- クライアントの JS / HTTP エラーは .42ws/dev-<site>.log に集約されます。
|
|
36
|
-
- /__42ws_inspector/thumbnail を開くとヒーロー/FV を 1:1・4:5・16:9 で確認できます。
|
|
37
|
-
`.trim();
|
|
38
|
-
const LOG_DIR = '.42ws';
|
|
39
|
-
const MAX_LOG_BYTES = 5 * 1024 * 1024;
|
|
40
|
-
const INSPECTOR_SCRIPT_TAG = `<script src="${INSPECTOR_ENDPOINT}/inspector.js" data-42ws-inspector></script>`;
|
|
41
|
-
const THUMBNAIL_PATH = INSPECTOR_ENDPOINT + '/thumbnail';
|
|
42
|
-
// 配信面プレビュー — ヒーロー/FV を SNS サムネイル比率で確認するページ。
|
|
43
|
-
// iframe に同一オリジンのトップページを読み込み、CSS scale でアスペクト比ごとにクリップする。
|
|
44
|
-
// var R は DELIVERY_PLATFORMS から生成して注入する(埋め込み JS 内ではバッククォート・${} 不使用)。
|
|
45
|
-
const THUMBNAIL_HTML = `<!doctype html>
|
|
46
|
-
<html lang="ja">
|
|
47
|
-
<head>
|
|
48
|
-
<meta charset="utf-8">
|
|
49
|
-
<title>配信面プレビュー — 42ws dev</title>
|
|
50
|
-
<style>
|
|
51
|
-
*{box-sizing:border-box}
|
|
52
|
-
body{margin:0;padding:24px 28px;background:#0f0f0f;color:#ddd;font:13px/1.6 ui-monospace,monospace}
|
|
53
|
-
h1{margin:0 0 4px;font-size:14px;color:#eee}
|
|
54
|
-
.sub{margin:0 0 24px;font-size:11px;color:#555}
|
|
55
|
-
.grid{display:grid;grid-template-columns:repeat(3,300px);gap:20px}
|
|
56
|
-
.rname{font-size:12px;font-weight:bold;color:#bbb;margin-bottom:2px}
|
|
57
|
-
.rlabel{font-size:10px;color:#555;margin-bottom:8px}
|
|
58
|
-
.wrap{overflow:hidden;border:1px solid #1f1f1f;border-radius:1px;background:#000}
|
|
59
|
-
iframe{border:none;display:block;transform-origin:top left;pointer-events:none}
|
|
60
|
-
footer{margin-top:20px;font-size:10px;color:#3a3a3a}
|
|
61
|
-
</style>
|
|
62
|
-
</head>
|
|
63
|
-
<body>
|
|
64
|
-
<h1>配信面プレビュー</h1>
|
|
65
|
-
<p class="sub">ヒーロー / FV が SNS サムネイル比率(9:16 / 1:1 / 4:5 / 16:9)でどう見えるか確認 — 公開前チェック用</p>
|
|
66
|
-
<div class="grid" id="g"></div>
|
|
67
|
-
<footer>アルゴリズムはサムネイルを本文より先に評価します。配信面で潰れないか公開前に確認してください。</footer>
|
|
68
|
-
<script>
|
|
69
|
-
var R=${JSON.stringify(DELIVERY_PLATFORMS.map(p => ({ n: p.ratio, l: p.label, w: p.w, h: p.h })))};
|
|
70
|
-
var PW=1200,TW=300,g=document.getElementById("g");
|
|
71
|
-
for(var i=0;i<R.length;i++){
|
|
72
|
-
var r=R[i];
|
|
73
|
-
var dh=Math.round(TW*r.h/r.w);
|
|
74
|
-
var sc=TW/PW;
|
|
75
|
-
var ifh=Math.ceil(dh/sc);
|
|
76
|
-
var el=document.createElement("div");
|
|
77
|
-
el.innerHTML='<div class="rname">'+r.n+'</div>'
|
|
78
|
-
+'<div class="rlabel">'+r.l+'</div>'
|
|
79
|
-
+'<div class="wrap" style="width:'+TW+'px;height:'+dh+'px">'
|
|
80
|
-
+'<iframe src="/" width="'+PW+'" height="'+ifh+'"'
|
|
81
|
-
+' style="transform:scale('+sc+');width:'+PW+'px;height:'+ifh+'px"'
|
|
82
|
-
+' scrolling="no"></iframe></div>';
|
|
83
|
-
g.appendChild(el);
|
|
84
|
-
}
|
|
85
|
-
</script>
|
|
86
|
-
</body>
|
|
87
|
-
</html>`;
|
|
88
|
-
const CONTENT_TYPE = {
|
|
89
|
-
'.html': 'text/html; charset=utf-8',
|
|
90
|
-
'.css': 'text/css; charset=utf-8',
|
|
91
|
-
'.js': 'application/javascript; charset=utf-8',
|
|
92
|
-
'.mjs': 'application/javascript; charset=utf-8',
|
|
93
|
-
'.json': 'application/json; charset=utf-8',
|
|
94
|
-
'.png': 'image/png',
|
|
95
|
-
'.jpg': 'image/jpeg',
|
|
96
|
-
'.jpeg': 'image/jpeg',
|
|
97
|
-
'.webp': 'image/webp',
|
|
98
|
-
'.gif': 'image/gif',
|
|
99
|
-
'.svg': 'image/svg+xml',
|
|
100
|
-
'.ico': 'image/x-icon',
|
|
101
|
-
'.woff': 'font/woff',
|
|
102
|
-
'.woff2': 'font/woff2',
|
|
103
|
-
'.txt': 'text/plain; charset=utf-8',
|
|
104
|
-
'.xml': 'application/xml',
|
|
105
|
-
'.pdf': 'application/pdf',
|
|
106
|
-
'.mp4': 'video/mp4',
|
|
107
|
-
'.mp3': 'audio/mpeg',
|
|
108
|
-
};
|
|
109
|
-
function loadProjectConfig(cwd) {
|
|
110
|
-
const configPath = join(cwd, '42ws.json');
|
|
111
|
-
if (!existsSync(configPath))
|
|
112
|
-
return {};
|
|
113
|
-
try {
|
|
114
|
-
return JSON.parse(readFileSync(configPath, 'utf-8'));
|
|
115
|
-
}
|
|
116
|
-
catch {
|
|
117
|
-
return {};
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
function slugify(name) {
|
|
121
|
-
return name.toLowerCase().replace(/[^a-z0-9-]+/g, '-').replace(/^-+|-+$/g, '');
|
|
122
|
-
}
|
|
123
|
-
function resolveSite(cwd, args, config) {
|
|
124
|
-
return args.site ?? config.site ?? slugify(basename(cwd)) ?? 'site';
|
|
125
|
-
}
|
|
126
|
-
function logPath(cwd, site) {
|
|
127
|
-
return join(cwd, LOG_DIR, `dev-${site}.log`);
|
|
128
|
-
}
|
|
129
|
-
function contentType(filePath) {
|
|
130
|
-
return CONTENT_TYPE[extname(filePath).toLowerCase()] ?? 'application/octet-stream';
|
|
131
|
-
}
|
|
132
|
-
function injectInspector(html) {
|
|
133
|
-
const idx = html.toLowerCase().lastIndexOf('</body>');
|
|
134
|
-
if (idx === -1)
|
|
135
|
-
return html + INSPECTOR_SCRIPT_TAG;
|
|
136
|
-
return html.slice(0, idx) + INSPECTOR_SCRIPT_TAG + html.slice(idx);
|
|
137
|
-
}
|
|
138
|
-
// ---------------------------------------------------------------------------
|
|
139
|
-
// logging
|
|
140
|
-
// ---------------------------------------------------------------------------
|
|
141
|
-
function appendLog(file, entry) {
|
|
142
|
-
try {
|
|
143
|
-
mkdirSync(join(file, '..'), { recursive: true });
|
|
144
|
-
if (existsSync(file) && statSync(file).size > MAX_LOG_BYTES) {
|
|
145
|
-
renameSync(file, file + '.bak');
|
|
146
|
-
}
|
|
147
|
-
appendFileSync(file, JSON.stringify({ ts: new Date().toISOString(), ...entry }) + '\n');
|
|
148
|
-
}
|
|
149
|
-
catch {
|
|
150
|
-
/* logging must never crash the server */
|
|
151
|
-
}
|
|
152
|
-
}
|
|
153
|
-
function readBody(req, max = 64 * 1024) {
|
|
154
|
-
return new Promise(resolve => {
|
|
155
|
-
let data = '';
|
|
156
|
-
let aborted = false;
|
|
157
|
-
req.on('data', chunk => {
|
|
158
|
-
if (aborted)
|
|
159
|
-
return;
|
|
160
|
-
data += chunk;
|
|
161
|
-
if (data.length > max) {
|
|
162
|
-
aborted = true;
|
|
163
|
-
data = data.slice(0, max);
|
|
164
|
-
}
|
|
165
|
-
});
|
|
166
|
-
req.on('end', () => resolve(data));
|
|
167
|
-
req.on('error', () => resolve(data));
|
|
168
|
-
});
|
|
169
|
-
}
|
|
170
|
-
// ---------------------------------------------------------------------------
|
|
171
|
-
// static serving
|
|
172
|
-
// ---------------------------------------------------------------------------
|
|
173
|
-
function resolveFile(root, urlPath) {
|
|
174
|
-
let rel;
|
|
175
|
-
try {
|
|
176
|
-
rel = decodeURIComponent(urlPath.split('?')[0]);
|
|
177
|
-
}
|
|
178
|
-
catch {
|
|
179
|
-
return null;
|
|
180
|
-
}
|
|
181
|
-
if (rel.endsWith('/'))
|
|
182
|
-
rel += 'index.html';
|
|
183
|
-
const abs = resolve(root, '.' + rel);
|
|
184
|
-
// path traversal guard: must stay within root
|
|
185
|
-
if (abs !== root && !abs.startsWith(root + sep))
|
|
186
|
-
return null;
|
|
187
|
-
if (existsSync(abs) && statSync(abs).isDirectory()) {
|
|
188
|
-
const indexFile = join(abs, 'index.html');
|
|
189
|
-
return existsSync(indexFile) ? indexFile : null;
|
|
190
|
-
}
|
|
191
|
-
return existsSync(abs) ? abs : null;
|
|
192
|
-
}
|
|
193
|
-
function handleStatic(req, res, root, spa) {
|
|
194
|
-
const urlPath = (req.url ?? '/') === '/' ? '/index.html' : (req.url ?? '/');
|
|
195
|
-
let file = resolveFile(root, urlPath);
|
|
196
|
-
if (!file && spa) {
|
|
197
|
-
const accept = req.headers['accept'] ?? '';
|
|
198
|
-
if (extname(urlPath.split('?')[0]) === '' && accept.includes('text/html')) {
|
|
199
|
-
const fallback = join(root, 'index.html');
|
|
200
|
-
if (existsSync(fallback))
|
|
201
|
-
file = fallback;
|
|
202
|
-
}
|
|
203
|
-
}
|
|
204
|
-
// 検証時の誤判定を防ぐため、すべてのレスポンスでキャッシュ系ヘッダを厳しく無効化する
|
|
205
|
-
// (no-store だけだと bfcache や中間プロキシで効かないケースがあるため Pragma / Expires も)
|
|
206
|
-
const noCacheHeaders = {
|
|
207
|
-
'cache-control': 'no-store, no-cache, must-revalidate, max-age=0',
|
|
208
|
-
pragma: 'no-cache',
|
|
209
|
-
expires: '0',
|
|
210
|
-
};
|
|
211
|
-
if (!file) {
|
|
212
|
-
const safePath = urlPath.replace(/&/g, '&').replace(/</g, '<');
|
|
213
|
-
res.writeHead(404, { 'content-type': 'text/html; charset=utf-8', ...noCacheHeaders });
|
|
214
|
-
res.end('<!doctype html><meta charset="utf-8"><title>404</title>' +
|
|
215
|
-
'<body style="font:14px ui-monospace,monospace;padding:40px;color:#333">' +
|
|
216
|
-
'404 Not Found: ' + safePath +
|
|
217
|
-
INSPECTOR_SCRIPT_TAG + '</body>');
|
|
218
|
-
return;
|
|
219
|
-
}
|
|
220
|
-
const type = contentType(file);
|
|
221
|
-
if (type.startsWith('text/html')) {
|
|
222
|
-
const html = injectInspector(readFileSync(file, 'utf-8'));
|
|
223
|
-
res.writeHead(200, { 'content-type': type, ...noCacheHeaders });
|
|
224
|
-
res.end(html);
|
|
225
|
-
return;
|
|
226
|
-
}
|
|
227
|
-
res.writeHead(200, { 'content-type': type, ...noCacheHeaders });
|
|
228
|
-
createReadStream(file).pipe(res);
|
|
229
|
-
}
|
|
230
|
-
// ---------------------------------------------------------------------------
|
|
231
|
-
// commands
|
|
232
|
-
// ---------------------------------------------------------------------------
|
|
233
|
-
function showErrors(cwd, args) {
|
|
234
|
-
const config = loadProjectConfig(cwd);
|
|
235
|
-
const site = args.positional[0] ?? resolveSite(cwd, args, config);
|
|
236
|
-
const file = logPath(cwd, site);
|
|
237
|
-
if (!existsSync(file)) {
|
|
238
|
-
if (isJsonMode()) {
|
|
239
|
-
success({ site, file, entries: [] });
|
|
240
|
-
}
|
|
241
|
-
else {
|
|
242
|
-
info(`No error log yet for "${site}" (${file}).`);
|
|
243
|
-
info('Run `42ws dev --site ' + site + '` and reproduce the issue first.');
|
|
244
|
-
}
|
|
245
|
-
return;
|
|
246
|
-
}
|
|
247
|
-
const limit = args.lines ? Math.max(1, parseInt(args.lines, 10) || 100) : 100;
|
|
248
|
-
const lines = readFileSync(file, 'utf-8').split('\n').filter(Boolean);
|
|
249
|
-
const recent = lines.slice(-limit);
|
|
250
|
-
if (isJsonMode()) {
|
|
251
|
-
const entries = recent.map(l => {
|
|
252
|
-
try {
|
|
253
|
-
return JSON.parse(l);
|
|
254
|
-
}
|
|
255
|
-
catch {
|
|
256
|
-
return { raw: l };
|
|
257
|
-
}
|
|
258
|
-
});
|
|
259
|
-
success({ site, file, entries });
|
|
260
|
-
return;
|
|
261
|
-
}
|
|
262
|
-
successMessage(`# ${site} — 直近 ${recent.length} 件のクライアントエラー (${file})`);
|
|
263
|
-
for (const line of recent) {
|
|
264
|
-
try {
|
|
265
|
-
const e = JSON.parse(line);
|
|
266
|
-
successMessage(`${e.ts ?? ''} [${e.type ?? '?'}] ${e.message ?? ''}`);
|
|
267
|
-
}
|
|
268
|
-
catch {
|
|
269
|
-
successMessage(line);
|
|
270
|
-
}
|
|
271
|
-
}
|
|
272
|
-
}
|
|
273
|
-
function startServer(cwd, args) {
|
|
274
|
-
const config = loadProjectConfig(cwd);
|
|
275
|
-
const site = resolveSite(cwd, args, config);
|
|
276
|
-
const dirRaw = args.dir ?? config.output ?? '.';
|
|
277
|
-
const root = resolve(cwd, dirRaw);
|
|
278
|
-
const spa = args.spa ?? config.spa ?? false;
|
|
279
|
-
const port = args.port ? parseInt(args.port, 10) : 4242;
|
|
280
|
-
const file = logPath(cwd, site);
|
|
281
|
-
if (!existsSync(root)) {
|
|
282
|
-
error('DIR_NOT_FOUND', `Directory to serve not found: ${root}`, 'Specify --dir <path>, or set "output" in 42ws.json.');
|
|
283
|
-
process.exit(1);
|
|
284
|
-
return;
|
|
285
|
-
}
|
|
286
|
-
const server = createServer(async (req, res) => {
|
|
287
|
-
const url = req.url ?? '/';
|
|
288
|
-
if (url.startsWith(INSPECTOR_ENDPOINT + '/log') && req.method === 'POST') {
|
|
289
|
-
const body = await readBody(req);
|
|
290
|
-
try {
|
|
291
|
-
const parsed = JSON.parse(body);
|
|
292
|
-
appendLog(file, parsed);
|
|
293
|
-
}
|
|
294
|
-
catch {
|
|
295
|
-
appendLog(file, { type: 'Raw', message: body.slice(0, 1000) });
|
|
296
|
-
}
|
|
297
|
-
res.writeHead(204);
|
|
298
|
-
res.end();
|
|
299
|
-
return;
|
|
300
|
-
}
|
|
301
|
-
if (url.startsWith(INSPECTOR_ENDPOINT + '/inspector.js')) {
|
|
302
|
-
res.writeHead(200, { 'content-type': 'application/javascript; charset=utf-8', 'cache-control': 'no-store' });
|
|
303
|
-
res.end(INSPECTOR_CLIENT_JS);
|
|
304
|
-
return;
|
|
305
|
-
}
|
|
306
|
-
if (url === THUMBNAIL_PATH) {
|
|
307
|
-
res.writeHead(200, { 'content-type': 'text/html; charset=utf-8', 'cache-control': 'no-store' });
|
|
308
|
-
res.end(THUMBNAIL_HTML);
|
|
309
|
-
return;
|
|
310
|
-
}
|
|
311
|
-
try {
|
|
312
|
-
handleStatic(req, res, root, spa);
|
|
313
|
-
}
|
|
314
|
-
catch (e) {
|
|
315
|
-
res.writeHead(500, { 'content-type': 'text/plain; charset=utf-8' });
|
|
316
|
-
res.end('500 Internal Server Error: ' + (e instanceof Error ? e.message : String(e)));
|
|
317
|
-
}
|
|
318
|
-
});
|
|
319
|
-
server.on('error', (e) => {
|
|
320
|
-
if (e.code === 'EADDRINUSE') {
|
|
321
|
-
error('PORT_IN_USE', `Port ${port} is already in use.`, 'Try a different port with --port <n>.');
|
|
322
|
-
}
|
|
323
|
-
else {
|
|
324
|
-
error('SERVER_ERROR', e.message);
|
|
325
|
-
}
|
|
326
|
-
process.exit(1);
|
|
327
|
-
});
|
|
328
|
-
server.listen(port, () => {
|
|
329
|
-
const localUrl = `http://localhost:${port}`;
|
|
330
|
-
if (isJsonMode()) {
|
|
331
|
-
success({ site, dir: root, port, url: localUrl, log: file });
|
|
332
|
-
return;
|
|
333
|
-
}
|
|
334
|
-
info('');
|
|
335
|
-
info(` 42ws dev — ${site}`);
|
|
336
|
-
info(` serving ${root}`);
|
|
337
|
-
info(` local ${localUrl}`);
|
|
338
|
-
info(` thumbnail ${localUrl}${THUMBNAIL_PATH}`);
|
|
339
|
-
info(` errors ${file}`);
|
|
340
|
-
if (spa)
|
|
341
|
-
info(' spa on (index.html fallback)');
|
|
342
|
-
info('');
|
|
343
|
-
info(' ブラウザで開き「検証する」ボタンから要素をクリックすると診断パックをコピーします。');
|
|
344
|
-
info(' thumbnail URL でヒーロー/FV を 9:16・1:1・4:5・16:9 で確認できます。');
|
|
345
|
-
info(' 停止するには Ctrl+C。');
|
|
346
|
-
info('');
|
|
347
|
-
});
|
|
348
|
-
const shutdown = () => {
|
|
349
|
-
server.close(() => process.exit(0));
|
|
350
|
-
setTimeout(() => process.exit(0), 500);
|
|
351
|
-
};
|
|
352
|
-
process.on('SIGINT', shutdown);
|
|
353
|
-
process.on('SIGTERM', shutdown);
|
|
354
|
-
}
|
|
355
|
-
export async function dev(args) {
|
|
356
|
-
if (args.help) {
|
|
357
|
-
successMessage(DEV_HELP);
|
|
358
|
-
return;
|
|
359
|
-
}
|
|
360
|
-
const cwd = process.cwd();
|
|
361
|
-
if (args.subcommand === 'errors') {
|
|
362
|
-
showErrors(cwd, args);
|
|
363
|
-
return;
|
|
364
|
-
}
|
|
365
|
-
if (args.subcommand && args.subcommand !== 'errors') {
|
|
366
|
-
warn(`Unknown subcommand: ${args.subcommand}`);
|
|
367
|
-
successMessage(DEV_HELP);
|
|
368
|
-
return;
|
|
369
|
-
}
|
|
370
|
-
startServer(cwd, args);
|
|
371
|
-
}
|
|
372
|
-
//# sourceMappingURL=dev.js.map
|
package/dist/commands/dev.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"dev.js","sourceRoot":"","sources":["../../src/commands/dev.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
export interface DomainsOpts {
|
|
2
|
-
subcommand?: string;
|
|
3
|
-
positional: string[];
|
|
4
|
-
site?: string;
|
|
5
|
-
cname?: boolean;
|
|
6
|
-
json?: boolean;
|
|
7
|
-
help?: boolean;
|
|
8
|
-
}
|
|
9
|
-
export declare function domains(opts: DomainsOpts): Promise<void>;
|
|
10
|
-
//# sourceMappingURL=domains.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"domains.d.ts","sourceRoot":"","sources":["../../src/commands/domains.ts"],"names":[],"mappings":"AA2CA,MAAM,WAAW,WAAW;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAiED,wBAAsB,OAAO,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAuE9D"}
|
package/dist/commands/domains.js
DELETED
|
@@ -1,179 +0,0 @@
|
|
|
1
|
-
import { loadConfig } from '../lib/config.js';
|
|
2
|
-
import { apiRequest, ApiError } from '../lib/api.js';
|
|
3
|
-
import { info, successMessage, error, isJsonMode } from '../lib/output.js';
|
|
4
|
-
const HELP = `
|
|
5
|
-
42ws domains — サイトに独自ドメインを繋ぐ(Personal プラン以上)
|
|
6
|
-
|
|
7
|
-
2 つの方式があります:
|
|
8
|
-
おまかせ DNS(既定・推奨): ネームサーバーを 42ws に向けるだけ。apex(example.com)も
|
|
9
|
-
証明書も配信レコードも 42ws が全自動。新規/サイト専用ドメイン向け。
|
|
10
|
-
手動 CNAME(--cname) : NS は動かさず、検証 CNAME と最終 CNAME を自分で追加。
|
|
11
|
-
既にメール等で運用中のドメイン向け(apex は ALIAS 対応 DNS が必要)。
|
|
12
|
-
|
|
13
|
-
Usage:
|
|
14
|
-
42ws domains add <domain> --site <site> おまかせ DNS で登録(NS を表示)
|
|
15
|
-
42ws domains add <domain> --site <site> --cname 手動 CNAME で登録(検証 CNAME を表示)
|
|
16
|
-
42ws domains verify <domain> --site <site> 状況確認 / 次の手順を表示
|
|
17
|
-
42ws domains list --site <site> 登録済みドメイン一覧
|
|
18
|
-
42ws domains rm <domain> --site <site> ドメインを無効化
|
|
19
|
-
|
|
20
|
-
おまかせ DNS の流れ:
|
|
21
|
-
1. add → 表示された NS 4 本を、ドメインのレジストラ(お名前.com 等)に設定
|
|
22
|
-
2. 数分後 verify → 委任を検知すると証明書発行〜配信まで自動。apex も繋がる
|
|
23
|
-
※ NS を 42ws に向けると、そのドメインの DNS 全体を 42ws が管理します。
|
|
24
|
-
既にメール(MX)等を使っているドメインでは --cname を使ってください。
|
|
25
|
-
|
|
26
|
-
Options:
|
|
27
|
-
--site <site> 対象サイト名(必須)
|
|
28
|
-
--cname 手動 CNAME 方式を使う(既定はおまかせ DNS)
|
|
29
|
-
--json JSON で出力
|
|
30
|
-
`.trim();
|
|
31
|
-
// 2 ラベル以下は apex とみなす(example.com / 5en.club 等)。
|
|
32
|
-
function looksLikeApex(domain) {
|
|
33
|
-
return domain.split('.').filter(Boolean).length <= 2;
|
|
34
|
-
}
|
|
35
|
-
function printStatus(res) {
|
|
36
|
-
switch (res.status) {
|
|
37
|
-
case 'active':
|
|
38
|
-
successMessage(`✓ ${res.domain} は有効です`);
|
|
39
|
-
if (res.mode === 'managed') {
|
|
40
|
-
info('DNS レコードは 42ws が自動設定済みです。数分の伝播後に公開されます。');
|
|
41
|
-
}
|
|
42
|
-
else if (res.distributionDomain) {
|
|
43
|
-
info('');
|
|
44
|
-
if (looksLikeApex(res.domain)) {
|
|
45
|
-
info('最終レコードを DNS に設定してください(apex は CNAME 不可):');
|
|
46
|
-
info(` Route53 : A / Alias=Yes → ${res.distributionDomain}`);
|
|
47
|
-
info(` Cloudflare : CNAME(フラット化) ${res.domain} → ${res.distributionDomain}`);
|
|
48
|
-
info(` ALIAS 非対応(お名前.com 等): apex は不可。www サブドメインを使ってください`);
|
|
49
|
-
}
|
|
50
|
-
else {
|
|
51
|
-
info('最終 CNAME を DNS に設定してください:');
|
|
52
|
-
info(` ${res.domain} CNAME ${res.distributionDomain}`);
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
return;
|
|
56
|
-
case 'pending_delegation':
|
|
57
|
-
info(`${res.domain}: ネームサーバーを 42ws に向けてください。`);
|
|
58
|
-
info('レジストラ(お名前.com 等)でこのドメインの NS を次の 4 つに設定:');
|
|
59
|
-
info('');
|
|
60
|
-
for (const ns of res.nameservers ?? [])
|
|
61
|
-
info(` ${ns}`);
|
|
62
|
-
info('');
|
|
63
|
-
info('⚠ NS を変更すると、このドメインの DNS 全体を 42ws が管理します。');
|
|
64
|
-
info(' 既にメール等を使っているドメインなら --cname 方式を使ってください。');
|
|
65
|
-
info('');
|
|
66
|
-
info(`設定後、数分待ってから: 42ws domains verify ${res.domain} --site <site>`);
|
|
67
|
-
return;
|
|
68
|
-
case 'issuing':
|
|
69
|
-
info(`${res.domain}: 委任を確認しました。証明書を発行中です(数分)。`);
|
|
70
|
-
info(`もう少し待ってから再度: 42ws domains verify ${res.domain} --site <site>`);
|
|
71
|
-
return;
|
|
72
|
-
case 'pending_validation':
|
|
73
|
-
info(`${res.domain}: 証明書の検証待ちです。以下の CNAME を DNS に追加してください:`);
|
|
74
|
-
info('');
|
|
75
|
-
for (const r of res.validationRecords ?? [])
|
|
76
|
-
info(` ${r.name} CNAME ${r.value}`);
|
|
77
|
-
if (!res.validationRecords || res.validationRecords.length === 0) {
|
|
78
|
-
info(' (検証レコードを取得中。数十秒後に verify を再実行してください)');
|
|
79
|
-
}
|
|
80
|
-
info('');
|
|
81
|
-
info(`設定後、数分待ってから: 42ws domains verify ${res.domain} --site <site>`);
|
|
82
|
-
return;
|
|
83
|
-
case 'failed':
|
|
84
|
-
error('DOMAIN_VALIDATION_FAILED', `${res.domain} の証明書検証に失敗しました`, '設定を確認し add からやり直してください。');
|
|
85
|
-
process.exit(1);
|
|
86
|
-
return;
|
|
87
|
-
default:
|
|
88
|
-
info(`${res.domain}: status=${res.status}`);
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
export async function domains(opts) {
|
|
92
|
-
if (opts.help || opts.positional.includes('--help') || !opts.subcommand) {
|
|
93
|
-
process.stdout.write(HELP + '\n');
|
|
94
|
-
return;
|
|
95
|
-
}
|
|
96
|
-
const cfg = loadConfig();
|
|
97
|
-
if (!cfg.token || !cfg.apiUrl) {
|
|
98
|
-
error('NOT_LOGGED_IN', 'ログインしてください: 42ws login --token <api-token>');
|
|
99
|
-
process.exit(1);
|
|
100
|
-
}
|
|
101
|
-
const sub = opts.subcommand;
|
|
102
|
-
try {
|
|
103
|
-
if (sub === 'list') {
|
|
104
|
-
const site = opts.site ?? opts.positional[0];
|
|
105
|
-
if (!site) {
|
|
106
|
-
error('INVALID_ARGS', 'Usage: 42ws domains list --site <site>');
|
|
107
|
-
process.exit(1);
|
|
108
|
-
}
|
|
109
|
-
const res = await apiRequest(cfg, 'GET', `/v1/sites/${encodeURIComponent(site)}/domains`);
|
|
110
|
-
if (isJsonMode()) {
|
|
111
|
-
process.stdout.write(JSON.stringify(res, null, 2) + '\n');
|
|
112
|
-
return;
|
|
113
|
-
}
|
|
114
|
-
if (res.domains.length === 0) {
|
|
115
|
-
info('登録済みの独自ドメインはありません');
|
|
116
|
-
info(`例: 42ws domains add example.com --site ${site}`);
|
|
117
|
-
return;
|
|
118
|
-
}
|
|
119
|
-
for (const d of res.domains) {
|
|
120
|
-
process.stdout.write(`${d.domain.padEnd(28)} ${(d.mode ?? '').padEnd(8)} ${d.status.padEnd(18)} ${d.distributionDomain ?? ''}\n`);
|
|
121
|
-
}
|
|
122
|
-
return;
|
|
123
|
-
}
|
|
124
|
-
const domain = opts.positional[0];
|
|
125
|
-
const site = opts.site;
|
|
126
|
-
if (!domain) {
|
|
127
|
-
error('INVALID_ARGS', `Usage: 42ws domains ${sub} <domain> --site <site>`);
|
|
128
|
-
process.exit(1);
|
|
129
|
-
}
|
|
130
|
-
if (!site) {
|
|
131
|
-
error('INVALID_ARGS', '--site <site> が必要です');
|
|
132
|
-
process.exit(1);
|
|
133
|
-
}
|
|
134
|
-
if (sub === 'add') {
|
|
135
|
-
const mode = opts.cname ? 'cname' : 'managed';
|
|
136
|
-
if (mode === 'cname' && looksLikeApex(domain)) {
|
|
137
|
-
info(`ヒント: ${domain} は apex です。--cname では ALIAS 対応 DNS(Route53/Cloudflare)以外で繋げません。`);
|
|
138
|
-
info(`お名前.com など標準 DNS なら www.${domain} を使うか、おまかせ DNS(--cname なし)を検討してください。`);
|
|
139
|
-
info('');
|
|
140
|
-
}
|
|
141
|
-
const res = await apiRequest(cfg, 'POST', `/v1/sites/${encodeURIComponent(site)}/domains`, { domain, mode });
|
|
142
|
-
if (isJsonMode()) {
|
|
143
|
-
process.stdout.write(JSON.stringify(res, null, 2) + '\n');
|
|
144
|
-
return;
|
|
145
|
-
}
|
|
146
|
-
printStatus(res);
|
|
147
|
-
return;
|
|
148
|
-
}
|
|
149
|
-
if (sub === 'verify' || sub === 'status') {
|
|
150
|
-
const res = await apiRequest(cfg, 'GET', `/v1/sites/${encodeURIComponent(site)}/domains/${encodeURIComponent(domain)}`);
|
|
151
|
-
if (isJsonMode()) {
|
|
152
|
-
process.stdout.write(JSON.stringify(res, null, 2) + '\n');
|
|
153
|
-
return;
|
|
154
|
-
}
|
|
155
|
-
printStatus(res);
|
|
156
|
-
return;
|
|
157
|
-
}
|
|
158
|
-
if (sub === 'rm' || sub === 'delete' || sub === 'remove') {
|
|
159
|
-
const res = await apiRequest(cfg, 'DELETE', `/v1/sites/${encodeURIComponent(site)}/domains/${encodeURIComponent(domain)}`);
|
|
160
|
-
if (isJsonMode()) {
|
|
161
|
-
process.stdout.write(JSON.stringify(res, null, 2) + '\n');
|
|
162
|
-
return;
|
|
163
|
-
}
|
|
164
|
-
successMessage(`無効化しました: ${domain}`);
|
|
165
|
-
return;
|
|
166
|
-
}
|
|
167
|
-
error('UNKNOWN_SUBCOMMAND', `Unknown subcommand: ${sub}`);
|
|
168
|
-
process.stdout.write(HELP + '\n');
|
|
169
|
-
process.exit(1);
|
|
170
|
-
}
|
|
171
|
-
catch (err) {
|
|
172
|
-
if (err instanceof ApiError)
|
|
173
|
-
error(err.code, err.message, err.suggestedFix);
|
|
174
|
-
else
|
|
175
|
-
error('UNKNOWN', err instanceof Error ? err.message : String(err));
|
|
176
|
-
process.exit(1);
|
|
177
|
-
}
|
|
178
|
-
}
|
|
179
|
-
//# sourceMappingURL=domains.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"domains.js","sourceRoot":"","sources":["../../src/commands/domains.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
export interface EditLogOpts {
|
|
2
|
-
subcommand?: string;
|
|
3
|
-
positional: string[];
|
|
4
|
-
json?: boolean;
|
|
5
|
-
page?: string;
|
|
6
|
-
all?: boolean;
|
|
7
|
-
out?: string;
|
|
8
|
-
apply?: boolean;
|
|
9
|
-
help?: boolean;
|
|
10
|
-
}
|
|
11
|
-
export declare function editlog(opts: EditLogOpts): Promise<void>;
|
|
12
|
-
//# sourceMappingURL=editlog.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"editlog.d.ts","sourceRoot":"","sources":["../../src/commands/editlog.ts"],"names":[],"mappings":"AAqEA,MAAM,WAAW,WAAW;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,wBAAsB,OAAO,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAmI9D"}
|