alpic 0.0.0-dev.68ecf9b → 0.0.0-dev.68ee398

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 (74) hide show
  1. package/dist/__tests__/auth.e2e.test.js +11 -11
  2. package/dist/__tests__/auth.e2e.test.js.map +1 -1
  3. package/dist/__tests__/deploy-flags.e2e.test.d.ts +1 -0
  4. package/dist/__tests__/deploy-flags.e2e.test.js +101 -0
  5. package/dist/__tests__/deploy-flags.e2e.test.js.map +1 -0
  6. package/dist/__tests__/deploy.e2e.test.js +2 -51
  7. package/dist/__tests__/deploy.e2e.test.js.map +1 -1
  8. package/dist/__tests__/fixtures/demo-project/index.js +1 -1
  9. package/dist/__tests__/fixtures/demo-project/index.js.map +1 -1
  10. package/dist/__tests__/git-flags.e2e.test.d.ts +1 -0
  11. package/dist/__tests__/git-flags.e2e.test.js +124 -0
  12. package/dist/__tests__/git-flags.e2e.test.js.map +1 -0
  13. package/dist/__tests__/git.e2e.test.js +15 -12
  14. package/dist/__tests__/git.e2e.test.js.map +1 -1
  15. package/dist/__tests__/mock-server.js +1 -0
  16. package/dist/__tests__/mock-server.js.map +1 -1
  17. package/dist/__tests__/utils.d.ts +10 -4
  18. package/dist/__tests__/utils.js +53 -7
  19. package/dist/__tests__/utils.js.map +1 -1
  20. package/dist/commands/deploy.d.ts +5 -2
  21. package/dist/commands/deploy.js +36 -16
  22. package/dist/commands/deploy.js.map +1 -1
  23. package/dist/commands/git/connect.d.ts +3 -2
  24. package/dist/commands/git/connect.js +24 -22
  25. package/dist/commands/git/connect.js.map +1 -1
  26. package/dist/commands/git/disconnect.d.ts +2 -2
  27. package/dist/commands/git/disconnect.js +14 -20
  28. package/dist/commands/git/disconnect.js.map +1 -1
  29. package/dist/commands/git.js +2 -2
  30. package/dist/commands/git.js.map +1 -1
  31. package/dist/commands/login.js +5 -11
  32. package/dist/commands/login.js.map +1 -1
  33. package/dist/commands/whoami.js +2 -14
  34. package/dist/commands/whoami.js.map +1 -1
  35. package/dist/env.js +1 -1
  36. package/dist/lib/alpic-command.d.ts +2 -0
  37. package/dist/lib/alpic-command.js +13 -3
  38. package/dist/lib/alpic-command.js.map +1 -1
  39. package/dist/lib/archive.d.ts +3 -3
  40. package/dist/lib/archive.js +11 -15
  41. package/dist/lib/archive.js.map +1 -1
  42. package/dist/lib/auth/oauth/client.d.ts +0 -1
  43. package/dist/lib/auth/oauth/client.js +2 -4
  44. package/dist/lib/auth/oauth/client.js.map +1 -1
  45. package/dist/lib/auth/oauth/server/assets/alpic-mountain.png +0 -0
  46. package/dist/lib/auth/oauth/server/assets/authorize.html +195 -0
  47. package/dist/lib/auth/oauth/server/assets/callback.html +88 -0
  48. package/dist/lib/auth/oauth/server/index.d.ts +8 -0
  49. package/dist/lib/auth/oauth/server/index.js +102 -0
  50. package/dist/lib/auth/oauth/server/index.js.map +1 -0
  51. package/dist/lib/auth/whoami.d.ts +1 -28
  52. package/dist/lib/auth/whoami.js +24 -18
  53. package/dist/lib/auth/whoami.js.map +1 -1
  54. package/dist/lib/base-workflow.d.ts +10 -0
  55. package/dist/lib/base-workflow.js +22 -0
  56. package/dist/lib/base-workflow.js.map +1 -0
  57. package/dist/lib/config.d.ts +2 -2
  58. package/dist/lib/config.js +7 -7
  59. package/dist/lib/config.js.map +1 -1
  60. package/dist/lib/deployment.js +0 -1
  61. package/dist/lib/deployment.js.map +1 -1
  62. package/dist/lib/git.d.ts +11 -3
  63. package/dist/lib/git.js +49 -21
  64. package/dist/lib/git.js.map +1 -1
  65. package/dist/lib/global-store.d.ts +1 -1
  66. package/dist/lib/global-store.js +4 -3
  67. package/dist/lib/global-store.js.map +1 -1
  68. package/dist/lib/project.d.ts +65 -61
  69. package/dist/lib/project.js +266 -254
  70. package/dist/lib/project.js.map +1 -1
  71. package/package.json +16 -15
  72. package/dist/lib/auth/oauth/server.d.ts +0 -6
  73. package/dist/lib/auth/oauth/server.js +0 -88
  74. package/dist/lib/auth/oauth/server.js.map +0 -1
@@ -1,10 +1,9 @@
1
1
  import * as p from "@clack/prompts";
2
- import chalk from "chalk";
3
2
  import open from "open";
4
3
  import { AlpicCommand } from "../lib/alpic-command.js";
5
4
  import { oAuthClient } from "../lib/auth/oauth/client.js";
6
- import { listenToOAuthCallback } from "../lib/auth/oauth/server.js";
7
- import { getWhoamiInfo } from "../lib/auth/whoami.js";
5
+ import { getLoginPageUrl, listenToOAuthCallback } from "../lib/auth/oauth/server/index.js";
6
+ import { getWhoamiInfoMessage } from "../lib/auth/whoami.js";
8
7
  import { globalStore } from "../lib/global-store.js";
9
8
  export class Login extends AlpicCommand {
10
9
  static description = "Log in to Alpic (opens browser, stores tokens)";
@@ -19,20 +18,15 @@ export class Login extends AlpicCommand {
19
18
  }
20
19
  const { authorizeUrl, state, nonce, codeVerifier } = await oAuthClient.prepareOAuthConfig();
21
20
  p.log.message("Opening browser to log in…");
22
- await open(authorizeUrl.toString());
21
+ await open(getLoginPageUrl());
23
22
  const storedToken = await listenToOAuthCallback({
24
23
  state,
25
24
  nonce,
26
25
  codeVerifier,
26
+ authorizeUrl: authorizeUrl.toString(),
27
27
  });
28
28
  globalStore.saveCredentials(storedToken);
29
- const info = await getWhoamiInfo();
30
- if (!info) {
31
- p.cancel("Failed to get user information.");
32
- return;
33
- }
34
- const msg = `Authenticated as ${chalk.green(info.name)} (${chalk.cyan(info.email)})`;
35
- p.outro(msg);
29
+ p.outro(await getWhoamiInfoMessage());
36
30
  }
37
31
  }
38
32
  //# sourceMappingURL=login.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,gBAAgB,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAErD,MAAM,OAAO,KAAM,SAAQ,YAAY;IACrC,MAAM,CAAU,WAAW,GAAG,gDAAgD,CAAC;IAE/E,MAAM,CAAU,QAAQ,GAAG,CAAC,yBAAyB,CAAC,CAAC;IAEvD,KAAK,CAAC,GAAG;QACP,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAExB,CAAC,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;QAE3B,MAAM,KAAK,GAAG,MAAM,WAAW,CAAC,mBAAmB,EAAE,CAAC;QACtD,IAAI,KAAK,EAAE,CAAC;YACV,CAAC,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;YAC9B,OAAO;QACT,CAAC;QAED,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,GAAG,MAAM,WAAW,CAAC,kBAAkB,EAAE,CAAC;QAE5F,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,4BAA4B,CAAC,CAAC;QAC5C,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC,CAAC;QAEpC,MAAM,WAAW,GAAG,MAAM,qBAAqB,CAAC;YAC9C,KAAK;YACL,KAAK;YACL,YAAY;SACb,CAAC,CAAC;QAEH,WAAW,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;QAEzC,MAAM,IAAI,GAAG,MAAM,aAAa,EAAE,CAAC;QAEnC,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,CAAC,CAAC,MAAM,CAAC,iCAAiC,CAAC,CAAC;YAC5C,OAAO;QACT,CAAC;QAED,MAAM,GAAG,GAAG,oBAAoB,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;QACrF,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACf,CAAC"}
1
+ {"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,gBAAgB,CAAC;AACpC,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAC3F,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAErD,MAAM,OAAO,KAAM,SAAQ,YAAY;IACrC,MAAM,CAAU,WAAW,GAAG,gDAAgD,CAAC;IAE/E,MAAM,CAAU,QAAQ,GAAG,CAAC,yBAAyB,CAAC,CAAC;IAEvD,KAAK,CAAC,GAAG;QACP,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAExB,CAAC,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;QAE3B,MAAM,KAAK,GAAG,MAAM,WAAW,CAAC,mBAAmB,EAAE,CAAC;QACtD,IAAI,KAAK,EAAE,CAAC;YACV,CAAC,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;YAC9B,OAAO;QACT,CAAC;QAED,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,GAAG,MAAM,WAAW,CAAC,kBAAkB,EAAE,CAAC;QAE5F,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,4BAA4B,CAAC,CAAC;QAC5C,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC;QAE9B,MAAM,WAAW,GAAG,MAAM,qBAAqB,CAAC;YAC9C,KAAK;YACL,KAAK;YACL,YAAY;YACZ,YAAY,EAAE,YAAY,CAAC,QAAQ,EAAE;SACtC,CAAC,CAAC;QAEH,WAAW,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;QAEzC,CAAC,CAAC,KAAK,CAAC,MAAM,oBAAoB,EAAE,CAAC,CAAC;IACxC,CAAC"}
@@ -1,25 +1,13 @@
1
1
  import * as p from "@clack/prompts";
2
- import chalk from "chalk";
3
2
  import { AlpicCommand } from "../lib/alpic-command.js";
4
- import { getWhoamiInfo } from "../lib/auth/whoami.js";
3
+ import { getWhoamiInfoMessage } from "../lib/auth/whoami.js";
5
4
  export class Whoami extends AlpicCommand {
6
5
  static description = "Show the current Alpic identity (API key or logged-in user)";
7
6
  static examples = ["<%= config.bin %> whoami"];
8
7
  async run() {
9
8
  await this.parse(Whoami);
10
9
  p.intro("Reading authentication status…");
11
- const info = await getWhoamiInfo();
12
- if (!info) {
13
- p.cancel("Not logged in. Run `alpic login` or set ALPIC_API_KEY.");
14
- return;
15
- }
16
- if (info.method === "api_key") {
17
- const msg = `Authenticated via API key — Team: ${chalk.green(info.team?.name ?? "unknown")}`;
18
- p.outro(msg);
19
- return;
20
- }
21
- const msg = `Authenticated as ${chalk.green(info.name)} (${chalk.cyan(info.email)})`;
22
- p.outro(msg);
10
+ p.outro(await getWhoamiInfoMessage());
23
11
  }
24
12
  }
25
13
  //# sourceMappingURL=whoami.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"whoami.js","sourceRoot":"","sources":["../../src/commands/whoami.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,gBAAgB,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAEtD,MAAM,OAAO,MAAO,SAAQ,YAAY;IACtC,MAAM,CAAU,WAAW,GAAG,6DAA6D,CAAC;IAE5F,MAAM,CAAU,QAAQ,GAAG,CAAC,0BAA0B,CAAC,CAAC;IAExD,KAAK,CAAC,GAAG;QACP,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAEzB,CAAC,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC;QAE1C,MAAM,IAAI,GAAG,MAAM,aAAa,EAAE,CAAC;QAEnC,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,CAAC,CAAC,MAAM,CAAC,wDAAwD,CAAC,CAAC;YACnE,OAAO;QACT,CAAC;QAED,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAC9B,MAAM,GAAG,GAAG,qCAAqC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,IAAI,SAAS,CAAC,EAAE,CAAC;YAC7F,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACb,OAAO;QACT,CAAC;QAED,MAAM,GAAG,GAAG,oBAAoB,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;QACrF,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACf,CAAC"}
1
+ {"version":3,"file":"whoami.js","sourceRoot":"","sources":["../../src/commands/whoami.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,gBAAgB,CAAC;AAEpC,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAE7D,MAAM,OAAO,MAAO,SAAQ,YAAY;IACtC,MAAM,CAAU,WAAW,GAAG,6DAA6D,CAAC;IAE5F,MAAM,CAAU,QAAQ,GAAG,CAAC,0BAA0B,CAAC,CAAC;IAExD,KAAK,CAAC,GAAG;QACP,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAEzB,CAAC,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC;QAE1C,CAAC,CAAC,KAAK,CAAC,MAAM,oBAAoB,EAAE,CAAC,CAAC;IACxC,CAAC"}
package/dist/env.js CHANGED
@@ -3,7 +3,7 @@ import { z } from "zod";
3
3
  export const env = createEnv({
4
4
  server: {
5
5
  ALPIC_API_BASE_URL: z.string().default("https://api.alpic.ai"),
6
- ALPIC_COGNITO_CLIENT_ID: z.string().default("1023dpimab488tfv4sh4bdk2r"),
6
+ ALPIC_COGNITO_CLIENT_ID: z.string().default("h9nqsttp8ddb40ddi1aoni91h"),
7
7
  },
8
8
  runtimeEnv: process.env,
9
9
  });
@@ -1,4 +1,6 @@
1
1
  import { Command } from "@oclif/core";
2
2
  export declare abstract class AlpicCommand extends Command {
3
3
  catch(error: unknown): Promise<void>;
4
+ ensureAuthenticated(): Promise<void>;
5
+ protected exitWithErrorMessage(message: string): void;
4
6
  }
@@ -1,17 +1,27 @@
1
1
  import * as p from "@clack/prompts";
2
2
  import { Command } from "@oclif/core";
3
3
  import { ORPCError } from "@orpc/client";
4
+ import { isAuthenticated } from "./auth/auth.js";
4
5
  export class AlpicCommand extends Command {
5
6
  async catch(error) {
6
7
  if (error instanceof ORPCError) {
7
- p.cancel(`An error occurred while connecting to Alpic: ${error.message}`);
8
+ this.exitWithErrorMessage(`An error occurred while connecting to Alpic: ${error.message}`);
8
9
  return;
9
10
  }
10
11
  if (error instanceof Error) {
11
- p.cancel(error.message);
12
+ this.exitWithErrorMessage(error.message);
12
13
  return;
13
14
  }
14
- p.cancel(String(error));
15
+ this.exitWithErrorMessage(String(error));
16
+ }
17
+ async ensureAuthenticated() {
18
+ if (!(await isAuthenticated())) {
19
+ this.exitWithErrorMessage("Not authenticated. Run `alpic login` or set ALPIC_API_KEY. Get an API key from Team settings in the Alpic dashboard.");
20
+ }
21
+ }
22
+ exitWithErrorMessage(message) {
23
+ p.cancel(message);
24
+ this.exit(1);
15
25
  }
16
26
  }
17
27
  //# sourceMappingURL=alpic-command.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"alpic-command.js","sourceRoot":"","sources":["../../src/lib/alpic-command.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,gBAAgB,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,MAAM,OAAgB,YAAa,SAAQ,OAAO;IACvC,KAAK,CAAC,KAAK,CAAC,KAAc;QACjC,IAAI,KAAK,YAAY,SAAS,EAAE,CAAC;YAC/B,CAAC,CAAC,MAAM,CAAC,gDAAgD,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YAC1E,OAAO;QACT,CAAC;QACD,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;YAC3B,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACxB,OAAO;QACT,CAAC;QACD,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IAC1B,CAAC;CACF"}
1
+ {"version":3,"file":"alpic-command.js","sourceRoot":"","sources":["../../src/lib/alpic-command.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,gBAAgB,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEjD,MAAM,OAAgB,YAAa,SAAQ,OAAO;IACvC,KAAK,CAAC,KAAK,CAAC,KAAc;QACjC,IAAI,KAAK,YAAY,SAAS,EAAE,CAAC;YAC/B,IAAI,CAAC,oBAAoB,CAAC,gDAAgD,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YAC3F,OAAO;QACT,CAAC;QACD,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;YAC3B,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACzC,OAAO;QACT,CAAC;QACD,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IAC3C,CAAC;IAED,KAAK,CAAC,mBAAmB;QACvB,IAAI,CAAC,CAAC,MAAM,eAAe,EAAE,CAAC,EAAE,CAAC;YAC/B,IAAI,CAAC,oBAAoB,CACvB,sHAAsH,CACvH,CAAC;QACJ,CAAC;IACH,CAAC;IAES,oBAAoB,CAAC,OAAe;QAC5C,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAClB,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACf,CAAC;CACF"}
@@ -1,7 +1,7 @@
1
1
  export declare function ensureGitAvailable(): void;
2
- export declare function getGitFiles(deployDir: string): string[];
3
- export declare function getFilesToPack(deployDir: string): string[];
4
- export declare function createTarArchive(files: string[], deployDir: string): Promise<{
2
+ export declare function getGitFiles(): string[];
3
+ export declare function getFilesToPack(): string[];
4
+ export declare function createTarArchive(files: string[]): Promise<{
5
5
  tmpDir: string;
6
6
  archivePath: string;
7
7
  }>;
@@ -1,11 +1,11 @@
1
1
  import { execSync } from "node:child_process";
2
2
  import { existsSync, mkdtempSync, rmSync } from "node:fs";
3
3
  import { tmpdir } from "node:os";
4
- import { join, resolve } from "node:path";
4
+ import { join } from "node:path";
5
5
  import { create as tarCreate } from "tar";
6
6
  const GIT_FILES_MAX_BUFFER = 10 * 1024 * 1024;
7
- function isGitRepository(dir) {
8
- return existsSync(join(resolve(dir), ".git"));
7
+ function isGitRepository() {
8
+ return existsSync(join(process.cwd(), ".git"));
9
9
  }
10
10
  export function ensureGitAvailable() {
11
11
  try {
@@ -15,10 +15,8 @@ export function ensureGitAvailable() {
15
15
  throw new Error("Git is required to deploy. Please install git and ensure it is available in your PATH.");
16
16
  }
17
17
  }
18
- export function getGitFiles(deployDir) {
19
- const dir = resolve(deployDir);
18
+ export function getGitFiles() {
20
19
  const output = execSync("git ls-files -z --cached --others --exclude-standard -- .", {
21
- cwd: dir,
22
20
  encoding: "utf8",
23
21
  maxBuffer: GIT_FILES_MAX_BUFFER,
24
22
  });
@@ -28,27 +26,25 @@ export function getGitFiles(deployDir) {
28
26
  }
29
27
  return files;
30
28
  }
31
- export function getFilesToPack(deployDir) {
32
- const dir = resolve(deployDir);
33
- if (isGitRepository(dir)) {
34
- return getGitFiles(deployDir);
29
+ export function getFilesToPack() {
30
+ if (isGitRepository()) {
31
+ return getGitFiles();
35
32
  }
36
33
  ensureGitAvailable();
37
- execSync("git init", { cwd: dir });
34
+ execSync("git init", { stdio: "ignore" });
38
35
  try {
39
- return getGitFiles(deployDir);
36
+ return getGitFiles();
40
37
  }
41
38
  finally {
42
- rmSync(join(dir, ".git"), { recursive: true });
39
+ rmSync(join(process.cwd(), ".git"), { recursive: true, force: true });
43
40
  }
44
41
  }
45
- export async function createTarArchive(files, deployDir) {
42
+ export async function createTarArchive(files) {
46
43
  const tmpDir = mkdtempSync(join(tmpdir(), "alpic-deploy-"));
47
44
  const archivePath = join(tmpDir, "source.tar.gz");
48
45
  await tarCreate({
49
46
  gzip: true,
50
47
  file: archivePath,
51
- cwd: deployDir,
52
48
  }, files);
53
49
  return { tmpDir, archivePath };
54
50
  }
@@ -1 +1 @@
1
- {"version":3,"file":"archive.js","sourceRoot":"","sources":["../../src/lib/archive.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAC1D,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,MAAM,IAAI,SAAS,EAAE,MAAM,KAAK,CAAC;AAE1C,MAAM,oBAAoB,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC;AAE9C,SAAS,eAAe,CAAC,GAAW;IAClC,OAAO,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;AAChD,CAAC;AAED,MAAM,UAAU,kBAAkB;IAChC,IAAI,CAAC;QACH,QAAQ,CAAC,eAAe,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;IACjD,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CAAC,wFAAwF,CAAC,CAAC;IAC5G,CAAC;AACH,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,SAAiB;IAC3C,MAAM,GAAG,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;IAC/B,MAAM,MAAM,GAAG,QAAQ,CAAC,2DAA2D,EAAE;QACnF,GAAG,EAAE,GAAG;QACR,QAAQ,EAAE,MAAM;QAChB,SAAS,EAAE,oBAAoB;KAChC,CAAC,CAAC;IACH,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACjD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CAAC,+FAA+F,CAAC,CAAC;IACnH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,SAAiB;IAC9C,MAAM,GAAG,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;IAC/B,IAAI,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC;QACzB,OAAO,WAAW,CAAC,SAAS,CAAC,CAAC;IAChC,CAAC;IACD,kBAAkB,EAAE,CAAC;IACrB,QAAQ,CAAC,UAAU,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;IACnC,IAAI,CAAC;QACH,OAAO,WAAW,CAAC,SAAS,CAAC,CAAC;IAChC,CAAC;YAAS,CAAC;QACT,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACjD,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,KAAe,EAAE,SAAiB;IACvE,MAAM,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,eAAe,CAAC,CAAC,CAAC;IAC5D,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IAClD,MAAM,SAAS,CACb;QACE,IAAI,EAAE,IAAI;QACV,IAAI,EAAE,WAAW;QACjB,GAAG,EAAE,SAAS;KACf,EACD,KAAK,CACN,CAAC;IACF,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;AACjC,CAAC"}
1
+ {"version":3,"file":"archive.js","sourceRoot":"","sources":["../../src/lib/archive.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAC1D,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,MAAM,IAAI,SAAS,EAAE,MAAM,KAAK,CAAC;AAE1C,MAAM,oBAAoB,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC;AAE9C,SAAS,eAAe;IACtB,OAAO,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC;AACjD,CAAC;AAED,MAAM,UAAU,kBAAkB;IAChC,IAAI,CAAC;QACH,QAAQ,CAAC,eAAe,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;IACjD,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CAAC,wFAAwF,CAAC,CAAC;IAC5G,CAAC;AACH,CAAC;AAED,MAAM,UAAU,WAAW;IACzB,MAAM,MAAM,GAAG,QAAQ,CAAC,2DAA2D,EAAE;QACnF,QAAQ,EAAE,MAAM;QAChB,SAAS,EAAE,oBAAoB;KAChC,CAAC,CAAC;IACH,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACjD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CAAC,+FAA+F,CAAC,CAAC;IACnH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,cAAc;IAC5B,IAAI,eAAe,EAAE,EAAE,CAAC;QACtB,OAAO,WAAW,EAAE,CAAC;IACvB,CAAC;IACD,kBAAkB,EAAE,CAAC;IACrB,QAAQ,CAAC,UAAU,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC1C,IAAI,CAAC;QACH,OAAO,WAAW,EAAE,CAAC;IACvB,CAAC;YAAS,CAAC;QACT,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACxE,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,KAAe;IACpD,MAAM,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,eAAe,CAAC,CAAC,CAAC;IAC5D,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IAClD,MAAM,SAAS,CACb;QACE,IAAI,EAAE,IAAI;QACV,IAAI,EAAE,WAAW;KAClB,EACD,KAAK,CACN,CAAC;IACF,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;AACjC,CAAC"}
@@ -20,7 +20,6 @@ export declare class OAuthClient {
20
20
  nonce: string;
21
21
  }): Promise<openid.TokenEndpointResponse & openid.TokenEndpointResponseHelpers>;
22
22
  getExpiresAt(expires_in: number): number;
23
- private getCallbackUrl;
24
23
  private loadConfig;
25
24
  private fetchOAuthProtectedResourceConfig;
26
25
  private getConfig;
@@ -51,8 +51,9 @@ export class OAuthClient {
51
51
  const codeChallenge = await openid.calculatePKCECodeChallenge(codeVerifier);
52
52
  const state = openid.randomState();
53
53
  const nonce = openid.randomNonce();
54
+ const callbackUrl = new URL(`http://${LOOPBACK_HOST}:${LOOPBACK_PORT}/callback`);
54
55
  const authorizeUrl = openid.buildAuthorizationUrl(this.config, {
55
- redirect_uri: this.getCallbackUrl().toString(),
56
+ redirect_uri: callbackUrl.toString(),
56
57
  scope: SCOPES.join(" "),
57
58
  code_challenge: codeChallenge,
58
59
  code_challenge_method: "S256",
@@ -71,9 +72,6 @@ export class OAuthClient {
71
72
  getExpiresAt(expires_in) {
72
73
  return expires_in !== undefined ? Math.floor(Date.now() / 1000) + expires_in : Date.now() / 1000 + 3600;
73
74
  }
74
- getCallbackUrl() {
75
- return new URL(`http://${LOOPBACK_HOST}:${LOOPBACK_PORT}/callback`);
76
- }
77
75
  async loadConfig() {
78
76
  const protectedResourceConfig = await this.fetchOAuthProtectedResourceConfig();
79
77
  const issuer = protectedResourceConfig.authorization_servers[0];
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../../src/lib/auth/oauth/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../../src/lib/auth/oauth/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,195 @@
1
+ <!doctype html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8" />
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
+ <title>Sign in to Alpic</title>
7
+ <link
8
+ href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600&family=Mozilla+Text:wght@200..700&display=swap"
9
+ rel="stylesheet"
10
+ />
11
+ <style>
12
+ *,
13
+ *::before,
14
+ *::after {
15
+ margin: 0;
16
+ padding: 0;
17
+ box-sizing: border-box;
18
+ }
19
+
20
+ :root {
21
+ --midnight: #051413;
22
+ }
23
+
24
+ body {
25
+ font-family: "Inter", system-ui, sans-serif;
26
+ background-color: var(--midnight);
27
+ min-height: 100vh;
28
+ display: flex;
29
+ background-image: url("/assets/alpic-mountain.png");
30
+ background-repeat: no-repeat;
31
+ background-position: right bottom;
32
+ background-size: auto;
33
+ padding: 64px;
34
+ }
35
+
36
+ .card {
37
+ background: #fff;
38
+ border-radius: 2px;
39
+ padding: 48px;
40
+ width: 50%;
41
+ min-height: calc(100vh - 128px);
42
+ display: flex;
43
+ flex-direction: column;
44
+ align-items: center;
45
+ justify-content: center;
46
+ }
47
+
48
+ h1 {
49
+ font-family: "Mozilla Text", system-ui, sans-serif;
50
+ font-weight: 400;
51
+ font-size: 48px;
52
+ color: var(--midnight);
53
+ margin-bottom: 8px;
54
+ }
55
+
56
+ .subtitle {
57
+ font-size: 20px;
58
+ color: var(--midnight);
59
+ margin-bottom: 32px;
60
+ }
61
+
62
+ .buttons {
63
+ display: flex;
64
+ flex-direction: column;
65
+ gap: 12px;
66
+ }
67
+
68
+ .btn {
69
+ display: flex;
70
+ align-items: center;
71
+ justify-content: center;
72
+ gap: 8px;
73
+ height: 48px;
74
+ width: 256px;
75
+ padding: 0 16px;
76
+ border-radius: 2px;
77
+ border: 1px solid var(--midnight);
78
+ font-family: "Inter", system-ui, sans-serif;
79
+ font-size: 16px;
80
+ font-weight: 500;
81
+ cursor: pointer;
82
+ transition: background 0.15s;
83
+ }
84
+
85
+ .btn:focus-visible {
86
+ outline: none;
87
+ box-shadow: 0 0 0 2px var(--midnight);
88
+ }
89
+
90
+ .btn svg {
91
+ width: 20px;
92
+ height: 20px;
93
+ flex-shrink: 0;
94
+ }
95
+
96
+ .btn-github {
97
+ background: var(--midnight);
98
+ color: #fff;
99
+ }
100
+ .btn-github svg {
101
+ fill: #fff;
102
+ }
103
+ .btn-github:hover {
104
+ background: rgba(5, 20, 19, 0.9);
105
+ }
106
+
107
+ .btn-google {
108
+ background: #fff;
109
+ color: var(--midnight);
110
+ }
111
+ .btn-google svg {
112
+ fill: var(--midnight);
113
+ }
114
+ .btn-google:hover {
115
+ background: rgba(5, 20, 19, 0.1);
116
+ }
117
+
118
+ .btn-loading {
119
+ opacity: 0.7;
120
+ pointer-events: none;
121
+ cursor: default;
122
+ transition: opacity 0.2s;
123
+ }
124
+ .spinner {
125
+ width: 20px;
126
+ height: 20px;
127
+ animation: spin 0.8s linear infinite;
128
+ }
129
+ @keyframes spin {
130
+ to {
131
+ transform: rotate(360deg);
132
+ }
133
+ }
134
+
135
+ @media (max-width: 768px) {
136
+ body {
137
+ padding: 16px;
138
+ }
139
+ .card {
140
+ width: 100%;
141
+ height: auto;
142
+ padding: 24px;
143
+ }
144
+ h1 {
145
+ font-size: 36px;
146
+ }
147
+ .subtitle {
148
+ font-size: 18px;
149
+ }
150
+ }
151
+ </style>
152
+ </head>
153
+ <body>
154
+ <div class="card">
155
+ <h1>Welcome to Alpic</h1>
156
+ <p class="subtitle">Sign in to use Alpic CLI</p>
157
+ <div class="buttons">
158
+ <button class="btn btn-github" onclick="login('Github', this)" type="button">
159
+ <svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
160
+ <title>GitHub</title>
161
+ <path
162
+ d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"
163
+ />
164
+ </svg>
165
+ Sign in with GitHub
166
+ </button>
167
+ <button class="btn btn-google" onclick="login('google', this)" type="button">
168
+ <svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
169
+ <title>Google</title>
170
+ <path
171
+ d="M12.48 10.92v3.28h7.84c-.24 1.84-.853 3.187-1.8 4.133-1.147 1.147-2.933 2.4-6.04 2.4-4.827 0-8.6-3.893-8.6-8.72s3.773-8.72 8.6-8.72c2.6 0 4.507 1.027 5.907 2.347l2.307-2.307C18.747 1.44 16.133 0 12.48 0 5.867 0 .307 5.387.307 12s5.56 12 12.173 12c3.573 0 6.267-1.173 8.373-3.36 2.16-2.16 2.84-5.213 2.84-7.667 0-.76-.053-1.467-.173-2.053H12.48z"
172
+ />
173
+ </svg>
174
+ Sign in with Google
175
+ </button>
176
+ </div>
177
+ </div>
178
+ <script>
179
+ var loaderSvg =
180
+ '<svg class="spinner" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 2v4"/><path d="m16.2 7.8 2.9-2.9"/><path d="M18 12h4"/><path d="m16.2 16.2 2.9 2.9"/><path d="M12 18v4"/><path d="m4.9 19.1 2.9-2.9"/><path d="M2 12h4"/><path d="m4.9 4.9 2.9 2.9"/></svg>';
181
+ // biome-ignore lint/correctness/noUnusedVariables: The function is used within the buttons onclick handlers
182
+ function login(provider, btn) {
183
+ const icon = btn.querySelector("svg");
184
+ const wrap = document.createElement("div");
185
+ wrap.innerHTML = loaderSvg;
186
+ icon.replaceWith(wrap.firstChild);
187
+ btn.classList.add("btn-loading");
188
+ btn.disabled = true;
189
+ const url = new URL("%AUTH_BASE_URL%");
190
+ url.searchParams.set("identity_provider", provider);
191
+ window.location.href = url.toString();
192
+ }
193
+ </script>
194
+ </body>
195
+ </html>
@@ -0,0 +1,88 @@
1
+ <!doctype html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8" />
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
+ <title>Sign in to Alpic</title>
7
+ <link
8
+ href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600&family=Mozilla+Text:wght@200..700&display=swap"
9
+ rel="stylesheet"
10
+ />
11
+ <style>
12
+ *,
13
+ *::before,
14
+ *::after {
15
+ margin: 0;
16
+ padding: 0;
17
+ box-sizing: border-box;
18
+ }
19
+
20
+ :root {
21
+ --midnight: #051413;
22
+ }
23
+
24
+ body {
25
+ font-family: "Inter", system-ui, sans-serif;
26
+ background-color: var(--midnight);
27
+ min-height: 100vh;
28
+ display: flex;
29
+ align-items: center;
30
+ justify-content: center;
31
+ padding: 64px;
32
+ }
33
+
34
+ .card {
35
+ background: #fff;
36
+ border-radius: 2px;
37
+ padding: 48px;
38
+ display: flex;
39
+ flex-direction: column;
40
+ align-items: center;
41
+ justify-content: center;
42
+ }
43
+
44
+ .message {
45
+ text-align: center;
46
+ }
47
+
48
+ .message-title {
49
+ font-size: 28px;
50
+ color: var(--midnight);
51
+ display: block;
52
+ }
53
+
54
+ .message-sub {
55
+ display: block;
56
+ margin-top: 0.5em;
57
+ color: #6b7280;
58
+ }
59
+
60
+ .message.error .message-title {
61
+ color: #b91c1c;
62
+ }
63
+
64
+ .message.error .message-sub {
65
+ display: none;
66
+ }
67
+
68
+ @media (max-width: 768px) {
69
+ body {
70
+ padding: 16px;
71
+ }
72
+ .card {
73
+ width: 100%;
74
+ height: auto;
75
+ padding: 24px;
76
+ }
77
+ }
78
+ </style>
79
+ </head>
80
+ <body>
81
+ <div class="card">
82
+ <p class="message __CALLBACK_STATUS__">
83
+ <span class="message-title">__CALLBACK_TITLE__</span>
84
+ <span class="message-sub">__CALLBACK_SUB__</span>
85
+ </p>
86
+ </div>
87
+ </body>
88
+ </html>
@@ -0,0 +1,8 @@
1
+ import type { Credentials } from "../../../global-store.js";
2
+ export declare const getLoginPageUrl: () => string;
3
+ export declare const listenToOAuthCallback: ({ state, nonce, codeVerifier, authorizeUrl, }: {
4
+ state: string;
5
+ nonce: string;
6
+ codeVerifier: string;
7
+ authorizeUrl?: string;
8
+ }) => Promise<Credentials>;