@42ws/cli 0.1.13 → 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.
Files changed (132) hide show
  1. package/README.md +9 -225
  2. package/cli.js +39 -0
  3. package/package.json +5 -21
  4. package/bin/cli.js +0 -10
  5. package/dist/commands/chatlog.d.ts +0 -10
  6. package/dist/commands/chatlog.d.ts.map +0 -1
  7. package/dist/commands/chatlog.js +0 -103
  8. package/dist/commands/chatlog.js.map +0 -1
  9. package/dist/commands/collections.d.ts +0 -39
  10. package/dist/commands/collections.d.ts.map +0 -1
  11. package/dist/commands/collections.js +0 -1186
  12. package/dist/commands/collections.js.map +0 -1
  13. package/dist/commands/context.d.ts +0 -12
  14. package/dist/commands/context.d.ts.map +0 -1
  15. package/dist/commands/context.js +0 -271
  16. package/dist/commands/context.js.map +0 -1
  17. package/dist/commands/dev.d.ts +0 -13
  18. package/dist/commands/dev.d.ts.map +0 -1
  19. package/dist/commands/dev.js +0 -363
  20. package/dist/commands/dev.js.map +0 -1
  21. package/dist/commands/domains.d.ts +0 -10
  22. package/dist/commands/domains.d.ts.map +0 -1
  23. package/dist/commands/domains.js +0 -179
  24. package/dist/commands/domains.js.map +0 -1
  25. package/dist/commands/editlog.d.ts +0 -12
  26. package/dist/commands/editlog.d.ts.map +0 -1
  27. package/dist/commands/editlog.js +0 -188
  28. package/dist/commands/editlog.js.map +0 -1
  29. package/dist/commands/forms.d.ts +0 -23
  30. package/dist/commands/forms.d.ts.map +0 -1
  31. package/dist/commands/forms.js +0 -558
  32. package/dist/commands/forms.js.map +0 -1
  33. package/dist/commands/init.d.ts +0 -18
  34. package/dist/commands/init.d.ts.map +0 -1
  35. package/dist/commands/init.js +0 -197
  36. package/dist/commands/init.js.map +0 -1
  37. package/dist/commands/login.d.ts +0 -7
  38. package/dist/commands/login.d.ts.map +0 -1
  39. package/dist/commands/login.js +0 -110
  40. package/dist/commands/login.js.map +0 -1
  41. package/dist/commands/logout.d.ts +0 -2
  42. package/dist/commands/logout.d.ts.map +0 -1
  43. package/dist/commands/logout.js +0 -31
  44. package/dist/commands/logout.js.map +0 -1
  45. package/dist/commands/open.d.ts +0 -6
  46. package/dist/commands/open.d.ts.map +0 -1
  47. package/dist/commands/open.js +0 -54
  48. package/dist/commands/open.js.map +0 -1
  49. package/dist/commands/prompts.d.ts +0 -7
  50. package/dist/commands/prompts.d.ts.map +0 -1
  51. package/dist/commands/prompts.js +0 -55
  52. package/dist/commands/prompts.js.map +0 -1
  53. package/dist/commands/publish.d.ts +0 -19
  54. package/dist/commands/publish.d.ts.map +0 -1
  55. package/dist/commands/publish.js +0 -437
  56. package/dist/commands/publish.js.map +0 -1
  57. package/dist/commands/pull.d.ts +0 -7
  58. package/dist/commands/pull.d.ts.map +0 -1
  59. package/dist/commands/pull.js +0 -157
  60. package/dist/commands/pull.js.map +0 -1
  61. package/dist/commands/sites.d.ts +0 -13
  62. package/dist/commands/sites.d.ts.map +0 -1
  63. package/dist/commands/sites.js +0 -316
  64. package/dist/commands/sites.js.map +0 -1
  65. package/dist/commands/upgrade.d.ts +0 -2
  66. package/dist/commands/upgrade.d.ts.map +0 -1
  67. package/dist/commands/upgrade.js +0 -15
  68. package/dist/commands/upgrade.js.map +0 -1
  69. package/dist/commands/whoami.d.ts +0 -4
  70. package/dist/commands/whoami.d.ts.map +0 -1
  71. package/dist/commands/whoami.js +0 -98
  72. package/dist/commands/whoami.js.map +0 -1
  73. package/dist/index.d.ts +0 -2
  74. package/dist/index.d.ts.map +0 -1
  75. package/dist/index.js +0 -428
  76. package/dist/index.js.map +0 -1
  77. package/dist/lib/api.d.ts +0 -12
  78. package/dist/lib/api.d.ts.map +0 -1
  79. package/dist/lib/api.js +0 -121
  80. package/dist/lib/api.js.map +0 -1
  81. package/dist/lib/config.d.ts +0 -27
  82. package/dist/lib/config.d.ts.map +0 -1
  83. package/dist/lib/config.js +0 -65
  84. package/dist/lib/config.js.map +0 -1
  85. package/dist/lib/detect.d.ts +0 -9
  86. package/dist/lib/detect.d.ts.map +0 -1
  87. package/dist/lib/detect.js +0 -112
  88. package/dist/lib/detect.js.map +0 -1
  89. package/dist/lib/files.d.ts +0 -16
  90. package/dist/lib/files.d.ts.map +0 -1
  91. package/dist/lib/files.js +0 -200
  92. package/dist/lib/files.js.map +0 -1
  93. package/dist/lib/html.d.ts +0 -8
  94. package/dist/lib/html.d.ts.map +0 -1
  95. package/dist/lib/html.js +0 -63
  96. package/dist/lib/html.js.map +0 -1
  97. package/dist/lib/i18n.d.ts +0 -6
  98. package/dist/lib/i18n.d.ts.map +0 -1
  99. package/dist/lib/i18n.js +0 -256
  100. package/dist/lib/i18n.js.map +0 -1
  101. package/dist/lib/import-prompts.d.ts +0 -46
  102. package/dist/lib/import-prompts.d.ts.map +0 -1
  103. package/dist/lib/import-prompts.js +0 -279
  104. package/dist/lib/import-prompts.js.map +0 -1
  105. package/dist/lib/inspector-client.d.ts +0 -3
  106. package/dist/lib/inspector-client.d.ts.map +0 -1
  107. package/dist/lib/inspector-client.js +0 -253
  108. package/dist/lib/inspector-client.js.map +0 -1
  109. package/dist/lib/output.d.ts +0 -11
  110. package/dist/lib/output.d.ts.map +0 -1
  111. package/dist/lib/output.js +0 -49
  112. package/dist/lib/output.js.map +0 -1
  113. package/dist/lib/project.d.ts +0 -25
  114. package/dist/lib/project.d.ts.map +0 -1
  115. package/dist/lib/project.js +0 -62
  116. package/dist/lib/project.js.map +0 -1
  117. package/dist/lib/suggest.d.ts +0 -12
  118. package/dist/lib/suggest.d.ts.map +0 -1
  119. package/dist/lib/suggest.js +0 -36
  120. package/dist/lib/suggest.js.map +0 -1
  121. package/dist/lib/update-check.d.ts +0 -22
  122. package/dist/lib/update-check.d.ts.map +0 -1
  123. package/dist/lib/update-check.js +0 -182
  124. package/dist/lib/update-check.js.map +0 -1
  125. package/dist/run.d.ts +0 -2
  126. package/dist/run.d.ts.map +0 -1
  127. package/dist/run.js +0 -17
  128. package/dist/run.js.map +0 -1
  129. package/dist/version.d.ts +0 -2
  130. package/dist/version.d.ts.map +0 -1
  131. package/dist/version.js +0 -3
  132. package/dist/version.js.map +0 -1
package/dist/index.js DELETED
@@ -1,428 +0,0 @@
1
- import { login } from './commands/login.js';
2
- import { logout } from './commands/logout.js';
3
- import { whoami } from './commands/whoami.js';
4
- import { publish } from './commands/publish.js';
5
- import { sites } from './commands/sites.js';
6
- import { forms } from './commands/forms.js';
7
- import { collections } from './commands/collections.js';
8
- import { open } from './commands/open.js';
9
- import { init } from './commands/init.js';
10
- import { pull } from './commands/pull.js';
11
- import { prompts } from './commands/prompts.js';
12
- import { editlog } from './commands/editlog.js';
13
- import { chatlog } from './commands/chatlog.js';
14
- import { context } from './commands/context.js';
15
- import { domains } from './commands/domains.js';
16
- import { dev } from './commands/dev.js';
17
- import { upgrade } from './commands/upgrade.js';
18
- import { scheduleUpdateCheck, runUpdateCheck, printUpdateNotice } from './lib/update-check.js';
19
- import { setJsonMode } from './lib/output.js';
20
- import { setLocale } from './lib/i18n.js';
21
- // バージョンはビルド時に生成される version.ts(scripts/gen-version.mjs が package.json
22
- // から生成)から取得する。単一バイナリ(bun --compile)でも package.json 非同梱で破綻しない。
23
- import { VERSION } from './version.js';
24
- const HELP = `
25
- 42ws — Publish static sites in one command
26
-
27
- Usage:
28
- 42ws <command> [options]
29
-
30
- Commands:
31
- login Authenticate with your 42ws token
32
- logout Remove stored credentials
33
- whoami Show currently logged-in user
34
- upgrade Update 42ws to the latest version
35
- publish Publish a static site
36
- (sync from local; embed snippets and CMS-generated
37
- files are protected. --allow-detach to override)
38
- sites List sites (alias for sites list)
39
- sites list List all sites
40
- sites create <name> Create a new site
41
- sites delete <name> Delete a site (linked forms/collections kept by default;
42
- use --delete-forms / --delete-collections to cascade)
43
- forms list List your forms
44
- forms import [options] Fetch a source and print an AI extraction prompt
45
- forms create [options] Create a form from an AI-generated JSON (use after import)
46
- forms delete <id> Delete a form (cascades stored contacts)
47
- forms get/set <id> Read/write form fields (CSS, theme color, notify email)
48
- collections list List your CMS collections
49
- collections import [opts] Fetch a source and print an AI template-generation prompt
50
- collections create [opts] Create a collection from an AI-generated JSON (use after import)
51
- collections delete <id> Delete a collection (cascades all entries)
52
- collections republish <id> Re-render entries + index after template changes
53
- collections get/set <id> Read/write fields (pageShell, templates, theme color)
54
- collections entries ... Manage entries (list / add / set / delete; images auto-upload)
55
- init Initialize a project (42ws.json + CLAUDE.md/AGENTS.md +
56
- launch claude/codex if available)
57
- open [name] Open site URL in browser
58
- pull --site <name> --dir <path> Download published files locally
59
- dev Start a local server with the AI page inspector
60
- dev errors [site] Print recent client errors collected by dev
61
- domains add <domain> --site <site> Attach a custom domain (Personal+; default managed DNS)
62
- domains add <domain> --site <site> --cname Use manual CNAME mode instead
63
- domains verify <domain> --site <site> Check status / show next steps
64
- domains list --site <site> List custom domains for a site
65
- domains rm <domain> --site <site> Disable a custom domain
66
- prompts get <name> Print the AI guide (name: context | cli | build | sitecard | inspector | migrate)
67
- editlog list <site> List recent edit history for a site
68
- editlog show <site> <id> Show details of a specific edit
69
- editlog restore <site> <id> [--out <file>]
70
- Pull a historical snapshot. Default: stdout. With --out
71
- <file>, writes to file (then run 42ws publish to apply).
72
- chatlog list <site> Show AI chat history (use --session <id> for one session)
73
- context list <site> Show site card (business / design / decisions ...)
74
- context get <site> <key> Print the stored value (or --out <file>)
75
- context set <site> <key> Save a value (--value "..." or --value-file <path>)
76
- context delete <site> <key> Remove a key from the site card
77
- context refresh <site> Print AI prompt with recent logs to regenerate summary
78
-
79
- Tip: each command supports --help for details (e.g. 42ws sites --help).
80
-
81
- Options:
82
- --help, -h Show this help message
83
- --version, -v Show CLI version
84
- --json Output results as JSON
85
-
86
- Examples:
87
- 42ws login --token ws_xxx
88
- 42ws publish --site my-site --dir dist
89
- 42ws sites create my-site
90
- 42ws sites delete my-site # interactive
91
- 42ws sites delete my-site --force --delete-forms --delete-collections # all-in-one
92
- 42ws forms import --site my-site --page contact.html --notify me@x.com --inject
93
- 42ws forms set form_xxx --css-file form.css
94
- 42ws collections import --site my-site --page news.html --inject
95
- 42ws collections entries add coll_xxx --title "新着" --main-image ./hero.jpg --status published
96
- 42ws collections set coll_xxx --page-shell shell.html --republish
97
- 42ws pull --site my-site --dir ./downloaded
98
- `.trim();
99
- function parseArgs(argv) {
100
- const flags = {};
101
- const positional = [];
102
- let command;
103
- for (let i = 0; i < argv.length; i++) {
104
- const arg = argv[i];
105
- if (arg.startsWith('--')) {
106
- const eqIdx = arg.indexOf('=');
107
- if (eqIdx !== -1) {
108
- const key = arg.slice(2, eqIdx);
109
- const val = arg.slice(eqIdx + 1);
110
- flags[key] = val;
111
- }
112
- else {
113
- const key = arg.slice(2);
114
- const next = argv[i + 1];
115
- if (next !== undefined && !next.startsWith('-')) {
116
- flags[key] = next;
117
- i++;
118
- }
119
- else {
120
- flags[key] = true;
121
- }
122
- }
123
- }
124
- else if (arg.startsWith('-') && arg.length === 2) {
125
- flags[arg.slice(1)] = true;
126
- }
127
- else if (!command) {
128
- command = arg;
129
- }
130
- else {
131
- positional.push(arg);
132
- }
133
- }
134
- return { command, flags, positional };
135
- }
136
- export async function main() {
137
- const argv = process.argv.slice(2);
138
- const { command, flags, positional } = parseArgs(argv);
139
- // 隠しコマンド: バックグラウンド更新チェックの本体(scheduleUpdateCheck が detached で起動)。
140
- // 出力もスケジューリングもせず、検査だけして終わる。
141
- if (command === '_self-update-check') {
142
- await runUpdateCheck();
143
- return;
144
- }
145
- // Global flags
146
- if (flags['json'] === true) {
147
- setJsonMode(true);
148
- }
149
- if (typeof flags['lang'] === 'string') {
150
- setLocale(flags['lang']);
151
- }
152
- if (flags['version'] === true || flags['v'] === true) {
153
- process.stdout.write(VERSION + '\n');
154
- return;
155
- }
156
- // --help / -h: command が無ければトップ HELP、あれば該当サブコマンドの HELP を出して **必ず早期 return**。
157
- // 過去に `publish --help` で本番が再 publish された事故があるため、
158
- // --help 指定時はどんなサブコマンドも絶対に実行しない (副作用ゼロを保証)。
159
- if (flags['help'] === true || flags['h'] === true) {
160
- if (!command) {
161
- process.stdout.write(HELP + '\n');
162
- return;
163
- }
164
- // 各コマンドのトップ HELP を呼び出す (引数は無視 / 副作用なしのものだけ呼ぶ)。
165
- // collections は entries サブツリーを持つので、positional[0] === 'entries' なら
166
- // ENTRIES_HELP を出すよう subcommand を 'entries' で渡す。
167
- const sub0 = positional[0];
168
- const helpDispatch = {
169
- forms: () => forms({ subcommand: 'help', positional: [] }),
170
- collections: () => collections({
171
- subcommand: sub0 === 'entries' ? 'entries' : 'help',
172
- positional: [],
173
- }),
174
- sites: () => sites({ subcommand: 'help', positional: [] }),
175
- prompts: () => prompts({ subcommand: 'help', positional: [] }),
176
- editlog: () => editlog({ subcommand: 'help', positional: [], help: true }),
177
- chatlog: () => chatlog({ subcommand: 'help', positional: [], help: true }),
178
- context: () => context({ subcommand: 'help', positional: [], help: true }),
179
- domains: () => domains({ subcommand: 'help', positional: [], help: true }),
180
- dev: () => dev({ subcommand: 'help', positional: [], help: true }),
181
- };
182
- if (command in helpDispatch) {
183
- await helpDispatch[command]();
184
- }
185
- else {
186
- // publish / login / logout / whoami / open / init / pull はサブ help を持たないのでトップ HELP
187
- process.stdout.write(HELP + '\n');
188
- }
189
- return;
190
- }
191
- if (!command) {
192
- process.stdout.write(HELP + '\n');
193
- return;
194
- }
195
- // 実コマンド実行時に1日1回だけ更新チェックを detached で起動(前景はブロックしない)。
196
- scheduleUpdateCheck();
197
- switch (command) {
198
- case '--help':
199
- case '-h':
200
- process.stdout.write(HELP + '\n');
201
- break;
202
- case '--version':
203
- case '-v':
204
- process.stdout.write(VERSION + '\n');
205
- break;
206
- case 'login':
207
- await login({
208
- token: flags['token'],
209
- apiUrl: flags['api-url'],
210
- });
211
- break;
212
- case 'logout':
213
- await logout();
214
- break;
215
- case 'whoami':
216
- await whoami({ hook: flags['hook'] === true });
217
- break;
218
- case 'upgrade':
219
- await upgrade();
220
- break;
221
- case 'publish':
222
- await publish({
223
- site: flags['site'],
224
- dir: flags['dir'],
225
- message: flags['message'],
226
- yes: flags['yes'] === true,
227
- json: flags['json'] === true,
228
- build: flags['build'],
229
- noBuild: flags['no-build'] === true,
230
- allowDetach: flags['allow-detach'] === true,
231
- });
232
- break;
233
- case 'sites': {
234
- // positional[0] is the subcommand (list, create, delete)
235
- // positional[1..] are the args to the subcommand
236
- const subcommand = positional[0];
237
- const subPositional = positional.slice(1);
238
- await sites({
239
- subcommand,
240
- positional: subPositional,
241
- yes: flags['yes'] === true,
242
- json: flags['json'] === true,
243
- force: flags['force'] === true,
244
- deleteForms: flags['delete-forms'] === true,
245
- keepForms: flags['keep-forms'] === true,
246
- deleteCollections: flags['delete-collections'] === true,
247
- keepCollections: flags['keep-collections'] === true,
248
- });
249
- break;
250
- }
251
- case 'forms': {
252
- const subcommand = positional[0];
253
- const subPositional = positional.slice(1);
254
- await forms({
255
- subcommand,
256
- positional: subPositional,
257
- help: false,
258
- json: flags['json'] === true,
259
- site: flags['site'],
260
- page: flags['page'],
261
- url: flags['url'],
262
- file: flags['file'],
263
- notify: flags['notify'],
264
- name: flags['name'],
265
- inject: flags['inject'] === true,
266
- force: flags['force'] === true,
267
- field: flags['field'],
268
- out: flags['out'],
269
- css: flags['css'],
270
- cssFile: flags['css-file'],
271
- themeColor: flags['theme-color'],
272
- fromJson: flags['from-json'],
273
- });
274
- break;
275
- }
276
- case 'collections': {
277
- const subcommand = positional[0];
278
- const subPositional = positional.slice(1);
279
- await collections({
280
- subcommand,
281
- positional: subPositional,
282
- help: false,
283
- json: flags['json'] === true,
284
- site: flags['site'],
285
- page: flags['page'],
286
- url: flags['url'],
287
- file: flags['file'],
288
- name: flags['name'],
289
- slug: flags['slug'],
290
- inject: flags['inject'] === true,
291
- force: flags['force'] === true,
292
- title: flags['title'],
293
- body: flags['body'],
294
- bodyFile: flags['body-file'],
295
- mainImage: flags['main-image'],
296
- subImages: flags['sub-images'],
297
- status: flags['status'],
298
- publishedAt: flags['published-at'],
299
- tags: flags['tags'],
300
- data: flags['data'],
301
- dataFile: flags['data-file'],
302
- fromJson: flags['from-json'],
303
- upsert: flags['upsert'] === true,
304
- field: flags['field'],
305
- out: flags['out'],
306
- pageShellFile: flags['page-shell'],
307
- pageShellInline: flags['page-shell-inline'],
308
- indexTemplateFile: flags['index-template'],
309
- indexTemplateInline: flags['index-template-inline'],
310
- detailTemplateFile: flags['detail-template'],
311
- detailTemplateInline: flags['detail-template-inline'],
312
- themeColor: flags['theme-color'],
313
- republish: flags['republish'] === true,
314
- });
315
- break;
316
- }
317
- case 'open':
318
- await open({
319
- name: positional[0] ?? flags['site'],
320
- json: flags['json'] === true,
321
- });
322
- break;
323
- case 'init':
324
- await init({
325
- site: flags['site'],
326
- output: flags['output'],
327
- build: flags['build'],
328
- spa: flags['spa'] === true,
329
- yes: flags['yes'] === true,
330
- });
331
- break;
332
- case 'pull':
333
- await pull({
334
- site: flags['site'],
335
- dir: flags['dir'],
336
- yes: flags['yes'] === true,
337
- });
338
- break;
339
- case 'prompts': {
340
- const subcommand = positional[0];
341
- const subPositional = positional.slice(1);
342
- await prompts({
343
- subcommand,
344
- positional: subPositional,
345
- json: flags['json'] === true,
346
- });
347
- break;
348
- }
349
- case 'editlog': {
350
- const subcommand = positional[0];
351
- const subPositional = positional.slice(1);
352
- await editlog({
353
- subcommand,
354
- positional: subPositional,
355
- json: flags['json'] === true,
356
- page: flags['page'],
357
- all: flags['all'] === true,
358
- out: flags['out'],
359
- apply: flags['apply'] === true,
360
- help: false,
361
- });
362
- break;
363
- }
364
- case 'chatlog': {
365
- const subcommand = positional[0];
366
- const subPositional = positional.slice(1);
367
- await chatlog({
368
- subcommand,
369
- positional: subPositional,
370
- json: flags['json'] === true,
371
- session: flags['session'],
372
- limit: flags['limit'],
373
- help: false,
374
- });
375
- break;
376
- }
377
- case 'domains': {
378
- const subcommand = positional[0];
379
- const subPositional = positional.slice(1);
380
- await domains({
381
- subcommand,
382
- positional: subPositional,
383
- site: flags['site'],
384
- cname: flags['cname'] === true,
385
- json: flags['json'] === true,
386
- help: false,
387
- });
388
- break;
389
- }
390
- case 'dev': {
391
- const subcommand = positional[0];
392
- const subPositional = positional.slice(1);
393
- await dev({
394
- subcommand,
395
- positional: subPositional,
396
- json: flags['json'] === true,
397
- site: flags['site'],
398
- dir: flags['dir'],
399
- port: flags['port'],
400
- spa: flags['spa'] === true,
401
- lines: flags['lines'],
402
- help: false,
403
- });
404
- break;
405
- }
406
- case 'context': {
407
- const subcommand = positional[0];
408
- const subPositional = positional.slice(1);
409
- await context({
410
- subcommand,
411
- positional: subPositional,
412
- json: flags['json'] === true,
413
- value: flags['value'],
414
- valueFile: flags['value-file'],
415
- out: flags['out'],
416
- limit: flags['limit'],
417
- help: false,
418
- });
419
- break;
420
- }
421
- default:
422
- process.stderr.write(`Unknown command: ${command}\n\n${HELP}\n`);
423
- process.exit(1);
424
- }
425
- // コマンド成功後に minor/major の更新通知があれば1行出す(best-effort)。
426
- printUpdateNotice();
427
- }
428
- //# sourceMappingURL=index.js.map
package/dist/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/lib/api.d.ts DELETED
@@ -1,12 +0,0 @@
1
- import type { Config } from './config.js';
2
- export declare class ApiError extends Error {
3
- readonly code: string;
4
- readonly suggestedFix?: string | undefined;
5
- readonly extra?: Record<string, unknown> | undefined;
6
- constructor(code: string, message: string, suggestedFix?: string | undefined, extra?: Record<string, unknown> | undefined);
7
- }
8
- type HttpMethod = 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE';
9
- export declare function apiRequest<T = unknown>(config: Config, method: HttpMethod, path: string, body?: unknown): Promise<T>;
10
- export declare function uploadFile(url: string, content: Buffer, contentType: string): Promise<void>;
11
- export {};
12
- //# sourceMappingURL=api.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/lib/api.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAE1C,qBAAa,QAAS,SAAQ,KAAK;aAEf,IAAI,EAAE,MAAM;aAEZ,YAAY,CAAC,EAAE,MAAM;aACrB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;gBAH/B,IAAI,EAAE,MAAM,EAC5B,OAAO,EAAE,MAAM,EACC,YAAY,CAAC,EAAE,MAAM,YAAA,EACrB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,YAAA;CAKlD;AAED,KAAK,UAAU,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,QAAQ,CAAC;AAE9D,wBAAsB,UAAU,CAAC,CAAC,GAAG,OAAO,EAC1C,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,UAAU,EAClB,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,OAAO,GACb,OAAO,CAAC,CAAC,CAAC,CAgEZ;AAED,wBAAsB,UAAU,CAC9B,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,IAAI,CAAC,CAwBf"}
package/dist/lib/api.js DELETED
@@ -1,121 +0,0 @@
1
- export class ApiError extends Error {
2
- code;
3
- suggestedFix;
4
- extra;
5
- constructor(code, message, suggestedFix, extra) {
6
- super(message);
7
- this.code = code;
8
- this.suggestedFix = suggestedFix;
9
- this.extra = extra;
10
- this.name = 'ApiError';
11
- }
12
- }
13
- export async function apiRequest(config, method, path, body) {
14
- const url = `${config.apiUrl}${path}`;
15
- const headers = {
16
- 'Content-Type': 'application/json',
17
- 'User-Agent': '42ws-cli/0.1.0',
18
- };
19
- if (config.token) {
20
- headers['Authorization'] = `Bearer ${config.token}`;
21
- }
22
- let response;
23
- try {
24
- response = await fetch(url, {
25
- method,
26
- headers,
27
- body: body !== undefined ? JSON.stringify(body) : undefined,
28
- });
29
- }
30
- catch (e) {
31
- const msg = e instanceof Error ? e.message : String(e);
32
- throw new ApiError('NETWORK_ERROR', `Network error: ${msg}`, 'Check your internet connection and try again.');
33
- }
34
- if (!response.ok) {
35
- // サーバの エラーレスポンスは {error, message, suggestedFix, hint, existingEntryId, ...} と
36
- // フィールドが揺れている (歴史的事情)。message / error / hint のいずれかを採用し、
37
- // 既知でない追加フィールドは extra に格納してそのまま渡す。
38
- let errorBody = {};
39
- try {
40
- errorBody = (await response.json());
41
- }
42
- catch {
43
- // not JSON
44
- }
45
- const code = errorBody['code'] ?? httpStatusToCode(response.status);
46
- const message = errorBody['message']
47
- ?? errorBody['error']
48
- ?? `HTTP ${response.status} ${response.statusText}`;
49
- const suggestedFix = errorBody['suggestedFix']
50
- ?? errorBody['hint']
51
- ?? suggestFixForCode(code);
52
- // 追加コンテキスト (existingEntryId 等) を extra に集約
53
- const known = new Set(['code', 'message', 'error', 'suggestedFix', 'hint']);
54
- const extra = {};
55
- for (const [k, v] of Object.entries(errorBody)) {
56
- if (!known.has(k))
57
- extra[k] = v;
58
- }
59
- throw new ApiError(code, message, suggestedFix, Object.keys(extra).length > 0 ? extra : undefined);
60
- }
61
- const text = await response.text();
62
- if (!text)
63
- return undefined;
64
- try {
65
- return JSON.parse(text);
66
- }
67
- catch {
68
- return text;
69
- }
70
- }
71
- export async function uploadFile(url, content, contentType) {
72
- let response;
73
- try {
74
- response = await fetch(url, {
75
- method: 'PUT',
76
- headers: { 'Content-Type': contentType },
77
- body: content,
78
- });
79
- }
80
- catch (e) {
81
- const msg = e instanceof Error ? e.message : String(e);
82
- throw new ApiError('NETWORK_ERROR', `Network error during upload: ${msg}`, 'Check your internet connection and try again.');
83
- }
84
- if (!response.ok) {
85
- throw new ApiError('UPLOAD_FAILED', `Upload failed with HTTP ${response.status}`, 'Try running publish again. If the issue persists, check your network connection.');
86
- }
87
- }
88
- function httpStatusToCode(status) {
89
- switch (status) {
90
- case 401: return 'LOGIN_EXPIRED';
91
- case 403: return 'FORBIDDEN';
92
- case 404: return 'NOT_FOUND';
93
- case 409: return 'CONFLICT';
94
- case 422: return 'INVALID_REQUEST';
95
- default: return status >= 500 ? 'SERVER_ERROR' : 'REQUEST_FAILED';
96
- }
97
- }
98
- function suggestFixForCode(code) {
99
- const fixes = {
100
- LOGIN_EXPIRED: 'Run `42ws login` to re-authenticate.',
101
- FORBIDDEN: 'You do not have permission to perform this action.',
102
- NOT_LOGGED_IN: 'Run `42ws login --token <your-token>` to authenticate.',
103
- INVALID_TOKEN: 'The token you provided is invalid. Get a new token from your dashboard.',
104
- SITE_NAME_TAKEN: 'Choose a different site name with --site <name>.',
105
- RESERVED_SITE_NAME: 'This site name is reserved. Choose a different name.',
106
- INVALID_SITE_NAME: 'Site names must be lowercase alphanumeric with hyphens (e.g. my-site).',
107
- BUILD_FAILED: 'Fix the build errors shown above and try again.',
108
- OUTPUT_DIR_NOT_FOUND: 'Run your build command first, or specify the correct directory with --dir.',
109
- NO_FILES_FOUND: 'Make sure your output directory contains files to publish.',
110
- FILE_TOO_LARGE: 'Individual files must be under 50 MB.',
111
- TOO_MANY_FILES: 'Reduce the number of files to publish (max 5000).',
112
- BLOCKED_FILE: 'Remove sensitive files from your output directory before publishing.',
113
- UPLOAD_FAILED: 'Try running publish again. If the issue persists, check your network.',
114
- PUBLISH_FAILED: 'The publish request failed. Try again.',
115
- SERVER_ERROR: 'Server error (5xx). Try again, and if it persists report it with the request id from the server logs.',
116
- NETWORK_ERROR: 'Check your internet connection and try again.',
117
- CONFLICT: 'The resource already exists.',
118
- };
119
- return fixes[code] ?? 'Try again or contact support.';
120
- }
121
- //# sourceMappingURL=api.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/lib/api.ts"],"names":[],"mappings":"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"}
@@ -1,27 +0,0 @@
1
- export interface Config {
2
- token?: string;
3
- apiUrl: string;
4
- }
5
- export declare function loadConfig(): Config;
6
- /**
7
- * apiUrl から Web ベース URL とユーザーサイトのドメインを導出する。
8
- * `https://api.42ws.com` → { webBase: 'https://42ws.com', sitesHost: '42ws.com' }
9
- * `https://api.dev.42ws.com` → { webBase: 'https://dev.42ws.com', sitesHost: 'dev.42ws.com' }
10
- */
11
- export declare function deriveDomains(apiUrl: string): {
12
- webBase: string;
13
- sitesHost: string;
14
- };
15
- /**
16
- * Save config. Pass `removeToken: true` to explicitly remove the token field.
17
- * Otherwise the existing token is preserved unless `token` is supplied.
18
- */
19
- export declare function saveConfig(config: Partial<Config> & {
20
- removeToken?: boolean;
21
- removeApiUrl?: boolean;
22
- }): void;
23
- /** ~/.42ws 配下のファイルパスを返す(update.json 等の補助状態の置き場)。 */
24
- export declare function configPath(name: string): string;
25
- /** ~/.42ws 配下のバイナリ設置ディレクトリ(install.sh の配置先と一致)。 */
26
- export declare function binDir(): string;
27
- //# sourceMappingURL=config.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,MAAM;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;AAOD,wBAAgB,UAAU,IAAI,MAAM,CAkBnC;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAQpF;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG;IAAE,WAAW,CAAC,EAAE,OAAO,CAAC;IAAC,YAAY,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,IAAI,CAa5G;AAED,oDAAoD;AACpD,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE/C;AAED,mDAAmD;AACnD,wBAAgB,MAAM,IAAI,MAAM,CAE/B"}