@effect/sql-d1 4.0.0-beta.8 → 4.0.0-beta.81

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.
@@ -1,28 +1,43 @@
1
1
  /**
2
- * @since 1.0.0
2
+ * Cloudflare D1 client implementation for Effect SQL, backed by a Workers `D1Database` binding.
3
+ *
4
+ * This module adapts a Cloudflare D1 database binding into both the
5
+ * D1-specific `D1Client` service and the generic Effect `SqlClient` service.
6
+ * It uses the SQLite statement compiler, caches prepared statements, maps D1
7
+ * failures to `SqlError`, and provides direct or config-backed layers.
8
+ * Transactions, streaming queries, and `updateValues` are not supported by this
9
+ * driver.
10
+ *
11
+ * @since 4.0.0
3
12
  */
4
13
  import type { D1Database } from "@cloudflare/workers-types";
5
14
  import * as Config from "effect/Config";
15
+ import * as Context from "effect/Context";
6
16
  import * as Duration from "effect/Duration";
7
17
  import * as Effect from "effect/Effect";
8
18
  import * as Layer from "effect/Layer";
9
19
  import type * as Scope from "effect/Scope";
10
- import * as ServiceMap from "effect/ServiceMap";
11
20
  import * as Reactivity from "effect/unstable/reactivity/Reactivity";
12
21
  import * as Client from "effect/unstable/sql/SqlClient";
13
22
  /**
14
- * @category type ids
15
- * @since 1.0.0
23
+ * Unique runtime identifier used to tag `D1Client` values.
24
+ *
25
+ * @category type IDs
26
+ * @since 4.0.0
16
27
  */
17
28
  export declare const TypeId: TypeId;
18
29
  /**
19
- * @category type ids
20
- * @since 1.0.0
30
+ * Type-level literal for the `D1Client` runtime identifier.
31
+ *
32
+ * @category type IDs
33
+ * @since 4.0.0
21
34
  */
22
35
  export type TypeId = "~@effect/sql-d1/D1Client";
23
36
  /**
37
+ * Cloudflare D1 SQL client service, extending `SqlClient` with its D1 configuration and no `updateValues` support.
38
+ *
24
39
  * @category models
25
- * @since 1.0.0
40
+ * @since 4.0.0
26
41
  */
27
42
  export interface D1Client extends Client.SqlClient {
28
43
  readonly [TypeId]: TypeId;
@@ -31,13 +46,22 @@ export interface D1Client extends Client.SqlClient {
31
46
  readonly updateValues: never;
32
47
  }
33
48
  /**
34
- * @category tags
35
- * @since 1.0.0
49
+ * Service tag for the Cloudflare D1 SQL client.
50
+ *
51
+ * **When to use**
52
+ *
53
+ * Use to access or provide a Cloudflare D1 SQL client through the Effect
54
+ * context.
55
+ *
56
+ * @category services
57
+ * @since 4.0.0
36
58
  */
37
- export declare const D1Client: ServiceMap.Service<D1Client, D1Client>;
59
+ export declare const D1Client: Context.Service<D1Client, D1Client>;
38
60
  /**
61
+ * Configuration for a Cloudflare D1 client, including the `D1Database`, prepared statement cache settings, span attributes, and query/result name transforms.
62
+ *
39
63
  * @category models
40
- * @since 1.0.0
64
+ * @since 4.0.0
41
65
  */
42
66
  export interface D1ClientConfig {
43
67
  readonly db: D1Database;
@@ -48,18 +72,24 @@ export interface D1ClientConfig {
48
72
  readonly transformQueryNames?: ((str: string) => string) | undefined;
49
73
  }
50
74
  /**
51
- * @category constructor
52
- * @since 1.0.0
75
+ * Creates a scoped Cloudflare D1 SQL client. Prepared statements are cached, while transactions and streaming queries are not supported by this driver.
76
+ *
77
+ * @category constructors
78
+ * @since 4.0.0
53
79
  */
54
80
  export declare const make: (options: D1ClientConfig) => Effect.Effect<D1Client, never, Scope.Scope | Reactivity.Reactivity>;
55
81
  /**
82
+ * Creates a layer from a `Config`-wrapped D1 client configuration, providing both `D1Client` and `SqlClient`.
83
+ *
56
84
  * @category layers
57
- * @since 1.0.0
85
+ * @since 4.0.0
58
86
  */
59
87
  export declare const layerConfig: (config: Config.Wrap<D1ClientConfig>) => Layer.Layer<D1Client | Client.SqlClient, Config.ConfigError>;
60
88
  /**
89
+ * Creates a layer from a concrete D1 client configuration, providing both `D1Client` and `SqlClient`.
90
+ *
61
91
  * @category layers
62
- * @since 1.0.0
92
+ * @since 4.0.0
63
93
  */
64
94
  export declare const layer: (config: D1ClientConfig) => Layer.Layer<D1Client | Client.SqlClient, Config.ConfigError>;
65
95
  //# sourceMappingURL=D1Client.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"D1Client.d.ts","sourceRoot":"","sources":["../src/D1Client.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,UAAU,EAAuB,MAAM,2BAA2B,CAAA;AAEhF,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,QAAQ,MAAM,iBAAiB,CAAA;AAC3C,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAEvC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AACrC,OAAO,KAAK,KAAK,KAAK,MAAM,cAAc,CAAA;AAC1C,OAAO,KAAK,UAAU,MAAM,mBAAmB,CAAA;AAE/C,OAAO,KAAK,UAAU,MAAM,uCAAuC,CAAA;AACnE,OAAO,KAAK,MAAM,MAAM,+BAA+B,CAAA;AAOvD;;;GAGG;AACH,eAAO,MAAM,MAAM,EAAE,MAAmC,CAAA;AAExD;;;GAGG;AACH,MAAM,MAAM,MAAM,GAAG,0BAA0B,CAAA;AAE/C;;;GAGG;AACH,MAAM,WAAW,QAAS,SAAQ,MAAM,CAAC,SAAS;IAChD,QAAQ,CAAC,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAA;IAE/B,0BAA0B;IAC1B,QAAQ,CAAC,YAAY,EAAE,KAAK,CAAA;CAC7B;AAED;;;GAGG;AACH,eAAO,MAAM,QAAQ,wCAA0D,CAAA;AAE/E;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,EAAE,EAAE,UAAU,CAAA;IACvB,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAC9C,QAAQ,CAAC,eAAe,CAAC,EAAE,QAAQ,CAAC,KAAK,GAAG,SAAS,CAAA;IACrD,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAA;IAE7D,QAAQ,CAAC,oBAAoB,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAC,GAAG,SAAS,CAAA;IACrE,QAAQ,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAC,GAAG,SAAS,CAAA;CACrE;AAED;;;GAGG;AACH,eAAO,MAAM,IAAI,GACf,SAAS,cAAc,KACtB,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,GAAG,UAAU,CAAC,UAAU,CAgHjE,CAAA;AAEJ;;;GAGG;AACH,eAAO,MAAM,WAAW,GACtB,QAAQ,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,KAClC,KAAK,CAAC,KAAK,CAAC,QAAQ,GAAG,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,WAAW,CAUrB,CAAA;AAEzC;;;GAGG;AACH,eAAO,MAAM,KAAK,GAChB,QAAQ,cAAc,KACrB,KAAK,CAAC,KAAK,CAAC,QAAQ,GAAG,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,WAAW,CAMrB,CAAA"}
1
+ {"version":3,"file":"D1Client.d.ts","sourceRoot":"","sources":["../src/D1Client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,KAAK,EAAE,UAAU,EAAuB,MAAM,2BAA2B,CAAA;AAEhF,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAA;AACzC,OAAO,KAAK,QAAQ,MAAM,iBAAiB,CAAA;AAC3C,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAEvC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AACrC,OAAO,KAAK,KAAK,KAAK,MAAM,cAAc,CAAA;AAE1C,OAAO,KAAK,UAAU,MAAM,uCAAuC,CAAA;AACnE,OAAO,KAAK,MAAM,MAAM,+BAA+B,CAAA;AAUvD;;;;;GAKG;AACH,eAAO,MAAM,MAAM,EAAE,MAAmC,CAAA;AAExD;;;;;GAKG;AACH,MAAM,MAAM,MAAM,GAAG,0BAA0B,CAAA;AAE/C;;;;;GAKG;AACH,MAAM,WAAW,QAAS,SAAQ,MAAM,CAAC,SAAS;IAChD,QAAQ,CAAC,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAA;IAE/B,0BAA0B;IAC1B,QAAQ,CAAC,YAAY,EAAE,KAAK,CAAA;CAC7B;AAED;;;;;;;;;;GAUG;AACH,eAAO,MAAM,QAAQ,qCAAuD,CAAA;AAE5E;;;;;GAKG;AACH,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,EAAE,EAAE,UAAU,CAAA;IACvB,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAC9C,QAAQ,CAAC,eAAe,CAAC,EAAE,QAAQ,CAAC,KAAK,GAAG,SAAS,CAAA;IACrD,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAA;IAE7D,QAAQ,CAAC,oBAAoB,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAC,GAAG,SAAS,CAAA;IACrE,QAAQ,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAC,GAAG,SAAS,CAAA;CACrE;AAED;;;;;GAKG;AACH,eAAO,MAAM,IAAI,GACf,SAAS,cAAc,KACtB,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,GAAG,UAAU,CAAC,UAAU,CAgHjE,CAAA;AAEJ;;;;;GAKG;AACH,eAAO,MAAM,WAAW,GACtB,QAAQ,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,KAClC,KAAK,CAAC,KAAK,CAAC,QAAQ,GAAG,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,WAAW,CAUrB,CAAA;AAEzC;;;;;GAKG;AACH,eAAO,MAAM,KAAK,GAChB,QAAQ,cAAc,KACrB,KAAK,CAAC,KAAK,CAAC,QAAQ,GAAG,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,WAAW,CAMrB,CAAA"}
package/dist/D1Client.js CHANGED
@@ -1,29 +1,45 @@
1
1
  import * as Cache from "effect/Cache";
2
2
  import * as Config from "effect/Config";
3
+ import * as Context from "effect/Context";
3
4
  import * as Duration from "effect/Duration";
4
5
  import * as Effect from "effect/Effect";
5
6
  import { identity } from "effect/Function";
6
7
  import * as Layer from "effect/Layer";
7
- import * as ServiceMap from "effect/ServiceMap";
8
8
  import * as Stream from "effect/Stream";
9
9
  import * as Reactivity from "effect/unstable/reactivity/Reactivity";
10
10
  import * as Client from "effect/unstable/sql/SqlClient";
11
- import { SqlError } from "effect/unstable/sql/SqlError";
11
+ import { SqlError, UnknownError } from "effect/unstable/sql/SqlError";
12
12
  import * as Statement from "effect/unstable/sql/Statement";
13
13
  const ATTR_DB_SYSTEM_NAME = "db.system.name";
14
+ const classifyError = (cause, message, operation) => new UnknownError({
15
+ cause,
16
+ message,
17
+ operation
18
+ });
14
19
  /**
15
- * @category type ids
16
- * @since 1.0.0
20
+ * Unique runtime identifier used to tag `D1Client` values.
21
+ *
22
+ * @category type IDs
23
+ * @since 4.0.0
17
24
  */
18
25
  export const TypeId = "~@effect/sql-d1/D1Client";
19
26
  /**
20
- * @category tags
21
- * @since 1.0.0
27
+ * Service tag for the Cloudflare D1 SQL client.
28
+ *
29
+ * **When to use**
30
+ *
31
+ * Use to access or provide a Cloudflare D1 SQL client through the Effect
32
+ * context.
33
+ *
34
+ * @category services
35
+ * @since 4.0.0
22
36
  */
23
- export const D1Client = /*#__PURE__*/ServiceMap.Service("@effect/sql-d1/D1Client");
37
+ export const D1Client = /*#__PURE__*/Context.Service("@effect/sql-d1/D1Client");
24
38
  /**
25
- * @category constructor
26
- * @since 1.0.0
39
+ * Creates a scoped Cloudflare D1 SQL client. Prepared statements are cached, while transactions and streaming queries are not supported by this driver.
40
+ *
41
+ * @category constructors
42
+ * @since 4.0.0
27
43
  */
28
44
  export const make = options => Effect.gen(function* () {
29
45
  const compiler = Statement.makeCompilerSqlite(options.transformQueryNames);
@@ -36,8 +52,7 @@ export const make = options => Effect.gen(function* () {
36
52
  lookup: sql => Effect.try({
37
53
  try: () => db.prepare(sql),
38
54
  catch: cause => new SqlError({
39
- cause,
40
- message: `Failed to prepare statement`
55
+ reason: classifyError(cause, "Failed to prepare statement", "prepare")
41
56
  })
42
57
  })
43
58
  });
@@ -50,8 +65,7 @@ export const make = options => Effect.gen(function* () {
50
65
  return response.results || [];
51
66
  },
52
67
  catch: cause => new SqlError({
53
- cause,
54
- message: `Failed to execute statement`
68
+ reason: classifyError(cause, "Failed to execute statement", "execute")
55
69
  })
56
70
  });
57
71
  const runRaw = (sql, params = []) => runStatement(db.prepare(sql), params);
@@ -62,8 +76,7 @@ export const make = options => Effect.gen(function* () {
62
76
  return statement.bind(...params).raw();
63
77
  },
64
78
  catch: cause => new SqlError({
65
- cause,
66
- message: `Failed to execute statement`
79
+ reason: classifyError(cause, "Failed to execute statement", "execute")
67
80
  })
68
81
  }));
69
82
  return identity({
@@ -99,13 +112,17 @@ export const make = options => Effect.gen(function* () {
99
112
  });
100
113
  });
101
114
  /**
115
+ * Creates a layer from a `Config`-wrapped D1 client configuration, providing both `D1Client` and `SqlClient`.
116
+ *
102
117
  * @category layers
103
- * @since 1.0.0
118
+ * @since 4.0.0
104
119
  */
105
- export const layerConfig = config => Layer.effectServices(Config.unwrap(config).asEffect().pipe(Effect.flatMap(make), Effect.map(client => ServiceMap.make(D1Client, client).pipe(ServiceMap.add(Client.SqlClient, client))))).pipe(Layer.provide(Reactivity.layer));
120
+ export const layerConfig = config => Layer.effectContext(Config.unwrap(config).pipe(Effect.flatMap(make), Effect.map(client => Context.make(D1Client, client).pipe(Context.add(Client.SqlClient, client))))).pipe(Layer.provide(Reactivity.layer));
106
121
  /**
122
+ * Creates a layer from a concrete D1 client configuration, providing both `D1Client` and `SqlClient`.
123
+ *
107
124
  * @category layers
108
- * @since 1.0.0
125
+ * @since 4.0.0
109
126
  */
110
- export const layer = config => Layer.effectServices(Effect.map(make(config), client => ServiceMap.make(D1Client, client).pipe(ServiceMap.add(Client.SqlClient, client)))).pipe(Layer.provide(Reactivity.layer));
127
+ export const layer = config => Layer.effectContext(Effect.map(make(config), client => Context.make(D1Client, client).pipe(Context.add(Client.SqlClient, client)))).pipe(Layer.provide(Reactivity.layer));
111
128
  //# sourceMappingURL=D1Client.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"D1Client.js","names":["Cache","Config","Duration","Effect","identity","Layer","ServiceMap","Stream","Reactivity","Client","SqlError","Statement","ATTR_DB_SYSTEM_NAME","TypeId","D1Client","Service","make","options","gen","compiler","makeCompilerSqlite","transformQueryNames","transformRows","transformResultNames","defaultTransforms","array","undefined","makeConnection","db","prepareCache","capacity","prepareCacheSize","timeToLive","prepareCacheTTL","minutes","lookup","sql","try","prepare","catch","cause","message","runStatement","statement","params","tryPromise","response","bind","all","error","results","runRaw","runCached","flatMap","get","s","runUncached","runValues","raw","execute","map","executeRaw","executeValues","executeUnprepared","executeStream","_sql","_params","die","connection","acquirer","succeed","transactionAcquirer","Object","assign","spanAttributes","entries","config","layerConfig","effectServices","unwrap","asEffect","pipe","client","add","SqlClient","provide","layer"],"sources":["../src/D1Client.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"D1Client.js","names":["Cache","Config","Context","Duration","Effect","identity","Layer","Stream","Reactivity","Client","SqlError","UnknownError","Statement","ATTR_DB_SYSTEM_NAME","classifyError","cause","message","operation","TypeId","D1Client","Service","make","options","gen","compiler","makeCompilerSqlite","transformQueryNames","transformRows","transformResultNames","defaultTransforms","array","undefined","makeConnection","db","prepareCache","capacity","prepareCacheSize","timeToLive","prepareCacheTTL","minutes","lookup","sql","try","prepare","catch","reason","runStatement","statement","params","tryPromise","response","bind","all","error","results","runRaw","runCached","flatMap","get","s","runUncached","runValues","raw","execute","map","executeRaw","executeValues","executeUnprepared","executeStream","_sql","_params","die","connection","acquirer","succeed","transactionAcquirer","Object","assign","spanAttributes","entries","config","layerConfig","effectContext","unwrap","pipe","client","add","SqlClient","provide","layer"],"sources":["../src/D1Client.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
package/dist/index.d.ts CHANGED
@@ -1,8 +1,8 @@
1
1
  /**
2
- * @since 1.0.0
2
+ * @since 4.0.0
3
3
  */
4
4
  /**
5
- * @since 1.0.0
5
+ * @since 4.0.0
6
6
  */
7
7
  export * as D1Client from "./D1Client.ts";
8
8
  //# sourceMappingURL=index.d.ts.map
package/dist/index.js CHANGED
@@ -1,9 +1,9 @@
1
1
  /**
2
- * @since 1.0.0
2
+ * @since 4.0.0
3
3
  */
4
4
  // @barrel: Auto-generated exports. Do not edit manually.
5
5
  /**
6
- * @since 1.0.0
6
+ * @since 4.0.0
7
7
  */
8
8
  export * as D1Client from "./D1Client.js";
9
9
  //# sourceMappingURL=index.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@effect/sql-d1",
3
- "version": "4.0.0-beta.8",
3
+ "version": "4.0.0-beta.81",
4
4
  "type": "module",
5
5
  "license": "MIT",
6
6
  "description": "A Cloudflare D1 integration for Effect",
@@ -47,14 +47,14 @@
47
47
  "provenance": true
48
48
  },
49
49
  "devDependencies": {
50
- "miniflare": "^4.20260128.0",
51
- "effect": "^4.0.0-beta.8"
50
+ "miniflare": "^4.20260507.1",
51
+ "effect": "^4.0.0-beta.81"
52
52
  },
53
53
  "peerDependencies": {
54
- "effect": "^4.0.0-beta.8"
54
+ "effect": "^4.0.0-beta.81"
55
55
  },
56
56
  "dependencies": {
57
- "@cloudflare/workers-types": "^4.20260131.0"
57
+ "@cloudflare/workers-types": "^4.20260511.1"
58
58
  },
59
59
  "scripts": {
60
60
  "codegen": "effect-utils codegen",
package/src/D1Client.ts CHANGED
@@ -1,39 +1,57 @@
1
1
  /**
2
- * @since 1.0.0
2
+ * Cloudflare D1 client implementation for Effect SQL, backed by a Workers `D1Database` binding.
3
+ *
4
+ * This module adapts a Cloudflare D1 database binding into both the
5
+ * D1-specific `D1Client` service and the generic Effect `SqlClient` service.
6
+ * It uses the SQLite statement compiler, caches prepared statements, maps D1
7
+ * failures to `SqlError`, and provides direct or config-backed layers.
8
+ * Transactions, streaming queries, and `updateValues` are not supported by this
9
+ * driver.
10
+ *
11
+ * @since 4.0.0
3
12
  */
4
13
  import type { D1Database, D1PreparedStatement } from "@cloudflare/workers-types"
5
14
  import * as Cache from "effect/Cache"
6
15
  import * as Config from "effect/Config"
16
+ import * as Context from "effect/Context"
7
17
  import * as Duration from "effect/Duration"
8
18
  import * as Effect from "effect/Effect"
9
19
  import { identity } from "effect/Function"
10
20
  import * as Layer from "effect/Layer"
11
21
  import type * as Scope from "effect/Scope"
12
- import * as ServiceMap from "effect/ServiceMap"
13
22
  import * as Stream from "effect/Stream"
14
23
  import * as Reactivity from "effect/unstable/reactivity/Reactivity"
15
24
  import * as Client from "effect/unstable/sql/SqlClient"
16
25
  import type { Connection } from "effect/unstable/sql/SqlConnection"
17
- import { SqlError } from "effect/unstable/sql/SqlError"
26
+ import { SqlError, UnknownError } from "effect/unstable/sql/SqlError"
18
27
  import * as Statement from "effect/unstable/sql/Statement"
19
28
 
20
29
  const ATTR_DB_SYSTEM_NAME = "db.system.name"
21
30
 
31
+ const classifyError = (cause: unknown, message: string, operation: string) =>
32
+ new UnknownError({ cause, message, operation })
33
+
22
34
  /**
23
- * @category type ids
24
- * @since 1.0.0
35
+ * Unique runtime identifier used to tag `D1Client` values.
36
+ *
37
+ * @category type IDs
38
+ * @since 4.0.0
25
39
  */
26
40
  export const TypeId: TypeId = "~@effect/sql-d1/D1Client"
27
41
 
28
42
  /**
29
- * @category type ids
30
- * @since 1.0.0
43
+ * Type-level literal for the `D1Client` runtime identifier.
44
+ *
45
+ * @category type IDs
46
+ * @since 4.0.0
31
47
  */
32
48
  export type TypeId = "~@effect/sql-d1/D1Client"
33
49
 
34
50
  /**
51
+ * Cloudflare D1 SQL client service, extending `SqlClient` with its D1 configuration and no `updateValues` support.
52
+ *
35
53
  * @category models
36
- * @since 1.0.0
54
+ * @since 4.0.0
37
55
  */
38
56
  export interface D1Client extends Client.SqlClient {
39
57
  readonly [TypeId]: TypeId
@@ -44,14 +62,23 @@ export interface D1Client extends Client.SqlClient {
44
62
  }
45
63
 
46
64
  /**
47
- * @category tags
48
- * @since 1.0.0
65
+ * Service tag for the Cloudflare D1 SQL client.
66
+ *
67
+ * **When to use**
68
+ *
69
+ * Use to access or provide a Cloudflare D1 SQL client through the Effect
70
+ * context.
71
+ *
72
+ * @category services
73
+ * @since 4.0.0
49
74
  */
50
- export const D1Client = ServiceMap.Service<D1Client>("@effect/sql-d1/D1Client")
75
+ export const D1Client = Context.Service<D1Client>("@effect/sql-d1/D1Client")
51
76
 
52
77
  /**
78
+ * Configuration for a Cloudflare D1 client, including the `D1Database`, prepared statement cache settings, span attributes, and query/result name transforms.
79
+ *
53
80
  * @category models
54
- * @since 1.0.0
81
+ * @since 4.0.0
55
82
  */
56
83
  export interface D1ClientConfig {
57
84
  readonly db: D1Database
@@ -64,8 +91,10 @@ export interface D1ClientConfig {
64
91
  }
65
92
 
66
93
  /**
67
- * @category constructor
68
- * @since 1.0.0
94
+ * Creates a scoped Cloudflare D1 SQL client. Prepared statements are cached, while transactions and streaming queries are not supported by this driver.
95
+ *
96
+ * @category constructors
97
+ * @since 4.0.0
69
98
  */
70
99
  export const make = (
71
100
  options: D1ClientConfig
@@ -85,7 +114,7 @@ export const make = (
85
114
  lookup: (sql: string) =>
86
115
  Effect.try({
87
116
  try: () => db.prepare(sql),
88
- catch: (cause) => new SqlError({ cause, message: `Failed to prepare statement` })
117
+ catch: (cause) => new SqlError({ reason: classifyError(cause, "Failed to prepare statement", "prepare") })
89
118
  })
90
119
  })
91
120
 
@@ -101,7 +130,7 @@ export const make = (
101
130
  }
102
131
  return response.results || []
103
132
  },
104
- catch: (cause) => new SqlError({ cause, message: `Failed to execute statement` })
133
+ catch: (cause) => new SqlError({ reason: classifyError(cause, "Failed to execute statement", "execute") })
105
134
  })
106
135
 
107
136
  const runRaw = (
@@ -134,7 +163,7 @@ export const make = (
134
163
  >
135
164
  >
136
165
  },
137
- catch: (cause) => new SqlError({ cause, message: `Failed to execute statement` })
166
+ catch: (cause) => new SqlError({ reason: classifyError(cause, "Failed to execute statement", "execute") })
138
167
  })
139
168
  )
140
169
 
@@ -184,33 +213,37 @@ export const make = (
184
213
  })
185
214
 
186
215
  /**
216
+ * Creates a layer from a `Config`-wrapped D1 client configuration, providing both `D1Client` and `SqlClient`.
217
+ *
187
218
  * @category layers
188
- * @since 1.0.0
219
+ * @since 4.0.0
189
220
  */
190
221
  export const layerConfig = (
191
222
  config: Config.Wrap<D1ClientConfig>
192
223
  ): Layer.Layer<D1Client | Client.SqlClient, Config.ConfigError> =>
193
- Layer.effectServices(
194
- Config.unwrap(config).asEffect().pipe(
224
+ Layer.effectContext(
225
+ Config.unwrap(config).pipe(
195
226
  Effect.flatMap(make),
196
227
  Effect.map((client) =>
197
- ServiceMap.make(D1Client, client).pipe(
198
- ServiceMap.add(Client.SqlClient, client)
228
+ Context.make(D1Client, client).pipe(
229
+ Context.add(Client.SqlClient, client)
199
230
  )
200
231
  )
201
232
  )
202
233
  ).pipe(Layer.provide(Reactivity.layer))
203
234
 
204
235
  /**
236
+ * Creates a layer from a concrete D1 client configuration, providing both `D1Client` and `SqlClient`.
237
+ *
205
238
  * @category layers
206
- * @since 1.0.0
239
+ * @since 4.0.0
207
240
  */
208
241
  export const layer = (
209
242
  config: D1ClientConfig
210
243
  ): Layer.Layer<D1Client | Client.SqlClient, Config.ConfigError> =>
211
- Layer.effectServices(
244
+ Layer.effectContext(
212
245
  Effect.map(make(config), (client) =>
213
- ServiceMap.make(D1Client, client).pipe(
214
- ServiceMap.add(Client.SqlClient, client)
246
+ Context.make(D1Client, client).pipe(
247
+ Context.add(Client.SqlClient, client)
215
248
  ))
216
249
  ).pipe(Layer.provide(Reactivity.layer))
package/src/index.ts CHANGED
@@ -1,10 +1,10 @@
1
1
  /**
2
- * @since 1.0.0
2
+ * @since 4.0.0
3
3
  */
4
4
 
5
5
  // @barrel: Auto-generated exports. Do not edit manually.
6
6
 
7
7
  /**
8
- * @since 1.0.0
8
+ * @since 4.0.0
9
9
  */
10
10
  export * as D1Client from "./D1Client.ts"