alchemy 2.0.0-beta.45 → 2.0.0-beta.46

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 (73) hide show
  1. package/lib/AlchemyContext.d.ts +0 -1
  2. package/lib/AlchemyContext.d.ts.map +1 -1
  3. package/lib/AlchemyContext.js.map +1 -1
  4. package/lib/Cli/commands/cloudflare.d.ts.map +1 -1
  5. package/lib/Cli/commands/cloudflare.js +5 -1
  6. package/lib/Cli/commands/cloudflare.js.map +1 -1
  7. package/lib/Cloudflare/Providers.d.ts.map +1 -1
  8. package/lib/Cloudflare/Providers.js +5 -1
  9. package/lib/Cloudflare/Providers.js.map +1 -1
  10. package/lib/Cloudflare/Queue/QueueConsumer.d.ts.map +1 -1
  11. package/lib/Cloudflare/Queue/QueueConsumer.js +1 -2
  12. package/lib/Cloudflare/Queue/QueueConsumer.js.map +1 -1
  13. package/lib/Cloudflare/StateStore/Api.d.ts +1 -1
  14. package/lib/Cloudflare/StateStore/Api.js +1 -1
  15. package/lib/Cloudflare/StateStore/State.d.ts +11 -65
  16. package/lib/Cloudflare/StateStore/State.d.ts.map +1 -1
  17. package/lib/Cloudflare/StateStore/State.js +307 -366
  18. package/lib/Cloudflare/StateStore/State.js.map +1 -1
  19. package/lib/Cloudflare/StateStore/Store.d.ts.map +1 -1
  20. package/lib/Cloudflare/StateStore/Store.js +16 -29
  21. package/lib/Cloudflare/StateStore/Store.js.map +1 -1
  22. package/lib/Cloudflare/Vectorize/VectorizeIndex.d.ts +114 -0
  23. package/lib/Cloudflare/Vectorize/VectorizeIndex.d.ts.map +1 -0
  24. package/lib/Cloudflare/Vectorize/VectorizeIndex.js +157 -0
  25. package/lib/Cloudflare/Vectorize/VectorizeIndex.js.map +1 -0
  26. package/lib/Cloudflare/Vectorize/VectorizeIndexBinding.d.ts +38 -0
  27. package/lib/Cloudflare/Vectorize/VectorizeIndexBinding.d.ts.map +1 -0
  28. package/lib/Cloudflare/Vectorize/VectorizeIndexBinding.js +44 -0
  29. package/lib/Cloudflare/Vectorize/VectorizeIndexBinding.js.map +1 -0
  30. package/lib/Cloudflare/Vectorize/VectorizeMetadataIndex.d.ts +72 -0
  31. package/lib/Cloudflare/Vectorize/VectorizeMetadataIndex.d.ts.map +1 -0
  32. package/lib/Cloudflare/Vectorize/VectorizeMetadataIndex.js +131 -0
  33. package/lib/Cloudflare/Vectorize/VectorizeMetadataIndex.js.map +1 -0
  34. package/lib/Cloudflare/Vectorize/index.d.ts +4 -0
  35. package/lib/Cloudflare/Vectorize/index.d.ts.map +1 -0
  36. package/lib/Cloudflare/Vectorize/index.js +4 -0
  37. package/lib/Cloudflare/Vectorize/index.js.map +1 -0
  38. package/lib/Cloudflare/Workers/WorkerAsyncBindings.d.ts.map +1 -1
  39. package/lib/Cloudflare/Workers/WorkerAsyncBindings.js +8 -0
  40. package/lib/Cloudflare/Workers/WorkerAsyncBindings.js.map +1 -1
  41. package/lib/Cloudflare/Workers/WorkerBinding.d.ts +2 -1
  42. package/lib/Cloudflare/Workers/WorkerBinding.d.ts.map +1 -1
  43. package/lib/Cloudflare/Workers/WorkerBinding.js.map +1 -1
  44. package/lib/Cloudflare/index.d.ts +1 -0
  45. package/lib/Cloudflare/index.d.ts.map +1 -1
  46. package/lib/Cloudflare/index.js +1 -0
  47. package/lib/Cloudflare/index.js.map +1 -1
  48. package/lib/State/HttpStateStore.d.ts +4 -0
  49. package/lib/State/HttpStateStore.d.ts.map +1 -1
  50. package/lib/State/HttpStateStore.js +13 -0
  51. package/lib/State/HttpStateStore.js.map +1 -1
  52. package/lib/Util/poll.d.ts +30 -0
  53. package/lib/Util/poll.d.ts.map +1 -0
  54. package/lib/Util/poll.js +26 -0
  55. package/lib/Util/poll.js.map +1 -0
  56. package/lib/tsconfig.test.tsbuildinfo +1 -1
  57. package/package.json +7 -7
  58. package/src/AlchemyContext.ts +0 -1
  59. package/src/Cli/commands/cloudflare.ts +5 -3
  60. package/src/Cloudflare/Providers.ts +7 -0
  61. package/src/Cloudflare/Queue/QueueConsumer.ts +0 -2
  62. package/src/Cloudflare/StateStore/Api.ts +1 -1
  63. package/src/Cloudflare/StateStore/State.ts +445 -507
  64. package/src/Cloudflare/StateStore/Store.ts +22 -35
  65. package/src/Cloudflare/Vectorize/VectorizeIndex.ts +261 -0
  66. package/src/Cloudflare/Vectorize/VectorizeIndexBinding.ts +103 -0
  67. package/src/Cloudflare/Vectorize/VectorizeMetadataIndex.ts +208 -0
  68. package/src/Cloudflare/Vectorize/index.ts +3 -0
  69. package/src/Cloudflare/Workers/WorkerAsyncBindings.ts +7 -0
  70. package/src/Cloudflare/Workers/WorkerBinding.ts +2 -0
  71. package/src/Cloudflare/index.ts +1 -0
  72. package/src/State/HttpStateStore.ts +28 -0
  73. package/src/Util/poll.ts +47 -0
@@ -18,6 +18,7 @@ export * from "./R2/index.ts";
18
18
  export * from "./SecretsStore/index.ts";
19
19
  export * from "./StateStore/index.ts";
20
20
  export * from "./Tunnel/index.ts";
21
+ export * from "./Vectorize/index.ts";
21
22
  export * from "./VpcService/index.ts";
22
23
  export * from "./Website/index.ts";
23
24
  export * from "./Workers/index.ts";
@@ -39,6 +39,34 @@ export interface HttpStateStoreProps extends HttpStateStoreCredentials {
39
39
  ) => HttpClientRequest.HttpClientRequest;
40
40
  }
41
41
 
42
+ export const checkHttpStateStoreAuth = ({
43
+ url,
44
+ authToken,
45
+ }: {
46
+ url: string;
47
+ authToken: string;
48
+ }) =>
49
+ Effect.gen(function* () {
50
+ const apiClient = yield* HttpApiClient.make(StateApi, {
51
+ baseUrl: url,
52
+ transformClient: HttpClient.mapRequest((req) =>
53
+ req.pipe(HttpClientRequest.bearerToken(authToken)),
54
+ ),
55
+ });
56
+ return yield* apiClient.state.listStacks().pipe(
57
+ Effect.map(() => true),
58
+ Effect.catchTag("Unauthorized", () => Effect.succeed(false)),
59
+ Effect.retry({
60
+ while: (error) =>
61
+ error._tag === "HttpClientError" &&
62
+ !!error.response &&
63
+ // worker can 404 for a bit on first deploy
64
+ (error.response.status === 404 || error.response.status >= 500),
65
+ schedule: Schedule.fixed(200),
66
+ }),
67
+ );
68
+ });
69
+
42
70
  export const makeHttpStateStore = ({
43
71
  url,
44
72
  authToken,
@@ -0,0 +1,47 @@
1
+ import * as Data from "effect/Data";
2
+ import * as Effect from "effect/Effect";
3
+ import * as Predicate from "effect/Predicate";
4
+ import * as Schedule from "effect/Schedule";
5
+
6
+ export class PredicateFailed extends Data.TaggedError("PredicateFailed")<{
7
+ message: string;
8
+ actual: unknown;
9
+ }> {}
10
+
11
+ export const isPredicateFailed = (e: unknown): e is PredicateFailed =>
12
+ Predicate.isTagged(e, "PredicateFailed");
13
+
14
+ /**
15
+ * Retries an effect until a predicate is met.
16
+ * @param input - The input to the poll function.
17
+ * @param input.description - The description of what is being polled; used in the error message if the predicate fails.
18
+ * @param input.effect - The effect to execute until the predicate is met.
19
+ * @param input.predicate - The predicate to check if the effect has met the desired state.
20
+ * @param input.schedule - The schedule to use for retries; defaults to every 3 seconds.
21
+ * @param input.times - The maximum number of times to poll; defaults to 50.
22
+ * @returns The value that satisfies the predicate.
23
+ */
24
+ export const poll = Effect.fn("poll")(
25
+ <A, E, R>(input: {
26
+ description?: string;
27
+ effect: Effect.Effect<A, E, R>;
28
+ predicate: (value: A) => boolean;
29
+ schedule?: Schedule.Schedule<unknown, unknown, never>;
30
+ times?: number;
31
+ }) =>
32
+ input.effect.pipe(
33
+ Effect.filterOrFail(
34
+ input.predicate,
35
+ (actual) =>
36
+ new PredicateFailed({
37
+ message: `Predicate failed: ${input.description ?? "<no description>"}`,
38
+ actual,
39
+ }),
40
+ ),
41
+ Effect.retry({
42
+ while: isPredicateFailed,
43
+ schedule: input.schedule ?? Schedule.spaced("3 seconds"),
44
+ times: input.times ?? 50,
45
+ }),
46
+ ),
47
+ );