@indexeddb-orm/idb-orm 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (216) hide show
  1. package/.vscode/extensions.json +5 -0
  2. package/README.md +1280 -0
  3. package/angular-demo-app/README.md +84 -0
  4. package/angular-demo-app/angular.json +109 -0
  5. package/angular-demo-app/package-lock.json +14215 -0
  6. package/angular-demo-app/package.json +41 -0
  7. package/angular-demo-app/src/app/app.component.ts +481 -0
  8. package/angular-demo-app/src/app/app.routes.ts +8 -0
  9. package/angular-demo-app/src/app/components/actions.component.ts +202 -0
  10. package/angular-demo-app/src/app/components/cloud-sync-demo.component.ts +296 -0
  11. package/angular-demo-app/src/app/components/live-query-demo.component.ts +307 -0
  12. package/angular-demo-app/src/app/components/main-info.component.ts +148 -0
  13. package/angular-demo-app/src/app/components/posts-live-query-demo.component.ts +336 -0
  14. package/angular-demo-app/src/app/components/typescript-demo.component.ts +268 -0
  15. package/angular-demo-app/src/entities/post-tag.entity.ts +25 -0
  16. package/angular-demo-app/src/entities/post.entity.ts +49 -0
  17. package/angular-demo-app/src/entities/profile.entity.ts +42 -0
  18. package/angular-demo-app/src/entities/tag.entity.ts +36 -0
  19. package/angular-demo-app/src/entities/user.entity.ts +59 -0
  20. package/angular-demo-app/src/favicon.ico +1 -0
  21. package/angular-demo-app/src/index.html +16 -0
  22. package/angular-demo-app/src/main.ts +13 -0
  23. package/angular-demo-app/src/services/app-logic.service.ts +449 -0
  24. package/angular-demo-app/src/services/cloud-sync.service.ts +95 -0
  25. package/angular-demo-app/src/services/database.service.ts +26 -0
  26. package/angular-demo-app/src/services/live-query.service.ts +63 -0
  27. package/angular-demo-app/src/services/posts-live-query.service.ts +86 -0
  28. package/angular-demo-app/src/services/typescript-demo.service.ts +59 -0
  29. package/angular-demo-app/src/styles.scss +50 -0
  30. package/angular-demo-app/tsconfig.app.json +13 -0
  31. package/angular-demo-app/tsconfig.json +34 -0
  32. package/angular-demo-app/tsconfig.spec.json +13 -0
  33. package/dist/Database.d.ts +206 -0
  34. package/dist/Database.js +288 -0
  35. package/dist/decorators/Column.d.ts +79 -0
  36. package/dist/decorators/Column.js +236 -0
  37. package/dist/decorators/Entity.d.ts +32 -0
  38. package/dist/decorators/Entity.js +44 -0
  39. package/dist/decorators/Relation.d.ts +70 -0
  40. package/dist/decorators/Relation.js +120 -0
  41. package/dist/decorators/index.d.ts +3 -0
  42. package/dist/decorators/index.js +3 -0
  43. package/dist/errors/ValidationError.d.ts +4 -0
  44. package/dist/errors/ValidationError.js +8 -0
  45. package/dist/index.d.ts +8 -0
  46. package/dist/index.js +7 -0
  47. package/dist/metadata/Column.d.ts +8 -0
  48. package/dist/metadata/Column.js +44 -0
  49. package/dist/metadata/Entity.d.ts +11 -0
  50. package/dist/metadata/Entity.js +21 -0
  51. package/dist/metadata/Relation.d.ts +20 -0
  52. package/dist/metadata/Relation.js +74 -0
  53. package/dist/metadata/index.d.ts +3 -0
  54. package/dist/metadata/index.js +3 -0
  55. package/dist/services/AggregationService.d.ts +38 -0
  56. package/dist/services/AggregationService.js +229 -0
  57. package/dist/services/BaseEntity.d.ts +32 -0
  58. package/dist/services/BaseEntity.js +62 -0
  59. package/dist/services/CloudSyncService.d.ts +100 -0
  60. package/dist/services/CloudSyncService.js +196 -0
  61. package/dist/services/DecoratorUtils.d.ts +12 -0
  62. package/dist/services/DecoratorUtils.js +10 -0
  63. package/dist/services/EntityFactory.d.ts +25 -0
  64. package/dist/services/EntityFactory.js +27 -0
  65. package/dist/services/EntityRegistry.d.ts +61 -0
  66. package/dist/services/EntityRegistry.js +56 -0
  67. package/dist/services/EntitySchema.d.ts +56 -0
  68. package/dist/services/EntitySchema.js +125 -0
  69. package/dist/services/MigrationManager.d.ts +70 -0
  70. package/dist/services/MigrationManager.js +181 -0
  71. package/dist/services/RelationLoader.d.ts +66 -0
  72. package/dist/services/RelationLoader.js +310 -0
  73. package/dist/services/SchemaBuilder.d.ts +68 -0
  74. package/dist/services/SchemaBuilder.js +191 -0
  75. package/dist/services/index.d.ts +7 -0
  76. package/dist/services/index.js +7 -0
  77. package/dist/types.d.ts +152 -0
  78. package/dist/types.js +1 -0
  79. package/dist/utils/logger.d.ts +12 -0
  80. package/dist/utils/logger.js +16 -0
  81. package/eslint.config.js +49 -0
  82. package/homepage/favicon.svg +36 -0
  83. package/homepage/index.html +1725 -0
  84. package/package.json +78 -0
  85. package/react-demo-app/README.md +61 -0
  86. package/react-demo-app/eslint.config.js +60 -0
  87. package/react-demo-app/index.html +13 -0
  88. package/react-demo-app/package-lock.json +4955 -0
  89. package/react-demo-app/package.json +39 -0
  90. package/react-demo-app/src/App.tsx +172 -0
  91. package/react-demo-app/src/assets/react.svg +1 -0
  92. package/react-demo-app/src/components/Actions.tsx +171 -0
  93. package/react-demo-app/src/components/CloudSyncDemo.tsx +191 -0
  94. package/react-demo-app/src/components/LiveQueryDemo.tsx +122 -0
  95. package/react-demo-app/src/components/MainInfo.tsx +75 -0
  96. package/react-demo-app/src/components/PostsLiveQueryDemo.tsx +185 -0
  97. package/react-demo-app/src/components/TypeScriptDemo.tsx +190 -0
  98. package/react-demo-app/src/database/Database.ts +30 -0
  99. package/react-demo-app/src/entities/Post.ts +48 -0
  100. package/react-demo-app/src/entities/PostTag.ts +26 -0
  101. package/react-demo-app/src/entities/Profile.ts +41 -0
  102. package/react-demo-app/src/entities/Tag.ts +35 -0
  103. package/react-demo-app/src/entities/User.ts +61 -0
  104. package/react-demo-app/src/hooks/useAppLogic.ts +565 -0
  105. package/react-demo-app/src/hooks/useCloudSyncDemo.ts +84 -0
  106. package/react-demo-app/src/hooks/useLiveQueryDemo.ts +68 -0
  107. package/react-demo-app/src/hooks/usePostsLiveQueryDemo.ts +64 -0
  108. package/react-demo-app/src/hooks/useTypeScriptDemo.ts +43 -0
  109. package/react-demo-app/src/index.css +26 -0
  110. package/react-demo-app/src/main.tsx +18 -0
  111. package/react-demo-app/src/migrations/001-add-user-email-index.ts +17 -0
  112. package/react-demo-app/src/migrations/002-add-post-category.ts +37 -0
  113. package/react-demo-app/src/migrations/index.ts +8 -0
  114. package/react-demo-app/src/vite-env.d.ts +1 -0
  115. package/react-demo-app/tsconfig.app.json +22 -0
  116. package/react-demo-app/tsconfig.json +6 -0
  117. package/react-demo-app/vite.config.ts +10 -0
  118. package/src/Database.ts +405 -0
  119. package/src/errors/ValidationError.ts +9 -0
  120. package/src/index.ts +13 -0
  121. package/src/metadata/Column.ts +74 -0
  122. package/src/metadata/Entity.ts +42 -0
  123. package/src/metadata/Relation.ts +121 -0
  124. package/src/metadata/index.ts +5 -0
  125. package/src/services/AggregationService.ts +348 -0
  126. package/src/services/BaseEntity.ts +77 -0
  127. package/src/services/CloudSyncService.ts +248 -0
  128. package/src/services/EntityFactory.ts +35 -0
  129. package/src/services/EntityRegistry.ts +109 -0
  130. package/src/services/EntitySchema.ts +154 -0
  131. package/src/services/MigrationManager.ts +276 -0
  132. package/src/services/RelationLoader.ts +532 -0
  133. package/src/services/SchemaBuilder.ts +237 -0
  134. package/src/services/index.ts +7 -0
  135. package/src/types.d.ts +1 -0
  136. package/src/types.ts +169 -0
  137. package/src/utils/logger.ts +40 -0
  138. package/svelte-demo-app/README.md +61 -0
  139. package/svelte-demo-app/package-lock.json +3000 -0
  140. package/svelte-demo-app/package.json +30 -0
  141. package/svelte-demo-app/src/app.d.ts +12 -0
  142. package/svelte-demo-app/src/app.html +13 -0
  143. package/svelte-demo-app/src/components/Actions.svelte +121 -0
  144. package/svelte-demo-app/src/components/CloudSyncDemo.svelte +333 -0
  145. package/svelte-demo-app/src/components/LiveQueryDemo.svelte +191 -0
  146. package/svelte-demo-app/src/components/MainInfo.svelte +133 -0
  147. package/svelte-demo-app/src/components/PostsLiveQueryDemo.svelte +330 -0
  148. package/svelte-demo-app/src/components/TypeScriptDemo.svelte +251 -0
  149. package/svelte-demo-app/src/database/Database.ts +29 -0
  150. package/svelte-demo-app/src/entities/Post.ts +46 -0
  151. package/svelte-demo-app/src/entities/PostTag.ts +22 -0
  152. package/svelte-demo-app/src/entities/Profile.ts +39 -0
  153. package/svelte-demo-app/src/entities/Tag.ts +33 -0
  154. package/svelte-demo-app/src/entities/User.ts +62 -0
  155. package/svelte-demo-app/src/lib/database/Database.ts +30 -0
  156. package/svelte-demo-app/src/lib/entities/Post.ts +47 -0
  157. package/svelte-demo-app/src/lib/entities/PostTag.ts +23 -0
  158. package/svelte-demo-app/src/lib/entities/Profile.ts +40 -0
  159. package/svelte-demo-app/src/lib/entities/Tag.ts +34 -0
  160. package/svelte-demo-app/src/lib/entities/User.ts +59 -0
  161. package/svelte-demo-app/src/lib/index.ts +7 -0
  162. package/svelte-demo-app/src/lib/migrations/001-add-user-email-index.ts +17 -0
  163. package/svelte-demo-app/src/lib/migrations/002-add-post-category.ts +37 -0
  164. package/svelte-demo-app/src/lib/migrations/index.ts +8 -0
  165. package/svelte-demo-app/src/migrations/001-add-user-email-index.ts +17 -0
  166. package/svelte-demo-app/src/migrations/002-add-post-category.ts +37 -0
  167. package/svelte-demo-app/src/migrations/index.ts +8 -0
  168. package/svelte-demo-app/src/routes/+layout.js +3 -0
  169. package/svelte-demo-app/src/routes/+layout.svelte +228 -0
  170. package/svelte-demo-app/src/routes/+page.js +3 -0
  171. package/svelte-demo-app/src/routes/+page.svelte +1305 -0
  172. package/svelte-demo-app/src/stores/appStore.js +603 -0
  173. package/svelte-demo-app/svelte.config.js +18 -0
  174. package/svelte-demo-app/tsconfig.json +14 -0
  175. package/svelte-demo-app/vite.config.ts +6 -0
  176. package/tests/aggregation.e2e.test.ts +87 -0
  177. package/tests/base-entity.e2e.test.ts +47 -0
  178. package/tests/database-api.e2e.test.ts +177 -0
  179. package/tests/decorators.e2e.test.ts +40 -0
  180. package/tests/entity-schema.e2e.test.ts +58 -0
  181. package/tests/relation-loader-table-names.test.ts +192 -0
  182. package/tests/relations.e2e.test.ts +178 -0
  183. package/tests/zod-runtime.e2e.test.ts +69 -0
  184. package/tsconfig.json +21 -0
  185. package/vitest.config.ts +21 -0
  186. package/vitest.setup.ts +27 -0
  187. package/vue-demo-app/README.md +61 -0
  188. package/vue-demo-app/index.html +13 -0
  189. package/vue-demo-app/package-lock.json +1537 -0
  190. package/vue-demo-app/package.json +27 -0
  191. package/vue-demo-app/src/App.vue +100 -0
  192. package/vue-demo-app/src/components/Actions.vue +135 -0
  193. package/vue-demo-app/src/components/CloudSyncDemo.vue +139 -0
  194. package/vue-demo-app/src/components/LiveQueryDemo.vue +122 -0
  195. package/vue-demo-app/src/components/MainInfo.vue +80 -0
  196. package/vue-demo-app/src/components/PostsLiveQueryDemo.vue +136 -0
  197. package/vue-demo-app/src/components/TypeScriptDemo.vue +133 -0
  198. package/vue-demo-app/src/database/Database.ts +29 -0
  199. package/vue-demo-app/src/entities/Post.ts +48 -0
  200. package/vue-demo-app/src/entities/PostTag.ts +24 -0
  201. package/vue-demo-app/src/entities/Profile.ts +41 -0
  202. package/vue-demo-app/src/entities/Tag.ts +35 -0
  203. package/vue-demo-app/src/entities/User.ts +61 -0
  204. package/vue-demo-app/src/main.ts +29 -0
  205. package/vue-demo-app/src/migrations/001-add-user-email-index.ts +23 -0
  206. package/vue-demo-app/src/migrations/002-add-post-category.ts +46 -0
  207. package/vue-demo-app/src/migrations/index.ts +14 -0
  208. package/vue-demo-app/src/services/useAppLogic.ts +565 -0
  209. package/vue-demo-app/src/services/useCloudSyncDemo.ts +84 -0
  210. package/vue-demo-app/src/services/useLiveQueryDemo.ts +82 -0
  211. package/vue-demo-app/src/services/usePostsLiveQueryDemo.ts +77 -0
  212. package/vue-demo-app/src/services/useTypeScriptDemo.ts +56 -0
  213. package/vue-demo-app/src/vite-env.d.ts +1 -0
  214. package/vue-demo-app/tsconfig.json +25 -0
  215. package/vue-demo-app/tsconfig.node.json +10 -0
  216. package/vue-demo-app/vite.config.ts +16 -0
@@ -0,0 +1,228 @@
1
+ <script>
2
+ import { onMount, setContext } from 'svelte';
3
+ import {
4
+ users,
5
+ tabIndex,
6
+ mobileOpen,
7
+ syncStatus,
8
+ userStats,
9
+ allUsers,
10
+ allPosts,
11
+ allProfiles,
12
+ postStats,
13
+ loadUsers,
14
+ loadLiveQueryData
15
+ } from '../stores/appStore.js';
16
+ import MainInfo from '../components/MainInfo.svelte';
17
+ import Actions from '../components/Actions.svelte';
18
+ import LiveQueryDemo from '../components/LiveQueryDemo.svelte';
19
+ import TypeScriptDemo from '../components/TypeScriptDemo.svelte';
20
+ import PostsLiveQueryDemo from '../components/PostsLiveQueryDemo.svelte';
21
+ import CloudSyncDemo from '../components/CloudSyncDemo.svelte';
22
+
23
+ // Set context for child components
24
+ setContext('users', users);
25
+ setContext('tabIndex', tabIndex);
26
+ setContext('mobileOpen', mobileOpen);
27
+ setContext('syncStatus', syncStatus);
28
+ setContext('userStats', userStats);
29
+ setContext('allUsers', allUsers);
30
+ setContext('allPosts', allPosts);
31
+ setContext('allProfiles', allProfiles);
32
+ setContext('postStats', postStats);
33
+
34
+ onMount(() => {
35
+ loadUsers();
36
+ loadLiveQueryData();
37
+ });
38
+ </script>
39
+
40
+ <div class="app">
41
+ <header class="app-header">
42
+ <button class="menu-toggle" on:click={() => mobileOpen.update(open => !open)}>
43
+
44
+ </button>
45
+ <h1>Dexie ORM Demo</h1>
46
+ </header>
47
+
48
+ <nav class="sidebar" class:open={$mobileOpen}>
49
+ <div class="nav-items">
50
+ <button
51
+ class="nav-item"
52
+ class:active={$tabIndex === 0}
53
+ on:click={() => tabIndex.set(0)}
54
+ >
55
+ Admin
56
+ </button>
57
+ <button
58
+ class="nav-item"
59
+ class:active={$tabIndex === 1}
60
+ on:click={() => tabIndex.set(1)}
61
+ >
62
+ Cloud Sync
63
+ </button>
64
+ </div>
65
+ </nav>
66
+
67
+ <main class="main-content">
68
+ <div class="content">
69
+ {#if $tabIndex === 0}
70
+ <MainInfo />
71
+ <Actions />
72
+ <LiveQueryDemo />
73
+ <TypeScriptDemo />
74
+ <PostsLiveQueryDemo />
75
+ {/if}
76
+ {#if $tabIndex === 1}
77
+ <CloudSyncDemo />
78
+ {/if}
79
+ </div>
80
+ </main>
81
+ </div>
82
+
83
+ <style>
84
+ .app {
85
+ display: flex;
86
+ flex-direction: column;
87
+ min-height: 100vh;
88
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
89
+ }
90
+
91
+ .app-header {
92
+ position: fixed;
93
+ top: 0;
94
+ left: 0;
95
+ right: 0;
96
+ background: #1976d2;
97
+ color: white;
98
+ padding: 16px;
99
+ display: flex;
100
+ align-items: center;
101
+ gap: 16px;
102
+ box-shadow: 0 2px 4px rgba(0,0,0,0.1);
103
+ z-index: 1001;
104
+ }
105
+
106
+ .menu-toggle {
107
+ background: none;
108
+ border: none;
109
+ color: white;
110
+ font-size: 1.5rem;
111
+ cursor: pointer;
112
+ padding: 8px;
113
+ border-radius: 4px;
114
+ transition: background-color 0.2s;
115
+ }
116
+
117
+ .menu-toggle:hover {
118
+ background: rgba(255,255,255,0.1);
119
+ }
120
+
121
+ .app-header h1 {
122
+ margin: 0;
123
+ font-size: 1.5rem;
124
+ }
125
+
126
+ .sidebar {
127
+ position: fixed;
128
+ top: 80px;
129
+ left: -250px;
130
+ width: 250px;
131
+ height: calc(100vh - 80px);
132
+ background: white;
133
+ border-right: 1px solid #ddd;
134
+ transition: left 0.3s ease;
135
+ z-index: 1000;
136
+ box-shadow: 2px 0 4px rgba(0,0,0,0.1);
137
+ }
138
+
139
+ .sidebar.open {
140
+ left: 0;
141
+ }
142
+
143
+ .nav-items {
144
+ padding: 20px 0 0 0;
145
+ display: flex;
146
+ flex-direction: column;
147
+ }
148
+
149
+ .nav-item {
150
+ background: none;
151
+ border: none;
152
+ padding: 16px 24px;
153
+ text-align: left;
154
+ cursor: pointer;
155
+ font-size: 1rem;
156
+ color: #333;
157
+ transition: all 0.2s;
158
+ border-left: 3px solid transparent;
159
+ }
160
+
161
+ .nav-item:hover {
162
+ background: #f5f5f5;
163
+ }
164
+
165
+ .nav-item.active {
166
+ background: #e3f2fd;
167
+ color: #1976d2;
168
+ border-left-color: #1976d2;
169
+ }
170
+
171
+ .main-content {
172
+ flex: 1;
173
+ margin-top: 80px;
174
+ margin-left: 0;
175
+ transition: margin-left 0.3s ease;
176
+ }
177
+
178
+ .content {
179
+ padding: 24px;
180
+ max-width: 1200px;
181
+ margin: 0 auto;
182
+ }
183
+
184
+ /* Desktop styles */
185
+ @media (min-width: 768px) {
186
+ .menu-toggle {
187
+ display: none;
188
+ }
189
+
190
+ .sidebar {
191
+ position: fixed;
192
+ top: 80px;
193
+ left: 0;
194
+ width: 250px;
195
+ height: calc(100vh - 80px);
196
+ box-shadow: 2px 0 4px rgba(0,0,0,0.1);
197
+ border-right: 1px solid #ddd;
198
+ }
199
+
200
+ .app {
201
+ flex-direction: row;
202
+ }
203
+
204
+ .main-content {
205
+ margin-left: 250px;
206
+ margin-top: 80px;
207
+ flex: 1;
208
+ }
209
+
210
+ .nav-items {
211
+ padding: 20px 0;
212
+ }
213
+ }
214
+
215
+ /* Mobile overlay */
216
+ @media (max-width: 767px) {
217
+ .sidebar.open::before {
218
+ content: '';
219
+ position: fixed;
220
+ top: 0;
221
+ left: 0;
222
+ right: 0;
223
+ bottom: 0;
224
+ background: rgba(0,0,0,0.5);
225
+ z-index: -1;
226
+ }
227
+ }
228
+ </style>
@@ -0,0 +1,3 @@
1
+ // Disable SSR for this page to allow IndexedDB to work
2
+ export const ssr = false;
3
+ export const prerender = false;