nanodb-orm 0.0.3 → 0.0.5

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 (87) hide show
  1. package/README.md +506 -333
  2. package/dist/cli.d.ts +96 -0
  3. package/dist/cli.d.ts.map +1 -0
  4. package/dist/cli.js +348 -0
  5. package/dist/cli.js.map +1 -0
  6. package/dist/constants/index.d.ts +7 -54
  7. package/dist/constants/index.d.ts.map +1 -1
  8. package/dist/constants/index.js +9 -61
  9. package/dist/constants/index.js.map +1 -1
  10. package/dist/core/config.d.ts +3 -13
  11. package/dist/core/config.d.ts.map +1 -1
  12. package/dist/core/config.js +5 -27
  13. package/dist/core/config.js.map +1 -1
  14. package/dist/core/connection.d.ts +16 -31
  15. package/dist/core/connection.d.ts.map +1 -1
  16. package/dist/core/connection.js +42 -78
  17. package/dist/core/connection.js.map +1 -1
  18. package/dist/core/index.d.ts +2 -3
  19. package/dist/core/index.d.ts.map +1 -1
  20. package/dist/core/index.js +3 -18
  21. package/dist/core/index.js.map +1 -1
  22. package/dist/index.d.ts +235 -12
  23. package/dist/index.d.ts.map +1 -1
  24. package/dist/index.js +252 -35
  25. package/dist/index.js.map +1 -1
  26. package/dist/init.d.ts +127 -18
  27. package/dist/init.d.ts.map +1 -1
  28. package/dist/init.js +280 -47
  29. package/dist/init.js.map +1 -1
  30. package/dist/jest.setup.d.ts +4 -0
  31. package/dist/jest.setup.d.ts.map +1 -0
  32. package/dist/jest.setup.js +40 -0
  33. package/dist/jest.setup.js.map +1 -0
  34. package/dist/types/errors.d.ts +30 -12
  35. package/dist/types/errors.d.ts.map +1 -1
  36. package/dist/types/errors.js +98 -23
  37. package/dist/types/errors.js.map +1 -1
  38. package/dist/types/index.d.ts +268 -4
  39. package/dist/types/index.d.ts.map +1 -1
  40. package/dist/types/index.js +5 -4
  41. package/dist/types/index.js.map +1 -1
  42. package/dist/utils/error-handler.d.ts +6 -31
  43. package/dist/utils/error-handler.d.ts.map +1 -1
  44. package/dist/utils/error-handler.js +24 -81
  45. package/dist/utils/error-handler.js.map +1 -1
  46. package/dist/utils/index.d.ts +1 -3
  47. package/dist/utils/index.d.ts.map +1 -1
  48. package/dist/utils/index.js +4 -6
  49. package/dist/utils/index.js.map +1 -1
  50. package/dist/utils/logger.d.ts +6 -25
  51. package/dist/utils/logger.d.ts.map +1 -1
  52. package/dist/utils/logger.js +20 -38
  53. package/dist/utils/logger.js.map +1 -1
  54. package/dist/utils/migrations.d.ts +16 -90
  55. package/dist/utils/migrations.d.ts.map +1 -1
  56. package/dist/utils/migrations.js +220 -422
  57. package/dist/utils/migrations.js.map +1 -1
  58. package/dist/utils/schema-introspection.d.ts +30 -169
  59. package/dist/utils/schema-introspection.d.ts.map +1 -1
  60. package/dist/utils/schema-introspection.js +125 -462
  61. package/dist/utils/schema-introspection.js.map +1 -1
  62. package/dist/utils/seeds.d.ts +15 -48
  63. package/dist/utils/seeds.d.ts.map +1 -1
  64. package/dist/utils/seeds.js +108 -186
  65. package/dist/utils/seeds.js.map +1 -1
  66. package/dist/utils/sync.d.ts +16 -41
  67. package/dist/utils/sync.d.ts.map +1 -1
  68. package/dist/utils/sync.js +78 -172
  69. package/dist/utils/sync.js.map +1 -1
  70. package/dist/utils/transactions.d.ts +61 -44
  71. package/dist/utils/transactions.d.ts.map +1 -1
  72. package/dist/utils/transactions.js +103 -137
  73. package/dist/utils/transactions.js.map +1 -1
  74. package/package.json +29 -10
  75. package/dist/example.d.ts +0 -67
  76. package/dist/example.d.ts.map +0 -1
  77. package/dist/example.js +0 -86
  78. package/dist/example.js.map +0 -1
  79. package/dist/types/database.d.ts +0 -74
  80. package/dist/types/database.d.ts.map +0 -1
  81. package/dist/types/database.js +0 -6
  82. package/dist/types/database.js.map +0 -1
  83. package/dist/types/types.d.ts +0 -30
  84. package/dist/types/types.d.ts.map +0 -1
  85. package/dist/types/types.js +0 -6
  86. package/dist/types/types.js.map +0 -1
  87. package/llm.txt +0 -336
@@ -1,40 +1,18 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getDatabaseConfig = getDatabaseConfig;
4
- exports.validateDatabaseConfig = validateDatabaseConfig;
5
4
  const dotenv_1 = require("dotenv");
6
- const errors_1 = require("../types/errors");
7
- // Load environment variables
8
5
  (0, dotenv_1.config)({ path: '.env' });
9
6
  /**
10
- * Get database configuration from environment variables
7
+ * Get Turso database configuration from environment variables.
8
+ * Throws if required variables are missing.
11
9
  */
12
10
  function getDatabaseConfig() {
13
11
  const connectionUrl = process.env.TURSO_CONNECTION_URL;
14
12
  const authToken = process.env.TURSO_AUTH_TOKEN;
15
- if (!connectionUrl) {
16
- throw new errors_1.DatabaseError('TURSO_CONNECTION_URL environment variable is required', 'config');
17
- }
18
- if (!authToken) {
19
- throw new errors_1.DatabaseError('TURSO_AUTH_TOKEN environment variable is required', 'config');
20
- }
21
- return {
22
- connectionUrl,
23
- authToken,
24
- syncInterval: 60, // Default sync interval in seconds
25
- };
26
- }
27
- /**
28
- * Validate database configuration
29
- */
30
- function validateDatabaseConfig() {
31
- try {
32
- getDatabaseConfig();
33
- return true;
34
- }
35
- catch (error) {
36
- console.error('Database configuration validation failed:', error);
37
- return false;
13
+ if (!connectionUrl || !authToken) {
14
+ throw new Error('Missing TURSO_CONNECTION_URL or TURSO_AUTH_TOKEN');
38
15
  }
16
+ return { connectionUrl, authToken };
39
17
  }
40
18
  //# sourceMappingURL=config.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../core/config.ts"],"names":[],"mappings":";;AAkBA,8CAiBC;AAKD,wDAQC;AAhDD,mCAAgC;AAChC,4CAAgD;AAEhD,6BAA6B;AAC7B,IAAA,eAAM,EAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;AAWzB;;GAEG;AACH,SAAgB,iBAAiB;IAC/B,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC;IACvD,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC;IAE/C,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,MAAM,IAAI,sBAAa,CAAC,uDAAuD,EAAE,QAAQ,CAAC,CAAC;IAC7F,CAAC;IAED,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,IAAI,sBAAa,CAAC,mDAAmD,EAAE,QAAQ,CAAC,CAAC;IACzF,CAAC;IAED,OAAO;QACL,aAAa;QACb,SAAS;QACT,YAAY,EAAE,EAAE,EAAE,mCAAmC;KACtD,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAgB,sBAAsB;IACpC,IAAI,CAAC;QACH,iBAAiB,EAAE,CAAC;QACpB,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,2CAA2C,EAAE,KAAK,CAAC,CAAC;QAClE,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../core/config.ts"],"names":[],"mappings":";;AASA,8CASC;AAlBD,mCAAgC;AAGhC,IAAA,eAAM,EAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;AAEzB;;;GAGG;AACH,SAAgB,iBAAiB;IAC/B,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC;IACvD,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC;IAE/C,IAAI,CAAC,aAAa,IAAI,CAAC,SAAS,EAAE,CAAC;QACjC,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;IACtE,CAAC;IAED,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,CAAC;AACtC,CAAC"}
@@ -1,41 +1,26 @@
1
1
  import { drizzle } from 'drizzle-orm/libsql';
2
+ type DrizzleInstance = ReturnType<typeof drizzle>;
2
3
  /**
3
- * Database connection management
4
- * Handles the creation and configuration of database connections
4
+ * Thread-safe singleton database connection manager.
5
+ * Supports both Turso (remote) and local SQLite databases.
6
+ *
7
+ * Environment variables:
8
+ * - `TURSO_CONNECTION_URL` + `TURSO_AUTH_TOKEN`: Use Turso remote database
9
+ * - `FORCE_LOCAL_DB=true`: Force local SQLite mode
10
+ * - `DATABASE_PATH`: Custom path for local database (default: database.db)
11
+ * - `NODE_ENV=test`: Use isolated test database
5
12
  */
6
13
  export declare class DatabaseConnection {
7
14
  private static instance;
8
- private static isCreating;
9
- private static creationPromise;
10
- /**
11
- * Get or create the database connection instance (thread-safe)
12
- */
13
- static getInstance(): Promise<ReturnType<typeof drizzle>>;
14
- /**
15
- * Synchronous getter for backward compatibility (deprecated)
16
- * @deprecated Use getInstance() instead for thread safety
17
- */
18
- static getInstanceSync(): import("drizzle-orm/libsql").LibSQLDatabase<Record<string, unknown>> & {
19
- $client: import("@libsql/client").Client;
20
- };
21
- /**
22
- * Create a new database connection asynchronously
23
- */
24
- private static createConnectionAsync;
25
- /**
26
- * Create a new database connection
27
- */
15
+ private static pending;
16
+ /** Get the database connection instance (creates if needed) */
17
+ static getInstance(): Promise<DrizzleInstance>;
18
+ /** Create a new database connection */
28
19
  private static createConnection;
29
- /**
30
- * Reset the connection instance (useful for testing)
31
- */
20
+ /** Reset the connection (for testing) */
32
21
  static reset(): void;
33
- /**
34
- * Check if connection is established
35
- */
22
+ /** Check if a connection exists */
36
23
  static isConnected(): boolean;
37
24
  }
38
- export declare const db: import("drizzle-orm/libsql").LibSQLDatabase<Record<string, unknown>> & {
39
- $client: import("@libsql/client").Client;
40
- };
25
+ export {};
41
26
  //# sourceMappingURL=connection.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"connection.d.ts","sourceRoot":"","sources":["../../core/connection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAK7C;;;GAGG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAA2C;IAClE,OAAO,CAAC,MAAM,CAAC,UAAU,CAAS;IAClC,OAAO,CAAC,MAAM,CAAC,eAAe,CAAoD;IAElF;;OAEG;WACU,WAAW,IAAI,OAAO,CAAC,UAAU,CAAC,OAAO,OAAO,CAAC,CAAC;IAqB/D;;;OAGG;IACH,MAAM,CAAC,eAAe;;;IAOtB;;OAEG;mBACkB,qBAAqB;IAI1C;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,gBAAgB;IAmC/B;;OAEG;IACH,MAAM,CAAC,KAAK;IAMZ;;OAEG;IACH,MAAM,CAAC,WAAW,IAAI,OAAO;CAG9B;AAGD,eAAO,MAAM,EAAE;;CAAuC,CAAC"}
1
+ {"version":3,"file":"connection.d.ts","sourceRoot":"","sources":["../../core/connection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAI7C,KAAK,eAAe,GAAG,UAAU,CAAC,OAAO,OAAO,CAAC,CAAC;AAElD;;;;;;;;;GASG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAgC;IACvD,OAAO,CAAC,MAAM,CAAC,OAAO,CAAyC;IAE/D,+DAA+D;WAClD,WAAW,IAAI,OAAO,CAAC,eAAe,CAAC;IAcpD,uCAAuC;mBAClB,gBAAgB;IA4BrC,yCAAyC;IACzC,MAAM,CAAC,KAAK,IAAI,IAAI;IAKpB,mCAAmC;IACnC,MAAM,CAAC,WAAW,IAAI,OAAO;CAG9B"}
@@ -1,109 +1,73 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.db = exports.DatabaseConnection = void 0;
3
+ exports.DatabaseConnection = void 0;
4
4
  const libsql_1 = require("drizzle-orm/libsql");
5
5
  const client_1 = require("@libsql/client");
6
6
  const config_1 = require("./config");
7
- const errors_1 = require("../types/errors");
8
7
  /**
9
- * Database connection management
10
- * Handles the creation and configuration of database connections
8
+ * Thread-safe singleton database connection manager.
9
+ * Supports both Turso (remote) and local SQLite databases.
10
+ *
11
+ * Environment variables:
12
+ * - `TURSO_CONNECTION_URL` + `TURSO_AUTH_TOKEN`: Use Turso remote database
13
+ * - `FORCE_LOCAL_DB=true`: Force local SQLite mode
14
+ * - `DATABASE_PATH`: Custom path for local database (default: database.db)
15
+ * - `NODE_ENV=test`: Use isolated test database
11
16
  */
12
17
  class DatabaseConnection {
13
- /**
14
- * Get or create the database connection instance (thread-safe)
15
- */
18
+ /** Get the database connection instance (creates if needed) */
16
19
  static async getInstance() {
17
- if (this.instance) {
20
+ if (this.instance)
18
21
  return this.instance;
19
- }
20
- if (this.isCreating && this.creationPromise) {
21
- return this.creationPromise;
22
- }
23
- this.isCreating = true;
24
- this.creationPromise = this.createConnectionAsync();
22
+ if (this.pending)
23
+ return this.pending;
24
+ this.pending = this.createConnection();
25
25
  try {
26
- this.instance = await this.creationPromise;
26
+ this.instance = await this.pending;
27
27
  return this.instance;
28
28
  }
29
29
  finally {
30
- this.isCreating = false;
31
- this.creationPromise = null;
30
+ this.pending = null;
32
31
  }
33
32
  }
34
- /**
35
- * Synchronous getter for backward compatibility (deprecated)
36
- * @deprecated Use getInstance() instead for thread safety
37
- */
38
- static getInstanceSync() {
39
- if (!this.instance) {
40
- this.instance = this.createConnection();
33
+ /** Create a new database connection */
34
+ static async createConnection() {
35
+ // Test environment: use isolated local database
36
+ if (process.env.NODE_ENV === 'test') {
37
+ const dbName = process.env.JEST_WORKER_ID
38
+ ? `test-${process.env.JEST_WORKER_ID}.db`
39
+ : (process.env.DATABASE_PATH ?? 'test.db');
40
+ return (0, libsql_1.drizzle)((0, client_1.createClient)({ url: `file:${dbName}` }));
41
41
  }
42
- return this.instance;
43
- }
44
- /**
45
- * Create a new database connection asynchronously
46
- */
47
- static async createConnectionAsync() {
48
- return this.createConnection();
49
- }
50
- /**
51
- * Create a new database connection
52
- */
53
- static createConnection() {
42
+ // Force local mode: use DATABASE_PATH or default
43
+ if (process.env.FORCE_LOCAL_DB === 'true') {
44
+ const dbPath = process.env.DATABASE_PATH ?? 'database.db';
45
+ return (0, libsql_1.drizzle)((0, client_1.createClient)({ url: `file:${dbPath}` }));
46
+ }
47
+ // Production: try Turso first, fallback to local SQLite
54
48
  try {
55
- // For testing, force local SQLite database to avoid remote schema conflicts
56
- if (process.env.NODE_ENV === 'test' || process.env.FORCE_LOCAL_DB === 'true') {
57
- // Use unique database file for each test to avoid locking issues
58
- const testDbName = process.env.JEST_WORKER_ID ? `test-${process.env.JEST_WORKER_ID}.db` : 'test.db';
59
- console.log(`Using local SQLite database for testing: ${testDbName}`);
60
- const client = (0, client_1.createClient)({
61
- url: `file:${testDbName}`,
62
- });
63
- return (0, libsql_1.drizzle)(client);
64
- }
65
- // Try to get Turso config first, fallback to local SQLite if not available
66
- try {
67
- const config = (0, config_1.getDatabaseConfig)();
68
- const client = (0, client_1.createClient)({
69
- url: config.connectionUrl,
70
- authToken: config.authToken,
71
- });
72
- console.log('Connected to Turso database');
73
- return (0, libsql_1.drizzle)(client);
74
- }
75
- catch (configError) {
76
- // Fallback to local SQLite database
77
- console.log('Turso config not found, using local SQLite database');
78
- const client = (0, client_1.createClient)({
79
- url: 'file:database.db',
80
- });
81
- return (0, libsql_1.drizzle)(client);
82
- }
49
+ const config = (0, config_1.getDatabaseConfig)();
50
+ return (0, libsql_1.drizzle)((0, client_1.createClient)({
51
+ url: config.connectionUrl,
52
+ authToken: config.authToken,
53
+ }));
83
54
  }
84
- catch (error) {
85
- throw new errors_1.DatabaseError(`Failed to create database connection: ${error.message}`, 'connection', error);
55
+ catch {
56
+ const dbPath = process.env.DATABASE_PATH ?? 'database.db';
57
+ return (0, libsql_1.drizzle)((0, client_1.createClient)({ url: `file:${dbPath}` }));
86
58
  }
87
59
  }
88
- /**
89
- * Reset the connection instance (useful for testing)
90
- */
60
+ /** Reset the connection (for testing) */
91
61
  static reset() {
92
62
  this.instance = null;
93
- this.isCreating = false;
94
- this.creationPromise = null;
63
+ this.pending = null;
95
64
  }
96
- /**
97
- * Check if connection is established
98
- */
65
+ /** Check if a connection exists */
99
66
  static isConnected() {
100
67
  return this.instance !== null;
101
68
  }
102
69
  }
103
70
  exports.DatabaseConnection = DatabaseConnection;
104
71
  DatabaseConnection.instance = null;
105
- DatabaseConnection.isCreating = false;
106
- DatabaseConnection.creationPromise = null;
107
- // Export the database instance for convenience (deprecated - use getInstance() instead)
108
- exports.db = DatabaseConnection.getInstanceSync();
72
+ DatabaseConnection.pending = null;
109
73
  //# sourceMappingURL=connection.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"connection.js","sourceRoot":"","sources":["../../core/connection.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"connection.js","sourceRoot":"","sources":["../../core/connection.ts"],"names":[],"mappings":";;;AAAA,+CAA6C;AAC7C,2CAA8C;AAC9C,qCAA6C;AAI7C;;;;;;;;;GASG;AACH,MAAa,kBAAkB;IAI7B,+DAA+D;IAC/D,MAAM,CAAC,KAAK,CAAC,WAAW;QACtB,IAAI,IAAI,CAAC,QAAQ;YAAE,OAAO,IAAI,CAAC,QAAQ,CAAC;QACxC,IAAI,IAAI,CAAC,OAAO;YAAE,OAAO,IAAI,CAAC,OAAO,CAAC;QAEtC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAEvC,IAAI,CAAC;YACH,IAAI,CAAC,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC;YACnC,OAAO,IAAI,CAAC,QAAQ,CAAC;QACvB,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACtB,CAAC;IACH,CAAC;IAED,uCAAuC;IAC/B,MAAM,CAAC,KAAK,CAAC,gBAAgB;QACnC,gDAAgD;QAChD,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,MAAM,EAAE,CAAC;YACpC,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc;gBACvC,CAAC,CAAC,QAAQ,OAAO,CAAC,GAAG,CAAC,cAAc,KAAK;gBACzC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,SAAS,CAAC,CAAC;YAC7C,OAAO,IAAA,gBAAO,EAAC,IAAA,qBAAY,EAAC,EAAE,GAAG,EAAE,QAAQ,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC;QAC1D,CAAC;QAED,iDAAiD;QACjD,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,KAAK,MAAM,EAAE,CAAC;YAC1C,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,aAAa,CAAC;YAC1D,OAAO,IAAA,gBAAO,EAAC,IAAA,qBAAY,EAAC,EAAE,GAAG,EAAE,QAAQ,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC;QAC1D,CAAC;QAED,wDAAwD;QACxD,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAA,0BAAiB,GAAE,CAAC;YACnC,OAAO,IAAA,gBAAO,EAAC,IAAA,qBAAY,EAAC;gBAC1B,GAAG,EAAE,MAAM,CAAC,aAAa;gBACzB,SAAS,EAAE,MAAM,CAAC,SAAS;aAC5B,CAAC,CAAC,CAAC;QACN,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,aAAa,CAAC;YAC1D,OAAO,IAAA,gBAAO,EAAC,IAAA,qBAAY,EAAC,EAAE,GAAG,EAAE,QAAQ,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC;QAC1D,CAAC;IACH,CAAC;IAED,yCAAyC;IACzC,MAAM,CAAC,KAAK;QACV,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;IACtB,CAAC;IAED,mCAAmC;IACnC,MAAM,CAAC,WAAW;QAChB,OAAO,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC;IAChC,CAAC;;AAzDH,gDA0DC;AAzDgB,2BAAQ,GAA2B,IAAI,CAAC;AACxC,0BAAO,GAAoC,IAAI,CAAC"}
@@ -1,7 +1,6 @@
1
1
  /**
2
2
  * Core database functionality
3
- * Essential database components: connection, schema, and configuration
4
3
  */
5
- export { db, DatabaseConnection } from './connection';
6
- export * from './config';
4
+ export { DatabaseConnection } from './connection';
5
+ export { getDatabaseConfig } from './config';
7
6
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../core/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,EAAE,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AACtD,cAAc,UAAU,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../core/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC"}
@@ -1,26 +1,11 @@
1
1
  "use strict";
2
2
  /**
3
3
  * Core database functionality
4
- * Essential database components: connection, schema, and configuration
5
4
  */
6
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
7
- if (k2 === undefined) k2 = k;
8
- var desc = Object.getOwnPropertyDescriptor(m, k);
9
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
10
- desc = { enumerable: true, get: function() { return m[k]; } };
11
- }
12
- Object.defineProperty(o, k2, desc);
13
- }) : (function(o, m, k, k2) {
14
- if (k2 === undefined) k2 = k;
15
- o[k2] = m[k];
16
- }));
17
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
18
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
19
- };
20
5
  Object.defineProperty(exports, "__esModule", { value: true });
21
- exports.DatabaseConnection = exports.db = void 0;
6
+ exports.getDatabaseConfig = exports.DatabaseConnection = void 0;
22
7
  var connection_1 = require("./connection");
23
- Object.defineProperty(exports, "db", { enumerable: true, get: function () { return connection_1.db; } });
24
8
  Object.defineProperty(exports, "DatabaseConnection", { enumerable: true, get: function () { return connection_1.DatabaseConnection; } });
25
- __exportStar(require("./config"), exports);
9
+ var config_1 = require("./config");
10
+ Object.defineProperty(exports, "getDatabaseConfig", { enumerable: true, get: function () { return config_1.getDatabaseConfig; } });
26
11
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../core/index.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;;;;;;;;;;;;;AAEH,2CAAsD;AAA7C,gGAAA,EAAE,OAAA;AAAE,gHAAA,kBAAkB,OAAA;AAC/B,2CAAyB"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../core/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEH,2CAAkD;AAAzC,gHAAA,kBAAkB,OAAA;AAC3B,mCAA6C;AAApC,2GAAA,iBAAiB,OAAA"}
package/dist/index.d.ts CHANGED
@@ -1,14 +1,237 @@
1
1
  /**
2
- * Database module exports
3
- * Main entry point for all database-related functionality
4
- *
5
- * @fileoverview Organized database module with proper separation of concerns
6
- * @version 2.0.0
7
- * @author Database Team
8
- */
9
- export * from './core';
10
- export * from './utils';
11
- export * from './init';
12
- export { DatabaseError, SchemaError, SyncError, ConnectionError, ValidationError } from './types/errors';
13
- export * from './constants';
2
+ * nanodb-orm - A lightweight ORM wrapper for Drizzle + SQLite/Turso
3
+ *
4
+ * @example
5
+ * ```ts
6
+ * // Default import (recommended)
7
+ * import nanodb from 'nanodb-orm';
8
+ *
9
+ * const users = nanodb.schema.table('users', {
10
+ * id: nanodb.schema.integer('id').primaryKey({ autoIncrement: true }),
11
+ * name: nanodb.schema.text('name').notNull(),
12
+ * });
13
+ *
14
+ * const db = await nanodb.createDatabase({ tables: { users } });
15
+ * const adults = await db.select().from(users).where(nanodb.query.gte(users.age, 18));
16
+ * ```
17
+ *
18
+ * @example
19
+ * ```ts
20
+ * // Named imports
21
+ * import { createDatabase, schema, query } from 'nanodb-orm';
22
+ * ```
23
+ */
24
+ import { sqliteTable, integer as drizzleInteger, text as drizzleText, real as drizzleReal, blob as drizzleBlob } from 'drizzle-orm/sqlite-core';
25
+ import { like as drizzleLike, ilike as drizzleIlike, notLike as drizzleNotLike, and as drizzleAnd, or as drizzleOr, not as drizzleNot, between as drizzleBetween, inArray as drizzleInArray, notInArray as drizzleNotInArray, isNull as drizzleIsNull, isNotNull as drizzleIsNotNull, desc as drizzleDesc, asc as drizzleAsc, count as drizzleCount, sum as drizzleSum, avg as drizzleAvg, min as drizzleMin, max as drizzleMax, sql as drizzleSql } from 'drizzle-orm';
26
+ /**
27
+ * Schema building utilities.
28
+ *
29
+ * @example
30
+ * ```ts
31
+ * import { schema } from 'nanodb-orm';
32
+ *
33
+ * const users = schema.table('users', {
34
+ * id: schema.integer('id').primaryKey({ autoIncrement: true }),
35
+ * name: schema.text('name').notNull(),
36
+ * email: schema.text('email').unique(),
37
+ * });
38
+ * ```
39
+ */
40
+ export declare const schema: {
41
+ table: import("drizzle-orm/sqlite-core").SQLiteTableFn<undefined>;
42
+ integer: typeof drizzleInteger;
43
+ text: typeof drizzleText;
44
+ real: typeof drizzleReal;
45
+ blob: typeof drizzleBlob;
46
+ };
47
+ /**
48
+ * Query operators for WHERE clauses and expressions.
49
+ *
50
+ * @example
51
+ * ```ts
52
+ * import { query } from 'nanodb-orm';
53
+ *
54
+ * await db.select().from(users).where(
55
+ * query.and(
56
+ * query.gte(users.age, 18),
57
+ * query.like(users.name, 'A%')
58
+ * )
59
+ * );
60
+ * ```
61
+ */
62
+ export declare const query: {
63
+ eq: import("drizzle-orm").BinaryOperator;
64
+ ne: import("drizzle-orm").BinaryOperator;
65
+ gt: import("drizzle-orm").BinaryOperator;
66
+ gte: import("drizzle-orm").BinaryOperator;
67
+ lt: import("drizzle-orm").BinaryOperator;
68
+ lte: import("drizzle-orm").BinaryOperator;
69
+ like: typeof drizzleLike;
70
+ ilike: typeof drizzleIlike;
71
+ notLike: typeof drizzleNotLike;
72
+ and: typeof drizzleAnd;
73
+ or: typeof drizzleOr;
74
+ not: typeof drizzleNot;
75
+ between: typeof drizzleBetween;
76
+ inArray: typeof drizzleInArray;
77
+ notInArray: typeof drizzleNotInArray;
78
+ isNull: typeof drizzleIsNull;
79
+ isNotNull: typeof drizzleIsNotNull;
80
+ desc: typeof drizzleDesc;
81
+ asc: typeof drizzleAsc;
82
+ count: typeof drizzleCount;
83
+ sum: typeof drizzleSum;
84
+ avg: typeof drizzleAvg;
85
+ min: typeof drizzleMin;
86
+ max: typeof drizzleMax;
87
+ sql: typeof drizzleSql;
88
+ };
89
+ /**
90
+ * Error classes and utilities.
91
+ *
92
+ * @example
93
+ * ```ts
94
+ * import { errors } from 'nanodb-orm';
95
+ *
96
+ * try {
97
+ * await db.insert(users).values({ ... });
98
+ * } catch (e) {
99
+ * if (e instanceof errors.DatabaseError) {
100
+ * console.log(e.message, e.table);
101
+ * }
102
+ * const parsed = errors.parse(e, { table: 'users' });
103
+ * }
104
+ * ```
105
+ */
106
+ import { DatabaseError, SchemaError, ConnectionError, MigrationError, SeedError, parseDbError } from './types/errors';
107
+ export declare const errors: {
108
+ DatabaseError: typeof DatabaseError;
109
+ SchemaError: typeof SchemaError;
110
+ ConnectionError: typeof ConnectionError;
111
+ MigrationError: typeof MigrationError;
112
+ SeedError: typeof SeedError;
113
+ parse: typeof parseDbError;
114
+ };
115
+ /**
116
+ * CLI functions for programmatic access.
117
+ *
118
+ * @example
119
+ * ```ts
120
+ * import { cli } from 'nanodb-orm';
121
+ *
122
+ * await cli.setup();
123
+ * const status = await cli.status(true);
124
+ * await cli.studio({ port: 3000 });
125
+ * ```
126
+ */
127
+ import { launchStudio, runSetup, runReset, getStatus, runValidate } from './cli';
128
+ export declare const cli: {
129
+ studio: typeof launchStudio;
130
+ setup: typeof runSetup;
131
+ reset: typeof runReset;
132
+ status: typeof getStatus;
133
+ validate: typeof runValidate;
134
+ };
135
+ export { createDatabase, initializeDatabase } from './init';
136
+ export type { CreateDatabaseConfig, NanoDatabase, Hooks, SchemaUtils, MigrationUtils, PluginUtils, } from './init';
137
+ export type { Table, AnyTable, Schema, SelectModel, InsertModel, SchemaModels, SchemaInsertModels, DrizzleDB, NanoPlugin, HookFn, ErrorHookFn, LifecycleHookFn, ColumnMetadata, ForeignKeyReference, SchemaData, MigrationConfig, DatabaseConfig, DatabaseInfo, HealthCheck, SyncResult, SchemaValidation, ForeignKey, TableMetadata, QueryResult, DatabaseClient, DrizzleTable, DrizzleColumn, } from './types';
138
+ export type { StudioOptions, StatusResult, ValidationResult, } from './cli';
139
+ export type { InferSelectModel, InferInsertModel, } from 'drizzle-orm';
140
+ export { DatabaseError, SchemaError, ConnectionError, MigrationError, SeedError, parseDbError, } from './types/errors';
141
+ export { DatabaseConnection } from './core/connection';
142
+ export { getDatabaseConfig } from './core/config';
143
+ export { DatabaseSync } from './utils/sync';
144
+ export { DatabaseMigrations } from './utils/migrations';
145
+ export { DatabaseSeeds } from './utils/seeds';
146
+ export { SchemaIntrospection } from './utils/schema-introspection';
147
+ export { transaction, batch, recreateTable } from './utils/transactions';
148
+ export { launchStudio, runSetup, runReset, getStatus, runValidate, } from './cli';
149
+ export declare const table: import("drizzle-orm/sqlite-core").SQLiteTableFn<undefined>;
150
+ export { sqliteTable };
151
+ export declare const integer: typeof drizzleInteger;
152
+ export declare const text: typeof drizzleText;
153
+ export declare const real: typeof drizzleReal;
154
+ export declare const blob: typeof drizzleBlob;
155
+ export declare const column: {
156
+ table: import("drizzle-orm/sqlite-core").SQLiteTableFn<undefined>;
157
+ integer: typeof drizzleInteger;
158
+ text: typeof drizzleText;
159
+ real: typeof drizzleReal;
160
+ blob: typeof drizzleBlob;
161
+ };
162
+ export { eq, ne, gt, gte, lt, lte, like, ilike, notLike, and, or, not, between, inArray, notInArray, isNull, isNotNull, desc, asc, count, sum, avg, min, max, sql, } from 'drizzle-orm';
163
+ import { createDatabase, initializeDatabase } from './init';
164
+ import { transaction, batch } from './utils/transactions';
165
+ /**
166
+ * Default export with all nanodb-orm functionality.
167
+ *
168
+ * @example
169
+ * ```ts
170
+ * import nanodb from 'nanodb-orm';
171
+ *
172
+ * const users = nanodb.schema.table('users', {
173
+ * id: nanodb.schema.integer('id').primaryKey({ autoIncrement: true }),
174
+ * name: nanodb.schema.text('name').notNull(),
175
+ * });
176
+ *
177
+ * const db = await nanodb.createDatabase({ tables: { users } });
178
+ * await db.select().from(users).where(nanodb.query.eq(users.id, 1));
179
+ * ```
180
+ */
181
+ declare const nanodb: {
182
+ createDatabase: typeof createDatabase;
183
+ initializeDatabase: typeof initializeDatabase;
184
+ transaction: typeof transaction;
185
+ batch: typeof batch;
186
+ schema: {
187
+ table: import("drizzle-orm/sqlite-core").SQLiteTableFn<undefined>;
188
+ integer: typeof drizzleInteger;
189
+ text: typeof drizzleText;
190
+ real: typeof drizzleReal;
191
+ blob: typeof drizzleBlob;
192
+ };
193
+ query: {
194
+ eq: import("drizzle-orm").BinaryOperator;
195
+ ne: import("drizzle-orm").BinaryOperator;
196
+ gt: import("drizzle-orm").BinaryOperator;
197
+ gte: import("drizzle-orm").BinaryOperator;
198
+ lt: import("drizzle-orm").BinaryOperator;
199
+ lte: import("drizzle-orm").BinaryOperator;
200
+ like: typeof drizzleLike;
201
+ ilike: typeof drizzleIlike;
202
+ notLike: typeof drizzleNotLike;
203
+ and: typeof drizzleAnd;
204
+ or: typeof drizzleOr;
205
+ not: typeof drizzleNot;
206
+ between: typeof drizzleBetween;
207
+ inArray: typeof drizzleInArray;
208
+ notInArray: typeof drizzleNotInArray;
209
+ isNull: typeof drizzleIsNull;
210
+ isNotNull: typeof drizzleIsNotNull;
211
+ desc: typeof drizzleDesc;
212
+ asc: typeof drizzleAsc;
213
+ count: typeof drizzleCount;
214
+ sum: typeof drizzleSum;
215
+ avg: typeof drizzleAvg;
216
+ min: typeof drizzleMin;
217
+ max: typeof drizzleMax;
218
+ sql: typeof drizzleSql;
219
+ };
220
+ errors: {
221
+ DatabaseError: typeof DatabaseError;
222
+ SchemaError: typeof SchemaError;
223
+ ConnectionError: typeof ConnectionError;
224
+ MigrationError: typeof MigrationError;
225
+ SeedError: typeof SeedError;
226
+ parse: typeof parseDbError;
227
+ };
228
+ cli: {
229
+ studio: typeof launchStudio;
230
+ setup: typeof runSetup;
231
+ reset: typeof runReset;
232
+ status: typeof getStatus;
233
+ validate: typeof runValidate;
234
+ };
235
+ };
236
+ export default nanodb;
14
237
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,cAAc,QAAQ,CAAC;AAGvB,cAAc,SAAS,CAAC;AAGxB,cAAc,QAAQ,CAAC;AAGvB,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,SAAS,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAGzG,cAAc,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,EACL,WAAW,EACX,OAAO,IAAI,cAAc,EACzB,IAAI,IAAI,WAAW,EACnB,IAAI,IAAI,WAAW,EACnB,IAAI,IAAI,WAAW,EACpB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAOL,IAAI,IAAI,WAAW,EACnB,KAAK,IAAI,YAAY,EACrB,OAAO,IAAI,cAAc,EACzB,GAAG,IAAI,UAAU,EACjB,EAAE,IAAI,SAAS,EACf,GAAG,IAAI,UAAU,EACjB,OAAO,IAAI,cAAc,EACzB,OAAO,IAAI,cAAc,EACzB,UAAU,IAAI,iBAAiB,EAC/B,MAAM,IAAI,aAAa,EACvB,SAAS,IAAI,gBAAgB,EAC7B,IAAI,IAAI,WAAW,EACnB,GAAG,IAAI,UAAU,EACjB,KAAK,IAAI,YAAY,EACrB,GAAG,IAAI,UAAU,EACjB,GAAG,IAAI,UAAU,EACjB,GAAG,IAAI,UAAU,EACjB,GAAG,IAAI,UAAU,EACjB,GAAG,IAAI,UAAU,EAClB,MAAM,aAAa,CAAC;AAMrB;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,MAAM;;;;;;CAMlB,CAAC;AAEF;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;CAgCjB,CAAC;AAEF;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,EACL,aAAa,EACb,WAAW,EACX,eAAe,EACf,cAAc,EACd,SAAS,EACT,YAAY,EACb,MAAM,gBAAgB,CAAC;AAExB,eAAO,MAAM,MAAM;;;;;;;CAOlB,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,OAAO,EACL,YAAY,EACZ,QAAQ,EACR,QAAQ,EACR,SAAS,EACT,WAAW,EACZ,MAAM,OAAO,CAAC;AAEf,eAAO,MAAM,GAAG;;;;;;CAMf,CAAC;AAMF,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,QAAQ,CAAC;AAC5D,YAAY,EACV,oBAAoB,EACpB,YAAY,EACZ,KAAK,EACL,WAAW,EACX,cAAc,EACd,WAAW,GACZ,MAAM,QAAQ,CAAC;AAMhB,YAAY,EAEV,KAAK,EACL,QAAQ,EACR,MAAM,EAGN,WAAW,EACX,WAAW,EACX,YAAY,EACZ,kBAAkB,EAGlB,SAAS,EAGT,UAAU,EACV,MAAM,EACN,WAAW,EACX,eAAe,EAGf,cAAc,EACd,mBAAmB,EAGnB,UAAU,EACV,eAAe,EACf,cAAc,EAGd,YAAY,EACZ,WAAW,EACX,UAAU,EACV,gBAAgB,EAChB,UAAU,EACV,aAAa,EACb,WAAW,EACX,cAAc,EAGd,YAAY,EACZ,aAAa,GACd,MAAM,SAAS,CAAC;AAEjB,YAAY,EACV,aAAa,EACb,YAAY,EACZ,gBAAgB,GACjB,MAAM,OAAO,CAAC;AAEf,YAAY,EACV,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,aAAa,CAAC;AAOrB,OAAO,EACL,aAAa,EACb,WAAW,EACX,eAAe,EACf,cAAc,EACd,SAAS,EACT,YAAY,GACb,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAGzE,OAAO,EACL,YAAY,EACZ,QAAQ,EACR,QAAQ,EACR,SAAS,EACT,WAAW,GACZ,MAAM,OAAO,CAAC;AAGf,eAAO,MAAM,KAAK,4DAAc,CAAC;AACjC,OAAO,EAAE,WAAW,EAAE,CAAC;AACvB,eAAO,MAAM,OAAO,uBAAiB,CAAC;AACtC,eAAO,MAAM,IAAI,oBAAc,CAAC;AAChC,eAAO,MAAM,IAAI,oBAAc,CAAC;AAChC,eAAO,MAAM,IAAI,oBAAc,CAAC;AAChC,eAAO,MAAM,MAAM;;;;;;CAAS,CAAC;AAG7B,OAAO,EACL,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAC9C,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,EAC7D,IAAI,EAAE,GAAG,EACT,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzB,GAAG,GACJ,MAAM,aAAa,CAAC;AAMrB,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,QAAQ,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAE1D;;;;;;;;;;;;;;;GAeG;AACH,QAAA,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAYX,CAAC;AAEF,eAAe,MAAM,CAAC"}