@babelize/cli 1.0.12 → 1.1.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.
Files changed (55) hide show
  1. package/LICENSE +200 -4
  2. package/README.md +44 -15
  3. package/dist/commands/check.d.ts +22 -0
  4. package/dist/commands/check.d.ts.map +1 -0
  5. package/dist/commands/check.js +134 -0
  6. package/dist/commands/check.js.map +1 -0
  7. package/dist/commands/glossary.d.ts.map +1 -1
  8. package/dist/commands/glossary.js +2 -1
  9. package/dist/commands/glossary.js.map +1 -1
  10. package/dist/commands/init.d.ts.map +1 -1
  11. package/dist/commands/init.js +52 -52
  12. package/dist/commands/init.js.map +1 -1
  13. package/dist/commands/tm.d.ts.map +1 -1
  14. package/dist/commands/tm.js +29 -11
  15. package/dist/commands/tm.js.map +1 -1
  16. package/dist/commands/translate.d.ts +24 -0
  17. package/dist/commands/translate.d.ts.map +1 -0
  18. package/dist/commands/translate.js +415 -0
  19. package/dist/commands/translate.js.map +1 -0
  20. package/dist/index.js +0 -0
  21. package/dist/local/formatter.d.ts +27 -0
  22. package/dist/local/formatter.d.ts.map +1 -0
  23. package/dist/local/formatter.js +69 -0
  24. package/dist/local/formatter.js.map +1 -0
  25. package/dist/local/git.d.ts +16 -0
  26. package/dist/local/git.d.ts.map +1 -0
  27. package/dist/local/git.js +52 -0
  28. package/dist/local/git.js.map +1 -0
  29. package/dist/local/provider.d.ts +41 -0
  30. package/dist/local/provider.d.ts.map +1 -0
  31. package/dist/local/provider.js +87 -0
  32. package/dist/local/provider.js.map +1 -0
  33. package/dist/local/translate-core.d.ts +188 -0
  34. package/dist/local/translate-core.d.ts.map +1 -0
  35. package/dist/local/translate-core.js +401 -0
  36. package/dist/local/translate-core.js.map +1 -0
  37. package/dist/local/workspace-copy.d.ts +75 -0
  38. package/dist/local/workspace-copy.d.ts.map +1 -0
  39. package/dist/local/workspace-copy.js +263 -0
  40. package/dist/local/workspace-copy.js.map +1 -0
  41. package/dist/oauth.d.ts +12 -1
  42. package/dist/oauth.d.ts.map +1 -1
  43. package/dist/oauth.js +79 -95
  44. package/dist/oauth.js.map +1 -1
  45. package/dist/program.d.ts.map +1 -1
  46. package/dist/program.js +6 -0
  47. package/dist/program.js.map +1 -1
  48. package/dist/tui/repl.d.ts.map +1 -1
  49. package/dist/tui/repl.js +2 -0
  50. package/dist/tui/repl.js.map +1 -1
  51. package/dist/utils/zip-upload.d.ts +81 -0
  52. package/dist/utils/zip-upload.d.ts.map +1 -0
  53. package/dist/utils/zip-upload.js +277 -0
  54. package/dist/utils/zip-upload.js.map +1 -0
  55. package/package.json +6 -2
@@ -0,0 +1,263 @@
1
+ import { createHash } from 'node:crypto';
2
+ import { createPatch } from 'diff';
3
+ import * as fsp from 'node:fs/promises';
4
+ import { tmpdir } from 'node:os';
5
+ import * as path from 'node:path';
6
+ /**
7
+ * Directories never copied into the temp workspace and never diffed back.
8
+ * Dependencies and VCS/tool caches are skipped at any depth.
9
+ */
10
+ export const EXCLUDED_DIRS_ANY_DEPTH = new Set(['node_modules', '.git', '.next', '.turbo']);
11
+ /**
12
+ * Build output, skipped only at the project root: the same names deeper down
13
+ * are often real source (a Next.js route like `app/build/page.tsx`).
14
+ */
15
+ export const EXCLUDED_DIRS_AT_ROOT = new Set(['dist', 'build', 'coverage']);
16
+ /** Always copied, even when gitignored: it holds the lockfile that makes reruns incremental. */
17
+ export const BABELIZE_DIR = '.babelize';
18
+ /** Engine scratch files that must never be applied back (lockfile write lock / temp). */
19
+ function isEngineScratch(rel) {
20
+ if (!rel.startsWith(`${BABELIZE_DIR}/`))
21
+ return false;
22
+ return /babelize-lock\.json\.(lock|tmp)(\/|$)/.test(rel);
23
+ }
24
+ function toPosix(rel) {
25
+ return rel.split(path.sep).join('/');
26
+ }
27
+ export function isExcluded(rel) {
28
+ const parts = rel.split('/');
29
+ if (parts.length > 1 && EXCLUDED_DIRS_AT_ROOT.has(parts[0]))
30
+ return true;
31
+ return parts.slice(0, -1).some((part) => EXCLUDED_DIRS_ANY_DEPTH.has(part));
32
+ }
33
+ /** Resolve `rel` under `root`, refusing anything that escapes it. */
34
+ function safeJoin(root, rel) {
35
+ const abs = path.resolve(root, rel);
36
+ const relBack = path.relative(root, abs);
37
+ if (relBack.startsWith('..') || path.isAbsolute(relBack)) {
38
+ throw new Error(`Refusing to touch a path outside the project: ${rel}`);
39
+ }
40
+ return abs;
41
+ }
42
+ /** Regular files under `root/dir`, relative to `root`. Symlinks are never followed. */
43
+ export async function walk(root, dir = '', out = []) {
44
+ const entries = await fsp.readdir(path.join(root, dir), { withFileTypes: true }).catch((err) => {
45
+ if (err.code === 'ENOENT')
46
+ return [];
47
+ throw err;
48
+ });
49
+ for (const entry of entries) {
50
+ const rel = dir ? `${dir}/${entry.name}` : entry.name;
51
+ if (entry.isDirectory()) {
52
+ if (EXCLUDED_DIRS_ANY_DEPTH.has(entry.name))
53
+ continue;
54
+ if (!dir && EXCLUDED_DIRS_AT_ROOT.has(entry.name))
55
+ continue;
56
+ await walk(root, rel, out);
57
+ }
58
+ else if (entry.isFile()) {
59
+ out.push(rel);
60
+ }
61
+ }
62
+ return out;
63
+ }
64
+ /**
65
+ * Copy the project into a fresh private temp dir. `files` (paths relative to
66
+ * `projectDir`, e.g. from `git ls-files`) limits the copy; without it the
67
+ * whole tree is walked. `.babelize/` is always included (it is often
68
+ * gitignored, but the lockfile in it is what keeps reruns incremental).
69
+ */
70
+ export async function createTempCopy(projectDir, opts = {}) {
71
+ const dir = await fsp.mkdtemp(path.join(opts.tmpRoot ?? tmpdir(), 'babelize-translate-'));
72
+ const cleanup = () => fsp.rm(dir, { recursive: true, force: true });
73
+ try {
74
+ const listed = opts.files ? opts.files.map(toPosix) : await walk(projectDir);
75
+ const files = new Set([...listed, ...(await walk(projectDir, BABELIZE_DIR))]);
76
+ for (const rel of files) {
77
+ if (isExcluded(rel) || isEngineScratch(rel))
78
+ continue;
79
+ const src = safeJoin(projectDir, rel);
80
+ const st = await fsp.lstat(src).catch(() => null);
81
+ if (!st || !st.isFile())
82
+ continue; // deleted-but-tracked, symlink, or dir
83
+ const dest = safeJoin(dir, rel);
84
+ await fsp.mkdir(path.dirname(dest), { recursive: true });
85
+ await fsp.copyFile(src, dest);
86
+ }
87
+ }
88
+ catch (err) {
89
+ await cleanup();
90
+ throw err;
91
+ }
92
+ return { dir, cleanup };
93
+ }
94
+ /** Relative path → sha256 for every regular file under `root` (excluded dirs skipped). */
95
+ export async function snapshot(root) {
96
+ const result = new Map();
97
+ for (const rel of await walk(root)) {
98
+ const content = await fsp.readFile(path.join(root, rel));
99
+ result.set(rel, createHash('sha256').update(content).digest('hex'));
100
+ }
101
+ return result;
102
+ }
103
+ export function diffSnapshots(before, after) {
104
+ const added = [];
105
+ const modified = [];
106
+ const deleted = [];
107
+ for (const [rel, hash] of after) {
108
+ if (isEngineScratch(rel))
109
+ continue;
110
+ const prev = before.get(rel);
111
+ if (prev === undefined)
112
+ added.push(rel);
113
+ else if (prev !== hash)
114
+ modified.push(rel);
115
+ }
116
+ for (const rel of before.keys()) {
117
+ if (!after.has(rel) && !isEngineScratch(rel))
118
+ deleted.push(rel);
119
+ }
120
+ return { added: added.sort(), modified: modified.sort(), deleted: deleted.sort() };
121
+ }
122
+ export function changeCount(changes) {
123
+ return changes.added.length + changes.modified.length + changes.deleted.length;
124
+ }
125
+ /**
126
+ * Project files that no longer match what the run started from: a file the
127
+ * run would overwrite or delete was edited (or removed) meanwhile, or a file
128
+ * it would create now exists (created during the run, or never copied
129
+ * because it is gitignored). Applying over those would lose the user's work.
130
+ */
131
+ export async function findConflicts(changes, baseline, projectDir) {
132
+ const conflicts = [];
133
+ const hashOf = async (rel) => {
134
+ try {
135
+ return createHash('sha256').update(await fsp.readFile(safeJoin(projectDir, rel))).digest('hex');
136
+ }
137
+ catch (err) {
138
+ if (err.code === 'ENOENT')
139
+ return null;
140
+ throw err;
141
+ }
142
+ };
143
+ for (const rel of [...changes.modified, ...changes.deleted]) {
144
+ if ((await hashOf(rel)) !== baseline.get(rel))
145
+ conflicts.push(rel);
146
+ }
147
+ for (const rel of changes.added) {
148
+ if ((await hashOf(rel)) !== null)
149
+ conflicts.push(rel);
150
+ }
151
+ return conflicts.sort();
152
+ }
153
+ const defaultIo = {
154
+ copyFile: (s, d) => fsp.copyFile(s, d),
155
+ rename: (a, b) => fsp.rename(a, b),
156
+ unlink: (f) => fsp.unlink(f),
157
+ writeFile: (f, d) => fsp.writeFile(f, d),
158
+ remove: (f) => fsp.rm(f, { force: true }),
159
+ };
160
+ /**
161
+ * applyChanges failed. When `rolledBack` is true the project is exactly as it
162
+ * was before; otherwise `changedFiles` lists what is still different.
163
+ */
164
+ export class ApplyError extends Error {
165
+ cause;
166
+ rolledBack;
167
+ changedFiles;
168
+ constructor(message, cause, rolledBack, changedFiles) {
169
+ super(message);
170
+ this.cause = cause;
171
+ this.rolledBack = rolledBack;
172
+ this.changedFiles = changedFiles;
173
+ this.name = 'ApplyError';
174
+ }
175
+ }
176
+ /**
177
+ * Apply the engine's changes from the temp copy to the project, as one
178
+ * transaction: originals of every file about to be overwritten or deleted are
179
+ * read into memory first, each write goes through temp file + rename, and on
180
+ * any failure every file already touched is restored (new files removed).
181
+ */
182
+ export async function applyChanges(changes, fromDir, toDir, io = defaultIo) {
183
+ const backups = new Map();
184
+ for (const rel of [...changes.modified, ...changes.deleted]) {
185
+ const abs = safeJoin(toDir, rel);
186
+ const content = await fsp.readFile(abs).catch((err) => {
187
+ if (err.code === 'ENOENT')
188
+ return null;
189
+ throw err;
190
+ });
191
+ if (content)
192
+ backups.set(rel, content);
193
+ }
194
+ const touched = [];
195
+ try {
196
+ for (const rel of [...changes.added, ...changes.modified]) {
197
+ const src = safeJoin(fromDir, rel);
198
+ const dest = safeJoin(toDir, rel);
199
+ await fsp.mkdir(path.dirname(dest), { recursive: true });
200
+ const staging = `${dest}.babelize-tmp-${process.pid}`;
201
+ try {
202
+ await io.copyFile(src, staging);
203
+ await io.rename(staging, dest);
204
+ touched.push(rel);
205
+ }
206
+ finally {
207
+ await fsp.rm(staging, { force: true });
208
+ }
209
+ }
210
+ for (const rel of changes.deleted) {
211
+ await io.unlink(safeJoin(toDir, rel)).catch((err) => {
212
+ if (err.code !== 'ENOENT')
213
+ throw err;
214
+ });
215
+ touched.push(rel);
216
+ }
217
+ }
218
+ catch (err) {
219
+ const notRestored = [];
220
+ for (const rel of touched.reverse()) {
221
+ const abs = safeJoin(toDir, rel);
222
+ try {
223
+ const original = backups.get(rel);
224
+ if (original)
225
+ await io.writeFile(abs, original);
226
+ else
227
+ await io.remove(abs);
228
+ }
229
+ catch {
230
+ notRestored.push(rel);
231
+ }
232
+ }
233
+ const reason = err?.message ?? String(err);
234
+ if (notRestored.length === 0) {
235
+ throw new ApplyError(`Writing changes failed (${reason}); all changes were rolled back.`, err, true, []);
236
+ }
237
+ throw new ApplyError(`Writing changes failed (${reason}) and ${notRestored.length} file(s) could not be restored.`, err, false, notRestored.sort());
238
+ }
239
+ }
240
+ /** Unified diff (git-style a/ b/ headers) of what applyChanges would do. */
241
+ export async function renderUnifiedDiff(changes, beforeDir, afterDir) {
242
+ const read = (root, rel) => fsp.readFile(safeJoin(root, rel), 'utf8');
243
+ const patches = [];
244
+ const all = [
245
+ ...changes.added.map((rel) => ({ rel, kind: 'added' })),
246
+ ...changes.modified.map((rel) => ({ rel, kind: 'modified' })),
247
+ ...changes.deleted.map((rel) => ({ rel, kind: 'deleted' })),
248
+ ].sort((a, b) => a.rel.localeCompare(b.rel));
249
+ for (const { rel, kind } of all) {
250
+ const oldText = kind === 'added' ? '' : await read(beforeDir, rel);
251
+ const newText = kind === 'deleted' ? '' : await read(afterDir, rel);
252
+ const header = `diff --git a/${rel} b/${rel}\n` +
253
+ (kind === 'added' ? 'new file\n' : kind === 'deleted' ? 'deleted file\n' : '');
254
+ const patch = createPatch(rel, oldText, newText, '', '', { context: 3 })
255
+ // createPatch emits "Index: x\n===\n--- x\n+++ x"; rewrite to git's a/ b/ form.
256
+ .replace(/^Index: .*\n=+\n/, '')
257
+ .replace(/^--- .*$/m, kind === 'added' ? '--- /dev/null' : `--- a/${rel}`)
258
+ .replace(/^\+\+\+ .*$/m, kind === 'deleted' ? '+++ /dev/null' : `+++ b/${rel}`);
259
+ patches.push(header + patch);
260
+ }
261
+ return patches.join('');
262
+ }
263
+ //# sourceMappingURL=workspace-copy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspace-copy.js","sourceRoot":"","sources":["../../src/local/workspace-copy.ts"],"names":[],"mappings":"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"}
package/dist/oauth.d.ts CHANGED
@@ -1,13 +1,24 @@
1
+ import http from 'http';
1
2
  export interface OAuthResult {
2
3
  accessToken: string;
3
4
  refreshToken?: string;
4
5
  userId: string;
5
6
  email: string;
6
7
  }
8
+ /**
9
+ * Redeem the one-time code the backend redirects to the local callback.
10
+ * Tokens travel only in this HTTPS response body — never in a URL.
11
+ */
12
+ export declare function exchangeCode(apiUrlBase: string, code: string): Promise<OAuthResult>;
13
+ /**
14
+ * Builds the handler for the local callback server: it accepts either an
15
+ * error or a one-time `code`, which it redeems via {@link exchangeCode}.
16
+ */
17
+ export declare function createCallbackHandler(apiUrlBase: string, getServer: () => http.Server, resolve: (result: OAuthResult) => void, reject: (reason?: unknown) => void): http.RequestListener;
7
18
  /**
8
19
  * Performs a browser-based OAuth flow for the CLI.
9
20
  * Starts a local HTTP server, opens the browser to the backend authorizer,
10
- * and waits for the tokens to be redirected back to the local server.
21
+ * receives a one-time code on the local server, and exchanges it for tokens.
11
22
  */
12
23
  export declare function performOAuthFlow(apiUrlBase: string, provider: 'github' | 'google' | 'gitlab'): Promise<OAuthResult>;
13
24
  //# sourceMappingURL=oauth.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"oauth.d.ts","sourceRoot":"","sources":["../src/oauth.ts"],"names":[],"mappings":"AAqCA,MAAM,WAAW,WAAW;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;;GAIG;AACH,wBAAsB,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,OAAO,CAAC,WAAW,CAAC,CAiJzH"}
1
+ {"version":3,"file":"oauth.d.ts","sourceRoot":"","sources":["../src/oauth.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AAqCxB,MAAM,WAAW,WAAW;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;GAGG;AACH,wBAAsB,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAqBzF;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,IAAI,CAAC,MAAM,EAC5B,OAAO,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,IAAI,EACtC,MAAM,EAAE,CAAC,MAAM,CAAC,EAAE,OAAO,KAAK,IAAI,GACjC,IAAI,CAAC,eAAe,CA+CtB;AAMD;;;;GAIG;AACH,wBAAsB,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,OAAO,CAAC,WAAW,CAAC,CAyDzH"}
package/dist/oauth.js CHANGED
@@ -36,67 +36,92 @@ function parseFormBody(req) {
36
36
  });
37
37
  }
38
38
  /**
39
- * Performs a browser-based OAuth flow for the CLI.
40
- * Starts a local HTTP server, opens the browser to the backend authorizer,
41
- * and waits for the tokens to be redirected back to the local server.
39
+ * Redeem the one-time code the backend redirects to the local callback.
40
+ * Tokens travel only in this HTTPS response body — never in a URL.
42
41
  */
43
- export async function performOAuthFlow(apiUrlBase, provider) {
44
- return new Promise((resolve, reject) => {
45
- // 1. Create a temporary server to receive the callback from the backend
46
- const server = http.createServer(async (req, res) => {
42
+ export async function exchangeCode(apiUrlBase, code) {
43
+ const res = await fetch(`${trimSlash(apiUrlBase)}/auth/cli/exchange`, {
44
+ method: 'POST',
45
+ headers: { 'Content-Type': 'application/json' },
46
+ body: JSON.stringify({ code }),
47
+ });
48
+ const body = (await res.json().catch(() => ({})));
49
+ if (!res.ok) {
50
+ throw new Error(body.error || `Code exchange failed (${res.status})`);
51
+ }
52
+ if (!body.access_token || !body.user_id || !body.email) {
53
+ throw new Error('Code exchange returned an incomplete session');
54
+ }
55
+ return {
56
+ accessToken: body.access_token,
57
+ refreshToken: body.refresh_token || undefined,
58
+ userId: body.user_id,
59
+ email: body.email,
60
+ };
61
+ }
62
+ /**
63
+ * Builds the handler for the local callback server: it accepts either an
64
+ * error or a one-time `code`, which it redeems via {@link exchangeCode}.
65
+ */
66
+ export function createCallbackHandler(apiUrlBase, getServer, resolve, reject) {
67
+ return async (req, res) => {
68
+ const finish = (status, html) => {
69
+ res.writeHead(status, { 'Content-Type': 'text/html' });
70
+ res.end(html);
71
+ getServer().close();
72
+ };
73
+ try {
74
+ const url = new URL(req.url || '', `http://${req.headers.host}`);
75
+ if (url.pathname !== '/callback') {
76
+ res.writeHead(404);
77
+ res.end();
78
+ return;
79
+ }
80
+ const params = req.method === 'POST' ? await parseFormBody(req) : url.searchParams;
81
+ const error = params.get('error');
82
+ if (error) {
83
+ finish(400, renderErrorPage(error));
84
+ reject(new Error(error));
85
+ return;
86
+ }
87
+ const code = params.get('code');
88
+ if (!code) {
89
+ finish(400, renderErrorPage('Missing authorization code'));
90
+ reject(new Error('Missing authorization code in callback'));
91
+ return;
92
+ }
47
93
  try {
48
- const url = new URL(req.url || '', `http://${req.headers.host}`);
49
- if (url.pathname === '/callback') {
50
- // Support both GET (error params) and POST (token body — secure)
51
- const params = req.method === 'POST' ? await parseFormBody(req) : url.searchParams;
52
- const error = params.get('error');
53
- if (error) {
54
- res.writeHead(400, { 'Content-Type': 'text/html' });
55
- res.end(renderErrorPage(error));
56
- server.close();
57
- reject(new Error(error));
58
- return;
59
- }
60
- const accessToken = params.get('access_token');
61
- const refreshToken = params.get('refresh_token') || undefined;
62
- const userId = params.get('user_id');
63
- const email = params.get('email');
64
- if (accessToken && userId && email) {
65
- res.writeHead(200, { 'Content-Type': 'text/html' });
66
- res.end(renderSuccessPage(email));
67
- server.close();
68
- resolve({ accessToken, refreshToken, userId, email });
69
- }
70
- else {
71
- const missing = [];
72
- if (!accessToken)
73
- missing.push('access_token');
74
- if (!userId)
75
- missing.push('user_id');
76
- if (!email)
77
- missing.push('email');
78
- res.writeHead(400, { 'Content-Type': 'text/html' });
79
- res.end(renderErrorPage(`Missing tokens: ${missing.join(', ')}`));
80
- server.close();
81
- reject(new Error(`Missing tokens in callback: ${missing.join(', ')}`));
82
- }
83
- }
84
- else {
85
- res.writeHead(404);
86
- res.end();
87
- }
94
+ const result = await exchangeCode(apiUrlBase, code);
95
+ finish(200, renderSuccessPage(result.email));
96
+ resolve(result);
88
97
  }
89
98
  catch (err) {
90
- res.writeHead(500, { 'Content-Type': 'text/html' });
91
- res.end(renderErrorPage('Internal server error'));
92
- server.close();
99
+ const message = err instanceof Error ? err.message : String(err);
100
+ finish(400, renderErrorPage(message));
93
101
  reject(err);
94
102
  }
95
- });
103
+ }
104
+ catch (err) {
105
+ finish(500, renderErrorPage('Internal server error'));
106
+ reject(err);
107
+ }
108
+ };
109
+ }
110
+ function trimSlash(url) {
111
+ return url.endsWith('/') ? url.slice(0, -1) : url;
112
+ }
113
+ /**
114
+ * Performs a browser-based OAuth flow for the CLI.
115
+ * Starts a local HTTP server, opens the browser to the backend authorizer,
116
+ * receives a one-time code on the local server, and exchanges it for tokens.
117
+ */
118
+ export async function performOAuthFlow(apiUrlBase, provider) {
119
+ return new Promise((resolve, reject) => {
120
+ // 1. Create a temporary server to receive the callback from the backend
121
+ const server = http.createServer(createCallbackHandler(apiUrlBase, () => server, resolve, reject));
96
122
  let listenerSetup = false;
97
123
  const startAuth = (port, spinner, _server, _reject) => {
98
- const baseUrl = apiUrlBase.endsWith('/') ? apiUrlBase.slice(0, -1) : apiUrlBase;
99
- const authorizeUrl = `${baseUrl}/auth/cli/authorize/${provider}?port=${port}`;
124
+ const authorizeUrl = `${trimSlash(apiUrlBase)}/auth/cli/authorize/${provider}?port=${port}`;
100
125
  open(authorizeUrl).then((browser) => {
101
126
  spinner.stop(muted(`Waiting for authentication...\nIf the browser didn't open, visit: ${authorizeUrl}`));
102
127
  browser?.on('close', () => { });
@@ -115,48 +140,7 @@ export async function performOAuthFlow(apiUrlBase, provider) {
115
140
  if (!listenerSetup && err.code === 'EADDRNOTAVAIL') {
116
141
  listenerSetup = true;
117
142
  server.close();
118
- const newServer = http.createServer(async (req, res) => {
119
- try {
120
- const url = new URL(req.url || '', `http://${req.headers.host}`);
121
- if (url.pathname === '/callback') {
122
- const params = req.method === 'POST' ? await parseFormBody(req) : url.searchParams;
123
- const error = params.get('error');
124
- if (error) {
125
- res.writeHead(400, { 'Content-Type': 'text/html' });
126
- res.end(renderErrorPage(error));
127
- newServer.close();
128
- reject(new Error(error));
129
- return;
130
- }
131
- const accessToken = params.get('access_token');
132
- const refreshToken = params.get('refresh_token') || undefined;
133
- const userId = params.get('user_id');
134
- const email = params.get('email');
135
- if (accessToken && userId && email) {
136
- res.writeHead(200, { 'Content-Type': 'text/html' });
137
- res.end(renderSuccessPage(email));
138
- newServer.close();
139
- resolve({ accessToken, refreshToken, userId, email });
140
- }
141
- else {
142
- res.writeHead(400, { 'Content-Type': 'text/html' });
143
- res.end(renderErrorPage('Missing tokens'));
144
- newServer.close();
145
- reject(new Error('Missing tokens in callback'));
146
- }
147
- }
148
- else {
149
- res.writeHead(404);
150
- res.end();
151
- }
152
- }
153
- catch (err) {
154
- res.writeHead(500, { 'Content-Type': 'text/html' });
155
- res.end(renderErrorPage('Internal server error'));
156
- newServer.close();
157
- reject(err);
158
- }
159
- });
143
+ const newServer = http.createServer(createCallbackHandler(apiUrlBase, () => newServer, resolve, reject));
160
144
  newServer.listen(0, '0.0.0.0', () => {
161
145
  const port = newServer.address().port;
162
146
  const spinner = clack.spinner();
package/dist/oauth.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"oauth.js","sourceRoot":"","sources":["../src/oauth.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"oauth.js","sourceRoot":"","sources":["../src/oauth.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"program.d.ts","sourceRoot":"","sources":["../src/program.ts"],"names":[],"mappings":"AA8EA,qBAAa,OAAO;IAClB,OAAO,CAAC,GAAG,CAAU;;IAOrB,OAAO,CAAC,KAAK;IAkEP,GAAG;CA8BV"}
1
+ {"version":3,"file":"program.d.ts","sourceRoot":"","sources":["../src/program.ts"],"names":[],"mappings":"AAkFA,qBAAa,OAAO;IAClB,OAAO,CAAC,GAAG,CAAU;;IAOrB,OAAO,CAAC,KAAK;IAoEP,GAAG;CA8BV"}
package/dist/program.js CHANGED
@@ -28,6 +28,8 @@ import { registerStatusCommands } from './commands/status.js';
28
28
  import { registerCheckoutCommands } from './commands/checkout.js';
29
29
  import { registerUserCommands } from './commands/users.js';
30
30
  import { registerScanCommand } from './commands/scan.js';
31
+ import { registerTranslateCommand } from './commands/translate.js';
32
+ import { registerCheckCommand } from './commands/check.js';
31
33
  import { registerInitCommand } from './commands/init.js';
32
34
  import { registerGlossaryCommands } from './commands/glossary.js';
33
35
  import { registerApiKeyCommands } from './commands/api-keys.js';
@@ -39,6 +41,8 @@ const HELP_SECTIONS = [
39
41
  {
40
42
  title: 'GETTING STARTED',
41
43
  items: [
44
+ { cmd: 'translate', desc: 'Translate this repo locally with your own LLM key or BABELIZE_API_KEY', example: 'babelize translate --to fr,de' },
45
+ { cmd: 'check', desc: 'QA locale files (missing keys, placeholders, ICU); exits 1 on errors', example: 'babelize check' },
42
46
  { cmd: 'init', desc: 'Initialize a new Babelize project', example: 'babelize init' },
43
47
  { cmd: 'auth login', desc: 'Log in to your Babelize account', example: 'babelize auth login' },
44
48
  { cmd: 'auth signup', desc: 'Create a new account', example: 'babelize auth signup' },
@@ -109,6 +113,8 @@ export class Program {
109
113
  chalk.level = 0;
110
114
  }
111
115
  });
116
+ registerTranslateCommand(this.cli);
117
+ registerCheckCommand(this.cli);
112
118
  registerScanCommand(this.cli);
113
119
  registerInitCommand(this.cli);
114
120
  registerAuthCommands(this.cli);
@@ -1 +1 @@
1
- {"version":3,"file":"program.js","sourceRoot":"","sources":["../src/program.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"program.js","sourceRoot":"","sources":["../src/program.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"repl.d.ts","sourceRoot":"","sources":["../../src/tui/repl.ts"],"names":[],"mappings":"AAMA,OAAO,EAAoB,KAAK,WAAW,EAAE,KAAK,YAAY,EAAE,MAAM,WAAW,CAAC;AAuClF,qBAAa,IAAI;IAQb,OAAO,CAAC,OAAO,CAAC;IAChB,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,UAAU;IATpB,OAAO,CAAC,IAAI,CAAiC;IAC7C,OAAO,CAAC,WAAW,CAAM;IACzB,OAAO,CAAC,EAAE,CAAqB;IAC/B,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,OAAO,CAAS;gBAGd,OAAO,CAAC,EAAE,WAAW,YAAA,EACrB,QAAQ,GAAE,YAAY,EAAO,EAC7B,UAAU,GAAE,OAAe;IAU/B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAqB5B,OAAO,CAAC,QAAQ;IAOhB,OAAO,CAAC,WAAW;IAKnB,OAAO,CAAC,MAAM;IA0Bd,OAAO,CAAC,cAAc;IA2BtB,OAAO,CAAC,eAAe;IAOvB,OAAO,CAAC,iBAAiB;IAyBzB,OAAO,CAAC,UAAU;IAsElB,OAAO,CAAC,cAAc;IAqBtB,OAAO,CAAC,eAAe;IAqBvB,OAAO,CAAC,IAAI;CAOb"}
1
+ {"version":3,"file":"repl.d.ts","sourceRoot":"","sources":["../../src/tui/repl.ts"],"names":[],"mappings":"AAMA,OAAO,EAAoB,KAAK,WAAW,EAAE,KAAK,YAAY,EAAE,MAAM,WAAW,CAAC;AAyClF,qBAAa,IAAI;IAQb,OAAO,CAAC,OAAO,CAAC;IAChB,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,UAAU;IATpB,OAAO,CAAC,IAAI,CAAiC;IAC7C,OAAO,CAAC,WAAW,CAAM;IACzB,OAAO,CAAC,EAAE,CAAqB;IAC/B,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,OAAO,CAAS;gBAGd,OAAO,CAAC,EAAE,WAAW,YAAA,EACrB,QAAQ,GAAE,YAAY,EAAO,EAC7B,UAAU,GAAE,OAAe;IAU/B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAqB5B,OAAO,CAAC,QAAQ;IAOhB,OAAO,CAAC,WAAW;IAKnB,OAAO,CAAC,MAAM;IA0Bd,OAAO,CAAC,cAAc;IA2BtB,OAAO,CAAC,eAAe;IAOvB,OAAO,CAAC,iBAAiB;IAyBzB,OAAO,CAAC,UAAU;IAsElB,OAAO,CAAC,cAAc;IAqBtB,OAAO,CAAC,eAAe;IAqBvB,OAAO,CAAC,IAAI;CAOb"}