@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.
Files changed (126) hide show
  1. package/README.md +97 -289
  2. package/crates/README.md +99 -0
  3. package/crates/pluresdb-node/README.md +181 -0
  4. package/crates/pluresdb-node/index.d.ts +0 -0
  5. package/crates/pluresdb-node/index.js +265 -0
  6. package/crates/pluresdb-node/package.json +35 -0
  7. package/dist/napi/index.js +60 -0
  8. package/embedded.d.ts +1 -0
  9. package/embedded.js +46 -0
  10. package/package.json +20 -9
  11. package/dist/.tsbuildinfo +0 -1
  12. package/dist/better-sqlite3-shared.d.ts +0 -12
  13. package/dist/better-sqlite3-shared.d.ts.map +0 -1
  14. package/dist/better-sqlite3-shared.js +0 -143
  15. package/dist/better-sqlite3-shared.js.map +0 -1
  16. package/dist/better-sqlite3.d.ts +0 -4
  17. package/dist/better-sqlite3.d.ts.map +0 -1
  18. package/dist/better-sqlite3.js +0 -8
  19. package/dist/better-sqlite3.js.map +0 -1
  20. package/dist/cli.d.ts +0 -7
  21. package/dist/cli.d.ts.map +0 -1
  22. package/dist/cli.js.map +0 -1
  23. package/dist/local-first/unified-api.d.ts +0 -110
  24. package/dist/local-first/unified-api.d.ts.map +0 -1
  25. package/dist/local-first/unified-api.js +0 -348
  26. package/dist/local-first/unified-api.js.map +0 -1
  27. package/dist/node-index.d.ts +0 -150
  28. package/dist/node-index.d.ts.map +0 -1
  29. package/dist/node-index.js +0 -668
  30. package/dist/node-index.js.map +0 -1
  31. package/dist/node-wrapper.d.ts +0 -44
  32. package/dist/node-wrapper.d.ts.map +0 -1
  33. package/dist/node-wrapper.js +0 -296
  34. package/dist/node-wrapper.js.map +0 -1
  35. package/dist/types/index.d.ts +0 -28
  36. package/dist/types/index.d.ts.map +0 -1
  37. package/dist/types/index.js +0 -3
  38. package/dist/types/index.js.map +0 -1
  39. package/dist/types/node-types.d.ts +0 -71
  40. package/dist/types/node-types.d.ts.map +0 -1
  41. package/dist/types/node-types.js +0 -6
  42. package/dist/types/node-types.js.map +0 -1
  43. package/dist/util/debug.d.ts +0 -3
  44. package/dist/util/debug.d.ts.map +0 -1
  45. package/dist/util/debug.js +0 -34
  46. package/dist/util/debug.js.map +0 -1
  47. package/dist/vscode/extension.d.ts +0 -81
  48. package/dist/vscode/extension.d.ts.map +0 -1
  49. package/dist/vscode/extension.js +0 -309
  50. package/dist/vscode/extension.js.map +0 -1
  51. package/examples/basic-usage.d.ts +0 -2
  52. package/examples/basic-usage.d.ts.map +0 -1
  53. package/examples/basic-usage.js +0 -26
  54. package/examples/basic-usage.js.map +0 -1
  55. package/examples/basic-usage.ts +0 -29
  56. package/examples/browser-demo/README.md +0 -204
  57. package/examples/browser-demo/index.html +0 -466
  58. package/examples/browser-wasm-integration.md +0 -411
  59. package/examples/ipc-demo/README.md +0 -127
  60. package/examples/local-first-usage.ts +0 -138
  61. package/examples/native-ipc-integration.md +0 -526
  62. package/examples/tauri-demo/README.md +0 -240
  63. package/examples/tauri-integration.md +0 -260
  64. package/examples/vscode-extension-example/README.md +0 -95
  65. package/examples/vscode-extension-example/package.json +0 -49
  66. package/examples/vscode-extension-example/src/extension.ts +0 -172
  67. package/examples/vscode-extension-example/tsconfig.json +0 -12
  68. package/examples/vscode-extension-integration.d.ts +0 -31
  69. package/examples/vscode-extension-integration.d.ts.map +0 -1
  70. package/examples/vscode-extension-integration.js +0 -319
  71. package/examples/vscode-extension-integration.js.map +0 -1
  72. package/examples/vscode-extension-integration.ts +0 -41
  73. package/legacy/benchmarks/memory-benchmarks.ts +0 -350
  74. package/legacy/benchmarks/run-benchmarks.ts +0 -315
  75. package/legacy/better-sqlite3-shared.ts +0 -157
  76. package/legacy/better-sqlite3.ts +0 -4
  77. package/legacy/cli.ts +0 -241
  78. package/legacy/config.ts +0 -50
  79. package/legacy/core/crdt.ts +0 -107
  80. package/legacy/core/database.ts +0 -529
  81. package/legacy/healthcheck.ts +0 -162
  82. package/legacy/http/api-server.ts +0 -569
  83. package/legacy/index.ts +0 -31
  84. package/legacy/local-first/unified-api.ts +0 -449
  85. package/legacy/logic/rules.ts +0 -46
  86. package/legacy/main.rs +0 -3
  87. package/legacy/main.ts +0 -197
  88. package/legacy/network/websocket-server.ts +0 -115
  89. package/legacy/node-index.ts +0 -827
  90. package/legacy/node-wrapper.ts +0 -329
  91. package/legacy/plugins/README.md +0 -181
  92. package/legacy/plugins/example-embedding-plugin.ts +0 -56
  93. package/legacy/plugins/plugin-system.ts +0 -315
  94. package/legacy/sqlite-compat.ts +0 -633
  95. package/legacy/sqlite3-compat.ts +0 -55
  96. package/legacy/storage/kv-storage.ts +0 -73
  97. package/legacy/tests/core.test.ts +0 -305
  98. package/legacy/tests/fixtures/performance-data.json +0 -71
  99. package/legacy/tests/fixtures/test-data.json +0 -129
  100. package/legacy/tests/integration/api-server.test.ts +0 -334
  101. package/legacy/tests/integration/mesh-network.test.ts +0 -303
  102. package/legacy/tests/logic.test.ts +0 -34
  103. package/legacy/tests/performance/load.test.ts +0 -290
  104. package/legacy/tests/security/input-validation.test.ts +0 -286
  105. package/legacy/tests/unit/core.test.ts +0 -226
  106. package/legacy/tests/unit/local-first-api.test.ts +0 -65
  107. package/legacy/tests/unit/plugin-system.test.ts +0 -388
  108. package/legacy/tests/unit/subscriptions.test.ts +0 -135
  109. package/legacy/tests/unit/vector-search.test.ts +0 -173
  110. package/legacy/tests/vscode_extension_test.ts +0 -281
  111. package/legacy/types/index.ts +0 -32
  112. package/legacy/types/node-types.ts +0 -80
  113. package/legacy/util/debug.ts +0 -27
  114. package/legacy/vector/index.ts +0 -59
  115. package/legacy/vscode/extension.ts +0 -387
  116. package/scripts/compiled-crud-verify.ts +0 -30
  117. package/scripts/dogfood.ts +0 -297
  118. package/scripts/postinstall.js +0 -156
  119. package/scripts/publish-crates.sh +0 -95
  120. package/scripts/release-check.js +0 -224
  121. package/scripts/run-tests.ts +0 -178
  122. package/scripts/setup-libclang.ps1 +0 -209
  123. package/scripts/update-changelog.js +0 -214
  124. package/scripts/validate-npm-publish.js +0 -228
  125. package/web/README.md +0 -27
  126. 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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"}
@@ -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,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=basic-usage.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"basic-usage.d.ts","sourceRoot":"","sources":["basic-usage.ts"],"names":[],"mappings":""}
@@ -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"}
@@ -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)