├── .gitignore
├── README.md
├── client
├── index.html
├── package-lock.json
├── package.json
├── public
│ └── favicon.svg
├── src
│ ├── App.tsx
│ ├── Buttons.tsx
│ ├── index.css
│ └── index.tsx
├── tsconfig.json
├── tsconfig.node.json
└── vite.config.ts
└── server
├── .eslintrc.json
├── .prettierrc
├── bun.lock
├── index.ts
├── package-lock.json
├── package.json
├── tsconfig.json
└── wrangler.toml
/.gitignore:
--------------------------------------------------------------------------------
1 | logs
2 | *.log
3 | npm-debug.log*
4 | yarn-debug.log*
5 | yarn-error.log*
6 | pnpm-debug.log*
7 | lerna-debug.log*
8 |
9 | node_modules
10 | dist
11 | dist-ssr
12 | *.local
13 |
14 | .vscode/*
15 | !.vscode/extensions.json
16 | .idea
17 | .DS_Store
18 | *.suo
19 | *.ntvs*
20 | *.njsproj
21 | *.sln
22 | *.sw?
23 |
24 | .wrangler
25 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # vite-tinybase-ts-react-sync-durable-object
2 |
3 | This is a [Vite](https://vitejs.dev/) template for a simple
4 | [TinyBase](https://tinybase.org/) app, using TypeScript and React, demonstrating
5 | the TinyBase ui-react-dom module UI components, and also synchronizing between
6 | disparate browser windows using Cloudflare Durable Objects.
7 |
8 | The server can be configured to store TinyBase state, so even if all clients
9 | have been disconnected (and their browser storage cleared) synced data will still
10 | be available on the server for future connecting clients.
11 |
12 |
13 |
14 | ## Instructions
15 |
16 | 1. Make a copy of this template into a new directory:
17 |
18 | ```sh
19 | npx tiged tinyplex/vite-tinybase-ts-react-sync-durable-object my-tinybase-app
20 | ```
21 |
22 | 2. Go into the client directory:
23 |
24 | ```sh
25 | cd my-tinybase-app/client
26 | ```
27 |
28 | 3. Install the dependencies:
29 |
30 | ```sh
31 | npm install
32 | ```
33 |
34 | 4. Run the application:
35 |
36 | ```sh
37 | npm run dev
38 | ```
39 |
40 | 5. Go the URL shown and enjoy!
41 |
42 | ## Run your own server
43 |
44 | This template uses a lightweight socket server on `vite.tinybase.cloud` to
45 | synchronize data between clients. This is fine for a demo but not intended as a
46 | production server for your apps!
47 |
48 | If you wish to run your own instance, see the `server` directory and start from
49 | there.
50 |
51 | The `vite.tinybase.cloud` server is hosted on Cloudflare (of course), so you
52 | should adapt the `wrangler.toml` configuration in the server directory. Update
53 | it to match your account, domains, and required configuration. In the `index.ts`
54 | file, you can configure whether data will be stored in the Durable Object or
55 | just synchronized between clients.
56 |
57 | You will also have to have your client communicate with your new server by
58 | configuring the `SERVER` constant at the top of the client's `App.tsx` file.
59 |
60 | ## Other templates
61 |
62 | There are eleven templates for TinyBase, of which this is one:
63 |
64 | | | Template | Language | React | Plus |
65 | | --- | -------------------------------------------------------------------------------------------------------------------- | ---------- | ----- | ---------------------- |
66 | | | [vite-tinybase](https://github.com/tinyplex/vite-tinybase) | JavaScript | No | |
67 | | | [vite-tinybase-ts](https://github.com/tinyplex/vite-tinybase-ts) | TypeScript | No | |
68 | | | [vite-tinybase-react](https://github.com/tinyplex/vite-tinybase-react) | JavaScript | Yes | |
69 | | | [vite-tinybase-ts-react](https://github.com/tinyplex/vite-tinybase-ts-react) | TypeScript | Yes | |
70 | | | [vite-tinybase-ts-react-sync](https://github.com/tinyplex/vite-tinybase-ts-react-sync) | TypeScript | Yes | Synchronization |
71 | | 👉 | [vite-tinybase-ts-react-sync-durable-object](https://github.com/tinyplex/vite-tinybase-ts-react-sync-durable-object) | TypeScript | Yes | Sync & Durable Objects |
72 | | | [vite-tinybase-ts-react-pglite](https://github.com/tinyplex/vite-tinybase-ts-react-pglite) | TypeScript | Yes | PGlite |
73 | | | [vite-tinybase-ts-react-crsqlite](https://github.com/tinyplex/vite-tinybase-ts-react-crsqlite) | TypeScript | Yes | CR-SQLite |
74 | | | [tinybase-ts-react-partykit](https://github.com/tinyplex/tinybase-ts-react-partykit) | TypeScript | Yes | PartyKit |
75 | | | [tinybase-ts-react-electricsql](https://github.com/tinyplex/tinybase-ts-react-electricsql) | TypeScript | Yes | ElectricSQL |
76 | | | [expo/examples/with-tinybase](https://github.com/expo/examples/tree/master/with-tinybase) | JavaScript | Yes | React Native & Expo |
77 |
78 | ## License
79 |
80 | This template has no license, and so you can use it however you want!
81 | [TinyBase](https://github.com/tinyplex/tinybase/blob/main/LICENSE) and
82 | [Vite](https://github.com/vitejs/vite/blob/main/LICENSE) themselves are both MIT
83 | licensed.
84 |
--------------------------------------------------------------------------------
/client/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
12 | A TinyBase App
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/client/package-lock.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "vite-tinybase-ts-react-sync-client",
3 | "version": "1.0.0",
4 | "lockfileVersion": 3,
5 | "requires": true,
6 | "packages": {
7 | "": {
8 | "name": "vite-tinybase-ts-react-sync-client",
9 | "version": "1.0.0",
10 | "dependencies": {
11 | "react": "^19.1.0",
12 | "react-dom": "^19.1.0",
13 | "reconnecting-websocket": "^4.4.0",
14 | "tinybase": "^6.0.0"
15 | },
16 | "devDependencies": {
17 | "@types/react-dom": "^19.0.4",
18 | "@vitejs/plugin-react": "^4.3.4",
19 | "typescript": "^5.8.2",
20 | "vite": "^6.2.3"
21 | }
22 | },
23 | "node_modules/@ampproject/remapping": {
24 | "version": "2.3.0",
25 | "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz",
26 | "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==",
27 | "dev": true,
28 | "license": "Apache-2.0",
29 | "dependencies": {
30 | "@jridgewell/gen-mapping": "^0.3.5",
31 | "@jridgewell/trace-mapping": "^0.3.24"
32 | },
33 | "engines": {
34 | "node": ">=6.0.0"
35 | }
36 | },
37 | "node_modules/@babel/code-frame": {
38 | "version": "7.26.2",
39 | "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz",
40 | "integrity": "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==",
41 | "dev": true,
42 | "license": "MIT",
43 | "dependencies": {
44 | "@babel/helper-validator-identifier": "^7.25.9",
45 | "js-tokens": "^4.0.0",
46 | "picocolors": "^1.0.0"
47 | },
48 | "engines": {
49 | "node": ">=6.9.0"
50 | }
51 | },
52 | "node_modules/@babel/compat-data": {
53 | "version": "7.26.8",
54 | "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.8.tgz",
55 | "integrity": "sha512-oH5UPLMWR3L2wEFLnFJ1TZXqHufiTKAiLfqw5zkhS4dKXLJ10yVztfil/twG8EDTA4F/tvVNw9nOl4ZMslB8rQ==",
56 | "dev": true,
57 | "license": "MIT",
58 | "engines": {
59 | "node": ">=6.9.0"
60 | }
61 | },
62 | "node_modules/@babel/core": {
63 | "version": "7.26.10",
64 | "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.10.tgz",
65 | "integrity": "sha512-vMqyb7XCDMPvJFFOaT9kxtiRh42GwlZEg1/uIgtZshS5a/8OaduUfCi7kynKgc3Tw/6Uo2D+db9qBttghhmxwQ==",
66 | "dev": true,
67 | "license": "MIT",
68 | "dependencies": {
69 | "@ampproject/remapping": "^2.2.0",
70 | "@babel/code-frame": "^7.26.2",
71 | "@babel/generator": "^7.26.10",
72 | "@babel/helper-compilation-targets": "^7.26.5",
73 | "@babel/helper-module-transforms": "^7.26.0",
74 | "@babel/helpers": "^7.26.10",
75 | "@babel/parser": "^7.26.10",
76 | "@babel/template": "^7.26.9",
77 | "@babel/traverse": "^7.26.10",
78 | "@babel/types": "^7.26.10",
79 | "convert-source-map": "^2.0.0",
80 | "debug": "^4.1.0",
81 | "gensync": "^1.0.0-beta.2",
82 | "json5": "^2.2.3",
83 | "semver": "^6.3.1"
84 | },
85 | "engines": {
86 | "node": ">=6.9.0"
87 | },
88 | "funding": {
89 | "type": "opencollective",
90 | "url": "https://opencollective.com/babel"
91 | }
92 | },
93 | "node_modules/@babel/generator": {
94 | "version": "7.27.0",
95 | "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.27.0.tgz",
96 | "integrity": "sha512-VybsKvpiN1gU1sdMZIp7FcqphVVKEwcuj02x73uvcHE0PTihx1nlBcowYWhDwjpoAXRv43+gDzyggGnn1XZhVw==",
97 | "dev": true,
98 | "license": "MIT",
99 | "dependencies": {
100 | "@babel/parser": "^7.27.0",
101 | "@babel/types": "^7.27.0",
102 | "@jridgewell/gen-mapping": "^0.3.5",
103 | "@jridgewell/trace-mapping": "^0.3.25",
104 | "jsesc": "^3.0.2"
105 | },
106 | "engines": {
107 | "node": ">=6.9.0"
108 | }
109 | },
110 | "node_modules/@babel/helper-compilation-targets": {
111 | "version": "7.27.0",
112 | "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.0.tgz",
113 | "integrity": "sha512-LVk7fbXml0H2xH34dFzKQ7TDZ2G4/rVTOrq9V+icbbadjbVxxeFeDsNHv2SrZeWoA+6ZiTyWYWtScEIW07EAcA==",
114 | "dev": true,
115 | "license": "MIT",
116 | "dependencies": {
117 | "@babel/compat-data": "^7.26.8",
118 | "@babel/helper-validator-option": "^7.25.9",
119 | "browserslist": "^4.24.0",
120 | "lru-cache": "^5.1.1",
121 | "semver": "^6.3.1"
122 | },
123 | "engines": {
124 | "node": ">=6.9.0"
125 | }
126 | },
127 | "node_modules/@babel/helper-module-imports": {
128 | "version": "7.25.9",
129 | "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz",
130 | "integrity": "sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==",
131 | "dev": true,
132 | "license": "MIT",
133 | "dependencies": {
134 | "@babel/traverse": "^7.25.9",
135 | "@babel/types": "^7.25.9"
136 | },
137 | "engines": {
138 | "node": ">=6.9.0"
139 | }
140 | },
141 | "node_modules/@babel/helper-module-transforms": {
142 | "version": "7.26.0",
143 | "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.26.0.tgz",
144 | "integrity": "sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==",
145 | "dev": true,
146 | "license": "MIT",
147 | "dependencies": {
148 | "@babel/helper-module-imports": "^7.25.9",
149 | "@babel/helper-validator-identifier": "^7.25.9",
150 | "@babel/traverse": "^7.25.9"
151 | },
152 | "engines": {
153 | "node": ">=6.9.0"
154 | },
155 | "peerDependencies": {
156 | "@babel/core": "^7.0.0"
157 | }
158 | },
159 | "node_modules/@babel/helper-plugin-utils": {
160 | "version": "7.26.5",
161 | "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.26.5.tgz",
162 | "integrity": "sha512-RS+jZcRdZdRFzMyr+wcsaqOmld1/EqTghfaBGQQd/WnRdzdlvSZ//kF7U8VQTxf1ynZ4cjUcYgjVGx13ewNPMg==",
163 | "dev": true,
164 | "license": "MIT",
165 | "engines": {
166 | "node": ">=6.9.0"
167 | }
168 | },
169 | "node_modules/@babel/helper-string-parser": {
170 | "version": "7.25.9",
171 | "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz",
172 | "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==",
173 | "dev": true,
174 | "license": "MIT",
175 | "engines": {
176 | "node": ">=6.9.0"
177 | }
178 | },
179 | "node_modules/@babel/helper-validator-identifier": {
180 | "version": "7.25.9",
181 | "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz",
182 | "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==",
183 | "dev": true,
184 | "license": "MIT",
185 | "engines": {
186 | "node": ">=6.9.0"
187 | }
188 | },
189 | "node_modules/@babel/helper-validator-option": {
190 | "version": "7.25.9",
191 | "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz",
192 | "integrity": "sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==",
193 | "dev": true,
194 | "license": "MIT",
195 | "engines": {
196 | "node": ">=6.9.0"
197 | }
198 | },
199 | "node_modules/@babel/helpers": {
200 | "version": "7.27.0",
201 | "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.27.0.tgz",
202 | "integrity": "sha512-U5eyP/CTFPuNE3qk+WZMxFkp/4zUzdceQlfzf7DdGdhp+Fezd7HD+i8Y24ZuTMKX3wQBld449jijbGq6OdGNQg==",
203 | "dev": true,
204 | "license": "MIT",
205 | "dependencies": {
206 | "@babel/template": "^7.27.0",
207 | "@babel/types": "^7.27.0"
208 | },
209 | "engines": {
210 | "node": ">=6.9.0"
211 | }
212 | },
213 | "node_modules/@babel/parser": {
214 | "version": "7.27.0",
215 | "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.27.0.tgz",
216 | "integrity": "sha512-iaepho73/2Pz7w2eMS0Q5f83+0RKI7i4xmiYeBmDzfRVbQtTOG7Ts0S4HzJVsTMGI9keU8rNfuZr8DKfSt7Yyg==",
217 | "dev": true,
218 | "license": "MIT",
219 | "dependencies": {
220 | "@babel/types": "^7.27.0"
221 | },
222 | "bin": {
223 | "parser": "bin/babel-parser.js"
224 | },
225 | "engines": {
226 | "node": ">=6.0.0"
227 | }
228 | },
229 | "node_modules/@babel/plugin-transform-react-jsx-self": {
230 | "version": "7.25.9",
231 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.25.9.tgz",
232 | "integrity": "sha512-y8quW6p0WHkEhmErnfe58r7x0A70uKphQm8Sp8cV7tjNQwK56sNVK0M73LK3WuYmsuyrftut4xAkjjgU0twaMg==",
233 | "dev": true,
234 | "license": "MIT",
235 | "dependencies": {
236 | "@babel/helper-plugin-utils": "^7.25.9"
237 | },
238 | "engines": {
239 | "node": ">=6.9.0"
240 | },
241 | "peerDependencies": {
242 | "@babel/core": "^7.0.0-0"
243 | }
244 | },
245 | "node_modules/@babel/plugin-transform-react-jsx-source": {
246 | "version": "7.25.9",
247 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.25.9.tgz",
248 | "integrity": "sha512-+iqjT8xmXhhYv4/uiYd8FNQsraMFZIfxVSqxxVSZP0WbbSAWvBXAul0m/zu+7Vv4O/3WtApy9pmaTMiumEZgfg==",
249 | "dev": true,
250 | "license": "MIT",
251 | "dependencies": {
252 | "@babel/helper-plugin-utils": "^7.25.9"
253 | },
254 | "engines": {
255 | "node": ">=6.9.0"
256 | },
257 | "peerDependencies": {
258 | "@babel/core": "^7.0.0-0"
259 | }
260 | },
261 | "node_modules/@babel/template": {
262 | "version": "7.27.0",
263 | "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.0.tgz",
264 | "integrity": "sha512-2ncevenBqXI6qRMukPlXwHKHchC7RyMuu4xv5JBXRfOGVcTy1mXCD12qrp7Jsoxll1EV3+9sE4GugBVRjT2jFA==",
265 | "dev": true,
266 | "license": "MIT",
267 | "dependencies": {
268 | "@babel/code-frame": "^7.26.2",
269 | "@babel/parser": "^7.27.0",
270 | "@babel/types": "^7.27.0"
271 | },
272 | "engines": {
273 | "node": ">=6.9.0"
274 | }
275 | },
276 | "node_modules/@babel/traverse": {
277 | "version": "7.27.0",
278 | "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.27.0.tgz",
279 | "integrity": "sha512-19lYZFzYVQkkHkl4Cy4WrAVcqBkgvV2YM2TU3xG6DIwO7O3ecbDPfW3yM3bjAGcqcQHi+CCtjMR3dIEHxsd6bA==",
280 | "dev": true,
281 | "license": "MIT",
282 | "dependencies": {
283 | "@babel/code-frame": "^7.26.2",
284 | "@babel/generator": "^7.27.0",
285 | "@babel/parser": "^7.27.0",
286 | "@babel/template": "^7.27.0",
287 | "@babel/types": "^7.27.0",
288 | "debug": "^4.3.1",
289 | "globals": "^11.1.0"
290 | },
291 | "engines": {
292 | "node": ">=6.9.0"
293 | }
294 | },
295 | "node_modules/@babel/types": {
296 | "version": "7.27.0",
297 | "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.27.0.tgz",
298 | "integrity": "sha512-H45s8fVLYjbhFH62dIJ3WtmJ6RSPt/3DRO0ZcT2SUiYiQyz3BLVb9ADEnLl91m74aQPS3AzzeajZHYOalWe3bg==",
299 | "dev": true,
300 | "license": "MIT",
301 | "dependencies": {
302 | "@babel/helper-string-parser": "^7.25.9",
303 | "@babel/helper-validator-identifier": "^7.25.9"
304 | },
305 | "engines": {
306 | "node": ">=6.9.0"
307 | }
308 | },
309 | "node_modules/@esbuild/aix-ppc64": {
310 | "version": "0.25.1",
311 | "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.1.tgz",
312 | "integrity": "sha512-kfYGy8IdzTGy+z0vFGvExZtxkFlA4zAxgKEahG9KE1ScBjpQnFsNOX8KTU5ojNru5ed5CVoJYXFtoxaq5nFbjQ==",
313 | "cpu": [
314 | "ppc64"
315 | ],
316 | "dev": true,
317 | "license": "MIT",
318 | "optional": true,
319 | "os": [
320 | "aix"
321 | ],
322 | "engines": {
323 | "node": ">=18"
324 | }
325 | },
326 | "node_modules/@esbuild/android-arm": {
327 | "version": "0.25.1",
328 | "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.1.tgz",
329 | "integrity": "sha512-dp+MshLYux6j/JjdqVLnMglQlFu+MuVeNrmT5nk6q07wNhCdSnB7QZj+7G8VMUGh1q+vj2Bq8kRsuyA00I/k+Q==",
330 | "cpu": [
331 | "arm"
332 | ],
333 | "dev": true,
334 | "license": "MIT",
335 | "optional": true,
336 | "os": [
337 | "android"
338 | ],
339 | "engines": {
340 | "node": ">=18"
341 | }
342 | },
343 | "node_modules/@esbuild/android-arm64": {
344 | "version": "0.25.1",
345 | "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.1.tgz",
346 | "integrity": "sha512-50tM0zCJW5kGqgG7fQ7IHvQOcAn9TKiVRuQ/lN0xR+T2lzEFvAi1ZcS8DiksFcEpf1t/GYOeOfCAgDHFpkiSmA==",
347 | "cpu": [
348 | "arm64"
349 | ],
350 | "dev": true,
351 | "license": "MIT",
352 | "optional": true,
353 | "os": [
354 | "android"
355 | ],
356 | "engines": {
357 | "node": ">=18"
358 | }
359 | },
360 | "node_modules/@esbuild/android-x64": {
361 | "version": "0.25.1",
362 | "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.1.tgz",
363 | "integrity": "sha512-GCj6WfUtNldqUzYkN/ITtlhwQqGWu9S45vUXs7EIYf+7rCiiqH9bCloatO9VhxsL0Pji+PF4Lz2XXCES+Q8hDw==",
364 | "cpu": [
365 | "x64"
366 | ],
367 | "dev": true,
368 | "license": "MIT",
369 | "optional": true,
370 | "os": [
371 | "android"
372 | ],
373 | "engines": {
374 | "node": ">=18"
375 | }
376 | },
377 | "node_modules/@esbuild/darwin-arm64": {
378 | "version": "0.25.1",
379 | "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.1.tgz",
380 | "integrity": "sha512-5hEZKPf+nQjYoSr/elb62U19/l1mZDdqidGfmFutVUjjUZrOazAtwK+Kr+3y0C/oeJfLlxo9fXb1w7L+P7E4FQ==",
381 | "cpu": [
382 | "arm64"
383 | ],
384 | "dev": true,
385 | "license": "MIT",
386 | "optional": true,
387 | "os": [
388 | "darwin"
389 | ],
390 | "engines": {
391 | "node": ">=18"
392 | }
393 | },
394 | "node_modules/@esbuild/darwin-x64": {
395 | "version": "0.25.1",
396 | "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.1.tgz",
397 | "integrity": "sha512-hxVnwL2Dqs3fM1IWq8Iezh0cX7ZGdVhbTfnOy5uURtao5OIVCEyj9xIzemDi7sRvKsuSdtCAhMKarxqtlyVyfA==",
398 | "cpu": [
399 | "x64"
400 | ],
401 | "dev": true,
402 | "license": "MIT",
403 | "optional": true,
404 | "os": [
405 | "darwin"
406 | ],
407 | "engines": {
408 | "node": ">=18"
409 | }
410 | },
411 | "node_modules/@esbuild/freebsd-arm64": {
412 | "version": "0.25.1",
413 | "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.1.tgz",
414 | "integrity": "sha512-1MrCZs0fZa2g8E+FUo2ipw6jw5qqQiH+tERoS5fAfKnRx6NXH31tXBKI3VpmLijLH6yriMZsxJtaXUyFt/8Y4A==",
415 | "cpu": [
416 | "arm64"
417 | ],
418 | "dev": true,
419 | "license": "MIT",
420 | "optional": true,
421 | "os": [
422 | "freebsd"
423 | ],
424 | "engines": {
425 | "node": ">=18"
426 | }
427 | },
428 | "node_modules/@esbuild/freebsd-x64": {
429 | "version": "0.25.1",
430 | "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.1.tgz",
431 | "integrity": "sha512-0IZWLiTyz7nm0xuIs0q1Y3QWJC52R8aSXxe40VUxm6BB1RNmkODtW6LHvWRrGiICulcX7ZvyH6h5fqdLu4gkww==",
432 | "cpu": [
433 | "x64"
434 | ],
435 | "dev": true,
436 | "license": "MIT",
437 | "optional": true,
438 | "os": [
439 | "freebsd"
440 | ],
441 | "engines": {
442 | "node": ">=18"
443 | }
444 | },
445 | "node_modules/@esbuild/linux-arm": {
446 | "version": "0.25.1",
447 | "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.1.tgz",
448 | "integrity": "sha512-NdKOhS4u7JhDKw9G3cY6sWqFcnLITn6SqivVArbzIaf3cemShqfLGHYMx8Xlm/lBit3/5d7kXvriTUGa5YViuQ==",
449 | "cpu": [
450 | "arm"
451 | ],
452 | "dev": true,
453 | "license": "MIT",
454 | "optional": true,
455 | "os": [
456 | "linux"
457 | ],
458 | "engines": {
459 | "node": ">=18"
460 | }
461 | },
462 | "node_modules/@esbuild/linux-arm64": {
463 | "version": "0.25.1",
464 | "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.1.tgz",
465 | "integrity": "sha512-jaN3dHi0/DDPelk0nLcXRm1q7DNJpjXy7yWaWvbfkPvI+7XNSc/lDOnCLN7gzsyzgu6qSAmgSvP9oXAhP973uQ==",
466 | "cpu": [
467 | "arm64"
468 | ],
469 | "dev": true,
470 | "license": "MIT",
471 | "optional": true,
472 | "os": [
473 | "linux"
474 | ],
475 | "engines": {
476 | "node": ">=18"
477 | }
478 | },
479 | "node_modules/@esbuild/linux-ia32": {
480 | "version": "0.25.1",
481 | "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.1.tgz",
482 | "integrity": "sha512-OJykPaF4v8JidKNGz8c/q1lBO44sQNUQtq1KktJXdBLn1hPod5rE/Hko5ugKKZd+D2+o1a9MFGUEIUwO2YfgkQ==",
483 | "cpu": [
484 | "ia32"
485 | ],
486 | "dev": true,
487 | "license": "MIT",
488 | "optional": true,
489 | "os": [
490 | "linux"
491 | ],
492 | "engines": {
493 | "node": ">=18"
494 | }
495 | },
496 | "node_modules/@esbuild/linux-loong64": {
497 | "version": "0.25.1",
498 | "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.1.tgz",
499 | "integrity": "sha512-nGfornQj4dzcq5Vp835oM/o21UMlXzn79KobKlcs3Wz9smwiifknLy4xDCLUU0BWp7b/houtdrgUz7nOGnfIYg==",
500 | "cpu": [
501 | "loong64"
502 | ],
503 | "dev": true,
504 | "license": "MIT",
505 | "optional": true,
506 | "os": [
507 | "linux"
508 | ],
509 | "engines": {
510 | "node": ">=18"
511 | }
512 | },
513 | "node_modules/@esbuild/linux-mips64el": {
514 | "version": "0.25.1",
515 | "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.1.tgz",
516 | "integrity": "sha512-1osBbPEFYwIE5IVB/0g2X6i1qInZa1aIoj1TdL4AaAb55xIIgbg8Doq6a5BzYWgr+tEcDzYH67XVnTmUzL+nXg==",
517 | "cpu": [
518 | "mips64el"
519 | ],
520 | "dev": true,
521 | "license": "MIT",
522 | "optional": true,
523 | "os": [
524 | "linux"
525 | ],
526 | "engines": {
527 | "node": ">=18"
528 | }
529 | },
530 | "node_modules/@esbuild/linux-ppc64": {
531 | "version": "0.25.1",
532 | "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.1.tgz",
533 | "integrity": "sha512-/6VBJOwUf3TdTvJZ82qF3tbLuWsscd7/1w+D9LH0W/SqUgM5/JJD0lrJ1fVIfZsqB6RFmLCe0Xz3fmZc3WtyVg==",
534 | "cpu": [
535 | "ppc64"
536 | ],
537 | "dev": true,
538 | "license": "MIT",
539 | "optional": true,
540 | "os": [
541 | "linux"
542 | ],
543 | "engines": {
544 | "node": ">=18"
545 | }
546 | },
547 | "node_modules/@esbuild/linux-riscv64": {
548 | "version": "0.25.1",
549 | "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.1.tgz",
550 | "integrity": "sha512-nSut/Mx5gnilhcq2yIMLMe3Wl4FK5wx/o0QuuCLMtmJn+WeWYoEGDN1ipcN72g1WHsnIbxGXd4i/MF0gTcuAjQ==",
551 | "cpu": [
552 | "riscv64"
553 | ],
554 | "dev": true,
555 | "license": "MIT",
556 | "optional": true,
557 | "os": [
558 | "linux"
559 | ],
560 | "engines": {
561 | "node": ">=18"
562 | }
563 | },
564 | "node_modules/@esbuild/linux-s390x": {
565 | "version": "0.25.1",
566 | "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.1.tgz",
567 | "integrity": "sha512-cEECeLlJNfT8kZHqLarDBQso9a27o2Zd2AQ8USAEoGtejOrCYHNtKP8XQhMDJMtthdF4GBmjR2au3x1udADQQQ==",
568 | "cpu": [
569 | "s390x"
570 | ],
571 | "dev": true,
572 | "license": "MIT",
573 | "optional": true,
574 | "os": [
575 | "linux"
576 | ],
577 | "engines": {
578 | "node": ">=18"
579 | }
580 | },
581 | "node_modules/@esbuild/linux-x64": {
582 | "version": "0.25.1",
583 | "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.1.tgz",
584 | "integrity": "sha512-xbfUhu/gnvSEg+EGovRc+kjBAkrvtk38RlerAzQxvMzlB4fXpCFCeUAYzJvrnhFtdeyVCDANSjJvOvGYoeKzFA==",
585 | "cpu": [
586 | "x64"
587 | ],
588 | "dev": true,
589 | "license": "MIT",
590 | "optional": true,
591 | "os": [
592 | "linux"
593 | ],
594 | "engines": {
595 | "node": ">=18"
596 | }
597 | },
598 | "node_modules/@esbuild/netbsd-arm64": {
599 | "version": "0.25.1",
600 | "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.1.tgz",
601 | "integrity": "sha512-O96poM2XGhLtpTh+s4+nP7YCCAfb4tJNRVZHfIE7dgmax+yMP2WgMd2OecBuaATHKTHsLWHQeuaxMRnCsH8+5g==",
602 | "cpu": [
603 | "arm64"
604 | ],
605 | "dev": true,
606 | "license": "MIT",
607 | "optional": true,
608 | "os": [
609 | "netbsd"
610 | ],
611 | "engines": {
612 | "node": ">=18"
613 | }
614 | },
615 | "node_modules/@esbuild/netbsd-x64": {
616 | "version": "0.25.1",
617 | "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.1.tgz",
618 | "integrity": "sha512-X53z6uXip6KFXBQ+Krbx25XHV/NCbzryM6ehOAeAil7X7oa4XIq+394PWGnwaSQ2WRA0KI6PUO6hTO5zeF5ijA==",
619 | "cpu": [
620 | "x64"
621 | ],
622 | "dev": true,
623 | "license": "MIT",
624 | "optional": true,
625 | "os": [
626 | "netbsd"
627 | ],
628 | "engines": {
629 | "node": ">=18"
630 | }
631 | },
632 | "node_modules/@esbuild/openbsd-arm64": {
633 | "version": "0.25.1",
634 | "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.1.tgz",
635 | "integrity": "sha512-Na9T3szbXezdzM/Kfs3GcRQNjHzM6GzFBeU1/6IV/npKP5ORtp9zbQjvkDJ47s6BCgaAZnnnu/cY1x342+MvZg==",
636 | "cpu": [
637 | "arm64"
638 | ],
639 | "dev": true,
640 | "license": "MIT",
641 | "optional": true,
642 | "os": [
643 | "openbsd"
644 | ],
645 | "engines": {
646 | "node": ">=18"
647 | }
648 | },
649 | "node_modules/@esbuild/openbsd-x64": {
650 | "version": "0.25.1",
651 | "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.1.tgz",
652 | "integrity": "sha512-T3H78X2h1tszfRSf+txbt5aOp/e7TAz3ptVKu9Oyir3IAOFPGV6O9c2naym5TOriy1l0nNf6a4X5UXRZSGX/dw==",
653 | "cpu": [
654 | "x64"
655 | ],
656 | "dev": true,
657 | "license": "MIT",
658 | "optional": true,
659 | "os": [
660 | "openbsd"
661 | ],
662 | "engines": {
663 | "node": ">=18"
664 | }
665 | },
666 | "node_modules/@esbuild/sunos-x64": {
667 | "version": "0.25.1",
668 | "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.1.tgz",
669 | "integrity": "sha512-2H3RUvcmULO7dIE5EWJH8eubZAI4xw54H1ilJnRNZdeo8dTADEZ21w6J22XBkXqGJbe0+wnNJtw3UXRoLJnFEg==",
670 | "cpu": [
671 | "x64"
672 | ],
673 | "dev": true,
674 | "license": "MIT",
675 | "optional": true,
676 | "os": [
677 | "sunos"
678 | ],
679 | "engines": {
680 | "node": ">=18"
681 | }
682 | },
683 | "node_modules/@esbuild/win32-arm64": {
684 | "version": "0.25.1",
685 | "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.1.tgz",
686 | "integrity": "sha512-GE7XvrdOzrb+yVKB9KsRMq+7a2U/K5Cf/8grVFRAGJmfADr/e/ODQ134RK2/eeHqYV5eQRFxb1hY7Nr15fv1NQ==",
687 | "cpu": [
688 | "arm64"
689 | ],
690 | "dev": true,
691 | "license": "MIT",
692 | "optional": true,
693 | "os": [
694 | "win32"
695 | ],
696 | "engines": {
697 | "node": ">=18"
698 | }
699 | },
700 | "node_modules/@esbuild/win32-ia32": {
701 | "version": "0.25.1",
702 | "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.1.tgz",
703 | "integrity": "sha512-uOxSJCIcavSiT6UnBhBzE8wy3n0hOkJsBOzy7HDAuTDE++1DJMRRVCPGisULScHL+a/ZwdXPpXD3IyFKjA7K8A==",
704 | "cpu": [
705 | "ia32"
706 | ],
707 | "dev": true,
708 | "license": "MIT",
709 | "optional": true,
710 | "os": [
711 | "win32"
712 | ],
713 | "engines": {
714 | "node": ">=18"
715 | }
716 | },
717 | "node_modules/@esbuild/win32-x64": {
718 | "version": "0.25.1",
719 | "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.1.tgz",
720 | "integrity": "sha512-Y1EQdcfwMSeQN/ujR5VayLOJ1BHaK+ssyk0AEzPjC+t1lITgsnccPqFjb6V+LsTp/9Iov4ysfjxLaGJ9RPtkVg==",
721 | "cpu": [
722 | "x64"
723 | ],
724 | "dev": true,
725 | "license": "MIT",
726 | "optional": true,
727 | "os": [
728 | "win32"
729 | ],
730 | "engines": {
731 | "node": ">=18"
732 | }
733 | },
734 | "node_modules/@jridgewell/gen-mapping": {
735 | "version": "0.3.8",
736 | "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz",
737 | "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==",
738 | "dev": true,
739 | "license": "MIT",
740 | "dependencies": {
741 | "@jridgewell/set-array": "^1.2.1",
742 | "@jridgewell/sourcemap-codec": "^1.4.10",
743 | "@jridgewell/trace-mapping": "^0.3.24"
744 | },
745 | "engines": {
746 | "node": ">=6.0.0"
747 | }
748 | },
749 | "node_modules/@jridgewell/resolve-uri": {
750 | "version": "3.1.2",
751 | "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz",
752 | "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==",
753 | "dev": true,
754 | "license": "MIT",
755 | "engines": {
756 | "node": ">=6.0.0"
757 | }
758 | },
759 | "node_modules/@jridgewell/set-array": {
760 | "version": "1.2.1",
761 | "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz",
762 | "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==",
763 | "dev": true,
764 | "license": "MIT",
765 | "engines": {
766 | "node": ">=6.0.0"
767 | }
768 | },
769 | "node_modules/@jridgewell/sourcemap-codec": {
770 | "version": "1.5.0",
771 | "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz",
772 | "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==",
773 | "dev": true,
774 | "license": "MIT"
775 | },
776 | "node_modules/@jridgewell/trace-mapping": {
777 | "version": "0.3.25",
778 | "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz",
779 | "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==",
780 | "dev": true,
781 | "license": "MIT",
782 | "dependencies": {
783 | "@jridgewell/resolve-uri": "^3.1.0",
784 | "@jridgewell/sourcemap-codec": "^1.4.14"
785 | }
786 | },
787 | "node_modules/@rollup/rollup-android-arm-eabi": {
788 | "version": "4.38.0",
789 | "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.38.0.tgz",
790 | "integrity": "sha512-ldomqc4/jDZu/xpYU+aRxo3V4mGCV9HeTgUBANI3oIQMOL+SsxB+S2lxMpkFp5UamSS3XuTMQVbsS24R4J4Qjg==",
791 | "cpu": [
792 | "arm"
793 | ],
794 | "dev": true,
795 | "license": "MIT",
796 | "optional": true,
797 | "os": [
798 | "android"
799 | ]
800 | },
801 | "node_modules/@rollup/rollup-android-arm64": {
802 | "version": "4.38.0",
803 | "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.38.0.tgz",
804 | "integrity": "sha512-VUsgcy4GhhT7rokwzYQP+aV9XnSLkkhlEJ0St8pbasuWO/vwphhZQxYEKUP3ayeCYLhk6gEtacRpYP/cj3GjyQ==",
805 | "cpu": [
806 | "arm64"
807 | ],
808 | "dev": true,
809 | "license": "MIT",
810 | "optional": true,
811 | "os": [
812 | "android"
813 | ]
814 | },
815 | "node_modules/@rollup/rollup-darwin-arm64": {
816 | "version": "4.38.0",
817 | "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.38.0.tgz",
818 | "integrity": "sha512-buA17AYXlW9Rn091sWMq1xGUvWQFOH4N1rqUxGJtEQzhChxWjldGCCup7r/wUnaI6Au8sKXpoh0xg58a7cgcpg==",
819 | "cpu": [
820 | "arm64"
821 | ],
822 | "dev": true,
823 | "license": "MIT",
824 | "optional": true,
825 | "os": [
826 | "darwin"
827 | ]
828 | },
829 | "node_modules/@rollup/rollup-darwin-x64": {
830 | "version": "4.38.0",
831 | "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.38.0.tgz",
832 | "integrity": "sha512-Mgcmc78AjunP1SKXl624vVBOF2bzwNWFPMP4fpOu05vS0amnLcX8gHIge7q/lDAHy3T2HeR0TqrriZDQS2Woeg==",
833 | "cpu": [
834 | "x64"
835 | ],
836 | "dev": true,
837 | "license": "MIT",
838 | "optional": true,
839 | "os": [
840 | "darwin"
841 | ]
842 | },
843 | "node_modules/@rollup/rollup-freebsd-arm64": {
844 | "version": "4.38.0",
845 | "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.38.0.tgz",
846 | "integrity": "sha512-zzJACgjLbQTsscxWqvrEQAEh28hqhebpRz5q/uUd1T7VTwUNZ4VIXQt5hE7ncs0GrF+s7d3S4on4TiXUY8KoQA==",
847 | "cpu": [
848 | "arm64"
849 | ],
850 | "dev": true,
851 | "license": "MIT",
852 | "optional": true,
853 | "os": [
854 | "freebsd"
855 | ]
856 | },
857 | "node_modules/@rollup/rollup-freebsd-x64": {
858 | "version": "4.38.0",
859 | "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.38.0.tgz",
860 | "integrity": "sha512-hCY/KAeYMCyDpEE4pTETam0XZS4/5GXzlLgpi5f0IaPExw9kuB+PDTOTLuPtM10TlRG0U9OSmXJ+Wq9J39LvAg==",
861 | "cpu": [
862 | "x64"
863 | ],
864 | "dev": true,
865 | "license": "MIT",
866 | "optional": true,
867 | "os": [
868 | "freebsd"
869 | ]
870 | },
871 | "node_modules/@rollup/rollup-linux-arm-gnueabihf": {
872 | "version": "4.38.0",
873 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.38.0.tgz",
874 | "integrity": "sha512-mimPH43mHl4JdOTD7bUMFhBdrg6f9HzMTOEnzRmXbOZqjijCw8LA5z8uL6LCjxSa67H2xiLFvvO67PT05PRKGg==",
875 | "cpu": [
876 | "arm"
877 | ],
878 | "dev": true,
879 | "license": "MIT",
880 | "optional": true,
881 | "os": [
882 | "linux"
883 | ]
884 | },
885 | "node_modules/@rollup/rollup-linux-arm-musleabihf": {
886 | "version": "4.38.0",
887 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.38.0.tgz",
888 | "integrity": "sha512-tPiJtiOoNuIH8XGG8sWoMMkAMm98PUwlriOFCCbZGc9WCax+GLeVRhmaxjJtz6WxrPKACgrwoZ5ia/uapq3ZVg==",
889 | "cpu": [
890 | "arm"
891 | ],
892 | "dev": true,
893 | "license": "MIT",
894 | "optional": true,
895 | "os": [
896 | "linux"
897 | ]
898 | },
899 | "node_modules/@rollup/rollup-linux-arm64-gnu": {
900 | "version": "4.38.0",
901 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.38.0.tgz",
902 | "integrity": "sha512-wZco59rIVuB0tjQS0CSHTTUcEde+pXQWugZVxWaQFdQQ1VYub/sTrNdY76D1MKdN2NB48JDuGABP6o6fqos8mA==",
903 | "cpu": [
904 | "arm64"
905 | ],
906 | "dev": true,
907 | "license": "MIT",
908 | "optional": true,
909 | "os": [
910 | "linux"
911 | ]
912 | },
913 | "node_modules/@rollup/rollup-linux-arm64-musl": {
914 | "version": "4.38.0",
915 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.38.0.tgz",
916 | "integrity": "sha512-fQgqwKmW0REM4LomQ+87PP8w8xvU9LZfeLBKybeli+0yHT7VKILINzFEuggvnV9M3x1Ed4gUBmGUzCo/ikmFbQ==",
917 | "cpu": [
918 | "arm64"
919 | ],
920 | "dev": true,
921 | "license": "MIT",
922 | "optional": true,
923 | "os": [
924 | "linux"
925 | ]
926 | },
927 | "node_modules/@rollup/rollup-linux-loongarch64-gnu": {
928 | "version": "4.38.0",
929 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.38.0.tgz",
930 | "integrity": "sha512-hz5oqQLXTB3SbXpfkKHKXLdIp02/w3M+ajp8p4yWOWwQRtHWiEOCKtc9U+YXahrwdk+3qHdFMDWR5k+4dIlddg==",
931 | "cpu": [
932 | "loong64"
933 | ],
934 | "dev": true,
935 | "license": "MIT",
936 | "optional": true,
937 | "os": [
938 | "linux"
939 | ]
940 | },
941 | "node_modules/@rollup/rollup-linux-powerpc64le-gnu": {
942 | "version": "4.38.0",
943 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.38.0.tgz",
944 | "integrity": "sha512-NXqygK/dTSibQ+0pzxsL3r4Xl8oPqVoWbZV9niqOnIHV/J92fe65pOir0xjkUZDRSPyFRvu+4YOpJF9BZHQImw==",
945 | "cpu": [
946 | "ppc64"
947 | ],
948 | "dev": true,
949 | "license": "MIT",
950 | "optional": true,
951 | "os": [
952 | "linux"
953 | ]
954 | },
955 | "node_modules/@rollup/rollup-linux-riscv64-gnu": {
956 | "version": "4.38.0",
957 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.38.0.tgz",
958 | "integrity": "sha512-GEAIabR1uFyvf/jW/5jfu8gjM06/4kZ1W+j1nWTSSB3w6moZEBm7iBtzwQ3a1Pxos2F7Gz+58aVEnZHU295QTg==",
959 | "cpu": [
960 | "riscv64"
961 | ],
962 | "dev": true,
963 | "license": "MIT",
964 | "optional": true,
965 | "os": [
966 | "linux"
967 | ]
968 | },
969 | "node_modules/@rollup/rollup-linux-riscv64-musl": {
970 | "version": "4.38.0",
971 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.38.0.tgz",
972 | "integrity": "sha512-9EYTX+Gus2EGPbfs+fh7l95wVADtSQyYw4DfSBcYdUEAmP2lqSZY0Y17yX/3m5VKGGJ4UmIH5LHLkMJft3bYoA==",
973 | "cpu": [
974 | "riscv64"
975 | ],
976 | "dev": true,
977 | "license": "MIT",
978 | "optional": true,
979 | "os": [
980 | "linux"
981 | ]
982 | },
983 | "node_modules/@rollup/rollup-linux-s390x-gnu": {
984 | "version": "4.38.0",
985 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.38.0.tgz",
986 | "integrity": "sha512-Mpp6+Z5VhB9VDk7RwZXoG2qMdERm3Jw07RNlXHE0bOnEeX+l7Fy4bg+NxfyN15ruuY3/7Vrbpm75J9QHFqj5+Q==",
987 | "cpu": [
988 | "s390x"
989 | ],
990 | "dev": true,
991 | "license": "MIT",
992 | "optional": true,
993 | "os": [
994 | "linux"
995 | ]
996 | },
997 | "node_modules/@rollup/rollup-linux-x64-gnu": {
998 | "version": "4.38.0",
999 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.38.0.tgz",
1000 | "integrity": "sha512-vPvNgFlZRAgO7rwncMeE0+8c4Hmc+qixnp00/Uv3ht2x7KYrJ6ERVd3/R0nUtlE6/hu7/HiiNHJ/rP6knRFt1w==",
1001 | "cpu": [
1002 | "x64"
1003 | ],
1004 | "dev": true,
1005 | "license": "MIT",
1006 | "optional": true,
1007 | "os": [
1008 | "linux"
1009 | ]
1010 | },
1011 | "node_modules/@rollup/rollup-linux-x64-musl": {
1012 | "version": "4.38.0",
1013 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.38.0.tgz",
1014 | "integrity": "sha512-q5Zv+goWvQUGCaL7fU8NuTw8aydIL/C9abAVGCzRReuj5h30TPx4LumBtAidrVOtXnlB+RZkBtExMsfqkMfb8g==",
1015 | "cpu": [
1016 | "x64"
1017 | ],
1018 | "dev": true,
1019 | "license": "MIT",
1020 | "optional": true,
1021 | "os": [
1022 | "linux"
1023 | ]
1024 | },
1025 | "node_modules/@rollup/rollup-win32-arm64-msvc": {
1026 | "version": "4.38.0",
1027 | "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.38.0.tgz",
1028 | "integrity": "sha512-u/Jbm1BU89Vftqyqbmxdq14nBaQjQX1HhmsdBWqSdGClNaKwhjsg5TpW+5Ibs1mb8Es9wJiMdl86BcmtUVXNZg==",
1029 | "cpu": [
1030 | "arm64"
1031 | ],
1032 | "dev": true,
1033 | "license": "MIT",
1034 | "optional": true,
1035 | "os": [
1036 | "win32"
1037 | ]
1038 | },
1039 | "node_modules/@rollup/rollup-win32-ia32-msvc": {
1040 | "version": "4.38.0",
1041 | "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.38.0.tgz",
1042 | "integrity": "sha512-mqu4PzTrlpNHHbu5qleGvXJoGgHpChBlrBx/mEhTPpnAL1ZAYFlvHD7rLK839LLKQzqEQMFJfGrrOHItN4ZQqA==",
1043 | "cpu": [
1044 | "ia32"
1045 | ],
1046 | "dev": true,
1047 | "license": "MIT",
1048 | "optional": true,
1049 | "os": [
1050 | "win32"
1051 | ]
1052 | },
1053 | "node_modules/@rollup/rollup-win32-x64-msvc": {
1054 | "version": "4.38.0",
1055 | "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.38.0.tgz",
1056 | "integrity": "sha512-jjqy3uWlecfB98Psxb5cD6Fny9Fupv9LrDSPTQZUROqjvZmcCqNu4UMl7qqhlUUGpwiAkotj6GYu4SZdcr/nLw==",
1057 | "cpu": [
1058 | "x64"
1059 | ],
1060 | "dev": true,
1061 | "license": "MIT",
1062 | "optional": true,
1063 | "os": [
1064 | "win32"
1065 | ]
1066 | },
1067 | "node_modules/@types/babel__core": {
1068 | "version": "7.20.5",
1069 | "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz",
1070 | "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==",
1071 | "dev": true,
1072 | "license": "MIT",
1073 | "dependencies": {
1074 | "@babel/parser": "^7.20.7",
1075 | "@babel/types": "^7.20.7",
1076 | "@types/babel__generator": "*",
1077 | "@types/babel__template": "*",
1078 | "@types/babel__traverse": "*"
1079 | }
1080 | },
1081 | "node_modules/@types/babel__generator": {
1082 | "version": "7.6.8",
1083 | "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz",
1084 | "integrity": "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==",
1085 | "dev": true,
1086 | "license": "MIT",
1087 | "dependencies": {
1088 | "@babel/types": "^7.0.0"
1089 | }
1090 | },
1091 | "node_modules/@types/babel__template": {
1092 | "version": "7.4.4",
1093 | "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz",
1094 | "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==",
1095 | "dev": true,
1096 | "license": "MIT",
1097 | "dependencies": {
1098 | "@babel/parser": "^7.1.0",
1099 | "@babel/types": "^7.0.0"
1100 | }
1101 | },
1102 | "node_modules/@types/babel__traverse": {
1103 | "version": "7.20.6",
1104 | "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.6.tgz",
1105 | "integrity": "sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==",
1106 | "dev": true,
1107 | "license": "MIT",
1108 | "dependencies": {
1109 | "@babel/types": "^7.20.7"
1110 | }
1111 | },
1112 | "node_modules/@types/estree": {
1113 | "version": "1.0.7",
1114 | "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.7.tgz",
1115 | "integrity": "sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==",
1116 | "dev": true,
1117 | "license": "MIT"
1118 | },
1119 | "node_modules/@types/react": {
1120 | "version": "19.0.12",
1121 | "resolved": "https://registry.npmjs.org/@types/react/-/react-19.0.12.tgz",
1122 | "integrity": "sha512-V6Ar115dBDrjbtXSrS+/Oruobc+qVbbUxDFC1RSbRqLt5SYvxxyIDrSC85RWml54g+jfNeEMZhEj7wW07ONQhA==",
1123 | "dev": true,
1124 | "license": "MIT",
1125 | "peer": true,
1126 | "dependencies": {
1127 | "csstype": "^3.0.2"
1128 | }
1129 | },
1130 | "node_modules/@types/react-dom": {
1131 | "version": "19.0.4",
1132 | "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.0.4.tgz",
1133 | "integrity": "sha512-4fSQ8vWFkg+TGhePfUzVmat3eC14TXYSsiiDSLI0dVLsrm9gZFABjPy/Qu6TKgl1tq1Bu1yDsuQgY3A3DOjCcg==",
1134 | "dev": true,
1135 | "license": "MIT",
1136 | "peerDependencies": {
1137 | "@types/react": "^19.0.0"
1138 | }
1139 | },
1140 | "node_modules/@vitejs/plugin-react": {
1141 | "version": "4.3.4",
1142 | "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.3.4.tgz",
1143 | "integrity": "sha512-SCCPBJtYLdE8PX/7ZQAs1QAZ8Jqwih+0VBLum1EGqmCCQal+MIUqLCzj3ZUy8ufbC0cAM4LRlSTm7IQJwWT4ug==",
1144 | "dev": true,
1145 | "license": "MIT",
1146 | "dependencies": {
1147 | "@babel/core": "^7.26.0",
1148 | "@babel/plugin-transform-react-jsx-self": "^7.25.9",
1149 | "@babel/plugin-transform-react-jsx-source": "^7.25.9",
1150 | "@types/babel__core": "^7.20.5",
1151 | "react-refresh": "^0.14.2"
1152 | },
1153 | "engines": {
1154 | "node": "^14.18.0 || >=16.0.0"
1155 | },
1156 | "peerDependencies": {
1157 | "vite": "^4.2.0 || ^5.0.0 || ^6.0.0"
1158 | }
1159 | },
1160 | "node_modules/browserslist": {
1161 | "version": "4.24.4",
1162 | "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.4.tgz",
1163 | "integrity": "sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==",
1164 | "dev": true,
1165 | "funding": [
1166 | {
1167 | "type": "opencollective",
1168 | "url": "https://opencollective.com/browserslist"
1169 | },
1170 | {
1171 | "type": "tidelift",
1172 | "url": "https://tidelift.com/funding/github/npm/browserslist"
1173 | },
1174 | {
1175 | "type": "github",
1176 | "url": "https://github.com/sponsors/ai"
1177 | }
1178 | ],
1179 | "license": "MIT",
1180 | "dependencies": {
1181 | "caniuse-lite": "^1.0.30001688",
1182 | "electron-to-chromium": "^1.5.73",
1183 | "node-releases": "^2.0.19",
1184 | "update-browserslist-db": "^1.1.1"
1185 | },
1186 | "bin": {
1187 | "browserslist": "cli.js"
1188 | },
1189 | "engines": {
1190 | "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
1191 | }
1192 | },
1193 | "node_modules/caniuse-lite": {
1194 | "version": "1.0.30001707",
1195 | "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001707.tgz",
1196 | "integrity": "sha512-3qtRjw/HQSMlDWf+X79N206fepf4SOOU6SQLMaq/0KkZLmSjPxAkBOQQ+FxbHKfHmYLZFfdWsO3KA90ceHPSnw==",
1197 | "dev": true,
1198 | "funding": [
1199 | {
1200 | "type": "opencollective",
1201 | "url": "https://opencollective.com/browserslist"
1202 | },
1203 | {
1204 | "type": "tidelift",
1205 | "url": "https://tidelift.com/funding/github/npm/caniuse-lite"
1206 | },
1207 | {
1208 | "type": "github",
1209 | "url": "https://github.com/sponsors/ai"
1210 | }
1211 | ],
1212 | "license": "CC-BY-4.0"
1213 | },
1214 | "node_modules/convert-source-map": {
1215 | "version": "2.0.0",
1216 | "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz",
1217 | "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==",
1218 | "dev": true,
1219 | "license": "MIT"
1220 | },
1221 | "node_modules/csstype": {
1222 | "version": "3.1.3",
1223 | "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz",
1224 | "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==",
1225 | "dev": true,
1226 | "license": "MIT",
1227 | "peer": true
1228 | },
1229 | "node_modules/debug": {
1230 | "version": "4.4.0",
1231 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz",
1232 | "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==",
1233 | "dev": true,
1234 | "license": "MIT",
1235 | "dependencies": {
1236 | "ms": "^2.1.3"
1237 | },
1238 | "engines": {
1239 | "node": ">=6.0"
1240 | },
1241 | "peerDependenciesMeta": {
1242 | "supports-color": {
1243 | "optional": true
1244 | }
1245 | }
1246 | },
1247 | "node_modules/electron-to-chromium": {
1248 | "version": "1.5.128",
1249 | "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.128.tgz",
1250 | "integrity": "sha512-bo1A4HH/NS522Ws0QNFIzyPcyUUNV/yyy70Ho1xqfGYzPUme2F/xr4tlEOuM6/A538U1vDA7a4XfCd1CKRegKQ==",
1251 | "dev": true,
1252 | "license": "ISC"
1253 | },
1254 | "node_modules/esbuild": {
1255 | "version": "0.25.1",
1256 | "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.1.tgz",
1257 | "integrity": "sha512-BGO5LtrGC7vxnqucAe/rmvKdJllfGaYWdyABvyMoXQlfYMb2bbRuReWR5tEGE//4LcNJj9XrkovTqNYRFZHAMQ==",
1258 | "dev": true,
1259 | "hasInstallScript": true,
1260 | "license": "MIT",
1261 | "bin": {
1262 | "esbuild": "bin/esbuild"
1263 | },
1264 | "engines": {
1265 | "node": ">=18"
1266 | },
1267 | "optionalDependencies": {
1268 | "@esbuild/aix-ppc64": "0.25.1",
1269 | "@esbuild/android-arm": "0.25.1",
1270 | "@esbuild/android-arm64": "0.25.1",
1271 | "@esbuild/android-x64": "0.25.1",
1272 | "@esbuild/darwin-arm64": "0.25.1",
1273 | "@esbuild/darwin-x64": "0.25.1",
1274 | "@esbuild/freebsd-arm64": "0.25.1",
1275 | "@esbuild/freebsd-x64": "0.25.1",
1276 | "@esbuild/linux-arm": "0.25.1",
1277 | "@esbuild/linux-arm64": "0.25.1",
1278 | "@esbuild/linux-ia32": "0.25.1",
1279 | "@esbuild/linux-loong64": "0.25.1",
1280 | "@esbuild/linux-mips64el": "0.25.1",
1281 | "@esbuild/linux-ppc64": "0.25.1",
1282 | "@esbuild/linux-riscv64": "0.25.1",
1283 | "@esbuild/linux-s390x": "0.25.1",
1284 | "@esbuild/linux-x64": "0.25.1",
1285 | "@esbuild/netbsd-arm64": "0.25.1",
1286 | "@esbuild/netbsd-x64": "0.25.1",
1287 | "@esbuild/openbsd-arm64": "0.25.1",
1288 | "@esbuild/openbsd-x64": "0.25.1",
1289 | "@esbuild/sunos-x64": "0.25.1",
1290 | "@esbuild/win32-arm64": "0.25.1",
1291 | "@esbuild/win32-ia32": "0.25.1",
1292 | "@esbuild/win32-x64": "0.25.1"
1293 | }
1294 | },
1295 | "node_modules/escalade": {
1296 | "version": "3.2.0",
1297 | "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz",
1298 | "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==",
1299 | "dev": true,
1300 | "license": "MIT",
1301 | "engines": {
1302 | "node": ">=6"
1303 | }
1304 | },
1305 | "node_modules/fsevents": {
1306 | "version": "2.3.3",
1307 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
1308 | "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
1309 | "dev": true,
1310 | "hasInstallScript": true,
1311 | "license": "MIT",
1312 | "optional": true,
1313 | "os": [
1314 | "darwin"
1315 | ],
1316 | "engines": {
1317 | "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
1318 | }
1319 | },
1320 | "node_modules/gensync": {
1321 | "version": "1.0.0-beta.2",
1322 | "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
1323 | "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==",
1324 | "dev": true,
1325 | "license": "MIT",
1326 | "engines": {
1327 | "node": ">=6.9.0"
1328 | }
1329 | },
1330 | "node_modules/globals": {
1331 | "version": "11.12.0",
1332 | "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
1333 | "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
1334 | "dev": true,
1335 | "license": "MIT",
1336 | "engines": {
1337 | "node": ">=4"
1338 | }
1339 | },
1340 | "node_modules/js-tokens": {
1341 | "version": "4.0.0",
1342 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
1343 | "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
1344 | "dev": true,
1345 | "license": "MIT"
1346 | },
1347 | "node_modules/jsesc": {
1348 | "version": "3.1.0",
1349 | "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz",
1350 | "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==",
1351 | "dev": true,
1352 | "license": "MIT",
1353 | "bin": {
1354 | "jsesc": "bin/jsesc"
1355 | },
1356 | "engines": {
1357 | "node": ">=6"
1358 | }
1359 | },
1360 | "node_modules/json5": {
1361 | "version": "2.2.3",
1362 | "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
1363 | "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
1364 | "dev": true,
1365 | "license": "MIT",
1366 | "bin": {
1367 | "json5": "lib/cli.js"
1368 | },
1369 | "engines": {
1370 | "node": ">=6"
1371 | }
1372 | },
1373 | "node_modules/lru-cache": {
1374 | "version": "5.1.1",
1375 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
1376 | "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
1377 | "dev": true,
1378 | "license": "ISC",
1379 | "dependencies": {
1380 | "yallist": "^3.0.2"
1381 | }
1382 | },
1383 | "node_modules/ms": {
1384 | "version": "2.1.3",
1385 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
1386 | "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
1387 | "dev": true,
1388 | "license": "MIT"
1389 | },
1390 | "node_modules/nanoid": {
1391 | "version": "3.3.11",
1392 | "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz",
1393 | "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==",
1394 | "dev": true,
1395 | "funding": [
1396 | {
1397 | "type": "github",
1398 | "url": "https://github.com/sponsors/ai"
1399 | }
1400 | ],
1401 | "license": "MIT",
1402 | "bin": {
1403 | "nanoid": "bin/nanoid.cjs"
1404 | },
1405 | "engines": {
1406 | "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
1407 | }
1408 | },
1409 | "node_modules/node-releases": {
1410 | "version": "2.0.19",
1411 | "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz",
1412 | "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==",
1413 | "dev": true,
1414 | "license": "MIT"
1415 | },
1416 | "node_modules/picocolors": {
1417 | "version": "1.1.1",
1418 | "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
1419 | "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==",
1420 | "dev": true,
1421 | "license": "ISC"
1422 | },
1423 | "node_modules/postcss": {
1424 | "version": "8.5.3",
1425 | "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.3.tgz",
1426 | "integrity": "sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==",
1427 | "dev": true,
1428 | "funding": [
1429 | {
1430 | "type": "opencollective",
1431 | "url": "https://opencollective.com/postcss/"
1432 | },
1433 | {
1434 | "type": "tidelift",
1435 | "url": "https://tidelift.com/funding/github/npm/postcss"
1436 | },
1437 | {
1438 | "type": "github",
1439 | "url": "https://github.com/sponsors/ai"
1440 | }
1441 | ],
1442 | "license": "MIT",
1443 | "dependencies": {
1444 | "nanoid": "^3.3.8",
1445 | "picocolors": "^1.1.1",
1446 | "source-map-js": "^1.2.1"
1447 | },
1448 | "engines": {
1449 | "node": "^10 || ^12 || >=14"
1450 | }
1451 | },
1452 | "node_modules/react": {
1453 | "version": "19.1.0",
1454 | "resolved": "https://registry.npmjs.org/react/-/react-19.1.0.tgz",
1455 | "integrity": "sha512-FS+XFBNvn3GTAWq26joslQgWNoFu08F4kl0J4CgdNKADkdSGXQyTCnKteIAJy96Br6YbpEU1LSzV5dYtjMkMDg==",
1456 | "license": "MIT",
1457 | "engines": {
1458 | "node": ">=0.10.0"
1459 | }
1460 | },
1461 | "node_modules/react-dom": {
1462 | "version": "19.1.0",
1463 | "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.1.0.tgz",
1464 | "integrity": "sha512-Xs1hdnE+DyKgeHJeJznQmYMIBG3TKIHJJT95Q58nHLSrElKlGQqDTR2HQ9fx5CN/Gk6Vh/kupBTDLU11/nDk/g==",
1465 | "license": "MIT",
1466 | "dependencies": {
1467 | "scheduler": "^0.26.0"
1468 | },
1469 | "peerDependencies": {
1470 | "react": "^19.1.0"
1471 | }
1472 | },
1473 | "node_modules/react-refresh": {
1474 | "version": "0.14.2",
1475 | "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.2.tgz",
1476 | "integrity": "sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==",
1477 | "dev": true,
1478 | "license": "MIT",
1479 | "engines": {
1480 | "node": ">=0.10.0"
1481 | }
1482 | },
1483 | "node_modules/reconnecting-websocket": {
1484 | "version": "4.4.0",
1485 | "resolved": "https://registry.npmjs.org/reconnecting-websocket/-/reconnecting-websocket-4.4.0.tgz",
1486 | "integrity": "sha512-D2E33ceRPga0NvTDhJmphEgJ7FUYF0v4lr1ki0csq06OdlxKfugGzN0dSkxM/NfqCxYELK4KcaTOUOjTV6Dcng==",
1487 | "license": "MIT"
1488 | },
1489 | "node_modules/rollup": {
1490 | "version": "4.38.0",
1491 | "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.38.0.tgz",
1492 | "integrity": "sha512-5SsIRtJy9bf1ErAOiFMFzl64Ex9X5V7bnJ+WlFMb+zmP459OSWCEG7b0ERZ+PEU7xPt4OG3RHbrp1LJlXxYTrw==",
1493 | "dev": true,
1494 | "license": "MIT",
1495 | "dependencies": {
1496 | "@types/estree": "1.0.7"
1497 | },
1498 | "bin": {
1499 | "rollup": "dist/bin/rollup"
1500 | },
1501 | "engines": {
1502 | "node": ">=18.0.0",
1503 | "npm": ">=8.0.0"
1504 | },
1505 | "optionalDependencies": {
1506 | "@rollup/rollup-android-arm-eabi": "4.38.0",
1507 | "@rollup/rollup-android-arm64": "4.38.0",
1508 | "@rollup/rollup-darwin-arm64": "4.38.0",
1509 | "@rollup/rollup-darwin-x64": "4.38.0",
1510 | "@rollup/rollup-freebsd-arm64": "4.38.0",
1511 | "@rollup/rollup-freebsd-x64": "4.38.0",
1512 | "@rollup/rollup-linux-arm-gnueabihf": "4.38.0",
1513 | "@rollup/rollup-linux-arm-musleabihf": "4.38.0",
1514 | "@rollup/rollup-linux-arm64-gnu": "4.38.0",
1515 | "@rollup/rollup-linux-arm64-musl": "4.38.0",
1516 | "@rollup/rollup-linux-loongarch64-gnu": "4.38.0",
1517 | "@rollup/rollup-linux-powerpc64le-gnu": "4.38.0",
1518 | "@rollup/rollup-linux-riscv64-gnu": "4.38.0",
1519 | "@rollup/rollup-linux-riscv64-musl": "4.38.0",
1520 | "@rollup/rollup-linux-s390x-gnu": "4.38.0",
1521 | "@rollup/rollup-linux-x64-gnu": "4.38.0",
1522 | "@rollup/rollup-linux-x64-musl": "4.38.0",
1523 | "@rollup/rollup-win32-arm64-msvc": "4.38.0",
1524 | "@rollup/rollup-win32-ia32-msvc": "4.38.0",
1525 | "@rollup/rollup-win32-x64-msvc": "4.38.0",
1526 | "fsevents": "~2.3.2"
1527 | }
1528 | },
1529 | "node_modules/scheduler": {
1530 | "version": "0.26.0",
1531 | "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.26.0.tgz",
1532 | "integrity": "sha512-NlHwttCI/l5gCPR3D1nNXtWABUmBwvZpEQiD4IXSbIDq8BzLIK/7Ir5gTFSGZDUu37K5cMNp0hFtzO38sC7gWA==",
1533 | "license": "MIT"
1534 | },
1535 | "node_modules/semver": {
1536 | "version": "6.3.1",
1537 | "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
1538 | "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
1539 | "dev": true,
1540 | "license": "ISC",
1541 | "bin": {
1542 | "semver": "bin/semver.js"
1543 | }
1544 | },
1545 | "node_modules/source-map-js": {
1546 | "version": "1.2.1",
1547 | "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz",
1548 | "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==",
1549 | "dev": true,
1550 | "license": "BSD-3-Clause",
1551 | "engines": {
1552 | "node": ">=0.10.0"
1553 | }
1554 | },
1555 | "node_modules/tinybase": {
1556 | "version": "6.0.0",
1557 | "resolved": "https://registry.npmjs.org/tinybase/-/tinybase-6.0.0.tgz",
1558 | "integrity": "sha512-wjIiS8iNPS/DNvFvlYEAOrZq7+tcAoFn5+xjW8ZUcCR11DafP1aJ3n1tDRTI9Nfq+Vz5Axj9kOmUTvuv2lyAVA==",
1559 | "license": "MIT",
1560 | "peerDependencies": {
1561 | "@automerge/automerge-repo": "^1.2.1",
1562 | "@cloudflare/workers-types": "^4.20250327.0",
1563 | "@electric-sql/pglite": "^0.2.17",
1564 | "@libsql/client": "^0.15.1",
1565 | "@powersync/common": "^1.26.0",
1566 | "@sqlite.org/sqlite-wasm": "^3.49.1-build2",
1567 | "@vlcn.io/crsqlite-wasm": "^0.16.0",
1568 | "electric-sql": "^0.12.1",
1569 | "expo": "^52.0.4",
1570 | "expo-sqlite": "^15.1.3",
1571 | "partykit": "^0.0.114",
1572 | "partysocket": "^1.1.3",
1573 | "postgres": "^3.4.5",
1574 | "react": "^19.0.0",
1575 | "react-dom": "^19.0.0",
1576 | "sqlite3": "^5.1.7",
1577 | "ws": "^8.18.1",
1578 | "yjs": "^13.6.24"
1579 | },
1580 | "peerDependenciesMeta": {
1581 | "@automerge/automerge-repo": {
1582 | "optional": true
1583 | },
1584 | "@cloudflare/workers-types": {
1585 | "optional": true
1586 | },
1587 | "@electric-sql/pglite": {
1588 | "optional": true
1589 | },
1590 | "@libsql/client": {
1591 | "optional": true
1592 | },
1593 | "@powersync/common": {
1594 | "optional": true
1595 | },
1596 | "@sqlite.org/sqlite-wasm": {
1597 | "optional": true
1598 | },
1599 | "@vlcn.io/crsqlite-wasm": {
1600 | "optional": true
1601 | },
1602 | "electric-sql": {
1603 | "optional": true
1604 | },
1605 | "expo": {
1606 | "optional": true
1607 | },
1608 | "expo-sqlite": {
1609 | "optional": true
1610 | },
1611 | "partykit": {
1612 | "optional": true
1613 | },
1614 | "partysocket": {
1615 | "optional": true
1616 | },
1617 | "postgres": {
1618 | "optional": true
1619 | },
1620 | "prettier": {
1621 | "optional": true
1622 | },
1623 | "react": {
1624 | "optional": true
1625 | },
1626 | "react-dom": {
1627 | "optional": true
1628 | },
1629 | "sqlite3": {
1630 | "optional": true
1631 | },
1632 | "ws": {
1633 | "optional": true
1634 | },
1635 | "yjs": {
1636 | "optional": true
1637 | }
1638 | }
1639 | },
1640 | "node_modules/typescript": {
1641 | "version": "5.8.2",
1642 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.2.tgz",
1643 | "integrity": "sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==",
1644 | "dev": true,
1645 | "license": "Apache-2.0",
1646 | "bin": {
1647 | "tsc": "bin/tsc",
1648 | "tsserver": "bin/tsserver"
1649 | },
1650 | "engines": {
1651 | "node": ">=14.17"
1652 | }
1653 | },
1654 | "node_modules/update-browserslist-db": {
1655 | "version": "1.1.3",
1656 | "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz",
1657 | "integrity": "sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==",
1658 | "dev": true,
1659 | "funding": [
1660 | {
1661 | "type": "opencollective",
1662 | "url": "https://opencollective.com/browserslist"
1663 | },
1664 | {
1665 | "type": "tidelift",
1666 | "url": "https://tidelift.com/funding/github/npm/browserslist"
1667 | },
1668 | {
1669 | "type": "github",
1670 | "url": "https://github.com/sponsors/ai"
1671 | }
1672 | ],
1673 | "license": "MIT",
1674 | "dependencies": {
1675 | "escalade": "^3.2.0",
1676 | "picocolors": "^1.1.1"
1677 | },
1678 | "bin": {
1679 | "update-browserslist-db": "cli.js"
1680 | },
1681 | "peerDependencies": {
1682 | "browserslist": ">= 4.21.0"
1683 | }
1684 | },
1685 | "node_modules/vite": {
1686 | "version": "6.2.3",
1687 | "resolved": "https://registry.npmjs.org/vite/-/vite-6.2.3.tgz",
1688 | "integrity": "sha512-IzwM54g4y9JA/xAeBPNaDXiBF8Jsgl3VBQ2YQ/wOY6fyW3xMdSoltIV3Bo59DErdqdE6RxUfv8W69DvUorE4Eg==",
1689 | "dev": true,
1690 | "license": "MIT",
1691 | "dependencies": {
1692 | "esbuild": "^0.25.0",
1693 | "postcss": "^8.5.3",
1694 | "rollup": "^4.30.1"
1695 | },
1696 | "bin": {
1697 | "vite": "bin/vite.js"
1698 | },
1699 | "engines": {
1700 | "node": "^18.0.0 || ^20.0.0 || >=22.0.0"
1701 | },
1702 | "funding": {
1703 | "url": "https://github.com/vitejs/vite?sponsor=1"
1704 | },
1705 | "optionalDependencies": {
1706 | "fsevents": "~2.3.3"
1707 | },
1708 | "peerDependencies": {
1709 | "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0",
1710 | "jiti": ">=1.21.0",
1711 | "less": "*",
1712 | "lightningcss": "^1.21.0",
1713 | "sass": "*",
1714 | "sass-embedded": "*",
1715 | "stylus": "*",
1716 | "sugarss": "*",
1717 | "terser": "^5.16.0",
1718 | "tsx": "^4.8.1",
1719 | "yaml": "^2.4.2"
1720 | },
1721 | "peerDependenciesMeta": {
1722 | "@types/node": {
1723 | "optional": true
1724 | },
1725 | "jiti": {
1726 | "optional": true
1727 | },
1728 | "less": {
1729 | "optional": true
1730 | },
1731 | "lightningcss": {
1732 | "optional": true
1733 | },
1734 | "sass": {
1735 | "optional": true
1736 | },
1737 | "sass-embedded": {
1738 | "optional": true
1739 | },
1740 | "stylus": {
1741 | "optional": true
1742 | },
1743 | "sugarss": {
1744 | "optional": true
1745 | },
1746 | "terser": {
1747 | "optional": true
1748 | },
1749 | "tsx": {
1750 | "optional": true
1751 | },
1752 | "yaml": {
1753 | "optional": true
1754 | }
1755 | }
1756 | },
1757 | "node_modules/yallist": {
1758 | "version": "3.1.1",
1759 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
1760 | "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
1761 | "dev": true,
1762 | "license": "ISC"
1763 | }
1764 | }
1765 | }
1766 |
--------------------------------------------------------------------------------
/client/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "vite-tinybase-ts-react-sync-client",
3 | "version": "1.0.0",
4 | "scripts": {
5 | "dev": "vite --force",
6 | "build": "tsc && vite build",
7 | "preview": "vite preview"
8 | },
9 | "devDependencies": {
10 | "@types/react-dom": "^19.0.4",
11 | "@vitejs/plugin-react": "^4.3.4",
12 | "typescript": "^5.8.2",
13 | "vite": "^6.2.3"
14 | },
15 | "dependencies": {
16 | "react": "^19.1.0",
17 | "react-dom": "^19.1.0",
18 | "reconnecting-websocket": "^4.4.0",
19 | "tinybase": "^6.0.0"
20 | }
21 | }
--------------------------------------------------------------------------------
/client/public/favicon.svg:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
8 |
--------------------------------------------------------------------------------
/client/src/App.tsx:
--------------------------------------------------------------------------------
1 | import React, { StrictMode } from 'react';
2 | import ReconnectingWebSocket from 'reconnecting-websocket';
3 | import { createMergeableStore, MergeableStore } from 'tinybase';
4 | import { createLocalPersister } from 'tinybase/persisters/persister-browser';
5 | import { createWsSynchronizer } from 'tinybase/synchronizers/synchronizer-ws-client';
6 | import {
7 | Provider,
8 | useCreateMergeableStore,
9 | useCreatePersister,
10 | useCreateSynchronizer,
11 | } from 'tinybase/ui-react';
12 | import {
13 | SortedTableInHtmlTable,
14 | ValuesInHtmlTable,
15 | } from 'tinybase/ui-react-dom';
16 | import { Inspector } from 'tinybase/ui-react-inspector';
17 | import { Buttons } from './Buttons';
18 |
19 | const SERVER_SCHEME = 'wss://';
20 | const SERVER = 'vite.tinybase.cloud';
21 |
22 | export const App = () => {
23 | const serverPathId = location.pathname;
24 |
25 | const store = useCreateMergeableStore(createMergeableStore);
26 |
27 | useCreatePersister(
28 | store,
29 | (store) => createLocalPersister(store, 'local://' + SERVER + serverPathId),
30 | [],
31 | async (persister) => {
32 | await persister.startAutoLoad([
33 | {
34 | pets: { '0': { name: 'fido', species: 'dog' } },
35 | species: {
36 | dog: { price: 5 },
37 | cat: { price: 4 },
38 | fish: { price: 2 },
39 | worm: { price: 1 },
40 | parrot: { price: 3 },
41 | },
42 | },
43 | { counter: 0 },
44 | ]);
45 | await persister.startAutoSave();
46 | }
47 | );
48 |
49 | useCreateSynchronizer(store, async (store: MergeableStore) => {
50 | const synchronizer = await createWsSynchronizer(
51 | store,
52 | new ReconnectingWebSocket(SERVER_SCHEME + SERVER + serverPathId),
53 | 1
54 | );
55 | await synchronizer.startSync();
56 |
57 | // If the websocket reconnects in the future, do another explicit sync.
58 | synchronizer.getWebSocket().addEventListener('open', () => {
59 | synchronizer.load().then(() => synchronizer.save());
60 | });
61 |
62 | return synchronizer;
63 | });
64 |
65 | return (
66 |
67 |
68 |
69 |
70 |
71 | TinyBase & Synchronization
72 |
73 | To demonstrate synchronization,{' '}
74 | open this exact URL in multiple incognito
75 | browser windows, or even other browsers altogether.
76 |
77 |
78 |
79 |
Values
80 |
81 |
82 |
83 |
Pets Table
84 |
92 |
93 |
94 |
95 |
96 | );
97 | };
98 |
--------------------------------------------------------------------------------
/client/src/Buttons.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import { ValueOrUndefined } from 'tinybase';
3 | import { useAddRowCallback, useSetValueCallback } from 'tinybase/ui-react';
4 |
5 | // Convenience function for generating a random integer
6 | const getRandom = (max = 100) => Math.floor(Math.random() * max);
7 |
8 | export const Buttons = () => {
9 | // Attach events to the buttons to mutate the data in the TinyBase Store
10 | const handleCount = useSetValueCallback(
11 | 'counter',
12 | () => (value: ValueOrUndefined) => ((value ?? 0) as number) + 1
13 | );
14 | const handleRandom = useSetValueCallback('random', () => getRandom());
15 | const handleAddPet = useAddRowCallback('pets', (_, store) => ({
16 | name: ['fido', 'felix', 'bubbles', 'lowly', 'polly'][getRandom(5)],
17 | species: store.getRowIds('species')[getRandom(5)],
18 | }));
19 |
20 | return (
21 |
22 | Increment number
23 | Random number
24 | Add a pet
25 |
26 | );
27 | };
28 |
--------------------------------------------------------------------------------
/client/src/index.css:
--------------------------------------------------------------------------------
1 | body {
2 | color: #bbb;
3 | background: #111;
4 | font-family: 'Inter', sans-serif;
5 | user-select: none;
6 | }
7 |
8 | #app {
9 | max-width: 40rem;
10 | margin: 2rem auto;
11 | display: grid;
12 | grid-template-columns: 1fr;
13 | column-gap: 2rem;
14 | align-items: start;
15 | row-gap: 1rem;
16 | }
17 |
18 | h1 {
19 | font-weight: 600;
20 | img {
21 | margin-right: 1rem;
22 | height: 2.5rem;
23 | vertical-align: text-bottom;
24 | }
25 | }
26 |
27 | h2 {
28 | text-align: center;
29 | font-weight: 800;
30 | font-size: 1.3rem;
31 | margin: 1rem 0 0;
32 | }
33 |
34 | a {
35 | color: unset;
36 | }
37 |
38 | #buttons {
39 | border: solid #666;
40 | border-width: 1px 0;
41 | text-align: center;
42 | }
43 |
44 | #buttons button {
45 | border: 1px solid #666;
46 | border-radius: 0.25rem;
47 | padding: 0.5rem 1rem;
48 | background: #222;
49 | color: #fff;
50 | font-family: inherit;
51 | font-weight: 800;
52 | font-size: 0.8rem;
53 | width: 10rem;
54 | margin: 1rem;
55 | }
56 | #buttons button:hover {
57 | border-color: #d81b60;
58 | }
59 |
60 | table {
61 | border-collapse: collapse;
62 | font-size: inherit;
63 | line-height: inherit;
64 | margin-top: 0.5rem;
65 | table-layout: fixed;
66 | width: 100%;
67 | margin-bottom: 2rem;
68 | caption-side: bottom;
69 | }
70 | table caption {
71 | text-align: left;
72 | button {
73 | border: 0;
74 | margin-right: 0.25rem;
75 | }
76 | }
77 | table caption button {
78 | line-height: 0.7rem;
79 | margin: 0 0.25rem 0 0;
80 | vertical-align: middle;
81 | }
82 | th,
83 | td {
84 | padding: 0.25rem 0.5rem 0.25rem 0;
85 | text-align: left;
86 | }
87 | thead th,
88 | thead td {
89 | border: solid #999;
90 | border-width: 1px 0;
91 | }
92 | tbody th,
93 | tbody td {
94 | border-bottom: 1px solid #333;
95 | }
96 |
97 | table.sortedTable thead th {
98 | cursor: pointer;
99 | }
100 |
101 | @media (min-width: 40rem) {
102 | #app {
103 | grid-template-columns: 1fr 1fr;
104 | }
105 | header,
106 | #buttons {
107 | grid-column: span 2;
108 | }
109 | }
110 |
--------------------------------------------------------------------------------
/client/src/index.tsx:
--------------------------------------------------------------------------------
1 | import './index.css';
2 | import React from 'react';
3 | import ReactDOM from 'react-dom/client';
4 | import { getUniqueId } from 'tinybase';
5 | import { App } from './App';
6 |
7 | addEventListener('load', () => {
8 | const serverPathId = location.pathname;
9 | if (serverPathId == '/') {
10 | location.assign('/' + getUniqueId());
11 | return;
12 | }
13 |
14 | ReactDOM.createRoot(document.getElementById('app')!).render( );
15 | });
16 |
--------------------------------------------------------------------------------
/client/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "target": "ES2020",
4 | "useDefineForClassFields": true,
5 | "lib": ["ES2020", "DOM", "DOM.Iterable"],
6 | "module": "ESNext",
7 | "skipLibCheck": true,
8 |
9 | /* Bundler mode */
10 | "moduleResolution": "bundler",
11 | "allowImportingTsExtensions": true,
12 | "resolveJsonModule": true,
13 | "isolatedModules": true,
14 | "noEmit": true,
15 | "jsx": "react-jsx",
16 |
17 | /* Linting */
18 | "strict": true,
19 | "noUnusedLocals": true,
20 | "noUnusedParameters": true,
21 | "noFallthroughCasesInSwitch": true
22 | },
23 | "include": ["client/src"],
24 | "references": [{ "path": "tsconfig.node.json" }]
25 | }
26 |
--------------------------------------------------------------------------------
/client/tsconfig.node.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "composite": true,
4 | "skipLibCheck": true,
5 | "module": "ESNext",
6 | "moduleResolution": "bundler",
7 | "allowSyntheticDefaultImports": true
8 | },
9 | "include": ["vite.config.ts"]
10 | }
11 |
--------------------------------------------------------------------------------
/client/vite.config.ts:
--------------------------------------------------------------------------------
1 | import { defineConfig } from 'vite';
2 | import react from '@vitejs/plugin-react';
3 |
4 | export default defineConfig({ plugins: [react()] });
5 |
--------------------------------------------------------------------------------
/server/.eslintrc.json:
--------------------------------------------------------------------------------
1 | {
2 | "parser": "@typescript-eslint/parser",
3 | "plugins": ["@typescript-eslint"],
4 | "extends": [
5 | "eslint:recommended",
6 | "plugin:@typescript-eslint/eslint-recommended",
7 | "plugin:@typescript-eslint/recommended",
8 | "prettier"
9 | ],
10 | "env": {"browser": true, "es6": true, "node": true},
11 | "globals": {"page": true, "browser": true, "context": true},
12 | "parserOptions": {
13 | "ecmaVersion": 7,
14 | "ecmaFeatures": {
15 | "experimentalObjectRestSpread": true,
16 | "globalReturn": true
17 | },
18 | "sourceType": "module"
19 | },
20 | "rules": {
21 | "@typescript-eslint/no-explicit-any": 0,
22 | "@typescript-eslint/no-var-requires": 0,
23 | "@typescript-eslint/no-unused-vars": [
24 | 2,
25 | {"argsIgnorePattern": "^_.*", "varsIgnorePattern": "^_.*"}
26 | ],
27 | "max-len": [2, {"code": 80, "ignorePattern": "^(im|ex)ports?\\W.*"}],
28 | "no-var": 2,
29 | "no-console": 2,
30 | "object-curly-spacing": [2, "never"],
31 | "comma-dangle": [
32 | 2,
33 | {
34 | "arrays": "always-multiline",
35 | "objects": "always-multiline",
36 | "imports": "always-multiline",
37 | "exports": "always-multiline",
38 | "functions": "always-multiline"
39 | }
40 | ],
41 | "indent": 0,
42 | "no-empty": [2, {"allowEmptyCatch": true}],
43 | "linebreak-style": [2, "unix"],
44 | "space-infix-ops": 2,
45 | "quotes": [2, "single", {"allowTemplateLiterals": true}],
46 | "semi": [2, "always"],
47 | "sort-keys": 0,
48 | "sort-imports": 2,
49 | "no-multiple-empty-lines": [2, {"max": 1}]
50 | }
51 | }
52 |
--------------------------------------------------------------------------------
/server/.prettierrc:
--------------------------------------------------------------------------------
1 | {
2 | "bracketSpacing": false,
3 | "singleQuote": true,
4 | "trailingComma": "all"
5 | }
--------------------------------------------------------------------------------
/server/bun.lock:
--------------------------------------------------------------------------------
1 | {
2 | "lockfileVersion": 1,
3 | "workspaces": {
4 | "": {
5 | "name": "vite-tinybase-ts-react-sync-durable-object-server",
6 | "dependencies": {
7 | "tinybase": "^6.0.0",
8 | },
9 | "devDependencies": {
10 | "@cloudflare/workers-types": "^4.20250327.0",
11 | "typescript": "^5.8.2",
12 | "wrangler": "^4.6.0",
13 | },
14 | },
15 | },
16 | "packages": {
17 | "@cloudflare/kv-asset-handler": ["@cloudflare/kv-asset-handler@0.4.0", "", { "dependencies": { "mime": "^3.0.0" } }, "sha512-+tv3z+SPp+gqTIcImN9o0hqE9xyfQjI1XD9pL6NuKjua9B1y7mNYv0S9cP+QEbA4ppVgGZEmKOvHX5G5Ei1CVA=="],
18 |
19 | "@cloudflare/unenv-preset": ["@cloudflare/unenv-preset@2.3.1", "", { "peerDependencies": { "unenv": "2.0.0-rc.15", "workerd": "^1.20250320.0" }, "optionalPeers": ["workerd"] }, "sha512-Xq57Qd+ADpt6hibcVBO0uLG9zzRgyRhfCUgBT9s+g3+3Ivg5zDyVgLFy40ES1VdNcu8rPNSivm9A+kGP5IVaPg=="],
20 |
21 | "@cloudflare/workerd-darwin-64": ["@cloudflare/workerd-darwin-64@1.20250321.0", "", { "os": "darwin", "cpu": "x64" }, "sha512-y273GfLaNCxkL8hTfo0c8FZKkOPdq+CPZAKJXPWB+YpS1JCOULu6lNTptpD7ZtF14dTYPkn5Weug31TTlviJmw=="],
22 |
23 | "@cloudflare/workerd-darwin-arm64": ["@cloudflare/workerd-darwin-arm64@1.20250321.0", "", { "os": "darwin", "cpu": "arm64" }, "sha512-qvf7/gkkQq7fAsoMlntJSimN/WfwQqxi2oL0aWZMGodTvs/yRHO2I4oE0eOihVdK1BXyBHJXNxEvNDBjF0+Yuw=="],
24 |
25 | "@cloudflare/workerd-linux-64": ["@cloudflare/workerd-linux-64@1.20250321.0", "", { "os": "linux", "cpu": "x64" }, "sha512-AEp3xjWFrNPO/h0StCOgOb0bWCcNThnkESpy91Wf4mfUF2p7tOCdp37Nk/1QIRqSxnfv4Hgxyi7gcWud9cJuMw=="],
26 |
27 | "@cloudflare/workerd-linux-arm64": ["@cloudflare/workerd-linux-arm64@1.20250321.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-wRWyMIoPIS1UBXCisW0FYTgGsfZD4AVS0hXA5nuLc0c21CvzZpmmTjqEWMcwPFenwy/MNL61NautVOC4qJqQ3Q=="],
28 |
29 | "@cloudflare/workerd-windows-64": ["@cloudflare/workerd-windows-64@1.20250321.0", "", { "os": "win32", "cpu": "x64" }, "sha512-8vYP3QYO0zo2faUDfWl88jjfUvz7Si9GS3mUYaTh/TR9LcAUtsO7muLxPamqEyoxNFtbQgy08R4rTid94KRi3w=="],
30 |
31 | "@cloudflare/workers-types": ["@cloudflare/workers-types@4.20250327.0", "", {}, "sha512-rkoGnSY/GgBLCuhjZMIC3mt0jjqqvL17uOK92OI4eivmE+pMFOAchowDxIWOzDyYe5vwNCakbCeIM/FrSmwGJA=="],
32 |
33 | "@cspotcode/source-map-support": ["@cspotcode/source-map-support@0.8.1", "", { "dependencies": { "@jridgewell/trace-mapping": "0.3.9" } }, "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw=="],
34 |
35 | "@emnapi/runtime": ["@emnapi/runtime@1.4.0", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-64WYIf4UYcdLnbKn/umDlNjQDSS8AgZrI/R9+x5ilkUVFxXcA1Ebl+gQLc/6mERA4407Xof0R7wEyEuj091CVw=="],
36 |
37 | "@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.24.2", "", { "os": "aix", "cpu": "ppc64" }, "sha512-thpVCb/rhxE/BnMLQ7GReQLLN8q9qbHmI55F4489/ByVg2aQaQ6kbcLb6FHkocZzQhxc4gx0sCk0tJkKBFzDhA=="],
38 |
39 | "@esbuild/android-arm": ["@esbuild/android-arm@0.24.2", "", { "os": "android", "cpu": "arm" }, "sha512-tmwl4hJkCfNHwFB3nBa8z1Uy3ypZpxqxfTQOcHX+xRByyYgunVbZ9MzUUfb0RxaHIMnbHagwAxuTL+tnNM+1/Q=="],
40 |
41 | "@esbuild/android-arm64": ["@esbuild/android-arm64@0.24.2", "", { "os": "android", "cpu": "arm64" }, "sha512-cNLgeqCqV8WxfcTIOeL4OAtSmL8JjcN6m09XIgro1Wi7cF4t/THaWEa7eL5CMoMBdjoHOTh/vwTO/o2TRXIyzg=="],
42 |
43 | "@esbuild/android-x64": ["@esbuild/android-x64@0.24.2", "", { "os": "android", "cpu": "x64" }, "sha512-B6Q0YQDqMx9D7rvIcsXfmJfvUYLoP722bgfBlO5cGvNVb5V/+Y7nhBE3mHV9OpxBf4eAS2S68KZztiPaWq4XYw=="],
44 |
45 | "@esbuild/darwin-arm64": ["@esbuild/darwin-arm64@0.24.2", "", { "os": "darwin", "cpu": "arm64" }, "sha512-kj3AnYWc+CekmZnS5IPu9D+HWtUI49hbnyqk0FLEJDbzCIQt7hg7ucF1SQAilhtYpIujfaHr6O0UHlzzSPdOeA=="],
46 |
47 | "@esbuild/darwin-x64": ["@esbuild/darwin-x64@0.24.2", "", { "os": "darwin", "cpu": "x64" }, "sha512-WeSrmwwHaPkNR5H3yYfowhZcbriGqooyu3zI/3GGpF8AyUdsrrP0X6KumITGA9WOyiJavnGZUwPGvxvwfWPHIA=="],
48 |
49 | "@esbuild/freebsd-arm64": ["@esbuild/freebsd-arm64@0.24.2", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-UN8HXjtJ0k/Mj6a9+5u6+2eZ2ERD7Edt1Q9IZiB5UZAIdPnVKDoG7mdTVGhHJIeEml60JteamR3qhsr1r8gXvg=="],
50 |
51 | "@esbuild/freebsd-x64": ["@esbuild/freebsd-x64@0.24.2", "", { "os": "freebsd", "cpu": "x64" }, "sha512-TvW7wE/89PYW+IevEJXZ5sF6gJRDY/14hyIGFXdIucxCsbRmLUcjseQu1SyTko+2idmCw94TgyaEZi9HUSOe3Q=="],
52 |
53 | "@esbuild/linux-arm": ["@esbuild/linux-arm@0.24.2", "", { "os": "linux", "cpu": "arm" }, "sha512-n0WRM/gWIdU29J57hJyUdIsk0WarGd6To0s+Y+LwvlC55wt+GT/OgkwoXCXvIue1i1sSNWblHEig00GBWiJgfA=="],
54 |
55 | "@esbuild/linux-arm64": ["@esbuild/linux-arm64@0.24.2", "", { "os": "linux", "cpu": "arm64" }, "sha512-7HnAD6074BW43YvvUmE/35Id9/NB7BeX5EoNkK9obndmZBUk8xmJJeU7DwmUeN7tkysslb2eSl6CTrYz6oEMQg=="],
56 |
57 | "@esbuild/linux-ia32": ["@esbuild/linux-ia32@0.24.2", "", { "os": "linux", "cpu": "ia32" }, "sha512-sfv0tGPQhcZOgTKO3oBE9xpHuUqguHvSo4jl+wjnKwFpapx+vUDcawbwPNuBIAYdRAvIDBfZVvXprIj3HA+Ugw=="],
58 |
59 | "@esbuild/linux-loong64": ["@esbuild/linux-loong64@0.24.2", "", { "os": "linux", "cpu": "none" }, "sha512-CN9AZr8kEndGooS35ntToZLTQLHEjtVB5n7dl8ZcTZMonJ7CCfStrYhrzF97eAecqVbVJ7APOEe18RPI4KLhwQ=="],
60 |
61 | "@esbuild/linux-mips64el": ["@esbuild/linux-mips64el@0.24.2", "", { "os": "linux", "cpu": "none" }, "sha512-iMkk7qr/wl3exJATwkISxI7kTcmHKE+BlymIAbHO8xanq/TjHaaVThFF6ipWzPHryoFsesNQJPE/3wFJw4+huw=="],
62 |
63 | "@esbuild/linux-ppc64": ["@esbuild/linux-ppc64@0.24.2", "", { "os": "linux", "cpu": "ppc64" }, "sha512-shsVrgCZ57Vr2L8mm39kO5PPIb+843FStGt7sGGoqiiWYconSxwTiuswC1VJZLCjNiMLAMh34jg4VSEQb+iEbw=="],
64 |
65 | "@esbuild/linux-riscv64": ["@esbuild/linux-riscv64@0.24.2", "", { "os": "linux", "cpu": "none" }, "sha512-4eSFWnU9Hhd68fW16GD0TINewo1L6dRrB+oLNNbYyMUAeOD2yCK5KXGK1GH4qD/kT+bTEXjsyTCiJGHPZ3eM9Q=="],
66 |
67 | "@esbuild/linux-s390x": ["@esbuild/linux-s390x@0.24.2", "", { "os": "linux", "cpu": "s390x" }, "sha512-S0Bh0A53b0YHL2XEXC20bHLuGMOhFDO6GN4b3YjRLK//Ep3ql3erpNcPlEFed93hsQAjAQDNsvcK+hV90FubSw=="],
68 |
69 | "@esbuild/linux-x64": ["@esbuild/linux-x64@0.24.2", "", { "os": "linux", "cpu": "x64" }, "sha512-8Qi4nQcCTbLnK9WoMjdC9NiTG6/E38RNICU6sUNqK0QFxCYgoARqVqxdFmWkdonVsvGqWhmm7MO0jyTqLqwj0Q=="],
70 |
71 | "@esbuild/netbsd-arm64": ["@esbuild/netbsd-arm64@0.24.2", "", { "os": "none", "cpu": "arm64" }, "sha512-wuLK/VztRRpMt9zyHSazyCVdCXlpHkKm34WUyinD2lzK07FAHTq0KQvZZlXikNWkDGoT6x3TD51jKQ7gMVpopw=="],
72 |
73 | "@esbuild/netbsd-x64": ["@esbuild/netbsd-x64@0.24.2", "", { "os": "none", "cpu": "x64" }, "sha512-VefFaQUc4FMmJuAxmIHgUmfNiLXY438XrL4GDNV1Y1H/RW3qow68xTwjZKfj/+Plp9NANmzbH5R40Meudu8mmw=="],
74 |
75 | "@esbuild/openbsd-arm64": ["@esbuild/openbsd-arm64@0.24.2", "", { "os": "openbsd", "cpu": "arm64" }, "sha512-YQbi46SBct6iKnszhSvdluqDmxCJA+Pu280Av9WICNwQmMxV7nLRHZfjQzwbPs3jeWnuAhE9Jy0NrnJ12Oz+0A=="],
76 |
77 | "@esbuild/openbsd-x64": ["@esbuild/openbsd-x64@0.24.2", "", { "os": "openbsd", "cpu": "x64" }, "sha512-+iDS6zpNM6EnJyWv0bMGLWSWeXGN/HTaF/LXHXHwejGsVi+ooqDfMCCTerNFxEkM3wYVcExkeGXNqshc9iMaOA=="],
78 |
79 | "@esbuild/sunos-x64": ["@esbuild/sunos-x64@0.24.2", "", { "os": "sunos", "cpu": "x64" }, "sha512-hTdsW27jcktEvpwNHJU4ZwWFGkz2zRJUz8pvddmXPtXDzVKTTINmlmga3ZzwcuMpUvLw7JkLy9QLKyGpD2Yxig=="],
80 |
81 | "@esbuild/win32-arm64": ["@esbuild/win32-arm64@0.24.2", "", { "os": "win32", "cpu": "arm64" }, "sha512-LihEQ2BBKVFLOC9ZItT9iFprsE9tqjDjnbulhHoFxYQtQfai7qfluVODIYxt1PgdoyQkz23+01rzwNwYfutxUQ=="],
82 |
83 | "@esbuild/win32-ia32": ["@esbuild/win32-ia32@0.24.2", "", { "os": "win32", "cpu": "ia32" }, "sha512-q+iGUwfs8tncmFC9pcnD5IvRHAzmbwQ3GPS5/ceCyHdjXubwQWI12MKWSNSMYLJMq23/IUCvJMS76PDqXe1fxA=="],
84 |
85 | "@esbuild/win32-x64": ["@esbuild/win32-x64@0.24.2", "", { "os": "win32", "cpu": "x64" }, "sha512-7VTgWzgMGvup6aSqDPLiW5zHaxYJGTO4OokMjIlrCtf+VpEL+cXKtCvg723iguPYI5oaUNdS+/V7OU2gvXVWEg=="],
86 |
87 | "@fastify/busboy": ["@fastify/busboy@2.1.1", "", {}, "sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA=="],
88 |
89 | "@img/sharp-darwin-arm64": ["@img/sharp-darwin-arm64@0.33.5", "", { "optionalDependencies": { "@img/sharp-libvips-darwin-arm64": "1.0.4" }, "os": "darwin", "cpu": "arm64" }, "sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ=="],
90 |
91 | "@img/sharp-darwin-x64": ["@img/sharp-darwin-x64@0.33.5", "", { "optionalDependencies": { "@img/sharp-libvips-darwin-x64": "1.0.4" }, "os": "darwin", "cpu": "x64" }, "sha512-fyHac4jIc1ANYGRDxtiqelIbdWkIuQaI84Mv45KvGRRxSAa7o7d1ZKAOBaYbnepLC1WqxfpimdeWfvqqSGwR2Q=="],
92 |
93 | "@img/sharp-libvips-darwin-arm64": ["@img/sharp-libvips-darwin-arm64@1.0.4", "", { "os": "darwin", "cpu": "arm64" }, "sha512-XblONe153h0O2zuFfTAbQYAX2JhYmDHeWikp1LM9Hul9gVPjFY427k6dFEcOL72O01QxQsWi761svJ/ev9xEDg=="],
94 |
95 | "@img/sharp-libvips-darwin-x64": ["@img/sharp-libvips-darwin-x64@1.0.4", "", { "os": "darwin", "cpu": "x64" }, "sha512-xnGR8YuZYfJGmWPvmlunFaWJsb9T/AO2ykoP3Fz/0X5XV2aoYBPkX6xqCQvUTKKiLddarLaxpzNe+b1hjeWHAQ=="],
96 |
97 | "@img/sharp-libvips-linux-arm": ["@img/sharp-libvips-linux-arm@1.0.5", "", { "os": "linux", "cpu": "arm" }, "sha512-gvcC4ACAOPRNATg/ov8/MnbxFDJqf/pDePbBnuBDcjsI8PssmjoKMAz4LtLaVi+OnSb5FK/yIOamqDwGmXW32g=="],
98 |
99 | "@img/sharp-libvips-linux-arm64": ["@img/sharp-libvips-linux-arm64@1.0.4", "", { "os": "linux", "cpu": "arm64" }, "sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA=="],
100 |
101 | "@img/sharp-libvips-linux-s390x": ["@img/sharp-libvips-linux-s390x@1.0.4", "", { "os": "linux", "cpu": "s390x" }, "sha512-u7Wz6ntiSSgGSGcjZ55im6uvTrOxSIS8/dgoVMoiGE9I6JAfU50yH5BoDlYA1tcuGS7g/QNtetJnxA6QEsCVTA=="],
102 |
103 | "@img/sharp-libvips-linux-x64": ["@img/sharp-libvips-linux-x64@1.0.4", "", { "os": "linux", "cpu": "x64" }, "sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw=="],
104 |
105 | "@img/sharp-libvips-linuxmusl-arm64": ["@img/sharp-libvips-linuxmusl-arm64@1.0.4", "", { "os": "linux", "cpu": "arm64" }, "sha512-9Ti+BbTYDcsbp4wfYib8Ctm1ilkugkA/uscUn6UXK1ldpC1JjiXbLfFZtRlBhjPZ5o1NCLiDbg8fhUPKStHoTA=="],
106 |
107 | "@img/sharp-libvips-linuxmusl-x64": ["@img/sharp-libvips-linuxmusl-x64@1.0.4", "", { "os": "linux", "cpu": "x64" }, "sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw=="],
108 |
109 | "@img/sharp-linux-arm": ["@img/sharp-linux-arm@0.33.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-arm": "1.0.5" }, "os": "linux", "cpu": "arm" }, "sha512-JTS1eldqZbJxjvKaAkxhZmBqPRGmxgu+qFKSInv8moZ2AmT5Yib3EQ1c6gp493HvrvV8QgdOXdyaIBrhvFhBMQ=="],
110 |
111 | "@img/sharp-linux-arm64": ["@img/sharp-linux-arm64@0.33.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-arm64": "1.0.4" }, "os": "linux", "cpu": "arm64" }, "sha512-JMVv+AMRyGOHtO1RFBiJy/MBsgz0x4AWrT6QoEVVTyh1E39TrCUpTRI7mx9VksGX4awWASxqCYLCV4wBZHAYxA=="],
112 |
113 | "@img/sharp-linux-s390x": ["@img/sharp-linux-s390x@0.33.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-s390x": "1.0.4" }, "os": "linux", "cpu": "s390x" }, "sha512-y/5PCd+mP4CA/sPDKl2961b+C9d+vPAveS33s6Z3zfASk2j5upL6fXVPZi7ztePZ5CuH+1kW8JtvxgbuXHRa4Q=="],
114 |
115 | "@img/sharp-linux-x64": ["@img/sharp-linux-x64@0.33.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-x64": "1.0.4" }, "os": "linux", "cpu": "x64" }, "sha512-opC+Ok5pRNAzuvq1AG0ar+1owsu842/Ab+4qvU879ippJBHvyY5n2mxF1izXqkPYlGuP/M556uh53jRLJmzTWA=="],
116 |
117 | "@img/sharp-linuxmusl-arm64": ["@img/sharp-linuxmusl-arm64@0.33.5", "", { "optionalDependencies": { "@img/sharp-libvips-linuxmusl-arm64": "1.0.4" }, "os": "linux", "cpu": "arm64" }, "sha512-XrHMZwGQGvJg2V/oRSUfSAfjfPxO+4DkiRh6p2AFjLQztWUuY/o8Mq0eMQVIY7HJ1CDQUJlxGGZRw1a5bqmd1g=="],
118 |
119 | "@img/sharp-linuxmusl-x64": ["@img/sharp-linuxmusl-x64@0.33.5", "", { "optionalDependencies": { "@img/sharp-libvips-linuxmusl-x64": "1.0.4" }, "os": "linux", "cpu": "x64" }, "sha512-WT+d/cgqKkkKySYmqoZ8y3pxx7lx9vVejxW/W4DOFMYVSkErR+w7mf2u8m/y4+xHe7yY9DAXQMWQhpnMuFfScw=="],
120 |
121 | "@img/sharp-wasm32": ["@img/sharp-wasm32@0.33.5", "", { "dependencies": { "@emnapi/runtime": "^1.2.0" }, "cpu": "none" }, "sha512-ykUW4LVGaMcU9lu9thv85CbRMAwfeadCJHRsg2GmeRa/cJxsVY9Rbd57JcMxBkKHag5U/x7TSBpScF4U8ElVzg=="],
122 |
123 | "@img/sharp-win32-ia32": ["@img/sharp-win32-ia32@0.33.5", "", { "os": "win32", "cpu": "ia32" }, "sha512-T36PblLaTwuVJ/zw/LaH0PdZkRz5rd3SmMHX8GSmR7vtNSP5Z6bQkExdSK7xGWyxLw4sUknBuugTelgw2faBbQ=="],
124 |
125 | "@img/sharp-win32-x64": ["@img/sharp-win32-x64@0.33.5", "", { "os": "win32", "cpu": "x64" }, "sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg=="],
126 |
127 | "@jridgewell/resolve-uri": ["@jridgewell/resolve-uri@3.1.2", "", {}, "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw=="],
128 |
129 | "@jridgewell/sourcemap-codec": ["@jridgewell/sourcemap-codec@1.5.0", "", {}, "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ=="],
130 |
131 | "@jridgewell/trace-mapping": ["@jridgewell/trace-mapping@0.3.9", "", { "dependencies": { "@jridgewell/resolve-uri": "^3.0.3", "@jridgewell/sourcemap-codec": "^1.4.10" } }, "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ=="],
132 |
133 | "acorn": ["acorn@8.14.0", "", { "bin": "bin/acorn" }, "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA=="],
134 |
135 | "acorn-walk": ["acorn-walk@8.3.2", "", {}, "sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A=="],
136 |
137 | "as-table": ["as-table@1.0.55", "", { "dependencies": { "printable-characters": "^1.0.42" } }, "sha512-xvsWESUJn0JN421Xb9MQw6AsMHRCUknCe0Wjlxvjud80mU4E6hQf1A6NzQKcYNmYw62MfzEtXc+badstZP3JpQ=="],
138 |
139 | "blake3-wasm": ["blake3-wasm@2.1.5", "", {}, "sha512-F1+K8EbfOZE49dtoPtmxUQrpXaBIl3ICvasLh+nJta0xkz+9kF/7uet9fLnwKqhDrmj6g+6K3Tw9yQPUg2ka5g=="],
140 |
141 | "color": ["color@4.2.3", "", { "dependencies": { "color-convert": "^2.0.1", "color-string": "^1.9.0" } }, "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A=="],
142 |
143 | "color-convert": ["color-convert@2.0.1", "", { "dependencies": { "color-name": "~1.1.4" } }, "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ=="],
144 |
145 | "color-name": ["color-name@1.1.4", "", {}, "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="],
146 |
147 | "color-string": ["color-string@1.9.1", "", { "dependencies": { "color-name": "^1.0.0", "simple-swizzle": "^0.2.2" } }, "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg=="],
148 |
149 | "cookie": ["cookie@0.5.0", "", {}, "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw=="],
150 |
151 | "data-uri-to-buffer": ["data-uri-to-buffer@2.0.2", "", {}, "sha512-ND9qDTLc6diwj+Xe5cdAgVTbLVdXbtxTJRXRhli8Mowuaan+0EJOtdqJ0QCHNSSPyoXGx9HX2/VMnKeC34AChA=="],
152 |
153 | "defu": ["defu@6.1.4", "", {}, "sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg=="],
154 |
155 | "detect-libc": ["detect-libc@2.0.3", "", {}, "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw=="],
156 |
157 | "esbuild": ["esbuild@0.24.2", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.24.2", "@esbuild/android-arm": "0.24.2", "@esbuild/android-arm64": "0.24.2", "@esbuild/android-x64": "0.24.2", "@esbuild/darwin-arm64": "0.24.2", "@esbuild/darwin-x64": "0.24.2", "@esbuild/freebsd-arm64": "0.24.2", "@esbuild/freebsd-x64": "0.24.2", "@esbuild/linux-arm": "0.24.2", "@esbuild/linux-arm64": "0.24.2", "@esbuild/linux-ia32": "0.24.2", "@esbuild/linux-loong64": "0.24.2", "@esbuild/linux-mips64el": "0.24.2", "@esbuild/linux-ppc64": "0.24.2", "@esbuild/linux-riscv64": "0.24.2", "@esbuild/linux-s390x": "0.24.2", "@esbuild/linux-x64": "0.24.2", "@esbuild/netbsd-arm64": "0.24.2", "@esbuild/netbsd-x64": "0.24.2", "@esbuild/openbsd-arm64": "0.24.2", "@esbuild/openbsd-x64": "0.24.2", "@esbuild/sunos-x64": "0.24.2", "@esbuild/win32-arm64": "0.24.2", "@esbuild/win32-ia32": "0.24.2", "@esbuild/win32-x64": "0.24.2" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-+9egpBW8I3CD5XPe0n6BfT5fxLzxrlDzqydF3aviG+9ni1lDC/OvMHcxqEFV0+LANZG5R1bFMWfUrjVsdwxJvA=="],
158 |
159 | "exit-hook": ["exit-hook@2.2.1", "", {}, "sha512-eNTPlAD67BmP31LDINZ3U7HSF8l57TxOY2PmBJ1shpCvpnxBF93mWCE8YHBnXs8qiUZJc9WDcWIeC3a2HIAMfw=="],
160 |
161 | "exsolve": ["exsolve@1.0.4", "", {}, "sha512-xsZH6PXaER4XoV+NiT7JHp1bJodJVT+cxeSH1G0f0tlT0lJqYuHUP3bUx2HtfTDvOagMINYp8rsqusxud3RXhw=="],
162 |
163 | "fsevents": ["fsevents@2.3.3", "", { "os": "darwin" }, "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw=="],
164 |
165 | "get-source": ["get-source@2.0.12", "", { "dependencies": { "data-uri-to-buffer": "^2.0.0", "source-map": "^0.6.1" } }, "sha512-X5+4+iD+HoSeEED+uwrQ07BOQr0kEDFMVqqpBuI+RaZBpBpHCuXxo70bjar6f0b0u/DQJsJ7ssurpP0V60Az+w=="],
166 |
167 | "glob-to-regexp": ["glob-to-regexp@0.4.1", "", {}, "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw=="],
168 |
169 | "is-arrayish": ["is-arrayish@0.3.2", "", {}, "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ=="],
170 |
171 | "mime": ["mime@3.0.0", "", { "bin": "cli.js" }, "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A=="],
172 |
173 | "miniflare": ["miniflare@4.20250321.1", "", { "dependencies": { "@cspotcode/source-map-support": "0.8.1", "acorn": "8.14.0", "acorn-walk": "8.3.2", "exit-hook": "2.2.1", "glob-to-regexp": "0.4.1", "stoppable": "1.1.0", "undici": "^5.28.5", "workerd": "1.20250321.0", "ws": "8.18.0", "youch": "3.2.3", "zod": "3.22.3" }, "bin": { "miniflare": "bootstrap.js" } }, "sha512-pQuVtF6vQ1zMvPCo3Z19mzSFjgnlEnybzNzAJZipsqIk6kMXpYBZq+d8cWmeQFkBYlgeZKeKJ4EBKT6KapfTNg=="],
174 |
175 | "mustache": ["mustache@4.2.0", "", { "bin": "bin/mustache" }, "sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ=="],
176 |
177 | "ohash": ["ohash@2.0.11", "", {}, "sha512-RdR9FQrFwNBNXAr4GixM8YaRZRJ5PUWbKYbE5eOsrwAjJW0q2REGcf79oYPsLyskQCZG1PLN+S/K1V00joZAoQ=="],
178 |
179 | "path-to-regexp": ["path-to-regexp@6.3.0", "", {}, "sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ=="],
180 |
181 | "pathe": ["pathe@2.0.3", "", {}, "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w=="],
182 |
183 | "printable-characters": ["printable-characters@1.0.42", "", {}, "sha512-dKp+C4iXWK4vVYZmYSd0KBH5F/h1HoZRsbJ82AVKRO3PEo8L4lBS/vLwhVtpwwuYcoIsVY+1JYKR268yn480uQ=="],
184 |
185 | "semver": ["semver@7.7.1", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA=="],
186 |
187 | "sharp": ["sharp@0.33.5", "", { "dependencies": { "color": "^4.2.3", "detect-libc": "^2.0.3", "semver": "^7.6.3" }, "optionalDependencies": { "@img/sharp-darwin-arm64": "0.33.5", "@img/sharp-darwin-x64": "0.33.5", "@img/sharp-libvips-darwin-arm64": "1.0.4", "@img/sharp-libvips-darwin-x64": "1.0.4", "@img/sharp-libvips-linux-arm": "1.0.5", "@img/sharp-libvips-linux-arm64": "1.0.4", "@img/sharp-libvips-linux-s390x": "1.0.4", "@img/sharp-libvips-linux-x64": "1.0.4", "@img/sharp-libvips-linuxmusl-arm64": "1.0.4", "@img/sharp-libvips-linuxmusl-x64": "1.0.4", "@img/sharp-linux-arm": "0.33.5", "@img/sharp-linux-arm64": "0.33.5", "@img/sharp-linux-s390x": "0.33.5", "@img/sharp-linux-x64": "0.33.5", "@img/sharp-linuxmusl-arm64": "0.33.5", "@img/sharp-linuxmusl-x64": "0.33.5", "@img/sharp-wasm32": "0.33.5", "@img/sharp-win32-ia32": "0.33.5", "@img/sharp-win32-x64": "0.33.5" } }, "sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw=="],
188 |
189 | "simple-swizzle": ["simple-swizzle@0.2.2", "", { "dependencies": { "is-arrayish": "^0.3.1" } }, "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg=="],
190 |
191 | "source-map": ["source-map@0.6.1", "", {}, "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="],
192 |
193 | "stacktracey": ["stacktracey@2.1.8", "", { "dependencies": { "as-table": "^1.0.36", "get-source": "^2.0.12" } }, "sha512-Kpij9riA+UNg7TnphqjH7/CzctQ/owJGNbFkfEeve4Z4uxT5+JapVLFXcsurIfN34gnTWZNJ/f7NMG0E8JDzTw=="],
194 |
195 | "stoppable": ["stoppable@1.1.0", "", {}, "sha512-KXDYZ9dszj6bzvnEMRYvxgeTHU74QBFL54XKtP3nyMuJ81CFYtABZ3bAzL2EdFUaEwJOBOgENyFj3R7oTzDyyw=="],
196 |
197 | "tinybase": ["tinybase@6.0.0", "", { "peerDependencies": { "@automerge/automerge-repo": "^1.2.1", "@cloudflare/workers-types": "^4.20250327.0", "@electric-sql/pglite": "^0.2.17", "@libsql/client": "^0.15.1", "@powersync/common": "^1.26.0", "@sqlite.org/sqlite-wasm": "^3.49.1-build2", "@vlcn.io/crsqlite-wasm": "^0.16.0", "electric-sql": "^0.12.1", "expo": "^52.0.4", "expo-sqlite": "^15.1.3", "partykit": "^0.0.114", "partysocket": "^1.1.3", "postgres": "^3.4.5", "react": "^19.0.0", "react-dom": "^19.0.0", "sqlite3": "^5.1.7", "ws": "^8.18.1", "yjs": "^13.6.24" }, "optionalPeers": ["@automerge/automerge-repo", "@cloudflare/workers-types", "@electric-sql/pglite", "@libsql/client", "@powersync/common", "@sqlite.org/sqlite-wasm", "@vlcn.io/crsqlite-wasm", "electric-sql", "expo", "expo-sqlite", "partykit", "partysocket", "postgres", "react", "react-dom", "sqlite3", "ws", "yjs"] }, "sha512-wjIiS8iNPS/DNvFvlYEAOrZq7+tcAoFn5+xjW8ZUcCR11DafP1aJ3n1tDRTI9Nfq+Vz5Axj9kOmUTvuv2lyAVA=="],
198 |
199 | "tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="],
200 |
201 | "typescript": ["typescript@5.8.2", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ=="],
202 |
203 | "ufo": ["ufo@1.5.4", "", {}, "sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ=="],
204 |
205 | "undici": ["undici@5.29.0", "", { "dependencies": { "@fastify/busboy": "^2.0.0" } }, "sha512-raqeBD6NQK4SkWhQzeYKd1KmIG6dllBOTt55Rmkt4HtI9mwdWtJljnrXjAFUBLTSN67HWrOIZ3EPF4kjUw80Bg=="],
206 |
207 | "unenv": ["unenv@2.0.0-rc.15", "", { "dependencies": { "defu": "^6.1.4", "exsolve": "^1.0.4", "ohash": "^2.0.11", "pathe": "^2.0.3", "ufo": "^1.5.4" } }, "sha512-J/rEIZU8w6FOfLNz/hNKsnY+fFHWnu9MH4yRbSZF3xbbGHovcetXPs7sD+9p8L6CeNC//I9bhRYAOsBt2u7/OA=="],
208 |
209 | "workerd": ["workerd@1.20250321.0", "", { "optionalDependencies": { "@cloudflare/workerd-darwin-64": "1.20250321.0", "@cloudflare/workerd-darwin-arm64": "1.20250321.0", "@cloudflare/workerd-linux-64": "1.20250321.0", "@cloudflare/workerd-linux-arm64": "1.20250321.0", "@cloudflare/workerd-windows-64": "1.20250321.0" }, "bin": { "workerd": "bin/workerd" } }, "sha512-vyuz9pdJ+7o1lC79vQ2UVRLXPARa2Lq94PbTfqEcYQeSxeR9X+YqhNq2yysv8Zs5vpokmexLCtMniPp9u+2LVQ=="],
210 |
211 | "wrangler": ["wrangler@4.6.0", "", { "dependencies": { "@cloudflare/kv-asset-handler": "0.4.0", "@cloudflare/unenv-preset": "2.3.1", "blake3-wasm": "2.1.5", "esbuild": "0.24.2", "miniflare": "4.20250321.1", "path-to-regexp": "6.3.0", "unenv": "2.0.0-rc.15", "workerd": "1.20250321.0" }, "optionalDependencies": { "fsevents": "~2.3.2", "sharp": "^0.33.5" }, "peerDependencies": { "@cloudflare/workers-types": "^4.20250321.0" }, "optionalPeers": ["@cloudflare/workers-types"], "bin": { "wrangler": "bin/wrangler.js", "wrangler2": "bin/wrangler.js" } }, "sha512-2a2ZD0adlvxQ1H+nRKkuuD0dkgaYTOPlC7gBolItk5TfqOSliEV4m6DtZtKtJp33ioM+Uy6TlEWPpA2TrDveEQ=="],
212 |
213 | "ws": ["ws@8.18.0", "", { "peerDependencies": { "bufferutil": "^4.0.1", "utf-8-validate": ">=5.0.2" }, "optionalPeers": ["bufferutil", "utf-8-validate"] }, "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw=="],
214 |
215 | "youch": ["youch@3.2.3", "", { "dependencies": { "cookie": "^0.5.0", "mustache": "^4.2.0", "stacktracey": "^2.1.8" } }, "sha512-ZBcWz/uzZaQVdCvfV4uk616Bbpf2ee+F/AvuKDR5EwX/Y4v06xWdtMluqTD7+KlZdM93lLm9gMZYo0sKBS0pgw=="],
216 |
217 | "zod": ["zod@3.22.3", "", {}, "sha512-EjIevzuJRiRPbVH4mGc8nApb/lVLKVpmUhAaR5R5doKGfAnGJ6Gr3CViAVjP+4FWSxCsybeWQdcgCtbX+7oZug=="],
218 | }
219 | }
220 |
--------------------------------------------------------------------------------
/server/index.ts:
--------------------------------------------------------------------------------
1 | import {createMergeableStore, Id, IdAddedOrRemoved} from 'tinybase';
2 | import {createDurableObjectStoragePersister} from 'tinybase/persisters/persister-durable-object-storage';
3 | import {
4 | getWsServerDurableObjectFetch,
5 | WsServerDurableObject,
6 | } from 'tinybase/synchronizers/synchronizer-ws-server-durable-object';
7 |
8 | // Whether to persist data in the Durable Object between client sessions.
9 | //
10 | // If false, the Durable Object only provides synchronization between clients
11 | // (which are assumed to persist their own data).
12 | const PERSIST_TO_DURABLE_OBJECT = false;
13 |
14 | export class TinyBaseDurableObject extends WsServerDurableObject {
15 | onPathId(pathId: Id, addedOrRemoved: IdAddedOrRemoved) {
16 | console.info((addedOrRemoved ? 'Added' : 'Removed') + ` path ${pathId}`);
17 | }
18 |
19 | onClientId(pathId: Id, clientId: Id, addedOrRemoved: IdAddedOrRemoved) {
20 | console.info(
21 | (addedOrRemoved ? 'Added' : 'Removed') +
22 | ` client ${clientId} on path ${pathId}`,
23 | );
24 | }
25 |
26 | createPersister() {
27 | if (PERSIST_TO_DURABLE_OBJECT) {
28 | return createDurableObjectStoragePersister(
29 | createMergeableStore(),
30 | this.ctx.storage,
31 | );
32 | }
33 | }
34 | }
35 |
36 | export default {
37 | fetch: getWsServerDurableObjectFetch('TinyBaseDurableObjects'),
38 | };
39 |
--------------------------------------------------------------------------------
/server/package-lock.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "vite-tinybase-ts-react-sync-durable-object-server",
3 | "version": "1.0.0",
4 | "lockfileVersion": 3,
5 | "requires": true,
6 | "packages": {
7 | "": {
8 | "name": "vite-tinybase-ts-react-sync-durable-object-server",
9 | "version": "1.0.0",
10 | "license": "MIT",
11 | "dependencies": {
12 | "tinybase": "^5.4.0"
13 | },
14 | "devDependencies": {
15 | "@cloudflare/workers-types": "^4.20241018.0",
16 | "typescript": "^5.5.2",
17 | "wrangler": "^3.60.3"
18 | }
19 | },
20 | "node_modules/@cloudflare/kv-asset-handler": {
21 | "version": "0.3.4",
22 | "resolved": "https://registry.npmjs.org/@cloudflare/kv-asset-handler/-/kv-asset-handler-0.3.4.tgz",
23 | "integrity": "sha512-YLPHc8yASwjNkmcDMQMY35yiWjoKAKnhUbPRszBRS0YgH+IXtsMp61j+yTcnCE3oO2DgP0U3iejLC8FTtKDC8Q==",
24 | "dev": true,
25 | "license": "MIT OR Apache-2.0",
26 | "dependencies": {
27 | "mime": "^3.0.0"
28 | },
29 | "engines": {
30 | "node": ">=16.13"
31 | }
32 | },
33 | "node_modules/@cloudflare/workerd-darwin-64": {
34 | "version": "1.20241022.0",
35 | "resolved": "https://registry.npmjs.org/@cloudflare/workerd-darwin-64/-/workerd-darwin-64-1.20241022.0.tgz",
36 | "integrity": "sha512-1NNYun37myMTgCUiPQEJ0cMal4mKZVTpkD0b2tx9hV70xji+frVJcSK8YVLeUm1P+Rw1d/ct8DMgQuCpsz3Fsw==",
37 | "cpu": [
38 | "x64"
39 | ],
40 | "dev": true,
41 | "license": "Apache-2.0",
42 | "optional": true,
43 | "os": [
44 | "darwin"
45 | ],
46 | "engines": {
47 | "node": ">=16"
48 | }
49 | },
50 | "node_modules/@cloudflare/workerd-darwin-arm64": {
51 | "version": "1.20241022.0",
52 | "resolved": "https://registry.npmjs.org/@cloudflare/workerd-darwin-arm64/-/workerd-darwin-arm64-1.20241022.0.tgz",
53 | "integrity": "sha512-FOO/0P0U82EsTLTdweNVgw+4VOk5nghExLPLSppdOziq6IR5HVgP44Kmq5LdsUeHUhwUmfOh9hzaTpkNzUqKvw==",
54 | "cpu": [
55 | "arm64"
56 | ],
57 | "dev": true,
58 | "license": "Apache-2.0",
59 | "optional": true,
60 | "os": [
61 | "darwin"
62 | ],
63 | "engines": {
64 | "node": ">=16"
65 | }
66 | },
67 | "node_modules/@cloudflare/workerd-linux-64": {
68 | "version": "1.20241022.0",
69 | "resolved": "https://registry.npmjs.org/@cloudflare/workerd-linux-64/-/workerd-linux-64-1.20241022.0.tgz",
70 | "integrity": "sha512-RsNc19BQJG9yd+ngnjuDeG9ywZG+7t1L4JeglgceyY5ViMNMKVO7Zpbsu69kXslU9h6xyQG+lrmclg3cBpnhYA==",
71 | "cpu": [
72 | "x64"
73 | ],
74 | "dev": true,
75 | "license": "Apache-2.0",
76 | "optional": true,
77 | "os": [
78 | "linux"
79 | ],
80 | "engines": {
81 | "node": ">=16"
82 | }
83 | },
84 | "node_modules/@cloudflare/workerd-linux-arm64": {
85 | "version": "1.20241022.0",
86 | "resolved": "https://registry.npmjs.org/@cloudflare/workerd-linux-arm64/-/workerd-linux-arm64-1.20241022.0.tgz",
87 | "integrity": "sha512-x5mUXpKxfsosxcFmcq5DaqLs37PejHYVRsNz1cWI59ma7aC4y4Qn6Tf3i0r9MwQTF/MccP4SjVslMU6m4W7IaA==",
88 | "cpu": [
89 | "arm64"
90 | ],
91 | "dev": true,
92 | "license": "Apache-2.0",
93 | "optional": true,
94 | "os": [
95 | "linux"
96 | ],
97 | "engines": {
98 | "node": ">=16"
99 | }
100 | },
101 | "node_modules/@cloudflare/workerd-windows-64": {
102 | "version": "1.20241022.0",
103 | "resolved": "https://registry.npmjs.org/@cloudflare/workerd-windows-64/-/workerd-windows-64-1.20241022.0.tgz",
104 | "integrity": "sha512-eBCClx4szCOgKqOlxxbdNszMqQf3MRG1B9BRIqEM/diDfdR9IrZ8l3FaEm+l9gXgPmS6m1NBn40aWuGBl8UTSw==",
105 | "cpu": [
106 | "x64"
107 | ],
108 | "dev": true,
109 | "license": "Apache-2.0",
110 | "optional": true,
111 | "os": [
112 | "win32"
113 | ],
114 | "engines": {
115 | "node": ">=16"
116 | }
117 | },
118 | "node_modules/@cloudflare/workers-shared": {
119 | "version": "0.7.0",
120 | "resolved": "https://registry.npmjs.org/@cloudflare/workers-shared/-/workers-shared-0.7.0.tgz",
121 | "integrity": "sha512-LLQRTqx7lKC7o2eCYMpyc5FXV8d0pUX6r3A+agzhqS9aoR5A6zCPefwQGcvbKx83ozX22ATZcemwxQXn12UofQ==",
122 | "dev": true,
123 | "license": "MIT OR Apache-2.0",
124 | "dependencies": {
125 | "mime": "^3.0.0",
126 | "zod": "^3.22.3"
127 | },
128 | "engines": {
129 | "node": ">=16.7.0"
130 | }
131 | },
132 | "node_modules/@cloudflare/workers-types": {
133 | "version": "4.20241022.0",
134 | "resolved": "https://registry.npmjs.org/@cloudflare/workers-types/-/workers-types-4.20241022.0.tgz",
135 | "integrity": "sha512-1zOAw5QIDKItzGatzCrEpfLOB1AuMTwVqKmbw9B9eBfCUGRFNfJYMrJxIwcse9EmKahsQt2GruqU00pY/GyXgg==",
136 | "devOptional": true,
137 | "license": "MIT OR Apache-2.0"
138 | },
139 | "node_modules/@cspotcode/source-map-support": {
140 | "version": "0.8.1",
141 | "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz",
142 | "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==",
143 | "dev": true,
144 | "license": "MIT",
145 | "dependencies": {
146 | "@jridgewell/trace-mapping": "0.3.9"
147 | },
148 | "engines": {
149 | "node": ">=12"
150 | }
151 | },
152 | "node_modules/@esbuild-plugins/node-globals-polyfill": {
153 | "version": "0.2.3",
154 | "resolved": "https://registry.npmjs.org/@esbuild-plugins/node-globals-polyfill/-/node-globals-polyfill-0.2.3.tgz",
155 | "integrity": "sha512-r3MIryXDeXDOZh7ih1l/yE9ZLORCd5e8vWg02azWRGj5SPTuoh69A2AIyn0Z31V/kHBfZ4HgWJ+OK3GTTwLmnw==",
156 | "dev": true,
157 | "license": "ISC",
158 | "peerDependencies": {
159 | "esbuild": "*"
160 | }
161 | },
162 | "node_modules/@esbuild-plugins/node-modules-polyfill": {
163 | "version": "0.2.2",
164 | "resolved": "https://registry.npmjs.org/@esbuild-plugins/node-modules-polyfill/-/node-modules-polyfill-0.2.2.tgz",
165 | "integrity": "sha512-LXV7QsWJxRuMYvKbiznh+U1ilIop3g2TeKRzUxOG5X3YITc8JyyTa90BmLwqqv0YnX4v32CSlG+vsziZp9dMvA==",
166 | "dev": true,
167 | "license": "ISC",
168 | "dependencies": {
169 | "escape-string-regexp": "^4.0.0",
170 | "rollup-plugin-node-polyfills": "^0.2.1"
171 | },
172 | "peerDependencies": {
173 | "esbuild": "*"
174 | }
175 | },
176 | "node_modules/@esbuild/android-arm": {
177 | "version": "0.17.19",
178 | "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.17.19.tgz",
179 | "integrity": "sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==",
180 | "cpu": [
181 | "arm"
182 | ],
183 | "dev": true,
184 | "license": "MIT",
185 | "optional": true,
186 | "os": [
187 | "android"
188 | ],
189 | "engines": {
190 | "node": ">=12"
191 | }
192 | },
193 | "node_modules/@esbuild/android-arm64": {
194 | "version": "0.17.19",
195 | "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.17.19.tgz",
196 | "integrity": "sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==",
197 | "cpu": [
198 | "arm64"
199 | ],
200 | "dev": true,
201 | "license": "MIT",
202 | "optional": true,
203 | "os": [
204 | "android"
205 | ],
206 | "engines": {
207 | "node": ">=12"
208 | }
209 | },
210 | "node_modules/@esbuild/android-x64": {
211 | "version": "0.17.19",
212 | "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.17.19.tgz",
213 | "integrity": "sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww==",
214 | "cpu": [
215 | "x64"
216 | ],
217 | "dev": true,
218 | "license": "MIT",
219 | "optional": true,
220 | "os": [
221 | "android"
222 | ],
223 | "engines": {
224 | "node": ">=12"
225 | }
226 | },
227 | "node_modules/@esbuild/darwin-arm64": {
228 | "version": "0.17.19",
229 | "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.17.19.tgz",
230 | "integrity": "sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg==",
231 | "cpu": [
232 | "arm64"
233 | ],
234 | "dev": true,
235 | "license": "MIT",
236 | "optional": true,
237 | "os": [
238 | "darwin"
239 | ],
240 | "engines": {
241 | "node": ">=12"
242 | }
243 | },
244 | "node_modules/@esbuild/darwin-x64": {
245 | "version": "0.17.19",
246 | "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.17.19.tgz",
247 | "integrity": "sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw==",
248 | "cpu": [
249 | "x64"
250 | ],
251 | "dev": true,
252 | "license": "MIT",
253 | "optional": true,
254 | "os": [
255 | "darwin"
256 | ],
257 | "engines": {
258 | "node": ">=12"
259 | }
260 | },
261 | "node_modules/@esbuild/freebsd-arm64": {
262 | "version": "0.17.19",
263 | "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.19.tgz",
264 | "integrity": "sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ==",
265 | "cpu": [
266 | "arm64"
267 | ],
268 | "dev": true,
269 | "license": "MIT",
270 | "optional": true,
271 | "os": [
272 | "freebsd"
273 | ],
274 | "engines": {
275 | "node": ">=12"
276 | }
277 | },
278 | "node_modules/@esbuild/freebsd-x64": {
279 | "version": "0.17.19",
280 | "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.17.19.tgz",
281 | "integrity": "sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ==",
282 | "cpu": [
283 | "x64"
284 | ],
285 | "dev": true,
286 | "license": "MIT",
287 | "optional": true,
288 | "os": [
289 | "freebsd"
290 | ],
291 | "engines": {
292 | "node": ">=12"
293 | }
294 | },
295 | "node_modules/@esbuild/linux-arm": {
296 | "version": "0.17.19",
297 | "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.17.19.tgz",
298 | "integrity": "sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA==",
299 | "cpu": [
300 | "arm"
301 | ],
302 | "dev": true,
303 | "license": "MIT",
304 | "optional": true,
305 | "os": [
306 | "linux"
307 | ],
308 | "engines": {
309 | "node": ">=12"
310 | }
311 | },
312 | "node_modules/@esbuild/linux-arm64": {
313 | "version": "0.17.19",
314 | "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.17.19.tgz",
315 | "integrity": "sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg==",
316 | "cpu": [
317 | "arm64"
318 | ],
319 | "dev": true,
320 | "license": "MIT",
321 | "optional": true,
322 | "os": [
323 | "linux"
324 | ],
325 | "engines": {
326 | "node": ">=12"
327 | }
328 | },
329 | "node_modules/@esbuild/linux-ia32": {
330 | "version": "0.17.19",
331 | "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.17.19.tgz",
332 | "integrity": "sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ==",
333 | "cpu": [
334 | "ia32"
335 | ],
336 | "dev": true,
337 | "license": "MIT",
338 | "optional": true,
339 | "os": [
340 | "linux"
341 | ],
342 | "engines": {
343 | "node": ">=12"
344 | }
345 | },
346 | "node_modules/@esbuild/linux-loong64": {
347 | "version": "0.17.19",
348 | "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.17.19.tgz",
349 | "integrity": "sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ==",
350 | "cpu": [
351 | "loong64"
352 | ],
353 | "dev": true,
354 | "license": "MIT",
355 | "optional": true,
356 | "os": [
357 | "linux"
358 | ],
359 | "engines": {
360 | "node": ">=12"
361 | }
362 | },
363 | "node_modules/@esbuild/linux-mips64el": {
364 | "version": "0.17.19",
365 | "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.17.19.tgz",
366 | "integrity": "sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A==",
367 | "cpu": [
368 | "mips64el"
369 | ],
370 | "dev": true,
371 | "license": "MIT",
372 | "optional": true,
373 | "os": [
374 | "linux"
375 | ],
376 | "engines": {
377 | "node": ">=12"
378 | }
379 | },
380 | "node_modules/@esbuild/linux-ppc64": {
381 | "version": "0.17.19",
382 | "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.17.19.tgz",
383 | "integrity": "sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg==",
384 | "cpu": [
385 | "ppc64"
386 | ],
387 | "dev": true,
388 | "license": "MIT",
389 | "optional": true,
390 | "os": [
391 | "linux"
392 | ],
393 | "engines": {
394 | "node": ">=12"
395 | }
396 | },
397 | "node_modules/@esbuild/linux-riscv64": {
398 | "version": "0.17.19",
399 | "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.17.19.tgz",
400 | "integrity": "sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA==",
401 | "cpu": [
402 | "riscv64"
403 | ],
404 | "dev": true,
405 | "license": "MIT",
406 | "optional": true,
407 | "os": [
408 | "linux"
409 | ],
410 | "engines": {
411 | "node": ">=12"
412 | }
413 | },
414 | "node_modules/@esbuild/linux-s390x": {
415 | "version": "0.17.19",
416 | "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.17.19.tgz",
417 | "integrity": "sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q==",
418 | "cpu": [
419 | "s390x"
420 | ],
421 | "dev": true,
422 | "license": "MIT",
423 | "optional": true,
424 | "os": [
425 | "linux"
426 | ],
427 | "engines": {
428 | "node": ">=12"
429 | }
430 | },
431 | "node_modules/@esbuild/linux-x64": {
432 | "version": "0.17.19",
433 | "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.17.19.tgz",
434 | "integrity": "sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw==",
435 | "cpu": [
436 | "x64"
437 | ],
438 | "dev": true,
439 | "license": "MIT",
440 | "optional": true,
441 | "os": [
442 | "linux"
443 | ],
444 | "engines": {
445 | "node": ">=12"
446 | }
447 | },
448 | "node_modules/@esbuild/netbsd-x64": {
449 | "version": "0.17.19",
450 | "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.17.19.tgz",
451 | "integrity": "sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q==",
452 | "cpu": [
453 | "x64"
454 | ],
455 | "dev": true,
456 | "license": "MIT",
457 | "optional": true,
458 | "os": [
459 | "netbsd"
460 | ],
461 | "engines": {
462 | "node": ">=12"
463 | }
464 | },
465 | "node_modules/@esbuild/openbsd-x64": {
466 | "version": "0.17.19",
467 | "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.17.19.tgz",
468 | "integrity": "sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g==",
469 | "cpu": [
470 | "x64"
471 | ],
472 | "dev": true,
473 | "license": "MIT",
474 | "optional": true,
475 | "os": [
476 | "openbsd"
477 | ],
478 | "engines": {
479 | "node": ">=12"
480 | }
481 | },
482 | "node_modules/@esbuild/sunos-x64": {
483 | "version": "0.17.19",
484 | "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.17.19.tgz",
485 | "integrity": "sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg==",
486 | "cpu": [
487 | "x64"
488 | ],
489 | "dev": true,
490 | "license": "MIT",
491 | "optional": true,
492 | "os": [
493 | "sunos"
494 | ],
495 | "engines": {
496 | "node": ">=12"
497 | }
498 | },
499 | "node_modules/@esbuild/win32-arm64": {
500 | "version": "0.17.19",
501 | "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.17.19.tgz",
502 | "integrity": "sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag==",
503 | "cpu": [
504 | "arm64"
505 | ],
506 | "dev": true,
507 | "license": "MIT",
508 | "optional": true,
509 | "os": [
510 | "win32"
511 | ],
512 | "engines": {
513 | "node": ">=12"
514 | }
515 | },
516 | "node_modules/@esbuild/win32-ia32": {
517 | "version": "0.17.19",
518 | "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.17.19.tgz",
519 | "integrity": "sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw==",
520 | "cpu": [
521 | "ia32"
522 | ],
523 | "dev": true,
524 | "license": "MIT",
525 | "optional": true,
526 | "os": [
527 | "win32"
528 | ],
529 | "engines": {
530 | "node": ">=12"
531 | }
532 | },
533 | "node_modules/@esbuild/win32-x64": {
534 | "version": "0.17.19",
535 | "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.17.19.tgz",
536 | "integrity": "sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA==",
537 | "cpu": [
538 | "x64"
539 | ],
540 | "dev": true,
541 | "license": "MIT",
542 | "optional": true,
543 | "os": [
544 | "win32"
545 | ],
546 | "engines": {
547 | "node": ">=12"
548 | }
549 | },
550 | "node_modules/@fastify/busboy": {
551 | "version": "2.1.1",
552 | "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-2.1.1.tgz",
553 | "integrity": "sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==",
554 | "dev": true,
555 | "license": "MIT",
556 | "engines": {
557 | "node": ">=14"
558 | }
559 | },
560 | "node_modules/@jridgewell/resolve-uri": {
561 | "version": "3.1.2",
562 | "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz",
563 | "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==",
564 | "dev": true,
565 | "license": "MIT",
566 | "engines": {
567 | "node": ">=6.0.0"
568 | }
569 | },
570 | "node_modules/@jridgewell/sourcemap-codec": {
571 | "version": "1.5.0",
572 | "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz",
573 | "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==",
574 | "dev": true,
575 | "license": "MIT"
576 | },
577 | "node_modules/@jridgewell/trace-mapping": {
578 | "version": "0.3.9",
579 | "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz",
580 | "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==",
581 | "dev": true,
582 | "license": "MIT",
583 | "dependencies": {
584 | "@jridgewell/resolve-uri": "^3.0.3",
585 | "@jridgewell/sourcemap-codec": "^1.4.10"
586 | }
587 | },
588 | "node_modules/@types/node": {
589 | "version": "22.5.4",
590 | "dev": true,
591 | "license": "MIT",
592 | "dependencies": {
593 | "undici-types": "~6.19.2"
594 | }
595 | },
596 | "node_modules/@types/node-forge": {
597 | "version": "1.3.11",
598 | "resolved": "https://registry.npmjs.org/@types/node-forge/-/node-forge-1.3.11.tgz",
599 | "integrity": "sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==",
600 | "dev": true,
601 | "license": "MIT",
602 | "dependencies": {
603 | "@types/node": "*"
604 | }
605 | },
606 | "node_modules/acorn": {
607 | "version": "8.14.0",
608 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz",
609 | "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==",
610 | "dev": true,
611 | "license": "MIT",
612 | "bin": {
613 | "acorn": "bin/acorn"
614 | },
615 | "engines": {
616 | "node": ">=0.4.0"
617 | }
618 | },
619 | "node_modules/acorn-walk": {
620 | "version": "8.3.4",
621 | "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.4.tgz",
622 | "integrity": "sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==",
623 | "dev": true,
624 | "license": "MIT",
625 | "dependencies": {
626 | "acorn": "^8.11.0"
627 | },
628 | "engines": {
629 | "node": ">=0.4.0"
630 | }
631 | },
632 | "node_modules/anymatch": {
633 | "version": "3.1.3",
634 | "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz",
635 | "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==",
636 | "dev": true,
637 | "license": "ISC",
638 | "dependencies": {
639 | "normalize-path": "^3.0.0",
640 | "picomatch": "^2.0.4"
641 | },
642 | "engines": {
643 | "node": ">= 8"
644 | }
645 | },
646 | "node_modules/as-table": {
647 | "version": "1.0.55",
648 | "resolved": "https://registry.npmjs.org/as-table/-/as-table-1.0.55.tgz",
649 | "integrity": "sha512-xvsWESUJn0JN421Xb9MQw6AsMHRCUknCe0Wjlxvjud80mU4E6hQf1A6NzQKcYNmYw62MfzEtXc+badstZP3JpQ==",
650 | "dev": true,
651 | "license": "MIT",
652 | "dependencies": {
653 | "printable-characters": "^1.0.42"
654 | }
655 | },
656 | "node_modules/binary-extensions": {
657 | "version": "2.3.0",
658 | "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz",
659 | "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==",
660 | "dev": true,
661 | "license": "MIT",
662 | "engines": {
663 | "node": ">=8"
664 | },
665 | "funding": {
666 | "url": "https://github.com/sponsors/sindresorhus"
667 | }
668 | },
669 | "node_modules/blake3-wasm": {
670 | "version": "2.1.5",
671 | "resolved": "https://registry.npmjs.org/blake3-wasm/-/blake3-wasm-2.1.5.tgz",
672 | "integrity": "sha512-F1+K8EbfOZE49dtoPtmxUQrpXaBIl3ICvasLh+nJta0xkz+9kF/7uet9fLnwKqhDrmj6g+6K3Tw9yQPUg2ka5g==",
673 | "dev": true,
674 | "license": "MIT"
675 | },
676 | "node_modules/braces": {
677 | "version": "3.0.3",
678 | "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
679 | "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
680 | "dev": true,
681 | "license": "MIT",
682 | "dependencies": {
683 | "fill-range": "^7.1.1"
684 | },
685 | "engines": {
686 | "node": ">=8"
687 | }
688 | },
689 | "node_modules/capnp-ts": {
690 | "version": "0.7.0",
691 | "resolved": "https://registry.npmjs.org/capnp-ts/-/capnp-ts-0.7.0.tgz",
692 | "integrity": "sha512-XKxXAC3HVPv7r674zP0VC3RTXz+/JKhfyw94ljvF80yynK6VkTnqE3jMuN8b3dUVmmc43TjyxjW4KTsmB3c86g==",
693 | "dev": true,
694 | "license": "MIT",
695 | "dependencies": {
696 | "debug": "^4.3.1",
697 | "tslib": "^2.2.0"
698 | }
699 | },
700 | "node_modules/chokidar": {
701 | "version": "3.6.0",
702 | "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz",
703 | "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==",
704 | "dev": true,
705 | "license": "MIT",
706 | "dependencies": {
707 | "anymatch": "~3.1.2",
708 | "braces": "~3.0.2",
709 | "glob-parent": "~5.1.2",
710 | "is-binary-path": "~2.1.0",
711 | "is-glob": "~4.0.1",
712 | "normalize-path": "~3.0.0",
713 | "readdirp": "~3.6.0"
714 | },
715 | "engines": {
716 | "node": ">= 8.10.0"
717 | },
718 | "funding": {
719 | "url": "https://paulmillr.com/funding/"
720 | },
721 | "optionalDependencies": {
722 | "fsevents": "~2.3.2"
723 | }
724 | },
725 | "node_modules/cookie": {
726 | "version": "0.7.2",
727 | "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz",
728 | "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==",
729 | "dev": true,
730 | "license": "MIT",
731 | "engines": {
732 | "node": ">= 0.6"
733 | }
734 | },
735 | "node_modules/data-uri-to-buffer": {
736 | "version": "2.0.2",
737 | "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-2.0.2.tgz",
738 | "integrity": "sha512-ND9qDTLc6diwj+Xe5cdAgVTbLVdXbtxTJRXRhli8Mowuaan+0EJOtdqJ0QCHNSSPyoXGx9HX2/VMnKeC34AChA==",
739 | "dev": true,
740 | "license": "MIT"
741 | },
742 | "node_modules/date-fns": {
743 | "version": "4.1.0",
744 | "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-4.1.0.tgz",
745 | "integrity": "sha512-Ukq0owbQXxa/U3EGtsdVBkR1w7KOQ5gIBqdH2hkvknzZPYvBxb/aa6E8L7tmjFtkwZBu3UXBbjIgPo/Ez4xaNg==",
746 | "dev": true,
747 | "license": "MIT",
748 | "funding": {
749 | "type": "github",
750 | "url": "https://github.com/sponsors/kossnocorp"
751 | }
752 | },
753 | "node_modules/debug": {
754 | "version": "4.3.7",
755 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz",
756 | "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==",
757 | "dev": true,
758 | "license": "MIT",
759 | "dependencies": {
760 | "ms": "^2.1.3"
761 | },
762 | "engines": {
763 | "node": ">=6.0"
764 | },
765 | "peerDependenciesMeta": {
766 | "supports-color": {
767 | "optional": true
768 | }
769 | }
770 | },
771 | "node_modules/defu": {
772 | "version": "6.1.4",
773 | "resolved": "https://registry.npmjs.org/defu/-/defu-6.1.4.tgz",
774 | "integrity": "sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==",
775 | "dev": true,
776 | "license": "MIT"
777 | },
778 | "node_modules/esbuild": {
779 | "version": "0.17.19",
780 | "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.17.19.tgz",
781 | "integrity": "sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw==",
782 | "dev": true,
783 | "hasInstallScript": true,
784 | "license": "MIT",
785 | "bin": {
786 | "esbuild": "bin/esbuild"
787 | },
788 | "engines": {
789 | "node": ">=12"
790 | },
791 | "optionalDependencies": {
792 | "@esbuild/android-arm": "0.17.19",
793 | "@esbuild/android-arm64": "0.17.19",
794 | "@esbuild/android-x64": "0.17.19",
795 | "@esbuild/darwin-arm64": "0.17.19",
796 | "@esbuild/darwin-x64": "0.17.19",
797 | "@esbuild/freebsd-arm64": "0.17.19",
798 | "@esbuild/freebsd-x64": "0.17.19",
799 | "@esbuild/linux-arm": "0.17.19",
800 | "@esbuild/linux-arm64": "0.17.19",
801 | "@esbuild/linux-ia32": "0.17.19",
802 | "@esbuild/linux-loong64": "0.17.19",
803 | "@esbuild/linux-mips64el": "0.17.19",
804 | "@esbuild/linux-ppc64": "0.17.19",
805 | "@esbuild/linux-riscv64": "0.17.19",
806 | "@esbuild/linux-s390x": "0.17.19",
807 | "@esbuild/linux-x64": "0.17.19",
808 | "@esbuild/netbsd-x64": "0.17.19",
809 | "@esbuild/openbsd-x64": "0.17.19",
810 | "@esbuild/sunos-x64": "0.17.19",
811 | "@esbuild/win32-arm64": "0.17.19",
812 | "@esbuild/win32-ia32": "0.17.19",
813 | "@esbuild/win32-x64": "0.17.19"
814 | }
815 | },
816 | "node_modules/escape-string-regexp": {
817 | "version": "4.0.0",
818 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
819 | "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
820 | "dev": true,
821 | "license": "MIT",
822 | "engines": {
823 | "node": ">=10"
824 | },
825 | "funding": {
826 | "url": "https://github.com/sponsors/sindresorhus"
827 | }
828 | },
829 | "node_modules/estree-walker": {
830 | "version": "0.6.1",
831 | "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz",
832 | "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==",
833 | "dev": true,
834 | "license": "MIT"
835 | },
836 | "node_modules/exit-hook": {
837 | "version": "2.2.1",
838 | "resolved": "https://registry.npmjs.org/exit-hook/-/exit-hook-2.2.1.tgz",
839 | "integrity": "sha512-eNTPlAD67BmP31LDINZ3U7HSF8l57TxOY2PmBJ1shpCvpnxBF93mWCE8YHBnXs8qiUZJc9WDcWIeC3a2HIAMfw==",
840 | "dev": true,
841 | "license": "MIT",
842 | "engines": {
843 | "node": ">=6"
844 | },
845 | "funding": {
846 | "url": "https://github.com/sponsors/sindresorhus"
847 | }
848 | },
849 | "node_modules/fill-range": {
850 | "version": "7.1.1",
851 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
852 | "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
853 | "dev": true,
854 | "license": "MIT",
855 | "dependencies": {
856 | "to-regex-range": "^5.0.1"
857 | },
858 | "engines": {
859 | "node": ">=8"
860 | }
861 | },
862 | "node_modules/fsevents": {
863 | "version": "2.3.3",
864 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
865 | "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
866 | "dev": true,
867 | "hasInstallScript": true,
868 | "license": "MIT",
869 | "optional": true,
870 | "os": [
871 | "darwin"
872 | ],
873 | "engines": {
874 | "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
875 | }
876 | },
877 | "node_modules/function-bind": {
878 | "version": "1.1.2",
879 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
880 | "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
881 | "dev": true,
882 | "license": "MIT",
883 | "funding": {
884 | "url": "https://github.com/sponsors/ljharb"
885 | }
886 | },
887 | "node_modules/get-source": {
888 | "version": "2.0.12",
889 | "resolved": "https://registry.npmjs.org/get-source/-/get-source-2.0.12.tgz",
890 | "integrity": "sha512-X5+4+iD+HoSeEED+uwrQ07BOQr0kEDFMVqqpBuI+RaZBpBpHCuXxo70bjar6f0b0u/DQJsJ7ssurpP0V60Az+w==",
891 | "dev": true,
892 | "license": "Unlicense",
893 | "dependencies": {
894 | "data-uri-to-buffer": "^2.0.0",
895 | "source-map": "^0.6.1"
896 | }
897 | },
898 | "node_modules/glob-parent": {
899 | "version": "5.1.2",
900 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
901 | "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
902 | "dev": true,
903 | "license": "ISC",
904 | "dependencies": {
905 | "is-glob": "^4.0.1"
906 | },
907 | "engines": {
908 | "node": ">= 6"
909 | }
910 | },
911 | "node_modules/glob-to-regexp": {
912 | "version": "0.4.1",
913 | "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz",
914 | "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==",
915 | "dev": true,
916 | "license": "BSD-2-Clause"
917 | },
918 | "node_modules/hasown": {
919 | "version": "2.0.2",
920 | "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
921 | "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
922 | "dev": true,
923 | "license": "MIT",
924 | "dependencies": {
925 | "function-bind": "^1.1.2"
926 | },
927 | "engines": {
928 | "node": ">= 0.4"
929 | }
930 | },
931 | "node_modules/is-binary-path": {
932 | "version": "2.1.0",
933 | "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
934 | "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
935 | "dev": true,
936 | "license": "MIT",
937 | "dependencies": {
938 | "binary-extensions": "^2.0.0"
939 | },
940 | "engines": {
941 | "node": ">=8"
942 | }
943 | },
944 | "node_modules/is-core-module": {
945 | "version": "2.15.1",
946 | "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.1.tgz",
947 | "integrity": "sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==",
948 | "dev": true,
949 | "license": "MIT",
950 | "dependencies": {
951 | "hasown": "^2.0.2"
952 | },
953 | "engines": {
954 | "node": ">= 0.4"
955 | },
956 | "funding": {
957 | "url": "https://github.com/sponsors/ljharb"
958 | }
959 | },
960 | "node_modules/is-extglob": {
961 | "version": "2.1.1",
962 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
963 | "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
964 | "dev": true,
965 | "license": "MIT",
966 | "engines": {
967 | "node": ">=0.10.0"
968 | }
969 | },
970 | "node_modules/is-glob": {
971 | "version": "4.0.3",
972 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
973 | "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
974 | "dev": true,
975 | "license": "MIT",
976 | "dependencies": {
977 | "is-extglob": "^2.1.1"
978 | },
979 | "engines": {
980 | "node": ">=0.10.0"
981 | }
982 | },
983 | "node_modules/is-number": {
984 | "version": "7.0.0",
985 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
986 | "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
987 | "dev": true,
988 | "license": "MIT",
989 | "engines": {
990 | "node": ">=0.12.0"
991 | }
992 | },
993 | "node_modules/itty-time": {
994 | "version": "1.0.6",
995 | "resolved": "https://registry.npmjs.org/itty-time/-/itty-time-1.0.6.tgz",
996 | "integrity": "sha512-+P8IZaLLBtFv8hCkIjcymZOp4UJ+xW6bSlQsXGqrkmJh7vSiMFSlNne0mCYagEE0N7HDNR5jJBRxwN0oYv61Rw==",
997 | "dev": true,
998 | "license": "MIT"
999 | },
1000 | "node_modules/magic-string": {
1001 | "version": "0.25.9",
1002 | "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz",
1003 | "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==",
1004 | "dev": true,
1005 | "license": "MIT",
1006 | "dependencies": {
1007 | "sourcemap-codec": "^1.4.8"
1008 | }
1009 | },
1010 | "node_modules/mime": {
1011 | "version": "3.0.0",
1012 | "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz",
1013 | "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==",
1014 | "dev": true,
1015 | "license": "MIT",
1016 | "bin": {
1017 | "mime": "cli.js"
1018 | },
1019 | "engines": {
1020 | "node": ">=10.0.0"
1021 | }
1022 | },
1023 | "node_modules/miniflare": {
1024 | "version": "3.20241022.0",
1025 | "resolved": "https://registry.npmjs.org/miniflare/-/miniflare-3.20241022.0.tgz",
1026 | "integrity": "sha512-x9Fbq1Hmz1f0osIT9Qmj78iX4UpCP2EqlZnA/tzj/3+I49vc3Kq0fNqSSKplcdf6HlCHdL3fOBicmreQF4BUUQ==",
1027 | "dev": true,
1028 | "license": "MIT",
1029 | "dependencies": {
1030 | "@cspotcode/source-map-support": "0.8.1",
1031 | "acorn": "^8.8.0",
1032 | "acorn-walk": "^8.2.0",
1033 | "capnp-ts": "^0.7.0",
1034 | "exit-hook": "^2.2.1",
1035 | "glob-to-regexp": "^0.4.1",
1036 | "stoppable": "^1.1.0",
1037 | "undici": "^5.28.4",
1038 | "workerd": "1.20241022.0",
1039 | "ws": "^8.17.1",
1040 | "youch": "^3.2.2",
1041 | "zod": "^3.22.3"
1042 | },
1043 | "bin": {
1044 | "miniflare": "bootstrap.js"
1045 | },
1046 | "engines": {
1047 | "node": ">=16.13"
1048 | }
1049 | },
1050 | "node_modules/ms": {
1051 | "version": "2.1.3",
1052 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
1053 | "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
1054 | "dev": true,
1055 | "license": "MIT"
1056 | },
1057 | "node_modules/mustache": {
1058 | "version": "4.2.0",
1059 | "resolved": "https://registry.npmjs.org/mustache/-/mustache-4.2.0.tgz",
1060 | "integrity": "sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ==",
1061 | "dev": true,
1062 | "license": "MIT",
1063 | "bin": {
1064 | "mustache": "bin/mustache"
1065 | }
1066 | },
1067 | "node_modules/nanoid": {
1068 | "version": "3.3.7",
1069 | "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz",
1070 | "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==",
1071 | "dev": true,
1072 | "funding": [
1073 | {
1074 | "type": "github",
1075 | "url": "https://github.com/sponsors/ai"
1076 | }
1077 | ],
1078 | "license": "MIT",
1079 | "bin": {
1080 | "nanoid": "bin/nanoid.cjs"
1081 | },
1082 | "engines": {
1083 | "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
1084 | }
1085 | },
1086 | "node_modules/node-forge": {
1087 | "version": "1.3.1",
1088 | "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz",
1089 | "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==",
1090 | "dev": true,
1091 | "license": "(BSD-3-Clause OR GPL-2.0)",
1092 | "engines": {
1093 | "node": ">= 6.13.0"
1094 | }
1095 | },
1096 | "node_modules/normalize-path": {
1097 | "version": "3.0.0",
1098 | "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
1099 | "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
1100 | "dev": true,
1101 | "license": "MIT",
1102 | "engines": {
1103 | "node": ">=0.10.0"
1104 | }
1105 | },
1106 | "node_modules/ohash": {
1107 | "version": "1.1.4",
1108 | "resolved": "https://registry.npmjs.org/ohash/-/ohash-1.1.4.tgz",
1109 | "integrity": "sha512-FlDryZAahJmEF3VR3w1KogSEdWX3WhA5GPakFx4J81kEAiHyLMpdLLElS8n8dfNadMgAne/MywcvmogzscVt4g==",
1110 | "dev": true,
1111 | "license": "MIT"
1112 | },
1113 | "node_modules/path-parse": {
1114 | "version": "1.0.7",
1115 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
1116 | "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
1117 | "dev": true,
1118 | "license": "MIT"
1119 | },
1120 | "node_modules/path-to-regexp": {
1121 | "version": "6.3.0",
1122 | "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.3.0.tgz",
1123 | "integrity": "sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==",
1124 | "dev": true,
1125 | "license": "MIT"
1126 | },
1127 | "node_modules/pathe": {
1128 | "version": "1.1.2",
1129 | "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.2.tgz",
1130 | "integrity": "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==",
1131 | "dev": true,
1132 | "license": "MIT"
1133 | },
1134 | "node_modules/picomatch": {
1135 | "version": "2.3.1",
1136 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
1137 | "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
1138 | "dev": true,
1139 | "license": "MIT",
1140 | "engines": {
1141 | "node": ">=8.6"
1142 | },
1143 | "funding": {
1144 | "url": "https://github.com/sponsors/jonschlinkert"
1145 | }
1146 | },
1147 | "node_modules/printable-characters": {
1148 | "version": "1.0.42",
1149 | "resolved": "https://registry.npmjs.org/printable-characters/-/printable-characters-1.0.42.tgz",
1150 | "integrity": "sha512-dKp+C4iXWK4vVYZmYSd0KBH5F/h1HoZRsbJ82AVKRO3PEo8L4lBS/vLwhVtpwwuYcoIsVY+1JYKR268yn480uQ==",
1151 | "dev": true,
1152 | "license": "Unlicense"
1153 | },
1154 | "node_modules/readdirp": {
1155 | "version": "3.6.0",
1156 | "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
1157 | "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
1158 | "dev": true,
1159 | "license": "MIT",
1160 | "dependencies": {
1161 | "picomatch": "^2.2.1"
1162 | },
1163 | "engines": {
1164 | "node": ">=8.10.0"
1165 | }
1166 | },
1167 | "node_modules/resolve": {
1168 | "version": "1.22.8",
1169 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz",
1170 | "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==",
1171 | "dev": true,
1172 | "license": "MIT",
1173 | "dependencies": {
1174 | "is-core-module": "^2.13.0",
1175 | "path-parse": "^1.0.7",
1176 | "supports-preserve-symlinks-flag": "^1.0.0"
1177 | },
1178 | "bin": {
1179 | "resolve": "bin/resolve"
1180 | },
1181 | "funding": {
1182 | "url": "https://github.com/sponsors/ljharb"
1183 | }
1184 | },
1185 | "node_modules/resolve.exports": {
1186 | "version": "2.0.2",
1187 | "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz",
1188 | "integrity": "sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==",
1189 | "dev": true,
1190 | "license": "MIT",
1191 | "engines": {
1192 | "node": ">=10"
1193 | }
1194 | },
1195 | "node_modules/rollup-plugin-inject": {
1196 | "version": "3.0.2",
1197 | "resolved": "https://registry.npmjs.org/rollup-plugin-inject/-/rollup-plugin-inject-3.0.2.tgz",
1198 | "integrity": "sha512-ptg9PQwzs3orn4jkgXJ74bfs5vYz1NCZlSQMBUA0wKcGp5i5pA1AO3fOUEte8enhGUC+iapTCzEWw2jEFFUO/w==",
1199 | "deprecated": "This package has been deprecated and is no longer maintained. Please use @rollup/plugin-inject.",
1200 | "dev": true,
1201 | "license": "MIT",
1202 | "dependencies": {
1203 | "estree-walker": "^0.6.1",
1204 | "magic-string": "^0.25.3",
1205 | "rollup-pluginutils": "^2.8.1"
1206 | }
1207 | },
1208 | "node_modules/rollup-plugin-node-polyfills": {
1209 | "version": "0.2.1",
1210 | "resolved": "https://registry.npmjs.org/rollup-plugin-node-polyfills/-/rollup-plugin-node-polyfills-0.2.1.tgz",
1211 | "integrity": "sha512-4kCrKPTJ6sK4/gLL/U5QzVT8cxJcofO0OU74tnB19F40cmuAKSzH5/siithxlofFEjwvw1YAhPmbvGNA6jEroA==",
1212 | "dev": true,
1213 | "license": "MIT",
1214 | "dependencies": {
1215 | "rollup-plugin-inject": "^3.0.0"
1216 | }
1217 | },
1218 | "node_modules/rollup-pluginutils": {
1219 | "version": "2.8.2",
1220 | "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz",
1221 | "integrity": "sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==",
1222 | "dev": true,
1223 | "license": "MIT",
1224 | "dependencies": {
1225 | "estree-walker": "^0.6.1"
1226 | }
1227 | },
1228 | "node_modules/selfsigned": {
1229 | "version": "2.4.1",
1230 | "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.4.1.tgz",
1231 | "integrity": "sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==",
1232 | "dev": true,
1233 | "license": "MIT",
1234 | "dependencies": {
1235 | "@types/node-forge": "^1.3.0",
1236 | "node-forge": "^1"
1237 | },
1238 | "engines": {
1239 | "node": ">=10"
1240 | }
1241 | },
1242 | "node_modules/source-map": {
1243 | "version": "0.6.1",
1244 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
1245 | "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
1246 | "dev": true,
1247 | "license": "BSD-3-Clause",
1248 | "engines": {
1249 | "node": ">=0.10.0"
1250 | }
1251 | },
1252 | "node_modules/sourcemap-codec": {
1253 | "version": "1.4.8",
1254 | "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz",
1255 | "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==",
1256 | "deprecated": "Please use @jridgewell/sourcemap-codec instead",
1257 | "dev": true,
1258 | "license": "MIT"
1259 | },
1260 | "node_modules/stacktracey": {
1261 | "version": "2.1.8",
1262 | "resolved": "https://registry.npmjs.org/stacktracey/-/stacktracey-2.1.8.tgz",
1263 | "integrity": "sha512-Kpij9riA+UNg7TnphqjH7/CzctQ/owJGNbFkfEeve4Z4uxT5+JapVLFXcsurIfN34gnTWZNJ/f7NMG0E8JDzTw==",
1264 | "dev": true,
1265 | "license": "Unlicense",
1266 | "dependencies": {
1267 | "as-table": "^1.0.36",
1268 | "get-source": "^2.0.12"
1269 | }
1270 | },
1271 | "node_modules/stoppable": {
1272 | "version": "1.1.0",
1273 | "resolved": "https://registry.npmjs.org/stoppable/-/stoppable-1.1.0.tgz",
1274 | "integrity": "sha512-KXDYZ9dszj6bzvnEMRYvxgeTHU74QBFL54XKtP3nyMuJ81CFYtABZ3bAzL2EdFUaEwJOBOgENyFj3R7oTzDyyw==",
1275 | "dev": true,
1276 | "license": "MIT",
1277 | "engines": {
1278 | "node": ">=4",
1279 | "npm": ">=6"
1280 | }
1281 | },
1282 | "node_modules/supports-preserve-symlinks-flag": {
1283 | "version": "1.0.0",
1284 | "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
1285 | "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
1286 | "dev": true,
1287 | "license": "MIT",
1288 | "engines": {
1289 | "node": ">= 0.4"
1290 | },
1291 | "funding": {
1292 | "url": "https://github.com/sponsors/ljharb"
1293 | }
1294 | },
1295 | "node_modules/tinybase": {
1296 | "version": "5.4.0",
1297 | "resolved": "https://registry.npmjs.org/tinybase/-/tinybase-5.4.0.tgz",
1298 | "integrity": "sha512-TxvStIL6kOQypm467wDWNDMFkcq0akKkwt/mkDfJYIdC6qYE3PD9C9WretS1guqbNQdP9aCuYm6/LuPyF0PiPg==",
1299 | "license": "MIT",
1300 | "bin": {
1301 | "tinybase": "cli/index.js"
1302 | },
1303 | "peerDependencies": {
1304 | "@automerge/automerge-repo": "^1.2.1",
1305 | "@cloudflare/workers-types": "^4.20241022.0",
1306 | "@electric-sql/pglite": "^0.2.13",
1307 | "@libsql/client": "^0.14.0",
1308 | "@powersync/common": "^1.21.0",
1309 | "@sqlite.org/sqlite-wasm": "^3.47.0-build1",
1310 | "@vlcn.io/crsqlite-wasm": "^0.16.0",
1311 | "electric-sql": "^0.12.1",
1312 | "expo": "^52.0.4",
1313 | "expo-sqlite": "^15.0.3",
1314 | "partykit": "^0.0.111",
1315 | "partysocket": "^1.0.2",
1316 | "postgres": "^3.4.5",
1317 | "prettier": "^3.3.3",
1318 | "react": "^18.2.0",
1319 | "react-dom": "^18.2.0",
1320 | "sqlite3": "^5.1.7",
1321 | "ws": "^8.18.0",
1322 | "yjs": "^13.6.20"
1323 | },
1324 | "peerDependenciesMeta": {
1325 | "@automerge/automerge-repo": {
1326 | "optional": true
1327 | },
1328 | "@cloudflare/workers-types": {
1329 | "optional": true
1330 | },
1331 | "@electric-sql/pglite": {
1332 | "optional": true
1333 | },
1334 | "@libsql/client": {
1335 | "optional": true
1336 | },
1337 | "@powersync/common": {
1338 | "optional": true
1339 | },
1340 | "@sqlite.org/sqlite-wasm": {
1341 | "optional": true
1342 | },
1343 | "@vlcn.io/crsqlite-wasm": {
1344 | "optional": true
1345 | },
1346 | "electric-sql": {
1347 | "optional": true
1348 | },
1349 | "expo": {
1350 | "optional": true
1351 | },
1352 | "expo-sqlite": {
1353 | "optional": true
1354 | },
1355 | "partykit": {
1356 | "optional": true
1357 | },
1358 | "partysocket": {
1359 | "optional": true
1360 | },
1361 | "postgres": {
1362 | "optional": true
1363 | },
1364 | "prettier": {
1365 | "optional": true
1366 | },
1367 | "react": {
1368 | "optional": true
1369 | },
1370 | "react-dom": {
1371 | "optional": true
1372 | },
1373 | "sqlite3": {
1374 | "optional": true
1375 | },
1376 | "ws": {
1377 | "optional": true
1378 | },
1379 | "yjs": {
1380 | "optional": true
1381 | }
1382 | }
1383 | },
1384 | "node_modules/to-regex-range": {
1385 | "version": "5.0.1",
1386 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
1387 | "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
1388 | "dev": true,
1389 | "license": "MIT",
1390 | "dependencies": {
1391 | "is-number": "^7.0.0"
1392 | },
1393 | "engines": {
1394 | "node": ">=8.0"
1395 | }
1396 | },
1397 | "node_modules/tslib": {
1398 | "version": "2.8.1",
1399 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz",
1400 | "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==",
1401 | "dev": true,
1402 | "license": "0BSD"
1403 | },
1404 | "node_modules/typescript": {
1405 | "version": "5.6.3",
1406 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.6.3.tgz",
1407 | "integrity": "sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==",
1408 | "dev": true,
1409 | "license": "Apache-2.0",
1410 | "bin": {
1411 | "tsc": "bin/tsc",
1412 | "tsserver": "bin/tsserver"
1413 | },
1414 | "engines": {
1415 | "node": ">=14.17"
1416 | }
1417 | },
1418 | "node_modules/ufo": {
1419 | "version": "1.5.4",
1420 | "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.5.4.tgz",
1421 | "integrity": "sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==",
1422 | "dev": true,
1423 | "license": "MIT"
1424 | },
1425 | "node_modules/undici": {
1426 | "version": "5.28.4",
1427 | "resolved": "https://registry.npmjs.org/undici/-/undici-5.28.4.tgz",
1428 | "integrity": "sha512-72RFADWFqKmUb2hmmvNODKL3p9hcB6Gt2DOQMis1SEBaV6a4MH8soBvzg+95CYhCKPFedut2JY9bMfrDl9D23g==",
1429 | "dev": true,
1430 | "license": "MIT",
1431 | "dependencies": {
1432 | "@fastify/busboy": "^2.0.0"
1433 | },
1434 | "engines": {
1435 | "node": ">=14.0"
1436 | }
1437 | },
1438 | "node_modules/undici-types": {
1439 | "version": "6.19.8",
1440 | "dev": true,
1441 | "license": "MIT"
1442 | },
1443 | "node_modules/unenv": {
1444 | "name": "unenv-nightly",
1445 | "version": "2.0.0-20241024-111401-d4156ac",
1446 | "resolved": "https://registry.npmjs.org/unenv-nightly/-/unenv-nightly-2.0.0-20241024-111401-d4156ac.tgz",
1447 | "integrity": "sha512-xJO1hfY+Te+/XnfCYrCbFbRcgu6XEODND1s5wnVbaBCkuQX7JXF7fHEXPrukFE2j8EOH848P8QN19VO47XN8hw==",
1448 | "dev": true,
1449 | "license": "MIT",
1450 | "dependencies": {
1451 | "defu": "^6.1.4",
1452 | "ohash": "^1.1.4",
1453 | "pathe": "^1.1.2",
1454 | "ufo": "^1.5.4"
1455 | }
1456 | },
1457 | "node_modules/workerd": {
1458 | "version": "1.20241022.0",
1459 | "resolved": "https://registry.npmjs.org/workerd/-/workerd-1.20241022.0.tgz",
1460 | "integrity": "sha512-jyGXsgO9DRcJyx6Ovv7gUyDPc3UYC2i/E0p9GFUg6GUzpldw4Y93y9kOmdfsOnKZ3+lY53veSiUniiBPE6Q2NQ==",
1461 | "dev": true,
1462 | "hasInstallScript": true,
1463 | "license": "Apache-2.0",
1464 | "bin": {
1465 | "workerd": "bin/workerd"
1466 | },
1467 | "engines": {
1468 | "node": ">=16"
1469 | },
1470 | "optionalDependencies": {
1471 | "@cloudflare/workerd-darwin-64": "1.20241022.0",
1472 | "@cloudflare/workerd-darwin-arm64": "1.20241022.0",
1473 | "@cloudflare/workerd-linux-64": "1.20241022.0",
1474 | "@cloudflare/workerd-linux-arm64": "1.20241022.0",
1475 | "@cloudflare/workerd-windows-64": "1.20241022.0"
1476 | }
1477 | },
1478 | "node_modules/wrangler": {
1479 | "version": "3.84.1",
1480 | "resolved": "https://registry.npmjs.org/wrangler/-/wrangler-3.84.1.tgz",
1481 | "integrity": "sha512-w27/QpIk2qz6aMIVi9T8cDcXMvh/RXjcL+vf4o5J2GpQAE4U7wTCNHyaY9H3oTJWRN97KqCAEbiHBNtTKoUJEw==",
1482 | "dev": true,
1483 | "license": "MIT OR Apache-2.0",
1484 | "dependencies": {
1485 | "@cloudflare/kv-asset-handler": "0.3.4",
1486 | "@cloudflare/workers-shared": "0.7.0",
1487 | "@esbuild-plugins/node-globals-polyfill": "^0.2.3",
1488 | "@esbuild-plugins/node-modules-polyfill": "^0.2.2",
1489 | "blake3-wasm": "^2.1.5",
1490 | "chokidar": "^3.5.3",
1491 | "date-fns": "^4.1.0",
1492 | "esbuild": "0.17.19",
1493 | "itty-time": "^1.0.6",
1494 | "miniflare": "3.20241022.0",
1495 | "nanoid": "^3.3.3",
1496 | "path-to-regexp": "^6.3.0",
1497 | "resolve": "^1.22.8",
1498 | "resolve.exports": "^2.0.2",
1499 | "selfsigned": "^2.0.1",
1500 | "source-map": "^0.6.1",
1501 | "unenv": "npm:unenv-nightly@2.0.0-20241024-111401-d4156ac",
1502 | "workerd": "1.20241022.0",
1503 | "xxhash-wasm": "^1.0.1"
1504 | },
1505 | "bin": {
1506 | "wrangler": "bin/wrangler.js",
1507 | "wrangler2": "bin/wrangler.js"
1508 | },
1509 | "engines": {
1510 | "node": ">=16.17.0"
1511 | },
1512 | "optionalDependencies": {
1513 | "fsevents": "~2.3.2"
1514 | },
1515 | "peerDependencies": {
1516 | "@cloudflare/workers-types": "^4.20241022.0"
1517 | },
1518 | "peerDependenciesMeta": {
1519 | "@cloudflare/workers-types": {
1520 | "optional": true
1521 | }
1522 | }
1523 | },
1524 | "node_modules/ws": {
1525 | "version": "8.18.0",
1526 | "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz",
1527 | "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==",
1528 | "devOptional": true,
1529 | "license": "MIT",
1530 | "engines": {
1531 | "node": ">=10.0.0"
1532 | },
1533 | "peerDependencies": {
1534 | "bufferutil": "^4.0.1",
1535 | "utf-8-validate": ">=5.0.2"
1536 | },
1537 | "peerDependenciesMeta": {
1538 | "bufferutil": {
1539 | "optional": true
1540 | },
1541 | "utf-8-validate": {
1542 | "optional": true
1543 | }
1544 | }
1545 | },
1546 | "node_modules/xxhash-wasm": {
1547 | "version": "1.0.2",
1548 | "resolved": "https://registry.npmjs.org/xxhash-wasm/-/xxhash-wasm-1.0.2.tgz",
1549 | "integrity": "sha512-ibF0Or+FivM9lNrg+HGJfVX8WJqgo+kCLDc4vx6xMeTce7Aj+DLttKbxxRR/gNLSAelRc1omAPlJ77N/Jem07A==",
1550 | "dev": true,
1551 | "license": "MIT"
1552 | },
1553 | "node_modules/youch": {
1554 | "version": "3.3.4",
1555 | "resolved": "https://registry.npmjs.org/youch/-/youch-3.3.4.tgz",
1556 | "integrity": "sha512-UeVBXie8cA35DS6+nBkls68xaBBXCye0CNznrhszZjTbRVnJKQuNsyLKBTTL4ln1o1rh2PKtv35twV7irj5SEg==",
1557 | "dev": true,
1558 | "license": "MIT",
1559 | "dependencies": {
1560 | "cookie": "^0.7.1",
1561 | "mustache": "^4.2.0",
1562 | "stacktracey": "^2.1.8"
1563 | }
1564 | },
1565 | "node_modules/zod": {
1566 | "version": "3.23.8",
1567 | "resolved": "https://registry.npmjs.org/zod/-/zod-3.23.8.tgz",
1568 | "integrity": "sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==",
1569 | "dev": true,
1570 | "license": "MIT",
1571 | "funding": {
1572 | "url": "https://github.com/sponsors/colinhacks"
1573 | }
1574 | }
1575 | }
1576 | }
1577 |
--------------------------------------------------------------------------------
/server/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "vite-tinybase-ts-react-sync-durable-object-server",
3 | "version": "1.0.0",
4 | "description": "",
5 | "main": "index.ts",
6 | "author": "jamesgpearce",
7 | "license": "MIT",
8 | "type": "module",
9 | "scripts": {
10 | "deploy": "wrangler deploy",
11 | "dev": "wrangler dev",
12 | "start": "wrangler dev"
13 | },
14 | "devDependencies": {
15 | "@cloudflare/workers-types": "^4.20250327.0",
16 | "typescript": "^5.8.2",
17 | "wrangler": "^4.6.0"
18 | },
19 | "dependencies": {
20 | "tinybase": "^6.0.0"
21 | }
22 | }
--------------------------------------------------------------------------------
/server/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "target": "es2021",
4 | "lib": ["es2021"],
5 | "jsx": "react-jsx",
6 | "module": "es2022",
7 | "moduleResolution": "node",
8 | "types": ["@cloudflare/workers-types/2023-07-01"],
9 | "resolveJsonModule": true,
10 | "allowJs": true,
11 | "checkJs": false,
12 | "noEmit": true,
13 | "isolatedModules": true,
14 | "allowSyntheticDefaultImports": true,
15 | "forceConsistentCasingInFileNames": true,
16 | "strict": true,
17 | "skipLibCheck": true
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/server/wrangler.toml:
--------------------------------------------------------------------------------
1 | #:schema node_modules/wrangler/config-schema.json
2 | name = "vite-tinybase-ts-react-sync-durable-object-server"
3 | main = "index.ts"
4 | compatibility_date = "2024-10-11"
5 | route = { pattern = "vite.tinybase.cloud", custom_domain = true }
6 |
7 | [[durable_objects.bindings]]
8 | name = "TinyBaseDurableObjects"
9 | class_name = "TinyBaseDurableObject"
10 |
11 | [[migrations]]
12 | tag = "v1"
13 | new_classes = ["TinyBaseDurableObject"]
14 |
--------------------------------------------------------------------------------