muya 2.3.0 → 2.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/cjs/index.js CHANGED
@@ -1 +1 @@
1
- "use strict";var V=Object.defineProperty;var j=Object.getOwnPropertyDescriptor;var _=Object.getOwnPropertyNames;var N=Object.prototype.hasOwnProperty;var K=(e,r)=>{for(var o in r)V(e,o,{get:r[o],enumerable:!0})},Y=(e,r,o,i)=>{if(r&&typeof r=="object"||typeof r=="function")for(let s of _(r))!N.call(e,s)&&s!==o&&V(e,s,{get:()=>r[s],enumerable:!(i=j(r,s))||i.enumerable});return e};var W=e=>Y(V({},"__esModule",{value:!0}),e);var $={};K($,{EMPTY_SELECTOR:()=>v,create:()=>H,isAbortError:()=>I,isArray:()=>P,isEqualBase:()=>p,isError:()=>D,isFunction:()=>h,isMap:()=>E,isPromise:()=>f,isSet:()=>x,isSetValueFunction:()=>O,isState:()=>Q,isUndefined:()=>d,select:()=>g,shallow:()=>z,useValue:()=>C});module.exports=W($);var m=class extends Error{static Error="AbortError"};function J(e,r){r&&r.abort();let o=new AbortController,{signal:i}=o;return{promise:new Promise((n,a)=>{i.addEventListener("abort",()=>{a(new m)}),e.then(n).catch(a)}),controller:o}}function y(e,r=p){if(!d(e.current)){if(!d(e.previous)&&r(e.current,e.previous))return!1;e.previous=e.current}return!0}function T(e,r){let{cache:o,emitter:{emit:i}}=e;if(!f(r))return r;o.abortController&&o.abortController.abort();let{promise:s,controller:n}=J(r,o.abortController);return o.abortController=n,s.then(a=>{o.current=a,i()}).catch(a=>{I(a)||(o.current=a,i())})}function f(e){return e instanceof Promise}function h(e){return typeof e=="function"}function E(e){return e instanceof Map}function x(e){return e instanceof Set}function P(e){return Array.isArray(e)}function p(e,r){return e===r?!0:!!Object.is(e,r)}function O(e){return typeof e=="function"}function I(e){return e instanceof m}function D(e){return e instanceof Error}function d(e){return e===void 0}function Q(e){return h(e)&&"get"in e&&"set"in e&&"isSet"in e&&e.isSet===!0}var v=e=>e;function U(){let e=new Map,r=new Set,o=performance.now(),i=!1;function s(){let a=performance.now(),t=a-o,{size:c}=r;if(t<.2&&c>0&&c<10){o=a,n();return}i||(i=!0,Promise.resolve().then(()=>{i=!1,o=performance.now(),n()}))}function n(){if(r.size===0)return;let a=new Set;for(let t of r){if(e.has(t.id)){a.add(t.id);let{onResolveItem:c}=e.get(t.id);c&&c(t.value)}r.delete(t)}if(r.size>0){s();return}for(let t of a)e.get(t)?.onScheduleDone()}return{add(a,t){return e.set(a,t),()=>{e.delete(a)}},schedule(a,t){r.add({value:t,id:a}),s()}}}function g(e,r,o){function i(){let u=!1,l=e.map(A=>{let w=A.get();return f(w)&&(u=!0),w});return u?new Promise((A,w)=>{Promise.all(l).then(G=>{if(G.some(M=>d(M)))return w(new m);let F=r(...G);A(F)})}):r(...l)}function s(){if(d(t.cache.current)){let u=i();t.cache.current=T(t,u)}return t.cache.current}function n(){if(d(t.cache.current)){let l=i();t.cache.current=T(t,l)}let{current:u}=t.cache;return f(u)?new Promise(l=>{u.then(S=>{if(d(S)){l(n());return}l(S)})}):t.cache.current}let a=[];for(let u of e){let l=u.emitter.subscribe(()=>{b.schedule(t.id,null)});a.push(l)}let t=k({destroy(){for(let u of a)u();c(),t.emitter.clear(),t.cache.current=void 0},get:n,getSnapshot:s}),c=b.add(t.id,{onScheduleDone(){let u=i();t.cache.current=T(t,u),y(t.cache,o)&&t.emitter.emit()}});return t}var R=require("react");var L=require("use-sync-external-store/shim/with-selector");function C(e,r=v){let{emitter:o}=e,i=(0,L.useSyncExternalStoreWithSelector)(e.emitter.subscribe,o.getSnapshot,o.getInitialSnapshot,r);if((0,R.useDebugValue)(i),f(i)||D(i))throw i;return i}function q(e,r){let o=new Set,i=[];return{clear:()=>{for(let s of i)s();o.clear()},subscribe:s=>(o.add(s),()=>{o.delete(s)}),emit:(...s)=>{for(let n of o)n(...s)},contains:s=>o.has(s),getSnapshot:e,getInitialSnapshot:r,getSize:()=>o.size,subscribeToOtherEmitter(s){let n=s.subscribe(()=>{this.emit()});i.push(n)}}}var X=0;function Z(){return X++}function k(e){let{get:r,destroy:o,set:i,getSnapshot:s}=e,n=!!i,a={},t=function(c){return C(t,c)};return t.isSet=n,t.id=Z(),t.emitter=q(s),t.destroy=o,t.listen=function(c){return this.emitter.subscribe(()=>{let u=r();f(u)||c(r())})},t.withName=function(c){return this.stateName=c,this},t.select=function(c,u=p){return g([t],c,u)},t.get=r,t.set=i,t.cache=a,t}var b=U();function H(e,r=p){function o(){try{if(d(n.cache.current)){let t=h(e)?e():e,c=T(n,t);return n.cache.current=c,n.cache.current}return n.cache.current}catch(t){n.cache.current=t}return n.cache.current}async function i(t,c){await t;let u=c(n.cache.current),l=T(n,u);n.cache.current=l}function s(t){let c=o(),u=O(t);if(u&&f(c)){i(c,t);return}n.cache.abortController&&n.cache.abortController.abort();let l=u?t(c):t,S=T(n,l);n.cache.current=S}let n=k({get:o,destroy(){o(),a(),n.emitter.clear(),n.cache.current=void 0},set(t){b.schedule(n.id,t)},getSnapshot:o}),a=b.add(n.id,{onScheduleDone(){n.cache.current=o(),y(n.cache,r)&&n.emitter.emit()},onResolveItem:s});return h(e)||o(),n}function z(e,r){if(e==r)return!0;if(typeof e!="object"||e==null||typeof r!="object"||r==null)return!1;if(E(e)&&E(r)){if(e.size!==r.size)return!1;for(let[s,n]of e)if(!Object.is(n,r.get(s)))return!1;return!0}if(x(e)&&x(r)){if(e.size!==r.size)return!1;for(let s of e)if(!r.has(s))return!1;return!0}if(P(e)&&P(r)){if(e.length!==r.length)return!1;for(let[s,n]of e.entries())if(!Object.is(n,r[s]))return!1;return!0}let o=Object.keys(e),i=Object.keys(r);if(o.length!==i.length)return!1;for(let s of o)if(!Object.prototype.hasOwnProperty.call(r,s)||!Object.is(e[s],r[s]))return!1;return!0}
1
+ "use strict";var V=Object.defineProperty;var N=Object.getOwnPropertyDescriptor;var K=Object.getOwnPropertyNames;var Y=Object.prototype.hasOwnProperty;var W=(e,r)=>{for(var o in r)V(e,o,{get:r[o],enumerable:!0})},J=(e,r,o,i)=>{if(r&&typeof r=="object"||typeof r=="function")for(let s of K(r))!Y.call(e,s)&&s!==o&&V(e,s,{get:()=>r[s],enumerable:!(i=N(r,s))||i.enumerable});return e};var Q=e=>J(V({},"__esModule",{value:!0}),e);var $={};W($,{EMPTY_SELECTOR:()=>v,create:()=>F,isAbortError:()=>I,isArray:()=>g,isEqualBase:()=>m,isError:()=>D,isFunction:()=>h,isMap:()=>x,isPromise:()=>f,isSet:()=>E,isSetValueFunction:()=>O,isState:()=>Z,isUndefined:()=>d,select:()=>P,shallow:()=>M,useValue:()=>C});module.exports=Q($);var p=class extends Error{static Error="AbortError"};function X(e,r){r&&r.abort();let o=new AbortController,{signal:i}=o;return{promise:new Promise((n,a)=>{i.addEventListener("abort",()=>{a(new p)}),e.then(n).catch(a)}),controller:o}}function y(e,r=m){if(!d(e.current)){if(!d(e.previous)&&r(e.current,e.previous))return!1;e.previous=e.current}return!0}function T(e,r){let{cache:o,emitter:{emit:i}}=e;if(!f(r))return r;o.abortController&&o.abortController.abort();let{promise:s,controller:n}=X(r,o.abortController);return o.abortController=n,s.then(a=>{o.current=a,i()}).catch(a=>{I(a)||(o.current=a,i())})}function f(e){return e instanceof Promise}function h(e){return typeof e=="function"}function x(e){return e instanceof Map}function E(e){return e instanceof Set}function g(e){return Array.isArray(e)}function m(e,r){return e===r?!0:!!Object.is(e,r)}function O(e){return typeof e=="function"}function I(e){return e instanceof p}function D(e){return e instanceof Error}function d(e){return e===void 0}function Z(e){return h(e)&&"get"in e&&"set"in e&&"isSet"in e&&e.isSet===!0}var v=e=>e;function U(){let e=new Map,r=new Set,o=performance.now(),i=!1;function s(){let a=performance.now(),t=a-o,{size:c}=r;if(t<.2&&c>0&&c<10){o=a,n();return}i||(i=!0,Promise.resolve().then(()=>{i=!1,o=performance.now(),n()}))}function n(){if(r.size===0)return;let a=new Set;for(let t of r){if(e.has(t.id)){a.add(t.id);let{onResolveItem:c}=e.get(t.id);c&&c(t.value)}r.delete(t)}if(r.size>0){s();return}for(let t of a)e.get(t)?.onScheduleDone()}return{add(a,t){return e.set(a,t),()=>{e.delete(a)}},schedule(a,t){r.add({value:t,id:a}),s()}}}function P(e,r,o){function i(){let u=!1,l=e.map(A=>{let w=A.get();return f(w)&&(u=!0),w});return u?new Promise((A,w)=>{Promise.all(l).then(G=>{if(G.some(_=>d(_)))return w(new p);let j=r(...G);A(j)})}):r(...l)}function s(){if(d(t.cache.current)){let u=i();t.cache.current=T(t,u)}return t.cache.current}function n(){if(d(t.cache.current)){let l=i();t.cache.current=T(t,l)}let{current:u}=t.cache;return f(u)?new Promise(l=>{u.then(S=>{if(d(S)){l(n());return}l(S)})}):t.cache.current}let a=[];for(let u of e){let l=u.emitter.subscribe(()=>{b.schedule(t.id,null)});a.push(l)}let t=k({destroy(){for(let u of a)u();c(),t.emitter.clear(),t.cache.current=void 0},get:n,getSnapshot:s}),c=b.add(t.id,{onScheduleDone(){let u=i();t.cache.current=T(t,u),y(t.cache,o)&&t.emitter.emit()}});return t}var R=require("react");var L=require("use-sync-external-store/shim/with-selector");function C(e,r=v){let{emitter:o}=e,i=(0,L.useSyncExternalStoreWithSelector)(e.emitter.subscribe,o.getSnapshot,o.getInitialSnapshot,r);if((0,R.useDebugValue)(i),f(i)||D(i))throw i;return i}function q(e,r){let o=new Set,i=[];return{clear:()=>{for(let s of i)s();o.clear()},subscribe:s=>(o.add(s),()=>{o.delete(s)}),emit:(...s)=>{for(let n of o)n(...s)},contains:s=>o.has(s),getSnapshot:e,getInitialSnapshot:r,getSize:()=>o.size,subscribeToOtherEmitter(s){let n=s.subscribe(()=>{this.emit()});i.push(n)}}}var H=0;function z(){return H++,H.toString(36)}function k(e){let{get:r,destroy:o,set:i,getSnapshot:s}=e,n=!!i,a={},t=function(c){return C(t,c)};return t.isSet=n,t.id=z(),t.emitter=q(s),t.destroy=o,t.listen=function(c){return this.emitter.subscribe(()=>{let u=r();f(u)||c(r())})},t.withName=function(c){return this.stateName=c,this},t.select=function(c,u=m){return P([t],c,u)},t.get=r,t.set=i,t.cache=a,t}var b=U();function F(e,r=m){function o(){try{if(d(n.cache.current)){let t=h(e)?e():e,c=T(n,t);return n.cache.current=c,n.cache.current}return n.cache.current}catch(t){n.cache.current=t}return n.cache.current}async function i(t,c){await t;let u=c(n.cache.current),l=T(n,u);n.cache.current=l}function s(t){let c=o(),u=O(t);if(u&&f(c)){i(c,t);return}n.cache.abortController&&n.cache.abortController.abort();let l=u?t(c):t,S=T(n,l);n.cache.current=S}let n=k({get:o,destroy(){o(),a(),n.emitter.clear(),n.cache.current=void 0},set(t){b.schedule(n.id,t)},getSnapshot:o}),a=b.add(n.id,{onScheduleDone(){n.cache.current=o(),y(n.cache,r)&&n.emitter.emit()},onResolveItem:s});return h(e)||o(),n}function M(e,r){if(e==r)return!0;if(typeof e!="object"||e==null||typeof r!="object"||r==null)return!1;if(x(e)&&x(r)){if(e.size!==r.size)return!1;for(let[s,n]of e)if(!Object.is(n,r.get(s)))return!1;return!0}if(E(e)&&E(r)){if(e.size!==r.size)return!1;for(let s of e)if(!r.has(s))return!1;return!0}if(g(e)&&g(r)){if(e.length!==r.length)return!1;for(let[s,n]of e.entries())if(!Object.is(n,r[s]))return!1;return!0}let o=Object.keys(e),i=Object.keys(r);if(o.length!==i.length)return!1;for(let s of o)if(!Object.prototype.hasOwnProperty.call(r,s)||!Object.is(e[s],r[s]))return!1;return!0}
@@ -1 +1 @@
1
- import{select as l}from"./select";import{useValue as S}from"./use-value";import{createEmitter as d}from"./utils/create-emitter";import{isEqualBase as m,isPromise as T}from"./utils/is";let f=0;function p(){return f++}function G(n){const{get:a,destroy:o,set:s,getSnapshot:i}=n,u=!!s,c={},t=function(e){return S(t,e)};return t.isSet=u,t.id=p(),t.emitter=d(i),t.destroy=o,t.listen=function(e){return this.emitter.subscribe(()=>{const r=a();T(r)||e(a())})},t.withName=function(e){return this.stateName=e,this},t.select=function(e,r=m){return l([t],e,r)},t.get=a,t.set=s,t.cache=c,t}export{G as createState};
1
+ import{select as l}from"./select";import{useValue as m}from"./use-value";import{createEmitter as S}from"./utils/create-emitter";import{getId as T}from"./utils/id";import{isEqualBase as d,isPromise as p}from"./utils/is";function G(n){const{get:r,destroy:o,set:s,getSnapshot:i}=n,u=!!s,c={},t=function(e){return m(t,e)};return t.isSet=u,t.id=T(),t.emitter=S(i),t.destroy=o,t.listen=function(e){return this.emitter.subscribe(()=>{const a=r();p(a)||e(r())})},t.withName=function(e){return this.stateName=e,this},t.select=function(e,a=d){return l([t],e,a)},t.get=r,t.set=s,t.cache=c,t}export{G as createState};
@@ -1 +1 @@
1
- import{createScheduler as P}from"../scheduler";import{shallow as O}from"../utils/shallow";import{selectSql as v}from"./select-sql";import{createTable as R,DEFAULT_STEP_SIZE as M}from"./table/table";const f=P();let C=0;function B(){return C++}function L(g){const k=B();function m(e){return`state-${k}-search-${e}`}let h;async function o(){if(!h){const{backend:e,...n}=g,t=e instanceof Promise?await e:e;h=await R({backend:t,...n})}return h}const c=new Map,i=new Map,S=new Map;async function p(e,n){const t=S.get(e),{options:a={}}=n,{stepSize:s=M}=a;if(!t)return!1;const r=[];for(let u=0;u<s;u++){const l=await t.next();if(l.done){S.delete(e);break}n.keys.has(String(l.value.rowId))||(r.push(l.value.document),n.keys.add(String(l.value.rowId)))}return r.length===0||O(n.items,r)?!1:(n.items=[...n.items,...r],!0)}function b(e){const n=i.get(e);n&&n()}async function x(e){const n=await o(),t=c.get(e);if(!t)return;const{options:a}=t,s=n.search({...a,select:(r,{rowId:u})=>({document:r,rowId:u})});S.set(e,s),t.keys=new Set,t.items=[],await p(e,t)}async function y(e){await x(e),b(e)}function T(e){const{key:n,op:t}=e,a=new Set;for(const[s,{keys:r}]of c)switch(t){case"delete":case"update":{r.has(String(n))&&a.add(s);break}case"insert":{a.add(s);break}}return a}async function d(e){const n=new Set;for(const t of e){const a=T(t);for(const s of a)n.add(s)}for(const t of n){const a=m(t);f.schedule(a,{searchId:t})}}const D=new Set;function w(e,n){c.has(e)||(c.set(e,{items:[],options:n,keys:new Set}),n&&y(e));const t=c.get(e);return n&&(t.options=n),t}const I={async set(e){const t=await(await o()).set(e);return await d([t]),t},async batchSet(e){const t=await(await o()).batchSet(e);return await d(t),t},async delete(e){const t=await(await o()).delete(e);return t&&await d([t]),t},async deleteBy(e){const t=await(await o()).deleteBy(e);return await d(t),t},async get(e,n){return(await o()).get(e,n)},async*search(e={}){const n=await o();for await(const t of n.search(e))yield t},async count(e){return await(await o()).count(e)},updateSearchOptions(e,n){const t=w(e,n);t.options=n;const a=m(e);f.schedule(a,{searchId:e})},subscribe(e,n){const t=m(e),a=f.add(t,{onScheduleDone(){y(e)}});return D.add(a),i.has(e)||i.set(e,n),()=>{i.delete(e),a(),c.delete(e)}},getSnapshot(e){return w(e).items},refresh:y,destroy(){for(const e of D)e();c.clear(),i.clear()},async next(e){const n=c.get(e);if(n){const t=await p(e,n);return t&&b(e),t}return!1},select(e){return v(I,e)}};return I}export{L as createSqliteState};
1
+ import{STATE_SCHEDULER as y}from"../create";import{getId as P}from"../utils/id";import{shallow as v}from"../utils/shallow";import{selectSql as O}from"./select-sql";import{createTable as R,DEFAULT_STEP_SIZE as M}from"./table/table";function K(g){const k=P();function m(e){return`state-${k}-search-${e}`}let h;async function o(){if(!h){const{backend:e,...n}=g,t=e instanceof Promise?await e:e;h=await R({backend:t,...n})}return h}const c=new Map,i=new Map,S=new Map;async function p(e,n){const t=S.get(e),{options:a={}}=n,{stepSize:s=M}=a;if(!t)return!1;const r=[];for(let u=0;u<s;u++){const l=await t.next();if(l.done){S.delete(e);break}n.keys.has(String(l.value.rowId))||(r.push(l.value.document),n.keys.add(String(l.value.rowId)))}return r.length===0||v(n.items,r)?!1:(n.items=[...n.items,...r],!0)}function b(e){const n=i.get(e);n&&n()}async function x(e){const n=await o(),t=c.get(e);if(!t)return;const{options:a}=t,s=n.search({...a,select:(r,{rowId:u})=>({document:r,rowId:u})});S.set(e,s),t.keys=new Set,t.items=[],await p(e,t)}async function f(e){await x(e),b(e)}function T(e){const{key:n,op:t}=e,a=new Set;for(const[s,{keys:r}]of c)switch(t){case"delete":case"update":{r.has(String(n))&&a.add(s);break}case"insert":{a.add(s);break}}return a}async function d(e){const n=new Set;for(const t of e){const a=T(t);for(const s of a)n.add(s)}for(const t of n){const a=m(t);y.schedule(a,{searchId:t})}}const w=new Set;function D(e,n){c.has(e)||(c.set(e,{items:[],options:n,keys:new Set}),n&&f(e));const t=c.get(e);return n&&(t.options=n),t}const I={async set(e){const t=await(await o()).set(e);return await d([t]),t},async batchSet(e){const t=await(await o()).batchSet(e);return await d(t),t},async delete(e){const t=await(await o()).delete(e);return t&&await d([t]),t},async deleteBy(e){const t=await(await o()).deleteBy(e);return await d(t),t},async get(e,n){return(await o()).get(e,n)},async*search(e={}){const n=await o();for await(const t of n.search(e))yield t},async count(e){return await(await o()).count(e)},updateSearchOptions(e,n){const t=D(e,n);t.options=n;const a=m(e);y.schedule(a,{searchId:e})},subscribe(e,n){const t=m(e),a=y.add(t,{onScheduleDone(){f(e)}});return w.add(a),i.has(e)||i.set(e,n),()=>{i.delete(e),a(),c.delete(e)}},getSnapshot(e){return D(e).items},refresh:f,destroy(){for(const e of w)e();c.clear(),i.clear()},async next(e){const n=c.get(e);if(n){const t=await p(e,n);return t&&b(e),t}return!1},select(e){return O(I,e)}};return I}export{K as createSqliteState};
@@ -0,0 +1 @@
1
+ let t=0;function e(){return t++,t.toString(36)}export{e as getId};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "muya",
3
- "version": "2.3.0",
3
+ "version": "2.3.1",
4
4
  "author": "samuel.gjabel@gmail.com",
5
5
  "repository": "https://github.com/samuelgjabel/muya",
6
6
  "main": "cjs/index.js",
@@ -2,6 +2,7 @@ import { select } from './select'
2
2
  import type { GetState, SetValue, State, Cache } from './types'
3
3
  import { useValue } from './use-value'
4
4
  import { createEmitter } from './utils/create-emitter'
5
+ import { getId } from './utils/id'
5
6
  import { isEqualBase, isPromise } from './utils/is'
6
7
 
7
8
  interface GetStateOptions<T> {
@@ -11,16 +12,6 @@ interface GetStateOptions<T> {
11
12
  readonly getSnapshot: () => T
12
13
  }
13
14
 
14
- let stateId = 0
15
-
16
- /**
17
- * Generate a unique state ID
18
- * @returns A unique state ID
19
- */
20
- function getStateId() {
21
- return stateId++
22
- }
23
-
24
15
  type FullState<T> = GetStateOptions<T>['set'] extends undefined ? GetState<T> : State<T>
25
16
  /**
26
17
  * This is just utility function to create state base data
@@ -36,7 +27,7 @@ export function createState<T>(options: GetStateOptions<T>): FullState<T> {
36
27
  return useValue(state, selector)
37
28
  }
38
29
  state.isSet = isSet as true
39
- state.id = getStateId()
30
+ state.id = getId()
40
31
  state.emitter = createEmitter<T>(getSnapshot)
41
32
  state.destroy = destroy
42
33
  state.listen = function (listener) {
@@ -1,7 +1,6 @@
1
1
  /* eslint-disable sonarjs/redundant-type-aliases */
2
- /* eslint-disable @typescript-eslint/no-shadow */
3
- /* eslint-disable no-shadow */
4
- import { createScheduler } from '../scheduler'
2
+ import { STATE_SCHEDULER } from '../create'
3
+ import { getId } from '../utils/id'
5
4
  import { shallow } from '../utils/shallow'
6
5
  import { selectSql, type CreateState } from './select-sql'
7
6
  import type { Backend } from './table'
@@ -10,16 +9,6 @@ import type { DbOptions, DocType, Key, MutationResult, SearchOptions, Table } fr
10
9
  import type { Where } from './table/where'
11
10
 
12
11
  type SearchId = string
13
- const STATE_SCHEDULER = createScheduler()
14
-
15
- let stateId = 0
16
- /**
17
- * Get a unique state ID
18
- * @returns The unique state ID
19
- */
20
- function getStateId() {
21
- return stateId++
22
- }
23
12
 
24
13
  export interface CreateSqliteOptions<Document extends DocType> extends Omit<DbOptions<Document>, 'backend'> {
25
14
  readonly backend: Backend | Promise<Backend>
@@ -60,7 +49,7 @@ interface DataItems<Document extends DocType> {
60
49
  * @returns A SyncTable instance with methods to interact with the underlying Table and manage reactive searches
61
50
  */
62
51
  export function createSqliteState<Document extends DocType>(options: CreateSqliteOptions<Document>): SyncTable<Document> {
63
- const id = getStateId()
52
+ const id = getId()
64
53
 
65
54
  /**
66
55
  * Get a unique schedule ID for a search ID
@@ -102,8 +91,8 @@ export function createSqliteState<Document extends DocType>(options: CreateSqlit
102
91
  */
103
92
  async function next(searchId: SearchId, data: DataItems<Document>): Promise<boolean> {
104
93
  const iterator = iterators.get(searchId)
105
- const { options = {} } = data
106
- const { stepSize = DEFAULT_STEP_SIZE } = options
94
+ const { options: nextOptions = {} } = data
95
+ const { stepSize = DEFAULT_STEP_SIZE } = nextOptions
107
96
  if (!iterator) return false
108
97
  const newItems: Document[] = []
109
98
 
@@ -145,8 +134,8 @@ export function createSqliteState<Document extends DocType>(options: CreateSqlit
145
134
  const table = await getTable()
146
135
  const data = cachedData.get(searchId)
147
136
  if (!data) return
148
- const { options } = data
149
- const iterator = table.search({ ...options, select: (document, { rowId }) => ({ document, rowId }) })
137
+ const { options: refreshOptions } = data
138
+ const iterator = table.search({ ...refreshOptions, select: (document, { rowId }) => ({ document, rowId }) })
150
139
  iterators.set(searchId, iterator)
151
140
  data.keys = new Set()
152
141
  data.items = []
@@ -214,19 +203,19 @@ export function createSqliteState<Document extends DocType>(options: CreateSqlit
214
203
  /**
215
204
  * Register data for a search ID
216
205
  * @param searchId The search ID
217
- * @param options Optional search options
206
+ * @param registerDataOptions Optional search options
218
207
  * @returns The data items for the search ID
219
208
  */
220
- function registerData(searchId: SearchId, options?: SearchOptions<Document, unknown>) {
209
+ function registerData(searchId: SearchId, registerDataOptions?: SearchOptions<Document, unknown>) {
221
210
  if (!cachedData.has(searchId)) {
222
- cachedData.set(searchId, { items: [], options, keys: new Set() })
223
- if (options) {
211
+ cachedData.set(searchId, { items: [], options: registerDataOptions, keys: new Set() })
212
+ if (registerDataOptions) {
224
213
  refresh(searchId)
225
214
  }
226
215
  }
227
216
  const data = cachedData.get(searchId)!
228
- if (options) {
229
- data.options = options
217
+ if (registerDataOptions) {
218
+ data.options = registerDataOptions
230
219
  }
231
220
  return data
232
221
  }
@@ -262,20 +251,20 @@ export function createSqliteState<Document extends DocType>(options: CreateSqlit
262
251
  const table = await getTable()
263
252
  return table.get(key, selector)
264
253
  },
265
- async *search(options = {}) {
254
+ async *search(searchOptions = {}) {
266
255
  const table = await getTable()
267
- for await (const item of table.search(options)) {
256
+ for await (const item of table.search(searchOptions)) {
268
257
  yield item
269
258
  }
270
259
  },
271
- async count(options) {
260
+ async count(countOptions) {
272
261
  const table = await getTable()
273
- return await table.count(options)
262
+ return await table.count(countOptions)
274
263
  },
275
264
 
276
- updateSearchOptions(searchId, options) {
277
- const data = registerData(searchId, options)
278
- data.options = options
265
+ updateSearchOptions(searchId, updateSearchOptions) {
266
+ const data = registerData(searchId, updateSearchOptions)
267
+ data.options = updateSearchOptions
279
268
  const scheduleId = getScheduleId(searchId)
280
269
  STATE_SCHEDULER.schedule(scheduleId, { searchId })
281
270
  },
package/src/types.ts CHANGED
@@ -22,7 +22,7 @@ export interface GetState<T, IsFroMPromise extends boolean = false> {
22
22
  /**
23
23
  * Get the unique id of the state.
24
24
  */
25
- id: number
25
+ id: string
26
26
  /**
27
27
  * Emitter to listen to changes with snapshots.
28
28
  */
@@ -0,0 +1,9 @@
1
+ let stateId = 0
2
+ /**
3
+ * Get a unique state ID
4
+ * @returns The unique state ID
5
+ */
6
+ export function getId(): string {
7
+ stateId++
8
+ return stateId.toString(36)
9
+ }
package/types/types.d.ts CHANGED
@@ -19,7 +19,7 @@ export interface GetState<T, IsFroMPromise extends boolean = false> {
19
19
  /**
20
20
  * Get the unique id of the state.
21
21
  */
22
- id: number;
22
+ id: string;
23
23
  /**
24
24
  * Emitter to listen to changes with snapshots.
25
25
  */
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Get a unique state ID
3
+ * @returns The unique state ID
4
+ */
5
+ export declare function getId(): string;