├── docs ├── .nojekyll ├── CNAME ├── favicon.png ├── fonts │ ├── inter.woff2 │ ├── shantell.woff2 │ └── inconsolata.woff2 ├── nav.json ├── guides │ ├── nav.json │ ├── releases │ │ └── nav.json │ ├── agents-guide │ │ └── nav.json │ └── the-basics │ │ ├── nav.json │ │ ├── core-concepts │ │ └── nav.json │ │ ├── getting-started │ │ ├── nav.json │ │ └── article.html │ │ └── article.html ├── cloudflare.svg ├── api │ ├── synclets │ │ ├── variables │ │ │ ├── constant │ │ │ │ ├── reserved │ │ │ │ │ └── article.html │ │ │ │ ├── undefined │ │ │ │ │ └── article.html │ │ │ │ └── article.html │ │ │ └── article.html │ │ ├── type-aliases │ │ │ ├── message │ │ │ │ ├── hash │ │ │ │ │ └── article.html │ │ │ │ └── messagetype │ │ │ │ │ └── article.html │ │ │ ├── core │ │ │ │ └── article.html │ │ │ ├── component │ │ │ │ └── article.html │ │ │ ├── constant │ │ │ │ ├── reserved │ │ │ │ │ └── article.html │ │ │ │ ├── undefined │ │ │ │ │ └── article.html │ │ │ │ └── article.html │ │ │ ├── option │ │ │ │ └── article.html │ │ │ ├── logging │ │ │ │ └── loglevel │ │ │ │ │ └── article.html │ │ │ ├── synclet │ │ │ │ └── article.html │ │ │ ├── address │ │ │ │ ├── atomsaddress │ │ │ │ │ └── article.html │ │ │ │ ├── timestampsaddress │ │ │ │ │ └── article.html │ │ │ │ ├── atomaddress │ │ │ │ │ └── article.html │ │ │ │ ├── timestampaddress │ │ │ │ │ └── article.html │ │ │ │ ├── anyparentaddress │ │ │ │ │ └── article.html │ │ │ │ └── address │ │ │ │ │ └── article.html │ │ │ └── context │ │ │ │ └── article.html │ │ └── interfaces │ │ │ └── core │ │ │ ├── synclet │ │ │ └── methods │ │ │ │ └── logging │ │ │ │ └── article.html │ │ │ ├── transport │ │ │ ├── methods │ │ │ │ ├── article.html │ │ │ │ └── logging │ │ │ │ │ └── article.html │ │ │ └── properties │ │ │ │ ├── article.html │ │ │ │ └── identity │ │ │ │ ├── article.html │ │ │ │ └── brand │ │ │ │ └── article.html │ │ │ ├── dataconnector │ │ │ ├── methods │ │ │ │ ├── article.html │ │ │ │ └── logging │ │ │ │ │ └── article.html │ │ │ └── properties │ │ │ │ └── structure │ │ │ │ ├── depth │ │ │ │ └── article.html │ │ │ │ └── article.html │ │ │ └── metaconnector │ │ │ ├── methods │ │ │ ├── article.html │ │ │ └── logging │ │ │ │ └── article.html │ │ │ └── properties │ │ │ └── structure │ │ │ ├── depth │ │ │ └── article.html │ │ │ └── article.html │ ├── ws │ │ ├── type-aliases │ │ │ ├── transport │ │ │ │ ├── websockettypes │ │ │ │ │ └── article.html │ │ │ │ └── article.html │ │ │ └── article.html │ │ ├── interfaces │ │ │ └── transport │ │ │ │ ├── wsbrokertransport │ │ │ │ ├── properties │ │ │ │ │ ├── article.html │ │ │ │ │ └── identity │ │ │ │ │ │ ├── brand │ │ │ │ │ │ └── article.html │ │ │ │ │ │ └── article.html │ │ │ │ └── methods │ │ │ │ │ ├── logging │ │ │ │ │ └── article.html │ │ │ │ │ └── accessor │ │ │ │ │ └── article.html │ │ │ │ └── wsclienttransport │ │ │ │ ├── properties │ │ │ │ ├── article.html │ │ │ │ └── identity │ │ │ │ │ ├── brand │ │ │ │ │ └── article.html │ │ │ │ │ └── article.html │ │ │ │ └── methods │ │ │ │ ├── accessor │ │ │ │ └── article.html │ │ │ │ └── logging │ │ │ │ └── article.html │ │ └── nav.json │ ├── pglite │ │ ├── functions │ │ │ ├── utility │ │ │ │ └── article.html │ │ │ └── article.html │ │ ├── interfaces │ │ │ └── connector │ │ │ │ ├── pglitedataconnector │ │ │ │ ├── properties │ │ │ │ │ └── structure │ │ │ │ │ │ └── depth │ │ │ │ │ │ └── article.html │ │ │ │ └── methods │ │ │ │ │ └── accessor │ │ │ │ │ └── article.html │ │ │ │ └── pglitemetaconnector │ │ │ │ └── properties │ │ │ │ └── structure │ │ │ │ └── depth │ │ │ │ └── article.html │ │ └── nav.json │ ├── sqlite3 │ │ ├── functions │ │ │ ├── utility │ │ │ │ └── article.html │ │ │ └── article.html │ │ ├── interfaces │ │ │ └── connector │ │ │ │ ├── sqlite3dataconnector │ │ │ │ └── properties │ │ │ │ │ └── structure │ │ │ │ │ └── depth │ │ │ │ │ └── article.html │ │ │ │ └── sqlite3metaconnector │ │ │ │ └── properties │ │ │ │ └── structure │ │ │ │ └── depth │ │ │ │ └── article.html │ │ └── nav.json │ ├── nav.json │ ├── memory │ │ ├── type-aliases │ │ │ ├── transport │ │ │ │ └── article.html │ │ │ └── article.html │ │ ├── functions │ │ │ ├── transport │ │ │ │ └── article.html │ │ │ └── article.html │ │ ├── nav.json │ │ └── article.html │ ├── durable-object │ │ ├── functions │ │ │ ├── utility │ │ │ │ └── article.html │ │ │ └── creation │ │ │ │ └── article.html │ │ ├── interfaces │ │ │ ├── article.html │ │ │ └── type │ │ │ │ └── article.html │ │ └── classes │ │ │ └── class │ │ │ ├── syncletdurableobject │ │ │ ├── constructors │ │ │ │ ├── article.html │ │ │ │ └── constructor │ │ │ └── methods │ │ │ │ ├── sync │ │ │ │ └── article.html │ │ │ │ └── logging │ │ │ │ └── article.html │ │ │ └── brokeronlydurableobject │ │ │ └── constructors │ │ │ ├── article.html │ │ │ └── constructor │ ├── tinybase │ │ ├── type-aliases │ │ │ ├── type │ │ │ │ └── article.html │ │ │ └── article.html │ │ ├── interfaces │ │ │ ├── article.html │ │ │ └── connector │ │ │ │ └── article.html │ │ └── nav.json │ ├── browser │ │ ├── functions │ │ │ └── transport │ │ │ │ └── article.html │ │ ├── type-aliases │ │ │ └── transport │ │ │ │ └── article.html │ │ └── nav.json │ ├── database │ │ ├── functions │ │ │ ├── article.html │ │ │ └── function │ │ │ │ └── article.html │ │ ├── article.html │ │ ├── nav.json │ │ └── type-aliases │ │ │ ├── type │ │ │ └── article.html │ │ │ └── article.html │ └── fs │ │ ├── interfaces │ │ └── connector │ │ │ ├── filedataconnector │ │ │ ├── properties │ │ │ │ └── structure │ │ │ │ │ ├── depth │ │ │ │ │ └── article.html │ │ │ │ │ └── article.html │ │ │ └── methods │ │ │ │ ├── accessor │ │ │ │ └── article.html │ │ │ │ └── logging │ │ │ │ └── article.html │ │ │ ├── filemetaconnector │ │ │ ├── properties │ │ │ │ └── structure │ │ │ │ │ ├── depth │ │ │ │ │ └── article.html │ │ │ │ │ └── article.html │ │ │ └── methods │ │ │ │ ├── accessor │ │ │ │ └── article.html │ │ │ │ └── logging │ │ │ │ └── article.html │ │ │ ├── directorydataconnector │ │ │ ├── properties │ │ │ │ └── structure │ │ │ │ │ └── depth │ │ │ │ │ └── article.html │ │ │ └── methods │ │ │ │ └── accessor │ │ │ │ └── article.html │ │ │ └── directorymetaconnector │ │ │ └── properties │ │ │ └── structure │ │ │ └── depth │ │ │ └── article.html │ │ └── nav.json ├── favicon.svg └── websockets.svg ├── site ├── extras │ ├── .nojekyll │ ├── CNAME │ ├── favicon.png │ ├── cloudflare.svg │ ├── favicon.svg │ └── websockets.svg ├── ui │ ├── common.ts │ ├── ArticleInner.tsx │ ├── Home.tsx │ ├── Main.tsx │ ├── Footer.tsx │ ├── Header.tsx │ └── ExecutablePen.tsx ├── js │ ├── version.ts │ └── home.ts ├── fonts │ ├── inter.woff2 │ ├── shantell.woff2 │ └── inconsolata.woff2 ├── guides │ ├── 1_the_basics │ │ ├── index.md │ │ └── 2_getting_started.md │ └── index.md ├── home │ └── .prettierrc └── tsconfig.json ├── test ├── vitest │ ├── cloudflare-workers-stub.ts │ └── reporter.ts ├── unit │ ├── __snapshots__ │ │ ├── common connector tests > 1-depth > 2-way > connected, deletion.equivalent #2 │ │ ├── common connector tests > 1-depth > 2-way > connected, initial.equivalent #1 │ │ ├── common connector tests > 2-depth > 2-way > connected, deletion.equivalent #2 │ │ ├── common connector tests > 2-depth > 2-way > connected, initial.equivalent #1 │ │ ├── common connector tests > 3-depth > 2-way > connected, deletion.equivalent #2 │ │ ├── common connector tests > 3-depth > 2-way > connected, initial.equivalent #1 │ │ ├── common connector tests > 4-depth > 2-way > connected, deletion.equivalent #2 │ │ ├── common connector tests > 4-depth > 2-way > connected, initial.equivalent #1 │ │ ├── common connector tests > 1-depth > 10-way > chain.equivalent #1 │ │ ├── common connector tests > 1-depth > 10-way > chain.equivalent #10 │ │ ├── common connector tests > 1-depth > 10-way > chain.equivalent #2 │ │ ├── common connector tests > 1-depth > 10-way > chain.equivalent #3 │ │ ├── common connector tests > 1-depth > 10-way > chain.equivalent #4 │ │ ├── common connector tests > 1-depth > 10-way > chain.equivalent #5 │ │ ├── common connector tests > 1-depth > 10-way > chain.equivalent #6 │ │ ├── common connector tests > 1-depth > 10-way > chain.equivalent #7 │ │ ├── common connector tests > 1-depth > 10-way > chain.equivalent #8 │ │ ├── common connector tests > 1-depth > 10-way > chain.equivalent #9 │ │ ├── common connector tests > 1-depth > 10-way > pool.equivalent #1 │ │ ├── common connector tests > 1-depth > 10-way > pool.equivalent #10 │ │ ├── common connector tests > 1-depth > 10-way > pool.equivalent #2 │ │ ├── common connector tests > 1-depth > 10-way > pool.equivalent #3 │ │ ├── common connector tests > 1-depth > 10-way > pool.equivalent #4 │ │ ├── common connector tests > 1-depth > 10-way > pool.equivalent #5 │ │ ├── common connector tests > 1-depth > 10-way > pool.equivalent #6 │ │ ├── common connector tests > 1-depth > 10-way > pool.equivalent #7 │ │ ├── common connector tests > 1-depth > 10-way > pool.equivalent #8 │ │ ├── common connector tests > 1-depth > 10-way > pool.equivalent #9 │ │ ├── common connector tests > 1-depth > 10-way > ring.equivalent #1 │ │ ├── common connector tests > 1-depth > 10-way > ring.equivalent #10 │ │ ├── common connector tests > 1-depth > 10-way > ring.equivalent #2 │ │ ├── common connector tests > 1-depth > 10-way > ring.equivalent #3 │ │ ├── common connector tests > 1-depth > 10-way > ring.equivalent #4 │ │ ├── common connector tests > 1-depth > 10-way > ring.equivalent #5 │ │ ├── common connector tests > 1-depth > 10-way > ring.equivalent #6 │ │ ├── common connector tests > 1-depth > 10-way > ring.equivalent #7 │ │ ├── common connector tests > 1-depth > 10-way > ring.equivalent #8 │ │ ├── common connector tests > 1-depth > 10-way > ring.equivalent #9 │ │ ├── common connector tests > 1-depth > 2-way > connected.equivalent #1 │ │ ├── common connector tests > 1-depth > 2-way > connected.equivalent #2 │ │ ├── common connector tests > 1-depth > 3-way > chain.equivalent #1 │ │ ├── common connector tests > 1-depth > 3-way > chain.equivalent #2 │ │ ├── common connector tests > 1-depth > 3-way > chain.equivalent #3 │ │ ├── common connector tests > 1-depth > 3-way > pool.equivalent #1 │ │ ├── common connector tests > 1-depth > 3-way > pool.equivalent #2 │ │ ├── common connector tests > 1-depth > 3-way > pool.equivalent #3 │ │ ├── common connector tests > 1-depth > 3-way > ring.equivalent #1 │ │ ├── common connector tests > 1-depth > 3-way > ring.equivalent #2 │ │ ├── common connector tests > 1-depth > 3-way > ring.equivalent #3 │ │ ├── common connector tests > 1-depth > 2-way > connected, deletion.equivalent #1 │ │ ├── common connector tests > 1-depth > 2-way > start 1, set 1, start 2.equivalent #2 │ │ ├── common connector tests > 1-depth > 2-way > start 2, set 1, start 1.equivalent #2 │ │ ├── common connector tests > 1-depth > 2-way > stop 1, set 1, start 1.equivalent #1 │ │ ├── common connector tests > 1-depth > 2-way > stop 1, set 1, start 1.equivalent #3 │ │ ├── common connector tests > 1-depth > 2-way > stop 1, set 2, start 1.equivalent #1 │ │ ├── common connector tests > 1-depth > 2-way > stop 1, set 2, start 1.equivalent #3 │ │ ├── common connector tests > 1-depth > 2-way > disconnected, conflicting values.equivalent #1 │ │ ├── common connector tests > 1-depth > 2-way > set 1, set 2, start 2, start 1.equivalent #3 │ │ ├── common connector tests > 2-depth > 10-way > chain.equivalent #1 │ │ ├── common connector tests > 2-depth > 10-way > chain.equivalent #10 │ │ ├── common connector tests > 2-depth > 10-way > chain.equivalent #2 │ │ ├── common connector tests > 2-depth > 10-way > chain.equivalent #3 │ │ ├── common connector tests > 2-depth > 10-way > chain.equivalent #4 │ │ ├── common connector tests > 2-depth > 10-way > chain.equivalent #5 │ │ ├── common connector tests > 2-depth > 10-way > chain.equivalent #6 │ │ ├── common connector tests > 2-depth > 10-way > chain.equivalent #7 │ │ ├── common connector tests > 2-depth > 10-way > chain.equivalent #8 │ │ ├── common connector tests > 2-depth > 10-way > chain.equivalent #9 │ │ ├── common connector tests > 2-depth > 10-way > pool.equivalent #1 │ │ ├── common connector tests > 2-depth > 10-way > pool.equivalent #10 │ │ ├── common connector tests > 2-depth > 10-way > pool.equivalent #2 │ │ ├── common connector tests > 2-depth > 10-way > pool.equivalent #3 │ │ ├── common connector tests > 2-depth > 10-way > pool.equivalent #4 │ │ ├── common connector tests > 2-depth > 10-way > pool.equivalent #5 │ │ ├── common connector tests > 2-depth > 10-way > pool.equivalent #6 │ │ ├── common connector tests > 2-depth > 10-way > pool.equivalent #7 │ │ ├── common connector tests > 2-depth > 10-way > pool.equivalent #8 │ │ ├── common connector tests > 2-depth > 10-way > pool.equivalent #9 │ │ ├── common connector tests > 2-depth > 10-way > ring.equivalent #1 │ │ ├── common connector tests > 2-depth > 10-way > ring.equivalent #10 │ │ ├── common connector tests > 2-depth > 10-way > ring.equivalent #2 │ │ ├── common connector tests > 2-depth > 10-way > ring.equivalent #3 │ │ ├── common connector tests > 2-depth > 10-way > ring.equivalent #4 │ │ ├── common connector tests > 2-depth > 10-way > ring.equivalent #5 │ │ ├── common connector tests > 2-depth > 10-way > ring.equivalent #6 │ │ ├── common connector tests > 2-depth > 10-way > ring.equivalent #7 │ │ ├── common connector tests > 2-depth > 10-way > ring.equivalent #8 │ │ ├── common connector tests > 2-depth > 10-way > ring.equivalent #9 │ │ ├── common connector tests > 2-depth > 2-way > connected.equivalent #1 │ │ ├── common connector tests > 2-depth > 2-way > connected.equivalent #2 │ │ ├── common connector tests > 2-depth > 3-way > chain.equivalent #1 │ │ ├── common connector tests > 2-depth > 3-way > chain.equivalent #2 │ │ ├── common connector tests > 2-depth > 3-way > chain.equivalent #3 │ │ ├── common connector tests > 2-depth > 3-way > pool.equivalent #1 │ │ ├── common connector tests > 2-depth > 3-way > pool.equivalent #2 │ │ ├── common connector tests > 2-depth > 3-way > pool.equivalent #3 │ │ ├── common connector tests > 2-depth > 3-way > ring.equivalent #1 │ │ ├── common connector tests > 2-depth > 3-way > ring.equivalent #2 │ │ ├── common connector tests > 2-depth > 3-way > ring.equivalent #3 │ │ ├── common connector tests > 1-depth > 2-way > connected, near atom.equivalent #1 │ │ ├── common connector tests > 1-depth > 2-way > disconnected, near atom.equivalent #1 │ │ ├── common connector tests > 2-depth > 2-way > connected, deletion.equivalent #1 │ │ ├── common connector tests > 2-depth > 2-way > start 1, set 1, start 2.equivalent #2 │ │ ├── common connector tests > 2-depth > 2-way > start 2, set 1, start 1.equivalent #2 │ │ ├── common connector tests > 2-depth > 2-way > stop 1, set 1, start 1.equivalent #1 │ │ ├── common connector tests > 2-depth > 2-way > stop 1, set 1, start 1.equivalent #3 │ │ ├── common connector tests > 2-depth > 2-way > stop 1, set 2, start 1.equivalent #1 │ │ ├── common connector tests > 2-depth > 2-way > stop 1, set 2, start 1.equivalent #3 │ │ ├── common connector tests > 1-depth > 2-way > start 1, set 1, start 2.differing #1 │ │ ├── common connector tests > 1-depth > 2-way > start 2, set 1, start 1.differing #1 │ │ ├── common connector tests > 1-depth > 2-way > set 1, set 2, start 2, start 1.differing #1 │ │ ├── common connector tests > 2-depth > 2-way > disconnected, conflicting values.equivalent #1 │ │ ├── common connector tests > 2-depth > 2-way > set 1, set 2, start 2, start 1.equivalent #3 │ │ ├── common connector tests > 2-depth > 2-way > connected, near atom.equivalent #1 │ │ ├── common connector tests > 3-depth > 10-way > chain.equivalent #1 │ │ ├── common connector tests > 3-depth > 10-way > chain.equivalent #10 │ │ ├── common connector tests > 3-depth > 10-way > chain.equivalent #2 │ │ ├── common connector tests > 3-depth > 10-way > chain.equivalent #3 │ │ ├── common connector tests > 3-depth > 10-way > chain.equivalent #4 │ │ ├── common connector tests > 3-depth > 10-way > chain.equivalent #5 │ │ ├── common connector tests > 3-depth > 10-way > chain.equivalent #6 │ │ ├── common connector tests > 3-depth > 10-way > chain.equivalent #7 │ │ ├── common connector tests > 3-depth > 10-way > chain.equivalent #8 │ │ ├── common connector tests > 3-depth > 10-way > chain.equivalent #9 │ │ ├── common connector tests > 3-depth > 10-way > pool.equivalent #1 │ │ ├── common connector tests > 3-depth > 10-way > pool.equivalent #10 │ │ ├── common connector tests > 3-depth > 10-way > pool.equivalent #2 │ │ ├── common connector tests > 3-depth > 10-way > pool.equivalent #3 │ │ ├── common connector tests > 3-depth > 10-way > pool.equivalent #4 │ │ ├── common connector tests > 3-depth > 10-way > pool.equivalent #5 │ │ ├── common connector tests > 3-depth > 10-way > pool.equivalent #6 │ │ ├── common connector tests > 3-depth > 10-way > pool.equivalent #7 │ │ ├── common connector tests > 3-depth > 10-way > pool.equivalent #8 │ │ ├── common connector tests > 3-depth > 10-way > pool.equivalent #9 │ │ ├── common connector tests > 3-depth > 10-way > ring.equivalent #1 │ │ ├── common connector tests > 3-depth > 10-way > ring.equivalent #10 │ │ ├── common connector tests > 3-depth > 10-way > ring.equivalent #2 │ │ ├── common connector tests > 3-depth > 10-way > ring.equivalent #3 │ │ ├── common connector tests > 3-depth > 10-way > ring.equivalent #4 │ │ ├── common connector tests > 3-depth > 10-way > ring.equivalent #5 │ │ ├── common connector tests > 3-depth > 10-way > ring.equivalent #6 │ │ ├── common connector tests > 3-depth > 10-way > ring.equivalent #7 │ │ ├── common connector tests > 3-depth > 10-way > ring.equivalent #8 │ │ ├── common connector tests > 3-depth > 10-way > ring.equivalent #9 │ │ ├── common connector tests > 3-depth > 2-way > connected.equivalent #1 │ │ ├── common connector tests > 3-depth > 2-way > connected.equivalent #2 │ │ ├── common connector tests > 3-depth > 3-way > chain.equivalent #1 │ │ ├── common connector tests > 3-depth > 3-way > chain.equivalent #2 │ │ ├── common connector tests > 3-depth > 3-way > chain.equivalent #3 │ │ ├── common connector tests > 3-depth > 3-way > pool.equivalent #1 │ │ ├── common connector tests > 3-depth > 3-way > pool.equivalent #2 │ │ ├── common connector tests > 3-depth > 3-way > pool.equivalent #3 │ │ ├── common connector tests > 3-depth > 3-way > ring.equivalent #1 │ │ ├── common connector tests > 3-depth > 3-way > ring.equivalent #2 │ │ ├── common connector tests > 3-depth > 3-way > ring.equivalent #3 │ │ ├── common connector tests > 2-depth > 2-way > disconnected, near atom.equivalent #1 │ │ ├── common connector tests > 3-depth > 2-way > connected, deletion.equivalent #1 │ │ ├── common connector tests > 1-depth > 2-way > stop 1, set 1, start 1.differing #2 │ │ ├── common connector tests > 1-depth > 2-way > stop 1, set 2, start 1.differing #2 │ │ ├── common connector tests > 3-depth > 2-way > start 1, set 1, start 2.equivalent #2 │ │ ├── common connector tests > 3-depth > 2-way > start 2, set 1, start 1.equivalent #2 │ │ ├── common connector tests > 3-depth > 2-way > stop 1, set 1, start 1.equivalent #1 │ │ ├── common connector tests > 3-depth > 2-way > stop 1, set 1, start 1.equivalent #3 │ │ ├── common connector tests > 3-depth > 2-way > stop 1, set 2, start 1.equivalent #1 │ │ ├── common connector tests > 3-depth > 2-way > stop 1, set 2, start 1.equivalent #3 │ │ ├── common connector tests > 1-depth > 2-way > set 1, set 2, start 2, start 1.differing #2 │ │ ├── common connector tests > 2-depth > 2-way > start 1, set 1, start 2.differing #1 │ │ ├── common connector tests > 2-depth > 2-way > start 2, set 1, start 1.differing #1 │ │ ├── common connector tests > 2-depth > 2-way > connected, far atom.equivalent #1 │ │ ├── common connector tests > 2-depth > 2-way > disconnected, far atom.equivalent #1 │ │ ├── common connector tests > 2-depth > 2-way > set 1, set 2, start 2, start 1.differing #1 │ │ ├── common connector tests > 3-depth > 2-way > disconnected, conflicting values.equivalent #1 │ │ ├── common connector tests > 3-depth > 2-way > set 1, set 2, start 2, start 1.equivalent #3 │ │ ├── common connector tests > 3-depth > 2-way > connected, near atom.equivalent #1 │ │ ├── common connector tests > 4-depth > 10-way > chain.equivalent #1 │ │ ├── common connector tests > 4-depth > 10-way > chain.equivalent #10 │ │ ├── common connector tests > 4-depth > 10-way > chain.equivalent #2 │ │ ├── common connector tests > 4-depth > 10-way > chain.equivalent #3 │ │ ├── common connector tests > 4-depth > 10-way > chain.equivalent #4 │ │ ├── common connector tests > 4-depth > 10-way > chain.equivalent #5 │ │ ├── common connector tests > 4-depth > 10-way > chain.equivalent #6 │ │ ├── common connector tests > 4-depth > 10-way > chain.equivalent #7 │ │ ├── common connector tests > 4-depth > 10-way > chain.equivalent #8 │ │ ├── common connector tests > 4-depth > 10-way > chain.equivalent #9 │ │ ├── common connector tests > 4-depth > 10-way > pool.equivalent #1 │ │ ├── common connector tests > 4-depth > 10-way > pool.equivalent #10 │ │ ├── common connector tests > 4-depth > 10-way > pool.equivalent #2 │ │ ├── common connector tests > 4-depth > 10-way > pool.equivalent #3 │ │ ├── common connector tests > 4-depth > 10-way > pool.equivalent #4 │ │ ├── common connector tests > 4-depth > 10-way > pool.equivalent #5 │ │ ├── common connector tests > 4-depth > 10-way > pool.equivalent #6 │ │ ├── common connector tests > 4-depth > 10-way > pool.equivalent #7 │ │ ├── common connector tests > 4-depth > 10-way > pool.equivalent #8 │ │ ├── common connector tests > 4-depth > 10-way > pool.equivalent #9 │ │ ├── common connector tests > 4-depth > 10-way > ring.equivalent #1 │ │ ├── common connector tests > 4-depth > 10-way > ring.equivalent #10 │ │ ├── common connector tests > 4-depth > 10-way > ring.equivalent #2 │ │ ├── common connector tests > 4-depth > 10-way > ring.equivalent #3 │ │ ├── common connector tests > 4-depth > 10-way > ring.equivalent #4 │ │ ├── common connector tests > 4-depth > 10-way > ring.equivalent #5 │ │ ├── common connector tests > 4-depth > 10-way > ring.equivalent #6 │ │ ├── common connector tests > 4-depth > 10-way > ring.equivalent #7 │ │ ├── common connector tests > 4-depth > 10-way > ring.equivalent #8 │ │ ├── common connector tests > 4-depth > 10-way > ring.equivalent #9 │ │ ├── common connector tests > 4-depth > 2-way > connected.equivalent #1 │ │ ├── common connector tests > 4-depth > 2-way > connected.equivalent #2 │ │ ├── common connector tests > 4-depth > 3-way > chain.equivalent #1 │ │ ├── common connector tests > 4-depth > 3-way > chain.equivalent #2 │ │ ├── common connector tests > 4-depth > 3-way > chain.equivalent #3 │ │ ├── common connector tests > 4-depth > 3-way > pool.equivalent #1 │ │ ├── common connector tests > 4-depth > 3-way > pool.equivalent #2 │ │ ├── common connector tests > 4-depth > 3-way > pool.equivalent #3 │ │ ├── common connector tests > 4-depth > 3-way > ring.equivalent #1 │ │ ├── common connector tests > 4-depth > 3-way > ring.equivalent #2 │ │ ├── common connector tests > 4-depth > 3-way > ring.equivalent #3 │ │ ├── common connector tests > 3-depth > 2-way > disconnected, near atom.equivalent #1 │ │ ├── common connector tests > 4-depth > 2-way > connected, deletion.equivalent #1 │ │ ├── common connector tests > 4-depth > 2-way > start 1, set 1, start 2.equivalent #2 │ │ ├── common connector tests > 4-depth > 2-way > start 2, set 1, start 1.equivalent #2 │ │ ├── common connector tests > 4-depth > 2-way > stop 1, set 1, start 1.equivalent #1 │ │ ├── common connector tests > 4-depth > 2-way > stop 1, set 1, start 1.equivalent #3 │ │ ├── common connector tests > 4-depth > 2-way > stop 1, set 2, start 1.equivalent #1 │ │ ├── common connector tests > 4-depth > 2-way > stop 1, set 2, start 1.equivalent #3 │ │ ├── common connector tests > 2-depth > 2-way > disconnected, conflicting values 2.equivalent #1 │ │ ├── common connector tests > 3-depth > 2-way > start 1, set 1, start 2.differing #1 │ │ ├── common connector tests > 3-depth > 2-way > start 2, set 1, start 1.differing #1 │ │ ├── common connector tests > 4-depth > 2-way > disconnected, conflicting values.equivalent #1 │ │ ├── common connector tests > 4-depth > 2-way > set 1, set 2, start 2, start 1.equivalent #3 │ │ ├── common connector tests > 3-depth > 2-way > set 1, set 2, start 2, start 1.differing #1 │ │ ├── common connector tests > 2-depth > 2-way > stop 1, set 1, start 1.differing #2 │ │ ├── common connector tests > 2-depth > 2-way > stop 1, set 2, start 1.differing #2 │ │ ├── common connector tests > 4-depth > 2-way > connected, near atom.equivalent #1 │ │ ├── common connector tests > 4-depth > 2-way > disconnected, near atom.equivalent #1 │ │ ├── common connector tests > 2-depth > 2-way > set 1, set 2, start 2, start 1.differing #2 │ │ ├── common connector tests > 3-depth > 2-way > connected, far atom.equivalent #1 │ │ ├── common connector tests > 3-depth > 2-way > disconnected, far atom.equivalent #1 │ │ ├── common connector tests > 4-depth > 2-way > start 1, set 1, start 2.differing #1 │ │ ├── common connector tests > 4-depth > 2-way > start 2, set 1, start 1.differing #1 │ │ ├── common connector tests > 4-depth > 2-way > set 1, set 2, start 2, start 1.differing #1 │ │ ├── common connector tests > 3-depth > 2-way > disconnected, conflicting values 2.equivalent #1 │ │ ├── common connector tests > 3-depth > 2-way > stop 1, set 1, start 1.differing #2 │ │ ├── common connector tests > 3-depth > 2-way > stop 1, set 2, start 1.differing #2 │ │ ├── common connector tests > 3-depth > 2-way > set 1, set 2, start 2, start 1.differing #2 │ │ ├── common connector tests > 4-depth > 2-way > connected, far atom.equivalent #1 │ │ ├── common connector tests > 4-depth > 2-way > disconnected, far atom.equivalent #1 │ │ ├── common connector tests > 4-depth > 2-way > disconnected, conflicting values 2.equivalent #1 │ │ ├── common connector tests > 4-depth > 2-way > stop 1, set 1, start 1.differing #2 │ │ ├── common connector tests > 4-depth > 2-way > stop 1, set 2, start 1.differing #2 │ │ └── common connector tests > 4-depth > 2-way > set 1, set 2, start 2, start 1.differing #2 │ └── core │ │ └── sync.test.ts ├── prod │ ├── esm.ts │ └── imports.test.ts ├── tsconfig.json └── durable-object │ └── connectors.test.ts ├── .gitignore ├── CONTRIBUTING.md ├── servers └── demo-synclets-org │ ├── .dockerignore │ ├── index.ts │ ├── package.json │ ├── Dockerfile │ └── fly.toml ├── src ├── ws │ └── index.ts ├── core │ ├── constants.ts │ └── index.ts ├── index.ts ├── memory │ └── index.ts ├── utils │ ├── index.ts │ ├── packets.ts │ ├── types.ts │ └── json.ts ├── fs │ └── index.ts ├── durable-object │ ├── index.ts │ └── types.ts ├── browser │ └── index.ts ├── common │ ├── set.ts │ ├── queue.ts │ ├── codec.ts │ └── string.ts └── @types │ ├── internal.d.ts │ └── utils │ └── index.d.ts ├── .prettierrc ├── coverage.json └── cspell.json /docs/.nojekyll: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /docs/CNAME: -------------------------------------------------------------------------------- 1 | synclets.org -------------------------------------------------------------------------------- /site/extras/.nojekyll: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /site/extras/CNAME: -------------------------------------------------------------------------------- 1 | synclets.org -------------------------------------------------------------------------------- /test/vitest/cloudflare-workers-stub.ts: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /site/ui/common.ts: -------------------------------------------------------------------------------- 1 | export const MODULES = ['']; 2 | -------------------------------------------------------------------------------- /site/js/version.ts: -------------------------------------------------------------------------------- 1 | export const thisVersion = 'v0.0.7'; -------------------------------------------------------------------------------- /docs/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tinyplex/synclets/HEAD/docs/favicon.png -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | bin 3 | lib 4 | dist 5 | tmp 6 | node_modules 7 | npm-debug.log 8 | -------------------------------------------------------------------------------- /docs/fonts/inter.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tinyplex/synclets/HEAD/docs/fonts/inter.woff2 -------------------------------------------------------------------------------- /site/fonts/inter.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tinyplex/synclets/HEAD/site/fonts/inter.woff2 -------------------------------------------------------------------------------- /docs/fonts/shantell.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tinyplex/synclets/HEAD/docs/fonts/shantell.woff2 -------------------------------------------------------------------------------- /site/extras/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tinyplex/synclets/HEAD/site/extras/favicon.png -------------------------------------------------------------------------------- /site/fonts/shantell.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tinyplex/synclets/HEAD/site/fonts/shantell.woff2 -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 1-depth > 2-way > connected, deletion.equivalent #2: -------------------------------------------------------------------------------- 1 | {} -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 1-depth > 2-way > connected, initial.equivalent #1: -------------------------------------------------------------------------------- 1 | {} -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 2-depth > 2-way > connected, deletion.equivalent #2: -------------------------------------------------------------------------------- 1 | {} -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 2-depth > 2-way > connected, initial.equivalent #1: -------------------------------------------------------------------------------- 1 | {} -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 3-depth > 2-way > connected, deletion.equivalent #2: -------------------------------------------------------------------------------- 1 | {} -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 3-depth > 2-way > connected, initial.equivalent #1: -------------------------------------------------------------------------------- 1 | {} -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 4-depth > 2-way > connected, deletion.equivalent #2: -------------------------------------------------------------------------------- 1 | {} -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 4-depth > 2-way > connected, initial.equivalent #1: -------------------------------------------------------------------------------- 1 | {} -------------------------------------------------------------------------------- /site/guides/1_the_basics/index.md: -------------------------------------------------------------------------------- 1 | # The Basics 2 | 3 | These guides cover the very basics of Synclets. 4 | -------------------------------------------------------------------------------- /docs/fonts/inconsolata.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tinyplex/synclets/HEAD/docs/fonts/inconsolata.woff2 -------------------------------------------------------------------------------- /site/fonts/inconsolata.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tinyplex/synclets/HEAD/site/fonts/inconsolata.woff2 -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 1-depth > 10-way > chain.equivalent #1: -------------------------------------------------------------------------------- 1 | { 2 | "a": "A1", 3 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 1-depth > 10-way > chain.equivalent #10: -------------------------------------------------------------------------------- 1 | { 2 | "a": "A10", 3 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 1-depth > 10-way > chain.equivalent #2: -------------------------------------------------------------------------------- 1 | { 2 | "a": "A2", 3 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 1-depth > 10-way > chain.equivalent #3: -------------------------------------------------------------------------------- 1 | { 2 | "a": "A3", 3 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 1-depth > 10-way > chain.equivalent #4: -------------------------------------------------------------------------------- 1 | { 2 | "a": "A4", 3 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 1-depth > 10-way > chain.equivalent #5: -------------------------------------------------------------------------------- 1 | { 2 | "a": "A5", 3 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 1-depth > 10-way > chain.equivalent #6: -------------------------------------------------------------------------------- 1 | { 2 | "a": "A6", 3 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 1-depth > 10-way > chain.equivalent #7: -------------------------------------------------------------------------------- 1 | { 2 | "a": "A7", 3 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 1-depth > 10-way > chain.equivalent #8: -------------------------------------------------------------------------------- 1 | { 2 | "a": "A8", 3 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 1-depth > 10-way > chain.equivalent #9: -------------------------------------------------------------------------------- 1 | { 2 | "a": "A9", 3 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 1-depth > 10-way > pool.equivalent #1: -------------------------------------------------------------------------------- 1 | { 2 | "a": "A1", 3 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 1-depth > 10-way > pool.equivalent #10: -------------------------------------------------------------------------------- 1 | { 2 | "a": "A10", 3 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 1-depth > 10-way > pool.equivalent #2: -------------------------------------------------------------------------------- 1 | { 2 | "a": "A2", 3 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 1-depth > 10-way > pool.equivalent #3: -------------------------------------------------------------------------------- 1 | { 2 | "a": "A3", 3 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 1-depth > 10-way > pool.equivalent #4: -------------------------------------------------------------------------------- 1 | { 2 | "a": "A4", 3 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 1-depth > 10-way > pool.equivalent #5: -------------------------------------------------------------------------------- 1 | { 2 | "a": "A5", 3 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 1-depth > 10-way > pool.equivalent #6: -------------------------------------------------------------------------------- 1 | { 2 | "a": "A6", 3 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 1-depth > 10-way > pool.equivalent #7: -------------------------------------------------------------------------------- 1 | { 2 | "a": "A7", 3 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 1-depth > 10-way > pool.equivalent #8: -------------------------------------------------------------------------------- 1 | { 2 | "a": "A8", 3 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 1-depth > 10-way > pool.equivalent #9: -------------------------------------------------------------------------------- 1 | { 2 | "a": "A9", 3 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 1-depth > 10-way > ring.equivalent #1: -------------------------------------------------------------------------------- 1 | { 2 | "a": "A1", 3 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 1-depth > 10-way > ring.equivalent #10: -------------------------------------------------------------------------------- 1 | { 2 | "a": "A10", 3 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 1-depth > 10-way > ring.equivalent #2: -------------------------------------------------------------------------------- 1 | { 2 | "a": "A2", 3 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 1-depth > 10-way > ring.equivalent #3: -------------------------------------------------------------------------------- 1 | { 2 | "a": "A3", 3 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 1-depth > 10-way > ring.equivalent #4: -------------------------------------------------------------------------------- 1 | { 2 | "a": "A4", 3 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 1-depth > 10-way > ring.equivalent #5: -------------------------------------------------------------------------------- 1 | { 2 | "a": "A5", 3 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 1-depth > 10-way > ring.equivalent #6: -------------------------------------------------------------------------------- 1 | { 2 | "a": "A6", 3 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 1-depth > 10-way > ring.equivalent #7: -------------------------------------------------------------------------------- 1 | { 2 | "a": "A7", 3 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 1-depth > 10-way > ring.equivalent #8: -------------------------------------------------------------------------------- 1 | { 2 | "a": "A8", 3 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 1-depth > 10-way > ring.equivalent #9: -------------------------------------------------------------------------------- 1 | { 2 | "a": "A9", 3 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 1-depth > 2-way > connected.equivalent #1: -------------------------------------------------------------------------------- 1 | { 2 | "a": "A", 3 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 1-depth > 2-way > connected.equivalent #2: -------------------------------------------------------------------------------- 1 | { 2 | "a": "B", 3 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 1-depth > 3-way > chain.equivalent #1: -------------------------------------------------------------------------------- 1 | { 2 | "a": "A1", 3 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 1-depth > 3-way > chain.equivalent #2: -------------------------------------------------------------------------------- 1 | { 2 | "a": "A2", 3 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 1-depth > 3-way > chain.equivalent #3: -------------------------------------------------------------------------------- 1 | { 2 | "a": "A3", 3 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 1-depth > 3-way > pool.equivalent #1: -------------------------------------------------------------------------------- 1 | { 2 | "a": "A1", 3 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 1-depth > 3-way > pool.equivalent #2: -------------------------------------------------------------------------------- 1 | { 2 | "a": "A2", 3 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 1-depth > 3-way > pool.equivalent #3: -------------------------------------------------------------------------------- 1 | { 2 | "a": "A3", 3 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 1-depth > 3-way > ring.equivalent #1: -------------------------------------------------------------------------------- 1 | { 2 | "a": "A1", 3 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 1-depth > 3-way > ring.equivalent #2: -------------------------------------------------------------------------------- 1 | { 2 | "a": "A2", 3 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 1-depth > 3-way > ring.equivalent #3: -------------------------------------------------------------------------------- 1 | { 2 | "a": "A3", 3 | } -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Contributing To Synclets 2 | 3 | You are very welcome to contribute to this project. Thank you! 4 | -------------------------------------------------------------------------------- /servers/demo-synclets-org/.dockerignore: -------------------------------------------------------------------------------- 1 | /.git 2 | /node_modules 3 | .dockerignore 4 | .env 5 | Dockerfile 6 | fly.toml 7 | -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 1-depth > 2-way > connected, deletion.equivalent #1: -------------------------------------------------------------------------------- 1 | { 2 | "a": "A", 3 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 1-depth > 2-way > start 1, set 1, start 2.equivalent #2: -------------------------------------------------------------------------------- 1 | { 2 | "a": "A", 3 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 1-depth > 2-way > start 2, set 1, start 1.equivalent #2: -------------------------------------------------------------------------------- 1 | { 2 | "a": "A", 3 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 1-depth > 2-way > stop 1, set 1, start 1.equivalent #1: -------------------------------------------------------------------------------- 1 | { 2 | "a": "A", 3 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 1-depth > 2-way > stop 1, set 1, start 1.equivalent #3: -------------------------------------------------------------------------------- 1 | { 2 | "a": "B", 3 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 1-depth > 2-way > stop 1, set 2, start 1.equivalent #1: -------------------------------------------------------------------------------- 1 | { 2 | "a": "A", 3 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 1-depth > 2-way > stop 1, set 2, start 1.equivalent #3: -------------------------------------------------------------------------------- 1 | { 2 | "a": "B", 3 | } -------------------------------------------------------------------------------- /src/ws/index.ts: -------------------------------------------------------------------------------- 1 | export {createWsBrokerTransport} from './broker.ts'; 2 | export {createWsClientTransport} from './client.ts'; 3 | -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 1-depth > 2-way > disconnected, conflicting values.equivalent #1: -------------------------------------------------------------------------------- 1 | { 2 | "a": "B", 3 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 1-depth > 2-way > set 1, set 2, start 2, start 1.equivalent #3: -------------------------------------------------------------------------------- 1 | { 2 | "a": "B", 3 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 2-depth > 10-way > chain.equivalent #1: -------------------------------------------------------------------------------- 1 | { 2 | "a": { 3 | "aa": "A1", 4 | }, 5 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 2-depth > 10-way > chain.equivalent #10: -------------------------------------------------------------------------------- 1 | { 2 | "a": { 3 | "aa": "A10", 4 | }, 5 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 2-depth > 10-way > chain.equivalent #2: -------------------------------------------------------------------------------- 1 | { 2 | "a": { 3 | "aa": "A2", 4 | }, 5 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 2-depth > 10-way > chain.equivalent #3: -------------------------------------------------------------------------------- 1 | { 2 | "a": { 3 | "aa": "A3", 4 | }, 5 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 2-depth > 10-way > chain.equivalent #4: -------------------------------------------------------------------------------- 1 | { 2 | "a": { 3 | "aa": "A4", 4 | }, 5 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 2-depth > 10-way > chain.equivalent #5: -------------------------------------------------------------------------------- 1 | { 2 | "a": { 3 | "aa": "A5", 4 | }, 5 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 2-depth > 10-way > chain.equivalent #6: -------------------------------------------------------------------------------- 1 | { 2 | "a": { 3 | "aa": "A6", 4 | }, 5 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 2-depth > 10-way > chain.equivalent #7: -------------------------------------------------------------------------------- 1 | { 2 | "a": { 3 | "aa": "A7", 4 | }, 5 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 2-depth > 10-way > chain.equivalent #8: -------------------------------------------------------------------------------- 1 | { 2 | "a": { 3 | "aa": "A8", 4 | }, 5 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 2-depth > 10-way > chain.equivalent #9: -------------------------------------------------------------------------------- 1 | { 2 | "a": { 3 | "aa": "A9", 4 | }, 5 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 2-depth > 10-way > pool.equivalent #1: -------------------------------------------------------------------------------- 1 | { 2 | "a": { 3 | "aa": "A1", 4 | }, 5 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 2-depth > 10-way > pool.equivalent #10: -------------------------------------------------------------------------------- 1 | { 2 | "a": { 3 | "aa": "A10", 4 | }, 5 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 2-depth > 10-way > pool.equivalent #2: -------------------------------------------------------------------------------- 1 | { 2 | "a": { 3 | "aa": "A2", 4 | }, 5 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 2-depth > 10-way > pool.equivalent #3: -------------------------------------------------------------------------------- 1 | { 2 | "a": { 3 | "aa": "A3", 4 | }, 5 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 2-depth > 10-way > pool.equivalent #4: -------------------------------------------------------------------------------- 1 | { 2 | "a": { 3 | "aa": "A4", 4 | }, 5 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 2-depth > 10-way > pool.equivalent #5: -------------------------------------------------------------------------------- 1 | { 2 | "a": { 3 | "aa": "A5", 4 | }, 5 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 2-depth > 10-way > pool.equivalent #6: -------------------------------------------------------------------------------- 1 | { 2 | "a": { 3 | "aa": "A6", 4 | }, 5 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 2-depth > 10-way > pool.equivalent #7: -------------------------------------------------------------------------------- 1 | { 2 | "a": { 3 | "aa": "A7", 4 | }, 5 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 2-depth > 10-way > pool.equivalent #8: -------------------------------------------------------------------------------- 1 | { 2 | "a": { 3 | "aa": "A8", 4 | }, 5 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 2-depth > 10-way > pool.equivalent #9: -------------------------------------------------------------------------------- 1 | { 2 | "a": { 3 | "aa": "A9", 4 | }, 5 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 2-depth > 10-way > ring.equivalent #1: -------------------------------------------------------------------------------- 1 | { 2 | "a": { 3 | "aa": "A1", 4 | }, 5 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 2-depth > 10-way > ring.equivalent #10: -------------------------------------------------------------------------------- 1 | { 2 | "a": { 3 | "aa": "A10", 4 | }, 5 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 2-depth > 10-way > ring.equivalent #2: -------------------------------------------------------------------------------- 1 | { 2 | "a": { 3 | "aa": "A2", 4 | }, 5 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 2-depth > 10-way > ring.equivalent #3: -------------------------------------------------------------------------------- 1 | { 2 | "a": { 3 | "aa": "A3", 4 | }, 5 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 2-depth > 10-way > ring.equivalent #4: -------------------------------------------------------------------------------- 1 | { 2 | "a": { 3 | "aa": "A4", 4 | }, 5 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 2-depth > 10-way > ring.equivalent #5: -------------------------------------------------------------------------------- 1 | { 2 | "a": { 3 | "aa": "A5", 4 | }, 5 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 2-depth > 10-way > ring.equivalent #6: -------------------------------------------------------------------------------- 1 | { 2 | "a": { 3 | "aa": "A6", 4 | }, 5 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 2-depth > 10-way > ring.equivalent #7: -------------------------------------------------------------------------------- 1 | { 2 | "a": { 3 | "aa": "A7", 4 | }, 5 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 2-depth > 10-way > ring.equivalent #8: -------------------------------------------------------------------------------- 1 | { 2 | "a": { 3 | "aa": "A8", 4 | }, 5 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 2-depth > 10-way > ring.equivalent #9: -------------------------------------------------------------------------------- 1 | { 2 | "a": { 3 | "aa": "A9", 4 | }, 5 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 2-depth > 2-way > connected.equivalent #1: -------------------------------------------------------------------------------- 1 | { 2 | "a": { 3 | "aa": "A", 4 | }, 5 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 2-depth > 2-way > connected.equivalent #2: -------------------------------------------------------------------------------- 1 | { 2 | "a": { 3 | "aa": "B", 4 | }, 5 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 2-depth > 3-way > chain.equivalent #1: -------------------------------------------------------------------------------- 1 | { 2 | "a": { 3 | "aa": "A1", 4 | }, 5 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 2-depth > 3-way > chain.equivalent #2: -------------------------------------------------------------------------------- 1 | { 2 | "a": { 3 | "aa": "A2", 4 | }, 5 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 2-depth > 3-way > chain.equivalent #3: -------------------------------------------------------------------------------- 1 | { 2 | "a": { 3 | "aa": "A3", 4 | }, 5 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 2-depth > 3-way > pool.equivalent #1: -------------------------------------------------------------------------------- 1 | { 2 | "a": { 3 | "aa": "A1", 4 | }, 5 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 2-depth > 3-way > pool.equivalent #2: -------------------------------------------------------------------------------- 1 | { 2 | "a": { 3 | "aa": "A2", 4 | }, 5 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 2-depth > 3-way > pool.equivalent #3: -------------------------------------------------------------------------------- 1 | { 2 | "a": { 3 | "aa": "A3", 4 | }, 5 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 2-depth > 3-way > ring.equivalent #1: -------------------------------------------------------------------------------- 1 | { 2 | "a": { 3 | "aa": "A1", 4 | }, 5 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 2-depth > 3-way > ring.equivalent #2: -------------------------------------------------------------------------------- 1 | { 2 | "a": { 3 | "aa": "A2", 4 | }, 5 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 2-depth > 3-way > ring.equivalent #3: -------------------------------------------------------------------------------- 1 | { 2 | "a": { 3 | "aa": "A3", 4 | }, 5 | } -------------------------------------------------------------------------------- /site/home/.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "bracketSpacing": false, 3 | "singleQuote": true, 4 | "trailingComma": "all", 5 | "printWidth": 56 6 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 1-depth > 2-way > connected, near atom.equivalent #1: -------------------------------------------------------------------------------- 1 | { 2 | "a": "A", 3 | "b": "B", 4 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 1-depth > 2-way > disconnected, near atom.equivalent #1: -------------------------------------------------------------------------------- 1 | { 2 | "a": "A", 3 | "b": "B", 4 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 2-depth > 2-way > connected, deletion.equivalent #1: -------------------------------------------------------------------------------- 1 | { 2 | "a": { 3 | "aa": "A", 4 | }, 5 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 2-depth > 2-way > start 1, set 1, start 2.equivalent #2: -------------------------------------------------------------------------------- 1 | { 2 | "a": { 3 | "aa": "A", 4 | }, 5 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 2-depth > 2-way > start 2, set 1, start 1.equivalent #2: -------------------------------------------------------------------------------- 1 | { 2 | "a": { 3 | "aa": "A", 4 | }, 5 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 2-depth > 2-way > stop 1, set 1, start 1.equivalent #1: -------------------------------------------------------------------------------- 1 | { 2 | "a": { 3 | "aa": "A", 4 | }, 5 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 2-depth > 2-way > stop 1, set 1, start 1.equivalent #3: -------------------------------------------------------------------------------- 1 | { 2 | "a": { 3 | "aa": "B", 4 | }, 5 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 2-depth > 2-way > stop 1, set 2, start 1.equivalent #1: -------------------------------------------------------------------------------- 1 | { 2 | "a": { 3 | "aa": "A", 4 | }, 5 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 2-depth > 2-way > stop 1, set 2, start 1.equivalent #3: -------------------------------------------------------------------------------- 1 | { 2 | "a": { 3 | "aa": "B", 4 | }, 5 | } -------------------------------------------------------------------------------- /docs/nav.json: -------------------------------------------------------------------------------- 1 | {"i":"root","n":"Synclets","u":"/","c":1,"p":1,"o":1,"_":[{"i":"G","n":"Guides","u":"/guides/","p":1},{"i":"api","n":"API","u":"/api/","p":1}]} -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 1-depth > 2-way > start 1, set 1, start 2.differing #1: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "a": "A", 4 | }, 5 | {}, 6 | ] -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 1-depth > 2-way > start 2, set 1, start 1.differing #1: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "a": "A", 4 | }, 5 | {}, 6 | ] -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 1-depth > 2-way > set 1, set 2, start 2, start 1.differing #1: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "a": "A", 4 | }, 5 | {}, 6 | ] -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 2-depth > 2-way > disconnected, conflicting values.equivalent #1: -------------------------------------------------------------------------------- 1 | { 2 | "a": { 3 | "aa": "B", 4 | }, 5 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 2-depth > 2-way > set 1, set 2, start 2, start 1.equivalent #3: -------------------------------------------------------------------------------- 1 | { 2 | "a": { 3 | "aa": "B", 4 | }, 5 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 2-depth > 2-way > connected, near atom.equivalent #1: -------------------------------------------------------------------------------- 1 | { 2 | "a": { 3 | "aa": "A", 4 | "ab": "B", 5 | }, 6 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 3-depth > 10-way > chain.equivalent #1: -------------------------------------------------------------------------------- 1 | { 2 | "a": { 3 | "aa": { 4 | "aaa": "A1", 5 | }, 6 | }, 7 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 3-depth > 10-way > chain.equivalent #10: -------------------------------------------------------------------------------- 1 | { 2 | "a": { 3 | "aa": { 4 | "aaa": "A10", 5 | }, 6 | }, 7 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 3-depth > 10-way > chain.equivalent #2: -------------------------------------------------------------------------------- 1 | { 2 | "a": { 3 | "aa": { 4 | "aaa": "A2", 5 | }, 6 | }, 7 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 3-depth > 10-way > chain.equivalent #3: -------------------------------------------------------------------------------- 1 | { 2 | "a": { 3 | "aa": { 4 | "aaa": "A3", 5 | }, 6 | }, 7 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 3-depth > 10-way > chain.equivalent #4: -------------------------------------------------------------------------------- 1 | { 2 | "a": { 3 | "aa": { 4 | "aaa": "A4", 5 | }, 6 | }, 7 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 3-depth > 10-way > chain.equivalent #5: -------------------------------------------------------------------------------- 1 | { 2 | "a": { 3 | "aa": { 4 | "aaa": "A5", 5 | }, 6 | }, 7 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 3-depth > 10-way > chain.equivalent #6: -------------------------------------------------------------------------------- 1 | { 2 | "a": { 3 | "aa": { 4 | "aaa": "A6", 5 | }, 6 | }, 7 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 3-depth > 10-way > chain.equivalent #7: -------------------------------------------------------------------------------- 1 | { 2 | "a": { 3 | "aa": { 4 | "aaa": "A7", 5 | }, 6 | }, 7 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 3-depth > 10-way > chain.equivalent #8: -------------------------------------------------------------------------------- 1 | { 2 | "a": { 3 | "aa": { 4 | "aaa": "A8", 5 | }, 6 | }, 7 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 3-depth > 10-way > chain.equivalent #9: -------------------------------------------------------------------------------- 1 | { 2 | "a": { 3 | "aa": { 4 | "aaa": "A9", 5 | }, 6 | }, 7 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 3-depth > 10-way > pool.equivalent #1: -------------------------------------------------------------------------------- 1 | { 2 | "a": { 3 | "aa": { 4 | "aaa": "A1", 5 | }, 6 | }, 7 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 3-depth > 10-way > pool.equivalent #10: -------------------------------------------------------------------------------- 1 | { 2 | "a": { 3 | "aa": { 4 | "aaa": "A10", 5 | }, 6 | }, 7 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 3-depth > 10-way > pool.equivalent #2: -------------------------------------------------------------------------------- 1 | { 2 | "a": { 3 | "aa": { 4 | "aaa": "A2", 5 | }, 6 | }, 7 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 3-depth > 10-way > pool.equivalent #3: -------------------------------------------------------------------------------- 1 | { 2 | "a": { 3 | "aa": { 4 | "aaa": "A3", 5 | }, 6 | }, 7 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 3-depth > 10-way > pool.equivalent #4: -------------------------------------------------------------------------------- 1 | { 2 | "a": { 3 | "aa": { 4 | "aaa": "A4", 5 | }, 6 | }, 7 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 3-depth > 10-way > pool.equivalent #5: -------------------------------------------------------------------------------- 1 | { 2 | "a": { 3 | "aa": { 4 | "aaa": "A5", 5 | }, 6 | }, 7 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 3-depth > 10-way > pool.equivalent #6: -------------------------------------------------------------------------------- 1 | { 2 | "a": { 3 | "aa": { 4 | "aaa": "A6", 5 | }, 6 | }, 7 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 3-depth > 10-way > pool.equivalent #7: -------------------------------------------------------------------------------- 1 | { 2 | "a": { 3 | "aa": { 4 | "aaa": "A7", 5 | }, 6 | }, 7 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 3-depth > 10-way > pool.equivalent #8: -------------------------------------------------------------------------------- 1 | { 2 | "a": { 3 | "aa": { 4 | "aaa": "A8", 5 | }, 6 | }, 7 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 3-depth > 10-way > pool.equivalent #9: -------------------------------------------------------------------------------- 1 | { 2 | "a": { 3 | "aa": { 4 | "aaa": "A9", 5 | }, 6 | }, 7 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 3-depth > 10-way > ring.equivalent #1: -------------------------------------------------------------------------------- 1 | { 2 | "a": { 3 | "aa": { 4 | "aaa": "A1", 5 | }, 6 | }, 7 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 3-depth > 10-way > ring.equivalent #10: -------------------------------------------------------------------------------- 1 | { 2 | "a": { 3 | "aa": { 4 | "aaa": "A10", 5 | }, 6 | }, 7 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 3-depth > 10-way > ring.equivalent #2: -------------------------------------------------------------------------------- 1 | { 2 | "a": { 3 | "aa": { 4 | "aaa": "A2", 5 | }, 6 | }, 7 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 3-depth > 10-way > ring.equivalent #3: -------------------------------------------------------------------------------- 1 | { 2 | "a": { 3 | "aa": { 4 | "aaa": "A3", 5 | }, 6 | }, 7 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 3-depth > 10-way > ring.equivalent #4: -------------------------------------------------------------------------------- 1 | { 2 | "a": { 3 | "aa": { 4 | "aaa": "A4", 5 | }, 6 | }, 7 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 3-depth > 10-way > ring.equivalent #5: -------------------------------------------------------------------------------- 1 | { 2 | "a": { 3 | "aa": { 4 | "aaa": "A5", 5 | }, 6 | }, 7 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 3-depth > 10-way > ring.equivalent #6: -------------------------------------------------------------------------------- 1 | { 2 | "a": { 3 | "aa": { 4 | "aaa": "A6", 5 | }, 6 | }, 7 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 3-depth > 10-way > ring.equivalent #7: -------------------------------------------------------------------------------- 1 | { 2 | "a": { 3 | "aa": { 4 | "aaa": "A7", 5 | }, 6 | }, 7 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 3-depth > 10-way > ring.equivalent #8: -------------------------------------------------------------------------------- 1 | { 2 | "a": { 3 | "aa": { 4 | "aaa": "A8", 5 | }, 6 | }, 7 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 3-depth > 10-way > ring.equivalent #9: -------------------------------------------------------------------------------- 1 | { 2 | "a": { 3 | "aa": { 4 | "aaa": "A9", 5 | }, 6 | }, 7 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 3-depth > 2-way > connected.equivalent #1: -------------------------------------------------------------------------------- 1 | { 2 | "a": { 3 | "aa": { 4 | "aaa": "A", 5 | }, 6 | }, 7 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 3-depth > 2-way > connected.equivalent #2: -------------------------------------------------------------------------------- 1 | { 2 | "a": { 3 | "aa": { 4 | "aaa": "B", 5 | }, 6 | }, 7 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 3-depth > 3-way > chain.equivalent #1: -------------------------------------------------------------------------------- 1 | { 2 | "a": { 3 | "aa": { 4 | "aaa": "A1", 5 | }, 6 | }, 7 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 3-depth > 3-way > chain.equivalent #2: -------------------------------------------------------------------------------- 1 | { 2 | "a": { 3 | "aa": { 4 | "aaa": "A2", 5 | }, 6 | }, 7 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 3-depth > 3-way > chain.equivalent #3: -------------------------------------------------------------------------------- 1 | { 2 | "a": { 3 | "aa": { 4 | "aaa": "A3", 5 | }, 6 | }, 7 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 3-depth > 3-way > pool.equivalent #1: -------------------------------------------------------------------------------- 1 | { 2 | "a": { 3 | "aa": { 4 | "aaa": "A1", 5 | }, 6 | }, 7 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 3-depth > 3-way > pool.equivalent #2: -------------------------------------------------------------------------------- 1 | { 2 | "a": { 3 | "aa": { 4 | "aaa": "A2", 5 | }, 6 | }, 7 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 3-depth > 3-way > pool.equivalent #3: -------------------------------------------------------------------------------- 1 | { 2 | "a": { 3 | "aa": { 4 | "aaa": "A3", 5 | }, 6 | }, 7 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 3-depth > 3-way > ring.equivalent #1: -------------------------------------------------------------------------------- 1 | { 2 | "a": { 3 | "aa": { 4 | "aaa": "A1", 5 | }, 6 | }, 7 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 3-depth > 3-way > ring.equivalent #2: -------------------------------------------------------------------------------- 1 | { 2 | "a": { 3 | "aa": { 4 | "aaa": "A2", 5 | }, 6 | }, 7 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 3-depth > 3-way > ring.equivalent #3: -------------------------------------------------------------------------------- 1 | { 2 | "a": { 3 | "aa": { 4 | "aaa": "A3", 5 | }, 6 | }, 7 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 2-depth > 2-way > disconnected, near atom.equivalent #1: -------------------------------------------------------------------------------- 1 | { 2 | "a": { 3 | "aa": "A", 4 | "ab": "B", 5 | }, 6 | } -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "bracketSpacing": false, 3 | "singleQuote": true, 4 | "trailingComma": "all", 5 | "plugins": [ 6 | "prettier-plugin-organize-imports" 7 | ] 8 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 3-depth > 2-way > connected, deletion.equivalent #1: -------------------------------------------------------------------------------- 1 | { 2 | "a": { 3 | "aa": { 4 | "aaa": "A", 5 | }, 6 | }, 7 | } -------------------------------------------------------------------------------- /servers/demo-synclets-org/index.ts: -------------------------------------------------------------------------------- 1 | import {createWsServer} from 'synclets/ws'; 2 | import {WebSocketServer} from 'ws'; 3 | 4 | createWsServer(new WebSocketServer({port: 8043})); 5 | -------------------------------------------------------------------------------- /src/core/constants.ts: -------------------------------------------------------------------------------- 1 | import {Reserved, Undefined} from '@synclets/@types'; 2 | 3 | export const RESERVED: Reserved = '\uFFFA'; 4 | export const UNDEFINED: Undefined = '\uFFFC'; 5 | -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 1-depth > 2-way > stop 1, set 1, start 1.differing #2: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "a": "B", 4 | }, 5 | { 6 | "a": "A", 7 | }, 8 | ] -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 1-depth > 2-way > stop 1, set 2, start 1.differing #2: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "a": "A", 4 | }, 5 | { 6 | "a": "B", 7 | }, 8 | ] -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 3-depth > 2-way > start 1, set 1, start 2.equivalent #2: -------------------------------------------------------------------------------- 1 | { 2 | "a": { 3 | "aa": { 4 | "aaa": "A", 5 | }, 6 | }, 7 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 3-depth > 2-way > start 2, set 1, start 1.equivalent #2: -------------------------------------------------------------------------------- 1 | { 2 | "a": { 3 | "aa": { 4 | "aaa": "A", 5 | }, 6 | }, 7 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 3-depth > 2-way > stop 1, set 1, start 1.equivalent #1: -------------------------------------------------------------------------------- 1 | { 2 | "a": { 3 | "aa": { 4 | "aaa": "A", 5 | }, 6 | }, 7 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 3-depth > 2-way > stop 1, set 1, start 1.equivalent #3: -------------------------------------------------------------------------------- 1 | { 2 | "a": { 3 | "aa": { 4 | "aaa": "B", 5 | }, 6 | }, 7 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 3-depth > 2-way > stop 1, set 2, start 1.equivalent #1: -------------------------------------------------------------------------------- 1 | { 2 | "a": { 3 | "aa": { 4 | "aaa": "A", 5 | }, 6 | }, 7 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 3-depth > 2-way > stop 1, set 2, start 1.equivalent #3: -------------------------------------------------------------------------------- 1 | { 2 | "a": { 3 | "aa": { 4 | "aaa": "B", 5 | }, 6 | }, 7 | } -------------------------------------------------------------------------------- /src/index.ts: -------------------------------------------------------------------------------- 1 | export { 2 | RESERVED, 3 | UNDEFINED, 4 | createDataConnector, 5 | createMetaConnector, 6 | createSynclet, 7 | createTransport, 8 | } from './core/index.ts'; 9 | -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 1-depth > 2-way > set 1, set 2, start 2, start 1.differing #2: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "a": "A", 4 | }, 5 | { 6 | "a": "B", 7 | }, 8 | ] -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 2-depth > 2-way > start 1, set 1, start 2.differing #1: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "a": { 4 | "aa": "A", 5 | }, 6 | }, 7 | {}, 8 | ] -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 2-depth > 2-way > start 2, set 1, start 1.differing #1: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "a": { 4 | "aa": "A", 5 | }, 6 | }, 7 | {}, 8 | ] -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 2-depth > 2-way > connected, far atom.equivalent #1: -------------------------------------------------------------------------------- 1 | { 2 | "a": { 3 | "aa": "A", 4 | }, 5 | "b": { 6 | "ba": "B", 7 | }, 8 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 2-depth > 2-way > disconnected, far atom.equivalent #1: -------------------------------------------------------------------------------- 1 | { 2 | "a": { 3 | "aa": "A", 4 | }, 5 | "b": { 6 | "ba": "B", 7 | }, 8 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 2-depth > 2-way > set 1, set 2, start 2, start 1.differing #1: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "a": { 4 | "aa": "A", 5 | }, 6 | }, 7 | {}, 8 | ] -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 3-depth > 2-way > disconnected, conflicting values.equivalent #1: -------------------------------------------------------------------------------- 1 | { 2 | "a": { 3 | "aa": { 4 | "aaa": "B", 5 | }, 6 | }, 7 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 3-depth > 2-way > set 1, set 2, start 2, start 1.equivalent #3: -------------------------------------------------------------------------------- 1 | { 2 | "a": { 3 | "aa": { 4 | "aaa": "B", 5 | }, 6 | }, 7 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 3-depth > 2-way > connected, near atom.equivalent #1: -------------------------------------------------------------------------------- 1 | { 2 | "a": { 3 | "aa": { 4 | "aaa": "A", 5 | "aab": "B", 6 | }, 7 | }, 8 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 4-depth > 10-way > chain.equivalent #1: -------------------------------------------------------------------------------- 1 | { 2 | "a": { 3 | "aa": { 4 | "aaa": { 5 | "aaaa": "A1", 6 | }, 7 | }, 8 | }, 9 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 4-depth > 10-way > chain.equivalent #10: -------------------------------------------------------------------------------- 1 | { 2 | "a": { 3 | "aa": { 4 | "aaa": { 5 | "aaaa": "A10", 6 | }, 7 | }, 8 | }, 9 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 4-depth > 10-way > chain.equivalent #2: -------------------------------------------------------------------------------- 1 | { 2 | "a": { 3 | "aa": { 4 | "aaa": { 5 | "aaaa": "A2", 6 | }, 7 | }, 8 | }, 9 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 4-depth > 10-way > chain.equivalent #3: -------------------------------------------------------------------------------- 1 | { 2 | "a": { 3 | "aa": { 4 | "aaa": { 5 | "aaaa": "A3", 6 | }, 7 | }, 8 | }, 9 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 4-depth > 10-way > chain.equivalent #4: -------------------------------------------------------------------------------- 1 | { 2 | "a": { 3 | "aa": { 4 | "aaa": { 5 | "aaaa": "A4", 6 | }, 7 | }, 8 | }, 9 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 4-depth > 10-way > chain.equivalent #5: -------------------------------------------------------------------------------- 1 | { 2 | "a": { 3 | "aa": { 4 | "aaa": { 5 | "aaaa": "A5", 6 | }, 7 | }, 8 | }, 9 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 4-depth > 10-way > chain.equivalent #6: -------------------------------------------------------------------------------- 1 | { 2 | "a": { 3 | "aa": { 4 | "aaa": { 5 | "aaaa": "A6", 6 | }, 7 | }, 8 | }, 9 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 4-depth > 10-way > chain.equivalent #7: -------------------------------------------------------------------------------- 1 | { 2 | "a": { 3 | "aa": { 4 | "aaa": { 5 | "aaaa": "A7", 6 | }, 7 | }, 8 | }, 9 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 4-depth > 10-way > chain.equivalent #8: -------------------------------------------------------------------------------- 1 | { 2 | "a": { 3 | "aa": { 4 | "aaa": { 5 | "aaaa": "A8", 6 | }, 7 | }, 8 | }, 9 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 4-depth > 10-way > chain.equivalent #9: -------------------------------------------------------------------------------- 1 | { 2 | "a": { 3 | "aa": { 4 | "aaa": { 5 | "aaaa": "A9", 6 | }, 7 | }, 8 | }, 9 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 4-depth > 10-way > pool.equivalent #1: -------------------------------------------------------------------------------- 1 | { 2 | "a": { 3 | "aa": { 4 | "aaa": { 5 | "aaaa": "A1", 6 | }, 7 | }, 8 | }, 9 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 4-depth > 10-way > pool.equivalent #10: -------------------------------------------------------------------------------- 1 | { 2 | "a": { 3 | "aa": { 4 | "aaa": { 5 | "aaaa": "A10", 6 | }, 7 | }, 8 | }, 9 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 4-depth > 10-way > pool.equivalent #2: -------------------------------------------------------------------------------- 1 | { 2 | "a": { 3 | "aa": { 4 | "aaa": { 5 | "aaaa": "A2", 6 | }, 7 | }, 8 | }, 9 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 4-depth > 10-way > pool.equivalent #3: -------------------------------------------------------------------------------- 1 | { 2 | "a": { 3 | "aa": { 4 | "aaa": { 5 | "aaaa": "A3", 6 | }, 7 | }, 8 | }, 9 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 4-depth > 10-way > pool.equivalent #4: -------------------------------------------------------------------------------- 1 | { 2 | "a": { 3 | "aa": { 4 | "aaa": { 5 | "aaaa": "A4", 6 | }, 7 | }, 8 | }, 9 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 4-depth > 10-way > pool.equivalent #5: -------------------------------------------------------------------------------- 1 | { 2 | "a": { 3 | "aa": { 4 | "aaa": { 5 | "aaaa": "A5", 6 | }, 7 | }, 8 | }, 9 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 4-depth > 10-way > pool.equivalent #6: -------------------------------------------------------------------------------- 1 | { 2 | "a": { 3 | "aa": { 4 | "aaa": { 5 | "aaaa": "A6", 6 | }, 7 | }, 8 | }, 9 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 4-depth > 10-way > pool.equivalent #7: -------------------------------------------------------------------------------- 1 | { 2 | "a": { 3 | "aa": { 4 | "aaa": { 5 | "aaaa": "A7", 6 | }, 7 | }, 8 | }, 9 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 4-depth > 10-way > pool.equivalent #8: -------------------------------------------------------------------------------- 1 | { 2 | "a": { 3 | "aa": { 4 | "aaa": { 5 | "aaaa": "A8", 6 | }, 7 | }, 8 | }, 9 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 4-depth > 10-way > pool.equivalent #9: -------------------------------------------------------------------------------- 1 | { 2 | "a": { 3 | "aa": { 4 | "aaa": { 5 | "aaaa": "A9", 6 | }, 7 | }, 8 | }, 9 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 4-depth > 10-way > ring.equivalent #1: -------------------------------------------------------------------------------- 1 | { 2 | "a": { 3 | "aa": { 4 | "aaa": { 5 | "aaaa": "A1", 6 | }, 7 | }, 8 | }, 9 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 4-depth > 10-way > ring.equivalent #10: -------------------------------------------------------------------------------- 1 | { 2 | "a": { 3 | "aa": { 4 | "aaa": { 5 | "aaaa": "A10", 6 | }, 7 | }, 8 | }, 9 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 4-depth > 10-way > ring.equivalent #2: -------------------------------------------------------------------------------- 1 | { 2 | "a": { 3 | "aa": { 4 | "aaa": { 5 | "aaaa": "A2", 6 | }, 7 | }, 8 | }, 9 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 4-depth > 10-way > ring.equivalent #3: -------------------------------------------------------------------------------- 1 | { 2 | "a": { 3 | "aa": { 4 | "aaa": { 5 | "aaaa": "A3", 6 | }, 7 | }, 8 | }, 9 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 4-depth > 10-way > ring.equivalent #4: -------------------------------------------------------------------------------- 1 | { 2 | "a": { 3 | "aa": { 4 | "aaa": { 5 | "aaaa": "A4", 6 | }, 7 | }, 8 | }, 9 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 4-depth > 10-way > ring.equivalent #5: -------------------------------------------------------------------------------- 1 | { 2 | "a": { 3 | "aa": { 4 | "aaa": { 5 | "aaaa": "A5", 6 | }, 7 | }, 8 | }, 9 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 4-depth > 10-way > ring.equivalent #6: -------------------------------------------------------------------------------- 1 | { 2 | "a": { 3 | "aa": { 4 | "aaa": { 5 | "aaaa": "A6", 6 | }, 7 | }, 8 | }, 9 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 4-depth > 10-way > ring.equivalent #7: -------------------------------------------------------------------------------- 1 | { 2 | "a": { 3 | "aa": { 4 | "aaa": { 5 | "aaaa": "A7", 6 | }, 7 | }, 8 | }, 9 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 4-depth > 10-way > ring.equivalent #8: -------------------------------------------------------------------------------- 1 | { 2 | "a": { 3 | "aa": { 4 | "aaa": { 5 | "aaaa": "A8", 6 | }, 7 | }, 8 | }, 9 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 4-depth > 10-way > ring.equivalent #9: -------------------------------------------------------------------------------- 1 | { 2 | "a": { 3 | "aa": { 4 | "aaa": { 5 | "aaaa": "A9", 6 | }, 7 | }, 8 | }, 9 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 4-depth > 2-way > connected.equivalent #1: -------------------------------------------------------------------------------- 1 | { 2 | "a": { 3 | "aa": { 4 | "aaa": { 5 | "aaaa": "A", 6 | }, 7 | }, 8 | }, 9 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 4-depth > 2-way > connected.equivalent #2: -------------------------------------------------------------------------------- 1 | { 2 | "a": { 3 | "aa": { 4 | "aaa": { 5 | "aaaa": "B", 6 | }, 7 | }, 8 | }, 9 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 4-depth > 3-way > chain.equivalent #1: -------------------------------------------------------------------------------- 1 | { 2 | "a": { 3 | "aa": { 4 | "aaa": { 5 | "aaaa": "A1", 6 | }, 7 | }, 8 | }, 9 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 4-depth > 3-way > chain.equivalent #2: -------------------------------------------------------------------------------- 1 | { 2 | "a": { 3 | "aa": { 4 | "aaa": { 5 | "aaaa": "A2", 6 | }, 7 | }, 8 | }, 9 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 4-depth > 3-way > chain.equivalent #3: -------------------------------------------------------------------------------- 1 | { 2 | "a": { 3 | "aa": { 4 | "aaa": { 5 | "aaaa": "A3", 6 | }, 7 | }, 8 | }, 9 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 4-depth > 3-way > pool.equivalent #1: -------------------------------------------------------------------------------- 1 | { 2 | "a": { 3 | "aa": { 4 | "aaa": { 5 | "aaaa": "A1", 6 | }, 7 | }, 8 | }, 9 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 4-depth > 3-way > pool.equivalent #2: -------------------------------------------------------------------------------- 1 | { 2 | "a": { 3 | "aa": { 4 | "aaa": { 5 | "aaaa": "A2", 6 | }, 7 | }, 8 | }, 9 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 4-depth > 3-way > pool.equivalent #3: -------------------------------------------------------------------------------- 1 | { 2 | "a": { 3 | "aa": { 4 | "aaa": { 5 | "aaaa": "A3", 6 | }, 7 | }, 8 | }, 9 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 4-depth > 3-way > ring.equivalent #1: -------------------------------------------------------------------------------- 1 | { 2 | "a": { 3 | "aa": { 4 | "aaa": { 5 | "aaaa": "A1", 6 | }, 7 | }, 8 | }, 9 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 4-depth > 3-way > ring.equivalent #2: -------------------------------------------------------------------------------- 1 | { 2 | "a": { 3 | "aa": { 4 | "aaa": { 5 | "aaaa": "A2", 6 | }, 7 | }, 8 | }, 9 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 4-depth > 3-way > ring.equivalent #3: -------------------------------------------------------------------------------- 1 | { 2 | "a": { 3 | "aa": { 4 | "aaa": { 5 | "aaaa": "A3", 6 | }, 7 | }, 8 | }, 9 | } -------------------------------------------------------------------------------- /site/guides/index.md: -------------------------------------------------------------------------------- 1 | # Guides 2 | 3 | This series of guides helps explain the concepts behind Synclets and is 4 | designed to complement the more comprehensive [API 5 | documentation](/api/synclets/). 6 | -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 3-depth > 2-way > disconnected, near atom.equivalent #1: -------------------------------------------------------------------------------- 1 | { 2 | "a": { 3 | "aa": { 4 | "aaa": "A", 5 | "aab": "B", 6 | }, 7 | }, 8 | } -------------------------------------------------------------------------------- /src/memory/index.ts: -------------------------------------------------------------------------------- 1 | export { 2 | createMemoryDataConnector, 3 | createMemoryMetaConnector, 4 | createMemorySynclet, 5 | } from './connector.ts'; 6 | export {createMemoryTransport} from './transport.ts'; 7 | -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 4-depth > 2-way > connected, deletion.equivalent #1: -------------------------------------------------------------------------------- 1 | { 2 | "a": { 3 | "aa": { 4 | "aaa": { 5 | "aaaa": "A", 6 | }, 7 | }, 8 | }, 9 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 4-depth > 2-way > start 1, set 1, start 2.equivalent #2: -------------------------------------------------------------------------------- 1 | { 2 | "a": { 3 | "aa": { 4 | "aaa": { 5 | "aaaa": "A", 6 | }, 7 | }, 8 | }, 9 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 4-depth > 2-way > start 2, set 1, start 1.equivalent #2: -------------------------------------------------------------------------------- 1 | { 2 | "a": { 3 | "aa": { 4 | "aaa": { 5 | "aaaa": "A", 6 | }, 7 | }, 8 | }, 9 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 4-depth > 2-way > stop 1, set 1, start 1.equivalent #1: -------------------------------------------------------------------------------- 1 | { 2 | "a": { 3 | "aa": { 4 | "aaa": { 5 | "aaaa": "A", 6 | }, 7 | }, 8 | }, 9 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 4-depth > 2-way > stop 1, set 1, start 1.equivalent #3: -------------------------------------------------------------------------------- 1 | { 2 | "a": { 3 | "aa": { 4 | "aaa": { 5 | "aaaa": "B", 6 | }, 7 | }, 8 | }, 9 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 4-depth > 2-way > stop 1, set 2, start 1.equivalent #1: -------------------------------------------------------------------------------- 1 | { 2 | "a": { 3 | "aa": { 4 | "aaa": { 5 | "aaaa": "A", 6 | }, 7 | }, 8 | }, 9 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 4-depth > 2-way > stop 1, set 2, start 1.equivalent #3: -------------------------------------------------------------------------------- 1 | { 2 | "a": { 3 | "aa": { 4 | "aaa": { 5 | "aaaa": "B", 6 | }, 7 | }, 8 | }, 9 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 2-depth > 2-way > disconnected, conflicting values 2.equivalent #1: -------------------------------------------------------------------------------- 1 | { 2 | "a": { 3 | "aa": "A", 4 | "ab": "C", 5 | }, 6 | "b": { 7 | "ba": "D", 8 | }, 9 | } -------------------------------------------------------------------------------- /site/js/home.ts: -------------------------------------------------------------------------------- 1 | import {versionLoad} from './common/common.ts'; 2 | import {darkLoad} from './common/dark.ts'; 3 | import {searchLoad} from './common/search.ts'; 4 | 5 | versionLoad(); 6 | darkLoad(); 7 | searchLoad(true); 8 | -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 3-depth > 2-way > start 1, set 1, start 2.differing #1: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "a": { 4 | "aa": { 5 | "aaa": "A", 6 | }, 7 | }, 8 | }, 9 | {}, 10 | ] -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 3-depth > 2-way > start 2, set 1, start 1.differing #1: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "a": { 4 | "aa": { 5 | "aaa": "A", 6 | }, 7 | }, 8 | }, 9 | {}, 10 | ] -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 4-depth > 2-way > disconnected, conflicting values.equivalent #1: -------------------------------------------------------------------------------- 1 | { 2 | "a": { 3 | "aa": { 4 | "aaa": { 5 | "aaaa": "B", 6 | }, 7 | }, 8 | }, 9 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 4-depth > 2-way > set 1, set 2, start 2, start 1.equivalent #3: -------------------------------------------------------------------------------- 1 | { 2 | "a": { 3 | "aa": { 4 | "aaa": { 5 | "aaaa": "B", 6 | }, 7 | }, 8 | }, 9 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 3-depth > 2-way > set 1, set 2, start 2, start 1.differing #1: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "a": { 4 | "aa": { 5 | "aaa": "A", 6 | }, 7 | }, 8 | }, 9 | {}, 10 | ] -------------------------------------------------------------------------------- /src/utils/index.ts: -------------------------------------------------------------------------------- 1 | export {getHash, getUniqueId} from './codec.ts'; 2 | export {jsonParse, jsonString} from './json.ts'; 3 | export {getPacketFromParts, getPartsFromPacket} from './packets.ts'; 4 | export {isAtom, isTimestamp} from './types.ts'; 5 | -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 2-depth > 2-way > stop 1, set 1, start 1.differing #2: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "a": { 4 | "aa": "B", 5 | }, 6 | }, 7 | { 8 | "a": { 9 | "aa": "A", 10 | }, 11 | }, 12 | ] -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 2-depth > 2-way > stop 1, set 2, start 1.differing #2: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "a": { 4 | "aa": "A", 5 | }, 6 | }, 7 | { 8 | "a": { 9 | "aa": "B", 10 | }, 11 | }, 12 | ] -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 4-depth > 2-way > connected, near atom.equivalent #1: -------------------------------------------------------------------------------- 1 | { 2 | "a": { 3 | "aa": { 4 | "aaa": { 5 | "aaaa": "A", 6 | "aaab": "B", 7 | }, 8 | }, 9 | }, 10 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 4-depth > 2-way > disconnected, near atom.equivalent #1: -------------------------------------------------------------------------------- 1 | { 2 | "a": { 3 | "aa": { 4 | "aaa": { 5 | "aaaa": "A", 6 | "aaab": "B", 7 | }, 8 | }, 9 | }, 10 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 2-depth > 2-way > set 1, set 2, start 2, start 1.differing #2: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "a": { 4 | "aa": "A", 5 | }, 6 | }, 7 | { 8 | "a": { 9 | "aa": "B", 10 | }, 11 | }, 12 | ] -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 3-depth > 2-way > connected, far atom.equivalent #1: -------------------------------------------------------------------------------- 1 | { 2 | "a": { 3 | "aa": { 4 | "aaa": "A", 5 | }, 6 | }, 7 | "b": { 8 | "ba": { 9 | "baa": "B", 10 | }, 11 | }, 12 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 3-depth > 2-way > disconnected, far atom.equivalent #1: -------------------------------------------------------------------------------- 1 | { 2 | "a": { 3 | "aa": { 4 | "aaa": "A", 5 | }, 6 | }, 7 | "b": { 8 | "ba": { 9 | "baa": "B", 10 | }, 11 | }, 12 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 4-depth > 2-way > start 1, set 1, start 2.differing #1: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "a": { 4 | "aa": { 5 | "aaa": { 6 | "aaaa": "A", 7 | }, 8 | }, 9 | }, 10 | }, 11 | {}, 12 | ] -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 4-depth > 2-way > start 2, set 1, start 1.differing #1: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "a": { 4 | "aa": { 5 | "aaa": { 6 | "aaaa": "A", 7 | }, 8 | }, 9 | }, 10 | }, 11 | {}, 12 | ] -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 4-depth > 2-way > set 1, set 2, start 2, start 1.differing #1: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "a": { 4 | "aa": { 5 | "aaa": { 6 | "aaaa": "A", 7 | }, 8 | }, 9 | }, 10 | }, 11 | {}, 12 | ] -------------------------------------------------------------------------------- /src/fs/index.ts: -------------------------------------------------------------------------------- 1 | export { 2 | createDirectoryDataConnector, 3 | createDirectoryMetaConnector, 4 | createDirectorySynclet, 5 | } from './directory.ts'; 6 | export { 7 | createFileDataConnector, 8 | createFileMetaConnector, 9 | createFileSynclet, 10 | } from './file.ts'; 11 | -------------------------------------------------------------------------------- /src/core/index.ts: -------------------------------------------------------------------------------- 1 | export {RESERVED, UNDEFINED} from './constants.ts'; 2 | 3 | export {createDataConnector} from './connector/data.ts'; 4 | export {createMetaConnector} from './connector/meta.ts'; 5 | export {createSynclet} from './synclet.ts'; 6 | export {createTransport} from './transport.ts'; 7 | -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 3-depth > 2-way > disconnected, conflicting values 2.equivalent #1: -------------------------------------------------------------------------------- 1 | { 2 | "a": { 3 | "aa": { 4 | "aaa": "A", 5 | "aab": "C", 6 | }, 7 | }, 8 | "b": { 9 | "ba": { 10 | "baa": "D", 11 | }, 12 | }, 13 | } -------------------------------------------------------------------------------- /src/utils/packets.ts: -------------------------------------------------------------------------------- 1 | export const getPartsFromPacket = ( 2 | packet: string, 3 | ): [toOrFrom: string, body: string] => 4 | (packet.match(/^(.+?) (.+)/) ?? []).slice(1, 3) as [string, string]; 5 | 6 | export const getPacketFromParts = (toOrFrom: string, body: string): string => 7 | `${toOrFrom} ${body}`; 8 | -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 3-depth > 2-way > stop 1, set 1, start 1.differing #2: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "a": { 4 | "aa": { 5 | "aaa": "B", 6 | }, 7 | }, 8 | }, 9 | { 10 | "a": { 11 | "aa": { 12 | "aaa": "A", 13 | }, 14 | }, 15 | }, 16 | ] -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 3-depth > 2-way > stop 1, set 2, start 1.differing #2: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "a": { 4 | "aa": { 5 | "aaa": "A", 6 | }, 7 | }, 8 | }, 9 | { 10 | "a": { 11 | "aa": { 12 | "aaa": "B", 13 | }, 14 | }, 15 | }, 16 | ] -------------------------------------------------------------------------------- /src/durable-object/index.ts: -------------------------------------------------------------------------------- 1 | export {createDurableObjectBrokerTransport} from './broker.ts'; 2 | export { 3 | createDurableObjectSqliteDataConnector, 4 | createDurableObjectSqliteMetaConnector, 5 | getTableSchema, 6 | } from './sqlite.ts'; 7 | export {SyncletDurableObject, getSyncletDurableObjectFetch} from './synclet.ts'; 8 | -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 3-depth > 2-way > set 1, set 2, start 2, start 1.differing #2: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "a": { 4 | "aa": { 5 | "aaa": "A", 6 | }, 7 | }, 8 | }, 9 | { 10 | "a": { 11 | "aa": { 12 | "aaa": "B", 13 | }, 14 | }, 15 | }, 16 | ] -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 4-depth > 2-way > connected, far atom.equivalent #1: -------------------------------------------------------------------------------- 1 | { 2 | "a": { 3 | "aa": { 4 | "aaa": { 5 | "aaaa": "A", 6 | }, 7 | }, 8 | }, 9 | "b": { 10 | "ba": { 11 | "baa": { 12 | "baaa": "B", 13 | }, 14 | }, 15 | }, 16 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 4-depth > 2-way > disconnected, far atom.equivalent #1: -------------------------------------------------------------------------------- 1 | { 2 | "a": { 3 | "aa": { 4 | "aaa": { 5 | "aaaa": "A", 6 | }, 7 | }, 8 | }, 9 | "b": { 10 | "ba": { 11 | "baa": { 12 | "baaa": "B", 13 | }, 14 | }, 15 | }, 16 | } -------------------------------------------------------------------------------- /docs/guides/nav.json: -------------------------------------------------------------------------------- 1 | {"i":"root","n":"Synclets","u":"/","p":1,"o":1,"_":[{"i":"G","n":"Guides","u":"/guides/","c":1,"p":1,"o":1,"_":[{"i":"AG","n":"Agents Guide","u":"/guides/agents-guide/"},{"i":"R","n":"Releases","u":"/guides/releases/"},{"i":"TB","n":"The Basics","u":"/guides/the-basics/","p":1}]},{"i":"api","n":"API","u":"/api/","p":1}]} -------------------------------------------------------------------------------- /docs/guides/releases/nav.json: -------------------------------------------------------------------------------- 1 | {"i":"root","n":"Synclets","u":"/","p":1,"o":1,"_":[{"i":"G","n":"Guides","u":"/guides/","p":1,"o":1,"_":[{"i":"AG","n":"Agents Guide","u":"/guides/agents-guide/"},{"i":"R","n":"Releases","u":"/guides/releases/","c":1},{"i":"TB","n":"The Basics","u":"/guides/the-basics/","p":1}]},{"i":"api","n":"API","u":"/api/","p":1}]} -------------------------------------------------------------------------------- /docs/guides/agents-guide/nav.json: -------------------------------------------------------------------------------- 1 | {"i":"root","n":"Synclets","u":"/","p":1,"o":1,"_":[{"i":"G","n":"Guides","u":"/guides/","p":1,"o":1,"_":[{"i":"AG","n":"Agents Guide","u":"/guides/agents-guide/","c":1},{"i":"R","n":"Releases","u":"/guides/releases/"},{"i":"TB","n":"The Basics","u":"/guides/the-basics/","p":1}]},{"i":"api","n":"API","u":"/api/","p":1}]} -------------------------------------------------------------------------------- /coverage.json: -------------------------------------------------------------------------------- 1 | {"tests":939,"assertions":33205,"lines":{"total":395,"covered":376,"skipped":0,"pct":95.18},"statements":{"total":436,"covered":414,"skipped":0,"pct":94.95},"functions":{"total":143,"covered":131,"skipped":0,"pct":91.6},"branches":{"total":268,"covered":208,"skipped":0,"pct":77.61},"branchesTrue":{"total":0,"covered":0,"skipped":0,"pct":"Unknown"}} -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 4-depth > 2-way > disconnected, conflicting values 2.equivalent #1: -------------------------------------------------------------------------------- 1 | { 2 | "a": { 3 | "aa": { 4 | "aaa": { 5 | "aaaa": "A", 6 | "aaab": "C", 7 | }, 8 | }, 9 | }, 10 | "b": { 11 | "ba": { 12 | "baa": { 13 | "baaa": "D", 14 | }, 15 | }, 16 | }, 17 | } -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 4-depth > 2-way > stop 1, set 1, start 1.differing #2: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "a": { 4 | "aa": { 5 | "aaa": { 6 | "aaaa": "B", 7 | }, 8 | }, 9 | }, 10 | }, 11 | { 12 | "a": { 13 | "aa": { 14 | "aaa": { 15 | "aaaa": "A", 16 | }, 17 | }, 18 | }, 19 | }, 20 | ] -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 4-depth > 2-way > stop 1, set 2, start 1.differing #2: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "a": { 4 | "aa": { 5 | "aaa": { 6 | "aaaa": "A", 7 | }, 8 | }, 9 | }, 10 | }, 11 | { 12 | "a": { 13 | "aa": { 14 | "aaa": { 15 | "aaaa": "B", 16 | }, 17 | }, 18 | }, 19 | }, 20 | ] -------------------------------------------------------------------------------- /test/unit/__snapshots__/common connector tests > 4-depth > 2-way > set 1, set 2, start 2, start 1.differing #2: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "a": { 4 | "aa": { 5 | "aaa": { 6 | "aaaa": "A", 7 | }, 8 | }, 9 | }, 10 | }, 11 | { 12 | "a": { 13 | "aa": { 14 | "aaa": { 15 | "aaaa": "B", 16 | }, 17 | }, 18 | }, 19 | }, 20 | ] -------------------------------------------------------------------------------- /servers/demo-synclets-org/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "demo-synclets-org", 3 | "version": "0.0.1", 4 | "description": "", 5 | "main": "index.ts", 6 | "author": "jamesgpearce", 7 | "license": "MIT", 8 | "type": "module", 9 | "dependencies": { 10 | "synclets": "^0.0.2", 11 | "ws": "^8.18.3" 12 | }, 13 | "devDependencies": { 14 | "@flydotio/dockerfile": "^0.7.10" 15 | } 16 | } -------------------------------------------------------------------------------- /servers/demo-synclets-org/Dockerfile: -------------------------------------------------------------------------------- 1 | ARG BUN_VERSION=1.3.2 2 | 3 | FROM oven/bun:${BUN_VERSION}-alpine as base 4 | LABEL fly_launch_runtime="Bun" 5 | WORKDIR /app 6 | ENV NODE_ENV="production" 7 | 8 | FROM base as build 9 | COPY --link bun.lock package.json ./ 10 | RUN bun install --ci 11 | COPY --link . . 12 | 13 | FROM base 14 | COPY --from=build /app /app 15 | EXPOSE 8043 16 | CMD [ "bun", "index.ts" ] 17 | -------------------------------------------------------------------------------- /src/browser/index.ts: -------------------------------------------------------------------------------- 1 | export {createBroadcastChannelTransport} from './broadcast-channel.ts'; 2 | export { 3 | createLocalStorageDataConnector, 4 | createLocalStorageMetaConnector, 5 | createLocalStorageSynclet, 6 | } from './local-storage.ts'; 7 | export { 8 | createSessionStorageDataConnector, 9 | createSessionStorageMetaConnector, 10 | createSessionStorageSynclet, 11 | } from './session-storage.ts'; 12 | -------------------------------------------------------------------------------- /src/utils/types.ts: -------------------------------------------------------------------------------- 1 | import type {Atom, Timestamp} from '@synclets/@types'; 2 | 3 | export const isTimestamp = (thing: unknown): thing is Timestamp => 4 | typeof thing === 'string'; 5 | 6 | export const isAtom = (thing: unknown): thing is Atom | undefined => 7 | thing === undefined || 8 | thing === null || 9 | typeof thing === 'number' || 10 | typeof thing === 'string' || 11 | typeof thing === 'boolean'; 12 | -------------------------------------------------------------------------------- /test/prod/esm.ts: -------------------------------------------------------------------------------- 1 | import { 2 | createDataConnector, 3 | createMetaConnector, 4 | createSynclet, 5 | createTransport, 6 | } from 'synclets'; 7 | 8 | const dataConnector = createDataConnector({depth: 1}, {} as any); 9 | const metaConnector = createMetaConnector({depth: 1}, {} as any); 10 | const transport = createTransport({} as any); 11 | 12 | await createSynclet({dataConnector, metaConnector, transport}); 13 | -------------------------------------------------------------------------------- /src/common/set.ts: -------------------------------------------------------------------------------- 1 | export const setNew = (entries?: Value[]): Set => 2 | new Set(entries); 3 | 4 | export const setHas = (set: Set, value: Value) => set.has(value); 5 | 6 | export const setAdd = (set: Set, value: Value) => set.add(value); 7 | 8 | export const setEvery = ( 9 | set: Set, 10 | test: (value: Value) => boolean, 11 | ) => Array.from(set).every(test); 12 | -------------------------------------------------------------------------------- /src/utils/json.ts: -------------------------------------------------------------------------------- 1 | import {UNDEFINED} from '@synclets'; 2 | 3 | export const jsonString = (value: unknown): string => 4 | JSON.stringify(value, (_key, value) => 5 | value === undefined ? UNDEFINED : value, 6 | ); 7 | 8 | export const jsonParse = (string: string): any => { 9 | try { 10 | return JSON.parse(string, (_key, value) => 11 | value === UNDEFINED ? undefined : value, 12 | ); 13 | } catch { 14 | return undefined; 15 | } 16 | }; 17 | -------------------------------------------------------------------------------- /docs/guides/the-basics/nav.json: -------------------------------------------------------------------------------- 1 | {"i":"root","n":"Synclets","u":"/","p":1,"o":1,"_":[{"i":"G","n":"Guides","u":"/guides/","p":1,"o":1,"_":[{"i":"AG","n":"Agents Guide","u":"/guides/agents-guide/"},{"i":"R","n":"Releases","u":"/guides/releases/"},{"i":"TB","n":"The Basics","u":"/guides/the-basics/","c":1,"p":1,"o":1,"_":[{"i":"CC","n":"Core Concepts","u":"/guides/the-basics/core-concepts/"},{"i":"GS","n":"Getting Started","u":"/guides/the-basics/getting-started/"}]}]},{"i":"api","n":"API","u":"/api/","p":1}]} -------------------------------------------------------------------------------- /docs/cloudflare.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /docs/guides/the-basics/core-concepts/nav.json: -------------------------------------------------------------------------------- 1 | {"i":"root","n":"Synclets","u":"/","p":1,"o":1,"_":[{"i":"G","n":"Guides","u":"/guides/","p":1,"o":1,"_":[{"i":"AG","n":"Agents Guide","u":"/guides/agents-guide/"},{"i":"R","n":"Releases","u":"/guides/releases/"},{"i":"TB","n":"The Basics","u":"/guides/the-basics/","p":1,"o":1,"_":[{"i":"CC","n":"Core Concepts","u":"/guides/the-basics/core-concepts/","c":1},{"i":"GS","n":"Getting Started","u":"/guides/the-basics/getting-started/"}]}]},{"i":"api","n":"API","u":"/api/","p":1}]} -------------------------------------------------------------------------------- /docs/guides/the-basics/getting-started/nav.json: -------------------------------------------------------------------------------- 1 | {"i":"root","n":"Synclets","u":"/","p":1,"o":1,"_":[{"i":"G","n":"Guides","u":"/guides/","p":1,"o":1,"_":[{"i":"AG","n":"Agents Guide","u":"/guides/agents-guide/"},{"i":"R","n":"Releases","u":"/guides/releases/"},{"i":"TB","n":"The Basics","u":"/guides/the-basics/","p":1,"o":1,"_":[{"i":"CC","n":"Core Concepts","u":"/guides/the-basics/core-concepts/"},{"i":"GS","n":"Getting Started","u":"/guides/the-basics/getting-started/","c":1}]}]},{"i":"api","n":"API","u":"/api/","p":1}]} -------------------------------------------------------------------------------- /site/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "alwaysStrict": true, 4 | "noImplicitAny": true, 5 | "noImplicitThis": true, 6 | "strict": true, 7 | "removeComments": true, 8 | "target": "ESNext", 9 | "module": "NodeNext", 10 | "jsx": "react-jsx", 11 | "moduleResolution": "NodeNext", 12 | "allowSyntheticDefaultImports": true, 13 | "types": ["node"], 14 | "composite": true, 15 | "noEmit": true, 16 | "allowImportingTsExtensions": true 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /docs/api/synclets/variables/constant/reserved/article.html: -------------------------------------------------------------------------------- 1 |

RESERVED

Since

v0.0.0

-------------------------------------------------------------------------------- /docs/favicon.svg: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 7 | -------------------------------------------------------------------------------- /site/extras/cloudflare.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /docs/api/synclets/variables/constant/undefined/article.html: -------------------------------------------------------------------------------- 1 |

UNDEFINED

Since

v0.0.0

-------------------------------------------------------------------------------- /site/extras/favicon.svg: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 7 | -------------------------------------------------------------------------------- /src/durable-object/types.ts: -------------------------------------------------------------------------------- 1 | import {DurableObjectTransport} from '@synclets/@types/durable-object'; 2 | 3 | export interface ProtectedDurableObjectTransport extends DurableObjectTransport { 4 | __: [ 5 | fetch: ( 6 | ctx: DurableObjectState, 7 | request: Request, 8 | ) => Promise, 9 | webSocketMessage: ( 10 | ctx: DurableObjectState, 11 | client: WebSocket, 12 | message: ArrayBuffer | string, 13 | ) => Promise, 14 | ]; 15 | } 16 | -------------------------------------------------------------------------------- /test/unit/core/sync.test.ts: -------------------------------------------------------------------------------- 1 | import { 2 | createMemoryDataConnector, 3 | createMemoryMetaConnector, 4 | createMemoryTransport, 5 | } from 'synclets/memory'; 6 | import {describeCommonConnectorTests} from '../common.ts'; 7 | 8 | describeCommonConnectorTests( 9 | async () => {}, 10 | async () => {}, 11 | (depth: Depth) => createMemoryDataConnector({depth}), 12 | (depth: Depth) => createMemoryMetaConnector({depth}), 13 | (uniqueId: string) => createMemoryTransport({poolId: uniqueId}), 14 | ); 15 | -------------------------------------------------------------------------------- /docs/api/synclets/variables/article.html: -------------------------------------------------------------------------------- 1 |

Variables

RESERVED

UNDEFINED

-------------------------------------------------------------------------------- /site/ui/ArticleInner.tsx: -------------------------------------------------------------------------------- 1 | import type {NoPropComponent} from 'tinydocs'; 2 | import {NodeBreadcrumbs, NodeSection, usePageNode, useRootNode} from 'tinydocs'; 3 | 4 | export const ArticleInner: NoPropComponent = (): any => { 5 | const rootNode = useRootNode(); 6 | const pageNode = usePageNode(); 7 | const isHome = pageNode == rootNode; 8 | 9 | return isHome ? null : ( 10 | <> 11 | 16 | 17 | 18 | ); 19 | }; 20 | -------------------------------------------------------------------------------- /docs/api/synclets/variables/constant/article.html: -------------------------------------------------------------------------------- 1 |

Constant variables

RESERVED

UNDEFINED

-------------------------------------------------------------------------------- /servers/demo-synclets-org/fly.toml: -------------------------------------------------------------------------------- 1 | # fly.toml app configuration file generated for demo-synclets-org on 2025-11-09T13:53:18+13:00 2 | # 3 | # See https://fly.io/docs/reference/configuration/ for information about how to use this file. 4 | # 5 | 6 | app = 'demo-synclets-org' 7 | primary_region = 'iad' 8 | 9 | [build] 10 | 11 | [http_service] 12 | internal_port = 8043 13 | force_https = true 14 | auto_stop_machines = 'stop' 15 | auto_start_machines = true 16 | min_machines_running = 0 17 | processes = ['app'] 18 | 19 | [[vm]] 20 | memory = '256MB' 21 | cpu_kind = 'shared' 22 | cpus = 1 23 | -------------------------------------------------------------------------------- /test/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "alwaysStrict": true, 4 | "noImplicitAny": true, 5 | "noImplicitThis": true, 6 | "strict": true, 7 | "removeComments": true, 8 | "target": "ESNext", 9 | "module": "NodeNext", 10 | "jsx": "react-jsx", 11 | "moduleResolution": "NodeNext", 12 | "allowSyntheticDefaultImports": true, 13 | "noEmit": true, 14 | "allowImportingTsExtensions": true, 15 | "types": ["node", "http-server", "@cloudflare/workers-types"], 16 | "composite": true, 17 | "skipLibCheck": true, 18 | "allowJs": true 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /site/guides/1_the_basics/2_getting_started.md: -------------------------------------------------------------------------------- 1 | # Getting Started 2 | 3 | This will be an introductory guide to using Synclets in your application. 4 | 5 | Right now, the Synclets project is still in a very early stage of development, 6 | so please be aware that things may change rapidly, and we don't recommend you 7 | use it in production just yet! So this guide is... pretty short. 8 | 9 | This guide will get built out quickly as the project matures. In the meantime, 10 | the best way to get _something_ up and running is to use our very basic [Vite 11 | template](https://github.com/tinyplex/vite-synclets). 12 | 13 | Good luck! 14 | -------------------------------------------------------------------------------- /site/ui/Home.tsx: -------------------------------------------------------------------------------- 1 | import type {NoPropComponent} from 'tinydocs'; 2 | import {Markdown, usePageNode} from 'tinydocs'; 3 | import {useReadme} from './Readme.tsx'; 4 | 5 | export const Home: NoPropComponent = (): any => { 6 | const [summary, body] = useReadme(usePageNode()); 7 | 8 | return ( 9 |
10 | 11 | Large Synclets logo 17 | 18 | 19 | 20 |
21 | ); 22 | }; 23 | -------------------------------------------------------------------------------- /cspell.json: -------------------------------------------------------------------------------- 1 | { 2 | "ignorePaths": [ 3 | "*.tsv", 4 | "*.webp", 5 | "*.svg", 6 | "*.json", 7 | "__snapshots__" 8 | ], 9 | "words": [ 10 | "aaab", 11 | "atrule", 12 | "attw", 13 | "baaa", 14 | "cpus", 15 | "gulpfile", 16 | "jamesgpearce", 17 | "Merkle", 18 | "Miniflare", 19 | "miniflare", 20 | "onwarn", 21 | "opfs", 22 | "Pearce", 23 | "pglite", 24 | "schemaname", 25 | "Shantell", 26 | "shouldn", 27 | "subdirs", 28 | "Synclet", 29 | "synclets", 30 | "tablename", 31 | "tinybase", 32 | "tinybasejs", 33 | "tinydocs", 34 | "Vitest" 35 | ] 36 | } 37 | -------------------------------------------------------------------------------- /src/common/queue.ts: -------------------------------------------------------------------------------- 1 | import {arrayPush, arrayShift} from './array.ts'; 2 | 3 | export type Task = () => Promise; 4 | 5 | export const getQueueFunctions = (): [ 6 | queue: (...tasks: Task[]) => Promise, 7 | ] => { 8 | let queueRunning = false; 9 | const queueTasks: Task[] = []; 10 | 11 | return [ 12 | async (...tasks: Task[]): Promise => { 13 | arrayPush(queueTasks, ...tasks); 14 | if (!queueRunning) { 15 | queueRunning = true; 16 | let action; 17 | while ((action = arrayShift(queueTasks)) != null) { 18 | await action(); 19 | } 20 | queueRunning = false; 21 | } 22 | }, 23 | ]; 24 | }; 25 | -------------------------------------------------------------------------------- /docs/api/ws/type-aliases/transport/websockettypes/article.html: -------------------------------------------------------------------------------- 1 |

WebSocketTypes

The WebSocketTypes type unifies browser WebSocket and ws WebSocket implementations.

WebSocket | WsWebSocket

Since

v0.0.0

-------------------------------------------------------------------------------- /src/common/codec.ts: -------------------------------------------------------------------------------- 1 | import {Hash} from '@synclets/@types'; 2 | import {arrayMap} from './array.ts'; 3 | import {mapGet, mapNew} from './map.ts'; 4 | import {strSplit} from './string.ts'; 5 | 6 | const MASK6 = 63; 7 | const ENCODE = strSplit( 8 | '-0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz', 9 | ); 10 | const DECODE = mapNew(arrayMap(ENCODE, (char, index) => [char, index])) as any; 11 | 12 | export const encode = (num: number): string => ENCODE[num & MASK6]; 13 | 14 | export const decode = (str: string, pos: number): number => 15 | mapGet(DECODE, str[pos]) ?? 0; 16 | 17 | export const combineHash = (hash1?: Hash, hash2?: Hash): Hash => 18 | ((hash1 ?? 0) ^ (hash2 ?? 0)) >>> 0; 19 | -------------------------------------------------------------------------------- /docs/api/synclets/type-aliases/message/hash/article.html: -------------------------------------------------------------------------------- 1 |

Hash

The Hash type records the numeric hash used for message verification.

number

Since

v0.0.0

-------------------------------------------------------------------------------- /docs/api/synclets/type-aliases/core/article.html: -------------------------------------------------------------------------------- 1 |

Core type aliases

ExtraMembers

The ExtraMembers type stores host-provided helper functions keyed by name for connector implementations. Read more.

-------------------------------------------------------------------------------- /src/@types/internal.d.ts: -------------------------------------------------------------------------------- 1 | type OneLonger = [string, ...Than]; 2 | 3 | type LeafAddressFor< 4 | Depth extends number, 5 | Address extends string[] = [], 6 | > = Address['length'] extends Depth 7 | ? Address 8 | : LeafAddressFor>; 9 | 10 | type LeafParentAddressFor< 11 | Depth extends number, 12 | Address extends string[] = [], 13 | > = OneLonger
['length'] extends Depth 14 | ? Address 15 | : LeafParentAddressFor>; 16 | 17 | type AnyParentAddressFor< 18 | Depth extends number, 19 | Address extends string[] = [], 20 | > = OneLonger
['length'] extends Depth 21 | ? Address 22 | : Address | AnyParentAddressFor; 23 | -------------------------------------------------------------------------------- /docs/api/pglite/functions/utility/article.html: -------------------------------------------------------------------------------- 1 |

Utility functions

getTableSchema

The getTableSchema function retrieves the schema of a table from a PGlite database, returning an object mapping column names to their data types. Read more.

-------------------------------------------------------------------------------- /docs/api/synclets/type-aliases/message/messagetype/article.html: -------------------------------------------------------------------------------- 1 |

MessageType

The MessageType type enumerates the allowed message kinds, currently the single value 0.

0

Since

v0.0.0

-------------------------------------------------------------------------------- /docs/api/sqlite3/functions/utility/article.html: -------------------------------------------------------------------------------- 1 |

Utility functions

getTableSchema

The getTableSchema function retrieves the schema of a table from a SQLite3 database, returning an object mapping column names to their data types. Read more.

-------------------------------------------------------------------------------- /docs/api/synclets/type-aliases/component/article.html: -------------------------------------------------------------------------------- 1 |

Component type aliases

SyncletComponents

The SyncletComponents type bundles the optional connector and transport instances supplied to createSynclet. Read more.

-------------------------------------------------------------------------------- /docs/api/synclets/type-aliases/constant/reserved/article.html: -------------------------------------------------------------------------------- 1 |

Reserved

The Reserved type captures the literal string form of the RESERVED magic string.

typeof RESERVED

Since

v0.0.0

-------------------------------------------------------------------------------- /docs/api/synclets/type-aliases/option/article.html: -------------------------------------------------------------------------------- 1 |

Option type aliases

SyncletOptions

The SyncletOptions type configures identifiers and logging for a Synclet instance. Read more.

-------------------------------------------------------------------------------- /docs/api/synclets/type-aliases/constant/undefined/article.html: -------------------------------------------------------------------------------- 1 |

Undefined

The Undefined type reflects the literal string produced by the UNDEFINED magic string.

typeof UNDEFINED

Since

v0.0.0

-------------------------------------------------------------------------------- /docs/api/synclets/type-aliases/logging/loglevel/article.html: -------------------------------------------------------------------------------- 1 |

LogLevel

The LogLevel type lists the logger methods that can be invoked.

keyof Logger

Since

v0.0.0

-------------------------------------------------------------------------------- /docs/api/nav.json: -------------------------------------------------------------------------------- 1 | {"i":"root","n":"Synclets","u":"/","p":1,"o":1,"_":[{"i":"G","n":"Guides","u":"/guides/","p":1},{"i":"api","n":"API","u":"/api/","c":1,"p":1,"o":1,"_":[{"i":"e","n":"The Essentials","u":"/api/the-essentials/","p":1},{"i":"s","n":"synclets","u":"/api/synclets/","r":1,"p":1},{"i":"u","n":"utils","u":"/api/utils/","r":1,"p":1},{"i":"b","n":"browser","u":"/api/browser/","r":1,"p":1},{"i":"d8","n":"database","u":"/api/database/","r":1,"p":1},{"i":"d9","n":"durable-object","u":"/api/durable-object/","r":1,"p":1},{"i":"f3","n":"fs","u":"/api/fs/","r":1,"p":1},{"i":"m","n":"memory","u":"/api/memory/","r":1,"p":1},{"i":"p","n":"pglite","u":"/api/pglite/","r":1,"p":1},{"i":"s12","n":"sqlite3","u":"/api/sqlite3/","r":1,"p":1},{"i":"t","n":"tinybase","u":"/api/tinybase/","r":1,"p":1},{"i":"w","n":"ws","u":"/api/ws/","r":1,"p":1}]}]} -------------------------------------------------------------------------------- /docs/guides/the-basics/article.html: -------------------------------------------------------------------------------- 1 |

The Basics

These guides cover the very basics of Synclets.

Core Concepts

Before getting started with Synclets, it's helpful to understand a few core concepts that underpin how it all works. Read more.

Getting Started

This will be an introductory guide to using Synclets in your application. Read more.

-------------------------------------------------------------------------------- /src/@types/utils/index.d.ts: -------------------------------------------------------------------------------- 1 | /// utils 2 | 3 | import {Atom, Hash, Timestamp} from '@synclets/@types'; 4 | 5 | /// jsonString 6 | export function jsonString(value: unknown): string; 7 | 8 | /// jsonParse 9 | export function jsonParse(string: string): any; 10 | 11 | /// getUniqueId 12 | export function getUniqueId(length?: number): string; 13 | 14 | /// getHash 15 | export function getHash(string: string): Hash; 16 | 17 | /// isTimestamp 18 | export function isTimestamp(thing: unknown): thing is Timestamp; 19 | 20 | /// isAtom 21 | export function isAtom(thing: unknown): thing is Atom; 22 | 23 | /// getPartsFromPacket 24 | export function getPartsFromPacket( 25 | packet: string, 26 | ): [toOrFrom: string, body: string]; 27 | 28 | /// getPacketFromParts 29 | export function getPacketFromParts(toOrFrom: string, body: string): string; 30 | -------------------------------------------------------------------------------- /docs/api/memory/type-aliases/transport/article.html: -------------------------------------------------------------------------------- 1 |

Transport type aliases

MemoryTransportOptions

The MemoryTransportOptions type specifies configuration for creating an in-memory Transport. Read more.

-------------------------------------------------------------------------------- /docs/api/durable-object/functions/utility/article.html: -------------------------------------------------------------------------------- 1 |

Utility functions

getTableSchema

The getTableSchema function retrieves the schema of a table from a Cloudflare Durable Object SQL Storage, returning an object mapping column names to their data types. Read more.

-------------------------------------------------------------------------------- /docs/websockets.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | -------------------------------------------------------------------------------- /docs/api/synclets/interfaces/core/synclet/methods/logging/article.html: -------------------------------------------------------------------------------- 1 |

Logging methods

log

The log method writes synclet log entries at the requested level. Read more.

-------------------------------------------------------------------------------- /docs/api/memory/functions/transport/article.html: -------------------------------------------------------------------------------- 1 |

Transport functions

createMemoryTransport

The createMemoryTransport function creates an in-process Transport that delivers packets synchronously within the same JavaScript runtime. Read more.

-------------------------------------------------------------------------------- /site/extras/websockets.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | -------------------------------------------------------------------------------- /test/prod/imports.test.ts: -------------------------------------------------------------------------------- 1 | import {readdirSync} from 'fs'; 2 | import {resolve} from 'path'; 3 | import tsc from 'typescript'; 4 | import {expect, test} from 'vitest'; 5 | 6 | const {createProgram, getPreEmitDiagnostics, readJsonConfigFile, sys} = tsc; 7 | 8 | const dir = __dirname; 9 | 10 | const testFiles = readdirSync(dir).filter( 11 | (file) => !file.includes('.test.') && !file.includes('__snapshots__'), 12 | ); 13 | test.each(testFiles)('Imports', (testFile) => { 14 | const {options} = tsc.parseJsonSourceFileConfigFileContent( 15 | readJsonConfigFile('./test/tsconfig.json', sys.readFile), 16 | sys, 17 | 'test', 18 | ); 19 | const program = createProgram([resolve(dir, testFile)], options); 20 | const results = getPreEmitDiagnostics(program).map( 21 | ({messageText}) => messageText, 22 | ); 23 | 24 | expect(results).toEqual([]); 25 | }); 26 | -------------------------------------------------------------------------------- /docs/api/synclets/interfaces/core/transport/methods/article.html: -------------------------------------------------------------------------------- 1 |

Methods

log

The log method logs output through the Synclet logger. Read more.

-------------------------------------------------------------------------------- /docs/api/tinybase/type-aliases/type/article.html: -------------------------------------------------------------------------------- 1 |

Type type aliases

TinyBaseDataConnectorOptions

The TinyBaseDataConnectorOptions type describes the configuration options for creating a TinyBase-backed DataConnector. Read more.

-------------------------------------------------------------------------------- /docs/api/browser/functions/transport/article.html: -------------------------------------------------------------------------------- 1 |

Transport functions

createBroadcastChannelTransport

The createBroadcastChannelTransport function wraps a BroadcastChannel in a BroadcastChannelTransport implementation. Read more.

-------------------------------------------------------------------------------- /docs/api/synclets/interfaces/core/transport/properties/article.html: -------------------------------------------------------------------------------- 1 |

Properties

_brand

The _brand property identifies Transport instances. Read more.

-------------------------------------------------------------------------------- /docs/api/synclets/type-aliases/synclet/article.html: -------------------------------------------------------------------------------- 1 |

Synclet type aliases

SyncletImplementations

The SyncletImplementations type collects optional async callback functions that customize Synclet behavior at key lifecycle and operational points. Read more.

-------------------------------------------------------------------------------- /site/ui/Main.tsx: -------------------------------------------------------------------------------- 1 | import type {NoPropComponent} from 'tinydocs'; 2 | import {NodeNavigation, useIsSingle, usePageNode, useRootNode} from 'tinydocs'; 3 | import {ArticleInner} from './ArticleInner.tsx'; 4 | import {Home} from './Home.tsx'; 5 | 6 | export const Main: NoPropComponent = () => { 7 | const pageNode = usePageNode(); 8 | const rootNode = useRootNode(); 9 | const isSingle = useIsSingle(); 10 | const isHome = pageNode == rootNode; 11 | 12 | return ( 13 |
14 | {isHome ? ( 15 | 16 | ) : ( 17 | <> 18 | 23 |
24 | 25 |
26 |
30 | ); 31 | }; 32 | -------------------------------------------------------------------------------- /docs/api/database/functions/article.html: -------------------------------------------------------------------------------- 1 |

Functions

getQuery

The getQuery function constructs a string and args pair for retrieving data. Read more.

sql

The sql template tag constructs a Sql object from a template string. Read more.

-------------------------------------------------------------------------------- /docs/api/memory/type-aliases/article.html: -------------------------------------------------------------------------------- 1 |

Type Aliases

Transport type aliases

Connector type aliases

-------------------------------------------------------------------------------- /docs/api/synclets/interfaces/core/dataconnector/methods/article.html: -------------------------------------------------------------------------------- 1 |

Methods

log

The log method logs output through the Synclet logger. Read more.

-------------------------------------------------------------------------------- /docs/api/synclets/interfaces/core/metaconnector/methods/article.html: -------------------------------------------------------------------------------- 1 |

Methods

log

The log method logs output through the Synclet logger. Read more.

-------------------------------------------------------------------------------- /docs/api/synclets/interfaces/core/transport/methods/logging/article.html: -------------------------------------------------------------------------------- 1 |

Logging methods

log

The log method logs output through the Synclet logger. Read more.

-------------------------------------------------------------------------------- /docs/api/browser/type-aliases/transport/article.html: -------------------------------------------------------------------------------- 1 |

Transport type aliases

BroadcastChannelTransportOptions

The BroadcastChannelTransportOptions type describes the options for creating a BroadcastChannelTransport. Read more.

-------------------------------------------------------------------------------- /docs/guides/the-basics/getting-started/article.html: -------------------------------------------------------------------------------- 1 |

Getting Started

This will be an introductory guide to using Synclets in your application.

Right now, the Synclets project is still in a very early stage of development, so please be aware that things may change rapidly, and we don't recommend you use it in production just yet! So this guide is... pretty short.

This guide will get built out quickly as the project matures. In the meantime, the best way to get something up and running is to use our very basic Vite template.

Good luck!

-------------------------------------------------------------------------------- /site/ui/Footer.tsx: -------------------------------------------------------------------------------- 1 | import type {NoPropComponent} from 'tinydocs'; 2 | 3 | export const Footer: NoPropComponent = () => ( 4 | 38 | ); 39 | -------------------------------------------------------------------------------- /docs/api/database/article.html: -------------------------------------------------------------------------------- 1 |

database

The database module defines shared option types for SQL-style connectors.

Since

v0.0.0

Functions

Type Aliases

-------------------------------------------------------------------------------- /docs/api/synclets/type-aliases/address/atomsaddress/article.html: -------------------------------------------------------------------------------- 1 |

AtomsAddress

The AtomsAddress type targets the parent location that contains a collection of Atoms in a data tree.

LeafParentAddressFor<Depth>

Since

v0.0.0

-------------------------------------------------------------------------------- /docs/api/synclets/interfaces/core/transport/properties/identity/article.html: -------------------------------------------------------------------------------- 1 |

Identity properties

_brand

The _brand property identifies Transport instances. Read more.

-------------------------------------------------------------------------------- /docs/api/durable-object/interfaces/article.html: -------------------------------------------------------------------------------- 1 |

Interfaces

DurableObjectTransport

The DurableObjectTransport type represents a transport that is specialized for use with a Cloudflare Durable Object. Read more.

-------------------------------------------------------------------------------- /docs/api/synclets/interfaces/core/transport/properties/identity/brand/article.html: -------------------------------------------------------------------------------- 1 |

_brand

The _brand property identifies Transport instances.

"Transport"

Since

v0.0.0

-------------------------------------------------------------------------------- /docs/api/database/functions/function/article.html: -------------------------------------------------------------------------------- 1 |

Function functions

getQuery

The getQuery function constructs a string and args pair for retrieving data. Read more.

sql

The sql template tag constructs a Sql object from a template string. Read more.

-------------------------------------------------------------------------------- /docs/api/synclets/interfaces/core/dataconnector/methods/logging/article.html: -------------------------------------------------------------------------------- 1 |

Logging methods

log

The log method logs output through the Synclet logger. Read more.

-------------------------------------------------------------------------------- /docs/api/synclets/interfaces/core/metaconnector/methods/logging/article.html: -------------------------------------------------------------------------------- 1 |

Logging methods

log

The log method logs output through the Synclet logger. Read more.

-------------------------------------------------------------------------------- /docs/api/tinybase/interfaces/article.html: -------------------------------------------------------------------------------- 1 |

Interfaces

TinyBaseDataConnector

The TinyBaseDataConnector interface describes a DataConnector that wraps a TinyBase Store. Read more.

-------------------------------------------------------------------------------- /docs/api/tinybase/type-aliases/article.html: -------------------------------------------------------------------------------- 1 |

Type Aliases

Connector type aliases

Type type aliases

-------------------------------------------------------------------------------- /docs/api/ws/interfaces/transport/wsbrokertransport/properties/article.html: -------------------------------------------------------------------------------- 1 |

Properties

_brand

The _brand property identifies Transport instances. Read more.

-------------------------------------------------------------------------------- /docs/api/ws/interfaces/transport/wsclienttransport/properties/article.html: -------------------------------------------------------------------------------- 1 |

Properties

_brand

The _brand property identifies Transport instances. Read more.

-------------------------------------------------------------------------------- /docs/api/durable-object/interfaces/type/article.html: -------------------------------------------------------------------------------- 1 |

Type interfaces

DurableObjectTransport

The DurableObjectTransport type represents a transport that is specialized for use with a Cloudflare Durable Object. Read more.

-------------------------------------------------------------------------------- /test/durable-object/connectors.test.ts: -------------------------------------------------------------------------------- 1 | import type {Miniflare} from 'miniflare'; 2 | import {afterAll, beforeAll, expect, test} from 'vitest'; 3 | import {createMiniflare} from './common.ts'; 4 | 5 | const PORT = 8782; 6 | 7 | let miniflare: Miniflare; 8 | let api: (path: string, ...args: any) => Promise; 9 | 10 | beforeAll(async () => { 11 | [miniflare, api] = await createMiniflare( 12 | 'TestConnectorsOnlyDurableObject', 13 | PORT, 14 | ); 15 | }); 16 | 17 | afterAll(async () => { 18 | await miniflare.dispose(); 19 | }); 20 | 21 | test('setAtom', async () => { 22 | expect(await api('getData')).toEqual({}); 23 | await api('setAtom', ['a'], 'a'); 24 | expect(await api('getData')).toEqual({a: 'a'}); 25 | await api('setAtom', ['b'], true); 26 | expect(await api('getData')).toEqual({a: 'a', b: true}); 27 | await api('setAtom', ['c'], 1); 28 | expect(await api('getData')).toEqual({a: 'a', b: true, c: 1}); 29 | }); 30 | -------------------------------------------------------------------------------- /docs/api/synclets/type-aliases/address/timestampsaddress/article.html: -------------------------------------------------------------------------------- 1 |

TimestampsAddress

The TimestampsAddress type targets the parent node that contains a collection of Timestamps in a meta tree.

LeafParentAddressFor<Depth>

Since

v0.0.0

-------------------------------------------------------------------------------- /docs/api/ws/interfaces/transport/wsbrokertransport/properties/identity/brand/article.html: -------------------------------------------------------------------------------- 1 |

_brand

The _brand property identifies Transport instances.

"Transport"

Since

v0.0.0

-------------------------------------------------------------------------------- /docs/api/ws/interfaces/transport/wsclienttransport/properties/identity/brand/article.html: -------------------------------------------------------------------------------- 1 |

_brand

The _brand property identifies Transport instances.

"Transport"

Since

v0.0.0

-------------------------------------------------------------------------------- /docs/api/ws/interfaces/transport/wsbrokertransport/properties/identity/article.html: -------------------------------------------------------------------------------- 1 |

Identity properties

_brand

The _brand property identifies Transport instances. Read more.

-------------------------------------------------------------------------------- /docs/api/ws/interfaces/transport/wsclienttransport/properties/identity/article.html: -------------------------------------------------------------------------------- 1 |

Identity properties

_brand

The _brand property identifies Transport instances. Read more.

-------------------------------------------------------------------------------- /site/ui/Header.tsx: -------------------------------------------------------------------------------- 1 | import type {NoPropComponent} from 'tinydocs'; 2 | import {NodeChildren, useRootNode} from 'tinydocs'; 3 | import {useMetadata} from './BuildContext.tsx'; 4 | 5 | export const Header: NoPropComponent = () => { 6 | const {version} = useMetadata(); 7 | const rootNode = useRootNode(); 8 | 9 | return ( 10 |
11 | 12 | Synclets logo 13 | 14 | Synclets 15 | {version.includes('beta') && ( 16 | <> 17 | {' '} 18 | β 19 | 20 | )} 21 | 22 | 23 | 31 | 32 |
33 | ); 34 | }; 35 | -------------------------------------------------------------------------------- /docs/api/tinybase/interfaces/connector/article.html: -------------------------------------------------------------------------------- 1 |

Connector interfaces

TinyBaseDataConnector

The TinyBaseDataConnector interface describes a DataConnector that wraps a TinyBase Store. Read more.

-------------------------------------------------------------------------------- /docs/api/durable-object/classes/class/syncletdurableobject/constructors/article.html: -------------------------------------------------------------------------------- 1 |

Constructors

constructor

The constructor initializes the Durable Object. Read more.

-------------------------------------------------------------------------------- /docs/api/memory/nav.json: -------------------------------------------------------------------------------- 1 | {"i":"root","n":"Synclets","u":"/","p":1,"o":1,"_":[{"i":"G","n":"Guides","u":"/guides/","p":1},{"i":"api","n":"API","u":"/api/","p":1,"o":1,"_":[{"i":"e","n":"The Essentials","u":"/api/the-essentials/","p":1},{"i":"s","n":"synclets","u":"/api/synclets/","r":1,"p":1},{"i":"u","n":"utils","u":"/api/utils/","r":1,"p":1},{"i":"b","n":"browser","u":"/api/browser/","r":1,"p":1},{"i":"d8","n":"database","u":"/api/database/","r":1,"p":1},{"i":"d9","n":"durable-object","u":"/api/durable-object/","r":1,"p":1},{"i":"f3","n":"fs","u":"/api/fs/","r":1,"p":1},{"i":"m","n":"memory","u":"/api/memory/","r":1,"c":1,"p":1,"o":1,"_":[{"i":"m/F9","n":"Functions","u":"/api/memory/functions/","p":1},{"i":"m/TA8","n":"Type Aliases","u":"/api/memory/type-aliases/","p":1}]},{"i":"p","n":"pglite","u":"/api/pglite/","r":1,"p":1},{"i":"s12","n":"sqlite3","u":"/api/sqlite3/","r":1,"p":1},{"i":"t","n":"tinybase","u":"/api/tinybase/","r":1,"p":1},{"i":"w","n":"ws","u":"/api/ws/","r":1,"p":1}]}]} -------------------------------------------------------------------------------- /docs/api/synclets/interfaces/core/dataconnector/properties/structure/depth/article.html: -------------------------------------------------------------------------------- 1 |

depth

The depth property returns the address depth supported by this connector.

Depth

Since

v0.0.0

-------------------------------------------------------------------------------- /docs/api/synclets/interfaces/core/metaconnector/properties/structure/depth/article.html: -------------------------------------------------------------------------------- 1 |

depth

The depth property returns the address depth supported by this connector.

Depth

Since

v0.0.0

-------------------------------------------------------------------------------- /docs/api/synclets/type-aliases/address/atomaddress/article.html: -------------------------------------------------------------------------------- 1 |

AtomAddress

The AtomAddress type narrows an Address to a leaf that stores an Atom at a fixed depth in a data tree.

LeafAddressFor<Depth>

Since

v0.0.0

-------------------------------------------------------------------------------- /docs/api/database/nav.json: -------------------------------------------------------------------------------- 1 | {"i":"root","n":"Synclets","u":"/","p":1,"o":1,"_":[{"i":"G","n":"Guides","u":"/guides/","p":1},{"i":"api","n":"API","u":"/api/","p":1,"o":1,"_":[{"i":"e","n":"The Essentials","u":"/api/the-essentials/","p":1},{"i":"s","n":"synclets","u":"/api/synclets/","r":1,"p":1},{"i":"u","n":"utils","u":"/api/utils/","r":1,"p":1},{"i":"b","n":"browser","u":"/api/browser/","r":1,"p":1},{"i":"d8","n":"database","u":"/api/database/","r":1,"c":1,"p":1,"o":1,"_":[{"i":"d8/F4","n":"Functions","u":"/api/database/functions/","p":1},{"i":"d8/TA5","n":"Type Aliases","u":"/api/database/type-aliases/","p":1}]},{"i":"d9","n":"durable-object","u":"/api/durable-object/","r":1,"p":1},{"i":"f3","n":"fs","u":"/api/fs/","r":1,"p":1},{"i":"m","n":"memory","u":"/api/memory/","r":1,"p":1},{"i":"p","n":"pglite","u":"/api/pglite/","r":1,"p":1},{"i":"s12","n":"sqlite3","u":"/api/sqlite3/","r":1,"p":1},{"i":"t","n":"tinybase","u":"/api/tinybase/","r":1,"p":1},{"i":"w","n":"ws","u":"/api/ws/","r":1,"p":1}]}]} -------------------------------------------------------------------------------- /docs/api/fs/interfaces/connector/filedataconnector/properties/structure/depth/article.html: -------------------------------------------------------------------------------- 1 |

depth

The depth property returns the address depth supported by this connector.

Depth

Since

v0.0.0

-------------------------------------------------------------------------------- /docs/api/fs/interfaces/connector/filemetaconnector/properties/structure/depth/article.html: -------------------------------------------------------------------------------- 1 |

depth

The depth property returns the address depth supported by this connector.

Depth

Since

v0.0.0

-------------------------------------------------------------------------------- /docs/api/database/type-aliases/type/article.html: -------------------------------------------------------------------------------- 1 |

Type type aliases

Sql

The Sql type represents a parameterized SQL query. Read more.

TableSchema

The TableSchema type represents the schema of a database table as an object mapping column names to their data types. Read more.

-------------------------------------------------------------------------------- /docs/api/pglite/functions/article.html: -------------------------------------------------------------------------------- 1 |

Functions

Connector functions

Utility functions

-------------------------------------------------------------------------------- /docs/api/database/type-aliases/article.html: -------------------------------------------------------------------------------- 1 |

Type Aliases

Option type aliases

Type type aliases

-------------------------------------------------------------------------------- /docs/api/durable-object/classes/class/brokeronlydurableobject/constructors/article.html: -------------------------------------------------------------------------------- 1 |

Constructors

constructor

The constructor initializes the Durable Object. Read more.

-------------------------------------------------------------------------------- /docs/api/durable-object/functions/creation/article.html: -------------------------------------------------------------------------------- 1 |

Creation functions

getSyncletDurableObjectFetch

The getSyncletDurableObjectFetch function returns a convenient handler for a Cloudflare worker to route requests to the fetch handler of a SyncletDurableObject for the given namespace. Read more.

-------------------------------------------------------------------------------- /docs/api/fs/interfaces/connector/filedataconnector/methods/accessor/article.html: -------------------------------------------------------------------------------- 1 |

Accessor methods

getFile

The getFile method returns the path to the backing data file. Read more.

-------------------------------------------------------------------------------- /docs/api/memory/functions/article.html: -------------------------------------------------------------------------------- 1 |

Functions

Transport functions

Connector functions

-------------------------------------------------------------------------------- /src/common/string.ts: -------------------------------------------------------------------------------- 1 | export const EMPTY_STRING = ''; 2 | export const SPACE = ' '; 3 | export const ASTERISK = '*'; 4 | export const UTF8 = 'utf8'; 5 | 6 | export const INVALID = 'invalid '; 7 | export const INVALID_NODE = INVALID + 'node'; 8 | export const WARN = 'warn'; 9 | 10 | export const strSplit = ( 11 | str: string, 12 | separator: string | RegExp = EMPTY_STRING, 13 | limit?: number, 14 | ): string[] => str.split(separator, limit); 15 | 16 | export const strMatch = (str: string | undefined, regex: RegExp) => 17 | str?.match(regex) ?? undefined; 18 | 19 | export const strTest = (str: string, regex: RegExp): boolean => regex.test(str); 20 | 21 | export const strReplaceAll = (str: string, search: string, replace: string) => 22 | str.replaceAll(search, replace); 23 | 24 | export const strSub = (str: string, start: number, end?: number): string => 25 | str.slice(start, end); 26 | 27 | export const strEndsWith = (str: string, search: string): boolean => 28 | str.endsWith(search); 29 | -------------------------------------------------------------------------------- /docs/api/fs/interfaces/connector/filemetaconnector/methods/accessor/article.html: -------------------------------------------------------------------------------- 1 |

Accessor methods

getFile

The getFile method returns the path to the backing metadata file. Read more.

-------------------------------------------------------------------------------- /docs/api/sqlite3/functions/article.html: -------------------------------------------------------------------------------- 1 |

Functions

Connector functions

Utility functions

-------------------------------------------------------------------------------- /docs/api/durable-object/classes/class/syncletdurableobject/constructors/constructor/article.html: -------------------------------------------------------------------------------- 1 |

Constructor constructors

constructor

The constructor initializes the Durable Object. Read more.

-------------------------------------------------------------------------------- /docs/api/fs/interfaces/connector/directorydataconnector/properties/structure/depth/article.html: -------------------------------------------------------------------------------- 1 |

depth

The depth property returns the address depth supported by this connector.

Depth

Since

v0.0.0

-------------------------------------------------------------------------------- /docs/api/fs/interfaces/connector/directorymetaconnector/properties/structure/depth/article.html: -------------------------------------------------------------------------------- 1 |

depth

The depth property returns the address depth supported by this connector.

Depth

Since

v0.0.0

-------------------------------------------------------------------------------- /docs/api/memory/article.html: -------------------------------------------------------------------------------- 1 |

memory

The memory module provides volatile connectors and transport for tests, demos, and ephemeral synclets.

Since

v0.0.0

Functions

Type Aliases

-------------------------------------------------------------------------------- /docs/api/synclets/interfaces/core/dataconnector/properties/structure/article.html: -------------------------------------------------------------------------------- 1 |

Structure properties

depth

The depth property returns the address depth supported by this connector. Read more.

-------------------------------------------------------------------------------- /docs/api/synclets/type-aliases/address/timestampaddress/article.html: -------------------------------------------------------------------------------- 1 |

TimestampAddress

The TimestampAddress type narrows an Address to the leaf that stores a Timestamp at a fixed depth in a meta tree.

LeafAddressFor<Depth>

Since

v0.0.0

-------------------------------------------------------------------------------- /docs/api/synclets/interfaces/core/metaconnector/properties/structure/article.html: -------------------------------------------------------------------------------- 1 |

Structure properties

depth

The depth property returns the address depth supported by this connector. Read more.

-------------------------------------------------------------------------------- /docs/api/ws/interfaces/transport/wsclienttransport/methods/accessor/article.html: -------------------------------------------------------------------------------- 1 |

Accessor methods

getWebSocket

The getWebSocket method returns the wrapped WebSocket instance. Read more.

-------------------------------------------------------------------------------- /docs/api/ws/type-aliases/article.html: -------------------------------------------------------------------------------- 1 |

Type Aliases

WsBrokerTransportOptions

The WsBrokerTransportOptions type describes additional configuration for a WsBrokerTransport. Read more.

WebSocketTypes

The WebSocketTypes type unifies browser WebSocket and ws WebSocket implementations. Read more.

-------------------------------------------------------------------------------- /docs/api/fs/nav.json: -------------------------------------------------------------------------------- 1 | {"i":"root","n":"Synclets","u":"/","p":1,"o":1,"_":[{"i":"G","n":"Guides","u":"/guides/","p":1},{"i":"api","n":"API","u":"/api/","p":1,"o":1,"_":[{"i":"e","n":"The Essentials","u":"/api/the-essentials/","p":1},{"i":"s","n":"synclets","u":"/api/synclets/","r":1,"p":1},{"i":"u","n":"utils","u":"/api/utils/","r":1,"p":1},{"i":"b","n":"browser","u":"/api/browser/","r":1,"p":1},{"i":"d8","n":"database","u":"/api/database/","r":1,"p":1},{"i":"d9","n":"durable-object","u":"/api/durable-object/","r":1,"p":1},{"i":"f3","n":"fs","u":"/api/fs/","r":1,"c":1,"p":1,"o":1,"_":[{"i":"f3/I14","n":"Interfaces","u":"/api/fs/interfaces/","p":1},{"i":"f3/F8","n":"Functions","u":"/api/fs/functions/","p":1},{"i":"f3/TA7","n":"Type Aliases","u":"/api/fs/type-aliases/","p":1}]},{"i":"m","n":"memory","u":"/api/memory/","r":1,"p":1},{"i":"p","n":"pglite","u":"/api/pglite/","r":1,"p":1},{"i":"s12","n":"sqlite3","u":"/api/sqlite3/","r":1,"p":1},{"i":"t","n":"tinybase","u":"/api/tinybase/","r":1,"p":1},{"i":"w","n":"ws","u":"/api/ws/","r":1,"p":1}]}]} -------------------------------------------------------------------------------- /docs/api/synclets/type-aliases/constant/article.html: -------------------------------------------------------------------------------- 1 |

Constant type aliases

Reserved

The Reserved type captures the literal string form of the RESERVED magic string. Read more.

Undefined

The Undefined type reflects the literal string produced by the UNDEFINED magic string. Read more.

-------------------------------------------------------------------------------- /docs/api/ws/nav.json: -------------------------------------------------------------------------------- 1 | {"i":"root","n":"Synclets","u":"/","p":1,"o":1,"_":[{"i":"G","n":"Guides","u":"/guides/","p":1},{"i":"api","n":"API","u":"/api/","p":1,"o":1,"_":[{"i":"e","n":"The Essentials","u":"/api/the-essentials/","p":1},{"i":"s","n":"synclets","u":"/api/synclets/","r":1,"p":1},{"i":"u","n":"utils","u":"/api/utils/","r":1,"p":1},{"i":"b","n":"browser","u":"/api/browser/","r":1,"p":1},{"i":"d8","n":"database","u":"/api/database/","r":1,"p":1},{"i":"d9","n":"durable-object","u":"/api/durable-object/","r":1,"p":1},{"i":"f3","n":"fs","u":"/api/fs/","r":1,"p":1},{"i":"m","n":"memory","u":"/api/memory/","r":1,"p":1},{"i":"p","n":"pglite","u":"/api/pglite/","r":1,"p":1},{"i":"s12","n":"sqlite3","u":"/api/sqlite3/","r":1,"p":1},{"i":"t","n":"tinybase","u":"/api/tinybase/","r":1,"p":1},{"i":"w","n":"ws","u":"/api/ws/","r":1,"c":1,"p":1,"o":1,"_":[{"i":"w/I27","n":"Interfaces","u":"/api/ws/interfaces/","p":1},{"i":"w/F13","n":"Functions","u":"/api/ws/functions/","p":1},{"i":"w/TA12","n":"Type Aliases","u":"/api/ws/type-aliases/","p":1}]}]}]} -------------------------------------------------------------------------------- /docs/api/fs/interfaces/connector/filedataconnector/properties/structure/article.html: -------------------------------------------------------------------------------- 1 |

Structure properties

depth

The depth property returns the address depth supported by this connector. Read more.

-------------------------------------------------------------------------------- /docs/api/fs/interfaces/connector/filemetaconnector/properties/structure/article.html: -------------------------------------------------------------------------------- 1 |

Structure properties

depth

The depth property returns the address depth supported by this connector. Read more.

-------------------------------------------------------------------------------- /docs/api/pglite/interfaces/connector/pglitedataconnector/properties/structure/depth/article.html: -------------------------------------------------------------------------------- 1 |

depth

The depth property returns the address depth supported by this connector.

Depth

Since

v0.0.0

-------------------------------------------------------------------------------- /docs/api/pglite/interfaces/connector/pglitemetaconnector/properties/structure/depth/article.html: -------------------------------------------------------------------------------- 1 |

depth

The depth property returns the address depth supported by this connector.

Depth

Since

v0.0.0

-------------------------------------------------------------------------------- /docs/api/synclets/type-aliases/address/anyparentaddress/article.html: -------------------------------------------------------------------------------- 1 |

AnyParentAddress

The AnyParentAddress type covers every location that has children (whether Atoms, Timestamps, or other parent nodes).

AnyParentAddressFor<Depth>

Since

v0.0.0

-------------------------------------------------------------------------------- /docs/api/durable-object/classes/class/brokeronlydurableobject/constructors/constructor/article.html: -------------------------------------------------------------------------------- 1 |

Constructor constructors

constructor

The constructor initializes the Durable Object. Read more.

-------------------------------------------------------------------------------- /test/vitest/reporter.ts: -------------------------------------------------------------------------------- 1 | import {writeFile} from 'fs/promises'; 2 | import { 3 | SerializedError, 4 | TestCase, 5 | TestModule, 6 | TestRunEndReason, 7 | } from 'vitest/node'; 8 | import {DefaultReporter} from 'vitest/reporters'; 9 | 10 | export default class extends DefaultReporter { 11 | tests: number = 0; 12 | assertions: number = 0; 13 | async onTestCaseResult(testCase: TestCase) { 14 | this.assertions += (testCase.meta() as any).assertions || 0; 15 | this.tests++; 16 | super.onTestCaseResult(testCase); 17 | } 18 | 19 | async onTestRunEnd( 20 | testModules: ReadonlyArray, 21 | unhandledErrors: ReadonlyArray, 22 | reason: TestRunEndReason, 23 | ) { 24 | super.onTestRunEnd(testModules, unhandledErrors, reason); 25 | this.ctx.logger.log(`\nTotal Assertions: ${this.assertions}`); 26 | await writeFile( 27 | './tmp/counts.json', 28 | JSON.stringify({tests: this.tests, assertions: this.assertions}), 29 | 'utf8', 30 | ); 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /docs/api/browser/nav.json: -------------------------------------------------------------------------------- 1 | {"i":"root","n":"Synclets","u":"/","p":1,"o":1,"_":[{"i":"G","n":"Guides","u":"/guides/","p":1},{"i":"api","n":"API","u":"/api/","p":1,"o":1,"_":[{"i":"e","n":"The Essentials","u":"/api/the-essentials/","p":1},{"i":"s","n":"synclets","u":"/api/synclets/","r":1,"p":1},{"i":"u","n":"utils","u":"/api/utils/","r":1,"p":1},{"i":"b","n":"browser","u":"/api/browser/","r":1,"c":1,"p":1,"o":1,"_":[{"i":"b/I6","n":"Interfaces","u":"/api/browser/interfaces/","p":1},{"i":"b/F3","n":"Functions","u":"/api/browser/functions/","p":1},{"i":"b/TA4","n":"Type Aliases","u":"/api/browser/type-aliases/","p":1}]},{"i":"d8","n":"database","u":"/api/database/","r":1,"p":1},{"i":"d9","n":"durable-object","u":"/api/durable-object/","r":1,"p":1},{"i":"f3","n":"fs","u":"/api/fs/","r":1,"p":1},{"i":"m","n":"memory","u":"/api/memory/","r":1,"p":1},{"i":"p","n":"pglite","u":"/api/pglite/","r":1,"p":1},{"i":"s12","n":"sqlite3","u":"/api/sqlite3/","r":1,"p":1},{"i":"t","n":"tinybase","u":"/api/tinybase/","r":1,"p":1},{"i":"w","n":"ws","u":"/api/ws/","r":1,"p":1}]}]} -------------------------------------------------------------------------------- /docs/api/fs/interfaces/connector/filedataconnector/methods/logging/article.html: -------------------------------------------------------------------------------- 1 |

Logging methods

log

The log method logs output through the Synclet logger. Read more.

-------------------------------------------------------------------------------- /docs/api/fs/interfaces/connector/filemetaconnector/methods/logging/article.html: -------------------------------------------------------------------------------- 1 |

Logging methods

log

The log method logs output through the Synclet logger. Read more.

-------------------------------------------------------------------------------- /docs/api/pglite/nav.json: -------------------------------------------------------------------------------- 1 | {"i":"root","n":"Synclets","u":"/","p":1,"o":1,"_":[{"i":"G","n":"Guides","u":"/guides/","p":1},{"i":"api","n":"API","u":"/api/","p":1,"o":1,"_":[{"i":"e","n":"The Essentials","u":"/api/the-essentials/","p":1},{"i":"s","n":"synclets","u":"/api/synclets/","r":1,"p":1},{"i":"u","n":"utils","u":"/api/utils/","r":1,"p":1},{"i":"b","n":"browser","u":"/api/browser/","r":1,"p":1},{"i":"d8","n":"database","u":"/api/database/","r":1,"p":1},{"i":"d9","n":"durable-object","u":"/api/durable-object/","r":1,"p":1},{"i":"f3","n":"fs","u":"/api/fs/","r":1,"p":1},{"i":"m","n":"memory","u":"/api/memory/","r":1,"p":1},{"i":"p","n":"pglite","u":"/api/pglite/","r":1,"c":1,"p":1,"o":1,"_":[{"i":"p/I19","n":"Interfaces","u":"/api/pglite/interfaces/","p":1},{"i":"p/F10","n":"Functions","u":"/api/pglite/functions/","p":1},{"i":"p/TA9","n":"Type Aliases","u":"/api/pglite/type-aliases/","p":1}]},{"i":"s12","n":"sqlite3","u":"/api/sqlite3/","r":1,"p":1},{"i":"t","n":"tinybase","u":"/api/tinybase/","r":1,"p":1},{"i":"w","n":"ws","u":"/api/ws/","r":1,"p":1}]}]} -------------------------------------------------------------------------------- /docs/api/ws/interfaces/transport/wsbrokertransport/methods/logging/article.html: -------------------------------------------------------------------------------- 1 |

Logging methods

log

The log method logs output through the Synclet logger. Read more.

-------------------------------------------------------------------------------- /docs/api/ws/interfaces/transport/wsclienttransport/methods/logging/article.html: -------------------------------------------------------------------------------- 1 |

Logging methods

log

The log method logs output through the Synclet logger. Read more.

-------------------------------------------------------------------------------- /docs/api/sqlite3/interfaces/connector/sqlite3dataconnector/properties/structure/depth/article.html: -------------------------------------------------------------------------------- 1 |

depth

The depth property returns the address depth supported by this connector.

Depth

Since

v0.0.0

-------------------------------------------------------------------------------- /docs/api/sqlite3/interfaces/connector/sqlite3metaconnector/properties/structure/depth/article.html: -------------------------------------------------------------------------------- 1 |

depth

The depth property returns the address depth supported by this connector.

Depth

Since

v0.0.0

-------------------------------------------------------------------------------- /docs/api/sqlite3/nav.json: -------------------------------------------------------------------------------- 1 | {"i":"root","n":"Synclets","u":"/","p":1,"o":1,"_":[{"i":"G","n":"Guides","u":"/guides/","p":1},{"i":"api","n":"API","u":"/api/","p":1,"o":1,"_":[{"i":"e","n":"The Essentials","u":"/api/the-essentials/","p":1},{"i":"s","n":"synclets","u":"/api/synclets/","r":1,"p":1},{"i":"u","n":"utils","u":"/api/utils/","r":1,"p":1},{"i":"b","n":"browser","u":"/api/browser/","r":1,"p":1},{"i":"d8","n":"database","u":"/api/database/","r":1,"p":1},{"i":"d9","n":"durable-object","u":"/api/durable-object/","r":1,"p":1},{"i":"f3","n":"fs","u":"/api/fs/","r":1,"p":1},{"i":"m","n":"memory","u":"/api/memory/","r":1,"p":1},{"i":"p","n":"pglite","u":"/api/pglite/","r":1,"p":1},{"i":"s12","n":"sqlite3","u":"/api/sqlite3/","r":1,"c":1,"p":1,"o":1,"_":[{"i":"s12/I22","n":"Interfaces","u":"/api/sqlite3/interfaces/","p":1},{"i":"s12/F11","n":"Functions","u":"/api/sqlite3/functions/","p":1},{"i":"s12/TA10","n":"Type Aliases","u":"/api/sqlite3/type-aliases/","p":1}]},{"i":"t","n":"tinybase","u":"/api/tinybase/","r":1,"p":1},{"i":"w","n":"ws","u":"/api/ws/","r":1,"p":1}]}]} -------------------------------------------------------------------------------- /docs/api/tinybase/nav.json: -------------------------------------------------------------------------------- 1 | {"i":"root","n":"Synclets","u":"/","p":1,"o":1,"_":[{"i":"G","n":"Guides","u":"/guides/","p":1},{"i":"api","n":"API","u":"/api/","p":1,"o":1,"_":[{"i":"e","n":"The Essentials","u":"/api/the-essentials/","p":1},{"i":"s","n":"synclets","u":"/api/synclets/","r":1,"p":1},{"i":"u","n":"utils","u":"/api/utils/","r":1,"p":1},{"i":"b","n":"browser","u":"/api/browser/","r":1,"p":1},{"i":"d8","n":"database","u":"/api/database/","r":1,"p":1},{"i":"d9","n":"durable-object","u":"/api/durable-object/","r":1,"p":1},{"i":"f3","n":"fs","u":"/api/fs/","r":1,"p":1},{"i":"m","n":"memory","u":"/api/memory/","r":1,"p":1},{"i":"p","n":"pglite","u":"/api/pglite/","r":1,"p":1},{"i":"s12","n":"sqlite3","u":"/api/sqlite3/","r":1,"p":1},{"i":"t","n":"tinybase","u":"/api/tinybase/","r":1,"c":1,"p":1,"o":1,"_":[{"i":"t/I25","n":"Interfaces","u":"/api/tinybase/interfaces/","p":1},{"i":"t/F12","n":"Functions","u":"/api/tinybase/functions/","p":1},{"i":"t/TA11","n":"Type Aliases","u":"/api/tinybase/type-aliases/","p":1}]},{"i":"w","n":"ws","u":"/api/ws/","r":1,"p":1}]}]} -------------------------------------------------------------------------------- /docs/api/ws/interfaces/transport/wsbrokertransport/methods/accessor/article.html: -------------------------------------------------------------------------------- 1 |

Accessor methods

getWebSocketServer

The getWebSocketServer method returns the wrapped WebSocketServer instance. Read more.

-------------------------------------------------------------------------------- /docs/api/synclets/type-aliases/context/article.html: -------------------------------------------------------------------------------- 1 |

Context type aliases

Context

The Context type holds arbitrary key-value metadata that accompanies sync messages and mutation operations. Context values must be Atoms (strings, numbers, booleans, null, or UNDEFINED). Common uses include authentication tokens, user identifiers, request IDs, or any other information needed for authorization, routing, or auditing. Read more.

-------------------------------------------------------------------------------- /docs/api/ws/type-aliases/transport/article.html: -------------------------------------------------------------------------------- 1 |

Transport type aliases

WsBrokerTransportOptions

The WsBrokerTransportOptions type describes additional configuration for a WsBrokerTransport. Read more.

WebSocketTypes

The WebSocketTypes type unifies browser WebSocket and ws WebSocket implementations. Read more.

-------------------------------------------------------------------------------- /docs/api/durable-object/classes/class/syncletdurableobject/methods/sync/article.html: -------------------------------------------------------------------------------- 1 |

Sync methods

sync

The sync method triggers synchronization at the specified address. Read more.

-------------------------------------------------------------------------------- /docs/api/pglite/interfaces/connector/pglitedataconnector/methods/accessor/article.html: -------------------------------------------------------------------------------- 1 |

Accessor methods

getPglite

The getPglite method returns the underlying PGlite instance. Read more.

-------------------------------------------------------------------------------- /docs/api/synclets/type-aliases/address/address/article.html: -------------------------------------------------------------------------------- 1 |

Address

The Address type represents an array of string segments that form a path to a specific location within the data or metadata tree. For example, ['users', '123', 'name'] addresses the 'name' atom nested under user '123'. The length of the address must match the configured tree depth.

string[]

Since

v0.0.0

-------------------------------------------------------------------------------- /site/ui/ExecutablePen.tsx: -------------------------------------------------------------------------------- 1 | import prettier from '@prettier/sync'; 2 | import type {NoPropComponent} from 'tinydocs'; 3 | import {usePageNode} from 'tinydocs'; 4 | 5 | export const ExecutablePen: NoPropComponent = (): any => { 6 | const {name: title, summary: description, executables} = usePageNode(); 7 | if (executables == null) { 8 | return null; 9 | } 10 | 11 | const {html = '', less = '', tsx = ''} = executables; 12 | 13 | const pen = { 14 | title, 15 | description, 16 | html: prettier.format(html, {parser: 'html'}).trim(), 17 | css: prettier.format(less, {parser: 'less'}).trim(), 18 | js: prettier 19 | .format(tsx, { 20 | parser: 'typescript', 21 | singleQuote: true, 22 | trailingComma: 'all', 23 | bracketSpacing: false, 24 | }) 25 | .trim(), 26 | css_pre_processor: 'less', 27 | js_pre_processor: 'typescript', 28 | editors: '012', 29 | tags: ['synclets'], 30 | }; 31 | 32 | return ; 33 | }; 34 | -------------------------------------------------------------------------------- /docs/api/durable-object/classes/class/syncletdurableobject/methods/logging/article.html: -------------------------------------------------------------------------------- 1 |

Logging methods

log

The log method logs a message at the specified level. Read more.

-------------------------------------------------------------------------------- /docs/api/fs/interfaces/connector/directorydataconnector/methods/accessor/article.html: -------------------------------------------------------------------------------- 1 |

Accessor methods

getDirectory

The getDirectory method returns the directory containing data files. Read more.

--------------------------------------------------------------------------------