@fias/plugin-dev-harness 1.9.2 → 1.10.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/dist/cli/login.js CHANGED
@@ -2,8 +2,16 @@
2
2
  /**
3
3
  * `fias-dev login` Command — Authenticate with FIAS platform
4
4
  *
5
- * Default: Opens browser to platform login, creates API key automatically.
6
- * Manual: `fias-dev login --key fias_sk_...` saves key directly.
5
+ * Three flows:
6
+ * - Default (browser redirect): Opens browser, runs localhost callback,
7
+ * receives a fias_sk_* key. Works on dev machines where the browser
8
+ * can reach localhost.
9
+ * - --manual (paste-code): Mints a one-time code, prints it for the
10
+ * user to paste on the web platform, then polls until the platform
11
+ * delivers the key. Used in environments where the localhost
12
+ * callback isn't reachable from the user's browser — notably GitHub
13
+ * Codespaces. Auto-selected when CODESPACES env vars are set.
14
+ * - --key fias_sk_...: Skips the auth dance entirely.
7
15
  */
8
16
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
9
17
  if (k2 === undefined) k2 = k;
@@ -44,6 +52,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
44
52
  Object.defineProperty(exports, "__esModule", { value: true });
45
53
  exports.registerLoginCommand = registerLoginCommand;
46
54
  exports.handleBrowserLogin = handleBrowserLogin;
55
+ exports.handleManualLogin = handleManualLogin;
47
56
  exports.promptForApiKey = promptForApiKey;
48
57
  const http = __importStar(require("http"));
49
58
  const crypto = __importStar(require("crypto"));
@@ -53,11 +62,13 @@ const chalk_1 = __importDefault(require("chalk"));
53
62
  const credentials_1 = require("../config/credentials");
54
63
  const config_loader_1 = require("../config/config-loader");
55
64
  const LOGIN_TIMEOUT_MS = 5 * 60 * 1000; // 5 minutes
65
+ const DEFAULT_POLL_INTERVAL_MS = 2000;
56
66
  function registerLoginCommand(program) {
57
67
  program
58
68
  .command('login')
59
69
  .description('Authenticate with the FIAS platform')
60
70
  .option('--key <apiKey>', 'Manually provide an API key (fias_sk_...)')
71
+ .option('--manual', 'Paste-code flow (use when the browser cannot reach localhost, e.g. Codespaces)')
61
72
  .option('--env <environment>', 'Target environment (staging or production)', 'staging')
62
73
  .action(async (options) => {
63
74
  const env = options.env;
@@ -75,6 +86,18 @@ function registerLoginCommand(program) {
75
86
  handleManualKey(options.key, env);
76
87
  return;
77
88
  }
89
+ // Codespaces auto-detection. The browser runs on the user's laptop
90
+ // while the CLI runs in a remote container, so the localhost
91
+ // callback that the browser-redirect flow relies on can't be
92
+ // reached. Fall through to the paste-code flow.
93
+ const useManual = options.manual === true || isCodespaces();
94
+ if (useManual) {
95
+ if (options.manual !== true) {
96
+ console.log(chalk_1.default.dim('\n Detected GitHub Codespaces — using manual code flow.\n'));
97
+ }
98
+ await handleManualLogin(env);
99
+ return;
100
+ }
78
101
  await handleBrowserLogin(env);
79
102
  });
80
103
  }
@@ -166,6 +189,15 @@ function isWSL() {
166
189
  return false;
167
190
  }
168
191
  }
192
+ /**
193
+ * Detect GitHub Codespaces. GitHub sets both env vars automatically inside
194
+ * the container, so checking either is sufficient. Deliberately does NOT
195
+ * check REMOTE_CONTAINERS=true — that matches generic VS Code dev
196
+ * containers where the browser-redirect flow may still work.
197
+ */
198
+ function isCodespaces() {
199
+ return process.env.CODESPACES === 'true' || Boolean(process.env.CODESPACE_NAME);
200
+ }
169
201
  function openBrowser(url) {
170
202
  const platform = process.platform;
171
203
  let command;
@@ -201,6 +233,92 @@ function renderHtml(title, message, isError) {
201
233
  </body>
202
234
  </html>`;
203
235
  }
236
+ /**
237
+ * Paste-code login flow. Mints a one-time code on the platform, prints it
238
+ * for the user to enter in their laptop browser at /developer/cli-auth,
239
+ * and polls until the platform delivers a freshly-minted API key.
240
+ *
241
+ * Distinct from `handleBrowserLogin` in that there is NO localhost HTTP
242
+ * server — everything happens via outbound HTTPS to the platform.
243
+ */
244
+ async function handleManualLogin(environment = 'staging') {
245
+ const apiUrl = config_loader_1.ENVIRONMENT_URLS[environment].apiUrl;
246
+ const platformUrl = config_loader_1.ENVIRONMENT_URLS[environment].platformUrl;
247
+ // ---- Mint -----------------------------------------------------------------
248
+ let mintBody;
249
+ try {
250
+ const resp = await fetch(`${apiUrl}/cli-auth/code`, {
251
+ method: 'POST',
252
+ headers: { 'Content-Type': 'application/json' },
253
+ body: '{}',
254
+ });
255
+ if (!resp.ok) {
256
+ console.error(chalk_1.default.red(`\n Failed to mint CLI auth code: HTTP ${resp.status} ${resp.statusText}\n`));
257
+ process.exit(1);
258
+ }
259
+ mintBody = (await resp.json());
260
+ }
261
+ catch (err) {
262
+ console.error(chalk_1.default.red(`\n Failed to reach the FIAS platform at ${apiUrl}: ${err instanceof Error ? err.message : String(err)}\n`));
263
+ process.exit(1);
264
+ return; // unreachable; satisfies TS
265
+ }
266
+ const pollIntervalMs = (mintBody.pollIntervalSeconds ?? 2) * 1000 || DEFAULT_POLL_INTERVAL_MS;
267
+ const displayCode = mintBody.code; // server returns the dash-formatted form
268
+ const canonicalCode = displayCode.replace(/[\s-]/g, '').toUpperCase();
269
+ console.log(chalk_1.default.bold('\n Authorize the FIAS CLI:\n'));
270
+ console.log(' 1. On your laptop, open: ' + chalk_1.default.cyan(`${platformUrl}/developer/cli-auth`));
271
+ console.log(' 2. Enter this code: ' + chalk_1.default.bold.cyan(displayCode));
272
+ console.log(chalk_1.default.dim(' (expires in 5 minutes)\n'));
273
+ console.log(chalk_1.default.dim(' Waiting for authorization...'));
274
+ // ---- Poll -----------------------------------------------------------------
275
+ const pollUrl = `${apiUrl}/cli-auth/code/${encodeURIComponent(canonicalCode)}`;
276
+ const maxAttempts = Math.ceil(LOGIN_TIMEOUT_MS / pollIntervalMs);
277
+ for (let attempt = 0; attempt < maxAttempts; attempt++) {
278
+ await new Promise((resolve) => setTimeout(resolve, pollIntervalMs));
279
+ let resp;
280
+ try {
281
+ resp = await fetch(pollUrl, { method: 'GET' });
282
+ }
283
+ catch {
284
+ // Transient network error — keep polling.
285
+ process.stdout.write(chalk_1.default.dim('?'));
286
+ continue;
287
+ }
288
+ if (resp.status === 410 || resp.status === 404) {
289
+ console.error(chalk_1.default.red('\n\n Code expired or invalid. Run `fias-dev login --manual` to mint a new one.\n'));
290
+ process.exit(1);
291
+ }
292
+ if (resp.status === 429) {
293
+ // Backoff a tick and continue.
294
+ process.stdout.write(chalk_1.default.dim('!'));
295
+ await new Promise((resolve) => setTimeout(resolve, pollIntervalMs));
296
+ continue;
297
+ }
298
+ if (!resp.ok) {
299
+ // Treat as transient. Log a single dot and keep going.
300
+ process.stdout.write(chalk_1.default.dim('?'));
301
+ continue;
302
+ }
303
+ const body = (await resp.json());
304
+ if (body.status === 'pending') {
305
+ process.stdout.write(chalk_1.default.dim('.'));
306
+ continue;
307
+ }
308
+ if (body.status === 'ready' && body.apiKey?.startsWith('fias_sk_')) {
309
+ (0, credentials_1.saveApiKeyForEnvironment)(environment, body.apiKey);
310
+ console.log(chalk_1.default.green('\n\n Authenticated successfully!'));
311
+ console.log(chalk_1.default.dim(` API key saved for ${environment} environment`));
312
+ console.log(chalk_1.default.dim(' You can now switch to LIVE mode in the dev harness toolbar.\n'));
313
+ return;
314
+ }
315
+ // Unexpected payload — bail rather than loop forever.
316
+ console.error(chalk_1.default.red('\n Unexpected response from platform; aborting.\n'));
317
+ process.exit(1);
318
+ }
319
+ console.error(chalk_1.default.red('\n\n Authentication timed out. Run `fias-dev login --manual` to try again.\n'));
320
+ process.exit(1);
321
+ }
204
322
  /**
205
323
  * Prompts for API key interactively (used as fallback).
206
324
  */
@@ -1 +1 @@
1
- {"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/cli/login.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/cli/login.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,6 @@
1
1
  "use strict";
2
+ /// <reference types="jest" />
3
+ /// <reference types="node" />
2
4
  Object.defineProperty(exports, "__esModule", { value: true });
3
5
  jest.mock('../config/credentials', () => ({
4
6
  saveApiKeyForEnvironment: jest.fn(),
@@ -28,8 +30,19 @@ describe('cli/login', () => {
28
30
  let mockExit;
29
31
  let consoleSpy;
30
32
  let consoleErrorSpy;
33
+ // The CI environment may be a Codespace itself (CODESPACES=true). Clear
34
+ // those env vars by default so the existing browser-flow tests aren't
35
+ // auto-routed to the new manual flow. The manual-flow describe block
36
+ // restores them on a per-test basis via its own beforeEach.
37
+ let outerCodespacesBackup = {};
31
38
  beforeEach(() => {
32
39
  jest.clearAllMocks();
40
+ outerCodespacesBackup = {
41
+ CODESPACES: process.env.CODESPACES,
42
+ CODESPACE_NAME: process.env.CODESPACE_NAME,
43
+ };
44
+ delete process.env.CODESPACES;
45
+ delete process.env.CODESPACE_NAME;
33
46
  program = new commander_1.Command();
34
47
  program.exitOverride();
35
48
  (0, login_1.registerLoginCommand)(program);
@@ -43,6 +56,12 @@ describe('cli/login', () => {
43
56
  mockExit.mockRestore();
44
57
  consoleSpy.mockRestore();
45
58
  consoleErrorSpy.mockRestore();
59
+ for (const [k, v] of Object.entries(outerCodespacesBackup)) {
60
+ if (v === undefined)
61
+ delete process.env[k];
62
+ else
63
+ process.env[k] = v;
64
+ }
46
65
  });
47
66
  describe('--key flag (manual entry)', () => {
48
67
  it('saves credentials for staging by default', async () => {
@@ -137,5 +156,120 @@ describe('cli/login', () => {
137
156
  await loginPromise;
138
157
  });
139
158
  });
159
+ // ---------------------------------------------------------------------------
160
+ // Manual paste-code flow (`fias-dev login --manual` and Codespaces auto-detect)
161
+ // ---------------------------------------------------------------------------
162
+ describe('manual paste-code flow', () => {
163
+ let fetchSpy;
164
+ const codespacesEnvBackup = {};
165
+ function mockFetchSequence(responses) {
166
+ let i = 0;
167
+ fetchSpy.mockImplementation(async () => {
168
+ const next = responses[Math.min(i, responses.length - 1)];
169
+ i++;
170
+ return typeof next === 'function' ? next() : next;
171
+ });
172
+ }
173
+ function jsonResponse(status, body) {
174
+ return new Response(JSON.stringify(body), {
175
+ status,
176
+ headers: { 'Content-Type': 'application/json' },
177
+ });
178
+ }
179
+ beforeEach(() => {
180
+ fetchSpy = jest.spyOn(global, 'fetch');
181
+ // Snapshot Codespaces env vars so tests can set/clear without leaking.
182
+ codespacesEnvBackup.CODESPACES = process.env.CODESPACES;
183
+ codespacesEnvBackup.CODESPACE_NAME = process.env.CODESPACE_NAME;
184
+ delete process.env.CODESPACES;
185
+ delete process.env.CODESPACE_NAME;
186
+ });
187
+ afterEach(() => {
188
+ fetchSpy.mockRestore();
189
+ // Restore Codespaces env vars.
190
+ for (const [k, v] of Object.entries(codespacesEnvBackup)) {
191
+ if (v === undefined)
192
+ delete process.env[k];
193
+ else
194
+ process.env[k] = v;
195
+ }
196
+ });
197
+ it('--manual mints a code, prints it, and saves the key on poll-ready', async () => {
198
+ mockFetchSequence([
199
+ // mint
200
+ jsonResponse(201, {
201
+ code: 'ABCD-EFGH',
202
+ expiresAt: new Date(Date.now() + 5 * 60000).toISOString(),
203
+ pollIntervalSeconds: 0.05, // 50ms — keep tests fast
204
+ }),
205
+ // first poll: pending
206
+ jsonResponse(200, { status: 'pending' }),
207
+ // second poll: ready
208
+ jsonResponse(200, { status: 'ready', apiKey: 'fias_sk_manual_test' }),
209
+ ]);
210
+ await program.parseAsync(['login', '--manual'], { from: 'user' });
211
+ // The CLI printed the platform URL and the dash-formatted code.
212
+ expect(consoleSpy.mock.calls.some((c) => typeof c[0] === 'string' && c[0].includes('staging.fias.io/developer/cli-auth'))).toBe(true);
213
+ expect(consoleSpy.mock.calls.some((c) => typeof c[0] === 'string' && c[0].includes('ABCD-EFGH'))).toBe(true);
214
+ // The CLI POSTed to mint and GET-polled with the canonical (no-dash) code.
215
+ const mintCall = fetchSpy.mock.calls.find((c) => typeof c[0] === 'string' && c[0].endsWith('/cli-auth/code'));
216
+ expect(mintCall).toBeDefined();
217
+ expect(mintCall[1].method).toBe('POST');
218
+ const pollCall = fetchSpy.mock.calls.find((c) => typeof c[0] === 'string' && c[0].includes('/cli-auth/code/ABCDEFGH'));
219
+ expect(pollCall).toBeDefined();
220
+ expect(mockedSaveApiKey).toHaveBeenCalledWith('staging', 'fias_sk_manual_test');
221
+ });
222
+ it('CODESPACES=true auto-routes to manual without --manual', async () => {
223
+ process.env.CODESPACES = 'true';
224
+ mockFetchSequence([
225
+ jsonResponse(201, {
226
+ code: 'JKMN-PQRS',
227
+ expiresAt: new Date(Date.now() + 5 * 60000).toISOString(),
228
+ pollIntervalSeconds: 0.05,
229
+ }),
230
+ jsonResponse(200, { status: 'ready', apiKey: 'fias_sk_codespaces' }),
231
+ ]);
232
+ await program.parseAsync(['login'], { from: 'user' });
233
+ // Auto-detection message should be printed.
234
+ expect(consoleSpy.mock.calls.some((c) => typeof c[0] === 'string' && c[0].includes('Detected GitHub Codespaces'))).toBe(true);
235
+ expect(mockedSaveApiKey).toHaveBeenCalledWith('staging', 'fias_sk_codespaces');
236
+ });
237
+ it('exits non-zero when poll returns 410 (expired/consumed)', async () => {
238
+ mockFetchSequence([
239
+ jsonResponse(201, {
240
+ code: 'ABCD-EFGH',
241
+ expiresAt: new Date(Date.now() + 5 * 60000).toISOString(),
242
+ pollIntervalSeconds: 0.05,
243
+ }),
244
+ jsonResponse(410, { error: { code: 'GONE' } }),
245
+ ]);
246
+ await expect(program.parseAsync(['login', '--manual'], { from: 'user' })).rejects.toThrow('process.exit(1)');
247
+ expect(consoleErrorSpy).toHaveBeenCalledWith(expect.stringMatching(/expired or invalid/i));
248
+ expect(mockedSaveApiKey).not.toHaveBeenCalled();
249
+ });
250
+ it('exits non-zero when the mint request fails', async () => {
251
+ fetchSpy.mockImplementationOnce(async () => jsonResponse(500, { error: 'broken' }));
252
+ await expect(program.parseAsync(['login', '--manual'], { from: 'user' })).rejects.toThrow('process.exit(1)');
253
+ expect(consoleErrorSpy).toHaveBeenCalledWith(expect.stringMatching(/Failed to mint CLI auth code/i));
254
+ expect(mockedSaveApiKey).not.toHaveBeenCalled();
255
+ });
256
+ it('keeps polling on transient errors and eventually succeeds', async () => {
257
+ mockFetchSequence([
258
+ jsonResponse(201, {
259
+ code: 'ABCD-EFGH',
260
+ expiresAt: new Date(Date.now() + 5 * 60000).toISOString(),
261
+ pollIntervalSeconds: 0.05,
262
+ }),
263
+ // transient 503
264
+ jsonResponse(503, { error: 'temp' }),
265
+ // pending
266
+ jsonResponse(200, { status: 'pending' }),
267
+ // ready
268
+ jsonResponse(200, { status: 'ready', apiKey: 'fias_sk_resilient' }),
269
+ ]);
270
+ await program.parseAsync(['login', '--manual'], { from: 'user' });
271
+ expect(mockedSaveApiKey).toHaveBeenCalledWith('staging', 'fias_sk_resilient');
272
+ });
273
+ });
140
274
  });
141
275
  //# sourceMappingURL=login.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"login.test.js","sourceRoot":"","sources":["../../src/cli/login.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"login.test.js","sourceRoot":"","sources":["../../src/cli/login.test.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"harness-server.d.ts","sourceRoot":"","sources":["../../src/server/harness-server.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AASH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAQhE,OAAO,EAIL,KAAK,WAAW,EACjB,MAAM,uBAAuB,CAAC;AAE/B,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,kBAAkB,EAAE,WAAW,CAAC;IAChC,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,QAAQ,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC;IACzE,SAAS,EAAE,OAAO,GAAG,MAAM,CAAC;IAC5B,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IAChD,oEAAoE;IACpE,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,oDAAoD;IACpD,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,wBAAsB,kBAAkB,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC,CA+9BrF"}
1
+ {"version":3,"file":"harness-server.d.ts","sourceRoot":"","sources":["../../src/server/harness-server.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AASH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAQhE,OAAO,EAKL,KAAK,WAAW,EACjB,MAAM,uBAAuB,CAAC;AAE/B,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,kBAAkB,EAAE,WAAW,CAAC;IAChC,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,QAAQ,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC;IACzE,SAAS,EAAE,OAAO,GAAG,MAAM,CAAC;IAC5B,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IAChD,oEAAoE;IACpE,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,oDAAoD;IACpD,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,wBAAsB,kBAAkB,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC,CAkjCrF"}