@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.
- package/README.md +2298 -0
- package/assets/branding/data-pond.png +0 -0
- package/assets/branding/dsafe-logo.png +0 -0
- package/assets/branding/founder-photo.jpg +0 -0
- package/assets/branding/icon_transparent.png +0 -0
- package/assets/branding/library-favicon.png +0 -0
- package/assets/branding/pond-enterprise-logo.jpg +0 -0
- package/assets/branding/pond-enterprise-logo.svg +27 -0
- package/dist/branding/index.d.ts +48 -0
- package/dist/branding/index.js +67 -0
- package/dist/branding/index.js.map +1 -0
- package/dist/chunk-2HFOWE5R.js +296 -0
- package/dist/chunk-2HFOWE5R.js.map +1 -0
- package/dist/chunk-3L6LH2XK.js +465 -0
- package/dist/chunk-3L6LH2XK.js.map +1 -0
- package/dist/chunk-4CWVFPBN.js +28 -0
- package/dist/chunk-4CWVFPBN.js.map +1 -0
- package/dist/chunk-AGHPATVL.js +65 -0
- package/dist/chunk-AGHPATVL.js.map +1 -0
- package/dist/chunk-JDUYLUDJ.js +4835 -0
- package/dist/chunk-JDUYLUDJ.js.map +1 -0
- package/dist/chunk-OEZK7IX7.js +77 -0
- package/dist/chunk-OEZK7IX7.js.map +1 -0
- package/dist/chunk-PUYDAUCI.js +2873 -0
- package/dist/chunk-PUYDAUCI.js.map +1 -0
- package/dist/chunk-WHWMTS7D.js +99 -0
- package/dist/chunk-WHWMTS7D.js.map +1 -0
- package/dist/chunk-Y7RS6RTM.js +342 -0
- package/dist/chunk-Y7RS6RTM.js.map +1 -0
- package/dist/chunk-ZEZGI2TP.js +197 -0
- package/dist/chunk-ZEZGI2TP.js.map +1 -0
- package/dist/core-dao-core-logo-VDT2I5IW.svg +33 -0
- package/dist/downloader/dl2-sw.js +199 -0
- package/dist/downloader/dl2-sw.js.map +1 -0
- package/dist/downloader/file-worker-v2.js +258 -0
- package/dist/downloader/file-worker-v2.js.map +1 -0
- package/dist/downloader/index.d.ts +45 -0
- package/dist/downloader/index.js +538 -0
- package/dist/downloader/index.js.map +1 -0
- package/dist/downloader/mu-worker-v2.js +197 -0
- package/dist/downloader/mu-worker-v2.js.map +1 -0
- package/dist/downloader/react.d.ts +19 -0
- package/dist/downloader/react.js +32 -0
- package/dist/downloader/react.js.map +1 -0
- package/dist/downloader/solid.d.ts +21 -0
- package/dist/downloader/solid.js +19 -0
- package/dist/downloader/solid.js.map +1 -0
- package/dist/downloader/sw.d.ts +22 -0
- package/dist/downloader/sw.js +119 -0
- package/dist/downloader/sw.js.map +1 -0
- package/dist/downloader/vue.d.ts +23 -0
- package/dist/downloader/vue.js +19 -0
- package/dist/downloader/vue.js.map +1 -0
- package/dist/level-state-J3pj64Tr.d.ts +15 -0
- package/dist/models/astro.d.ts +47 -0
- package/dist/models/astro.js +44 -0
- package/dist/models/astro.js.map +1 -0
- package/dist/models/index.d.ts +244 -0
- package/dist/models/index.js +340 -0
- package/dist/models/index.js.map +1 -0
- package/dist/models/models.d.ts +524 -0
- package/dist/models/models.js +46 -0
- package/dist/models/models.js.map +1 -0
- package/dist/models/models_v2.global.js +1 -0
- package/dist/models/patch-worker.js +543 -0
- package/dist/models/patch-worker.js.map +1 -0
- package/dist/models/react.d.ts +43 -0
- package/dist/models/react.js +73 -0
- package/dist/models/react.js.map +1 -0
- package/dist/models/solid.d.ts +73 -0
- package/dist/models/solid.js +95 -0
- package/dist/models/solid.js.map +1 -0
- package/dist/models/vue.d.ts +51 -0
- package/dist/models/vue.js +98 -0
- package/dist/models/vue.js.map +1 -0
- package/dist/orm-BvkX0aBT.d.ts +507 -0
- package/dist/session-vqOnyxga.d.ts +184 -0
- package/dist/state-BTsp-E4v.d.ts +111 -0
- package/dist/types-Dn0EFMO_.d.ts +293 -0
- package/dist/types-Xb8Ta9tZ.d.ts +155 -0
- package/dist/web3/index.d.ts +820 -0
- package/dist/web3/index.js +1020 -0
- package/dist/web3/index.js.map +1 -0
- package/dist/web3/registry.d.ts +145 -0
- package/dist/web3/registry.js +23 -0
- package/dist/web3/registry.js.map +1 -0
- package/dist/web3/vue.d.ts +174 -0
- package/dist/web3/vue.js +391 -0
- package/dist/web3/vue.js.map +1 -0
- 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":[]}
|