@effect/sql-sqlite-bun 4.0.0-beta.99 → 4.0.0-rc.109

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.
Files changed (90) hide show
  1. package/AGENTS.md +395 -0
  2. package/CLAUDE.md +395 -0
  3. package/README.md +10 -3
  4. package/ai-docs/README.md +44 -0
  5. package/ai-docs/package.json +36 -0
  6. package/ai-docs/src/01_effect/01_basics/01_effect-gen.ts +30 -0
  7. package/ai-docs/src/01_effect/01_basics/02_effect-fn.ts +39 -0
  8. package/ai-docs/src/01_effect/01_basics/10_creating-effects.ts +74 -0
  9. package/ai-docs/src/01_effect/01_basics/index.md +5 -0
  10. package/ai-docs/src/01_effect/02_schema/10_schema-basics.ts +43 -0
  11. package/ai-docs/src/01_effect/02_schema/index.md +7 -0
  12. package/ai-docs/src/01_effect/03_services/01_service.ts +45 -0
  13. package/ai-docs/src/01_effect/03_services/10_reference.ts +10 -0
  14. package/ai-docs/src/01_effect/03_services/20_layer-composition.ts +70 -0
  15. package/ai-docs/src/01_effect/03_services/20_layer-unwrap.ts +66 -0
  16. package/ai-docs/src/01_effect/03_services/index.md +5 -0
  17. package/ai-docs/src/01_effect/04_errors/01_error-handling.ts +30 -0
  18. package/ai-docs/src/01_effect/04_errors/10_catch-tags.ts +24 -0
  19. package/ai-docs/src/01_effect/04_errors/20_reason-errors.ts +64 -0
  20. package/ai-docs/src/01_effect/04_errors/index.md +1 -0
  21. package/ai-docs/src/01_effect/05_resources/10_acquire-release.ts +105 -0
  22. package/ai-docs/src/01_effect/05_resources/20_layer-side-effects.ts +31 -0
  23. package/ai-docs/src/01_effect/05_resources/30_layer-map.ts +86 -0
  24. package/ai-docs/src/01_effect/05_resources/index.md +3 -0
  25. package/ai-docs/src/01_effect/06_running/10_run-main.ts +30 -0
  26. package/ai-docs/src/01_effect/06_running/20_layer-launch.ts +27 -0
  27. package/ai-docs/src/01_effect/06_running/index.md +1 -0
  28. package/ai-docs/src/01_effect/07_pubsub/10_pubsub.ts +56 -0
  29. package/ai-docs/src/01_effect/07_pubsub/index.md +3 -0
  30. package/ai-docs/src/03_stream/10_creating-streams.ts +103 -0
  31. package/ai-docs/src/03_stream/20_consuming-streams.ts +137 -0
  32. package/ai-docs/src/03_stream/30_encoding.ts +165 -0
  33. package/ai-docs/src/03_stream/index.md +4 -0
  34. package/ai-docs/src/04_integration/10_managed-runtime.ts +129 -0
  35. package/ai-docs/src/04_integration/index.md +5 -0
  36. package/ai-docs/src/05_batching/10_request-resolver.ts +89 -0
  37. package/ai-docs/src/05_batching/index.md +3 -0
  38. package/ai-docs/src/06_schedule/10_schedules.ts +110 -0
  39. package/ai-docs/src/06_schedule/index.md +3 -0
  40. package/ai-docs/src/07_datetime/10_creating-and-formatting.ts +30 -0
  41. package/ai-docs/src/07_datetime/20_time-zones.ts +44 -0
  42. package/ai-docs/src/07_datetime/index.md +5 -0
  43. package/ai-docs/src/08_observability/10_logging.ts +66 -0
  44. package/ai-docs/src/08_observability/20_otlp-tracing.ts +95 -0
  45. package/ai-docs/src/08_observability/index.md +7 -0
  46. package/ai-docs/src/09_testing/10_effect-tests.ts +55 -0
  47. package/ai-docs/src/09_testing/20_layer-tests.ts +138 -0
  48. package/ai-docs/src/09_testing/index.md +1 -0
  49. package/ai-docs/src/10_predicate/01_basics.ts +14 -0
  50. package/ai-docs/src/10_predicate/index.md +9 -0
  51. package/ai-docs/src/40_sql/10_basics.ts +175 -0
  52. package/ai-docs/src/40_sql/index.md +6 -0
  53. package/ai-docs/src/50_http-client/10_basics.ts +102 -0
  54. package/ai-docs/src/50_http-client/index.md +3 -0
  55. package/ai-docs/src/51_http-server/10_basics.ts +118 -0
  56. package/ai-docs/src/51_http-server/20_testing.ts +100 -0
  57. package/ai-docs/src/51_http-server/fixtures/api/Api.ts +14 -0
  58. package/ai-docs/src/51_http-server/fixtures/api/Authorization.ts +36 -0
  59. package/ai-docs/src/51_http-server/fixtures/api/System.ts +10 -0
  60. package/ai-docs/src/51_http-server/fixtures/api/Users.ts +107 -0
  61. package/ai-docs/src/51_http-server/fixtures/domain/User.ts +21 -0
  62. package/ai-docs/src/51_http-server/fixtures/domain/UserErrors.ts +22 -0
  63. package/ai-docs/src/51_http-server/fixtures/server/Authorization.ts +37 -0
  64. package/ai-docs/src/51_http-server/fixtures/server/Users/http.ts +80 -0
  65. package/ai-docs/src/51_http-server/fixtures/server/Users.ts +183 -0
  66. package/ai-docs/src/51_http-server/index.md +3 -0
  67. package/ai-docs/src/60_child-process/10_working-with-child-processes.ts +117 -0
  68. package/ai-docs/src/60_child-process/index.md +3 -0
  69. package/ai-docs/src/70_cli/10_basics.ts +160 -0
  70. package/ai-docs/src/70_cli/index.md +5 -0
  71. package/ai-docs/src/71_ai/10_language-model.ts +156 -0
  72. package/ai-docs/src/71_ai/20_tools.ts +226 -0
  73. package/ai-docs/src/71_ai/30_chat.ts +158 -0
  74. package/ai-docs/src/71_ai/fixtures/domain/LaunchPlan.ts +9 -0
  75. package/ai-docs/src/71_ai/index.md +5 -0
  76. package/ai-docs/src/80_cluster/10_entities.ts +97 -0
  77. package/ai-docs/src/80_cluster/index.md +4 -0
  78. package/ai-docs/src/index.md +10 -0
  79. package/ai-docs/tsconfig.json +24 -0
  80. package/dist/SqliteClient.d.ts +10 -3
  81. package/dist/SqliteClient.d.ts.map +1 -1
  82. package/dist/SqliteClient.js +18 -7
  83. package/dist/SqliteClient.js.map +1 -1
  84. package/dist/SqliteMigrator.d.ts +2 -2
  85. package/dist/SqliteMigrator.js +2 -2
  86. package/dist/SqliteMigrator.js.map +1 -1
  87. package/dist/index.js.map +1 -1
  88. package/package.json +10 -8
  89. package/src/SqliteClient.ts +29 -9
  90. package/src/SqliteMigrator.ts +2 -2
@@ -0,0 +1,24 @@
1
+ {
2
+ "$schema": "https://json.schemastore.org/tsconfig",
3
+ "extends": "../tsconfig.base.json",
4
+ "include": ["src/**/*.ts", "src/**/*.tsx"],
5
+ "compilerOptions": {
6
+ "rootDir": ".",
7
+ "noEmit": true,
8
+ "declaration": false,
9
+ "declarationMap": false,
10
+ "composite": false,
11
+ "incremental": false,
12
+ "types": ["node"],
13
+ "plugins": [
14
+ {
15
+ "name": "@effect/language-service",
16
+ "namespaceImportPackages": [],
17
+ "diagnosticSeverity": {
18
+ "floatingEffect": "off",
19
+ "preferSchemaOverJson": "off"
20
+ }
21
+ }
22
+ ]
23
+ }
24
+ }
@@ -1,5 +1,6 @@
1
1
  import * as Config from "effect/Config";
2
2
  import * as Context from "effect/Context";
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";
@@ -23,7 +24,7 @@ export type TypeId = "~@effect/sql-sqlite-bun/SqliteClient";
23
24
  /**
24
25
  * Bun SQLite client service, extending `SqlClient` with database export and extension loading helpers. `updateValues` is not supported.
25
26
  *
26
- * @category models
27
+ * @category services
27
28
  * @since 4.0.0
28
29
  */
29
30
  export interface SqliteClient extends Client.SqlClient {
@@ -46,7 +47,7 @@ export interface SqliteClient extends Client.SqlClient {
46
47
  */
47
48
  export declare const SqliteClient: Context.Service<SqliteClient, SqliteClient>;
48
49
  /**
49
- * Configuration for a Bun SQLite client, including filename, open mode flags, WAL behavior, span attributes, and query/result name transforms.
50
+ * Configuration for a Bun SQLite client, including filename, open mode flags, WAL and busy timeout behavior, span attributes, and query/result name transforms.
50
51
  *
51
52
  * @category models
52
53
  * @since 4.0.0
@@ -57,12 +58,18 @@ export interface SqliteClientConfig {
57
58
  readonly create?: boolean | undefined;
58
59
  readonly readwrite?: boolean | undefined;
59
60
  readonly disableWAL?: boolean | undefined;
61
+ /**
62
+ * How long SQLite waits when the database is busy. Defaults to 5 seconds.
63
+ * `Duration.infinity` is clamped to SQLite's maximum timeout.
64
+ * Waiting blocks the event loop because `bun:sqlite` is synchronous.
65
+ */
66
+ readonly busyTimeout?: Duration.Input | undefined;
60
67
  readonly spanAttributes?: Record<string, unknown> | undefined;
61
68
  readonly transformResultNames?: ((str: string) => string) | undefined;
62
69
  readonly transformQueryNames?: ((str: string) => string) | undefined;
63
70
  }
64
71
  /**
65
- * Creates a scoped Bun SQLite client for a database file, enabling WAL by default and serializing access. Streaming queries are not implemented.
72
+ * Creates a scoped Bun SQLite client for a database file, enabling WAL and a 5-second busy timeout by default. Explicit transactions on writable connections take the write lock for their duration, even when they only read; clients opened with `readonly: true` are unaffected. Streaming queries are not implemented.
66
73
  *
67
74
  * @category constructors
68
75
  * @since 4.0.0
@@ -1 +1 @@
1
- {"version":3,"file":"SqliteClient.d.ts","sourceRoot":"","sources":["../src/SqliteClient.ts"],"names":[],"mappings":"AAWA,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;AAEvD,OAAO,EAAuB,QAAQ,EAAE,MAAM,8BAA8B,CAAA;AAQ5E;;;;;GAKG;AACH,eAAO,MAAM,MAAM,EAAE,MAA+C,CAAA;AAEpE;;;;;GAKG;AACH,MAAM,MAAM,MAAM,GAAG,sCAAsC,CAAA;AAE3D;;;;;GAKG;AACH,MAAM,WAAW,YAAa,SAAQ,MAAM,CAAC,SAAS;IACpD,QAAQ,CAAC,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,MAAM,EAAE,kBAAkB,CAAA;IACnC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAA;IACpD,QAAQ,CAAC,aAAa,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;IAEvE,8BAA8B;IAC9B,QAAQ,CAAC,YAAY,EAAE,KAAK,CAAA;CAC7B;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,YAAY,6CAAiE,CAAA;AAE1F;;;;;GAKG;AACH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;IACvC,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;IACrC,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;IACxC,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;IAEzC,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAA;IAE7D,QAAQ,CAAC,oBAAoB,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAC,GAAG,SAAS,CAAA;IACrE,QAAQ,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAC,GAAG,SAAS,CAAA;CACrE;AAOD;;;;;GAKG;AACH,eAAO,MAAM,IAAI,YACN,kBAAkB,KAC1B,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,GAAG,UAAU,CAAC,UAAU,CA4HrE,CAAA;AAEJ;;;;;GAKG;AACH,eAAO,MAAM,WAAW,WACd,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,KACtC,KAAK,CAAC,KAAK,CAAC,YAAY,GAAG,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,WAAW,CAUzB,CAAA;AAEzC;;;;;GAKG;AACH,eAAO,MAAM,KAAK,WACR,kBAAkB,KACzB,KAAK,CAAC,KAAK,CAAC,YAAY,GAAG,MAAM,CAAC,SAAS,CAML,CAAA"}
1
+ {"version":3,"file":"SqliteClient.d.ts","sourceRoot":"","sources":["../src/SqliteClient.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAA;AACzC,OAAO,KAAK,QAAQ,MAAM,iBAAiB,CAAA;AAC3C,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;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;AAEvD,OAAO,EAAuB,QAAQ,EAAE,MAAM,8BAA8B,CAAA;AAS5E;;;;;GAKG;AACH,eAAO,MAAM,MAAM,EAAE,MAA+C,CAAA;AAEpE;;;;;GAKG;AACH,MAAM,MAAM,MAAM,GAAG,sCAAsC,CAAA;AAE3D;;;;;GAKG;AACH,MAAM,WAAW,YAAa,SAAQ,MAAM,CAAC,SAAS;IACpD,QAAQ,CAAC,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,MAAM,EAAE,kBAAkB,CAAA;IACnC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAA;IACpD,QAAQ,CAAC,aAAa,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;IAEvE,8BAA8B;IAC9B,QAAQ,CAAC,YAAY,EAAE,KAAK,CAAA;CAC7B;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,YAAY,6CAAiE,CAAA;AAE1F;;;;;GAKG;AACH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;IACvC,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;IACrC,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;IACxC,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;IACzC;;;;OAIG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,QAAQ,CAAC,KAAK,GAAG,SAAS,CAAA;IAEjD,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAA;IAE7D,QAAQ,CAAC,oBAAoB,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAC,GAAG,SAAS,CAAA;IACrE,QAAQ,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAC,GAAG,SAAS,CAAA;CACrE;AAOD;;;;;GAKG;AACH,eAAO,MAAM,IAAI,YACN,kBAAkB,KAC1B,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,GAAG,UAAU,CAAC,UAAU,CAmIrE,CAAA;AAEJ;;;;;GAKG;AACH,eAAO,MAAM,WAAW,WACd,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,KACtC,KAAK,CAAC,KAAK,CAAC,YAAY,GAAG,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,WAAW,CAUzB,CAAA;AAEzC;;;;;GAKG;AACH,eAAO,MAAM,KAAK,WACR,kBAAkB,KACzB,KAAK,CAAC,KAAK,CAAC,YAAY,GAAG,MAAM,CAAC,SAAS,CAML,CAAA"}
@@ -3,14 +3,20 @@
3
3
  *
4
4
  * This module opens a SQLite database and exposes it as both `SqliteClient` and
5
5
  * the generic Effect SQL client. It serializes access to the database, enables
6
- * WAL mode unless disabled, and supports database export and extension loading.
7
- * Streaming queries and `updateValues` are not supported by this driver.
6
+ * WAL mode unless disabled, and waits up to five seconds for busy databases by
7
+ * default. Explicit transactions on writable connections use `BEGIN IMMEDIATE`
8
+ * to avoid read-to-write lock upgrades, which serializes them behind other
9
+ * writers even when they only read. Clients opened with `readonly: true` are
10
+ * unaffected. Busy waits block the event loop because `bun:sqlite` is
11
+ * synchronous. Database export and extension loading are supported; streaming
12
+ * queries and `updateValues` are not.
8
13
  *
9
14
  * @since 4.0.0
10
15
  */
11
16
  import { Database } from "bun:sqlite";
12
17
  import * as Config from "effect/Config";
13
18
  import * as Context from "effect/Context";
19
+ import * as Duration from "effect/Duration";
14
20
  import * as Effect from "effect/Effect";
15
21
  import * as Fiber from "effect/Fiber";
16
22
  import { identity } from "effect/Function";
@@ -23,6 +29,7 @@ import * as Client from "effect/unstable/sql/SqlClient";
23
29
  import { classifySqliteError, SqlError } from "effect/unstable/sql/SqlError";
24
30
  import * as Statement from "effect/unstable/sql/Statement";
25
31
  const ATTR_DB_SYSTEM_NAME = "db.system.name";
32
+ const MAX_BUSY_TIMEOUT = 2_147_483_647;
26
33
  const classifyError = (cause, message, operation) => classifySqliteError(cause, {
27
34
  message,
28
35
  operation
@@ -46,7 +53,7 @@ export const TypeId = "~@effect/sql-sqlite-bun/SqliteClient";
46
53
  */
47
54
  export const SqliteClient = /*#__PURE__*/Context.Service("@effect/sql-sqlite-bun/Client");
48
55
  /**
49
- * Creates a scoped Bun SQLite client for a database file, enabling WAL by default and serializing access. Streaming queries are not implemented.
56
+ * Creates a scoped Bun SQLite client for a database file, enabling WAL and a 5-second busy timeout by default. Explicit transactions on writable connections take the write lock for their duration, even when they only read; clients opened with `readonly: true` are unaffected. Streaming queries are not implemented.
50
57
  *
51
58
  * @category constructors
52
59
  * @since 4.0.0
@@ -55,13 +62,16 @@ export const make = options => Effect.gen(function* () {
55
62
  const compiler = Statement.makeCompilerSqlite(options.transformQueryNames);
56
63
  const transformRows = options.transformResultNames ? Statement.defaultTransforms(options.transformResultNames).array : undefined;
57
64
  const makeConnection = Effect.gen(function* () {
65
+ const readonly = options.readonly === true;
58
66
  const db = new Database(options.filename, {
59
- readonly: options.readonly,
60
- readwrite: options.readwrite ?? true,
61
- create: options.create ?? true
67
+ readonly,
68
+ readwrite: readonly ? false : options.readwrite ?? true,
69
+ create: readonly ? false : options.create ?? true
62
70
  });
63
71
  yield* Effect.addFinalizer(() => Effect.sync(() => db.close()));
64
- if (options.disableWAL !== true) {
72
+ const busyTimeout = Math.min(MAX_BUSY_TIMEOUT, Math.max(0, Math.round(Duration.toMillis(options.busyTimeout ?? Duration.seconds(5)))));
73
+ db.run(`PRAGMA busy_timeout = ${busyTimeout};`);
74
+ if (options.disableWAL !== true && !readonly) {
65
75
  db.run("PRAGMA journal_mode = WAL;");
66
76
  }
67
77
  const prepare = (sql, useSafeIntegers) => {
@@ -135,6 +145,7 @@ export const make = options => Effect.gen(function* () {
135
145
  acquirer,
136
146
  compiler,
137
147
  transactionAcquirer,
148
+ beginTransaction: "BEGIN IMMEDIATE",
138
149
  spanAttributes: [...(options.spanAttributes ? Object.entries(options.spanAttributes) : []), [ATTR_DB_SYSTEM_NAME, "sqlite"]],
139
150
  transformRows
140
151
  }), {
@@ -1 +1 @@
1
- {"version":3,"file":"SqliteClient.js","names":["Database","Config","Context","Effect","Fiber","identity","Layer","Scope","Semaphore","Stream","Reactivity","Client","classifySqliteError","SqlError","Statement","ATTR_DB_SYSTEM_NAME","classifyError","cause","message","operation","TypeId","SqliteClient","Service","make","options","gen","compiler","makeCompilerSqlite","transformQueryNames","transformRows","transformResultNames","defaultTransforms","array","undefined","makeConnection","db","filename","readonly","readwrite","create","addFinalizer","sync","close","disableWAL","run","prepare","sql","useSafeIntegers","statement","query","safeIntegers","params","withFiber","fiber","get","context","SafeIntegers","succeed","all","fail","reason","runValues","values","execute","map","executeRaw","executeValues","executeValuesUnprepared","executeUnprepared","executeStream","_sql","_params","die","export","try","serialize","catch","loadExtension","path","semaphore","connection","acquirer","withPermits","transactionAcquirer","uninterruptibleMask","restore","getCurrent","scope","getUnsafe","as","tap","take","release","Object","assign","spanAttributes","entries","config","flatMap","_","layerConfig","effectContext","unwrap","pipe","client","add","SqlClient","provide","layer"],"sources":["../src/SqliteClient.ts"],"sourcesContent":[null],"mappings":"AAAA;;;;;;;;;;AAUA,SAASA,QAAQ,QAAQ,YAAY;AACrC,OAAO,KAAKC,MAAM,MAAM,eAAe;AACvC,OAAO,KAAKC,OAAO,MAAM,gBAAgB;AACzC,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,sCAAsC;AA0BpE;;;;;;;;;;AAUA,OAAO,MAAMC,YAAY,gBAAGnB,OAAO,CAACoB,OAAO,CAAe,+BAA+B,CAAC;AA0B1F;;;;;;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,EAAE,GAAG,IAAInC,QAAQ,CAACwB,OAAO,CAACY,QAAQ,EAAE;MACxCC,QAAQ,EAAEb,OAAO,CAACa,QAAQ;MAC1BC,SAAS,EAAEd,OAAO,CAACc,SAAS,IAAI,IAAI;MACpCC,MAAM,EAAEf,OAAO,CAACe,MAAM,IAAI;KACpB,CAAC;IACT,OAAOpC,MAAM,CAACqC,YAAY,CAAC,MAAMrC,MAAM,CAACsC,IAAI,CAAC,MAAMN,EAAE,CAACO,KAAK,EAAE,CAAC,CAAC;IAE/D,IAAIlB,OAAO,CAACmB,UAAU,KAAK,IAAI,EAAE;MAC/BR,EAAE,CAACS,GAAG,CAAC,4BAA4B,CAAC;IACtC;IAEA,MAAMC,OAAO,GAAGA,CAACC,GAAW,EAAEC,eAAwB,KAAI;MACxD,MAAMC,SAAS,GAAGb,EAAE,CAACc,KAAK,CAACH,GAAG,CAAC;MAC/B;MACAE,SAAS,CAACE,YAAY,CAACH,eAAe,CAAC;MACvC,OAAOC,SAAS;IAClB,CAAC;IAED,MAAMJ,GAAG,GAAGA,CACVE,GAAW,EACXK,MAAM,GAA2B,EAAE,KAEnChD,MAAM,CAACiD,SAAS,CAAwBC,KAAK,IAAI;MAC/C,MAAMN,eAAe,GAAG7C,OAAO,CAACoD,GAAG,CAACD,KAAK,CAACE,OAAO,EAAE5C,MAAM,CAAC6C,YAAY,CAAC;MACvE,IAAI;QACF,OAAOrD,MAAM,CAACsD,OAAO,CAAEZ,OAAO,CAACC,GAAG,EAAEC,eAAe,CAAC,CAACW,GAAG,CAAC,GAAIP,MAAc,CAAC,IAAI,EAAiB,CAAC;MACpG,CAAC,CAAC,OAAOlC,KAAK,EAAE;QACd,OAAOd,MAAM,CAACwD,IAAI,CAAC,IAAI9C,QAAQ,CAAC;UAAE+C,MAAM,EAAE5C,aAAa,CAACC,KAAK,EAAE,6BAA6B,EAAE,SAAS;QAAC,CAAE,CAAC,CAAC;MAC9G;IACF,CAAC,CAAC;IAEJ,MAAM4C,SAAS,GAAGA,CAChBf,GAAW,EACXK,MAAM,GAA2B,EAAE,KAEnChD,MAAM,CAACiD,SAAS,CAAwBC,KAAK,IAAI;MAC/C,MAAMN,eAAe,GAAG7C,OAAO,CAACoD,GAAG,CAACD,KAAK,CAACE,OAAO,EAAE5C,MAAM,CAAC6C,YAAY,CAAC;MACvE,IAAI;QACF,OAAOrD,MAAM,CAACsD,OAAO,CAAEZ,OAAO,CAACC,GAAG,EAAEC,eAAe,CAAC,CAACe,MAAM,CAAC,GAAIX,MAAc,CAAC,IAAI,EAAiB,CAAC;MACvG,CAAC,CAAC,OAAOlC,KAAK,EAAE;QACd,OAAOd,MAAM,CAACwD,IAAI,CAChB,IAAI9C,QAAQ,CAAC;UAAE+C,MAAM,EAAE5C,aAAa,CAACC,KAAK,EAAE,6BAA6B,EAAE,eAAe;QAAC,CAAE,CAAC,CAC/F;MACH;IACF,CAAC,CAAC;IAEJ,OAAOZ,QAAQ,CAAmB;MAChC0D,OAAOA,CAACjB,GAAG,EAAEK,MAAM,EAAEtB,aAAa;QAChC,OAAOA,aAAa,GAChB1B,MAAM,CAAC6D,GAAG,CAACpB,GAAG,CAACE,GAAG,EAAEK,MAAM,CAAC,EAAEtB,aAAa,CAAC,GAC3Ce,GAAG,CAACE,GAAG,EAAEK,MAAM,CAAC;MACtB,CAAC;MACDc,UAAUA,CAACnB,GAAG,EAAEK,MAAM;QACpB,OAAOP,GAAG,CAACE,GAAG,EAAEK,MAAM,CAAC;MACzB,CAAC;MACDe,aAAaA,CAACpB,GAAG,EAAEK,MAAM;QACvB,OAAOU,SAAS,CAACf,GAAG,EAAEK,MAAM,CAAC;MAC/B,CAAC;MACDgB,uBAAuBA,CAACrB,GAAG,EAAEK,MAAM;QACjC,OAAOU,SAAS,CAACf,GAAG,EAAEK,MAAM,CAAC;MAC/B,CAAC;MACDiB,iBAAiBA,CAACtB,GAAG,EAAEK,MAAM,EAAEtB,aAAa;QAC1C,OAAO,IAAI,CAACkC,OAAO,CAACjB,GAAG,EAAEK,MAAM,EAAEtB,aAAa,CAAC;MACjD,CAAC;MACDwC,aAAaA,CAACC,IAAI,EAAEC,OAAO;QACzB,OAAO9D,MAAM,CAAC+D,GAAG,CAAC,+BAA+B,CAAC;MACpD,CAAC;MACDC,MAAM,EAAEtE,MAAM,CAACuE,GAAG,CAAC;QACjBA,GAAG,EAAEA,CAAA,KAAMvC,EAAE,CAACwC,SAAS,EAAE;QACzBC,KAAK,EAAG3D,KAAK,IAAK,IAAIJ,QAAQ,CAAC;UAAE+C,MAAM,EAAE5C,aAAa,CAACC,KAAK,EAAE,2BAA2B,EAAE,QAAQ;QAAC,CAAE;OACvG,CAAC;MACF4D,aAAa,EAAGC,IAAI,IAClB3E,MAAM,CAACuE,GAAG,CAAC;QACTA,GAAG,EAAEA,CAAA,KAAMvC,EAAE,CAAC0C,aAAa,CAACC,IAAI,CAAC;QACjCF,KAAK,EAAG3D,KAAK,IACX,IAAIJ,QAAQ,CAAC;UAAE+C,MAAM,EAAE5C,aAAa,CAACC,KAAK,EAAE,0BAA0B,EAAE,eAAe;QAAC,CAAE;OAC7F;KACJ,CAAC;EACJ,CAAC,CAAC;EAEF,MAAM8D,SAAS,GAAG,OAAOvE,SAAS,CAACe,IAAI,CAAC,CAAC,CAAC;EAC1C,MAAMyD,UAAU,GAAG,OAAO9C,cAAc;EAExC,MAAM+C,QAAQ,GAAGF,SAAS,CAACG,WAAW,CAAC,CAAC,CAAC,CAAC/E,MAAM,CAACsD,OAAO,CAACuB,UAAU,CAAC,CAAC;EACrE,MAAMG,mBAAmB,GAAGhF,MAAM,CAACiF,mBAAmB,CAAEC,OAAO,IAAI;IACjE,MAAMhC,KAAK,GAAGjD,KAAK,CAACkF,UAAU,EAAG;IACjC,MAAMC,KAAK,GAAGrF,OAAO,CAACsF,SAAS,CAACnC,KAAK,CAACE,OAAO,EAAEhD,KAAK,CAACA,KAAK,CAAC;IAC3D,OAAOJ,MAAM,CAACsF,EAAE,CACdtF,MAAM,CAACuF,GAAG,CACRL,OAAO,CAACN,SAAS,CAACY,IAAI,CAAC,CAAC,CAAC,CAAC,EAC1B,MAAMpF,KAAK,CAACiC,YAAY,CAAC+C,KAAK,EAAER,SAAS,CAACa,OAAO,CAAC,CAAC,CAAC,CAAC,CACtD,EACDZ,UAAU,CACX;EACH,CAAC,CAAC;EAEF,OAAOa,MAAM,CAACC,MAAM,CACjB,OAAOnF,MAAM,CAACY,IAAI,CAAC;IAClB0D,QAAQ;IACRvD,QAAQ;IACRyD,mBAAmB;IACnBY,cAAc,EAAE,CACd,IAAIvE,OAAO,CAACuE,cAAc,GAAGF,MAAM,CAACG,OAAO,CAACxE,OAAO,CAACuE,cAAc,CAAC,GAAG,EAAE,CAAC,EACzE,CAAChF,mBAAmB,EAAE,QAAQ,CAAC,CAChC;IACDc;GACD,CAAC,EACF;IACE,CAACT,MAAM,GAAGA,MAAgB;IAC1B6E,MAAM,EAAEzE,OAAO;IACfiD,MAAM,EAAEtE,MAAM,CAAC+F,OAAO,CAACjB,QAAQ,EAAGkB,CAAC,IAAKA,CAAC,CAAC1B,MAAM,CAAC;IACjDI,aAAa,EAAGC,IAAY,IAAK3E,MAAM,CAAC+F,OAAO,CAACjB,QAAQ,EAAGkB,CAAC,IAAKA,CAAC,CAACtB,aAAa,CAACC,IAAI,CAAC;GACvF,CACF;AACH,CAAC,CAAC;AAEJ;;;;;;AAMA,OAAO,MAAMsB,WAAW,GACtBH,MAAuC,IAEvC3F,KAAK,CAAC+F,aAAa,CACjBpG,MAAM,CAACqG,MAAM,CAACL,MAAM,CAAC,CAACM,IAAI,CACxBpG,MAAM,CAAC+F,OAAO,CAAC3E,IAAI,CAAC,EACpBpB,MAAM,CAAC6D,GAAG,CAAEwC,MAAM,IAChBtG,OAAO,CAACqB,IAAI,CAACF,YAAY,EAAEmF,MAAM,CAAC,CAACD,IAAI,CACrCrG,OAAO,CAACuG,GAAG,CAAC9F,MAAM,CAAC+F,SAAS,EAAEF,MAAM,CAAC,CACtC,CACF,CACF,CACF,CAACD,IAAI,CAACjG,KAAK,CAACqG,OAAO,CAACjG,UAAU,CAACkG,KAAK,CAAC,CAAC;AAEzC;;;;;;AAMA,OAAO,MAAMA,KAAK,GAChBX,MAA0B,IAE1B3F,KAAK,CAAC+F,aAAa,CACjBlG,MAAM,CAAC6D,GAAG,CAACzC,IAAI,CAAC0E,MAAM,CAAC,EAAGO,MAAM,IAC9BtG,OAAO,CAACqB,IAAI,CAACF,YAAY,EAAEmF,MAAM,CAAC,CAACD,IAAI,CACrCrG,OAAO,CAACuG,GAAG,CAAC9F,MAAM,CAAC+F,SAAS,EAAEF,MAAM,CAAC,CACtC,CAAC,CACL,CAACD,IAAI,CAACjG,KAAK,CAACqG,OAAO,CAACjG,UAAU,CAACkG,KAAK,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"SqliteClient.js","names":[],"sources":["../src/SqliteClient.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -20,14 +20,14 @@ export * from "effect/unstable/sql/Migrator";
20
20
  /**
21
21
  * Runs SQL migrations using the configured `SqlClient`, returning the migrations that were applied.
22
22
  *
23
- * @category constructors
23
+ * @category running
24
24
  * @since 4.0.0
25
25
  */
26
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>;
27
27
  /**
28
28
  * Creates a layer that runs the configured SQL migrations during layer construction.
29
29
  *
30
- * @category constructors
30
+ * @category layers
31
31
  * @since 4.0.0
32
32
  */
33
33
  export declare const layer: <R>(options: Migrator.MigratorOptions<R>) => Layer.Layer<never, SqlError | Migrator.MigrationError, Client.SqlClient | R>;
@@ -7,7 +7,7 @@ export * from "effect/unstable/sql/Migrator";
7
7
  /**
8
8
  * Runs SQL migrations using the configured `SqlClient`, returning the migrations that were applied.
9
9
  *
10
- * @category constructors
10
+ * @category running
11
11
  * @since 4.0.0
12
12
  */
13
13
  export const run = /*#__PURE__*/Migrator.make({
@@ -56,7 +56,7 @@ export const run = /*#__PURE__*/Migrator.make({
56
56
  /**
57
57
  * Creates a layer that runs the configured SQL migrations during layer construction.
58
58
  *
59
- * @category constructors
59
+ * @category layers
60
60
  * @since 4.0.0
61
61
  */
62
62
  export const layer = options => Layer.effectDiscard(run(options));
@@ -1 +1 @@
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":[]}
1
+ {"version":3,"file":"SqliteMigrator.js","names":[],"sources":["../src/SqliteMigrator.ts"],"sourcesContent":[null],"mappings":"AAWA,OAAO,KAAK,KAAK,MAAM,cAAc;AACrC,OAAO,KAAK,QAAQ,MAAM,8BAA8B;AAIxD;;;AAGA,cAAc,8BAA8B;AAE5C;;;;;;AAMA,OAAO,MAAM,GAAG,gBAMZ,QAAQ,CAAC,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,MAAM,KAAK,GAChB,OAAoC,IAKjC,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC","ignoreList":[]}
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["SqliteClient","SqliteMigrator"],"sources":["../src/index.ts"],"sourcesContent":[null],"mappings":"AAAA;;;AAIA;AAEA;;;AAGA,OAAO,KAAKA,YAAY,MAAM,mBAAmB;AAEjD;;;AAGA,OAAO,KAAKC,cAAc,MAAM,qBAAqB","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../src/index.ts"],"sourcesContent":[null],"mappings":"AAAA;;;AAIA;AAEA;;;AAGA,OAAO,KAAK,YAAY,MAAM,mBAAmB;AAEjD;;;AAGA,OAAO,KAAK,cAAc,MAAM,qBAAqB","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@effect/sql-sqlite-bun",
3
- "version": "4.0.0-beta.99",
3
+ "version": "4.0.0-rc.109",
4
4
  "type": "module",
5
5
  "license": "MIT",
6
6
  "description": "A SQLite toolkit for Effect",
@@ -29,6 +29,7 @@
29
29
  ".": "./dist/index.js",
30
30
  "./*": "./dist/*.js",
31
31
  "./internal/*": null,
32
+ "./index": null,
32
33
  "./*/index": null
33
34
  },
34
35
  "files": [
@@ -36,7 +37,10 @@
36
37
  "dist/**/*.js",
37
38
  "dist/**/*.js.map",
38
39
  "dist/**/*.d.ts",
39
- "dist/**/*.d.ts.map"
40
+ "dist/**/*.d.ts.map",
41
+ "AGENTS.md",
42
+ "CLAUDE.md",
43
+ "ai-docs/**/*"
40
44
  ],
41
45
  "publishConfig": {
42
46
  "access": "public",
@@ -44,18 +48,16 @@
44
48
  },
45
49
  "devDependencies": {
46
50
  "@types/bun": "^1.3.14",
47
- "@effect/platform-bun": "^4.0.0-beta.99",
48
- "effect": "^4.0.0-beta.99"
51
+ "@effect/platform-bun": "^4.0.0-rc.109",
52
+ "effect": "^4.0.0-rc.109"
49
53
  },
50
54
  "peerDependencies": {
51
- "effect": "^4.0.0-beta.99"
55
+ "effect": "^4.0.0-rc.109"
52
56
  },
53
57
  "scripts": {
54
58
  "codegen": "effect-utils codegen",
55
59
  "build": "tsc -b tsconfig.json && pnpm babel",
56
60
  "babel": "babel dist --plugins annotate-pure-calls --out-dir dist --source-maps",
57
- "check": "tsc -b tsconfig.json",
58
- "test": "vitest",
59
- "coverage": "vitest --coverage"
61
+ "check": "tsc -b tsconfig.json"
60
62
  }
61
63
  }
@@ -3,14 +3,20 @@
3
3
  *
4
4
  * This module opens a SQLite database and exposes it as both `SqliteClient` and
5
5
  * the generic Effect SQL client. It serializes access to the database, enables
6
- * WAL mode unless disabled, and supports database export and extension loading.
7
- * Streaming queries and `updateValues` are not supported by this driver.
6
+ * WAL mode unless disabled, and waits up to five seconds for busy databases by
7
+ * default. Explicit transactions on writable connections use `BEGIN IMMEDIATE`
8
+ * to avoid read-to-write lock upgrades, which serializes them behind other
9
+ * writers even when they only read. Clients opened with `readonly: true` are
10
+ * unaffected. Busy waits block the event loop because `bun:sqlite` is
11
+ * synchronous. Database export and extension loading are supported; streaming
12
+ * queries and `updateValues` are not.
8
13
  *
9
14
  * @since 4.0.0
10
15
  */
11
16
  import { Database } from "bun:sqlite"
12
17
  import * as Config from "effect/Config"
13
18
  import * as Context from "effect/Context"
19
+ import * as Duration from "effect/Duration"
14
20
  import * as Effect from "effect/Effect"
15
21
  import * as Fiber from "effect/Fiber"
16
22
  import { identity } from "effect/Function"
@@ -25,6 +31,7 @@ import { classifySqliteError, SqlError } from "effect/unstable/sql/SqlError"
25
31
  import * as Statement from "effect/unstable/sql/Statement"
26
32
 
27
33
  const ATTR_DB_SYSTEM_NAME = "db.system.name"
34
+ const MAX_BUSY_TIMEOUT = 2_147_483_647
28
35
 
29
36
  const classifyError = (cause: unknown, message: string, operation: string) =>
30
37
  classifySqliteError(cause, { message, operation })
@@ -48,7 +55,7 @@ export type TypeId = "~@effect/sql-sqlite-bun/SqliteClient"
48
55
  /**
49
56
  * Bun SQLite client service, extending `SqlClient` with database export and extension loading helpers. `updateValues` is not supported.
50
57
  *
51
- * @category models
58
+ * @category services
52
59
  * @since 4.0.0
53
60
  */
54
61
  export interface SqliteClient extends Client.SqlClient {
@@ -74,7 +81,7 @@ export interface SqliteClient extends Client.SqlClient {
74
81
  export const SqliteClient = Context.Service<SqliteClient>("@effect/sql-sqlite-bun/Client")
75
82
 
76
83
  /**
77
- * Configuration for a Bun SQLite client, including filename, open mode flags, WAL behavior, span attributes, and query/result name transforms.
84
+ * Configuration for a Bun SQLite client, including filename, open mode flags, WAL and busy timeout behavior, span attributes, and query/result name transforms.
78
85
  *
79
86
  * @category models
80
87
  * @since 4.0.0
@@ -85,6 +92,12 @@ export interface SqliteClientConfig {
85
92
  readonly create?: boolean | undefined
86
93
  readonly readwrite?: boolean | undefined
87
94
  readonly disableWAL?: boolean | undefined
95
+ /**
96
+ * How long SQLite waits when the database is busy. Defaults to 5 seconds.
97
+ * `Duration.infinity` is clamped to SQLite's maximum timeout.
98
+ * Waiting blocks the event loop because `bun:sqlite` is synchronous.
99
+ */
100
+ readonly busyTimeout?: Duration.Input | undefined
88
101
 
89
102
  readonly spanAttributes?: Record<string, unknown> | undefined
90
103
 
@@ -98,7 +111,7 @@ interface SqliteConnection extends Connection {
98
111
  }
99
112
 
100
113
  /**
101
- * Creates a scoped Bun SQLite client for a database file, enabling WAL by default and serializing access. Streaming queries are not implemented.
114
+ * Creates a scoped Bun SQLite client for a database file, enabling WAL and a 5-second busy timeout by default. Explicit transactions on writable connections take the write lock for their duration, even when they only read; clients opened with `readonly: true` are unaffected. Streaming queries are not implemented.
102
115
  *
103
116
  * @category constructors
104
117
  * @since 4.0.0
@@ -115,14 +128,20 @@ export const make = (
115
128
  undefined
116
129
 
117
130
  const makeConnection = Effect.gen(function*() {
131
+ const readonly = options.readonly === true
118
132
  const db = new Database(options.filename, {
119
- readonly: options.readonly,
120
- readwrite: options.readwrite ?? true,
121
- create: options.create ?? true
133
+ readonly,
134
+ readwrite: readonly ? false : options.readwrite ?? true,
135
+ create: readonly ? false : options.create ?? true
122
136
  } as any)
123
137
  yield* Effect.addFinalizer(() => Effect.sync(() => db.close()))
138
+ const busyTimeout = Math.min(
139
+ MAX_BUSY_TIMEOUT,
140
+ Math.max(0, Math.round(Duration.toMillis(options.busyTimeout ?? Duration.seconds(5))))
141
+ )
142
+ db.run(`PRAGMA busy_timeout = ${busyTimeout};`)
124
143
 
125
- if (options.disableWAL !== true) {
144
+ if (options.disableWAL !== true && !readonly) {
126
145
  db.run("PRAGMA journal_mode = WAL;")
127
146
  }
128
147
 
@@ -216,6 +235,7 @@ export const make = (
216
235
  acquirer,
217
236
  compiler,
218
237
  transactionAcquirer,
238
+ beginTransaction: "BEGIN IMMEDIATE",
219
239
  spanAttributes: [
220
240
  ...(options.spanAttributes ? Object.entries(options.spanAttributes) : []),
221
241
  [ATTR_DB_SYSTEM_NAME, "sqlite"]
@@ -22,7 +22,7 @@ export * from "effect/unstable/sql/Migrator"
22
22
  /**
23
23
  * Runs SQL migrations using the configured `SqlClient`, returning the migrations that were applied.
24
24
  *
25
- * @category constructors
25
+ * @category running
26
26
  * @since 4.0.0
27
27
  */
28
28
  export const run: <R2 = never>(
@@ -78,7 +78,7 @@ export const run: <R2 = never>(
78
78
  /**
79
79
  * Creates a layer that runs the configured SQL migrations during layer construction.
80
80
  *
81
- * @category constructors
81
+ * @category layers
82
82
  * @since 4.0.0
83
83
  */
84
84
  export const layer = <R>(