lim 0.42.0 → 0.43.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 (40) hide show
  1. package/dist/commands/tunnel/create.d.ts +21 -0
  2. package/dist/commands/tunnel/create.d.ts.map +1 -0
  3. package/dist/commands/tunnel/create.js +63 -0
  4. package/dist/commands/tunnel/create.js.map +1 -0
  5. package/dist/commands/tunnel/delete.d.ts +19 -0
  6. package/dist/commands/tunnel/delete.d.ts.map +1 -0
  7. package/dist/commands/tunnel/delete.js +30 -0
  8. package/dist/commands/tunnel/delete.js.map +1 -0
  9. package/dist/commands/tunnel/list.d.ts +16 -0
  10. package/dist/commands/tunnel/list.d.ts.map +1 -0
  11. package/dist/commands/tunnel/list.js +34 -0
  12. package/dist/commands/tunnel/list.js.map +1 -0
  13. package/dist/commands/tunnel/manage.test.d.ts +2 -0
  14. package/dist/commands/tunnel/manage.test.d.ts.map +1 -0
  15. package/dist/commands/tunnel/manage.test.js +156 -0
  16. package/dist/commands/tunnel/manage.test.js.map +1 -0
  17. package/dist/commands/tunnel/rotate.d.ts +20 -0
  18. package/dist/commands/tunnel/rotate.d.ts.map +1 -0
  19. package/dist/commands/tunnel/rotate.js +57 -0
  20. package/dist/commands/tunnel/rotate.js.map +1 -0
  21. package/dist/commands/tunnel/run.d.ts.map +1 -1
  22. package/dist/commands/tunnel/run.js +12 -12
  23. package/dist/commands/tunnel/run.js.map +1 -1
  24. package/dist/commands/tunnel/run.test.js +25 -17
  25. package/dist/commands/tunnel/run.test.js.map +1 -1
  26. package/dist/commands/tunnel/update.d.ts +20 -0
  27. package/dist/commands/tunnel/update.d.ts.map +1 -0
  28. package/dist/commands/tunnel/update.js +47 -0
  29. package/dist/commands/tunnel/update.js.map +1 -0
  30. package/dist/lib/backend.d.ts +41 -9
  31. package/dist/lib/backend.d.ts.map +1 -1
  32. package/dist/lib/backend.js +67 -23
  33. package/dist/lib/backend.js.map +1 -1
  34. package/dist/lib/backend.test.js +29 -4
  35. package/dist/lib/backend.test.js.map +1 -1
  36. package/dist/lib/tunnel-run.d.ts +8 -0
  37. package/dist/lib/tunnel-run.d.ts.map +1 -1
  38. package/dist/lib/tunnel-run.js +16 -2
  39. package/dist/lib/tunnel-run.js.map +1 -1
  40. package/package.json +2 -2
@@ -10,15 +10,19 @@ const backend_1 = require("../../lib/backend");
10
10
  const tunnel_run_1 = require("../../lib/tunnel-run");
11
11
  jest.mock('@limrun/api', () => ({ ...jest.requireActual('@limrun/api'), runTunnel: jest.fn() }));
12
12
  jest.mock('../../lib/backend', () => ({
13
- quickTunnelOrganization: jest.fn(),
13
+ tunnelOrganization: jest.fn(),
14
14
  findTunnel: jest.fn(),
15
15
  createQuickTunnel: jest.fn(),
16
- deleteQuickTunnel: jest.fn(async () => { }),
16
+ deleteTunnel: jest.fn(async () => { }),
17
17
  tunnelTokenClaims: jest.requireActual('../../lib/backend').tunnelTokenClaims,
18
18
  }));
19
19
  // A tunnel token's header and signature do not matter to the CLI; only the
20
20
  // payload's claims are read.
21
21
  const tunnelToken = `lim_st_eyJhbGciOiJFZERTQSJ9.${Buffer.from(JSON.stringify({ sub: 'org_1', scopes: ['tunnel:tunnel_01h455vb4pex5vsknk084sn02q:connect'] })).toString('base64url')}.c2ln`;
22
+ /** A tunnel as the backend lists it, with the fields a test cares about. */
23
+ function tunnelFixture(fields) {
24
+ return { online: false, selectors: [], instances: [], ...fields };
25
+ }
22
26
  beforeEach(() => jest.clearAllMocks());
23
27
  describe('tunnel run flags', () => {
24
28
  test('need neither a name nor selectors, with inspection on by default', async () => {
@@ -52,7 +56,7 @@ describe('tunnel run flags', () => {
52
56
  });
53
57
  describe('tunnel run command', () => {
54
58
  function setup(flags, { closed = Promise.resolve() } = {}) {
55
- jest.mocked(backend_1.quickTunnelOrganization).mockResolvedValue('org_1');
59
+ jest.mocked(backend_1.tunnelOrganization).mockResolvedValue('org_1');
56
60
  const close = jest.fn(async () => { });
57
61
  jest.mocked(api_1.runTunnel).mockReturnValue({ closed, close });
58
62
  const info = jest.fn();
@@ -89,7 +93,7 @@ describe('tunnel run command', () => {
89
93
  await command.run();
90
94
  // The admin's key in the shell is never used: no backend call, and the
91
95
  // connector runs with the tunnel token.
92
- expect(backend_1.quickTunnelOrganization).not.toHaveBeenCalled();
96
+ expect(backend_1.tunnelOrganization).not.toHaveBeenCalled();
93
97
  expect(backend_1.findTunnel).not.toHaveBeenCalled();
94
98
  expect(options()).toMatchObject({
95
99
  token: tunnelToken,
@@ -112,12 +116,12 @@ describe('tunnel run command', () => {
112
116
  ])('refuses %s passed as --token', async (_, token) => {
113
117
  const { command } = setup({ token });
114
118
  await expect(command.run()).rejects.toThrow('--token takes a tunnel token');
115
- expect(backend_1.quickTunnelOrganization).not.toHaveBeenCalled();
119
+ expect(backend_1.tunnelOrganization).not.toHaveBeenCalled();
116
120
  });
117
121
  test("creates a quick tunnel for --name with --selector and runs it with the tunnel's token", async () => {
118
122
  jest.mocked(backend_1.findTunnel).mockResolvedValue(undefined);
119
123
  jest.mocked(backend_1.createQuickTunnel).mockResolvedValue({
120
- tunnel: { id: 'tunnel_3', name: 'scratch', ephemeral: true },
124
+ tunnel: tunnelFixture({ id: 'tunnel_3', name: 'scratch', ephemeral: true }),
121
125
  token: 'lim_st_quick',
122
126
  });
123
127
  const { command, info } = setup({ name: 'scratch', selector: ['localhost:3000'] });
@@ -127,12 +131,12 @@ describe('tunnel run command', () => {
127
131
  expect(options()).toMatchObject({ tunnelId: 'tunnel_3', token: 'lim_st_quick' });
128
132
  options().onEvent({ type: 'active', sessionId: 's1', name: 'scratch' });
129
133
  expect(info).toHaveBeenCalledWith(expect.stringContaining('goes away when this connector exits'));
130
- expect(backend_1.deleteQuickTunnel).toHaveBeenCalledWith(expect.anything(), 'org_1', 'tunnel_3');
134
+ expect(backend_1.deleteTunnel).toHaveBeenCalledWith(expect.anything(), 'org_1', 'tunnel_3');
131
135
  });
132
136
  test('deletes its quick tunnel when the connector cannot start', async () => {
133
137
  jest.mocked(backend_1.findTunnel).mockResolvedValue(undefined);
134
138
  jest.mocked(backend_1.createQuickTunnel).mockResolvedValue({
135
- tunnel: { id: 'tunnel_3', name: 'scratch', ephemeral: true },
139
+ tunnel: tunnelFixture({ id: 'tunnel_3', name: 'scratch', ephemeral: true }),
136
140
  token: 'lim_st_quick',
137
141
  });
138
142
  const { command } = setup({ name: 'scratch', selector: ['localhost:3000'] });
@@ -140,17 +144,17 @@ describe('tunnel run command', () => {
140
144
  throw new Error('invalid header value');
141
145
  });
142
146
  await expect(command.run()).rejects.toThrow('invalid header value');
143
- expect(backend_1.deleteQuickTunnel).toHaveBeenCalledWith(expect.anything(), 'org_1', 'tunnel_3');
147
+ expect(backend_1.deleteTunnel).toHaveBeenCalledWith(expect.anything(), 'org_1', 'tunnel_3');
144
148
  });
145
149
  test('deletes its quick tunnel when the connector fails', async () => {
146
150
  jest.mocked(backend_1.findTunnel).mockResolvedValue(undefined);
147
151
  jest.mocked(backend_1.createQuickTunnel).mockResolvedValue({
148
- tunnel: { id: 'tunnel_3', name: 'scratch', ephemeral: true },
152
+ tunnel: tunnelFixture({ id: 'tunnel_3', name: 'scratch', ephemeral: true }),
149
153
  token: 'lim_st_quick',
150
154
  });
151
155
  const { command } = setup({ name: 'scratch', selector: ['localhost:3000'] }, { closed: Promise.reject(new Error('tunnel scratch: unauthorized')) });
152
156
  await expect(command.run()).rejects.toThrow('tunnel scratch: unauthorized');
153
- expect(backend_1.deleteQuickTunnel).toHaveBeenCalledWith(expect.anything(), 'org_1', 'tunnel_3');
157
+ expect(backend_1.deleteTunnel).toHaveBeenCalledWith(expect.anything(), 'org_1', 'tunnel_3');
154
158
  });
155
159
  test.each([
156
160
  [
@@ -171,8 +175,8 @@ describe('tunnel run command', () => {
171
175
  [
172
176
  'a name that does not exist without selectors',
173
177
  { name: 'missing' },
174
- 'Tunnel missing does not exist. Create it in the console (Network > New tunnel), or pass --selector to ' +
175
- 'run a quick tunnel.',
178
+ 'Tunnel missing does not exist. Create it with lim tunnel create missing --selector <destination>, or ' +
179
+ 'pass --selector to run a quick tunnel.',
176
180
  ],
177
181
  ])('refuses %s', async (_, flags, message) => {
178
182
  jest.mocked(backend_1.findTunnel).mockResolvedValue(undefined);
@@ -181,14 +185,18 @@ describe('tunnel run command', () => {
181
185
  expect(api_1.runTunnel).not.toHaveBeenCalled();
182
186
  });
183
187
  test.each([[{ name: 'staging' }], [{ name: 'staging', selector: ['localhost:3000'] }]])('refuses to run a console-created tunnel without its token (%j)', async (flags) => {
184
- jest.mocked(backend_1.findTunnel).mockResolvedValue({ id: 'tunnel_2', name: 'staging', ephemeral: false });
188
+ jest
189
+ .mocked(backend_1.findTunnel)
190
+ .mockResolvedValue(tunnelFixture({ id: 'tunnel_2', name: 'staging', ephemeral: false }));
185
191
  const { command } = setup(flags);
186
192
  await expect(command.run()).rejects.toThrow('Tunnel staging runs with its own token (--token)');
187
193
  expect(api_1.runTunnel).not.toHaveBeenCalled();
188
194
  expect(backend_1.createQuickTunnel).not.toHaveBeenCalled();
189
195
  });
190
196
  test.each([[{ name: 'scratch' }], [{ name: 'scratch', selector: ['localhost:3000'] }]])("refuses another connector's quick tunnel (%j)", async (flags) => {
191
- jest.mocked(backend_1.findTunnel).mockResolvedValue({ id: 'tunnel_3', name: 'scratch', ephemeral: true });
197
+ jest
198
+ .mocked(backend_1.findTunnel)
199
+ .mockResolvedValue(tunnelFixture({ id: 'tunnel_3', name: 'scratch', ephemeral: true }));
192
200
  const { command } = setup(flags);
193
201
  await expect(command.run()).rejects.toThrow("Tunnel scratch is another connector's quick tunnel");
194
202
  expect(api_1.runTunnel).not.toHaveBeenCalled();
@@ -206,8 +214,8 @@ describe('tunnel run event lines', () => {
206
214
  ],
207
215
  [
208
216
  { type: 'tokenExpiring', expiresAt: '2026-10-20T00:00:00Z' },
209
- 'The token this connector runs with expires at 2026-10-20T00:00:00Z. Rotate the token of tunnel staging ' +
210
- 'in the console (Network) and restart the connector with the new one.',
217
+ 'The token this connector runs with expires at 2026-10-20T00:00:00Z. Issue a new one with ' +
218
+ 'lim tunnel rotate staging and restart the connector with it.',
211
219
  ],
212
220
  [
213
221
  { type: 'standby', holder: { hostname: 'ci-1', since: '2026-10-08T10:00:00Z' } },
@@ -1 +1 @@
1
- {"version":3,"file":"run.test.js","sourceRoot":"","sources":["../../../src/commands/tunnel/run.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"run.test.js","sourceRoot":"","sources":["../../../src/commands/tunnel/run.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import { BaseCommand } from '../../base-command';
2
+ export default class TunnelUpdate extends BaseCommand {
3
+ static summary: string;
4
+ static description: string;
5
+ static examples: string[];
6
+ static args: {
7
+ name: import("@oclif/core/lib/interfaces").Arg<string, Record<string, unknown>>;
8
+ };
9
+ static flags: {
10
+ selector: import("@oclif/core/lib/interfaces").OptionFlag<string[], import("@oclif/core/lib/interfaces").CustomOptions>;
11
+ 'api-key': import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
12
+ json: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
13
+ quiet: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
14
+ create: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
15
+ workspace: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
16
+ daemon: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
17
+ };
18
+ run(): Promise<void>;
19
+ }
20
+ //# sourceMappingURL=update.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../../src/commands/tunnel/update.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAIjD,MAAM,CAAC,OAAO,OAAO,YAAa,SAAQ,WAAW;IACnD,MAAM,CAAC,OAAO,SAA6C;IAC3D,MAAM,CAAC,WAAW,SAEgF;IAClG,MAAM,CAAC,QAAQ,WAEb;IAEF,MAAM,CAAC,IAAI;;MAET;IAEF,MAAM,CAAC,KAAK;;;;;;;;MASV;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAsB3B"}
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const core_1 = require("@oclif/core");
4
+ const base_command_1 = require("../../base-command");
5
+ const backend_1 = require("../../lib/backend");
6
+ const tunnel_process_1 = require("../../lib/tunnel-process");
7
+ class TunnelUpdate extends base_command_1.BaseCommand {
8
+ async run() {
9
+ const { args, flags } = await this.parse(TunnelUpdate);
10
+ this.setParsedFlags(flags);
11
+ const selectors = (0, tunnel_process_1.parseTunnelSelectors)(flags.selector);
12
+ await this.withAuth(async () => {
13
+ const organizationId = await (0, backend_1.tunnelOrganization)(this.client);
14
+ const tunnel = await (0, backend_1.findTunnel)(this.client, organizationId, args.name);
15
+ if (!tunnel) {
16
+ this.error(`Tunnel ${args.name} does not exist.`);
17
+ }
18
+ const updated = await (0, backend_1.updateTunnelSelectors)(this.client, organizationId, tunnel, [...selectors]);
19
+ if (flags.json) {
20
+ this.outputJson(updated);
21
+ return;
22
+ }
23
+ this.output(`Updated the selectors of tunnel ${args.name}. Instances attached from now on get them; restart the ` +
24
+ 'connector to apply them to attached instances.');
25
+ });
26
+ }
27
+ }
28
+ TunnelUpdate.summary = "Replace a persistent tunnel's selectors";
29
+ TunnelUpdate.description = "Replace a persistent tunnel's selectors. Instances attached after the change get the new ones; " +
30
+ "restart the connector to apply them to attached instances. Needs an admin's API key or login.";
31
+ TunnelUpdate.examples = [
32
+ '<%= config.bin %> tunnel update staging --selector localhost:3000 --selector localhost:4000',
33
+ ];
34
+ TunnelUpdate.args = {
35
+ name: core_1.Args.string({ description: 'Name of the tunnel to update.', required: true }),
36
+ };
37
+ TunnelUpdate.flags = {
38
+ ...base_command_1.BaseCommand.baseFlags,
39
+ selector: core_1.Flags.string({
40
+ description: 'Destination instances reach through the connector, as localhost:port, IPv4:port, [IPv6]:port, or ' +
41
+ 'an exact or *. wildcard domain. Repeat for more selectors; they replace the current ones.',
42
+ multiple: true,
43
+ required: true,
44
+ }),
45
+ };
46
+ exports.default = TunnelUpdate;
47
+ //# sourceMappingURL=update.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update.js","sourceRoot":"","sources":["../../../src/commands/tunnel/update.ts"],"names":[],"mappings":";;AAAA,sCAA0C;AAC1C,qDAAiD;AACjD,+CAA0F;AAC1F,6DAAgE;AAEhE,MAAqB,YAAa,SAAQ,0BAAW;IAwBnD,KAAK,CAAC,GAAG;QACP,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QACvD,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QAC3B,MAAM,SAAS,GAAG,IAAA,qCAAoB,EAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAEvD,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE;YAC7B,MAAM,cAAc,GAAG,MAAM,IAAA,4BAAkB,EAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC7D,MAAM,MAAM,GAAG,MAAM,IAAA,oBAAU,EAAC,IAAI,CAAC,MAAM,EAAE,cAAc,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YACxE,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,IAAI,CAAC,KAAK,CAAC,UAAU,IAAI,CAAC,IAAI,kBAAkB,CAAC,CAAC;YACpD,CAAC;YACD,MAAM,OAAO,GAAG,MAAM,IAAA,+BAAqB,EAAC,IAAI,CAAC,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC;YACjG,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;gBACf,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;gBACzB,OAAO;YACT,CAAC;YACD,IAAI,CAAC,MAAM,CACT,mCAAmC,IAAI,CAAC,IAAI,yDAAyD;gBACnG,gDAAgD,CACnD,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;;AA5CM,oBAAO,GAAG,yCAAyC,CAAC;AACpD,wBAAW,GAChB,iGAAiG;IACjG,+FAA+F,CAAC;AAC3F,qBAAQ,GAAG;IAChB,6FAA6F;CAC9F,CAAC;AAEK,iBAAI,GAAG;IACZ,IAAI,EAAE,WAAI,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,+BAA+B,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;CACpF,CAAC;AAEK,kBAAK,GAAG;IACb,GAAG,0BAAW,CAAC,SAAS;IACxB,QAAQ,EAAE,YAAK,CAAC,MAAM,CAAC;QACrB,WAAW,EACT,mGAAmG;YACnG,2FAA2F;QAC7F,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,IAAI;KACf,CAAC;CACH,CAAC;kBAtBiB,YAAY"}
@@ -24,14 +24,28 @@ export interface PersistentTunnel {
24
24
  id: string;
25
25
  name: string;
26
26
  ephemeral: boolean;
27
+ online: boolean;
28
+ selectors: string[];
29
+ hostname?: string;
30
+ tokenExpiresAt?: string;
31
+ instances: {
32
+ id: string;
33
+ platform: string;
34
+ state: string;
35
+ }[];
36
+ }
37
+ /** A tunnel token as the backend returns it, once: Limrun never stores it. */
38
+ export interface TunnelToken {
39
+ token: string;
40
+ expiresAt: string;
27
41
  }
28
42
  /**
29
- * Resolves the organization an admin's credential acts for, to create a quick
30
- * tunnel. It must be an organization key, so a user token's default
31
- * organization does not count. A tunnel token belongs in --token: the backend
43
+ * Resolves the organization a credential manages tunnels for. It must be an
44
+ * organization key or login, so a user token's default organization does not
45
+ * count. A tunnel token belongs in `lim tunnel run --token`: the backend
32
46
  * accepts no signed token.
33
47
  */
34
- export declare function quickTunnelOrganization(client: Limrun): Promise<string>;
48
+ export declare function tunnelOrganization(client: Limrun): Promise<string>;
35
49
  /**
36
50
  * Reads the organization and tunnel a tunnel token names, without verifying
37
51
  * it; undefined when the token is no tunnel token. Its only scope is
@@ -41,22 +55,40 @@ export declare function tunnelTokenClaims(token: string): {
41
55
  organizationId: string;
42
56
  tunnelId: string;
43
57
  } | undefined;
58
+ /** Lists an organization's tunnels. */
59
+ export declare function listTunnels(client: Limrun, organizationId: string): Promise<PersistentTunnel[]>;
44
60
  /** Finds an organization's tunnel by the name instances use. */
45
61
  export declare function findTunnel(client: Limrun, organizationId: string, name: string): Promise<PersistentTunnel | undefined>;
46
62
  /**
47
- * Creates a quick tunnel that goes away when its connector does, with the
48
- * token the connector runs it with: only tunnel tokens connect. The token
63
+ * Creates a tunnel with the token its connector runs with: only tunnel tokens
64
+ * connect. The token is returned only here.
65
+ */
66
+ export declare function createTunnel(client: Limrun, organizationId: string, request: {
67
+ name: string;
68
+ selectors: string[];
69
+ expirationMonths: number;
70
+ ephemeral?: boolean;
71
+ }): Promise<{
72
+ tunnel: PersistentTunnel;
73
+ token: TunnelToken;
74
+ }>;
75
+ /**
76
+ * Creates a quick tunnel that goes away when its connector does. Its token
49
77
  * goes with the tunnel, so it lasts a month, the shortest the API takes.
50
78
  */
51
79
  export declare function createQuickTunnel(client: Limrun, organizationId: string, name: string, selectors: string[]): Promise<{
52
80
  tunnel: PersistentTunnel;
53
81
  token: string;
54
82
  }>;
83
+ /** Replaces a tunnel's selectors. Instances attached after the change get them. */
84
+ export declare function updateTunnelSelectors(client: Limrun, organizationId: string, tunnel: PersistentTunnel, selectors: string[]): Promise<PersistentTunnel>;
85
+ /** Issues a tunnel's token, which revokes the one it had. */
86
+ export declare function rotateTunnelToken(client: Limrun, organizationId: string, tunnel: PersistentTunnel, expirationMonths: number): Promise<TunnelToken>;
55
87
  /**
56
- * Deletes a quick tunnel this CLI created. The hub deletes it when its
57
- * connector says bye, so a missing tunnel is the normal case.
88
+ * Deletes a tunnel, which revokes its token. A tunnel already gone is fine:
89
+ * the hub deletes a quick tunnel when its connector says bye.
58
90
  */
59
- export declare function deleteQuickTunnel(client: Limrun, organizationId: string, tunnelId: string): Promise<void>;
91
+ export declare function deleteTunnel(client: Limrun, organizationId: string, tunnelId: string): Promise<void>;
60
92
  /** Fetches a secret's data, or undefined when it does not exist. */
61
93
  export declare function getSecret(client: Limrun, organizationId: string, secretType: string, secretName: string): Promise<SecretData | undefined>;
62
94
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"backend.d.ts","sourceRoot":"","sources":["../../src/lib/backend.ts"],"names":[],"mappings":"AAAA,OAAO,MAAwD,MAAM,aAAa,CAAC;AAEnF;;;;;GAKG;AAEH,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAEhD,MAAM,MAAM,eAAe,GAAG;IAC5B,IAAI,EAAE,UAAU,CAAC;IACjB,4EAA4E;IAC5E,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,eAAO,MAAM,2BAA2B,sBAAsB,CAAC;AAU/D;;;;;GAKG;AACH,wBAAsB,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAO5D;AAeD,mDAAmD;AACnD,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,OAAO,CAAC;CACpB;AAED;;;;;GAKG;AACH,wBAAsB,uBAAuB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAa7E;AAYD;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG;IAAE,cAAc,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAoBzG;AAMD,gEAAgE;AAChE,wBAAsB,UAAU,CAC9B,MAAM,EAAE,MAAM,EACd,cAAc,EAAE,MAAM,EACtB,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC,CAQvC;AAED;;;;GAIG;AACH,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,MAAM,EACd,cAAc,EAAE,MAAM,EACtB,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,EAAE,GAClB,OAAO,CAAC;IAAE,MAAM,EAAE,gBAAgB,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAetD;AAED;;;GAGG;AACH,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,MAAM,EACd,cAAc,EAAE,MAAM,EACtB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,IAAI,CAAC,CASf;AAQD,oEAAoE;AACpE,wBAAsB,SAAS,CAC7B,MAAM,EAAE,MAAM,EACd,cAAc,EAAE,MAAM,EACtB,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC,CAcjC;AAED;;;;;;GAMG;AACH,wBAAsB,SAAS,CAC7B,MAAM,EAAE,MAAM,EACd,cAAc,EAAE,MAAM,EACtB,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,UAAU,GACf,OAAO,CAAC,eAAe,CAAC,CAgB1B"}
1
+ {"version":3,"file":"backend.d.ts","sourceRoot":"","sources":["../../src/lib/backend.ts"],"names":[],"mappings":"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"}
@@ -2,11 +2,15 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.androidSigningKeySecretType = void 0;
4
4
  exports.whoAmI = whoAmI;
5
- exports.quickTunnelOrganization = quickTunnelOrganization;
5
+ exports.tunnelOrganization = tunnelOrganization;
6
6
  exports.tunnelTokenClaims = tunnelTokenClaims;
7
+ exports.listTunnels = listTunnels;
7
8
  exports.findTunnel = findTunnel;
9
+ exports.createTunnel = createTunnel;
8
10
  exports.createQuickTunnel = createQuickTunnel;
9
- exports.deleteQuickTunnel = deleteQuickTunnel;
11
+ exports.updateTunnelSelectors = updateTunnelSelectors;
12
+ exports.rotateTunnelToken = rotateTunnelToken;
13
+ exports.deleteTunnel = deleteTunnel;
10
14
  exports.getSecret = getSecret;
11
15
  exports.putSecret = putSecret;
12
16
  const api_1 = require("@limrun/api");
@@ -41,20 +45,20 @@ async function fetchWhoAmI(client) {
41
45
  }
42
46
  }
43
47
  /**
44
- * Resolves the organization an admin's credential acts for, to create a quick
45
- * tunnel. It must be an organization key, so a user token's default
46
- * organization does not count. A tunnel token belongs in --token: the backend
48
+ * Resolves the organization a credential manages tunnels for. It must be an
49
+ * organization key or login, so a user token's default organization does not
50
+ * count. A tunnel token belongs in `lim tunnel run --token`: the backend
47
51
  * accepts no signed token.
48
52
  */
49
- async function quickTunnelOrganization(client) {
53
+ async function tunnelOrganization(client) {
50
54
  if ((client.apiKey ?? '').startsWith(SIGNED_TOKEN_PREFIX)) {
51
- throw new Error('The API key is a signed token. Pass a tunnel token with --token or LIM_TUNNEL_TOKEN; the API key ' +
52
- "is an admin's, for quick tunnels.");
55
+ throw new Error('The API key is a signed token. Pass a tunnel token to lim tunnel run with --token or ' +
56
+ 'LIM_TUNNEL_TOKEN; managing tunnels needs an organization API key or login.');
53
57
  }
54
58
  const body = await fetchWhoAmI(client);
55
59
  const organizationId = body.organization?.id;
56
60
  if (!organizationId) {
57
- throw new Error("A quick tunnel needs an admin's organization key or login.");
61
+ throw new Error('Managing tunnels needs an organization API key or login.');
58
62
  }
59
63
  return organizationId;
60
64
  }
@@ -95,8 +99,11 @@ function tunnelTokenClaims(token) {
95
99
  function tunnelsPath(organizationId) {
96
100
  return `/v1/organizations/${encodeURIComponent(organizationId)}/tunnels`;
97
101
  }
98
- /** Finds an organization's tunnel by the name instances use. */
99
- async function findTunnel(client, organizationId, name) {
102
+ function tunnelPath(organizationId, tunnelId) {
103
+ return `${tunnelsPath(organizationId)}/${encodeURIComponent(tunnelId)}`;
104
+ }
105
+ /** Lists an organization's tunnels. */
106
+ async function listTunnels(client, organizationId) {
100
107
  let body;
101
108
  try {
102
109
  body = await client.get(tunnelsPath(organizationId));
@@ -104,18 +111,22 @@ async function findTunnel(client, organizationId, name) {
104
111
  catch (err) {
105
112
  rethrow(err, 'Failed to list tunnels');
106
113
  }
107
- return body.tunnels?.find((tunnel) => tunnel.name === name);
114
+ return body.tunnels ?? [];
115
+ }
116
+ /** Finds an organization's tunnel by the name instances use. */
117
+ async function findTunnel(client, organizationId, name) {
118
+ return (await listTunnels(client, organizationId)).find((tunnel) => tunnel.name === name);
108
119
  }
109
120
  /**
110
- * Creates a quick tunnel that goes away when its connector does, with the
111
- * token the connector runs it with: only tunnel tokens connect. The token
112
- * goes with the tunnel, so it lasts a month, the shortest the API takes.
121
+ * Creates a tunnel with the token its connector runs with: only tunnel tokens
122
+ * connect. The token is returned only here.
113
123
  */
114
- async function createQuickTunnel(client, organizationId, name, selectors) {
124
+ async function createTunnel(client, organizationId, request) {
125
+ const { name, selectors, expirationMonths, ephemeral } = request;
115
126
  let body;
116
127
  try {
117
128
  body = await client.post(tunnelsPath(organizationId), {
118
- body: { name, selectors, ephemeral: true, token: { expirationMonths: 1 } },
129
+ body: { name, selectors, ...(ephemeral && { ephemeral }), token: { expirationMonths } },
119
130
  });
120
131
  }
121
132
  catch (err) {
@@ -123,18 +134,51 @@ async function createQuickTunnel(client, organizationId, name, selectors) {
123
134
  }
124
135
  if (!body.token?.token) {
125
136
  // Nothing can run a tunnel without its token, so it goes at once.
126
- await deleteQuickTunnel(client, organizationId, body.tunnel.id).catch(() => { });
137
+ await deleteTunnel(client, organizationId, body.tunnel.id).catch(() => { });
127
138
  throw new Error(`Limrun created tunnel ${name} but returned no token to run it with.`);
128
139
  }
129
- return { tunnel: body.tunnel, token: body.token.token };
140
+ return { tunnel: body.tunnel, token: body.token };
141
+ }
142
+ /**
143
+ * Creates a quick tunnel that goes away when its connector does. Its token
144
+ * goes with the tunnel, so it lasts a month, the shortest the API takes.
145
+ */
146
+ async function createQuickTunnel(client, organizationId, name, selectors) {
147
+ const created = await createTunnel(client, organizationId, {
148
+ name,
149
+ selectors,
150
+ expirationMonths: 1,
151
+ ephemeral: true,
152
+ });
153
+ return { tunnel: created.tunnel, token: created.token.token };
154
+ }
155
+ /** Replaces a tunnel's selectors. Instances attached after the change get them. */
156
+ async function updateTunnelSelectors(client, organizationId, tunnel, selectors) {
157
+ try {
158
+ return await client.patch(tunnelPath(organizationId, tunnel.id), { body: { selectors } });
159
+ }
160
+ catch (err) {
161
+ rethrow(err, `Failed to update tunnel ${tunnel.name}`);
162
+ }
163
+ }
164
+ /** Issues a tunnel's token, which revokes the one it had. */
165
+ async function rotateTunnelToken(client, organizationId, tunnel, expirationMonths) {
166
+ try {
167
+ return await client.post(`${tunnelPath(organizationId, tunnel.id)}/token`, {
168
+ body: { expirationMonths },
169
+ });
170
+ }
171
+ catch (err) {
172
+ rethrow(err, `Failed to rotate the token of tunnel ${tunnel.name}`);
173
+ }
130
174
  }
131
175
  /**
132
- * Deletes a quick tunnel this CLI created. The hub deletes it when its
133
- * connector says bye, so a missing tunnel is the normal case.
176
+ * Deletes a tunnel, which revokes its token. A tunnel already gone is fine:
177
+ * the hub deletes a quick tunnel when its connector says bye.
134
178
  */
135
- async function deleteQuickTunnel(client, organizationId, tunnelId) {
179
+ async function deleteTunnel(client, organizationId, tunnelId) {
136
180
  try {
137
- await client.delete(`${tunnelsPath(organizationId)}/${encodeURIComponent(tunnelId)}`);
181
+ await client.delete(tunnelPath(organizationId, tunnelId));
138
182
  }
139
183
  catch (err) {
140
184
  if (err instanceof api_1.NotFoundError) {
@@ -1 +1 @@
1
- {"version":3,"file":"backend.js","sourceRoot":"","sources":["../../src/lib/backend.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"backend.js","sourceRoot":"","sources":["../../src/lib/backend.ts"],"names":[],"mappings":"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"}
@@ -78,7 +78,7 @@ describe('backend client', () => {
78
78
  });
79
79
  it("asks whoami for the organization of an admin's key", async () => {
80
80
  fetchMock.mockResolvedValue(mockResponse(200, { organization: { id: 'org_1' } }));
81
- await expect((0, backend_1.quickTunnelOrganization)(client)).resolves.toBe('org_1');
81
+ await expect((0, backend_1.tunnelOrganization)(client)).resolves.toBe('org_1');
82
82
  });
83
83
  it('refuses a signed token as the API key, without a call', async () => {
84
84
  const tokenClient = new api_1.default({
@@ -86,7 +86,7 @@ describe('backend client', () => {
86
86
  baseURL: apiEndpoint,
87
87
  maxRetries: 0,
88
88
  });
89
- await expect((0, backend_1.quickTunnelOrganization)(tokenClient)).rejects.toThrow('--token or LIM_TUNNEL_TOKEN');
89
+ await expect((0, backend_1.tunnelOrganization)(tokenClient)).rejects.toThrow('--token or LIM_TUNNEL_TOKEN');
90
90
  expect(fetchMock).not.toHaveBeenCalled();
91
91
  });
92
92
  it('finds a tunnel by name and creates a quick one', async () => {
@@ -121,14 +121,39 @@ describe('backend client', () => {
121
121
  expect(deleteURL).toBe(`${apiEndpoint}/v1/organizations/org_1/tunnels/tunnel_3`);
122
122
  expect(deleteInit.method).toBe('DELETE');
123
123
  });
124
+ it('replaces selectors and rotates the token of a tunnel by its ID', async () => {
125
+ const tunnel = {
126
+ id: 'tunnel_1',
127
+ name: 'staging',
128
+ ephemeral: false,
129
+ online: true,
130
+ selectors: [],
131
+ instances: [],
132
+ };
133
+ fetchMock.mockResolvedValueOnce(mockResponse(200, { ...tunnel, selectors: ['localhost:4000'] }));
134
+ await (0, backend_1.updateTunnelSelectors)(client, 'org_1', tunnel, ['localhost:4000']);
135
+ const [updateURL, updateInit] = fetchMock.mock.calls[0];
136
+ expect(updateURL).toBe(`${apiEndpoint}/v1/organizations/org_1/tunnels/tunnel_1`);
137
+ expect(updateInit.method).toBe('PATCH');
138
+ expect(JSON.parse(String(updateInit.body))).toEqual({ selectors: ['localhost:4000'] });
139
+ fetchMock.mockResolvedValueOnce(mockResponse(201, { token: 'lim_st_new', expiresAt: '2027-10-10T00:00:00Z' }));
140
+ await expect((0, backend_1.rotateTunnelToken)(client, 'org_1', tunnel, 3)).resolves.toEqual({
141
+ token: 'lim_st_new',
142
+ expiresAt: '2027-10-10T00:00:00Z',
143
+ });
144
+ const [rotateURL, rotateInit] = fetchMock.mock.calls[1];
145
+ expect(rotateURL).toBe(`${apiEndpoint}/v1/organizations/org_1/tunnels/tunnel_1/token`);
146
+ expect(rotateInit.method).toBe('POST');
147
+ expect(JSON.parse(String(rotateInit.body))).toEqual({ expirationMonths: 3 });
148
+ });
124
149
  it('deletes a quick tunnel by ID, and a tunnel the hub already removed is fine', async () => {
125
150
  fetchMock.mockResolvedValueOnce(new Response(null, { status: 204 }));
126
- await (0, backend_1.deleteQuickTunnel)(client, 'org_1', 'tunnel_2');
151
+ await (0, backend_1.deleteTunnel)(client, 'org_1', 'tunnel_2');
127
152
  const [url, init] = fetchMock.mock.calls[0];
128
153
  expect(url).toBe(`${apiEndpoint}/v1/organizations/org_1/tunnels/tunnel_2`);
129
154
  expect(init.method).toBe('DELETE');
130
155
  fetchMock.mockResolvedValueOnce(mockResponse(404, { message: 'tunnel not found' }));
131
- await expect((0, backend_1.deleteQuickTunnel)(client, 'org_1', 'tunnel_2')).resolves.toBeUndefined();
156
+ await expect((0, backend_1.deleteTunnel)(client, 'org_1', 'tunnel_2')).resolves.toBeUndefined();
132
157
  });
133
158
  });
134
159
  describe('whoAmI', () => {