tinybase 4.3.0-beta.0 → 4.3.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 (172) hide show
  1. package/lib/cjs/persisters/persister-cr-sqlite-wasm.cjs +1 -1
  2. package/lib/cjs/persisters/persister-cr-sqlite-wasm.cjs.gz +0 -0
  3. package/lib/cjs/persisters/persister-expo-sqlite.cjs +1 -1
  4. package/lib/cjs/persisters/persister-expo-sqlite.cjs.gz +0 -0
  5. package/lib/cjs/persisters/persister-partykit-client.cjs +1 -0
  6. package/lib/cjs/persisters/persister-partykit-client.cjs.gz +0 -0
  7. package/lib/cjs/persisters/persister-partykit-server.cjs +1 -0
  8. package/lib/cjs/persisters/persister-partykit-server.cjs.gz +0 -0
  9. package/lib/cjs/persisters/persister-sqlite-wasm.cjs +1 -1
  10. package/lib/cjs/persisters/persister-sqlite-wasm.cjs.gz +0 -0
  11. package/lib/cjs/persisters/persister-sqlite3.cjs +1 -1
  12. package/lib/cjs/persisters/persister-sqlite3.cjs.gz +0 -0
  13. package/lib/cjs/store.cjs +1 -1
  14. package/lib/cjs/store.cjs.gz +0 -0
  15. package/lib/cjs/tinybase.cjs +1 -1
  16. package/lib/cjs/tinybase.cjs.gz +0 -0
  17. package/lib/cjs/tools.cjs +1 -1
  18. package/lib/cjs/tools.cjs.gz +0 -0
  19. package/lib/cjs/ui-react-dom-debug.cjs +1 -1
  20. package/lib/cjs/ui-react-dom-debug.cjs.gz +0 -0
  21. package/lib/cjs/ui-react-dom.cjs +1 -1
  22. package/lib/cjs/ui-react-dom.cjs.gz +0 -0
  23. package/lib/cjs/ui-react.cjs +1 -1
  24. package/lib/cjs/ui-react.cjs.gz +0 -0
  25. package/lib/cjs-es6/persisters/persister-cr-sqlite-wasm.cjs +1 -1
  26. package/lib/cjs-es6/persisters/persister-cr-sqlite-wasm.cjs.gz +0 -0
  27. package/lib/cjs-es6/persisters/persister-expo-sqlite.cjs +1 -1
  28. package/lib/cjs-es6/persisters/persister-expo-sqlite.cjs.gz +0 -0
  29. package/lib/cjs-es6/persisters/persister-partykit-client.cjs +1 -0
  30. package/lib/cjs-es6/persisters/persister-partykit-client.cjs.gz +0 -0
  31. package/lib/cjs-es6/persisters/persister-partykit-server.cjs +1 -0
  32. package/lib/cjs-es6/persisters/persister-partykit-server.cjs.gz +0 -0
  33. package/lib/cjs-es6/persisters/persister-sqlite-wasm.cjs +1 -1
  34. package/lib/cjs-es6/persisters/persister-sqlite-wasm.cjs.gz +0 -0
  35. package/lib/cjs-es6/persisters/persister-sqlite3.cjs +1 -1
  36. package/lib/cjs-es6/persisters/persister-sqlite3.cjs.gz +0 -0
  37. package/lib/cjs-es6/store.cjs +1 -1
  38. package/lib/cjs-es6/store.cjs.gz +0 -0
  39. package/lib/cjs-es6/tinybase.cjs +1 -1
  40. package/lib/cjs-es6/tinybase.cjs.gz +0 -0
  41. package/lib/cjs-es6/tools.cjs +1 -1
  42. package/lib/cjs-es6/tools.cjs.gz +0 -0
  43. package/lib/cjs-es6/ui-react-dom-debug.cjs +1 -1
  44. package/lib/cjs-es6/ui-react-dom-debug.cjs.gz +0 -0
  45. package/lib/cjs-es6/ui-react-dom.cjs +1 -1
  46. package/lib/cjs-es6/ui-react-dom.cjs.gz +0 -0
  47. package/lib/cjs-es6/ui-react.cjs +1 -1
  48. package/lib/cjs-es6/ui-react.cjs.gz +0 -0
  49. package/lib/debug/persisters/persister-cr-sqlite-wasm.js +10 -7
  50. package/lib/debug/persisters/persister-expo-sqlite.js +10 -7
  51. package/lib/debug/persisters/persister-partykit-client.js +249 -0
  52. package/lib/debug/persisters/persister-partykit-server.js +161 -0
  53. package/lib/debug/persisters/persister-sqlite-wasm.js +10 -7
  54. package/lib/debug/persisters/persister-sqlite3.js +10 -7
  55. package/lib/debug/queries.js +2 -2
  56. package/lib/debug/store.js +13 -13
  57. package/lib/debug/tinybase.js +14 -14
  58. package/lib/debug/tools.js +3 -4
  59. package/lib/debug/ui-react-dom.js +35 -24
  60. package/lib/debug/ui-react.js +38 -1
  61. package/lib/es6/persisters/persister-cr-sqlite-wasm.js +1 -1
  62. package/lib/es6/persisters/persister-cr-sqlite-wasm.js.gz +0 -0
  63. package/lib/es6/persisters/persister-expo-sqlite.js +1 -1
  64. package/lib/es6/persisters/persister-expo-sqlite.js.gz +0 -0
  65. package/lib/es6/persisters/persister-partykit-client.js +1 -0
  66. package/lib/es6/persisters/persister-partykit-client.js.gz +0 -0
  67. package/lib/es6/persisters/persister-partykit-server.js +1 -0
  68. package/lib/es6/persisters/persister-partykit-server.js.gz +0 -0
  69. package/lib/es6/persisters/persister-sqlite-wasm.js +1 -1
  70. package/lib/es6/persisters/persister-sqlite-wasm.js.gz +0 -0
  71. package/lib/es6/persisters/persister-sqlite3.js +1 -1
  72. package/lib/es6/persisters/persister-sqlite3.js.gz +0 -0
  73. package/lib/es6/store.js +1 -1
  74. package/lib/es6/store.js.gz +0 -0
  75. package/lib/es6/tinybase.js +1 -1
  76. package/lib/es6/tinybase.js.gz +0 -0
  77. package/lib/es6/tools.js +1 -1
  78. package/lib/es6/tools.js.gz +0 -0
  79. package/lib/es6/ui-react-dom-debug.js +1 -1
  80. package/lib/es6/ui-react-dom-debug.js.gz +0 -0
  81. package/lib/es6/ui-react-dom.js +1 -1
  82. package/lib/es6/ui-react-dom.js.gz +0 -0
  83. package/lib/es6/ui-react.js +1 -1
  84. package/lib/es6/ui-react.js.gz +0 -0
  85. package/lib/persisters/persister-cr-sqlite-wasm.js +1 -1
  86. package/lib/persisters/persister-cr-sqlite-wasm.js.gz +0 -0
  87. package/lib/persisters/persister-expo-sqlite.js +1 -1
  88. package/lib/persisters/persister-expo-sqlite.js.gz +0 -0
  89. package/lib/persisters/persister-partykit-client.js +1 -0
  90. package/lib/persisters/persister-partykit-client.js.gz +0 -0
  91. package/lib/persisters/persister-partykit-server.js +1 -0
  92. package/lib/persisters/persister-partykit-server.js.gz +0 -0
  93. package/lib/persisters/persister-sqlite-wasm.js +1 -1
  94. package/lib/persisters/persister-sqlite-wasm.js.gz +0 -0
  95. package/lib/persisters/persister-sqlite3.js +1 -1
  96. package/lib/persisters/persister-sqlite3.js.gz +0 -0
  97. package/lib/store.js +1 -1
  98. package/lib/store.js.gz +0 -0
  99. package/lib/tinybase.js +1 -1
  100. package/lib/tinybase.js.gz +0 -0
  101. package/lib/tools.js +1 -1
  102. package/lib/tools.js.gz +0 -0
  103. package/lib/types/persisters/persister-cr-sqlite-wasm.d.ts +2 -0
  104. package/lib/types/persisters/persister-expo-sqlite.d.ts +2 -0
  105. package/lib/types/persisters/persister-partykit-client.d.ts +88 -0
  106. package/lib/types/persisters/persister-partykit-server.d.ts +114 -0
  107. package/lib/types/persisters/persister-sqlite-wasm.d.ts +2 -0
  108. package/lib/types/persisters/persister-sqlite3.d.ts +2 -0
  109. package/lib/types/store.d.ts +6 -0
  110. package/lib/types/ui-react.d.ts +187 -4
  111. package/lib/types/with-schemas/persisters/persister-cr-sqlite-wasm.d.ts +2 -0
  112. package/lib/types/with-schemas/persisters/persister-expo-sqlite.d.ts +2 -0
  113. package/lib/types/with-schemas/persisters/persister-partykit-client.d.ts +99 -0
  114. package/lib/types/with-schemas/persisters/persister-partykit-server.d.ts +114 -0
  115. package/lib/types/with-schemas/persisters/persister-sqlite-wasm.d.ts +2 -0
  116. package/lib/types/with-schemas/persisters/persister-sqlite3.d.ts +2 -0
  117. package/lib/types/with-schemas/store.d.ts +6 -0
  118. package/lib/types/with-schemas/ui-react.d.ts +223 -8
  119. package/lib/ui-react-dom.js +1 -1
  120. package/lib/ui-react-dom.js.gz +0 -0
  121. package/lib/ui-react.js +1 -1
  122. package/lib/ui-react.js.gz +0 -0
  123. package/lib/umd/persisters/persister-cr-sqlite-wasm.js +1 -1
  124. package/lib/umd/persisters/persister-cr-sqlite-wasm.js.gz +0 -0
  125. package/lib/umd/persisters/persister-expo-sqlite.js +1 -1
  126. package/lib/umd/persisters/persister-expo-sqlite.js.gz +0 -0
  127. package/lib/umd/persisters/persister-partykit-client.js +1 -0
  128. package/lib/umd/persisters/persister-partykit-client.js.gz +0 -0
  129. package/lib/umd/persisters/persister-partykit-server.js +1 -0
  130. package/lib/umd/persisters/persister-partykit-server.js.gz +0 -0
  131. package/lib/umd/persisters/persister-sqlite-wasm.js +1 -1
  132. package/lib/umd/persisters/persister-sqlite-wasm.js.gz +0 -0
  133. package/lib/umd/persisters/persister-sqlite3.js +1 -1
  134. package/lib/umd/persisters/persister-sqlite3.js.gz +0 -0
  135. package/lib/umd/store.js +1 -1
  136. package/lib/umd/store.js.gz +0 -0
  137. package/lib/umd/tinybase.js +1 -1
  138. package/lib/umd/tinybase.js.gz +0 -0
  139. package/lib/umd/tools.js +1 -1
  140. package/lib/umd/tools.js.gz +0 -0
  141. package/lib/umd/ui-react-dom-debug.js +1 -1
  142. package/lib/umd/ui-react-dom-debug.js.gz +0 -0
  143. package/lib/umd/ui-react-dom.js +1 -1
  144. package/lib/umd/ui-react-dom.js.gz +0 -0
  145. package/lib/umd/ui-react.js +1 -1
  146. package/lib/umd/ui-react.js.gz +0 -0
  147. package/lib/umd-es6/persisters/persister-cr-sqlite-wasm.js +1 -1
  148. package/lib/umd-es6/persisters/persister-cr-sqlite-wasm.js.gz +0 -0
  149. package/lib/umd-es6/persisters/persister-expo-sqlite.js +1 -1
  150. package/lib/umd-es6/persisters/persister-expo-sqlite.js.gz +0 -0
  151. package/lib/umd-es6/persisters/persister-partykit-client.js +1 -0
  152. package/lib/umd-es6/persisters/persister-partykit-client.js.gz +0 -0
  153. package/lib/umd-es6/persisters/persister-partykit-server.js +1 -0
  154. package/lib/umd-es6/persisters/persister-partykit-server.js.gz +0 -0
  155. package/lib/umd-es6/persisters/persister-sqlite-wasm.js +1 -1
  156. package/lib/umd-es6/persisters/persister-sqlite-wasm.js.gz +0 -0
  157. package/lib/umd-es6/persisters/persister-sqlite3.js +1 -1
  158. package/lib/umd-es6/persisters/persister-sqlite3.js.gz +0 -0
  159. package/lib/umd-es6/store.js +1 -1
  160. package/lib/umd-es6/store.js.gz +0 -0
  161. package/lib/umd-es6/tinybase.js +1 -1
  162. package/lib/umd-es6/tinybase.js.gz +0 -0
  163. package/lib/umd-es6/tools.js +1 -1
  164. package/lib/umd-es6/tools.js.gz +0 -0
  165. package/lib/umd-es6/ui-react-dom-debug.js +1 -1
  166. package/lib/umd-es6/ui-react-dom-debug.js.gz +0 -0
  167. package/lib/umd-es6/ui-react-dom.js +1 -1
  168. package/lib/umd-es6/ui-react-dom.js.gz +0 -0
  169. package/lib/umd-es6/ui-react.js +1 -1
  170. package/lib/umd-es6/ui-react.js.gz +0 -0
  171. package/package.json +42 -31
  172. package/readme.md +13 -13
@@ -1 +1 @@
1
- "use strict";var e=require("react"),t=require("./ui-react");const l=e=>typeof e,r=l(""),o=l(!0),a=l(0),n="Value",s="currentTarget",i="value",d=isFinite,u=e=>null==e,{PureComponent:c,Fragment:m,createElement:h,useCallback:b,useLayoutEffect:p,useRef:g,useState:f}=e,w=(e,...t)=>u(e)?{}:e(...t),v=(e,t)=>e.map(t),I=Object,y=(e=[])=>I.fromEntries(e),C=(e,t)=>v(I.entries(e),(([e,l])=>t(l,e))),x="M20 80l5-15l40-40l10 10l-40 40l-15 5m5-15l10 10",k='content:url("',O=k+"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100' stroke-width='4' stroke='white' fill='none'>",R='</svg>")',S=k+"data:image/svg+xml,%3csvg viewBox='0 0 680 680' xmlns='http://www.w3.org/2000/svg' style='width:680px%3bheight:680px'%3e %3cpath stroke='white' stroke-width='80' fill='none' d='M340 617a84 241 90 11.01 0zM131 475a94 254 70 10428-124 114 286 70 01-428 124zm0-140a94 254 70 10428-124 114 286 70 01-428 124zm-12-127a94 254 70 00306 38 90 260 90 01-306-38zm221 3a74 241 90 11.01 0z' /%3e %3cpath fill='%23d81b60' d='M131 475a94 254 70 10428-124 114 286 70 01-428 124zm0-140a94 254 70 10428-124 114 286 70 01-428 124z' /%3e %3cpath d='M249 619a94 240 90 00308-128 114 289 70 01-308 128zM119 208a94 254 70 00306 38 90 260 90 01-306-38zm221 3a74 241 90 11.01 0z' /%3e%3c/svg%3e\")",T=v([[20,20,20,60],[20,20,60,20],[20,60,60,20],[60,20,20,60],[30,30,40,40]],(([e,t,l,r])=>O+`<rect x='20' y='20' width='60' height='60' fill='grey'/><rect x='${e}' y='${t}' width='${l}' height='${r}' fill='white'/>`+R)),N=O+"<path d='M20 20l60 60M20 80l60-60' />"+R,V=O+`<path d='${x}' />`+R,P=O+`<path d='${x}M20 20l60 60' />`+R;var j=Object.defineProperty,z=Object.defineProperties,q=Object.getOwnPropertyDescriptors,M=Object.getOwnPropertySymbols,$=Object.prototype.hasOwnProperty,E=Object.prototype.propertyIsEnumerable,F=(e,t,l)=>t in e?j(e,t,{enumerable:!0,configurable:!0,writable:!0,value:l}):e[t]=l,H=(e,t)=>{for(var l in t||(t={}))$.call(t,l)&&F(e,l,t[l]);if(M)for(var l of M(t))E.call(t,l)&&F(e,l,t[l]);return e},B=(e,t)=>z(e,q(t));const D="*::-webkit-scrollbar";((e,t="")=>{e.join(t)})(C(B(H(B(H(B(H({"*":"all:revert","*::before":"all:revert","*::after":"all:revert",[D]:"width:0.5rem;height:0.5rem;",[D+"-track"]:"background:#111",[D+"-thumb"]:"background:#999;border:1px solid #111",[D+"-thumb:hover"]:"background:#fff",[D+"-corner"]:"background:#111",img:"width:1rem;height:1rem;background:#111;border:0;vertical-align:text-bottom",">img":"padding:0.25rem;bottom:0;right:0;position:fixed;"+S},y(v(["bottom:0;left:0","top:0;right:0"],((e,t)=>[`>img[data-position='${t}']`,e])))),{main:"display:flex;flex-direction:column;background:#111d;color:#fff;position:fixed;"}),y(v(["bottom:0;left:0;width:35vw;height:100vh","top:0;right:0;width:100vw;height:30vh","bottom:0;left:0;width:100vw;height:30vh","top:0;right:0;width:35vw;height:100vh","top:0;right:0;width:100vw;height:100vh"],((e,t)=>[`main[data-position='${t}']`,e])))),{header:"display:flex;padding:0.25rem;background:#000;align-items:center","header>img:nth-of-type(1)":S,"header>img:nth-of-type(6)":N}),y(v(T,((e,t)=>[`header>img[data-id='${t}']`,e])))),{"header>span":"flex:1;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;margin-left:0.25rem",article:"padding:0.25rem 0.25rem 0.25rem 0.5rem;overflow:auto;flex:1",details:"margin-left:0.75rem;width:fit-content;","details img":"display:none","details[open]>summary img":"display:unset;background:none;margin-left:0.25rem","details[open]>summary img.edit":V,"details[open]>summary img.done":P,summary:"margin-left:-0.75rem;line-height:1.25rem;user-select:none;width:fit-content",table:"border-collapse:collapse;table-layout:fixed;margin-bottom:0.5rem","table input":"background:#111;color:unset;padding:0 0.25rem;border:0;font-size:unset;vertical-align:top;margin:0",'table input[type="number"]':"width:4rem","table tbody button":"font-size:0;background:#fff;border-radius:50%;margin:0 0.125rem 0 0;width:0.85rem;color:#111","table button:first-letter":"font-size:0.75rem",thead:"background:#222","th:nth-of-type(1)":"min-width:2rem;","th.sorted":"background:#000","table caption":"text-align:left;white-space:nowrap;line-height:1.25rem",button:"width:1.5rem;border:none;background:none;color:#fff;padding:0","button[disabled]":"color:#777","button.next":"margin-right:0.5rem","th,td":"overflow:hidden;text-overflow:ellipsis;padding:0.25rem 0.5rem;max-width:12rem;white-space:nowrap;border-width:1px 0;border-style:solid;border-color:#777;text-align:left","span.warn":"margin:0.25rem;color:#d81b60"}),((e,t)=>e?`& ${t}{${e}}`:"")));const A=(e,t,l,o)=>e==r?t:e==a?l:o;var L=Object.defineProperty,G=Object.defineProperties,J=Object.getOwnPropertyDescriptors,K=Object.getOwnPropertySymbols,Q=Object.prototype.hasOwnProperty,U=Object.prototype.propertyIsEnumerable,W=(e,t,l)=>t in e?L(e,t,{enumerable:!0,configurable:!0,writable:!0,value:l}):e[t]=l,X=(e,t)=>{for(var l in t||(t={}))Q.call(t,l)&&W(e,l,t[l]);if(K)for(var l of K(t))U.call(t,l)&&W(e,l,t[l]);return e},Y=(e,t)=>G(e,J(t)),Z=(e,t)=>{var l={};for(var r in e)Q.call(e,r)&&t.indexOf(r)<0&&(l[r]=e[r]);if(null!=e&&K)for(var r of K(e))t.indexOf(r)<0&&U.call(e,r)&&(l[r]=e[r]);return l};const{useCallback:_,useMemo:ee,useState:te}=e,le="editable",re=(e,l)=>v(t.useTableCellIds(e,l),(t=>e+"."+t)),oe=(e,t,l)=>{const r=_(e,t);return l?r:void 0},ae=(...e)=>ee((()=>e),e),ne=(e,t)=>ee((()=>({store:e,tableId:t})),[e,t]),se=(e,t)=>ee((()=>({queries:e,queryId:t})),[e,t]),ie=(e,t=!1,l,r=0,o,a,n,s)=>{const[[i,d,u],c]=te([e,t,r]),m=_((e=>{c(e),null==s||s(e)}),[s]),b=oe((e=>m([e,e==i&&!d,u])),[m,i,d,u],l),p=_((e=>m([i,d,e])),[m,i,d]),g=!0===n?ge:n;return[[i,d,u],b,ee((()=>!1===n?null:h(g,{offset:u,limit:o,total:a,onChange:p})),[n,g,u,o,a,p])]},de=(e,t,o)=>ee((()=>{const a=null!=t?t:e;return y(C(Array.isArray(a)?y(v(a,(e=>[e,e]))):a,((e,t)=>{return[t,X(X({},{label:t,component:o}),(a=e,l(a)==r?{label:e}:e))];var a})))}),[t,o,e]),ue=({className:e,headerRow:t,idColumn:l,params:[r,o,a,n,s,i]})=>h("table",{className:e},i?h("caption",null,i):null,!1===t?null:h("thead",null,h("tr",null,!1===l?null:h(ce,{sort:null!=n?n:[],label:"Id",onClick:s}),C(r,(({label:e},t)=>h(ce,{key:t,cellId:t,label:e,sort:null!=n?n:[],onClick:s}))))),h("tbody",null,v(a,(e=>h("tr",{key:e},!1===l?null:h("th",null,e),C(r,(({component:t,getComponentProps:l},r)=>h("td",{key:r},h(t,Y(X(X({},w(l,e,r)),o),{rowId:e,cellId:r})))))))))),ce=({cellId:e,sort:[t,l],label:r=(null!=e?e:""),onClick:o})=>h("th",{onClick:oe((()=>null==o?void 0:o(e)),[o,e],o),className:u(l)||t!=e?void 0:`sorted ${l?"de":"a"}scending`},u(l)||t!=e?null:(l?"↓":"↑")+" ",r),me=({localRowId:l,params:[r,o,a,n,s,i,d]})=>{const c=t.useRemoteRowId(s,l,i);return h("tr",null,!1===r?null:h(e.Fragment,null,h("th",null,l),h("th",null,c)),C(o,(({component:e,getComponentProps:t},r)=>{const[o,s]=r.split(".",2),i=o===a?l:o===n?c:null;return u(i)?null:h("td",{key:r},h(e,Y(X({},w(t,i,s)),{store:d,tableId:o,rowId:i,cellId:s})))})))},he=({thing:e,onThingChange:t,className:n,hasSchema:u})=>{const[c,m]=te(),[b,p]=te(),[g,f]=te(),[w,v]=te(),[I,y]=te();b!==e&&(m((e=>{const t=l(e);return(e=>e==r||e==o)(t)||t==a&&d(e)?t:void 0})(e)),p(e),f(e+""),v(Number(e)||0),y(!!e));const C=_(((e,l)=>{l(e),p(e),t(e)}),[t]);return h("div",{className:n},h("button",{className:c,onClick:_((()=>{if(!(null==u?void 0:u())){const e=A(c,a,o,r),l=A(e,g,w,I);m(e),p(l),t(l)}}),[u,t,g,w,I,c])},c),A(c,h("input",{key:c,value:g,onChange:_((e=>C(e[s][i]+"",f)),[C])}),h("input",{key:c,type:"number",value:w,onChange:_((e=>C(Number(e[s][i]||0),v)),[C])}),h("input",{key:c,type:"checkbox",checked:I,onChange:_((e=>C(!!e[s].checked,y)),[C])})))},be=({tableId:e,rowId:l,cellId:r,store:o,className:a})=>{var n;return h(he,{thing:t.useCell(e,l,r,o),onThingChange:t.useSetCellCallback(e,l,r,(e=>e),[],o),className:null!=a?a:le+"Cell",hasSchema:null==(n=t.useStoreOrStoreById(o))?void 0:n.hasTablesSchema})},pe=({valueId:e,store:l,className:r})=>{var o;return h(he,{thing:t.useValue(e,l),onThingChange:t.useSetValueCallback(e,(e=>e),[],l),className:null!=r?r:le+n,hasSchema:null==(o=t.useStoreOrStoreById(l))?void 0:o.hasValuesSchema})},ge=({onChange:t,total:l,offset:r=0,limit:o=l,singular:a="row",plural:n=a+"s"})=>{(r>l||r<0)&&(r=0,t(0));const s=oe((()=>t(r-o)),[t,r,o],r>0),i=oe((()=>t(r+o)),[t,r,o],r+o<l);return h(e.Fragment,null,l>o&&h(e.Fragment,null,h("button",{className:"previous",disabled:0==r,onClick:s},"←"),h("button",{className:"next",disabled:r+o>=l,onClick:i},"→"),r+1," to ",Math.min(l,r+o)," of "),l," ",1!=l?n:a)};var fe=Object.defineProperty,we=(e,t,l)=>(((e,t,l)=>{t in e?fe(e,t,{enumerable:!0,configurable:!0,writable:!0,value:l}):e[t]=l})(e,"symbol"!=typeof t?t+"":t,l),l);we(class extends c{constructor(e){super(e),we(this,"componentDidCatch",((e,t)=>console.error(e,t.componentStack))),this.state={e:0}}render(){return this.state.e?h("span",{className:"warn"},"Inspector error: please see console for details."):this.props.children}},"getDerivedStateFromError",(()=>({e:1})));const ve=e=>new Map(e);ve(),ve(),exports.EditableCellView=be,exports.EditableValueView=pe,exports.RelationshipInHtmlTable=({relationshipId:l,relationships:r,editable:o,customCells:a,className:n,headerRow:s,idColumn:i=!0})=>{const[d,u,c,m]=((e,t)=>[e,null==e?void 0:e.getStore(),null==e?void 0:e.getLocalTableId(t),null==e?void 0:e.getRemoteTableId(t)])(t.useRelationshipsOrRelationshipsById(r),l),b=de([...re(c,u),...re(m,u)],a,o?be:t.CellView),p=ae(i,b,c,m,l,d,u);return h("table",{className:n},!1===s?null:h("thead",null,h("tr",null,!1===i?null:h(e.Fragment,null,h("th",null,c,".Id"),h("th",null,m,".Id")),C(b,(({label:e},t)=>h("th",{key:t},e))))),h("tbody",null,v(t.useRowIds(c,u),(e=>h(me,{key:e,localRowId:e,params:p})))))},exports.ResultSortedTableInHtmlTable=e=>{var l=e,{queryId:r,cellId:o,descending:a,offset:n,limit:s,queries:i,sortOnClick:d,paginator:u=!1,customCells:c,onChange:m}=l,b=Z(l,["queryId","cellId","descending","offset","limit","queries","sortOnClick","paginator","customCells","onChange"]);const[p,g,f]=ie(o,a,d,n,s,t.useResultRowCount(r,i),u,m);return h(ue,Y(X({},b),{params:ae(de(t.useResultTableCellIds(r,i),c,t.ResultCellView),se(i,r),t.useResultSortedRowIds(r,...p,s,i),p,g,f)}))},exports.ResultTableInHtmlTable=e=>{var l=e,{queryId:r,queries:o,customCells:a}=l,n=Z(l,["queryId","queries","customCells"]);return h(ue,Y(X({},n),{params:ae(de(t.useResultTableCellIds(r,o),a,t.ResultCellView),se(o,r),t.useResultRowIds(r,o))}))},exports.SliceInHtmlTable=e=>{var l=e,{indexId:r,sliceId:o,indexes:a,editable:n,customCells:s}=l,i=Z(l,["indexId","sliceId","indexes","editable","customCells"]);const[d,u,c]=((e,t)=>[e,null==e?void 0:e.getStore(),null==e?void 0:e.getTableId(t)])(t.useIndexesOrIndexesById(a),r);return h(ue,Y(X({},i),{params:ae(de(t.useTableCellIds(c,u),s,n?be:t.CellView),ne(u,c),t.useSliceRowIds(r,o,d))}))},exports.SortedTableInHtmlTable=e=>{var l=e,{tableId:r,cellId:o,descending:a,offset:n,limit:s,store:i,editable:d,sortOnClick:u,paginator:c=!1,onChange:m,customCells:b}=l,p=Z(l,["tableId","cellId","descending","offset","limit","store","editable","sortOnClick","paginator","onChange","customCells"]);const[g,f,w]=ie(o,a,u,n,s,t.useRowCount(r,i),c,m);return h(ue,Y(X({},p),{params:ae(de(t.useTableCellIds(r,i),b,d?be:t.CellView),ne(i,r),t.useSortedRowIds(r,...g,s,i),g,f,w)}))},exports.SortedTablePaginator=ge,exports.StoreInspector=e=>null,exports.TableInHtmlTable=e=>{var l=e,{tableId:r,store:o,editable:a,customCells:n}=l,s=Z(l,["tableId","store","editable","customCells"]);return h(ue,Y(X({},s),{params:ae(de(t.useTableCellIds(r,o),n,a?be:t.CellView),ne(o,r),t.useRowIds(r,o))}))},exports.ValuesInHtmlTable=({store:e,editable:l=!1,valueComponent:r=(l?pe:t.ValueView),getValueComponentProps:o,className:a,headerRow:s,idColumn:i})=>h("table",{className:a},!1===s?null:h("thead",null,h("tr",null,!1===i?null:h("th",null,"Id"),h("th",null,n))),h("tbody",null,v(t.useValueIds(e),(t=>h("tr",{key:t},!1===i?null:h("th",null,t),h("td",null,h(r,Y(X({},w(o,t)),{valueId:t,store:e}))))))));
1
+ "use strict";var e=require("react"),t=require("./ui-react");const l=e=>typeof e,r=l(""),o=l(!0),a=l(0),n="Value",s="currentTarget",i="value",d=isFinite,u=e=>null==e,{PureComponent:c,Fragment:m,createElement:h,useCallback:b,useLayoutEffect:p,useRef:g,useState:f}=e,w=(e,...t)=>u(e)?{}:e(...t),v=(e,t)=>e.map(t),I=Object,C=(e=[])=>I.fromEntries(e),y=(e,t)=>v(I.entries(e),(([e,l])=>t(l,e))),x="M20 80l5-15l40-40l10 10l-40 40l-15 5m5-15l10 10",k='content:url("',O=k+"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100' stroke-width='4' stroke='white' fill='none'>",R='</svg>")',S=k+"data:image/svg+xml,%3csvg viewBox='0 0 680 680' xmlns='http://www.w3.org/2000/svg' style='width:680px%3bheight:680px'%3e %3cpath stroke='white' stroke-width='80' fill='none' d='M340 617a84 241 90 11.01 0zM131 475a94 254 70 10428-124 114 286 70 01-428 124zm0-140a94 254 70 10428-124 114 286 70 01-428 124zm-12-127a94 254 70 00306 38 90 260 90 01-306-38zm221 3a74 241 90 11.01 0z' /%3e %3cpath fill='%23d81b60' d='M131 475a94 254 70 10428-124 114 286 70 01-428 124zm0-140a94 254 70 10428-124 114 286 70 01-428 124z' /%3e %3cpath d='M249 619a94 240 90 00308-128 114 289 70 01-308 128zM119 208a94 254 70 00306 38 90 260 90 01-306-38zm221 3a74 241 90 11.01 0z' /%3e%3c/svg%3e\")",T=v([[20,20,20,60],[20,20,60,20],[20,60,60,20],[60,20,20,60],[30,30,40,40]],(([e,t,l,r])=>O+`<rect x='20' y='20' width='60' height='60' fill='grey'/><rect x='${e}' y='${t}' width='${l}' height='${r}' fill='white'/>`+R)),N=O+"<path d='M20 20l60 60M20 80l60-60' />"+R,V=O+`<path d='${x}' />`+R,P=O+`<path d='${x}M20 20l60 60' />`+R;var j=Object.defineProperty,z=Object.defineProperties,q=Object.getOwnPropertyDescriptors,M=Object.getOwnPropertySymbols,$=Object.prototype.hasOwnProperty,E=Object.prototype.propertyIsEnumerable,F=(e,t,l)=>t in e?j(e,t,{enumerable:!0,configurable:!0,writable:!0,value:l}):e[t]=l,H=(e,t)=>{for(var l in t||(t={}))$.call(t,l)&&F(e,l,t[l]);if(M)for(var l of M(t))E.call(t,l)&&F(e,l,t[l]);return e},B=(e,t)=>z(e,q(t));const D="*::-webkit-scrollbar";((e,t="")=>{e.join(t)})(y(B(H(B(H(B(H({"*":"all:revert","*::before":"all:revert","*::after":"all:revert",[D]:"width:0.5rem;height:0.5rem;",[D+"-track"]:"background:#111",[D+"-thumb"]:"background:#999;border:1px solid #111",[D+"-thumb:hover"]:"background:#fff",[D+"-corner"]:"background:#111",img:"width:1rem;height:1rem;background:#111;border:0;vertical-align:text-bottom",">img":"padding:0.25rem;bottom:0;right:0;position:fixed;"+S},C(v(["bottom:0;left:0","top:0;right:0"],((e,t)=>[`>img[data-position='${t}']`,e])))),{main:"display:flex;flex-direction:column;background:#111d;color:#fff;position:fixed;"}),C(v(["bottom:0;left:0;width:35vw;height:100vh","top:0;right:0;width:100vw;height:30vh","bottom:0;left:0;width:100vw;height:30vh","top:0;right:0;width:35vw;height:100vh","top:0;right:0;width:100vw;height:100vh"],((e,t)=>[`main[data-position='${t}']`,e])))),{header:"display:flex;padding:0.25rem;background:#000;align-items:center","header>img:nth-of-type(1)":S,"header>img:nth-of-type(6)":N}),C(v(T,((e,t)=>[`header>img[data-id='${t}']`,e])))),{"header>span":"flex:1;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;margin-left:0.25rem",article:"padding:0.25rem 0.25rem 0.25rem 0.5rem;overflow:auto;flex:1",details:"margin-left:0.75rem;width:fit-content;","details img":"display:none","details[open]>summary img":"display:unset;background:none;margin-left:0.25rem","details[open]>summary img.edit":V,"details[open]>summary img.done":P,summary:"margin-left:-0.75rem;line-height:1.25rem;user-select:none;width:fit-content",table:"border-collapse:collapse;table-layout:fixed;margin-bottom:0.5rem","table input":"background:#111;color:unset;padding:0 0.25rem;border:0;font-size:unset;vertical-align:top;margin:0",'table input[type="number"]':"width:4rem","table tbody button":"font-size:0;background:#fff;border-radius:50%;margin:0 0.125rem 0 0;width:0.85rem;color:#111","table button:first-letter":"font-size:0.75rem",thead:"background:#222","th:nth-of-type(1)":"min-width:2rem;","th.sorted":"background:#000","table caption":"text-align:left;white-space:nowrap;line-height:1.25rem",button:"width:1.5rem;border:none;background:none;color:#fff;padding:0","button[disabled]":"color:#777","button.next":"margin-right:0.5rem","th,td":"overflow:hidden;text-overflow:ellipsis;padding:0.25rem 0.5rem;max-width:12rem;white-space:nowrap;border-width:1px 0;border-style:solid;border-color:#777;text-align:left","span.warn":"margin:0.25rem;color:#d81b60"}),((e,t)=>e?`& ${t}{${e}}`:"")));const A=(e,t,l,o)=>e==r?t:e==a?l:o;var L=Object.defineProperty,G=Object.defineProperties,J=Object.getOwnPropertyDescriptors,K=Object.getOwnPropertySymbols,Q=Object.prototype.hasOwnProperty,U=Object.prototype.propertyIsEnumerable,W=(e,t,l)=>t in e?L(e,t,{enumerable:!0,configurable:!0,writable:!0,value:l}):e[t]=l,X=(e,t)=>{for(var l in t||(t={}))Q.call(t,l)&&W(e,l,t[l]);if(K)for(var l of K(t))U.call(t,l)&&W(e,l,t[l]);return e},Y=(e,t)=>G(e,J(t)),Z=(e,t)=>{var l={};for(var r in e)Q.call(e,r)&&t.indexOf(r)<0&&(l[r]=e[r]);if(null!=e&&K)for(var r of K(e))t.indexOf(r)<0&&U.call(e,r)&&(l[r]=e[r]);return l};const{useCallback:_,useMemo:ee,useState:te}=e,le="editable",re=(e,l)=>v(t.useTableCellIds(e,l),(t=>e+"."+t)),oe=(e,t,l)=>{const r=_(e,t);return l?r:void 0},ae=(...e)=>ee((()=>e),e),ne=(e,t)=>ee((()=>({store:e,tableId:t})),[e,t]),se=(e,t)=>ee((()=>({queries:e,queryId:t})),[e,t]),ie=(e,t=!1,l,r=0,o,a,n,s)=>{const[[i,d,u],c]=te([e,t,r]),m=_((e=>{c(e),null==s||s(e)}),[s]),b=oe((e=>m([e,e==i&&!d,u])),[m,i,d,u],l),p=_((e=>m([i,d,e])),[m,i,d]),g=!0===n?ge:n;return[[i,d,u],b,ee((()=>!1===n?null:h(g,{offset:u,limit:o,total:a,onChange:p})),[n,g,u,o,a,p])]},de=(e,t,o)=>ee((()=>{const a=null!=t?t:e;return C(y(Array.isArray(a)?C(v(a,(e=>[e,e]))):a,((e,t)=>{return[t,X(X({},{label:t,component:o}),(a=e,l(a)==r?{label:e}:e))];var a})))}),[t,o,e]),ue=({className:e,headerRow:t,idColumn:l,params:[r,o,a,n,s,i]})=>h("table",{className:e},i?h("caption",null,i):null,!1===t?null:h("thead",null,h("tr",null,!1===l?null:h(ce,{sort:null!=n?n:[],label:"Id",onClick:s}),y(r,(({label:e},t)=>h(ce,{key:t,cellId:t,label:e,sort:null!=n?n:[],onClick:s}))))),h("tbody",null,v(a,(e=>h("tr",{key:e},!1===l?null:h("th",null,e),y(r,(({component:t,getComponentProps:l},r)=>h("td",{key:r},h(t,Y(X(X({},w(l,e,r)),o),{rowId:e,cellId:r})))))))))),ce=({cellId:e,sort:[t,l],label:r=(null!=e?e:""),onClick:o})=>h("th",{onClick:oe((()=>null==o?void 0:o(e)),[o,e],o),className:u(l)||t!=e?void 0:`sorted ${l?"de":"a"}scending`},u(l)||t!=e?null:(l?"↓":"↑")+" ",r),me=({localRowId:l,params:[r,o,a,n,s,i,d]})=>{const c=t.useRemoteRowId(s,l,i);return h("tr",null,!1===r?null:h(e.Fragment,null,h("th",null,l),h("th",null,c)),y(o,(({component:e,getComponentProps:t},r)=>{const[o,s]=r.split(".",2),i=o===a?l:o===n?c:null;return u(i)?null:h("td",{key:r},h(e,Y(X({},w(t,i,s)),{store:d,tableId:o,rowId:i,cellId:s})))})))},he=({thing:e,onThingChange:t,className:n,hasSchema:u})=>{const[c,m]=te(),[b,p]=te(),[g,f]=te(),[w,v]=te(),[I,C]=te();b!==e&&(m((e=>{const t=l(e);return(e=>e==r||e==o)(t)||t==a&&d(e)?t:void 0})(e)),p(e),f(e+""),v(Number(e)||0),C(!!e));const y=_(((e,l)=>{l(e),p(e),t(e)}),[t]);return h("div",{className:n},h("button",{className:c,onClick:_((()=>{if(!(null==u?void 0:u())){const e=A(c,a,o,r),l=A(e,g,w,I);m(e),p(l),t(l)}}),[u,t,g,w,I,c])},c),A(c,h("input",{key:c,value:g,onChange:_((e=>y(e[s][i]+"",f)),[y])}),h("input",{key:c,type:"number",value:w,onChange:_((e=>y(Number(e[s][i]||0),v)),[y])}),h("input",{key:c,type:"checkbox",checked:I,onChange:_((e=>y(!!e[s].checked,C)),[y])})))},be=({tableId:e,rowId:l,cellId:r,store:o,className:a})=>{var n;return h(he,{thing:t.useCell(e,l,r,o),onThingChange:t.useSetCellCallback(e,l,r,(e=>e),[],o),className:null!=a?a:le+"Cell",hasSchema:null==(n=t.useStoreOrStoreById(o))?void 0:n.hasTablesSchema})},pe=({valueId:e,store:l,className:r})=>{var o;return h(he,{thing:t.useValue(e,l),onThingChange:t.useSetValueCallback(e,(e=>e),[],l),className:null!=r?r:le+n,hasSchema:null==(o=t.useStoreOrStoreById(l))?void 0:o.hasValuesSchema})},ge=({onChange:t,total:l,offset:r=0,limit:o=l,singular:a="row",plural:n=a+"s"})=>{(r>l||r<0)&&(r=0,t(0));const s=oe((()=>t(r-o)),[t,r,o],r>0),i=oe((()=>t(r+o)),[t,r,o],r+o<l);return h(e.Fragment,null,l>o&&h(e.Fragment,null,h("button",{className:"previous",disabled:0==r,onClick:s},"←"),h("button",{className:"next",disabled:r+o>=l,onClick:i},"→"),r+1," to ",Math.min(l,r+o)," of "),l," ",1!=l?n:a)};(class extends c{constructor(e){super(e),this.componentDidCatch=(e,t)=>console.error(e,t.componentStack),this.state={e:0}}render(){return this.state.e?h("span",{className:"warn"},"Inspector error: please see console for details."):this.props.children}}).getDerivedStateFromError=()=>({e:1});const fe=e=>new Map(e);fe(),fe(),exports.EditableCellView=be,exports.EditableValueView=pe,exports.RelationshipInHtmlTable=({relationshipId:l,relationships:r,editable:o,customCells:a,className:n,headerRow:s,idColumn:i=!0})=>{const[d,u,c,m]=((e,t)=>[e,null==e?void 0:e.getStore(),null==e?void 0:e.getLocalTableId(t),null==e?void 0:e.getRemoteTableId(t)])(t.useRelationshipsOrRelationshipsById(r),l),b=de([...re(c,u),...re(m,u)],a,o?be:t.CellView),p=ae(i,b,c,m,l,d,u);return h("table",{className:n},!1===s?null:h("thead",null,h("tr",null,!1===i?null:h(e.Fragment,null,h("th",null,c,".Id"),h("th",null,m,".Id")),y(b,(({label:e},t)=>h("th",{key:t},e))))),h("tbody",null,v(t.useRowIds(c,u),(e=>h(me,{key:e,localRowId:e,params:p})))))},exports.ResultSortedTableInHtmlTable=e=>{var l=e,{queryId:r,cellId:o,descending:a,offset:n,limit:s,queries:i,sortOnClick:d,paginator:u=!1,customCells:c,onChange:m}=l,b=Z(l,["queryId","cellId","descending","offset","limit","queries","sortOnClick","paginator","customCells","onChange"]);const[p,g,f]=ie(o,a,d,n,s,t.useResultRowCount(r,i),u,m);return h(ue,Y(X({},b),{params:ae(de(t.useResultTableCellIds(r,i),c,t.ResultCellView),se(i,r),t.useResultSortedRowIds(r,...p,s,i),p,g,f)}))},exports.ResultTableInHtmlTable=e=>{var l=e,{queryId:r,queries:o,customCells:a}=l,n=Z(l,["queryId","queries","customCells"]);return h(ue,Y(X({},n),{params:ae(de(t.useResultTableCellIds(r,o),a,t.ResultCellView),se(o,r),t.useResultRowIds(r,o))}))},exports.SliceInHtmlTable=e=>{var l=e,{indexId:r,sliceId:o,indexes:a,editable:n,customCells:s}=l,i=Z(l,["indexId","sliceId","indexes","editable","customCells"]);const[d,u,c]=((e,t)=>[e,null==e?void 0:e.getStore(),null==e?void 0:e.getTableId(t)])(t.useIndexesOrIndexesById(a),r);return h(ue,Y(X({},i),{params:ae(de(t.useTableCellIds(c,u),s,n?be:t.CellView),ne(u,c),t.useSliceRowIds(r,o,d))}))},exports.SortedTableInHtmlTable=e=>{var l=e,{tableId:r,cellId:o,descending:a,offset:n,limit:s,store:i,editable:d,sortOnClick:u,paginator:c=!1,onChange:m,customCells:b}=l,p=Z(l,["tableId","cellId","descending","offset","limit","store","editable","sortOnClick","paginator","onChange","customCells"]);const[g,f,w]=ie(o,a,u,n,s,t.useRowCount(r,i),c,m);return h(ue,Y(X({},p),{params:ae(de(t.useTableCellIds(r,i),b,d?be:t.CellView),ne(i,r),t.useSortedRowIds(r,...g,s,i),g,f,w)}))},exports.SortedTablePaginator=ge,exports.StoreInspector=e=>null,exports.TableInHtmlTable=e=>{var l=e,{tableId:r,store:o,editable:a,customCells:n}=l,s=Z(l,["tableId","store","editable","customCells"]);return h(ue,Y(X({},s),{params:ae(de(t.useTableCellIds(r,o),n,a?be:t.CellView),ne(o,r),t.useRowIds(r,o))}))},exports.ValuesInHtmlTable=({store:e,editable:l=!1,valueComponent:r=(l?pe:t.ValueView),getValueComponentProps:o,className:a,headerRow:s,idColumn:i})=>h("table",{className:a},!1===s?null:h("thead",null,h("tr",null,!1===i?null:h("th",null,"Id"),h("th",null,n))),h("tbody",null,v(t.useValueIds(e),(t=>h("tr",{key:t},!1===i?null:h("th",null,t),h("td",null,h(r,Y(X({},w(o,t)),{valueId:t,store:e}))))))));
Binary file
@@ -1 +1 @@
1
- "use strict";var e=require("react");const s=e=>typeof e,t="",o=s(t),r="Result",l="Ids",u="Table",n=u+"s",d=u+l,i="Row",p=i+"Count",a=i+l,c="Sorted"+i+l,I="Cell",x=I+l,C="Value",b=C+"s",w=C+l,R=e=>null==e,k=(e,s,t)=>R(e)?null==t?void 0:t():s(e),v=e=>s(e)==o,g=()=>{},m=(e,s)=>e.map(s),y=Object.keys,{createContext:h,useContext:L}=e,V=h([]),S=(e,s)=>{var t;const o=L(V);return R(e)?o[s]:v(e)?((e,s)=>k(e,(e=>e[s])))(null!=(t=o[s+1])?t:{},e):e},f=(e,s)=>{const t=S(e,s);return R(e)||v(e)?t:e},T=e=>{var s;return y(null!=(s=L(V)[e])?s:{})},P=e=>f(e,0),O=e=>f(e,2),q=e=>f(e,4),B=e=>f(e,6),M=e=>f(e,8),j=e=>f(e,10),{useCallback:D,useEffect:Q,useMemo:E,useRef:F,useState:A}=e,G=(e,s,t=[])=>{const o=E((()=>s(e)),[e,...t]);return Q((()=>()=>o.destroy()),[o]),o},U=(e,s,t,o=[],r)=>{const[,l]=A(),u=D((()=>{var r,l;return null!=(l=null==(r=null==s?void 0:s["get"+e])?void 0:r.call(s,...o))?l:t}),[s,...o]),[n]=A(u),d=F(n);return E((()=>d.current=u()),[u]),z(e,s,((...e)=>{d.current=R(r)?u():e[r],l([])}),[],o),d.current},z=(e,s,t,o=[],r=[],...l)=>Q((()=>{var o;const u=null==(o=null==s?void 0:s["add"+e+"Listener"])?void 0:o.call(s,...r,t,...l);return()=>null==s?void 0:s.delListener(u)}),[s,...r,...o,...l]),H=(e,s,t,o=[],r=g,l=[],...u)=>{const n=P(e);return D((e=>k(n,(o=>k(t(e,o),(e=>r(o["set"+s](...u,e),e)))))),[n,s,...o,...l,...u])},J=(e,s,t=g,o=[],...r)=>{const l=P(e);return D((()=>t(null==l?void 0:l["del"+s](...r))),[l,s,...o,...r])},K=(e,s,t)=>{const o=j(e);return D((()=>null==o?void 0:o[s](t)),[o,s,t])},N=e=>U(d,P(e),[],[]),W=(e,s)=>U(a,P(s),[],[e]),X=(e,s,t,o=0,r,l)=>U(c,P(l),[],[e,s,t,o,r],6),Y=(e,s,t)=>U(x,P(t),[],[e,s]),Z=(e,s,t,o)=>U(I,P(o),void 0,[e,s,t],4),$=e=>U(w,P(e),[],[]),_=(e,s)=>U(C,P(s),void 0,[e]),ee=(e,s)=>U("Metric",O(s),void 0,[e]),se=(e,s)=>U("SliceIds",q(s),[],[e]),te=(e,s,t)=>U("Slice"+a,q(t),[],[e,s]),oe=(e,s,t)=>U("RemoteRowId",B(t),void 0,[e,s]),re=(e,s,t)=>U("Local"+a,B(t),[],[e,s]),le=(e,s,t)=>U("Linked"+a,B(t),[],[e,s]),ue=(e,s)=>U(r+a,M(s),[],[e]),ne=(e,s,t,o=0,l,u)=>U(r+c,M(u),[],[e,s,t,o,l],6),de=(e,s,t)=>U(r+x,M(t),[],[e,s]),ie=(e,s,t,o)=>U(r+I,M(o),void 0,[e,s,t]),pe=e=>U("CheckpointIds",j(e),[[],void 0,[]]),ae=(e,s)=>U("Checkpoint",j(s),void 0,[e]),ce=e=>K(e,"goBackward"),Ie=e=>K(e,"goForward"),{PureComponent:xe,Fragment:Ce,createElement:be,useCallback:we,useLayoutEffect:Re,useRef:ke,useState:ve}=e,ge=(e,...s)=>R(e)?{}:e(...s),me=(e,s)=>[e,null==e?void 0:e.getStore(),null==e?void 0:e.getLocalTableId(s),null==e?void 0:e.getRemoteTableId(s)];var ye=Object.defineProperty,he=Object.defineProperties,Le=Object.getOwnPropertyDescriptors,Ve=Object.getOwnPropertySymbols,Se=Object.prototype.hasOwnProperty,fe=Object.prototype.propertyIsEnumerable,Te=(e,s,t)=>s in e?ye(e,s,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[s]=t,Pe=(e,s)=>{for(var t in s||(s={}))Se.call(s,t)&&Te(e,t,s[t]);if(Ve)for(var t of Ve(s))fe.call(s,t)&&Te(e,t,s[t]);return e},Oe=(e,s)=>he(e,Le(s)),qe=(e,s)=>{var t={};for(var o in e)Se.call(e,o)&&s.indexOf(o)<0&&(t[o]=e[o]);if(null!=e&&Ve)for(var o of Ve(e))s.indexOf(o)<0&&fe.call(e,o)&&(t[o]=e[o]);return t};const{useMemo:Be}=e,Me=({tableId:e,store:s,rowComponent:t=Ae,getRowComponentProps:o,customCellIds:r,separator:l,debugIds:u},n)=>Ee(m(n,(l=>be(t,Oe(Pe({},ge(o,l)),{key:l,tableId:e,rowId:l,customCellIds:r,store:s,debugIds:u})))),l,u,e),je=({queryId:e,queries:s,resultRowComponent:t=Je,getResultRowComponentProps:o,separator:r,debugIds:l},u)=>Ee(m(u,(r=>be(t,Oe(Pe({},ge(o,r)),{key:r,queryId:e,rowId:r,queries:s,debugIds:l})))),r,l,e),De=({relationshipId:e,relationships:s,rowComponent:t=Ae,getRowComponentProps:o,separator:r,debugIds:l},u,n)=>{const[d,i,p]=me(B(s),e),a=u(e,n,d);return Ee(m(a,(e=>be(t,Oe(Pe({},ge(o,e)),{key:e,tableId:p,rowId:e,store:i,debugIds:l})))),r,l,n)},Qe=e=>({checkpoints:s,checkpointComponent:t=Ke,getCheckpointComponentProps:o,separator:r,debugIds:l})=>{const u=j(s);return Ee(m(e(pe(u)),(e=>be(t,Oe(Pe({},ge(o,e)),{key:e,checkpoints:u,checkpointId:e,debugIds:l})))),r)},Ee=(e,s,t,o)=>{const r=R(s)||!Array.isArray(e)?e:m(e,((e,t)=>t>0?[s,e]:e));return t?[o,":{",r,"}"]:r},Fe=({tableId:e,rowId:s,cellId:o,store:r,debugIds:l})=>{var u;return Ee(t+(null!=(u=Z(e,s,o,r))?u:t),void 0,l,o)},Ae=({tableId:e,rowId:s,store:t,cellComponent:o=Fe,getCellComponentProps:r,customCellIds:l,separator:u,debugIds:n})=>Ee(m(((e,s,t,o)=>{const r=Y(s,t,o);return null!=e?e:r})(l,e,s,t),(l=>be(o,Oe(Pe({},ge(r,l)),{key:l,tableId:e,rowId:s,cellId:l,store:t,debugIds:n})))),u,n,s),Ge=e=>Me(e,W(e.tableId,e.store)),Ue=({valueId:e,store:s,debugIds:o})=>{var r;return Ee(t+(null!=(r=_(e,s))?r:t),void 0,o,e)},ze=({indexId:e,sliceId:s,indexes:t,rowComponent:o=Ae,getRowComponentProps:r,separator:l,debugIds:u})=>{const[n,d,i]=((e,s)=>[e,null==e?void 0:e.getStore(),null==e?void 0:e.getTableId(s)])(q(t),e),p=te(e,s,n);return Ee(m(p,(e=>be(o,Oe(Pe({},ge(r,e)),{key:e,tableId:i,rowId:e,store:d,debugIds:u})))),l,u,s)},He=({queryId:e,rowId:s,cellId:o,queries:r,debugIds:l})=>{var u;return Ee(t+(null!=(u=ie(e,s,o,r))?u:t),void 0,l,o)},Je=({queryId:e,rowId:s,queries:t,resultCellComponent:o=He,getResultCellComponentProps:r,separator:l,debugIds:u})=>Ee(m(de(e,s,t),(l=>be(o,Oe(Pe({},ge(r,l)),{key:l,queryId:e,rowId:s,cellId:l,queries:t,debugIds:u})))),l,u,s),Ke=({checkpoints:e,checkpointId:s,debugIds:o})=>{var r;return Ee(null!=(r=ae(s,e))?r:t,void 0,o,s)},Ne=Qe((e=>e[0])),We=Qe((e=>R(e[1])?[]:[e[1]])),Xe=Qe((e=>e[2]));exports.BackwardCheckpointsView=Ne,exports.CellView=Fe,exports.CheckpointView=Ke,exports.CurrentCheckpointView=We,exports.ForwardCheckpointsView=Xe,exports.IndexView=({indexId:e,indexes:s,sliceComponent:t=ze,getSliceComponentProps:o,separator:r,debugIds:l})=>Ee(m(se(e,s),(r=>be(t,Oe(Pe({},ge(o,r)),{key:r,indexId:e,sliceId:r,indexes:s,debugIds:l})))),r,l,e),exports.LinkedRowsView=e=>De(e,le,e.firstRowId),exports.LocalRowsView=e=>De(e,re,e.remoteRowId),exports.MetricView=({metricId:e,metrics:s,debugIds:o})=>{var r;return Ee(null!=(r=ee(e,s))?r:t,void 0,o,e)},exports.Provider=({store:s,storesById:t,metrics:o,metricsById:r,indexes:l,indexesById:u,relationships:n,relationshipsById:d,queries:i,queriesById:p,checkpoints:a,checkpointsById:c,children:I})=>{const x=e.useContext(V);return be(V.Provider,{value:Be((()=>[null!=s?s:x[0],Pe(Pe({},x[1]),t),null!=o?o:x[2],Pe(Pe({},x[3]),r),null!=l?l:x[4],Pe(Pe({},x[5]),u),null!=n?n:x[6],Pe(Pe({},x[7]),d),null!=i?i:x[8],Pe(Pe({},x[9]),p),null!=a?a:x[10],Pe(Pe({},x[11]),c)]),[s,t,o,r,l,u,n,d,i,p,a,c,x])},I)},exports.RemoteRowView=({relationshipId:e,localRowId:s,relationships:t,rowComponent:o=Ae,getRowComponentProps:r,debugIds:l})=>{const[u,n,,d]=me(B(t),e),i=oe(e,s,u);return Ee(R(d)||R(i)?null:be(o,Oe(Pe({},ge(r,i)),{key:i,tableId:d,rowId:i,store:n,debugIds:l})),void 0,l,s)},exports.ResultCellView=He,exports.ResultRowView=Je,exports.ResultSortedTableView=e=>{var s=e,{cellId:t,descending:o,offset:r,limit:l}=s,u=qe(s,["cellId","descending","offset","limit"]);return je(u,ne(u.queryId,t,o,r,l,u.queries))},exports.ResultTableView=e=>je(e,ue(e.queryId,e.queries)),exports.RowView=Ae,exports.SliceView=ze,exports.SortedTableView=e=>{var s=e,{cellId:t,descending:o,offset:r,limit:l}=s,u=qe(s,["cellId","descending","offset","limit"]);return Me(u,X(u.tableId,t,o,r,l,u.store))},exports.TableView=Ge,exports.TablesView=({store:e,tableComponent:s=Ge,getTableComponentProps:t,separator:o,debugIds:r})=>Ee(m(N(e),(o=>be(s,Oe(Pe({},ge(t,o)),{key:o,tableId:o,store:e,debugIds:r})))),o),exports.ValueView=Ue,exports.ValuesView=({store:e,valueComponent:s=Ue,getValueComponentProps:t,separator:o,debugIds:r})=>Ee(m($(e),(o=>be(s,Oe(Pe({},ge(t,o)),{key:o,valueId:o,store:e,debugIds:r})))),o),exports.useAddRowCallback=(e,s,t=[],o,r=g,l=[],u=!0)=>{const n=P(o);return D((t=>k(n,(o=>k(s(t,o),(s=>r(o.addRow(e,s,u),o,s)))))),[n,e,...t,...l,u])},exports.useCell=Z,exports.useCellIds=Y,exports.useCellIdsListener=(e,s,t,o,r,l)=>z(x,P(l),t,o,[e,s],r),exports.useCellListener=(e,s,t,o,r,l,u)=>z(I,P(u),o,r,[e,s,t],l),exports.useCheckpoint=ae,exports.useCheckpointIds=pe,exports.useCheckpointIdsListener=(e,s,t)=>z("CheckpointIds",j(t),e,s),exports.useCheckpointListener=(e,s,t,o)=>z("Checkpoint",j(o),s,t,[e]),exports.useCheckpoints=e=>S(e,10),exports.useCheckpointsIds=()=>T(11),exports.useCheckpointsOrCheckpointsById=j,exports.useCreateCheckpoints=(e,s,t)=>G(e,s,t),exports.useCreateIndexes=(e,s,t)=>G(e,s,t),exports.useCreateMetrics=(e,s,t)=>G(e,s,t),exports.useCreatePersister=(e,s,t=[],o,r=[])=>{const[,l]=A(),u=E((()=>s(e)),[e,...t]);return Q((()=>{var e;return e=function*(){yield null==o?void 0:o(u),l(1)},new Promise(((s,t)=>{var o=s=>{try{l(e.next(s))}catch(e){t(e)}},r=s=>{try{l(e.throw(s))}catch(e){t(e)}},l=e=>e.done?s(e.value):Promise.resolve(e.value).then(o,r);l((e=e.apply(void 0,null)).next())})),()=>{u.destroy()}}),[u,...r]),u},exports.useCreateQueries=(e,s,t)=>G(e,s,t),exports.useCreateRelationships=(e,s,t)=>G(e,s,t),exports.useCreateStore=(e,s=[])=>E(e,s),exports.useDelCellCallback=(e,s,t,o,r,l,u)=>J(r,I,l,u,e,s,t,o),exports.useDelRowCallback=(e,s,t,o,r)=>J(t,i,o,r,e,s),exports.useDelTableCallback=(e,s,t,o)=>J(s,u,t,o,e),exports.useDelTablesCallback=(e,s,t)=>J(e,n,s,t),exports.useDelValueCallback=(e,s,t,o)=>J(s,C,t,o,e),exports.useDelValuesCallback=(e,s,t)=>J(e,b,s,t),exports.useGoBackwardCallback=ce,exports.useGoForwardCallback=Ie,exports.useGoToCallback=(e,s=[],t,o=g,r=[])=>{const l=j(t);return D((s=>k(l,(t=>k(e(s),(e=>o(t.goTo(e),e)))))),[l,...s,...r])},exports.useIndexIds=e=>U("IndexIds",q(e),[]),exports.useIndexes=e=>S(e,4),exports.useIndexesIds=()=>T(5),exports.useIndexesOrIndexesById=q,exports.useLinkedRowIds=le,exports.useLinkedRowIdsListener=(e,s,t,o,r)=>z("Linked"+a,B(r),t,o,[e,s]),exports.useLocalRowIds=re,exports.useLocalRowIdsListener=(e,s,t,o,r)=>z("Local"+a,B(r),t,o,[e,s]),exports.useMetric=ee,exports.useMetricIds=e=>U("MetricIds",O(e),[]),exports.useMetricListener=(e,s,t,o)=>z("Metric",O(o),s,t,[e]),exports.useMetrics=e=>S(e,2),exports.useMetricsIds=()=>T(3),exports.useMetricsOrMetricsById=O,exports.useQueries=e=>S(e,8),exports.useQueriesIds=()=>T(9),exports.useQueriesOrQueriesById=M,exports.useQueryIds=e=>U("QueryIds",M(e),[]),exports.useRedoInformation=e=>{var s;const o=j(e),[,,[r]]=pe(o);return[!R(r),Ie(o),r,null!=(s=k(r,(e=>null==o?void 0:o.getCheckpoint(e))))?s:t]},exports.useRelationshipIds=e=>U("RelationshipIds",B(e),[]),exports.useRelationships=e=>S(e,6),exports.useRelationshipsIds=()=>T(7),exports.useRelationshipsOrRelationshipsById=B,exports.useRemoteRowId=oe,exports.useRemoteRowIdListener=(e,s,t,o,r)=>z("RemoteRowId",B(r),t,o,[e,s]),exports.useResultCell=ie,exports.useResultCellIds=de,exports.useResultCellIdsListener=(e,s,t,o,l)=>z(r+x,M(l),t,o,[e,s]),exports.useResultCellListener=(e,s,t,o,l,u)=>z(r+I,M(u),o,l,[e,s,t]),exports.useResultRow=(e,s,t)=>U(r+i,M(t),{},[e,s]),exports.useResultRowCount=(e,s)=>U(r+p,M(s),[],[e]),exports.useResultRowCountListener=(e,s,t,o)=>z(r+p,M(o),s,t,[e]),exports.useResultRowIds=ue,exports.useResultRowIdsListener=(e,s,t,o)=>z(r+a,M(o),s,t,[e]),exports.useResultRowListener=(e,s,t,o,l)=>z(r+i,M(l),t,o,[e,s]),exports.useResultSortedRowIds=ne,exports.useResultSortedRowIdsListener=(e,s,t,o,l,u,n,d)=>z(r+c,M(d),u,n,[e,s,t,o,l]),exports.useResultTable=(e,s)=>U(r+u,M(s),{},[e]),exports.useResultTableCellIds=(e,s)=>U(r+u+x,M(s),[],[e]),exports.useResultTableCellIdsListener=(e,s,t,o)=>z(r+u+x,M(o),s,t,[e]),exports.useResultTableListener=(e,s,t,o)=>z(r+u,M(o),s,t,[e]),exports.useRow=(e,s,t)=>U(i,P(t),{},[e,s]),exports.useRowCount=(e,s)=>U(p,P(s),[],[e]),exports.useRowCountListener=(e,s,t,o,r)=>z(p,P(r),s,t,[e],o),exports.useRowIds=W,exports.useRowIdsListener=(e,s,t,o,r)=>z(a,P(r),s,t,[e],o),exports.useRowListener=(e,s,t,o,r,l)=>z(i,P(l),t,o,[e,s],r),exports.useSetCellCallback=(e,s,t,o,r,l,u,n)=>H(l,I,o,r,u,n,e,s,t),exports.useSetCheckpointCallback=(e=g,s=[],t,o=g,r=[])=>{const l=j(t);return D((s=>k(l,(t=>{const r=e(s);o(t.addCheckpoint(r),t,r)}))),[l,...s,...r])},exports.useSetPartialRowCallback=(e,s,t,o,r,l,u)=>H(r,"PartialRow",t,o,l,u,e,s),exports.useSetPartialValuesCallback=(e,s,t,o,r)=>H(t,"PartialValues",e,s,o,r),exports.useSetRowCallback=(e,s,t,o,r,l,u)=>H(r,i,t,o,l,u,e,s),exports.useSetTableCallback=(e,s,t,o,r,l)=>H(o,u,s,t,r,l,e),exports.useSetTablesCallback=(e,s,t,o,r)=>H(t,n,e,s,o,r),exports.useSetValueCallback=(e,s,t,o,r,l)=>H(o,C,s,t,r,l,e),exports.useSetValuesCallback=(e,s,t,o,r)=>H(t,b,e,s,o,r),exports.useSliceIds=se,exports.useSliceIdsListener=(e,s,t,o)=>z("SliceIds",q(o),s,t,[e]),exports.useSliceRowIds=te,exports.useSliceRowIdsListener=(e,s,t,o,r)=>z("Slice"+a,q(r),t,o,[e,s]),exports.useSortedRowIds=X,exports.useSortedRowIdsListener=(e,s,t,o,r,l,u,n,d)=>z(c,P(d),l,u,[e,s,t,o,r],n),exports.useStore=e=>S(e,0),exports.useStoreIds=()=>T(1),exports.useStoreOrStoreById=P,exports.useTable=(e,s)=>U(u,P(s),{},[e]),exports.useTableCellIds=(e,s)=>U(u+x,P(s),[],[e]),exports.useTableCellIdsListener=(e,s,t,o,r)=>z(u+x,P(r),s,t,[e],o),exports.useTableIds=N,exports.useTableIdsListener=(e,s,t,o)=>z(d,P(o),e,s,[],t),exports.useTableListener=(e,s,t,o,r)=>z(u,P(r),s,t,[e],o),exports.useTables=e=>U(n,P(e),{}),exports.useTablesListener=(e,s,t,o)=>z(n,P(o),e,s,[],t),exports.useUndoInformation=e=>{var s;const o=j(e),[r,l]=pe(o);return[(u=r,!(0==(e=>e.length)(u))),ce(o),l,null!=(s=k(l,(e=>null==o?void 0:o.getCheckpoint(e))))?s:t];var u},exports.useValue=_,exports.useValueIds=$,exports.useValueIdsListener=(e,s,t,o)=>z(w,P(o),e,s,[],t),exports.useValueListener=(e,s,t,o,r)=>z(C,P(r),s,t,[e],o),exports.useValues=e=>U(b,P(e),{}),exports.useValuesListener=(e,s,t,o)=>z(b,P(o),e,s,[],t);
1
+ "use strict";var e=require("react");const s=e=>typeof e,t="",o=s(t),r="Listener",l="Result",u="Ids",n="Table",d=n+"s",i=n+u,p="Row",a=p+"Count",c=p+u,I="Sorted"+p+u,x="Cell",C=x+u,b="Value",w=b+"s",R=b+u,k=e=>null==e,v=(e,s,t)=>k(e)?null==t?void 0:t():s(e),g=e=>s(e)==o,h=()=>{},m=(e,s)=>e.map(s),y=Object.keys,{createContext:L,useContext:S}=e,V=L([]),f=(e,s)=>{var t;const o=S(V);return k(e)?o[s]:g(e)?((e,s)=>v(e,(e=>e[s])))(null!=(t=o[s+1])?t:{},e):e},T=(e,s)=>{const t=f(e,s);return k(e)||g(e)?t:e},P=e=>{var s;return y(null!=(s=S(V)[e])?s:{})},O=e=>T(e,0),q=e=>T(e,2),B=e=>T(e,4),M=e=>T(e,6),D=e=>T(e,8),F=e=>T(e,10),j=e=>e.toLowerCase();j(r);const Q="Transaction";j(Q);const{useCallback:E,useEffect:A,useMemo:G,useRef:W,useState:U}=e,z=(e,s,t=[])=>{const o=G((()=>s(e)),[e,...t]);return A((()=>()=>o.destroy()),[o]),o},H=(e,s,t,o=[],r)=>{const[,l]=U(),u=E((()=>{var r,l;return null!=(l=null==(r=null==s?void 0:s["get"+e])?void 0:r.call(s,...o))?l:t}),[s,...o]),[n]=U(u),d=W(n);return G((()=>d.current=u()),[u]),J(e,s,((...e)=>{d.current=k(r)?u():e[r],l([])}),[],o),d.current},J=(e,s,t,o=[],l=[],...u)=>A((()=>{var o;const n=null==(o=null==s?void 0:s["add"+e+r])?void 0:o.call(s,...l,t,...u);return()=>null==s?void 0:s.delListener(n)}),[s,...l,...o,...u]),K=(e,s,t,o=[],r=h,l=[],...u)=>{const n=O(e);return E((e=>v(n,(o=>v(t(e,o),(e=>r(o["set"+s](...u,e),e)))))),[n,s,...o,...l,...u])},N=(e,s,t=h,o=[],...r)=>{const l=O(e);return E((()=>t(null==l?void 0:l["del"+s](...r))),[l,s,...o,...r])},X=(e,s,t)=>{const o=F(e);return E((()=>null==o?void 0:o[s](t)),[o,s,t])},Y=e=>H(i,O(e),[],[]),Z=(e,s)=>H(c,O(s),[],[e]),$=(e,s,t,o=0,r,l)=>H(I,O(l),[],[e,s,t,o,r],6),_=(e,s,t)=>H(C,O(t),[],[e,s]),ee=(e,s,t,o)=>H(x,O(o),void 0,[e,s,t],4),se=e=>H(R,O(e),[],[]),te=(e,s)=>H(b,O(s),void 0,[e]),oe=(e,s)=>H("Metric",q(s),void 0,[e]),re=(e,s)=>H("SliceIds",B(s),[],[e]),le=(e,s,t)=>H("Slice"+c,B(t),[],[e,s]),ue=(e,s,t)=>H("RemoteRowId",M(t),void 0,[e,s]),ne=(e,s,t)=>H("Local"+c,M(t),[],[e,s]),de=(e,s,t)=>H("Linked"+c,M(t),[],[e,s]),ie=(e,s)=>H(l+c,D(s),[],[e]),pe=(e,s,t,o=0,r,u)=>H(l+I,D(u),[],[e,s,t,o,r],6),ae=(e,s,t)=>H(l+C,D(t),[],[e,s]),ce=(e,s,t,o)=>H(l+x,D(o),void 0,[e,s,t]),Ie=e=>H("CheckpointIds",F(e),[[],void 0,[]]),xe=(e,s)=>H("Checkpoint",F(s),void 0,[e]),Ce=e=>X(e,"goBackward"),be=e=>X(e,"goForward"),{PureComponent:we,Fragment:Re,createElement:ke,useCallback:ve,useLayoutEffect:ge,useRef:he,useState:me}=e,ye=(e,...s)=>k(e)?{}:e(...s),Le=(e,s)=>[e,null==e?void 0:e.getStore(),null==e?void 0:e.getLocalTableId(s),null==e?void 0:e.getRemoteTableId(s)];var Se=Object.defineProperty,Ve=Object.defineProperties,fe=Object.getOwnPropertyDescriptors,Te=Object.getOwnPropertySymbols,Pe=Object.prototype.hasOwnProperty,Oe=Object.prototype.propertyIsEnumerable,qe=(e,s,t)=>s in e?Se(e,s,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[s]=t,Be=(e,s)=>{for(var t in s||(s={}))Pe.call(s,t)&&qe(e,t,s[t]);if(Te)for(var t of Te(s))Oe.call(s,t)&&qe(e,t,s[t]);return e},Me=(e,s)=>Ve(e,fe(s)),De=(e,s)=>{var t={};for(var o in e)Pe.call(e,o)&&s.indexOf(o)<0&&(t[o]=e[o]);if(null!=e&&Te)for(var o of Te(e))s.indexOf(o)<0&&Oe.call(e,o)&&(t[o]=e[o]);return t};const{useMemo:Fe}=e,je=({tableId:e,store:s,rowComponent:t=Ue,getRowComponentProps:o,customCellIds:r,separator:l,debugIds:u},n)=>Ge(m(n,(l=>ke(t,Me(Be({},ye(o,l)),{key:l,tableId:e,rowId:l,customCellIds:r,store:s,debugIds:u})))),l,u,e),Qe=({queryId:e,queries:s,resultRowComponent:t=Ne,getResultRowComponentProps:o,separator:r,debugIds:l},u)=>Ge(m(u,(r=>ke(t,Me(Be({},ye(o,r)),{key:r,queryId:e,rowId:r,queries:s,debugIds:l})))),r,l,e),Ee=({relationshipId:e,relationships:s,rowComponent:t=Ue,getRowComponentProps:o,separator:r,debugIds:l},u,n)=>{const[d,i,p]=Le(M(s),e),a=u(e,n,d);return Ge(m(a,(e=>ke(t,Me(Be({},ye(o,e)),{key:e,tableId:p,rowId:e,store:i,debugIds:l})))),r,l,n)},Ae=e=>({checkpoints:s,checkpointComponent:t=Xe,getCheckpointComponentProps:o,separator:r,debugIds:l})=>{const u=F(s);return Ge(m(e(Ie(u)),(e=>ke(t,Me(Be({},ye(o,e)),{key:e,checkpoints:u,checkpointId:e,debugIds:l})))),r)},Ge=(e,s,t,o)=>{const r=k(s)||!Array.isArray(e)?e:m(e,((e,t)=>t>0?[s,e]:e));return t?[o,":{",r,"}"]:r},We=({tableId:e,rowId:s,cellId:o,store:r,debugIds:l})=>{var u;return Ge(t+(null!=(u=ee(e,s,o,r))?u:t),void 0,l,o)},Ue=({tableId:e,rowId:s,store:t,cellComponent:o=We,getCellComponentProps:r,customCellIds:l,separator:u,debugIds:n})=>Ge(m(((e,s,t,o)=>{const r=_(s,t,o);return null!=e?e:r})(l,e,s,t),(l=>ke(o,Me(Be({},ye(r,l)),{key:l,tableId:e,rowId:s,cellId:l,store:t,debugIds:n})))),u,n,s),ze=e=>je(e,Z(e.tableId,e.store)),He=({valueId:e,store:s,debugIds:o})=>{var r;return Ge(t+(null!=(r=te(e,s))?r:t),void 0,o,e)},Je=({indexId:e,sliceId:s,indexes:t,rowComponent:o=Ue,getRowComponentProps:r,separator:l,debugIds:u})=>{const[n,d,i]=((e,s)=>[e,null==e?void 0:e.getStore(),null==e?void 0:e.getTableId(s)])(B(t),e),p=le(e,s,n);return Ge(m(p,(e=>ke(o,Me(Be({},ye(r,e)),{key:e,tableId:i,rowId:e,store:d,debugIds:u})))),l,u,s)},Ke=({queryId:e,rowId:s,cellId:o,queries:r,debugIds:l})=>{var u;return Ge(t+(null!=(u=ce(e,s,o,r))?u:t),void 0,l,o)},Ne=({queryId:e,rowId:s,queries:t,resultCellComponent:o=Ke,getResultCellComponentProps:r,separator:l,debugIds:u})=>Ge(m(ae(e,s,t),(l=>ke(o,Me(Be({},ye(r,l)),{key:l,queryId:e,rowId:s,cellId:l,queries:t,debugIds:u})))),l,u,s),Xe=({checkpoints:e,checkpointId:s,debugIds:o})=>{var r;return Ge(null!=(r=xe(s,e))?r:t,void 0,o,s)},Ye=Ae((e=>e[0])),Ze=Ae((e=>k(e[1])?[]:[e[1]])),$e=Ae((e=>e[2]));exports.BackwardCheckpointsView=Ye,exports.CellView=We,exports.CheckpointView=Xe,exports.CurrentCheckpointView=Ze,exports.ForwardCheckpointsView=$e,exports.IndexView=({indexId:e,indexes:s,sliceComponent:t=Je,getSliceComponentProps:o,separator:r,debugIds:l})=>Ge(m(re(e,s),(r=>ke(t,Me(Be({},ye(o,r)),{key:r,indexId:e,sliceId:r,indexes:s,debugIds:l})))),r,l,e),exports.LinkedRowsView=e=>Ee(e,de,e.firstRowId),exports.LocalRowsView=e=>Ee(e,ne,e.remoteRowId),exports.MetricView=({metricId:e,metrics:s,debugIds:o})=>{var r;return Ge(null!=(r=oe(e,s))?r:t,void 0,o,e)},exports.Provider=({store:s,storesById:t,metrics:o,metricsById:r,indexes:l,indexesById:u,relationships:n,relationshipsById:d,queries:i,queriesById:p,checkpoints:a,checkpointsById:c,children:I})=>{const x=e.useContext(V);return ke(V.Provider,{value:Fe((()=>[null!=s?s:x[0],Be(Be({},x[1]),t),null!=o?o:x[2],Be(Be({},x[3]),r),null!=l?l:x[4],Be(Be({},x[5]),u),null!=n?n:x[6],Be(Be({},x[7]),d),null!=i?i:x[8],Be(Be({},x[9]),p),null!=a?a:x[10],Be(Be({},x[11]),c)]),[s,t,o,r,l,u,n,d,i,p,a,c,x])},I)},exports.RemoteRowView=({relationshipId:e,localRowId:s,relationships:t,rowComponent:o=Ue,getRowComponentProps:r,debugIds:l})=>{const[u,n,,d]=Le(M(t),e),i=ue(e,s,u);return Ge(k(d)||k(i)?null:ke(o,Me(Be({},ye(r,i)),{key:i,tableId:d,rowId:i,store:n,debugIds:l})),void 0,l,s)},exports.ResultCellView=Ke,exports.ResultRowView=Ne,exports.ResultSortedTableView=e=>{var s=e,{cellId:t,descending:o,offset:r,limit:l}=s,u=De(s,["cellId","descending","offset","limit"]);return Qe(u,pe(u.queryId,t,o,r,l,u.queries))},exports.ResultTableView=e=>Qe(e,ie(e.queryId,e.queries)),exports.RowView=Ue,exports.SliceView=Je,exports.SortedTableView=e=>{var s=e,{cellId:t,descending:o,offset:r,limit:l}=s,u=De(s,["cellId","descending","offset","limit"]);return je(u,$(u.tableId,t,o,r,l,u.store))},exports.TableView=ze,exports.TablesView=({store:e,tableComponent:s=ze,getTableComponentProps:t,separator:o,debugIds:r})=>Ge(m(Y(e),(o=>ke(s,Me(Be({},ye(t,o)),{key:o,tableId:o,store:e,debugIds:r})))),o),exports.ValueView=He,exports.ValuesView=({store:e,valueComponent:s=He,getValueComponentProps:t,separator:o,debugIds:r})=>Ge(m(se(e),(o=>ke(s,Me(Be({},ye(t,o)),{key:o,valueId:o,store:e,debugIds:r})))),o),exports.useAddRowCallback=(e,s,t=[],o,r=h,l=[],u=!0)=>{const n=O(o);return E((t=>v(n,(o=>v(s(t,o),(s=>r(o.addRow(e,s,u),o,s)))))),[n,e,...t,...l,u])},exports.useCell=ee,exports.useCellIds=_,exports.useCellIdsListener=(e,s,t,o,r,l)=>J(C,O(l),t,o,[e,s],r),exports.useCellListener=(e,s,t,o,r,l,u)=>J(x,O(u),o,r,[e,s,t],l),exports.useCheckpoint=xe,exports.useCheckpointIds=Ie,exports.useCheckpointIdsListener=(e,s,t)=>J("CheckpointIds",F(t),e,s),exports.useCheckpointListener=(e,s,t,o)=>J("Checkpoint",F(o),s,t,[e]),exports.useCheckpoints=e=>f(e,10),exports.useCheckpointsIds=()=>P(11),exports.useCheckpointsOrCheckpointsById=F,exports.useCreateCheckpoints=(e,s,t)=>z(e,s,t),exports.useCreateIndexes=(e,s,t)=>z(e,s,t),exports.useCreateMetrics=(e,s,t)=>z(e,s,t),exports.useCreatePersister=(e,s,t=[],o,r=[])=>{const[,l]=U(),u=G((()=>s(e)),[e,...t]);return A((()=>{var e;return e=function*(){yield null==o?void 0:o(u),l(1)},new Promise(((s,t)=>{var o=s=>{try{l(e.next(s))}catch(e){t(e)}},r=s=>{try{l(e.throw(s))}catch(e){t(e)}},l=e=>e.done?s(e.value):Promise.resolve(e.value).then(o,r);l((e=e.apply(void 0,null)).next())})),()=>{null==u||u.destroy()}}),[u,...r]),u},exports.useCreateQueries=(e,s,t)=>z(e,s,t),exports.useCreateRelationships=(e,s,t)=>z(e,s,t),exports.useCreateStore=(e,s=[])=>G(e,s),exports.useDelCellCallback=(e,s,t,o,r,l,u)=>N(r,x,l,u,e,s,t,o),exports.useDelRowCallback=(e,s,t,o,r)=>N(t,p,o,r,e,s),exports.useDelTableCallback=(e,s,t,o)=>N(s,n,t,o,e),exports.useDelTablesCallback=(e,s,t)=>N(e,d,s,t),exports.useDelValueCallback=(e,s,t,o)=>N(s,b,t,o,e),exports.useDelValuesCallback=(e,s,t)=>N(e,w,s,t),exports.useDidFinishTransactionListener=(e,s,t)=>J("DidFinish"+Q,O(t),e,s),exports.useGoBackwardCallback=Ce,exports.useGoForwardCallback=be,exports.useGoToCallback=(e,s=[],t,o=h,r=[])=>{const l=F(t);return E((s=>v(l,(t=>v(e(s),(e=>o(t.goTo(e),e)))))),[l,...s,...r])},exports.useIndexIds=e=>H("IndexIds",B(e),[]),exports.useIndexes=e=>f(e,4),exports.useIndexesIds=()=>P(5),exports.useIndexesOrIndexesById=B,exports.useLinkedRowIds=de,exports.useLinkedRowIdsListener=(e,s,t,o,r)=>J("Linked"+c,M(r),t,o,[e,s]),exports.useLocalRowIds=ne,exports.useLocalRowIdsListener=(e,s,t,o,r)=>J("Local"+c,M(r),t,o,[e,s]),exports.useMetric=oe,exports.useMetricIds=e=>H("MetricIds",q(e),[]),exports.useMetricListener=(e,s,t,o)=>J("Metric",q(o),s,t,[e]),exports.useMetrics=e=>f(e,2),exports.useMetricsIds=()=>P(3),exports.useMetricsOrMetricsById=q,exports.useQueries=e=>f(e,8),exports.useQueriesIds=()=>P(9),exports.useQueriesOrQueriesById=D,exports.useQueryIds=e=>H("QueryIds",D(e),[]),exports.useRedoInformation=e=>{var s;const o=F(e),[,,[r]]=Ie(o);return[!k(r),be(o),r,null!=(s=v(r,(e=>null==o?void 0:o.getCheckpoint(e))))?s:t]},exports.useRelationshipIds=e=>H("RelationshipIds",M(e),[]),exports.useRelationships=e=>f(e,6),exports.useRelationshipsIds=()=>P(7),exports.useRelationshipsOrRelationshipsById=M,exports.useRemoteRowId=ue,exports.useRemoteRowIdListener=(e,s,t,o,r)=>J("RemoteRowId",M(r),t,o,[e,s]),exports.useResultCell=ce,exports.useResultCellIds=ae,exports.useResultCellIdsListener=(e,s,t,o,r)=>J(l+C,D(r),t,o,[e,s]),exports.useResultCellListener=(e,s,t,o,r,u)=>J(l+x,D(u),o,r,[e,s,t]),exports.useResultRow=(e,s,t)=>H(l+p,D(t),{},[e,s]),exports.useResultRowCount=(e,s)=>H(l+a,D(s),[],[e]),exports.useResultRowCountListener=(e,s,t,o)=>J(l+a,D(o),s,t,[e]),exports.useResultRowIds=ie,exports.useResultRowIdsListener=(e,s,t,o)=>J(l+c,D(o),s,t,[e]),exports.useResultRowListener=(e,s,t,o,r)=>J(l+p,D(r),t,o,[e,s]),exports.useResultSortedRowIds=pe,exports.useResultSortedRowIdsListener=(e,s,t,o,r,u,n,d)=>J(l+I,D(d),u,n,[e,s,t,o,r]),exports.useResultTable=(e,s)=>H(l+n,D(s),{},[e]),exports.useResultTableCellIds=(e,s)=>H(l+n+C,D(s),[],[e]),exports.useResultTableCellIdsListener=(e,s,t,o)=>J(l+n+C,D(o),s,t,[e]),exports.useResultTableListener=(e,s,t,o)=>J(l+n,D(o),s,t,[e]),exports.useRow=(e,s,t)=>H(p,O(t),{},[e,s]),exports.useRowCount=(e,s)=>H(a,O(s),[],[e]),exports.useRowCountListener=(e,s,t,o,r)=>J(a,O(r),s,t,[e],o),exports.useRowIds=Z,exports.useRowIdsListener=(e,s,t,o,r)=>J(c,O(r),s,t,[e],o),exports.useRowListener=(e,s,t,o,r,l)=>J(p,O(l),t,o,[e,s],r),exports.useSetCellCallback=(e,s,t,o,r,l,u,n)=>K(l,x,o,r,u,n,e,s,t),exports.useSetCheckpointCallback=(e=h,s=[],t,o=h,r=[])=>{const l=F(t);return E((s=>v(l,(t=>{const r=e(s);o(t.addCheckpoint(r),t,r)}))),[l,...s,...r])},exports.useSetPartialRowCallback=(e,s,t,o,r,l,u)=>K(r,"PartialRow",t,o,l,u,e,s),exports.useSetPartialValuesCallback=(e,s,t,o,r)=>K(t,"PartialValues",e,s,o,r),exports.useSetRowCallback=(e,s,t,o,r,l,u)=>K(r,p,t,o,l,u,e,s),exports.useSetTableCallback=(e,s,t,o,r,l)=>K(o,n,s,t,r,l,e),exports.useSetTablesCallback=(e,s,t,o,r)=>K(t,d,e,s,o,r),exports.useSetValueCallback=(e,s,t,o,r,l)=>K(o,b,s,t,r,l,e),exports.useSetValuesCallback=(e,s,t,o,r)=>K(t,w,e,s,o,r),exports.useSliceIds=re,exports.useSliceIdsListener=(e,s,t,o)=>J("SliceIds",B(o),s,t,[e]),exports.useSliceRowIds=le,exports.useSliceRowIdsListener=(e,s,t,o,r)=>J("Slice"+c,B(r),t,o,[e,s]),exports.useSortedRowIds=$,exports.useSortedRowIdsListener=(e,s,t,o,r,l,u,n,d)=>J(I,O(d),l,u,[e,s,t,o,r],n),exports.useStartTransactionListener=(e,s,t)=>J("Start"+Q,O(t),e,s),exports.useStore=e=>f(e,0),exports.useStoreIds=()=>P(1),exports.useStoreOrStoreById=O,exports.useTable=(e,s)=>H(n,O(s),{},[e]),exports.useTableCellIds=(e,s)=>H(n+C,O(s),[],[e]),exports.useTableCellIdsListener=(e,s,t,o,r)=>J(n+C,O(r),s,t,[e],o),exports.useTableIds=Y,exports.useTableIdsListener=(e,s,t,o)=>J(i,O(o),e,s,[],t),exports.useTableListener=(e,s,t,o,r)=>J(n,O(r),s,t,[e],o),exports.useTables=e=>H(d,O(e),{}),exports.useTablesListener=(e,s,t,o)=>J(d,O(o),e,s,[],t),exports.useUndoInformation=e=>{var s;const o=F(e),[r,l]=Ie(o);return[(u=r,!(0==(e=>e.length)(u))),Ce(o),l,null!=(s=v(l,(e=>null==o?void 0:o.getCheckpoint(e))))?s:t];var u},exports.useValue=te,exports.useValueIds=se,exports.useValueIdsListener=(e,s,t,o)=>J(R,O(o),e,s,[],t),exports.useValueListener=(e,s,t,o,r)=>J(b,O(r),s,t,[e],o),exports.useValues=e=>H(w,O(e),{}),exports.useValuesListener=(e,s,t,o)=>J(w,O(o),e,s,[],t),exports.useWillFinishTransactionListener=(e,s,t)=>J("WillFinish"+Q,O(t),e,s);
Binary file
@@ -14,6 +14,7 @@ const ifNotUndefined = (value, then, otherwise) =>
14
14
  isUndefined(value) ? otherwise?.() : then(value);
15
15
  const isString = (thing) => getTypeOf(thing) == STRING;
16
16
  const isArray = (thing) => Array.isArray(thing);
17
+ const slice = (arrayOrString, start, end) => arrayOrString.slice(start, end);
17
18
  const promiseAll = async (promises) => promise.all(promises);
18
19
 
19
20
  const arrayJoin = (array, sep = EMPTY_STRING) => array.join(sep);
@@ -21,7 +22,6 @@ const arrayMap = (array, cb) => array.map(cb);
21
22
  const arrayLength = (array) => array.length;
22
23
  const arrayIsEmpty = (array) => arrayLength(array) == 0;
23
24
  const arrayFilter = (array, cb) => array.filter(cb);
24
- const arraySlice = (array, start, end) => array.slice(start, end);
25
25
  const arrayPush = (array, ...values) => array.push(...values);
26
26
  const arrayShift = (array) => array.shift();
27
27
 
@@ -315,10 +315,13 @@ const upsert = async (
315
315
  ),
316
316
  ) +
317
317
  ')VALUES' +
318
- strRepeat(
319
- `,(?${strRepeat(',?', arrayLength(changingColumnNames))})`,
320
- arrayLength(args) / (arrayLength(changingColumnNames) + 1),
321
- ).substring(1) +
318
+ slice(
319
+ strRepeat(
320
+ `,(?${strRepeat(',?', arrayLength(changingColumnNames))})`,
321
+ arrayLength(args) / (arrayLength(changingColumnNames) + 1),
322
+ ),
323
+ 1,
324
+ ) +
322
325
  'ON CONFLICT(' +
323
326
  escapeId(rowIdColumnName) +
324
327
  ')DO UPDATE SET' +
@@ -666,7 +669,7 @@ const getDefaultedTabularConfigMap = (
666
669
  ) => {
667
670
  const configMap = mapNew();
668
671
  objMap(configsObj, (configObj, id) => {
669
- const defaultedConfig = arraySlice(
672
+ const defaultedConfig = slice(
670
673
  objValues(
671
674
  objMerge(
672
675
  defaultObj,
@@ -695,7 +698,7 @@ const getConfigStructures = (configOrStoreTableName) => {
695
698
  ];
696
699
  }
697
700
  const {tables: {load = {}, save = {}} = {}, values = {}} = config;
698
- const valuesConfig = arraySlice(
701
+ const valuesConfig = slice(
699
702
  objValues(objMerge(DEFAULT_TABULAR_VALUES_CONFIG, values)),
700
703
  0,
701
704
  objSize(DEFAULT_TABULAR_VALUES_CONFIG),
@@ -14,6 +14,7 @@ const ifNotUndefined = (value, then, otherwise) =>
14
14
  isUndefined(value) ? otherwise?.() : then(value);
15
15
  const isString = (thing) => getTypeOf(thing) == STRING;
16
16
  const isArray = (thing) => Array.isArray(thing);
17
+ const slice = (arrayOrString, start, end) => arrayOrString.slice(start, end);
17
18
  const promiseAll = async (promises) => promise.all(promises);
18
19
 
19
20
  const arrayJoin = (array, sep = EMPTY_STRING) => array.join(sep);
@@ -21,7 +22,6 @@ const arrayMap = (array, cb) => array.map(cb);
21
22
  const arrayLength = (array) => array.length;
22
23
  const arrayIsEmpty = (array) => arrayLength(array) == 0;
23
24
  const arrayFilter = (array, cb) => array.filter(cb);
24
- const arraySlice = (array, start, end) => array.slice(start, end);
25
25
  const arrayPush = (array, ...values) => array.push(...values);
26
26
  const arrayShift = (array) => array.shift();
27
27
 
@@ -315,10 +315,13 @@ const upsert = async (
315
315
  ),
316
316
  ) +
317
317
  ')VALUES' +
318
- strRepeat(
319
- `,(?${strRepeat(',?', arrayLength(changingColumnNames))})`,
320
- arrayLength(args) / (arrayLength(changingColumnNames) + 1),
321
- ).substring(1) +
318
+ slice(
319
+ strRepeat(
320
+ `,(?${strRepeat(',?', arrayLength(changingColumnNames))})`,
321
+ arrayLength(args) / (arrayLength(changingColumnNames) + 1),
322
+ ),
323
+ 1,
324
+ ) +
322
325
  'ON CONFLICT(' +
323
326
  escapeId(rowIdColumnName) +
324
327
  ')DO UPDATE SET' +
@@ -666,7 +669,7 @@ const getDefaultedTabularConfigMap = (
666
669
  ) => {
667
670
  const configMap = mapNew();
668
671
  objMap(configsObj, (configObj, id) => {
669
- const defaultedConfig = arraySlice(
672
+ const defaultedConfig = slice(
670
673
  objValues(
671
674
  objMerge(
672
675
  defaultObj,
@@ -695,7 +698,7 @@ const getConfigStructures = (configOrStoreTableName) => {
695
698
  ];
696
699
  }
697
700
  const {tables: {load = {}, save = {}} = {}, values = {}} = config;
698
- const valuesConfig = arraySlice(
701
+ const valuesConfig = slice(
699
702
  objValues(objMerge(DEFAULT_TABULAR_VALUES_CONFIG, values)),
700
703
  0,
701
704
  objSize(DEFAULT_TABULAR_VALUES_CONFIG),
@@ -0,0 +1,249 @@
1
+ const getTypeOf = (thing) => typeof thing;
2
+ const EMPTY_STRING = '';
3
+ const STRING = getTypeOf(EMPTY_STRING);
4
+
5
+ const isInstanceOf = (thing, cls) => thing instanceof cls;
6
+ const isUndefined = (thing) => thing == void 0;
7
+ const ifNotUndefined = (value, then, otherwise) =>
8
+ isUndefined(value) ? otherwise?.() : then(value);
9
+ const isString = (thing) => getTypeOf(thing) == STRING;
10
+ const slice = (arrayOrString, start, end) => arrayOrString.slice(start, end);
11
+
12
+ const arrayLength = (array) => array.length;
13
+ const arrayPush = (array, ...values) => array.push(...values);
14
+ const arrayShift = (array) => array.shift();
15
+
16
+ const object = Object;
17
+ const objIds = object.keys;
18
+ const objFreeze = object.freeze;
19
+ const isObject = (obj) =>
20
+ isInstanceOf(obj, object) && obj.constructor == object;
21
+ const objSize = (obj) => arrayLength(objIds(obj));
22
+ const objIsEmpty = (obj) => isObject(obj) && objSize(obj) == 0;
23
+
24
+ const jsonString = (obj) =>
25
+ JSON.stringify(obj, (_key, value) =>
26
+ isInstanceOf(value, Map) ? object.fromEntries([...value]) : value,
27
+ );
28
+ const jsonParse = JSON.parse;
29
+
30
+ const SET_CHANGES = 's';
31
+ const STORE_PATH = '/store';
32
+ const PUT = 'PUT';
33
+ const constructMessage = (type, payload) =>
34
+ type + (isString(payload) ? payload : jsonString(payload));
35
+ const deconstructMessage = (message, stringified) => [
36
+ message[0],
37
+ stringified ? jsonParse(slice(message, 1)) : slice(message, 1),
38
+ ];
39
+
40
+ const collHas = (coll, keyOrValue) => coll?.has(keyOrValue) ?? false;
41
+ const collDel = (coll, keyOrValue) => coll?.delete(keyOrValue);
42
+
43
+ const mapNew = (entries) => new Map(entries);
44
+ const mapGet = (map, key) => map?.get(key);
45
+ const mapSet = (map, key, value) =>
46
+ isUndefined(value) ? (collDel(map, key), map) : map?.set(key, value);
47
+ const mapEnsure = (map, key, getDefaultValue) => {
48
+ if (!collHas(map, key)) {
49
+ mapSet(map, key, getDefaultValue());
50
+ }
51
+ return mapGet(map, key);
52
+ };
53
+
54
+ const scheduleRunning = mapNew();
55
+ const scheduleActions = mapNew();
56
+ const createCustomPersister = (
57
+ store,
58
+ getPersisted,
59
+ setPersisted,
60
+ addPersisterListener,
61
+ delPersisterListener,
62
+ onIgnoredError,
63
+ scheduleId = [],
64
+ ) => {
65
+ let listenerId;
66
+ let loadSave = 0;
67
+ let loads = 0;
68
+ let saves = 0;
69
+ let listening = 0;
70
+ let action;
71
+ let listeningHandle;
72
+ mapEnsure(scheduleRunning, scheduleId, () => 0);
73
+ mapEnsure(scheduleActions, scheduleId, () => []);
74
+ const run = async () => {
75
+ /* istanbul ignore else */
76
+ if (!mapGet(scheduleRunning, scheduleId)) {
77
+ mapSet(scheduleRunning, scheduleId, 1);
78
+ while (
79
+ !isUndefined((action = arrayShift(mapGet(scheduleActions, scheduleId))))
80
+ ) {
81
+ try {
82
+ await action();
83
+ } catch (error) {
84
+ /* istanbul ignore next */
85
+ onIgnoredError?.(error);
86
+ }
87
+ }
88
+ mapSet(scheduleRunning, scheduleId, 0);
89
+ }
90
+ };
91
+ const loadLock = async (actions) => {
92
+ /* istanbul ignore else */
93
+ if (loadSave != 2) {
94
+ loadSave = 1;
95
+ {
96
+ loads++;
97
+ }
98
+ await persister.schedule(async () => {
99
+ await actions();
100
+ loadSave = 0;
101
+ });
102
+ }
103
+ return persister;
104
+ };
105
+ const persister = {
106
+ load: async (initialTables, initialValues) =>
107
+ await loadLock(async () => {
108
+ try {
109
+ store.setContent(await getPersisted());
110
+ } catch {
111
+ store.setContent([initialTables, initialValues]);
112
+ }
113
+ }),
114
+ startAutoLoad: async (initialTables = {}, initialValues = {}) => {
115
+ persister.stopAutoLoad();
116
+ await persister.load(initialTables, initialValues);
117
+ listening = 1;
118
+ listeningHandle = addPersisterListener(
119
+ async (getContent, getTransactionChanges) => {
120
+ if (getTransactionChanges) {
121
+ const transactionChanges = getTransactionChanges();
122
+ await loadLock(async () =>
123
+ store.setTransactionChanges(transactionChanges),
124
+ );
125
+ } else {
126
+ await loadLock(async () => {
127
+ try {
128
+ store.setContent(getContent?.() ?? (await getPersisted()));
129
+ } catch (error) {
130
+ onIgnoredError?.(error);
131
+ }
132
+ });
133
+ }
134
+ },
135
+ );
136
+ return persister;
137
+ },
138
+ stopAutoLoad: () => {
139
+ if (listening) {
140
+ delPersisterListener(listeningHandle);
141
+ listeningHandle = void 0;
142
+ listening = 0;
143
+ }
144
+ return persister;
145
+ },
146
+ save: async (getTransactionChanges) => {
147
+ /* istanbul ignore else */
148
+ if (loadSave != 1) {
149
+ loadSave = 2;
150
+ {
151
+ saves++;
152
+ }
153
+ await persister.schedule(async () => {
154
+ try {
155
+ await setPersisted(store.getContent, getTransactionChanges);
156
+ } catch (error) {
157
+ /* istanbul ignore next */
158
+ onIgnoredError?.(error);
159
+ }
160
+ loadSave = 0;
161
+ });
162
+ }
163
+ return persister;
164
+ },
165
+ startAutoSave: async () => {
166
+ await persister.stopAutoSave().save();
167
+ listenerId = store.addDidFinishTransactionListener(
168
+ (_store, getTransactionChanges) => {
169
+ const [tableChanges, valueChanges] = getTransactionChanges();
170
+ if (!objIsEmpty(tableChanges) || !objIsEmpty(valueChanges)) {
171
+ persister.save(() => [tableChanges, valueChanges]);
172
+ }
173
+ },
174
+ );
175
+ return persister;
176
+ },
177
+ stopAutoSave: () => {
178
+ ifNotUndefined(listenerId, store.delListener);
179
+ return persister;
180
+ },
181
+ schedule: async (...actions) => {
182
+ arrayPush(mapGet(scheduleActions, scheduleId), ...actions);
183
+ await run();
184
+ return persister;
185
+ },
186
+ getStore: () => store,
187
+ destroy: () => persister.stopAutoLoad().stopAutoSave(),
188
+ getStats: () => ({loads, saves}),
189
+ };
190
+ return objFreeze(persister);
191
+ };
192
+
193
+ const MESSAGE = 'message';
194
+ const createPartyKitPersister = (
195
+ store,
196
+ connection,
197
+ storeUrlProtocol = 'https',
198
+ onIgnoredError,
199
+ ) => {
200
+ const {host, room} = connection.partySocketOptions;
201
+ const storeUrl =
202
+ storeUrlProtocol +
203
+ '://' +
204
+ host +
205
+ '/parties/' +
206
+ (connection.name ?? 'main') +
207
+ '/' +
208
+ room +
209
+ STORE_PATH;
210
+ const getOrSetStore = async (content) =>
211
+ await (
212
+ await fetch(storeUrl, {
213
+ ...(content ? {method: PUT, body: jsonString(content)} : {}),
214
+ mode: 'cors',
215
+ cache: 'no-store',
216
+ })
217
+ ).json();
218
+ const getPersisted = async () => await getOrSetStore();
219
+ const setPersisted = async (getContent, getTransactionChanges) => {
220
+ if (getTransactionChanges) {
221
+ connection.send(constructMessage(SET_CHANGES, getTransactionChanges()));
222
+ } else {
223
+ await getOrSetStore(getContent());
224
+ }
225
+ };
226
+ const addPersisterListener = (listener) => {
227
+ const messageListener = (event) => {
228
+ const [type, payload] = deconstructMessage(event.data, 1);
229
+ if (type == SET_CHANGES) {
230
+ listener(void 0, () => payload);
231
+ }
232
+ };
233
+ connection.addEventListener(MESSAGE, messageListener);
234
+ return messageListener;
235
+ };
236
+ const delPersisterListener = (messageListener) => {
237
+ connection.removeEventListener(MESSAGE, messageListener);
238
+ };
239
+ return createCustomPersister(
240
+ store,
241
+ getPersisted,
242
+ setPersisted,
243
+ addPersisterListener,
244
+ delPersisterListener,
245
+ onIgnoredError,
246
+ );
247
+ };
248
+
249
+ export {createPartyKitPersister};
@@ -0,0 +1,161 @@
1
+ const getTypeOf = (thing) => typeof thing;
2
+ const EMPTY_STRING = '';
3
+ const STRING = getTypeOf(EMPTY_STRING);
4
+ const T = 't';
5
+ const V = 'v';
6
+
7
+ const promise = Promise;
8
+ const isInstanceOf = (thing, cls) => thing instanceof cls;
9
+ const isUndefined = (thing) => thing == void 0;
10
+ const ifNotUndefined = (value, then, otherwise) =>
11
+ isUndefined(value) ? otherwise?.() : then(value);
12
+ const isString = (thing) => getTypeOf(thing) == STRING;
13
+ const slice = (arrayOrString, start, end) => arrayOrString.slice(start, end);
14
+ const promiseAll = async (promises) => promise.all(promises);
15
+
16
+ const arrayEvery = (array, cb) => array.every(cb);
17
+ const arrayMap = (array, cb) => array.map(cb);
18
+ const arrayLength = (array) => array.length;
19
+ const arrayIsEmpty = (array) => arrayLength(array) == 0;
20
+ const arrayPush = (array, ...values) => array.push(...values);
21
+ const arrayUnshift = (array, ...values) => array.unshift(...values);
22
+
23
+ const object = Object;
24
+ const objNew = (entries = []) => object.fromEntries(entries);
25
+ const objGet = (obj, id) => ifNotUndefined(obj, (obj2) => obj2[id]);
26
+ const objHas = (obj, id) => !isUndefined(objGet(obj, id));
27
+ const objMap = (obj, cb) =>
28
+ arrayMap(object.entries(obj), ([id, value]) => cb(value, id));
29
+ const objEnsure = (obj, id, getDefaultValue) => {
30
+ if (!objHas(obj, id)) {
31
+ obj[id] = getDefaultValue();
32
+ }
33
+ return obj[id];
34
+ };
35
+
36
+ const jsonString = (obj) =>
37
+ JSON.stringify(obj, (_key, value) =>
38
+ isInstanceOf(value, Map) ? object.fromEntries([...value]) : value,
39
+ );
40
+ const jsonParse = JSON.parse;
41
+
42
+ const SET_CHANGES = 's';
43
+ const STORE_PATH = '/store';
44
+ const PUT = 'PUT';
45
+ const constructMessage = (type, payload) =>
46
+ type + (isString(payload) ? payload : jsonString(payload));
47
+ const deconstructMessage = (message, stringified) => [
48
+ message[0],
49
+ stringified ? jsonParse(slice(message, 1)) : slice(message, 1),
50
+ ];
51
+
52
+ const collForEach = (coll, cb) => coll?.forEach(cb);
53
+
54
+ const mapForEach = (map, cb) =>
55
+ collForEach(map, (value, key) => cb(key, value));
56
+
57
+ const HAS_STORE = 'hasStore';
58
+ const CORS_HEADERS = objNew(
59
+ arrayMap(['Origin', 'Methods', 'Headers'], (suffix) => [
60
+ 'Access-Control-Allow-' + suffix,
61
+ '*',
62
+ ]),
63
+ );
64
+ const hasStoreInStorage = async (storage) => await storage.get(HAS_STORE);
65
+ const loadStoreFromStorage = async (storage) => {
66
+ const tables = {};
67
+ const values = {};
68
+ mapForEach(await storage.list(), (key, cellOrValue) => {
69
+ const [type, ids] = deconstructMessage(key);
70
+ if (type == T) {
71
+ const [tableId, rowId, cellId] = jsonParse('[' + ids + ']');
72
+ objEnsure(objEnsure(tables, tableId, objNew), rowId, objNew)[cellId] =
73
+ cellOrValue;
74
+ } else if (type == V) {
75
+ values[ids] = cellOrValue;
76
+ }
77
+ });
78
+ return [tables, values];
79
+ };
80
+ const saveStoreToStorage = async (storage, transactionChanges) => {
81
+ const promises = [storage.put(HAS_STORE, 1)];
82
+ const keyPrefixesToDelete = [];
83
+ objMap(transactionChanges[0], (table, tableId) =>
84
+ isUndefined(table)
85
+ ? arrayUnshift(keyPrefixesToDelete, getStoreStorageKey(T, tableId))
86
+ : objMap(table, (row, rowId) =>
87
+ isUndefined(row)
88
+ ? arrayPush(
89
+ keyPrefixesToDelete,
90
+ getStoreStorageKey(T, tableId, rowId),
91
+ )
92
+ : objMap(row, (cell, cellId) =>
93
+ promiseToSetOrDelStorage(
94
+ promises,
95
+ storage,
96
+ getStoreStorageKey(T, tableId, rowId, cellId),
97
+ cell,
98
+ ),
99
+ ),
100
+ ),
101
+ );
102
+ objMap(transactionChanges[1], (value, valueId) =>
103
+ promiseToSetOrDelStorage(promises, storage, V + valueId, value),
104
+ );
105
+ if (!arrayIsEmpty(keyPrefixesToDelete)) {
106
+ mapForEach(await storage.list(), (key) =>
107
+ arrayEvery(
108
+ keyPrefixesToDelete,
109
+ (keyPrefixToDelete) =>
110
+ !key.startsWith(keyPrefixToDelete) ||
111
+ (promiseToSetOrDelStorage(promises, storage, key) && false),
112
+ ),
113
+ );
114
+ }
115
+ await promiseAll(promises);
116
+ };
117
+ const getStoreStorageKey = (type, ...ids) =>
118
+ type + slice(jsonString(ids), 1, -1);
119
+ const promiseToSetOrDelStorage = (promises, storage, key, value) =>
120
+ arrayPush(
121
+ promises,
122
+ isUndefined(value) ? storage.delete(key) : storage.put(key, value),
123
+ );
124
+ const getResponse = (status, body = null) =>
125
+ new Response(body, {status, headers: CORS_HEADERS});
126
+ class TinyBasePartyKitServer {
127
+ constructor(party) {
128
+ this.party = party;
129
+ }
130
+ async onRequest(request) {
131
+ const storage = this.party.storage;
132
+ if (request.url.endsWith(STORE_PATH)) {
133
+ const hasStore = await hasStoreInStorage(storage);
134
+ const text = await request.text();
135
+ if (request.method == PUT) {
136
+ if (hasStore) {
137
+ return getResponse(205);
138
+ }
139
+ await saveStoreToStorage(this.party.storage, jsonParse(text));
140
+ return getResponse(201);
141
+ }
142
+ return getResponse(
143
+ 200,
144
+ hasStore
145
+ ? jsonString(await loadStoreFromStorage(storage))
146
+ : EMPTY_STRING,
147
+ );
148
+ }
149
+ return getResponse(404);
150
+ }
151
+ async onMessage(message, client) {
152
+ const storage = this.party.storage;
153
+ const [type, payload] = deconstructMessage(message, 1);
154
+ if (type == SET_CHANGES && (await hasStoreInStorage(storage))) {
155
+ await saveStoreToStorage(storage, payload);
156
+ this.party.broadcast(constructMessage(SET_CHANGES, payload), [client.id]);
157
+ }
158
+ }
159
+ }
160
+
161
+ export {TinyBasePartyKitServer};