@effect/sql-d1 4.0.0-beta.6 → 4.0.0-beta.60
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.
- package/dist/D1Client.d.ts +3 -3
- package/dist/D1Client.d.ts.map +1 -1
- package/dist/D1Client.js +13 -11
- package/dist/D1Client.js.map +1 -1
- package/package.json +5 -5
- package/src/D1Client.ts +16 -13
package/dist/D1Client.d.ts
CHANGED
|
@@ -3,11 +3,11 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import type { D1Database } from "@cloudflare/workers-types";
|
|
5
5
|
import * as Config from "effect/Config";
|
|
6
|
+
import * as Context from "effect/Context";
|
|
6
7
|
import * as Duration from "effect/Duration";
|
|
7
8
|
import * as Effect from "effect/Effect";
|
|
8
9
|
import * as Layer from "effect/Layer";
|
|
9
10
|
import type * as Scope from "effect/Scope";
|
|
10
|
-
import * as ServiceMap from "effect/ServiceMap";
|
|
11
11
|
import * as Reactivity from "effect/unstable/reactivity/Reactivity";
|
|
12
12
|
import * as Client from "effect/unstable/sql/SqlClient";
|
|
13
13
|
/**
|
|
@@ -34,7 +34,7 @@ export interface D1Client extends Client.SqlClient {
|
|
|
34
34
|
* @category tags
|
|
35
35
|
* @since 1.0.0
|
|
36
36
|
*/
|
|
37
|
-
export declare const D1Client:
|
|
37
|
+
export declare const D1Client: Context.Service<D1Client, D1Client>;
|
|
38
38
|
/**
|
|
39
39
|
* @category models
|
|
40
40
|
* @since 1.0.0
|
|
@@ -42,7 +42,7 @@ export declare const D1Client: ServiceMap.Service<D1Client, D1Client>;
|
|
|
42
42
|
export interface D1ClientConfig {
|
|
43
43
|
readonly db: D1Database;
|
|
44
44
|
readonly prepareCacheSize?: number | undefined;
|
|
45
|
-
readonly prepareCacheTTL?: Duration.
|
|
45
|
+
readonly prepareCacheTTL?: Duration.Input | undefined;
|
|
46
46
|
readonly spanAttributes?: Record<string, unknown> | undefined;
|
|
47
47
|
readonly transformResultNames?: ((str: string) => string) | undefined;
|
|
48
48
|
readonly transformQueryNames?: ((str: string) => string) | undefined;
|
package/dist/D1Client.d.ts.map
CHANGED
|
@@ -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;
|
|
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,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;;;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,qCAAuD,CAAA;AAE5E;;;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"}
|
package/dist/D1Client.js
CHANGED
|
@@ -1,16 +1,21 @@
|
|
|
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
20
|
* @category type ids
|
|
16
21
|
* @since 1.0.0
|
|
@@ -20,7 +25,7 @@ export const TypeId = "~@effect/sql-d1/D1Client";
|
|
|
20
25
|
* @category tags
|
|
21
26
|
* @since 1.0.0
|
|
22
27
|
*/
|
|
23
|
-
export const D1Client = /*#__PURE__*/
|
|
28
|
+
export const D1Client = /*#__PURE__*/Context.Service("@effect/sql-d1/D1Client");
|
|
24
29
|
/**
|
|
25
30
|
* @category constructor
|
|
26
31
|
* @since 1.0.0
|
|
@@ -36,8 +41,7 @@ export const make = options => Effect.gen(function* () {
|
|
|
36
41
|
lookup: sql => Effect.try({
|
|
37
42
|
try: () => db.prepare(sql),
|
|
38
43
|
catch: cause => new SqlError({
|
|
39
|
-
cause,
|
|
40
|
-
message: `Failed to prepare statement`
|
|
44
|
+
reason: classifyError(cause, "Failed to prepare statement", "prepare")
|
|
41
45
|
})
|
|
42
46
|
})
|
|
43
47
|
});
|
|
@@ -50,8 +54,7 @@ export const make = options => Effect.gen(function* () {
|
|
|
50
54
|
return response.results || [];
|
|
51
55
|
},
|
|
52
56
|
catch: cause => new SqlError({
|
|
53
|
-
cause,
|
|
54
|
-
message: `Failed to execute statement`
|
|
57
|
+
reason: classifyError(cause, "Failed to execute statement", "execute")
|
|
55
58
|
})
|
|
56
59
|
});
|
|
57
60
|
const runRaw = (sql, params = []) => runStatement(db.prepare(sql), params);
|
|
@@ -62,8 +65,7 @@ export const make = options => Effect.gen(function* () {
|
|
|
62
65
|
return statement.bind(...params).raw();
|
|
63
66
|
},
|
|
64
67
|
catch: cause => new SqlError({
|
|
65
|
-
cause,
|
|
66
|
-
message: `Failed to execute statement`
|
|
68
|
+
reason: classifyError(cause, "Failed to execute statement", "execute")
|
|
67
69
|
})
|
|
68
70
|
}));
|
|
69
71
|
return identity({
|
|
@@ -102,10 +104,10 @@ export const make = options => Effect.gen(function* () {
|
|
|
102
104
|
* @category layers
|
|
103
105
|
* @since 1.0.0
|
|
104
106
|
*/
|
|
105
|
-
export const layerConfig = config => Layer.
|
|
107
|
+
export const layerConfig = config => Layer.effectContext(Config.unwrap(config).asEffect().pipe(Effect.flatMap(make), Effect.map(client => Context.make(D1Client, client).pipe(Context.add(Client.SqlClient, client))))).pipe(Layer.provide(Reactivity.layer));
|
|
106
108
|
/**
|
|
107
109
|
* @category layers
|
|
108
110
|
* @since 1.0.0
|
|
109
111
|
*/
|
|
110
|
-
export const layer = config => Layer.
|
|
112
|
+
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
113
|
//# sourceMappingURL=D1Client.js.map
|
package/dist/D1Client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"D1Client.js","names":["Cache","Config","Duration","Effect","identity","Layer","
|
|
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","asEffect","pipe","client","add","SqlClient","provide","layer"],"sources":["../src/D1Client.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@effect/sql-d1",
|
|
3
|
-
"version": "4.0.0-beta.
|
|
3
|
+
"version": "4.0.0-beta.60",
|
|
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.
|
|
51
|
-
"effect": "^4.0.0-beta.
|
|
50
|
+
"miniflare": "^4.20260409.0",
|
|
51
|
+
"effect": "^4.0.0-beta.60"
|
|
52
52
|
},
|
|
53
53
|
"peerDependencies": {
|
|
54
|
-
"effect": "^4.0.0-beta.
|
|
54
|
+
"effect": "^4.0.0-beta.60"
|
|
55
55
|
},
|
|
56
56
|
"dependencies": {
|
|
57
|
-
"@cloudflare/workers-types": "^4.
|
|
57
|
+
"@cloudflare/workers-types": "^4.20260412.1"
|
|
58
58
|
},
|
|
59
59
|
"scripts": {
|
|
60
60
|
"codegen": "effect-utils codegen",
|
package/src/D1Client.ts
CHANGED
|
@@ -4,21 +4,24 @@
|
|
|
4
4
|
import type { D1Database, D1PreparedStatement } from "@cloudflare/workers-types"
|
|
5
5
|
import * as Cache from "effect/Cache"
|
|
6
6
|
import * as Config from "effect/Config"
|
|
7
|
+
import * as Context from "effect/Context"
|
|
7
8
|
import * as Duration from "effect/Duration"
|
|
8
9
|
import * as Effect from "effect/Effect"
|
|
9
10
|
import { identity } from "effect/Function"
|
|
10
11
|
import * as Layer from "effect/Layer"
|
|
11
12
|
import type * as Scope from "effect/Scope"
|
|
12
|
-
import * as ServiceMap from "effect/ServiceMap"
|
|
13
13
|
import * as Stream from "effect/Stream"
|
|
14
14
|
import * as Reactivity from "effect/unstable/reactivity/Reactivity"
|
|
15
15
|
import * as Client from "effect/unstable/sql/SqlClient"
|
|
16
16
|
import type { Connection } from "effect/unstable/sql/SqlConnection"
|
|
17
|
-
import { SqlError } from "effect/unstable/sql/SqlError"
|
|
17
|
+
import { SqlError, UnknownError } from "effect/unstable/sql/SqlError"
|
|
18
18
|
import * as Statement from "effect/unstable/sql/Statement"
|
|
19
19
|
|
|
20
20
|
const ATTR_DB_SYSTEM_NAME = "db.system.name"
|
|
21
21
|
|
|
22
|
+
const classifyError = (cause: unknown, message: string, operation: string) =>
|
|
23
|
+
new UnknownError({ cause, message, operation })
|
|
24
|
+
|
|
22
25
|
/**
|
|
23
26
|
* @category type ids
|
|
24
27
|
* @since 1.0.0
|
|
@@ -47,7 +50,7 @@ export interface D1Client extends Client.SqlClient {
|
|
|
47
50
|
* @category tags
|
|
48
51
|
* @since 1.0.0
|
|
49
52
|
*/
|
|
50
|
-
export const D1Client =
|
|
53
|
+
export const D1Client = Context.Service<D1Client>("@effect/sql-d1/D1Client")
|
|
51
54
|
|
|
52
55
|
/**
|
|
53
56
|
* @category models
|
|
@@ -56,7 +59,7 @@ export const D1Client = ServiceMap.Service<D1Client>("@effect/sql-d1/D1Client")
|
|
|
56
59
|
export interface D1ClientConfig {
|
|
57
60
|
readonly db: D1Database
|
|
58
61
|
readonly prepareCacheSize?: number | undefined
|
|
59
|
-
readonly prepareCacheTTL?: Duration.
|
|
62
|
+
readonly prepareCacheTTL?: Duration.Input | undefined
|
|
60
63
|
readonly spanAttributes?: Record<string, unknown> | undefined
|
|
61
64
|
|
|
62
65
|
readonly transformResultNames?: ((str: string) => string) | undefined
|
|
@@ -85,7 +88,7 @@ export const make = (
|
|
|
85
88
|
lookup: (sql: string) =>
|
|
86
89
|
Effect.try({
|
|
87
90
|
try: () => db.prepare(sql),
|
|
88
|
-
catch: (cause) => new SqlError({ cause,
|
|
91
|
+
catch: (cause) => new SqlError({ reason: classifyError(cause, "Failed to prepare statement", "prepare") })
|
|
89
92
|
})
|
|
90
93
|
})
|
|
91
94
|
|
|
@@ -101,7 +104,7 @@ export const make = (
|
|
|
101
104
|
}
|
|
102
105
|
return response.results || []
|
|
103
106
|
},
|
|
104
|
-
catch: (cause) => new SqlError({ cause,
|
|
107
|
+
catch: (cause) => new SqlError({ reason: classifyError(cause, "Failed to execute statement", "execute") })
|
|
105
108
|
})
|
|
106
109
|
|
|
107
110
|
const runRaw = (
|
|
@@ -134,7 +137,7 @@ export const make = (
|
|
|
134
137
|
>
|
|
135
138
|
>
|
|
136
139
|
},
|
|
137
|
-
catch: (cause) => new SqlError({ cause,
|
|
140
|
+
catch: (cause) => new SqlError({ reason: classifyError(cause, "Failed to execute statement", "execute") })
|
|
138
141
|
})
|
|
139
142
|
)
|
|
140
143
|
|
|
@@ -190,12 +193,12 @@ export const make = (
|
|
|
190
193
|
export const layerConfig = (
|
|
191
194
|
config: Config.Wrap<D1ClientConfig>
|
|
192
195
|
): Layer.Layer<D1Client | Client.SqlClient, Config.ConfigError> =>
|
|
193
|
-
Layer.
|
|
196
|
+
Layer.effectContext(
|
|
194
197
|
Config.unwrap(config).asEffect().pipe(
|
|
195
198
|
Effect.flatMap(make),
|
|
196
199
|
Effect.map((client) =>
|
|
197
|
-
|
|
198
|
-
|
|
200
|
+
Context.make(D1Client, client).pipe(
|
|
201
|
+
Context.add(Client.SqlClient, client)
|
|
199
202
|
)
|
|
200
203
|
)
|
|
201
204
|
)
|
|
@@ -208,9 +211,9 @@ export const layerConfig = (
|
|
|
208
211
|
export const layer = (
|
|
209
212
|
config: D1ClientConfig
|
|
210
213
|
): Layer.Layer<D1Client | Client.SqlClient, Config.ConfigError> =>
|
|
211
|
-
Layer.
|
|
214
|
+
Layer.effectContext(
|
|
212
215
|
Effect.map(make(config), (client) =>
|
|
213
|
-
|
|
214
|
-
|
|
216
|
+
Context.make(D1Client, client).pipe(
|
|
217
|
+
Context.add(Client.SqlClient, client)
|
|
215
218
|
))
|
|
216
219
|
).pipe(Layer.provide(Reactivity.layer))
|