alchemy 0.69.1 → 0.70.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 (238) hide show
  1. package/bin/alchemy.js +3883 -3906
  2. package/bin/alchemy.ts +2 -0
  3. package/bin/commands/telemetry.ts +33 -0
  4. package/bin/services/execute-alchemy.ts +7 -0
  5. package/bin/trpc.ts +4 -9
  6. package/lib/alchemy.d.ts +7 -3
  7. package/lib/alchemy.d.ts.map +1 -1
  8. package/lib/alchemy.js +3 -15
  9. package/lib/alchemy.js.map +1 -1
  10. package/lib/apply.js +24 -9
  11. package/lib/apply.js.map +1 -1
  12. package/lib/aws/utils.d.ts +2 -1
  13. package/lib/aws/utils.d.ts.map +1 -1
  14. package/lib/aws/utils.js.map +1 -1
  15. package/lib/clickhouse/api/client.gen.d.ts +13 -0
  16. package/lib/clickhouse/api/client.gen.d.ts.map +1 -0
  17. package/lib/clickhouse/api/client.gen.js +7 -0
  18. package/lib/clickhouse/api/client.gen.js.map +1 -0
  19. package/lib/clickhouse/api/sdk.gen.d.ts +322 -0
  20. package/lib/clickhouse/api/sdk.gen.d.ts.map +1 -0
  21. package/lib/clickhouse/api/sdk.gen.js +683 -0
  22. package/lib/clickhouse/api/sdk.gen.js.map +1 -0
  23. package/lib/clickhouse/api/types.gen.d.ts +5030 -0
  24. package/lib/clickhouse/api/types.gen.d.ts.map +1 -0
  25. package/lib/clickhouse/api/types.gen.js +2 -0
  26. package/lib/clickhouse/api/types.gen.js.map +1 -0
  27. package/lib/clickhouse/api-key.d.ts +29 -0
  28. package/lib/clickhouse/api-key.d.ts.map +1 -0
  29. package/lib/clickhouse/api-key.js +83 -0
  30. package/lib/clickhouse/api-key.js.map +1 -0
  31. package/lib/clickhouse/api.d.ts +36 -0
  32. package/lib/clickhouse/api.d.ts.map +1 -0
  33. package/lib/clickhouse/api.js +48 -0
  34. package/lib/clickhouse/api.js.map +1 -0
  35. package/lib/clickhouse/index.d.ts +4 -0
  36. package/lib/clickhouse/index.d.ts.map +1 -0
  37. package/lib/clickhouse/index.js +4 -0
  38. package/lib/clickhouse/index.js.map +1 -0
  39. package/lib/clickhouse/organization.d.ts +16 -0
  40. package/lib/clickhouse/organization.d.ts.map +1 -0
  41. package/lib/clickhouse/organization.js +21 -0
  42. package/lib/clickhouse/organization.js.map +1 -0
  43. package/lib/clickhouse/service.d.ts +275 -0
  44. package/lib/clickhouse/service.d.ts.map +1 -0
  45. package/lib/clickhouse/service.js +274 -0
  46. package/lib/clickhouse/service.js.map +1 -0
  47. package/lib/cloudflare/account-api-token.d.ts.map +1 -1
  48. package/lib/cloudflare/account-api-token.js +1 -1
  49. package/lib/cloudflare/account-api-token.js.map +1 -1
  50. package/lib/cloudflare/api.d.ts.map +1 -1
  51. package/lib/cloudflare/api.js +2 -0
  52. package/lib/cloudflare/api.js.map +1 -1
  53. package/lib/cloudflare/bun-spa/bun-spa.d.ts +13 -0
  54. package/lib/cloudflare/bun-spa/bun-spa.d.ts.map +1 -0
  55. package/lib/cloudflare/bun-spa/bun-spa.js +95 -0
  56. package/lib/cloudflare/bun-spa/bun-spa.js.map +1 -0
  57. package/lib/cloudflare/compatibility-date.gen.d.ts +1 -1
  58. package/lib/cloudflare/compatibility-date.gen.js +1 -1
  59. package/lib/cloudflare/container.d.ts +11 -1
  60. package/lib/cloudflare/container.d.ts.map +1 -1
  61. package/lib/cloudflare/container.js.map +1 -1
  62. package/lib/cloudflare/index.d.ts +1 -0
  63. package/lib/cloudflare/index.d.ts.map +1 -1
  64. package/lib/cloudflare/index.js +1 -0
  65. package/lib/cloudflare/index.js.map +1 -1
  66. package/lib/cloudflare/miniflare/build-worker-options.d.ts.map +1 -1
  67. package/lib/cloudflare/miniflare/build-worker-options.js +33 -6
  68. package/lib/cloudflare/miniflare/build-worker-options.js.map +1 -1
  69. package/lib/cloudflare/miniflare/miniflare-controller.d.ts.map +1 -1
  70. package/lib/cloudflare/miniflare/miniflare-controller.js +2 -0
  71. package/lib/cloudflare/miniflare/miniflare-controller.js.map +1 -1
  72. package/lib/cloudflare/miniflare/miniflare-worker-proxy.d.ts +1 -1
  73. package/lib/cloudflare/miniflare/miniflare-worker-proxy.d.ts.map +1 -1
  74. package/lib/cloudflare/miniflare/miniflare-worker-proxy.js +36 -49
  75. package/lib/cloudflare/miniflare/miniflare-worker-proxy.js.map +1 -1
  76. package/lib/cloudflare/permission-groups.d.ts +2 -3
  77. package/lib/cloudflare/permission-groups.d.ts.map +1 -1
  78. package/lib/cloudflare/permission-groups.js +10 -15
  79. package/lib/cloudflare/permission-groups.js.map +1 -1
  80. package/lib/cloudflare/redwood/redwood.d.ts +1 -1
  81. package/lib/cloudflare/redwood/redwood.js +1 -1
  82. package/lib/cloudflare/util/filter-env-bindings.d.ts +62 -0
  83. package/lib/cloudflare/util/filter-env-bindings.d.ts.map +1 -0
  84. package/lib/cloudflare/util/filter-env-bindings.js +81 -0
  85. package/lib/cloudflare/util/filter-env-bindings.js.map +1 -0
  86. package/lib/cloudflare/website.d.ts +2 -2
  87. package/lib/cloudflare/website.d.ts.map +1 -1
  88. package/lib/cloudflare/website.js +6 -18
  89. package/lib/cloudflare/website.js.map +1 -1
  90. package/lib/cloudflare/worker-metadata.d.ts +1 -0
  91. package/lib/cloudflare/worker-metadata.d.ts.map +1 -1
  92. package/lib/cloudflare/worker-metadata.js +1 -0
  93. package/lib/cloudflare/worker-metadata.js.map +1 -1
  94. package/lib/cloudflare/worker.d.ts +11 -1
  95. package/lib/cloudflare/worker.d.ts.map +1 -1
  96. package/lib/cloudflare/worker.js.map +1 -1
  97. package/lib/cloudflare/wrangler.json.d.ts +8 -0
  98. package/lib/cloudflare/wrangler.json.d.ts.map +1 -1
  99. package/lib/cloudflare/wrangler.json.js +3 -4
  100. package/lib/cloudflare/wrangler.json.js.map +1 -1
  101. package/lib/coinbase/client.d.ts +54 -0
  102. package/lib/coinbase/client.d.ts.map +1 -0
  103. package/lib/coinbase/client.js +89 -0
  104. package/lib/coinbase/client.js.map +1 -0
  105. package/lib/coinbase/evm-account.d.ts +118 -0
  106. package/lib/coinbase/evm-account.d.ts.map +1 -0
  107. package/lib/coinbase/evm-account.js +198 -0
  108. package/lib/coinbase/evm-account.js.map +1 -0
  109. package/lib/coinbase/evm-smart-account.d.ts +122 -0
  110. package/lib/coinbase/evm-smart-account.d.ts.map +1 -0
  111. package/lib/coinbase/evm-smart-account.js +213 -0
  112. package/lib/coinbase/evm-smart-account.js.map +1 -0
  113. package/lib/coinbase/faucet.d.ts +11 -0
  114. package/lib/coinbase/faucet.d.ts.map +1 -0
  115. package/lib/coinbase/faucet.js +146 -0
  116. package/lib/coinbase/faucet.js.map +1 -0
  117. package/lib/coinbase/index.d.ts +4 -0
  118. package/lib/coinbase/index.d.ts.map +1 -0
  119. package/lib/coinbase/index.js +4 -0
  120. package/lib/coinbase/index.js.map +1 -0
  121. package/lib/coinbase/types.d.ts +28 -0
  122. package/lib/coinbase/types.d.ts.map +1 -0
  123. package/lib/coinbase/types.js +4 -0
  124. package/lib/{util/telemetry → coinbase}/types.js.map +1 -1
  125. package/lib/coinbase/utils.d.ts +13 -0
  126. package/lib/coinbase/utils.d.ts.map +1 -0
  127. package/lib/coinbase/utils.js +17 -0
  128. package/lib/coinbase/utils.js.map +1 -0
  129. package/lib/neon/api/types.gen.d.ts +7 -2
  130. package/lib/neon/api/types.gen.d.ts.map +1 -1
  131. package/lib/planetscale/api/types.gen.d.ts +20 -4
  132. package/lib/planetscale/api/types.gen.d.ts.map +1 -1
  133. package/lib/planetscale/api.d.ts.map +1 -1
  134. package/lib/planetscale/api.js +1 -0
  135. package/lib/planetscale/api.js.map +1 -1
  136. package/lib/planetscale/password.d.ts.map +1 -1
  137. package/lib/planetscale/password.js +1 -13
  138. package/lib/planetscale/password.js.map +1 -1
  139. package/lib/resource.d.ts.map +1 -1
  140. package/lib/resource.js +7 -3
  141. package/lib/resource.js.map +1 -1
  142. package/lib/scope.d.ts +9 -9
  143. package/lib/scope.d.ts.map +1 -1
  144. package/lib/scope.js +18 -37
  145. package/lib/scope.js.map +1 -1
  146. package/lib/state/instrumented-state-store.d.ts +1 -3
  147. package/lib/state/instrumented-state-store.d.ts.map +1 -1
  148. package/lib/state/instrumented-state-store.js +19 -21
  149. package/lib/state/instrumented-state-store.js.map +1 -1
  150. package/lib/test/bun.d.ts.map +1 -1
  151. package/lib/test/bun.js +1 -2
  152. package/lib/test/bun.js.map +1 -1
  153. package/lib/test/vitest.d.ts.map +1 -1
  154. package/lib/test/vitest.js +1 -2
  155. package/lib/test/vitest.js.map +1 -1
  156. package/lib/util/diff.d.ts +5 -0
  157. package/lib/util/diff.d.ts.map +1 -0
  158. package/lib/util/diff.js +14 -0
  159. package/lib/util/diff.js.map +1 -0
  160. package/lib/util/idempotent-spawn.js +1 -1
  161. package/lib/util/idempotent-spawn.js.map +1 -1
  162. package/lib/util/telemetry.d.ts +53 -0
  163. package/lib/util/telemetry.d.ts.map +1 -0
  164. package/lib/util/telemetry.js +215 -0
  165. package/lib/util/telemetry.js.map +1 -0
  166. package/package.json +19 -1
  167. package/src/alchemy.ts +10 -20
  168. package/src/apply.ts +29 -12
  169. package/src/aws/utils.ts +2 -1
  170. package/src/clickhouse/api/client.gen.ts +28 -0
  171. package/src/clickhouse/api/sdk.gen.ts +1286 -0
  172. package/src/clickhouse/api/types.gen.ts +5898 -0
  173. package/src/clickhouse/api-key.ts +136 -0
  174. package/src/clickhouse/api.ts +84 -0
  175. package/src/clickhouse/index.ts +3 -0
  176. package/src/clickhouse/organization.ts +31 -0
  177. package/src/clickhouse/service.ts +668 -0
  178. package/src/cloudflare/account-api-token.ts +1 -4
  179. package/src/cloudflare/api.ts +2 -0
  180. package/src/cloudflare/bun-spa/bun-spa.ts +136 -0
  181. package/src/cloudflare/compatibility-date.gen.ts +1 -1
  182. package/src/cloudflare/container.ts +20 -1
  183. package/src/cloudflare/index.ts +1 -0
  184. package/src/cloudflare/miniflare/build-worker-options.ts +38 -8
  185. package/src/cloudflare/miniflare/miniflare-controller.ts +2 -0
  186. package/src/cloudflare/miniflare/miniflare-worker-proxy.ts +41 -58
  187. package/src/cloudflare/permission-groups.ts +21 -49
  188. package/src/cloudflare/redwood/redwood.ts +1 -1
  189. package/src/cloudflare/util/filter-env-bindings.ts +96 -0
  190. package/src/cloudflare/website.ts +11 -24
  191. package/src/cloudflare/worker-metadata.ts +2 -0
  192. package/src/cloudflare/worker.ts +12 -1
  193. package/src/cloudflare/wrangler.json.ts +12 -8
  194. package/src/coinbase/client.ts +146 -0
  195. package/src/coinbase/evm-account.ts +317 -0
  196. package/src/coinbase/evm-smart-account.ts +339 -0
  197. package/src/coinbase/faucet.ts +173 -0
  198. package/src/coinbase/index.ts +3 -0
  199. package/src/coinbase/types.ts +33 -0
  200. package/src/coinbase/utils.ts +19 -0
  201. package/src/neon/api/types.gen.ts +13 -1
  202. package/src/planetscale/api/types.gen.ts +22 -2
  203. package/src/planetscale/api.ts +1 -0
  204. package/src/planetscale/password.ts +1 -14
  205. package/src/resource.ts +11 -4
  206. package/src/scope.ts +29 -45
  207. package/src/state/instrumented-state-store.ts +27 -26
  208. package/src/test/bun.ts +1 -2
  209. package/src/test/vitest.ts +1 -2
  210. package/src/util/diff.ts +14 -0
  211. package/src/util/idempotent-spawn.ts +1 -1
  212. package/src/util/telemetry.ts +328 -0
  213. package/templates/tanstack-start/package.json +2 -2
  214. package/workers/tunnel-proxy.js +1 -1
  215. package/lib/util/telemetry/client.d.ts +0 -31
  216. package/lib/util/telemetry/client.d.ts.map +0 -1
  217. package/lib/util/telemetry/client.js +0 -121
  218. package/lib/util/telemetry/client.js.map +0 -1
  219. package/lib/util/telemetry/constants.d.ts +0 -5
  220. package/lib/util/telemetry/constants.d.ts.map +0 -1
  221. package/lib/util/telemetry/constants.js +0 -8
  222. package/lib/util/telemetry/constants.js.map +0 -1
  223. package/lib/util/telemetry/context.d.ts +0 -15
  224. package/lib/util/telemetry/context.d.ts.map +0 -1
  225. package/lib/util/telemetry/context.js +0 -128
  226. package/lib/util/telemetry/context.js.map +0 -1
  227. package/lib/util/telemetry/index.d.ts +0 -3
  228. package/lib/util/telemetry/index.d.ts.map +0 -1
  229. package/lib/util/telemetry/index.js +0 -3
  230. package/lib/util/telemetry/index.js.map +0 -1
  231. package/lib/util/telemetry/types.d.ts +0 -68
  232. package/lib/util/telemetry/types.d.ts.map +0 -1
  233. package/lib/util/telemetry/types.js +0 -1
  234. package/src/util/telemetry/client.ts +0 -156
  235. package/src/util/telemetry/constants.ts +0 -13
  236. package/src/util/telemetry/context.ts +0 -154
  237. package/src/util/telemetry/index.ts +0 -2
  238. package/src/util/telemetry/types.ts +0 -105
@@ -1 +0,0 @@
1
- {"version":3,"file":"context.js","sourceRoot":"","sources":["../../../src/util/telemetry/context.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- export * from "./client.ts";
2
- export * from "./types.ts";
3
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/util/telemetry/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC"}
@@ -1,3 +0,0 @@
1
- export * from "./client.js";
2
- export * from "./types.js";
3
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/util/telemetry/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC"}
@@ -1,68 +0,0 @@
1
- import type { Phase } from "../../alchemy.ts";
2
- export declare namespace Telemetry {
3
- interface Context {
4
- /** Random UUID generated once per machine and stored in XDG config directory (e.g. `~/Library/Preferences/alchemy` on Mac). Null for CI environments. */
5
- userId: string | null;
6
- /** Root commit hash for the git repository. Anonymous, stable identifier for anyone using git. */
7
- projectId: string | null;
8
- /** UUID generated once per application run. */
9
- sessionId: string;
10
- system: {
11
- platform: string;
12
- osVersion: string;
13
- arch: string;
14
- cpus: number;
15
- memory: number;
16
- };
17
- runtime: {
18
- name: string | null;
19
- version: string | null;
20
- };
21
- environment: {
22
- provider: string | null;
23
- isCI: boolean;
24
- };
25
- alchemy: {
26
- version: string;
27
- phase?: Phase;
28
- };
29
- }
30
- interface BaseEvent {
31
- event: string;
32
- timestamp: number;
33
- }
34
- interface SerializedError {
35
- name?: string;
36
- message: string;
37
- stack?: string;
38
- }
39
- type ErrorInput = Error | SerializedError;
40
- interface AppEvent extends BaseEvent {
41
- event: "app.start" | "app.success" | "app.error";
42
- elapsed?: number;
43
- error?: SerializedError;
44
- }
45
- interface ResourceEvent extends BaseEvent {
46
- event: "resource.start" | "resource.success" | "resource.error" | "resource.skip" | "resource.read";
47
- resource: string;
48
- status?: "creating" | "created" | "updating" | "updated" | "deleting" | "deleted";
49
- elapsed?: number;
50
- error?: SerializedError;
51
- replaced?: boolean;
52
- }
53
- interface CliEvent extends BaseEvent {
54
- event: "cli.start" | "cli.success" | "cli.error";
55
- command: string;
56
- }
57
- interface StateStoreEvent extends BaseEvent {
58
- event: "stateStore.init" | "stateStore.deinit" | "stateStore.list" | "stateStore.count" | "stateStore.get" | "stateStore.getBatch" | "stateStore.all" | "stateStore.set" | "stateStore.delete";
59
- stateStoreClass: string;
60
- elapsed?: number;
61
- error?: SerializedError;
62
- }
63
- type Event = AppEvent | ResourceEvent | StateStoreEvent | CliEvent;
64
- type EventInput = (Omit<AppEvent, "timestamp" | "error"> | Omit<ResourceEvent, "timestamp" | "error"> | Omit<StateStoreEvent, "timestamp" | "error"> | Omit<CliEvent, "timestamp" | "error">) & {
65
- error?: ErrorInput;
66
- };
67
- }
68
- //# sourceMappingURL=types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/util/telemetry/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAE9C,yBAAiB,SAAS,CAAC;IACzB,UAAiB,OAAO;QACtB,yJAAyJ;QACzJ,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;QACtB,kGAAkG;QAClG,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;QACzB,+CAA+C;QAC/C,SAAS,EAAE,MAAM,CAAC;QAElB,MAAM,EAAE;YACN,QAAQ,EAAE,MAAM,CAAC;YACjB,SAAS,EAAE,MAAM,CAAC;YAClB,IAAI,EAAE,MAAM,CAAC;YACb,IAAI,EAAE,MAAM,CAAC;YACb,MAAM,EAAE,MAAM,CAAC;SAChB,CAAC;QAEF,OAAO,EAAE;YACP,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;YACpB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;SACxB,CAAC;QAEF,WAAW,EAAE;YACX,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;YACxB,IAAI,EAAE,OAAO,CAAC;SACf,CAAC;QAEF,OAAO,EAAE;YACP,OAAO,EAAE,MAAM,CAAC;YAChB,KAAK,CAAC,EAAE,KAAK,CAAC;SACf,CAAC;KACH;IAED,UAAiB,SAAS;QACxB,KAAK,EAAE,MAAM,CAAC;QACd,SAAS,EAAE,MAAM,CAAC;KACnB;IAED,UAAiB,eAAe;QAC9B,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,MAAM,CAAC;QAChB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB;IAED,KAAY,UAAU,GAAG,KAAK,GAAG,eAAe,CAAC;IAEjD,UAAiB,QAAS,SAAQ,SAAS;QACzC,KAAK,EAAE,WAAW,GAAG,aAAa,GAAG,WAAW,CAAC;QACjD,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,KAAK,CAAC,EAAE,eAAe,CAAC;KACzB;IAED,UAAiB,aAAc,SAAQ,SAAS;QAC9C,KAAK,EACD,gBAAgB,GAChB,kBAAkB,GAClB,gBAAgB,GAChB,eAAe,GACf,eAAe,CAAC;QACpB,QAAQ,EAAE,MAAM,CAAC;QACjB,MAAM,CAAC,EACH,UAAU,GACV,SAAS,GACT,UAAU,GACV,SAAS,GACT,UAAU,GACV,SAAS,CAAC;QACd,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,KAAK,CAAC,EAAE,eAAe,CAAC;QACxB,QAAQ,CAAC,EAAE,OAAO,CAAC;KACpB;IAED,UAAiB,QAAS,SAAQ,SAAS;QACzC,KAAK,EAAE,WAAW,GAAG,aAAa,GAAG,WAAW,CAAC;QACjD,OAAO,EAAE,MAAM,CAAC;KACjB;IAED,UAAiB,eAAgB,SAAQ,SAAS;QAChD,KAAK,EACD,iBAAiB,GACjB,mBAAmB,GACnB,iBAAiB,GACjB,kBAAkB,GAClB,gBAAgB,GAChB,qBAAqB,GACrB,gBAAgB,GAChB,gBAAgB,GAChB,mBAAmB,CAAC;QACxB,eAAe,EAAE,MAAM,CAAC;QACxB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,KAAK,CAAC,EAAE,eAAe,CAAC;KACzB;IAED,KAAY,KAAK,GAAG,QAAQ,GAAG,aAAa,GAAG,eAAe,GAAG,QAAQ,CAAC;IAC1E,KAAY,UAAU,GAAG,CACrB,IAAI,CAAC,QAAQ,EAAE,WAAW,GAAG,OAAO,CAAC,GACrC,IAAI,CAAC,aAAa,EAAE,WAAW,GAAG,OAAO,CAAC,GAC1C,IAAI,CAAC,eAAe,EAAE,WAAW,GAAG,OAAO,CAAC,GAC5C,IAAI,CAAC,QAAQ,EAAE,WAAW,GAAG,OAAO,CAAC,CACxC,GAAG;QACF,KAAK,CAAC,EAAE,UAAU,CAAC;KACpB,CAAC;CACH"}
@@ -1 +0,0 @@
1
- //# sourceMappingURL=types.js.map
@@ -1,156 +0,0 @@
1
- import os from "node:os";
2
- import type { Phase } from "../../alchemy.ts";
3
- import {
4
- POSTHOG_CLIENT_API_HOST,
5
- POSTHOG_PROJECT_ID,
6
- TELEMETRY_DISABLED,
7
- } from "./constants.ts";
8
- import { context } from "./context.ts";
9
- import type { Telemetry } from "./types.ts";
10
-
11
- export interface TelemetryClientOptions {
12
- sessionId: string;
13
- phase?: Phase;
14
- enabled: boolean;
15
- quiet: boolean;
16
- }
17
-
18
- export interface ITelemetryClient {
19
- ready: Promise<unknown>;
20
- record(event: Telemetry.EventInput): void;
21
- finalize(): Promise<void>;
22
- }
23
-
24
- export class NoopTelemetryClient implements ITelemetryClient {
25
- ready = Promise.resolve();
26
- record(_: Telemetry.EventInput) {}
27
- finalize() {
28
- return Promise.resolve();
29
- }
30
- }
31
-
32
- export class TelemetryClient implements ITelemetryClient {
33
- private context: Promise<Telemetry.Context>;
34
- private events: Telemetry.Event[] = [];
35
-
36
- constructor(readonly options: TelemetryClientOptions) {
37
- this.context = context({
38
- sessionId: this.options.sessionId,
39
- phase: this.options.phase,
40
- });
41
- this.record({
42
- event: "app.start",
43
- });
44
- }
45
-
46
- get ready() {
47
- return this.context;
48
- }
49
-
50
- record(event: Telemetry.EventInput, timestamp = Date.now()) {
51
- const payload = {
52
- ...event,
53
- error: this.serializeError(event.error),
54
- timestamp,
55
- } as Telemetry.Event;
56
- this.events.push(payload);
57
- }
58
-
59
- private serializeError(
60
- error: Telemetry.ErrorInput | undefined,
61
- ): Telemetry.SerializedError | undefined {
62
- if (!error) {
63
- return undefined;
64
- }
65
- if (error instanceof Error) {
66
- return {
67
- ...error, // include additional properties from error object
68
- name: error.name,
69
- message: error.message?.replaceAll(os.homedir(), "~"), // redact home directory
70
- stack: error.stack?.replaceAll(os.homedir(), "~"),
71
- };
72
- }
73
- return error;
74
- }
75
-
76
- async finalize() {
77
- await this.send(this.events).catch((error) => {
78
- if (!this.options.quiet) {
79
- console.warn(error);
80
- }
81
- });
82
- }
83
-
84
- private async send(events: Telemetry.Event[]) {
85
- if (events.length === 0) {
86
- return;
87
- }
88
- const { userId, projectId, ...context } = await this.context;
89
- const safeProjectId = projectId ?? `temp_${userId}`;
90
- const groupResponse = await fetch(`${POSTHOG_CLIENT_API_HOST}/i/v0/e/`, {
91
- method: "POST",
92
- headers: {
93
- "Content-Type": "application/json",
94
- },
95
- body: JSON.stringify({
96
- api_key: POSTHOG_PROJECT_ID,
97
- event: "$groupidentify",
98
- distinct_id: "project-identify",
99
- properties: {
100
- $group_type: "project",
101
- $group_key: safeProjectId,
102
- },
103
- }),
104
- });
105
- if (!groupResponse.ok) {
106
- throw new Error(
107
- `Failed to send group identify: ${groupResponse.status} ${groupResponse.statusText} - ${await groupResponse.text()}`,
108
- );
109
- }
110
- const response = await fetch(`${POSTHOG_CLIENT_API_HOST}/batch`, {
111
- method: "POST",
112
- headers: {
113
- "Content-Type": "application/json",
114
- },
115
- body: JSON.stringify({
116
- api_key: POSTHOG_PROJECT_ID,
117
- historical_migration: false,
118
- batch: events.map(({ event, timestamp, ...properties }) => ({
119
- event,
120
- properties: {
121
- distinct_id: userId,
122
- ...context,
123
- ...properties,
124
- projectId: safeProjectId,
125
- $groups: { project: safeProjectId },
126
- },
127
- timestamp: new Date(timestamp).toISOString(),
128
- })),
129
- }),
130
- });
131
- if (!response.ok) {
132
- throw new Error(
133
- `Failed to send telemetry: ${response.status} ${response.statusText} - ${await response.text()}`,
134
- );
135
- }
136
- }
137
-
138
- static create({
139
- phase,
140
- enabled,
141
- quiet,
142
- }: Omit<TelemetryClientOptions, "sessionId">): ITelemetryClient {
143
- if (!enabled || TELEMETRY_DISABLED) {
144
- if (!quiet) {
145
- console.warn("[Alchemy] Telemetry is disabled.");
146
- }
147
- return new NoopTelemetryClient();
148
- }
149
- return new TelemetryClient({
150
- sessionId: crypto.randomUUID(),
151
- phase,
152
- enabled,
153
- quiet,
154
- });
155
- }
156
- }
@@ -1,13 +0,0 @@
1
- import envPaths from "env-paths";
2
-
3
- export const CONFIG_DIR = envPaths("alchemy", { suffix: "" }).config;
4
-
5
- export const TELEMETRY_DISABLED =
6
- !!process.env.ALCHEMY_TELEMETRY_DISABLED || !!process.env.DO_NOT_TRACK;
7
-
8
- // TODO(sam): replace with permanent URL
9
- export const POSTHOG_CLIENT_API_HOST =
10
- process.env.ALCHEMY_POSTHOG_CLIENT_API_HOST ?? "https://ph.alchemy.run";
11
- export const POSTHOG_PROJECT_ID =
12
- process.env.ALCHEMY_POSTHOG_PROJECT_ID ??
13
- "phc_A51Mi7Q63TvnNrvRMgvBxE1il0DAL66rVg4LdWPRsfK";
@@ -1,154 +0,0 @@
1
- import { exec } from "node:child_process";
2
- import { mkdir, readFile, writeFile } from "node:fs/promises";
3
- import os from "node:os";
4
- import { join } from "node:path";
5
- import pkg from "../../../package.json" with { type: "json" };
6
- import type { Phase } from "../../alchemy.ts";
7
- import { CONFIG_DIR } from "./constants.ts";
8
- import type { Telemetry } from "./types.ts";
9
-
10
- async function userId() {
11
- const path = join(CONFIG_DIR, "id");
12
-
13
- try {
14
- return (await readFile(path, "utf-8")).trim();
15
- } catch {}
16
-
17
- try {
18
- await mkdir(CONFIG_DIR, { recursive: true });
19
- } catch {}
20
-
21
- const id = crypto.randomUUID();
22
- try {
23
- await writeFile(path, id);
24
- console.warn(
25
- [
26
- "Attention: To help improve Alchemy, we now collect anonymous usage, performance, and error data.",
27
- "You can opt out by setting the ALCHEMY_TELEMETRY_DISABLED or DO_NOT_TRACK environment variable to a truthy value.",
28
- ].join("\n"),
29
- );
30
- } catch {
31
- return null;
32
- }
33
-
34
- return id;
35
- }
36
-
37
- function projectId() {
38
- return new Promise<string | null>((resolve) => {
39
- exec("git rev-list --max-parents=0 HEAD", (err, stdout) => {
40
- if (err) {
41
- resolve(null);
42
- return;
43
- }
44
- resolve(stdout.trim());
45
- });
46
- });
47
- }
48
-
49
- function system(): Telemetry.Context["system"] {
50
- return {
51
- platform: os.platform(),
52
- osVersion: os.release(),
53
- arch: os.arch(),
54
- cpus: os.cpus().length,
55
- memory: os.totalmem() / 1024 / 1024,
56
- };
57
- }
58
-
59
- declare global {
60
- var Deno:
61
- | {
62
- version: {
63
- deno: string;
64
- };
65
- }
66
- | undefined;
67
- var EdgeRuntime: Record<string, unknown> | undefined;
68
- }
69
-
70
- const RUNTIMES = [
71
- {
72
- name: "bun",
73
- detect: () => !!globalThis.Bun,
74
- version: () => globalThis.Bun?.version,
75
- },
76
- {
77
- name: "deno",
78
- detect: () => !!globalThis.Deno,
79
- version: () => globalThis.Deno?.version?.deno,
80
- },
81
- {
82
- name: "workerd",
83
- detect: () => !!globalThis.EdgeRuntime,
84
- version: () => null,
85
- },
86
- {
87
- name: "node",
88
- detect: () => !!globalThis.process?.versions?.node,
89
- version: () => process.versions.node,
90
- },
91
- ] as const;
92
-
93
- function runtime(): Telemetry.Context["runtime"] {
94
- for (const runtime of RUNTIMES) {
95
- if (runtime.detect()) {
96
- return {
97
- name: runtime.name,
98
- version: runtime.version() ?? null,
99
- };
100
- }
101
- }
102
- return {
103
- name: null,
104
- version: null,
105
- };
106
- }
107
-
108
- const PROVIDERS = [
109
- { env: "GITHUB_ACTIONS", provider: "GitHub Actions", isCI: true },
110
- { env: "GITLAB_CI", provider: "GitLab CI", isCI: true },
111
- { env: "CIRCLECI", provider: "CircleCI", isCI: true },
112
- { env: "JENKINS_URL", provider: "Jenkins", isCI: true },
113
- { env: "TRAVIS", provider: "Travis CI", isCI: true },
114
- { env: "NOW_BUILDER", provider: "Vercel", isCI: true },
115
- { env: "VERCEL", provider: "Vercel", isCI: false },
116
- ];
117
-
118
- function environment(): Telemetry.Context["environment"] {
119
- for (const provider of PROVIDERS) {
120
- if (process.env[provider.env]) {
121
- return {
122
- provider: provider.provider,
123
- isCI: provider.isCI,
124
- };
125
- }
126
- }
127
- return {
128
- provider: null,
129
- isCI: !!process.env.CI,
130
- };
131
- }
132
-
133
- export async function context(input: {
134
- sessionId: string;
135
- phase?: Phase;
136
- }): Promise<Telemetry.Context> {
137
- const env = environment();
138
- const [uid, pid] = await Promise.all([
139
- env.isCI ? null : userId(),
140
- projectId(),
141
- ]);
142
- return {
143
- userId: uid,
144
- projectId: pid,
145
- sessionId: input.sessionId,
146
- system: system(),
147
- runtime: runtime(),
148
- environment: env,
149
- alchemy: {
150
- version: pkg.version,
151
- phase: input.phase,
152
- },
153
- };
154
- }
@@ -1,2 +0,0 @@
1
- export * from "./client.ts";
2
- export * from "./types.ts";
@@ -1,105 +0,0 @@
1
- import type { Phase } from "../../alchemy.ts";
2
-
3
- export namespace Telemetry {
4
- export interface Context {
5
- /** Random UUID generated once per machine and stored in XDG config directory (e.g. `~/Library/Preferences/alchemy` on Mac). Null for CI environments. */
6
- userId: string | null;
7
- /** Root commit hash for the git repository. Anonymous, stable identifier for anyone using git. */
8
- projectId: string | null;
9
- /** UUID generated once per application run. */
10
- sessionId: string;
11
-
12
- system: {
13
- platform: string;
14
- osVersion: string;
15
- arch: string;
16
- cpus: number;
17
- memory: number;
18
- };
19
-
20
- runtime: {
21
- name: string | null;
22
- version: string | null;
23
- };
24
-
25
- environment: {
26
- provider: string | null;
27
- isCI: boolean;
28
- };
29
-
30
- alchemy: {
31
- version: string;
32
- phase?: Phase;
33
- };
34
- }
35
-
36
- export interface BaseEvent {
37
- event: string;
38
- timestamp: number;
39
- }
40
-
41
- export interface SerializedError {
42
- name?: string;
43
- message: string;
44
- stack?: string;
45
- }
46
-
47
- export type ErrorInput = Error | SerializedError;
48
-
49
- export interface AppEvent extends BaseEvent {
50
- event: "app.start" | "app.success" | "app.error";
51
- elapsed?: number;
52
- error?: SerializedError;
53
- }
54
-
55
- export interface ResourceEvent extends BaseEvent {
56
- event:
57
- | "resource.start"
58
- | "resource.success"
59
- | "resource.error"
60
- | "resource.skip"
61
- | "resource.read";
62
- resource: string;
63
- status?:
64
- | "creating"
65
- | "created"
66
- | "updating"
67
- | "updated"
68
- | "deleting"
69
- | "deleted";
70
- elapsed?: number;
71
- error?: SerializedError;
72
- replaced?: boolean;
73
- }
74
-
75
- export interface CliEvent extends BaseEvent {
76
- event: "cli.start" | "cli.success" | "cli.error";
77
- command: string;
78
- }
79
-
80
- export interface StateStoreEvent extends BaseEvent {
81
- event:
82
- | "stateStore.init"
83
- | "stateStore.deinit"
84
- | "stateStore.list"
85
- | "stateStore.count"
86
- | "stateStore.get"
87
- | "stateStore.getBatch"
88
- | "stateStore.all"
89
- | "stateStore.set"
90
- | "stateStore.delete";
91
- stateStoreClass: string;
92
- elapsed?: number;
93
- error?: SerializedError;
94
- }
95
-
96
- export type Event = AppEvent | ResourceEvent | StateStoreEvent | CliEvent;
97
- export type EventInput = (
98
- | Omit<AppEvent, "timestamp" | "error">
99
- | Omit<ResourceEvent, "timestamp" | "error">
100
- | Omit<StateStoreEvent, "timestamp" | "error">
101
- | Omit<CliEvent, "timestamp" | "error">
102
- ) & {
103
- error?: ErrorInput;
104
- };
105
- }