@effect/sql-sqlite-node 4.0.0-beta.9 → 4.0.0-beta.91

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,25 +1,31 @@
1
1
  import * as Config from "effect/Config";
2
+ import * as Context from "effect/Context";
2
3
  import * as Duration from "effect/Duration";
3
4
  import * as Effect from "effect/Effect";
4
5
  import * as Layer from "effect/Layer";
5
6
  import * as Scope from "effect/Scope";
6
- import * as ServiceMap from "effect/ServiceMap";
7
7
  import * as Reactivity from "effect/unstable/reactivity/Reactivity";
8
8
  import * as Client from "effect/unstable/sql/SqlClient";
9
9
  import { SqlError } from "effect/unstable/sql/SqlError";
10
10
  /**
11
- * @category type ids
12
- * @since 1.0.0
11
+ * Runtime type identifier used to mark Node `SqliteClient` values.
12
+ *
13
+ * @category type IDs
14
+ * @since 4.0.0
13
15
  */
14
16
  export declare const TypeId: TypeId;
15
17
  /**
16
- * @category type ids
17
- * @since 1.0.0
18
+ * Type-level identifier used to mark Node `SqliteClient` values.
19
+ *
20
+ * @category type IDs
21
+ * @since 4.0.0
18
22
  */
19
23
  export type TypeId = "~@effect/sql-sqlite-node/SqliteClient";
20
24
  /**
25
+ * Node SQLite client service, extending `SqlClient` with database export, backup, and extension loading helpers. `updateValues` is not supported.
26
+ *
21
27
  * @category models
22
- * @since 1.0.0
28
+ * @since 4.0.0
23
29
  */
24
30
  export interface SqliteClient extends Client.SqlClient {
25
31
  readonly [TypeId]: TypeId;
@@ -31,21 +37,27 @@ export interface SqliteClient extends Client.SqlClient {
31
37
  readonly updateValues: never;
32
38
  }
33
39
  /**
40
+ * Metadata returned from a Node SQLite backup operation, reporting total and remaining page counts.
41
+ *
34
42
  * @category models
35
- * @since 1.0.0
43
+ * @since 4.0.0
36
44
  */
37
45
  export interface BackupMetadata {
38
46
  readonly totalPages: number;
39
47
  readonly remainingPages: number;
40
48
  }
41
49
  /**
42
- * @category tags
43
- * @since 1.0.0
50
+ * Service tag for the node SQLite client implementation.
51
+ *
52
+ * @category services
53
+ * @since 4.0.0
44
54
  */
45
- export declare const SqliteClient: ServiceMap.Service<SqliteClient, SqliteClient>;
55
+ export declare const SqliteClient: Context.Service<SqliteClient, SqliteClient>;
46
56
  /**
57
+ * Configuration for a node SQLite client backed by `better-sqlite3`, including the database filename, read-only mode, statement cache settings, WAL behavior, span attributes, and query/result name transforms.
58
+ *
47
59
  * @category models
48
- * @since 1.0.0
60
+ * @since 4.0.0
49
61
  */
50
62
  export interface SqliteClientConfig {
51
63
  readonly filename: string;
@@ -58,18 +70,24 @@ export interface SqliteClientConfig {
58
70
  readonly transformQueryNames?: ((str: string) => string) | undefined;
59
71
  }
60
72
  /**
61
- * @category constructor
62
- * @since 1.0.0
73
+ * Creates a scoped node SQLite client from the supplied configuration, using a single serialized connection with WAL enabled by default and exposing SQLite-specific `export`, `backup`, and `loadExtension` operations.
74
+ *
75
+ * @category constructors
76
+ * @since 4.0.0
63
77
  */
64
78
  export declare const make: (options: SqliteClientConfig) => Effect.Effect<SqliteClient, never, Scope.Scope | Reactivity.Reactivity>;
65
79
  /**
80
+ * Builds a layer from an Effect `Config` value, providing both the node `SqliteClient` service and the generic `SqlClient` service.
81
+ *
66
82
  * @category layers
67
- * @since 1.0.0
83
+ * @since 4.0.0
68
84
  */
69
85
  export declare const layerConfig: (config: Config.Wrap<SqliteClientConfig>) => Layer.Layer<SqliteClient | Client.SqlClient, Config.ConfigError>;
70
86
  /**
87
+ * Builds a layer from a node SQLite client configuration, providing both `SqliteClient` and the generic `SqlClient` service.
88
+ *
71
89
  * @category layers
72
- * @since 1.0.0
90
+ * @since 4.0.0
73
91
  */
74
92
  export declare const layer: (config: SqliteClientConfig) => Layer.Layer<SqliteClient | Client.SqlClient>;
75
93
  //# sourceMappingURL=SqliteClient.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"SqliteClient.d.ts","sourceRoot":"","sources":["../src/SqliteClient.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SqliteClient.d.ts","sourceRoot":"","sources":["../src/SqliteClient.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,18 @@
1
1
  /**
2
- * @since 1.0.0
2
+ * Connects Effect SQL to SQLite on Node.js using `better-sqlite3`.
3
+ *
4
+ * This module opens a SQLite database and exposes it as both `SqliteClient` and
5
+ * the generic Effect SQL client. It serializes access through one connection,
6
+ * caches prepared statements, enables WAL mode unless disabled, and supports
7
+ * database export, backup, and extension loading. Streaming queries and
8
+ * `updateValues` are not supported by this driver.
9
+ *
10
+ * @since 4.0.0
3
11
  */
4
12
  import Sqlite from "better-sqlite3";
5
13
  import * as Cache from "effect/Cache";
6
14
  import * as Config from "effect/Config";
15
+ import * as Context from "effect/Context";
7
16
  import * as Duration from "effect/Duration";
8
17
  import * as Effect from "effect/Effect";
9
18
  import * as Fiber from "effect/Fiber";
@@ -11,26 +20,35 @@ import { identity } from "effect/Function";
11
20
  import * as Layer from "effect/Layer";
12
21
  import * as Scope from "effect/Scope";
13
22
  import * as Semaphore from "effect/Semaphore";
14
- import * as ServiceMap from "effect/ServiceMap";
15
23
  import * as Stream from "effect/Stream";
16
24
  import * as Reactivity from "effect/unstable/reactivity/Reactivity";
17
25
  import * as Client from "effect/unstable/sql/SqlClient";
18
- import { SqlError } from "effect/unstable/sql/SqlError";
26
+ import { classifySqliteError, SqlError } from "effect/unstable/sql/SqlError";
19
27
  import * as Statement from "effect/unstable/sql/Statement";
20
28
  const ATTR_DB_SYSTEM_NAME = "db.system.name";
29
+ const classifyError = (cause, message, operation) => classifySqliteError(cause, {
30
+ message,
31
+ operation
32
+ });
21
33
  /**
22
- * @category type ids
23
- * @since 1.0.0
34
+ * Runtime type identifier used to mark Node `SqliteClient` values.
35
+ *
36
+ * @category type IDs
37
+ * @since 4.0.0
24
38
  */
25
39
  export const TypeId = "~@effect/sql-sqlite-node/SqliteClient";
26
40
  /**
27
- * @category tags
28
- * @since 1.0.0
41
+ * Service tag for the node SQLite client implementation.
42
+ *
43
+ * @category services
44
+ * @since 4.0.0
29
45
  */
30
- export const SqliteClient = /*#__PURE__*/ServiceMap.Service("@effect/sql-sqlite-node/SqliteClient");
46
+ export const SqliteClient = /*#__PURE__*/Context.Service("@effect/sql-sqlite-node/SqliteClient");
31
47
  /**
32
- * @category constructor
33
- * @since 1.0.0
48
+ * Creates a scoped node SQLite client from the supplied configuration, using a single serialized connection with WAL enabled by default and exposing SQLite-specific `export`, `backup`, and `loadExtension` operations.
49
+ *
50
+ * @category constructors
51
+ * @since 4.0.0
34
52
  */
35
53
  export const make = options => Effect.gen(function* () {
36
54
  const compiler = Statement.makeCompilerSqlite(options.transformQueryNames);
@@ -50,13 +68,12 @@ export const make = options => Effect.gen(function* () {
50
68
  lookup: sql => Effect.try({
51
69
  try: () => db.prepare(sql),
52
70
  catch: cause => new SqlError({
53
- cause,
54
- message: "Failed to prepare statement "
71
+ reason: classifyError(cause, "Failed to prepare statement", "prepare")
55
72
  })
56
73
  })
57
74
  });
58
75
  const runStatement = (statement, params, raw) => Effect.withFiber(fiber => {
59
- if (ServiceMap.get(fiber.services, Client.SafeIntegers)) {
76
+ if (Context.get(fiber.context, Client.SafeIntegers)) {
60
77
  statement.safeIntegers(true);
61
78
  }
62
79
  try {
@@ -67,8 +84,7 @@ export const make = options => Effect.gen(function* () {
67
84
  return Effect.succeed(raw ? result : []);
68
85
  } catch (cause) {
69
86
  return Effect.fail(new SqlError({
70
- cause,
71
- message: "Failed to execute statement"
87
+ reason: classifyError(cause, "Failed to execute statement", "execute")
72
88
  }));
73
89
  }
74
90
  });
@@ -83,10 +99,23 @@ export const make = options => Effect.gen(function* () {
83
99
  return [];
84
100
  },
85
101
  catch: cause => new SqlError({
86
- cause,
87
- message: "Failed to execute statement"
102
+ reason: classifyError(cause, "Failed to execute statement", "execute")
88
103
  })
89
104
  }), statement => Effect.sync(() => statement.reader && statement.raw(false)));
105
+ const runValuesUnprepared = (sql, params) => Effect.try({
106
+ try: () => {
107
+ const statement = db.prepare(sql);
108
+ if (statement.reader) {
109
+ statement.raw(true);
110
+ return statement.all(...params);
111
+ }
112
+ statement.run(...params);
113
+ return [];
114
+ },
115
+ catch: cause => new SqlError({
116
+ reason: classifyError(cause, "Failed to execute statement", "execute")
117
+ })
118
+ });
90
119
  return identity({
91
120
  execute(sql, params, transformRows) {
92
121
  return transformRows ? Effect.map(run(sql, params), transformRows) : run(sql, params);
@@ -97,6 +126,9 @@ export const make = options => Effect.gen(function* () {
97
126
  executeValues(sql, params) {
98
127
  return runValues(sql, params);
99
128
  },
129
+ executeValuesUnprepared(sql, params) {
130
+ return runValuesUnprepared(sql, params);
131
+ },
100
132
  executeUnprepared(sql, params, transformRows) {
101
133
  const effect = runStatement(db.prepare(sql), params ?? [], false);
102
134
  return transformRows ? Effect.map(effect, transformRows) : effect;
@@ -107,16 +139,14 @@ export const make = options => Effect.gen(function* () {
107
139
  export: Effect.try({
108
140
  try: () => db.serialize(),
109
141
  catch: cause => new SqlError({
110
- cause,
111
- message: "Failed to export database"
142
+ reason: classifyError(cause, "Failed to export database", "export")
112
143
  })
113
144
  }),
114
145
  backup(destination) {
115
146
  return Effect.tryPromise({
116
147
  try: () => db.backup(destination),
117
148
  catch: cause => new SqlError({
118
- cause,
119
- message: "Failed to backup database"
149
+ reason: classifyError(cause, "Failed to backup database", "backup")
120
150
  })
121
151
  });
122
152
  },
@@ -124,8 +154,7 @@ export const make = options => Effect.gen(function* () {
124
154
  return Effect.try({
125
155
  try: () => db.loadExtension(path),
126
156
  catch: cause => new SqlError({
127
- cause,
128
- message: "Failed to load extension"
157
+ reason: classifyError(cause, "Failed to load extension", "loadExtension")
129
158
  })
130
159
  });
131
160
  }
@@ -136,7 +165,7 @@ export const make = options => Effect.gen(function* () {
136
165
  const acquirer = semaphore.withPermits(1)(Effect.succeed(connection));
137
166
  const transactionAcquirer = Effect.uninterruptibleMask(restore => {
138
167
  const fiber = Fiber.getCurrent();
139
- const scope = ServiceMap.getUnsafe(fiber.services, Scope.Scope);
168
+ const scope = Context.getUnsafe(fiber.context, Scope.Scope);
140
169
  return Effect.as(Effect.tap(restore(semaphore.take(1)), () => Scope.addFinalizer(scope, semaphore.release(1))), connection);
141
170
  });
142
171
  return Object.assign(yield* Client.make({
@@ -154,13 +183,17 @@ export const make = options => Effect.gen(function* () {
154
183
  });
155
184
  });
156
185
  /**
186
+ * Builds a layer from an Effect `Config` value, providing both the node `SqliteClient` service and the generic `SqlClient` service.
187
+ *
157
188
  * @category layers
158
- * @since 1.0.0
189
+ * @since 4.0.0
159
190
  */
160
- export const layerConfig = config => Layer.effectServices(Config.unwrap(config).asEffect().pipe(Effect.flatMap(make), Effect.map(client => ServiceMap.make(SqliteClient, client).pipe(ServiceMap.add(Client.SqlClient, client))))).pipe(Layer.provide(Reactivity.layer));
191
+ export const layerConfig = config => Layer.effectContext(Config.unwrap(config).pipe(Effect.flatMap(make), Effect.map(client => Context.make(SqliteClient, client).pipe(Context.add(Client.SqlClient, client))))).pipe(Layer.provide(Reactivity.layer));
161
192
  /**
193
+ * Builds a layer from a node SQLite client configuration, providing both `SqliteClient` and the generic `SqlClient` service.
194
+ *
162
195
  * @category layers
163
- * @since 1.0.0
196
+ * @since 4.0.0
164
197
  */
165
- export const layer = config => Layer.effectServices(Effect.map(make(config), client => ServiceMap.make(SqliteClient, client).pipe(ServiceMap.add(Client.SqlClient, client)))).pipe(Layer.provide(Reactivity.layer));
198
+ 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));
166
199
  //# sourceMappingURL=SqliteClient.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SqliteClient.js","names":["Sqlite","Cache","Config","Duration","Effect","Fiber","identity","Layer","Scope","Semaphore","ServiceMap","Stream","Reactivity","Client","SqlError","Statement","ATTR_DB_SYSTEM_NAME","TypeId","SqliteClient","Service","make","options","gen","compiler","makeCompilerSqlite","transformQueryNames","transformRows","transformResultNames","defaultTransforms","array","undefined","makeConnection","scope","db","filename","readonly","addFinalizer","sync","close","disableWAL","pragma","prepareCache","capacity","prepareCacheSize","timeToLive","prepareCacheTTL","minutes","lookup","sql","try","prepare","catch","cause","message","runStatement","statement","params","raw","withFiber","fiber","get","services","SafeIntegers","safeIntegers","reader","succeed","all","result","run","fail","flatMap","s","runValues","acquireUseRelease","execute","map","executeRaw","executeValues","executeUnprepared","effect","executeStream","_sql","_params","die","export","serialize","backup","destination","tryPromise","loadExtension","path","semaphore","connection","acquirer","withPermits","transactionAcquirer","uninterruptibleMask","restore","getCurrent","getUnsafe","as","tap","take","release","Object","assign","spanAttributes","entries","config","_","layerConfig","effectServices","unwrap","asEffect","pipe","client","add","SqlClient","provide","layer"],"sources":["../src/SqliteClient.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"SqliteClient.js","names":["Sqlite","Cache","Config","Context","Duration","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","scope","db","filename","readonly","addFinalizer","sync","close","disableWAL","pragma","prepareCache","capacity","prepareCacheSize","timeToLive","prepareCacheTTL","minutes","lookup","sql","try","prepare","catch","reason","runStatement","statement","params","raw","withFiber","fiber","get","context","SafeIntegers","safeIntegers","reader","succeed","all","result","run","fail","flatMap","s","runValues","acquireUseRelease","runValuesUnprepared","execute","map","executeRaw","executeValues","executeValuesUnprepared","executeUnprepared","effect","executeStream","_sql","_params","die","export","serialize","backup","destination","tryPromise","loadExtension","path","semaphore","connection","acquirer","withPermits","transactionAcquirer","uninterruptibleMask","restore","getCurrent","getUnsafe","as","tap","take","release","Object","assign","spanAttributes","entries","config","_","layerConfig","effectContext","unwrap","pipe","client","add","SqlClient","provide","layer"],"sources":["../src/SqliteClient.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -1,5 +1,12 @@
1
1
  /**
2
- * @since 1.0.0
2
+ * Runs database migrations for Node.js SQLite projects that use Effect SQL.
3
+ *
4
+ * This module re-exports the shared migration loaders and errors, then provides
5
+ * `run` and `layer` helpers that apply pending migration files with the current
6
+ * `SqlClient`. It does not add Node-specific schema dump support; migration
7
+ * execution is handled by the shared SQL migrator.
8
+ *
9
+ * @since 4.0.0
3
10
  */
4
11
  import type * as Effect from "effect/Effect";
5
12
  import * as Layer from "effect/Layer";
@@ -7,17 +14,21 @@ import * as Migrator from "effect/unstable/sql/Migrator";
7
14
  import type * as Client from "effect/unstable/sql/SqlClient";
8
15
  import type { SqlError } from "effect/unstable/sql/SqlError";
9
16
  /**
10
- * @since 1.0.0
17
+ * @since 4.0.0
11
18
  */
12
19
  export * from "effect/unstable/sql/Migrator";
13
20
  /**
14
- * @category constructor
15
- * @since 1.0.0
21
+ * Runs SQL migrations for a SQLite database using the shared `Migrator` implementation and the current `SqlClient`.
22
+ *
23
+ * @category constructors
24
+ * @since 4.0.0
16
25
  */
17
26
  export declare const run: <R2 = never>(options: Migrator.MigratorOptions<R2>) => Effect.Effect<ReadonlyArray<readonly [id: number, name: string]>, Migrator.MigrationError | SqlError, Client.SqlClient | R2>;
18
27
  /**
19
- * @category constructor
20
- * @since 1.0.0
28
+ * Creates a layer that runs the configured SQLite migrations during layer construction and provides no services.
29
+ *
30
+ * @category constructors
31
+ * @since 4.0.0
21
32
  */
22
33
  export declare const layer: <R>(options: Migrator.MigratorOptions<R>) => Layer.Layer<never, Migrator.MigrationError | SqlError, Client.SqlClient | R>;
23
34
  //# sourceMappingURL=SqliteMigrator.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"SqliteMigrator.d.ts","sourceRoot":"","sources":["../src/SqliteMigrator.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,KAAK,MAAM,MAAM,eAAe,CAAA;AAC5C,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AACrC,OAAO,KAAK,QAAQ,MAAM,8BAA8B,CAAA;AACxD,OAAO,KAAK,KAAK,MAAM,MAAM,+BAA+B,CAAA;AAC5D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAA;AAE5D;;GAEG;AACH,cAAc,8BAA8B,CAAA;AAE5C;;;GAGG;AACH,eAAO,MAAM,GAAG,EAAE,CAAC,EAAE,GAAG,KAAK,EAC3B,OAAO,EAAE,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC,KAClC,MAAM,CAAC,MAAM,CAChB,aAAa,CAAC,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,EAClD,QAAQ,CAAC,cAAc,GAAG,QAAQ,EAClC,MAAM,CAAC,SAAS,GAAG,EAAE,CA2CrB,CAAA;AAEF;;;GAGG;AACH,eAAO,MAAM,KAAK,GAAI,CAAC,EACrB,SAAS,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC,KACnC,KAAK,CAAC,KAAK,CACZ,KAAK,EACL,QAAQ,CAAC,cAAc,GAAG,QAAQ,EAClC,MAAM,CAAC,SAAS,GAAG,CAAC,CACgB,CAAA"}
1
+ {"version":3,"file":"SqliteMigrator.d.ts","sourceRoot":"","sources":["../src/SqliteMigrator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,KAAK,KAAK,MAAM,MAAM,eAAe,CAAA;AAC5C,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AACrC,OAAO,KAAK,QAAQ,MAAM,8BAA8B,CAAA;AACxD,OAAO,KAAK,KAAK,MAAM,MAAM,+BAA+B,CAAA;AAC5D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAA;AAE5D;;GAEG;AACH,cAAc,8BAA8B,CAAA;AAE5C;;;;;GAKG;AACH,eAAO,MAAM,GAAG,EAAE,CAAC,EAAE,GAAG,KAAK,EAC3B,OAAO,EAAE,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC,KAClC,MAAM,CAAC,MAAM,CAChB,aAAa,CAAC,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,EAClD,QAAQ,CAAC,cAAc,GAAG,QAAQ,EAClC,MAAM,CAAC,SAAS,GAAG,EAAE,CA2CrB,CAAA;AAEF;;;;;GAKG;AACH,eAAO,MAAM,KAAK,GAAI,CAAC,EACrB,SAAS,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC,KACnC,KAAK,CAAC,KAAK,CACZ,KAAK,EACL,QAAQ,CAAC,cAAc,GAAG,QAAQ,EAClC,MAAM,CAAC,SAAS,GAAG,CAAC,CACgB,CAAA"}
@@ -1,12 +1,14 @@
1
1
  import * as Layer from "effect/Layer";
2
2
  import * as Migrator from "effect/unstable/sql/Migrator";
3
3
  /**
4
- * @since 1.0.0
4
+ * @since 4.0.0
5
5
  */
6
6
  export * from "effect/unstable/sql/Migrator";
7
7
  /**
8
- * @category constructor
9
- * @since 1.0.0
8
+ * Runs SQL migrations for a SQLite database using the shared `Migrator` implementation and the current `SqlClient`.
9
+ *
10
+ * @category constructors
11
+ * @since 4.0.0
10
12
  */
11
13
  export const run = /*#__PURE__*/Migrator.make({
12
14
  // dumpSchema(path, table) {
@@ -52,8 +54,10 @@ export const run = /*#__PURE__*/Migrator.make({
52
54
  // }
53
55
  });
54
56
  /**
55
- * @category constructor
56
- * @since 1.0.0
57
+ * Creates a layer that runs the configured SQLite migrations during layer construction and provides no services.
58
+ *
59
+ * @category constructors
60
+ * @since 4.0.0
57
61
  */
58
62
  export const layer = options => Layer.effectDiscard(run(options));
59
63
  //# sourceMappingURL=SqliteMigrator.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SqliteMigrator.js","names":["Layer","Migrator","run","make","layer","options","effectDiscard"],"sources":["../src/SqliteMigrator.ts"],"sourcesContent":[null],"mappings":"AAIA,OAAO,KAAKA,KAAK,MAAM,cAAc;AACrC,OAAO,KAAKC,QAAQ,MAAM,8BAA8B;AAIxD;;;AAGA,cAAc,8BAA8B;AAE5C;;;;AAIA,OAAO,MAAMC,GAAG,gBAMZD,QAAQ,CAACE,IAAI,CAAC;EAChB;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAAA,CACD,CAAC;AAEF;;;;AAIA,OAAO,MAAMC,KAAK,GAChBC,OAAoC,IAKjCL,KAAK,CAACM,aAAa,CAACJ,GAAG,CAACG,OAAO,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"SqliteMigrator.js","names":["Layer","Migrator","run","make","layer","options","effectDiscard"],"sources":["../src/SqliteMigrator.ts"],"sourcesContent":[null],"mappings":"AAWA,OAAO,KAAKA,KAAK,MAAM,cAAc;AACrC,OAAO,KAAKC,QAAQ,MAAM,8BAA8B;AAIxD;;;AAGA,cAAc,8BAA8B;AAE5C;;;;;;AAMA,OAAO,MAAMC,GAAG,gBAMZD,QAAQ,CAACE,IAAI,CAAC;EAChB;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAAA,CACD,CAAC;AAEF;;;;;;AAMA,OAAO,MAAMC,KAAK,GAChBC,OAAoC,IAKjCL,KAAK,CAACM,aAAa,CAACJ,GAAG,CAACG,OAAO,CAAC,CAAC","ignoreList":[]}
package/dist/index.d.ts CHANGED
@@ -1,12 +1,12 @@
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 SqliteClient from "./SqliteClient.ts";
8
8
  /**
9
- * @since 1.0.0
9
+ * @since 4.0.0
10
10
  */
11
11
  export * as SqliteMigrator from "./SqliteMigrator.ts";
12
12
  //# sourceMappingURL=index.d.ts.map
package/dist/index.js CHANGED
@@ -1,13 +1,13 @@
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 SqliteClient from "./SqliteClient.js";
9
9
  /**
10
- * @since 1.0.0
10
+ * @since 4.0.0
11
11
  */
12
12
  export * as SqliteMigrator from "./SqliteMigrator.js";
13
13
  //# sourceMappingURL=index.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@effect/sql-sqlite-node",
3
- "version": "4.0.0-beta.9",
3
+ "version": "4.0.0-beta.91",
4
4
  "type": "module",
5
5
  "license": "MIT",
6
6
  "description": "A SQLite toolkit for Effect",
@@ -44,14 +44,14 @@
44
44
  },
45
45
  "devDependencies": {
46
46
  "@types/better-sqlite3": "^7.6.13",
47
- "@effect/platform-node": "^4.0.0-beta.9",
48
- "effect": "^4.0.0-beta.9"
47
+ "@effect/platform-node": "^4.0.0-beta.91",
48
+ "effect": "^4.0.0-beta.91"
49
49
  },
50
50
  "peerDependencies": {
51
- "effect": "^4.0.0-beta.9"
51
+ "effect": "^4.0.0-beta.91"
52
52
  },
53
53
  "dependencies": {
54
- "better-sqlite3": "^12.6.2"
54
+ "better-sqlite3": "^12.9.0"
55
55
  },
56
56
  "scripts": {
57
57
  "codegen": "effect-utils codegen",
@@ -1,9 +1,18 @@
1
1
  /**
2
- * @since 1.0.0
2
+ * Connects Effect SQL to SQLite on Node.js using `better-sqlite3`.
3
+ *
4
+ * This module opens a SQLite database and exposes it as both `SqliteClient` and
5
+ * the generic Effect SQL client. It serializes access through one connection,
6
+ * caches prepared statements, enables WAL mode unless disabled, and supports
7
+ * database export, backup, and extension loading. Streaming queries and
8
+ * `updateValues` are not supported by this driver.
9
+ *
10
+ * @since 4.0.0
3
11
  */
4
12
  import Sqlite from "better-sqlite3"
5
13
  import * as Cache from "effect/Cache"
6
14
  import * as Config from "effect/Config"
15
+ import * as Context from "effect/Context"
7
16
  import * as Duration from "effect/Duration"
8
17
  import * as Effect from "effect/Effect"
9
18
  import * as Fiber from "effect/Fiber"
@@ -11,31 +20,39 @@ import { identity } from "effect/Function"
11
20
  import * as Layer from "effect/Layer"
12
21
  import * as Scope from "effect/Scope"
13
22
  import * as Semaphore from "effect/Semaphore"
14
- import * as ServiceMap from "effect/ServiceMap"
15
23
  import * as Stream from "effect/Stream"
16
24
  import * as Reactivity from "effect/unstable/reactivity/Reactivity"
17
25
  import * as Client from "effect/unstable/sql/SqlClient"
18
26
  import type { Connection } from "effect/unstable/sql/SqlConnection"
19
- import { SqlError } from "effect/unstable/sql/SqlError"
27
+ import { classifySqliteError, SqlError } from "effect/unstable/sql/SqlError"
20
28
  import * as Statement from "effect/unstable/sql/Statement"
21
29
 
22
30
  const ATTR_DB_SYSTEM_NAME = "db.system.name"
23
31
 
32
+ const classifyError = (cause: unknown, message: string, operation: string) =>
33
+ classifySqliteError(cause, { message, operation })
34
+
24
35
  /**
25
- * @category type ids
26
- * @since 1.0.0
36
+ * Runtime type identifier used to mark Node `SqliteClient` values.
37
+ *
38
+ * @category type IDs
39
+ * @since 4.0.0
27
40
  */
28
41
  export const TypeId: TypeId = "~@effect/sql-sqlite-node/SqliteClient"
29
42
 
30
43
  /**
31
- * @category type ids
32
- * @since 1.0.0
44
+ * Type-level identifier used to mark Node `SqliteClient` values.
45
+ *
46
+ * @category type IDs
47
+ * @since 4.0.0
33
48
  */
34
49
  export type TypeId = "~@effect/sql-sqlite-node/SqliteClient"
35
50
 
36
51
  /**
52
+ * Node SQLite client service, extending `SqlClient` with database export, backup, and extension loading helpers. `updateValues` is not supported.
53
+ *
37
54
  * @category models
38
- * @since 1.0.0
55
+ * @since 4.0.0
39
56
  */
40
57
  export interface SqliteClient extends Client.SqlClient {
41
58
  readonly [TypeId]: TypeId
@@ -49,8 +66,10 @@ export interface SqliteClient extends Client.SqlClient {
49
66
  }
50
67
 
51
68
  /**
69
+ * Metadata returned from a Node SQLite backup operation, reporting total and remaining page counts.
70
+ *
52
71
  * @category models
53
- * @since 1.0.0
72
+ * @since 4.0.0
54
73
  */
55
74
  export interface BackupMetadata {
56
75
  readonly totalPages: number
@@ -58,14 +77,18 @@ export interface BackupMetadata {
58
77
  }
59
78
 
60
79
  /**
61
- * @category tags
62
- * @since 1.0.0
80
+ * Service tag for the node SQLite client implementation.
81
+ *
82
+ * @category services
83
+ * @since 4.0.0
63
84
  */
64
- export const SqliteClient = ServiceMap.Service<SqliteClient>("@effect/sql-sqlite-node/SqliteClient")
85
+ export const SqliteClient = Context.Service<SqliteClient>("@effect/sql-sqlite-node/SqliteClient")
65
86
 
66
87
  /**
88
+ * Configuration for a node SQLite client backed by `better-sqlite3`, including the database filename, read-only mode, statement cache settings, WAL behavior, span attributes, and query/result name transforms.
89
+ *
67
90
  * @category models
68
- * @since 1.0.0
91
+ * @since 4.0.0
69
92
  */
70
93
  export interface SqliteClientConfig {
71
94
  readonly filename: string
@@ -86,8 +109,10 @@ interface SqliteConnection extends Connection {
86
109
  }
87
110
 
88
111
  /**
89
- * @category constructor
90
- * @since 1.0.0
112
+ * Creates a scoped node SQLite client from the supplied configuration, using a single serialized connection with WAL enabled by default and exposing SQLite-specific `export`, `backup`, and `loadExtension` operations.
113
+ *
114
+ * @category constructors
115
+ * @since 4.0.0
91
116
  */
92
117
  export const make = (
93
118
  options: SqliteClientConfig
@@ -117,7 +142,7 @@ export const make = (
117
142
  lookup: (sql: string) =>
118
143
  Effect.try({
119
144
  try: () => db.prepare(sql),
120
- catch: (cause) => new SqlError({ cause, message: "Failed to prepare statement " })
145
+ catch: (cause) => new SqlError({ reason: classifyError(cause, "Failed to prepare statement", "prepare") })
121
146
  })
122
147
  })
123
148
 
@@ -127,7 +152,7 @@ export const make = (
127
152
  raw: boolean
128
153
  ) =>
129
154
  Effect.withFiber<ReadonlyArray<any>, SqlError>((fiber) => {
130
- if (ServiceMap.get(fiber.services, Client.SafeIntegers)) {
155
+ if (Context.get(fiber.context, Client.SafeIntegers)) {
131
156
  statement.safeIntegers(true)
132
157
  }
133
158
  try {
@@ -137,7 +162,7 @@ export const make = (
137
162
  const result = statement.run(...params)
138
163
  return Effect.succeed(raw ? result as unknown as ReadonlyArray<any> : [])
139
164
  } catch (cause) {
140
- return Effect.fail(new SqlError({ cause, message: "Failed to execute statement" }))
165
+ return Effect.fail(new SqlError({ reason: classifyError(cause, "Failed to execute statement", "execute") }))
141
166
  }
142
167
  })
143
168
 
@@ -169,11 +194,30 @@ export const make = (
169
194
  statement.run(...params)
170
195
  return []
171
196
  },
172
- catch: (cause) => new SqlError({ cause, message: "Failed to execute statement" })
197
+ catch: (cause) => new SqlError({ reason: classifyError(cause, "Failed to execute statement", "execute") })
173
198
  }),
174
199
  (statement) => Effect.sync(() => statement.reader && statement.raw(false))
175
200
  )
176
201
 
202
+ const runValuesUnprepared = (
203
+ sql: string,
204
+ params: ReadonlyArray<unknown>
205
+ ) =>
206
+ Effect.try({
207
+ try: () => {
208
+ const statement = db.prepare(sql)
209
+ if (statement.reader) {
210
+ statement.raw(true)
211
+ return statement.all(...params) as ReadonlyArray<
212
+ ReadonlyArray<unknown>
213
+ >
214
+ }
215
+ statement.run(...params)
216
+ return []
217
+ },
218
+ catch: (cause) => new SqlError({ reason: classifyError(cause, "Failed to execute statement", "execute") })
219
+ })
220
+
177
221
  return identity<SqliteConnection>({
178
222
  execute(sql, params, transformRows) {
179
223
  return transformRows
@@ -186,6 +230,9 @@ export const make = (
186
230
  executeValues(sql, params) {
187
231
  return runValues(sql, params)
188
232
  },
233
+ executeValuesUnprepared(sql, params) {
234
+ return runValuesUnprepared(sql, params)
235
+ },
189
236
  executeUnprepared(sql, params, transformRows) {
190
237
  const effect = runStatement(db.prepare(sql), params ?? [], false)
191
238
  return transformRows ? Effect.map(effect, transformRows) : effect
@@ -195,18 +242,19 @@ export const make = (
195
242
  },
196
243
  export: Effect.try({
197
244
  try: () => db.serialize(),
198
- catch: (cause) => new SqlError({ cause, message: "Failed to export database" })
245
+ catch: (cause) => new SqlError({ reason: classifyError(cause, "Failed to export database", "export") })
199
246
  }),
200
247
  backup(destination) {
201
248
  return Effect.tryPromise({
202
249
  try: () => db.backup(destination),
203
- catch: (cause) => new SqlError({ cause, message: "Failed to backup database" })
250
+ catch: (cause) => new SqlError({ reason: classifyError(cause, "Failed to backup database", "backup") })
204
251
  })
205
252
  },
206
253
  loadExtension(path) {
207
254
  return Effect.try({
208
255
  try: () => db.loadExtension(path),
209
- catch: (cause) => new SqlError({ cause, message: "Failed to load extension" })
256
+ catch: (cause) =>
257
+ new SqlError({ reason: classifyError(cause, "Failed to load extension", "loadExtension") })
210
258
  })
211
259
  }
212
260
  })
@@ -218,7 +266,7 @@ export const make = (
218
266
  const acquirer = semaphore.withPermits(1)(Effect.succeed(connection))
219
267
  const transactionAcquirer = Effect.uninterruptibleMask((restore) => {
220
268
  const fiber = Fiber.getCurrent()!
221
- const scope = ServiceMap.getUnsafe(fiber.services, Scope.Scope)
269
+ const scope = Context.getUnsafe(fiber.context, Scope.Scope)
222
270
  return Effect.as(
223
271
  Effect.tap(
224
272
  restore(semaphore.take(1)),
@@ -250,33 +298,37 @@ export const make = (
250
298
  })
251
299
 
252
300
  /**
301
+ * Builds a layer from an Effect `Config` value, providing both the node `SqliteClient` service and the generic `SqlClient` service.
302
+ *
253
303
  * @category layers
254
- * @since 1.0.0
304
+ * @since 4.0.0
255
305
  */
256
306
  export const layerConfig = (
257
307
  config: Config.Wrap<SqliteClientConfig>
258
308
  ): Layer.Layer<SqliteClient | Client.SqlClient, Config.ConfigError> =>
259
- Layer.effectServices(
260
- Config.unwrap(config).asEffect().pipe(
309
+ Layer.effectContext(
310
+ Config.unwrap(config).pipe(
261
311
  Effect.flatMap(make),
262
312
  Effect.map((client) =>
263
- ServiceMap.make(SqliteClient, client).pipe(
264
- ServiceMap.add(Client.SqlClient, client)
313
+ Context.make(SqliteClient, client).pipe(
314
+ Context.add(Client.SqlClient, client)
265
315
  )
266
316
  )
267
317
  )
268
318
  ).pipe(Layer.provide(Reactivity.layer))
269
319
 
270
320
  /**
321
+ * Builds a layer from a node SQLite client configuration, providing both `SqliteClient` and the generic `SqlClient` service.
322
+ *
271
323
  * @category layers
272
- * @since 1.0.0
324
+ * @since 4.0.0
273
325
  */
274
326
  export const layer = (
275
327
  config: SqliteClientConfig
276
328
  ): Layer.Layer<SqliteClient | Client.SqlClient> =>
277
- Layer.effectServices(
329
+ Layer.effectContext(
278
330
  Effect.map(make(config), (client) =>
279
- ServiceMap.make(SqliteClient, client).pipe(
280
- ServiceMap.add(Client.SqlClient, client)
331
+ Context.make(SqliteClient, client).pipe(
332
+ Context.add(Client.SqlClient, client)
281
333
  ))
282
334
  ).pipe(Layer.provide(Reactivity.layer))
@@ -1,5 +1,12 @@
1
1
  /**
2
- * @since 1.0.0
2
+ * Runs database migrations for Node.js SQLite projects that use Effect SQL.
3
+ *
4
+ * This module re-exports the shared migration loaders and errors, then provides
5
+ * `run` and `layer` helpers that apply pending migration files with the current
6
+ * `SqlClient`. It does not add Node-specific schema dump support; migration
7
+ * execution is handled by the shared SQL migrator.
8
+ *
9
+ * @since 4.0.0
3
10
  */
4
11
  import type * as Effect from "effect/Effect"
5
12
  import * as Layer from "effect/Layer"
@@ -8,13 +15,15 @@ import type * as Client from "effect/unstable/sql/SqlClient"
8
15
  import type { SqlError } from "effect/unstable/sql/SqlError"
9
16
 
10
17
  /**
11
- * @since 1.0.0
18
+ * @since 4.0.0
12
19
  */
13
20
  export * from "effect/unstable/sql/Migrator"
14
21
 
15
22
  /**
16
- * @category constructor
17
- * @since 1.0.0
23
+ * Runs SQL migrations for a SQLite database using the shared `Migrator` implementation and the current `SqlClient`.
24
+ *
25
+ * @category constructors
26
+ * @since 4.0.0
18
27
  */
19
28
  export const run: <R2 = never>(
20
29
  options: Migrator.MigratorOptions<R2>
@@ -67,8 +76,10 @@ export const run: <R2 = never>(
67
76
  })
68
77
 
69
78
  /**
70
- * @category constructor
71
- * @since 1.0.0
79
+ * Creates a layer that runs the configured SQLite migrations during layer construction and provides no services.
80
+ *
81
+ * @category constructors
82
+ * @since 4.0.0
72
83
  */
73
84
  export const layer = <R>(
74
85
  options: Migrator.MigratorOptions<R>
package/src/index.ts CHANGED
@@ -1,15 +1,15 @@
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 SqliteClient from "./SqliteClient.ts"
11
11
 
12
12
  /**
13
- * @since 1.0.0
13
+ * @since 4.0.0
14
14
  */
15
15
  export * as SqliteMigrator from "./SqliteMigrator.ts"