mongolite-ts 0.4.0 → 0.5.0
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 +42 -0
- package/dist/bin/mongolite-debug.js +2 -2
- package/dist/bin/mongolite-debug.js.map +1 -1
- package/dist/collection.js +160 -9
- package/dist/collection.js.map +1 -1
- package/dist/cursors/findCursor.js +96 -2
- package/dist/cursors/findCursor.js.map +1 -1
- package/dist/debugger/query-debugger.js +2 -2
- package/dist/debugger/query-debugger.js.map +1 -1
- package/dist/document-utils.d.ts +34 -0
- package/dist/document-utils.js +101 -0
- package/dist/document-utils.js.map +1 -0
- package/dist/find-cursor.d.ts +51 -0
- package/dist/find-cursor.js +204 -0
- package/dist/find-cursor.js.map +1 -0
- package/dist/index.d.ts +8 -3
- package/dist/index.js +9 -2
- package/dist/index.js.map +1 -1
- package/dist/query-builder.d.ts +18 -0
- package/dist/query-builder.js +358 -0
- package/dist/query-builder.js.map +1 -0
- package/dist/update-operations.d.ts +17 -0
- package/dist/update-operations.js +147 -0
- package/dist/update-operations.js.map +1 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -16,6 +16,48 @@ A MongoDB-like client that uses SQLite as its underlying persistent store. Writt
|
|
|
16
16
|
* Written in TypeScript with strong typing.
|
|
17
17
|
* 100% test coverage (aiming for).
|
|
18
18
|
* **Interactive Query Debugger** - Debug complex queries with `npx mongolite-debug`
|
|
19
|
+
* **JSON Safety & Data Integrity** - Comprehensive protection against malformed JSON and data corruption
|
|
20
|
+
|
|
21
|
+
## JSON Safety & Data Integrity
|
|
22
|
+
|
|
23
|
+
MongoLite includes robust safeguards to prevent and handle malformed JSON data that could cause application failures or data corruption:
|
|
24
|
+
|
|
25
|
+
### Document Validation
|
|
26
|
+
- **Pre-storage validation**: Automatically validates documents before insertion to prevent storing invalid data
|
|
27
|
+
- **Type safety**: Rejects non-JSON-serializable data (functions, symbols, BigInt, RegExp, circular references)
|
|
28
|
+
- **Round-trip verification**: Ensures all data can be safely stored and retrieved
|
|
29
|
+
|
|
30
|
+
### Malformed JSON Recovery
|
|
31
|
+
- **Graceful degradation**: Handles corrupted JSON data without crashing your application
|
|
32
|
+
- **Automatic recovery**: Attempts to fix common JSON corruption issues (escaped quotes, backslashes)
|
|
33
|
+
- **Fallback objects**: Returns special marker objects for unrecoverable data with debugging information
|
|
34
|
+
- **Error logging**: Detailed logging for debugging and monitoring data integrity issues
|
|
35
|
+
|
|
36
|
+
### Example Usage
|
|
37
|
+
|
|
38
|
+
```typescript
|
|
39
|
+
// Document validation prevents invalid data
|
|
40
|
+
try {
|
|
41
|
+
await collection.insertOne({
|
|
42
|
+
name: 'user',
|
|
43
|
+
invalidFunction: () => 'not allowed' // This will be rejected
|
|
44
|
+
});
|
|
45
|
+
} catch (error) {
|
|
46
|
+
console.log('Validation error:', error.message);
|
|
47
|
+
// "Cannot insert document: Document validation failed: Functions are not allowed in documents"
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
// Corrupted data recovery
|
|
51
|
+
const doc = await collection.findOne({ _id: 'some-id' });
|
|
52
|
+
if (doc && '__mongoLiteCorrupted' in doc) {
|
|
53
|
+
console.log('Found corrupted document');
|
|
54
|
+
console.log('Original data:', doc.__originalData);
|
|
55
|
+
console.log('Error details:', doc.__error);
|
|
56
|
+
// Handle corruption appropriately
|
|
57
|
+
}
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
For detailed information about JSON safety features, see [JSON_SAFETY.md](./docs/JSON_SAFETY.md).
|
|
19
61
|
|
|
20
62
|
## Installation
|
|
21
63
|
|
|
@@ -71,7 +71,7 @@ async function main() {
|
|
|
71
71
|
'database.db',
|
|
72
72
|
'database.sqlite',
|
|
73
73
|
'app.db',
|
|
74
|
-
'app.sqlite'
|
|
74
|
+
'app.sqlite',
|
|
75
75
|
];
|
|
76
76
|
// Check if any common database files exist
|
|
77
77
|
const { existsSync } = await import('fs');
|
|
@@ -108,7 +108,7 @@ async function main() {
|
|
|
108
108
|
process.exit(1);
|
|
109
109
|
}
|
|
110
110
|
}
|
|
111
|
-
main().catch(error => {
|
|
111
|
+
main().catch((error) => {
|
|
112
112
|
console.error('Unexpected error:', error);
|
|
113
113
|
process.exit(1);
|
|
114
114
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mongolite-debug.js","sourceRoot":"","sources":["../../src/bin/mongolite-debug.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"mongolite-debug.js","sourceRoot":"","sources":["../../src/bin/mongolite-debug.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,uBAAuB;AACvB,SAAS,SAAS;IAMhB,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACnC,MAAM,OAAO,GAAQ,EAAE,CAAC;IAExB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QAEpB,IAAI,GAAG,KAAK,WAAW,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;YACxC,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;QACzB,CAAC;aAAM,IAAI,GAAG,KAAK,cAAc,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;YAClD,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QACjC,CAAC;aAAM,IAAI,GAAG,KAAK,YAAY,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;YAChD,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QAC/B,CAAC;aAAM,IAAI,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;YAC5C,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;QACtB,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,QAAQ;IACf,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;IACxC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,mDAAmD,CAAC,CAAC;IACjE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC;IACpD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IACxB,OAAO,CAAC,GAAG,CAAC,0EAA0E,CAAC,CAAC;IACxF,OAAO,CAAC,GAAG,CAAC,uDAAuD,CAAC,CAAC;IACrE,OAAO,CAAC,GAAG,CAAC,mDAAmD,CAAC,CAAC;IACjE,OAAO,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC;IAC1D,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;IACrC,OAAO,CAAC,GAAG,CAAC,qDAAqD,CAAC,CAAC;IACnE,OAAO,CAAC,GAAG,CAAC,kDAAkD,CAAC,CAAC;IAChE,OAAO,CAAC,GAAG,CAAC,8DAA8D,CAAC,CAAC;IAC5E,OAAO,CAAC,GAAG,CAAC,oEAAoE,CAAC,CAAC;IAClF,OAAO,CAAC,GAAG,CAAC,mDAAmD,CAAC,CAAC;IACjE,OAAO,CAAC,GAAG,CAAC,qDAAqD,CAAC,CAAC;IACnE,OAAO,CAAC,GAAG,CAAC,2EAA2E,CAAC,CAAC;IACzF,OAAO,CAAC,GAAG,CAAC,+CAA+C,CAAC,CAAC;IAC7D,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IACzB,OAAO,CAAC,GAAG,CAAC,8CAA8C,CAAC,CAAC;IAC5D,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC;IAC/C,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;IACxC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAC5B,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;IAC5C,OAAO,CAAC,GAAG,CAAC,mEAAmE,CAAC,CAAC;IACjF,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAClB,CAAC;AAED,KAAK,UAAU,IAAI;IACjB,MAAM,OAAO,GAAG,SAAS,EAAE,CAAC;IAE5B,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACjB,QAAQ,EAAE,CAAC;QACX,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,4CAA4C;IAC5C,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;QACtB,0DAA0D;QAC1D,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;QAC1B,MAAM,WAAW,GAAG;YAClB,cAAc;YACd,kBAAkB;YAClB,aAAa;YACb,iBAAiB;YACjB,QAAQ;YACR,YAAY;SACb,CAAC;QAEF,2CAA2C;QAC3C,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC;QAC1C,IAAI,OAAO,GAAG,KAAK,CAAC;QAEpB,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;YAC/B,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;YACpC,IAAI,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;gBACvB,OAAO,CAAC,QAAQ,GAAG,MAAM,CAAC;gBAC1B,OAAO,GAAG,IAAI,CAAC;gBACf,MAAM;YACR,CAAC;QACH,CAAC;QAED,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;QACpD,CAAC;IACH,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,2CAA2C,CAAC,CAAC;IACzD,OAAO,CAAC,GAAG,CAAC,gBAAgB,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;IAEhD,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;QACvB,OAAO,CAAC,GAAG,CAAC,0BAA0B,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;IAC9D,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEhB,IAAI,CAAC;QACH,MAAM,aAAa,GAAG,IAAI,aAAa,CAAC,OAAO,CAAC,CAAC;QACjD,MAAM,aAAa,CAAC,KAAK,EAAE,CAAC;IAC9B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,cAAc,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QAE9E,IAAI,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,CAAC;YACxE,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAClB,OAAO,CAAC,KAAK,CACX,gFAAgF,CACjF,CAAC;YACF,OAAO,CAAC,KAAK,CAAC,+DAA+D,CAAC,CAAC;QACjF,CAAC;QAED,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACrB,OAAO,CAAC,KAAK,CAAC,mBAAmB,EAAE,KAAK,CAAC,CAAC;IAC1C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
package/dist/collection.js
CHANGED
|
@@ -1,6 +1,137 @@
|
|
|
1
1
|
import { ObjectId } from 'bson';
|
|
2
2
|
import { FindCursor } from './cursors/findCursor.js';
|
|
3
3
|
import { extractRawIndexColumns } from './utils/indexing.js';
|
|
4
|
+
/**
|
|
5
|
+
* Safely stringifies JSON data with validation and error handling.
|
|
6
|
+
* Prevents storing malformed JSON that could cause parsing issues later.
|
|
7
|
+
* @param data The data to stringify
|
|
8
|
+
* @param context Optional context for error messages
|
|
9
|
+
* @returns The JSON string
|
|
10
|
+
* @throws Error if the data cannot be safely stringified
|
|
11
|
+
*/
|
|
12
|
+
function safeJsonStringify(data, context) {
|
|
13
|
+
try {
|
|
14
|
+
// First, validate that the data is JSON-serializable by attempting to stringify it
|
|
15
|
+
const jsonString = JSON.stringify(data);
|
|
16
|
+
// Verify that the stringified data can be parsed back (round-trip test)
|
|
17
|
+
try {
|
|
18
|
+
const parsed = JSON.parse(jsonString);
|
|
19
|
+
// Basic validation that the round-trip preserved the data structure
|
|
20
|
+
if (typeof data === 'object' && data !== null && typeof parsed !== 'object') {
|
|
21
|
+
throw new Error('Round-trip JSON validation failed: type mismatch');
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
catch (parseError) {
|
|
25
|
+
throw new Error(`Round-trip JSON validation failed: ${parseError instanceof Error ? parseError.message : 'Unknown parse error'}`);
|
|
26
|
+
}
|
|
27
|
+
return jsonString;
|
|
28
|
+
}
|
|
29
|
+
catch (error) {
|
|
30
|
+
const contextMsg = context ? ` in ${context}` : '';
|
|
31
|
+
if (error instanceof Error) {
|
|
32
|
+
throw new Error(`Failed to safely stringify JSON data${contextMsg}: ${error.message}`);
|
|
33
|
+
}
|
|
34
|
+
throw new Error(`Failed to safely stringify JSON data${contextMsg}: Unknown error`);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Safely parses JSON data with fallback mechanisms for malformed JSON.
|
|
39
|
+
* @param jsonString The JSON string to parse
|
|
40
|
+
* @param context Optional context for error messages and recovery
|
|
41
|
+
* @returns The parsed object or a fallback object
|
|
42
|
+
*/
|
|
43
|
+
function safeJsonParse(jsonString, context) {
|
|
44
|
+
if (!jsonString || typeof jsonString !== 'string') {
|
|
45
|
+
console.warn(`Invalid JSON string${context ? ` in ${context}` : ''}: not a string or empty`);
|
|
46
|
+
return {};
|
|
47
|
+
}
|
|
48
|
+
try {
|
|
49
|
+
return JSON.parse(jsonString);
|
|
50
|
+
}
|
|
51
|
+
catch (error) {
|
|
52
|
+
// Log the error for debugging
|
|
53
|
+
console.error(`JSON parse error${context ? ` in ${context}` : ''}: ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
54
|
+
console.error(`Malformed JSON string: ${jsonString.substring(0, 500)}${jsonString.length > 500 ? '...' : ''}`);
|
|
55
|
+
// Attempt to recover from common JSON corruption issues
|
|
56
|
+
try {
|
|
57
|
+
// Try to fix common escaping issues
|
|
58
|
+
let fixedJson = jsonString;
|
|
59
|
+
// Fix double-escaped quotes
|
|
60
|
+
fixedJson = fixedJson.replace(/\\"/g, '"');
|
|
61
|
+
// Fix improperly escaped backslashes
|
|
62
|
+
fixedJson = fixedJson.replace(/\\\\/g, '\\');
|
|
63
|
+
// Try parsing the fixed JSON
|
|
64
|
+
const recovered = JSON.parse(fixedJson);
|
|
65
|
+
console.warn(`Successfully recovered malformed JSON${context ? ` in ${context}` : ''}`);
|
|
66
|
+
return recovered;
|
|
67
|
+
}
|
|
68
|
+
catch (recoveryError) {
|
|
69
|
+
console.error(`JSON recovery failed${context ? ` in ${context}` : ''}: ${recoveryError instanceof Error ? recoveryError.message : 'Unknown error'}`);
|
|
70
|
+
// Last resort: return an empty object with a special marker
|
|
71
|
+
return {
|
|
72
|
+
__mongoLiteCorrupted: true,
|
|
73
|
+
__originalData: jsonString,
|
|
74
|
+
__error: error instanceof Error ? error.message : 'Unknown JSON parse error',
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Validates that a document is safe to store (no functions, circular references, etc.)
|
|
81
|
+
* @param doc The document to validate
|
|
82
|
+
* @param path Current path for error reporting
|
|
83
|
+
* @throws Error if the document contains invalid data
|
|
84
|
+
*/
|
|
85
|
+
function validateDocumentForStorage(doc, path = 'root') {
|
|
86
|
+
if (doc === null || doc === undefined) {
|
|
87
|
+
return;
|
|
88
|
+
}
|
|
89
|
+
if (typeof doc === 'function') {
|
|
90
|
+
throw new Error(`Document validation failed: Functions are not allowed in documents (found at ${path})`);
|
|
91
|
+
}
|
|
92
|
+
if (typeof doc === 'symbol') {
|
|
93
|
+
throw new Error(`Document validation failed: Symbols are not allowed in documents (found at ${path})`);
|
|
94
|
+
}
|
|
95
|
+
if (typeof doc === 'bigint') {
|
|
96
|
+
throw new Error(`Document validation failed: BigInt values are not supported, use regular numbers or strings (found at ${path})`);
|
|
97
|
+
}
|
|
98
|
+
if (doc instanceof RegExp) {
|
|
99
|
+
throw new Error(`Document validation failed: RegExp objects are not supported in documents (found at ${path})`);
|
|
100
|
+
}
|
|
101
|
+
if (Array.isArray(doc)) {
|
|
102
|
+
doc.forEach((item, index) => {
|
|
103
|
+
validateDocumentForStorage(item, `${path}[${index}]`);
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
else if (typeof doc === 'object') {
|
|
107
|
+
// Check for circular references by maintaining a Set of visited objects
|
|
108
|
+
const visited = new Set();
|
|
109
|
+
function checkCircular(obj, currentPath) {
|
|
110
|
+
if (visited.has(obj)) {
|
|
111
|
+
throw new Error(`Document validation failed: Circular reference detected at ${currentPath}`);
|
|
112
|
+
}
|
|
113
|
+
visited.add(obj);
|
|
114
|
+
for (const [key, value] of Object.entries(obj)) {
|
|
115
|
+
if (typeof value === 'object' && value !== null) {
|
|
116
|
+
checkCircular(value, `${currentPath}.${key}`);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
visited.delete(obj);
|
|
120
|
+
}
|
|
121
|
+
try {
|
|
122
|
+
checkCircular(doc, path);
|
|
123
|
+
}
|
|
124
|
+
catch (error) {
|
|
125
|
+
if (error instanceof Error && error.message.includes('Circular reference')) {
|
|
126
|
+
throw error;
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
// Validate each property
|
|
130
|
+
for (const [key, value] of Object.entries(doc)) {
|
|
131
|
+
validateDocumentForStorage(value, `${path}.${key}`);
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
}
|
|
4
135
|
/**
|
|
5
136
|
* MongoLiteCollection provides methods to interact with a specific SQLite table
|
|
6
137
|
* as if it were a MongoDB collection.
|
|
@@ -54,7 +185,14 @@ export class MongoLiteCollection {
|
|
|
54
185
|
const docId = doc._id || new ObjectId().toString();
|
|
55
186
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
56
187
|
const { _id, ...dataToStore } = { ...doc, _id: docId }; // Ensure _id is part of the internal structure
|
|
57
|
-
|
|
188
|
+
// Validate the document before storing
|
|
189
|
+
try {
|
|
190
|
+
validateDocumentForStorage(dataToStore);
|
|
191
|
+
}
|
|
192
|
+
catch (error) {
|
|
193
|
+
throw new Error(`Cannot insert document: ${error instanceof Error ? error.message : 'Unknown validation error'}`);
|
|
194
|
+
}
|
|
195
|
+
const jsonData = safeJsonStringify(dataToStore, `insertOne for document ${docId}`);
|
|
58
196
|
const sql = `INSERT INTO "${this.name}" (_id, data) VALUES (?, ?)`;
|
|
59
197
|
try {
|
|
60
198
|
await this.db.run(sql, [docId, jsonData]);
|
|
@@ -103,13 +241,20 @@ export class MongoLiteCollection {
|
|
|
103
241
|
async insertBatch(docs) {
|
|
104
242
|
const results = [];
|
|
105
243
|
// Prepare all documents and their data upfront
|
|
106
|
-
const preparedDocs = docs.map(doc => {
|
|
244
|
+
const preparedDocs = docs.map((doc) => {
|
|
107
245
|
const docId = doc._id || new ObjectId().toString();
|
|
108
246
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
109
247
|
const { _id, ...dataToStore } = { ...doc, _id: docId };
|
|
248
|
+
// Validate the document before storing
|
|
249
|
+
try {
|
|
250
|
+
validateDocumentForStorage(dataToStore);
|
|
251
|
+
}
|
|
252
|
+
catch (error) {
|
|
253
|
+
throw new Error(`Cannot insert document ${docId}: ${error instanceof Error ? error.message : 'Unknown validation error'}`);
|
|
254
|
+
}
|
|
110
255
|
return {
|
|
111
256
|
id: docId,
|
|
112
|
-
data:
|
|
257
|
+
data: safeJsonStringify(dataToStore, `insertBatch for document ${docId}`),
|
|
113
258
|
};
|
|
114
259
|
});
|
|
115
260
|
const insertBatchOperation = async () => {
|
|
@@ -139,7 +284,7 @@ export class MongoLiteCollection {
|
|
|
139
284
|
if (error.code === 'SQLITE_CONSTRAINT') {
|
|
140
285
|
// Find which document caused the constraint violation
|
|
141
286
|
const errorMessage = error.message;
|
|
142
|
-
const duplicateId = preparedDocs.find(doc => errorMessage.includes(doc.id))?.id || 'unknown';
|
|
287
|
+
const duplicateId = preparedDocs.find((doc) => errorMessage.includes(doc.id))?.id || 'unknown';
|
|
143
288
|
throw new Error(`Duplicate _id: ${duplicateId}`);
|
|
144
289
|
}
|
|
145
290
|
throw error;
|
|
@@ -211,7 +356,7 @@ export class MongoLiteCollection {
|
|
|
211
356
|
const newDocId = update.$set?._id || new ObjectId().toString();
|
|
212
357
|
const newDoc = { _id: newDocId, ...update.$set }; // Assuming $set is used for upsert
|
|
213
358
|
// Ensure _id is set
|
|
214
|
-
const jsonData =
|
|
359
|
+
const jsonData = safeJsonStringify(newDoc, `upsert for document ${newDocId}`);
|
|
215
360
|
const insertSql = `INSERT INTO "${this.name}" (_id, data) VALUES (?, ?)`;
|
|
216
361
|
try {
|
|
217
362
|
await this.db.run(insertSql, [newDocId, jsonData]);
|
|
@@ -233,7 +378,7 @@ export class MongoLiteCollection {
|
|
|
233
378
|
if (!rowToUpdate) {
|
|
234
379
|
return { acknowledged: true, matchedCount: 0, modifiedCount: 0, upsertedId: null };
|
|
235
380
|
}
|
|
236
|
-
const currentDoc =
|
|
381
|
+
const currentDoc = safeJsonParse(rowToUpdate.data, `updateOne for document ${rowToUpdate._id}`);
|
|
237
382
|
let modified = false;
|
|
238
383
|
// Process update operators
|
|
239
384
|
for (const operator in update) {
|
|
@@ -322,7 +467,10 @@ export class MongoLiteCollection {
|
|
|
322
467
|
if (modified) {
|
|
323
468
|
// Update the document in SQLite
|
|
324
469
|
const updateSql = `UPDATE "${this.name}" SET data = ? WHERE _id = ?`;
|
|
325
|
-
const updateParams = [
|
|
470
|
+
const updateParams = [
|
|
471
|
+
safeJsonStringify(currentDoc, `updateOne for document ${rowToUpdate._id}`),
|
|
472
|
+
rowToUpdate._id,
|
|
473
|
+
];
|
|
326
474
|
try {
|
|
327
475
|
await this.db.run(updateSql, updateParams);
|
|
328
476
|
}
|
|
@@ -366,7 +514,7 @@ export class MongoLiteCollection {
|
|
|
366
514
|
let modifiedCount = 0;
|
|
367
515
|
const updatedIds = [];
|
|
368
516
|
for (const rowToUpdate of rowsToUpdate) {
|
|
369
|
-
const currentDoc =
|
|
517
|
+
const currentDoc = safeJsonParse(rowToUpdate.data, `updateMany for document ${rowToUpdate._id}`);
|
|
370
518
|
let modified = false;
|
|
371
519
|
// Process update operators
|
|
372
520
|
for (const operator in update) {
|
|
@@ -458,7 +606,10 @@ export class MongoLiteCollection {
|
|
|
458
606
|
if (modified) {
|
|
459
607
|
// Update the document in SQLite
|
|
460
608
|
const updateSql = `UPDATE "${this.name}" SET data = ? WHERE _id = ?`;
|
|
461
|
-
const updateParams = [
|
|
609
|
+
const updateParams = [
|
|
610
|
+
safeJsonStringify(currentDoc, `updateMany for document ${rowToUpdate._id}`),
|
|
611
|
+
rowToUpdate._id,
|
|
612
|
+
];
|
|
462
613
|
try {
|
|
463
614
|
await this.db.run(updateSql, updateParams);
|
|
464
615
|
modifiedCount++;
|
package/dist/collection.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"collection.js","sourceRoot":"","sources":["../src/collection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AAiBhC,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAE7D;;;GAGG;AACH,MAAM,OAAO,mBAAmB;IAC9B,YACU,EAAY,EACJ,IAAY,EACX,UAAiC,EAAE;QAF5C,OAAE,GAAF,EAAE,CAAU;QACJ,SAAI,GAAJ,IAAI,CAAQ;QACX,YAAO,GAAP,OAAO,CAA4B;QAEpD,IAAI,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;YAC/B,wDAAwD;YACxD,+DAA+D;YAC/D,gEAAgE;YAChE,uDAAuD;YACvD,OAAO,CAAC,KAAK,CAAC,0BAA0B,IAAI,CAAC,IAAI,UAAU,EAAE,GAAG,CAAC,CAAC;QACpE,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAC,WAAW;QACtB,kFAAkF;QAClF,MAAM,cAAc,GAAG;oCACS,IAAI,CAAC,IAAI;;;;KAIxC,CAAC;QACF,uGAAuG;QACvG,oEAAoE;QACpE,2GAA2G;QAC3G,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YACnC,sEAAsE;QACxE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,yBAAyB,IAAI,CAAC,IAAI,IAAI,EAAE,KAAK,CAAC,CAAC;YAC7D,MAAM,KAAK,CAAC,CAAC,qCAAqC;QACpD,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,SAAS,CAAC,GAAsC;QACpD,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,oCAAoC;QAC9D,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,IAAI,IAAI,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC;QACnD,6DAA6D;QAC7D,MAAM,EAAE,GAAG,EAAE,GAAG,WAAW,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,+CAA+C;QAEvG,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;QAE7C,MAAM,GAAG,GAAG,gBAAgB,IAAI,CAAC,IAAI,6BAA6B,CAAC;QACnE,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC;YAC1C,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;QACnD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,mFAAmF;YACnF,OAAO,CAAC,KAAK,CAAC,iCAAiC,IAAI,CAAC,IAAI,GAAG,EAAE,KAAK,CAAC,CAAC;YACpE,iEAAiE;YACjE,IAAK,KAA+B,CAAC,IAAI,KAAK,mBAAmB,EAAE,CAAC;gBAClE,MAAM,IAAI,KAAK,CAAC,kBAAkB,KAAK,EAAE,CAAC,CAAC;YAC7C,CAAC;YACD,qBAAqB;YACrB,IAAK,KAA+B,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;gBAC5D,OAAO,IAAI,CAAC,gBAAgB,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,cAAc,KAAK,EAAE,CAAC,CAAC;YACjF,CAAC;YACD,MAAM,KAAK,CAAC,CAAC,wBAAwB;QACvC,CAAC;IACH,CAAC;IAED;;;;;;SAMK;IACL,KAAK,CAAC,UAAU,CAAC,IAA2C;QAC1D,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,oCAAoC;QAE9D,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtB,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,OAAO,GAAsB,EAAE,CAAC;QACtC,MAAM,SAAS,GAAG,GAAG,CAAC,CAAC,qEAAqE;QAE5F,+BAA+B;QAC/B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,SAAS,EAAE,CAAC;YAChD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,CAAC;YAC3C,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;YACnD,OAAO,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,CAAC;QAChC,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;;OAGG;IACK,KAAK,CAAC,WAAW,CAAC,IAA2C;QACnE,MAAM,OAAO,GAAsB,EAAE,CAAC;QAEtC,+CAA+C;QAC/C,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;YAClC,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,IAAI,IAAI,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC;YACnD,6DAA6D;YAC7D,MAAM,EAAE,GAAG,EAAE,GAAG,WAAW,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC;YACvD,OAAO;gBACL,EAAE,EAAE,KAAK;gBACT,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC;aAClC,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,MAAM,oBAAoB,GAAG,KAAK,IAAI,EAAE;YACtC,oBAAoB;YACpB,MAAM,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;YAExC,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,gBAAgB,IAAI,CAAC,IAAI,6BAA6B,CAAC;gBAEnE,kDAAkD;gBAClD,KAAK,MAAM,WAAW,IAAI,YAAY,EAAE,CAAC;oBACvC,MAAM,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,EAAE,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;oBAC3D,OAAO,CAAC,IAAI,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,CAAC,EAAE,EAAE,CAAC,CAAC;gBACnE,CAAC;gBAED,yBAAyB;gBACzB,MAAM,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC/B,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,wBAAwB;gBACxB,IAAI,CAAC;oBACH,MAAM,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBACjC,CAAC;gBAAC,OAAO,aAAa,EAAE,CAAC;oBACvB,OAAO,CAAC,KAAK,CAAC,4BAA4B,IAAI,CAAC,IAAI,GAAG,EAAE,aAAa,CAAC,CAAC;gBACzE,CAAC;gBAED,yCAAyC;gBACzC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;gBAEnB,8BAA8B;gBAC9B,IAAK,KAA+B,CAAC,IAAI,KAAK,mBAAmB,EAAE,CAAC;oBAClE,sDAAsD;oBACtD,MAAM,YAAY,GAAI,KAAe,CAAC,OAAO,CAAC;oBAC9C,MAAM,WAAW,GAAG,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,SAAS,CAAC;oBAC7F,MAAM,IAAI,KAAK,CAAC,kBAAkB,WAAW,EAAE,CAAC,CAAC;gBACnD,CAAC;gBAED,MAAM,KAAK,CAAC;YACd,CAAC;QACH,CAAC,CAAC;QAEF,IAAI,CAAC;YACH,MAAM,oBAAoB,EAAE,CAAC;QAC/B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAK,KAA+B,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;gBAC5D,sCAAsC;gBACtC,MAAM,IAAI,CAAC,gBAAgB,CACzB,oBAAoB,EACpB,mBAAmB,IAAI,CAAC,MAAM,YAAY,CAC3C,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,MAAM,KAAK,CAAC;YACd,CAAC;QACH,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,OAAO,CAAC,MAAiB,EAAE,UAA0B;QACzD,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC1C,IAAI,UAAU,EAAE,CAAC;YACf,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAC7B,CAAC;QACD,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC;QACvC,OAAO,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAChD,CAAC;IAED;;;;OAIG;IACH,IAAI,CAAC,SAAoB,EAAE;QACzB,sEAAsE;QACtE,OAAO,IAAI,UAAU,CAAI,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IACrE,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,SAAS,CACb,MAAiB,EACjB,MAAuB,EACvB,UAAgC,EAAE;QAElC,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;QAEzB,qCAAqC;QACrC,MAAM,eAAe,GAAc,EAAE,CAAC;QACtC,MAAM,WAAW,GAAG,IAAI,UAAU,CAAI,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,kBAAkB,CAAC,CACnF,MAAM,EACN,eAAe,CAChB,CAAC;QACF,MAAM,SAAS,GAAG,0BAA0B,IAAI,CAAC,IAAI,WAAW,WAAW,UAAU,CAAC;QAEtF,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,GAAG,CAAY,SAAS,EAAE,eAAe,CAAC,CAAC;QAE7E,IAAI,CAAC,WAAW,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;YACpC,sEAAsE;YACtE,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,EAAE,aAAa,EAAE,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;QACrF,CAAC;QACD,sEAAsE;QACtE,IAAI,CAAC,WAAW,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACnC,+CAA+C;YAC/C,IAAI,MAAM,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC3D,MAAM,IAAI,KAAK,CAAC,8DAA8D,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;YAC7F,CAAC;YACD,qCAAqC;YACrC,yEAAyE;YACzE,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,EAAE,GAAG,IAAI,IAAI,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC;YAC/D,MAAM,MAAM,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC,IAAI,EAAO,CAAC,CAAC,mCAAmC;YAC1F,oBAAoB;YACpB,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;YACxC,MAAM,SAAS,GAAG,gBAAgB,IAAI,CAAC,IAAI,6BAA6B,CAAC;YACzE,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;gBACnD,OAAO;oBACL,YAAY,EAAE,IAAI;oBAClB,YAAY,EAAE,CAAC;oBACf,aAAa,EAAE,CAAC;oBAChB,UAAU,EAAE,QAAQ;iBACrB,CAAC;YACJ,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,KAAK,CAAC,6CAA6C,IAAI,CAAC,IAAI,GAAG,EAAE,KAAK,CAAC,CAAC;gBAChF,IAAK,KAA+B,CAAC,IAAI,KAAK,mBAAmB,EAAE,CAAC;oBAClE,MAAM,IAAI,KAAK,CAAC,gCAAgC,QAAQ,EAAE,CAAC,CAAC;gBAC9D,CAAC;gBACD,MAAM,KAAK,CAAC,CAAC,wBAAwB;YACvC,CAAC;QACH,CAAC;QACD,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,EAAE,aAAa,EAAE,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;QACrF,CAAC;QAED,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAChD,IAAI,QAAQ,GAAG,KAAK,CAAC;QAErB,2BAA2B;QAC3B,KAAK,MAAM,QAAQ,IAAI,MAAM,EAAE,CAAC;YAC9B,MAAM,MAAM,GAAG,MAAM,CAAC,QAAiC,CAAC,CAAC;YACzD,IAAI,CAAC,MAAM;gBAAE,SAAS;YAEtB,QAAQ,QAAQ,EAAE,CAAC;gBACjB,KAAK,MAAM;oBACT,KAAK,MAAM,IAAI,IAAI,MAAM,EAAE,CAAC;wBAC1B,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;wBAC3B,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;wBAC7C,QAAQ,GAAG,IAAI,CAAC;oBAClB,CAAC;oBACD,MAAM;gBAER,KAAK,QAAQ;oBACX,KAAK,MAAM,IAAI,IAAI,MAAM,EAAE,CAAC;wBAC1B,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;wBACxC,QAAQ,GAAG,IAAI,CAAC;oBAClB,CAAC;oBACD,MAAM;gBAER,KAAK,MAAM;oBACT,KAAK,MAAM,IAAI,IAAI,MAAM,EAAE,CAAC;wBAC1B,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;wBAC3B,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;4BAC9B,MAAM,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;4BAChE,IAAI,OAAO,YAAY,KAAK,QAAQ,EAAE,CAAC;gCACrC,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,IAAI,EAAE,YAAY,GAAG,KAAK,CAAC,CAAC;gCAC5D,QAAQ,GAAG,IAAI,CAAC;4BAClB,CAAC;wBACH,CAAC;oBACH,CAAC;oBACD,MAAM;gBAER,KAAK,OAAO;oBACV,KAAK,MAAM,IAAI,IAAI,MAAM,EAAE,CAAC;wBAC1B,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;wBAC3B,MAAM,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;wBAE3D,IAAI,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;4BAChC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,IAAI,KAAK,EAAE,CAAC;gCACpE,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;oCAC/B,YAAY,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;oCAClC,QAAQ,GAAG,IAAI,CAAC;gCAClB,CAAC;4BACH,CAAC;iCAAM,CAAC;gCACN,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gCACzB,QAAQ,GAAG,IAAI,CAAC;4BAClB,CAAC;wBACH,CAAC;6BAAM,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;4BACtC,oDAAoD;4BACpD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,IAAI,KAAK,EAAE,CAAC;gCACpE,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;oCAC/B,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;oCACxD,QAAQ,GAAG,IAAI,CAAC;gCAClB,CAAC;4BACH,CAAC;iCAAM,CAAC;gCACN,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;gCAC/C,QAAQ,GAAG,IAAI,CAAC;4BAClB,CAAC;wBACH,CAAC;oBACH,CAAC;oBACD,MAAM;gBAER,KAAK,OAAO;oBACV,KAAK,MAAM,IAAI,IAAI,MAAM,EAAE,CAAC;wBAC1B,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;wBAC3B,MAAM,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;wBAE3D,IAAI,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;4BAChC,uBAAuB;4BACvB,MAAM,QAAQ,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;gCAC5C,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;oCAC1D,iDAAiD;oCACjD,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;gCACxD,CAAC;gCACD,OAAO,IAAI,KAAK,KAAK,CAAC;4BACxB,CAAC,CAAC,CAAC;4BAEH,IAAI,QAAQ,CAAC,MAAM,KAAK,YAAY,CAAC,MAAM,EAAE,CAAC;gCAC5C,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;gCAChD,QAAQ,GAAG,IAAI,CAAC;4BAClB,CAAC;wBACH,CAAC;oBACH,CAAC;oBACD,MAAM;YACV,CAAC;QACH,CAAC;QAED,IAAI,QAAQ,EAAE,CAAC;YACb,gCAAgC;YAChC,MAAM,SAAS,GAAG,WAAW,IAAI,CAAC,IAAI,8BAA8B,CAAC;YACrE,MAAM,YAAY,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC;YAEnE,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;YAC7C,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAK,KAA+B,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;oBAC5D,MAAM,IAAI,CAAC,gBAAgB,CACzB,KAAK,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,EAAE,YAAY,CAAC,EAChD,cAAc,WAAW,CAAC,GAAG,EAAE,CAChC,CAAC;gBACJ,CAAC;qBAAM,CAAC;oBACN,MAAM,KAAK,CAAC;gBACd,CAAC;YACH,CAAC;YAED,OAAO;gBACL,YAAY,EAAE,IAAI;gBAClB,YAAY,EAAE,CAAC;gBACf,aAAa,EAAE,CAAC,EAAE,mDAAmD;gBACrE,UAAU,EAAE,IAAI;aACjB,CAAC;QACJ,CAAC;QAED,OAAO;YACL,YAAY,EAAE,IAAI;YAClB,YAAY,EAAE,CAAC;YACf,aAAa,EAAE,CAAC,EAAE,uBAAuB;YACzC,UAAU,EAAE,IAAI;SACjB,CAAC;IACJ,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,UAAU,CAAC,MAAiB,EAAE,MAAuB;QACzD,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;QACzB,MAAM,eAAe,GAAc,EAAE,CAAC;QACtC,MAAM,WAAW,GAAG,IAAI,UAAU,CAAI,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,kBAAkB,CAAC,CACnF,MAAM,EACN,eAAe,CAChB,CAAC;QACF,MAAM,SAAS,GAAG,0BAA0B,IAAI,CAAC,IAAI,WAAW,WAAW,EAAE,CAAC;QAC9E,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,GAAG,CAAY,SAAS,EAAE,eAAe,CAAC,CAAC;QAC9E,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC9B,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,EAAE,aAAa,EAAE,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;QACrF,CAAC;QACD,IAAI,aAAa,GAAG,CAAC,CAAC;QACtB,MAAM,UAAU,GAAa,EAAE,CAAC;QAChC,KAAK,MAAM,WAAW,IAAI,YAAY,EAAE,CAAC;YACvC,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YAChD,IAAI,QAAQ,GAAG,KAAK,CAAC;YACrB,2BAA2B;YAC3B,KAAK,MAAM,QAAQ,IAAI,MAAM,EAAE,CAAC;gBAC9B,MAAM,MAAM,GAAG,MAAM,CAAC,QAAiC,CAAC,CAAC;gBACzD,IAAI,CAAC,MAAM;oBAAE,SAAS;gBACtB,QAAQ,QAAQ,EAAE,CAAC;oBACjB,KAAK,MAAM;wBACT,KAAK,MAAM,IAAI,IAAI,MAAM,EAAE,CAAC;4BAC1B,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;4BAC3B,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;4BAC7C,QAAQ,GAAG,IAAI,CAAC;wBAClB,CAAC;wBACD,MAAM;oBACR,KAAK,QAAQ;wBACX,KAAK,MAAM,IAAI,IAAI,MAAM,EAAE,CAAC;4BAC1B,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;4BACxC,QAAQ,GAAG,IAAI,CAAC;wBAClB,CAAC;wBACD,MAAM;oBACR,KAAK,MAAM;wBACT,KAAK,MAAM,IAAI,IAAI,MAAM,EAAE,CAAC;4BAC1B,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;4BAC3B,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;gCAC9B,MAAM,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;gCAChE,IAAI,OAAO,YAAY,KAAK,QAAQ,EAAE,CAAC;oCACrC,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,IAAI,EAAE,YAAY,GAAG,KAAK,CAAC,CAAC;oCAC5D,QAAQ,GAAG,IAAI,CAAC;gCAClB,CAAC;4BACH,CAAC;wBACH,CAAC;wBACD,MAAM;oBACR,KAAK,OAAO;wBACV,KAAK,MAAM,IAAI,IAAI,MAAM,EAAE,CAAC;4BAC1B,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;4BAC3B,MAAM,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;4BAC3D,IAAI,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;gCAChC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,IAAI,KAAK,EAAE,CAAC;oCACpE,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;wCAC/B,YAAY,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;wCAClC,QAAQ,GAAG,IAAI,CAAC;oCAClB,CAAC;gCACH,CAAC;qCAAM,CAAC;oCACN,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oCACzB,QAAQ,GAAG,IAAI,CAAC;gCAClB,CAAC;4BACH,CAAC;iCAAM,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;gCACtC,oDAAoD;gCACpD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,IAAI,KAAK,EAAE,CAAC;oCACpE,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;wCAC/B,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;wCACxD,QAAQ,GAAG,IAAI,CAAC;oCAClB,CAAC;gCACH,CAAC;qCAAM,CAAC;oCACN,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;oCAC/C,QAAQ,GAAG,IAAI,CAAC;gCAClB,CAAC;4BACH,CAAC;wBACH,CAAC;wBACD,MAAM;oBACR,KAAK,OAAO;wBACV,KAAK,MAAM,IAAI,IAAI,MAAM,EAAE,CAAC;4BAC1B,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;4BAC3B,MAAM,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;4BAC3D,IAAI,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;gCAChC,uBAAuB;gCACvB,MAAM,QAAQ,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;oCAC5C,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;wCAC1D,iDAAiD;wCACjD,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;oCACxD,CAAC;oCACD,OAAO,IAAI,KAAK,KAAK,CAAC;gCACxB,CAAC,CAAC,CAAC;gCAEH,IAAI,QAAQ,CAAC,MAAM,KAAK,YAAY,CAAC,MAAM,EAAE,CAAC;oCAC5C,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;oCAChD,QAAQ,GAAG,IAAI,CAAC;gCAClB,CAAC;4BACH,CAAC;wBACH,CAAC;wBACD,MAAM;oBACR,gCAAgC;oBAChC;wBACE,MAAM,IAAI,KAAK,CAAC,gCAAgC,QAAQ,EAAE,CAAC,CAAC;gBAChE,CAAC;YACH,CAAC;YACD,IAAI,QAAQ,EAAE,CAAC;gBACb,gCAAgC;gBAChC,MAAM,SAAS,GAAG,WAAW,IAAI,CAAC,IAAI,8BAA8B,CAAC;gBACrE,MAAM,YAAY,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC;gBACnE,IAAI,CAAC;oBACH,MAAM,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;oBAC3C,aAAa,EAAE,CAAC;oBAChB,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;gBACnC,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,IAAK,KAA+B,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;wBAC5D,MAAM,IAAI,CAAC,gBAAgB,CAAC,KAAK,IAAI,EAAE;4BACrC,MAAM,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;4BAC3C,aAAa,EAAE,CAAC;4BAChB,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;wBACnC,CAAC,EAAE,cAAc,WAAW,CAAC,GAAG,qBAAqB,CAAC,CAAC;oBACzD,CAAC;yBAAM,CAAC;wBACN,MAAM,KAAK,CAAC;oBACd,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QACD,OAAO;YACL,YAAY,EAAE,IAAI;YAClB,YAAY,EAAE,YAAY,CAAC,MAAM;YACjC,aAAa,EAAE,aAAa;YAC5B,UAAU,EAAE,IAAI,EAAE,8BAA8B;SACjD,CAAC;IACJ,CAAC;IAED;;;;;;;;;;;;;;;;OAgBG;IACH,KAAK,CAAC,WAAW,CACf,WAAwC,EACxC,UAA8B,EAAE;QAEhC,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;QAEzB,4CAA4C;QAC5C,MAAM,IAAI,GACR,OAAO,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC;QAEvE,sCAAsC;QACtC,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;QAE/D,+DAA+D;QAC/D,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;aACrC,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE,EAAE;YAC1B,oDAAoD;YACpD,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,KAAK,KAAK,KAAK,EAAE,CAAC;gBAC3C,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBAC3C,OAAO,sBAAsB,QAAQ,KAAK,SAAS,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;YAChF,CAAC;YACD,yCAAyC;YACzC,OAAO,OAAO,SAAS,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;QACpD,CAAC,CAAC;aACD,IAAI,CAAC,IAAI,CAAC,CAAC;QAEd,+BAA+B;QAC/B,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;QACpD,MAAM,cAAc,GAAG,UAAU,YAAY,yBAAyB,SAAS,SAAS,IAAI,CAAC,IAAI,MAAM,WAAW,GAAG,CAAC;QAEtH,IAAI,CAAC;YACH,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;gBACzB,OAAO,CAAC,GAAG,CAAC,kBAAkB,SAAS,kBAAkB,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;YACxE,CAAC;YACD,MAAM,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YACnC,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;QACjD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,wBAAwB,SAAS,kBAAkB,IAAI,CAAC,IAAI,GAAG,EAAE,KAAK,CAAC,CAAC;YACtF,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED;;;OAGG;IACK,iBAAiB,CAAC,IAAwB;QAChD,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,CACxC,CAAC,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,SAAS,EAAE,CACpE,CAAC;QACF,OAAO,GAAG,IAAI,CAAC,IAAI,IAAI,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;IAC/C,CAAC;IAED;;;;;OAKG;IACH,WAAW;QACT,OAAO;YACL,OAAO,EAAE,KAAK,IAA0B,EAAE;gBACxC,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;gBAEzB,IAAI,CAAC;oBACH,2DAA2D;oBAC3D,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,GAAG,CAC/B;qFACyE,EACzE,CAAC,IAAI,CAAC,IAAI,CAAC,CACZ,CAAC;oBAEF,MAAM,OAAO,GAAgB,EAAE,CAAC;oBAEhC,wDAAwD;oBACxD,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;wBAC5B,MAAM,SAAS,GAAc;4BAC3B,IAAI,EAAE,KAAK,CAAC,IAAI;4BAChB,GAAG,EAAE,EAAE;yBACR,CAAC;wBAEF,gEAAgE;wBAChE,8FAA8F;wBAC9F,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;wBACzC,SAAS,CAAC,MAAM,GAAG,QAAQ,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;wBAErD,kCAAkC;wBAClC,MAAM,UAAU,GAAG,sBAAsB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;wBACrD,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;4BAC7B,yDAAyD;4BACzD,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,SAAS,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;wBAChE,CAAC;wBACD,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;oBAC1B,CAAC;oBAED,OAAO,OAAO,CAAC;gBACjB,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,OAAO,CAAC,KAAK,CAAC,wCAAwC,IAAI,CAAC,IAAI,GAAG,EAAE,KAAK,CAAC,CAAC;oBAC3E,MAAM,KAAK,CAAC;gBACd,CAAC;YACH,CAAC;SACF,CAAC;IACJ,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,SAAS,CAAC,SAAiB;QAC/B,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;QAEzB,IAAI,CAAC;YACH,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;gBACzB,OAAO,CAAC,GAAG,CAAC,kBAAkB,SAAS,oBAAoB,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;YAC1E,CAAC;YACD,MAAM,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,yBAAyB,SAAS,GAAG,CAAC,CAAC;YAC1D,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;QACjD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,wBAAwB,SAAS,oBAAoB,IAAI,CAAC,IAAI,GAAG,EAAE,KAAK,CAAC,CAAC;YACxF,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,WAAW;QACf,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;QAEzB,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,EAAE,CAAC;YACnD,IAAI,YAAY,GAAG,CAAC,CAAC;YAErB,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;gBAC5B,6CAA6C;gBAC7C,IAAI,KAAK,CAAC,IAAI,KAAK,oBAAoB,IAAI,CAAC,IAAI,IAAI;oBAAE,SAAS;gBAE/D,MAAM,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,yBAAyB,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC;gBAC3D,YAAY,EAAE,CAAC;YACjB,CAAC;YAED,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC;QAC9C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,0CAA0C,IAAI,CAAC,IAAI,GAAG,EAAE,KAAK,CAAC,CAAC;YAC7E,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACK,aAAa,CAAC,IAAY;QAChC,uDAAuD;QACvD,0CAA0C;QAC1C,OAAO,MAAM,IAAI,GAAG,CAAC;IACvB,CAAC;IAED,+CAA+C;IAC/C,8DAA8D;IACtD,cAAc,CAAC,GAAQ,EAAE,IAAY,EAAE,KAAU;QACvD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC7B,IAAI,OAAO,GAAG,GAAG,CAAC;QAElB,0CAA0C;QAC1C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YACzC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YAEpB,4CAA4C;YAC5C,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK,SAAS,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC;gBACxD,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;YACpB,CAAC;iBAAM,IAAI,OAAO,OAAO,CAAC,GAAG,CAAC,KAAK,QAAQ,EAAE,CAAC;gBAC5C,4EAA4E;gBAC5E,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;YACpB,CAAC;YAED,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;QACzB,CAAC;QAED,iCAAiC;QACjC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;IACzC,CAAC;IAED,oBAAoB;IACpB,8DAA8D;IACtD,gBAAgB,CAAC,GAAQ,EAAE,IAAY;QAC7C,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC7B,IAAI,OAAO,GAAG,GAAG,CAAC;QAElB,0CAA0C;QAC1C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YACzC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YACpB,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK,SAAS,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,IAAI,OAAO,OAAO,CAAC,GAAG,CAAC,KAAK,QAAQ,EAAE,CAAC;gBAC5F,OAAO,CAAC,uCAAuC;YACjD,CAAC;YACD,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;QACzB,CAAC;QAED,uCAAuC;QACvC,OAAO,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;IACxC,CAAC;IAED,6BAA6B;IAC7B,8DAA8D;IACtD,cAAc,CAAC,GAAQ,EAAE,IAAY;QAC3C,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC7B,IAAI,OAAO,GAAG,GAAG,CAAC;QAElB,4BAA4B;QAC5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACrC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YACpB,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE,CAAC;gBAC/B,OAAO,SAAS,CAAC,CAAC,qBAAqB;YACzC,CAAC;YACD,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;QACzB,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,SAAS,CAAC,MAAiB;QAC/B,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;QAEzB,MAAM,eAAe,GAAc,EAAE,CAAC;QACtC,MAAM,WAAW,GAAG,IAAI,UAAU,CAAI,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,kBAAkB,CAAC,CACnF,MAAM,EACN,eAAe,CAChB,CAAC;QAEF,oDAAoD;QACpD,MAAM,QAAQ,GAAG,kCAAkC,IAAI,CAAC,IAAI,WAAW,WAAW,UAAU,CAAC;QAC7F,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,GAAG,CAAoB,QAAQ,EAAE,eAAe,CAAC,CAAC;QAEpF,MAAM,SAAS,GAAG;qBACD,IAAI,CAAC,IAAI;2CACa,IAAI,CAAC,IAAI,WAAW,WAAW;KACrE,CAAC;QAEF,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC;QAChD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAK,KAA+B,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;gBAC5D,MAAM,IAAI,CAAC,gBAAgB,CACzB,KAAK,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,EAAE,eAAe,CAAC,EACnD,qBAAqB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAC9C,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,MAAM,KAAK,CAAC;YACd,CAAC;QACH,CAAC;QAED,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC1E,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,UAAU,CAAC,MAAiB;QAChC,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;QAEzB,MAAM,eAAe,GAAc,EAAE,CAAC;QACtC,MAAM,WAAW,GAAG,IAAI,UAAU,CAAI,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,kBAAkB,CAAC,CACnF,MAAM,EACN,eAAe,CAChB,CAAC;QAEF,oDAAoD;QACpD,MAAM,QAAQ,GAAG,kCAAkC,IAAI,CAAC,IAAI,WAAW,WAAW,EAAE,CAAC;QACrF,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,GAAG,CAAoB,QAAQ,EAAE,eAAe,CAAC,CAAC;QAEpF,MAAM,SAAS,GAAG,gBAAgB,IAAI,CAAC,IAAI,WAAW,WAAW,EAAE,CAAC;QAEpE,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC;QAChD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAK,KAA+B,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;gBAC5D,MAAM,IAAI,CAAC,gBAAgB,CACzB,KAAK,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,EAAE,eAAe,CAAC,EACnD,0BAA0B,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CACnD,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,MAAM,KAAK,CAAC;YACd,CAAC;QACH,CAAC;QAED,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACnF,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,cAAc,CAAC,SAAoB,EAAE;QACzC,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;QAEzB,MAAM,cAAc,GAAc,EAAE,CAAC;QACrC,MAAM,WAAW,GAAG,IAAI,UAAU,CAAI,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,kBAAkB,CAAC,CACnF,MAAM,EACN,cAAc,CACf,CAAC;QACF,MAAM,QAAQ,GAAG,kCAAkC,IAAI,CAAC,IAAI,WAAW,WAAW,EAAE,CAAC;QAErF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,GAAG,CAAoB,QAAQ,EAAE,cAAc,CAAC,CAAC;QAC9E,OAAO,MAAM,EAAE,KAAK,IAAI,CAAC,CAAC;IAC5B,CAAC;IAED;;;;;;;;;OASG;IACK,KAAK,CAAC,gBAAgB,CAC5B,SAA2B,EAC3B,oBAA4B,EAC5B,UAAU,GAAG,CAAC,EACd,cAAc,GAAG,GAAG,EACpB,UAAU,GAAG,KAAK;QAElB,IAAI,UAAU,GAAG,CAAC,CAAC;QACnB,IAAI,OAAO,GAAG,cAAc,CAAC;QAE7B,OAAO,IAAI,EAAE,CAAC;YACZ,IAAI,CAAC;gBACH,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;oBACnB,OAAO,CAAC,IAAI,CACV,iBAAiB,UAAU,IAAI,UAAU,QAAQ,oBAAoB,UAAU,OAAO,aAAa,CACpG,CAAC;gBACJ,CAAC;gBACD,OAAO,MAAM,SAAS,EAAE,CAAC;YAC3B,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAK,KAA+B,CAAC,IAAI,KAAK,aAAa,IAAI,UAAU,GAAG,UAAU,EAAE,CAAC;oBACvF,UAAU,EAAE,CAAC;oBAEb,6CAA6C;oBAC7C,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;wBAC5B,wFAAwF;wBACxF,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC,sCAAsC;wBACjF,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,CAAC,GAAG,MAAM,EAAE,UAAU,CAAC,CAAC;wBACrD,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;oBAC/B,CAAC,CAAC,CAAC;oBAEH,sCAAsC;oBACtC,SAAS;gBACX,CAAC;gBAED,gEAAgE;gBAChE,IAAI,UAAU,IAAI,UAAU,IAAK,KAA+B,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;oBACxF,OAAO,CAAC,KAAK,CACX,oBAAoB,UAAU,iBAAiB,oBAAoB,qBAAqB,CACzF,CAAC;gBACJ,CAAC;gBACD,MAAM,KAAK,CAAC;YACd,CAAC;QACH,CAAC;IACH,CAAC;CACF"}
|
|
1
|
+
{"version":3,"file":"collection.js","sourceRoot":"","sources":["../src/collection.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Safely parses JSON data with fallback mechanisms for malformed JSON.
|
|
3
|
+
* @param jsonString The JSON string to parse
|
|
4
|
+
* @param context Optional context for error messages and recovery
|
|
5
|
+
* @returns The parsed object or a fallback object
|
|
6
|
+
*/
|
|
7
|
+
function safeJsonParse(jsonString, context) {
|
|
8
|
+
if (!jsonString || typeof jsonString !== 'string') {
|
|
9
|
+
console.warn(`Invalid JSON string${context ? ` in ${context}` : ''}: not a string or empty`);
|
|
10
|
+
return {};
|
|
11
|
+
}
|
|
12
|
+
try {
|
|
13
|
+
return JSON.parse(jsonString);
|
|
14
|
+
}
|
|
15
|
+
catch (error) {
|
|
16
|
+
// Log the error for debugging
|
|
17
|
+
console.error(`JSON parse error${context ? ` in ${context}` : ''}: ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
18
|
+
console.error(`Malformed JSON string: ${jsonString.substring(0, 500)}${jsonString.length > 500 ? '...' : ''}`);
|
|
19
|
+
// Attempt to recover from common JSON corruption issues
|
|
20
|
+
try {
|
|
21
|
+
// Try to fix common escaping issues
|
|
22
|
+
let fixedJson = jsonString;
|
|
23
|
+
// Fix double-escaped quotes
|
|
24
|
+
fixedJson = fixedJson.replace(/\\"/g, '"');
|
|
25
|
+
// Fix improperly escaped backslashes
|
|
26
|
+
fixedJson = fixedJson.replace(/\\\\/g, '\\');
|
|
27
|
+
// Try parsing the fixed JSON
|
|
28
|
+
const recovered = JSON.parse(fixedJson);
|
|
29
|
+
console.warn(`Successfully recovered malformed JSON${context ? ` in ${context}` : ''}`);
|
|
30
|
+
return recovered;
|
|
31
|
+
}
|
|
32
|
+
catch (recoveryError) {
|
|
33
|
+
console.error(`JSON recovery failed${context ? ` in ${context}` : ''}: ${recoveryError instanceof Error ? recoveryError.message : 'Unknown error'}`);
|
|
34
|
+
// Last resort: return an empty object with a special marker
|
|
35
|
+
return {
|
|
36
|
+
__mongoLiteCorrupted: true,
|
|
37
|
+
__originalData: jsonString,
|
|
38
|
+
__error: error instanceof Error ? error.message : 'Unknown JSON parse error',
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}
|
|
1
43
|
/**
|
|
2
44
|
* Helper function to convert JavaScript values to SQLite-compatible values.
|
|
3
45
|
* This ensures that boolean values are converted to 0/1 integers that SQLite can handle.
|
|
46
|
+
* Date objects are converted to ISO strings for SQLite storage and comparison.
|
|
4
47
|
* @param value The value to convert
|
|
5
48
|
* @returns A SQLite-compatible value
|
|
6
49
|
*/
|
|
@@ -8,8 +51,45 @@ function toSQLiteValue(value) {
|
|
|
8
51
|
if (typeof value === 'boolean') {
|
|
9
52
|
return value ? 1 : 0;
|
|
10
53
|
}
|
|
54
|
+
if (value instanceof Date) {
|
|
55
|
+
return value.toISOString();
|
|
56
|
+
}
|
|
11
57
|
return value;
|
|
12
58
|
}
|
|
59
|
+
/**
|
|
60
|
+
* Helper function to recursively restore Date objects from JSON-parsed data.
|
|
61
|
+
* Converts ISO date strings back to Date objects.
|
|
62
|
+
* @param obj The object to process
|
|
63
|
+
* @returns The object with Date strings converted back to Date objects
|
|
64
|
+
*/
|
|
65
|
+
function restoreDates(obj) {
|
|
66
|
+
if (obj === null || obj === undefined) {
|
|
67
|
+
return obj;
|
|
68
|
+
}
|
|
69
|
+
if (typeof obj === 'string') {
|
|
70
|
+
// Check if string is an ISO date string
|
|
71
|
+
const isoDateRegex = /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d{3})?Z$/;
|
|
72
|
+
if (isoDateRegex.test(obj)) {
|
|
73
|
+
const date = new Date(obj);
|
|
74
|
+
// Verify it's a valid date and the string represents the same date
|
|
75
|
+
if (!isNaN(date.getTime()) && date.toISOString() === obj) {
|
|
76
|
+
return date;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
return obj;
|
|
80
|
+
}
|
|
81
|
+
if (Array.isArray(obj)) {
|
|
82
|
+
return obj.map((item) => restoreDates(item));
|
|
83
|
+
}
|
|
84
|
+
if (typeof obj === 'object') {
|
|
85
|
+
const result = {};
|
|
86
|
+
for (const [key, value] of Object.entries(obj)) {
|
|
87
|
+
result[key] = restoreDates(value);
|
|
88
|
+
}
|
|
89
|
+
return result;
|
|
90
|
+
}
|
|
91
|
+
return obj;
|
|
92
|
+
}
|
|
13
93
|
/**
|
|
14
94
|
* Represents a cursor for find operations, allowing chaining of limit, skip, and sort.
|
|
15
95
|
*/
|
|
@@ -68,6 +148,11 @@ export class FindCursor {
|
|
|
68
148
|
if (value === null) {
|
|
69
149
|
return `${jsonPath} IS NULL`;
|
|
70
150
|
}
|
|
151
|
+
// Handle Date objects with exact equality
|
|
152
|
+
if (value instanceof Date) {
|
|
153
|
+
params.push(toSQLiteValue(value));
|
|
154
|
+
return `${jsonPath} = ?`;
|
|
155
|
+
}
|
|
71
156
|
// Handle string matching for equality and array matching as par mongodb client
|
|
72
157
|
params.push(toSQLiteValue(value));
|
|
73
158
|
params.push(toSQLiteValue(value));
|
|
@@ -250,7 +335,13 @@ export class FindCursor {
|
|
|
250
335
|
}
|
|
251
336
|
else {
|
|
252
337
|
// Regular field with JSON path
|
|
253
|
-
if (
|
|
338
|
+
if (value instanceof Date) {
|
|
339
|
+
// Handle Date objects for simple equality
|
|
340
|
+
const jsonPath = this.parseJsonPath(key);
|
|
341
|
+
conditions.push(`json_extract(data, ${jsonPath}) = ?`);
|
|
342
|
+
params.push(toSQLiteValue(value));
|
|
343
|
+
}
|
|
344
|
+
else if (typeof value === 'object' && value !== null) {
|
|
254
345
|
// Check if any key is an operator
|
|
255
346
|
const hasOperators = Object.keys(value).some((k) => k.startsWith('$'));
|
|
256
347
|
if (hasOperators) {
|
|
@@ -464,9 +555,12 @@ export class FindCursor {
|
|
|
464
555
|
finalSql += ` OFFSET ?`;
|
|
465
556
|
finalParams.push(this.skipCount);
|
|
466
557
|
}
|
|
558
|
+
// Handle malformed json in the database
|
|
467
559
|
const rows = await this.db.all(finalSql, finalParams);
|
|
468
560
|
return rows.map((row) => {
|
|
469
|
-
const
|
|
561
|
+
const parsedData = safeJsonParse(row.data, `findCursor toArray for document ${row._id}`);
|
|
562
|
+
const restoredData = restoreDates(parsedData);
|
|
563
|
+
const doc = { _id: row._id, ...restoredData };
|
|
470
564
|
return this.applyProjection(doc);
|
|
471
565
|
});
|
|
472
566
|
}
|