@sochdb/sochdb 0.4.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/LICENSE +201 -0
- package/README.md +3349 -0
- package/_bin/aarch64-apple-darwin/libsochdb_storage.dylib +0 -0
- package/_bin/aarch64-apple-darwin/sochdb-bulk +0 -0
- package/_bin/aarch64-apple-darwin/sochdb-grpc-server +0 -0
- package/_bin/aarch64-apple-darwin/sochdb-server +0 -0
- package/_bin/x86_64-pc-windows-msvc/sochdb-bulk.exe +0 -0
- package/_bin/x86_64-pc-windows-msvc/sochdb-grpc-server.exe +0 -0
- package/_bin/x86_64-pc-windows-msvc/sochdb_storage.dll +0 -0
- package/_bin/x86_64-unknown-linux-gnu/libsochdb_storage.so +0 -0
- package/_bin/x86_64-unknown-linux-gnu/sochdb-bulk +0 -0
- package/_bin/x86_64-unknown-linux-gnu/sochdb-grpc-server +0 -0
- package/_bin/x86_64-unknown-linux-gnu/sochdb-server +0 -0
- package/bin/sochdb-bulk.js +80 -0
- package/bin/sochdb-grpc-server.js +80 -0
- package/bin/sochdb-server.js +84 -0
- package/dist/cjs/analytics.js +196 -0
- package/dist/cjs/database.js +929 -0
- package/dist/cjs/embedded/database.js +236 -0
- package/dist/cjs/embedded/ffi/bindings.js +113 -0
- package/dist/cjs/embedded/ffi/library-finder.js +135 -0
- package/dist/cjs/embedded/index.js +14 -0
- package/dist/cjs/embedded/transaction.js +172 -0
- package/dist/cjs/errors.js +71 -0
- package/dist/cjs/format.js +176 -0
- package/dist/cjs/grpc-client.js +328 -0
- package/dist/cjs/index.js +75 -0
- package/dist/cjs/ipc-client.js +504 -0
- package/dist/cjs/query.js +154 -0
- package/dist/cjs/server-manager.js +295 -0
- package/dist/cjs/sql-engine.js +874 -0
- package/dist/esm/analytics.js +196 -0
- package/dist/esm/database.js +931 -0
- package/dist/esm/embedded/database.js +239 -0
- package/dist/esm/embedded/ffi/bindings.js +142 -0
- package/dist/esm/embedded/ffi/library-finder.js +135 -0
- package/dist/esm/embedded/index.js +14 -0
- package/dist/esm/embedded/transaction.js +176 -0
- package/dist/esm/errors.js +71 -0
- package/dist/esm/format.js +179 -0
- package/dist/esm/grpc-client.js +333 -0
- package/dist/esm/index.js +75 -0
- package/dist/esm/ipc-client.js +505 -0
- package/dist/esm/query.js +159 -0
- package/dist/esm/server-manager.js +295 -0
- package/dist/esm/sql-engine.js +875 -0
- package/dist/types/analytics.d.ts +66 -0
- package/dist/types/analytics.d.ts.map +1 -0
- package/dist/types/database.d.ts +523 -0
- package/dist/types/database.d.ts.map +1 -0
- package/dist/types/embedded/database.d.ts +105 -0
- package/dist/types/embedded/database.d.ts.map +1 -0
- package/dist/types/embedded/ffi/bindings.d.ts +24 -0
- package/dist/types/embedded/ffi/bindings.d.ts.map +1 -0
- package/dist/types/embedded/ffi/library-finder.d.ts +17 -0
- package/dist/types/embedded/ffi/library-finder.d.ts.map +1 -0
- package/dist/types/embedded/index.d.ts +9 -0
- package/dist/types/embedded/index.d.ts.map +1 -0
- package/dist/types/embedded/transaction.d.ts +21 -0
- package/dist/types/embedded/transaction.d.ts.map +1 -0
- package/dist/types/errors.d.ts +36 -0
- package/dist/types/errors.d.ts.map +1 -0
- package/dist/types/format.d.ts +117 -0
- package/dist/types/format.d.ts.map +1 -0
- package/dist/types/grpc-client.d.ts +120 -0
- package/dist/types/grpc-client.d.ts.map +1 -0
- package/dist/types/index.d.ts +50 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/ipc-client.d.ts +177 -0
- package/dist/types/ipc-client.d.ts.map +1 -0
- package/dist/types/query.d.ts +85 -0
- package/dist/types/query.d.ts.map +1 -0
- package/dist/types/server-manager.d.ts +29 -0
- package/dist/types/server-manager.d.ts.map +1 -0
- package/dist/types/sql-engine.d.ts +100 -0
- package/dist/types/sql-engine.d.ts.map +1 -0
- package/package.json +90 -0
- package/scripts/postinstall.js +50 -0
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.EmbeddedTransaction = void 0;
|
|
37
|
+
const errors_1 = require("../errors");
|
|
38
|
+
const bindings_1 = require("./ffi/bindings");
|
|
39
|
+
const koffi = __importStar(require("koffi"));
|
|
40
|
+
class EmbeddedTransaction {
|
|
41
|
+
constructor(db, dbHandle, txnHandle) {
|
|
42
|
+
this.committed = false;
|
|
43
|
+
this.aborted = false;
|
|
44
|
+
this.db = db;
|
|
45
|
+
this.dbHandle = dbHandle;
|
|
46
|
+
this.txnHandle = txnHandle;
|
|
47
|
+
this.bindings = bindings_1.NativeBindings.getInstance();
|
|
48
|
+
}
|
|
49
|
+
async put(key, value) {
|
|
50
|
+
this.ensureActive();
|
|
51
|
+
const res = this.bindings.sochdb_put(this.dbHandle, this.txnHandle, key, key.length, value, value.length);
|
|
52
|
+
if (res !== 0) {
|
|
53
|
+
throw new errors_1.DatabaseError('Failed to put value');
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
async get(key) {
|
|
57
|
+
this.ensureActive();
|
|
58
|
+
const outPtr = [null];
|
|
59
|
+
const outLen = [0];
|
|
60
|
+
// returns 0 on success, 1 on not found, -1 on error
|
|
61
|
+
const res = this.bindings.sochdb_get(this.dbHandle, this.txnHandle, key, key.length, outPtr, outLen);
|
|
62
|
+
if (res === 1) { // Not found
|
|
63
|
+
return null;
|
|
64
|
+
}
|
|
65
|
+
if (res !== 0) {
|
|
66
|
+
throw new errors_1.DatabaseError('Failed to get value');
|
|
67
|
+
}
|
|
68
|
+
// Copy buffer
|
|
69
|
+
const ptr = outPtr[0];
|
|
70
|
+
const len = outLen[0];
|
|
71
|
+
const buffer = Buffer.from(koffi.decode(ptr, 'uint8', len));
|
|
72
|
+
// Free native memory
|
|
73
|
+
this.bindings.sochdb_free_bytes(ptr, len);
|
|
74
|
+
return buffer;
|
|
75
|
+
}
|
|
76
|
+
async delete(key) {
|
|
77
|
+
this.ensureActive();
|
|
78
|
+
const res = this.bindings.sochdb_delete(this.dbHandle, this.txnHandle, key, key.length);
|
|
79
|
+
if (res !== 0) {
|
|
80
|
+
throw new errors_1.DatabaseError('Failed to delete value');
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
async putPath(path, value) {
|
|
84
|
+
this.ensureActive();
|
|
85
|
+
const res = this.bindings.sochdb_put_path(this.dbHandle, this.txnHandle, path, value, value.length);
|
|
86
|
+
if (res !== 0) {
|
|
87
|
+
throw new errors_1.DatabaseError('Failed to put path');
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
async getPath(path) {
|
|
91
|
+
this.ensureActive();
|
|
92
|
+
const outPtr = [null];
|
|
93
|
+
const outLen = [0];
|
|
94
|
+
const res = this.bindings.sochdb_get_path(this.dbHandle, this.txnHandle, path, outPtr, outLen);
|
|
95
|
+
if (res === 1) {
|
|
96
|
+
return null;
|
|
97
|
+
}
|
|
98
|
+
if (res !== 0) {
|
|
99
|
+
throw new errors_1.DatabaseError('Failed to get path');
|
|
100
|
+
}
|
|
101
|
+
const ptr = outPtr[0];
|
|
102
|
+
const len = outLen[0];
|
|
103
|
+
const buffer = Buffer.from(koffi.decode(ptr, 'uint8', len));
|
|
104
|
+
this.bindings.sochdb_free_bytes(ptr, len);
|
|
105
|
+
return buffer;
|
|
106
|
+
}
|
|
107
|
+
async *scanPrefix(prefix) {
|
|
108
|
+
this.ensureActive();
|
|
109
|
+
const iter = this.bindings.sochdb_scan_prefix(this.dbHandle, this.txnHandle, prefix, prefix.length);
|
|
110
|
+
if (!iter)
|
|
111
|
+
return;
|
|
112
|
+
try {
|
|
113
|
+
const keyPtr = [null];
|
|
114
|
+
const keyLen = [0];
|
|
115
|
+
const valPtr = [null];
|
|
116
|
+
const valLen = [0];
|
|
117
|
+
while (true) {
|
|
118
|
+
// Returns 0 on success, 1 on done, -1 on error
|
|
119
|
+
const res = this.bindings.sochdb_iterator_next(iter, keyPtr, keyLen, valPtr, valLen);
|
|
120
|
+
if (res === 1)
|
|
121
|
+
break; // Done
|
|
122
|
+
if (res !== 0)
|
|
123
|
+
throw new errors_1.DatabaseError('Scan failed');
|
|
124
|
+
// Decode key
|
|
125
|
+
const k = Buffer.from(koffi.decode(keyPtr[0], 'uint8', keyLen[0]));
|
|
126
|
+
// koffi automatically handles pointers, but here we received a pointer value into keyPtr[0]
|
|
127
|
+
// Wait, keyPtr is passed as out(pointer(uint8*)).
|
|
128
|
+
// So keyPtr[0] IS the pointer.
|
|
129
|
+
// Rust scan_next allocates new boxed slices for key and value?
|
|
130
|
+
// Yes: `let mut key_buf = key.into_boxed_slice();`
|
|
131
|
+
// So we own it and must free it?
|
|
132
|
+
// `let _ = Box::into_raw(key_buf);` -> leaks.
|
|
133
|
+
// But `sochdb_scan_next` doesn't seem to export a free function for these individual items?
|
|
134
|
+
// Wait, `sochdb_scan_next` returns them. Does the caller free them?
|
|
135
|
+
// Usually yes. `NativeBindings` has `sochdb_free_bytes`.
|
|
136
|
+
this.bindings.sochdb_free_bytes(keyPtr[0], keyLen[0]);
|
|
137
|
+
// Decode value
|
|
138
|
+
const v = Buffer.from(koffi.decode(valPtr[0], 'uint8', valLen[0]));
|
|
139
|
+
this.bindings.sochdb_free_bytes(valPtr[0], valLen[0]);
|
|
140
|
+
yield [k, v];
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
finally {
|
|
144
|
+
this.bindings.sochdb_iterator_close(iter);
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
async commit() {
|
|
148
|
+
this.ensureActive();
|
|
149
|
+
const result = this.bindings.sochdb_commit(this.dbHandle, this.txnHandle);
|
|
150
|
+
this.committed = true;
|
|
151
|
+
if (result.error_code !== 0) {
|
|
152
|
+
// -1 indicates error, -2 indicates SSI conflict
|
|
153
|
+
throw new errors_1.TransactionError(`Transaction failed to commit (Code ${result.error_code})`);
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
async abort() {
|
|
157
|
+
if (!this.isActive())
|
|
158
|
+
return;
|
|
159
|
+
this.bindings.sochdb_abort(this.dbHandle, this.txnHandle);
|
|
160
|
+
this.aborted = true;
|
|
161
|
+
}
|
|
162
|
+
isActive() {
|
|
163
|
+
return !this.committed && !this.aborted;
|
|
164
|
+
}
|
|
165
|
+
ensureActive() {
|
|
166
|
+
if (!this.isActive()) {
|
|
167
|
+
throw new errors_1.TransactionError('Transaction is no longer active');
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
exports.EmbeddedTransaction = EmbeddedTransaction;
|
|
172
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZW1iZWRkZWQvdHJhbnNhY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsc0NBQTREO0FBQzVELDZDQUFnRDtBQUVoRCw2Q0FBK0I7QUFFL0IsTUFBYSxtQkFBbUI7SUFRNUIsWUFBWSxFQUFvQixFQUFFLFFBQWEsRUFBRSxTQUFjO1FBSHZELGNBQVMsR0FBRyxLQUFLLENBQUM7UUFDbEIsWUFBTyxHQUFHLEtBQUssQ0FBQztRQUdwQixJQUFJLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQztRQUNiLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO1FBQzNCLElBQUksQ0FBQyxRQUFRLEdBQUcseUJBQWMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNqRCxDQUFDO0lBRUQsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFXLEVBQUUsS0FBYTtRQUNoQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDcEIsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsU0FBUyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDMUcsSUFBSSxHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDWixNQUFNLElBQUksc0JBQWEsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBQ25ELENBQUM7SUFDTCxDQUFDO0lBRUQsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFXO1FBQ2pCLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUVwQixNQUFNLE1BQU0sR0FBRyxDQUFDLElBQUksQ0FB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Q0FBQztRQUV0QixJQUFJLE1BQU0sQ0FBQyxVQUFVLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDMUIsZ0RBQWdEO1lBQ2hELE1BQU0sSUFBSSx5QkFBZ0IsQ0FBQyxzQ0FBc0MsTUFBTSxDQUFDLFVBQVUsR0FBRyxDQUFDLENBQUM7UUFDM0YsQ0FBQztJQUNMLENBQUM7SUFFRCxLQUFLLENBQUMsS0FBSztRQUNQLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQUUsT0FBTztRQUU3QixJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUMxRCxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztJQUN4QixDQUFDO0lBRU8sUUFBUTtRQUNaLE9BQU8sQ0FBQyxJQUFJLENBQUMsU0FBUyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUM1QyxDQUFDO0lBRU8sWUFBWTtRQUNoQixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUM7WUFDbkIsTUFBTSxJQUFJLHlCQUFnQixDQUFDLGlDQUFpQyxDQUFDLENBQUM7UUFDbEUsQ0FBQztJQUNMLENBQUM7Q0FDSjtBQWxLRCxrREFrS0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUcmFuc2FjdGlvbkVycm9yLCBEYXRhYmFzZUVycm9yIH0gZnJvbSAnLi4vZXJyb3JzJztcbmltcG9ydCB7IE5hdGl2ZUJpbmRpbmdzIH0gZnJvbSAnLi9mZmkvYmluZGluZ3MnO1xuaW1wb3J0IHsgRW1iZWRkZWREYXRhYmFzZSB9IGZyb20gJy4vZGF0YWJhc2UnO1xuaW1wb3J0ICogYXMga29mZmkgZnJvbSAna29mZmknO1xuXG5leHBvcnQgY2xhc3MgRW1iZWRkZWRUcmFuc2FjdGlvbiB7XG4gICAgcHJpdmF0ZSBkYjogRW1iZWRkZWREYXRhYmFzZTtcbiAgICBwcml2YXRlIGRiSGFuZGxlOiBhbnk7XG4gICAgcHJpdmF0ZSB0eG5IYW5kbGU6IGFueTsgLy8gTm93IGEgU3RydWN0IG9iamVjdCAoQ19UeG5IYW5kbGUpXG4gICAgcHJpdmF0ZSBiaW5kaW5nczogTmF0aXZlQmluZGluZ3M7XG4gICAgcHJpdmF0ZSBjb21taXR0ZWQgPSBmYWxzZTtcbiAgICBwcml2YXRlIGFib3J0ZWQgPSBmYWxzZTtcblxuICAgIGNvbnN0cnVjdG9yKGRiOiBFbWJlZGRlZERhdGFiYXNlLCBkYkhhbmRsZTogYW55LCB0eG5IYW5kbGU6IGFueSkge1xuICAgICAgICB0aGlzLmRiID0gZGI7XG4gICAgICAgIHRoaXMuZGJIYW5kbGUgPSBkYkhhbmRsZTtcbiAgICAgICAgdGhpcy50eG5IYW5kbGUgPSB0eG5IYW5kbGU7XG4gICAgICAgIHRoaXMuYmluZGluZ3MgPSBOYXRpdmVCaW5kaW5ncy5nZXRJbnN0YW5jZSgpO1xuICAgIH1cblxuICAgIGFzeW5jIHB1dChrZXk6IEJ1ZmZlciwgdmFsdWU6IEJ1ZmZlcik6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICB0aGlzLmVuc3VyZUFjdGl2ZSgpO1xuICAgICAgICBjb25zdCByZXMgPSB0aGlzLmJpbmRpbmdzLnNvY2hkYl9wdXQodGhpcy5kYkhhbmRsZSwgdGhpcy50eG5IYW5kbGUsIGtleSwga2V5Lmxlbmd0aCwgdmFsdWUsIHZhbHVlLmxlbmd0aCk7XG4gICAgICAgIGlmIChyZXMgIT09IDApIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBEYXRhYmFzZUVycm9yKCdGYWlsZWQgdG8gcHV0IHZhbHVlJyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBhc3luYyBnZXQoa2V5OiBCdWZmZXIpOiBQcm9taXNlPEJ1ZmZlciB8IG51bGw+IHtcbiAgICAgICAgdGhpcy5lbnN1cmVBY3RpdmUoKTtcblxuICAgICAgICBjb25zdCBvdXRQdHIgPSBbbnVsbF07XG4gICAgICAgIGNvbnN0IG91dExlbiA9IFswXTtcblxuICAgICAgICAvLyByZXR1cm5zIDAgb24gc3VjY2VzcywgMSBvbiBub3QgZm91bmQsIC0xIG9uIGVycm9yXG4gICAgICAgIGNvbnN0IHJlcyA9IHRoaXMuYmluZGluZ3Muc29jaGRiX2dldCh0aGlzLmRiSGFuZGxlLCB0aGlzLnR4bkhhbmRsZSwga2V5LCBrZXkubGVuZ3RoLCBvdXRQdHIsIG91dExlbik7XG5cbiAgICAgICAgaWYgKHJlcyA9PT0gMSkgeyAvLyBOb3QgZm91bmRcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIGlmIChyZXMgIT09IDApIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBEYXRhYmFzZUVycm9yKCdGYWlsZWQgdG8gZ2V0IHZhbHVlJyk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBDb3B5IGJ1ZmZlclxuICAgICAgICBjb25zdCBwdHIgPSBvdXRQdHJbMF07XG4gICAgICAgIGNvbnN0IGxlbiA9IG91dExlblswXTtcbiAgICAgICAgY29uc3QgYnVmZmVyID0gQnVmZmVyLmZyb20oa29mZmkuZGVjb2RlKHB0ciwgJ3VpbnQ4JywgbGVuKSk7XG5cbiAgICAgICAgLy8gRnJlZSBuYXRpdmUgbWVtb3J5XG4gICAgICAgIHRoaXMuYmluZGluZ3Muc29jaGRiX2ZyZWVfYnl0ZXMocHRyLCBsZW4pO1xuXG4gICAgICAgIHJldHVybiBidWZmZXI7XG4gICAgfVxuXG4gICAgYXN5bmMgZGVsZXRlKGtleTogQnVmZmVyKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHRoaXMuZW5zdXJlQWN0aXZlKCk7XG4gICAgICAgIGNvbnN0IHJlcyA9IHRoaXMuYmluZGluZ3Muc29jaGRiX2RlbGV0ZSh0aGlzLmRiSGFuZGxlLCB0aGlzLnR4bkhhbmRsZSwga2V5LCBrZXkubGVuZ3RoKTtcbiAgICAgICAgaWYgKHJlcyAhPT0gMCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IERhdGFiYXNlRXJyb3IoJ0ZhaWxlZCB0byBkZWxldGUgdmFsdWUnKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGFzeW5jIHB1dFBhdGgocGF0aDogc3RyaW5nLCB2YWx1ZTogQnVmZmVyKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHRoaXMuZW5zdXJlQWN0aXZlKCk7XG4gICAgICAgIGNvbnN0IHJlcyA9IHRoaXMuYmluZGluZ3Muc29jaGRiX3B1dF9wYXRoKHRoaXMuZGJIYW5kbGUsIHRoaXMudHhuSGFuZGxlLCBwYXRoLCB2YWx1ZSwgdmFsdWUubGVuZ3RoKTtcbiAgICAgICAgaWYgKHJlcyAhPT0gMCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IERhdGFiYXNlRXJyb3IoJ0ZhaWxlZCB0byBwdXQgcGF0aCcpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYXN5bmMgZ2V0UGF0aChwYXRoOiBzdHJpbmcpOiBQcm9taXNlPEJ1ZmZlciB8IG51bGw+IHtcbiAgICAgICAgdGhpcy5lbnN1cmVBY3RpdmUoKTtcblxuICAgICAgICBjb25zdCBvdXRQdHIgPSBbbnVsbF07XG4gICAgICAgIGNvbnN0IG91dExlbiA9IFswXTtcblxuICAgICAgICBjb25zdCByZXMgPSB0aGlzLmJpbmRpbmdzLnNvY2hkYl9nZXRfcGF0aCh0aGlzLmRiSGFuZGxlLCB0aGlzLnR4bkhhbmRsZSwgcGF0aCwgb3V0UHRyLCBvdXRMZW4pO1xuXG4gICAgICAgIGlmIChyZXMgPT09IDEpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIGlmIChyZXMgIT09IDApIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBEYXRhYmFzZUVycm9yKCdGYWlsZWQgdG8gZ2V0IHBhdGgnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHB0ciA9IG91dFB0clswXTtcbiAgICAgICAgY29uc3QgbGVuID0gb3V0TGVuWzBdO1xuICAgICAgICBjb25zdCBidWZmZXIgPSBCdWZmZXIuZnJvbShrb2ZmaS5kZWNvZGUocHRyLCAndWludDgnLCBsZW4pKTtcbiAgICAgICAgdGhpcy5iaW5kaW5ncy5zb2NoZGJfZnJlZV9ieXRlcyhwdHIsIGxlbik7XG5cbiAgICAgICAgcmV0dXJuIGJ1ZmZlcjtcbiAgICB9XG5cbiAgICBhc3luYyAqc2NhblByZWZpeChwcmVmaXg6IEJ1ZmZlcik6IEFzeW5jR2VuZXJhdG9yPFtCdWZmZXIsIEJ1ZmZlcl0+IHtcbiAgICAgICAgdGhpcy5lbnN1cmVBY3RpdmUoKTtcblxuICAgICAgICBjb25zdCBpdGVyID0gdGhpcy5iaW5kaW5ncy5zb2NoZGJfc2Nhbl9wcmVmaXgodGhpcy5kYkhhbmRsZSwgdGhpcy50eG5IYW5kbGUsIHByZWZpeCwgcHJlZml4Lmxlbmd0aCk7XG4gICAgICAgIGlmICghaXRlcikgcmV0dXJuO1xuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCBrZXlQdHIgPSBbbnVsbF07XG4gICAgICAgICAgICBjb25zdCBrZXlMZW4gPSBbMF07XG4gICAgICAgICAgICBjb25zdCB2YWxQdHIgPSBbbnVsbF07XG4gICAgICAgICAgICBjb25zdCB2YWxMZW4gPSBbMF07XG5cbiAgICAgICAgICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICAgICAgICAgICAgLy8gUmV0dXJucyAwIG9uIHN1Y2Nlc3MsIDEgb24gZG9uZSwgLTEgb24gZXJyb3JcbiAgICAgICAgICAgICAgICBjb25zdCByZXMgPSB0aGlzLmJpbmRpbmdzLnNvY2hkYl9pdGVyYXRvcl9uZXh0KGl0ZXIsIGtleVB0ciwga2V5TGVuLCB2YWxQdHIsIHZhbExlbik7XG4gICAgICAgICAgICAgICAgaWYgKHJlcyA9PT0gMSkgYnJlYWs7IC8vIERvbmVcbiAgICAgICAgICAgICAgICBpZiAocmVzICE9PSAwKSB0aHJvdyBuZXcgRGF0YWJhc2VFcnJvcignU2NhbiBmYWlsZWQnKTtcblxuICAgICAgICAgICAgICAgIC8vIERlY29kZSBrZXlcbiAgICAgICAgICAgICAgICBjb25zdCBrID0gQnVmZmVyLmZyb20oa29mZmkuZGVjb2RlKGtleVB0clswXSwgJ3VpbnQ4Jywga2V5TGVuWzBdKSk7XG4gICAgICAgICAgICAgICAgLy8ga29mZmkgYXV0b21hdGljYWxseSBoYW5kbGVzIHBvaW50ZXJzLCBidXQgaGVyZSB3ZSByZWNlaXZlZCBhIHBvaW50ZXIgdmFsdWUgaW50byBrZXlQdHJbMF1cbiAgICAgICAgICAgICAgICAvLyBXYWl0LCBrZXlQdHIgaXMgcGFzc2VkIGFzIG91dChwb2ludGVyKHVpbnQ4KikpLlxuICAgICAgICAgICAgICAgIC8vIFNvIGtleVB0clswXSBJUyB0aGUgcG9pbnRlci5cblxuICAgICAgICAgICAgICAgIC8vIFJ1c3Qgc2Nhbl9uZXh0IGFsbG9jYXRlcyBuZXcgYm94ZWQgc2xpY2VzIGZvciBrZXkgYW5kIHZhbHVlP1xuICAgICAgICAgICAgICAgIC8vIFllczogYGxldCBtdXQga2V5X2J1ZiA9IGtleS5pbnRvX2JveGVkX3NsaWNlKCk7YFxuICAgICAgICAgICAgICAgIC8vIFNvIHdlIG93biBpdCBhbmQgbXVzdCBmcmVlIGl0P1xuICAgICAgICAgICAgICAgIC8vIGBsZXQgXyA9IEJveDo6aW50b19yYXcoa2V5X2J1Zik7YCAtPiBsZWFrcy5cbiAgICAgICAgICAgICAgICAvLyBCdXQgYHNvY2hkYl9zY2FuX25leHRgIGRvZXNuJ3Qgc2VlbSB0byBleHBvcnQgYSBmcmVlIGZ1bmN0aW9uIGZvciB0aGVzZSBpbmRpdmlkdWFsIGl0ZW1zP1xuICAgICAgICAgICAgICAgIC8vIFdhaXQsIGBzb2NoZGJfc2Nhbl9uZXh0YCByZXR1cm5zIHRoZW0uIERvZXMgdGhlIGNhbGxlciBmcmVlIHRoZW0/XG4gICAgICAgICAgICAgICAgLy8gVXN1YWxseSB5ZXMuIGBOYXRpdmVCaW5kaW5nc2AgaGFzIGBzb2NoZGJfZnJlZV9ieXRlc2AuXG5cbiAgICAgICAgICAgICAgICB0aGlzLmJpbmRpbmdzLnNvY2hkYl9mcmVlX2J5dGVzKGtleVB0clswXSwga2V5TGVuWzBdKTtcblxuICAgICAgICAgICAgICAgIC8vIERlY29kZSB2YWx1ZSBcbiAgICAgICAgICAgICAgICBjb25zdCB2ID0gQnVmZmVyLmZyb20oa29mZmkuZGVjb2RlKHZhbFB0clswXSwgJ3VpbnQ4JywgdmFsTGVuWzBdKSk7XG4gICAgICAgICAgICAgICAgdGhpcy5iaW5kaW5ncy5zb2NoZGJfZnJlZV9ieXRlcyh2YWxQdHJbMF0sIHZhbExlblswXSk7XG5cbiAgICAgICAgICAgICAgICB5aWVsZCBbaywgdl07XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgICB0aGlzLmJpbmRpbmdzLnNvY2hkYl9pdGVyYXRvcl9jbG9zZShpdGVyKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGFzeW5jIGNvbW1pdCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgdGhpcy5lbnN1cmVBY3RpdmUoKTtcblxuICAgICAgICBjb25zdCByZXN1bHQgPSB0aGlzLmJpbmRpbmdzLnNvY2hkYl9jb21taXQodGhpcy5kYkhhbmRsZSwgdGhpcy50eG5IYW5kbGUpO1xuICAgICAgICB0aGlzLmNvbW1pdHRlZCA9IHRydWU7XG5cbiAgICAgICAgaWYgKHJlc3VsdC5lcnJvcl9jb2RlICE9PSAwKSB7XG4gICAgICAgICAgICAvLyAtMSBpbmRpY2F0ZXMgZXJyb3IsIC0yIGluZGljYXRlcyBTU0kgY29uZmxpY3RcbiAgICAgICAgICAgIHRocm93IG5ldyBUcmFuc2FjdGlvbkVycm9yKGBUcmFuc2FjdGlvbiBmYWlsZWQgdG8gY29tbWl0IChDb2RlICR7cmVzdWx0LmVycm9yX2NvZGV9KWApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYXN5bmMgYWJvcnQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGlmICghdGhpcy5pc0FjdGl2ZSgpKSByZXR1cm47XG5cbiAgICAgICAgdGhpcy5iaW5kaW5ncy5zb2NoZGJfYWJvcnQodGhpcy5kYkhhbmRsZSwgdGhpcy50eG5IYW5kbGUpO1xuICAgICAgICB0aGlzLmFib3J0ZWQgPSB0cnVlO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNBY3RpdmUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhdGhpcy5jb21taXR0ZWQgJiYgIXRoaXMuYWJvcnRlZDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGVuc3VyZUFjdGl2ZSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzQWN0aXZlKCkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBUcmFuc2FjdGlvbkVycm9yKCdUcmFuc2FjdGlvbiBpcyBubyBsb25nZXIgYWN0aXZlJyk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* SochDB Error Classes
|
|
4
|
+
*
|
|
5
|
+
* @packageDocumentation
|
|
6
|
+
*/
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.DatabaseError = exports.ProtocolError = exports.TransactionError = exports.ConnectionError = exports.SochDBError = void 0;
|
|
9
|
+
// Copyright 2025 Sushanth (https://github.com/sushanthpy)
|
|
10
|
+
//
|
|
11
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
12
|
+
// you may not use this file except in compliance with the License.
|
|
13
|
+
// You may obtain a copy of the License at
|
|
14
|
+
//
|
|
15
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
|
16
|
+
/**
|
|
17
|
+
* Base error class for all SochDB errors.
|
|
18
|
+
*/
|
|
19
|
+
class SochDBError extends Error {
|
|
20
|
+
constructor(message) {
|
|
21
|
+
super(message);
|
|
22
|
+
this.name = 'SochDBError';
|
|
23
|
+
Object.setPrototypeOf(this, SochDBError.prototype);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
exports.SochDBError = SochDBError;
|
|
27
|
+
/**
|
|
28
|
+
* Error thrown when connection to the database fails.
|
|
29
|
+
*/
|
|
30
|
+
class ConnectionError extends SochDBError {
|
|
31
|
+
constructor(message) {
|
|
32
|
+
super(message);
|
|
33
|
+
this.name = 'ConnectionError';
|
|
34
|
+
Object.setPrototypeOf(this, ConnectionError.prototype);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
exports.ConnectionError = ConnectionError;
|
|
38
|
+
/**
|
|
39
|
+
* Error thrown when a transaction operation fails.
|
|
40
|
+
*/
|
|
41
|
+
class TransactionError extends SochDBError {
|
|
42
|
+
constructor(message) {
|
|
43
|
+
super(message);
|
|
44
|
+
this.name = 'TransactionError';
|
|
45
|
+
Object.setPrototypeOf(this, TransactionError.prototype);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
exports.TransactionError = TransactionError;
|
|
49
|
+
/**
|
|
50
|
+
* Error thrown when there's a protocol error in IPC communication.
|
|
51
|
+
*/
|
|
52
|
+
class ProtocolError extends SochDBError {
|
|
53
|
+
constructor(message) {
|
|
54
|
+
super(message);
|
|
55
|
+
this.name = 'ProtocolError';
|
|
56
|
+
Object.setPrototypeOf(this, ProtocolError.prototype);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
exports.ProtocolError = ProtocolError;
|
|
60
|
+
/**
|
|
61
|
+
* Error thrown when a database operation fails.
|
|
62
|
+
*/
|
|
63
|
+
class DatabaseError extends SochDBError {
|
|
64
|
+
constructor(message) {
|
|
65
|
+
super(message);
|
|
66
|
+
this.name = 'DatabaseError';
|
|
67
|
+
Object.setPrototypeOf(this, DatabaseError.prototype);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
exports.DatabaseError = DatabaseError;
|
|
71
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2Vycm9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7R0FJRzs7O0FBRUgsMERBQTBEO0FBQzFELEVBQUU7QUFDRixrRUFBa0U7QUFDbEUsbUVBQW1FO0FBQ25FLDBDQUEwQztBQUMxQyxFQUFFO0FBQ0YsaURBQWlEO0FBRWpEOztHQUVHO0FBQ0gsTUFBYSxXQUFZLFNBQVEsS0FBSztJQUNwQyxZQUFZLE9BQWU7UUFDekIsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2YsSUFBSSxDQUFDLElBQUksR0FBRyxhQUFhLENBQUM7UUFDMUIsTUFBTSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3JELENBQUM7Q0FDRjtBQU5ELGtDQU1DO0FBRUQ7O0dBRUc7QUFDSCxNQUFhLGVBQWdCLFNBQVEsV0FBVztJQUM5QyxZQUFZLE9BQWU7UUFDekIsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2YsSUFBSSxDQUFDLElBQUksR0FBRyxpQkFBaUIsQ0FBQztRQUM5QixNQUFNLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxlQUFlLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDekQsQ0FBQztDQUNGO0FBTkQsMENBTUM7QUFFRDs7R0FFRztBQUNILE1BQWEsZ0JBQWlCLFNBQVEsV0FBVztJQUMvQyxZQUFZLE9BQWU7UUFDekIsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2YsSUFBSSxDQUFDLElBQUksR0FBRyxrQkFBa0IsQ0FBQztRQUMvQixNQUFNLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUMxRCxDQUFDO0NBQ0Y7QUFORCw0Q0FNQztBQUVEOztHQUVHO0FBQ0gsTUFBYSxhQUFjLFNBQVEsV0FBVztJQUM1QyxZQUFZLE9BQWU7UUFDekIsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2YsSUFBSSxDQUFDLElBQUksR0FBRyxlQUFlLENBQUM7UUFDNUIsTUFBTSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsYUFBYSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7Q0FDRjtBQU5ELHNDQU1DO0FBRUQ7O0dBRUc7QUFDSCxNQUFhLGFBQWMsU0FBUSxXQUFXO0lBQzVDLFlBQVksT0FBZTtRQUN6QixLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDZixJQUFJLENBQUMsSUFBSSxHQUFHLGVBQWUsQ0FBQztRQUM1QixNQUFNLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxhQUFhLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDdkQsQ0FBQztDQUNGO0FBTkQsc0NBTUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFNvY2hEQiBFcnJvciBDbGFzc2VzXG4gKlxuICogQHBhY2thZ2VEb2N1bWVudGF0aW9uXG4gKi9cblxuLy8gQ29weXJpZ2h0IDIwMjUgU3VzaGFudGggKGh0dHBzOi8vZ2l0aHViLmNvbS9zdXNoYW50aHB5KVxuLy9cbi8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4vLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4vLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbi8vXG4vLyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cbi8qKlxuICogQmFzZSBlcnJvciBjbGFzcyBmb3IgYWxsIFNvY2hEQiBlcnJvcnMuXG4gKi9cbmV4cG9ydCBjbGFzcyBTb2NoREJFcnJvciBleHRlbmRzIEVycm9yIHtcbiAgY29uc3RydWN0b3IobWVzc2FnZTogc3RyaW5nKSB7XG4gICAgc3VwZXIobWVzc2FnZSk7XG4gICAgdGhpcy5uYW1lID0gJ1NvY2hEQkVycm9yJztcbiAgICBPYmplY3Quc2V0UHJvdG90eXBlT2YodGhpcywgU29jaERCRXJyb3IucHJvdG90eXBlKTtcbiAgfVxufVxuXG4vKipcbiAqIEVycm9yIHRocm93biB3aGVuIGNvbm5lY3Rpb24gdG8gdGhlIGRhdGFiYXNlIGZhaWxzLlxuICovXG5leHBvcnQgY2xhc3MgQ29ubmVjdGlvbkVycm9yIGV4dGVuZHMgU29jaERCRXJyb3Ige1xuICBjb25zdHJ1Y3RvcihtZXNzYWdlOiBzdHJpbmcpIHtcbiAgICBzdXBlcihtZXNzYWdlKTtcbiAgICB0aGlzLm5hbWUgPSAnQ29ubmVjdGlvbkVycm9yJztcbiAgICBPYmplY3Quc2V0UHJvdG90eXBlT2YodGhpcywgQ29ubmVjdGlvbkVycm9yLnByb3RvdHlwZSk7XG4gIH1cbn1cblxuLyoqXG4gKiBFcnJvciB0aHJvd24gd2hlbiBhIHRyYW5zYWN0aW9uIG9wZXJhdGlvbiBmYWlscy5cbiAqL1xuZXhwb3J0IGNsYXNzIFRyYW5zYWN0aW9uRXJyb3IgZXh0ZW5kcyBTb2NoREJFcnJvciB7XG4gIGNvbnN0cnVjdG9yKG1lc3NhZ2U6IHN0cmluZykge1xuICAgIHN1cGVyKG1lc3NhZ2UpO1xuICAgIHRoaXMubmFtZSA9ICdUcmFuc2FjdGlvbkVycm9yJztcbiAgICBPYmplY3Quc2V0UHJvdG90eXBlT2YodGhpcywgVHJhbnNhY3Rpb25FcnJvci5wcm90b3R5cGUpO1xuICB9XG59XG5cbi8qKlxuICogRXJyb3IgdGhyb3duIHdoZW4gdGhlcmUncyBhIHByb3RvY29sIGVycm9yIGluIElQQyBjb21tdW5pY2F0aW9uLlxuICovXG5leHBvcnQgY2xhc3MgUHJvdG9jb2xFcnJvciBleHRlbmRzIFNvY2hEQkVycm9yIHtcbiAgY29uc3RydWN0b3IobWVzc2FnZTogc3RyaW5nKSB7XG4gICAgc3VwZXIobWVzc2FnZSk7XG4gICAgdGhpcy5uYW1lID0gJ1Byb3RvY29sRXJyb3InO1xuICAgIE9iamVjdC5zZXRQcm90b3R5cGVPZih0aGlzLCBQcm90b2NvbEVycm9yLnByb3RvdHlwZSk7XG4gIH1cbn1cblxuLyoqXG4gKiBFcnJvciB0aHJvd24gd2hlbiBhIGRhdGFiYXNlIG9wZXJhdGlvbiBmYWlscy5cbiAqL1xuZXhwb3J0IGNsYXNzIERhdGFiYXNlRXJyb3IgZXh0ZW5kcyBTb2NoREJFcnJvciB7XG4gIGNvbnN0cnVjdG9yKG1lc3NhZ2U6IHN0cmluZykge1xuICAgIHN1cGVyKG1lc3NhZ2UpO1xuICAgIHRoaXMubmFtZSA9ICdEYXRhYmFzZUVycm9yJztcbiAgICBPYmplY3Quc2V0UHJvdG90eXBlT2YodGhpcywgRGF0YWJhc2VFcnJvci5wcm90b3R5cGUpO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Copyright 2025 Sushanth (https://github.com/sushanthpy)
|
|
4
|
+
*
|
|
5
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
* you may not use this file except in compliance with the License.
|
|
7
|
+
* You may obtain a copy of the License at
|
|
8
|
+
*
|
|
9
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
*
|
|
11
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
* See the License for the specific language governing permissions and
|
|
15
|
+
* limitations under the License.
|
|
16
|
+
*/
|
|
17
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
+
exports.FormatCapabilities = exports.CanonicalFormat = exports.ContextFormat = exports.WireFormat = exports.FormatConversionError = void 0;
|
|
19
|
+
/**
|
|
20
|
+
* Unified Output Format Semantics
|
|
21
|
+
*
|
|
22
|
+
* Provides format enums for query results and LLM context packaging.
|
|
23
|
+
* This mirrors the Rust sochdb-client format module for consistency.
|
|
24
|
+
*/
|
|
25
|
+
/**
|
|
26
|
+
* Error when format conversion fails.
|
|
27
|
+
*/
|
|
28
|
+
class FormatConversionError extends Error {
|
|
29
|
+
constructor(fromFormat, toFormat, reason) {
|
|
30
|
+
super(`Cannot convert ${fromFormat} to ${toFormat}: ${reason}`);
|
|
31
|
+
this.fromFormat = fromFormat;
|
|
32
|
+
this.toFormat = toFormat;
|
|
33
|
+
this.reason = reason;
|
|
34
|
+
this.name = 'FormatConversionError';
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
exports.FormatConversionError = FormatConversionError;
|
|
38
|
+
/**
|
|
39
|
+
* Output format for query results sent to clients.
|
|
40
|
+
*
|
|
41
|
+
* These formats are optimized for transmission efficiency and
|
|
42
|
+
* client-side processing.
|
|
43
|
+
*/
|
|
44
|
+
var WireFormat;
|
|
45
|
+
(function (WireFormat) {
|
|
46
|
+
/**
|
|
47
|
+
* TOON format (default, 40-66% fewer tokens than JSON).
|
|
48
|
+
* Optimized for LLM consumption.
|
|
49
|
+
*/
|
|
50
|
+
WireFormat["TOON"] = "toon";
|
|
51
|
+
/**
|
|
52
|
+
* Standard JSON for compatibility.
|
|
53
|
+
*/
|
|
54
|
+
WireFormat["JSON"] = "json";
|
|
55
|
+
/**
|
|
56
|
+
* Raw columnar format for analytics.
|
|
57
|
+
* More efficient for large result sets with projection pushdown.
|
|
58
|
+
*/
|
|
59
|
+
WireFormat["COLUMNAR"] = "columnar";
|
|
60
|
+
})(WireFormat || (exports.WireFormat = WireFormat = {}));
|
|
61
|
+
(function (WireFormat) {
|
|
62
|
+
/**
|
|
63
|
+
* Parse format from string.
|
|
64
|
+
*/
|
|
65
|
+
function fromString(s) {
|
|
66
|
+
const lower = s.toLowerCase();
|
|
67
|
+
switch (lower) {
|
|
68
|
+
case 'toon':
|
|
69
|
+
return WireFormat.TOON;
|
|
70
|
+
case 'json':
|
|
71
|
+
return WireFormat.JSON;
|
|
72
|
+
case 'columnar':
|
|
73
|
+
case 'column':
|
|
74
|
+
return WireFormat.COLUMNAR;
|
|
75
|
+
default:
|
|
76
|
+
throw new FormatConversionError(s, 'WireFormat', `Unknown format '${s}'. Valid: toon, json, columnar`);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
WireFormat.fromString = fromString;
|
|
80
|
+
})(WireFormat || (exports.WireFormat = WireFormat = {}));
|
|
81
|
+
/**
|
|
82
|
+
* Output format for LLM context packaging.
|
|
83
|
+
*
|
|
84
|
+
* These formats are optimized for readability and token efficiency
|
|
85
|
+
* when constructing prompts for language models.
|
|
86
|
+
*/
|
|
87
|
+
var ContextFormat;
|
|
88
|
+
(function (ContextFormat) {
|
|
89
|
+
/**
|
|
90
|
+
* TOON format (default, token-efficient).
|
|
91
|
+
* Structured data with minimal syntax overhead.
|
|
92
|
+
*/
|
|
93
|
+
ContextFormat["TOON"] = "toon";
|
|
94
|
+
/**
|
|
95
|
+
* JSON format.
|
|
96
|
+
* Widely understood by LLMs, good for structured data.
|
|
97
|
+
*/
|
|
98
|
+
ContextFormat["JSON"] = "json";
|
|
99
|
+
/**
|
|
100
|
+
* Markdown format.
|
|
101
|
+
* Best for human-readable context with formatting.
|
|
102
|
+
*/
|
|
103
|
+
ContextFormat["MARKDOWN"] = "markdown";
|
|
104
|
+
})(ContextFormat || (exports.ContextFormat = ContextFormat = {}));
|
|
105
|
+
(function (ContextFormat) {
|
|
106
|
+
/**
|
|
107
|
+
* Parse format from string.
|
|
108
|
+
*/
|
|
109
|
+
function fromString(s) {
|
|
110
|
+
const lower = s.toLowerCase();
|
|
111
|
+
switch (lower) {
|
|
112
|
+
case 'toon':
|
|
113
|
+
return ContextFormat.TOON;
|
|
114
|
+
case 'json':
|
|
115
|
+
return ContextFormat.JSON;
|
|
116
|
+
case 'markdown':
|
|
117
|
+
case 'md':
|
|
118
|
+
return ContextFormat.MARKDOWN;
|
|
119
|
+
default:
|
|
120
|
+
throw new FormatConversionError(s, 'ContextFormat', `Unknown format '${s}'. Valid: toon, json, markdown`);
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
ContextFormat.fromString = fromString;
|
|
124
|
+
})(ContextFormat || (exports.ContextFormat = ContextFormat = {}));
|
|
125
|
+
/**
|
|
126
|
+
* Canonical storage format (server-side only).
|
|
127
|
+
*
|
|
128
|
+
* This is the format used for internal storage and is optimized
|
|
129
|
+
* for storage efficiency and query performance.
|
|
130
|
+
*/
|
|
131
|
+
var CanonicalFormat;
|
|
132
|
+
(function (CanonicalFormat) {
|
|
133
|
+
/**
|
|
134
|
+
* TOON canonical format.
|
|
135
|
+
*/
|
|
136
|
+
CanonicalFormat["TOON"] = "toon";
|
|
137
|
+
})(CanonicalFormat || (exports.CanonicalFormat = CanonicalFormat = {}));
|
|
138
|
+
/**
|
|
139
|
+
* Helper to check format capabilities and conversions.
|
|
140
|
+
*/
|
|
141
|
+
class FormatCapabilities {
|
|
142
|
+
/**
|
|
143
|
+
* Convert WireFormat to ContextFormat if compatible.
|
|
144
|
+
*/
|
|
145
|
+
static wireToContext(wire) {
|
|
146
|
+
switch (wire) {
|
|
147
|
+
case WireFormat.TOON:
|
|
148
|
+
return ContextFormat.TOON;
|
|
149
|
+
case WireFormat.JSON:
|
|
150
|
+
return ContextFormat.JSON;
|
|
151
|
+
default:
|
|
152
|
+
return null;
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Convert ContextFormat to WireFormat if compatible.
|
|
157
|
+
*/
|
|
158
|
+
static contextToWire(ctx) {
|
|
159
|
+
switch (ctx) {
|
|
160
|
+
case ContextFormat.TOON:
|
|
161
|
+
return WireFormat.TOON;
|
|
162
|
+
case ContextFormat.JSON:
|
|
163
|
+
return WireFormat.JSON;
|
|
164
|
+
default:
|
|
165
|
+
return null;
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* Check if format supports round-trip: decode(encode(x)) = x.
|
|
170
|
+
*/
|
|
171
|
+
static supportsRoundTrip(fmt) {
|
|
172
|
+
return fmt === WireFormat.TOON || fmt === WireFormat.JSON;
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
exports.FormatCapabilities = FormatCapabilities;
|
|
176
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWF0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2Zvcm1hdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7Ozs7Ozs7O0dBY0c7OztBQUVIOzs7OztHQUtHO0FBRUg7O0dBRUc7QUFDSCxNQUFhLHFCQUFzQixTQUFRLEtBQUs7SUFDOUMsWUFDUyxVQUFrQixFQUNsQixRQUFnQixFQUNoQixNQUFjO1FBRXJCLEtBQUssQ0FBQyxrQkFBa0IsVUFBVSxPQUFPLFFBQVEsS0FBSyxNQUFNLEVBQUUsQ0FBQyxDQUFDO1FBSnpELGVBQVUsR0FBVixVQUFVLENBQVE7UUFDbEIsYUFBUSxHQUFSLFFBQVEsQ0FBUTtRQUNoQixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBR3JCLElBQUksQ0FBQyxJQUFJLEdBQUcsdUJBQXVCLENBQUM7SUFDdEMsQ0FBQztDQUNGO0FBVEQsc0RBU0M7QUFFRDs7Ozs7R0FLRztBQUNILElBQVksVUFpQlg7QUFqQkQsV0FBWSxVQUFVO0lBQ3BCOzs7T0FHRztJQUNILDJCQUFhLENBQUE7SUFFYjs7T0FFRztJQUNILDJCQUFhLENBQUE7SUFFYjs7O09BR0c7SUFDSCxtQ0FBcUIsQ0FBQTtBQUN2QixDQUFDLEVBakJXLFVBQVUsMEJBQVYsVUFBVSxRQWlCckI7QUFFRCxXQUFpQixVQUFVO0lBQ3pCOztPQUVHO0lBQ0gsU0FBZ0IsVUFBVSxDQUFDLENBQVM7UUFDbEMsTUFBTSxLQUFLLEdBQUcsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQzlCLFFBQVEsS0FBSyxFQUFFLENBQUM7WUFDZCxLQUFLLE1BQU07Z0JBQ1QsT0FBTyxVQUFVLENBQUMsSUFBSSxDQUFDO1lBQ3pCLEtBQUssTUFBTTtnQkFDVCxPQUFPLFVBQVUsQ0FBQyxJQUFJLENBQUM7WUFDekIsS0FBSyxVQUFVLENBQUM7WUFDaEIsS0FBSyxRQUFRO2dCQUNYLE9BQU8sVUFBVSxDQUFDLFFBQVEsQ0FBQztZQUM3QjtnQkFDRSxNQUFNLElBQUkscUJBQXFCLENBQzdCLENBQUMsRUFDRCxZQUFZLEVBQ1osbUJBQW1CLENBQUMsZ0NBQWdDLENBQ3JELENBQUM7UUFDTixDQUFDO0lBQ0gsQ0FBQztJQWpCZSxxQkFBVSxhQWlCekIsQ0FBQTtBQUNILENBQUMsRUF0QmdCLFVBQVUsMEJBQVYsVUFBVSxRQXNCMUI7QUFFRDs7Ozs7R0FLRztBQUNILElBQVksYUFrQlg7QUFsQkQsV0FBWSxhQUFhO0lBQ3ZCOzs7T0FHRztJQUNILDhCQUFhLENBQUE7SUFFYjs7O09BR0c7SUFDSCw4QkFBYSxDQUFBO0lBRWI7OztPQUdHO0lBQ0gsc0NBQXFCLENBQUE7QUFDdkIsQ0FBQyxFQWxCVyxhQUFhLDZCQUFiLGFBQWEsUUFrQnhCO0FBRUQsV0FBaUIsYUFBYTtJQUM1Qjs7T0FFRztJQUNILFNBQWdCLFVBQVUsQ0FBQyxDQUFTO1FBQ2xDLE1BQU0sS0FBSyxHQUFHLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUM5QixRQUFRLEtBQUssRUFBRSxDQUFDO1lBQ2QsS0FBSyxNQUFNO2dCQUNULE9BQU8sYUFBYSxDQUFDLElBQUksQ0FBQztZQUM1QixLQUFLLE1BQU07Z0JBQ1QsT0FBTyxhQUFhLENBQUMsSUFBSSxDQUFDO1lBQzVCLEtBQUssVUFBVSxDQUFDO1lBQ2hCLEtBQUssSUFBSTtnQkFDUCxPQUFPLGFBQWEsQ0FBQyxRQUFRLENBQUM7WUFDaEM7Z0JBQ0UsTUFBTSxJQUFJLHFCQUFxQixDQUM3QixDQUFDLEVBQ0QsZUFBZSxFQUNmLG1CQUFtQixDQUFDLGdDQUFnQyxDQUNyRCxDQUFDO1FBQ04sQ0FBQztJQUNILENBQUM7SUFqQmUsd0JBQVUsYUFpQnpCLENBQUE7QUFDSCxDQUFDLEVBdEJnQixhQUFhLDZCQUFiLGFBQWEsUUFzQjdCO0FBRUQ7Ozs7O0dBS0c7QUFDSCxJQUFZLGVBS1g7QUFMRCxXQUFZLGVBQWU7SUFDekI7O09BRUc7SUFDSCxnQ0FBYSxDQUFBO0FBQ2YsQ0FBQyxFQUxXLGVBQWUsK0JBQWYsZUFBZSxRQUsxQjtBQUVEOztHQUVHO0FBQ0gsTUFBYSxrQkFBa0I7SUFDN0I7O09BRUc7SUFDSCxNQUFNLENBQUMsYUFBYSxDQUFDLElBQWdCO1FBQ25DLFFBQVEsSUFBSSxFQUFFLENBQUM7WUFDYixLQUFLLFVBQVUsQ0FBQyxJQUFJO2dCQUNsQixPQUFPLGFBQWEsQ0FBQyxJQUFJLENBQUM7WUFDNUIsS0FBSyxVQUFVLENBQUMsSUFBSTtnQkFDbEIsT0FBTyxhQUFhLENBQUMsSUFBSSxDQUFDO1lBQzVCO2dCQUNFLE9BQU8sSUFBSSxDQUFDO1FBQ2hCLENBQUM7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxNQUFNLENBQUMsYUFBYSxDQUFDLEdBQWtCO1FBQ3JDLFFBQVEsR0FBRyxFQUFFLENBQUM7WUFDWixLQUFLLGFBQWEsQ0FBQyxJQUFJO2dCQUNyQixPQUFPLFVBQVUsQ0FBQyxJQUFJLENBQUM7WUFDekIsS0FBSyxhQUFhLENBQUMsSUFBSTtnQkFDckIsT0FBTyxVQUFVLENBQUMsSUFBSSxDQUFDO1lBQ3pCO2dCQUNFLE9BQU8sSUFBSSxDQUFDO1FBQ2hCLENBQUM7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxNQUFNLENBQUMsaUJBQWlCLENBQUMsR0FBZTtRQUN0QyxPQUFPLEdBQUcsS0FBSyxVQUFVLENBQUMsSUFBSSxJQUFJLEdBQUcsS0FBSyxVQUFVLENBQUMsSUFBSSxDQUFDO0lBQzVELENBQUM7Q0FDRjtBQW5DRCxnREFtQ0MiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCAyMDI1IFN1c2hhbnRoIChodHRwczovL2dpdGh1Yi5jb20vc3VzaGFudGhweSlcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuLyoqXG4gKiBVbmlmaWVkIE91dHB1dCBGb3JtYXQgU2VtYW50aWNzXG4gKiBcbiAqIFByb3ZpZGVzIGZvcm1hdCBlbnVtcyBmb3IgcXVlcnkgcmVzdWx0cyBhbmQgTExNIGNvbnRleHQgcGFja2FnaW5nLlxuICogVGhpcyBtaXJyb3JzIHRoZSBSdXN0IHNvY2hkYi1jbGllbnQgZm9ybWF0IG1vZHVsZSBmb3IgY29uc2lzdGVuY3kuXG4gKi9cblxuLyoqXG4gKiBFcnJvciB3aGVuIGZvcm1hdCBjb252ZXJzaW9uIGZhaWxzLlxuICovXG5leHBvcnQgY2xhc3MgRm9ybWF0Q29udmVyc2lvbkVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgZnJvbUZvcm1hdDogc3RyaW5nLFxuICAgIHB1YmxpYyB0b0Zvcm1hdDogc3RyaW5nLFxuICAgIHB1YmxpYyByZWFzb246IHN0cmluZ1xuICApIHtcbiAgICBzdXBlcihgQ2Fubm90IGNvbnZlcnQgJHtmcm9tRm9ybWF0fSB0byAke3RvRm9ybWF0fTogJHtyZWFzb259YCk7XG4gICAgdGhpcy5uYW1lID0gJ0Zvcm1hdENvbnZlcnNpb25FcnJvcic7XG4gIH1cbn1cblxuLyoqXG4gKiBPdXRwdXQgZm9ybWF0IGZvciBxdWVyeSByZXN1bHRzIHNlbnQgdG8gY2xpZW50cy5cbiAqIFxuICogVGhlc2UgZm9ybWF0cyBhcmUgb3B0aW1pemVkIGZvciB0cmFuc21pc3Npb24gZWZmaWNpZW5jeSBhbmRcbiAqIGNsaWVudC1zaWRlIHByb2Nlc3NpbmcuXG4gKi9cbmV4cG9ydCBlbnVtIFdpcmVGb3JtYXQge1xuICAvKipcbiAgICogVE9PTiBmb3JtYXQgKGRlZmF1bHQsIDQwLTY2JSBmZXdlciB0b2tlbnMgdGhhbiBKU09OKS5cbiAgICogT3B0aW1pemVkIGZvciBMTE0gY29uc3VtcHRpb24uXG4gICAqL1xuICBUT09OID0gJ3Rvb24nLFxuXG4gIC8qKlxuICAgKiBTdGFuZGFyZCBKU09OIGZvciBjb21wYXRpYmlsaXR5LlxuICAgKi9cbiAgSlNPTiA9ICdqc29uJyxcblxuICAvKipcbiAgICogUmF3IGNvbHVtbmFyIGZvcm1hdCBmb3IgYW5hbHl0aWNzLlxuICAgKiBNb3JlIGVmZmljaWVudCBmb3IgbGFyZ2UgcmVzdWx0IHNldHMgd2l0aCBwcm9qZWN0aW9uIHB1c2hkb3duLlxuICAgKi9cbiAgQ09MVU1OQVIgPSAnY29sdW1uYXInLFxufVxuXG5leHBvcnQgbmFtZXNwYWNlIFdpcmVGb3JtYXQge1xuICAvKipcbiAgICogUGFyc2UgZm9ybWF0IGZyb20gc3RyaW5nLlxuICAgKi9cbiAgZXhwb3J0IGZ1bmN0aW9uIGZyb21TdHJpbmcoczogc3RyaW5nKTogV2lyZUZvcm1hdCB7XG4gICAgY29uc3QgbG93ZXIgPSBzLnRvTG93ZXJDYXNlKCk7XG4gICAgc3dpdGNoIChsb3dlcikge1xuICAgICAgY2FzZSAndG9vbic6XG4gICAgICAgIHJldHVybiBXaXJlRm9ybWF0LlRPT047XG4gICAgICBjYXNlICdqc29uJzpcbiAgICAgICAgcmV0dXJuIFdpcmVGb3JtYXQuSlNPTjtcbiAgICAgIGNhc2UgJ2NvbHVtbmFyJzpcbiAgICAgIGNhc2UgJ2NvbHVtbic6XG4gICAgICAgIHJldHVybiBXaXJlRm9ybWF0LkNPTFVNTkFSO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgbmV3IEZvcm1hdENvbnZlcnNpb25FcnJvcihcbiAgICAgICAgICBzLFxuICAgICAgICAgICdXaXJlRm9ybWF0JyxcbiAgICAgICAgICBgVW5rbm93biBmb3JtYXQgJyR7c30nLiBWYWxpZDogdG9vbiwganNvbiwgY29sdW1uYXJgXG4gICAgICAgICk7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogT3V0cHV0IGZvcm1hdCBmb3IgTExNIGNvbnRleHQgcGFja2FnaW5nLlxuICogXG4gKiBUaGVzZSBmb3JtYXRzIGFyZSBvcHRpbWl6ZWQgZm9yIHJlYWRhYmlsaXR5IGFuZCB0b2tlbiBlZmZpY2llbmN5XG4gKiB3aGVuIGNvbnN0cnVjdGluZyBwcm9tcHRzIGZvciBsYW5ndWFnZSBtb2RlbHMuXG4gKi9cbmV4cG9ydCBlbnVtIENvbnRleHRGb3JtYXQge1xuICAvKipcbiAgICogVE9PTiBmb3JtYXQgKGRlZmF1bHQsIHRva2VuLWVmZmljaWVudCkuXG4gICAqIFN0cnVjdHVyZWQgZGF0YSB3aXRoIG1pbmltYWwgc3ludGF4IG92ZXJoZWFkLlxuICAgKi9cbiAgVE9PTiA9ICd0b29uJyxcblxuICAvKipcbiAgICogSlNPTiBmb3JtYXQuXG4gICAqIFdpZGVseSB1bmRlcnN0b29kIGJ5IExMTXMsIGdvb2QgZm9yIHN0cnVjdHVyZWQgZGF0YS5cbiAgICovXG4gIEpTT04gPSAnanNvbicsXG5cbiAgLyoqXG4gICAqIE1hcmtkb3duIGZvcm1hdC5cbiAgICogQmVzdCBmb3IgaHVtYW4tcmVhZGFibGUgY29udGV4dCB3aXRoIGZvcm1hdHRpbmcuXG4gICAqL1xuICBNQVJLRE9XTiA9ICdtYXJrZG93bicsXG59XG5cbmV4cG9ydCBuYW1lc3BhY2UgQ29udGV4dEZvcm1hdCB7XG4gIC8qKlxuICAgKiBQYXJzZSBmb3JtYXQgZnJvbSBzdHJpbmcuXG4gICAqL1xuICBleHBvcnQgZnVuY3Rpb24gZnJvbVN0cmluZyhzOiBzdHJpbmcpOiBDb250ZXh0Rm9ybWF0IHtcbiAgICBjb25zdCBsb3dlciA9IHMudG9Mb3dlckNhc2UoKTtcbiAgICBzd2l0Y2ggKGxvd2VyKSB7XG4gICAgICBjYXNlICd0b29uJzpcbiAgICAgICAgcmV0dXJuIENvbnRleHRGb3JtYXQuVE9PTjtcbiAgICAgIGNhc2UgJ2pzb24nOlxuICAgICAgICByZXR1cm4gQ29udGV4dEZvcm1hdC5KU09OO1xuICAgICAgY2FzZSAnbWFya2Rvd24nOlxuICAgICAgY2FzZSAnbWQnOlxuICAgICAgICByZXR1cm4gQ29udGV4dEZvcm1hdC5NQVJLRE9XTjtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRocm93IG5ldyBGb3JtYXRDb252ZXJzaW9uRXJyb3IoXG4gICAgICAgICAgcyxcbiAgICAgICAgICAnQ29udGV4dEZvcm1hdCcsXG4gICAgICAgICAgYFVua25vd24gZm9ybWF0ICcke3N9Jy4gVmFsaWQ6IHRvb24sIGpzb24sIG1hcmtkb3duYFxuICAgICAgICApO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIENhbm9uaWNhbCBzdG9yYWdlIGZvcm1hdCAoc2VydmVyLXNpZGUgb25seSkuXG4gKiBcbiAqIFRoaXMgaXMgdGhlIGZvcm1hdCB1c2VkIGZvciBpbnRlcm5hbCBzdG9yYWdlIGFuZCBpcyBvcHRpbWl6ZWRcbiAqIGZvciBzdG9yYWdlIGVmZmljaWVuY3kgYW5kIHF1ZXJ5IHBlcmZvcm1hbmNlLlxuICovXG5leHBvcnQgZW51bSBDYW5vbmljYWxGb3JtYXQge1xuICAvKipcbiAgICogVE9PTiBjYW5vbmljYWwgZm9ybWF0LlxuICAgKi9cbiAgVE9PTiA9ICd0b29uJyxcbn1cblxuLyoqXG4gKiBIZWxwZXIgdG8gY2hlY2sgZm9ybWF0IGNhcGFiaWxpdGllcyBhbmQgY29udmVyc2lvbnMuXG4gKi9cbmV4cG9ydCBjbGFzcyBGb3JtYXRDYXBhYmlsaXRpZXMge1xuICAvKipcbiAgICogQ29udmVydCBXaXJlRm9ybWF0IHRvIENvbnRleHRGb3JtYXQgaWYgY29tcGF0aWJsZS5cbiAgICovXG4gIHN0YXRpYyB3aXJlVG9Db250ZXh0KHdpcmU6IFdpcmVGb3JtYXQpOiBDb250ZXh0Rm9ybWF0IHwgbnVsbCB7XG4gICAgc3dpdGNoICh3aXJlKSB7XG4gICAgICBjYXNlIFdpcmVGb3JtYXQuVE9PTjpcbiAgICAgICAgcmV0dXJuIENvbnRleHRGb3JtYXQuVE9PTjtcbiAgICAgIGNhc2UgV2lyZUZvcm1hdC5KU09OOlxuICAgICAgICByZXR1cm4gQ29udGV4dEZvcm1hdC5KU09OO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnQgQ29udGV4dEZvcm1hdCB0byBXaXJlRm9ybWF0IGlmIGNvbXBhdGlibGUuXG4gICAqL1xuICBzdGF0aWMgY29udGV4dFRvV2lyZShjdHg6IENvbnRleHRGb3JtYXQpOiBXaXJlRm9ybWF0IHwgbnVsbCB7XG4gICAgc3dpdGNoIChjdHgpIHtcbiAgICAgIGNhc2UgQ29udGV4dEZvcm1hdC5UT09OOlxuICAgICAgICByZXR1cm4gV2lyZUZvcm1hdC5UT09OO1xuICAgICAgY2FzZSBDb250ZXh0Rm9ybWF0LkpTT046XG4gICAgICAgIHJldHVybiBXaXJlRm9ybWF0LkpTT047XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2sgaWYgZm9ybWF0IHN1cHBvcnRzIHJvdW5kLXRyaXA6IGRlY29kZShlbmNvZGUoeCkpID0geC5cbiAgICovXG4gIHN0YXRpYyBzdXBwb3J0c1JvdW5kVHJpcChmbXQ6IFdpcmVGb3JtYXQpOiBib29sZWFuIHtcbiAgICByZXR1cm4gZm10ID09PSBXaXJlRm9ybWF0LlRPT04gfHwgZm10ID09PSBXaXJlRm9ybWF0LkpTT047XG4gIH1cbn1cbiJdfQ==
|