@welshman/store 0.14.0-pre4 → 0.14.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 (160) hide show
  1. package/dist/store/src/{repository.d.ts → derive.d.ts} +33 -41
  2. package/dist/store/src/derive.d.ts.map +1 -0
  3. package/dist/store/src/derive.js +706 -0
  4. package/dist/store/src/derive.js.map +1 -0
  5. package/dist/store/src/index.d.ts +9 -1
  6. package/dist/store/src/index.d.ts.map +1 -1
  7. package/dist/store/src/index.js +9 -1
  8. package/dist/store/src/index.js.map +1 -1
  9. package/dist/store/src/misc.d.ts +2 -7
  10. package/dist/store/src/misc.d.ts.map +1 -1
  11. package/dist/store/src/misc.js +1 -1
  12. package/dist/store/src/misc.js.map +1 -1
  13. package/dist/{net/src/repository.d.ts → store/src/repository/adapters/memory.d.ts} +22 -30
  14. package/dist/store/src/repository/adapters/memory.d.ts.map +1 -0
  15. package/dist/{net/src/repository.js → store/src/repository/adapters/memory.js} +96 -106
  16. package/dist/store/src/repository/adapters/memory.js.map +1 -0
  17. package/dist/store/src/repository/adapters/sqlite/engine.d.ts +65 -0
  18. package/dist/store/src/repository/adapters/sqlite/engine.d.ts.map +1 -0
  19. package/dist/store/src/repository/adapters/sqlite/engine.js +420 -0
  20. package/dist/store/src/repository/adapters/sqlite/engine.js.map +1 -0
  21. package/dist/store/src/repository/adapters/sqlite/leader.d.ts +8 -0
  22. package/dist/store/src/repository/adapters/sqlite/leader.d.ts.map +1 -0
  23. package/dist/store/src/repository/adapters/sqlite/leader.js +222 -0
  24. package/dist/store/src/repository/adapters/sqlite/leader.js.map +1 -0
  25. package/dist/store/src/repository/adapters/sqlite/protocol.d.ts +52 -0
  26. package/dist/store/src/repository/adapters/sqlite/protocol.d.ts.map +1 -0
  27. package/dist/store/src/repository/adapters/sqlite/protocol.js +52 -0
  28. package/dist/store/src/repository/adapters/sqlite/protocol.js.map +1 -0
  29. package/dist/store/src/repository/adapters/sqlite/repository.d.ts +54 -0
  30. package/dist/store/src/repository/adapters/sqlite/repository.d.ts.map +1 -0
  31. package/dist/store/src/repository/adapters/sqlite/repository.js +238 -0
  32. package/dist/store/src/repository/adapters/sqlite/repository.js.map +1 -0
  33. package/dist/store/src/repository/adapters/sqlite/serve.d.ts +4 -0
  34. package/dist/store/src/repository/adapters/sqlite/serve.d.ts.map +1 -0
  35. package/dist/store/src/repository/adapters/sqlite/serve.js +40 -0
  36. package/dist/store/src/repository/adapters/sqlite/serve.js.map +1 -0
  37. package/dist/store/src/repository/adapters/sqlite/wasm.d.ts +7 -0
  38. package/dist/store/src/repository/adapters/sqlite/wasm.d.ts.map +1 -0
  39. package/dist/store/src/repository/adapters/sqlite/wasm.js +61 -0
  40. package/dist/store/src/repository/adapters/sqlite/wasm.js.map +1 -0
  41. package/dist/store/src/repository/adapters/sqlite/worker.d.ts +2 -0
  42. package/dist/store/src/repository/adapters/sqlite/worker.d.ts.map +1 -0
  43. package/dist/store/src/repository/adapters/sqlite/worker.js +4 -0
  44. package/dist/store/src/repository/adapters/sqlite/worker.js.map +1 -0
  45. package/dist/store/src/repository/core.d.ts +68 -0
  46. package/dist/store/src/repository/core.d.ts.map +1 -0
  47. package/dist/store/src/repository/core.js +123 -0
  48. package/dist/store/src/repository/core.js.map +1 -0
  49. package/dist/store/src/svelte.d.ts +22 -0
  50. package/dist/store/src/svelte.d.ts.map +1 -0
  51. package/dist/store/src/svelte.js +100 -0
  52. package/dist/store/src/svelte.js.map +1 -0
  53. package/dist/store/src/synced.d.ts +1 -1
  54. package/dist/store/src/synced.d.ts.map +1 -1
  55. package/dist/store/src/synced.js +1 -1
  56. package/dist/store/src/synced.js.map +1 -1
  57. package/dist/store/src/throttle.d.ts +1 -1
  58. package/dist/store/src/throttle.d.ts.map +1 -1
  59. package/dist/{net → store}/src/tracker.d.ts +2 -0
  60. package/dist/store/src/tracker.d.ts.map +1 -0
  61. package/dist/{net → store}/src/tracker.js +8 -4
  62. package/dist/store/src/tracker.js.map +1 -0
  63. package/dist/tsconfig.build.tsbuildinfo +1 -1
  64. package/dist/util/src/Command.d.ts +1 -1
  65. package/dist/util/src/Command.d.ts.map +1 -1
  66. package/dist/util/src/Command.js +12 -5
  67. package/dist/util/src/Command.js.map +1 -1
  68. package/dist/util/src/Events.d.ts +3 -2
  69. package/dist/util/src/Events.d.ts.map +1 -1
  70. package/dist/util/src/Events.js.map +1 -1
  71. package/dist/util/src/Filters.d.ts.map +1 -1
  72. package/dist/util/src/Filters.js +6 -2
  73. package/dist/util/src/Filters.js.map +1 -1
  74. package/dist/util/src/Kinds.d.ts +1 -0
  75. package/dist/util/src/Kinds.d.ts.map +1 -1
  76. package/dist/util/src/Kinds.js +1 -0
  77. package/dist/util/src/Kinds.js.map +1 -1
  78. package/dist/util/src/RelaySelection.d.ts +5 -0
  79. package/dist/util/src/RelaySelection.d.ts.map +1 -1
  80. package/dist/util/src/RelaySelection.js.map +1 -1
  81. package/dist/util/src/Tags.d.ts +5 -0
  82. package/dist/util/src/Tags.d.ts.map +1 -1
  83. package/dist/util/src/Tags.js +3 -0
  84. package/dist/util/src/Tags.js.map +1 -1
  85. package/dist/util/src/index.d.ts +1 -0
  86. package/dist/util/src/index.d.ts.map +1 -1
  87. package/dist/util/src/index.js +1 -0
  88. package/dist/util/src/index.js.map +1 -1
  89. package/package.json +31 -12
  90. package/dist/net/src/adapter.d.ts +0 -47
  91. package/dist/net/src/adapter.d.ts.map +0 -1
  92. package/dist/net/src/adapter.js +0 -139
  93. package/dist/net/src/adapter.js.map +0 -1
  94. package/dist/net/src/auth.d.ts +0 -40
  95. package/dist/net/src/auth.d.ts.map +0 -1
  96. package/dist/net/src/auth.js +0 -131
  97. package/dist/net/src/auth.js.map +0 -1
  98. package/dist/net/src/context.d.ts +0 -10
  99. package/dist/net/src/context.d.ts.map +0 -1
  100. package/dist/net/src/context.js +0 -2
  101. package/dist/net/src/context.js.map +0 -1
  102. package/dist/net/src/count.d.ts +0 -30
  103. package/dist/net/src/count.d.ts.map +0 -1
  104. package/dist/net/src/count.js +0 -97
  105. package/dist/net/src/count.js.map +0 -1
  106. package/dist/net/src/diff.d.ts +0 -57
  107. package/dist/net/src/diff.d.ts.map +0 -1
  108. package/dist/net/src/diff.js +0 -169
  109. package/dist/net/src/diff.js.map +0 -1
  110. package/dist/net/src/index.d.ts +0 -17
  111. package/dist/net/src/index.d.ts.map +0 -1
  112. package/dist/net/src/index.js +0 -17
  113. package/dist/net/src/index.js.map +0 -1
  114. package/dist/net/src/message.d.ts +0 -106
  115. package/dist/net/src/message.d.ts.map +0 -1
  116. package/dist/net/src/message.js +0 -98
  117. package/dist/net/src/message.js.map +0 -1
  118. package/dist/net/src/multiplex.d.ts +0 -14
  119. package/dist/net/src/multiplex.d.ts.map +0 -1
  120. package/dist/net/src/multiplex.js +0 -219
  121. package/dist/net/src/multiplex.js.map +0 -1
  122. package/dist/net/src/negentropy.d.ts +0 -48
  123. package/dist/net/src/negentropy.d.ts.map +0 -1
  124. package/dist/net/src/negentropy.js +0 -528
  125. package/dist/net/src/negentropy.js.map +0 -1
  126. package/dist/net/src/policy.d.ts +0 -63
  127. package/dist/net/src/policy.d.ts.map +0 -1
  128. package/dist/net/src/policy.js +0 -388
  129. package/dist/net/src/policy.js.map +0 -1
  130. package/dist/net/src/pool.d.ts +0 -15
  131. package/dist/net/src/pool.d.ts.map +0 -1
  132. package/dist/net/src/pool.js +0 -51
  133. package/dist/net/src/pool.js.map +0 -1
  134. package/dist/net/src/publish.d.ts +0 -47
  135. package/dist/net/src/publish.d.ts.map +0 -1
  136. package/dist/net/src/publish.js +0 -112
  137. package/dist/net/src/publish.js.map +0 -1
  138. package/dist/net/src/repository.d.ts.map +0 -1
  139. package/dist/net/src/repository.js.map +0 -1
  140. package/dist/net/src/request.d.ts +0 -38
  141. package/dist/net/src/request.d.ts.map +0 -1
  142. package/dist/net/src/request.js +0 -220
  143. package/dist/net/src/request.js.map +0 -1
  144. package/dist/net/src/socket.d.ts +0 -52
  145. package/dist/net/src/socket.d.ts.map +0 -1
  146. package/dist/net/src/socket.js +0 -134
  147. package/dist/net/src/socket.js.map +0 -1
  148. package/dist/net/src/tracker.d.ts.map +0 -1
  149. package/dist/net/src/tracker.js.map +0 -1
  150. package/dist/net/src/util.d.ts +0 -18
  151. package/dist/net/src/util.d.ts.map +0 -1
  152. package/dist/net/src/util.js +0 -25
  153. package/dist/net/src/util.js.map +0 -1
  154. package/dist/net/src/wrapManager.d.ts +0 -34
  155. package/dist/net/src/wrapManager.d.ts.map +0 -1
  156. package/dist/net/src/wrapManager.js +0 -79
  157. package/dist/net/src/wrapManager.js.map +0 -1
  158. package/dist/store/src/repository.d.ts.map +0 -1
  159. package/dist/store/src/repository.js +0 -580
  160. package/dist/store/src/repository.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"repository.js","sourceRoot":"","sources":["../../../../../../src/repository/adapters/sqlite/repository.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { ExtendSqlite, SqliteExtension } from "./protocol.js";
2
+ /** Serves `connectSqlite` from a dedicated worker, with `extend`'s methods over the database. */
3
+ export declare const serveSqlite: <M extends SqliteExtension>(extend?: ExtendSqlite<M>) => void;
4
+ //# sourceMappingURL=serve.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serve.d.ts","sourceRoot":"","sources":["../../../../../../src/repository/adapters/sqlite/serve.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,YAAY,EACZ,eAAe,EAIhB,MAAM,eAAe,CAAA;AAsBtB,iGAAiG;AACjG,eAAO,MAAM,WAAW,GAAI,CAAC,SAAS,eAAe,EAAE,SAAS,YAAY,CAAC,CAAC,CAAC,SAgB9E,CAAA"}
@@ -0,0 +1,40 @@
1
+ import { sleep } from "@welshman/lib";
2
+ import { SqliteEngine } from "./engine.js";
3
+ import { createSqliteHandler } from "./protocol.js";
4
+ import { openWasmDatabase } from "./wasm.js";
5
+ // Without OPFS sync access handles, or barred from OPFS as in Firefox's private windows, no wait helps
6
+ const canOpen = (error) => typeof FileSystemFileHandle !== "undefined" &&
7
+ "createSyncAccessHandle" in FileSystemFileHandle.prototype &&
8
+ !(error instanceof DOMException && error.name === "SecurityError");
9
+ // The tab that led before may not have let go of the database yet
10
+ const open = async (name) => {
11
+ for (let attempt = 0;; attempt++) {
12
+ try {
13
+ return await openWasmDatabase(name);
14
+ }
15
+ catch (e) {
16
+ if (attempt >= 10 || !canOpen(e))
17
+ throw e;
18
+ await sleep(100 * 2 ** Math.min(attempt, 5));
19
+ }
20
+ }
21
+ };
22
+ /** Serves `connectSqlite` from a dedicated worker, with `extend`'s methods over the database. */
23
+ export const serveSqlite = (extend) => {
24
+ let handle;
25
+ self.onmessage = async ({ data }) => {
26
+ if ("type" in data) {
27
+ handle = open(data.name).then(db => createSqliteHandler(new SqliteEngine(db), extend));
28
+ }
29
+ else if (handle) {
30
+ try {
31
+ const respond = await handle;
32
+ self.postMessage(respond(data));
33
+ }
34
+ catch (e) {
35
+ self.postMessage({ response: { id: data.id, error: String(e) } });
36
+ }
37
+ }
38
+ };
39
+ };
40
+ //# sourceMappingURL=serve.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serve.js","sourceRoot":"","sources":["../../../../../../src/repository/adapters/sqlite/serve.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,EAAC,MAAM,eAAe,CAAA;AACnC,OAAO,EAAC,YAAY,EAAC,MAAM,aAAa,CAAA;AACxC,OAAO,EAAC,mBAAmB,EAAC,MAAM,eAAe,CAAA;AAQjD,OAAO,EAAC,gBAAgB,EAAC,MAAM,WAAW,CAAA;AAE1C,uGAAuG;AACvG,MAAM,OAAO,GAAG,CAAC,KAAc,EAAE,EAAE,CACjC,OAAO,oBAAoB,KAAK,WAAW;IAC3C,wBAAwB,IAAI,oBAAoB,CAAC,SAAS;IAC1D,CAAC,CAAC,KAAK,YAAY,YAAY,IAAI,KAAK,CAAC,IAAI,KAAK,eAAe,CAAC,CAAA;AAEpE,kEAAkE;AAClE,MAAM,IAAI,GAAG,KAAK,EAAE,IAAY,EAAE,EAAE;IAClC,KAAK,IAAI,OAAO,GAAG,CAAC,GAAI,OAAO,EAAE,EAAE,CAAC;QAClC,IAAI,CAAC;YACH,OAAO,MAAM,gBAAgB,CAAC,IAAI,CAAC,CAAA;QACrC,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAI,OAAO,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;gBAAE,MAAM,CAAC,CAAA;YAEzC,MAAM,KAAK,CAAC,GAAG,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAA;QAC9C,CAAC;IACH,CAAC;AACH,CAAC,CAAA;AAED,iGAAiG;AACjG,MAAM,CAAC,MAAM,WAAW,GAAG,CAA4B,MAAwB,EAAE,EAAE;IACjF,IAAI,MAAmE,CAAA;IAEvE,IAAI,CAAC,SAAS,GAAG,KAAK,EAAE,EAAC,IAAI,EAA2C,EAAE,EAAE;QAC1E,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;YACnB,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,mBAAmB,CAAC,IAAI,YAAY,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,CAAA;QACxF,CAAC;aAAM,IAAI,MAAM,EAAE,CAAC;YAClB,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,MAAM,MAAM,CAAA;gBAE5B,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAA;YACjC,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,IAAI,CAAC,WAAW,CAAC,EAAC,QAAQ,EAAE,EAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,EAAC,EAAuB,CAAC,CAAA;YACrF,CAAC;QACH,CAAC;IACH,CAAC,CAAA;AACH,CAAC,CAAA"}
@@ -0,0 +1,7 @@
1
+ import type { Database } from "@sqlite.org/sqlite-wasm";
2
+ import type { SqliteDatabase } from "./engine.js";
3
+ /** Adapt a sqlite-wasm database to the engine, preparing each statement once. */
4
+ export declare const wasmDatabase: (db: Database) => SqliteDatabase;
5
+ /** Open `name` in OPFS through its own SAH pool, so tabs can lead different databases at once. */
6
+ export declare const openWasmDatabase: (name: string) => Promise<SqliteDatabase>;
7
+ //# sourceMappingURL=wasm.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wasm.d.ts","sourceRoot":"","sources":["../../../../../../src/repository/adapters/sqlite/wasm.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,QAAQ,EAAoB,MAAM,yBAAyB,CAAA;AACxE,OAAO,KAAK,EAAW,cAAc,EAAC,MAAM,aAAa,CAAA;AAEzD,iFAAiF;AACjF,eAAO,MAAM,YAAY,GAAI,IAAI,QAAQ,KAAG,cAuD3C,CAAA;AAED,kGAAkG;AAClG,eAAO,MAAM,gBAAgB,GAAU,MAAM,MAAM,4BAQlD,CAAA"}
@@ -0,0 +1,61 @@
1
+ import sqlite3InitModule from "@sqlite.org/sqlite-wasm";
2
+ /** Adapt a sqlite-wasm database to the engine, preparing each statement once. */
3
+ export const wasmDatabase = (db) => {
4
+ const statements = new Map();
5
+ const prepare = (sql, params) => {
6
+ let statement = statements.get(sql);
7
+ if (!statement) {
8
+ statement = db.prepare(sql);
9
+ statements.set(sql, statement);
10
+ }
11
+ // sqlite-wasm refuses an empty binding for a statement without parameters
12
+ if (params.length > 0) {
13
+ statement.bind(params);
14
+ }
15
+ return statement;
16
+ };
17
+ return {
18
+ exec: sql => {
19
+ db.exec(sql);
20
+ },
21
+ // A statement whose step throws must still be reset, or the next use of it can't bind
22
+ run: (sql, params = []) => {
23
+ const statement = prepare(sql, params);
24
+ try {
25
+ statement.step();
26
+ }
27
+ finally {
28
+ statement.reset(true);
29
+ }
30
+ },
31
+ all: (sql, params = []) => {
32
+ const statement = prepare(sql, params);
33
+ const rows = [];
34
+ try {
35
+ while (statement.step()) {
36
+ rows.push(statement.get({}));
37
+ }
38
+ }
39
+ finally {
40
+ statement.reset(true);
41
+ }
42
+ return rows;
43
+ },
44
+ define: (name, f) => {
45
+ db.createFunction(name, {
46
+ xFunc: (_context, value) => f(value),
47
+ arity: 1,
48
+ deterministic: true,
49
+ });
50
+ },
51
+ };
52
+ };
53
+ /** Open `name` in OPFS through its own SAH pool, so tabs can lead different databases at once. */
54
+ export const openWasmDatabase = async (name) => {
55
+ const sqlite3 = await sqlite3InitModule();
56
+ const pool = await sqlite3.installOpfsSAHPoolVfs({ name: `welshman-${name}` });
57
+ const db = new pool.OpfsSAHPoolDb(`/${name}.sqlite3`);
58
+ db.exec("PRAGMA journal_mode = TRUNCATE; PRAGMA synchronous = NORMAL; PRAGMA temp_store = MEMORY");
59
+ return wasmDatabase(db);
60
+ };
61
+ //# sourceMappingURL=wasm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wasm.js","sourceRoot":"","sources":["../../../../../../src/repository/adapters/sqlite/wasm.ts"],"names":[],"mappings":"AAAA,OAAO,iBAAiB,MAAM,yBAAyB,CAAA;AAIvD,iFAAiF;AACjF,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,EAAY,EAAkB,EAAE;IAC3D,MAAM,UAAU,GAAG,IAAI,GAAG,EAA6B,CAAA;IAEvD,MAAM,OAAO,GAAG,CAAC,GAAW,EAAE,MAAkB,EAAE,EAAE;QAClD,IAAI,SAAS,GAAG,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QAEnC,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,SAAS,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;YAC3B,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE,SAAS,CAAC,CAAA;QAChC,CAAC;QAED,0EAA0E;QAC1E,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtB,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QACxB,CAAC;QAED,OAAO,SAAS,CAAA;IAClB,CAAC,CAAA;IAED,OAAO;QACL,IAAI,EAAE,GAAG,CAAC,EAAE;YACV,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QACd,CAAC;QACD,sFAAsF;QACtF,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,GAAG,EAAE,EAAE,EAAE;YACxB,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,CAAA;YAEtC,IAAI,CAAC;gBACH,SAAS,CAAC,IAAI,EAAE,CAAA;YAClB,CAAC;oBAAS,CAAC;gBACT,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;YACvB,CAAC;QACH,CAAC;QACD,GAAG,EAAE,CAAI,GAAW,EAAE,SAAqB,EAAE,EAAE,EAAE;YAC/C,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,CAAA;YACtC,MAAM,IAAI,GAAQ,EAAE,CAAA;YAEpB,IAAI,CAAC;gBACH,OAAO,SAAS,CAAC,IAAI,EAAE,EAAE,CAAC;oBACxB,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAM,CAAC,CAAA;gBACnC,CAAC;YACH,CAAC;oBAAS,CAAC;gBACT,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;YACvB,CAAC;YAED,OAAO,IAAI,CAAA;QACb,CAAC;QACD,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE;YAClB,EAAE,CAAC,cAAc,CAAC,IAAI,EAAE;gBACtB,KAAK,EAAE,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,KAAiB,CAAC;gBAChD,KAAK,EAAE,CAAC;gBACR,aAAa,EAAE,IAAI;aACpB,CAAC,CAAA;QACJ,CAAC;KACF,CAAA;AACH,CAAC,CAAA;AAED,kGAAkG;AAClG,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,EAAE,IAAY,EAAE,EAAE;IACrD,MAAM,OAAO,GAAG,MAAM,iBAAiB,EAAE,CAAA;IACzC,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,qBAAqB,CAAC,EAAC,IAAI,EAAE,YAAY,IAAI,EAAE,EAAC,CAAC,CAAA;IAC5E,MAAM,EAAE,GAAG,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,IAAI,UAAU,CAAC,CAAA;IAErD,EAAE,CAAC,IAAI,CAAC,yFAAyF,CAAC,CAAA;IAElG,OAAO,YAAY,CAAC,EAAE,CAAC,CAAA;AACzB,CAAC,CAAA"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=worker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worker.d.ts","sourceRoot":"","sources":["../../../../../../src/repository/adapters/sqlite/worker.ts"],"names":[],"mappings":""}
@@ -0,0 +1,4 @@
1
+ // The worker entry `connectSqlite` talks to, exported as `@welshman/store/sqlite-worker`
2
+ import { serveSqlite } from "./serve.js";
3
+ serveSqlite();
4
+ //# sourceMappingURL=worker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worker.js","sourceRoot":"","sources":["../../../../../../src/repository/adapters/sqlite/worker.ts"],"names":[],"mappings":"AAAA,yFAAyF;AACzF,OAAO,EAAC,WAAW,EAAC,MAAM,YAAY,CAAA;AAEtC,WAAW,EAAE,CAAA"}
@@ -0,0 +1,68 @@
1
+ import type { Maybe } from "@welshman/lib";
2
+ import type { Filter, TrustedEvent } from "@welshman/util";
3
+ import type { Tracker } from "../tracker.js";
4
+ import type { Unsubscriber } from "../svelte.js";
5
+ export type RepositoryUpdate = {
6
+ added: TrustedEvent[];
7
+ removed: Set<string>;
8
+ };
9
+ export declare const mergeRepositoryUpdates: (updates: RepositoryUpdate[]) => RepositoryUpdate;
10
+ export type QueryOptions = {
11
+ includeDeleted?: boolean;
12
+ includeExpired?: boolean;
13
+ /** Only events the repository's tracker has seen on this relay, applied before any limit. */
14
+ relay?: string;
15
+ /** Rejects the query with the signal's reason if it aborts before the repository answers. */
16
+ signal?: AbortSignal;
17
+ };
18
+ export type CountTagsOptions = Pick<QueryOptions, "signal">;
19
+ export type RepositoryEvents = {
20
+ update: [RepositoryUpdate];
21
+ clear: [];
22
+ };
23
+ /** Where an app's events live. Reads are async; `tracker` and `isDeleted` are synchronous. */
24
+ export interface Repository {
25
+ tracker: Tracker;
26
+ query(filters: Filter[], options?: QueryOptions): Promise<TrustedEvent[]>;
27
+ count(filters: Filter[], options?: QueryOptions): Promise<number>;
28
+ /** How many visible events carry each value of the single-letter tag `name`. */
29
+ countTags(name: string, options?: CountTagsOptions): Promise<Map<string, number>>;
30
+ getEvent(idOrAddress: string): Promise<Maybe<TrustedEvent>>;
31
+ isDeleted(event: TrustedEvent): boolean;
32
+ /** Stores `event`, resolving whether a query would now return it. */
33
+ publish(event: TrustedEvent): Promise<boolean>;
34
+ removeEvent(idOrAddress: string): Promise<void>;
35
+ /** Settles once every write so far is reported, or is undefined when none is outstanding. */
36
+ pendingWrites(): Maybe<Promise<void>>;
37
+ clear(): Promise<void>;
38
+ observe(options: ObserveOptions): Unsubscriber;
39
+ on<E extends keyof RepositoryEvents>(event: E, listener: (...args: RepositoryEvents[E]) => void): unknown;
40
+ off<E extends keyof RepositoryEvents>(event: E, listener: (...args: RepositoryEvents[E]) => void): unknown;
41
+ }
42
+ export type ObserveOptions = {
43
+ filters: Filter[];
44
+ onUpdate: (update: RepositoryUpdate) => void;
45
+ /** Receives the read's events reconciled with changes made meanwhile, and again after a clear. */
46
+ onLoad?: (events: TrustedEvent[]) => void;
47
+ /** Receives a read that fails. Without it, the failure is logged. */
48
+ onError?: (error: unknown) => void;
49
+ /** Also reports deleted events, and no removals. */
50
+ includeDeleted?: boolean;
51
+ /** Only events the tracker has seen on this relay. */
52
+ relay?: string;
53
+ };
54
+ /** Reads the stored events matching `filters`, then reports each change until unsubscribed. */
55
+ export declare const observeRepository: (repository: Repository, { filters, onUpdate, onLoad, onError, includeDeleted, relay }: ObserveOptions) => Unsubscriber;
56
+ export type DeleteRecord = Pick<TrustedEvent, "id" | "pubkey" | "created_at">;
57
+ /** Who deleted what: each id or address a delete names, and what each delete named. */
58
+ export declare class DeleteIndex {
59
+ deletes: Map<string, DeleteRecord[]>;
60
+ deletedBy: Map<string, string[]>;
61
+ add: (event: DeleteRecord, key: string) => void;
62
+ withdraw: (id: string) => string[];
63
+ isDeletedById: (event: TrustedEvent) => boolean;
64
+ isDeletedByAddress: (event: TrustedEvent) => boolean;
65
+ isDeleted: (event: TrustedEvent) => boolean;
66
+ clear: () => void;
67
+ }
68
+ //# sourceMappingURL=core.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../../../src/repository/core.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,123 @@
1
+ import { on, call, pick, pushToMapKey, mapPop, some, spec } from "@welshman/lib";
2
+ import { getAddress, isReplaceable, matchFilters } from "@welshman/util";
3
+ export const mergeRepositoryUpdates = (updates) => {
4
+ const addedById = new Map();
5
+ const removed = new Set();
6
+ for (const update of updates) {
7
+ for (const event of update.added) {
8
+ addedById.set(event.id, event);
9
+ removed.delete(event.id);
10
+ }
11
+ for (const id of update.removed) {
12
+ removed.add(id);
13
+ addedById.delete(id);
14
+ }
15
+ }
16
+ return { added: Array.from(addedById.values()), removed };
17
+ };
18
+ const onReadError = (error) => console.error("Failed to read from the repository", error);
19
+ /** What changed while a read was in flight, which the read's older answer must not undo. */
20
+ class InFlight {
21
+ added = new Map();
22
+ removed = new Set();
23
+ add = (event) => {
24
+ this.added.set(event.id, event);
25
+ this.removed.delete(event.id);
26
+ };
27
+ remove = (id) => {
28
+ this.removed.add(id);
29
+ this.added.delete(id);
30
+ };
31
+ unreported = (events) => events.filter(event => !this.removed.has(event.id) && !this.added.has(event.id));
32
+ settle = (events) => [...this.added.values(), ...this.unreported(events)];
33
+ }
34
+ /** Reads the stored events matching `filters`, then reports each change until unsubscribed. */
35
+ export const observeRepository = (repository, { filters, onUpdate, onLoad, onError = onReadError, includeDeleted, relay }) => {
36
+ const matches = (event) => matchFilters(filters, event) && (!relay || repository.tracker.hasRelay(event.id, relay));
37
+ let controller = new AbortController();
38
+ let inFlight;
39
+ // Read what's stored, superseding any read still in flight
40
+ const load = () => {
41
+ const current = new InFlight();
42
+ controller.abort();
43
+ controller = new AbortController();
44
+ inFlight = current;
45
+ const { signal } = controller;
46
+ repository.query(filters, { includeDeleted, relay, signal }).then(events => {
47
+ if (!signal.aborted) {
48
+ inFlight = undefined;
49
+ if (onLoad) {
50
+ onLoad(current.settle(events));
51
+ }
52
+ else {
53
+ const added = current.unreported(events);
54
+ if (added.length > 0) {
55
+ onUpdate({ added, removed: new Set() });
56
+ }
57
+ }
58
+ }
59
+ }, error => {
60
+ if (!signal.aborted) {
61
+ onError(error);
62
+ }
63
+ });
64
+ };
65
+ const unsubscribers = [
66
+ on(repository, "update", ({ added, removed }) => {
67
+ const update = {
68
+ added: added.filter(matches),
69
+ removed: includeDeleted ? new Set() : removed,
70
+ };
71
+ for (const event of update.added) {
72
+ inFlight?.add(event);
73
+ }
74
+ for (const id of update.removed) {
75
+ inFlight?.remove(id);
76
+ }
77
+ if (update.added.length > 0 || update.removed.size > 0) {
78
+ onUpdate(update);
79
+ }
80
+ }),
81
+ // A clear leaves what was read stale, so read again
82
+ on(repository, "clear", load),
83
+ ];
84
+ load();
85
+ return () => {
86
+ controller.abort();
87
+ unsubscribers.forEach(call);
88
+ };
89
+ };
90
+ /** Who deleted what: each id or address a delete names, and what each delete named. */
91
+ export class DeleteIndex {
92
+ deletes = new Map();
93
+ deletedBy = new Map();
94
+ add = (event, key) => {
95
+ pushToMapKey(this.deletes, key, pick(["id", "pubkey", "created_at"], event));
96
+ pushToMapKey(this.deletedBy, event.id, key);
97
+ };
98
+ // Withdraw every delete asserted by `id`, returning the ids and addresses it had named
99
+ withdraw = (id) => {
100
+ const keys = mapPop(id, this.deletedBy) || [];
101
+ for (const key of keys) {
102
+ const records = (this.deletes.get(key) || []).filter(record => record.id !== id);
103
+ if (records.length > 0) {
104
+ this.deletes.set(key, records);
105
+ }
106
+ else {
107
+ this.deletes.delete(key);
108
+ }
109
+ }
110
+ return keys;
111
+ };
112
+ // No created_at check, since an id has no newer version and a same-second delete must apply
113
+ isDeletedById = (event) => some(spec({ pubkey: event.pubkey }), this.deletes.get(event.id) || []);
114
+ // A version published after the delete is not the one it named
115
+ isDeletedByAddress = (event) => isReplaceable(event) &&
116
+ some(({ pubkey, created_at }) => pubkey === event.pubkey && created_at > event.created_at, this.deletes.get(getAddress(event)) || []);
117
+ isDeleted = (event) => this.isDeletedById(event) || this.isDeletedByAddress(event);
118
+ clear = () => {
119
+ this.deletes.clear();
120
+ this.deletedBy.clear();
121
+ };
122
+ }
123
+ //# sourceMappingURL=core.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core.js","sourceRoot":"","sources":["../../../../src/repository/core.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ export type Subscriber<T> = (value: T) => void;
2
+ export type Unsubscriber = () => void;
3
+ export type Updater<T> = (value: T) => T;
4
+ export type StartStopNotifier<T> = (set: (value: T) => void, update: (fn: Updater<T>) => void) => void | (() => void);
5
+ export interface Readable<T> {
6
+ subscribe(this: void, run: Subscriber<T>, invalidate?: () => void): Unsubscriber;
7
+ }
8
+ export interface Writable<T> extends Readable<T> {
9
+ set(this: void, value: T): void;
10
+ update(this: void, updater: Updater<T>): void;
11
+ }
12
+ export type Stores = Readable<any> | [Readable<any>, ...Array<Readable<any>>] | Array<Readable<any>>;
13
+ export type StoresValues<T> = T extends Readable<infer U> ? U : {
14
+ [K in keyof T]: T[K] extends Readable<infer U> ? U : never;
15
+ };
16
+ export declare function writable<T>(value?: T, start?: StartStopNotifier<T>): Writable<T>;
17
+ export declare function readable<T>(value?: T, start?: StartStopNotifier<T>): Readable<T>;
18
+ export declare function derived<S extends Stores, T>(stores: S, fn: (values: StoresValues<S>, set: (value: T) => void, update: (fn: Updater<T>) => void) => Unsubscriber | void, initialValue?: T): Readable<T>;
19
+ export declare function derived<S extends Stores, T>(stores: S, fn: (values: StoresValues<S>) => T, initialValue?: T): Readable<T>;
20
+ export declare const readonly: <T>(store: Readable<T>) => Readable<T>;
21
+ export declare const get: <T>(store: Readable<T>) => T;
22
+ //# sourceMappingURL=svelte.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"svelte.d.ts","sourceRoot":"","sources":["../../../src/svelte.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,UAAU,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAA;AAE9C,MAAM,MAAM,YAAY,GAAG,MAAM,IAAI,CAAA;AAErC,MAAM,MAAM,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,CAAA;AAExC,MAAM,MAAM,iBAAiB,CAAC,CAAC,IAAI,CACjC,GAAG,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,EACvB,MAAM,EAAE,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI,KAC7B,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,CAAA;AAExB,MAAM,WAAW,QAAQ,CAAC,CAAC;IACzB,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,EAAE,MAAM,IAAI,GAAG,YAAY,CAAA;CACjF;AAED,MAAM,WAAW,QAAQ,CAAC,CAAC,CAAE,SAAQ,QAAQ,CAAC,CAAC,CAAC;IAC9C,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI,CAAA;IAC/B,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,CAAA;CAC9C;AAED,MAAM,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAA;AAEpG,MAAM,MAAM,YAAY,CAAC,CAAC,IACxB,CAAC,SAAS,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG;KAAE,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK;CAAC,CAAA;AAahG,wBAAgB,QAAQ,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC,EAAE,KAAK,GAAE,iBAAiB,CAAC,CAAC,CAAQ,GAAG,QAAQ,CAAC,CAAC,CAAC,CAqDtF;AAED,wBAAgB,QAAQ,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAEhF;AAED,wBAAgB,OAAO,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,EACzC,MAAM,EAAE,CAAC,EACT,EAAE,EAAE,CACF,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,EACvB,GAAG,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,EACvB,MAAM,EAAE,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI,KAC7B,YAAY,GAAG,IAAI,EACxB,YAAY,CAAC,EAAE,CAAC,GACf,QAAQ,CAAC,CAAC,CAAC,CAAA;AACd,wBAAgB,OAAO,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,EACzC,MAAM,EAAE,CAAC,EACT,EAAE,EAAE,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,EAClC,YAAY,CAAC,EAAE,CAAC,GACf,QAAQ,CAAC,CAAC,CAAC,CAAA;AA4Dd,eAAO,MAAM,QAAQ,GAAI,CAAC,EAAE,OAAO,QAAQ,CAAC,CAAC,CAAC,KAAG,QAAQ,CAAC,CAAC,CAAmC,CAAA;AAE9F,eAAO,MAAM,GAAG,GAAI,CAAC,EAAE,OAAO,QAAQ,CAAC,CAAC,CAAC,KAAG,CAM3C,CAAA"}
@@ -0,0 +1,100 @@
1
+ // Adapted from svelte/store (MIT, Copyright (c) 2016-2025 Svelte Contributors)
2
+ const noop = () => { };
3
+ // Objects and functions always notify, since they may have been mutated in place
4
+ const safeNotEqual = (a, b) => a != a ? b == b : a !== b || (a !== null && typeof a === "object") || typeof a === "function";
5
+ // Shared across stores so a set inside a subscriber runs after the current round of notifications
6
+ const subscriberQueue = [];
7
+ export function writable(value, start = noop) {
8
+ let stop;
9
+ const subscribers = new Set();
10
+ function set(newValue) {
11
+ if (safeNotEqual(value, newValue)) {
12
+ value = newValue;
13
+ if (stop) {
14
+ const runQueue = !subscriberQueue.length;
15
+ for (const subscriber of subscribers) {
16
+ subscriber[1]();
17
+ subscriberQueue.push(subscriber, value);
18
+ }
19
+ if (runQueue) {
20
+ for (let i = 0; i < subscriberQueue.length; i += 2) {
21
+ subscriberQueue[i][0](subscriberQueue[i + 1]);
22
+ }
23
+ subscriberQueue.length = 0;
24
+ }
25
+ }
26
+ }
27
+ }
28
+ function update(fn) {
29
+ set(fn(value));
30
+ }
31
+ function subscribe(run, invalidate = noop) {
32
+ const subscriber = [run, invalidate];
33
+ subscribers.add(subscriber);
34
+ if (subscribers.size === 1) {
35
+ stop = start(set, update) || noop;
36
+ }
37
+ run(value);
38
+ return () => {
39
+ subscribers.delete(subscriber);
40
+ if (subscribers.size === 0 && stop) {
41
+ stop();
42
+ stop = undefined;
43
+ }
44
+ };
45
+ }
46
+ return { set, update, subscribe };
47
+ }
48
+ export function readable(value, start) {
49
+ return { subscribe: writable(value, start).subscribe };
50
+ }
51
+ export function derived(stores, fn, initialValue) {
52
+ const single = !Array.isArray(stores);
53
+ const storesArray = single ? [stores] : stores;
54
+ if (!storesArray.every(Boolean)) {
55
+ throw new Error("derived() expects stores as input, got a falsy value");
56
+ }
57
+ const auto = fn.length < 2;
58
+ return readable(initialValue, (set, update) => {
59
+ const values = [];
60
+ let started = false;
61
+ let pending = 0;
62
+ let cleanup = noop;
63
+ const sync = () => {
64
+ if (!pending) {
65
+ cleanup();
66
+ const result = fn(single ? values[0] : values, set, update);
67
+ if (auto) {
68
+ set(result);
69
+ }
70
+ else {
71
+ cleanup = typeof result === "function" ? result : noop;
72
+ }
73
+ }
74
+ };
75
+ const unsubscribers = storesArray.map((store, i) => store.subscribe(value => {
76
+ values[i] = value;
77
+ pending &= ~(1 << i);
78
+ if (started) {
79
+ sync();
80
+ }
81
+ }, () => {
82
+ pending |= 1 << i;
83
+ }));
84
+ started = true;
85
+ sync();
86
+ return () => {
87
+ unsubscribers.forEach(unsubscribe => unsubscribe());
88
+ cleanup();
89
+ // A notification already queued can still arrive after this derived store stopped
90
+ started = false;
91
+ };
92
+ });
93
+ }
94
+ export const readonly = (store) => ({ subscribe: store.subscribe });
95
+ export const get = (store) => {
96
+ let value;
97
+ store.subscribe(_value => (value = _value))();
98
+ return value;
99
+ };
100
+ //# sourceMappingURL=svelte.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"svelte.js","sourceRoot":"","sources":["../../../src/svelte.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { Writable } from "svelte/store";
1
+ import { Writable } from "./svelte.js";
2
2
  export interface StorageProvider {
3
3
  get: (key: string) => Promise<any>;
4
4
  set: (key: string, value: any) => Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"synced.d.ts","sourceRoot":"","sources":["../../../src/synced.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,QAAQ,EAAC,MAAM,cAAc,CAAA;AAG/C,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,GAAG,CAAC,CAAA;IAClC,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;CAChD;AAED,eAAO,MAAM,oBAAoB,EAAE,eAGlC,CAAA;AAED,MAAM,WAAW,UAAU,CAAC,CAAC;IAC3B,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAA;IAClB,OAAO,EAAE,eAAe,CAAA;CACzB;AAED,MAAM,MAAM,MAAM,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,GAAG;IAAC,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,CAAA;CAAC,CAAA;AAE5D,eAAO,MAAM,IAAI,GAAU,CAAC,EAAE,yBAAuB,UAAU,CAAC,CAAC,CAAC,kBAUjE,CAAA;AAED,MAAM,WAAW,YAAY,CAAC,CAAC;IAC7B,GAAG,EAAE,MAAM,CAAA;IACX,OAAO,EAAE,eAAe,CAAA;IACxB,YAAY,EAAE,CAAC,CAAA;CAChB;AAED,eAAO,MAAM,MAAM,GAAI,CAAC,EAAE,gCAA8B,YAAY,CAAC,CAAC,CAAC,cAMtE,CAAA"}
1
+ {"version":3,"file":"synced.d.ts","sourceRoot":"","sources":["../../../src/synced.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,QAAQ,EAAC,MAAM,aAAa,CAAA;AAG9C,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,GAAG,CAAC,CAAA;IAClC,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;CAChD;AAED,eAAO,MAAM,oBAAoB,EAAE,eAGlC,CAAA;AAED,MAAM,WAAW,UAAU,CAAC,CAAC;IAC3B,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAA;IAClB,OAAO,EAAE,eAAe,CAAA;CACzB;AAED,MAAM,MAAM,MAAM,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,GAAG;IAAC,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,CAAA;CAAC,CAAA;AAE5D,eAAO,MAAM,IAAI,GAAU,CAAC,EAAE,yBAAuB,UAAU,CAAC,CAAC,CAAC,kBAUjE,CAAA;AAED,MAAM,WAAW,YAAY,CAAC,CAAC;IAC7B,GAAG,EAAE,MAAM,CAAA;IACX,OAAO,EAAE,eAAe,CAAA;IACxB,YAAY,EAAE,CAAC,CAAA;CAChB;AAED,eAAO,MAAM,MAAM,GAAI,CAAC,EAAE,gCAA8B,YAAY,CAAC,CAAC,CAAC,cAMtE,CAAA"}
@@ -1,4 +1,4 @@
1
- import { writable } from "svelte/store";
1
+ import { writable } from "./svelte.js";
2
2
  import { getJson, setJson } from "@welshman/lib";
3
3
  export const localStorageProvider = {
4
4
  get: async (key) => getJson(key),
@@ -1 +1 @@
1
- {"version":3,"file":"synced.js","sourceRoot":"","sources":["../../../src/synced.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,QAAQ,EAAW,MAAM,cAAc,CAAA;AAC/C,OAAO,EAAC,OAAO,EAAE,OAAO,EAAC,MAAM,eAAe,CAAA;AAO9C,MAAM,CAAC,MAAM,oBAAoB,GAAoB;IACnD,GAAG,EAAE,KAAK,EAAE,GAAW,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC;IACxC,GAAG,EAAE,KAAK,EAAE,GAAW,EAAE,KAAU,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC;CAC5D,CAAA;AAUD,MAAM,CAAC,MAAM,IAAI,GAAG,KAAK,EAAK,EAAC,GAAG,EAAE,KAAK,EAAE,OAAO,EAAgB,EAAE,EAAE;IACpE,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IAE1C,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;QAC9B,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,CAAA;IACxB,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,KAAK,EAAE,KAAQ,EAAE,EAAE;QACjC,MAAM,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;IAC/B,CAAC,CAAC,CAAA;AACJ,CAAC,CAAA;AAQD,MAAM,CAAC,MAAM,MAAM,GAAG,CAAI,EAAC,GAAG,EAAE,OAAO,EAAE,YAAY,EAAkB,EAAE,EAAE;IACzE,MAAM,KAAK,GAAG,QAAQ,CAAI,YAAY,CAAc,CAAA;IAEpD,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,EAAC,GAAG,EAAE,KAAK,EAAE,OAAO,EAAC,CAAC,CAAA;IAEzC,OAAO,KAAK,CAAA;AACd,CAAC,CAAA"}
1
+ {"version":3,"file":"synced.js","sourceRoot":"","sources":["../../../src/synced.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,QAAQ,EAAW,MAAM,aAAa,CAAA;AAC9C,OAAO,EAAC,OAAO,EAAE,OAAO,EAAC,MAAM,eAAe,CAAA;AAO9C,MAAM,CAAC,MAAM,oBAAoB,GAAoB;IACnD,GAAG,EAAE,KAAK,EAAE,GAAW,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC;IACxC,GAAG,EAAE,KAAK,EAAE,GAAW,EAAE,KAAU,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC;CAC5D,CAAA;AAUD,MAAM,CAAC,MAAM,IAAI,GAAG,KAAK,EAAK,EAAC,GAAG,EAAE,KAAK,EAAE,OAAO,EAAgB,EAAE,EAAE;IACpE,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IAE1C,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;QAC9B,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,CAAA;IACxB,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,KAAK,EAAE,KAAQ,EAAE,EAAE;QACjC,MAAM,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;IAC/B,CAAC,CAAC,CAAA;AACJ,CAAC,CAAA;AAQD,MAAM,CAAC,MAAM,MAAM,GAAG,CAAI,EAAC,GAAG,EAAE,OAAO,EAAE,YAAY,EAAkB,EAAE,EAAE;IACzE,MAAM,KAAK,GAAG,QAAQ,CAAI,YAAY,CAAc,CAAA;IAEpD,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,EAAC,GAAG,EAAE,KAAK,EAAE,OAAO,EAAC,CAAC,CAAA;IAEzC,OAAO,KAAK,CAAA;AACd,CAAC,CAAA"}
@@ -1,3 +1,3 @@
1
- import { Readable } from "svelte/store";
1
+ import { Readable } from "./svelte.js";
2
2
  export declare const throttled: <T, S extends Readable<T>>(delay: number, store: S) => S;
3
3
  //# sourceMappingURL=throttle.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"throttle.d.ts","sourceRoot":"","sources":["../../../src/throttle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,QAAQ,EAAa,MAAM,cAAc,CAAA;AAGjD,eAAO,MAAM,SAAS,GAAI,CAAC,EAAE,CAAC,SAAS,QAAQ,CAAC,CAAC,CAAC,EAAE,OAAO,MAAM,EAAE,OAAO,CAAC,MAQ1E,CAAA"}
1
+ {"version":3,"file":"throttle.d.ts","sourceRoot":"","sources":["../../../src/throttle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,QAAQ,EAAa,MAAM,aAAa,CAAA;AAGhD,eAAO,MAAM,SAAS,GAAI,CAAC,EAAE,CAAC,SAAS,QAAQ,CAAC,CAAC,CAAC,EAAE,OAAO,MAAM,EAAE,OAAO,CAAC,MAQ1E,CAAA"}
@@ -10,6 +10,8 @@ export declare class Tracker extends Emitter {
10
10
  removeRelay: (eventId: string, relay: string) => void;
11
11
  track: (eventId: string, relay: string) => boolean;
12
12
  copy: (eventId1: string, eventId2: string) => void;
13
+ /** Record relays an event was seen on before, as read back from storage, without emitting. */
14
+ hydrate: (eventId: string, relays: Iterable<string>) => void;
13
15
  load: (relaysById: Tracker["relaysById"]) => void;
14
16
  clear: () => void;
15
17
  }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tracker.d.ts","sourceRoot":"","sources":["../../../src/tracker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAc,MAAM,eAAe,CAAA;AAElD,qBAAa,OAAQ,SAAQ,OAAO;IAClC,UAAU,2BAAiC;IAC3C,UAAU,2BAAiC;;IAQ3C,MAAM,GAAI,OAAO,MAAM,iBAAoD;IAE3E,SAAS,GAAI,SAAS,MAAM,iBAAsD;IAElF,QAAQ,GAAI,SAAS,MAAM,EAAE,OAAO,MAAM,aAAuC;IAEjF,QAAQ,GAAI,SAAS,MAAM,EAAE,OAAO,MAAM,UAqBzC;IAED,WAAW,GAAI,SAAS,MAAM,EAAE,OAAO,MAAM,UAiB5C;IAED,KAAK,GAAI,SAAS,MAAM,EAAE,OAAO,MAAM,aAMtC;IAED,IAAI,GAAI,UAAU,MAAM,EAAE,UAAU,MAAM,UAIzC;IAED,8FAA8F;IAC9F,OAAO,GAAI,SAAS,MAAM,EAAE,QAAQ,QAAQ,CAAC,MAAM,CAAC,UAKnD;IAED,IAAI,GAAI,YAAY,OAAO,CAAC,YAAY,CAAC,UAMxC;IAED,KAAK,aAKJ;CACF"}
@@ -51,12 +51,16 @@ export class Tracker extends Emitter {
51
51
  this.addRelay(eventId2, relay);
52
52
  }
53
53
  };
54
+ /** Record relays an event was seen on before, as read back from storage, without emitting. */
55
+ hydrate = (eventId, relays) => {
56
+ for (const relay of relays) {
57
+ addToMapKey(this.relaysById, eventId, relay);
58
+ addToMapKey(this.idsByRelay, relay, eventId);
59
+ }
60
+ };
54
61
  load = (relaysById) => {
55
62
  for (const [id, relays] of relaysById.entries()) {
56
- for (const relay of relays) {
57
- addToMapKey(this.relaysById, id, relay);
58
- addToMapKey(this.idsByRelay, relay, id);
59
- }
63
+ this.hydrate(id, relays);
60
64
  }
61
65
  this.emit("load");
62
66
  };
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tracker.js","sourceRoot":"","sources":["../../../src/tracker.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"root":["../src/index.ts","../src/misc.ts","../src/repository.ts","../src/synced.ts","../src/throttle.ts"],"version":"5.8.3"}
1
+ {"root":["../src/derive.ts","../src/index.ts","../src/misc.ts","../src/svelte.ts","../src/synced.ts","../src/throttle.ts","../src/tracker.ts","../src/repository/core.ts","../src/repository/adapters/memory.ts","../src/repository/adapters/sqlite/engine.ts","../src/repository/adapters/sqlite/leader.ts","../src/repository/adapters/sqlite/protocol.ts","../src/repository/adapters/sqlite/repository.ts","../src/repository/adapters/sqlite/serve.ts","../src/repository/adapters/sqlite/wasm.ts","../src/repository/adapters/sqlite/worker.ts"],"version":"5.8.3"}