@effect/sql-sqlite-node 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,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,8 +99,7 @@ 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)));
90
105
  return identity({
@@ -107,16 +122,14 @@ export const make = options => Effect.gen(function* () {
107
122
  export: Effect.try({
108
123
  try: () => db.serialize(),
109
124
  catch: cause => new SqlError({
110
- cause,
111
- message: "Failed to export database"
125
+ reason: classifyError(cause, "Failed to export database", "export")
112
126
  })
113
127
  }),
114
128
  backup(destination) {
115
129
  return Effect.tryPromise({
116
130
  try: () => db.backup(destination),
117
131
  catch: cause => new SqlError({
118
- cause,
119
- message: "Failed to backup database"
132
+ reason: classifyError(cause, "Failed to backup database", "backup")
120
133
  })
121
134
  });
122
135
  },
@@ -124,8 +137,7 @@ export const make = options => Effect.gen(function* () {
124
137
  return Effect.try({
125
138
  try: () => db.loadExtension(path),
126
139
  catch: cause => new SqlError({
127
- cause,
128
- message: "Failed to load extension"
140
+ reason: classifyError(cause, "Failed to load extension", "loadExtension")
129
141
  })
130
142
  });
131
143
  }
@@ -136,7 +148,7 @@ export const make = options => Effect.gen(function* () {
136
148
  const acquirer = semaphore.withPermits(1)(Effect.succeed(connection));
137
149
  const transactionAcquirer = Effect.uninterruptibleMask(restore => {
138
150
  const fiber = Fiber.getCurrent();
139
- const scope = ServiceMap.getUnsafe(fiber.services, Scope.Scope);
151
+ const scope = Context.getUnsafe(fiber.context, Scope.Scope);
140
152
  return Effect.as(Effect.tap(restore(semaphore.take(1)), () => Scope.addFinalizer(scope, semaphore.release(1))), connection);
141
153
  });
142
154
  return Object.assign(yield* Client.make({
@@ -154,13 +166,17 @@ export const make = options => Effect.gen(function* () {
154
166
  });
155
167
  });
156
168
  /**
169
+ * Builds a layer from an Effect `Config` value, providing both the node `SqliteClient` service and the generic `SqlClient` service.
170
+ *
157
171
  * @category layers
158
- * @since 1.0.0
172
+ * @since 4.0.0
159
173
  */
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));
174
+ 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
175
  /**
176
+ * Builds a layer from a node SQLite client configuration, providing both `SqliteClient` and the generic `SqlClient` service.
177
+ *
162
178
  * @category layers
163
- * @since 1.0.0
179
+ * @since 4.0.0
164
180
  */
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));
181
+ 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
182
  //# 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","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","effectContext","unwrap","pipe","client","add","SqlClient","provide","layer"],"sources":["../src/SqliteClient.ts"],"sourcesContent":[null],"mappings":"AAAA;;;;;;;;;;;AAWA,OAAOA,MAAM,MAAM,gBAAgB;AACnC,OAAO,KAAKC,KAAK,MAAM,cAAc;AACrC,OAAO,KAAKC,MAAM,MAAM,eAAe;AACvC,OAAO,KAAKC,OAAO,MAAM,gBAAgB;AACzC,OAAO,KAAKC,QAAQ,MAAM,iBAAiB;AAC3C,OAAO,KAAKC,MAAM,MAAM,eAAe;AACvC,OAAO,KAAKC,KAAK,MAAM,cAAc;AACrC,SAASC,QAAQ,QAAQ,iBAAiB;AAC1C,OAAO,KAAKC,KAAK,MAAM,cAAc;AACrC,OAAO,KAAKC,KAAK,MAAM,cAAc;AACrC,OAAO,KAAKC,SAAS,MAAM,kBAAkB;AAC7C,OAAO,KAAKC,MAAM,MAAM,eAAe;AACvC,OAAO,KAAKC,UAAU,MAAM,uCAAuC;AACnE,OAAO,KAAKC,MAAM,MAAM,+BAA+B;AAEvD,SAASC,mBAAmB,EAAEC,QAAQ,QAAQ,8BAA8B;AAC5E,OAAO,KAAKC,SAAS,MAAM,+BAA+B;AAE1D,MAAMC,mBAAmB,GAAG,gBAAgB;AAE5C,MAAMC,aAAa,GAAGA,CAACC,KAAc,EAAEC,OAAe,EAAEC,SAAiB,KACvEP,mBAAmB,CAACK,KAAK,EAAE;EAAEC,OAAO;EAAEC;AAAS,CAAE,CAAC;AAEpD;;;;;;AAMA,OAAO,MAAMC,MAAM,GAAW,uCAAuC;AAsCrE;;;;;;AAMA,OAAO,MAAMC,YAAY,gBAAGpB,OAAO,CAACqB,OAAO,CAAe,sCAAsC,CAAC;AA0BjG;;;;;;AAMA,OAAO,MAAMC,IAAI,GACfC,OAA2B,IAE3BrB,MAAM,CAACsB,GAAG,CAAC,aAAS;EAClB,MAAMC,QAAQ,GAAGZ,SAAS,CAACa,kBAAkB,CAACH,OAAO,CAACI,mBAAmB,CAAC;EAC1E,MAAMC,aAAa,GAAGL,OAAO,CAACM,oBAAoB,GAChDhB,SAAS,CAACiB,iBAAiB,CACzBP,OAAO,CAACM,oBAAoB,CAC7B,CAACE,KAAK,GACPC,SAAS;EAEX,MAAMC,cAAc,GAAG/B,MAAM,CAACsB,GAAG,CAAC,aAAS;IACzC,MAAMU,KAAK,GAAG,OAAOhC,MAAM,CAACgC,KAAK;IACjC,MAAMC,EAAE,GAAG,IAAItC,MAAM,CAAC0B,OAAO,CAACa,QAAQ,EAAE;MACtCC,QAAQ,EAAEd,OAAO,CAACc,QAAQ,IAAI;KAC/B,CAAC;IACF,OAAO/B,KAAK,CAACgC,YAAY,CAACJ,KAAK,EAAEhC,MAAM,CAACqC,IAAI,CAAC,MAAMJ,EAAE,CAACK,KAAK,EAAE,CAAC,CAAC;IAE/D,IAAIjB,OAAO,CAACkB,UAAU,KAAK,IAAI,EAAE;MAC/BN,EAAE,CAACO,MAAM,CAAC,oBAAoB,CAAC;IACjC;IAEA,MAAMC,YAAY,GAAG,OAAO7C,KAAK,CAACwB,IAAI,CAAC;MACrCsB,QAAQ,EAAErB,OAAO,CAACsB,gBAAgB,IAAI,GAAG;MACzCC,UAAU,EAAEvB,OAAO,CAACwB,eAAe,IAAI9C,QAAQ,CAAC+C,OAAO,CAAC,EAAE,CAAC;MAC3DC,MAAM,EAAGC,GAAW,IAClBhD,MAAM,CAACiD,GAAG,CAAC;QACTA,GAAG,EAAEA,CAAA,KAAMhB,EAAE,CAACiB,OAAO,CAACF,GAAG,CAAC;QAC1BG,KAAK,EAAGrC,KAAK,IAAK,IAAIJ,QAAQ,CAAC;UAAE0C,MAAM,EAAEvC,aAAa,CAACC,KAAK,EAAE,6BAA6B,EAAE,SAAS;QAAC,CAAE;OAC1G;KACJ,CAAC;IAEF,MAAMuC,YAAY,GAAGA,CACnBC,SAA2B,EAC3BC,MAA8B,EAC9BC,GAAY,KAEZxD,MAAM,CAACyD,SAAS,CAAgCC,KAAK,IAAI;MACvD,IAAI5D,OAAO,CAAC6D,GAAG,CAACD,KAAK,CAACE,OAAO,EAAEpD,MAAM,CAACqD,YAAY,CAAC,EAAE;QACnDP,SAAS,CAACQ,YAAY,CAAC,IAAI,CAAC;MAC9B;MACA,IAAI;QACF,IAAIR,SAAS,CAACS,MAAM,EAAE;UACpB,OAAO/D,MAAM,CAACgE,OAAO,CAACV,SAAS,CAACW,GAAG,CAAC,GAAGV,MAAM,CAAC,CAAC;QACjD;QACA,MAAMW,MAAM,GAAGZ,SAAS,CAACa,GAAG,CAAC,GAAGZ,MAAM,CAAC;QACvC,OAAOvD,MAAM,CAACgE,OAAO,CAACR,GAAG,GAAGU,MAAuC,GAAG,EAAE,CAAC;MAC3E,CAAC,CAAC,OAAOpD,KAAK,EAAE;QACd,OAAOd,MAAM,CAACoE,IAAI,CAAC,IAAI1D,QAAQ,CAAC;UAAE0C,MAAM,EAAEvC,aAAa,CAACC,KAAK,EAAE,6BAA6B,EAAE,SAAS;QAAC,CAAE,CAAC,CAAC;MAC9G;IACF,CAAC,CAAC;IAEJ,MAAMqD,GAAG,GAAGA,CACVnB,GAAW,EACXO,MAA8B,EAC9BC,GAAG,GAAG,KAAK,KAEXxD,MAAM,CAACqE,OAAO,CACZzE,KAAK,CAAC+D,GAAG,CAAClB,YAAY,EAAEO,GAAG,CAAC,EAC3BsB,CAAC,IAAKjB,YAAY,CAACiB,CAAC,EAAEf,MAAM,EAAEC,GAAG,CAAC,CACpC;IAEH,MAAMe,SAAS,GAAGA,CAChBvB,GAAW,EACXO,MAA8B,KAE9BvD,MAAM,CAACwE,iBAAiB,CACtB5E,KAAK,CAAC+D,GAAG,CAAClB,YAAY,EAAEO,GAAG,CAAC,EAC3BM,SAAS,IACRtD,MAAM,CAACiD,GAAG,CAAC;MACTA,GAAG,EAAEA,CAAA,KAAK;QACR,IAAIK,SAAS,CAACS,MAAM,EAAE;UACpBT,SAAS,CAACE,GAAG,CAAC,IAAI,CAAC;UACnB,OAAOF,SAAS,CAACW,GAAG,CAAC,GAAGV,MAAM,CAE7B;QACH;QACAD,SAAS,CAACa,GAAG,CAAC,GAAGZ,MAAM,CAAC;QACxB,OAAO,EAAE;MACX,CAAC;MACDJ,KAAK,EAAGrC,KAAK,IAAK,IAAIJ,QAAQ,CAAC;QAAE0C,MAAM,EAAEvC,aAAa,CAACC,KAAK,EAAE,6BAA6B,EAAE,SAAS;MAAC,CAAE;KAC1G,CAAC,EACHwC,SAAS,IAAKtD,MAAM,CAACqC,IAAI,CAAC,MAAMiB,SAAS,CAACS,MAAM,IAAIT,SAAS,CAACE,GAAG,CAAC,KAAK,CAAC,CAAC,CAC3E;IAEH,OAAOtD,QAAQ,CAAmB;MAChCuE,OAAOA,CAACzB,GAAG,EAAEO,MAAM,EAAE7B,aAAa;QAChC,OAAOA,aAAa,GAChB1B,MAAM,CAAC0E,GAAG,CAACP,GAAG,CAACnB,GAAG,EAAEO,MAAM,CAAC,EAAE7B,aAAa,CAAC,GAC3CyC,GAAG,CAACnB,GAAG,EAAEO,MAAM,CAAC;MACtB,CAAC;MACDoB,UAAUA,CAAC3B,GAAG,EAAEO,MAAM;QACpB,OAAOY,GAAG,CAACnB,GAAG,EAAEO,MAAM,EAAE,IAAI,CAAC;MAC/B,CAAC;MACDqB,aAAaA,CAAC5B,GAAG,EAAEO,MAAM;QACvB,OAAOgB,SAAS,CAACvB,GAAG,EAAEO,MAAM,CAAC;MAC/B,CAAC;MACDsB,iBAAiBA,CAAC7B,GAAG,EAAEO,MAAM,EAAE7B,aAAa;QAC1C,MAAMoD,MAAM,GAAGzB,YAAY,CAACpB,EAAE,CAACiB,OAAO,CAACF,GAAG,CAAC,EAAEO,MAAM,IAAI,EAAE,EAAE,KAAK,CAAC;QACjE,OAAO7B,aAAa,GAAG1B,MAAM,CAAC0E,GAAG,CAACI,MAAM,EAAEpD,aAAa,CAAC,GAAGoD,MAAM;MACnE,CAAC;MACDC,aAAaA,CAACC,IAAI,EAAEC,OAAO;QACzB,OAAO3E,MAAM,CAAC4E,GAAG,CAAC,+BAA+B,CAAC;MACpD,CAAC;MACDC,MAAM,EAAEnF,MAAM,CAACiD,GAAG,CAAC;QACjBA,GAAG,EAAEA,CAAA,KAAMhB,EAAE,CAACmD,SAAS,EAAE;QACzBjC,KAAK,EAAGrC,KAAK,IAAK,IAAIJ,QAAQ,CAAC;UAAE0C,MAAM,EAAEvC,aAAa,CAACC,KAAK,EAAE,2BAA2B,EAAE,QAAQ;QAAC,CAAE;OACvG,CAAC;MACFuE,MAAMA,CAACC,WAAW;QAChB,OAAOtF,MAAM,CAACuF,UAAU,CAAC;UACvBtC,GAAG,EAAEA,CAAA,KAAMhB,EAAE,CAACoD,MAAM,CAACC,WAAW,CAAC;UACjCnC,KAAK,EAAGrC,KAAK,IAAK,IAAIJ,QAAQ,CAAC;YAAE0C,MAAM,EAAEvC,aAAa,CAACC,KAAK,EAAE,2BAA2B,EAAE,QAAQ;UAAC,CAAE;SACvG,CAAC;MACJ,CAAC;MACD0E,aAAaA,CAACC,IAAI;QAChB,OAAOzF,MAAM,CAACiD,GAAG,CAAC;UAChBA,GAAG,EAAEA,CAAA,KAAMhB,EAAE,CAACuD,aAAa,CAACC,IAAI,CAAC;UACjCtC,KAAK,EAAGrC,KAAK,IACX,IAAIJ,QAAQ,CAAC;YAAE0C,MAAM,EAAEvC,aAAa,CAACC,KAAK,EAAE,0BAA0B,EAAE,eAAe;UAAC,CAAE;SAC7F,CAAC;MACJ;KACD,CAAC;EACJ,CAAC,CAAC;EAEF,MAAM4E,SAAS,GAAG,OAAOrF,SAAS,CAACe,IAAI,CAAC,CAAC,CAAC;EAC1C,MAAMuE,UAAU,GAAG,OAAO5D,cAAc;EAExC,MAAM6D,QAAQ,GAAGF,SAAS,CAACG,WAAW,CAAC,CAAC,CAAC,CAAC7F,MAAM,CAACgE,OAAO,CAAC2B,UAAU,CAAC,CAAC;EACrE,MAAMG,mBAAmB,GAAG9F,MAAM,CAAC+F,mBAAmB,CAAEC,OAAO,IAAI;IACjE,MAAMtC,KAAK,GAAGzD,KAAK,CAACgG,UAAU,EAAG;IACjC,MAAMjE,KAAK,GAAGlC,OAAO,CAACoG,SAAS,CAACxC,KAAK,CAACE,OAAO,EAAExD,KAAK,CAACA,KAAK,CAAC;IAC3D,OAAOJ,MAAM,CAACmG,EAAE,CACdnG,MAAM,CAACoG,GAAG,CACRJ,OAAO,CAACN,SAAS,CAACW,IAAI,CAAC,CAAC,CAAC,CAAC,EAC1B,MAAMjG,KAAK,CAACgC,YAAY,CAACJ,KAAK,EAAE0D,SAAS,CAACY,OAAO,CAAC,CAAC,CAAC,CAAC,CACtD,EACDX,UAAU,CACX;EACH,CAAC,CAAC;EAEF,OAAOY,MAAM,CAACC,MAAM,CACjB,OAAOhG,MAAM,CAACY,IAAI,CAAC;IAClBwE,QAAQ;IACRrE,QAAQ;IACRuE,mBAAmB;IACnBW,cAAc,EAAE,CACd,IAAIpF,OAAO,CAACoF,cAAc,GAAGF,MAAM,CAACG,OAAO,CAACrF,OAAO,CAACoF,cAAc,CAAC,GAAG,EAAE,CAAC,EACzE,CAAC7F,mBAAmB,EAAE,QAAQ,CAAC,CAChC;IACDc;GACD,CAAC,EACF;IACE,CAACT,MAAM,GAAGA,MAAgB;IAC1B0F,MAAM,EAAEtF,OAAO;IACf8D,MAAM,EAAEnF,MAAM,CAACqE,OAAO,CAACuB,QAAQ,EAAGgB,CAAC,IAAKA,CAAC,CAACzB,MAAM,CAAC;IACjDE,MAAM,EAAGC,WAAmB,IAAKtF,MAAM,CAACqE,OAAO,CAACuB,QAAQ,EAAGgB,CAAC,IAAKA,CAAC,CAACvB,MAAM,CAACC,WAAW,CAAC,CAAC;IACvFE,aAAa,EAAGC,IAAY,IAAKzF,MAAM,CAACqE,OAAO,CAACuB,QAAQ,EAAGgB,CAAC,IAAKA,CAAC,CAACpB,aAAa,CAACC,IAAI,CAAC;GACvF,CACF;AACH,CAAC,CAAC;AAEJ;;;;;;AAMA,OAAO,MAAMoB,WAAW,GACtBF,MAAuC,IAEvCxG,KAAK,CAAC2G,aAAa,CACjBjH,MAAM,CAACkH,MAAM,CAACJ,MAAM,CAAC,CAACK,IAAI,CACxBhH,MAAM,CAACqE,OAAO,CAACjD,IAAI,CAAC,EACpBpB,MAAM,CAAC0E,GAAG,CAAEuC,MAAM,IAChBnH,OAAO,CAACsB,IAAI,CAACF,YAAY,EAAE+F,MAAM,CAAC,CAACD,IAAI,CACrClH,OAAO,CAACoH,GAAG,CAAC1G,MAAM,CAAC2G,SAAS,EAAEF,MAAM,CAAC,CACtC,CACF,CACF,CACF,CAACD,IAAI,CAAC7G,KAAK,CAACiH,OAAO,CAAC7G,UAAU,CAAC8G,KAAK,CAAC,CAAC;AAEzC;;;;;;AAMA,OAAO,MAAMA,KAAK,GAChBV,MAA0B,IAE1BxG,KAAK,CAAC2G,aAAa,CACjB9G,MAAM,CAAC0E,GAAG,CAACtD,IAAI,CAACuF,MAAM,CAAC,EAAGM,MAAM,IAC9BnH,OAAO,CAACsB,IAAI,CAACF,YAAY,EAAE+F,MAAM,CAAC,CAACD,IAAI,CACrClH,OAAO,CAACoH,GAAG,CAAC1G,MAAM,CAAC2G,SAAS,EAAEF,MAAM,CAAC,CACtC,CAAC,CACL,CAACD,IAAI,CAAC7G,KAAK,CAACiH,OAAO,CAAC7G,UAAU,CAAC8G,KAAK,CAAC,CAAC","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.8",
3
+ "version": "4.0.0-beta.81",
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.8",
48
- "effect": "^4.0.0-beta.8"
47
+ "@effect/platform-node": "^4.0.0-beta.81",
48
+ "effect": "^4.0.0-beta.81"
49
49
  },
50
50
  "peerDependencies": {
51
- "effect": "^4.0.0-beta.8"
51
+ "effect": "^4.0.0-beta.81"
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,7 +194,7 @@ 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
  )
@@ -195,18 +220,19 @@ export const make = (
195
220
  },
196
221
  export: Effect.try({
197
222
  try: () => db.serialize(),
198
- catch: (cause) => new SqlError({ cause, message: "Failed to export database" })
223
+ catch: (cause) => new SqlError({ reason: classifyError(cause, "Failed to export database", "export") })
199
224
  }),
200
225
  backup(destination) {
201
226
  return Effect.tryPromise({
202
227
  try: () => db.backup(destination),
203
- catch: (cause) => new SqlError({ cause, message: "Failed to backup database" })
228
+ catch: (cause) => new SqlError({ reason: classifyError(cause, "Failed to backup database", "backup") })
204
229
  })
205
230
  },
206
231
  loadExtension(path) {
207
232
  return Effect.try({
208
233
  try: () => db.loadExtension(path),
209
- catch: (cause) => new SqlError({ cause, message: "Failed to load extension" })
234
+ catch: (cause) =>
235
+ new SqlError({ reason: classifyError(cause, "Failed to load extension", "loadExtension") })
210
236
  })
211
237
  }
212
238
  })
@@ -218,7 +244,7 @@ export const make = (
218
244
  const acquirer = semaphore.withPermits(1)(Effect.succeed(connection))
219
245
  const transactionAcquirer = Effect.uninterruptibleMask((restore) => {
220
246
  const fiber = Fiber.getCurrent()!
221
- const scope = ServiceMap.getUnsafe(fiber.services, Scope.Scope)
247
+ const scope = Context.getUnsafe(fiber.context, Scope.Scope)
222
248
  return Effect.as(
223
249
  Effect.tap(
224
250
  restore(semaphore.take(1)),
@@ -250,33 +276,37 @@ export const make = (
250
276
  })
251
277
 
252
278
  /**
279
+ * Builds a layer from an Effect `Config` value, providing both the node `SqliteClient` service and the generic `SqlClient` service.
280
+ *
253
281
  * @category layers
254
- * @since 1.0.0
282
+ * @since 4.0.0
255
283
  */
256
284
  export const layerConfig = (
257
285
  config: Config.Wrap<SqliteClientConfig>
258
286
  ): Layer.Layer<SqliteClient | Client.SqlClient, Config.ConfigError> =>
259
- Layer.effectServices(
260
- Config.unwrap(config).asEffect().pipe(
287
+ Layer.effectContext(
288
+ Config.unwrap(config).pipe(
261
289
  Effect.flatMap(make),
262
290
  Effect.map((client) =>
263
- ServiceMap.make(SqliteClient, client).pipe(
264
- ServiceMap.add(Client.SqlClient, client)
291
+ Context.make(SqliteClient, client).pipe(
292
+ Context.add(Client.SqlClient, client)
265
293
  )
266
294
  )
267
295
  )
268
296
  ).pipe(Layer.provide(Reactivity.layer))
269
297
 
270
298
  /**
299
+ * Builds a layer from a node SQLite client configuration, providing both `SqliteClient` and the generic `SqlClient` service.
300
+ *
271
301
  * @category layers
272
- * @since 1.0.0
302
+ * @since 4.0.0
273
303
  */
274
304
  export const layer = (
275
305
  config: SqliteClientConfig
276
306
  ): Layer.Layer<SqliteClient | Client.SqlClient> =>
277
- Layer.effectServices(
307
+ Layer.effectContext(
278
308
  Effect.map(make(config), (client) =>
279
- ServiceMap.make(SqliteClient, client).pipe(
280
- ServiceMap.add(Client.SqlClient, client)
309
+ Context.make(SqliteClient, client).pipe(
310
+ Context.add(Client.SqlClient, client)
281
311
  ))
282
312
  ).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"