@hawiah/core 1.1.2 → 1.2.6

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,91 +1,124 @@
1
- # Hawiah Core 🦅
1
+ # @hawiah/core
2
2
 
3
- **The Universal, Hybrid Database Driver & ORM**
3
+ **Hawiah** is a lightweight, schema-less database abstraction layer designed for modern applications. It provides a unified API for various databases while handling advanced features like **Connection Pooling**, **Relationship Management**, and **Data Batching** automatically.
4
4
 
5
- Hawiah abstracts your database layer, allowing you to write code once and run it anywhere. It seamlessly supports SQL, NoSQL, In-Memory, and File-based storage with a unified API.
5
+ ## Features
6
6
 
7
- ---
7
+ - **Unified Interface**: Use MongoDB, SQLite, Firebase, or SQL with the exact same API.
8
+ - **Smart Connection Pooling**: Automatically shares physical connections between instances to maximize performance.
9
+ - **Next.js & Serverless Ready**: Built-in support for HMR (Hot Module Replacement) and Server Components.
10
+ - **Schema Validation**: Optional, simple, and powerful schema definitions.
11
+ - **Zero-Config Relations**: Handle database relationships with ease.
8
12
 
9
- ## ✨ Key Features
13
+ ## Installation
10
14
 
11
- * **Universal API:** `insert`, `get`, `update`, `delete` work identically across all drivers.
12
- * **Hybrid Schema System (New!):**
13
- * **Optional:** You can go fully schema-less (NoSQL style).
14
- * **Powerful:** Define a Schema to get validation and structure.
15
- * **Hybrid Storage:** On SQL drivers, schemas map to real columns for performance, while keeping a JSON column for flexibility.
16
- * **Virtual Relationships:** define relationships between *different* databases/drivers without complex joins.
17
- * **Zero Lock-in:** Switch from JSON files to PostgreSQL in seconds.
18
-
19
- ---
15
+ ```bash
16
+ npm install @hawiah/core
17
+ ```
20
18
 
21
- ## 📦 Installation
19
+ Then install the driver of your choice:
22
20
 
23
21
  ```bash
24
- npm install @hawiah/core
25
- # Install a driver:
26
- npm install @hawiah/sqlite
27
- # or @hawiah/postgres, @hawiah/mongo, etc.
22
+ npm install @hawiah/mongo
23
+ # OR
24
+ npm install @hawiah/sqlite
25
+ # OR
26
+ npm install @hawiah/firebase
28
27
  ```
29
28
 
30
- ## 🚀 Quick Start
29
+ ## Usage Examples
30
+
31
+ Hawiah automatically manages connections. You can create as many instances as you need; if they share the same configuration, they will share the same physical connection.
31
32
 
32
- ### 1. Schema-Less (Flexible Mode)
33
- Perfect for prototyping or pure NoSQL usage.
33
+ ### 1. MongoDB
34
34
 
35
35
  ```javascript
36
- const { Hawiah } = require('@hawiah/core');
37
- const { SQLiteDriver } = require('@hawiah/sqlite');
36
+ import { Hawiah } from '@hawiah/core';
37
+ import { MongoDriver } from '@hawiah/mongo';
38
+
39
+ const db = new Hawiah({
40
+ driver: MongoDriver,
41
+ config: {
42
+ uri: 'mongodb://localhost:27017',
43
+ dbName: 'my_project',
44
+ collectionName: 'users' // <--- Collection 1
45
+ }
46
+ });
38
47
 
39
- const db = new Hawiah({
40
- driver: new SQLiteDriver('mydb.sqlite')
48
+ const posts = new Hawiah({
49
+ driver: MongoDriver,
50
+ config: {
51
+ uri: 'mongodb://localhost:27017',
52
+ dbName: 'my_project',
53
+ collectionName: 'posts' // <--- Collection 2 (Shares connection with users)
54
+ }
41
55
  });
42
56
 
43
- await db.connect();
44
- await db.insert({ title: 'My Post', views: 100 }); // Just works!
57
+ await db.connect(); // Orchestrates the connection for all sharing instances
45
58
  ```
46
59
 
47
- ### 2. With Schema (Structured Mode)
48
- Get validation and SQL performance where needed.
60
+ ### 2. SQLite
49
61
 
50
62
  ```javascript
51
- const { Hawiah, Schema, DataTypes } = require('@hawiah/core');
52
- const { PostgreSQLDriver } = require('@hawiah/postgres');
53
-
54
- // Define Schema (Optional)
55
- const userSchema = new Schema({
56
- username: { type: DataTypes.STRING, required: true },
57
- email: { type: DataTypes.EMAIL },
58
- data: { type: DataTypes.JSON } // Flexible JSON field
63
+ import { Hawiah } from '@hawiah/core';
64
+ import { SqliteDriver } from '@hawiah/sqlite';
65
+
66
+ const users = new Hawiah({
67
+ driver: SqliteDriver,
68
+ config: {
69
+ filename: './database.sqlite', // <--- Physical File
70
+ table: 'users'
71
+ }
59
72
  });
60
73
 
61
- const db = new Hawiah({
62
- driver: new PostgreSQLDriver({ /* config */, tableName: 'users' }),
63
- schema: userSchema
74
+ const logs = new Hawiah({
75
+ driver: SqliteDriver,
76
+ config: {
77
+ filename: './database.sqlite', // <--- Same Config = Same Connection
78
+ table: 'logs'
79
+ }
64
80
  });
65
-
66
- // Enforces structure & creates real SQL columns
67
- await db.insert({ username: 'Ali' });
68
81
  ```
69
82
 
70
- ---
83
+ ### 3. Firebase (Firestore)
71
84
 
72
- ## 📚 Drivers
85
+ ```javascript
86
+ import { Hawiah } from '@hawiah/core';
87
+ import { FirebaseDriver } from '@hawiah/firebase';
88
+
89
+ const firebaseConfig = {
90
+ apiKey: "AIzaSy...",
91
+ projectId: "my-app",
92
+ // ...
93
+ };
94
+
95
+ const profiles = new Hawiah({
96
+ driver: FirebaseDriver,
97
+ config: {
98
+ firebaseConfig: firebaseConfig,
99
+ collectionName: 'profiles'
100
+ }
101
+ });
102
+ ```
73
103
 
74
- | Driver | Package | Mode |
75
- | :--- | :--- | :--- |
76
- | **SQLite** | `@hawiah/sqlite` | Hybrid (SQL + JSON) |
77
- | **PostgreSQL**| `@hawiah/postgres`| Hybrid (SQL + JSON) |
78
- | **MySQL** | `@hawiah/mysql` | Hybrid (SQL + JSON) |
79
- | **MongoDB** | `@hawiah/mongo` | Virtual Schema |
80
- | **Firebase** | `@hawiah/firebase`| Virtual Schema |
81
- | **Local** | `@hawiah/local` | JSON/YAML Files |
104
+ ## Next.js 16+ Support
82
105
 
83
- ---
106
+ If you are using **Next.js**, use the `HawiahNext` class. It ensures that your database connections persist across Hot Module Reloads (HMR) to prevent "Too Many Connections" errors during development.
84
107
 
85
- ## 📖 Documentation
108
+ ```typescript
109
+ // lib/db.ts
110
+ import { HawiahNext } from '@hawiah/core';
111
+ import { MongoDriver } from '@hawiah/mongo';
86
112
 
87
- For full details on the advanced Schema system and Relationships, check out the [Full Guide](https://github.com/Shuruhatik/hawiah-core/blob/main/HAWIAH_GUIDE.md).
113
+ export const dbEvents = new HawiahNext({
114
+ driver: MongoDriver,
115
+ config: {
116
+ uri: process.env.MONGO_URI,
117
+ collectionName: 'events'
118
+ }
119
+ });
120
+ ```
88
121
 
89
- ---
122
+ ## License
90
123
 
91
- **License:** MIT
124
+ MIT
package/dist/Hawiah.d.ts CHANGED
@@ -1,23 +1,34 @@
1
1
  import { IDriver, Query, Data } from './interfaces/IDriver';
2
2
  import { Schema, SchemaDefinition } from './Schema';
3
+ import DataLoader from 'dataloader';
3
4
  /**
4
5
  * Hawiah: A lightweight, schema-less database abstraction layer.
5
6
  * Designed to be friendly and easy to use.
6
7
  */
7
8
  export declare class Hawiah {
8
- private driver;
9
- private isConnected;
10
- private relations;
11
- private loaders;
12
- private schema?;
9
+ protected driver: IDriver;
10
+ protected isConnected: boolean;
11
+ protected relations: Map<string, RelationConfig>;
12
+ protected loaders: Map<string, DataLoader<any, any>>;
13
+ protected schema?: Schema;
14
+ static readonly IGNORE_KEYS: Set<string>;
15
+ private static readonly driversPool;
16
+ private static readonly connectionPromises;
17
+ private connectionKey?;
18
+ /**
19
+ * Generates a unique fingerprint for a connection setup.
20
+ */
21
+ static getPoolKey(driver: any, config: any): string;
13
22
  /**
14
23
  * Creates a new Hawiah instance.
15
24
  * @param options - Configuration options
16
- * @param options.driver - The database driver to use
25
+ * @param options.driver - The database driver instance OR Driver Class for auto-pooling
26
+ * @param options.config - Configuration for the driver if passing a Class
17
27
  * @param options.schema - Optional schema definition
18
28
  */
19
29
  constructor(options: {
20
- driver: IDriver;
30
+ driver: IDriver | (new (config: any) => IDriver);
31
+ config?: any;
21
32
  schema?: Schema | SchemaDefinition;
22
33
  });
23
34
  /**
@@ -354,3 +365,10 @@ export declare class Hawiah {
354
365
  */
355
366
  private validateData;
356
367
  }
368
+ interface RelationConfig {
369
+ target: Hawiah;
370
+ localKey: string;
371
+ foreignKey: string;
372
+ type: 'one' | 'many';
373
+ }
374
+ export {};
package/dist/Hawiah.js CHANGED
@@ -16,17 +16,67 @@ class Hawiah {
16
16
  relations = new Map();
17
17
  loaders = new Map();
18
18
  schema;
19
+ static IGNORE_KEYS = new Set(['collectionName', 'tableName', 'collection', 'table', 'connectionKey']);
20
+ static driversPool = new Map();
21
+ static connectionPromises = new Map();
22
+ connectionKey;
23
+ /**
24
+ * Generates a unique fingerprint for a connection setup.
25
+ */
26
+ static getPoolKey(driver, config) {
27
+ let cKey = config.connectionKey;
28
+ if (cKey)
29
+ return cKey;
30
+ cKey = typeof driver === 'function' ? driver.name : (driver.constructor?.name || 'UnknownDriver');
31
+ const driverClass = typeof driver === 'function' ? driver : driver.constructor;
32
+ const supportsTable = typeof driverClass.prototype?.table === 'function' ||
33
+ (typeof driver === 'object' && typeof driver.table === 'function');
34
+ const ignoreKeys = supportsTable
35
+ ? Hawiah.IGNORE_KEYS
36
+ : new Set([...Hawiah.IGNORE_KEYS].filter(k => !['collectionName', 'tableName', 'collection', 'table'].includes(k)));
37
+ for (const key in config) {
38
+ if (!ignoreKeys.has(key)) {
39
+ const val = config[key];
40
+ if (val !== null && typeof val !== 'object') {
41
+ cKey += `|${key}:${val}`;
42
+ }
43
+ else if (val !== null) {
44
+ cKey += `|${key}:${JSON.stringify(val)}`;
45
+ }
46
+ }
47
+ }
48
+ return cKey;
49
+ }
19
50
  /**
20
51
  * Creates a new Hawiah instance.
21
52
  * @param options - Configuration options
22
- * @param options.driver - The database driver to use
53
+ * @param options.driver - The database driver instance OR Driver Class for auto-pooling
54
+ * @param options.config - Configuration for the driver if passing a Class
23
55
  * @param options.schema - Optional schema definition
24
56
  */
25
57
  constructor(options) {
26
- this.driver = options.driver;
58
+ if (typeof options.driver === 'function') {
59
+ const config = options.config || {};
60
+ const cKey = Hawiah.getPoolKey(options.driver, config);
61
+ this.connectionKey = cKey;
62
+ if (Hawiah.driversPool.has(cKey)) {
63
+ const rootDriver = Hawiah.driversPool.get(cKey);
64
+ const tableName = config.collectionName || config.tableName || config.collection || config.table || 'default';
65
+ this.driver = rootDriver.table ? rootDriver.table(tableName) : rootDriver;
66
+ if (this.driver.isConnected && this.driver.isConnected()) {
67
+ this.isConnected = true;
68
+ }
69
+ }
70
+ else {
71
+ this.driver = new options.driver(config);
72
+ Hawiah.driversPool.set(cKey, this.driver);
73
+ }
74
+ }
75
+ else {
76
+ this.driver = options.driver;
77
+ }
27
78
  if (options.schema) {
28
79
  this.schema = options.schema instanceof Schema_1.Schema ? options.schema : new Schema_1.Schema(options.schema);
29
- // Pass the schema to the driver if it supports it (for SQL drivers to build tables)
30
80
  if (this.driver.setSchema && this.schema) {
31
81
  this.driver.setSchema(this.schema);
32
82
  }
@@ -39,7 +89,19 @@ class Hawiah {
39
89
  if (this.isConnected) {
40
90
  return;
41
91
  }
42
- await this.driver.connect();
92
+ const poolKey = this.connectionKey || this.driver;
93
+ let connectionPromise = Hawiah.connectionPromises.get(poolKey);
94
+ if (!connectionPromise) {
95
+ if (this.driver.isConnected && this.driver.isConnected()) {
96
+ this.isConnected = true;
97
+ return;
98
+ }
99
+ connectionPromise = (async () => {
100
+ await this.driver.connect();
101
+ })();
102
+ Hawiah.connectionPromises.set(poolKey, connectionPromise);
103
+ }
104
+ await connectionPromise;
43
105
  this.isConnected = true;
44
106
  }
45
107
  /**
@@ -155,16 +217,11 @@ class Hawiah {
155
217
  this.ensureConnected();
156
218
  const existing = await this.driver.getOne(query);
157
219
  if (existing) {
158
- // Update: validate partial
159
220
  const validated = this.validateData(data, true);
160
221
  await this.driver.update(query, validated);
161
222
  return { ...existing, ...validated };
162
223
  }
163
224
  else {
164
- // Insert: validate full (merging query + data for validation context if needed, but data is the main payload)
165
- // Usually save assumes query IS the id or unique key, which might not be in 'data'.
166
- // We should validate the combined object or just data?
167
- // Let's validate the combined object since that's what's being set.
168
225
  const fullData = { ...query, ...data };
169
226
  const validated = this.validateData(fullData);
170
227
  return await this.driver.set(validated);
@@ -404,7 +461,6 @@ class Hawiah {
404
461
  }
405
462
  const currentValue = Number(record[field]) || 0;
406
463
  const newValue = currentValue + amount;
407
- // Use this.update to ensure validation
408
464
  await this.update(query, { [field]: newValue });
409
465
  return newValue;
410
466
  }
@@ -435,7 +491,7 @@ class Hawiah {
435
491
  record[field] = [];
436
492
  }
437
493
  record[field].push(value);
438
- const validated = this.validateData(record, false); // Full validation since we have full record
494
+ const validated = this.validateData(record, false);
439
495
  await this.driver.update(query, validated);
440
496
  count++;
441
497
  }
@@ -541,7 +597,6 @@ class Hawiah {
541
597
  for (const record of records) {
542
598
  if (field in record) {
543
599
  delete record[field];
544
- // Full validation ensures we didn't delete a required field
545
600
  const validated = this.validateData(record, false);
546
601
  await this.driver.update(query, validated);
547
602
  count++;
@@ -1 +1 @@
1
- {"version":3,"file":"Hawiah.js","sourceRoot":"","sources":["../src/Hawiah.ts"],"names":[],"mappings":";;;;;;AACA,qCAAoD;AACpD,4DAAoC;AAEpC;;;GAGG;AACH,MAAa,MAAM;IACT,MAAM,CAAU;IAChB,WAAW,GAAY,KAAK,CAAC;IAC7B,SAAS,GAAgC,IAAI,GAAG,EAAE,CAAC;IACnD,OAAO,GAAsC,IAAI,GAAG,EAAE,CAAC;IACvD,MAAM,CAAU;IAExB;;;;;OAKG;IACH,YAAY,OAAgE;QAC1E,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAC7B,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACnB,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,YAAY,eAAM,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,eAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YAE7F,oFAAoF;YACpF,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;gBACzC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACrC,CAAC;QACH,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,OAAO;QACX,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,OAAO;QACT,CAAC;QACD,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QAC5B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;IAC1B,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,UAAU;QACd,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YACtB,OAAO;QACT,CAAC;QACD,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;QAC/B,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;IAC3B,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,MAAM,CAAC,IAAU;QACrB,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QAC1C,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAC1C,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,UAAU,CAAC,SAAiB;QAChC,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,MAAM,OAAO,GAAW,EAAE,CAAC;QAC3B,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;YAC7B,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;YAC1C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YAChD,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACvB,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,GAAG,CAAC,QAAe,EAAE,EAAE,KAAc;QACzC,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC7C,IAAI,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;YACvB,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QACjC,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,MAAM,CAAC,KAAY;QACvB,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACzC,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,MAAM;QACV,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACnC,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,OAAO,CAAC,OAAgB;QAC5B,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,MAAM,OAAO,GAAW,EAAE,CAAC;QAC3B,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YAC1C,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;QACxB,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,MAAM,CAAC,KAAY,EAAE,IAAU;QACnC,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAChD,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IACpD,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,SAAS,CAAC,KAAY,EAAE,IAAU;QACtC,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAChD,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;QACzD,OAAO,KAAK,GAAG,CAAC,CAAC;IACnB,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,IAAI,CAAC,KAAY,EAAE,IAAU;QACjC,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACjD,IAAI,QAAQ,EAAE,CAAC;YACb,2BAA2B;YAC3B,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YAChD,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;YAC3C,OAAO,EAAE,GAAG,QAAQ,EAAE,GAAG,SAAS,EAAE,CAAC;QACvC,CAAC;aAAM,CAAC;YACN,8GAA8G;YAC9G,qFAAqF;YACrF,wDAAwD;YACxD,oEAAoE;YACpE,MAAM,QAAQ,GAAG,EAAE,GAAG,KAAK,EAAE,GAAG,IAAI,EAAE,CAAC;YACvC,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;YAC9C,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,MAAM,CAAC,KAAY;QACvB,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACzC,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,SAAS,CAAC,KAAY;QAC1B,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC9C,OAAO,KAAK,GAAG,CAAC,CAAC;IACnB,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,KAAK;QACT,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACtC,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,GAAG,CAAC,KAAY;QACpB,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACzC,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,KAAK,CAAC,QAAe,EAAE;QAC3B,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACxC,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,OAAO,CAAC,KAAa,EAAE,KAAU;QACrC,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,MAAM,KAAK,GAAU,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC;QACxC,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACxC,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,OAAO,CAAC,EAAmB;QAC/B,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC;IAC/C,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,UAAU,CAAC,EAAmB,EAAE,IAAU;QAC9C,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;QAC1D,OAAO,KAAK,GAAG,CAAC,CAAC;IACnB,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,UAAU,CAAC,EAAmB;QAClC,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC;QACpD,OAAO,KAAK,GAAG,CAAC,CAAC;IACnB,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,KAAK,CAAC,EAAmB;QAC7B,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC;IAC/C,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,KAAK,CAAC,KAAa,EAAE,KAAU;QACnC,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,MAAM,KAAK,GAAU,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC;QACxC,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACtC,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,KAAK,CAAC,KAAa,EAAE,KAAU;QACnC,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,MAAM,KAAK,GAAU,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC;QACxC,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACzC,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,IAAI,CAAC,KAAY,EAAE,KAAa,EAAE,YAA4B,KAAK;QACvE,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC7C,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YAC3B,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC;gBAAE,OAAO,SAAS,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC7D,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC;gBAAE,OAAO,SAAS,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC7D,OAAO,CAAC,CAAC;QACX,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,MAAM,CAAC,KAAY,EAAE,MAAgB;QACzC,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC7C,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;YAC1B,MAAM,QAAQ,GAAS,EAAE,CAAC;YAC1B,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;gBACrB,IAAI,KAAK,IAAI,MAAM,EAAE,CAAC;oBACpB,QAAQ,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;gBAClC,CAAC;YACH,CAAC,CAAC,CAAC;YACH,OAAO,QAAQ,CAAC;QAClB,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,MAAM,CAAC,KAAa,EAAE,QAAe,EAAE;QAC3C,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC7C,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QACpD,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;IAC9B,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,KAAK,CAAC,KAAa,EAAE,QAAe,EAAE;QAC1C,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC7C,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,MAAiC,EAAE,MAAM,EAAE,EAAE;YAClE,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YAClC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;gBACjB,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;YACnB,CAAC;YACD,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACzB,OAAO,MAAM,CAAC;QAChB,CAAC,EAAE,EAAE,CAAC,CAAC;IACT,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,QAAQ,CAAC,KAAY,EAAE,OAAe,CAAC,EAAE,WAAmB,EAAE;QAOlE,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAChD,MAAM,KAAK,GAAG,UAAU,CAAC,MAAM,CAAC;QAChC,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC,CAAC;QAC/C,MAAM,UAAU,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC;QACzC,MAAM,QAAQ,GAAG,UAAU,GAAG,QAAQ,CAAC;QACvC,MAAM,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QAEpD,OAAO;YACL,IAAI;YACJ,IAAI;YACJ,QAAQ;YACR,KAAK;YACL,UAAU;SACX,CAAC;IACJ,CAAC;IAGD;;;;;OAKG;IACH,KAAK,CAAC,GAAG,CAAC,KAAa,EAAE,QAAe,EAAE;QACxC,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC7C,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAChF,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,SAAS,CAAC,KAAY,EAAE,KAAa,EAAE,SAAiB,CAAC;QAC7D,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC/C,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;QACtC,CAAC;QACD,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC;QAChD,MAAM,QAAQ,GAAG,YAAY,GAAG,MAAM,CAAC;QACvC,uCAAuC;QACvC,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;QAChD,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,SAAS,CAAC,KAAY,EAAE,KAAa,EAAE,SAAiB,CAAC;QAC7D,OAAO,MAAM,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,MAAM,CAAC,CAAC;IACrD,CAAC;IAGD;;;;;;OAMG;IACH,KAAK,CAAC,IAAI,CAAC,KAAY,EAAE,KAAa,EAAE,KAAU;QAChD,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC7C,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;gBAClC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;YACrB,CAAC;YACD,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC1B,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,4CAA4C;YAChG,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;YAC3C,KAAK,EAAE,CAAC;QACV,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,IAAI,CAAC,KAAY,EAAE,KAAa,EAAE,KAAU;QAChD,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC7C,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;gBACjC,MAAM,aAAa,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC;gBAC3C,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,IAAS,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;gBACpG,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,IAAS,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;gBACpG,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,aAAa,EAAE,CAAC;oBAC3C,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;oBACnD,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;oBAC3C,KAAK,EAAE,CAAC;gBACV,CAAC;YACH,CAAC;QACH,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,KAAK,CAAC,KAAY,EAAE,KAAa;QACrC,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC7C,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC7D,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC;gBACtB,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;gBACnD,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;gBAC3C,KAAK,EAAE,CAAC;YACV,CAAC;QACH,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,OAAO,CAAC,KAAY,EAAE,KAAa,EAAE,KAAU;QACnD,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC7C,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;gBAClC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;YACrB,CAAC;YACD,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAC7B,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;YACnD,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;YAC3C,KAAK,EAAE,CAAC;QACV,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,GAAG,CAAC,KAAY,EAAE,KAAa;QACnC,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC7C,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC7D,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC;gBACpB,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;gBACnD,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;gBAC3C,KAAK,EAAE,CAAC;YACV,CAAC;QACH,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAGD;;;;;OAKG;IACH,KAAK,CAAC,KAAK,CAAC,KAAY,EAAE,KAAa;QACrC,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC7C,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,IAAI,KAAK,IAAI,MAAM,EAAE,CAAC;gBACpB,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;gBACrB,4DAA4D;gBAC5D,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;gBACnD,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;gBAC3C,KAAK,EAAE,CAAC;YACV,CAAC;QACH,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,MAAM,CAAC,KAAY,EAAE,QAAgB,EAAE,QAAgB;QAC3D,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC7C,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,IAAI,QAAQ,IAAI,MAAM,EAAE,CAAC;gBACvB,MAAM,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;gBACpC,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC;gBACxB,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;gBACnD,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;gBAC3C,KAAK,EAAE,CAAC;YACV,CAAC;QACH,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAGD;;;OAGG;IACH,KAAK,CAAC,KAAK;QACT,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC1C,OAAO,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAChD,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,IAAI;QACR,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC1C,OAAO,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACjE,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,OAAO;QACX,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC1C,OAAO,KAAK,KAAK,CAAC,CAAC;IACrB,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,MAAM,CAAC,aAAqB,CAAC;QACjC,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC1C,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;QACzD,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;IACvC,CAAC;IAED;;;;OAIG;IACK,eAAe;QACrB,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;QACnE,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,SAAS;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED;;;OAGG;IACH,QAAQ;QACN,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAGD;;;;;;;OAOG;IACH,QAAQ,CAAC,IAAY,EAAE,MAAc,EAAE,QAAgB,EAAE,UAAkB,EAAE,OAAuB,MAAM;QACxG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;QACjE,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,OAAO,CAAC,QAAe,EAAE,EAAE,GAAG,SAAmB;QACrD,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAE7C,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACnD,OAAO,OAAO,CAAC;QACjB,CAAC;QAED,KAAK,MAAM,YAAY,IAAI,SAAS,EAAE,CAAC;YACrC,MAAM,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;QACjD,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,UAAU,CAAC,KAAY,EAAE,GAAG,SAAmB;QACnD,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAE/C,IAAI,CAAC,MAAM,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtC,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,KAAK,MAAM,YAAY,IAAI,SAAS,EAAE,CAAC;YACrC,MAAM,IAAI,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,EAAE,YAAY,CAAC,CAAC;QAClD,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,YAAY,CAAC,OAAe,EAAE,YAAoB;QAC9D,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAClD,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,KAAK,CAAC,aAAa,YAAY,eAAe,CAAC,CAAC;QAC5D,CAAC;QAED,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,QAAQ,CAAC;QAExD,IAAI,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAC5C,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,GAAG,IAAI,oBAAU,CAAC,KAAK,EAAE,IAAoB,EAAE,EAAE;gBACrD,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBAExC,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;oBACnB,MAAM,GAAG,GAAG,IAAI,GAAG,EAAa,CAAC;oBACjC,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;wBAC1B,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC;4BACtC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC,CAAC;wBACtC,CAAC;oBACH,CAAC,CAAC,CAAC;oBACH,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC;gBAC/C,CAAC;qBAAM,CAAC;oBACN,MAAM,GAAG,GAAG,IAAI,GAAG,EAAe,CAAC;oBACnC,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;wBAC1B,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC;4BACtC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC;gCACjC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,EAAE,CAAC,CAAC;4BAClC,CAAC;4BACD,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,CAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;wBAC5C,CAAC;oBACH,CAAC,CAAC,CAAC;oBACH,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;gBAC7C,CAAC;YACH,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YAEpB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;QACzC,CAAC;QAED,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC;QAClE,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QAE9B,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAE5C,IAAI,WAAW,GAAG,CAAC,CAAC;QACpB,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;YACvB,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,IAAI,EAAE,CAAC;gBAC7B,MAAM,CAAC,YAAY,CAAC,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;gBAC5C,WAAW,EAAE,CAAC;YAChB,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,YAAY,CAAC,GAAG,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;YACrD,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,UAAU;QACR,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;QAClD,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;IACvB,CAAC;IAED;;OAEG;IACK,YAAY,CAAC,IAAU,EAAE,YAAqB,KAAK;QACzD,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,KAAK,EAAE,CAAC;YAChD,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QAC/C,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAvyBD,wBAuyBC"}
1
+ {"version":3,"file":"Hawiah.js","sourceRoot":"","sources":["../src/Hawiah.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ import { Hawiah } from './Hawiah';
2
+ import { Schema, SchemaDefinition } from './Schema';
3
+ import { IDriver } from './interfaces/IDriver';
4
+ /**
5
+ * A specialized Hawiah class designed for Next.js environments.
6
+ * Implements a singleton pattern (HMR-safe) to prevent multiple database connections during development.
7
+ */
8
+ export declare class HawiahNext extends Hawiah {
9
+ /**
10
+ * Creates a new instance that persists across Hot Module Replacements.
11
+ * @param options Configuration options
12
+ */
13
+ constructor(options: {
14
+ driver: IDriver | (new (config: any) => IDriver);
15
+ config?: any;
16
+ schema?: Schema | SchemaDefinition;
17
+ });
18
+ /**
19
+ * Creates a request-scoped instance sharing the same underlying connection.
20
+ * Useful for isolation in Server Components.
21
+ * @param name Table or Collection name
22
+ * @param schema Optional schema override
23
+ */
24
+ table(name: string, schema?: Schema | SchemaDefinition): Hawiah;
25
+ }
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.HawiahNext = void 0;
4
+ const Hawiah_1 = require("./Hawiah");
5
+ const Schema_1 = require("./Schema");
6
+ /**
7
+ * A specialized Hawiah class designed for Next.js environments.
8
+ * Implements a singleton pattern (HMR-safe) to prevent multiple database connections during development.
9
+ */
10
+ class HawiahNext extends Hawiah_1.Hawiah {
11
+ /**
12
+ * Creates a new instance that persists across Hot Module Replacements.
13
+ * @param options Configuration options
14
+ */
15
+ constructor(options) {
16
+ const config = options.config || {};
17
+ const driverName = typeof options.driver === 'function' ? options.driver.name : (options.driver.constructor?.name || 'Unknown');
18
+ const tableName = config.collectionName || config.tableName || config.collection || config.table || 'default';
19
+ const instanceKey = `HAWIAH_INST_${driverName}_${tableName}_${Hawiah_1.Hawiah.getPoolKey(options.driver, config)}`;
20
+ const g = globalThis;
21
+ const pool = g.__HAWIAH_INSTANCES__ || (g.__HAWIAH_INSTANCES__ = new Map());
22
+ if (pool.has(instanceKey)) {
23
+ const existing = pool.get(instanceKey);
24
+ if (options.schema) {
25
+ const newSchema = options.schema instanceof Schema_1.Schema ? options.schema : new Schema_1.Schema(options.schema);
26
+ existing.schema = newSchema;
27
+ if (existing.driver.setSchema) {
28
+ existing.driver.setSchema(newSchema);
29
+ }
30
+ }
31
+ return existing;
32
+ }
33
+ super(options);
34
+ pool.set(instanceKey, this);
35
+ }
36
+ /**
37
+ * Creates a request-scoped instance sharing the same underlying connection.
38
+ * Useful for isolation in Server Components.
39
+ * @param name Table or Collection name
40
+ * @param schema Optional schema override
41
+ */
42
+ table(name, schema) {
43
+ return new Hawiah_1.Hawiah({
44
+ driver: this.driver.table ? this.driver.table(name) : this.driver,
45
+ schema: schema || this.schema
46
+ });
47
+ }
48
+ }
49
+ exports.HawiahNext = HawiahNext;
50
+ //# sourceMappingURL=HawiahNext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HawiahNext.js","sourceRoot":"","sources":["../src/HawiahNext.ts"],"names":[],"mappings":";;;AAAA,qCAAkC;AAClC,qCAAoD;AAGpD;;;GAGG;AACH,MAAa,UAAW,SAAQ,eAAM;IAClC;;;OAGG;IACH,YAAY,OAIX;QACG,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC;QAEpC,MAAM,UAAU,GAAG,OAAO,OAAO,CAAC,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,IAAI,IAAI,SAAS,CAAC,CAAC;QAChI,MAAM,SAAS,GAAG,MAAM,CAAC,cAAc,IAAI,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,KAAK,IAAI,SAAS,CAAC;QAC9G,MAAM,WAAW,GAAG,eAAe,UAAU,IAAI,SAAS,IAAI,eAAM,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC;QAE1G,MAAM,CAAC,GAAG,UAAiB,CAAC;QAC5B,MAAM,IAAI,GAAG,CAAC,CAAC,oBAAoB,IAAI,CAAC,CAAC,CAAC,oBAAoB,GAAG,IAAI,GAAG,EAAE,CAAC,CAAC;QAE5E,IAAI,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC;YACxB,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,CAAe,CAAC;YAErD,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;gBACjB,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,YAAY,eAAM,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,eAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;gBAChG,QAAgB,CAAC,MAAM,GAAG,SAAS,CAAC;gBACrC,IAAK,QAAgB,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;oBACpC,QAAgB,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;gBAClD,CAAC;YACL,CAAC;YAED,OAAO,QAAe,CAAC;QAC3B,CAAC;QAED,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;IAChC,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,IAAY,EAAE,MAAkC;QAClD,OAAO,IAAI,eAAM,CAAC;YACd,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM;YACjE,MAAM,EAAE,MAAM,IAAI,IAAI,CAAC,MAAM;SAChC,CAAC,CAAC;IACP,CAAC;CACJ;AAjDD,gCAiDC"}
package/dist/Schema.d.ts CHANGED
@@ -26,19 +26,26 @@ export interface SchemaField {
26
26
  export interface SchemaDefinition {
27
27
  [key: string]: SchemaField | SchemaType;
28
28
  }
29
+ /**
30
+ * Ensures data integrity by validating input against a defined structure.
31
+ */
29
32
  export declare class Schema {
30
33
  private definition;
31
34
  constructor(definition: SchemaDefinition);
32
35
  /**
33
- * returns the schema definition
36
+ * Returns the raw schema definition.
34
37
  */
35
38
  getDefinition(): SchemaDefinition;
36
39
  /**
37
40
  * Validates and processes the data against the schema.
38
- * Throws an error if validation fails.
39
- * Returns the processed data (e.g. including defaults).
40
- * @param data - The data to validate
41
- * @param isPartial - If true, ignores "required" checks (useful for updates)
41
+ * - Applies default values.
42
+ * - Checks required fields (unless isPartial is true).
43
+ * - Validates data types.
44
+ *
45
+ * @param data The input data object.
46
+ * @param isPartial If true, skips 'required' checks (useful for updates).
47
+ * @returns The validated (and possibly modified) data object.
48
+ * @throws Error if validation fails.
42
49
  */
43
50
  validate(data: any, isPartial?: boolean): any;
44
51
  private checkType;
package/dist/Schema.js CHANGED
@@ -20,46 +20,46 @@ exports.DataTypes = {
20
20
  URL: 'url',
21
21
  ANY: 'any',
22
22
  };
23
+ /**
24
+ * Ensures data integrity by validating input against a defined structure.
25
+ */
23
26
  class Schema {
24
27
  definition;
25
28
  constructor(definition) {
26
29
  this.definition = definition;
27
30
  }
28
31
  /**
29
- * returns the schema definition
32
+ * Returns the raw schema definition.
30
33
  */
31
34
  getDefinition() {
32
35
  return this.definition;
33
36
  }
34
37
  /**
35
38
  * Validates and processes the data against the schema.
36
- * Throws an error if validation fails.
37
- * Returns the processed data (e.g. including defaults).
38
- * @param data - The data to validate
39
- * @param isPartial - If true, ignores "required" checks (useful for updates)
39
+ * - Applies default values.
40
+ * - Checks required fields (unless isPartial is true).
41
+ * - Validates data types.
42
+ *
43
+ * @param data The input data object.
44
+ * @param isPartial If true, skips 'required' checks (useful for updates).
45
+ * @returns The validated (and possibly modified) data object.
46
+ * @throws Error if validation fails.
40
47
  */
41
48
  validate(data, isPartial = false) {
42
49
  const validatedData = { ...data };
43
50
  for (const key in this.definition) {
44
51
  let rule = this.definition[key];
45
- // Normalize rule if it's just a type string
46
52
  if (typeof rule === 'string') {
47
53
  rule = { type: rule };
48
54
  }
49
55
  let value = validatedData[key];
50
- // specific check for handling "id" vs "_id" could vary, but let's stick to schema keys
51
- // Apply default if undefined (only if not partial, OR if partial and field is undefined but we want defaults?
52
- // Usually defaults are for creation. Let's skip defaults on partial update unless specifically needed.
53
- // For simplicity: skip defaults on partial if value is missing)
54
56
  if (!isPartial && value === undefined && rule.default !== undefined) {
55
57
  value = rule.default;
56
58
  validatedData[key] = value;
57
59
  }
58
- // Check required (only if not partial)
59
60
  if (!isPartial && rule.required && (value === undefined || value === null)) {
60
61
  throw new Error(`Validation Error: Field "${key}" is required.`);
61
62
  }
62
- // Type check (if value is present)
63
63
  if (value !== undefined && value !== null && rule.type !== 'any') {
64
64
  if (!this.checkType(value, rule.type)) {
65
65
  throw new Error(`Validation Error: Field "${key}" expected type ${rule.type}.`);
@@ -1 +1 @@
1
- {"version":3,"file":"Schema.js","sourceRoot":"","sources":["../src/Schema.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Schema.js","sourceRoot":"","sources":["../src/Schema.ts"],"names":[],"mappings":";;;AAWa,QAAA,SAAS,GAAG;IACrB,MAAM,EAAE,QAAsB;IAC9B,IAAI,EAAE,MAAoB;IAC1B,IAAI,EAAE,MAAoB;IAC1B,MAAM,EAAE,QAAsB;IAC9B,OAAO,EAAE,SAAuB;IAChC,KAAK,EAAE,OAAqB;IAC5B,MAAM,EAAE,QAAsB;IAC9B,OAAO,EAAE,SAAuB;IAChC,IAAI,EAAE,MAAoB;IAC1B,KAAK,EAAE,OAAqB;IAC5B,MAAM,EAAE,QAAsB;IAC9B,IAAI,EAAE,MAAoB;IAC1B,IAAI,EAAE,MAAoB;IAC1B,IAAI,EAAE,MAAoB;IAC1B,KAAK,EAAE,OAAqB;IAC5B,GAAG,EAAE,KAAmB;IACxB,GAAG,EAAE,KAAmB;CAC3B,CAAC;AAYF;;GAEG;AACH,MAAa,MAAM;IACP,UAAU,CAAmB;IAErC,YAAY,UAA4B;QACpC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IACjC,CAAC;IAED;;OAEG;IACH,aAAa;QACT,OAAO,IAAI,CAAC,UAAU,CAAC;IAC3B,CAAC;IAED;;;;;;;;;;OAUG;IACH,QAAQ,CAAC,IAAS,EAAE,YAAqB,KAAK;QAC1C,MAAM,aAAa,GAAQ,EAAE,GAAG,IAAI,EAAE,CAAC;QAEvC,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YAChC,IAAI,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;YAEhC,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAC3B,IAAI,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;YAC1B,CAAC;YAED,IAAI,KAAK,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;YAE/B,IAAI,CAAC,SAAS,IAAI,KAAK,KAAK,SAAS,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;gBAClE,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC;gBACrB,aAAa,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;YAC/B,CAAC;YAED,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC;gBACzE,MAAM,IAAI,KAAK,CAAC,4BAA4B,GAAG,gBAAgB,CAAC,CAAC;YACrE,CAAC;YAED,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;gBAC/D,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;oBACpC,MAAM,IAAI,KAAK,CAAC,4BAA4B,GAAG,mBAAmB,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;gBACpF,CAAC;YACL,CAAC;QACL,CAAC;QAED,OAAO,aAAa,CAAC;IACzB,CAAC;IAEO,SAAS,CAAC,KAAU,EAAE,IAAgB;QAC1C,QAAQ,IAAI,EAAE,CAAC;YACX,KAAK,QAAQ,CAAC;YACd,KAAK,MAAM,CAAC;YACZ,KAAK,MAAM;gBACP,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC;YAErC,KAAK,QAAQ,CAAC;YACd,KAAK,OAAO;gBACR,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAEtD,KAAK,SAAS;gBACV,OAAO,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YAEnC,KAAK,QAAQ;gBACT,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC;YAErC,KAAK,SAAS;gBACV,OAAO,OAAO,KAAK,KAAK,SAAS,CAAC;YAEtC,KAAK,OAAO;gBACR,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAEhC,KAAK,QAAQ,CAAC;YACd,KAAK,MAAM;gBACP,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAEhF,KAAK,MAAM;gBACP,OAAO,KAAK,YAAY,IAAI,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC;YAE7F,KAAK,MAAM;gBACP,OAAO,OAAO,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,YAAY,UAAU,CAAC;YAEhG,KAAK,MAAM;gBACP,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,iEAAiE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAEtH,KAAK,OAAO;gBACR,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,4BAA4B,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAEjF,KAAK,KAAK;gBACN,IAAI,OAAO,KAAK,KAAK,QAAQ;oBAAE,OAAO,KAAK,CAAC;gBAC5C,IAAI,CAAC;oBACD,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC;oBACf,OAAO,IAAI,CAAC;gBAChB,CAAC;gBAAC,MAAM,CAAC;oBACL,OAAO,KAAK,CAAC;gBACjB,CAAC;YAEL,KAAK,KAAK,CAAC;YACX;gBACI,OAAO,IAAI,CAAC;QACpB,CAAC;IACL,CAAC;CACJ;AA7GD,wBA6GC"}
@@ -1,10 +1,22 @@
1
1
  import { IDriver, Query, Data } from '../interfaces/IDriver';
2
+ /**
3
+ * MemoryDriver: A simple in-memory database driver for testing.
4
+ * Supports shared data (Pooling) via references.
5
+ */
2
6
  export declare class MemoryDriver implements IDriver {
3
7
  private data;
4
8
  private idCounter;
5
- dbType: 'sql' | 'nosql';
9
+ private connected;
10
+ private collectionName;
11
+ dbType: 'nosql';
12
+ constructor(options?: any);
6
13
  connect(): Promise<void>;
7
14
  disconnect(): Promise<void>;
15
+ isConnected(): boolean;
16
+ /**
17
+ * Returns a new instance for a different collection while sharing the same data array.
18
+ */
19
+ table(name: string): IDriver;
8
20
  set(data: Data): Promise<Data>;
9
21
  get(query: Query): Promise<Data[]>;
10
22
  getOne(query: Query): Promise<Data | null>;
@@ -13,6 +25,5 @@ export declare class MemoryDriver implements IDriver {
13
25
  exists(query: Query): Promise<boolean>;
14
26
  count(query: Query): Promise<number>;
15
27
  private matches;
16
- getAll(): Promise<Data[]>;
17
28
  clear(): Promise<void>;
18
29
  }
@@ -1,81 +1,94 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.MemoryDriver = void 0;
4
+ /**
5
+ * MemoryDriver: A simple in-memory database driver for testing.
6
+ * Supports shared data (Pooling) via references.
7
+ */
4
8
  class MemoryDriver {
5
- data = [];
6
- idCounter = 1;
9
+ data;
10
+ idCounter;
11
+ connected = false;
12
+ collectionName;
7
13
  dbType = 'nosql';
14
+ constructor(options = {}) {
15
+ this.collectionName = options.collectionName || 'default';
16
+ this.data = options.data || [];
17
+ this.idCounter = options.idCounter || { value: 1 };
18
+ }
8
19
  async connect() {
9
- this.data = [];
10
- this.idCounter = 1;
20
+ this.connected = true;
11
21
  }
12
22
  async disconnect() {
13
- this.data = [];
23
+ this.connected = false;
24
+ }
25
+ isConnected() {
26
+ return this.connected;
27
+ }
28
+ /**
29
+ * Returns a new instance for a different collection while sharing the same data array.
30
+ */
31
+ table(name) {
32
+ const newDriver = new MemoryDriver({
33
+ collectionName: name,
34
+ data: this.data,
35
+ idCounter: this.idCounter
36
+ });
37
+ newDriver.connected = this.connected;
38
+ return newDriver;
14
39
  }
15
40
  async set(data) {
16
41
  const record = {
17
- _id: this.idCounter++,
42
+ _id: this.idCounter.value++,
18
43
  ...data,
44
+ __col__: this.collectionName,
19
45
  _createdAt: new Date().toISOString(),
20
46
  };
21
47
  this.data.push(record);
22
48
  return record;
23
49
  }
24
50
  async get(query) {
25
- return this.data.filter(record => this.matches(record, query));
51
+ return this.data.filter(r => r.__col__ === this.collectionName && this.matches(r, query));
26
52
  }
27
53
  async getOne(query) {
28
- const record = this.data.find(record => this.matches(record, query));
54
+ const record = this.data.find(r => r.__col__ === this.collectionName && this.matches(r, query));
29
55
  return record || null;
30
56
  }
31
57
  async update(query, data) {
32
58
  let count = 0;
33
- this.data = this.data.map(record => {
34
- if (this.matches(record, query)) {
59
+ this.data.forEach((r, i) => {
60
+ if (r.__col__ === this.collectionName && this.matches(r, query)) {
35
61
  count++;
36
- return {
37
- ...record,
38
- ...data,
39
- _updatedAt: new Date().toISOString(),
40
- };
62
+ this.data[i] = { ...r, ...data, _updatedAt: new Date().toISOString() };
41
63
  }
42
- return record;
43
64
  });
44
65
  return count;
45
66
  }
46
67
  async delete(query) {
47
- const initialLength = this.data.length;
48
- this.data = this.data.filter(record => !this.matches(record, query));
49
- return initialLength - this.data.length;
68
+ const initialLen = this.data.length;
69
+ this.data = this.data.filter(r => !(r.__col__ === this.collectionName && this.matches(r, query)));
70
+ return initialLen - this.data.length;
50
71
  }
51
72
  async exists(query) {
52
- return this.data.some(record => this.matches(record, query));
73
+ return this.data.some(r => r.__col__ === this.collectionName && this.matches(r, query));
53
74
  }
54
75
  async count(query) {
55
- return this.data.filter(record => this.matches(record, query)).length;
76
+ return this.get(query).then(res => res.length);
56
77
  }
57
78
  matches(record, query) {
58
- if (Object.keys(query).length === 0) {
79
+ if (Object.keys(query).length === 0)
59
80
  return true;
60
- }
61
81
  return Object.keys(query).every(key => {
62
- const queryValue = query[key];
63
- const recordValue = record[key];
64
- if (typeof queryValue === 'object' && queryValue !== null) {
65
- if (typeof recordValue === 'object' && recordValue !== null) {
66
- return this.matches(recordValue, queryValue);
67
- }
68
- return false;
82
+ const qVal = query[key];
83
+ const rVal = record[key];
84
+ if (typeof qVal === 'object' && qVal !== null && typeof rVal === 'object' && rVal !== null) {
85
+ return this.matches(rVal, qVal);
69
86
  }
70
- return recordValue === queryValue;
87
+ return rVal === qVal;
71
88
  });
72
89
  }
73
- async getAll() {
74
- return [...this.data];
75
- }
76
90
  async clear() {
77
- this.data = [];
78
- this.idCounter = 1;
91
+ this.data = this.data.filter(r => r.__col__ !== this.collectionName);
79
92
  }
80
93
  }
81
94
  exports.MemoryDriver = MemoryDriver;
@@ -1 +1 @@
1
- {"version":3,"file":"MemoryDriver.js","sourceRoot":"","sources":["../../src/drivers/MemoryDriver.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MemoryDriver.js","sourceRoot":"","sources":["../../src/drivers/MemoryDriver.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  export { Hawiah } from './Hawiah';
2
+ export { HawiahNext } from './HawiahNext';
2
3
  export { IDriver, Query, Data } from './interfaces/IDriver';
3
4
  export { MemoryDriver } from './drivers/MemoryDriver';
4
5
  export { Schema, SchemaDefinition, SchemaType, SchemaField, DataTypes } from './Schema';
package/dist/index.js CHANGED
@@ -1,8 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.DataTypes = exports.Schema = exports.MemoryDriver = exports.Hawiah = void 0;
3
+ exports.DataTypes = exports.Schema = exports.MemoryDriver = exports.HawiahNext = exports.Hawiah = void 0;
4
4
  var Hawiah_1 = require("./Hawiah");
5
5
  Object.defineProperty(exports, "Hawiah", { enumerable: true, get: function () { return Hawiah_1.Hawiah; } });
6
+ var HawiahNext_1 = require("./HawiahNext");
7
+ Object.defineProperty(exports, "HawiahNext", { enumerable: true, get: function () { return HawiahNext_1.HawiahNext; } });
6
8
  var MemoryDriver_1 = require("./drivers/MemoryDriver");
7
9
  Object.defineProperty(exports, "MemoryDriver", { enumerable: true, get: function () { return MemoryDriver_1.MemoryDriver; } });
8
10
  var Schema_1 = require("./Schema");
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,mCAAkC;AAAzB,gGAAA,MAAM,OAAA;AAIf,uDAAsD;AAA7C,4GAAA,YAAY,OAAA;AACrB,mCAAwF;AAA/E,gGAAA,MAAM,OAAA;AAA6C,mGAAA,SAAS,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,mCAAkC;AAAzB,gGAAA,MAAM,OAAA;AACf,2CAA0C;AAAjC,wGAAA,UAAU,OAAA;AAInB,uDAAsD;AAA7C,4GAAA,YAAY,OAAA;AACrB,mCAAwF;AAA/E,gGAAA,MAAM,OAAA;AAA6C,mGAAA,SAAS,OAAA"}
@@ -1,77 +1,80 @@
1
1
  /**
2
- * Query interface for filtering data
2
+ * Query interface for filtering and selecting data
3
3
  */
4
4
  export interface Query {
5
5
  [key: string]: any;
6
6
  }
7
7
  /**
8
- * Data interface for storing information
8
+ * Generic data interface representing a database record
9
9
  */
10
10
  export interface Data {
11
11
  [key: string]: any;
12
12
  }
13
13
  /**
14
- * Driver interface that all database drivers must implement
14
+ * The standard interface that all database drivers must implement.
15
+ * Supports connection pooling, CRUD operations, and schema validation.
15
16
  */
16
17
  export interface IDriver {
17
18
  /**
18
- * Connect to the database
19
+ * The type of database (sql or nosql).
20
+ */
21
+ dbType?: 'sql' | 'nosql';
22
+ /**
23
+ * Establishes a connection to the database.
19
24
  */
20
25
  connect(): Promise<void>;
21
26
  /**
22
- * Disconnect from the database
27
+ * Closes the database connection.
23
28
  */
24
29
  disconnect(): Promise<void>;
25
30
  /**
26
- * Set/Insert data into the database
27
- * @param data - The data to store
28
- * @returns The stored data with any additional fields (like auto-generated IDs)
31
+ * Checks if the driver is currently connected.
32
+ */
33
+ isConnected?(): boolean;
34
+ /**
35
+ * Creates a new driver instance for a specific table/collection, sharing the same connection.
36
+ * @param name The name of the table or collection
37
+ */
38
+ table?(name: string): IDriver;
39
+ /**
40
+ * Inserts a new record into the database.
41
+ * @param data The data to insert
29
42
  */
30
43
  set(data: Data): Promise<Data>;
31
44
  /**
32
- * Get data from the database based on query
33
- * @param query - The query to filter data
34
- * @returns Array of matching records
45
+ * Retrieves records matching the query.
46
+ * @param query Filter criteria
35
47
  */
36
48
  get(query: Query): Promise<Data[]>;
37
49
  /**
38
- * Update data in the database
39
- * @param query - The query to find records to update
40
- * @param data - The new data to set
41
- * @returns Number of updated records
50
+ * Updates records matching the query.
51
+ * @param query Filter criteria
52
+ * @param data Data to update
42
53
  */
43
54
  update(query: Query, data: Data): Promise<number>;
44
55
  /**
45
- * Delete data from the database
46
- * @param query - The query to find records to delete
47
- * @returns Number of deleted records
56
+ * Deletes records matching the query.
57
+ * @param query Filter criteria
48
58
  */
49
59
  delete(query: Query): Promise<number>;
50
60
  /**
51
- * Get a single record from the database
52
- * @param query - The query to filter data
53
- * @returns A single matching record or null
61
+ * Retrieves a single record matching the query.
62
+ * @param query Filter criteria
54
63
  */
55
64
  getOne(query: Query): Promise<Data | null>;
56
65
  /**
57
- * Check if a record exists
58
- * @param query - The query to check
59
- * @returns True if exists, false otherwise
66
+ * Checks if any record matches the query.
67
+ * @param query Filter criteria
60
68
  */
61
69
  exists(query: Query): Promise<boolean>;
62
70
  /**
63
- * Count records matching the query
64
- * @param query - The query to filter data
65
- * @returns Number of matching records
71
+ * Counts the number of records matching the query.
72
+ * @param query Filter criteria
66
73
  */
67
74
  count(query: Query): Promise<number>;
68
75
  /**
69
- * Database type (sql or nosql)
70
- * Used to determine schema behavior
71
- */
72
- dbType?: 'sql' | 'nosql';
73
- /**
74
- * Optional: Set schema for the driver to use (e.g. for creating SQL tables)
76
+ * Sets the schema for the driver (optional support).
77
+ * @param schema The schema definition
75
78
  */
76
79
  setSchema?(schema: any): void;
77
80
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hawiah/core",
3
- "version": "1.1.2",
3
+ "version": "1.2.6",
4
4
  "description": "Core package for Hawiah - Schema-less database abstraction layer with relationships and DataLoader batching",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -35,11 +35,11 @@
35
35
  "license": "MIT",
36
36
  "repository": {
37
37
  "type": "git",
38
- "url": "https://github.com/Shuruhatik/hawiah-core"
38
+ "url": "git+https://github.com/hawiahjs/core.git"
39
39
  },
40
- "homepage": "https://hawiah.js.org/",
40
+ "homepage": "https://github.com/hawiahjs/core#readme",
41
41
  "bugs": {
42
- "url": "https://github.com/Shuruhatik/hawiah-core/issues"
42
+ "url": "https://github.com/hawiahjs/core/issues"
43
43
  },
44
44
  "dependencies": {
45
45
  "dataloader": "^2.2.3"
@@ -48,4 +48,4 @@
48
48
  "@types/node": "^20.0.0",
49
49
  "typescript": "^5.0.0"
50
50
  }
51
- }
51
+ }