@ripeseed/rs-tunnel 0.2.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -16,6 +16,7 @@ export RS_TUNNEL_API_URL=https://api.your-domain.com
16
16
 
17
17
  # authenticate
18
18
  rs-tunnel login --email you@your-company.com
19
+ rs-tunnel login --email you@your-company.com --skip-browser-open
19
20
 
20
21
  # expose local app on port 3000
21
22
  rs-tunnel up --port 3000
@@ -26,7 +27,7 @@ If no API URL is configured, the CLI prompts once and stores it in `~/.rs-tunnel
26
27
  ## Commands
27
28
 
28
29
  ```bash
29
- rs-tunnel login --email <email> [--domain <api-url>]
30
+ rs-tunnel login --email <email> [--skip-browser-open] [--domain <api-url>]
30
31
  rs-tunnel up --port <port> [--url <slug>] [--verbose] [--domain <api-url>]
31
32
  rs-tunnel list [--domain <api-url>]
32
33
  rs-tunnel stop <tunnel-id-or-hostname> [--domain <api-url>]
@@ -39,6 +40,7 @@ rs-tunnel doctor [--domain <api-url>]
39
40
  - `RS_TUNNEL_API_URL`: preferred API base URL override.
40
41
  - `RS_TUNNEL_API_BASE_URL`: legacy alias (still supported).
41
42
  - `--domain`: command-level API override; also persists for future commands.
43
+ - `--skip-browser-open`: skips automatically launching a browser, prints the Slack authorize URL, and keeps waiting for the API-side auth flow to complete.
42
44
 
43
45
  ## Notes
44
46
 
@@ -54,4 +56,3 @@ rs-tunnel doctor [--domain <api-url>]
54
56
 
55
57
  - Monorepo: https://github.com/RipeSeed/rs-tunnel
56
58
  - Full project docs: https://github.com/RipeSeed/rs-tunnel/blob/main/README.md
57
-
@@ -1 +1,18 @@
1
- export declare function loginCommand(email: string): Promise<void>;
1
+ import { getCliConfig } from '../config.js';
2
+ import { ApiClient } from '../lib/api-client.js';
3
+ import { createPkcePair } from '../lib/pkce.js';
4
+ import { saveSession } from '../store/credentials.js';
5
+ export type LoginCommandOptions = {
6
+ skipBrowserOpen?: boolean;
7
+ };
8
+ type LoginApiClient = Pick<ApiClient, 'startSlackAuth' | 'getSlackAuthStatus' | 'exchangeLoginCode'>;
9
+ type LoginCommandDependencies = {
10
+ getCliConfig: typeof getCliConfig;
11
+ createApiClient: (baseUrl: string) => LoginApiClient;
12
+ createPkcePair: typeof createPkcePair;
13
+ openUrl: (url: string) => Promise<void>;
14
+ saveSession: typeof saveSession;
15
+ sleep: (ms: number) => Promise<void>;
16
+ };
17
+ export declare function loginCommand(email: string, options?: LoginCommandOptions, dependencies?: LoginCommandDependencies): Promise<void>;
18
+ export {};
@@ -1,45 +1,69 @@
1
1
  import open from 'open';
2
2
  import { getCliConfig } from '../config.js';
3
3
  import { ApiClient } from '../lib/api-client.js';
4
- import { startCallbackServer } from '../lib/local-callback.js';
5
4
  import { createPkcePair } from '../lib/pkce.js';
6
5
  import { saveSession } from '../store/credentials.js';
7
- export async function loginCommand(email) {
8
- const config = getCliConfig();
9
- const apiClient = new ApiClient(config.apiBaseUrl);
10
- const callbackServer = await startCallbackServer();
11
- const pkce = createPkcePair();
12
- try {
13
- const auth = await apiClient.startSlackAuth({
14
- email,
15
- codeChallenge: pkce.challenge,
16
- cliCallbackUrl: callbackServer.callbackUrl,
6
+ const AUTH_POLL_INTERVAL_MS = 2_000;
7
+ const AUTH_POLL_TIMEOUT_MS = 120_000;
8
+ const defaultDependencies = {
9
+ getCliConfig,
10
+ createApiClient: (baseUrl) => new ApiClient(baseUrl),
11
+ createPkcePair,
12
+ openUrl: async (url) => {
13
+ await open(url);
14
+ },
15
+ saveSession,
16
+ sleep: async (ms) => {
17
+ await new Promise((resolve) => {
18
+ setTimeout(resolve, ms);
17
19
  });
20
+ },
21
+ };
22
+ export async function loginCommand(email, options = {}, dependencies = defaultDependencies) {
23
+ const config = dependencies.getCliConfig();
24
+ const apiClient = dependencies.createApiClient(config.apiBaseUrl);
25
+ const pkce = dependencies.createPkcePair();
26
+ const auth = await apiClient.startSlackAuth({
27
+ email,
28
+ codeChallenge: pkce.challenge,
29
+ });
30
+ if (options.skipBrowserOpen) {
31
+ console.log(`Slack Auth URL: ${auth.authorizeUrl}`);
32
+ }
33
+ else {
18
34
  try {
19
- await open(auth.authorizeUrl);
35
+ await dependencies.openUrl(auth.authorizeUrl);
20
36
  }
21
37
  catch {
22
38
  console.log(`Open this URL in your browser:\n${auth.authorizeUrl}`);
23
39
  }
24
- console.log('Waiting for Slack OAuth callback...');
25
- const callback = await callbackServer.waitForCode();
26
- if (callback.state !== auth.state) {
27
- throw new Error('OAuth state mismatch. Aborting login.');
28
- }
29
- const tokenPair = await apiClient.exchangeLoginCode({
30
- loginCode: callback.code,
31
- codeVerifier: pkce.verifier,
32
- });
33
- await saveSession({
34
- accessToken: tokenPair.accessToken,
35
- refreshToken: tokenPair.refreshToken,
36
- expiresAtEpochSec: Math.floor(Date.now() / 1000) + tokenPair.expiresInSec,
37
- profile: tokenPair.profile,
38
- });
39
- console.log(`Logged in as ${tokenPair.profile.email}`);
40
40
  }
41
- finally {
42
- await callbackServer.close();
41
+ console.log('Waiting for Slack OAuth confirmation...');
42
+ const loginCode = await waitForLoginCode(auth.state, apiClient, dependencies.sleep);
43
+ const tokenPair = await apiClient.exchangeLoginCode({
44
+ loginCode,
45
+ codeVerifier: pkce.verifier,
46
+ });
47
+ await dependencies.saveSession({
48
+ accessToken: tokenPair.accessToken,
49
+ refreshToken: tokenPair.refreshToken,
50
+ expiresAtEpochSec: Math.floor(Date.now() / 1000) + tokenPair.expiresInSec,
51
+ profile: tokenPair.profile,
52
+ });
53
+ console.log(`Logged in as ${tokenPair.profile.email}`);
54
+ }
55
+ async function waitForLoginCode(state, apiClient, sleep) {
56
+ const startedAt = Date.now();
57
+ while (Date.now() - startedAt < AUTH_POLL_TIMEOUT_MS) {
58
+ const authStatus = await apiClient.getSlackAuthStatus({ state });
59
+ if (authStatus.status === 'authorized' && authStatus.loginCode) {
60
+ return authStatus.loginCode;
61
+ }
62
+ if (authStatus.status === 'expired') {
63
+ throw new Error('Slack OAuth session expired. Please run rs-tunnel login again.');
64
+ }
65
+ await sleep(AUTH_POLL_INTERVAL_MS);
43
66
  }
67
+ throw new Error('Timed out waiting for Slack OAuth confirmation.');
44
68
  }
45
69
  //# sourceMappingURL=login.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAEtD,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,KAAa;IAC9C,MAAM,MAAM,GAAG,YAAY,EAAE,CAAC;IAE9B,MAAM,SAAS,GAAG,IAAI,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IACnD,MAAM,cAAc,GAAG,MAAM,mBAAmB,EAAE,CAAC;IACnD,MAAM,IAAI,GAAG,cAAc,EAAE,CAAC;IAE9B,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,cAAc,CAAC;YAC1C,KAAK;YACL,aAAa,EAAE,IAAI,CAAC,SAAS;YAC7B,cAAc,EAAE,cAAc,CAAC,WAAW;SAC3C,CAAC,CAAC;QAEH,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAChC,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,CAAC,GAAG,CAAC,mCAAmC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;QACtE,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC;QAEnD,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC,WAAW,EAAE,CAAC;QAEpD,IAAI,QAAQ,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,EAAE,CAAC;YAClC,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;QAC3D,CAAC;QAED,MAAM,SAAS,GAAG,MAAM,SAAS,CAAC,iBAAiB,CAAC;YAClD,SAAS,EAAE,QAAQ,CAAC,IAAI;YACxB,YAAY,EAAE,IAAI,CAAC,QAAQ;SAC5B,CAAC,CAAC;QAEH,MAAM,WAAW,CAAC;YAChB,WAAW,EAAE,SAAS,CAAC,WAAW;YAClC,YAAY,EAAE,SAAS,CAAC,YAAY;YACpC,iBAAiB,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,SAAS,CAAC,YAAY;YACzE,OAAO,EAAE,SAAS,CAAC,OAAO;SAC3B,CAAC,CAAC;QAEH,OAAO,CAAC,GAAG,CAAC,gBAAgB,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;IACzD,CAAC;YAAS,CAAC;QACT,MAAM,cAAc,CAAC,KAAK,EAAE,CAAC;IAC/B,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAMtD,MAAM,qBAAqB,GAAG,KAAK,CAAC;AACpC,MAAM,oBAAoB,GAAG,OAAO,CAAC;AAarC,MAAM,mBAAmB,GAA6B;IACpD,YAAY;IACZ,eAAe,EAAE,CAAC,OAAe,EAAE,EAAE,CAAC,IAAI,SAAS,CAAC,OAAO,CAAC;IAC5D,cAAc;IACd,OAAO,EAAE,KAAK,EAAE,GAAW,EAAE,EAAE;QAC7B,MAAM,IAAI,CAAC,GAAG,CAAC,CAAC;IAClB,CAAC;IACD,WAAW;IACX,KAAK,EAAE,KAAK,EAAE,EAAU,EAAE,EAAE;QAC1B,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAC5B,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QAC1B,CAAC,CAAC,CAAC;IACL,CAAC;CACF,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,KAAa,EACb,UAA+B,EAAE,EACjC,eAAyC,mBAAmB;IAE5D,MAAM,MAAM,GAAG,YAAY,CAAC,YAAY,EAAE,CAAC;IAE3C,MAAM,SAAS,GAAG,YAAY,CAAC,eAAe,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IAClE,MAAM,IAAI,GAAG,YAAY,CAAC,cAAc,EAAE,CAAC;IAE3C,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,cAAc,CAAC;QAC1C,KAAK;QACL,aAAa,EAAE,IAAI,CAAC,SAAS;KAC9B,CAAC,CAAC;IAEH,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;QAC5B,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;IACtD,CAAC;SAAM,CAAC;QACN,IAAI,CAAC;YACH,MAAM,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAChD,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,CAAC,GAAG,CAAC,mCAAmC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;QACtE,CAAC;IACH,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC;IAEvD,MAAM,SAAS,GAAG,MAAM,gBAAgB,CAAC,IAAI,CAAC,KAAK,EAAE,SAAS,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC;IAEpF,MAAM,SAAS,GAAG,MAAM,SAAS,CAAC,iBAAiB,CAAC;QAClD,SAAS;QACT,YAAY,EAAE,IAAI,CAAC,QAAQ;KAC5B,CAAC,CAAC;IAEH,MAAM,YAAY,CAAC,WAAW,CAAC;QAC7B,WAAW,EAAE,SAAS,CAAC,WAAW;QAClC,YAAY,EAAE,SAAS,CAAC,YAAY;QACpC,iBAAiB,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,SAAS,CAAC,YAAY;QACzE,OAAO,EAAE,SAAS,CAAC,OAAO;KAC3B,CAAC,CAAC;IAEH,OAAO,CAAC,GAAG,CAAC,gBAAgB,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;AACzD,CAAC;AAED,KAAK,UAAU,gBAAgB,CAC7B,KAAa,EACb,SAAyB,EACzB,KAAoC;IAEpC,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAE7B,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,GAAG,oBAAoB,EAAE,CAAC;QACrD,MAAM,UAAU,GAAG,MAAM,SAAS,CAAC,kBAAkB,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;QAEjE,IAAI,UAAU,CAAC,MAAM,KAAK,YAAY,IAAI,UAAU,CAAC,SAAS,EAAE,CAAC;YAC/D,OAAO,UAAU,CAAC,SAAS,CAAC;QAC9B,CAAC;QAED,IAAI,UAAU,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YACpC,MAAM,IAAI,KAAK,CAAC,gEAAgE,CAAC,CAAC;QACpF,CAAC;QAED,MAAM,KAAK,CAAC,qBAAqB,CAAC,CAAC;IACrC,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;AACrE,CAAC"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,113 @@
1
+ import { describe, expect, it, vi } from 'vitest';
2
+ import { loginCommand } from './login.js';
3
+ describe('loginCommand', () => {
4
+ it('prints the auth URL when browser auto-open is skipped', async () => {
5
+ const startSlackAuth = vi.fn(async () => ({
6
+ authorizeUrl: 'https://slack.example.com/auth',
7
+ state: 'expected-state',
8
+ }));
9
+ const getSlackAuthStatus = vi.fn(async () => ({
10
+ status: 'authorized',
11
+ loginCode: 'login-code',
12
+ }));
13
+ const exchangeLoginCode = vi.fn(async () => ({
14
+ accessToken: 'access-token',
15
+ refreshToken: 'refresh-token',
16
+ expiresInSec: 900,
17
+ profile: {
18
+ email: 'test@example.com',
19
+ slackUserId: 'U1',
20
+ slackTeamId: 'T1',
21
+ },
22
+ }));
23
+ const saveSession = vi.fn(async () => { });
24
+ const openUrl = vi.fn(async () => { });
25
+ const logSpy = vi.spyOn(console, 'log').mockImplementation(() => { });
26
+ const dependencies = {
27
+ getCliConfig: () => ({ apiBaseUrl: 'https://api.example.com' }),
28
+ createApiClient: () => ({
29
+ startSlackAuth,
30
+ getSlackAuthStatus,
31
+ exchangeLoginCode,
32
+ }),
33
+ createPkcePair: () => ({
34
+ verifier: 'verifier-value',
35
+ challenge: 'challenge-value',
36
+ }),
37
+ openUrl,
38
+ saveSession,
39
+ sleep: vi.fn(async () => { }),
40
+ };
41
+ try {
42
+ await loginCommand('test@example.com', { skipBrowserOpen: true }, dependencies);
43
+ expect(startSlackAuth).toHaveBeenCalledWith({
44
+ email: 'test@example.com',
45
+ codeChallenge: 'challenge-value',
46
+ });
47
+ expect(openUrl).not.toHaveBeenCalled();
48
+ expect(getSlackAuthStatus).toHaveBeenCalledWith({
49
+ state: 'expected-state',
50
+ });
51
+ expect(exchangeLoginCode).toHaveBeenCalledWith({
52
+ loginCode: 'login-code',
53
+ codeVerifier: 'verifier-value',
54
+ });
55
+ expect(saveSession).toHaveBeenCalledWith(expect.objectContaining({
56
+ accessToken: 'access-token',
57
+ refreshToken: 'refresh-token',
58
+ profile: expect.objectContaining({
59
+ email: 'test@example.com',
60
+ }),
61
+ }));
62
+ expect(logSpy).toHaveBeenCalledWith('Slack Auth URL: https://slack.example.com/auth');
63
+ expect(logSpy).toHaveBeenCalledWith('Waiting for Slack OAuth confirmation...');
64
+ expect(logSpy).toHaveBeenCalledWith('Logged in as test@example.com');
65
+ }
66
+ finally {
67
+ logSpy.mockRestore();
68
+ }
69
+ });
70
+ it('opens the browser by default', async () => {
71
+ const openUrl = vi.fn(async () => { });
72
+ const logSpy = vi.spyOn(console, 'log').mockImplementation(() => { });
73
+ const dependencies = {
74
+ getCliConfig: () => ({ apiBaseUrl: 'https://api.example.com' }),
75
+ createApiClient: () => ({
76
+ startSlackAuth: vi.fn(async () => ({
77
+ authorizeUrl: 'https://slack.example.com/auth',
78
+ state: 'expected-state',
79
+ })),
80
+ getSlackAuthStatus: vi.fn(async () => ({
81
+ status: 'authorized',
82
+ loginCode: 'login-code',
83
+ })),
84
+ exchangeLoginCode: vi.fn(async () => ({
85
+ accessToken: 'access-token',
86
+ refreshToken: 'refresh-token',
87
+ expiresInSec: 900,
88
+ profile: {
89
+ email: 'test@example.com',
90
+ slackUserId: 'U1',
91
+ slackTeamId: 'T1',
92
+ },
93
+ })),
94
+ }),
95
+ createPkcePair: () => ({
96
+ verifier: 'verifier-value',
97
+ challenge: 'challenge-value',
98
+ }),
99
+ openUrl,
100
+ saveSession: vi.fn(async () => { }),
101
+ sleep: vi.fn(async () => { }),
102
+ };
103
+ try {
104
+ await loginCommand('test@example.com', {}, dependencies);
105
+ expect(openUrl).toHaveBeenCalledWith('https://slack.example.com/auth');
106
+ expect(logSpy).not.toHaveBeenCalledWith('Slack Auth URL: https://slack.example.com/auth');
107
+ }
108
+ finally {
109
+ logSpy.mockRestore();
110
+ }
111
+ });
112
+ });
113
+ //# sourceMappingURL=login.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"login.test.js","sourceRoot":"","sources":["../../src/commands/login.test.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -20,10 +20,13 @@ program
20
20
  program
21
21
  .command('login')
22
22
  .requiredOption('--email <email>', 'Email for Slack OAuth')
23
+ .option('--skip-browser-open', 'Skip automatically opening the browser and print the Slack auth URL')
23
24
  .option('--domain <domain-url>', domainOptionDescription)
24
25
  .action(async (options) => {
25
26
  await applyDomainOption(options.domain);
26
- await loginCommand(options.email);
27
+ await loginCommand(options.email, {
28
+ skipBrowserOpen: options.skipBrowserOpen,
29
+ });
27
30
  });
28
31
  program
29
32
  .command('up')
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,0BAA0B,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAC9B,MAAM,uBAAuB,GAC3B,iHAAiH,CAAC;AAEpH,KAAK,UAAU,iBAAiB,CAAC,MAAe;IAC9C,MAAM,0BAA0B,CAAC,MAAM,CAAC,CAAC;AAC3C,CAAC;AAED,OAAO;KACJ,IAAI,CAAC,WAAW,CAAC;KACjB,WAAW,CAAC,qCAAqC,CAAC;KAClD,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC;AAE5B,OAAO;KACJ,OAAO,CAAC,OAAO,CAAC;KAChB,cAAc,CAAC,iBAAiB,EAAE,uBAAuB,CAAC;KAC1D,MAAM,CAAC,qBAAqB,EAAE,qEAAqE,CAAC;KACpG,MAAM,CAAC,uBAAuB,EAAE,uBAAuB,CAAC;KACxD,MAAM,CAAC,KAAK,EAAE,OAAsE,EAAE,EAAE;IACvF,MAAM,iBAAiB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACxC,MAAM,YAAY,CAAC,OAAO,CAAC,KAAK,EAAE;QAChC,eAAe,EAAE,OAAO,CAAC,eAAe;KACzC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,IAAI,CAAC;KACb,cAAc,CAAC,eAAe,EAAE,sBAAsB,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;KAC9F,MAAM,CAAC,cAAc,EAAE,uCAAuC,CAAC;KAC/D,MAAM,CAAC,uBAAuB,EAAE,uBAAuB,CAAC;KACxD,MAAM,CAAC,WAAW,EAAE,2BAA2B,CAAC;KAChD,MAAM,CAAC,KAAK,EAAE,OAA2E,EAAE,EAAE;IAC5F,MAAM,iBAAiB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACxC,MAAM,SAAS,CAAC;QACd,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,OAAO,EAAE,OAAO,CAAC,OAAO;KACzB,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,MAAM,CAAC,uBAAuB,EAAE,uBAAuB,CAAC;KACxD,MAAM,CAAC,KAAK,EAAE,OAA4B,EAAE,EAAE;IAC7C,MAAM,iBAAiB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACxC,MAAM,WAAW,EAAE,CAAC;AACtB,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,QAAQ,CAAC,yBAAyB,EAAE,uBAAuB,CAAC;KAC5D,MAAM,CAAC,uBAAuB,EAAE,uBAAuB,CAAC;KACxD,MAAM,CAAC,KAAK,EAAE,gBAAwB,EAAE,OAA4B,EAAE,EAAE;IACvE,MAAM,iBAAiB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACxC,MAAM,WAAW,CAAC,gBAAgB,CAAC,CAAC;AACtC,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,MAAM,CAAC,uBAAuB,EAAE,uBAAuB,CAAC;KACxD,MAAM,CAAC,KAAK,EAAE,OAA4B,EAAE,EAAE;IAC7C,MAAM,iBAAiB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACxC,MAAM,aAAa,EAAE,CAAC;AACxB,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,MAAM,CAAC,uBAAuB,EAAE,uBAAuB,CAAC;KACxD,MAAM,CAAC,KAAK,EAAE,OAA4B,EAAE,EAAE;IAC7C,MAAM,iBAAiB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACxC,MAAM,aAAa,EAAE,CAAC;AACxB,CAAC,CAAC,CAAC;AAEL,OAAO,CAAC,kBAAkB,EAAE,CAAC;AAE7B,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;IACxD,OAAO,CAAC,KAAK,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IACtE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
@@ -12,11 +12,16 @@ export declare class ApiClient {
12
12
  startSlackAuth(input: {
13
13
  email: string;
14
14
  codeChallenge: string;
15
- cliCallbackUrl: string;
16
15
  }): Promise<{
17
16
  authorizeUrl: string;
18
17
  state: string;
19
18
  }>;
19
+ getSlackAuthStatus(input: {
20
+ state: string;
21
+ }): Promise<{
22
+ status: 'pending' | 'authorized' | 'expired';
23
+ loginCode?: string;
24
+ }>;
20
25
  exchangeLoginCode(input: {
21
26
  loginCode: string;
22
27
  codeVerifier: string;
@@ -1,4 +1,4 @@
1
- import { apiErrorSchema, authExchangeRequestSchema, authStartRequestSchema, authStartResponseSchema, heartbeatResponseSchema, refreshRequestSchema, tokenPairSchema, tunnelCreateRequestSchema, tunnelCreateResponseSchema, tunnelListResponseSchema, tunnelTelemetryIngestRequestSchema, tunnelTelemetryIngestResponseSchema, } from '@ripeseed/shared';
1
+ import { apiErrorSchema, authExchangeRequestSchema, authStatusRequestSchema, authStatusResponseSchema, authStartRequestSchema, authStartResponseSchema, heartbeatResponseSchema, refreshRequestSchema, tokenPairSchema, tunnelCreateRequestSchema, tunnelCreateResponseSchema, tunnelListResponseSchema, tunnelTelemetryIngestRequestSchema, tunnelTelemetryIngestResponseSchema, } from '@ripeseed/shared';
2
2
  function formatNetworkFailure(error) {
3
3
  if (!(error instanceof Error)) {
4
4
  return 'unknown network error';
@@ -46,6 +46,14 @@ export class ApiClient {
46
46
  });
47
47
  return authStartResponseSchema.parse(response);
48
48
  }
49
+ async getSlackAuthStatus(input) {
50
+ const body = authStatusRequestSchema.parse(input);
51
+ const response = await this.request('/v1/auth/slack/status', {
52
+ method: 'POST',
53
+ body,
54
+ });
55
+ return authStatusResponseSchema.parse(response);
56
+ }
49
57
  async exchangeLoginCode(input) {
50
58
  const body = authExchangeRequestSchema.parse(input);
51
59
  const response = await this.request('/v1/auth/exchange', {
@@ -1 +1 @@
1
- {"version":3,"file":"api-client.js","sourceRoot":"","sources":["../../src/lib/api-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"api-client.js","sourceRoot":"","sources":["../../src/lib/api-client.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ripeseed/rs-tunnel",
3
- "version": "0.2.0",
3
+ "version": "0.3.0",
4
4
  "description": "CLI for running secure public tunnels to localhost through Cloudflare.",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -29,7 +29,7 @@
29
29
  "commander": "^13.1.0",
30
30
  "open": "^10.1.0",
31
31
  "zod": "^3.24.1",
32
- "@ripeseed/shared": "0.2.0"
32
+ "@ripeseed/shared": "0.3.0"
33
33
  },
34
34
  "optionalDependencies": {
35
35
  "keytar": "^7.9.0"
@@ -1,9 +0,0 @@
1
- export type CallbackServer = {
2
- callbackUrl: string;
3
- waitForCode: () => Promise<{
4
- code: string;
5
- state: string;
6
- }>;
7
- close: () => Promise<void>;
8
- };
9
- export declare function startCallbackServer(): Promise<CallbackServer>;
@@ -1,68 +0,0 @@
1
- import http from 'node:http';
2
- import { URL } from 'node:url';
3
- export async function startCallbackServer() {
4
- let resolveHandler;
5
- let rejectHandler;
6
- const waitForCodePromise = new Promise((resolve, reject) => {
7
- resolveHandler = resolve;
8
- rejectHandler = reject;
9
- });
10
- const server = http.createServer((req, res) => {
11
- const requestUrl = new URL(req.url ?? '/', 'http://127.0.0.1');
12
- if (requestUrl.pathname !== '/callback') {
13
- res.statusCode = 404;
14
- res.end('Not found');
15
- return;
16
- }
17
- const code = requestUrl.searchParams.get('code');
18
- const state = requestUrl.searchParams.get('state');
19
- if (!code || !state) {
20
- res.statusCode = 400;
21
- res.end('Missing code or state');
22
- rejectHandler?.(new Error('OAuth callback missing code or state'));
23
- return;
24
- }
25
- res.statusCode = 200;
26
- res.setHeader('Content-Type', 'text/plain');
27
- res.end('Login complete. You can close this tab.');
28
- resolveHandler?.({ code, state });
29
- });
30
- await new Promise((resolve, reject) => {
31
- server.once('error', reject);
32
- server.listen(0, '127.0.0.1', () => {
33
- server.off('error', reject);
34
- resolve();
35
- });
36
- });
37
- const address = server.address();
38
- if (!address || typeof address === 'string') {
39
- throw new Error('Unable to bind local callback server.');
40
- }
41
- const timeout = setTimeout(() => {
42
- rejectHandler?.(new Error('Timed out waiting for Slack OAuth callback.'));
43
- }, 120_000);
44
- return {
45
- callbackUrl: `http://127.0.0.1:${address.port}/callback`,
46
- waitForCode: async () => {
47
- try {
48
- return await waitForCodePromise;
49
- }
50
- finally {
51
- clearTimeout(timeout);
52
- }
53
- },
54
- close: async () => {
55
- await new Promise((resolve, reject) => {
56
- server.close((error) => {
57
- if (error) {
58
- reject(error);
59
- return;
60
- }
61
- resolve();
62
- });
63
- });
64
- clearTimeout(timeout);
65
- },
66
- };
67
- }
68
- //# sourceMappingURL=local-callback.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"local-callback.js","sourceRoot":"","sources":["../../src/lib/local-callback.ts"],"names":[],"mappings":"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"}