pluresdb 1.0.1
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 +72 -0
- package/README.md +322 -0
- package/dist/.tsbuildinfo +1 -0
- package/dist/cli.d.ts +7 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +253 -0
- package/dist/cli.js.map +1 -0
- package/dist/node-index.d.ts +52 -0
- package/dist/node-index.d.ts.map +1 -0
- package/dist/node-index.js +359 -0
- package/dist/node-index.js.map +1 -0
- package/dist/node-wrapper.d.ts +44 -0
- package/dist/node-wrapper.d.ts.map +1 -0
- package/dist/node-wrapper.js +294 -0
- package/dist/node-wrapper.js.map +1 -0
- package/dist/types/index.d.ts +28 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +3 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/node-types.d.ts +59 -0
- package/dist/types/node-types.d.ts.map +1 -0
- package/dist/types/node-types.js +6 -0
- package/dist/types/node-types.js.map +1 -0
- package/dist/vscode/extension.d.ts +81 -0
- package/dist/vscode/extension.d.ts.map +1 -0
- package/dist/vscode/extension.js +309 -0
- package/dist/vscode/extension.js.map +1 -0
- package/examples/basic-usage.d.ts +2 -0
- package/examples/basic-usage.d.ts.map +1 -0
- package/examples/basic-usage.js +26 -0
- package/examples/basic-usage.js.map +1 -0
- package/examples/basic-usage.ts +29 -0
- package/examples/vscode-extension-example/README.md +95 -0
- package/examples/vscode-extension-example/package.json +49 -0
- package/examples/vscode-extension-example/src/extension.ts +163 -0
- package/examples/vscode-extension-example/tsconfig.json +12 -0
- package/examples/vscode-extension-integration.d.ts +24 -0
- package/examples/vscode-extension-integration.d.ts.map +1 -0
- package/examples/vscode-extension-integration.js +285 -0
- package/examples/vscode-extension-integration.js.map +1 -0
- package/examples/vscode-extension-integration.ts +41 -0
- package/package.json +115 -0
- package/scripts/compiled-crud-verify.ts +28 -0
- package/scripts/dogfood.ts +258 -0
- package/scripts/postinstall.js +155 -0
- package/scripts/run-tests.ts +175 -0
- package/scripts/setup-libclang.ps1 +209 -0
- package/src/benchmarks/memory-benchmarks.ts +316 -0
- package/src/benchmarks/run-benchmarks.ts +293 -0
- package/src/cli.ts +231 -0
- package/src/config.ts +49 -0
- package/src/core/crdt.ts +104 -0
- package/src/core/database.ts +494 -0
- package/src/healthcheck.ts +156 -0
- package/src/http/api-server.ts +334 -0
- package/src/index.ts +28 -0
- package/src/logic/rules.ts +44 -0
- package/src/main.rs +3 -0
- package/src/main.ts +190 -0
- package/src/network/websocket-server.ts +115 -0
- package/src/node-index.ts +385 -0
- package/src/node-wrapper.ts +320 -0
- package/src/sqlite-compat.ts +586 -0
- package/src/sqlite3-compat.ts +55 -0
- package/src/storage/kv-storage.ts +71 -0
- package/src/tests/core.test.ts +281 -0
- package/src/tests/fixtures/performance-data.json +71 -0
- package/src/tests/fixtures/test-data.json +124 -0
- package/src/tests/integration/api-server.test.ts +232 -0
- package/src/tests/integration/mesh-network.test.ts +297 -0
- package/src/tests/logic.test.ts +30 -0
- package/src/tests/performance/load.test.ts +288 -0
- package/src/tests/security/input-validation.test.ts +282 -0
- package/src/tests/unit/core.test.ts +216 -0
- package/src/tests/unit/subscriptions.test.ts +135 -0
- package/src/tests/unit/vector-search.test.ts +173 -0
- package/src/tests/vscode_extension_test.ts +253 -0
- package/src/types/index.ts +32 -0
- package/src/types/node-types.ts +66 -0
- package/src/util/debug.ts +14 -0
- package/src/vector/index.ts +59 -0
- package/src/vscode/extension.ts +364 -0
- package/web/README.md +27 -0
- package/web/svelte/package.json +31 -0
|
@@ -0,0 +1,309 @@
|
|
|
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.PluresVSCodeExtension = void 0;
|
|
37
|
+
exports.createPluresExtension = createPluresExtension;
|
|
38
|
+
const path = __importStar(require("node:path"));
|
|
39
|
+
const node_index_1 = require("../node-index");
|
|
40
|
+
const DEFAULT_CONFIG = {
|
|
41
|
+
port: 34567,
|
|
42
|
+
host: "localhost",
|
|
43
|
+
webPort: 34568,
|
|
44
|
+
logLevel: "info",
|
|
45
|
+
};
|
|
46
|
+
class PluresVSCodeExtension {
|
|
47
|
+
vscode;
|
|
48
|
+
context;
|
|
49
|
+
plures;
|
|
50
|
+
sqlite;
|
|
51
|
+
commandPrefix;
|
|
52
|
+
disposables = [];
|
|
53
|
+
activated = false;
|
|
54
|
+
constructor(vscodeApi, context, options = {}) {
|
|
55
|
+
this.vscode = vscodeApi;
|
|
56
|
+
this.context = context;
|
|
57
|
+
this.commandPrefix = options.commandPrefix ?? "pluresdb";
|
|
58
|
+
const mergedConfig = {
|
|
59
|
+
...DEFAULT_CONFIG,
|
|
60
|
+
dataDir: path.join(context.globalStorageUri.fsPath, "pluresdb"),
|
|
61
|
+
...options.config,
|
|
62
|
+
};
|
|
63
|
+
this.plures =
|
|
64
|
+
options.pluresInstance ?? new node_index_1.PluresNode({ config: mergedConfig, autoStart: false });
|
|
65
|
+
this.sqlite =
|
|
66
|
+
options.sqliteInstance ?? new node_index_1.SQLiteCompatibleAPI({ config: mergedConfig, autoStart: false });
|
|
67
|
+
this.setupEventHandlers();
|
|
68
|
+
}
|
|
69
|
+
async activate() {
|
|
70
|
+
if (this.activated) {
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
try {
|
|
74
|
+
await this.plures.start();
|
|
75
|
+
await this.sqlite.start();
|
|
76
|
+
this.registerCommands();
|
|
77
|
+
await this.setupDatabase();
|
|
78
|
+
this.activated = true;
|
|
79
|
+
await this.safeInfo("PluresDB extension activated");
|
|
80
|
+
}
|
|
81
|
+
catch (error) {
|
|
82
|
+
await this.safeError(`Failed to activate PluresDB: ${this.errorMessage(error)}`);
|
|
83
|
+
throw error;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
async deactivate() {
|
|
87
|
+
if (!this.activated) {
|
|
88
|
+
return;
|
|
89
|
+
}
|
|
90
|
+
try {
|
|
91
|
+
await this.sqlite.stop();
|
|
92
|
+
await this.plures.stop();
|
|
93
|
+
}
|
|
94
|
+
finally {
|
|
95
|
+
this.disposeAll();
|
|
96
|
+
this.activated = false;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
getWebUrl() {
|
|
100
|
+
return this.plures.getWebUrl();
|
|
101
|
+
}
|
|
102
|
+
async storeSetting(key, value) {
|
|
103
|
+
return this.sqlite.put(`settings:${key}`, value);
|
|
104
|
+
}
|
|
105
|
+
async getSetting(key) {
|
|
106
|
+
return this.sqlite.getValue(`settings:${key}`);
|
|
107
|
+
}
|
|
108
|
+
async storeDocument(id, content, language, filePath) {
|
|
109
|
+
return this.sqlite.put(`documents:${id}`, {
|
|
110
|
+
content,
|
|
111
|
+
language,
|
|
112
|
+
filePath,
|
|
113
|
+
updatedAt: new Date().toISOString(),
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
async searchDocuments(query, limit = 20) {
|
|
117
|
+
return this.sqlite.vectorSearch(query, limit);
|
|
118
|
+
}
|
|
119
|
+
async executeSQL(sql, params = []) {
|
|
120
|
+
return this.sqlite.all(sql, params);
|
|
121
|
+
}
|
|
122
|
+
setupEventHandlers() {
|
|
123
|
+
this.plures.on("started", () => {
|
|
124
|
+
this.safeInfo("PluresDB database started");
|
|
125
|
+
});
|
|
126
|
+
this.plures.on("stopped", () => {
|
|
127
|
+
this.safeInfo("PluresDB database stopped");
|
|
128
|
+
});
|
|
129
|
+
this.plures.on("error", (error) => {
|
|
130
|
+
this.safeError(`PluresDB error: ${this.errorMessage(error)}`);
|
|
131
|
+
});
|
|
132
|
+
this.plures.on("stderr", (output) => {
|
|
133
|
+
const trimmed = output.trim();
|
|
134
|
+
if (trimmed.length > 0) {
|
|
135
|
+
this.safeError(trimmed);
|
|
136
|
+
}
|
|
137
|
+
});
|
|
138
|
+
this.plures.on("stdout", (output) => {
|
|
139
|
+
const trimmed = output.trim();
|
|
140
|
+
if (trimmed.length > 0) {
|
|
141
|
+
this.safeInfo(trimmed);
|
|
142
|
+
}
|
|
143
|
+
});
|
|
144
|
+
}
|
|
145
|
+
registerCommands() {
|
|
146
|
+
const register = (name, factory) => {
|
|
147
|
+
const disposable = this.vscode.commands.registerCommand(`${this.commandPrefix}.${name}`, () => factory());
|
|
148
|
+
this.context.subscriptions.push(disposable);
|
|
149
|
+
this.disposables.push(disposable);
|
|
150
|
+
};
|
|
151
|
+
register("openWebUI", async () => {
|
|
152
|
+
const webUrl = this.getWebUrl();
|
|
153
|
+
await this.vscode.env.openExternal(this.vscode.Uri.parse(webUrl));
|
|
154
|
+
});
|
|
155
|
+
register("executeQuery", async () => {
|
|
156
|
+
const sql = await this.vscode.window.showInputBox({
|
|
157
|
+
prompt: "Enter SQL query",
|
|
158
|
+
placeHolder: "SELECT * FROM users",
|
|
159
|
+
});
|
|
160
|
+
if (!sql)
|
|
161
|
+
return;
|
|
162
|
+
try {
|
|
163
|
+
const result = await this.sqlite.all(sql);
|
|
164
|
+
const doc = await this.vscode.workspace.openTextDocument({
|
|
165
|
+
content: JSON.stringify(result, null, 2),
|
|
166
|
+
language: "json",
|
|
167
|
+
});
|
|
168
|
+
await this.vscode.window.showTextDocument(doc);
|
|
169
|
+
}
|
|
170
|
+
catch (error) {
|
|
171
|
+
await this.safeError(`Query failed: ${this.errorMessage(error)}`);
|
|
172
|
+
}
|
|
173
|
+
});
|
|
174
|
+
register("vectorSearch", async () => {
|
|
175
|
+
const query = await this.vscode.window.showInputBox({
|
|
176
|
+
prompt: "Enter search query",
|
|
177
|
+
placeHolder: "machine learning",
|
|
178
|
+
});
|
|
179
|
+
if (!query)
|
|
180
|
+
return;
|
|
181
|
+
try {
|
|
182
|
+
const results = await this.sqlite.vectorSearch(query, 10);
|
|
183
|
+
const doc = await this.vscode.workspace.openTextDocument({
|
|
184
|
+
content: JSON.stringify(results, null, 2),
|
|
185
|
+
language: "json",
|
|
186
|
+
});
|
|
187
|
+
await this.vscode.window.showTextDocument(doc);
|
|
188
|
+
}
|
|
189
|
+
catch (error) {
|
|
190
|
+
await this.safeError(`Vector search failed: ${this.errorMessage(error)}`);
|
|
191
|
+
}
|
|
192
|
+
});
|
|
193
|
+
register("storeData", async () => {
|
|
194
|
+
const key = await this.vscode.window.showInputBox({
|
|
195
|
+
prompt: "Enter key",
|
|
196
|
+
placeHolder: "user:123",
|
|
197
|
+
});
|
|
198
|
+
if (!key)
|
|
199
|
+
return;
|
|
200
|
+
const json = await this.vscode.window.showInputBox({
|
|
201
|
+
prompt: "Enter value (JSON)",
|
|
202
|
+
placeHolder: '{"name": "Ada", "email": "ada@example.com"}',
|
|
203
|
+
});
|
|
204
|
+
if (!json)
|
|
205
|
+
return;
|
|
206
|
+
try {
|
|
207
|
+
const value = JSON.parse(json);
|
|
208
|
+
await this.sqlite.put(key, value);
|
|
209
|
+
await this.safeInfo(`Stored data for key: ${key}`);
|
|
210
|
+
}
|
|
211
|
+
catch (error) {
|
|
212
|
+
await this.safeError(`Failed to store data: ${this.errorMessage(error)}`);
|
|
213
|
+
}
|
|
214
|
+
});
|
|
215
|
+
register("retrieveData", async () => {
|
|
216
|
+
const key = await this.vscode.window.showInputBox({
|
|
217
|
+
prompt: "Enter key to retrieve",
|
|
218
|
+
placeHolder: "user:123",
|
|
219
|
+
});
|
|
220
|
+
if (!key)
|
|
221
|
+
return;
|
|
222
|
+
try {
|
|
223
|
+
const value = await this.sqlite.getValue(key);
|
|
224
|
+
if (value) {
|
|
225
|
+
const doc = await this.vscode.workspace.openTextDocument({
|
|
226
|
+
content: JSON.stringify(value, null, 2),
|
|
227
|
+
language: "json",
|
|
228
|
+
});
|
|
229
|
+
await this.vscode.window.showTextDocument(doc);
|
|
230
|
+
}
|
|
231
|
+
else {
|
|
232
|
+
await this.safeInfo("Key not found");
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
catch (error) {
|
|
236
|
+
await this.safeError(`Failed to retrieve data: ${this.errorMessage(error)}`);
|
|
237
|
+
}
|
|
238
|
+
});
|
|
239
|
+
}
|
|
240
|
+
async setupDatabase() {
|
|
241
|
+
const statements = [
|
|
242
|
+
`CREATE TABLE IF NOT EXISTS settings (
|
|
243
|
+
key TEXT PRIMARY KEY,
|
|
244
|
+
value TEXT,
|
|
245
|
+
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
|
246
|
+
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP
|
|
247
|
+
)`,
|
|
248
|
+
`CREATE TABLE IF NOT EXISTS documents (
|
|
249
|
+
id TEXT PRIMARY KEY,
|
|
250
|
+
content TEXT,
|
|
251
|
+
language TEXT,
|
|
252
|
+
file_path TEXT,
|
|
253
|
+
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
|
254
|
+
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP
|
|
255
|
+
)`,
|
|
256
|
+
`CREATE TABLE IF NOT EXISTS search_history (
|
|
257
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
258
|
+
query TEXT,
|
|
259
|
+
results_count INTEGER,
|
|
260
|
+
created_at DATETIME DEFAULT CURRENT_TIMESTAMP
|
|
261
|
+
)`,
|
|
262
|
+
];
|
|
263
|
+
for (const sql of statements) {
|
|
264
|
+
try {
|
|
265
|
+
await this.sqlite.exec(sql);
|
|
266
|
+
}
|
|
267
|
+
catch (error) {
|
|
268
|
+
await this.safeError(`Failed to initialize database: ${this.errorMessage(error)}`);
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
disposeAll() {
|
|
273
|
+
for (const disposable of this.disposables.splice(0)) {
|
|
274
|
+
try {
|
|
275
|
+
disposable.dispose();
|
|
276
|
+
}
|
|
277
|
+
catch (_error) {
|
|
278
|
+
// ignore
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
async safeInfo(message) {
|
|
283
|
+
try {
|
|
284
|
+
await this.vscode.window.showInformationMessage(message);
|
|
285
|
+
}
|
|
286
|
+
catch (_error) {
|
|
287
|
+
// ignore message failures in headless tests
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
async safeError(message) {
|
|
291
|
+
try {
|
|
292
|
+
await this.vscode.window.showErrorMessage(message);
|
|
293
|
+
}
|
|
294
|
+
catch (_error) {
|
|
295
|
+
// ignore message failures in headless tests
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
errorMessage(error) {
|
|
299
|
+
if (error instanceof Error) {
|
|
300
|
+
return error.message;
|
|
301
|
+
}
|
|
302
|
+
return String(error);
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
exports.PluresVSCodeExtension = PluresVSCodeExtension;
|
|
306
|
+
function createPluresExtension(vscodeApi, context, options = {}) {
|
|
307
|
+
return new PluresVSCodeExtension(vscodeApi, context, options);
|
|
308
|
+
}
|
|
309
|
+
//# sourceMappingURL=extension.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extension.js","sourceRoot":"","sources":["../../src/vscode/extension.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"basic-usage.d.ts","sourceRoot":"","sources":["basic-usage.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const database_ts_1 = require("../src/core/database.ts");
|
|
4
|
+
const db = new database_ts_1.GunDB();
|
|
5
|
+
await db.ready();
|
|
6
|
+
await db.put("user:alice", {
|
|
7
|
+
name: "Alice",
|
|
8
|
+
age: 30,
|
|
9
|
+
city: "London",
|
|
10
|
+
vector: undefined,
|
|
11
|
+
});
|
|
12
|
+
const user = await db.get("user:alice");
|
|
13
|
+
console.log("User:", user);
|
|
14
|
+
db.on("user:alice", (node) => console.log("Updated user:alice:", node));
|
|
15
|
+
await db.put("note:1", { text: "I love visiting museums in London" });
|
|
16
|
+
await db.put("note:2", { text: "Best pizza in New York" });
|
|
17
|
+
await db.put("note:3", { text: "Parks and galleries around London are great" });
|
|
18
|
+
const results = await db.vectorSearch("Find things about London", 5);
|
|
19
|
+
console.log(
|
|
20
|
+
"Semantic search results:",
|
|
21
|
+
results.map((n) => ({
|
|
22
|
+
id: n.id,
|
|
23
|
+
text: n.data.text,
|
|
24
|
+
})),
|
|
25
|
+
);
|
|
26
|
+
//# sourceMappingURL=basic-usage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"basic-usage.js","sourceRoot":"","sources":["basic-usage.ts"],"names":[],"mappings":";;AAAA,yDAAgD;AAEhD,MAAM,EAAE,GAAG,IAAI,mBAAK,EAAE,CAAC;AACvB,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC;AAEjB,MAAM,EAAE,CAAC,GAAG,CAAC,YAAY,EAAE;IACzB,IAAI,EAAE,OAAO;IACb,GAAG,EAAE,EAAE;IACP,IAAI,EAAE,QAAQ;IACd,MAAM,EAAE,SAAS;CAClB,CAAC,CAAC;AAEH,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;AACxC,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AAE3B,EAAE,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,qBAAqB,EAAE,IAAI,CAAC,CAAC,CAAC;AAExE,MAAM,EAAE,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,mCAAmC,EAAE,CAAC,CAAC;AACtE,MAAM,EAAE,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,wBAAwB,EAAE,CAAC,CAAC;AAC3D,MAAM,EAAE,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,6CAA6C,EAAE,CAAC,CAAC;AAEhF,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,YAAY,CAAC,0BAA0B,EAAE,CAAC,CAAC,CAAC;AACrE,OAAO,CAAC,GAAG,CACT,0BAA0B,EAC1B,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAClB,EAAE,EAAE,CAAC,CAAC,EAAE;IACR,IAAI,EAAG,CAAC,CAAC,IAAgC,CAAC,IAAI;CAC/C,CAAC,CAAC,CACJ,CAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { GunDB } from "../src/core/database.ts";
|
|
2
|
+
|
|
3
|
+
const db = new GunDB();
|
|
4
|
+
await db.ready();
|
|
5
|
+
|
|
6
|
+
await db.put("user:alice", {
|
|
7
|
+
name: "Alice",
|
|
8
|
+
age: 30,
|
|
9
|
+
city: "London",
|
|
10
|
+
vector: undefined,
|
|
11
|
+
});
|
|
12
|
+
|
|
13
|
+
const user = await db.get("user:alice");
|
|
14
|
+
console.log("User:", user);
|
|
15
|
+
|
|
16
|
+
db.on("user:alice", (node) => console.log("Updated user:alice:", node));
|
|
17
|
+
|
|
18
|
+
await db.put("note:1", { text: "I love visiting museums in London" });
|
|
19
|
+
await db.put("note:2", { text: "Best pizza in New York" });
|
|
20
|
+
await db.put("note:3", { text: "Parks and galleries around London are great" });
|
|
21
|
+
|
|
22
|
+
const results = await db.vectorSearch("Find things about London", 5);
|
|
23
|
+
console.log(
|
|
24
|
+
"Semantic search results:",
|
|
25
|
+
results.map((n) => ({
|
|
26
|
+
id: n.id,
|
|
27
|
+
text: (n.data as Record<string, unknown>).text,
|
|
28
|
+
})),
|
|
29
|
+
);
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
# PluresDB VSCode Extension Example
|
|
2
|
+
|
|
3
|
+
This is an example VSCode extension that demonstrates how to integrate PluresDB into your VSCode extension.
|
|
4
|
+
|
|
5
|
+
## Features
|
|
6
|
+
|
|
7
|
+
- **Store Data**: Store key-value pairs in PluresDB
|
|
8
|
+
- **Retrieve Data**: Retrieve data by key
|
|
9
|
+
- **Vector Search**: Perform semantic search across your data
|
|
10
|
+
- **SQLite Compatibility**: Use familiar SQLite API
|
|
11
|
+
|
|
12
|
+
## Installation
|
|
13
|
+
|
|
14
|
+
1. Install dependencies:
|
|
15
|
+
|
|
16
|
+
```bash
|
|
17
|
+
npm install
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
2. Compile the extension:
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
npm run compile
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
3. Press F5 to run the extension in a new Extension Development Host window
|
|
27
|
+
|
|
28
|
+
## Usage
|
|
29
|
+
|
|
30
|
+
1. Open the Command Palette (Ctrl+Shift+P)
|
|
31
|
+
2. Run one of these commands:
|
|
32
|
+
- `PluresDB Example: Hello World` - Shows a hello world message
|
|
33
|
+
- `PluresDB Example: Store Data` - Store data in PluresDB
|
|
34
|
+
- `PluresDB Example: Retrieve Data` - Retrieve data from PluresDB
|
|
35
|
+
- `PluresDB Example: Search Data` - Search data with vector search
|
|
36
|
+
|
|
37
|
+
## Code Example
|
|
38
|
+
|
|
39
|
+
```typescript
|
|
40
|
+
import { SQLiteCompatibleAPI } from "pluresdb";
|
|
41
|
+
|
|
42
|
+
// Initialize database
|
|
43
|
+
const db = new SQLiteCompatibleAPI({
|
|
44
|
+
config: {
|
|
45
|
+
dataDir: path.join(context.globalStorageUri.fsPath, "pluresdb"),
|
|
46
|
+
port: 34567,
|
|
47
|
+
host: "localhost",
|
|
48
|
+
},
|
|
49
|
+
});
|
|
50
|
+
|
|
51
|
+
// Start database
|
|
52
|
+
await db.start();
|
|
53
|
+
|
|
54
|
+
// Store data
|
|
55
|
+
await db.put("user:123", { name: "John", email: "john@example.com" });
|
|
56
|
+
|
|
57
|
+
// Retrieve data
|
|
58
|
+
const user = await db.getValue("user:123");
|
|
59
|
+
|
|
60
|
+
// Vector search
|
|
61
|
+
const results = await db.vectorSearch("machine learning", 10);
|
|
62
|
+
|
|
63
|
+
// SQL queries
|
|
64
|
+
await db.exec("CREATE TABLE users (id TEXT, name TEXT)");
|
|
65
|
+
const users = await db.all("SELECT * FROM users");
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
## Migration from SQLite
|
|
69
|
+
|
|
70
|
+
If you're migrating from SQLite, the API is nearly identical:
|
|
71
|
+
|
|
72
|
+
```typescript
|
|
73
|
+
// Before (SQLite)
|
|
74
|
+
import sqlite3 from "sqlite3";
|
|
75
|
+
const db = new sqlite3.Database("./data.db");
|
|
76
|
+
|
|
77
|
+
// After (PluresDB)
|
|
78
|
+
import { SQLiteCompatibleAPI } from "pluresdb";
|
|
79
|
+
const db = new SQLiteCompatibleAPI();
|
|
80
|
+
await db.start();
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
## Benefits of PluresDB
|
|
84
|
+
|
|
85
|
+
- **P2P Sync**: Share data across devices
|
|
86
|
+
- **Offline-First**: Work without internet
|
|
87
|
+
- **Vector Search**: Semantic search capabilities
|
|
88
|
+
- **Encrypted Sharing**: Secure data sharing
|
|
89
|
+
- **SQLite Compatibility**: Easy migration
|
|
90
|
+
|
|
91
|
+
## Learn More
|
|
92
|
+
|
|
93
|
+
- [PluresDB Documentation](../../README.md)
|
|
94
|
+
- [VSCode Extension API](https://code.visualstudio.com/api)
|
|
95
|
+
- [Migration Guide](../../docs/VSCODE_MIGRATION.md)
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "pluresdb-extension-example",
|
|
3
|
+
"displayName": "PluresDB Extension Example",
|
|
4
|
+
"description": "Example VSCode extension using PluresDB",
|
|
5
|
+
"version": "0.0.1",
|
|
6
|
+
"engines": {
|
|
7
|
+
"vscode": "^1.74.0"
|
|
8
|
+
},
|
|
9
|
+
"categories": [
|
|
10
|
+
"Other"
|
|
11
|
+
],
|
|
12
|
+
"activationEvents": [
|
|
13
|
+
"onCommand:pluresdb-example.helloWorld"
|
|
14
|
+
],
|
|
15
|
+
"main": "./out/extension.js",
|
|
16
|
+
"contributes": {
|
|
17
|
+
"commands": [
|
|
18
|
+
{
|
|
19
|
+
"command": "pluresdb-example.helloWorld",
|
|
20
|
+
"title": "Hello World from PluresDB"
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
"command": "pluresdb-example.storeData",
|
|
24
|
+
"title": "Store Data in PluresDB"
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"command": "pluresdb-example.retrieveData",
|
|
28
|
+
"title": "Retrieve Data from PluresDB"
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
"command": "pluresdb-example.searchData",
|
|
32
|
+
"title": "Search Data with Vector Search"
|
|
33
|
+
}
|
|
34
|
+
]
|
|
35
|
+
},
|
|
36
|
+
"scripts": {
|
|
37
|
+
"vscode:prepublish": "npm run compile",
|
|
38
|
+
"compile": "tsc -p ./",
|
|
39
|
+
"watch": "tsc -watch -p ./"
|
|
40
|
+
},
|
|
41
|
+
"devDependencies": {
|
|
42
|
+
"@types/vscode": "^1.74.0",
|
|
43
|
+
"@types/node": "16.x",
|
|
44
|
+
"typescript": "^4.9.4"
|
|
45
|
+
},
|
|
46
|
+
"dependencies": {
|
|
47
|
+
"pluresdb": "file:../.."
|
|
48
|
+
}
|
|
49
|
+
}
|