alchemy 2.0.0-beta.21 → 2.0.0-beta.22

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 (35) hide show
  1. package/bin/alchemy.js +1 -1
  2. package/bin/alchemy.js.map +1 -1
  3. package/lib/Cloudflare/D1/D1Clone.d.ts +13 -0
  4. package/lib/Cloudflare/D1/D1Clone.d.ts.map +1 -0
  5. package/lib/Cloudflare/D1/D1Clone.js +31 -0
  6. package/lib/Cloudflare/D1/D1Clone.js.map +1 -0
  7. package/lib/Cloudflare/D1/D1Database.d.ts +150 -5
  8. package/lib/Cloudflare/D1/D1Database.d.ts.map +1 -1
  9. package/lib/Cloudflare/D1/D1Database.js +253 -0
  10. package/lib/Cloudflare/D1/D1Database.js.map +1 -1
  11. package/lib/Cloudflare/D1/D1Export.d.ts +24 -0
  12. package/lib/Cloudflare/D1/D1Export.d.ts.map +1 -0
  13. package/lib/Cloudflare/D1/D1Export.js +34 -0
  14. package/lib/Cloudflare/D1/D1Export.js.map +1 -0
  15. package/lib/Cloudflare/D1/D1Import.d.ts +21 -0
  16. package/lib/Cloudflare/D1/D1Import.d.ts.map +1 -0
  17. package/lib/Cloudflare/D1/D1Import.js +87 -0
  18. package/lib/Cloudflare/D1/D1Import.js.map +1 -0
  19. package/lib/Cloudflare/D1/D1Migrations.d.ts +16 -0
  20. package/lib/Cloudflare/D1/D1Migrations.d.ts.map +1 -0
  21. package/lib/Cloudflare/D1/D1Migrations.js +110 -0
  22. package/lib/Cloudflare/D1/D1Migrations.js.map +1 -0
  23. package/lib/Cloudflare/D1/D1SqlFile.d.ts +20 -0
  24. package/lib/Cloudflare/D1/D1SqlFile.d.ts.map +1 -0
  25. package/lib/Cloudflare/D1/D1SqlFile.js +46 -0
  26. package/lib/Cloudflare/D1/D1SqlFile.js.map +1 -0
  27. package/lib/Cloudflare/Providers.d.ts +1 -1
  28. package/lib/Cloudflare/Providers.d.ts.map +1 -1
  29. package/package.json +1 -1
  30. package/src/Cloudflare/D1/D1Clone.ts +42 -0
  31. package/src/Cloudflare/D1/D1Database.ts +386 -3
  32. package/src/Cloudflare/D1/D1Export.ts +70 -0
  33. package/src/Cloudflare/D1/D1Import.ts +156 -0
  34. package/src/Cloudflare/D1/D1Migrations.ts +229 -0
  35. package/src/Cloudflare/D1/D1SqlFile.ts +57 -0
@@ -0,0 +1,13 @@
1
+ import * as Effect from "effect/Effect";
2
+ export interface CloneD1DatabaseOptions {
3
+ accountId: string;
4
+ sourceDatabaseId: string;
5
+ targetDatabaseId: string;
6
+ }
7
+ /**
8
+ * Clone a D1 database by exporting from the source and importing into the
9
+ * target. Fetches the SQL dump from the export's signed URL and streams the
10
+ * payload through the import flow.
11
+ */
12
+ export declare const cloneD1Database: (options: CloneD1DatabaseOptions) => Effect.Effect<import("./D1Import.ts").ImportD1DatabaseResult, import("@distilled.cloud/axiom").ConfigError | import("@distilled.cloud/axiom").Unauthorized | import("@distilled.cloud/axiom").TooManyRequests | import("@distilled.cloud/axiom").InternalServerError | import("@distilled.cloud/axiom").BadGateway | import("@distilled.cloud/axiom").ServiceUnavailable | import("@distilled.cloud/axiom").GatewayTimeout | import("@distilled.cloud/cloudflare").CloudflareHttpError | import("@distilled.cloud/cloudflare").CloudflareParseError | import("@distilled.cloud/cloudflare").UnknownCloudflareError | import("@distilled.cloud/cloudflare").OAuthRefreshError | import("@distilled.cloud/cloudflare/d1").InvalidObjectIdentifier | import("@distilled.cloud/cloudflare/d1").InvalidRequest | import("@distilled.cloud/cloudflare/d1").DatabaseNotFound, any>;
13
+ //# sourceMappingURL=D1Clone.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"D1Clone.d.ts","sourceRoot":"","sources":["../../../src/Cloudflare/D1/D1Clone.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAMxC,MAAM,WAAW,sBAAsB;IACrC,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,EAAE,MAAM,CAAC;IACzB,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED;;;;GAIG;AACH,eAAO,MAAM,eAAe,GAAI,SAAS,sBAAsB,g1BAwB3D,CAAC"}
@@ -0,0 +1,31 @@
1
+ import * as Effect from "effect/Effect";
2
+ import * as HttpClient from "effect/unstable/http/HttpClient";
3
+ import * as HttpClientRequest from "effect/unstable/http/HttpClientRequest";
4
+ import { exportD1Database } from "./D1Export.js";
5
+ import { importD1Database } from "./D1Import.js";
6
+ /**
7
+ * Clone a D1 database by exporting from the source and importing into the
8
+ * target. Fetches the SQL dump from the export's signed URL and streams the
9
+ * payload through the import flow.
10
+ */
11
+ export const cloneD1Database = (options) => Effect.gen(function* () {
12
+ const exportResult = yield* exportD1Database({
13
+ accountId: options.accountId,
14
+ databaseId: options.sourceDatabaseId,
15
+ });
16
+ const client = yield* HttpClient.HttpClient;
17
+ const dumpRes = yield* client
18
+ .execute(HttpClientRequest.get(exportResult.signedUrl))
19
+ .pipe(Effect.orDie);
20
+ if (dumpRes.status < 200 || dumpRes.status >= 300) {
21
+ return yield* Effect.die(`Failed to fetch D1 export dump (${dumpRes.status})`);
22
+ }
23
+ const sqlData = yield* dumpRes.text.pipe(Effect.orDie);
24
+ return yield* importD1Database({
25
+ accountId: options.accountId,
26
+ databaseId: options.targetDatabaseId,
27
+ sqlData,
28
+ filename: exportResult.filename,
29
+ });
30
+ });
31
+ //# sourceMappingURL=D1Clone.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"D1Clone.js","sourceRoot":"","sources":["../../../src/Cloudflare/D1/D1Clone.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,UAAU,MAAM,iCAAiC,CAAC;AAC9D,OAAO,KAAK,iBAAiB,MAAM,wCAAwC,CAAC;AAC5E,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAQjD;;;;GAIG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,OAA+B,EAAE,EAAE,CACjE,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,YAAY,GAAG,KAAK,CAAC,CAAC,gBAAgB,CAAC;QAC3C,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,UAAU,EAAE,OAAO,CAAC,gBAAgB;KACrC,CAAC,CAAC;IAEH,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC;IAC5C,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,MAAM;SAC1B,OAAO,CAAC,iBAAiB,CAAC,GAAG,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;SACtD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACtB,IAAI,OAAO,CAAC,MAAM,GAAG,GAAG,IAAI,OAAO,CAAC,MAAM,IAAI,GAAG,EAAE,CAAC;QAClD,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,CACtB,mCAAmC,OAAO,CAAC,MAAM,GAAG,CACrD,CAAC;IACJ,CAAC;IACD,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAEvD,OAAO,KAAK,CAAC,CAAC,gBAAgB,CAAC;QAC7B,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,UAAU,EAAE,OAAO,CAAC,gBAAgB;QACpC,OAAO;QACP,QAAQ,EAAE,YAAY,CAAC,QAAQ;KAChC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,9 +1,13 @@
1
1
  import * as Provider from "../../Provider.ts";
2
2
  import { Resource } from "../../Resource.ts";
3
- import { CloudflareEnvironment } from "../CloudflareEnvironment.ts";
4
3
  import type { Providers } from "../Providers.ts";
5
4
  export type Jurisdiction = "default" | "eu" | "fedramp";
6
5
  export type PrimaryLocationHint = "wnam" | "enam" | "weur" | "eeur" | "apac" | "oc";
6
+ export type CloneSource = D1Database | {
7
+ databaseId: string;
8
+ } | {
9
+ name: string;
10
+ };
7
11
  export type DatabaseProps = {
8
12
  /**
9
13
  * Name of the database. If omitted, a unique name will be generated.
@@ -11,20 +15,72 @@ export type DatabaseProps = {
11
15
  */
12
16
  name?: string;
13
17
  /**
14
- * Optional primary location hint for the database.
18
+ * Region in which the primary copy of the data is stored. Cannot be
19
+ * changed after creation — updating this property triggers a replacement.
20
+ *
21
+ * - `wnam` — Western North America
22
+ * - `enam` — Eastern North America
23
+ * - `weur` — Western Europe
24
+ * - `eeur` — Eastern Europe
25
+ * - `apac` — Asia Pacific
26
+ * - `oc` — Oceania
15
27
  */
16
28
  primaryLocationHint?: PrimaryLocationHint;
17
29
  /**
18
- * Read replication configuration. Only mutable property during updates.
30
+ * Read replication configuration. The only mutable property after
31
+ * creation; toggling `mode` triggers an in-place update.
32
+ *
33
+ * @default { mode: "disabled" }
19
34
  */
20
35
  readReplication?: {
21
36
  mode: "auto" | "disabled";
22
37
  };
23
38
  /**
24
- * Jurisdiction where data is guaranteed to be stored.
39
+ * Jurisdiction in which the database data is guaranteed to be stored.
40
+ * Cannot be changed after creation.
41
+ *
25
42
  * @default "default"
26
43
  */
27
44
  jurisdiction?: Jurisdiction;
45
+ /**
46
+ * Directory containing `.sql` migration files. Files are sorted by their
47
+ * numeric prefix (e.g. `0001_init.sql`, `0002_add_users.sql`) and applied
48
+ * in order. Pending migrations are detected on each deploy and applied as
49
+ * part of `update`. Equivalent to wrangler's `migrations_dir`.
50
+ */
51
+ migrationsDir?: string;
52
+ /**
53
+ * Name of the table used to track applied migrations. Useful for
54
+ * compatibility with frameworks that expect a specific name (e.g.
55
+ * `drizzle_migrations`).
56
+ *
57
+ * The table schema is the wrangler-compatible
58
+ * `(id TEXT PRIMARY KEY, name TEXT, applied_at TEXT)`. A pre-existing
59
+ * legacy 2-column table is migrated in place.
60
+ *
61
+ * @default "d1_migrations"
62
+ */
63
+ migrationsTable?: string;
64
+ /**
65
+ * Paths to additional `.sql` files to import after migrations are
66
+ * applied. Each file is uploaded via Cloudflare's D1 import API and
67
+ * hashed; only files whose contents change are re-imported on subsequent
68
+ * deploys.
69
+ *
70
+ * @see https://developers.cloudflare.com/d1/best-practices/import-export-data/
71
+ */
72
+ importFiles?: string[];
73
+ /**
74
+ * Clone data from an existing database during creation by exporting the
75
+ * source and importing it into the new database. Only applied during the
76
+ * `create` phase.
77
+ *
78
+ * Accepts:
79
+ * - another `D1Database` resource (uses its `databaseId`)
80
+ * - `{ databaseId }` — clone by explicit UUID
81
+ * - `{ name }` — look up the source by name and clone it
82
+ */
83
+ clone?: CloneSource;
28
84
  };
29
85
  export type D1Database = Resource<"Cloudflare.D1Database", DatabaseProps, {
30
86
  databaseId: string;
@@ -34,6 +90,10 @@ export type D1Database = Resource<"Cloudflare.D1Database", DatabaseProps, {
34
90
  mode: "auto" | "disabled";
35
91
  } | undefined;
36
92
  accountId: string;
93
+ migrationsDir: string | undefined;
94
+ migrationsTable: string | undefined;
95
+ migrationsHashes: Record<string, string>;
96
+ importHashes: Record<string, string>;
37
97
  }, never, Providers>;
38
98
  /**
39
99
  * A Cloudflare D1 serverless SQL database built on SQLite.
@@ -48,12 +108,95 @@ export type D1Database = Resource<"Cloudflare.D1Database", DatabaseProps, {
48
108
  * ```
49
109
  *
50
110
  * @example Database with location hint
111
+ * The primary copy of the data is stored in the chosen region; reads can be
112
+ * served closer to users when read replication is enabled.
51
113
  * ```typescript
52
114
  * const db = yield* Cloudflare.D1Database("my-db", {
53
115
  * primaryLocationHint: "wnam",
54
116
  * });
55
117
  * ```
56
118
  *
119
+ * @example Database with read replication
120
+ * Read replication is the only mutable property after creation — toggling it
121
+ * triggers an update rather than a replacement.
122
+ * ```typescript
123
+ * const db = yield* Cloudflare.D1Database("my-db", {
124
+ * readReplication: { mode: "auto" },
125
+ * });
126
+ * ```
127
+ *
128
+ * @example Database in a specific jurisdiction
129
+ * ```typescript
130
+ * const db = yield* Cloudflare.D1Database("my-db", {
131
+ * jurisdiction: "eu",
132
+ * });
133
+ * ```
134
+ *
135
+ * @section Migrations
136
+ * Point `migrationsDir` at a folder of `.sql` files. Files are sorted by
137
+ * numeric prefix (e.g. `0001_`, `0002_`) and applied in order. Already-applied
138
+ * migrations are skipped on subsequent deploys; new files are detected
139
+ * automatically and applied as part of the next update.
140
+ *
141
+ * Migration tracking uses the wrangler-compatible
142
+ * `(id TEXT PRIMARY KEY, name TEXT, applied_at TEXT)` schema. The resource
143
+ * also detects and upgrades a legacy 2-column tracking table in place if one
144
+ * already exists.
145
+ *
146
+ * @example Apply migrations from a directory
147
+ * ```typescript
148
+ * const db = yield* Cloudflare.D1Database("my-db", {
149
+ * migrationsDir: "./migrations",
150
+ * });
151
+ * ```
152
+ *
153
+ * @example Custom migrations table (e.g. for Drizzle)
154
+ * ```typescript
155
+ * const db = yield* Cloudflare.D1Database("my-db", {
156
+ * migrationsDir: "./migrations",
157
+ * migrationsTable: "drizzle_migrations",
158
+ * });
159
+ * ```
160
+ *
161
+ * @section Importing SQL
162
+ * Use `importFiles` to seed the database with raw `.sql` files via Cloudflare's
163
+ * D1 import API. Each file is hashed; only files whose contents change are
164
+ * re-imported on subsequent deploys.
165
+ *
166
+ * @example Seed a database with SQL files
167
+ * ```typescript
168
+ * const db = yield* Cloudflare.D1Database("my-db", {
169
+ * importFiles: ["./seed/users.sql", "./seed/posts.sql"],
170
+ * });
171
+ * ```
172
+ *
173
+ * @section Cloning a Database
174
+ * `clone` performs a full export → import from a source database during
175
+ * creation. It accepts a `D1Database` resource, a `{ databaseId }`, or a
176
+ * `{ name }` to look up by name.
177
+ *
178
+ * @example Clone by passing the source resource directly
179
+ * ```typescript
180
+ * const source = yield* Cloudflare.D1Database("source-db");
181
+ * const cloned = yield* Cloudflare.D1Database("cloned-db", {
182
+ * clone: source,
183
+ * });
184
+ * ```
185
+ *
186
+ * @example Clone by databaseId
187
+ * ```typescript
188
+ * const cloned = yield* Cloudflare.D1Database("cloned-db", {
189
+ * clone: { databaseId: "abcdef12-3456-7890-abcd-ef1234567890" },
190
+ * });
191
+ * ```
192
+ *
193
+ * @example Clone by name
194
+ * ```typescript
195
+ * const cloned = yield* Cloudflare.D1Database("cloned-db", {
196
+ * clone: { name: "source-db" },
197
+ * });
198
+ * ```
199
+ *
57
200
  * @section Binding to a Worker
58
201
  * @example Using D1 inside a Worker
59
202
  * ```typescript
@@ -69,7 +212,9 @@ export type D1Database = Resource<"Cloudflare.D1Database", DatabaseProps, {
69
212
  * .bind(newId, name)
70
213
  * .run();
71
214
  * ```
215
+ *
216
+ * @see https://developers.cloudflare.com/d1/
72
217
  */
73
218
  export declare const D1Database: import("../../Resource.ts").ResourceClass<D1Database>;
74
- export declare const DatabaseProvider: () => import("effect/Layer").Layer<Provider.Provider<D1Database>, never, import("effect/unstable/http/HttpClient").HttpClient | import("../../Stage.ts").Stage | import("../../Stack.ts").Stack | import("@distilled.cloud/cloudflare").Credentials | CloudflareEnvironment>;
219
+ export declare const DatabaseProvider: () => import("effect/Layer").Layer<Provider.Provider<D1Database>, never, any>;
75
220
  //# sourceMappingURL=D1Database.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"D1Database.d.ts","sourceRoot":"","sources":["../../../src/Cloudflare/D1/D1Database.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,QAAQ,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AACpE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAEjD,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,IAAI,GAAG,SAAS,CAAC;AACxD,MAAM,MAAM,mBAAmB,GAC3B,MAAM,GACN,MAAM,GACN,MAAM,GACN,MAAM,GACN,MAAM,GACN,IAAI,CAAC;AAET,MAAM,MAAM,aAAa,GAAG;IAC1B;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,mBAAmB,CAAC,EAAE,mBAAmB,CAAC;IAC1C;;OAEG;IACH,eAAe,CAAC,EAAE;QAChB,IAAI,EAAE,MAAM,GAAG,UAAU,CAAC;KAC3B,CAAC;IACF;;;OAGG;IACH,YAAY,CAAC,EAAE,YAAY,CAAC;CAC7B,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG,QAAQ,CAC/B,uBAAuB,EACvB,aAAa,EACb;IACE,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,YAAY,CAAC;IAC3B,eAAe,EAAE;QAAE,IAAI,EAAE,MAAM,GAAG,UAAU,CAAA;KAAE,GAAG,SAAS,CAAC;IAC3D,SAAS,EAAE,MAAM,CAAC;CACnB,EACD,KAAK,EACL,SAAS,CACV,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,eAAO,MAAM,UAAU,uDAAgD,CAAC;AAExE,eAAO,MAAM,gBAAgB,8QA8I1B,CAAC"}
1
+ {"version":3,"file":"D1Database.d.ts","sourceRoot":"","sources":["../../../src/Cloudflare/D1/D1Database.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,QAAQ,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE7C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAMjD,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,IAAI,GAAG,SAAS,CAAC;AACxD,MAAM,MAAM,mBAAmB,GAC3B,MAAM,GACN,MAAM,GACN,MAAM,GACN,MAAM,GACN,MAAM,GACN,IAAI,CAAC;AAIT,MAAM,MAAM,WAAW,GACnB,UAAU,GACV;IAAE,UAAU,EAAE,MAAM,CAAA;CAAE,GACtB;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAErB,MAAM,MAAM,aAAa,GAAG;IAC1B;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;;;;;;;;OAUG;IACH,mBAAmB,CAAC,EAAE,mBAAmB,CAAC;IAC1C;;;;;OAKG;IACH,eAAe,CAAC,EAAE;QAChB,IAAI,EAAE,MAAM,GAAG,UAAU,CAAC;KAC3B,CAAC;IACF;;;;;OAKG;IACH,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B;;;;;OAKG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;;;;;;;;OAUG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;;;;;;OAOG;IACH,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB;;;;;;;;;OASG;IACH,KAAK,CAAC,EAAE,WAAW,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG,QAAQ,CAC/B,uBAAuB,EACvB,aAAa,EACb;IACE,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,YAAY,CAAC;IAC3B,eAAe,EAAE;QAAE,IAAI,EAAE,MAAM,GAAG,UAAU,CAAA;KAAE,GAAG,SAAS,CAAC;IAC3D,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,eAAe,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACtC,EACD,KAAK,EACL,SAAS,CACV,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuHG;AACH,eAAO,MAAM,UAAU,uDAAgD,CAAC;AAExE,eAAO,MAAM,gBAAgB,+EAoP1B,CAAC"}
@@ -5,6 +5,11 @@ import { createPhysicalName } from "../../PhysicalName.js";
5
5
  import * as Provider from "../../Provider.js";
6
6
  import { Resource } from "../../Resource.js";
7
7
  import { CloudflareEnvironment } from "../CloudflareEnvironment.js";
8
+ import { cloneD1Database } from "./D1Clone.js";
9
+ import { importD1Database } from "./D1Import.js";
10
+ import { applyMigrations } from "./D1Migrations.js";
11
+ import { listSqlFiles, readSqlFile } from "./D1SqlFile.js";
12
+ const DEFAULT_MIGRATIONS_TABLE = "d1_migrations";
8
13
  /**
9
14
  * A Cloudflare D1 serverless SQL database built on SQLite.
10
15
  *
@@ -18,12 +23,95 @@ import { CloudflareEnvironment } from "../CloudflareEnvironment.js";
18
23
  * ```
19
24
  *
20
25
  * @example Database with location hint
26
+ * The primary copy of the data is stored in the chosen region; reads can be
27
+ * served closer to users when read replication is enabled.
21
28
  * ```typescript
22
29
  * const db = yield* Cloudflare.D1Database("my-db", {
23
30
  * primaryLocationHint: "wnam",
24
31
  * });
25
32
  * ```
26
33
  *
34
+ * @example Database with read replication
35
+ * Read replication is the only mutable property after creation — toggling it
36
+ * triggers an update rather than a replacement.
37
+ * ```typescript
38
+ * const db = yield* Cloudflare.D1Database("my-db", {
39
+ * readReplication: { mode: "auto" },
40
+ * });
41
+ * ```
42
+ *
43
+ * @example Database in a specific jurisdiction
44
+ * ```typescript
45
+ * const db = yield* Cloudflare.D1Database("my-db", {
46
+ * jurisdiction: "eu",
47
+ * });
48
+ * ```
49
+ *
50
+ * @section Migrations
51
+ * Point `migrationsDir` at a folder of `.sql` files. Files are sorted by
52
+ * numeric prefix (e.g. `0001_`, `0002_`) and applied in order. Already-applied
53
+ * migrations are skipped on subsequent deploys; new files are detected
54
+ * automatically and applied as part of the next update.
55
+ *
56
+ * Migration tracking uses the wrangler-compatible
57
+ * `(id TEXT PRIMARY KEY, name TEXT, applied_at TEXT)` schema. The resource
58
+ * also detects and upgrades a legacy 2-column tracking table in place if one
59
+ * already exists.
60
+ *
61
+ * @example Apply migrations from a directory
62
+ * ```typescript
63
+ * const db = yield* Cloudflare.D1Database("my-db", {
64
+ * migrationsDir: "./migrations",
65
+ * });
66
+ * ```
67
+ *
68
+ * @example Custom migrations table (e.g. for Drizzle)
69
+ * ```typescript
70
+ * const db = yield* Cloudflare.D1Database("my-db", {
71
+ * migrationsDir: "./migrations",
72
+ * migrationsTable: "drizzle_migrations",
73
+ * });
74
+ * ```
75
+ *
76
+ * @section Importing SQL
77
+ * Use `importFiles` to seed the database with raw `.sql` files via Cloudflare's
78
+ * D1 import API. Each file is hashed; only files whose contents change are
79
+ * re-imported on subsequent deploys.
80
+ *
81
+ * @example Seed a database with SQL files
82
+ * ```typescript
83
+ * const db = yield* Cloudflare.D1Database("my-db", {
84
+ * importFiles: ["./seed/users.sql", "./seed/posts.sql"],
85
+ * });
86
+ * ```
87
+ *
88
+ * @section Cloning a Database
89
+ * `clone` performs a full export → import from a source database during
90
+ * creation. It accepts a `D1Database` resource, a `{ databaseId }`, or a
91
+ * `{ name }` to look up by name.
92
+ *
93
+ * @example Clone by passing the source resource directly
94
+ * ```typescript
95
+ * const source = yield* Cloudflare.D1Database("source-db");
96
+ * const cloned = yield* Cloudflare.D1Database("cloned-db", {
97
+ * clone: source,
98
+ * });
99
+ * ```
100
+ *
101
+ * @example Clone by databaseId
102
+ * ```typescript
103
+ * const cloned = yield* Cloudflare.D1Database("cloned-db", {
104
+ * clone: { databaseId: "abcdef12-3456-7890-abcd-ef1234567890" },
105
+ * });
106
+ * ```
107
+ *
108
+ * @example Clone by name
109
+ * ```typescript
110
+ * const cloned = yield* Cloudflare.D1Database("cloned-db", {
111
+ * clone: { name: "source-db" },
112
+ * });
113
+ * ```
114
+ *
27
115
  * @section Binding to a Worker
28
116
  * @example Using D1 inside a Worker
29
117
  * ```typescript
@@ -39,6 +127,8 @@ import { CloudflareEnvironment } from "../CloudflareEnvironment.js";
39
127
  * .bind(newId, name)
40
128
  * .run();
41
129
  * ```
130
+ *
131
+ * @see https://developers.cloudflare.com/d1/
42
132
  */
43
133
  export const D1Database = Resource("Cloudflare.D1Database");
44
134
  export const DatabaseProvider = () => Provider.effect(D1Database, Effect.gen(function* () {
@@ -48,6 +138,8 @@ export const DatabaseProvider = () => Provider.effect(D1Database, Effect.gen(fun
48
138
  const patchDb = yield* d1.patchDatabase;
49
139
  const deleteDb = yield* d1.deleteDatabase;
50
140
  const listDbs = yield* d1.listDatabases;
141
+ // rootDir for resolving relative `importFiles` paths
142
+ const rootDir = process.cwd();
51
143
  const createDatabaseName = (id, name) => Effect.gen(function* () {
52
144
  return name ?? (yield* createPhysicalName({ id }));
53
145
  });
@@ -77,6 +169,31 @@ export const DatabaseProvider = () => Provider.effect(D1Database, Effect.gen(fun
77
169
  if (oldReplicationMode !== newReplicationMode) {
78
170
  return { action: "update" };
79
171
  }
172
+ // Detect migration/import file drift.
173
+ if (news.migrationsDir) {
174
+ const newHashes = yield* hashMigrations(news.migrationsDir);
175
+ const oldHashes = output?.migrationsHashes ?? {};
176
+ if (!recordsEqual(newHashes, oldHashes)) {
177
+ return { action: "update" };
178
+ }
179
+ if ((news.migrationsTable ?? DEFAULT_MIGRATIONS_TABLE) !==
180
+ (output?.migrationsTable ?? DEFAULT_MIGRATIONS_TABLE)) {
181
+ return { action: "update" };
182
+ }
183
+ }
184
+ else if (output?.migrationsHashes &&
185
+ Object.keys(output.migrationsHashes).length > 0) {
186
+ // migrationsDir was removed but state still tracks migrations: nothing
187
+ // to do remotely (we never un-apply), but no diff needed either.
188
+ }
189
+ if (news.importFiles?.length) {
190
+ const newHashes = yield* hashImports(news.importFiles, rootDir);
191
+ const oldHashes = output?.importHashes ?? {};
192
+ if (!recordsEqual(newHashes, oldHashes)) {
193
+ return { action: "update" };
194
+ }
195
+ }
196
+ return undefined;
80
197
  }),
81
198
  read: Effect.fn(function* ({ id, output, olds }) {
82
199
  if (output?.databaseId) {
@@ -89,6 +206,10 @@ export const DatabaseProvider = () => Provider.effect(D1Database, Effect.gen(fun
89
206
  jurisdiction: output.jurisdiction,
90
207
  readReplication: db.readReplication ?? undefined,
91
208
  accountId: output.accountId,
209
+ migrationsDir: output.migrationsDir,
210
+ migrationsTable: output.migrationsTable,
211
+ migrationsHashes: output.migrationsHashes,
212
+ importHashes: output.importHashes,
92
213
  })), Effect.catchTag("DatabaseNotFound", () => Effect.succeed(undefined)));
93
214
  }
94
215
  const name = yield* createDatabaseName(id, olds?.name);
@@ -101,6 +222,10 @@ export const DatabaseProvider = () => Provider.effect(D1Database, Effect.gen(fun
101
222
  jurisdiction: (olds?.jurisdiction ?? "default"),
102
223
  readReplication: olds?.readReplication,
103
224
  accountId,
225
+ migrationsDir: olds?.migrationsDir,
226
+ migrationsTable: olds?.migrationsTable,
227
+ migrationsHashes: {},
228
+ importHashes: {},
104
229
  };
105
230
  }
106
231
  return undefined;
@@ -129,12 +254,31 @@ export const DatabaseProvider = () => Provider.effect(D1Database, Effect.gen(fun
129
254
  readReplication: news.readReplication,
130
255
  });
131
256
  }
257
+ if (news.clone) {
258
+ const sourceId = yield* resolveCloneSource(news.clone, accountId, listDbs);
259
+ yield* cloneD1Database({
260
+ accountId,
261
+ sourceDatabaseId: sourceId,
262
+ targetDatabaseId: databaseId,
263
+ });
264
+ }
265
+ const migrationsTable = news.migrationsTable ?? DEFAULT_MIGRATIONS_TABLE;
266
+ const migrationsHashes = news.migrationsDir
267
+ ? yield* runMigrations(accountId, databaseId, news.migrationsDir, migrationsTable)
268
+ : {};
269
+ const importHashes = news.importFiles?.length
270
+ ? yield* runImports(accountId, databaseId, news.importFiles, rootDir, {})
271
+ : {};
132
272
  return {
133
273
  databaseId,
134
274
  databaseName: db.name ?? name,
135
275
  jurisdiction,
136
276
  readReplication: news.readReplication,
137
277
  accountId,
278
+ migrationsDir: news.migrationsDir,
279
+ migrationsTable: news.migrationsDir ? migrationsTable : undefined,
280
+ migrationsHashes,
281
+ importHashes,
138
282
  };
139
283
  }),
140
284
  update: Effect.fn(function* ({ news = {}, output }) {
@@ -144,12 +288,25 @@ export const DatabaseProvider = () => Provider.effect(D1Database, Effect.gen(fun
144
288
  databaseId: output.databaseId,
145
289
  readReplication: { mode: replicationMode },
146
290
  });
291
+ const migrationsTable = news.migrationsTable ??
292
+ output.migrationsTable ??
293
+ DEFAULT_MIGRATIONS_TABLE;
294
+ const migrationsHashes = news.migrationsDir
295
+ ? yield* runMigrations(output.accountId, output.databaseId, news.migrationsDir, migrationsTable)
296
+ : output.migrationsHashes;
297
+ const importHashes = news.importFiles?.length
298
+ ? yield* runImports(output.accountId, output.databaseId, news.importFiles, rootDir, output.importHashes ?? {})
299
+ : {};
147
300
  return {
148
301
  databaseId: updated.uuid ?? output.databaseId,
149
302
  databaseName: updated.name ?? output.databaseName,
150
303
  jurisdiction: output.jurisdiction,
151
304
  readReplication: news.readReplication,
152
305
  accountId: output.accountId,
306
+ migrationsDir: news.migrationsDir,
307
+ migrationsTable: news.migrationsDir ? migrationsTable : undefined,
308
+ migrationsHashes,
309
+ importHashes,
153
310
  };
154
311
  }),
155
312
  delete: Effect.fn(function* ({ output }) {
@@ -160,4 +317,100 @@ export const DatabaseProvider = () => Provider.effect(D1Database, Effect.gen(fun
160
317
  }),
161
318
  };
162
319
  }));
320
+ /**
321
+ * Resolve a clone source spec into a concrete database UUID. Looks up by
322
+ * name through `listDatabases` when only a name is provided.
323
+ */
324
+ const resolveCloneSource = (source, accountId, listDbs) => Effect.gen(function* () {
325
+ if ("databaseId" in source && source.databaseId) {
326
+ // At lifecycle time, Output<string> attributes have resolved to strings.
327
+ return source.databaseId;
328
+ }
329
+ if ("name" in source && source.name) {
330
+ const name = source.name;
331
+ const dbs = yield* listDbs({ accountId, name });
332
+ const match = dbs.result.find((db) => db.name === name);
333
+ if (!match?.uuid) {
334
+ return yield* Effect.die(`Source database "${name}" not found for cloning`);
335
+ }
336
+ return match.uuid;
337
+ }
338
+ return yield* Effect.die("Invalid clone source: must provide databaseId or name");
339
+ });
340
+ /**
341
+ * Read all migration files from `migrationsDir`, run pending migrations,
342
+ * and return the per-file content hashes for state tracking.
343
+ */
344
+ const runMigrations = (accountId, databaseId, migrationsDir, migrationsTable) => Effect.gen(function* () {
345
+ const files = yield* listSqlFiles(migrationsDir);
346
+ if (files.length > 0) {
347
+ yield* applyMigrations({
348
+ accountId,
349
+ databaseId,
350
+ migrationsTable,
351
+ migrationsFiles: files,
352
+ });
353
+ }
354
+ const hashes = {};
355
+ for (const file of files)
356
+ hashes[file.id] = file.hash;
357
+ return hashes;
358
+ });
359
+ /**
360
+ * Read each `importFiles` entry and run it through the D1 import flow,
361
+ * skipping files whose hash matches the previously-imported hash.
362
+ */
363
+ const runImports = (accountId, databaseId, importFiles, rootDir, previous) => Effect.gen(function* () {
364
+ const hashes = { ...previous };
365
+ for (const filePath of importFiles) {
366
+ const file = yield* readSqlFile(rootDir, filePath);
367
+ if (previous[filePath] === file.hash) {
368
+ hashes[filePath] = file.hash;
369
+ continue;
370
+ }
371
+ yield* importD1Database({
372
+ accountId,
373
+ databaseId,
374
+ sqlData: file.sql,
375
+ filename: file.id,
376
+ });
377
+ hashes[filePath] = file.hash;
378
+ }
379
+ // Drop entries for files no longer listed.
380
+ const tracked = new Set(importFiles);
381
+ for (const key of Object.keys(hashes)) {
382
+ if (!tracked.has(key))
383
+ delete hashes[key];
384
+ }
385
+ return hashes;
386
+ });
387
+ /**
388
+ * Hash all `.sql` files in `migrationsDir` without applying them; used by
389
+ * `diff` to detect drift relative to previously-applied state.
390
+ */
391
+ const hashMigrations = (migrationsDir) => listSqlFiles(migrationsDir).pipe(Effect.map((files) => {
392
+ const hashes = {};
393
+ for (const file of files)
394
+ hashes[file.id] = file.hash;
395
+ return hashes;
396
+ }));
397
+ const hashImports = (importFiles, rootDir) => Effect.gen(function* () {
398
+ const hashes = {};
399
+ for (const filePath of importFiles) {
400
+ const file = yield* readSqlFile(rootDir, filePath);
401
+ hashes[filePath] = file.hash;
402
+ }
403
+ return hashes;
404
+ });
405
+ const recordsEqual = (a, b) => {
406
+ const aKeys = Object.keys(a);
407
+ const bKeys = Object.keys(b);
408
+ if (aKeys.length !== bKeys.length)
409
+ return false;
410
+ for (const k of aKeys) {
411
+ if (a[k] !== b[k])
412
+ return false;
413
+ }
414
+ return true;
415
+ };
163
416
  //# sourceMappingURL=D1Database.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"D1Database.js","sourceRoot":"","sources":["../../../src/Cloudflare/D1/D1Database.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"D1Database.js","sourceRoot":"","sources":["../../../src/Cloudflare/D1/D1Database.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ import * as d1 from "@distilled.cloud/cloudflare/d1";
2
+ import * as Effect from "effect/Effect";
3
+ import type * as HttpClient from "effect/unstable/http/HttpClient";
4
+ import type { Credentials } from "@distilled.cloud/cloudflare/Credentials";
5
+ export interface ExportD1DatabaseOptions {
6
+ accountId: string;
7
+ databaseId: string;
8
+ dumpOptions?: {
9
+ tables?: string[];
10
+ noSchema?: boolean;
11
+ noData?: boolean;
12
+ };
13
+ }
14
+ export interface ExportD1DatabaseResult {
15
+ filename: string;
16
+ signedUrl: string;
17
+ }
18
+ /**
19
+ * Initiates an export of a Cloudflare D1 database and returns a signed
20
+ * download URL. Recursively polls with the bookmark until the export
21
+ * completes or fails.
22
+ */
23
+ export declare const exportD1Database: (options: ExportD1DatabaseOptions) => Effect.Effect<ExportD1DatabaseResult, d1.ExportDatabaseError, Credentials | HttpClient.HttpClient>;
24
+ //# sourceMappingURL=D1Export.d.ts.map