@effect/sql-sqlite-react-native 4.0.0-beta.5 → 4.0.0-beta.50
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/README.md +1 -1
- package/dist/SqliteClient.d.ts +3 -3
- package/dist/SqliteClient.d.ts.map +1 -1
- package/dist/SqliteClient.js +15 -12
- package/dist/SqliteClient.js.map +1 -1
- package/package.json +4 -4
- package/src/SqliteClient.ts +19 -14
package/README.md
CHANGED
package/dist/SqliteClient.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
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 Layer from "effect/Layer";
|
|
4
5
|
import * as Scope from "effect/Scope";
|
|
5
|
-
import * as ServiceMap from "effect/ServiceMap";
|
|
6
6
|
import * as Reactivity from "effect/unstable/reactivity/Reactivity";
|
|
7
7
|
import * as Client from "effect/unstable/sql/SqlClient";
|
|
8
8
|
/**
|
|
@@ -29,7 +29,7 @@ export interface SqliteClient extends Client.SqlClient {
|
|
|
29
29
|
* @category tags
|
|
30
30
|
* @since 1.0.0
|
|
31
31
|
*/
|
|
32
|
-
export declare const SqliteClient:
|
|
32
|
+
export declare const SqliteClient: Context.Service<SqliteClient, SqliteClient>;
|
|
33
33
|
/**
|
|
34
34
|
* @category models
|
|
35
35
|
* @since 1.0.0
|
|
@@ -46,7 +46,7 @@ export interface SqliteClientConfig {
|
|
|
46
46
|
* @category fiber refs
|
|
47
47
|
* @since 1.0.0
|
|
48
48
|
*/
|
|
49
|
-
export declare const AsyncQuery:
|
|
49
|
+
export declare const AsyncQuery: Context.Reference<boolean>;
|
|
50
50
|
/**
|
|
51
51
|
* @category fiber refs
|
|
52
52
|
* @since 1.0.0
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SqliteClient.d.ts","sourceRoot":"","sources":["../src/SqliteClient.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"SqliteClient.d.ts","sourceRoot":"","sources":["../src/SqliteClient.ts"],"names":[],"mappings":"AAIA,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,MAAwD,CAAA;AAE7E;;;GAGG;AACH,MAAM,MAAM,MAAM,GAAG,+CAA+C,CAAA;AAEpE;;;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,6CAAgF,CAAA;AAEzG;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IACtC,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAC3C,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAA;IAC7D,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,UAAU,4BAGtB,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,cAAc,GAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,QAAQ,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,2CACrB,CAAA;AAIjD;;;GAGG;AACH,eAAO,MAAM,IAAI,GACf,SAAS,kBAAkB,KAC1B,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,GAAG,UAAU,CAAC,UAAU,CAmGrE,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
|
@@ -3,18 +3,23 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import * as Sqlite from "@op-engineering/op-sqlite";
|
|
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 { constFalse, identity } from "effect/Function";
|
|
9
10
|
import * as Layer from "effect/Layer";
|
|
10
11
|
import * as Scope from "effect/Scope";
|
|
11
|
-
import * as
|
|
12
|
+
import * as Semaphore from "effect/Semaphore";
|
|
12
13
|
import * as Stream from "effect/Stream";
|
|
13
14
|
import * as Reactivity from "effect/unstable/reactivity/Reactivity";
|
|
14
15
|
import * as Client from "effect/unstable/sql/SqlClient";
|
|
15
|
-
import { SqlError } from "effect/unstable/sql/SqlError";
|
|
16
|
+
import { classifySqliteError, SqlError } from "effect/unstable/sql/SqlError";
|
|
16
17
|
import * as Statement from "effect/unstable/sql/Statement";
|
|
17
18
|
const ATTR_DB_SYSTEM_NAME = "db.system.name";
|
|
19
|
+
const classifyError = (cause, message, operation) => classifySqliteError(cause, {
|
|
20
|
+
message,
|
|
21
|
+
operation
|
|
22
|
+
});
|
|
18
23
|
/**
|
|
19
24
|
* @category type ids
|
|
20
25
|
* @since 1.0.0
|
|
@@ -24,12 +29,12 @@ export const TypeId = "~@effect/sql-sqlite-react-native/SqliteClient";
|
|
|
24
29
|
* @category tags
|
|
25
30
|
* @since 1.0.0
|
|
26
31
|
*/
|
|
27
|
-
export const SqliteClient = /*#__PURE__*/
|
|
32
|
+
export const SqliteClient = /*#__PURE__*/Context.Service("@effect/sql-sqlite-react-native/SqliteClient");
|
|
28
33
|
/**
|
|
29
34
|
* @category fiber refs
|
|
30
35
|
* @since 1.0.0
|
|
31
36
|
*/
|
|
32
|
-
export const AsyncQuery = /*#__PURE__*/
|
|
37
|
+
export const AsyncQuery = /*#__PURE__*/Context.Reference("@effect/sql-sqlite-react-native/Client/asyncQuery", {
|
|
33
38
|
defaultValue: constFalse
|
|
34
39
|
});
|
|
35
40
|
/**
|
|
@@ -61,8 +66,7 @@ export const make = options => Effect.gen(function* () {
|
|
|
61
66
|
return Effect.map(Effect.tryPromise({
|
|
62
67
|
try: () => db.execute(sql, params),
|
|
63
68
|
catch: cause => new SqlError({
|
|
64
|
-
cause,
|
|
65
|
-
message: "Failed to execute statement (async)"
|
|
69
|
+
reason: classifyError(cause, "Failed to execute statement (async)", "execute")
|
|
66
70
|
})
|
|
67
71
|
}), result => values ? result.rawRows ?? [] : result.rows);
|
|
68
72
|
}
|
|
@@ -72,8 +76,7 @@ export const make = options => Effect.gen(function* () {
|
|
|
72
76
|
return values ? result.rawRows ?? [] : result.rows;
|
|
73
77
|
},
|
|
74
78
|
catch: cause => new SqlError({
|
|
75
|
-
cause,
|
|
76
|
-
message: "Failed to execute statement"
|
|
79
|
+
reason: classifyError(cause, "Failed to execute statement", "execute")
|
|
77
80
|
})
|
|
78
81
|
});
|
|
79
82
|
});
|
|
@@ -95,12 +98,12 @@ export const make = options => Effect.gen(function* () {
|
|
|
95
98
|
}
|
|
96
99
|
});
|
|
97
100
|
});
|
|
98
|
-
const semaphore = yield*
|
|
101
|
+
const semaphore = yield* Semaphore.make(1);
|
|
99
102
|
const connection = yield* makeConnection;
|
|
100
103
|
const acquirer = semaphore.withPermits(1)(Effect.succeed(connection));
|
|
101
104
|
const transactionAcquirer = Effect.uninterruptibleMask(restore => {
|
|
102
105
|
const fiber = Fiber.getCurrent();
|
|
103
|
-
const scope =
|
|
106
|
+
const scope = Context.getUnsafe(fiber.context, Scope.Scope);
|
|
104
107
|
return Effect.as(Effect.tap(restore(semaphore.take(1)), () => Scope.addFinalizer(scope, semaphore.release(1))), connection);
|
|
105
108
|
});
|
|
106
109
|
return Object.assign(yield* Client.make({
|
|
@@ -118,10 +121,10 @@ export const make = options => Effect.gen(function* () {
|
|
|
118
121
|
* @category layers
|
|
119
122
|
* @since 1.0.0
|
|
120
123
|
*/
|
|
121
|
-
export const layerConfig = config => Layer.
|
|
124
|
+
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));
|
|
122
125
|
/**
|
|
123
126
|
* @category layers
|
|
124
127
|
* @since 1.0.0
|
|
125
128
|
*/
|
|
126
|
-
export const layer = config => Layer.
|
|
129
|
+
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));
|
|
127
130
|
//# sourceMappingURL=SqliteClient.js.map
|
package/dist/SqliteClient.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SqliteClient.js","names":["Sqlite","Config","Effect","Fiber","constFalse","identity","Layer","Scope","
|
|
1
|
+
{"version":3,"file":"SqliteClient.js","names":["Sqlite","Config","Context","Effect","Fiber","constFalse","identity","Layer","Scope","Semaphore","Stream","Reactivity","Client","classifySqliteError","SqlError","Statement","ATTR_DB_SYSTEM_NAME","classifyError","cause","message","operation","TypeId","SqliteClient","Service","AsyncQuery","Reference","defaultValue","withAsyncQuery","effect","provideService","make","options","gen","clientOptions","name","filename","location","encryptionKey","compiler","makeCompilerSqlite","transformQueryNames","transformRows","transformResultNames","defaultTransforms","array","undefined","makeConnection","db","open","addFinalizer","sync","close","run","sql","params","values","withFiber","fiber","getRef","map","tryPromise","try","execute","catch","reason","result","rawRows","rows","executeSync","executeRaw","executeValues","executeUnprepared","executeStream","die","semaphore","connection","acquirer","withPermits","succeed","transactionAcquirer","uninterruptibleMask","restore","getCurrent","scope","getUnsafe","context","as","tap","take","release","Object","assign","spanAttributes","entries","config","layerConfig","effectContext","unwrap","asEffect","pipe","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-react-native",
|
|
3
|
-
"version": "4.0.0-beta.
|
|
3
|
+
"version": "4.0.0-beta.50",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"description": "A SQLite toolkit for Effect",
|
|
@@ -43,12 +43,12 @@
|
|
|
43
43
|
"provenance": true
|
|
44
44
|
},
|
|
45
45
|
"devDependencies": {
|
|
46
|
-
"@op-engineering/op-sqlite": "15.2.
|
|
47
|
-
"effect": "^4.0.0-beta.
|
|
46
|
+
"@op-engineering/op-sqlite": "15.2.11",
|
|
47
|
+
"effect": "^4.0.0-beta.50"
|
|
48
48
|
},
|
|
49
49
|
"peerDependencies": {
|
|
50
50
|
"@op-engineering/op-sqlite": "15.0.4",
|
|
51
|
-
"effect": "^4.0.0-beta.
|
|
51
|
+
"effect": "^4.0.0-beta.50"
|
|
52
52
|
},
|
|
53
53
|
"scripts": {
|
|
54
54
|
"codegen": "effect-utils codegen",
|
package/src/SqliteClient.ts
CHANGED
|
@@ -3,21 +3,25 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import * as Sqlite from "@op-engineering/op-sqlite"
|
|
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 { constFalse, identity } from "effect/Function"
|
|
9
10
|
import * as Layer from "effect/Layer"
|
|
10
11
|
import * as Scope from "effect/Scope"
|
|
11
|
-
import * as
|
|
12
|
+
import * as Semaphore from "effect/Semaphore"
|
|
12
13
|
import * as Stream from "effect/Stream"
|
|
13
14
|
import * as Reactivity from "effect/unstable/reactivity/Reactivity"
|
|
14
15
|
import * as Client from "effect/unstable/sql/SqlClient"
|
|
15
16
|
import type { Connection } from "effect/unstable/sql/SqlConnection"
|
|
16
|
-
import { SqlError } from "effect/unstable/sql/SqlError"
|
|
17
|
+
import { classifySqliteError, SqlError } from "effect/unstable/sql/SqlError"
|
|
17
18
|
import * as Statement from "effect/unstable/sql/Statement"
|
|
18
19
|
|
|
19
20
|
const ATTR_DB_SYSTEM_NAME = "db.system.name"
|
|
20
21
|
|
|
22
|
+
const classifyError = (cause: unknown, message: string, operation: string) =>
|
|
23
|
+
classifySqliteError(cause, { message, operation })
|
|
24
|
+
|
|
21
25
|
/**
|
|
22
26
|
* @category type ids
|
|
23
27
|
* @since 1.0.0
|
|
@@ -46,7 +50,7 @@ export interface SqliteClient extends Client.SqlClient {
|
|
|
46
50
|
* @category tags
|
|
47
51
|
* @since 1.0.0
|
|
48
52
|
*/
|
|
49
|
-
export const SqliteClient =
|
|
53
|
+
export const SqliteClient = Context.Service<SqliteClient>("@effect/sql-sqlite-react-native/SqliteClient")
|
|
50
54
|
|
|
51
55
|
/**
|
|
52
56
|
* @category models
|
|
@@ -65,7 +69,7 @@ export interface SqliteClientConfig {
|
|
|
65
69
|
* @category fiber refs
|
|
66
70
|
* @since 1.0.0
|
|
67
71
|
*/
|
|
68
|
-
export const AsyncQuery =
|
|
72
|
+
export const AsyncQuery = Context.Reference<boolean>(
|
|
69
73
|
"@effect/sql-sqlite-react-native/Client/asyncQuery",
|
|
70
74
|
{ defaultValue: constFalse }
|
|
71
75
|
)
|
|
@@ -116,7 +120,8 @@ export const make = (
|
|
|
116
120
|
return Effect.map(
|
|
117
121
|
Effect.tryPromise({
|
|
118
122
|
try: () => db.execute(sql, params as Array<any>),
|
|
119
|
-
catch: (cause) =>
|
|
123
|
+
catch: (cause) =>
|
|
124
|
+
new SqlError({ reason: classifyError(cause, "Failed to execute statement (async)", "execute") })
|
|
120
125
|
}),
|
|
121
126
|
(result) => values ? result.rawRows ?? [] : result.rows
|
|
122
127
|
)
|
|
@@ -126,7 +131,7 @@ export const make = (
|
|
|
126
131
|
const result = db.executeSync(sql, params as Array<any>)
|
|
127
132
|
return values ? result.rawRows ?? [] : result.rows
|
|
128
133
|
},
|
|
129
|
-
catch: (cause) => new SqlError({ cause,
|
|
134
|
+
catch: (cause) => new SqlError({ reason: classifyError(cause, "Failed to execute statement", "execute") })
|
|
130
135
|
})
|
|
131
136
|
})
|
|
132
137
|
|
|
@@ -151,13 +156,13 @@ export const make = (
|
|
|
151
156
|
})
|
|
152
157
|
})
|
|
153
158
|
|
|
154
|
-
const semaphore = yield*
|
|
159
|
+
const semaphore = yield* Semaphore.make(1)
|
|
155
160
|
const connection = yield* makeConnection
|
|
156
161
|
|
|
157
162
|
const acquirer = semaphore.withPermits(1)(Effect.succeed(connection))
|
|
158
163
|
const transactionAcquirer = Effect.uninterruptibleMask((restore) => {
|
|
159
164
|
const fiber = Fiber.getCurrent()!
|
|
160
|
-
const scope =
|
|
165
|
+
const scope = Context.getUnsafe(fiber.context, Scope.Scope)
|
|
161
166
|
return Effect.as(
|
|
162
167
|
Effect.tap(
|
|
163
168
|
restore(semaphore.take(1)),
|
|
@@ -192,12 +197,12 @@ export const make = (
|
|
|
192
197
|
export const layerConfig = (
|
|
193
198
|
config: Config.Wrap<SqliteClientConfig>
|
|
194
199
|
): Layer.Layer<SqliteClient | Client.SqlClient, Config.ConfigError> =>
|
|
195
|
-
Layer.
|
|
200
|
+
Layer.effectContext(
|
|
196
201
|
Config.unwrap(config).asEffect().pipe(
|
|
197
202
|
Effect.flatMap(make),
|
|
198
203
|
Effect.map((client) =>
|
|
199
|
-
|
|
200
|
-
|
|
204
|
+
Context.make(SqliteClient, client).pipe(
|
|
205
|
+
Context.add(Client.SqlClient, client)
|
|
201
206
|
)
|
|
202
207
|
)
|
|
203
208
|
)
|
|
@@ -210,10 +215,10 @@ export const layerConfig = (
|
|
|
210
215
|
export const layer = (
|
|
211
216
|
config: SqliteClientConfig
|
|
212
217
|
): Layer.Layer<SqliteClient | Client.SqlClient> =>
|
|
213
|
-
Layer.
|
|
218
|
+
Layer.effectContext(
|
|
214
219
|
Effect.map(make(config), (client) =>
|
|
215
|
-
|
|
216
|
-
|
|
220
|
+
Context.make(SqliteClient, client).pipe(
|
|
221
|
+
Context.add(Client.SqlClient, client)
|
|
217
222
|
))
|
|
218
223
|
).pipe(Layer.provide(Reactivity.layer))
|
|
219
224
|
|