@effect/sql-sqlite-do 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/SqliteClient.d.ts +2 -2
- package/dist/SqliteClient.d.ts.map +1 -1
- package/dist/SqliteClient.js +12 -10
- package/dist/SqliteClient.js.map +1 -1
- package/package.json +4 -4
- package/src/SqliteClient.ts +15 -12
package/dist/SqliteClient.d.ts
CHANGED
|
@@ -3,10 +3,10 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import type { SqlStorage } from "@cloudflare/workers-types";
|
|
5
5
|
import * as Config from "effect/Config";
|
|
6
|
+
import * as Context from "effect/Context";
|
|
6
7
|
import * as Effect from "effect/Effect";
|
|
7
8
|
import * as Layer from "effect/Layer";
|
|
8
9
|
import * as Scope from "effect/Scope";
|
|
9
|
-
import * as ServiceMap from "effect/ServiceMap";
|
|
10
10
|
import * as Reactivity from "effect/unstable/reactivity/Reactivity";
|
|
11
11
|
import * as Client from "effect/unstable/sql/SqlClient";
|
|
12
12
|
/**
|
|
@@ -33,7 +33,7 @@ export interface SqliteClient extends Client.SqlClient {
|
|
|
33
33
|
* @category tags
|
|
34
34
|
* @since 1.0.0
|
|
35
35
|
*/
|
|
36
|
-
export declare const SqliteClient:
|
|
36
|
+
export declare const SqliteClient: Context.Service<SqliteClient, SqliteClient>;
|
|
37
37
|
/**
|
|
38
38
|
* @category models
|
|
39
39
|
* @since 1.0.0
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SqliteClient.d.ts","sourceRoot":"","sources":["../src/SqliteClient.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAA;AAC3D,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"SqliteClient.d.ts","sourceRoot":"","sources":["../src/SqliteClient.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAA;AAC3D,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAA;AACzC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAGvC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AACrC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AAGrC,OAAO,KAAK,UAAU,MAAM,uCAAuC,CAAA;AACnE,OAAO,KAAK,MAAM,MAAM,+BAA+B,CAAA;AAUvD;;;GAGG;AACH,eAAO,MAAM,MAAM,EAAE,MAA8C,CAAA;AAEnE;;;GAGG;AACH,MAAM,MAAM,MAAM,GAAG,qCAAqC,CAAA;AAE1D;;;GAGG;AACH,MAAM,WAAW,YAAa,SAAQ,MAAM,CAAC,SAAS;IACpD,QAAQ,CAAC,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,MAAM,EAAE,kBAAkB,CAAA;IAEnC,8BAA8B;IAC9B,QAAQ,CAAC,YAAY,EAAE,KAAK,CAAA;CAC7B;AAED;;;GAGG;AACH,eAAO,MAAM,YAAY,6CAAsE,CAAA;AAE/F;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,EAAE,EAAE,UAAU,CAAA;IACvB,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,kBAAkB,KAC1B,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,GAAG,UAAU,CAAC,UAAU,CAmHrE,CAAA;AAEJ;;;GAGG;AACH,eAAO,MAAM,WAAW,GACtB,QAAQ,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,KACtC,KAAK,CAAC,KAAK,CAAC,YAAY,GAAG,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,WAAW,CAUzB,CAAA;AAEzC;;;GAGG;AACH,eAAO,MAAM,KAAK,GAChB,QAAQ,kBAAkB,KACzB,KAAK,CAAC,KAAK,CAAC,YAAY,GAAG,MAAM,CAAC,SAAS,CAML,CAAA"}
|
package/dist/SqliteClient.js
CHANGED
|
@@ -1,17 +1,21 @@
|
|
|
1
1
|
import * as Config from "effect/Config";
|
|
2
|
+
import * as Context from "effect/Context";
|
|
2
3
|
import * as Effect from "effect/Effect";
|
|
3
4
|
import * as Fiber from "effect/Fiber";
|
|
4
5
|
import { identity } from "effect/Function";
|
|
5
6
|
import * as Layer from "effect/Layer";
|
|
6
7
|
import * as Scope from "effect/Scope";
|
|
7
8
|
import * as Semaphore from "effect/Semaphore";
|
|
8
|
-
import * as ServiceMap from "effect/ServiceMap";
|
|
9
9
|
import * as Stream from "effect/Stream";
|
|
10
10
|
import * as Reactivity from "effect/unstable/reactivity/Reactivity";
|
|
11
11
|
import * as Client from "effect/unstable/sql/SqlClient";
|
|
12
|
-
import { SqlError } from "effect/unstable/sql/SqlError";
|
|
12
|
+
import { classifySqliteError, SqlError } from "effect/unstable/sql/SqlError";
|
|
13
13
|
import * as Statement from "effect/unstable/sql/Statement";
|
|
14
14
|
const ATTR_DB_SYSTEM_NAME = "db.system.name";
|
|
15
|
+
const classifyError = (cause, message, operation) => classifySqliteError(cause, {
|
|
16
|
+
message,
|
|
17
|
+
operation
|
|
18
|
+
});
|
|
15
19
|
/**
|
|
16
20
|
* @category type ids
|
|
17
21
|
* @since 1.0.0
|
|
@@ -21,7 +25,7 @@ export const TypeId = "~@effect/sql-sqlite-do/SqliteClient";
|
|
|
21
25
|
* @category tags
|
|
22
26
|
* @since 1.0.0
|
|
23
27
|
*/
|
|
24
|
-
export const SqliteClient = /*#__PURE__*/
|
|
28
|
+
export const SqliteClient = /*#__PURE__*/Context.Service("@effect/sql-sqlite-do/SqliteClient");
|
|
25
29
|
/**
|
|
26
30
|
* @category constructor
|
|
27
31
|
* @since 1.0.0
|
|
@@ -46,8 +50,7 @@ export const make = options => Effect.gen(function* () {
|
|
|
46
50
|
const runStatement = (sql, params = []) => Effect.try({
|
|
47
51
|
try: () => Array.from(runIterator(sql, params)),
|
|
48
52
|
catch: cause => new SqlError({
|
|
49
|
-
cause,
|
|
50
|
-
message: `Failed to execute statement`
|
|
53
|
+
reason: classifyError(cause, "Failed to execute statement", "execute")
|
|
51
54
|
})
|
|
52
55
|
});
|
|
53
56
|
const runValues = (sql, params = []) => Effect.try({
|
|
@@ -61,8 +64,7 @@ export const make = options => Effect.gen(function* () {
|
|
|
61
64
|
return row;
|
|
62
65
|
}),
|
|
63
66
|
catch: cause => new SqlError({
|
|
64
|
-
cause,
|
|
65
|
-
message: `Failed to execute statement`
|
|
67
|
+
reason: classifyError(cause, "Failed to execute statement", "execute")
|
|
66
68
|
})
|
|
67
69
|
});
|
|
68
70
|
return identity({
|
|
@@ -91,7 +93,7 @@ export const make = options => Effect.gen(function* () {
|
|
|
91
93
|
const acquirer = semaphore.withPermits(1)(Effect.succeed(connection));
|
|
92
94
|
const transactionAcquirer = Effect.uninterruptibleMask(restore => {
|
|
93
95
|
const fiber = Fiber.getCurrent();
|
|
94
|
-
const scope =
|
|
96
|
+
const scope = Context.getUnsafe(fiber.context, Scope.Scope);
|
|
95
97
|
return Effect.as(Effect.tap(restore(semaphore.take(1)), () => Scope.addFinalizer(scope, semaphore.release(1))), connection);
|
|
96
98
|
});
|
|
97
99
|
return Object.assign(yield* Client.make({
|
|
@@ -109,10 +111,10 @@ export const make = options => Effect.gen(function* () {
|
|
|
109
111
|
* @category layers
|
|
110
112
|
* @since 1.0.0
|
|
111
113
|
*/
|
|
112
|
-
export const layerConfig = config => Layer.
|
|
114
|
+
export const layerConfig = config => Layer.effectContext(Config.unwrap(config).asEffect().pipe(Effect.flatMap(make), Effect.map(client => Context.make(SqliteClient, client).pipe(Context.add(Client.SqlClient, client))))).pipe(Layer.provide(Reactivity.layer));
|
|
113
115
|
/**
|
|
114
116
|
* @category layers
|
|
115
117
|
* @since 1.0.0
|
|
116
118
|
*/
|
|
117
|
-
export const layer = config => Layer.
|
|
119
|
+
export const layer = config => Layer.effectContext(Effect.map(make(config), client => Context.make(SqliteClient, client).pipe(Context.add(Client.SqlClient, client)))).pipe(Layer.provide(Reactivity.layer));
|
|
118
120
|
//# sourceMappingURL=SqliteClient.js.map
|
package/dist/SqliteClient.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SqliteClient.js","names":["Config","Effect","Fiber","identity","Layer","Scope","Semaphore","
|
|
1
|
+
{"version":3,"file":"SqliteClient.js","names":["Config","Context","Effect","Fiber","identity","Layer","Scope","Semaphore","Stream","Reactivity","Client","classifySqliteError","SqlError","Statement","ATTR_DB_SYSTEM_NAME","classifyError","cause","message","operation","TypeId","SqliteClient","Service","make","options","gen","compiler","makeCompilerSqlite","transformQueryNames","transformRows","transformResultNames","defaultTransforms","array","undefined","makeConnection","db","runIterator","sql","params","cursor","exec","columns","columnNames","result","raw","obj","i","length","value","ArrayBuffer","Uint8Array","runStatement","try","Array","from","catch","reason","runValues","row","execute","map","executeRaw","executeValues","executeUnprepared","executeStream","suspend","iterator","fromIteratorSucceed","pipe","mapArray","chunk","semaphore","connection","acquirer","withPermits","succeed","transactionAcquirer","uninterruptibleMask","restore","fiber","getCurrent","scope","getUnsafe","context","as","tap","take","addFinalizer","release","Object","assign","spanAttributes","entries","config","layerConfig","effectContext","unwrap","asEffect","flatMap","client","add","SqlClient","provide","layer"],"sources":["../src/SqliteClient.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@effect/sql-sqlite-do",
|
|
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 SQLite toolkit for Effect",
|
|
@@ -43,11 +43,11 @@
|
|
|
43
43
|
"provenance": true
|
|
44
44
|
},
|
|
45
45
|
"devDependencies": {
|
|
46
|
-
"@cloudflare/workers-types": "^4.
|
|
47
|
-
"effect": "^4.0.0-beta.
|
|
46
|
+
"@cloudflare/workers-types": "^4.20260412.1",
|
|
47
|
+
"effect": "^4.0.0-beta.60"
|
|
48
48
|
},
|
|
49
49
|
"peerDependencies": {
|
|
50
|
-
"effect": "^4.0.0-beta.
|
|
50
|
+
"effect": "^4.0.0-beta.60"
|
|
51
51
|
},
|
|
52
52
|
"scripts": {
|
|
53
53
|
"codegen": "effect-utils codegen",
|
package/src/SqliteClient.ts
CHANGED
|
@@ -3,22 +3,25 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import type { SqlStorage } from "@cloudflare/workers-types"
|
|
5
5
|
import * as Config from "effect/Config"
|
|
6
|
+
import * as Context from "effect/Context"
|
|
6
7
|
import * as Effect from "effect/Effect"
|
|
7
8
|
import * as Fiber from "effect/Fiber"
|
|
8
9
|
import { identity } from "effect/Function"
|
|
9
10
|
import * as Layer from "effect/Layer"
|
|
10
11
|
import * as Scope from "effect/Scope"
|
|
11
12
|
import * as Semaphore from "effect/Semaphore"
|
|
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 { classifySqliteError, SqlError } 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
|
+
classifySqliteError(cause, { message, operation })
|
|
24
|
+
|
|
22
25
|
/**
|
|
23
26
|
* @category type ids
|
|
24
27
|
* @since 1.0.0
|
|
@@ -47,7 +50,7 @@ export interface SqliteClient extends Client.SqlClient {
|
|
|
47
50
|
* @category tags
|
|
48
51
|
* @since 1.0.0
|
|
49
52
|
*/
|
|
50
|
-
export const SqliteClient =
|
|
53
|
+
export const SqliteClient = Context.Service<SqliteClient>("@effect/sql-sqlite-do/SqliteClient")
|
|
51
54
|
|
|
52
55
|
/**
|
|
53
56
|
* @category models
|
|
@@ -99,7 +102,7 @@ export const make = (
|
|
|
99
102
|
): Effect.Effect<ReadonlyArray<any>, SqlError, never> =>
|
|
100
103
|
Effect.try({
|
|
101
104
|
try: () => Array.from(runIterator(sql, params)),
|
|
102
|
-
catch: (cause) => new SqlError({ cause,
|
|
105
|
+
catch: (cause) => new SqlError({ reason: classifyError(cause, "Failed to execute statement", "execute") })
|
|
103
106
|
})
|
|
104
107
|
|
|
105
108
|
const runValues = (
|
|
@@ -117,7 +120,7 @@ export const make = (
|
|
|
117
120
|
}
|
|
118
121
|
return row
|
|
119
122
|
}),
|
|
120
|
-
catch: (cause) => new SqlError({ cause,
|
|
123
|
+
catch: (cause) => new SqlError({ reason: classifyError(cause, "Failed to execute statement", "execute") })
|
|
121
124
|
})
|
|
122
125
|
|
|
123
126
|
return identity<Connection>({
|
|
@@ -156,7 +159,7 @@ export const make = (
|
|
|
156
159
|
const acquirer = semaphore.withPermits(1)(Effect.succeed(connection))
|
|
157
160
|
const transactionAcquirer = Effect.uninterruptibleMask((restore) => {
|
|
158
161
|
const fiber = Fiber.getCurrent()!
|
|
159
|
-
const scope =
|
|
162
|
+
const scope = Context.getUnsafe(fiber.context, Scope.Scope)
|
|
160
163
|
return Effect.as(
|
|
161
164
|
Effect.tap(
|
|
162
165
|
restore(semaphore.take(1)),
|
|
@@ -191,12 +194,12 @@ export const make = (
|
|
|
191
194
|
export const layerConfig = (
|
|
192
195
|
config: Config.Wrap<SqliteClientConfig>
|
|
193
196
|
): Layer.Layer<SqliteClient | Client.SqlClient, Config.ConfigError> =>
|
|
194
|
-
Layer.
|
|
197
|
+
Layer.effectContext(
|
|
195
198
|
Config.unwrap(config).asEffect().pipe(
|
|
196
199
|
Effect.flatMap(make),
|
|
197
200
|
Effect.map((client) =>
|
|
198
|
-
|
|
199
|
-
|
|
201
|
+
Context.make(SqliteClient, client).pipe(
|
|
202
|
+
Context.add(Client.SqlClient, client)
|
|
200
203
|
)
|
|
201
204
|
)
|
|
202
205
|
)
|
|
@@ -209,9 +212,9 @@ export const layerConfig = (
|
|
|
209
212
|
export const layer = (
|
|
210
213
|
config: SqliteClientConfig
|
|
211
214
|
): Layer.Layer<SqliteClient | Client.SqlClient> =>
|
|
212
|
-
Layer.
|
|
215
|
+
Layer.effectContext(
|
|
213
216
|
Effect.map(make(config), (client) =>
|
|
214
|
-
|
|
215
|
-
|
|
217
|
+
Context.make(SqliteClient, client).pipe(
|
|
218
|
+
Context.add(Client.SqlClient, client)
|
|
216
219
|
))
|
|
217
220
|
).pipe(Layer.provide(Reactivity.layer))
|