lim 0.42.0 → 0.44.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 (75) hide show
  1. package/README.md +26 -0
  2. package/bin/lim-bazel-credentials.js +14 -0
  3. package/dist/commands/android/create.js +1 -1
  4. package/dist/commands/android/create.js.map +1 -1
  5. package/dist/commands/android/create.test.js +1 -1
  6. package/dist/commands/android/create.test.js.map +1 -1
  7. package/dist/commands/bazel/credentials/get.d.ts +13 -0
  8. package/dist/commands/bazel/credentials/get.d.ts.map +1 -0
  9. package/dist/commands/bazel/credentials/get.js +74 -0
  10. package/dist/commands/bazel/credentials/get.js.map +1 -0
  11. package/dist/commands/bazel/setup.d.ts +21 -0
  12. package/dist/commands/bazel/setup.d.ts.map +1 -0
  13. package/dist/commands/bazel/setup.js +101 -0
  14. package/dist/commands/bazel/setup.js.map +1 -0
  15. package/dist/commands/ios/create.js +1 -1
  16. package/dist/commands/ios/create.js.map +1 -1
  17. package/dist/commands/ios/create.test.js +1 -1
  18. package/dist/commands/ios/create.test.js.map +1 -1
  19. package/dist/commands/ios/display-routing.test.js +68 -8
  20. package/dist/commands/ios/display-routing.test.js.map +1 -1
  21. package/dist/commands/ios/record.d.ts +1 -0
  22. package/dist/commands/ios/record.d.ts.map +1 -1
  23. package/dist/commands/ios/record.js +16 -12
  24. package/dist/commands/ios/record.js.map +1 -1
  25. package/dist/commands/tunnel/create.d.ts +21 -0
  26. package/dist/commands/tunnel/create.d.ts.map +1 -0
  27. package/dist/commands/tunnel/create.js +63 -0
  28. package/dist/commands/tunnel/create.js.map +1 -0
  29. package/dist/commands/tunnel/delete.d.ts +19 -0
  30. package/dist/commands/tunnel/delete.d.ts.map +1 -0
  31. package/dist/commands/tunnel/delete.js +30 -0
  32. package/dist/commands/tunnel/delete.js.map +1 -0
  33. package/dist/commands/tunnel/list.d.ts +16 -0
  34. package/dist/commands/tunnel/list.d.ts.map +1 -0
  35. package/dist/commands/tunnel/list.js +34 -0
  36. package/dist/commands/tunnel/list.js.map +1 -0
  37. package/dist/commands/tunnel/manage.test.d.ts +2 -0
  38. package/dist/commands/tunnel/manage.test.d.ts.map +1 -0
  39. package/dist/commands/tunnel/manage.test.js +156 -0
  40. package/dist/commands/tunnel/manage.test.js.map +1 -0
  41. package/dist/commands/tunnel/rotate.d.ts +20 -0
  42. package/dist/commands/tunnel/rotate.d.ts.map +1 -0
  43. package/dist/commands/tunnel/rotate.js +57 -0
  44. package/dist/commands/tunnel/rotate.js.map +1 -0
  45. package/dist/commands/tunnel/run.d.ts.map +1 -1
  46. package/dist/commands/tunnel/run.js +13 -13
  47. package/dist/commands/tunnel/run.js.map +1 -1
  48. package/dist/commands/tunnel/run.test.js +25 -17
  49. package/dist/commands/tunnel/run.test.js.map +1 -1
  50. package/dist/commands/tunnel/update.d.ts +20 -0
  51. package/dist/commands/tunnel/update.d.ts.map +1 -0
  52. package/dist/commands/tunnel/update.js +47 -0
  53. package/dist/commands/tunnel/update.js.map +1 -0
  54. package/dist/lib/backend.d.ts +45 -13
  55. package/dist/lib/backend.d.ts.map +1 -1
  56. package/dist/lib/backend.js +67 -23
  57. package/dist/lib/backend.js.map +1 -1
  58. package/dist/lib/backend.test.js +29 -4
  59. package/dist/lib/backend.test.js.map +1 -1
  60. package/dist/lib/bazel-setup.d.ts +88 -0
  61. package/dist/lib/bazel-setup.d.ts.map +1 -0
  62. package/dist/lib/bazel-setup.js +440 -0
  63. package/dist/lib/bazel-setup.js.map +1 -0
  64. package/dist/lib/bazel-setup.test.d.ts +2 -0
  65. package/dist/lib/bazel-setup.test.d.ts.map +1 -0
  66. package/dist/lib/bazel-setup.test.js +150 -0
  67. package/dist/lib/bazel-setup.test.js.map +1 -0
  68. package/dist/lib/daemon.d.ts.map +1 -1
  69. package/dist/lib/daemon.js +3 -1
  70. package/dist/lib/daemon.js.map +1 -1
  71. package/dist/lib/tunnel-run.d.ts +8 -0
  72. package/dist/lib/tunnel-run.d.ts.map +1 -1
  73. package/dist/lib/tunnel-run.js +16 -2
  74. package/dist/lib/tunnel-run.js.map +1 -1
  75. package/package.json +11 -3
@@ -26,11 +26,11 @@ class TunnelRun extends base_command_1.BaseCommand {
26
26
  if (flags.token) {
27
27
  const claims = (0, backend_1.tunnelTokenClaims)(flags.token);
28
28
  if (!claims) {
29
- this.error('--token takes a tunnel token from the console (Network) or the API; this is not one.');
29
+ this.error('--token takes a tunnel token, as printed by `lim tunnel create`; this is not one.');
30
30
  }
31
31
  if (flags.name || selectors) {
32
- this.error("A tunnel token runs its own tunnel as created; drop --name and --selector, and edit the tunnel's " +
33
- 'selectors in the console.');
32
+ this.error("A tunnel token runs its own tunnel as created; drop --name and --selector, and change the tunnel's " +
33
+ 'selectors with `lim tunnel update`.');
34
34
  }
35
35
  await this.serve({ ...claims, token: flags.token, created: false }, flags, inspection);
36
36
  return;
@@ -41,7 +41,7 @@ class TunnelRun extends base_command_1.BaseCommand {
41
41
  }
42
42
  const name = flags.name;
43
43
  await this.withAuth(async () => {
44
- const organizationId = await (0, backend_1.quickTunnelOrganization)(this.client);
44
+ const organizationId = await (0, backend_1.tunnelOrganization)(this.client);
45
45
  const tunnel = await this.createQuick(organizationId, name, selectors);
46
46
  await this.serve({ organizationId, tunnelId: tunnel.id, token: tunnel.token, created: true }, flags, inspection);
47
47
  });
@@ -90,7 +90,7 @@ class TunnelRun extends base_command_1.BaseCommand {
90
90
  // never said bye, so its quick tunnel would hold the name until the
91
91
  // hub sweeps it.
92
92
  if (tunnel.created) {
93
- await (0, backend_1.deleteQuickTunnel)(this.client, tunnel.organizationId, tunnel.tunnelId).catch((error) => this.warn(`${error instanceof Error ? error.message : String(error)}; it goes away within ten minutes.`));
93
+ await (0, backend_1.deleteTunnel)(this.client, tunnel.organizationId, tunnel.tunnelId).catch((error) => this.warn(`${error instanceof Error ? error.message : String(error)}; it goes away within ten minutes.`));
94
94
  }
95
95
  }
96
96
  }
@@ -105,21 +105,21 @@ class TunnelRun extends base_command_1.BaseCommand {
105
105
  this.error(`Tunnel ${name} is another connector's quick tunnel; pick another name.`);
106
106
  }
107
107
  if (existing) {
108
- this.error(`Tunnel ${name} runs with its own token (--token). Rotate or create its token in the console ` +
109
- '(Network) if you no longer have it.');
108
+ this.error(`Tunnel ${name} runs with its own token (--token). If you no longer have it, issue a new one with ` +
109
+ `lim tunnel rotate ${name}.`);
110
110
  }
111
111
  if (!selectors) {
112
- this.error(`Tunnel ${name} does not exist. Create it in the console (Network > New tunnel), or pass --selector to ` +
112
+ this.error(`Tunnel ${name} does not exist. Create it with lim tunnel create ${name} --selector <destination>, or pass --selector to ` +
113
113
  'run a quick tunnel.');
114
114
  }
115
115
  const created = await (0, backend_1.createQuickTunnel)(this.client, organizationId, name, selectors);
116
116
  return { id: created.tunnel.id, token: created.token };
117
117
  }
118
118
  }
119
- TunnelRun.summary = 'Serve a persistent tunnel to every instance that names it';
120
- TunnelRun.description = 'Run the connector of a tunnel created in the console (Network > New tunnel) or the API, and open ' +
119
+ TunnelRun.summary = 'Serve a private tunnel to every instance that names it';
120
+ TunnelRun.description = 'Run the connector of a tunnel created with `lim tunnel create` or in the console (Network), and open ' +
121
121
  'a destination tunnel to every iOS and Android instance created with --tunnel <name>, until Ctrl+C. ' +
122
- 'Run it with the tunnel token the console shows (--token or LIM_TUNNEL_TOKEN); the token names its tunnel, and the ' +
122
+ 'Run it with the tunnel token (--token or LIM_TUNNEL_TOKEN); the token names its tunnel, and the ' +
123
123
  "tunnel's selectors decide which destinations instances reach through this machine. With an " +
124
124
  "admin's login, --name and --selector run a quick tunnel that goes away when this connector " +
125
125
  'exits. Instance tunnels stay up while the connection to Limrun reconnects. One connector holds a ' +
@@ -132,7 +132,7 @@ TunnelRun.examples = [
132
132
  TunnelRun.flags = {
133
133
  ...base_command_1.BaseCommand.baseFlags,
134
134
  token: core_1.Flags.string({
135
- description: 'Tunnel token from the console (Network) or the API.',
135
+ description: 'Tunnel token printed by `lim tunnel create` or `lim tunnel rotate`, or shown in the console.',
136
136
  env: 'LIM_TUNNEL_TOKEN',
137
137
  }),
138
138
  name: core_1.Flags.string({
@@ -141,7 +141,7 @@ TunnelRun.flags = {
141
141
  }),
142
142
  selector: core_1.Flags.string({
143
143
  description: 'Run a quick tunnel with this destination, as localhost:port, IPv4:port, [IPv6]:port, or a ' +
144
- 'private exact or *. wildcard domain. A tunnel created in the console keeps its own selectors. ' +
144
+ 'an exact or *. wildcard domain. A created tunnel keeps its own selectors. ' +
145
145
  'Repeat for more selectors.',
146
146
  multiple: true,
147
147
  }),
@@ -1 +1 @@
1
- {"version":3,"file":"run.js","sourceRoot":"","sources":["../../../src/commands/tunnel/run.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"run.js","sourceRoot":"","sources":["../../../src/commands/tunnel/run.ts"],"names":[],"mappings":"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"}
@@ -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,SAA0C;IACxD,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 private tunnel's selectors";
29
+ TunnelUpdate.description = "Replace a private 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,sCAAsC,CAAC;AACjD,wBAAW,GAChB,8FAA8F;IAC9F,+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"}
@@ -19,19 +19,33 @@ export declare const androidSigningKeySecretType = "androidSigningKey";
19
19
  * /v1/whoami nests inside `user`.
20
20
  */
21
21
  export declare function whoAmI(client: Limrun): Promise<string>;
22
- /** A persistent tunnel as the backend lists it. */
23
- export interface PersistentTunnel {
22
+ /** A private tunnel as the backend lists it. */
23
+ export interface PrivateTunnel {
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<PrivateTunnel[]>;
44
60
  /** Finds an organization's tunnel by the name instances use. */
45
- export declare function findTunnel(client: Limrun, organizationId: string, name: string): Promise<PersistentTunnel | undefined>;
61
+ export declare function findTunnel(client: Limrun, organizationId: string, name: string): Promise<PrivateTunnel | undefined>;
62
+ /**
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: PrivateTunnel;
73
+ token: TunnelToken;
74
+ }>;
46
75
  /**
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
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
- tunnel: PersistentTunnel;
80
+ tunnel: PrivateTunnel;
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: PrivateTunnel, selectors: string[]): Promise<PrivateTunnel>;
85
+ /** Issues a tunnel's token, which revokes the one it had. */
86
+ export declare function rotateTunnelToken(client: Limrun, organizationId: string, tunnel: PrivateTunnel, 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) {