@nodefony/drizzle 10.0.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/LICENSE +544 -0
- package/README.md +162 -0
- package/dist/_virtual/_@oxc-project_runtime@0.148.0/helpers/esm/decorate.js +9 -0
- package/dist/_virtual/_@oxc-project_runtime@0.148.0/helpers/esm/decorateMetadata.js +6 -0
- package/dist/index.js +105 -0
- package/dist/nodefony/command/migrateShared.js +247 -0
- package/dist/nodefony/command/orm-generate.js +356 -0
- package/dist/nodefony/command/orm-migrate-baseline.js +208 -0
- package/dist/nodefony/command/orm-migrate-repair.js +114 -0
- package/dist/nodefony/command/orm-migrate-status.js +67 -0
- package/dist/nodefony/command/orm-migrate.js +141 -0
- package/dist/nodefony/command/orm-reset.js +166 -0
- package/dist/nodefony/config/config.js +107 -0
- package/dist/nodefony/config/defineModuleConfig.js +63 -0
- package/dist/nodefony/entity/auditEventEntity.js +93 -0
- package/dist/nodefony/entity/colKit.js +260 -0
- package/dist/nodefony/entity/idempotencyEntity.js +74 -0
- package/dist/nodefony/entity/sessionEntity.js +75 -0
- package/dist/nodefony/entity/tokenEntity.js +198 -0
- package/dist/nodefony/entity/totpSecretEntity.js +98 -0
- package/dist/nodefony/entity/userTable.js +141 -0
- package/dist/nodefony/entity/webAuthnCredentialEntity.js +114 -0
- package/dist/nodefony/entity/webhookEndpointEntity.js +106 -0
- package/dist/nodefony/interfaces/IDrizzleConfig.js +1 -0
- package/dist/nodefony/interfaces/index.js +1 -0
- package/dist/nodefony/migrations-schema/mysql.js +48 -0
- package/dist/nodefony/migrations-schema/postgres.js +48 -0
- package/dist/nodefony/migrations-schema/sqlite.js +48 -0
- package/dist/nodefony/registerStores.js +218 -0
- package/dist/nodefony/service/DrizzleService.js +282 -0
- package/dist/nodefony/src/DrizzleAuditStore.js +203 -0
- package/dist/nodefony/src/DrizzleIdempotencyStore.js +278 -0
- package/dist/nodefony/src/DrizzleTokenStore.js +244 -0
- package/dist/nodefony/src/DrizzleTotpSecretStore.js +151 -0
- package/dist/nodefony/src/DrizzleUserRepository.js +217 -0
- package/dist/nodefony/src/DrizzleWebAuthnCredentialStore.js +159 -0
- package/dist/nodefony/src/DrizzleWebhookStore.js +169 -0
- package/dist/nodefony/src/SessionStorage.js +259 -0
- package/dist/nodefony/src/connectorTarget.js +59 -0
- package/dist/nodefony/src/likeSql.js +50 -0
- package/dist/nodefony/src/migrator/DrizzleMigrator.js +775 -0
- package/dist/nodefony/src/migrator/adopt.js +553 -0
- package/dist/nodefony/src/migrator/appSchema.js +414 -0
- package/dist/nodefony/src/migrator/catalog.js +76 -0
- package/dist/nodefony/src/migrator/destructive.js +213 -0
- package/dist/nodefony/src/migrator/divergence.js +84 -0
- package/dist/nodefony/src/migrator/drivers/index.js +39 -0
- package/dist/nodefony/src/migrator/drivers/mysqlDriver.js +147 -0
- package/dist/nodefony/src/migrator/drivers/postgresDriver.js +151 -0
- package/dist/nodefony/src/migrator/drivers/sqliteDriver.js +121 -0
- package/dist/nodefony/src/migrator/explain.js +565 -0
- package/dist/nodefony/src/migrator/hash.js +47 -0
- package/dist/nodefony/src/migrator/history.js +219 -0
- package/dist/nodefony/src/migrator/index.js +16 -0
- package/dist/nodefony/src/migrator/kit.js +296 -0
- package/dist/nodefony/src/migrator/name.js +68 -0
- package/dist/nodefony/src/migrator/paths.js +88 -0
- package/dist/nodefony/src/migrator/refusals.js +143 -0
- package/dist/nodefony/src/migrator/resolve.js +281 -0
- package/dist/nodefony/src/migrator/schemaDiff.js +86 -0
- package/dist/nodefony/src/migrator/sources.js +419 -0
- package/dist/nodefony/src/migrator/status.js +231 -0
- package/dist/nodefony/src/migrator/types.js +91 -0
- package/dist/nodefony/src/orm-core/DrizzleOrm.js +1154 -0
- package/dist/nodefony/src/orm-core/DrizzleRepository.js +610 -0
- package/dist/nodefony/src/orm-core/DrizzleTransaction.js +106 -0
- package/dist/nodefony/src/orm-core/index.js +4 -0
- package/dist/nodefony/src/queryKit.js +318 -0
- package/dist/nodefony/src/safeTarget.js +55 -0
- package/dist/types/index.d.ts +76 -0
- package/dist/types/nodefony/command/migrateShared.d.ts +137 -0
- package/dist/types/nodefony/command/orm-generate.d.ts +53 -0
- package/dist/types/nodefony/command/orm-migrate-baseline.d.ts +87 -0
- package/dist/types/nodefony/command/orm-migrate-repair.d.ts +66 -0
- package/dist/types/nodefony/command/orm-migrate-status.d.ts +38 -0
- package/dist/types/nodefony/command/orm-migrate.d.ts +65 -0
- package/dist/types/nodefony/command/orm-reset.d.ts +55 -0
- package/dist/types/nodefony/config/config.d.ts +110 -0
- package/dist/types/nodefony/config/defineModuleConfig.d.ts +24 -0
- package/dist/types/nodefony/entity/auditEventEntity.d.ts +56 -0
- package/dist/types/nodefony/entity/colKit.d.ts +130 -0
- package/dist/types/nodefony/entity/idempotencyEntity.d.ts +52 -0
- package/dist/types/nodefony/entity/sessionEntity.d.ts +50 -0
- package/dist/types/nodefony/entity/tokenEntity.d.ts +53 -0
- package/dist/types/nodefony/entity/totpSecretEntity.d.ts +61 -0
- package/dist/types/nodefony/entity/userTable.d.ts +65 -0
- package/dist/types/nodefony/entity/webAuthnCredentialEntity.d.ts +57 -0
- package/dist/types/nodefony/entity/webhookEndpointEntity.d.ts +58 -0
- package/dist/types/nodefony/interfaces/IDrizzleConfig.d.ts +17 -0
- package/dist/types/nodefony/interfaces/index.d.ts +1 -0
- package/dist/types/nodefony/migrations-schema/mysql.d.ts +9 -0
- package/dist/types/nodefony/migrations-schema/postgres.d.ts +9 -0
- package/dist/types/nodefony/migrations-schema/sqlite.d.ts +9 -0
- package/dist/types/nodefony/registerStores.d.ts +52 -0
- package/dist/types/nodefony/service/DrizzleService.d.ts +27 -0
- package/dist/types/nodefony/src/DrizzleAuditStore.d.ts +65 -0
- package/dist/types/nodefony/src/DrizzleIdempotencyStore.d.ts +129 -0
- package/dist/types/nodefony/src/DrizzleTokenStore.d.ts +146 -0
- package/dist/types/nodefony/src/DrizzleTotpSecretStore.d.ts +60 -0
- package/dist/types/nodefony/src/DrizzleUserRepository.d.ts +67 -0
- package/dist/types/nodefony/src/DrizzleWebAuthnCredentialStore.d.ts +62 -0
- package/dist/types/nodefony/src/DrizzleWebhookStore.d.ts +79 -0
- package/dist/types/nodefony/src/SessionStorage.d.ts +72 -0
- package/dist/types/nodefony/src/connectorTarget.d.ts +48 -0
- package/dist/types/nodefony/src/likeSql.d.ts +29 -0
- package/dist/types/nodefony/src/migrator/DrizzleMigrator.d.ts +94 -0
- package/dist/types/nodefony/src/migrator/adopt.d.ts +280 -0
- package/dist/types/nodefony/src/migrator/appSchema.d.ts +223 -0
- package/dist/types/nodefony/src/migrator/catalog.d.ts +100 -0
- package/dist/types/nodefony/src/migrator/destructive.d.ts +123 -0
- package/dist/types/nodefony/src/migrator/divergence.d.ts +61 -0
- package/dist/types/nodefony/src/migrator/drivers/index.d.ts +26 -0
- package/dist/types/nodefony/src/migrator/drivers/mysqlDriver.d.ts +83 -0
- package/dist/types/nodefony/src/migrator/drivers/postgresDriver.d.ts +81 -0
- package/dist/types/nodefony/src/migrator/drivers/sqliteDriver.d.ts +53 -0
- package/dist/types/nodefony/src/migrator/explain.d.ts +424 -0
- package/dist/types/nodefony/src/migrator/hash.d.ts +39 -0
- package/dist/types/nodefony/src/migrator/history.d.ts +139 -0
- package/dist/types/nodefony/src/migrator/index.d.ts +20 -0
- package/dist/types/nodefony/src/migrator/kit.d.ts +141 -0
- package/dist/types/nodefony/src/migrator/name.d.ts +52 -0
- package/dist/types/nodefony/src/migrator/paths.d.ts +54 -0
- package/dist/types/nodefony/src/migrator/refusals.d.ts +170 -0
- package/dist/types/nodefony/src/migrator/resolve.d.ts +201 -0
- package/dist/types/nodefony/src/migrator/schemaDiff.d.ts +112 -0
- package/dist/types/nodefony/src/migrator/sources.d.ts +119 -0
- package/dist/types/nodefony/src/migrator/status.d.ts +132 -0
- package/dist/types/nodefony/src/migrator/types.d.ts +273 -0
- package/dist/types/nodefony/src/orm-core/DrizzleOrm.d.ts +241 -0
- package/dist/types/nodefony/src/orm-core/DrizzleRepository.d.ts +98 -0
- package/dist/types/nodefony/src/orm-core/DrizzleTransaction.d.ts +71 -0
- package/dist/types/nodefony/src/orm-core/index.d.ts +11 -0
- package/dist/types/nodefony/src/queryKit.d.ts +136 -0
- package/dist/types/nodefony/src/safeTarget.d.ts +42 -0
- package/docs/index.md +954 -0
- package/docs/migrations.md +691 -0
- package/migrations/mysql/0000_framework_init.sql +137 -0
- package/migrations/mysql/meta/_journal.json +13 -0
- package/migrations/postgres/0000_framework_init.sql +128 -0
- package/migrations/postgres/meta/_journal.json +13 -0
- package/migrations/sqlite/0000_framework_init.sql +127 -0
- package/migrations/sqlite/meta/_journal.json +13 -0
- package/package.json +126 -0
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
import { HISTORY_TABLE } from "../types.js";
|
|
2
|
+
import { schemaReader } from "../catalog.js";
|
|
3
|
+
//#region nodefony/src/migrator/drivers/sqliteDriver.ts
|
|
4
|
+
/**
|
|
5
|
+
* Pilote SQLite de l'applicateur — connexion `better-sqlite3` dédiée.
|
|
6
|
+
*
|
|
7
|
+
* **Pas de verrou explicite** : SQLite est à écrivain unique par nature. Ce
|
|
8
|
+
* n'est pas un manque à combler, c'est la description exacte de la situation —
|
|
9
|
+
* la sérialisation est faite par le moteur, et une table de verrou maison ne
|
|
10
|
+
* ferait qu'ajouter une pièce à déverrouiller à la main le jour où un process
|
|
11
|
+
* meurt.
|
|
12
|
+
*/
|
|
13
|
+
var SqliteMigrationDriver = class {
|
|
14
|
+
dialect = "sqlite";
|
|
15
|
+
transactionalDdl = true;
|
|
16
|
+
#database = null;
|
|
17
|
+
#filename;
|
|
18
|
+
/**
|
|
19
|
+
* @param filename - fichier de la base, ou `:memory:`.
|
|
20
|
+
*/
|
|
21
|
+
constructor(filename) {
|
|
22
|
+
this.#filename = filename;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* La base, ou l'erreur qui dit ce qu'il manque.
|
|
26
|
+
*
|
|
27
|
+
* Un accès avant `connect()` est une faute de programmation, pas un cas
|
|
28
|
+
* d'exécution : le message le dit plutôt que de laisser tomber un
|
|
29
|
+
* `Cannot read properties of null` à trois appels de là.
|
|
30
|
+
*/
|
|
31
|
+
get #db() {
|
|
32
|
+
if (!this.#database) throw new Error("SqliteMigrationDriver : `connect()` n'a pas été appelé — le pilote `better-sqlite3` est chargé à la demande, comme `pg` et `mysql2`.");
|
|
33
|
+
return this.#database;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Ouvre la base, en chargeant le pilote à la demande.
|
|
37
|
+
*
|
|
38
|
+
* Même patron que `PostgresMigrationDriver.connect()` : `openMigrationDriver`
|
|
39
|
+
* enchaîne `new` puis `await connect()` pour les trois dialectes, et aucune
|
|
40
|
+
* application n'embarque un pilote qu'elle n'ouvre pas.
|
|
41
|
+
*
|
|
42
|
+
* @throws Error si le pilote `better-sqlite3` n'est pas installé.
|
|
43
|
+
*/
|
|
44
|
+
async connect() {
|
|
45
|
+
let Sqlite;
|
|
46
|
+
try {
|
|
47
|
+
const ns = await import("better-sqlite3");
|
|
48
|
+
const resolved = ns.default ?? ns;
|
|
49
|
+
if (typeof resolved !== "function") throw new Error("`better-sqlite3` did not expose a constructor");
|
|
50
|
+
Sqlite = resolved;
|
|
51
|
+
} catch (e) {
|
|
52
|
+
throw new Error(`Le dialecte sqlite exige le pilote optionnel \`better-sqlite3\` (\`npm i better-sqlite3\`). ${e.message}`, { cause: e });
|
|
53
|
+
}
|
|
54
|
+
const db = new Sqlite(this.#filename);
|
|
55
|
+
if (this.#filename !== ":memory:") {
|
|
56
|
+
db.pragma("journal_mode = WAL");
|
|
57
|
+
db.pragma("synchronous = NORMAL");
|
|
58
|
+
}
|
|
59
|
+
this.#database = db;
|
|
60
|
+
}
|
|
61
|
+
/** @inheritdoc */
|
|
62
|
+
exec(sql) {
|
|
63
|
+
this.#db.exec(sql);
|
|
64
|
+
return Promise.resolve();
|
|
65
|
+
}
|
|
66
|
+
/** @inheritdoc */
|
|
67
|
+
query(sql, params = []) {
|
|
68
|
+
const statement = this.#db.prepare(sql);
|
|
69
|
+
if (!statement.reader) {
|
|
70
|
+
statement.run(...params);
|
|
71
|
+
return Promise.resolve([]);
|
|
72
|
+
}
|
|
73
|
+
return Promise.resolve(statement.all(...params));
|
|
74
|
+
}
|
|
75
|
+
/** Lecture du catalogue — implémentation PARTAGÉE avec l'ORM. */
|
|
76
|
+
#catalog = schemaReader("sqlite", (sql, params) => this.query(sql, params));
|
|
77
|
+
/** @inheritdoc */
|
|
78
|
+
sameColumnName(declared, actual) {
|
|
79
|
+
return this.#catalog.sameColumnName(declared, actual);
|
|
80
|
+
}
|
|
81
|
+
/** @inheritdoc */
|
|
82
|
+
tableExists(table) {
|
|
83
|
+
return this.#catalog.tableExists(table);
|
|
84
|
+
}
|
|
85
|
+
/** @inheritdoc */
|
|
86
|
+
columnsOf(table) {
|
|
87
|
+
return this.#catalog.columnsOf(table);
|
|
88
|
+
}
|
|
89
|
+
/** @inheritdoc */
|
|
90
|
+
begin() {
|
|
91
|
+
return this.exec("BEGIN IMMEDIATE");
|
|
92
|
+
}
|
|
93
|
+
/** @inheritdoc */
|
|
94
|
+
commit() {
|
|
95
|
+
return this.exec("COMMIT");
|
|
96
|
+
}
|
|
97
|
+
/** @inheritdoc */
|
|
98
|
+
rollback() {
|
|
99
|
+
return this.exec("ROLLBACK");
|
|
100
|
+
}
|
|
101
|
+
/** @inheritdoc */
|
|
102
|
+
lock() {
|
|
103
|
+
return Promise.resolve();
|
|
104
|
+
}
|
|
105
|
+
/** @inheritdoc */
|
|
106
|
+
unlock() {
|
|
107
|
+
return Promise.resolve();
|
|
108
|
+
}
|
|
109
|
+
/** @inheritdoc */
|
|
110
|
+
close() {
|
|
111
|
+
this.#database?.close();
|
|
112
|
+
this.#database = null;
|
|
113
|
+
return Promise.resolve();
|
|
114
|
+
}
|
|
115
|
+
/** Table d'historique servie par ce pilote — pour les diagnostics. */
|
|
116
|
+
get historyTable() {
|
|
117
|
+
return HISTORY_TABLE;
|
|
118
|
+
}
|
|
119
|
+
};
|
|
120
|
+
//#endregion
|
|
121
|
+
export { SqliteMigrationDriver };
|