@vibesdotdev/localdb 0.0.2 → 1.0.0-rc.2

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 (198) hide show
  1. package/LICENSE +18 -0
  2. package/README.md +123 -2
  3. package/dist/cli/commands/_shared.consumer.d.ts +1 -3
  4. package/dist/cli/commands/_shared.consumer.d.ts.map +1 -1
  5. package/dist/cli/commands/_shared.consumer.js +1 -11
  6. package/dist/cli/commands/_shared.consumer.js.map +1 -1
  7. package/dist/cli/commands/migrate/dev.localdb.migrate.cli-command.descriptor.js +1 -1
  8. package/dist/cli/commands/migrate/dev.localdb.migrate.cli-command.descriptor.js.map +1 -1
  9. package/dist/cli/commands/migrate/dev.localdb.migrate.cli-command.impl.consumer.d.ts +9 -3
  10. package/dist/cli/commands/migrate/dev.localdb.migrate.cli-command.impl.consumer.d.ts.map +1 -1
  11. package/dist/cli/commands/migrate/dev.localdb.migrate.cli-command.impl.consumer.js +59 -45
  12. package/dist/cli/commands/migrate/dev.localdb.migrate.cli-command.impl.consumer.js.map +1 -1
  13. package/dist/cli/commands/namespaces/dev.localdb.namespaces.cli-command.descriptor.js +1 -1
  14. package/dist/cli/commands/namespaces/dev.localdb.namespaces.cli-command.descriptor.js.map +1 -1
  15. package/dist/cli/commands/namespaces/dev.localdb.namespaces.cli-command.impl.d.ts +8 -3
  16. package/dist/cli/commands/namespaces/dev.localdb.namespaces.cli-command.impl.d.ts.map +1 -1
  17. package/dist/cli/commands/namespaces/dev.localdb.namespaces.cli-command.impl.js +12 -10
  18. package/dist/cli/commands/namespaces/dev.localdb.namespaces.cli-command.impl.js.map +1 -1
  19. package/dist/cli/commands/pools/dev.localdb.pools.cli-command.descriptor.js +1 -1
  20. package/dist/cli/commands/pools/dev.localdb.pools.cli-command.descriptor.js.map +1 -1
  21. package/dist/cli/commands/pools/dev.localdb.pools.cli-command.impl.d.ts +6 -3
  22. package/dist/cli/commands/pools/dev.localdb.pools.cli-command.impl.d.ts.map +1 -1
  23. package/dist/cli/commands/pools/dev.localdb.pools.cli-command.impl.js +8 -7
  24. package/dist/cli/commands/pools/dev.localdb.pools.cli-command.impl.js.map +1 -1
  25. package/dist/cli/commands/query/dev.localdb.query.cli-command.descriptor.js +1 -1
  26. package/dist/cli/commands/query/dev.localdb.query.cli-command.descriptor.js.map +1 -1
  27. package/dist/cli/commands/query/dev.localdb.query.cli-command.impl.consumer.d.ts +13 -3
  28. package/dist/cli/commands/query/dev.localdb.query.cli-command.impl.consumer.d.ts.map +1 -1
  29. package/dist/cli/commands/query/dev.localdb.query.cli-command.impl.consumer.js +66 -51
  30. package/dist/cli/commands/query/dev.localdb.query.cli-command.impl.consumer.js.map +1 -1
  31. package/dist/cli/commands/status/dev.localdb.status.cli-command.descriptor.js +1 -1
  32. package/dist/cli/commands/status/dev.localdb.status.cli-command.descriptor.js.map +1 -1
  33. package/dist/cli/commands/status/dev.localdb.status.cli-command.impl.consumer.d.ts +9 -3
  34. package/dist/cli/commands/status/dev.localdb.status.cli-command.impl.consumer.d.ts.map +1 -1
  35. package/dist/cli/commands/status/dev.localdb.status.cli-command.impl.consumer.js +41 -29
  36. package/dist/cli/commands/status/dev.localdb.status.cli-command.impl.consumer.js.map +1 -1
  37. package/dist/cli/inputs.d.ts +25 -0
  38. package/dist/cli/inputs.d.ts.map +1 -0
  39. package/dist/cli/inputs.js +81 -0
  40. package/dist/cli/inputs.js.map +1 -0
  41. package/dist/cli/types.d.ts +45 -0
  42. package/dist/cli/types.d.ts.map +1 -0
  43. package/dist/cli/types.js +14 -0
  44. package/dist/cli/types.js.map +1 -0
  45. package/dist/core/connection-pool.d.ts +204 -46
  46. package/dist/core/connection-pool.d.ts.map +1 -1
  47. package/dist/core/connection-pool.js +610 -101
  48. package/dist/core/connection-pool.js.map +1 -1
  49. package/dist/core/database.d.ts +243 -63
  50. package/dist/core/database.d.ts.map +1 -1
  51. package/dist/core/database.js +937 -203
  52. package/dist/core/database.js.map +1 -1
  53. package/dist/core/holders.d.ts +15 -0
  54. package/dist/core/holders.d.ts.map +1 -0
  55. package/dist/core/holders.js +4 -0
  56. package/dist/core/holders.js.map +1 -0
  57. package/dist/core/host-kinds.d.ts +22 -0
  58. package/dist/core/host-kinds.d.ts.map +1 -0
  59. package/dist/core/host-kinds.js +52 -0
  60. package/dist/core/host-kinds.js.map +1 -0
  61. package/dist/core/live-runtime.d.ts +17 -0
  62. package/dist/core/live-runtime.d.ts.map +1 -0
  63. package/dist/core/live-runtime.js +28 -0
  64. package/dist/core/live-runtime.js.map +1 -0
  65. package/dist/core/migration-registry.d.ts +115 -80
  66. package/dist/core/migration-registry.d.ts.map +1 -1
  67. package/dist/core/migration-registry.js +340 -199
  68. package/dist/core/migration-registry.js.map +1 -1
  69. package/dist/core/open-connection.d.ts +11 -0
  70. package/dist/core/open-connection.d.ts.map +1 -0
  71. package/dist/core/open-connection.js +70 -0
  72. package/dist/core/open-connection.js.map +1 -0
  73. package/dist/core/outcome.d.ts +21 -0
  74. package/dist/core/outcome.d.ts.map +1 -0
  75. package/dist/core/outcome.js +22 -0
  76. package/dist/core/outcome.js.map +1 -0
  77. package/dist/core/pool-api.d.ts +19 -0
  78. package/dist/core/pool-api.d.ts.map +1 -0
  79. package/dist/core/pool-api.js +59 -0
  80. package/dist/core/pool-api.js.map +1 -0
  81. package/dist/core/slow-statement.d.ts +81 -0
  82. package/dist/core/slow-statement.d.ts.map +1 -0
  83. package/dist/core/slow-statement.js +149 -0
  84. package/dist/core/slow-statement.js.map +1 -0
  85. package/dist/core/wal-policy.d.ts +86 -0
  86. package/dist/core/wal-policy.d.ts.map +1 -0
  87. package/dist/core/wal-policy.js +115 -0
  88. package/dist/core/wal-policy.js.map +1 -0
  89. package/dist/dev.localdb.cli-group.descriptor.d.ts +1 -1
  90. package/dist/dev.localdb.cli-group.descriptor.d.ts.map +1 -1
  91. package/dist/dev.localdb.context.descriptor.d.ts +15 -1
  92. package/dist/dev.localdb.context.descriptor.d.ts.map +1 -1
  93. package/dist/dev.localdb.context.descriptor.js +1 -1
  94. package/dist/dev.localdb.context.descriptor.js.map +1 -1
  95. package/dist/dev.localdb.context.impl.consumer.d.ts +12 -5
  96. package/dist/dev.localdb.context.impl.consumer.d.ts.map +1 -1
  97. package/dist/dev.localdb.context.impl.consumer.js +14 -5
  98. package/dist/dev.localdb.context.impl.consumer.js.map +1 -1
  99. package/dist/driver/sqlite-driver.base.d.ts +107 -0
  100. package/dist/driver/sqlite-driver.base.d.ts.map +1 -0
  101. package/dist/driver/sqlite-driver.base.js +426 -0
  102. package/dist/driver/sqlite-driver.base.js.map +1 -0
  103. package/dist/driver/sqlite-driver.d.ts +154 -0
  104. package/dist/driver/sqlite-driver.d.ts.map +1 -0
  105. package/dist/driver/sqlite-driver.js +103 -0
  106. package/dist/driver/sqlite-driver.js.map +1 -0
  107. package/dist/index.d.ts +11 -5
  108. package/dist/index.d.ts.map +1 -1
  109. package/dist/index.js +8 -4
  110. package/dist/index.js.map +1 -1
  111. package/dist/localdb.client.descriptor.d.ts +10 -0
  112. package/dist/localdb.client.descriptor.d.ts.map +1 -0
  113. package/dist/localdb.client.descriptor.js +13 -0
  114. package/dist/localdb.client.descriptor.js.map +1 -0
  115. package/dist/localdb.client.impl.consumer.d.ts +11 -0
  116. package/dist/localdb.client.impl.consumer.d.ts.map +1 -0
  117. package/dist/localdb.client.impl.consumer.js +11 -0
  118. package/dist/localdb.client.impl.consumer.js.map +1 -0
  119. package/dist/localdb.plugin.d.ts +2 -2
  120. package/dist/localdb.plugin.d.ts.map +1 -1
  121. package/dist/localdb.plugin.js +58 -10
  122. package/dist/localdb.plugin.js.map +1 -1
  123. package/dist/location.d.ts +6 -0
  124. package/dist/location.d.ts.map +1 -0
  125. package/dist/location.js +6 -0
  126. package/dist/location.js.map +1 -0
  127. package/dist/migrations/load-sql.d.ts +25 -21
  128. package/dist/migrations/load-sql.d.ts.map +1 -1
  129. package/dist/migrations/load-sql.js +91 -76
  130. package/dist/migrations/load-sql.js.map +1 -1
  131. package/dist/pool.d.ts +3 -0
  132. package/dist/pool.d.ts.map +1 -0
  133. package/dist/pool.js +3 -0
  134. package/dist/pool.js.map +1 -0
  135. package/dist/schemas/api.d.ts +133 -59
  136. package/dist/schemas/api.d.ts.map +1 -1
  137. package/dist/schemas/api.js +1 -1
  138. package/dist/schemas/api.js.map +1 -1
  139. package/dist/schemas/migrations.d.ts +123 -0
  140. package/dist/schemas/migrations.d.ts.map +1 -0
  141. package/dist/schemas/migrations.js +55 -0
  142. package/dist/schemas/migrations.js.map +1 -0
  143. package/dist/schemas/pool.d.ts +27 -0
  144. package/dist/schemas/pool.d.ts.map +1 -0
  145. package/dist/schemas/pool.js +7 -0
  146. package/dist/schemas/pool.js.map +1 -0
  147. package/dist/schemas/sqlite-driver-base.d.ts +50 -0
  148. package/dist/schemas/sqlite-driver-base.d.ts.map +1 -0
  149. package/dist/schemas/sqlite-driver-base.js +2 -0
  150. package/dist/schemas/sqlite-driver-base.js.map +1 -0
  151. package/dist/testing/sqlite-driver-conformance.d.ts +42 -0
  152. package/dist/testing/sqlite-driver-conformance.d.ts.map +1 -0
  153. package/dist/testing/sqlite-driver-conformance.js +471 -0
  154. package/dist/testing/sqlite-driver-conformance.js.map +1 -0
  155. package/package.json +78 -104
  156. package/dist/core/error-context.d.ts +0 -2
  157. package/dist/core/error-context.d.ts.map +0 -1
  158. package/dist/core/error-context.js +0 -17
  159. package/dist/core/error-context.js.map +0 -1
  160. package/dist/core/runtime.d.ts +0 -3
  161. package/dist/core/runtime.d.ts.map +0 -1
  162. package/dist/core/runtime.js +0 -17
  163. package/dist/core/runtime.js.map +0 -1
  164. package/dist/localdb.cloud.plugin.d.ts +0 -17
  165. package/dist/localdb.cloud.plugin.d.ts.map +0 -1
  166. package/dist/localdb.cloud.plugin.js +0 -23
  167. package/dist/localdb.cloud.plugin.js.map +0 -1
  168. package/src/cli/commands/_shared.consumer.ts +0 -20
  169. package/src/cli/commands/migrate/dev.localdb.migrate.cli-command.descriptor.ts +0 -20
  170. package/src/cli/commands/migrate/dev.localdb.migrate.cli-command.impl.consumer.ts +0 -97
  171. package/src/cli/commands/namespaces/dev.localdb.namespaces.cli-command.descriptor.ts +0 -17
  172. package/src/cli/commands/namespaces/dev.localdb.namespaces.cli-command.impl.ts +0 -46
  173. package/src/cli/commands/pools/dev.localdb.pools.cli-command.descriptor.ts +0 -16
  174. package/src/cli/commands/pools/dev.localdb.pools.cli-command.impl.ts +0 -37
  175. package/src/cli/commands/query/dev.localdb.query.cli-command.descriptor.ts +0 -21
  176. package/src/cli/commands/query/dev.localdb.query.cli-command.impl.consumer.ts +0 -69
  177. package/src/cli/commands/status/dev.localdb.status.cli-command.descriptor.ts +0 -20
  178. package/src/cli/commands/status/dev.localdb.status.cli-command.impl.consumer.ts +0 -93
  179. package/src/core/connection-pool.ts +0 -240
  180. package/src/core/database.ts +0 -419
  181. package/src/core/error-context.ts +0 -19
  182. package/src/core/migration-registry.ts +0 -321
  183. package/src/core/runtime.ts +0 -17
  184. package/src/dev.localdb.cli-group.descriptor.ts +0 -20
  185. package/src/dev.localdb.context.descriptor.ts +0 -13
  186. package/src/dev.localdb.context.impl.consumer.ts +0 -12
  187. package/src/index.ts +0 -28
  188. package/src/localdb.cloud.plugin.ts +0 -24
  189. package/src/localdb.plugin.ts +0 -43
  190. package/src/migrations/atlas/001-initial-schema.sql +0 -173
  191. package/src/migrations/atlas/002-lang-server-fields.sql +0 -12
  192. package/src/migrations/atlas/003-config-id-dedup.sql +0 -31
  193. package/src/migrations/atlas/004-fix-on-conflict-constraints.sql +0 -25
  194. package/src/migrations/atlas/005-diagnostics.sql +0 -66
  195. package/src/migrations/atlas/006-diagnostic-summaries.sql +0 -65
  196. package/src/migrations/atlas/007-diagnostic-slice.sql +0 -83
  197. package/src/migrations/load-sql.ts +0 -133
  198. package/src/schemas/api.ts +0 -92
@@ -0,0 +1,103 @@
1
+ /**
2
+ * The SQLite driver kind (`localdb/sqlite-driver`): LocalDB's contract with the
3
+ * host that opens SQLite files (#011 ruling 2026-10-03).
4
+ *
5
+ * LocalDB owns this contract and the policy above it (pragmas, WAL
6
+ * maintenance, startup retry, migrations); each host package implements it
7
+ * with its own SQLite binding (`bun:sqlite` in runtime-environment-bun,
8
+ * `node:sqlite` in runtime-environment-node) and registers the implementation
9
+ * on the runtimes it builds. LocalDB resolves it from the runtime each call is
10
+ * handed and never reads a host error shape: hosts classify every failure into
11
+ * the typed refusals below.
12
+ *
13
+ * Calls are synchronous, as SQLite's are. See SPEC "SQLite driver kind".
14
+ */
15
+ import * as z from 'zod/v4';
16
+ import { CapabilityError, createRuntimeKind, isCapabilityError, RuntimeDescriptorSchema } from '@vibesdotdev/kernel';
17
+ /** The kind id hosts register their driver under. */
18
+ export const LOCALDB_SQLITE_DRIVER_KIND = 'localdb/sqlite-driver';
19
+ /** Every refusal a driver raises, by reason. Host errors are classified into bounded details and never attached as `cause`. */
20
+ export const SQLITE_DRIVER_REFUSALS = {
21
+ /** `INVALID_INPUT`: the open request is not an absolute path (or `:memory:`) with well-formed own options. */
22
+ openInvalid: 'sqlite-open-invalid',
23
+ /** `NOT_FOUND`: `create: false` and no file at the path. */
24
+ databaseMissing: 'sqlite-database-missing',
25
+ /** `UNAVAILABLE`: the host could not open the file. */
26
+ openFailed: 'sqlite-open-failed',
27
+ /** `CONFLICT`, retryable: `SQLITE_BUSY` or `SQLITE_LOCKED`. */
28
+ busy: 'sqlite-busy',
29
+ /** `INTERNAL`: any other SQLite failure of a statement. */
30
+ statementFailed: 'sqlite-statement-failed',
31
+ /** `INVALID_INPUT`: SQL text that is not a string. */
32
+ sqlInvalid: 'sqlite-sql-invalid',
33
+ /** `INVALID_INPUT`: a bound parameter is not a {@link SqliteBinding}. */
34
+ bindingInvalid: 'sqlite-binding-invalid',
35
+ /** `INVALID_INPUT`: a transaction body returned a Promise; it was rolled back. */
36
+ transactionAsync: 'sqlite-transaction-async',
37
+ /** `UNAVAILABLE`: a call on a connection after `close()`. */
38
+ connectionClosed: 'sqlite-connection-closed',
39
+ /** `INTERNAL`: the host refused to close the connection. */
40
+ closeFailed: 'sqlite-close-failed'
41
+ };
42
+ /**
43
+ * What a failed statement hit, as a fixed word the host reads from SQLite's
44
+ * result code and text: owners branch on it (a missing table is an empty
45
+ * store, a unique collision a lost race) without SQLite's text — which quotes
46
+ * the statement's literals and names — ever reaching a message. Carried as
47
+ * `details.condition` on `sqlite-statement-failed`.
48
+ */
49
+ export const SQLITE_FAILURE_CONDITIONS = [
50
+ 'unique-constraint',
51
+ 'missing-table',
52
+ 'missing-column',
53
+ 'already-exists',
54
+ 'syntax-error'
55
+ ];
56
+ const SqliteFailureDetailsSchema = z.object({ condition: z.enum(SQLITE_FAILURE_CONDITIONS) });
57
+ /** How many `cause` links {@link sqliteFailureCondition} follows to find the driver's refusal. */
58
+ const CAUSE_DEPTH_LIMIT = 8;
59
+ /**
60
+ * The condition a driver's `sqlite-statement-failed` refusal carries, found on
61
+ * `failure` or along its `cause` chain (an owner may wrap it), or `undefined`.
62
+ * It reads only the typed refusal, never a host error's text.
63
+ */
64
+ export function sqliteFailureCondition(failure) {
65
+ let current = failure;
66
+ for (let depth = 0; depth < CAUSE_DEPTH_LIMIT && current instanceof Error; depth++) {
67
+ if (current instanceof CapabilityError && current.reason === SQLITE_DRIVER_REFUSALS.statementFailed) {
68
+ return SqliteFailureDetailsSchema.safeParse(current.details).data?.condition;
69
+ }
70
+ current = current.cause;
71
+ }
72
+ return undefined;
73
+ }
74
+ /** A driver descriptor: which host implements it. */
75
+ export const SqliteDriverDescriptorSchema = RuntimeDescriptorSchema.extend({
76
+ kind: z.literal(LOCALDB_SQLITE_DRIVER_KIND),
77
+ host: z.string().regex(/^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$/, 'a host label is a kebab-case id')
78
+ });
79
+ /** The contract's shape: a host label and an `open` function. */
80
+ const SqliteDriverMembersSchema = z.object({
81
+ host: z.string().min(1),
82
+ open: z.custom((open) => open instanceof Function)
83
+ });
84
+ /**
85
+ * Whether an implementation a loader produced honors the driver contract's
86
+ * shape: a non-empty host label and an `open` function. A getter or Proxy
87
+ * trap that throws while it is read propagates to the resolving call, which
88
+ * rejects; it is never answered as a driver.
89
+ */
90
+ export function isSqliteDriver(implementation) {
91
+ return SqliteDriverMembersSchema.safeParse(implementation).success;
92
+ }
93
+ /** The kind LocalDB registers; a loader whose implementation is not a driver is refused `implementation-invalid`. */
94
+ export const sqliteDriverKind = createRuntimeKind({
95
+ id: LOCALDB_SQLITE_DRIVER_KIND,
96
+ descriptorSchema: SqliteDriverDescriptorSchema,
97
+ validateImplementation: isSqliteDriver
98
+ });
99
+ /** Whether `error` is a driver's `sqlite-busy` refusal: the only startup failure LocalDB retries. */
100
+ export function isSqliteBusy(failure) {
101
+ return isCapabilityError(failure) && failure.reason === SQLITE_DRIVER_REFUSALS.busy;
102
+ }
103
+ //# sourceMappingURL=sqlite-driver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sqlite-driver.js","sourceRoot":"","sources":["../../src/driver/sqlite-driver.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -4,9 +4,15 @@
4
4
  * Unified SQLite database management for vibes dev toolkit.
5
5
  * Provides connection pooling, migration management, and consistent configuration.
6
6
  */
7
- export type { LocaldbApi, LocaldbRawDatabase, LocalDatabase as LocalDatabaseInterface, Migration, MigrationFunction, ConnectionStats, ConnectionPoolApi, MigrationRegistryApi } from './schemas/api';
8
- export { LocalDatabase, localdb } from './core/database';
9
- export { connectionPool } from './core/connection-pool';
10
- export { migrationRegistry } from './core/migration-registry';
11
- export { loadMigrationSQL, loadMigrationSQLSync, listMigrationFiles, parseVersionFromFilename, parseMigrationName } from './migrations/load-sql';
7
+ export type { LocaldbApi, LocaldbRawDatabase, LocalDatabase as LocalDatabaseInterface, Migration, MigrationDescriptor, MigrationFunction, NamespaceDatabaseLocation, ConnectionStats, ConnectionPoolApi, MigrationRegistryApi } from './schemas/api.ts';
8
+ export type { SqliteBinding, SqliteConnection, SqliteRow, SqliteRunResult, SqliteStatement, SqliteTransactionOptions, SqliteValue } from './driver/sqlite-driver.ts';
9
+ export { LocalDatabase, localdb, disposeLocalDatabaseConnections } from './core/database.ts';
10
+ export { fileSystemOf, sqliteDriverOf } from './core/host-kinds.ts';
11
+ export { LOCALDB_POOL_KIND, poolKind } from './core/connection-pool.ts';
12
+ export type { WalCheckpointTrigger } from './core/connection-pool.ts';
13
+ export { WAL_JOURNAL_SIZE_LIMIT_BYTES, WAL_MAINTENANCE_INTERVAL_MS, MAX_TRANSACTION_AGE_MS, checkpointWal, localDatabasePragmaStatements, type WalCheckpointOutcome, type WalCheckpointStatus } from './core/wal-policy.ts';
14
+ export { migrationRegistry, migrationKind, MIGRATION_KIND, isMigrationNamespaceRegistered, MIGRATION_NAMESPACE_REGISTERED } from './core/migration-registry.ts';
15
+ export { loadMigrationSQL, listMigrationFiles, parseVersionFromFilename, parseMigrationName } from './migrations/load-sql.ts';
16
+ export { connectionPool } from './core/pool-api.ts';
17
+ export { PoolDescriptorSchema, type PoolDescriptor } from './schemas/pool.ts';
12
18
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,YAAY,EACX,UAAU,EACV,kBAAkB,EAClB,aAAa,IAAI,sBAAsB,EACvC,SAAS,EACT,iBAAiB,EACjB,eAAe,EACf,iBAAiB,EACjB,oBAAoB,EACpB,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EACN,gBAAgB,EAChB,oBAAoB,EACpB,kBAAkB,EAClB,wBAAwB,EACxB,kBAAkB,EAClB,MAAM,uBAAuB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,YAAY,EACX,UAAU,EACV,kBAAkB,EAClB,aAAa,IAAI,sBAAsB,EACvC,SAAS,EACT,mBAAmB,EACnB,iBAAiB,EACjB,yBAAyB,EACzB,eAAe,EACf,iBAAiB,EACjB,oBAAoB,EACpB,MAAM,kBAAkB,CAAC;AAE1B,YAAY,EACX,aAAa,EACb,gBAAgB,EAChB,SAAS,EACT,eAAe,EACf,eAAe,EACf,wBAAwB,EACxB,WAAW,EACX,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EACN,aAAa,EACb,OAAO,EACP,+BAA+B,EAC/B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACpE,OAAO,EACN,iBAAiB,EACjB,QAAQ,EACR,MAAM,2BAA2B,CAAC;AACnC,YAAY,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,EACN,4BAA4B,EAC5B,2BAA2B,EAC3B,sBAAsB,EACtB,aAAa,EACb,6BAA6B,EAC7B,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,EACxB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACN,iBAAiB,EACjB,aAAa,EACb,cAAc,EACd,8BAA8B,EAC9B,8BAA8B,EAC9B,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACN,gBAAgB,EAChB,kBAAkB,EAClB,wBAAwB,EACxB,kBAAkB,EAClB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,oBAAoB,EAAE,KAAK,cAAc,EAAE,MAAM,mBAAmB,CAAC"}
package/dist/index.js CHANGED
@@ -4,8 +4,12 @@
4
4
  * Unified SQLite database management for vibes dev toolkit.
5
5
  * Provides connection pooling, migration management, and consistent configuration.
6
6
  */
7
- export { LocalDatabase, localdb } from './core/database.js';
8
- export { connectionPool } from './core/connection-pool.js';
9
- export { migrationRegistry } from './core/migration-registry.js';
10
- export { loadMigrationSQL, loadMigrationSQLSync, listMigrationFiles, parseVersionFromFilename, parseMigrationName } from './migrations/load-sql.js';
7
+ export { LocalDatabase, localdb, disposeLocalDatabaseConnections } from "./core/database.js";
8
+ export { fileSystemOf, sqliteDriverOf } from "./core/host-kinds.js";
9
+ export { LOCALDB_POOL_KIND, poolKind } from "./core/connection-pool.js";
10
+ export { WAL_JOURNAL_SIZE_LIMIT_BYTES, WAL_MAINTENANCE_INTERVAL_MS, MAX_TRANSACTION_AGE_MS, checkpointWal, localDatabasePragmaStatements } from "./core/wal-policy.js";
11
+ export { migrationRegistry, migrationKind, MIGRATION_KIND, isMigrationNamespaceRegistered, MIGRATION_NAMESPACE_REGISTERED } from "./core/migration-registry.js";
12
+ export { loadMigrationSQL, listMigrationFiles, parseVersionFromFilename, parseMigrationName } from "./migrations/load-sql.js";
13
+ export { connectionPool } from "./core/pool-api.js";
14
+ export { PoolDescriptorSchema } from "./schemas/pool.js";
11
15
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAaH,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EACN,gBAAgB,EAChB,oBAAoB,EACpB,kBAAkB,EAClB,wBAAwB,EACxB,kBAAkB,EAClB,MAAM,uBAAuB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAyBH,OAAO,EACN,aAAa,EACb,OAAO,EACP,+BAA+B,EAC/B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACpE,OAAO,EACN,iBAAiB,EACjB,QAAQ,EACR,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EACN,4BAA4B,EAC5B,2BAA2B,EAC3B,sBAAsB,EACtB,aAAa,EACb,6BAA6B,EAG7B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACN,iBAAiB,EACjB,aAAa,EACb,cAAc,EACd,8BAA8B,EAC9B,8BAA8B,EAC9B,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACN,gBAAgB,EAChB,kBAAkB,EAClB,wBAAwB,EACxB,kBAAkB,EAClB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,oBAAoB,EAAuB,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * LocalDB Runtime Client Descriptor
3
+ *
4
+ * The runtime-owned logical owner of LocalDB access. Pure data: the
5
+ * implementation loads lazily through `src/localdb.client.impl.consumer.ts`.
6
+ */
7
+ import type { RuntimeClientDescriptor } from '@vibesdotdev/kernel/client';
8
+ declare const descriptor: RuntimeClientDescriptor;
9
+ export default descriptor;
10
+ //# sourceMappingURL=localdb.client.descriptor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"localdb.client.descriptor.d.ts","sourceRoot":"","sources":["../src/localdb.client.descriptor.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AAE1E,QAAA,MAAM,UAAU,EAAE,uBAIjB,CAAC;AAEF,eAAe,UAAU,CAAC"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * LocalDB Runtime Client Descriptor
3
+ *
4
+ * The runtime-owned logical owner of LocalDB access. Pure data: the
5
+ * implementation loads lazily through `src/localdb.client.impl.consumer.ts`.
6
+ */
7
+ const descriptor = {
8
+ kind: 'runtime/client',
9
+ id: 'localdb',
10
+ description: 'Runtime-owned logical LocalDB access — migrations, connections, status'
11
+ };
12
+ export default descriptor;
13
+ //# sourceMappingURL=localdb.client.descriptor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"localdb.client.descriptor.js","sourceRoot":"","sources":["../src/localdb.client.descriptor.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,MAAM,UAAU,GAA4B;IAC3C,IAAI,EAAE,gBAAgB;IACtB,EAAE,EAAE,SAAS;IACb,WAAW,EAAE,wEAAwE;CACrF,CAAC;AAEF,eAAe,UAAU,CAAC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * LocalDB Runtime Client Implementation (Consumer)
3
+ *
4
+ * The kernel instantiates this per runtime through the `runtime/client`
5
+ * `localdb` descriptor; callers resolve it with `getVibesClient` (async) or
6
+ * `tryGetVibesClient` (synchronously, once activation warmed the cache), or
7
+ * through the `dev/localdb` context which resolves to this same instance.
8
+ */
9
+ import { LocalDBManager } from './core/database.ts';
10
+ export default LocalDBManager;
11
+ //# sourceMappingURL=localdb.client.impl.consumer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"localdb.client.impl.consumer.d.ts","sourceRoot":"","sources":["../src/localdb.client.impl.consumer.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD,eAAe,cAAc,CAAC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * LocalDB Runtime Client Implementation (Consumer)
3
+ *
4
+ * The kernel instantiates this per runtime through the `runtime/client`
5
+ * `localdb` descriptor; callers resolve it with `getVibesClient` (async) or
6
+ * `tryGetVibesClient` (synchronously, once activation warmed the cache), or
7
+ * through the `dev/localdb` context which resolves to this same instance.
8
+ */
9
+ import { LocalDBManager } from "./core/database.js";
10
+ export default LocalDBManager;
11
+ //# sourceMappingURL=localdb.client.impl.consumer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"localdb.client.impl.consumer.js","sourceRoot":"","sources":["../src/localdb.client.impl.consumer.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD,eAAe,cAAc,CAAC"}
@@ -3,6 +3,6 @@
3
3
  *
4
4
  * Local SQLite database management — migrations, connections, status.
5
5
  */
6
- declare const _default: import("@vibesdotdev/runtime").RuntimePlugin;
7
- export default _default;
6
+ declare const defaultExport: import("@vibesdotdev/kernel").RuntimePlugin;
7
+ export default defaultExport;
8
8
  //# sourceMappingURL=localdb.plugin.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"localdb.plugin.d.ts","sourceRoot":"","sources":["../src/localdb.plugin.ts"],"names":[],"mappings":"AAAA;;;;GAIG;;AAeH,wBAuBG"}
1
+ {"version":3,"file":"localdb.plugin.d.ts","sourceRoot":"","sources":["../src/localdb.plugin.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAkCH,QAAA,MAAM,aAAa,6CA2DjB,CAAC;AAEH,eAAe,aAAa,CAAC"}
@@ -3,7 +3,9 @@
3
3
  *
4
4
  * Local SQLite database management — migrations, connections, status.
5
5
  */
6
- import { createRuntimePlugin, loader } from '@vibesdotdev/runtime';
6
+ import { migrationKind, MIGRATION_KIND } from "./core/migration-registry.js";
7
+ import { createRuntimePlugin, loader } from '@vibesdotdev/kernel';
8
+ import { getVibesClient } from '@vibesdotdev/kernel/client';
7
9
  // CLI
8
10
  import localdbGroup from "./dev.localdb.cli-group.descriptor.js";
9
11
  import localdbMigrate from "./cli/commands/migrate/dev.localdb.migrate.cli-command.descriptor.js";
@@ -13,10 +15,21 @@ import localdbQuery from "./cli/commands/query/dev.localdb.query.cli-command.des
13
15
  import localdbStatus from "./cli/commands/status/dev.localdb.status.cli-command.descriptor.js";
14
16
  // Context
15
17
  import localdbContextDescriptor from "./dev.localdb.context.descriptor.js";
16
- export default createRuntimePlugin({
18
+ // Runtime-owned logical owner (resolved through the kernel, warmed on activation)
19
+ import localdbClientDescriptor from "./localdb.client.descriptor.js";
20
+ import { clearDirectPluginDisposal, markDirectPluginDisposal } from "./core/database.js";
21
+ // The SQLite driver kind the hosts implement (SPEC "SQLite driver kind")
22
+ import { LOCALDB_SQLITE_DRIVER_KIND, sqliteDriverKind } from "./driver/sqlite-driver.js";
23
+ // The physical pool kind (SPEC "Connection pool"): the plugin registers the
24
+ // kind and a runtime-owned default pool, so single-runtime processes share one
25
+ // connection per path with no further composition.
26
+ import { ensureDefaultPool } from "./core/connection-pool.js";
27
+ // Hoisted const: tsc rewriteRelativeImportExtensions does not rewrite `.ts` specifiers inside `export default <expr>` (TS 6.0.3).
28
+ const defaultExport = createRuntimePlugin({
17
29
  id: 'localdb',
18
30
  name: 'LocalDB',
19
31
  description: 'Local SQLite database management — migrations, connections, status',
32
+ optionalDependencies: ['logging'],
20
33
  descriptors: [
21
34
  localdbGroup,
22
35
  localdbMigrate,
@@ -24,15 +37,50 @@ export default createRuntimePlugin({
24
37
  localdbPools,
25
38
  localdbQuery,
26
39
  localdbStatus,
27
- localdbContextDescriptor
40
+ localdbContextDescriptor,
41
+ localdbClientDescriptor
28
42
  ],
29
43
  loaders: [
30
- loader('dev.localdb.migrate', 'consumer', () => import('./cli/commands/migrate/dev.localdb.migrate.cli-command.impl.consumer.js')),
31
- loader('dev.localdb.namespaces', () => import('./cli/commands/namespaces/dev.localdb.namespaces.cli-command.impl.js')),
32
- loader('dev.localdb.pools', () => import('./cli/commands/pools/dev.localdb.pools.cli-command.impl.js')),
33
- loader('dev.localdb.query', 'consumer', () => import('./cli/commands/query/dev.localdb.query.cli-command.impl.consumer.js')),
34
- loader('dev.localdb.status', 'consumer', () => import('./cli/commands/status/dev.localdb.status.cli-command.impl.consumer.js')),
35
- loader('dev/localdb', 'consumer', () => import('./dev.localdb.context.impl.consumer.js'))
36
- ]
44
+ loader('dev.localdb.migrate', 'consumer', () => import("./cli/commands/migrate/dev.localdb.migrate.cli-command.impl.consumer.js")),
45
+ loader('dev.localdb.namespaces', () => import("./cli/commands/namespaces/dev.localdb.namespaces.cli-command.impl.js")),
46
+ loader('dev.localdb.pools', () => import("./cli/commands/pools/dev.localdb.pools.cli-command.impl.js")),
47
+ loader('dev.localdb.query', 'consumer', () => import("./cli/commands/query/dev.localdb.query.cli-command.impl.consumer.js")),
48
+ loader('dev.localdb.status', 'consumer', () => import("./cli/commands/status/dev.localdb.status.cli-command.impl.consumer.js")),
49
+ loader('dev/localdb', 'consumer', () => import("./dev.localdb.context.impl.consumer.js")),
50
+ loader('localdb', 'consumer', () => import("./localdb.client.impl.consumer.js"))
51
+ ],
52
+ // The host environment registers the driver kind with its driver; a runtime
53
+ // composed without one still gets the kind, and resolving it then refuses typed.
54
+ onRegister(runtime) {
55
+ if (!runtime.hasKind(MIGRATION_KIND))
56
+ runtime.registerKind(migrationKind);
57
+ if (!runtime.hasKind(LOCALDB_SQLITE_DRIVER_KIND))
58
+ runtime.registerKind(sqliteDriverKind);
59
+ ensureDefaultPool(runtime);
60
+ markDirectPluginDisposal(runtime);
61
+ },
62
+ // Warm the runtime-owned client and its physical pool, so synchronous
63
+ // callers can use `tryGetVibesClient('localdb', runtime)` and pool
64
+ // statistics right after activation.
65
+ onActivate: async (runtime) => {
66
+ const client = await getVibesClient('localdb', runtime);
67
+ await client.ensurePool();
68
+ },
69
+ // Each connection's WAL maintenance tick (D-WAL) runs on the lifecycle of a
70
+ // persistent runtime that holds it and ends with that runtime; finite hosts
71
+ // checkpoint on release and close instead. Disposal gives back what the
72
+ // disposing runtime holds, reported on it. A reload retiring this plugin from a
73
+ // runtime that lives on disposes it on a live lifecycle (and never again): the
74
+ // release then runs as that lifecycle's own work at the runtime's disposal.
75
+ async onDispose(runtime) {
76
+ clearDirectPluginDisposal(runtime);
77
+ const { releaseAtDisposal, localdb } = await import("./core/database.js");
78
+ if (runtime.lifecycle.phase === 'live') {
79
+ releaseAtDisposal(runtime, localdb);
80
+ return;
81
+ }
82
+ await localdb.closeAll(runtime);
83
+ }
37
84
  });
85
+ export default defaultExport;
38
86
  //# sourceMappingURL=localdb.plugin.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"localdb.plugin.js","sourceRoot":"","sources":["../src/localdb.plugin.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAEnE,MAAM;AACN,OAAO,YAAY,MAAM,uCAAuC,CAAC;AACjE,OAAO,cAAc,MAAM,sEAAsE,CAAC;AAClG,OAAO,iBAAiB,MAAM,4EAA4E,CAAC;AAC3G,OAAO,YAAY,MAAM,kEAAkE,CAAC;AAC5F,OAAO,YAAY,MAAM,kEAAkE,CAAC;AAC5F,OAAO,aAAa,MAAM,oEAAoE,CAAC;AAE/F,UAAU;AACV,OAAO,wBAAwB,MAAM,qCAAqC,CAAC;AAE3E,eAAe,mBAAmB,CAAC;IAClC,EAAE,EAAE,SAAS;IACb,IAAI,EAAE,SAAS;IACf,WAAW,EAAE,oEAAoE;IAEjF,WAAW,EAAE;QACZ,YAAY;QACZ,cAAc;QACd,iBAAiB;QACjB,YAAY;QACZ,YAAY;QACZ,aAAa;QACb,wBAAwB;KACxB;IAED,OAAO,EAAE;QACR,MAAM,CAAC,qBAAqB,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,yEAAyE,CAAC,CAAC;QAClI,MAAM,CAAC,wBAAwB,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,sEAAsE,CAAC,CAAC;QACtH,MAAM,CAAC,mBAAmB,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,4DAA4D,CAAC,CAAC;QACvG,MAAM,CAAC,mBAAmB,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,qEAAqE,CAAC,CAAC;QAC5H,MAAM,CAAC,oBAAoB,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,uEAAuE,CAAC,CAAC;QAC/H,MAAM,CAAC,aAAa,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,wCAAwC,CAAC,CAAC;KACzF;CACD,CAAC,CAAC"}
1
+ {"version":3,"file":"localdb.plugin.js","sourceRoot":"","sources":["../src/localdb.plugin.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import type { RuntimeRef } from '@vibesdotdev/kernel';
2
+ import { type NamespaceDatabaseLocation } from './core/migration-registry.ts';
3
+ export type { NamespaceDatabaseLocation };
4
+ /** Resolve a namespace's owner-declared database location without guessing. */
5
+ export declare function resolveDatabaseLocationForNamespace(runtime: RuntimeRef, namespace: string): NamespaceDatabaseLocation | undefined;
6
+ //# sourceMappingURL=location.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"location.d.ts","sourceRoot":"","sources":["../src/location.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAqB,KAAK,yBAAyB,EAAE,MAAM,8BAA8B,CAAC;AAEjG,YAAY,EAAE,yBAAyB,EAAE,CAAC;AAE1C,+EAA+E;AAC/E,wBAAgB,mCAAmC,CAClD,OAAO,EAAE,UAAU,EACnB,SAAS,EAAE,MAAM,GACf,yBAAyB,GAAG,SAAS,CAEvC"}
@@ -0,0 +1,6 @@
1
+ import { migrationRegistry } from "./core/migration-registry.js";
2
+ /** Resolve a namespace's owner-declared database location without guessing. */
3
+ export function resolveDatabaseLocationForNamespace(runtime, namespace) {
4
+ return migrationRegistry.getNamespaceLocation(runtime, namespace);
5
+ }
6
+ //# sourceMappingURL=location.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"location.js","sourceRoot":"","sources":["../src/location.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAkC,MAAM,8BAA8B,CAAC;AAIjG,+EAA+E;AAC/E,MAAM,UAAU,mCAAmC,CAClD,OAAmB,EACnB,SAAiB;IAEjB,OAAO,iBAAiB,CAAC,oBAAoB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;AACnE,CAAC"}
@@ -1,45 +1,49 @@
1
1
  /**
2
2
  * SQL Migration Loader
3
3
  *
4
- * Utility for loading SQL migration files from the filesystem.
5
- * Uses Bun's file API for fast synchronous reads.
4
+ * Reads an owner's migration SQL files from the absolute directory the owner
5
+ * passes (PM and Workspace pass their own `migrations/<namespace>` directory),
6
+ * through the runtime's filesystem (`filesystem/adapter`). LocalDB ships no SQL
7
+ * of its own, so there is no package-relative lookup.
6
8
  */
9
+ import { type RuntimeRef } from '@vibesdotdev/kernel';
7
10
  /**
8
- * Load a SQL migration file by namespace and filename (async)
11
+ * Load a SQL migration file from an owner's migration directory, through the
12
+ * runtime's filesystem.
9
13
  *
10
- * @param namespace - The migration namespace (atlas, session, external)
14
+ * @param runtime - The runtime the owner was handed
15
+ * @param directory - The owner's absolute migration directory
11
16
  * @param filename - The SQL filename (e.g., '001-initial-schema.sql')
12
- * @returns Promise resolving to the SQL content as a string
17
+ * @returns The SQL content; every failure rejects (`INVALID_INPUT
18
+ * migration-directory-relative`, `NOT_FOUND migration-file-missing`, or the
19
+ * filesystem's own refusal)
13
20
  */
14
- export declare function loadMigrationSQL(namespace: string, filename: string): Promise<string>;
21
+ export declare function loadMigrationSQL(runtime: RuntimeRef, directory: string, filename: string): Promise<string>;
15
22
  /**
16
- * Synchronously load a SQL migration file
17
- * Uses Node's fs.readFileSync for truly synchronous reads
23
+ * List the SQL files in an owner's migration directory, sorted by version,
24
+ * through the runtime's filesystem. A directory that does not exist lists
25
+ * nothing.
18
26
  *
19
- * @param namespace - The migration namespace (atlas, session, external)
20
- * @param filename - The SQL filename (e.g., '001-initial-schema.sql')
21
- * @returns The SQL content as a string
22
- */
23
- export declare function loadMigrationSQLSync(namespace: string, filename: string): string;
24
- /**
25
- * List all SQL files in a namespace directory
26
- *
27
- * @param namespace - The migration namespace (atlas, session, external)
28
- * @returns Array of SQL filenames sorted by version number
27
+ * @param runtime - The runtime the owner was handed
28
+ * @param directory - The owner's absolute migration directory
29
+ * @returns SQL filenames sorted by their numeric version prefix
29
30
  */
30
- export declare function listMigrationFiles(namespace: string): string[];
31
+ export declare function listMigrationFiles(runtime: RuntimeRef, directory: string): Promise<string[]>;
31
32
  /**
32
33
  * Parse version number from a migration filename
33
34
  *
34
35
  * @param filename - The SQL filename (e.g., '001-initial-schema.sql')
35
- * @returns The version number
36
+ * @returns The version number; a filename without a leading `<digits>-`, or
37
+ * whose version is not a safe integer, refuses `INVALID_INPUT
38
+ * migration-filename-invalid`
36
39
  */
37
40
  export declare function parseVersionFromFilename(filename: string): number;
38
41
  /**
39
42
  * Parse migration name from a filename
40
43
  *
41
44
  * @param filename - The SQL filename (e.g., '001-initial-schema.sql')
42
- * @returns The migration name (e.g., 'initial_schema')
45
+ * @returns The migration name (e.g., 'initial_schema'); a filename that is not
46
+ * a string refuses `INVALID_INPUT migration-filename-invalid`
43
47
  */
44
48
  export declare function parseMigrationName(filename: string): string;
45
49
  //# sourceMappingURL=load-sql.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"load-sql.d.ts","sourceRoot":"","sources":["../../src/migrations/load-sql.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAgBH;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAarF;AAED;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAahF;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE,CAgB9D;AAkBD;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAMjE;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAM3D"}
1
+ {"version":3,"file":"load-sql.d.ts","sourceRoot":"","sources":["../../src/migrations/load-sql.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAmB,KAAK,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAkBvE;;;;;;;;;;GAUG;AACH,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAUhH;AAED;;;;;;;;GAQG;AACH,wBAAsB,kBAAkB,CAAC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAWlG;AAuCD;;;;;;;GAOG;AACH,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAMjE;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAO3D"}