tinybase 3.0.3 → 3.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (79) hide show
  1. package/package.json +82 -33
  2. package/readme.md +2 -2
  3. package/lib/cjs/checkpoints.d.ts +0 -959
  4. package/lib/cjs/common.d.ts +0 -115
  5. package/lib/cjs/indexes.d.ts +0 -966
  6. package/lib/cjs/metrics.d.ts +0 -827
  7. package/lib/cjs/persisters.d.ts +0 -727
  8. package/lib/cjs/queries.d.ts +0 -3024
  9. package/lib/cjs/relationships.d.ts +0 -1201
  10. package/lib/cjs/store.d.ts +0 -5244
  11. package/lib/cjs/tinybase.d.ts +0 -14
  12. package/lib/cjs/tools.d.ts +0 -512
  13. package/lib/cjs/ui-react.d.ts +0 -10921
  14. package/lib/cjs-es6/checkpoints.d.ts +0 -959
  15. package/lib/common.d.ts +0 -115
  16. package/lib/debug/checkpoints.d.ts +0 -959
  17. package/lib/debug/common.d.ts +0 -115
  18. package/lib/debug/indexes.d.ts +0 -966
  19. package/lib/debug/metrics.d.ts +0 -827
  20. package/lib/debug/persisters.d.ts +0 -727
  21. package/lib/debug/queries.d.ts +0 -3024
  22. package/lib/debug/relationships.d.ts +0 -1201
  23. package/lib/debug/store.d.ts +0 -5244
  24. package/lib/debug/tinybase.d.ts +0 -14
  25. package/lib/debug/tools.d.ts +0 -512
  26. package/lib/debug/ui-react.d.ts +0 -10921
  27. package/lib/es6/checkpoints.d.ts +0 -959
  28. package/lib/es6/common.d.ts +0 -115
  29. package/lib/es6/indexes.d.ts +0 -966
  30. package/lib/es6/metrics.d.ts +0 -827
  31. package/lib/es6/persisters.d.ts +0 -727
  32. package/lib/es6/queries.d.ts +0 -3024
  33. package/lib/es6/relationships.d.ts +0 -1201
  34. package/lib/es6/store.d.ts +0 -5244
  35. package/lib/es6/tinybase.d.ts +0 -14
  36. package/lib/es6/tools.d.ts +0 -512
  37. package/lib/es6/ui-react.d.ts +0 -10921
  38. package/lib/indexes.d.ts +0 -966
  39. package/lib/metrics.d.ts +0 -827
  40. package/lib/persisters.d.ts +0 -727
  41. package/lib/queries.d.ts +0 -3024
  42. package/lib/relationships.d.ts +0 -1201
  43. package/lib/store.d.ts +0 -5244
  44. package/lib/tinybase.d.ts +0 -14
  45. package/lib/tools.d.ts +0 -512
  46. package/lib/ui-react.d.ts +0 -10921
  47. package/lib/umd/checkpoints.d.ts +0 -959
  48. package/lib/umd/common.d.ts +0 -115
  49. package/lib/umd/indexes.d.ts +0 -966
  50. package/lib/umd/metrics.d.ts +0 -827
  51. package/lib/umd/persisters.d.ts +0 -727
  52. package/lib/umd/queries.d.ts +0 -3024
  53. package/lib/umd/relationships.d.ts +0 -1201
  54. package/lib/umd/store.d.ts +0 -5244
  55. package/lib/umd/tinybase.d.ts +0 -14
  56. package/lib/umd/tools.d.ts +0 -512
  57. package/lib/umd/ui-react.d.ts +0 -10921
  58. package/lib/umd-es6/checkpoints.d.ts +0 -959
  59. package/lib/umd-es6/common.d.ts +0 -115
  60. package/lib/umd-es6/indexes.d.ts +0 -966
  61. package/lib/umd-es6/metrics.d.ts +0 -827
  62. package/lib/umd-es6/persisters.d.ts +0 -727
  63. package/lib/umd-es6/queries.d.ts +0 -3024
  64. package/lib/umd-es6/relationships.d.ts +0 -1201
  65. package/lib/umd-es6/store.d.ts +0 -5244
  66. package/lib/umd-es6/tinybase.d.ts +0 -14
  67. package/lib/umd-es6/tools.d.ts +0 -512
  68. package/lib/umd-es6/ui-react.d.ts +0 -10921
  69. /package/lib/{checkpoints.d.ts → types/checkpoints.d.ts} +0 -0
  70. /package/lib/{cjs-es6 → types}/common.d.ts +0 -0
  71. /package/lib/{cjs-es6 → types}/indexes.d.ts +0 -0
  72. /package/lib/{cjs-es6 → types}/metrics.d.ts +0 -0
  73. /package/lib/{cjs-es6 → types}/persisters.d.ts +0 -0
  74. /package/lib/{cjs-es6 → types}/queries.d.ts +0 -0
  75. /package/lib/{cjs-es6 → types}/relationships.d.ts +0 -0
  76. /package/lib/{cjs-es6 → types}/store.d.ts +0 -0
  77. /package/lib/{cjs-es6 → types}/tinybase.d.ts +0 -0
  78. /package/lib/{cjs-es6 → types}/tools.d.ts +0 -0
  79. /package/lib/{cjs-es6 → types}/ui-react.d.ts +0 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tinybase",
3
- "version": "3.0.3",
3
+ "version": "3.0.5",
4
4
  "author": "jamesgpearce",
5
5
  "repository": "github:tinyplex/tinybase",
6
6
  "license": "MIT",
@@ -18,31 +18,79 @@
18
18
  "lib/**",
19
19
  "bin/**"
20
20
  ],
21
+ "bin": {
22
+ "tinybase": "./bin/cli.js"
23
+ },
21
24
  "exports": {
22
25
  ".": "./lib/tinybase.js",
23
26
  "./package.json": "./package.json",
24
- "./es6": "./lib/es6/tinybase.js",
25
- "./debug": "./lib/debug/tinybase.js",
26
27
  "./cjs": "./lib/cjs/tinybase.cjs",
28
+ "./cjs/*": "./lib/cjs/*.cjs",
27
29
  "./cjs-es6": "./lib/cjs-es6/tinybase.cjs",
30
+ "./cjs-es6/*": "./lib/cjs-es6/*.cjs",
31
+ "./es6": "./lib/es6/tinybase.js",
32
+ "./es6/*": "./lib/es6/*.js",
33
+ "./debug": "./lib/debug/tinybase.js",
34
+ "./debug/*": "./lib/debug/*.js",
28
35
  "./umd": "./lib/umd/tinybase.js",
36
+ "./umd/*": "./lib/umd/*.js",
29
37
  "./umd-es6": "./lib/umd-es6/tinybase.js",
30
- "./cjs/*": "./lib/cjs/*.cjs",
31
- "./cjs-es6/*": "./lib/cjs-es6/*.cjs",
38
+ "./umd-es6/*": "./lib/umd-es6/*.js",
39
+ "./lib": "./lib/tinybase.js",
40
+ "./lib/*": "./lib/*.js",
32
41
  "./*": "./lib/*.js"
33
42
  },
34
- "bin": {
35
- "tinybase": "./bin/cli.js"
36
- },
37
- "react-native": "./lib/tinybase.js",
38
43
  "typesVersions": {
39
44
  "*": {
45
+ "cjs": [
46
+ "./lib/types/tinybase.d.ts"
47
+ ],
48
+ "cjs/*": [
49
+ "./lib/types/*.d.ts"
50
+ ],
51
+ "cjs-es6": [
52
+ "./lib/types/tinybase.d.ts"
53
+ ],
54
+ "cjs-es6/*": [
55
+ "./lib/types/*.d.ts"
56
+ ],
57
+ "es6": [
58
+ "./lib/types/tinybase.d.ts"
59
+ ],
60
+ "es6/*": [
61
+ "./lib/types/*.d.ts"
62
+ ],
63
+ "debug": [
64
+ "./lib/types/tinybase.d.ts"
65
+ ],
66
+ "debug/*": [
67
+ "./lib/types/*.d.ts"
68
+ ],
69
+ "umd": [
70
+ "./lib/types/tinybase.d.ts"
71
+ ],
72
+ "umd/*": [
73
+ "./lib/types/*.d.ts"
74
+ ],
75
+ "umd-es6": [
76
+ "./lib/types/tinybase.d.ts"
77
+ ],
78
+ "umd-es6/*": [
79
+ "./lib/types/*.d.ts"
80
+ ],
81
+ "lib": [
82
+ "./lib/types/tinybase.d.ts"
83
+ ],
84
+ "lib/*": [
85
+ "./lib/types/*.d.ts"
86
+ ],
40
87
  "*": [
41
- "./lib/*.d.ts",
42
- "./lib/tinybase.d.ts"
88
+ "./lib/types/*.d.ts",
89
+ "./lib/types/tinybase.d.ts"
43
90
  ]
44
91
  }
45
92
  },
93
+ "react-native": "./lib/tinybase.js",
46
94
  "browser": {
47
95
  "fs": false
48
96
  },
@@ -72,62 +120,63 @@
72
120
  },
73
121
  "devDependencies": {
74
122
  "@babel/cli": "^7.21.0",
75
- "@babel/core": "^7.21.0",
76
- "@babel/preset-env": "^7.20.2",
123
+ "@babel/core": "^7.21.4",
124
+ "@babel/preset-env": "^7.21.4",
77
125
  "@babel/preset-react": "^7.18.6",
78
- "@babel/preset-typescript": "^7.21.0",
126
+ "@babel/preset-typescript": "^7.21.4",
79
127
  "@rollup/plugin-replace": "^5.0.2",
80
128
  "@rollup/plugin-terser": "^0.4.0",
81
129
  "@types/asciichart": "^1.5.6",
82
130
  "@types/expect-puppeteer": "^5.0.3",
83
131
  "@types/http-server": "^0.12.1",
84
- "@types/jest": "^29.4.0",
132
+ "@types/jest": "^29.5.0",
85
133
  "@types/jest-environment-puppeteer": "^5.0.3",
86
134
  "@types/less": "^3.0.3",
87
- "@types/node": "^18.14.1",
135
+ "@types/node": "^18.15.11",
88
136
  "@types/puppeteer": "^5.4.7",
89
- "@types/react": "^18.0.28",
137
+ "@types/react": "^18.0.33",
90
138
  "@types/react-dom": "^18.0.11",
91
139
  "@types/react-test-renderer": "^18.0.0",
92
140
  "@types/tmp": "^0.2.3",
93
- "@typescript-eslint/eslint-plugin": "^5.53.0",
94
- "@typescript-eslint/parser": "^5.53.0",
141
+ "@typescript-eslint/eslint-plugin": "^5.57.1",
142
+ "@typescript-eslint/parser": "^5.57.1",
95
143
  "asciichart": "^1.5.25",
96
144
  "babel-eslint": "^10.1.0",
97
- "babel-jest": "^29.4.3",
145
+ "babel-jest": "^29.5.0",
98
146
  "babel-preset-minify": "^0.5.2",
99
147
  "buffer-replace": "^1.0.0",
100
148
  "country-flag-emoji-json": "^2.0.0",
101
- "cspell": "^6.26.3",
102
- "esbuild": "^0.17.10",
103
- "eslint": "^8.34.0",
104
- "eslint-config-prettier": "^8.6.0",
149
+ "cspell": "^6.31.1",
150
+ "esbuild": "^0.17.15",
151
+ "eslint": "^8.38.0",
152
+ "eslint-config-prettier": "^8.8.0",
105
153
  "eslint-plugin-jest": "^27.2.1",
106
- "eslint-plugin-jsdoc": "^40.0.0",
154
+ "eslint-plugin-jsdoc": "^40.1.2",
107
155
  "eslint-plugin-react": "^7.32.2",
108
156
  "eslint-plugin-react-hooks": "^4.6.0",
109
157
  "gulp": "^4.0.2",
110
158
  "gulp-gzip": "^1.4.2",
111
159
  "http-server": "^14.1.1",
112
- "jest": "^29.4.3",
113
- "jest-environment-jsdom": "^29.4.3",
160
+ "jest": "^29.5.0",
161
+ "jest-environment-jsdom": "^29.5.0",
114
162
  "jest-fetch-mock": "^3.0.3",
115
- "jest-puppeteer": "^7.0.1",
163
+ "jest-puppeteer": "^8.0.6",
116
164
  "less": "^4.1.3",
117
- "prettier": "^2.8.4",
118
- "puppeteer": "^19.7.2",
165
+ "prettier": "^2.8.7",
166
+ "puppeteer": "^19.8.5",
119
167
  "react": "^18.2.0",
120
168
  "react-dom": "^18.2.0",
121
169
  "react-test-renderer": "^18.2.0",
122
- "rollup": "^3.17.2",
170
+ "rollup": "^3.20.2",
123
171
  "rollup-plugin-esbuild": "^5.0.0",
124
172
  "rollup-plugin-gzip": "^3.1.0",
125
173
  "rollup-plugin-preserve-shebang": "^1.0.1",
126
174
  "rollup-plugin-prettier": "^3.0.0",
127
- "tinydocs": "^0.1.23",
175
+ "tinybase": "file:./",
176
+ "tinydocs": "^0.1.26",
128
177
  "tmp": "^0.2.1",
129
178
  "ts-unused-exports": "^9.0.4",
130
- "typescript": "4.9.5"
179
+ "typescript": "5.0.4"
131
180
  },
132
181
  "peerDependencies": {
133
182
  "prettier": "^2.0.0",
package/readme.md CHANGED
@@ -1,4 +1,4 @@
1
- <section id="hero"><h2 id="the-reactive-data-store-for-local-first-apps">The <em>reactive</em> data store for <span>local-first apps</span>.</h2><p>Modern apps deserve better. Why trade reactive user experiences to be able to use relational data? Why sacrifice store features for bundle size? And why should the cloud do all the work <a href="https://www.inkandswitch.com/local-first/" target="_blank">anyway</a>?</p><p><em>TinyBase is a smart new way to structure your local app data:</em></p><ul><li>Manage <a href="#start-with-a-simple-key-value-store">key-value data</a> (<em>new!</em>), <a href="#level-up-to-use-tabular-data">tabular data</a> - or both - with optional <a href="#apply-schemas-to-tables-and-values">schematization</a> to model it.</li><li><a href="#register-listeners-at-any-granularity">Flexibly reactive</a> to reconciled updates, so your UI only spends cycles on the data that changes.</li><li><a href="#build-complex-queries-with-tinyql">Powerful query engine</a> to select, join, filter, group, sort and paginate data - reactively.</li><li><a href="#create-indexes-for-fast-lookups">Indexing</a>, <a href="#define-metrics-and-aggregations">metrics</a>, <a href="#configure-relationships-between-tables">relationships</a> - and even an <a href="#use-checkpoints-for-an-easy-undo-stack">undo stack</a> for your app state! - out of the box.</li><li>Easily <a href="#persist-data-to-browser-file-or-server">sync your data</a> to local or remote storage, and use <a href="#call-hooks-to-bind-to-data">idiomatic bindings</a> to your UI.</li><li><a href="#generate-orm-like-apis">Generate ORM-like APIs</a> (<em>new!</em>) in TypeScript, based on a schema or inferred from actual data.</li></ul><p><em>Tiny by name, tiny by nature</em>, TinyBase only costs <a href="#did-we-say-tiny">4.2kB - 8.7kB</a> when compressed, and has zero dependencies. And of course it&#x27;s <a href="#well-tested-and-documented">well tested</a>, <a href="https://tinybase.org/guides/the-basics/getting-started/">fully documented</a>, and <a href="https://github.com/tinyplex/tinybase">open source</a>. Other <a href="https://tinybase.org/guides/faq/">FAQs</a>?</p></section><p><a id="new" href="https://tinybase.org/guides/releases/#v3-0"><em>NEW!</em> v3.0 release</a></p><hr><p><a class="start" href="https://tinybase.org/guides/the-basics/getting-started/">Get started</a></p><p><a href="https://tinybase.org/demos/">Try the demos</a></p><p><a href="https://tinybase.org/api/store/interfaces/store/store/">Read the docs</a></p><hr><section><h2 id="start-with-a-simple-key-value-store">Start with a simple key-value store.</h2><p>Creating a <a href="https://tinybase.org/api/store/interfaces/store/store/"><code>Store</code></a> requires just a simple call to the <a href="https://tinybase.org/api/store/functions/creation/createstore/"><code>createStore</code></a> function. Once you have one, you can easily set <a href="https://tinybase.org/api/store/type-aliases/store/values/"><code>Values</code></a> in it by unique <a href="https://tinybase.org/api/common/type-aliases/identity/id/"><code>Id</code></a>. And of course you can easily get them back out again.</p><p>Read more about using keyed value data in <a href="https://tinybase.org/guides/the-basics/">The Basics</a> guide.</p></section>
1
+ <section id="hero"><h2 id="the-reactive-data-store-for-local-first-apps">The <em>reactive</em> data store for <span>local-first apps</span>.</h2><p>Modern apps deserve better. Why trade reactive user experiences to be able to use relational data? Why sacrifice store features for bundle size? And why should the cloud do all the work <a href="https://localfirstweb.dev/" target="_blank">anyway</a>?</p><p><em>TinyBase is a smart new way to structure your local app data:</em></p><ul><li>Manage <a href="#start-with-a-simple-key-value-store">key-value data</a> (<em>new!</em>), <a href="#level-up-to-use-tabular-data">tabular data</a> - or both - with optional <a href="#apply-schemas-to-tables-and-values">schematization</a> to model it.</li><li><a href="#register-listeners-at-any-granularity">Flexibly reactive</a> to reconciled updates, so your UI only spends cycles on the data that changes.</li><li><a href="#build-complex-queries-with-tinyql">Powerful query engine</a> to select, join, filter, group, sort and paginate data - reactively.</li><li><a href="#create-indexes-for-fast-lookups">Indexing</a>, <a href="#define-metrics-and-aggregations">metrics</a>, <a href="#configure-relationships-between-tables">relationships</a> - and even an <a href="#use-checkpoints-for-an-easy-undo-stack">undo stack</a> for your app state! - out of the box.</li><li>Easily <a href="#persist-data-to-browser-file-or-server">sync your data</a> to local or remote storage, and use <a href="#call-hooks-to-bind-to-data">idiomatic bindings</a> to your UI.</li><li><a href="#generate-orm-like-apis">Generate ORM-like APIs</a> (<em>new!</em>) in TypeScript, based on a schema or inferred from actual data.</li></ul><p><em>Tiny by name, tiny by nature</em>, TinyBase only costs <a href="#did-we-say-tiny">4.2kB - 8.7kB</a> when compressed, and has zero dependencies. And of course it&#x27;s <a href="#well-tested-and-documented">well tested</a>, <a href="https://tinybase.org/guides/the-basics/getting-started/">fully documented</a>, and <a href="https://github.com/tinyplex/tinybase">open source</a>. Other <a href="https://tinybase.org/guides/faq/">FAQs</a>?</p></section><p><a id="new" href="https://tinybase.org/guides/releases/#v3-0"><em>NEW!</em> v3.0 release</a></p><hr><p><a class="start" href="https://tinybase.org/guides/the-basics/getting-started/">Get started</a></p><p><a href="https://tinybase.org/demos/">Try the demos</a></p><p><a href="https://tinybase.org/api/store/interfaces/store/store/">Read the docs</a></p><hr><section><h3 id="proud-to-be-sponsored-by">Proud to be sponsored by:</h3><p><a href="https://github.com/expo" target="_blank"><img title="expo" src="https://github.com/expo.png?size=48" width="48" height="48"></a><a href="https://github.com/WonderPanda" target="_blank"><img title="WonderPanda" src="https://github.com/WonderPanda.png?size=48" width="48" height="48"></a><a href="https://github.com/arpitBhalla" target="_blank"><img title="arpitBhalla" src="https://github.com/arpitBhalla.png?size=48" width="48" height="48"></a></p></section><section><h3 id="excited-to-be-used-by">Excited to be used by:</h3><p><a href="https://github.com/brentvatne" target="_blank"><img title="brentvatne" src="https://github.com/brentvatne.png?size=48" width="48" height="48"></a><a href="https://github.com/circadian-risk" target="_blank"><img title="circadian-risk" src="https://github.com/circadian-risk.png?size=48" width="48" height="48"></a><a href="https://github.com/WonderPanda" target="_blank"><img title="WonderPanda" src="https://github.com/WonderPanda.png?size=48" width="48" height="48"></a><a href="https://github.com/miking-the-viking" target="_blank"><img title="miking-the-viking" src="https://github.com/miking-the-viking.png?size=48" width="48" height="48"></a><a href="https://github.com/cubecull" target="_blank"><img title="cubecull" src="https://github.com/cubecull.png?size=48" width="48" height="48"></a><a href="https://github.com/Apocalypsor" target="_blank"><img title="Apocalypsor" src="https://github.com/Apocalypsor.png?size=48" width="48" height="48"></a><a href="https://github.com/uptonking" target="_blank"><img title="uptonking" src="https://github.com/uptonking.png?size=48" width="48" height="48"></a><a href="https://github.com/erwinkn" target="_blank"><img title="erwinkn" src="https://github.com/erwinkn.png?size=48" width="48" height="48"></a><a href="https://github.com/Kayoo-asso" target="_blank"><img title="Kayoo-asso" src="https://github.com/Kayoo-asso.png?size=48" width="48" height="48"></a><a href="https://github.com/shaneosullivan" target="_blank"><img title="shaneosullivan" src="https://github.com/shaneosullivan.png?size=48" width="48" height="48"></a><a href="https://github.com/generates" target="_blank"><img title="generates" src="https://github.com/generates.png?size=48" width="48" height="48"></a><a href="https://github.com/flaming-codes" target="_blank"><img title="flaming-codes" src="https://github.com/flaming-codes.png?size=48" width="48" height="48"></a><a href="https://github.com/jaysc" target="_blank"><img title="jaysc" src="https://github.com/jaysc.png?size=48" width="48" height="48"></a><a href="https://github.com/kotofurumiya" target="_blank"><img title="kotofurumiya" src="https://github.com/kotofurumiya.png?size=48" width="48" height="48"></a></p></section><hr><section><h2 id="start-with-a-simple-key-value-store">Start with a simple key-value store.</h2><p>Creating a <a href="https://tinybase.org/api/store/interfaces/store/store/"><code>Store</code></a> requires just a simple call to the <a href="https://tinybase.org/api/store/functions/creation/createstore/"><code>createStore</code></a> function. Once you have one, you can easily set <a href="https://tinybase.org/api/store/type-aliases/store/values/"><code>Values</code></a> in it by unique <a href="https://tinybase.org/api/common/type-aliases/identity/id/"><code>Id</code></a>. And of course you can easily get them back out again.</p><p>Read more about using keyed value data in <a href="https://tinybase.org/guides/the-basics/">The Basics</a> guide.</p></section>
2
2
 
3
3
  ```js
4
4
  const store = createStore()
@@ -266,4 +266,4 @@ export const createShop: typeof createShopDecl = () => {
266
266
  };
267
267
  ```
268
268
 
269
- <section><h2 id="did-we-say-tiny">Did we say tiny?</h2><p>If you use the basic <a href="https://tinybase.org/api/store/"><code>store</code></a> module alone, you&#x27;ll only add a gzipped <em>4.2kB</em> to your app. You can incrementally add the other modules as you need more functionality, or get it all for <em>8.7kB</em>.</p><p>The <a href="https://tinybase.org/api/ui-react/"><code>ui-react</code></a> module is just another <em>3.4kB</em>, the <a href="https://tinybase.org/api/tools/"><code>tools</code></a> module is <em>5.4kB</em>, and everything is fast. Life&#x27;s easy when you have zero dependencies!</p><p>Read more about how TinyBase is structured in the <a href="https://tinybase.org/guides/how-tinybase-is-built/architecture/">Architecture</a> guide.</p></section><div class="table"><table class="fixed"><tbody><tr><th width="30%"> </th><th>.js.gz</th><th>.js</th><th>debug.js</th><th>.d.ts</th></tr><tr><th class="right"><a href="https://tinybase.org/api/store/">store</a></th><td>4.2kB</td><td>10.0kB</td><td>43.9kB</td><td>184.6kB</td></tr><tr><th class="right"><a href="https://tinybase.org/api/metrics/">metrics</a></th><td>1.8kB</td><td>3.6kB</td><td>14.8kB</td><td>29.1kB</td></tr><tr><th class="right"><a href="https://tinybase.org/api/indexes/">indexes</a></th><td>1.9kB</td><td>3.7kB</td><td>16.6kB</td><td>33.9kB</td></tr><tr><th class="right"><a href="https://tinybase.org/api/relationships/">relationships</a></th><td>1.8kB</td><td>3.6kB</td><td>16.8kB</td><td>42.1kB</td></tr><tr><th class="right"><a href="https://tinybase.org/api/queries/">queries</a></th><td>2.6kB</td><td>5.5kB</td><td>24.9kB</td><td>106.8kB</td></tr><tr><th class="right"><a href="https://tinybase.org/api/checkpoints/">checkpoints</a></th><td>1.5kB</td><td>3.0kB</td><td>12.5kB</td><td>33.4kB</td></tr><tr><th class="right"><a href="https://tinybase.org/api/persisters/">persisters</a></th><td>0.8kB</td><td>1.7kB</td><td>5.2kB</td><td>27.2kB</td></tr><tr><th class="right"><a href="https://tinybase.org/api/common/">common</a></th><td>0.1kB</td><td>0.1kB</td><td>0.1kB</td><td>3.5kB</td></tr><tr><th class="right">tinybase (all)</th><td>8.7kB</td><td>21.1kB</td><td>92.8kB</td><td>0.3kB</td></tr></tbody></table></div><section><h2 id="well-tested-and-documented">Well tested and documented.</h2><p>TinyBase has <em>100.0%</em> test coverage, including the code throughout the documentation - even on this page! The guides, demos, and API examples are designed to make it as easy as possible to get up and running.</p><p>Read more about how TinyBase is tested in the Unit <a href="https://tinybase.org/guides/how-tinybase-is-built/testing/">Testing</a> guide.</p></section><div class="table"><table class="fixed"><tbody><tr><th width="30%"> </th><th>Total</th><th>Tested</th><th>Coverage</th></tr><tr><th class="right">Lines</th><td>1,792</td><td>1,792</td><td>100.0%</td></tr><tr><th class="right">Statements</th><td>1,930</td><td>1,930</td><td>100.0%</td></tr><tr><th class="right">Functions</th><td>768</td><td>768</td><td>100.0%</td></tr><tr><th class="right">Branches</th><td>630</td><td>630</td><td>100.0%</td></tr><tr><th class="right">Tests</th><td colspan="3">2,581</td></tr><tr><th class="right">Assertions</th><td colspan="3">12,421</td></tr></tbody></table></div><hr><p><a class="start" href="https://tinybase.org/guides/the-basics/getting-started/">Get started</a></p><p><a href="https://tinybase.org/demos/">Try the demos</a></p><p><a href="https://tinybase.org/api/store/interfaces/store/store/">Read the docs</a></p><hr><section><h2 id="follow">Follow</h2><ul><li>News and updates on <a href="https://twitter.com/tinybasejs">Twitter</a>, <a href="https://discord.com/invite/mGz3mevwP8">Discord</a>, and <a href="https://facebook.com/tinybasejs">Facebook</a>.</li><li><a href="https://github.com/tinyplex/tinybase/discussion">Discussions</a> and <a href="https://github.com/tinyplex/tinybase/issues">issues</a> on <a href="https://github.com/tinyplex/tinybase">GitHub</a>.</li><li><a href="https://tinybase.org/guides/releases/">Release notes</a> for each version.</li><li>Packages on <a href="https://www.npmjs.com/package/tinybase/v/3.0.3">NPM</a>.</li></ul></section><section><h2 id="about">About</h2><p>Building TinyBase was originally an interesting exercise for <a rel="me" href="https://hachyderm.io/@jamesgpearce">me</a> in API design, minification, and documentation. It could not have been built without these great <a href="https://tinybase.org/guides/how-tinybase-is-built/credits/#giants">projects</a> and <a href="https://tinybase.org/guides/how-tinybase-is-built/credits/#and-friends">friends</a>, and I hope you enjoy using it!</p></section>
269
+ <section><h2 id="did-we-say-tiny">Did we say tiny?</h2><p>If you use the basic <a href="https://tinybase.org/api/store/"><code>store</code></a> module alone, you&#x27;ll only add a gzipped <em>4.2kB</em> to your app. You can incrementally add the other modules as you need more functionality, or get it all for <em>8.7kB</em>.</p><p>The <a href="https://tinybase.org/api/ui-react/"><code>ui-react</code></a> module is just another <em>3.4kB</em>, the <a href="https://tinybase.org/api/tools/"><code>tools</code></a> module is <em>5.4kB</em>, and everything is fast. Life&#x27;s easy when you have zero dependencies!</p><p>Read more about how TinyBase is structured in the <a href="https://tinybase.org/guides/how-tinybase-is-built/architecture/">Architecture</a> guide.</p></section><div class="table"><table class="fixed"><tbody><tr><th width="30%"> </th><th>.js.gz</th><th>.js</th><th>debug.js</th><th>.d.ts</th></tr><tr><th class="right"><a href="https://tinybase.org/api/store/">store</a></th><td>4.2kB</td><td>10.0kB</td><td>43.9kB</td><td>184.6kB</td></tr><tr><th class="right"><a href="https://tinybase.org/api/metrics/">metrics</a></th><td>1.8kB</td><td>3.6kB</td><td>14.8kB</td><td>29.1kB</td></tr><tr><th class="right"><a href="https://tinybase.org/api/indexes/">indexes</a></th><td>1.9kB</td><td>3.7kB</td><td>16.6kB</td><td>33.9kB</td></tr><tr><th class="right"><a href="https://tinybase.org/api/relationships/">relationships</a></th><td>1.8kB</td><td>3.6kB</td><td>16.8kB</td><td>42.1kB</td></tr><tr><th class="right"><a href="https://tinybase.org/api/queries/">queries</a></th><td>2.6kB</td><td>5.5kB</td><td>24.9kB</td><td>106.8kB</td></tr><tr><th class="right"><a href="https://tinybase.org/api/checkpoints/">checkpoints</a></th><td>1.5kB</td><td>3.0kB</td><td>12.5kB</td><td>33.4kB</td></tr><tr><th class="right"><a href="https://tinybase.org/api/persisters/">persisters</a></th><td>0.8kB</td><td>1.7kB</td><td>5.2kB</td><td>27.2kB</td></tr><tr><th class="right"><a href="https://tinybase.org/api/common/">common</a></th><td>0.1kB</td><td>0.1kB</td><td>0.1kB</td><td>3.5kB</td></tr><tr><th class="right">tinybase (all)</th><td>8.7kB</td><td>21.1kB</td><td>92.8kB</td><td>0.3kB</td></tr></tbody></table></div><section><h2 id="well-tested-and-documented">Well tested and documented.</h2><p>TinyBase has <em>100.0%</em> test coverage, including the code throughout the documentation - even on this page! The guides, demos, and API examples are designed to make it as easy as possible to get up and running.</p><p>Read more about how TinyBase is tested in the Unit <a href="https://tinybase.org/guides/how-tinybase-is-built/testing/">Testing</a> guide.</p></section><div class="table"><table class="fixed"><tbody><tr><th width="30%"> </th><th>Total</th><th>Tested</th><th>Coverage</th></tr><tr><th class="right">Lines</th><td>1,792</td><td>1,792</td><td>100.0%</td></tr><tr><th class="right">Statements</th><td>1,930</td><td>1,930</td><td>100.0%</td></tr><tr><th class="right">Functions</th><td>768</td><td>768</td><td>100.0%</td></tr><tr><th class="right">Branches</th><td>630</td><td>630</td><td>100.0%</td></tr><tr><th class="right">Tests</th><td colspan="3">2,581</td></tr><tr><th class="right">Assertions</th><td colspan="3">12,421</td></tr></tbody></table></div><hr><p><a class="start" href="https://tinybase.org/guides/the-basics/getting-started/">Get started</a></p><p><a href="https://tinybase.org/demos/">Try the demos</a></p><p><a href="https://tinybase.org/api/store/interfaces/store/store/">Read the docs</a></p><hr><section><h2 id="follow">Follow</h2><ul><li>News and updates on <a href="https://twitter.com/tinybasejs">Twitter</a>, <a href="https://discord.com/invite/mGz3mevwP8">Discord</a>, and <a href="https://facebook.com/tinybasejs">Facebook</a>.</li><li><a href="https://github.com/tinyplex/tinybase/discussions">Discussions</a> and <a href="https://github.com/tinyplex/tinybase/issues">issues</a> on <a href="https://github.com/tinyplex/tinybase">GitHub</a>.</li><li><a href="https://tinybase.org/guides/releases/">Release notes</a> for each version.</li><li>Packages on <a href="https://www.npmjs.com/package/tinybase/v/3.0.5">NPM</a>.</li></ul></section><section><h2 id="about">About</h2><p>Building TinyBase was originally an interesting exercise for <a rel="me" href="https://hachyderm.io/@jamesgpearce">me</a> in API design, minification, and documentation. It could not have been built without these great <a href="https://tinybase.org/guides/how-tinybase-is-built/credits/#giants">projects</a> and <a href="https://tinybase.org/guides/how-tinybase-is-built/credits/#and-friends">friends</a>, and I hope you enjoy using it!</p></section>