@the_library/public 1.0.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.
Files changed (90) hide show
  1. package/README.md +2298 -0
  2. package/assets/branding/data-pond.png +0 -0
  3. package/assets/branding/dsafe-logo.png +0 -0
  4. package/assets/branding/founder-photo.jpg +0 -0
  5. package/assets/branding/icon_transparent.png +0 -0
  6. package/assets/branding/library-favicon.png +0 -0
  7. package/assets/branding/pond-enterprise-logo.jpg +0 -0
  8. package/assets/branding/pond-enterprise-logo.svg +27 -0
  9. package/dist/branding/index.d.ts +48 -0
  10. package/dist/branding/index.js +67 -0
  11. package/dist/branding/index.js.map +1 -0
  12. package/dist/chunk-2HFOWE5R.js +296 -0
  13. package/dist/chunk-2HFOWE5R.js.map +1 -0
  14. package/dist/chunk-3L6LH2XK.js +465 -0
  15. package/dist/chunk-3L6LH2XK.js.map +1 -0
  16. package/dist/chunk-4CWVFPBN.js +28 -0
  17. package/dist/chunk-4CWVFPBN.js.map +1 -0
  18. package/dist/chunk-AGHPATVL.js +65 -0
  19. package/dist/chunk-AGHPATVL.js.map +1 -0
  20. package/dist/chunk-JDUYLUDJ.js +4835 -0
  21. package/dist/chunk-JDUYLUDJ.js.map +1 -0
  22. package/dist/chunk-OEZK7IX7.js +77 -0
  23. package/dist/chunk-OEZK7IX7.js.map +1 -0
  24. package/dist/chunk-PUYDAUCI.js +2873 -0
  25. package/dist/chunk-PUYDAUCI.js.map +1 -0
  26. package/dist/chunk-WHWMTS7D.js +99 -0
  27. package/dist/chunk-WHWMTS7D.js.map +1 -0
  28. package/dist/chunk-Y7RS6RTM.js +342 -0
  29. package/dist/chunk-Y7RS6RTM.js.map +1 -0
  30. package/dist/chunk-ZEZGI2TP.js +197 -0
  31. package/dist/chunk-ZEZGI2TP.js.map +1 -0
  32. package/dist/core-dao-core-logo-VDT2I5IW.svg +33 -0
  33. package/dist/downloader/dl2-sw.js +199 -0
  34. package/dist/downloader/dl2-sw.js.map +1 -0
  35. package/dist/downloader/file-worker-v2.js +258 -0
  36. package/dist/downloader/file-worker-v2.js.map +1 -0
  37. package/dist/downloader/index.d.ts +45 -0
  38. package/dist/downloader/index.js +538 -0
  39. package/dist/downloader/index.js.map +1 -0
  40. package/dist/downloader/mu-worker-v2.js +197 -0
  41. package/dist/downloader/mu-worker-v2.js.map +1 -0
  42. package/dist/downloader/react.d.ts +19 -0
  43. package/dist/downloader/react.js +32 -0
  44. package/dist/downloader/react.js.map +1 -0
  45. package/dist/downloader/solid.d.ts +21 -0
  46. package/dist/downloader/solid.js +19 -0
  47. package/dist/downloader/solid.js.map +1 -0
  48. package/dist/downloader/sw.d.ts +22 -0
  49. package/dist/downloader/sw.js +119 -0
  50. package/dist/downloader/sw.js.map +1 -0
  51. package/dist/downloader/vue.d.ts +23 -0
  52. package/dist/downloader/vue.js +19 -0
  53. package/dist/downloader/vue.js.map +1 -0
  54. package/dist/level-state-J3pj64Tr.d.ts +15 -0
  55. package/dist/models/astro.d.ts +47 -0
  56. package/dist/models/astro.js +44 -0
  57. package/dist/models/astro.js.map +1 -0
  58. package/dist/models/index.d.ts +244 -0
  59. package/dist/models/index.js +340 -0
  60. package/dist/models/index.js.map +1 -0
  61. package/dist/models/models.d.ts +524 -0
  62. package/dist/models/models.js +46 -0
  63. package/dist/models/models.js.map +1 -0
  64. package/dist/models/models_v2.global.js +1 -0
  65. package/dist/models/patch-worker.js +543 -0
  66. package/dist/models/patch-worker.js.map +1 -0
  67. package/dist/models/react.d.ts +43 -0
  68. package/dist/models/react.js +73 -0
  69. package/dist/models/react.js.map +1 -0
  70. package/dist/models/solid.d.ts +73 -0
  71. package/dist/models/solid.js +95 -0
  72. package/dist/models/solid.js.map +1 -0
  73. package/dist/models/vue.d.ts +51 -0
  74. package/dist/models/vue.js +98 -0
  75. package/dist/models/vue.js.map +1 -0
  76. package/dist/orm-BvkX0aBT.d.ts +507 -0
  77. package/dist/session-vqOnyxga.d.ts +184 -0
  78. package/dist/state-BTsp-E4v.d.ts +111 -0
  79. package/dist/types-Dn0EFMO_.d.ts +293 -0
  80. package/dist/types-Xb8Ta9tZ.d.ts +155 -0
  81. package/dist/web3/index.d.ts +820 -0
  82. package/dist/web3/index.js +1020 -0
  83. package/dist/web3/index.js.map +1 -0
  84. package/dist/web3/registry.d.ts +145 -0
  85. package/dist/web3/registry.js +23 -0
  86. package/dist/web3/registry.js.map +1 -0
  87. package/dist/web3/vue.d.ts +174 -0
  88. package/dist/web3/vue.js +391 -0
  89. package/dist/web3/vue.js.map +1 -0
  90. package/package.json +124 -0
@@ -0,0 +1,543 @@
1
+ // src/models/worker/libs/threadWorker.ts
2
+ var ThreadWorker = class {
3
+ constructor() {
4
+ self.onmessage = (e) => this._onMessage(e.data);
5
+ self.addEventListener("error", (e) => {
6
+ console.log("worker error", e);
7
+ });
8
+ this.onCreate();
9
+ }
10
+ onCreate() {
11
+ }
12
+ _onMessage(e) {
13
+ const { id, data } = e;
14
+ this.onRequest(id, data);
15
+ }
16
+ // abstract
17
+ onRequest(id, payload) {
18
+ }
19
+ _sendResponse(id, data, opts = {}) {
20
+ const defaults = {
21
+ transferables: [],
22
+ error: void 0
23
+ };
24
+ const actual = Object.assign({}, defaults, opts);
25
+ const error = actual.error;
26
+ self.postMessage({
27
+ id,
28
+ result: { data, error }
29
+ // @ts-ignore
30
+ }, actual.transferables.length > 0 ? actual.transferables : void 0);
31
+ }
32
+ postEvent(eventName, payload) {
33
+ self.postMessage({
34
+ eventName,
35
+ payload
36
+ });
37
+ }
38
+ sendResponse(id, payload = void 0, transferables = []) {
39
+ this._sendResponse(id, payload, { transferables });
40
+ }
41
+ sendError(id, error) {
42
+ console.trace(error);
43
+ console.error(`[worker] sendError(): id: ${id}, error: ${error.message}`);
44
+ this._sendResponse(id, void 0, { error });
45
+ }
46
+ };
47
+
48
+ // src/models/promises.ts
49
+ var proResolver = () => {
50
+ let resolver;
51
+ let rejecter;
52
+ let resolved = false;
53
+ let started = false;
54
+ const pro = new Promise((_resolve, _reject) => {
55
+ resolver = _resolve;
56
+ rejecter = _reject;
57
+ });
58
+ const resolve = (value) => {
59
+ if (!resolved) {
60
+ resolver(value);
61
+ resolved = true;
62
+ } else {
63
+ console.trace("resolve called twice");
64
+ }
65
+ };
66
+ const reject = (value) => {
67
+ if (!resolved) {
68
+ resolved = true;
69
+ rejecter(value);
70
+ } else {
71
+ console.error("reject called twice");
72
+ }
73
+ };
74
+ const start = () => started = true;
75
+ const isStarted = () => started;
76
+ return { pro, resolve, reject, start, isStarted };
77
+ };
78
+
79
+ // src/models/indexdb/common.ts
80
+ var version = 4;
81
+ var dbName = `the_world_library`;
82
+ var dbDeferred = proResolver();
83
+ var patchStoreName = `patches`;
84
+ var jsonStoreName = `catalog_json`;
85
+ var keyValStoreName = "key_value";
86
+ var pdfDataStoreName = "pdf_data";
87
+ var deviceStateStoreName = "deviceState";
88
+ var localRecordsStoreName = "localRecords";
89
+ var instanceRemapsStoreName = "instanceRemaps";
90
+ var Db = () => {
91
+ if (dbDeferred.isStarted()) {
92
+ return dbDeferred.pro;
93
+ }
94
+ dbDeferred.start();
95
+ const request = indexedDB.open(dbName, version);
96
+ request.onupgradeneeded = function() {
97
+ const db = request.result;
98
+ if (!db.objectStoreNames.contains(jsonStoreName))
99
+ db.createObjectStore(jsonStoreName, { keyPath: "id" });
100
+ if (!db.objectStoreNames.contains(keyValStoreName))
101
+ db.createObjectStore(keyValStoreName, { keyPath: "key" });
102
+ if (!db.objectStoreNames.contains(pdfDataStoreName))
103
+ db.createObjectStore(pdfDataStoreName, { keyPath: "fileId" });
104
+ if (!db.objectStoreNames.contains(patchStoreName)) {
105
+ const patchStore = db.createObjectStore(patchStoreName, { keyPath: ["username", "pk"] });
106
+ patchStore.createIndex("username", "username", { unique: false });
107
+ }
108
+ if (!db.objectStoreNames.contains(deviceStateStoreName)) {
109
+ db.createObjectStore(deviceStateStoreName);
110
+ }
111
+ if (!db.objectStoreNames.contains(localRecordsStoreName)) {
112
+ const localStore = db.createObjectStore(localRecordsStoreName, { keyPath: ["creatorUsername", "wireId"] });
113
+ localStore.createIndex("byCreator", "creatorUsername", { unique: false });
114
+ }
115
+ if (!db.objectStoreNames.contains(instanceRemapsStoreName)) {
116
+ db.createObjectStore(instanceRemapsStoreName, { keyPath: ["creatorUsername", "objectId", "langId", "originalIndex"] });
117
+ }
118
+ console.log("[IDB] models_v2 schema upgraded to version", db.version);
119
+ };
120
+ request.onerror = function(event) {
121
+ dbDeferred.reject(event);
122
+ };
123
+ request.onsuccess = function(event) {
124
+ dbDeferred.resolve(event.target.result);
125
+ };
126
+ return dbDeferred.pro;
127
+ };
128
+
129
+ // src/models/indexdb/patch_storage.ts
130
+ var signature = (op) => JSON.stringify(op, Object.keys(op).sort());
131
+ var bulkAddPatches = (username, collection) => {
132
+ const deferred = proResolver();
133
+ Db().then((db) => {
134
+ if (collection.length === 0) return deferred.resolve(true);
135
+ getAllPatchesByUsername(username).then((existingPatches) => {
136
+ let nextPk = (existingPatches.length ? existingPatches[existingPatches.length - 1].pk : 0) + 1;
137
+ const tx = db.transaction(patchStoreName, "readwrite");
138
+ const store = tx.objectStore(patchStoreName);
139
+ const existing = new Set(existingPatches.map(({ pk, username: username2, ...op }) => signature(op)));
140
+ collection.forEach((op) => {
141
+ if (!existing.has(signature(op))) {
142
+ const add = store.add(Object.assign({}, { username, pk: nextPk }, op));
143
+ nextPk++;
144
+ add.onerror = function(event) {
145
+ console.error(`error inserting [${patchStoreName}]`, op, event.target);
146
+ deferred.reject(new Error(`error inserting patch`));
147
+ };
148
+ }
149
+ });
150
+ tx.oncomplete = function() {
151
+ deferred.resolve(true);
152
+ };
153
+ tx.onerror = function(event) {
154
+ console.error(`tx.onerror inserting [${patchStoreName}]: `, event);
155
+ deferred.reject(event.target);
156
+ };
157
+ }).catch((err) => {
158
+ console.error(err);
159
+ deferred.reject(err);
160
+ });
161
+ }).catch((e) => {
162
+ console.error(`[indexdb error:] bulkAddPatches ${e.message}`);
163
+ deferred.reject(e);
164
+ });
165
+ return deferred.pro;
166
+ };
167
+ var getAllPatchesByUsername = (username) => {
168
+ const deferred = proResolver();
169
+ Db().then(async (db) => {
170
+ const tx = db.transaction(patchStoreName, "readonly");
171
+ tx.objectStore(patchStoreName).index("username").getAll(IDBKeyRange.only(username)).onsuccess = (event) => {
172
+ const results = event.target.result || [];
173
+ results.sort((a, b) => a.pk - b.pk);
174
+ deferred.resolve(results);
175
+ };
176
+ tx.onerror = function(event) {
177
+ console.error("worker: error loading all patches", event.target);
178
+ deferred.reject(event.target);
179
+ };
180
+ }).catch(deferred.reject);
181
+ return deferred.pro;
182
+ };
183
+ var getAllPatches = () => {
184
+ const deferred = proResolver();
185
+ Db().then(async (db) => {
186
+ const tx = db.transaction(patchStoreName, "readonly");
187
+ tx.objectStore(patchStoreName).getAll().onsuccess = (event) => {
188
+ if (event.target.result) {
189
+ const groupedByUsername = event.target.result.reduce((acc, patch) => {
190
+ const { username } = patch;
191
+ if (typeof acc[username] === "undefined") {
192
+ acc[username] = [];
193
+ }
194
+ acc[username].push(patch);
195
+ return acc;
196
+ }, {});
197
+ deferred.resolve(groupedByUsername);
198
+ } else {
199
+ deferred.resolve({});
200
+ }
201
+ };
202
+ tx.onerror = function(event) {
203
+ console.log("worker: error loading all patches", event.target);
204
+ deferred.reject(event.target);
205
+ };
206
+ }).catch(deferred.reject);
207
+ return deferred.pro;
208
+ };
209
+
210
+ // src/models/enriched-index.ts
211
+ var SIDECAR_MAGIC = 1146113329;
212
+ var SIDECAR_FORMAT_VERSION = 2;
213
+ var textDecoder = new TextDecoder();
214
+ var textEncoder = new TextEncoder();
215
+ var Reader = class {
216
+ constructor(buf) {
217
+ this.offset = 0;
218
+ this.view = new DataView(buf);
219
+ }
220
+ get remaining() {
221
+ return this.view.byteLength - this.offset;
222
+ }
223
+ u8() {
224
+ const v = this.view.getUint8(this.offset);
225
+ this.offset += 1;
226
+ return v;
227
+ }
228
+ u16() {
229
+ const v = this.view.getUint16(this.offset);
230
+ this.offset += 2;
231
+ return v;
232
+ }
233
+ u24() {
234
+ const v = this.view.getUint8(this.offset) << 16 | this.view.getUint16(this.offset + 1);
235
+ this.offset += 3;
236
+ return v;
237
+ }
238
+ u32() {
239
+ const v = this.view.getUint32(this.offset);
240
+ this.offset += 4;
241
+ return v;
242
+ }
243
+ bytes(len) {
244
+ const v = new Uint8Array(this.view.buffer, this.view.byteOffset + this.offset, len);
245
+ this.offset += len;
246
+ return v;
247
+ }
248
+ utf8(len) {
249
+ return textDecoder.decode(this.bytes(len));
250
+ }
251
+ nullableString() {
252
+ const flag = this.u8();
253
+ if (flag === 0) return null;
254
+ const len = this.u16();
255
+ return this.utf8(len);
256
+ }
257
+ };
258
+ var readColumnData = (r, type, count) => {
259
+ switch (type) {
260
+ case 1 /* Uint8 */: {
261
+ const out = new Uint8Array(count);
262
+ for (let i = 0; i < count; i++) out[i] = r.u8();
263
+ return out;
264
+ }
265
+ case 2 /* Uint16 */: {
266
+ const out = new Uint16Array(count);
267
+ for (let i = 0; i < count; i++) out[i] = r.u16();
268
+ return out;
269
+ }
270
+ case 6 /* Uint32 */: {
271
+ const out = new Uint32Array(count);
272
+ for (let i = 0; i < count; i++) out[i] = r.u32();
273
+ return out;
274
+ }
275
+ case 3 /* NullableString */: {
276
+ const out = new Array(count);
277
+ for (let i = 0; i < count; i++) out[i] = r.nullableString();
278
+ return out;
279
+ }
280
+ default:
281
+ throw new Error(`Unsupported column type 0x${type.toString(16)}`);
282
+ }
283
+ };
284
+ var readFieldValue = (r, type) => {
285
+ switch (type) {
286
+ case 1 /* Uint8 */:
287
+ return r.u8();
288
+ case 2 /* Uint16 */:
289
+ return r.u16();
290
+ case 6 /* Uint32 */:
291
+ return r.u32();
292
+ case 7 /* Bool */:
293
+ return r.u8() === 1;
294
+ case 3 /* NullableString */:
295
+ return r.nullableString();
296
+ default:
297
+ throw new Error(`Unsupported instance field type 0x${type.toString(16)}`);
298
+ }
299
+ };
300
+ var readInstanceDescriptor = (r) => {
301
+ const fieldCount = r.u8();
302
+ const spec = new Array(fieldCount);
303
+ for (let i = 0; i < fieldCount; i++) {
304
+ const type = r.u8();
305
+ const nameLen = r.u8();
306
+ spec[i] = { name: r.utf8(nameLen), type };
307
+ }
308
+ return spec;
309
+ };
310
+ var readInstance = (r, spec) => {
311
+ const data = {};
312
+ for (const field of spec) {
313
+ data[field.name] = readFieldValue(r, field.type);
314
+ }
315
+ return data;
316
+ };
317
+ var parseSidecar = (buf) => {
318
+ const r = new Reader(buf);
319
+ const magic = r.u32();
320
+ if (magic !== SIDECAR_MAGIC) {
321
+ throw new Error(`Invalid sidecar magic 0x${magic.toString(16)} (expected DPM1)`);
322
+ }
323
+ const formatVersion = r.u8();
324
+ if (formatVersion !== 1 && formatVersion !== SIDECAR_FORMAT_VERSION) {
325
+ throw new Error(`Unsupported sidecar format version ${formatVersion}`);
326
+ }
327
+ const recordCount = formatVersion === 1 ? r.u16() : r.u24();
328
+ const columnCount = r.u8();
329
+ const sidecarType = r.u8();
330
+ const columns = /* @__PURE__ */ new Map();
331
+ for (let c = 0; c < columnCount; c++) {
332
+ const colType = r.u8();
333
+ const nameLen = r.u8();
334
+ const name = r.utf8(nameLen);
335
+ columns.set(name, readColumnData(r, colType, recordCount));
336
+ }
337
+ const parsed = {
338
+ header: { formatVersion, recordCount, columnCount, sidecarType },
339
+ columns
340
+ };
341
+ if (sidecarType === 1 /* Extended */) {
342
+ const relCount = r.u8();
343
+ const relNames = new Array(relCount);
344
+ for (let k = 0; k < relCount; k++) {
345
+ const nameLen = r.u8();
346
+ relNames[k] = r.utf8(nameLen);
347
+ }
348
+ if (relCount > 0) {
349
+ const relations = /* @__PURE__ */ new Map();
350
+ for (const name of relNames) relations.set(name, new Array(recordCount));
351
+ const readUid = formatVersion === 1 ? () => r.u16() : () => r.u24();
352
+ for (let i = 0; i < recordCount; i++) {
353
+ for (const name of relNames) {
354
+ const count = r.u16();
355
+ const uids = new Array(count);
356
+ for (let j = 0; j < count; j++) uids[j] = readUid();
357
+ relations.get(name)[i] = uids;
358
+ }
359
+ }
360
+ parsed.relations = relations;
361
+ const authors = relations.get("authors");
362
+ if (authors) parsed.authorIds = authors;
363
+ }
364
+ const spec = readInstanceDescriptor(r);
365
+ const instances = new Array(recordCount);
366
+ for (let i = 0; i < recordCount; i++) {
367
+ const instCount = r.u16();
368
+ const list = new Array(instCount);
369
+ for (let j = 0; j < instCount; j++) list[j] = readInstance(r, spec);
370
+ instances[i] = list;
371
+ }
372
+ parsed.instanceFields = spec;
373
+ parsed.instances = instances;
374
+ }
375
+ return parsed;
376
+ };
377
+ var extractRecordCols = (parsed, index) => {
378
+ const sliceCol = (data) => Array.isArray(data) ? [data[index] ?? null] : data.slice(index, index + 1);
379
+ if (parsed.header.sidecarType === 2 /* Provenance */) {
380
+ const fields = {};
381
+ let ids;
382
+ for (const [name, data] of parsed.columns) {
383
+ if (name === "ids") ids = sliceCol(data);
384
+ else fields[name] = sliceCol(data);
385
+ }
386
+ return { ids, fields };
387
+ }
388
+ const cols = {};
389
+ for (const [name, data] of parsed.columns) {
390
+ cols[name] = sliceCol(data);
391
+ }
392
+ if (parsed.relations) for (const [name, data] of parsed.relations) cols[name] = [data[index] ?? []];
393
+ if (parsed.authorIds) cols["authorIds"] = [parsed.authorIds[index] ?? []];
394
+ if (parsed.instances) cols["instances"] = [parsed.instances[index] ?? []];
395
+ return cols;
396
+ };
397
+
398
+ // src/models/worker/libs/initialLoad.ts
399
+ var sidecarStore = /* @__PURE__ */ new Map();
400
+ var currentLangs = ["eng"];
401
+ var fetchAndParse = async (url) => {
402
+ const response = await fetch(url);
403
+ if (!response.ok) {
404
+ throw new Error(`failed to fetch sidecar ${url}: ${response.status}`);
405
+ }
406
+ return parseSidecar(await response.arrayBuffer());
407
+ };
408
+ var buildIdIndex = (parsed) => {
409
+ const map = /* @__PURE__ */ new Map();
410
+ const ids = parsed?.columns.get("ids");
411
+ if (ids && !Array.isArray(ids)) {
412
+ for (let i = 0; i < ids.length; i++) {
413
+ map.set(ids[i], i);
414
+ }
415
+ }
416
+ return map;
417
+ };
418
+ var initialLoad = async (sidecars, selectedLangs) => {
419
+ console.log(`[worker] initialLoad started: ${sidecars.length} sidecar set(s), langs=${selectedLangs.join(",")}`);
420
+ currentLangs = selectedLangs;
421
+ sidecarStore.clear();
422
+ const sets = [];
423
+ for (const { objectType, lang, slimUrl, extendedUrl, provUrl } of sidecars) {
424
+ const [slim, extended, prov] = await Promise.all([
425
+ slimUrl ? fetchAndParse(slimUrl) : Promise.resolve(void 0),
426
+ extendedUrl ? fetchAndParse(extendedUrl) : Promise.resolve(void 0),
427
+ provUrl ? fetchAndParse(provUrl) : Promise.resolve(void 0)
428
+ ]);
429
+ const set = {
430
+ objectType,
431
+ lang,
432
+ slim,
433
+ extended,
434
+ prov,
435
+ idIndex: buildIdIndex(slim ?? extended)
436
+ };
437
+ let byLang = sidecarStore.get(objectType);
438
+ if (!byLang) {
439
+ byLang = /* @__PURE__ */ new Map();
440
+ sidecarStore.set(objectType, byLang);
441
+ }
442
+ byLang.set(lang, set);
443
+ sets.push(set);
444
+ }
445
+ console.log(`[worker] fetching local patches...`);
446
+ const patches = await getAllPatches();
447
+ console.log(`[worker] initialLoad complete`);
448
+ return { sidecars: sets, patches };
449
+ };
450
+ var getRecordCols = (objectType, id) => {
451
+ const out = [];
452
+ const byLang = sidecarStore.get(objectType);
453
+ if (!byLang) return out;
454
+ for (const lang of currentLangs) {
455
+ const set = byLang.get(lang);
456
+ if (!set) continue;
457
+ const index = set.idIndex.get(id);
458
+ if (typeof index === "undefined") continue;
459
+ out.push({
460
+ lang,
461
+ slim: set.slim ? extractRecordCols(set.slim, index) : void 0,
462
+ extended: set.extended ? extractRecordCols(set.extended, index) : void 0,
463
+ prov: set.prov ? extractRecordCols(set.prov, index) : void 0
464
+ });
465
+ }
466
+ return out;
467
+ };
468
+
469
+ // src/models/worker/index.ts
470
+ var PatchWorker = class extends ThreadWorker {
471
+ constructor() {
472
+ super();
473
+ this.postEvent("workerready" /* WorkerReady */, true);
474
+ }
475
+ onRequest(id, data) {
476
+ const { cmd, payload } = data;
477
+ console.log(`[patch-worker] received request: ${id} - ${cmd}`);
478
+ switch (cmd) {
479
+ /**
480
+ * Fetches and parses sidecar binaries off the main thread,
481
+ * returns parsed cols + locally stored patches.
482
+ */
483
+ case "init" /* Init */: {
484
+ const { sidecars, selectedLangs } = payload;
485
+ initialLoad(sidecars, selectedLangs).then((result) => {
486
+ this.sendResponse(id, result);
487
+ }).catch((e) => {
488
+ console.error(`[patch-worker] caught error: ${e.message}`);
489
+ this.sendError(id, e);
490
+ });
491
+ break;
492
+ }
493
+ /**
494
+ * Called automatically (debounced) every time a change is made
495
+ * in the frontend.
496
+ */
497
+ case "savePatches" /* SavePatches */: {
498
+ const { username, patches } = payload;
499
+ bulkAddPatches(username, patches).then(() => {
500
+ this.sendResponse(id);
501
+ }).catch((e) => {
502
+ console.error(`[patch-worker] caught error: ${e.message}`);
503
+ this.sendError(id, e);
504
+ });
505
+ break;
506
+ }
507
+ /**
508
+ * Single-record cols extraction for LRU re-hydration (SPEC §2.5).
509
+ */
510
+ case "getRecord" /* GetRecord */: {
511
+ const { objectType, id: recordId } = payload;
512
+ try {
513
+ this.sendResponse(id, getRecordCols(objectType, recordId));
514
+ } catch (e) {
515
+ console.error(`[patch-worker] caught error: ${e.message}`);
516
+ this.sendError(id, e);
517
+ }
518
+ break;
519
+ }
520
+ case "loadLanguage" /* LoadLanguage */: {
521
+ const { lang, sidecars } = payload;
522
+ initialLoad(sidecars, [lang]).then((result) => {
523
+ this.sendResponse(id, result);
524
+ }).catch((e) => {
525
+ console.error(`[patch-worker] LoadLanguage error: ${e.message}`);
526
+ this.sendError(id, e);
527
+ });
528
+ break;
529
+ }
530
+ default:
531
+ console.error(`[worker] unknown action: ${cmd}`);
532
+ }
533
+ }
534
+ };
535
+ var LaunchDbWorker = async () => {
536
+ console.log("starting models_v2 patch worker...");
537
+ await Db();
538
+ new PatchWorker();
539
+ console.log("patch worker instantiated");
540
+ return true;
541
+ };
542
+ LaunchDbWorker().then(console.log).catch(console.error);
543
+ //# sourceMappingURL=patch-worker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/models/worker/libs/threadWorker.ts","../../src/models/promises.ts","../../src/models/indexdb/common.ts","../../src/models/indexdb/patch_storage.ts","../../src/models/enriched-index.ts","../../src/models/worker/libs/initialLoad.ts","../../src/models/worker/index.ts"],"mappings":"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","names":["username"]}
@@ -0,0 +1,43 @@
1
+ import { L as LevelState } from '../level-state-J3pj64Tr.js';
2
+ import { S as SessionBootstrapOptions } from '../session-vqOnyxga.js';
3
+ export { r as resetModelsV2Session } from '../session-vqOnyxga.js';
4
+ import '../orm-BvkX0aBT.js';
5
+
6
+ /**
7
+ * **Composes** the React reactivity bus into the models_v2 record tracker
8
+ * (coexists with other frameworks — see `addReactivitySystem`). React doesn't
9
+ * auto-track reads during render, so `track` is a no-op and components subscribe
10
+ * explicitly via `useModelUpdate(record)`. Idempotent; returns an unregister.
11
+ */
12
+ declare const installReactReactivity: () => (() => void);
13
+ /** Re-renders the calling component whenever the given ORM record mutates. */
14
+ declare const useModelUpdate: (record: object) => void;
15
+ /**
16
+ * Persistent models_v2 session for React — full front-end boot + React update
17
+ * bus, retained across URL navigation. Thin wrapper over the shared
18
+ * `bootstrapSession()` glue with React's reactivity installer.
19
+ */
20
+ declare const bootstrapModelsV2: (opts: SessionBootstrapOptions) => Promise<void>;
21
+ /**
22
+ * Returns the current LevelState for the given username, re-rendering the
23
+ * component whenever that user's level changes.
24
+ *
25
+ * @example
26
+ * const { level, progress } = useLevel('mine');
27
+ */
28
+ declare const useLevel: (username: string) => LevelState;
29
+ /**
30
+ * Re-renders the calling component whenever the global trash store
31
+ * (models/trash.ts) changes for `objectType`, merged across `usernames`
32
+ * (empty = every known username). Population and live updates are entirely
33
+ * automatic — nothing to register, nothing to feed it.
34
+ *
35
+ * @example
36
+ * const { count, getIds } = useTrash(Tag.type, ['mine']);
37
+ */
38
+ declare const useTrash: (objectType: number, usernames?: string[]) => {
39
+ count: number;
40
+ getIds: () => number[];
41
+ };
42
+
43
+ export { bootstrapModelsV2, installReactReactivity, useLevel, useModelUpdate, useTrash };
@@ -0,0 +1,73 @@
1
+ import {
2
+ bootstrapSession,
3
+ resetModelsV2Session
4
+ } from "../chunk-2HFOWE5R.js";
5
+ import {
6
+ getLevel,
7
+ subscribeLevel
8
+ } from "../chunk-4CWVFPBN.js";
9
+ import {
10
+ trashStore
11
+ } from "../chunk-Y7RS6RTM.js";
12
+ import {
13
+ addReactivitySystem
14
+ } from "../chunk-JDUYLUDJ.js";
15
+ import "../chunk-ZEZGI2TP.js";
16
+
17
+ // src/models/adapters/react.ts
18
+ import { useSyncExternalStore, useEffect, useState } from "react";
19
+ var listeners = /* @__PURE__ */ new WeakMap();
20
+ var _reactUnregister = null;
21
+ var _reactSystem = {
22
+ track() {
23
+ },
24
+ trigger(o) {
25
+ listeners.get(o)?.forEach((cb) => cb());
26
+ }
27
+ };
28
+ var installReactReactivity = () => {
29
+ if (!_reactUnregister) _reactUnregister = addReactivitySystem(_reactSystem);
30
+ return _reactUnregister;
31
+ };
32
+ var useModelUpdate = (record) => {
33
+ const [, force] = useState(0);
34
+ useEffect(() => {
35
+ let set = listeners.get(record);
36
+ if (!set) {
37
+ set = /* @__PURE__ */ new Set();
38
+ listeners.set(record, set);
39
+ }
40
+ const cb = () => force((n) => n + 1);
41
+ set.add(cb);
42
+ return () => {
43
+ set.delete(cb);
44
+ if (set.size === 0) listeners.delete(record);
45
+ };
46
+ }, [record]);
47
+ };
48
+ var bootstrapModelsV2 = (opts) => bootstrapSession(opts, installReactReactivity);
49
+ var useLevel = (username) => useSyncExternalStore(
50
+ (cb) => subscribeLevel((u) => {
51
+ if (u === username) cb();
52
+ }),
53
+ () => getLevel(username),
54
+ () => getLevel(username)
55
+ // server snapshot (SSR safe)
56
+ );
57
+ var useTrash = (objectType, usernames = []) => {
58
+ const [, force] = useState(0);
59
+ useEffect(() => trashStore.subscribe(objectType, () => force((n) => n + 1)), [objectType]);
60
+ return {
61
+ count: trashStore.count(objectType, usernames),
62
+ getIds: () => trashStore.list(objectType, usernames)
63
+ };
64
+ };
65
+ export {
66
+ bootstrapModelsV2,
67
+ installReactReactivity,
68
+ resetModelsV2Session,
69
+ useLevel,
70
+ useModelUpdate,
71
+ useTrash
72
+ };
73
+ //# sourceMappingURL=react.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/models/adapters/react.ts"],"mappings":";;;;;;;;;;;;;;;;;AAcA,SAAS,sBAAsB,WAAW,gBAAgB;AAQ1D,IAAM,YAAY,oBAAI,QAAiC;AAEvD,IAAI,mBAAwC;AAC5C,IAAM,eAAiC;AAAA,EACnC,QAAQ;AAAA,EAAuD;AAAA,EAC/D,QAAQ,GAAW;AACf,cAAU,IAAI,CAAC,GAAG,QAAQ,QAAM,GAAG,CAAC;AAAA,EACxC;AACJ;AAQO,IAAM,yBAAyB,MAAoB;AACtD,MAAI,CAAC,iBAAkB,oBAAmB,oBAAoB,YAAY;AAC1E,SAAO;AACX;AAGO,IAAM,iBAAiB,CAAC,WAAyB;AACpD,QAAM,CAAC,EAAE,KAAK,IAAI,SAAS,CAAC;AAC5B,YAAU,MAAM;AACZ,QAAI,MAAM,UAAU,IAAI,MAAM;AAC9B,QAAI,CAAC,KAAK;AAAE,YAAM,oBAAI,IAAI;AAAG,gBAAU,IAAI,QAAQ,GAAG;AAAA,IAAG;AACzD,UAAM,KAAK,MAAM,MAAM,OAAK,IAAI,CAAC;AACjC,QAAI,IAAI,EAAE;AACV,WAAO,MAAM;AAAE,UAAK,OAAO,EAAE;AAAG,UAAI,IAAK,SAAS,EAAG,WAAU,OAAO,MAAM;AAAA,IAAG;AAAA,EACnF,GAAG,CAAC,MAAM,CAAC;AACf;AAOO,IAAM,oBAAoB,CAAC,SAC9B,iBAAiB,MAAM,sBAAsB;AAS1C,IAAM,WAAW,CAAC,aACrB;AAAA,EACI,QAAO,eAAe,OAAK;AAAE,QAAI,MAAM,SAAU,IAAG;AAAA,EAAG,CAAC;AAAA,EACxD,MAAO,SAAS,QAAQ;AAAA,EACxB,MAAO,SAAS,QAAQ;AAAA;AAC5B;AAWG,IAAM,WAAW,CAAC,YAAoB,YAAsB,CAAC,MAAM;AACtE,QAAM,CAAC,EAAE,KAAK,IAAI,SAAS,CAAC;AAC5B,YAAU,MAAM,WAAW,UAAU,YAAY,MAAM,MAAM,OAAK,IAAI,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC;AACvF,SAAO;AAAA,IACH,OAAO,WAAW,MAAM,YAAY,SAAS;AAAA,IAC7C,QAAQ,MAAM,WAAW,KAAK,YAAY,SAAS;AAAA,EACvD;AACJ;","names":[]}