@fougere/adapter-sql 0.8.4-alpha.0 → 0.9.0-alpha.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +13 -17
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +9 -9
- package/dist/index.js.map +1 -1
- package/dist/{setup.d.ts → source.d.ts} +3 -3
- package/dist/source.d.ts.map +1 -0
- package/dist/{setup.js → source.js} +2 -2
- package/dist/source.js.map +1 -0
- package/dist/sqlite.d.ts +4 -4
- package/dist/sqlite.d.ts.map +1 -1
- package/dist/sqlite.js +4 -4
- package/dist/sqlite.js.map +1 -1
- package/package.json +4 -4
- package/src/index.ts +11 -24
- package/src/{setup.ts → source.ts} +4 -4
- package/src/sqlite.ts +6 -6
- package/dist/setup.d.ts.map +0 -1
- package/dist/setup.js.map +0 -1
package/dist/index.d.ts
CHANGED
|
@@ -1,23 +1,19 @@
|
|
|
1
|
-
export { createTableSQL,
|
|
2
|
-
export { onQuery
|
|
3
|
-
export
|
|
4
|
-
export type { GenerateOptions, SqlSink } from './ddl.js';
|
|
5
|
-
export { toTable, toTables, toTableName, toSnakeCase, isKeyed } from './table.js';
|
|
1
|
+
export { createTableSQL, generateSQL, autoMigrate, compiler } from './ddl.js';
|
|
2
|
+
export { onQuery } from './query.js';
|
|
3
|
+
export { toTable, toTables, toTableName, toSnakeCase } from './table.js';
|
|
6
4
|
export { orderTables } from './order.js';
|
|
7
|
-
export type {
|
|
8
|
-
export { columnTypeFor, dialects,
|
|
9
|
-
export type { Dialect
|
|
5
|
+
export type { EntityEntry, FrondLike, AppLike, } from './table.js';
|
|
6
|
+
export { columnTypeFor, dialects, } from './dialect.js';
|
|
7
|
+
export type { Dialect } from './dialect.js';
|
|
10
8
|
export type { SqlField, SqlFields } from './fields.js';
|
|
11
9
|
export { SqlStorage, createStorageFactory } from './crud.js';
|
|
12
|
-
export
|
|
13
|
-
export {
|
|
14
|
-
export type {
|
|
15
|
-
export {
|
|
16
|
-
export type { Setup, SqlSource, SetupOptions } from './setup.js';
|
|
17
|
-
export { drift, driftReport } from './drift.js';
|
|
10
|
+
export { codecsOf } from './values.js';
|
|
11
|
+
export { createKyselySource } from './source.js';
|
|
12
|
+
export type { SqlSource } from './source.js';
|
|
13
|
+
export { drift } from './drift.js';
|
|
18
14
|
export type { Drift } from './drift.js';
|
|
19
|
-
export { actualState, desiredTables, delta,
|
|
15
|
+
export { actualState, desiredTables, delta, changeSQL, migrate } from './diff.js';
|
|
20
16
|
export type { SchemaState, Change } from './diff.js';
|
|
21
|
-
export { planStep, collapseChain,
|
|
22
|
-
export type { Plan,
|
|
17
|
+
export { planStep, collapseChain, applyStep } from './step.js';
|
|
18
|
+
export type { Plan, StepChange } from './step.js';
|
|
23
19
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAC9E,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzE,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,YAAY,EACV,WAAW,EACX,SAAS,EACT,OAAO,GACR,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,aAAa,EACb,QAAQ,GACT,MAAM,cAAc,CAAC;AACtB,YAAY,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAC5C,YAAY,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AAC7D,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAIvC,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,YAAY,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,YAAY,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAClF,YAAY,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAErD,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAC/D,YAAY,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
export { createTableSQL,
|
|
2
|
-
export { onQuery
|
|
3
|
-
export { toTable, toTables, toTableName, toSnakeCase
|
|
1
|
+
export { createTableSQL, generateSQL, autoMigrate, compiler } from './ddl.js';
|
|
2
|
+
export { onQuery } from './query.js';
|
|
3
|
+
export { toTable, toTables, toTableName, toSnakeCase } from './table.js';
|
|
4
4
|
export { orderTables } from './order.js';
|
|
5
|
-
export { columnTypeFor, dialects,
|
|
5
|
+
export { columnTypeFor, dialects, } from './dialect.js';
|
|
6
6
|
export { SqlStorage, createStorageFactory } from './crud.js';
|
|
7
|
-
export {
|
|
7
|
+
export { codecsOf } from './values.js';
|
|
8
8
|
// The driver this package owns is NOT here: `better-sqlite3` is native and `node:fs` is a
|
|
9
9
|
// builtin, and an index that re-exported them made the whole adapter unreachable from a
|
|
10
10
|
// runtime that has neither. It lives at `@fougere/adapter-sql/sqlite`.
|
|
11
|
-
export {
|
|
12
|
-
export { drift
|
|
13
|
-
export { actualState, desiredTables, delta,
|
|
11
|
+
export { createKyselySource } from './source.js';
|
|
12
|
+
export { drift } from './drift.js';
|
|
13
|
+
export { actualState, desiredTables, delta, changeSQL, migrate } from './diff.js';
|
|
14
14
|
// The non-additive half — realised only from a step a human wrote down.
|
|
15
|
-
export { planStep, collapseChain,
|
|
15
|
+
export { planStep, collapseChain, applyStep } from './step.js';
|
|
16
16
|
//# 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,OAAO,EAAE,cAAc,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAC9E,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzE,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAMzC,OAAO,EACL,aAAa,EACb,QAAQ,GACT,MAAM,cAAc,CAAC;AAGtB,OAAO,EAAE,UAAU,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AAC7D,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,0FAA0F;AAC1F,wFAAwF;AACxF,uEAAuE;AACvE,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAEjD,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEnC,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAElF,wEAAwE;AACxE,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC"}
|
|
@@ -4,7 +4,7 @@ import type { Source } from '@fougere/core';
|
|
|
4
4
|
import { createStorageFactory, type StorageFactoryOptions } from './crud.js';
|
|
5
5
|
import type { DialectName } from './dialect.js';
|
|
6
6
|
import type { SqlSink } from './ddl.js';
|
|
7
|
-
export interface
|
|
7
|
+
export interface SqlSourceOptions {
|
|
8
8
|
/** Override naming for specific entities (e.g. better-auth wants singular table names). */
|
|
9
9
|
storageFactoryOptions?: StorageFactoryOptions;
|
|
10
10
|
/** What to call this storage when a query is reported. */
|
|
@@ -31,5 +31,5 @@ export declare const sqlEnforces: readonly ['unique'];
|
|
|
31
31
|
/** A sink that runs statements through Kysely — works on every engine. */
|
|
32
32
|
export declare function sqlSink(db: Kysely<any>): SqlSink;
|
|
33
33
|
/** Wrap any Kysely dialect — Postgres, MySQL, SQL Server. */
|
|
34
|
-
export declare function
|
|
35
|
-
//# sourceMappingURL=
|
|
34
|
+
export declare function createKyselySource(kyselyDialect: KyselyDialect, dialect: DialectName, opts?: SqlSourceOptions): SqlSource;
|
|
35
|
+
//# sourceMappingURL=source.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"source.d.ts","sourceRoot":"","sources":["../src/source.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,OAAO,EAAE,MAAM,EAAO,KAAK,OAAO,IAAI,aAAa,EAAE,MAAM,QAAQ,CAAC;AACpE,OAAO,KAAK,EAAE,MAAM,EAAc,MAAM,eAAe,CAAC;AACxD,OAAO,EAAE,oBAAoB,EAAE,KAAK,qBAAqB,EAAE,MAAM,WAAW,CAAC;AAK7E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAExC,MAAM,WAAW,gBAAgB;IAC/B,2FAA2F;IAC3F,qBAAqB,CAAC,EAAE,qBAAqB,CAAC;IAC9C,0DAA0D;IAC1D,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,4FAA4F;AAC5F,MAAM,WAAW,SAAU,SAAQ,MAAM;IACvC,OAAO,EAAE,WAAW,CAAC;IACrB,cAAc,EAAE,UAAU,CAAC,OAAO,oBAAoB,CAAC,CAAC;IACxD,+DAA+D;IAC/D,IAAI,EAAE,OAAO,CAAC;IACd;;;OAGG;IACH,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;IAChB,0FAA0F;IAC1F,UAAU,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,cAAc,EAAE,UAAU,CAAC,OAAO,oBAAoB,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;CACxG;AAED,mFAAmF;AACnF,MAAM,MAAM,KAAK,GAAG,SAAS,CAAC;AAE9B,kGAAkG;AAClG,eAAO,MAAM,WAAW,YAAI,QAAQ,CAAU,CAAC;AAa/C,0EAA0E;AAC1E,wBAAgB,OAAO,CAAC,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,OAAO,CAEhD;AAED,6DAA6D;AAC7D,wBAAgB,kBAAkB,CAChC,aAAa,EAAE,aAAa,EAC5B,OAAO,EAAE,WAAW,EACpB,IAAI,GAAE,gBAAqB,GAC1B,SAAS,CAaX"}
|
|
@@ -21,7 +21,7 @@ export function sqlSink(db) {
|
|
|
21
21
|
return { execute: (statement) => sql.raw(statement).execute(db) };
|
|
22
22
|
}
|
|
23
23
|
/** Wrap any Kysely dialect — Postgres, MySQL, SQL Server. */
|
|
24
|
-
export function
|
|
24
|
+
export function createKyselySource(kyselyDialect, dialect, opts = {}) {
|
|
25
25
|
const db = new Kysely({ dialect: kyselyDialect, log: logQueries(opts.name ?? dialect) });
|
|
26
26
|
return {
|
|
27
27
|
db,
|
|
@@ -35,4 +35,4 @@ export function setupKysely(kyselyDialect, dialect, opts = {}) {
|
|
|
35
35
|
transacted: (fn) => db.transaction().execute((trx) => fn(createStorageFactory(trx, opts.storageFactoryOptions, dialect))),
|
|
36
36
|
};
|
|
37
37
|
}
|
|
38
|
-
//# sourceMappingURL=
|
|
38
|
+
//# sourceMappingURL=source.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"source.js","sourceRoot":"","sources":["../src/source.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,OAAO,EAAE,MAAM,EAAE,GAAG,EAAiC,MAAM,QAAQ,CAAC;AAEpE,OAAO,EAAE,oBAAoB,EAA8B,MAAM,WAAW,CAAC;AAC7E,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACnD,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AA6BzC,kGAAkG;AAClG,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,QAAQ,CAAU,CAAC;AAE/C,+EAA+E;AAC/E,SAAS,SAAS,CAAC,EAAe,EAAE,OAAoB,EAAE,IAAsB;IAC9E,OAAO,KAAK,EAAE,IAAgB,EAA0B,EAAE;QACxD,MAAM,OAAO,GAAG,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,qBAAqB,EAAE,SAAS,IAAI,WAAW,EAAE,CAAC;QAC7F,MAAM,OAAO,CAAC,IAAa,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC;QAC1C,MAAM,KAAK,GAAG,MAAM,KAAK,CAAC,EAAE,EAAE,aAAa,CAAC,IAAa,EAAE,OAAO,CAAC,CAAC,CAAC;QAErE,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACvD,CAAC,CAAC;AACJ,CAAC;AAED,0EAA0E;AAC1E,MAAM,UAAU,OAAO,CAAC,EAAe;IACrC,OAAO,EAAE,OAAO,EAAE,CAAC,SAAiB,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC;AAC5E,CAAC;AAED,6DAA6D;AAC7D,MAAM,UAAU,kBAAkB,CAChC,aAA4B,EAC5B,OAAoB,EACpB,IAAI,GAAqB,EAAE;IAE3B,MAAM,EAAE,GAAG,IAAI,MAAM,CAAM,EAAE,OAAO,EAAE,aAAa,EAAE,GAAG,EAAE,UAAU,CAAC,IAAI,CAAC,IAAI,IAAI,OAAO,CAAC,EAAE,CAAC,CAAC;IAC9F,OAAO;QACL,EAAE;QACF,OAAO;QACP,cAAc,EAAE,oBAAoB,CAAC,EAAE,EAAE,IAAI,CAAC,qBAAqB,EAAE,OAAO,CAAC;QAC7E,IAAI,EAAE,OAAO,CAAC,EAAE,CAAC;QACjB,OAAO,EAAE,SAAS,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC;QACrC,KAAK,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE;QACzB,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,OAAO;QAC1B,QAAQ,EAAE,WAAW;QACrB,UAAU,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,oBAAoB,CAAC,GAAG,EAAE,IAAI,CAAC,qBAAqB,EAAE,OAAO,CAAC,CAAC,CAAC;KAC1H,CAAC;AACJ,CAAC"}
|
package/dist/sqlite.d.ts
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import Database from 'better-sqlite3';
|
|
2
|
-
import { type
|
|
3
|
-
export interface
|
|
2
|
+
import { type SqlSourceOptions, type SqlSource } from './source.js';
|
|
3
|
+
export interface SqliteSourceOptions extends SqlSourceOptions {
|
|
4
4
|
/** Filesystem path to the database. Defaults to a project-local file. */
|
|
5
5
|
path?: string;
|
|
6
6
|
}
|
|
7
|
-
export interface
|
|
7
|
+
export interface SqliteSource extends SqlSource {
|
|
8
8
|
/** The raw handle, for pragmas and synchronous exec. */
|
|
9
9
|
sqlite: Database.Database;
|
|
10
10
|
}
|
|
11
|
-
export declare function
|
|
11
|
+
export declare function createSqliteSource(opts?: SqliteSourceOptions): SqliteSource;
|
|
12
12
|
//# sourceMappingURL=sqlite.d.ts.map
|
package/dist/sqlite.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sqlite.d.ts","sourceRoot":"","sources":["../src/sqlite.ts"],"names":[],"mappings":"AAIA,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AAItC,OAAO,EAAwB,KAAK,
|
|
1
|
+
{"version":3,"file":"sqlite.d.ts","sourceRoot":"","sources":["../src/sqlite.ts"],"names":[],"mappings":"AAIA,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AAItC,OAAO,EAAwB,KAAK,gBAAgB,EAAE,KAAK,SAAS,EAAE,MAAM,aAAa,CAAC;AAK1F,MAAM,WAAW,mBAAoB,SAAQ,gBAAgB;IAC3D,yEAAyE;IACzE,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,YAAa,SAAQ,SAAS;IAC7C,wDAAwD;IACxD,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC;CAC3B;AAED,wBAAgB,kBAAkB,CAAC,IAAI,GAAE,mBAAwB,GAAG,YAAY,CA4B/E"}
|
package/dist/sqlite.js
CHANGED
|
@@ -6,11 +6,11 @@ import Database from 'better-sqlite3';
|
|
|
6
6
|
import { createStorageFactory } from './crud.js';
|
|
7
7
|
import { logQueries } from './query.js';
|
|
8
8
|
import { drift, driftReport } from './drift.js';
|
|
9
|
-
import { sqlSink, sqlEnforces } from './
|
|
9
|
+
import { sqlSink, sqlEnforces } from './source.js';
|
|
10
10
|
import { desiredTables, migrate } from './diff.js';
|
|
11
11
|
import { toTableName } from './table.js';
|
|
12
12
|
import { Sources } from '@fougere/core';
|
|
13
|
-
export function
|
|
13
|
+
export function createSqliteSource(opts = {}) {
|
|
14
14
|
const path = opts.path ?? 'fougere.db';
|
|
15
15
|
// A file-backed DB needs its directory — SQLite won't create it.
|
|
16
16
|
if (path !== ':memory:')
|
|
@@ -45,8 +45,8 @@ Sources.register('sql', (conf) => {
|
|
|
45
45
|
if (dialect !== undefined && dialect !== 'sqlite') {
|
|
46
46
|
throw new Error(`source 'sql', dialect '${dialect}': cannot be built from a name — only 'sqlite' can, `
|
|
47
47
|
+ 'because it is the one driver this package owns. Build the Kysely dialect yourself and '
|
|
48
|
-
+ `call
|
|
48
|
+
+ `call createKyselySource(dialect, '${dialect}'), then hand it in as a source.`);
|
|
49
49
|
}
|
|
50
|
-
return
|
|
50
|
+
return createSqliteSource({ path: conf.path, name: conf.name });
|
|
51
51
|
});
|
|
52
52
|
//# sourceMappingURL=sqlite.js.map
|
package/dist/sqlite.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sqlite.js","sourceRoot":"","sources":["../src/sqlite.ts"],"names":[],"mappings":"AAAA,kGAAkG;AAClG,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAC/C,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AACtC,OAAO,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,OAAO,EAAE,WAAW,
|
|
1
|
+
{"version":3,"file":"sqlite.js","sourceRoot":"","sources":["../src/sqlite.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fougere/adapter-sql",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.9.0-alpha.1",
|
|
4
4
|
"description": "Entity → SQL tables through Kysely (SQLite, PostgreSQL, MySQL, SQL Server).",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"fougere",
|
|
@@ -39,8 +39,8 @@
|
|
|
39
39
|
"dependencies": {
|
|
40
40
|
"better-sqlite3": "^13.0.3",
|
|
41
41
|
"dequal": "^2.0.3",
|
|
42
|
-
"@fougere/
|
|
43
|
-
"@fougere/
|
|
42
|
+
"@fougere/schema": "0.9.0-alpha.1",
|
|
43
|
+
"@fougere/core": "0.9.0-alpha.1"
|
|
44
44
|
},
|
|
45
45
|
"peerDependencies": {
|
|
46
46
|
"kysely": ">=0.28.17"
|
|
@@ -49,7 +49,7 @@
|
|
|
49
49
|
"@types/better-sqlite3": "^7.6.13",
|
|
50
50
|
"@types/node": "^22.0.0",
|
|
51
51
|
"kysely": "^0.28.17",
|
|
52
|
-
"@fougere/core": "0.
|
|
52
|
+
"@fougere/core": "0.9.0-alpha.1"
|
|
53
53
|
},
|
|
54
54
|
"publishConfig": {
|
|
55
55
|
"access": "public"
|
package/src/index.ts
CHANGED
|
@@ -1,14 +1,8 @@
|
|
|
1
|
-
export { createTableSQL,
|
|
2
|
-
export { onQuery
|
|
3
|
-
export
|
|
4
|
-
export type { GenerateOptions, SqlSink } from './ddl.js';
|
|
5
|
-
export { toTable, toTables, toTableName, toSnakeCase, isKeyed } from './table.js';
|
|
1
|
+
export { createTableSQL, generateSQL, autoMigrate, compiler } from './ddl.js';
|
|
2
|
+
export { onQuery } from './query.js';
|
|
3
|
+
export { toTable, toTables, toTableName, toSnakeCase } from './table.js';
|
|
6
4
|
export { orderTables } from './order.js';
|
|
7
5
|
export type {
|
|
8
|
-
TableDef,
|
|
9
|
-
ColumnDef,
|
|
10
|
-
ColumnReference,
|
|
11
|
-
RelationResolve,
|
|
12
6
|
EntityEntry,
|
|
13
7
|
FrondLike,
|
|
14
8
|
AppLike,
|
|
@@ -16,27 +10,20 @@ export type {
|
|
|
16
10
|
export {
|
|
17
11
|
columnTypeFor,
|
|
18
12
|
dialects,
|
|
19
|
-
resolveDialect,
|
|
20
|
-
sqliteDialect,
|
|
21
|
-
pgDialect,
|
|
22
|
-
mysqlDialect,
|
|
23
|
-
mssqlDialect,
|
|
24
13
|
} from './dialect.js';
|
|
25
|
-
export type { Dialect
|
|
14
|
+
export type { Dialect } from './dialect.js';
|
|
26
15
|
export type { SqlField, SqlFields } from './fields.js';
|
|
27
16
|
export { SqlStorage, createStorageFactory } from './crud.js';
|
|
28
|
-
export
|
|
29
|
-
export { codecFor, codecsOf } from './values.js';
|
|
30
|
-
export type { ValueCodec } from './values.js';
|
|
17
|
+
export { codecsOf } from './values.js';
|
|
31
18
|
// The driver this package owns is NOT here: `better-sqlite3` is native and `node:fs` is a
|
|
32
19
|
// builtin, and an index that re-exported them made the whole adapter unreachable from a
|
|
33
20
|
// runtime that has neither. It lives at `@fougere/adapter-sql/sqlite`.
|
|
34
|
-
export {
|
|
35
|
-
export type {
|
|
36
|
-
export { drift
|
|
21
|
+
export { createKyselySource } from './source.js';
|
|
22
|
+
export type { SqlSource } from './source.js';
|
|
23
|
+
export { drift } from './drift.js';
|
|
37
24
|
export type { Drift } from './drift.js';
|
|
38
|
-
export { actualState, desiredTables, delta,
|
|
25
|
+
export { actualState, desiredTables, delta, changeSQL, migrate } from './diff.js';
|
|
39
26
|
export type { SchemaState, Change } from './diff.js';
|
|
40
27
|
// The non-additive half — realised only from a step a human wrote down.
|
|
41
|
-
export { planStep, collapseChain,
|
|
42
|
-
export type { Plan,
|
|
28
|
+
export { planStep, collapseChain, applyStep } from './step.js';
|
|
29
|
+
export type { Plan, StepChange } from './step.js';
|
|
@@ -9,7 +9,7 @@ import { toTableName } from './table.js';
|
|
|
9
9
|
import type { DialectName } from './dialect.js';
|
|
10
10
|
import type { SqlSink } from './ddl.js';
|
|
11
11
|
|
|
12
|
-
export interface
|
|
12
|
+
export interface SqlSourceOptions {
|
|
13
13
|
/** Override naming for specific entities (e.g. better-auth wants singular table names). */
|
|
14
14
|
storageFactoryOptions?: StorageFactoryOptions;
|
|
15
15
|
/** What to call this storage when a query is reported. */
|
|
@@ -38,7 +38,7 @@ export type Setup = SqlSource;
|
|
|
38
38
|
export const sqlEnforces = ['unique'] as const;
|
|
39
39
|
|
|
40
40
|
/** The migration of what lives in ONE sql source, carrying its own dialect. */
|
|
41
|
-
function migrating(db: Kysely<any>, dialect: DialectName, opts:
|
|
41
|
+
function migrating(db: Kysely<any>, dialect: DialectName, opts: SqlSourceOptions) {
|
|
42
42
|
return async (view: SourceView): Promise<void | string> => {
|
|
43
43
|
const options = { dialect, tableName: opts.storageFactoryOptions?.tableName ?? toTableName };
|
|
44
44
|
await migrate(view as never, db, options);
|
|
@@ -54,10 +54,10 @@ export function sqlSink(db: Kysely<any>): SqlSink {
|
|
|
54
54
|
}
|
|
55
55
|
|
|
56
56
|
/** Wrap any Kysely dialect — Postgres, MySQL, SQL Server. */
|
|
57
|
-
export function
|
|
57
|
+
export function createKyselySource(
|
|
58
58
|
kyselyDialect: KyselyDialect,
|
|
59
59
|
dialect: DialectName,
|
|
60
|
-
opts:
|
|
60
|
+
opts: SqlSourceOptions = {},
|
|
61
61
|
): SqlSource {
|
|
62
62
|
const db = new Kysely<any>({ dialect: kyselyDialect, log: logQueries(opts.name ?? dialect) });
|
|
63
63
|
return {
|
package/src/sqlite.ts
CHANGED
|
@@ -6,22 +6,22 @@ import Database from 'better-sqlite3';
|
|
|
6
6
|
import { createStorageFactory } from './crud.js';
|
|
7
7
|
import { logQueries } from './query.js';
|
|
8
8
|
import { drift, driftReport } from './drift.js';
|
|
9
|
-
import { sqlSink, sqlEnforces, type
|
|
9
|
+
import { sqlSink, sqlEnforces, type SqlSourceOptions, type SqlSource } from './source.js';
|
|
10
10
|
import { desiredTables, migrate } from './diff.js';
|
|
11
11
|
import { toTableName } from './table.js';
|
|
12
12
|
import { Sources, type Source, type SourceConfig, type SourceView } from '@fougere/core';
|
|
13
13
|
|
|
14
|
-
export interface
|
|
14
|
+
export interface SqliteSourceOptions extends SqlSourceOptions {
|
|
15
15
|
/** Filesystem path to the database. Defaults to a project-local file. */
|
|
16
16
|
path?: string;
|
|
17
17
|
}
|
|
18
18
|
|
|
19
|
-
export interface
|
|
19
|
+
export interface SqliteSource extends SqlSource {
|
|
20
20
|
/** The raw handle, for pragmas and synchronous exec. */
|
|
21
21
|
sqlite: Database.Database;
|
|
22
22
|
}
|
|
23
23
|
|
|
24
|
-
export function
|
|
24
|
+
export function createSqliteSource(opts: SqliteSourceOptions = {}): SqliteSource {
|
|
25
25
|
const path = opts.path ?? 'fougere.db';
|
|
26
26
|
// A file-backed DB needs its directory — SQLite won't create it.
|
|
27
27
|
if (path !== ':memory:') mkdirSync(dirname(path), { recursive: true });
|
|
@@ -58,9 +58,9 @@ Sources.register('sql', (conf: SourceConfig): Source => {
|
|
|
58
58
|
throw new Error(
|
|
59
59
|
`source 'sql', dialect '${dialect}': cannot be built from a name — only 'sqlite' can, `
|
|
60
60
|
+ 'because it is the one driver this package owns. Build the Kysely dialect yourself and '
|
|
61
|
-
+ `call
|
|
61
|
+
+ `call createKyselySource(dialect, '${dialect}'), then hand it in as a source.`,
|
|
62
62
|
);
|
|
63
63
|
}
|
|
64
64
|
|
|
65
|
-
return
|
|
65
|
+
return createSqliteSource({ path: conf.path as string | undefined, name: conf.name as string | undefined });
|
|
66
66
|
});
|
package/dist/setup.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../src/setup.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,OAAO,EAAE,MAAM,EAAO,KAAK,OAAO,IAAI,aAAa,EAAE,MAAM,QAAQ,CAAC;AACpE,OAAO,KAAK,EAAE,MAAM,EAAc,MAAM,eAAe,CAAC;AACxD,OAAO,EAAE,oBAAoB,EAAE,KAAK,qBAAqB,EAAE,MAAM,WAAW,CAAC;AAK7E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAExC,MAAM,WAAW,YAAY;IAC3B,2FAA2F;IAC3F,qBAAqB,CAAC,EAAE,qBAAqB,CAAC;IAC9C,0DAA0D;IAC1D,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,4FAA4F;AAC5F,MAAM,WAAW,SAAU,SAAQ,MAAM;IACvC,OAAO,EAAE,WAAW,CAAC;IACrB,cAAc,EAAE,UAAU,CAAC,OAAO,oBAAoB,CAAC,CAAC;IACxD,+DAA+D;IAC/D,IAAI,EAAE,OAAO,CAAC;IACd;;;OAGG;IACH,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;IAChB,0FAA0F;IAC1F,UAAU,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,cAAc,EAAE,UAAU,CAAC,OAAO,oBAAoB,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;CACxG;AAED,mFAAmF;AACnF,MAAM,MAAM,KAAK,GAAG,SAAS,CAAC;AAE9B,kGAAkG;AAClG,eAAO,MAAM,WAAW,YAAI,QAAQ,CAAU,CAAC;AAa/C,0EAA0E;AAC1E,wBAAgB,OAAO,CAAC,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,OAAO,CAEhD;AAED,6DAA6D;AAC7D,wBAAgB,WAAW,CACzB,aAAa,EAAE,aAAa,EAC5B,OAAO,EAAE,WAAW,EACpB,IAAI,GAAE,YAAiB,GACtB,SAAS,CAaX"}
|
package/dist/setup.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../src/setup.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,OAAO,EAAE,MAAM,EAAE,GAAG,EAAiC,MAAM,QAAQ,CAAC;AAEpE,OAAO,EAAE,oBAAoB,EAA8B,MAAM,WAAW,CAAC;AAC7E,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACnD,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AA6BzC,kGAAkG;AAClG,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,QAAQ,CAAU,CAAC;AAE/C,+EAA+E;AAC/E,SAAS,SAAS,CAAC,EAAe,EAAE,OAAoB,EAAE,IAAkB;IAC1E,OAAO,KAAK,EAAE,IAAgB,EAA0B,EAAE;QACxD,MAAM,OAAO,GAAG,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,qBAAqB,EAAE,SAAS,IAAI,WAAW,EAAE,CAAC;QAC7F,MAAM,OAAO,CAAC,IAAa,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC;QAC1C,MAAM,KAAK,GAAG,MAAM,KAAK,CAAC,EAAE,EAAE,aAAa,CAAC,IAAa,EAAE,OAAO,CAAC,CAAC,CAAC;QAErE,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACvD,CAAC,CAAC;AACJ,CAAC;AAED,0EAA0E;AAC1E,MAAM,UAAU,OAAO,CAAC,EAAe;IACrC,OAAO,EAAE,OAAO,EAAE,CAAC,SAAiB,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC;AAC5E,CAAC;AAED,6DAA6D;AAC7D,MAAM,UAAU,WAAW,CACzB,aAA4B,EAC5B,OAAoB,EACpB,IAAI,GAAiB,EAAE;IAEvB,MAAM,EAAE,GAAG,IAAI,MAAM,CAAM,EAAE,OAAO,EAAE,aAAa,EAAE,GAAG,EAAE,UAAU,CAAC,IAAI,CAAC,IAAI,IAAI,OAAO,CAAC,EAAE,CAAC,CAAC;IAC9F,OAAO;QACL,EAAE;QACF,OAAO;QACP,cAAc,EAAE,oBAAoB,CAAC,EAAE,EAAE,IAAI,CAAC,qBAAqB,EAAE,OAAO,CAAC;QAC7E,IAAI,EAAE,OAAO,CAAC,EAAE,CAAC;QACjB,OAAO,EAAE,SAAS,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC;QACrC,KAAK,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE;QACzB,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,OAAO;QAC1B,QAAQ,EAAE,WAAW;QACrB,UAAU,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,oBAAoB,CAAC,GAAG,EAAE,IAAI,CAAC,qBAAqB,EAAE,OAAO,CAAC,CAAC,CAAC;KAC1H,CAAC;AACJ,CAAC"}
|