@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.
- package/.vscode/extensions.json +5 -0
- package/README.md +1280 -0
- package/angular-demo-app/README.md +84 -0
- package/angular-demo-app/angular.json +109 -0
- package/angular-demo-app/package-lock.json +14215 -0
- package/angular-demo-app/package.json +41 -0
- package/angular-demo-app/src/app/app.component.ts +481 -0
- package/angular-demo-app/src/app/app.routes.ts +8 -0
- package/angular-demo-app/src/app/components/actions.component.ts +202 -0
- package/angular-demo-app/src/app/components/cloud-sync-demo.component.ts +296 -0
- package/angular-demo-app/src/app/components/live-query-demo.component.ts +307 -0
- package/angular-demo-app/src/app/components/main-info.component.ts +148 -0
- package/angular-demo-app/src/app/components/posts-live-query-demo.component.ts +336 -0
- package/angular-demo-app/src/app/components/typescript-demo.component.ts +268 -0
- package/angular-demo-app/src/entities/post-tag.entity.ts +25 -0
- package/angular-demo-app/src/entities/post.entity.ts +49 -0
- package/angular-demo-app/src/entities/profile.entity.ts +42 -0
- package/angular-demo-app/src/entities/tag.entity.ts +36 -0
- package/angular-demo-app/src/entities/user.entity.ts +59 -0
- package/angular-demo-app/src/favicon.ico +1 -0
- package/angular-demo-app/src/index.html +16 -0
- package/angular-demo-app/src/main.ts +13 -0
- package/angular-demo-app/src/services/app-logic.service.ts +449 -0
- package/angular-demo-app/src/services/cloud-sync.service.ts +95 -0
- package/angular-demo-app/src/services/database.service.ts +26 -0
- package/angular-demo-app/src/services/live-query.service.ts +63 -0
- package/angular-demo-app/src/services/posts-live-query.service.ts +86 -0
- package/angular-demo-app/src/services/typescript-demo.service.ts +59 -0
- package/angular-demo-app/src/styles.scss +50 -0
- package/angular-demo-app/tsconfig.app.json +13 -0
- package/angular-demo-app/tsconfig.json +34 -0
- package/angular-demo-app/tsconfig.spec.json +13 -0
- package/dist/Database.d.ts +206 -0
- package/dist/Database.js +288 -0
- package/dist/decorators/Column.d.ts +79 -0
- package/dist/decorators/Column.js +236 -0
- package/dist/decorators/Entity.d.ts +32 -0
- package/dist/decorators/Entity.js +44 -0
- package/dist/decorators/Relation.d.ts +70 -0
- package/dist/decorators/Relation.js +120 -0
- package/dist/decorators/index.d.ts +3 -0
- package/dist/decorators/index.js +3 -0
- package/dist/errors/ValidationError.d.ts +4 -0
- package/dist/errors/ValidationError.js +8 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.js +7 -0
- package/dist/metadata/Column.d.ts +8 -0
- package/dist/metadata/Column.js +44 -0
- package/dist/metadata/Entity.d.ts +11 -0
- package/dist/metadata/Entity.js +21 -0
- package/dist/metadata/Relation.d.ts +20 -0
- package/dist/metadata/Relation.js +74 -0
- package/dist/metadata/index.d.ts +3 -0
- package/dist/metadata/index.js +3 -0
- package/dist/services/AggregationService.d.ts +38 -0
- package/dist/services/AggregationService.js +229 -0
- package/dist/services/BaseEntity.d.ts +32 -0
- package/dist/services/BaseEntity.js +62 -0
- package/dist/services/CloudSyncService.d.ts +100 -0
- package/dist/services/CloudSyncService.js +196 -0
- package/dist/services/DecoratorUtils.d.ts +12 -0
- package/dist/services/DecoratorUtils.js +10 -0
- package/dist/services/EntityFactory.d.ts +25 -0
- package/dist/services/EntityFactory.js +27 -0
- package/dist/services/EntityRegistry.d.ts +61 -0
- package/dist/services/EntityRegistry.js +56 -0
- package/dist/services/EntitySchema.d.ts +56 -0
- package/dist/services/EntitySchema.js +125 -0
- package/dist/services/MigrationManager.d.ts +70 -0
- package/dist/services/MigrationManager.js +181 -0
- package/dist/services/RelationLoader.d.ts +66 -0
- package/dist/services/RelationLoader.js +310 -0
- package/dist/services/SchemaBuilder.d.ts +68 -0
- package/dist/services/SchemaBuilder.js +191 -0
- package/dist/services/index.d.ts +7 -0
- package/dist/services/index.js +7 -0
- package/dist/types.d.ts +152 -0
- package/dist/types.js +1 -0
- package/dist/utils/logger.d.ts +12 -0
- package/dist/utils/logger.js +16 -0
- package/eslint.config.js +49 -0
- package/homepage/favicon.svg +36 -0
- package/homepage/index.html +1725 -0
- package/package.json +78 -0
- package/react-demo-app/README.md +61 -0
- package/react-demo-app/eslint.config.js +60 -0
- package/react-demo-app/index.html +13 -0
- package/react-demo-app/package-lock.json +4955 -0
- package/react-demo-app/package.json +39 -0
- package/react-demo-app/src/App.tsx +172 -0
- package/react-demo-app/src/assets/react.svg +1 -0
- package/react-demo-app/src/components/Actions.tsx +171 -0
- package/react-demo-app/src/components/CloudSyncDemo.tsx +191 -0
- package/react-demo-app/src/components/LiveQueryDemo.tsx +122 -0
- package/react-demo-app/src/components/MainInfo.tsx +75 -0
- package/react-demo-app/src/components/PostsLiveQueryDemo.tsx +185 -0
- package/react-demo-app/src/components/TypeScriptDemo.tsx +190 -0
- package/react-demo-app/src/database/Database.ts +30 -0
- package/react-demo-app/src/entities/Post.ts +48 -0
- package/react-demo-app/src/entities/PostTag.ts +26 -0
- package/react-demo-app/src/entities/Profile.ts +41 -0
- package/react-demo-app/src/entities/Tag.ts +35 -0
- package/react-demo-app/src/entities/User.ts +61 -0
- package/react-demo-app/src/hooks/useAppLogic.ts +565 -0
- package/react-demo-app/src/hooks/useCloudSyncDemo.ts +84 -0
- package/react-demo-app/src/hooks/useLiveQueryDemo.ts +68 -0
- package/react-demo-app/src/hooks/usePostsLiveQueryDemo.ts +64 -0
- package/react-demo-app/src/hooks/useTypeScriptDemo.ts +43 -0
- package/react-demo-app/src/index.css +26 -0
- package/react-demo-app/src/main.tsx +18 -0
- package/react-demo-app/src/migrations/001-add-user-email-index.ts +17 -0
- package/react-demo-app/src/migrations/002-add-post-category.ts +37 -0
- package/react-demo-app/src/migrations/index.ts +8 -0
- package/react-demo-app/src/vite-env.d.ts +1 -0
- package/react-demo-app/tsconfig.app.json +22 -0
- package/react-demo-app/tsconfig.json +6 -0
- package/react-demo-app/vite.config.ts +10 -0
- package/src/Database.ts +405 -0
- package/src/errors/ValidationError.ts +9 -0
- package/src/index.ts +13 -0
- package/src/metadata/Column.ts +74 -0
- package/src/metadata/Entity.ts +42 -0
- package/src/metadata/Relation.ts +121 -0
- package/src/metadata/index.ts +5 -0
- package/src/services/AggregationService.ts +348 -0
- package/src/services/BaseEntity.ts +77 -0
- package/src/services/CloudSyncService.ts +248 -0
- package/src/services/EntityFactory.ts +35 -0
- package/src/services/EntityRegistry.ts +109 -0
- package/src/services/EntitySchema.ts +154 -0
- package/src/services/MigrationManager.ts +276 -0
- package/src/services/RelationLoader.ts +532 -0
- package/src/services/SchemaBuilder.ts +237 -0
- package/src/services/index.ts +7 -0
- package/src/types.d.ts +1 -0
- package/src/types.ts +169 -0
- package/src/utils/logger.ts +40 -0
- package/svelte-demo-app/README.md +61 -0
- package/svelte-demo-app/package-lock.json +3000 -0
- package/svelte-demo-app/package.json +30 -0
- package/svelte-demo-app/src/app.d.ts +12 -0
- package/svelte-demo-app/src/app.html +13 -0
- package/svelte-demo-app/src/components/Actions.svelte +121 -0
- package/svelte-demo-app/src/components/CloudSyncDemo.svelte +333 -0
- package/svelte-demo-app/src/components/LiveQueryDemo.svelte +191 -0
- package/svelte-demo-app/src/components/MainInfo.svelte +133 -0
- package/svelte-demo-app/src/components/PostsLiveQueryDemo.svelte +330 -0
- package/svelte-demo-app/src/components/TypeScriptDemo.svelte +251 -0
- package/svelte-demo-app/src/database/Database.ts +29 -0
- package/svelte-demo-app/src/entities/Post.ts +46 -0
- package/svelte-demo-app/src/entities/PostTag.ts +22 -0
- package/svelte-demo-app/src/entities/Profile.ts +39 -0
- package/svelte-demo-app/src/entities/Tag.ts +33 -0
- package/svelte-demo-app/src/entities/User.ts +62 -0
- package/svelte-demo-app/src/lib/database/Database.ts +30 -0
- package/svelte-demo-app/src/lib/entities/Post.ts +47 -0
- package/svelte-demo-app/src/lib/entities/PostTag.ts +23 -0
- package/svelte-demo-app/src/lib/entities/Profile.ts +40 -0
- package/svelte-demo-app/src/lib/entities/Tag.ts +34 -0
- package/svelte-demo-app/src/lib/entities/User.ts +59 -0
- package/svelte-demo-app/src/lib/index.ts +7 -0
- package/svelte-demo-app/src/lib/migrations/001-add-user-email-index.ts +17 -0
- package/svelte-demo-app/src/lib/migrations/002-add-post-category.ts +37 -0
- package/svelte-demo-app/src/lib/migrations/index.ts +8 -0
- package/svelte-demo-app/src/migrations/001-add-user-email-index.ts +17 -0
- package/svelte-demo-app/src/migrations/002-add-post-category.ts +37 -0
- package/svelte-demo-app/src/migrations/index.ts +8 -0
- package/svelte-demo-app/src/routes/+layout.js +3 -0
- package/svelte-demo-app/src/routes/+layout.svelte +228 -0
- package/svelte-demo-app/src/routes/+page.js +3 -0
- package/svelte-demo-app/src/routes/+page.svelte +1305 -0
- package/svelte-demo-app/src/stores/appStore.js +603 -0
- package/svelte-demo-app/svelte.config.js +18 -0
- package/svelte-demo-app/tsconfig.json +14 -0
- package/svelte-demo-app/vite.config.ts +6 -0
- package/tests/aggregation.e2e.test.ts +87 -0
- package/tests/base-entity.e2e.test.ts +47 -0
- package/tests/database-api.e2e.test.ts +177 -0
- package/tests/decorators.e2e.test.ts +40 -0
- package/tests/entity-schema.e2e.test.ts +58 -0
- package/tests/relation-loader-table-names.test.ts +192 -0
- package/tests/relations.e2e.test.ts +178 -0
- package/tests/zod-runtime.e2e.test.ts +69 -0
- package/tsconfig.json +21 -0
- package/vitest.config.ts +21 -0
- package/vitest.setup.ts +27 -0
- package/vue-demo-app/README.md +61 -0
- package/vue-demo-app/index.html +13 -0
- package/vue-demo-app/package-lock.json +1537 -0
- package/vue-demo-app/package.json +27 -0
- package/vue-demo-app/src/App.vue +100 -0
- package/vue-demo-app/src/components/Actions.vue +135 -0
- package/vue-demo-app/src/components/CloudSyncDemo.vue +139 -0
- package/vue-demo-app/src/components/LiveQueryDemo.vue +122 -0
- package/vue-demo-app/src/components/MainInfo.vue +80 -0
- package/vue-demo-app/src/components/PostsLiveQueryDemo.vue +136 -0
- package/vue-demo-app/src/components/TypeScriptDemo.vue +133 -0
- package/vue-demo-app/src/database/Database.ts +29 -0
- package/vue-demo-app/src/entities/Post.ts +48 -0
- package/vue-demo-app/src/entities/PostTag.ts +24 -0
- package/vue-demo-app/src/entities/Profile.ts +41 -0
- package/vue-demo-app/src/entities/Tag.ts +35 -0
- package/vue-demo-app/src/entities/User.ts +61 -0
- package/vue-demo-app/src/main.ts +29 -0
- package/vue-demo-app/src/migrations/001-add-user-email-index.ts +23 -0
- package/vue-demo-app/src/migrations/002-add-post-category.ts +46 -0
- package/vue-demo-app/src/migrations/index.ts +14 -0
- package/vue-demo-app/src/services/useAppLogic.ts +565 -0
- package/vue-demo-app/src/services/useCloudSyncDemo.ts +84 -0
- package/vue-demo-app/src/services/useLiveQueryDemo.ts +82 -0
- package/vue-demo-app/src/services/usePostsLiveQueryDemo.ts +77 -0
- package/vue-demo-app/src/services/useTypeScriptDemo.ts +56 -0
- package/vue-demo-app/src/vite-env.d.ts +1 -0
- package/vue-demo-app/tsconfig.json +25 -0
- package/vue-demo-app/tsconfig.node.json +10 -0
- package/vue-demo-app/vite.config.ts +16 -0
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
# Angular Demo App
|
|
2
|
+
|
|
3
|
+
This is a demonstration application showcasing the capabilities of the Dexie ORM library for IndexedDB, built with Angular 17 and Material UI.
|
|
4
|
+
|
|
5
|
+
## Features
|
|
6
|
+
|
|
7
|
+
- **Entity Configuration**: Define entities using `defineEntity()` method
|
|
8
|
+
- **Automatic Schema**: Primary keys, indexes, and unique constraints
|
|
9
|
+
- **Relations**: One-to-one, one-to-many, and many-to-many relationships
|
|
10
|
+
- **Zod Validation**: Runtime validation with Zod schemas
|
|
11
|
+
- **Aggregations**: Count, average, sum operations
|
|
12
|
+
- **Live Queries**: Real-time data updates with reactive services
|
|
13
|
+
- **TypeScript**: Full type safety throughout the application
|
|
14
|
+
- **Cloud Sync**: Integration with Dexie Cloud (demo)
|
|
15
|
+
|
|
16
|
+
## Quick Start
|
|
17
|
+
|
|
18
|
+
1. **Install dependencies:**
|
|
19
|
+
```bash
|
|
20
|
+
npm install
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
2. **Start development server:**
|
|
24
|
+
```bash
|
|
25
|
+
npm start
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
3. **Open in browser:**
|
|
29
|
+
Navigate to `http://localhost:4200`
|
|
30
|
+
|
|
31
|
+
## Architecture
|
|
32
|
+
|
|
33
|
+
The application follows Angular best practices with clear separation of concerns:
|
|
34
|
+
|
|
35
|
+
### Services (Business Logic)
|
|
36
|
+
- `AppLogicService`: Main application logic and state management
|
|
37
|
+
- `LiveQueryService`: Live query data management
|
|
38
|
+
- `TypeScriptDemoService`: TypeScript demo functionality
|
|
39
|
+
- `PostsLiveQueryService`: Posts-specific live queries
|
|
40
|
+
- `CloudSyncService`: Cloud synchronization features
|
|
41
|
+
- `DatabaseService`: Database connection and configuration
|
|
42
|
+
|
|
43
|
+
### Components (Views)
|
|
44
|
+
- `AppComponent`: Main application container with navigation
|
|
45
|
+
- `MainInfoComponent`: Library overview and features
|
|
46
|
+
- `ActionsComponent`: Admin actions and user management
|
|
47
|
+
- `LiveQueryDemoComponent`: Live query demonstrations
|
|
48
|
+
- `TypeScriptDemoComponent`: TypeScript typing examples
|
|
49
|
+
- `PostsLiveQueryDemoComponent`: Advanced live query features
|
|
50
|
+
- `CloudSyncDemoComponent`: Cloud synchronization interface
|
|
51
|
+
|
|
52
|
+
### Entities
|
|
53
|
+
- `UserEntity`: User data model
|
|
54
|
+
- `ProfileEntity`: User profile data model
|
|
55
|
+
- `PostEntity`: Blog post data model
|
|
56
|
+
- `TagEntity`: Tag data model
|
|
57
|
+
- `PostTagEntity`: Many-to-many relationship entity
|
|
58
|
+
|
|
59
|
+
## Key Features Demonstrated
|
|
60
|
+
|
|
61
|
+
1. **Entity Definition**: Using `defineEntity()` instead of decorators
|
|
62
|
+
2. **Database Operations**: CRUD operations with relations
|
|
63
|
+
3. **Live Updates**: Reactive data with Angular services
|
|
64
|
+
4. **Type Safety**: Full TypeScript integration
|
|
65
|
+
5. **Responsive Design**: Material UI with mobile support
|
|
66
|
+
6. **Error Handling**: Zod validation and error management
|
|
67
|
+
|
|
68
|
+
## Development
|
|
69
|
+
|
|
70
|
+
- **Build**: `npm run build`
|
|
71
|
+
- **Test**: `npm test`
|
|
72
|
+
- **Watch**: `npm run watch`
|
|
73
|
+
|
|
74
|
+
## Dependencies
|
|
75
|
+
|
|
76
|
+
- Angular 17
|
|
77
|
+
- Angular Material
|
|
78
|
+
- Dexie ORM
|
|
79
|
+
- TypeScript
|
|
80
|
+
- RxJS
|
|
81
|
+
|
|
82
|
+
## More Information
|
|
83
|
+
|
|
84
|
+
For more information visit our official [page](https://idb-orm.com).
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "./node_modules/@angular/cli/lib/config/schema.json",
|
|
3
|
+
"version": 1,
|
|
4
|
+
"newProjectRoot": "projects",
|
|
5
|
+
"projects": {
|
|
6
|
+
"angular-demo-app": {
|
|
7
|
+
"projectType": "application",
|
|
8
|
+
"schematics": {
|
|
9
|
+
"@schematics/angular:component": {
|
|
10
|
+
"style": "scss"
|
|
11
|
+
}
|
|
12
|
+
},
|
|
13
|
+
"root": "",
|
|
14
|
+
"sourceRoot": "src",
|
|
15
|
+
"prefix": "app",
|
|
16
|
+
"architect": {
|
|
17
|
+
"build": {
|
|
18
|
+
"builder": "@angular-devkit/build-angular:browser",
|
|
19
|
+
"options": {
|
|
20
|
+
"outputPath": "dist/angular-demo-app",
|
|
21
|
+
"index": "src/index.html",
|
|
22
|
+
"main": "src/main.ts",
|
|
23
|
+
"polyfills": [
|
|
24
|
+
"zone.js"
|
|
25
|
+
],
|
|
26
|
+
"tsConfig": "tsconfig.app.json",
|
|
27
|
+
"inlineStyleLanguage": "scss",
|
|
28
|
+
"assets": [
|
|
29
|
+
"src/favicon.ico",
|
|
30
|
+
"src/assets"
|
|
31
|
+
],
|
|
32
|
+
"styles": [
|
|
33
|
+
"@angular/material/prebuilt-themes/indigo-pink.css",
|
|
34
|
+
"src/styles.scss"
|
|
35
|
+
],
|
|
36
|
+
"scripts": []
|
|
37
|
+
},
|
|
38
|
+
"configurations": {
|
|
39
|
+
"production": {
|
|
40
|
+
"budgets": [
|
|
41
|
+
{
|
|
42
|
+
"type": "initial",
|
|
43
|
+
"maximumWarning": "500kb",
|
|
44
|
+
"maximumError": "1mb"
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
"type": "anyComponentStyle",
|
|
48
|
+
"maximumWarning": "2kb",
|
|
49
|
+
"maximumError": "4kb"
|
|
50
|
+
}
|
|
51
|
+
],
|
|
52
|
+
"outputHashing": "all"
|
|
53
|
+
},
|
|
54
|
+
"development": {
|
|
55
|
+
"buildOptimizer": false,
|
|
56
|
+
"optimization": false,
|
|
57
|
+
"vendorChunk": true,
|
|
58
|
+
"extractLicenses": false,
|
|
59
|
+
"sourceMap": true,
|
|
60
|
+
"namedChunks": true
|
|
61
|
+
}
|
|
62
|
+
},
|
|
63
|
+
"defaultConfiguration": "production"
|
|
64
|
+
},
|
|
65
|
+
"serve": {
|
|
66
|
+
"builder": "@angular-devkit/build-angular:dev-server",
|
|
67
|
+
"configurations": {
|
|
68
|
+
"production": {
|
|
69
|
+
"buildTarget": "angular-demo-app:build:production"
|
|
70
|
+
},
|
|
71
|
+
"development": {
|
|
72
|
+
"buildTarget": "angular-demo-app:build:development"
|
|
73
|
+
}
|
|
74
|
+
},
|
|
75
|
+
"defaultConfiguration": "development"
|
|
76
|
+
},
|
|
77
|
+
"extract-i18n": {
|
|
78
|
+
"builder": "@angular-devkit/build-angular:extract-i18n",
|
|
79
|
+
"options": {
|
|
80
|
+
"buildTarget": "angular-demo-app:build"
|
|
81
|
+
}
|
|
82
|
+
},
|
|
83
|
+
"test": {
|
|
84
|
+
"builder": "@angular-devkit/build-angular:karma",
|
|
85
|
+
"options": {
|
|
86
|
+
"polyfills": [
|
|
87
|
+
"zone.js",
|
|
88
|
+
"zone.js/testing"
|
|
89
|
+
],
|
|
90
|
+
"tsConfig": "tsconfig.spec.json",
|
|
91
|
+
"inlineStyleLanguage": "scss",
|
|
92
|
+
"assets": [
|
|
93
|
+
"src/favicon.ico",
|
|
94
|
+
"src/assets"
|
|
95
|
+
],
|
|
96
|
+
"styles": [
|
|
97
|
+
"@angular/material/prebuilt-themes/indigo-pink.css",
|
|
98
|
+
"src/styles.scss"
|
|
99
|
+
],
|
|
100
|
+
"scripts": []
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
},
|
|
106
|
+
"cli": {
|
|
107
|
+
"analytics": false
|
|
108
|
+
}
|
|
109
|
+
}
|