@the_library/public 1.0.0 → 2.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 (113) hide show
  1. package/README.md +201 -28
  2. package/assets/branding/pond-enterprise-logo.svg +1 -1
  3. package/dist/Book-K86JRm42.d.ts +600 -0
  4. package/dist/bookSearchService-BmFHrvsv.d.ts +300 -0
  5. package/dist/branding/index.js +1 -66
  6. package/dist/branding/index.js.map +1 -1
  7. package/dist/chunk-3XUKOVEF.js +2 -0
  8. package/dist/chunk-3XUKOVEF.js.map +1 -0
  9. package/dist/chunk-46FQHZNM.js +2 -0
  10. package/dist/chunk-46FQHZNM.js.map +1 -0
  11. package/dist/chunk-7G3BMGV2.js +2 -0
  12. package/dist/chunk-7G3BMGV2.js.map +1 -0
  13. package/dist/chunk-D4DXGA2W.js +2 -0
  14. package/dist/chunk-D4DXGA2W.js.map +1 -0
  15. package/dist/chunk-EMA2QJTW.js +2 -0
  16. package/dist/chunk-EMA2QJTW.js.map +1 -0
  17. package/dist/chunk-FN52YV7L.js +2 -0
  18. package/dist/chunk-FN52YV7L.js.map +1 -0
  19. package/dist/chunk-GWQNULP4.js +2 -0
  20. package/dist/chunk-GWQNULP4.js.map +1 -0
  21. package/dist/chunk-OELHBR4F.js +2 -0
  22. package/dist/chunk-OELHBR4F.js.map +1 -0
  23. package/dist/chunk-PV3X54EU.js +2 -0
  24. package/dist/chunk-PV3X54EU.js.map +1 -0
  25. package/dist/chunk-SD3INWZF.js +2 -0
  26. package/dist/chunk-SD3INWZF.js.map +1 -0
  27. package/dist/downloader/dl2-sw.js +1 -198
  28. package/dist/downloader/dl2-sw.js.map +1 -1
  29. package/dist/downloader/file-worker-v2.js +1 -257
  30. package/dist/downloader/file-worker-v2.js.map +1 -1
  31. package/dist/downloader/index.d.ts +18 -2
  32. package/dist/downloader/index.js +1 -537
  33. package/dist/downloader/index.js.map +1 -1
  34. package/dist/downloader/mu-worker-v2.js +1 -196
  35. package/dist/downloader/mu-worker-v2.js.map +1 -1
  36. package/dist/downloader/react.d.ts +1 -1
  37. package/dist/downloader/react.js +1 -31
  38. package/dist/downloader/react.js.map +1 -1
  39. package/dist/downloader/solid.d.ts +1 -1
  40. package/dist/downloader/solid.js +1 -18
  41. package/dist/downloader/solid.js.map +1 -1
  42. package/dist/downloader/sw.js +1 -118
  43. package/dist/downloader/sw.js.map +1 -1
  44. package/dist/downloader/vue.d.ts +1 -1
  45. package/dist/downloader/vue.js +1 -18
  46. package/dist/downloader/vue.js.map +1 -1
  47. package/dist/enriched-index-T0sDG7JR.d.ts +209 -0
  48. package/dist/global/public.global.js +68 -0
  49. package/dist/global/public.manifest.json +484 -0
  50. package/dist/level-state-DXqglpAX.d.ts +27 -0
  51. package/dist/models/astro.d.ts +4 -3
  52. package/dist/models/astro.js +1 -43
  53. package/dist/models/astro.js.map +1 -1
  54. package/dist/models/index.d.ts +449 -22
  55. package/dist/models/index.js +1 -339
  56. package/dist/models/index.js.map +1 -1
  57. package/dist/models/models.d.ts +196 -441
  58. package/dist/models/models.js +1 -45
  59. package/dist/models/patch-worker.js +1 -542
  60. package/dist/models/patch-worker.js.map +1 -1
  61. package/dist/models/react.d.ts +6 -5
  62. package/dist/models/react.js +1 -72
  63. package/dist/models/react.js.map +1 -1
  64. package/dist/models/solid.d.ts +16 -6
  65. package/dist/models/solid.js +1 -94
  66. package/dist/models/solid.js.map +1 -1
  67. package/dist/models/vue.d.ts +90 -7
  68. package/dist/models/vue.js +1 -97
  69. package/dist/models/vue.js.map +1 -1
  70. package/dist/orm-MJTHCG9E.d.ts +1003 -0
  71. package/dist/{session-vqOnyxga.d.ts → session-JudUKAV7.d.ts} +76 -74
  72. package/dist/{state-BTsp-E4v.d.ts → state-CkYavOSt.d.ts} +16 -0
  73. package/dist/{types-Dn0EFMO_.d.ts → types-B-IX3HBn.d.ts} +94 -21
  74. package/dist/{types-Xb8Ta9tZ.d.ts → types-Blyx2A7F.d.ts} +10 -36
  75. package/dist/web3/auth.d.ts +89 -0
  76. package/dist/web3/auth.js +13 -0
  77. package/dist/web3/auth.js.map +1 -0
  78. package/dist/web3/index.d.ts +1913 -126
  79. package/dist/web3/index.js +1 -1019
  80. package/dist/web3/index.js.map +1 -1
  81. package/dist/web3/network.d.ts +6 -0
  82. package/dist/web3/network.js +2 -0
  83. package/dist/web3/network.js.map +1 -0
  84. package/dist/web3/registry.d.ts +34 -9
  85. package/dist/web3/registry.js +1 -22
  86. package/dist/web3/vue.d.ts +31 -14
  87. package/dist/web3/vue.js +1 -390
  88. package/dist/web3/vue.js.map +1 -1
  89. package/package.json +23 -2
  90. package/dist/chunk-2HFOWE5R.js +0 -296
  91. package/dist/chunk-2HFOWE5R.js.map +0 -1
  92. package/dist/chunk-3L6LH2XK.js +0 -465
  93. package/dist/chunk-3L6LH2XK.js.map +0 -1
  94. package/dist/chunk-4CWVFPBN.js +0 -28
  95. package/dist/chunk-4CWVFPBN.js.map +0 -1
  96. package/dist/chunk-AGHPATVL.js +0 -65
  97. package/dist/chunk-AGHPATVL.js.map +0 -1
  98. package/dist/chunk-JDUYLUDJ.js +0 -4835
  99. package/dist/chunk-JDUYLUDJ.js.map +0 -1
  100. package/dist/chunk-OEZK7IX7.js +0 -77
  101. package/dist/chunk-OEZK7IX7.js.map +0 -1
  102. package/dist/chunk-PUYDAUCI.js +0 -2873
  103. package/dist/chunk-PUYDAUCI.js.map +0 -1
  104. package/dist/chunk-WHWMTS7D.js +0 -99
  105. package/dist/chunk-WHWMTS7D.js.map +0 -1
  106. package/dist/chunk-Y7RS6RTM.js +0 -342
  107. package/dist/chunk-Y7RS6RTM.js.map +0 -1
  108. package/dist/chunk-ZEZGI2TP.js +0 -197
  109. package/dist/chunk-ZEZGI2TP.js.map +0 -1
  110. package/dist/core-dao-core-logo-VDT2I5IW.svg +0 -33
  111. package/dist/level-state-J3pj64Tr.d.ts +0 -15
  112. package/dist/models/models_v2.global.js +0 -1
  113. package/dist/orm-BvkX0aBT.d.ts +0 -507
@@ -1,8 +1,18 @@
1
1
  import * as solid_js from 'solid-js';
2
- import { L as LevelState } from '../level-state-J3pj64Tr.js';
3
- import { S as SessionBootstrapOptions } from '../session-vqOnyxga.js';
4
- export { r as resetModelsV2Session } from '../session-vqOnyxga.js';
5
- import { O as Orm } from '../orm-BvkX0aBT.js';
2
+ import { L as LevelState } from '../level-state-DXqglpAX.js';
3
+ import { S as SessionBootstrapOptions } from '../session-JudUKAV7.js';
4
+ export { c as clearLocalPatches, h as hasPartition, a as loadPartition, l as loadSearch, r as resetModelsV2Session } from '../session-JudUKAV7.js';
5
+ import { Q as QueueItem, O as Orm } from '../orm-MJTHCG9E.js';
6
+ import '../enriched-index-T0sDG7JR.js';
7
+
8
+ type StoredPatch = QueueItem & {
9
+ pk: number;
10
+ username: string;
11
+ order?: number;
12
+ };
13
+ declare const getAllPatches: () => Promise<{
14
+ [user: string]: Array<StoredPatch>;
15
+ }>;
6
16
 
7
17
  /**
8
18
  * **Composes** the Solid.js reactivity system into the models_v2 record tracker
@@ -60,7 +70,7 @@ declare const useLevel: (username: string) => solid_js.Accessor<LevelState>;
60
70
  */
61
71
  declare const useTrash: (objectType: number, usernames?: string[]) => {
62
72
  count: solid_js.Accessor<number>;
63
- getIds: () => number[];
73
+ getIds: () => bigint[];
64
74
  };
65
75
 
66
76
  declare const useDraft: <T extends Orm>(model: () => T) => {
@@ -70,4 +80,4 @@ declare const useDraft: <T extends Orm>(model: () => T) => {
70
80
  rollback: () => void;
71
81
  };
72
82
 
73
- export { bootstrapModelsV2, installSolidReactivity, useDraft, useLevel, useTrash };
83
+ export { bootstrapModelsV2, getAllPatches, installSolidReactivity, useDraft, useLevel, useTrash };
@@ -1,95 +1,2 @@
1
- import {
2
- commitDraft,
3
- createDraft,
4
- isDraftDirty,
5
- rollbackDraft
6
- } from "../chunk-OEZK7IX7.js";
7
- import {
8
- bootstrapSession,
9
- resetModelsV2Session
10
- } from "../chunk-2HFOWE5R.js";
11
- import {
12
- getLevel,
13
- subscribeLevel
14
- } from "../chunk-4CWVFPBN.js";
15
- import {
16
- trashStore
17
- } from "../chunk-Y7RS6RTM.js";
18
- import {
19
- addReactivitySystem
20
- } from "../chunk-JDUYLUDJ.js";
21
- import "../chunk-ZEZGI2TP.js";
22
-
23
- // src/models/adapters/solid.ts
24
- import { createSignal, onCleanup, createRoot } from "solid-js";
25
- import { createMemo } from "solid-js";
26
- var _solidUnregister = null;
27
- var installSolidReactivity = () => {
28
- if (_solidUnregister) return _solidUnregister;
29
- const signals = /* @__PURE__ */ new WeakMap();
30
- const system = {
31
- track(o) {
32
- let s = signals.get(o);
33
- if (!s) {
34
- s = createRoot(() => {
35
- const [get, set] = createSignal(0);
36
- return { get, set };
37
- });
38
- signals.set(o, s);
39
- }
40
- s.get();
41
- },
42
- trigger(o) {
43
- const s = signals.get(o);
44
- if (s) s.set(s.get() + 1);
45
- }
46
- };
47
- _solidUnregister = addReactivitySystem(system);
48
- return _solidUnregister;
49
- };
50
- var bootstrapModelsV2 = (opts) => bootstrapSession(opts, installSolidReactivity);
51
- var useLevel = (username) => {
52
- const [state, setState] = createSignal(getLevel(username));
53
- const unsub = subscribeLevel((u) => {
54
- if (u === username) setState(getLevel(username));
55
- });
56
- onCleanup(unsub);
57
- return state;
58
- };
59
- var useTrash = (objectType, usernames = []) => {
60
- const [count, setCount] = createSignal(trashStore.count(objectType, usernames));
61
- const unsub = trashStore.subscribe(objectType, () => setCount(trashStore.count(objectType, usernames)));
62
- onCleanup(unsub);
63
- return {
64
- count,
65
- getIds: () => trashStore.list(objectType, usernames)
66
- };
67
- };
68
- var useDraft = (model) => {
69
- const [tick, setTick] = createSignal(0);
70
- const draft = createMemo(() => createDraft(model(), () => setTick((t) => t + 1)));
71
- return {
72
- draft,
73
- isDirty: () => {
74
- tick();
75
- return isDraftDirty(draft());
76
- },
77
- commit: () => {
78
- commitDraft(draft());
79
- setTick((t) => t + 1);
80
- },
81
- rollback: () => {
82
- rollbackDraft(draft());
83
- setTick((t) => t + 1);
84
- }
85
- };
86
- };
87
- export {
88
- bootstrapModelsV2,
89
- installSolidReactivity,
90
- resetModelsV2Session,
91
- useDraft,
92
- useLevel,
93
- useTrash
94
- };
1
+ import{a as u,b as f,c as g,d}from"../chunk-46FQHZNM.js";import{a as y,b as x,c as D,d as p,e as h,f as k}from"../chunk-OELHBR4F.js";import{c as i}from"../chunk-D4DXGA2W.js";import"../chunk-GWQNULP4.js";import{Na as S,Xa as a,Ya as m,_ as l}from"../chunk-7G3BMGV2.js";import{createSignal as c,onCleanup as b,createRoot as P}from"solid-js";import{createMemo as L}from"solid-js";var n=null,R=()=>{if(n)return n;let e=new WeakMap;return n=l({track(o){let t=e.get(o);t||(t=P(()=>{let[r,v]=c(0);return{get:r,set:v}}),e.set(o,t)),t.get()},trigger(o){let t=e.get(o);t&&t.set(t.get()+1)}}),n},w=e=>p(e,R),A=e=>{let[s,o]=c(a(e)),t=m(r=>{r===e&&o(a(e))});return b(t),s},I=(e,s=[])=>{let[o,t]=c(i.count(e,s)),r=i.subscribe(e,()=>t(i.count(e,s)));return b(r),{count:o,getIds:()=>i.list(e,s)}},W=e=>{let[s,o]=c(0),t=L(()=>u(e(),()=>o(r=>r+1)));return{draft:t,isDirty:()=>(s(),f(t())),commit:()=>{g(t()),o(r=>r+1)},rollback:()=>{d(t()),o(r=>r+1)}}};export{w as bootstrapModelsV2,k as clearLocalPatches,S as getAllPatches,x as hasPartition,R as installSolidReactivity,D as loadPartition,y as loadSearch,h as resetModelsV2Session,W as useDraft,A as useLevel,I as useTrash};
95
2
  //# sourceMappingURL=solid.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/models/adapters/solid.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAcA,SAAS,cAAc,WAAW,kBAAkB;AA2GpD,SAAS,kBAAkB;AAnG3B,IAAI,mBAAwC;AAarC,IAAM,yBAAyB,MAAoB;AACtD,MAAI,iBAAkB,QAAO;AAC7B,QAAM,UAAU,oBAAI,QAAiE;AACrF,QAAM,SAA2B;AAAA,IAC7B,MAAM,GAAW;AACb,UAAI,IAAI,QAAQ,IAAI,CAAC;AACrB,UAAI,CAAC,GAAG;AAEJ,YAAI,WAAW,MAAM;AAAE,gBAAM,CAAC,KAAK,GAAG,IAAI,aAAa,CAAC;AAAG,iBAAO,EAAE,KAAK,IAAI;AAAA,QAAG,CAAC;AACjF,gBAAQ,IAAI,GAAG,CAAC;AAAA,MACpB;AACA,QAAE,IAAI;AAAA,IACV;AAAA,IACA,QAAQ,GAAW;AACf,YAAM,IAAI,QAAQ,IAAI,CAAC;AACvB,UAAI,EAAG,GAAE,IAAI,EAAE,IAAI,IAAI,CAAC;AAAA,IAC5B;AAAA,EACJ;AACA,qBAAmB,oBAAoB,MAAM;AAC7C,SAAO;AACX;AAwBO,IAAM,oBAAoB,CAAC,SAC9B,iBAAiB,MAAM,sBAAsB;AAU1C,IAAM,WAAW,CAAC,aAAqB;AAC1C,QAAM,CAAC,OAAO,QAAQ,IAAI,aAAa,SAAS,QAAQ,CAAC;AACzD,QAAM,QAAQ,eAAe,OAAK;AAAE,QAAI,MAAM,SAAU,UAAS,SAAS,QAAQ,CAAC;AAAA,EAAG,CAAC;AACvF,YAAU,KAAK;AACf,SAAO;AACX;AAYO,IAAM,WAAW,CAAC,YAAoB,YAAsB,CAAC,MAAM;AACtE,QAAM,CAAC,OAAO,QAAQ,IAAI,aAAa,WAAW,MAAM,YAAY,SAAS,CAAC;AAC9E,QAAM,QAAQ,WAAW,UAAU,YAAY,MAAM,SAAS,WAAW,MAAM,YAAY,SAAS,CAAC,CAAC;AACtG,YAAU,KAAK;AACf,SAAO;AAAA,IACH;AAAA,IACA,QAAQ,MAAM,WAAW,KAAK,YAAY,SAAS;AAAA,EACvD;AACJ;AAUO,IAAM,WAAW,CAAgB,UAAmB;AACvD,QAAM,CAAC,MAAM,OAAO,IAAI,aAAa,CAAC;AAEtC,QAAM,QAAQ,WAAW,MAAM,YAAY,MAAM,GAAG,MAAM,QAAQ,OAAK,IAAI,CAAC,CAAC,CAAC;AAE9E,SAAO;AAAA,IACH;AAAA,IACA,SAAS,MAAM;AACX,WAAK;AACL,aAAO,aAAa,MAAM,CAAC;AAAA,IAC/B;AAAA,IACA,QAAQ,MAAM;AACV,kBAAY,MAAM,CAAC;AACnB,cAAQ,OAAK,IAAI,CAAC;AAAA,IACtB;AAAA,IACA,UAAU,MAAM;AACZ,oBAAc,MAAM,CAAC;AACrB,cAAQ,OAAK,IAAI,CAAC;AAAA,IACtB;AAAA,EACJ;AACJ;","names":[]}
1
+ {"version":3,"sources":["../../src/models/adapters/solid.ts"],"mappings":"4QAiGA,OAAS,gBAAAA,EAAc,aAAAC,EAAW,cAAAC,MAAkB,WA2GpD,OAAS,cAAAC,MAAkB,WAnG3B,IAAIC,EAAwC,KAa/BC,EAAyB,IAAoB,CACtD,GAAID,EAAkB,OAAOA,EAC7B,IAAME,EAAU,IAAI,QAgBpB,OAAAF,EAAmBG,EAfc,CAC7B,MAAM,EAAW,CACb,IAAIC,EAAIF,EAAQ,IAAI,CAAC,EAChBE,IAEDA,EAAIC,EAAW,IAAM,CAAE,GAAM,CAACC,EAAKC,CAAG,EAAIC,EAAa,CAAC,EAAG,MAAO,CAAE,IAAAF,EAAK,IAAAC,CAAI,CAAG,CAAC,EACjFL,EAAQ,IAAI,EAAGE,CAAC,GAEpBA,EAAE,IAAI,CACV,EACA,QAAQ,EAAW,CACf,IAAMA,EAAIF,EAAQ,IAAI,CAAC,EACnBE,GAAGA,EAAE,IAAIA,EAAE,IAAI,EAAI,CAAC,CAC5B,CACJ,CAC6C,EACtCJ,CACX,EAwBaS,EAAqBC,GAC9BC,EAAiBD,EAAMT,CAAsB,EAUpCW,EAAYC,GAAqB,CAC1C,GAAM,CAACC,EAAOC,CAAQ,EAAIP,EAAaQ,EAASH,CAAQ,CAAC,EACnDI,EAAQC,EAAeC,GAAK,CAAMA,IAAMN,GAAUE,EAASC,EAASH,CAAQ,CAAC,CAAG,CAAC,EACvF,OAAAO,EAAUH,CAAK,EACRH,CACX,EAYaO,EAAW,CAACC,EAAoBC,EAAsB,CAAC,IAAM,CACtE,GAAM,CAACC,EAAOC,CAAQ,EAAIjB,EAAakB,EAAW,MAAMJ,EAAYC,CAAS,CAAC,EACxEN,EAAQS,EAAW,UAAUJ,EAAY,IAAMG,EAASC,EAAW,MAAMJ,EAAYC,CAAS,CAAC,CAAC,EACtG,OAAAH,EAAUH,CAAK,EACR,CACH,MAAAO,EACA,OAAQ,IAAME,EAAW,KAAKJ,EAAYC,CAAS,CACvD,CACJ,EAUaI,EAA2BC,GAAmB,CACvD,GAAM,CAACC,EAAMC,CAAO,EAAItB,EAAa,CAAC,EAEhCuB,EAAQC,EAAW,IAAMC,EAAYL,EAAM,EAAG,IAAME,EAAQI,GAAKA,EAAI,CAAC,CAAC,CAAC,EAE9E,MAAO,CACH,MAAAH,EACA,QAAS,KACLF,EAAK,EACEM,EAAaJ,EAAM,CAAC,GAE/B,OAAQ,IAAM,CACVK,EAAYL,EAAM,CAAC,EACnBD,EAAQI,GAAKA,EAAI,CAAC,CACtB,EACA,SAAU,IAAM,CACZG,EAAcN,EAAM,CAAC,EACrBD,EAAQI,GAAKA,EAAI,CAAC,CACtB,CACJ,CACJ","names":["createSignal","onCleanup","createRoot","createMemo","_solidUnregister","installSolidReactivity","signals","addReactivitySystem","s","createRoot","get","set","createSignal","bootstrapModelsV2","opts","bootstrapSession","useLevel","username","state","setState","getLevel","unsub","subscribeLevel","u","onCleanup","useTrash","objectType","usernames","count","setCount","trashStore","useDraft","model","tick","setTick","draft","createMemo","createDraft","t","isDraftDirty","commitDraft","rollbackDraft"]}
@@ -1,9 +1,23 @@
1
+ import { P as PresetFilter, S as SearchFilters, B as BookSearchLangState, a as SearchResult } from '../bookSearchService-BmFHrvsv.js';
1
2
  import * as vue from 'vue';
2
- import { Ref } from 'vue';
3
- import { L as LevelState } from '../level-state-J3pj64Tr.js';
4
- import { S as SessionBootstrapOptions } from '../session-vqOnyxga.js';
5
- export { r as resetModelsV2Session } from '../session-vqOnyxga.js';
6
- import { O as Orm } from '../orm-BvkX0aBT.js';
3
+ import { Ref, MaybeRef } from 'vue';
4
+ import { L as LevelState } from '../level-state-DXqglpAX.js';
5
+ import { S as SessionBootstrapOptions } from '../session-JudUKAV7.js';
6
+ export { c as clearLocalPatches, l as loadSearch, r as resetModelsV2Session } from '../session-JudUKAV7.js';
7
+ import { O as Orm, L as Lang } from '../orm-MJTHCG9E.js';
8
+ import '../Book-K86JRm42.js';
9
+ import '@the_library/db_schemas/enums';
10
+ import '@the_library/standard-adapters/lcc';
11
+ import '@the_library/standard-adapters/ddc';
12
+ import '@the_library/standard-adapters/udc';
13
+ import '@the_library/standard-adapters/clc';
14
+ import '@the_library/standard-adapters/bbk';
15
+ import '@the_library/standard-adapters/tlc';
16
+ import '@the_library/standard-adapters/cc';
17
+ import '@the_library/standard-adapters/isbn';
18
+ import '@the_library/standard-adapters/isni';
19
+ import '@the_library/standard-adapters/orcid';
20
+ import '../enriched-index-T0sDG7JR.js';
7
21
 
8
22
  /**
9
23
  * **Composes** the Vue 3 reactivity system into the models_v2 record tracker
@@ -38,8 +52,19 @@ declare const useLevel: (username: string) => vue.ComputedRef<LevelState>;
38
52
  */
39
53
  declare const useTrash: (objectType: number, usernames?: string[]) => {
40
54
  count: vue.ComputedRef<number>;
41
- getIds: () => number[];
55
+ getIds: () => bigint[];
42
56
  };
57
+ /**
58
+ * Reactive dependency on the stats store (models/stats.ts): read it inside a
59
+ * computed alongside VisitsByType/DownloadsByType/FavoritesByTypes so the view
60
+ * re-evaluates when visits/downloads/ratings change — including rows restored
61
+ * from the chain after the page mounted.
62
+ *
63
+ * @example
64
+ * const statsTick = useStatsTick();
65
+ * const topicIds = computed(() => (statsTick.value, VisitsByType(Tag.type)));
66
+ */
67
+ declare const useStatsTick: () => vue.ShallowRef<number, number>;
43
68
 
44
69
  declare const useDraft: <T extends Orm>(model: Ref<T> | (() => T)) => {
45
70
  draft: vue.ComputedRef<T>;
@@ -48,4 +73,62 @@ declare const useDraft: <T extends Orm>(model: Ref<T> | (() => T)) => {
48
73
  rollback: () => void;
49
74
  };
50
75
 
51
- export { bootstrapModelsV2, installVueReactivity, useDraft, useLevel, useTrash };
76
+ interface UseBookSearchOptions {
77
+ /** Language to search (default: the session language). */
78
+ lang?: MaybeRef<Lang | undefined>;
79
+ /** Hits per page (default 20). */
80
+ pageSize?: number;
81
+ /** Preset/relation names to count over all matches, e.g. ['topic', 'educationQuality']. */
82
+ facets?: readonly string[];
83
+ /** Typing debounce in ms (default 120). The index answers in a few ms; this only spares re-renders. */
84
+ debounceMs?: number;
85
+ }
86
+ /**
87
+ * Everything a search box / search page needs, over the app-wide Book index
88
+ * (`bookSearch`, loaded in the background by bootModelsV2). Reactive: results
89
+ * refresh as the user types, as filters change, and as the index itself
90
+ * changes (a shard arrives, a local edit lands in the overlay, a book is
91
+ * trashed). Hits are wireIds — resolve them with `Book.Has(id)` / `Book.Load(id)`.
92
+ *
93
+ * @example
94
+ * const s = useBookSearch({ facets: ['topic', 'educationQuality'] });
95
+ * // <input v-model="s.text.value"> · s.result.value.hits · s.state.value.status
96
+ */
97
+ declare const useBookSearch: (options?: UseBookSearchOptions) => {
98
+ /** Bind to the input. */
99
+ text: Ref<string, string>;
100
+ filters: Ref<{
101
+ presets?: Readonly<Record<string, PresetFilter>> | undefined;
102
+ relations?: Readonly<Record<string, readonly (bigint | string)[]>> | undefined;
103
+ }, SearchFilters | {
104
+ presets?: Readonly<Record<string, PresetFilter>> | undefined;
105
+ relations?: Readonly<Record<string, readonly (bigint | string)[]>> | undefined;
106
+ }>;
107
+ sort: Ref<{
108
+ preset: string;
109
+ dir?: "asc" | "desc";
110
+ } | undefined, {
111
+ preset: string;
112
+ dir?: "asc" | "desc";
113
+ } | undefined>;
114
+ page: Ref<number, number>;
115
+ pageSize: number;
116
+ /** `{ status: 'idle' | 'loading' | 'ready' | 'error', source, shards, error }` for the current language. */
117
+ state: vue.ComputedRef<BookSearchLangState>;
118
+ ready: vue.ComputedRef<boolean>;
119
+ /** Searchable books currently in the index for this language. */
120
+ indexedCount: vue.ComputedRef<number>;
121
+ result: vue.ComputedRef<SearchResult>;
122
+ /** Time spent in the index for the current answer (ms). */
123
+ elapsedMs: vue.ComputedRef<number>;
124
+ pageCount: vue.ComputedRef<number>;
125
+ setPresetFilter: (name: string, filter: PresetFilter | null) => void;
126
+ setRelationFilter: (name: string, ids: readonly (bigint | string)[] | null) => void;
127
+ clearFilters: () => void;
128
+ /** Resolves once the index for the current language has finished loading. */
129
+ whenReady: () => Promise<void>;
130
+ /** Start loading now, or retry after an error (boot normally starts it in the background). */
131
+ load: () => Promise<void>;
132
+ };
133
+
134
+ export { type UseBookSearchOptions, bootstrapModelsV2, installVueReactivity, useBookSearch, useDraft, useLevel, useStatsTick, useTrash };
@@ -1,98 +1,2 @@
1
- import {
2
- commitDraft,
3
- createDraft,
4
- isDraftDirty,
5
- rollbackDraft
6
- } from "../chunk-OEZK7IX7.js";
7
- import {
8
- bootstrapSession,
9
- resetModelsV2Session
10
- } from "../chunk-2HFOWE5R.js";
11
- import {
12
- getLevel,
13
- subscribeLevel
14
- } from "../chunk-4CWVFPBN.js";
15
- import {
16
- trashStore
17
- } from "../chunk-Y7RS6RTM.js";
18
- import {
19
- addReactivitySystem
20
- } from "../chunk-JDUYLUDJ.js";
21
- import "../chunk-ZEZGI2TP.js";
22
-
23
- // src/models/adapters/vue.ts
24
- import { computed, onUnmounted, shallowRef } from "vue";
25
- var _vueUnregister = null;
26
- var installVueReactivity = () => {
27
- if (_vueUnregister) return _vueUnregister;
28
- const refs = /* @__PURE__ */ new WeakMap();
29
- const system = {
30
- track(o) {
31
- let r = refs.get(o);
32
- if (!r) {
33
- r = shallowRef(0);
34
- refs.set(o, r);
35
- }
36
- void r.value;
37
- },
38
- trigger(o) {
39
- const r = refs.get(o);
40
- if (r) r.value++;
41
- }
42
- };
43
- _vueUnregister = addReactivitySystem(system);
44
- return _vueUnregister;
45
- };
46
- var bootstrapModelsV2 = (opts) => bootstrapSession(opts, installVueReactivity);
47
- var useLevel = (username) => {
48
- const tick = shallowRef(0);
49
- const unsub = subscribeLevel((u) => {
50
- if (u === username) tick.value++;
51
- });
52
- onUnmounted(unsub);
53
- return computed(() => (tick.value, getLevel(username)));
54
- };
55
- var useTrash = (objectType, usernames = []) => {
56
- const tick = shallowRef(0);
57
- const unsub = trashStore.subscribe(objectType, () => {
58
- tick.value++;
59
- });
60
- onUnmounted(unsub);
61
- return {
62
- count: computed(() => (tick.value, trashStore.count(objectType, usernames))),
63
- getIds: () => trashStore.list(objectType, usernames)
64
- };
65
- };
66
- var useDraft = (model) => {
67
- const tick = shallowRef(0);
68
- const draft = computed(() => {
69
- const m = typeof model === "function" ? model() : model.value;
70
- return createDraft(m, () => {
71
- tick.value++;
72
- });
73
- });
74
- return {
75
- draft,
76
- isDirty: computed(() => {
77
- void tick.value;
78
- return isDraftDirty(draft.value);
79
- }),
80
- commit: () => {
81
- commitDraft(draft.value);
82
- tick.value++;
83
- },
84
- rollback: () => {
85
- rollbackDraft(draft.value);
86
- tick.value++;
87
- }
88
- };
89
- };
90
- export {
91
- bootstrapModelsV2,
92
- installVueReactivity,
93
- resetModelsV2Session,
94
- useDraft,
95
- useLevel,
96
- useTrash
97
- };
1
+ import{a as L,b as O,c as B,d as P}from"../chunk-46FQHZNM.js";import{a as D,d as F,e as V,f as I}from"../chunk-OELHBR4F.js";import{c as d,w as l}from"../chunk-D4DXGA2W.js";import"../chunk-GWQNULP4.js";import{Xa as R,Ya as M,_ as k,ib as T,sb as w}from"../chunk-7G3BMGV2.js";import{computed as o,onUnmounted as m,shallowRef as i}from"vue";import{ref as v,watch as z,unref as j}from"vue";var y=null,Q=()=>{if(y)return y;let e=new WeakMap;return y=k({track(r){let t=e.get(r);t||(t=i(0),e.set(r,t)),t.value},trigger(r){let t=e.get(r);t&&t.value++}}),y},H=e=>F(e,Q),J=e=>{let s=i(0),r=M(t=>{t===e&&s.value++});return m(r),o(()=>(s.value,R(e)))},K=(e,s=[])=>{let r=i(0),t=d.subscribe(e,()=>{r.value++});return m(t),{count:o(()=>(r.value,d.count(e,s))),getIds:()=>d.list(e,s)}},N=()=>{let e=i(0);return m(T(()=>{e.value++})),e},Y=e=>{let s=i(0),r=o(()=>{let t=typeof e=="function"?e():e.value;return L(t,()=>{s.value++})});return{draft:r,isDirty:o(()=>(s.value,O(r.value))),commit:()=>{B(r.value),s.value++},rollback:()=>{P(r.value),s.value++}}},te=(e={})=>{let s=e.pageSize??20,r=v(""),t=v({}),f=v(),g=v(0),p=i(0);m(l.subscribe(()=>{p.value++}));let b=v(""),S;z(r,a=>{clearTimeout(S),S=setTimeout(()=>{b.value=a},e.debounceMs??120)}),m(()=>clearTimeout(S)),z([b,t,f],()=>{g.value=0},{deep:!0});let c=o(()=>j(e.lang)??void 0),x=o(()=>(p.value,l.state(c.value))),h=o(()=>{p.value;let a=performance.now();return{result:l.search({lang:c.value,text:b.value,filters:t.value,sort:f.value,limit:s,offset:g.value*s,facets:e.facets}),ms:performance.now()-a}}),U=(a,u)=>{let n={...t.value.presets};u?n[a]=u:delete n[a],t.value={...t.value,presets:n}},C=(a,u)=>{let n={...t.value.relations};u?.length?n[a]=u:delete n[a],t.value={...t.value,relations:n}};return{text:r,filters:t,sort:f,page:g,pageSize:s,state:x,ready:o(()=>x.value.status==="ready"),indexedCount:o(()=>(p.value,l.index.size(c.value??w.userLang))),result:o(()=>h.value.result),elapsedMs:o(()=>h.value.ms),pageCount:o(()=>Math.max(1,Math.ceil(h.value.result.total/s))),setPresetFilter:U,setRelationFilter:C,clearFilters:()=>{t.value={},f.value=void 0},whenReady:()=>l.ready(c.value),load:()=>D(c.value)}};export{H as bootstrapModelsV2,I as clearLocalPatches,Q as installVueReactivity,D as loadSearch,V as resetModelsV2Session,te as useBookSearch,Y as useDraft,J as useLevel,N as useStatsTick,K as useTrash};
98
2
  //# sourceMappingURL=vue.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/models/adapters/vue.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAcA,SAAS,UAAU,aAAa,kBAAkB;AAOlD,IAAI,iBAAsC;AASnC,IAAM,uBAAuB,MAAoB;AACpD,MAAI,eAAgB,QAAO;AAC3B,QAAM,OAAO,oBAAI,QAAmC;AACpD,QAAM,SAA2B;AAAA,IAC7B,MAAM,GAAW;AACb,UAAI,IAAI,KAAK,IAAI,CAAC;AAClB,UAAI,CAAC,GAAG;AAAE,YAAI,WAAW,CAAC;AAAG,aAAK,IAAI,GAAG,CAAC;AAAA,MAAG;AAC7C,WAAK,EAAE;AAAA,IACX;AAAA,IACA,QAAQ,GAAW;AACf,YAAM,IAAI,KAAK,IAAI,CAAC;AACpB,UAAI,EAAG,GAAE;AAAA,IACb;AAAA,EACJ;AACA,mBAAiB,oBAAoB,MAAM;AAC3C,SAAO;AACX;AAOO,IAAM,oBAAoB,CAAC,SAC9B,iBAAiB,MAAM,oBAAoB;AASxC,IAAM,WAAW,CAAC,aAAqB;AAC1C,QAAM,OAAO,WAAW,CAAC;AACzB,QAAM,QAAQ,eAAe,OAAK;AAAE,QAAI,MAAM,SAAU,MAAK;AAAA,EAAS,CAAC;AACvE,cAAY,KAAK;AACjB,SAAO,SAAS,OAAO,KAAK,OAAO,SAAS,QAAQ,EAAE;AAC1D;AAWO,IAAM,WAAW,CAAC,YAAoB,YAAsB,CAAC,MAAM;AACtE,QAAM,OAAO,WAAW,CAAC;AACzB,QAAM,QAAQ,WAAW,UAAU,YAAY,MAAM;AAAE,SAAK;AAAA,EAAS,CAAC;AACtE,cAAY,KAAK;AACjB,SAAO;AAAA,IACH,OAAO,SAAS,OAAO,KAAK,OAAO,WAAW,MAAM,YAAY,SAAS,EAAE;AAAA,IAC3E,QAAQ,MAAM,WAAW,KAAK,YAAY,SAAS;AAAA,EACvD;AACJ;AAUO,IAAM,WAAW,CAAgB,UAA8B;AAClE,QAAM,OAAO,WAAW,CAAC;AAEzB,QAAM,QAAQ,SAAS,MAAM;AACzB,UAAM,IAAI,OAAO,UAAU,aAAa,MAAM,IAAI,MAAM;AACxD,WAAO,YAAY,GAAG,MAAM;AAAE,WAAK;AAAA,IAAS,CAAC;AAAA,EACjD,CAAC;AAED,SAAO;AAAA,IACH;AAAA,IACA,SAAS,SAAS,MAAM;AACpB,WAAK,KAAK;AACV,aAAO,aAAa,MAAM,KAAK;AAAA,IACnC,CAAC;AAAA,IACD,QAAQ,MAAM;AACV,kBAAY,MAAM,KAAK;AACvB,WAAK;AAAA,IACT;AAAA,IACA,UAAU,MAAM;AACZ,oBAAc,MAAM,KAAK;AACzB,WAAK;AAAA,IACT;AAAA,EACJ;AACJ;","names":[]}
1
+ {"version":3,"sources":["../../src/models/adapters/vue.ts"],"mappings":"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","names":["computed","onUnmounted","shallowRef","ref","watch","unref","_vueUnregister","installVueReactivity","refs","addReactivitySystem","o","r","shallowRef","bootstrapModelsV2","opts","bootstrapSession","useLevel","username","tick","unsub","subscribeLevel","u","onUnmounted","computed","getLevel","useTrash","objectType","usernames","trashStore","useStatsTick","subscribeStats","useDraft","model","draft","m","createDraft","isDraftDirty","commitDraft","rollbackDraft","useBookSearch","options","pageSize","text","ref","filters","sort","page","bookSearch","query","timer","watch","value","lang","unref","state","answer","started","setPresetFilter","name","filter","presets","setRelationFilter","ids","relations","Config","loadSearch"]}