@zintrust/db-sqlite 0.1.19 → 0.1.27

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/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # @zintrust/db-sqlite
2
2
 
3
- SQLite database adapter package for Zintrust (uses `better-sqlite3`).
3
+ SQLite database adapter package for ZinTrust (uses `better-sqlite3`).
4
4
 
5
5
  ## Install
6
6
 
@@ -34,3 +34,7 @@ DB_CONNECTION=sqlite
34
34
 
35
35
  - https://zintrust.com/adapters
36
36
  - https://zintrust.com/database-advanced
37
+
38
+ ## License
39
+
40
+ This package and its dependencies are MIT licensed, permitting free commercial use.
@@ -0,0 +1,43 @@
1
+ {
2
+ "name": "@zintrust/db-sqlite",
3
+ "version": "0.1.15",
4
+ "buildDate": "2026-01-28T12:17:10.643Z",
5
+ "buildEnvironment": {
6
+ "node": "v20.20.0",
7
+ "platform": "linux",
8
+ "arch": "x64"
9
+ },
10
+ "git": {
11
+ "commit": "a274786",
12
+ "branch": "master"
13
+ },
14
+ "package": {
15
+ "engines": {
16
+ "node": ">=20.0.0"
17
+ },
18
+ "dependencies": [
19
+ "better-sqlite3"
20
+ ],
21
+ "peerDependencies": [
22
+ "@zintrust/core"
23
+ ]
24
+ },
25
+ "files": {
26
+ "index.d.ts": {
27
+ "size": 368,
28
+ "sha256": "f9bd69fcfec23f5fa82a83fac81b04977a0cc0724df0e2c6279893992cf10d79"
29
+ },
30
+ "index.js": {
31
+ "size": 452,
32
+ "sha256": "dff523a4decf8d55e2962fdfb972e7a2bb9ab54ac6cbdd5e409e17866f928761"
33
+ },
34
+ "register.d.ts": {
35
+ "size": 181,
36
+ "sha256": "52e96b0ceda84a2145180127d65472e66011f8152e4b5b37dfaa62f13a2f56bd"
37
+ },
38
+ "register.js": {
39
+ "size": 327,
40
+ "sha256": "6a096aeb7d7d89e92775966959eb133ba85f05153240d92f4ae746df8f57aea6"
41
+ }
42
+ }
43
+ }
package/dist/index.d.ts CHANGED
@@ -1,32 +1,8 @@
1
- export type DatabaseConfig = {
2
- driver: 'sqlite' | 'postgresql' | 'mysql' | 'sqlserver' | 'd1';
3
- database?: string;
4
- host?: string;
5
- port?: number;
6
- username?: string;
7
- password?: string;
8
- synchronize?: boolean;
9
- logging?: boolean;
10
- readHosts?: string[];
11
- };
12
- export type QueryResult = {
13
- rows: Record<string, unknown>[];
14
- rowCount: number;
15
- };
16
- export interface IDatabaseAdapter {
17
- connect(): Promise<void>;
18
- disconnect(): Promise<void>;
19
- query(sql: string, parameters: unknown[]): Promise<QueryResult>;
20
- queryOne(sql: string, parameters: unknown[]): Promise<Record<string, unknown> | null>;
21
- ping(): Promise<void>;
22
- transaction<T>(callback: (adapter: IDatabaseAdapter) => Promise<T>): Promise<T>;
23
- rawQuery<T = unknown>(sql: string, parameters?: unknown[]): Promise<T[]>;
24
- getType(): string;
25
- isConnected(): boolean;
26
- getPlaceholder(index: number): string;
27
- }
28
- declare function createSQLiteAdapter(config: DatabaseConfig): IDatabaseAdapter;
29
- export declare const SQLiteAdapter: Readonly<{
30
- create: typeof createSQLiteAdapter;
31
- }>;
32
- export default SQLiteAdapter;
1
+ export { SQLiteAdapter } from '@zintrust/core';
2
+ export type { DatabaseConfig, IDatabaseAdapter, QueryResult } from '@zintrust/core';
3
+ /**
4
+ * Package version and build metadata
5
+ * Available at runtime for debugging and health checks
6
+ */
7
+ export declare const _ZINTRUST_DB_SQLITE_VERSION = "0.1.15";
8
+ export declare const _ZINTRUST_DB_SQLITE_BUILD_DATE = "__BUILD_DATE__";
package/dist/index.js CHANGED
@@ -1,138 +1,7 @@
1
- import { ErrorFactory, FeatureFlags, Logger, QueryBuilder } from '@zintrust/core';
2
- function isMissingEsmPackage(error, packageName) {
3
- if (typeof error !== 'object' || error === null)
4
- return false;
5
- const maybe = error;
6
- const code = typeof maybe.code === 'string' ? maybe.code : '';
7
- const message = typeof maybe.message === 'string' ? maybe.message : '';
8
- if (code === 'ERR_MODULE_NOT_FOUND' && message.includes(`'${packageName}'`))
9
- return true;
10
- if (message.includes(`Cannot find package '${packageName}'`))
11
- return true;
12
- if (message.includes(`Cannot find module '${packageName}'`))
13
- return true;
14
- return false;
15
- }
16
- async function importSqliteDatabaseConstructor() {
17
- try {
18
- const mod = (await import('better-sqlite3'));
19
- const ctor = mod.default;
20
- if (typeof ctor === 'function')
21
- return ctor;
22
- // Some CJS packages may not present a `default` export under certain loaders.
23
- return mod;
24
- }
25
- catch (error) {
26
- if (isMissingEsmPackage(error, 'better-sqlite3')) {
27
- throw ErrorFactory.createConfigError("SQLite adapter requires the 'better-sqlite3' package (run `zin add db:sqlite` or `zin plugin install db:sqlite`).");
28
- }
29
- throw ErrorFactory.createTryCatchError('Failed to load SQLite driver', { cause: error });
30
- }
31
- }
32
- function normalizeFilename(database) {
33
- const value = (database ?? '').trim();
34
- return value.length > 0 ? value : ':memory:';
35
- }
36
- function isSelectQuery(sql) {
37
- return sql.trimStart().toLowerCase().startsWith('select');
38
- }
39
- function requireDb(db) {
40
- if (db === null)
41
- throw ErrorFactory.createConnectionError('Database not connected');
42
- return db;
43
- }
44
- function executeQuery(db, sql, parameters) {
45
- const start = performance.now();
46
- const stmt = db.prepare(sql);
47
- if (isSelectQuery(sql)) {
48
- const rows = stmt.all(parameters);
49
- Logger.debug('SQLite query executed', { durationMs: performance.now() - start, sql });
50
- return { rows, rowCount: rows.length };
51
- }
52
- const info = stmt.run(parameters);
53
- Logger.debug('SQLite query executed', { durationMs: performance.now() - start, sql });
54
- return { rows: [], rowCount: info.changes };
55
- }
56
- function executeRawQuery(db, sql, parameters) {
57
- const stmt = db.prepare(sql);
58
- if (isSelectQuery(sql))
59
- return stmt.all(parameters);
60
- stmt.run(parameters);
61
- return [];
62
- }
63
- async function connectSQLite(state) {
64
- if (state.db !== null)
65
- return;
66
- const filename = normalizeFilename(state.config.database);
67
- const SqliteDatabaseCtor = await importSqliteDatabaseConstructor();
68
- state.db = new SqliteDatabaseCtor(filename);
69
- state.db.pragma('journal_mode = WAL');
70
- Logger.info(`✓ SQLite connected (${filename})`);
71
- }
72
- async function disconnectSQLite(state) {
73
- if (state.db === null)
74
- return;
75
- state.db.close();
76
- state.db = null;
77
- Logger.info('✓ SQLite disconnected');
78
- }
79
- async function querySQLite(state, sql, parameters) {
80
- const currentDb = requireDb(state.db);
81
- try {
82
- return executeQuery(currentDb, sql, parameters);
83
- }
84
- catch (error) {
85
- throw ErrorFactory.createTryCatchError('Query failed', { sql, parameters, cause: error });
86
- }
87
- }
88
- async function rawQuerySQLite(state, sql, parameters) {
89
- if (!FeatureFlags.isRawQueryEnabled()) {
90
- throw ErrorFactory.createConfigError('Raw SQL queries are disabled');
91
- }
92
- const currentDb = requireDb(state.db);
93
- Logger.warn(`Raw SQL Query executed: ${sql}`);
94
- try {
95
- return executeRawQuery(currentDb, sql, parameters);
96
- }
97
- catch (error) {
98
- throw ErrorFactory.createTryCatchError('Raw query failed', { sql, parameters, cause: error });
99
- }
100
- }
101
- async function transactionSQLite(state, adapter, callback) {
102
- requireDb(state.db);
103
- await adapter.query('BEGIN', []);
104
- try {
105
- const result = await callback(adapter);
106
- await adapter.query('COMMIT', []);
107
- return result;
108
- }
109
- catch (error) {
110
- await adapter.query('ROLLBACK', []);
111
- throw ErrorFactory.createTryCatchError('Transaction failed', { cause: error });
112
- }
113
- }
114
- function createSQLiteAdapter(config) {
115
- const state = { db: null, config };
116
- const adapter = {
117
- connect: async () => connectSQLite(state),
118
- disconnect: async () => disconnectSQLite(state),
119
- query: async (sql, parameters = []) => querySQLite(state, sql, parameters),
120
- queryOne: async (sql, parameters = []) => {
121
- const result = await adapter.query(sql, parameters);
122
- return result.rows[0] ?? null;
123
- },
124
- ping: async () => {
125
- await adapter.query(QueryBuilder.create('').select('1').toSQL(), []);
126
- },
127
- transaction: async (callback) => transactionSQLite(state, adapter, callback),
128
- rawQuery: async (sql, parameters) => rawQuerySQLite(state, sql, parameters ?? []),
129
- getType: () => 'sqlite',
130
- isConnected: () => Boolean(state.db),
131
- getPlaceholder: (_index) => '?',
132
- };
133
- return adapter;
134
- }
135
- export const SQLiteAdapter = Object.freeze({
136
- create: createSQLiteAdapter,
137
- });
138
- export default SQLiteAdapter;
1
+ export { SQLiteAdapter } from '@zintrust/core';
2
+ /**
3
+ * Package version and build metadata
4
+ * Available at runtime for debugging and health checks
5
+ */
6
+ export const _ZINTRUST_DB_SQLITE_VERSION = '0.1.15';
7
+ export const _ZINTRUST_DB_SQLITE_BUILD_DATE = '__BUILD_DATE__';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zintrust/db-sqlite",
3
- "version": "0.1.19",
3
+ "version": "0.1.27",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -22,7 +22,7 @@
22
22
  "node": ">=20.0.0"
23
23
  },
24
24
  "peerDependencies": {
25
- "@zintrust/core": "^0.1.19"
25
+ "@zintrust/core": "^0.1.27"
26
26
  },
27
27
  "publishConfig": {
28
28
  "access": "public"