alchemy 0.28.0 → 0.29.1

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 (56) hide show
  1. package/lib/alchemy.d.ts +15 -1
  2. package/lib/alchemy.d.ts.map +1 -1
  3. package/lib/alchemy.js +42 -8
  4. package/lib/alchemy.js.map +1 -1
  5. package/lib/apply.js +3 -9
  6. package/lib/apply.js.map +1 -1
  7. package/lib/cloudflare/do-state-store/internal.d.ts +1 -1
  8. package/lib/cloudflare/do-state-store/internal.d.ts.map +1 -1
  9. package/lib/cloudflare/do-state-store/internal.js +2 -2
  10. package/lib/cloudflare/do-state-store/internal.js.map +1 -1
  11. package/lib/cloudflare/do-state-store/store.d.ts.map +1 -1
  12. package/lib/cloudflare/do-state-store/store.js +19 -4
  13. package/lib/cloudflare/do-state-store/store.js.map +1 -1
  14. package/lib/cloudflare/secrets-store.d.ts.map +1 -1
  15. package/lib/cloudflare/secrets-store.js +21 -17
  16. package/lib/cloudflare/secrets-store.js.map +1 -1
  17. package/lib/cloudflare/worker-assets.d.ts.map +1 -1
  18. package/lib/cloudflare/worker-assets.js +9 -0
  19. package/lib/cloudflare/worker-assets.js.map +1 -1
  20. package/lib/destroy.js +3 -3
  21. package/lib/destroy.js.map +1 -1
  22. package/lib/github/comment.d.ts +156 -0
  23. package/lib/github/comment.d.ts.map +1 -0
  24. package/lib/github/comment.js +192 -0
  25. package/lib/github/comment.js.map +1 -0
  26. package/lib/github/index.d.ts +1 -0
  27. package/lib/github/index.d.ts.map +1 -1
  28. package/lib/github/index.js +1 -0
  29. package/lib/github/index.js.map +1 -1
  30. package/lib/index.d.ts +1 -1
  31. package/lib/index.d.ts.map +1 -1
  32. package/lib/index.js +1 -0
  33. package/lib/index.js.map +1 -1
  34. package/lib/scope.d.ts +3 -0
  35. package/lib/scope.d.ts.map +1 -1
  36. package/lib/scope.js +2 -1
  37. package/lib/scope.js.map +1 -1
  38. package/lib/util/cli.d.ts.map +1 -1
  39. package/lib/util/cli.js +5 -6
  40. package/lib/util/cli.js.map +1 -1
  41. package/lib/util/telemetry/client.js +1 -1
  42. package/lib/util/telemetry/client.js.map +1 -1
  43. package/package.json +2 -1
  44. package/src/alchemy.ts +65 -9
  45. package/src/apply.ts +3 -9
  46. package/src/cloudflare/do-state-store/internal.ts +2 -1
  47. package/src/cloudflare/do-state-store/store.ts +26 -4
  48. package/src/cloudflare/secrets-store.ts +22 -21
  49. package/src/cloudflare/worker-assets.ts +16 -0
  50. package/src/destroy.ts +3 -3
  51. package/src/github/comment.ts +278 -0
  52. package/src/github/index.ts +1 -0
  53. package/src/index.ts +1 -1
  54. package/src/scope.ts +14 -6
  55. package/src/util/cli.ts +25 -18
  56. package/src/util/telemetry/client.ts +1 -1
package/src/util/cli.ts CHANGED
@@ -1,4 +1,3 @@
1
- import { format } from "node:util";
2
1
  import packageJson from "../../package.json" with { type: "json" };
3
2
  import type { Phase } from "../alchemy.ts";
4
3
  import { dedent } from "./dedent.ts";
@@ -7,7 +6,7 @@ import { dedent } from "./dedent.ts";
7
6
  const colors = {
8
7
  reset: "\x1b[0m",
9
8
  cyanBright: "\x1b[96m",
10
- yellowBright: "\x1b[93m",
9
+ yellowBright: "\x1b[93m",
11
10
  magenta: "\x1b[35m",
12
11
  greenBright: "\x1b[92m",
13
12
  redBright: "\x1b[91m",
@@ -18,7 +17,9 @@ type ColorName = keyof typeof colors;
18
17
 
19
18
  // Check if colors should be disabled
20
19
  const shouldDisableColors = (): boolean => {
21
- return Boolean(process.env.CI || process.env.NO_COLOR || !process.stdout.isTTY);
20
+ return Boolean(
21
+ process.env.CI || process.env.NO_COLOR || !process.stdout.isTTY,
22
+ );
22
23
  };
23
24
 
24
25
  // Apply color if colors are enabled
@@ -52,7 +53,10 @@ type AlchemyInfo = {
52
53
  };
53
54
 
54
55
  let loggerApi: LoggerApi | null = null;
55
- export const createLoggerInstance = (alchemyInfo: AlchemyInfo, customLogger?: LoggerApi) => {
56
+ export const createLoggerInstance = (
57
+ alchemyInfo: AlchemyInfo,
58
+ customLogger?: LoggerApi,
59
+ ) => {
56
60
  if (loggerApi) return loggerApi;
57
61
 
58
62
  // Use custom logger if provided, otherwise use the basic fallback logger
@@ -81,30 +85,33 @@ export const createFallbackLogger = (alchemyInfo: AlchemyInfo): LoggerApi => {
81
85
 
82
86
  return {
83
87
  log: console.log,
84
- error: (...args: unknown[]) => console.error(colorize("ERROR", "redBright"), ...args),
85
- warn: (...args: unknown[]) => console.warn(colorize("WARN", "yellowBright"), ...args),
86
- task: (id: string, data: Task) => {
87
- const prefix = data.prefix ? `[${data.prefix}]` : '';
88
-
89
- // Pad the prefix to ensure consistent alignment (12 characters total)
88
+ error: (...args: unknown[]) =>
89
+ console.error(colorize("ERROR", "redBright"), ...args),
90
+ warn: (...args: unknown[]) =>
91
+ console.warn(colorize("WARN", "yellowBright"), ...args),
92
+ task: (_id: string, data: Task) => {
93
+ const prefix = data.prefix ? `[${data.prefix}]` : "";
94
+
95
+ // Pad the prefix to ensure consistent alignment (12 characters total including brackets)
90
96
  const paddedPrefix = prefix.padEnd(12);
91
- const prefixWithColor = data.prefixColor && prefix
92
- ? colorize(paddedPrefix, data.prefixColor as ColorName)
93
- : paddedPrefix;
94
-
95
- const resource = data.resource ? colorize(data.resource, "gray") : '';
97
+ const prefixWithColor =
98
+ data.prefixColor && prefix
99
+ ? colorize(paddedPrefix, data.prefixColor as ColorName)
100
+ : paddedPrefix;
101
+
102
+ const resource = data.resource ? colorize(data.resource, "gray") : "";
96
103
  const message = data.message;
97
-
104
+
98
105
  if (prefixWithColor && resource) {
99
106
  console.log(`${prefixWithColor}${resource} ${message}`);
100
107
  } else if (prefixWithColor) {
101
108
  console.log(`${prefixWithColor}${message}`);
102
109
  } else {
103
- console.log(message);
110
+ console.log(`${message}`);
104
111
  }
105
112
  },
106
113
  exit: () => {},
107
114
  };
108
115
  };
109
116
 
110
- export const formatFQN = (fqn: string) => fqn.split("/").slice(2).join(" > ");
117
+ export const formatFQN = (fqn: string) => fqn.split("/").slice(2).join(" > ");
@@ -51,7 +51,7 @@ export class TelemetryClient implements ITelemetryClient {
51
51
 
52
52
  record(event: Telemetry.EventInput, timestamp = Date.now()) {
53
53
  if (!this.context) {
54
- throw new Error("Context not initialized");
54
+ return;
55
55
  }
56
56
  const payload = {
57
57
  ...event,