@plures/pluresdb 1.6.10 → 2.9.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +97 -289
- package/crates/README.md +99 -0
- package/crates/pluresdb-node/README.md +181 -0
- package/crates/pluresdb-node/index.d.ts +0 -0
- package/crates/pluresdb-node/index.js +265 -0
- package/crates/pluresdb-node/package.json +35 -0
- package/dist/napi/index.js +60 -0
- package/embedded.d.ts +1 -0
- package/embedded.js +46 -0
- package/package.json +20 -9
- package/dist/.tsbuildinfo +0 -1
- package/dist/better-sqlite3-shared.d.ts +0 -12
- package/dist/better-sqlite3-shared.d.ts.map +0 -1
- package/dist/better-sqlite3-shared.js +0 -143
- package/dist/better-sqlite3-shared.js.map +0 -1
- package/dist/better-sqlite3.d.ts +0 -4
- package/dist/better-sqlite3.d.ts.map +0 -1
- package/dist/better-sqlite3.js +0 -8
- package/dist/better-sqlite3.js.map +0 -1
- package/dist/cli.d.ts +0 -7
- package/dist/cli.d.ts.map +0 -1
- package/dist/cli.js.map +0 -1
- package/dist/local-first/unified-api.d.ts +0 -110
- package/dist/local-first/unified-api.d.ts.map +0 -1
- package/dist/local-first/unified-api.js +0 -348
- package/dist/local-first/unified-api.js.map +0 -1
- package/dist/node-index.d.ts +0 -150
- package/dist/node-index.d.ts.map +0 -1
- package/dist/node-index.js +0 -668
- package/dist/node-index.js.map +0 -1
- package/dist/node-wrapper.d.ts +0 -44
- package/dist/node-wrapper.d.ts.map +0 -1
- package/dist/node-wrapper.js +0 -296
- package/dist/node-wrapper.js.map +0 -1
- package/dist/types/index.d.ts +0 -28
- package/dist/types/index.d.ts.map +0 -1
- package/dist/types/index.js +0 -3
- package/dist/types/index.js.map +0 -1
- package/dist/types/node-types.d.ts +0 -71
- package/dist/types/node-types.d.ts.map +0 -1
- package/dist/types/node-types.js +0 -6
- package/dist/types/node-types.js.map +0 -1
- package/dist/util/debug.d.ts +0 -3
- package/dist/util/debug.d.ts.map +0 -1
- package/dist/util/debug.js +0 -34
- package/dist/util/debug.js.map +0 -1
- package/dist/vscode/extension.d.ts +0 -81
- package/dist/vscode/extension.d.ts.map +0 -1
- package/dist/vscode/extension.js +0 -309
- package/dist/vscode/extension.js.map +0 -1
- package/examples/basic-usage.d.ts +0 -2
- package/examples/basic-usage.d.ts.map +0 -1
- package/examples/basic-usage.js +0 -26
- package/examples/basic-usage.js.map +0 -1
- package/examples/basic-usage.ts +0 -29
- package/examples/browser-demo/README.md +0 -204
- package/examples/browser-demo/index.html +0 -466
- package/examples/browser-wasm-integration.md +0 -411
- package/examples/ipc-demo/README.md +0 -127
- package/examples/local-first-usage.ts +0 -138
- package/examples/native-ipc-integration.md +0 -526
- package/examples/tauri-demo/README.md +0 -240
- package/examples/tauri-integration.md +0 -260
- package/examples/vscode-extension-example/README.md +0 -95
- package/examples/vscode-extension-example/package.json +0 -49
- package/examples/vscode-extension-example/src/extension.ts +0 -172
- package/examples/vscode-extension-example/tsconfig.json +0 -12
- package/examples/vscode-extension-integration.d.ts +0 -31
- package/examples/vscode-extension-integration.d.ts.map +0 -1
- package/examples/vscode-extension-integration.js +0 -319
- package/examples/vscode-extension-integration.js.map +0 -1
- package/examples/vscode-extension-integration.ts +0 -41
- package/legacy/benchmarks/memory-benchmarks.ts +0 -350
- package/legacy/benchmarks/run-benchmarks.ts +0 -315
- package/legacy/better-sqlite3-shared.ts +0 -157
- package/legacy/better-sqlite3.ts +0 -4
- package/legacy/cli.ts +0 -241
- package/legacy/config.ts +0 -50
- package/legacy/core/crdt.ts +0 -107
- package/legacy/core/database.ts +0 -529
- package/legacy/healthcheck.ts +0 -162
- package/legacy/http/api-server.ts +0 -569
- package/legacy/index.ts +0 -31
- package/legacy/local-first/unified-api.ts +0 -449
- package/legacy/logic/rules.ts +0 -46
- package/legacy/main.rs +0 -3
- package/legacy/main.ts +0 -197
- package/legacy/network/websocket-server.ts +0 -115
- package/legacy/node-index.ts +0 -827
- package/legacy/node-wrapper.ts +0 -329
- package/legacy/plugins/README.md +0 -181
- package/legacy/plugins/example-embedding-plugin.ts +0 -56
- package/legacy/plugins/plugin-system.ts +0 -315
- package/legacy/sqlite-compat.ts +0 -633
- package/legacy/sqlite3-compat.ts +0 -55
- package/legacy/storage/kv-storage.ts +0 -73
- package/legacy/tests/core.test.ts +0 -305
- package/legacy/tests/fixtures/performance-data.json +0 -71
- package/legacy/tests/fixtures/test-data.json +0 -129
- package/legacy/tests/integration/api-server.test.ts +0 -334
- package/legacy/tests/integration/mesh-network.test.ts +0 -303
- package/legacy/tests/logic.test.ts +0 -34
- package/legacy/tests/performance/load.test.ts +0 -290
- package/legacy/tests/security/input-validation.test.ts +0 -286
- package/legacy/tests/unit/core.test.ts +0 -226
- package/legacy/tests/unit/local-first-api.test.ts +0 -65
- package/legacy/tests/unit/plugin-system.test.ts +0 -388
- package/legacy/tests/unit/subscriptions.test.ts +0 -135
- package/legacy/tests/unit/vector-search.test.ts +0 -173
- package/legacy/tests/vscode_extension_test.ts +0 -281
- package/legacy/types/index.ts +0 -32
- package/legacy/types/node-types.ts +0 -80
- package/legacy/util/debug.ts +0 -27
- package/legacy/vector/index.ts +0 -59
- package/legacy/vscode/extension.ts +0 -387
- package/scripts/compiled-crud-verify.ts +0 -30
- package/scripts/dogfood.ts +0 -297
- package/scripts/postinstall.js +0 -156
- package/scripts/publish-crates.sh +0 -95
- package/scripts/release-check.js +0 -224
- package/scripts/run-tests.ts +0 -178
- package/scripts/setup-libclang.ps1 +0 -209
- package/scripts/update-changelog.js +0 -214
- package/scripts/validate-npm-publish.js +0 -228
- package/web/README.md +0 -27
- package/web/svelte/package.json +0 -31
|
@@ -1,81 +0,0 @@
|
|
|
1
|
-
import { PluresNode, SQLiteCompatibleAPI } from "../node-index";
|
|
2
|
-
import type { PluresDBConfig } from "../types/node-types";
|
|
3
|
-
type DisposableLike = {
|
|
4
|
-
dispose(): void;
|
|
5
|
-
};
|
|
6
|
-
type InputBoxOptions = {
|
|
7
|
-
prompt: string;
|
|
8
|
-
placeHolder?: string;
|
|
9
|
-
};
|
|
10
|
-
type TextDocumentInit = {
|
|
11
|
-
content: string;
|
|
12
|
-
language: string;
|
|
13
|
-
};
|
|
14
|
-
type UriLike = {
|
|
15
|
-
toString(): string;
|
|
16
|
-
} | string;
|
|
17
|
-
export type VSCodeWindow = {
|
|
18
|
-
showInformationMessage(message: string): void | Promise<unknown>;
|
|
19
|
-
showErrorMessage(message: string): void | Promise<unknown>;
|
|
20
|
-
showInputBox(options: InputBoxOptions): Promise<string | undefined>;
|
|
21
|
-
showTextDocument(document: unknown): Promise<unknown>;
|
|
22
|
-
};
|
|
23
|
-
export type VSCodeCommands = {
|
|
24
|
-
registerCommand(command: string, callback: (...args: unknown[]) => unknown): DisposableLike;
|
|
25
|
-
};
|
|
26
|
-
export type VSCodeWorkspace = {
|
|
27
|
-
openTextDocument(init: TextDocumentInit): Promise<unknown>;
|
|
28
|
-
};
|
|
29
|
-
export type VSCodeEnv = {
|
|
30
|
-
openExternal(target: UriLike): Promise<unknown> | unknown;
|
|
31
|
-
};
|
|
32
|
-
export type VSCodeUri = {
|
|
33
|
-
parse(target: string): UriLike;
|
|
34
|
-
};
|
|
35
|
-
export type VSCodeAPI = {
|
|
36
|
-
window: VSCodeWindow;
|
|
37
|
-
commands: VSCodeCommands;
|
|
38
|
-
workspace: VSCodeWorkspace;
|
|
39
|
-
env: VSCodeEnv;
|
|
40
|
-
Uri: VSCodeUri;
|
|
41
|
-
};
|
|
42
|
-
export type ExtensionContextLike = {
|
|
43
|
-
subscriptions: DisposableLike[];
|
|
44
|
-
globalStorageUri: {
|
|
45
|
-
fsPath: string;
|
|
46
|
-
};
|
|
47
|
-
};
|
|
48
|
-
export type ExtensionOptions = {
|
|
49
|
-
config?: PluresDBConfig;
|
|
50
|
-
commandPrefix?: string;
|
|
51
|
-
pluresInstance?: PluresNode;
|
|
52
|
-
sqliteInstance?: SQLiteCompatibleAPI;
|
|
53
|
-
};
|
|
54
|
-
export declare class PluresVSCodeExtension {
|
|
55
|
-
private readonly vscode;
|
|
56
|
-
private readonly context;
|
|
57
|
-
private readonly plures;
|
|
58
|
-
private readonly sqlite;
|
|
59
|
-
private readonly commandPrefix;
|
|
60
|
-
private readonly disposables;
|
|
61
|
-
private activated;
|
|
62
|
-
constructor(vscodeApi: VSCodeAPI, context: ExtensionContextLike, options?: ExtensionOptions);
|
|
63
|
-
activate(): Promise<void>;
|
|
64
|
-
deactivate(): Promise<void>;
|
|
65
|
-
getWebUrl(): string;
|
|
66
|
-
storeSetting(key: string, value: unknown): Promise<void>;
|
|
67
|
-
getSetting(key: string): Promise<any>;
|
|
68
|
-
storeDocument(id: string, content: string, language: string, filePath: string): Promise<void>;
|
|
69
|
-
searchDocuments(query: string, limit?: number): Promise<any[]>;
|
|
70
|
-
executeSQL(sql: string, params?: unknown[]): Promise<any>;
|
|
71
|
-
private setupEventHandlers;
|
|
72
|
-
private registerCommands;
|
|
73
|
-
private setupDatabase;
|
|
74
|
-
private disposeAll;
|
|
75
|
-
private safeInfo;
|
|
76
|
-
private safeError;
|
|
77
|
-
private errorMessage;
|
|
78
|
-
}
|
|
79
|
-
export declare function createPluresExtension(vscodeApi: VSCodeAPI, context: ExtensionContextLike, options?: ExtensionOptions): PluresVSCodeExtension;
|
|
80
|
-
export {};
|
|
81
|
-
//# sourceMappingURL=extension.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"extension.d.ts","sourceRoot":"","sources":["../../legacy/vscode/extension.ts"],"names":[],"mappings":"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"}
|
package/dist/vscode/extension.js
DELETED
|
@@ -1,309 +0,0 @@
|
|
|
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 = options.pluresInstance ??
|
|
64
|
-
new node_index_1.PluresNode({ config: mergedConfig, autoStart: false });
|
|
65
|
-
this.sqlite = options.sqliteInstance ??
|
|
66
|
-
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
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"extension.js","sourceRoot":"","sources":["../../legacy/vscode/extension.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"basic-usage.d.ts","sourceRoot":"","sources":["basic-usage.ts"],"names":[],"mappings":""}
|
package/examples/basic-usage.js
DELETED
|
@@ -1,26 +0,0 @@
|
|
|
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
|
|
@@ -1 +0,0 @@
|
|
|
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"}
|
package/examples/basic-usage.ts
DELETED
|
@@ -1,29 +0,0 @@
|
|
|
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
|
-
);
|
|
@@ -1,204 +0,0 @@
|
|
|
1
|
-
# PluresDB Browser Demo
|
|
2
|
-
|
|
3
|
-
A fully-functional browser-based demo of PluresDB's local-first integration with WebAssembly.
|
|
4
|
-
|
|
5
|
-
## Features
|
|
6
|
-
|
|
7
|
-
- 🚀 Local-first database running entirely in the browser
|
|
8
|
-
- 📝 Add, list, and delete users
|
|
9
|
-
- 💾 Automatic persistence with IndexedDB
|
|
10
|
-
- 🎨 Beautiful, modern UI
|
|
11
|
-
- ⚡ Real-time updates
|
|
12
|
-
- 🔌 Offline-first by default
|
|
13
|
-
|
|
14
|
-
## Running the Demo
|
|
15
|
-
|
|
16
|
-
### Option 1: With WASM (Recommended)
|
|
17
|
-
|
|
18
|
-
The WASM bindings are now complete! Run the demo entirely in-browser without any server:
|
|
19
|
-
|
|
20
|
-
1. Build the WASM module:
|
|
21
|
-
```bash
|
|
22
|
-
cd crates/pluresdb-wasm
|
|
23
|
-
wasm-pack build --target web
|
|
24
|
-
```
|
|
25
|
-
|
|
26
|
-
2. Serve the demo with a local HTTP server:
|
|
27
|
-
```bash
|
|
28
|
-
# Using Python
|
|
29
|
-
python -m http.server 8000
|
|
30
|
-
|
|
31
|
-
# Or using Node.js
|
|
32
|
-
npx http-server
|
|
33
|
-
```
|
|
34
|
-
|
|
35
|
-
3. Open `http://localhost:8000/examples/browser-demo/index.html` in your browser
|
|
36
|
-
|
|
37
|
-
4. The demo will automatically use WASM mode with IndexedDB persistence - no server needed!
|
|
38
|
-
|
|
39
|
-
### Option 2: With PluresDB Server (Fallback)
|
|
40
|
-
|
|
41
|
-
For testing network mode:
|
|
42
|
-
|
|
43
|
-
1. Start the PluresDB server:
|
|
44
|
-
```bash
|
|
45
|
-
npm start
|
|
46
|
-
```
|
|
47
|
-
|
|
48
|
-
2. Open `index.html` in your browser - it will fall back to network mode
|
|
49
|
-
|
|
50
|
-
## What This Demonstrates
|
|
51
|
-
|
|
52
|
-
### Local-First Integration
|
|
53
|
-
- **WebAssembly**: Runs PluresDB core directly in the browser
|
|
54
|
-
- **IndexedDB**: Automatic data persistence
|
|
55
|
-
- **Auto-detection**: Automatically uses WASM when available
|
|
56
|
-
- **Network fallback**: Falls back to HTTP REST when needed
|
|
57
|
-
- **Unified API**: Same API regardless of backend
|
|
58
|
-
|
|
59
|
-
### Database Operations
|
|
60
|
-
- **Put**: Insert or update records with persistence
|
|
61
|
-
- **Get**: Retrieve records by ID
|
|
62
|
-
- **List**: Query all records
|
|
63
|
-
- **Delete**: Remove records from memory and IndexedDB
|
|
64
|
-
- **Clear**: Wipe all data
|
|
65
|
-
|
|
66
|
-
### User Interface
|
|
67
|
-
- Clean, modern design
|
|
68
|
-
- Real-time status updates
|
|
69
|
-
- Interactive user management
|
|
70
|
-
- Console output for debugging
|
|
71
|
-
|
|
72
|
-
## Architecture
|
|
73
|
-
|
|
74
|
-
### WASM Mode (Default)
|
|
75
|
-
```
|
|
76
|
-
┌─────────────────────────────────┐
|
|
77
|
-
│ Browser (index.html) │
|
|
78
|
-
│ │
|
|
79
|
-
│ PluresDBLocalFirst │
|
|
80
|
-
│ (Auto-detection) │
|
|
81
|
-
│ │ │
|
|
82
|
-
│ ▼ │
|
|
83
|
-
│ PluresDBBrowser (WASM) │
|
|
84
|
-
│ │ │
|
|
85
|
-
│ ▼ │
|
|
86
|
-
│ IndexedDB (Persistence) │
|
|
87
|
-
│ │
|
|
88
|
-
└─────────────────────────────────┘
|
|
89
|
-
100% In-Browser
|
|
90
|
-
No Network Required
|
|
91
|
-
```
|
|
92
|
-
|
|
93
|
-
### Network Mode (Fallback)
|
|
94
|
-
```
|
|
95
|
-
┌─────────────────────────────────┐
|
|
96
|
-
│ Browser (index.html) │
|
|
97
|
-
│ │
|
|
98
|
-
│ PluresDBLocalFirst │
|
|
99
|
-
│ (Auto-detection) │
|
|
100
|
-
│ │ │
|
|
101
|
-
│ └─ Network │
|
|
102
|
-
│ │ │
|
|
103
|
-
└───────────────────┼─────────────┘
|
|
104
|
-
│ HTTP
|
|
105
|
-
┌───────────▼──────────┐
|
|
106
|
-
│ PluresDB Server │
|
|
107
|
-
│ (port 34567) │
|
|
108
|
-
└──────────────────────┘
|
|
109
|
-
```
|
|
110
|
-
|
|
111
|
-
## Performance
|
|
112
|
-
|
|
113
|
-
With WASM mode enabled:
|
|
114
|
-
|
|
115
|
-
| Metric | Network Mode | WASM Mode | Improvement |
|
|
116
|
-
|--------|--------------|-----------|-------------|
|
|
117
|
-
| **Latency** | ~50-100ms | ~0.1ms | **500-1000x faster** |
|
|
118
|
-
| **Throughput** | ~100 ops/s | ~100k ops/s | **1000x faster** |
|
|
119
|
-
| **Offline** | ❌ Requires server | ✅ Fully offline | **100% available** |
|
|
120
|
-
| **Network** | Required | None | **Zero bandwidth** |
|
|
121
|
-
| **Persistence** | Server-side | IndexedDB | **Local storage** |
|
|
122
|
-
|
|
123
|
-
## Development
|
|
124
|
-
|
|
125
|
-
To modify the demo:
|
|
126
|
-
|
|
127
|
-
1. Edit `index.html` - all code is in a single file for simplicity
|
|
128
|
-
2. Rebuild WASM if you modified Rust code:
|
|
129
|
-
```bash
|
|
130
|
-
cd crates/pluresdb-wasm
|
|
131
|
-
wasm-pack build --target web
|
|
132
|
-
```
|
|
133
|
-
3. Refresh the browser to see changes
|
|
134
|
-
4. Use browser DevTools (F12) to debug
|
|
135
|
-
|
|
136
|
-
## Integration with Your App
|
|
137
|
-
|
|
138
|
-
To integrate PluresDB local-first into your own application:
|
|
139
|
-
|
|
140
|
-
```javascript
|
|
141
|
-
import { PluresDBLocalFirst } from "@plures/pluresdb/local-first";
|
|
142
|
-
|
|
143
|
-
// Auto-detects best mode (WASM in browser)
|
|
144
|
-
const db = new PluresDBLocalFirst({ mode: "auto" });
|
|
145
|
-
|
|
146
|
-
// Or force WASM mode
|
|
147
|
-
const db = new PluresDBLocalFirst({ mode: "wasm", dbName: "my-app" });
|
|
148
|
-
|
|
149
|
-
// Use the API
|
|
150
|
-
await db.put("user:1", { name: "Alice", email: "alice@example.com" });
|
|
151
|
-
const user = await db.get("user:1");
|
|
152
|
-
```
|
|
153
|
-
|
|
154
|
-
See the [Local-First Integration Guide](../../docs/LOCAL_FIRST_INTEGRATION.md) for complete documentation.
|
|
155
|
-
|
|
156
|
-
## Troubleshooting
|
|
157
|
-
|
|
158
|
-
### WASM not loading
|
|
159
|
-
|
|
160
|
-
1. Make sure you built the WASM module:
|
|
161
|
-
```bash
|
|
162
|
-
cd crates/pluresdb-wasm
|
|
163
|
-
wasm-pack build --target web
|
|
164
|
-
```
|
|
165
|
-
|
|
166
|
-
2. Check browser console for errors
|
|
167
|
-
|
|
168
|
-
3. Ensure you're using a local HTTP server (not file://)
|
|
169
|
-
|
|
170
|
-
### "Failed to connect" error (network mode)
|
|
171
|
-
|
|
172
|
-
Make sure the PluresDB server is running:
|
|
173
|
-
```bash
|
|
174
|
-
npm start
|
|
175
|
-
```
|
|
176
|
-
|
|
177
|
-
The server should be listening on port 34567.
|
|
178
|
-
|
|
179
|
-
### IndexedDB not persisting data
|
|
180
|
-
|
|
181
|
-
1. Check browser console for IndexedDB errors
|
|
182
|
-
2. Make sure you called `init_persistence()` on the WASM instance
|
|
183
|
-
3. Check browser storage settings (some browsers block IndexedDB in private mode)
|
|
184
|
-
|
|
185
|
-
## Browser Compatibility
|
|
186
|
-
|
|
187
|
-
WASM mode is supported in:
|
|
188
|
-
- ✅ Chrome/Edge 57+
|
|
189
|
-
- ✅ Firefox 52+
|
|
190
|
-
- ✅ Safari 11+
|
|
191
|
-
- ✅ Opera 44+
|
|
192
|
-
|
|
193
|
-
IndexedDB is supported in all modern browsers.
|
|
194
|
-
|
|
195
|
-
## Next Steps
|
|
196
|
-
|
|
197
|
-
- [Browser WASM Integration Guide](../browser-wasm-integration.md)
|
|
198
|
-
- [Local-First Integration Methodology](../../docs/LOCAL_FIRST_INTEGRATION.md)
|
|
199
|
-
- [Tauri Integration Example](../tauri-integration.md)
|
|
200
|
-
- [IPC Integration Example](../ipc-demo/README.md)
|
|
201
|
-
|
|
202
|
-
## License
|
|
203
|
-
|
|
204
|
-
AGPL-3.0 - see [LICENSE](../../LICENSE)
|