Spaces:
Running
on
CPU Upgrade
Running
on
CPU Upgrade
refacto models API, now connected to hugging face api + wip submit model through lora studio
Browse files- package-lock.json +676 -0
- package.json +3 -0
- prisma/dev.db +0 -0
- prisma/migrations/20240104143521_init/migration.sql +16 -0
- prisma/migrations/20240104145615_init/migration.sql +25 -0
- prisma/migrations/20240104153500_init/migration.sql +2 -0
- prisma/migrations/20240104154419_init/migration.sql +25 -0
- prisma/migrations/migration_lock.toml +3 -0
- prisma/schema.prisma +24 -0
- src/lib/components/Loading.svelte +23 -0
- src/lib/components/dialog/Dialog.svelte +37 -0
- src/lib/components/fields/Input.svelte +8 -2
- src/lib/components/models/Card.svelte +7 -3
- src/lib/components/models/Submit.svelte +32 -0
- src/lib/prisma.ts +4 -0
- src/lib/type.ts +5 -8
- src/lib/utils/loras.json +1 -1
- src/routes/api/bulk-create-models/+server.ts +53 -0
- src/routes/api/models/+server.ts +23 -26
- src/routes/models/+page.svelte +26 -5
- vite.config.ts +5 -1
package-lock.json
CHANGED
@@ -9,6 +9,7 @@
|
|
9 |
"version": "0.0.1",
|
10 |
"dependencies": {
|
11 |
"@iconify/svelte": "^3.1.4",
|
|
|
12 |
"@sveltejs/adapter-node": "^1.3.1",
|
13 |
"svelte-infinite-scroll": "^2.0.1"
|
14 |
},
|
@@ -16,6 +17,7 @@
|
|
16 |
"@fontsource/fira-mono": "^4.5.10",
|
17 |
"@neoconfetti/svelte": "^1.0.0",
|
18 |
"@sveltejs/adapter-auto": "^2.0.0",
|
|
|
19 |
"@sveltejs/kit": "^1.27.4",
|
20 |
"@types/cookie": "^0.5.1",
|
21 |
"@typescript-eslint/eslint-plugin": "^6.0.0",
|
@@ -27,6 +29,7 @@
|
|
27 |
"postcss": "^8.4.32",
|
28 |
"prettier": "^3.0.0",
|
29 |
"prettier-plugin-svelte": "^3.0.0",
|
|
|
30 |
"sass": "^1.69.5",
|
31 |
"svelte": "^4.2.7",
|
32 |
"svelte-check": "^3.6.0",
|
@@ -69,6 +72,16 @@
|
|
69 |
"node": ">=6.0.0"
|
70 |
}
|
71 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
72 |
"node_modules/@esbuild/android-arm": {
|
73 |
"version": "0.18.20",
|
74 |
"resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.20.tgz",
|
@@ -521,6 +534,456 @@
|
|
521 |
"resolved": "https://registry.npmjs.org/@iconify/types/-/types-2.0.0.tgz",
|
522 |
"integrity": "sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg=="
|
523 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
524 |
"node_modules/@jridgewell/gen-mapping": {
|
525 |
"version": "0.3.3",
|
526 |
"resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz",
|
@@ -610,6 +1073,68 @@
|
|
610 |
"resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.24.tgz",
|
611 |
"integrity": "sha512-2LuNTFBIO0m7kKIQvvPHN6UE63VjpmL9rnEEaOOaiSPbZK+zUOYIzBAWcED+3XYzhYsd/0mD57VdxAEqqV52CQ=="
|
612 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
613 |
"node_modules/@rollup/plugin-commonjs": {
|
614 |
"version": "25.0.7",
|
615 |
"resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-25.0.7.tgz",
|
@@ -779,6 +1304,17 @@
|
|
779 |
"@sveltejs/kit": "^1.0.0"
|
780 |
}
|
781 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
782 |
"node_modules/@sveltejs/kit": {
|
783 |
"version": "1.28.0",
|
784 |
"resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-1.28.0.tgz",
|
@@ -1421,6 +1957,19 @@
|
|
1421 |
"periscopic": "^3.1.0"
|
1422 |
}
|
1423 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1424 |
"node_modules/color-convert": {
|
1425 |
"version": "2.0.1",
|
1426 |
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
|
@@ -1439,6 +1988,16 @@
|
|
1439 |
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
|
1440 |
"dev": true
|
1441 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1442 |
"node_modules/commander": {
|
1443 |
"version": "4.1.1",
|
1444 |
"resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz",
|
@@ -1552,6 +2111,15 @@
|
|
1552 |
"node": ">=8"
|
1553 |
}
|
1554 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1555 |
"node_modules/devalue": {
|
1556 |
"version": "4.3.2",
|
1557 |
"resolved": "https://registry.npmjs.org/devalue/-/devalue-4.3.2.tgz",
|
@@ -2148,6 +2716,18 @@
|
|
2148 |
"node": ">= 4"
|
2149 |
}
|
2150 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2151 |
"node_modules/immutable": {
|
2152 |
"version": "4.3.4",
|
2153 |
"resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.4.tgz",
|
@@ -2203,6 +2783,12 @@
|
|
2203 |
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
|
2204 |
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
|
2205 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
2206 |
"node_modules/is-binary-path": {
|
2207 |
"version": "2.1.0",
|
2208 |
"resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
|
@@ -2961,6 +3547,22 @@
|
|
2961 |
"svelte": "^3.2.0 || ^4.0.0-next.0 || ^5.0.0-next.0"
|
2962 |
}
|
2963 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2964 |
"node_modules/punycode": {
|
2965 |
"version": "2.3.1",
|
2966 |
"resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
|
@@ -3171,6 +3773,46 @@
|
|
3171 |
"resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.6.0.tgz",
|
3172 |
"integrity": "sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ=="
|
3173 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3174 |
"node_modules/shebang-command": {
|
3175 |
"version": "2.0.0",
|
3176 |
"resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
|
@@ -3192,6 +3834,15 @@
|
|
3192 |
"node": ">=8"
|
3193 |
}
|
3194 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3195 |
"node_modules/sirv": {
|
3196 |
"version": "2.0.3",
|
3197 |
"resolved": "https://registry.npmjs.org/sirv/-/sirv-2.0.3.tgz",
|
@@ -3426,6 +4077,18 @@
|
|
3426 |
"resolved": "https://registry.npmjs.org/svelte-infinite-scroll/-/svelte-infinite-scroll-2.0.1.tgz",
|
3427 |
"integrity": "sha512-goTHCfOHRDCs8C5MeSuIc6LlAQ8zVQ+M4Y3LyvrDjx5rqSSxSrdCuQwIyWYNcO6j6/mnqRro3QB64ClBzfn+Wg=="
|
3428 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3429 |
"node_modules/svelte-preprocess": {
|
3430 |
"version": "5.1.1",
|
3431 |
"resolved": "https://registry.npmjs.org/svelte-preprocess/-/svelte-preprocess-5.1.1.tgz",
|
@@ -3817,6 +4480,19 @@
|
|
3817 |
}
|
3818 |
}
|
3819 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3820 |
"node_modules/vitefu": {
|
3821 |
"version": "0.2.5",
|
3822 |
"resolved": "https://registry.npmjs.org/vitefu/-/vitefu-0.2.5.tgz",
|
|
|
9 |
"version": "0.0.1",
|
10 |
"dependencies": {
|
11 |
"@iconify/svelte": "^3.1.4",
|
12 |
+
"@prisma/client": "^5.7.1",
|
13 |
"@sveltejs/adapter-node": "^1.3.1",
|
14 |
"svelte-infinite-scroll": "^2.0.1"
|
15 |
},
|
|
|
17 |
"@fontsource/fira-mono": "^4.5.10",
|
18 |
"@neoconfetti/svelte": "^1.0.0",
|
19 |
"@sveltejs/adapter-auto": "^2.0.0",
|
20 |
+
"@sveltejs/enhanced-img": "^0.1.7",
|
21 |
"@sveltejs/kit": "^1.27.4",
|
22 |
"@types/cookie": "^0.5.1",
|
23 |
"@typescript-eslint/eslint-plugin": "^6.0.0",
|
|
|
29 |
"postcss": "^8.4.32",
|
30 |
"prettier": "^3.0.0",
|
31 |
"prettier-plugin-svelte": "^3.0.0",
|
32 |
+
"prisma": "^5.7.1",
|
33 |
"sass": "^1.69.5",
|
34 |
"svelte": "^4.2.7",
|
35 |
"svelte-check": "^3.6.0",
|
|
|
72 |
"node": ">=6.0.0"
|
73 |
}
|
74 |
},
|
75 |
+
"node_modules/@emnapi/runtime": {
|
76 |
+
"version": "0.44.0",
|
77 |
+
"resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-0.44.0.tgz",
|
78 |
+
"integrity": "sha512-ZX/etZEZw8DR7zAB1eVQT40lNo0jeqpb6dCgOvctB6FIQ5PoXfMuNY8+ayQfu8tNQbAB8gQWSSJupR8NxeiZXw==",
|
79 |
+
"dev": true,
|
80 |
+
"optional": true,
|
81 |
+
"dependencies": {
|
82 |
+
"tslib": "^2.4.0"
|
83 |
+
}
|
84 |
+
},
|
85 |
"node_modules/@esbuild/android-arm": {
|
86 |
"version": "0.18.20",
|
87 |
"resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.20.tgz",
|
|
|
534 |
"resolved": "https://registry.npmjs.org/@iconify/types/-/types-2.0.0.tgz",
|
535 |
"integrity": "sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg=="
|
536 |
},
|
537 |
+
"node_modules/@img/sharp-darwin-arm64": {
|
538 |
+
"version": "0.33.1",
|
539 |
+
"resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.33.1.tgz",
|
540 |
+
"integrity": "sha512-esr2BZ1x0bo+wl7Gx2hjssYhjrhUsD88VQulI0FrG8/otRQUOxLWHMBd1Y1qo2Gfg2KUvXNpT0ASnV9BzJCexw==",
|
541 |
+
"cpu": [
|
542 |
+
"arm64"
|
543 |
+
],
|
544 |
+
"dev": true,
|
545 |
+
"optional": true,
|
546 |
+
"os": [
|
547 |
+
"darwin"
|
548 |
+
],
|
549 |
+
"engines": {
|
550 |
+
"glibc": ">=2.26",
|
551 |
+
"node": "^18.17.0 || ^20.3.0 || >=21.0.0",
|
552 |
+
"npm": ">=9.6.5",
|
553 |
+
"pnpm": ">=7.1.0",
|
554 |
+
"yarn": ">=3.2.0"
|
555 |
+
},
|
556 |
+
"funding": {
|
557 |
+
"url": "https://opencollective.com/libvips"
|
558 |
+
},
|
559 |
+
"optionalDependencies": {
|
560 |
+
"@img/sharp-libvips-darwin-arm64": "1.0.0"
|
561 |
+
}
|
562 |
+
},
|
563 |
+
"node_modules/@img/sharp-darwin-x64": {
|
564 |
+
"version": "0.33.1",
|
565 |
+
"resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.33.1.tgz",
|
566 |
+
"integrity": "sha512-YrnuB3bXuWdG+hJlXtq7C73lF8ampkhU3tMxg5Hh+E7ikxbUVOU9nlNtVTloDXz6pRHt2y2oKJq7DY/yt+UXYw==",
|
567 |
+
"cpu": [
|
568 |
+
"x64"
|
569 |
+
],
|
570 |
+
"dev": true,
|
571 |
+
"optional": true,
|
572 |
+
"os": [
|
573 |
+
"darwin"
|
574 |
+
],
|
575 |
+
"engines": {
|
576 |
+
"glibc": ">=2.26",
|
577 |
+
"node": "^18.17.0 || ^20.3.0 || >=21.0.0",
|
578 |
+
"npm": ">=9.6.5",
|
579 |
+
"pnpm": ">=7.1.0",
|
580 |
+
"yarn": ">=3.2.0"
|
581 |
+
},
|
582 |
+
"funding": {
|
583 |
+
"url": "https://opencollective.com/libvips"
|
584 |
+
},
|
585 |
+
"optionalDependencies": {
|
586 |
+
"@img/sharp-libvips-darwin-x64": "1.0.0"
|
587 |
+
}
|
588 |
+
},
|
589 |
+
"node_modules/@img/sharp-libvips-darwin-arm64": {
|
590 |
+
"version": "1.0.0",
|
591 |
+
"resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.0.0.tgz",
|
592 |
+
"integrity": "sha512-VzYd6OwnUR81sInf3alj1wiokY50DjsHz5bvfnsFpxs5tqQxESoHtJO6xyksDs3RIkyhMWq2FufXo6GNSU9BMw==",
|
593 |
+
"cpu": [
|
594 |
+
"arm64"
|
595 |
+
],
|
596 |
+
"dev": true,
|
597 |
+
"optional": true,
|
598 |
+
"os": [
|
599 |
+
"darwin"
|
600 |
+
],
|
601 |
+
"engines": {
|
602 |
+
"macos": ">=11",
|
603 |
+
"npm": ">=9.6.5",
|
604 |
+
"pnpm": ">=7.1.0",
|
605 |
+
"yarn": ">=3.2.0"
|
606 |
+
},
|
607 |
+
"funding": {
|
608 |
+
"url": "https://opencollective.com/libvips"
|
609 |
+
}
|
610 |
+
},
|
611 |
+
"node_modules/@img/sharp-libvips-darwin-x64": {
|
612 |
+
"version": "1.0.0",
|
613 |
+
"resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.0.0.tgz",
|
614 |
+
"integrity": "sha512-dD9OznTlHD6aovRswaPNEy8dKtSAmNo4++tO7uuR4o5VxbVAOoEQ1uSmN4iFAdQneTHws1lkTZeiXPrcCkh6IA==",
|
615 |
+
"cpu": [
|
616 |
+
"x64"
|
617 |
+
],
|
618 |
+
"dev": true,
|
619 |
+
"optional": true,
|
620 |
+
"os": [
|
621 |
+
"darwin"
|
622 |
+
],
|
623 |
+
"engines": {
|
624 |
+
"macos": ">=10.13",
|
625 |
+
"npm": ">=9.6.5",
|
626 |
+
"pnpm": ">=7.1.0",
|
627 |
+
"yarn": ">=3.2.0"
|
628 |
+
},
|
629 |
+
"funding": {
|
630 |
+
"url": "https://opencollective.com/libvips"
|
631 |
+
}
|
632 |
+
},
|
633 |
+
"node_modules/@img/sharp-libvips-linux-arm": {
|
634 |
+
"version": "1.0.0",
|
635 |
+
"resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.0.0.tgz",
|
636 |
+
"integrity": "sha512-VwgD2eEikDJUk09Mn9Dzi1OW2OJFRQK+XlBTkUNmAWPrtj8Ly0yq05DFgu1VCMx2/DqCGQVi5A1dM9hTmxf3uw==",
|
637 |
+
"cpu": [
|
638 |
+
"arm"
|
639 |
+
],
|
640 |
+
"dev": true,
|
641 |
+
"optional": true,
|
642 |
+
"os": [
|
643 |
+
"linux"
|
644 |
+
],
|
645 |
+
"engines": {
|
646 |
+
"glibc": ">=2.28",
|
647 |
+
"npm": ">=9.6.5",
|
648 |
+
"pnpm": ">=7.1.0",
|
649 |
+
"yarn": ">=3.2.0"
|
650 |
+
},
|
651 |
+
"funding": {
|
652 |
+
"url": "https://opencollective.com/libvips"
|
653 |
+
}
|
654 |
+
},
|
655 |
+
"node_modules/@img/sharp-libvips-linux-arm64": {
|
656 |
+
"version": "1.0.0",
|
657 |
+
"resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.0.0.tgz",
|
658 |
+
"integrity": "sha512-xTYThiqEZEZc0PRU90yVtM3KE7lw1bKdnDQ9kCTHWbqWyHOe4NpPOtMGy27YnN51q0J5dqRrvicfPbALIOeAZA==",
|
659 |
+
"cpu": [
|
660 |
+
"arm64"
|
661 |
+
],
|
662 |
+
"dev": true,
|
663 |
+
"optional": true,
|
664 |
+
"os": [
|
665 |
+
"linux"
|
666 |
+
],
|
667 |
+
"engines": {
|
668 |
+
"glibc": ">=2.26",
|
669 |
+
"npm": ">=9.6.5",
|
670 |
+
"pnpm": ">=7.1.0",
|
671 |
+
"yarn": ">=3.2.0"
|
672 |
+
},
|
673 |
+
"funding": {
|
674 |
+
"url": "https://opencollective.com/libvips"
|
675 |
+
}
|
676 |
+
},
|
677 |
+
"node_modules/@img/sharp-libvips-linux-s390x": {
|
678 |
+
"version": "1.0.0",
|
679 |
+
"resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.0.0.tgz",
|
680 |
+
"integrity": "sha512-o9E46WWBC6JsBlwU4QyU9578G77HBDT1NInd+aERfxeOPbk0qBZHgoDsQmA2v9TbqJRWzoBPx1aLOhprBMgPjw==",
|
681 |
+
"cpu": [
|
682 |
+
"s390x"
|
683 |
+
],
|
684 |
+
"dev": true,
|
685 |
+
"optional": true,
|
686 |
+
"os": [
|
687 |
+
"linux"
|
688 |
+
],
|
689 |
+
"engines": {
|
690 |
+
"glibc": ">=2.28",
|
691 |
+
"npm": ">=9.6.5",
|
692 |
+
"pnpm": ">=7.1.0",
|
693 |
+
"yarn": ">=3.2.0"
|
694 |
+
},
|
695 |
+
"funding": {
|
696 |
+
"url": "https://opencollective.com/libvips"
|
697 |
+
}
|
698 |
+
},
|
699 |
+
"node_modules/@img/sharp-libvips-linux-x64": {
|
700 |
+
"version": "1.0.0",
|
701 |
+
"resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.0.0.tgz",
|
702 |
+
"integrity": "sha512-naldaJy4hSVhWBgEjfdBY85CAa4UO+W1nx6a1sWStHZ7EUfNiuBTTN2KUYT5dH1+p/xij1t2QSXfCiFJoC5S/Q==",
|
703 |
+
"cpu": [
|
704 |
+
"x64"
|
705 |
+
],
|
706 |
+
"dev": true,
|
707 |
+
"optional": true,
|
708 |
+
"os": [
|
709 |
+
"linux"
|
710 |
+
],
|
711 |
+
"engines": {
|
712 |
+
"glibc": ">=2.26",
|
713 |
+
"npm": ">=9.6.5",
|
714 |
+
"pnpm": ">=7.1.0",
|
715 |
+
"yarn": ">=3.2.0"
|
716 |
+
},
|
717 |
+
"funding": {
|
718 |
+
"url": "https://opencollective.com/libvips"
|
719 |
+
}
|
720 |
+
},
|
721 |
+
"node_modules/@img/sharp-libvips-linuxmusl-arm64": {
|
722 |
+
"version": "1.0.0",
|
723 |
+
"resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.0.0.tgz",
|
724 |
+
"integrity": "sha512-OdorplCyvmSAPsoJLldtLh3nLxRrkAAAOHsGWGDYfN0kh730gifK+UZb3dWORRa6EusNqCTjfXV4GxvgJ/nPDQ==",
|
725 |
+
"cpu": [
|
726 |
+
"arm64"
|
727 |
+
],
|
728 |
+
"dev": true,
|
729 |
+
"optional": true,
|
730 |
+
"os": [
|
731 |
+
"linux"
|
732 |
+
],
|
733 |
+
"engines": {
|
734 |
+
"musl": ">=1.2.2",
|
735 |
+
"npm": ">=9.6.5",
|
736 |
+
"pnpm": ">=7.1.0",
|
737 |
+
"yarn": ">=3.2.0"
|
738 |
+
},
|
739 |
+
"funding": {
|
740 |
+
"url": "https://opencollective.com/libvips"
|
741 |
+
}
|
742 |
+
},
|
743 |
+
"node_modules/@img/sharp-libvips-linuxmusl-x64": {
|
744 |
+
"version": "1.0.0",
|
745 |
+
"resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.0.0.tgz",
|
746 |
+
"integrity": "sha512-FW8iK6rJrg+X2jKD0Ajhjv6y74lToIBEvkZhl42nZt563FfxkCYacrXZtd+q/sRQDypQLzY5WdLkVTbJoPyqNg==",
|
747 |
+
"cpu": [
|
748 |
+
"x64"
|
749 |
+
],
|
750 |
+
"dev": true,
|
751 |
+
"optional": true,
|
752 |
+
"os": [
|
753 |
+
"linux"
|
754 |
+
],
|
755 |
+
"engines": {
|
756 |
+
"musl": ">=1.2.2",
|
757 |
+
"npm": ">=9.6.5",
|
758 |
+
"pnpm": ">=7.1.0",
|
759 |
+
"yarn": ">=3.2.0"
|
760 |
+
},
|
761 |
+
"funding": {
|
762 |
+
"url": "https://opencollective.com/libvips"
|
763 |
+
}
|
764 |
+
},
|
765 |
+
"node_modules/@img/sharp-linux-arm": {
|
766 |
+
"version": "0.33.1",
|
767 |
+
"resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.33.1.tgz",
|
768 |
+
"integrity": "sha512-Ii4X1vnzzI4j0+cucsrYA5ctrzU9ciXERfJR633S2r39CiD8npqH2GMj63uFZRCFt3E687IenAdbwIpQOJ5BNA==",
|
769 |
+
"cpu": [
|
770 |
+
"arm"
|
771 |
+
],
|
772 |
+
"dev": true,
|
773 |
+
"optional": true,
|
774 |
+
"os": [
|
775 |
+
"linux"
|
776 |
+
],
|
777 |
+
"engines": {
|
778 |
+
"glibc": ">=2.28",
|
779 |
+
"node": "^18.17.0 || ^20.3.0 || >=21.0.0",
|
780 |
+
"npm": ">=9.6.5",
|
781 |
+
"pnpm": ">=7.1.0",
|
782 |
+
"yarn": ">=3.2.0"
|
783 |
+
},
|
784 |
+
"funding": {
|
785 |
+
"url": "https://opencollective.com/libvips"
|
786 |
+
},
|
787 |
+
"optionalDependencies": {
|
788 |
+
"@img/sharp-libvips-linux-arm": "1.0.0"
|
789 |
+
}
|
790 |
+
},
|
791 |
+
"node_modules/@img/sharp-linux-arm64": {
|
792 |
+
"version": "0.33.1",
|
793 |
+
"resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.33.1.tgz",
|
794 |
+
"integrity": "sha512-59B5GRO2d5N3tIfeGHAbJps7cLpuWEQv/8ySd9109ohQ3kzyCACENkFVAnGPX00HwPTQcaBNF7HQYEfZyZUFfw==",
|
795 |
+
"cpu": [
|
796 |
+
"arm64"
|
797 |
+
],
|
798 |
+
"dev": true,
|
799 |
+
"optional": true,
|
800 |
+
"os": [
|
801 |
+
"linux"
|
802 |
+
],
|
803 |
+
"engines": {
|
804 |
+
"glibc": ">=2.26",
|
805 |
+
"node": "^18.17.0 || ^20.3.0 || >=21.0.0",
|
806 |
+
"npm": ">=9.6.5",
|
807 |
+
"pnpm": ">=7.1.0",
|
808 |
+
"yarn": ">=3.2.0"
|
809 |
+
},
|
810 |
+
"funding": {
|
811 |
+
"url": "https://opencollective.com/libvips"
|
812 |
+
},
|
813 |
+
"optionalDependencies": {
|
814 |
+
"@img/sharp-libvips-linux-arm64": "1.0.0"
|
815 |
+
}
|
816 |
+
},
|
817 |
+
"node_modules/@img/sharp-linux-s390x": {
|
818 |
+
"version": "0.33.1",
|
819 |
+
"resolved": "https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.33.1.tgz",
|
820 |
+
"integrity": "sha512-tRGrb2pHnFUXpOAj84orYNxHADBDIr0J7rrjwQrTNMQMWA4zy3StKmMvwsI7u3dEZcgwuMMooIIGWEWOjnmG8A==",
|
821 |
+
"cpu": [
|
822 |
+
"s390x"
|
823 |
+
],
|
824 |
+
"dev": true,
|
825 |
+
"optional": true,
|
826 |
+
"os": [
|
827 |
+
"linux"
|
828 |
+
],
|
829 |
+
"engines": {
|
830 |
+
"glibc": ">=2.28",
|
831 |
+
"node": "^18.17.0 || ^20.3.0 || >=21.0.0",
|
832 |
+
"npm": ">=9.6.5",
|
833 |
+
"pnpm": ">=7.1.0",
|
834 |
+
"yarn": ">=3.2.0"
|
835 |
+
},
|
836 |
+
"funding": {
|
837 |
+
"url": "https://opencollective.com/libvips"
|
838 |
+
},
|
839 |
+
"optionalDependencies": {
|
840 |
+
"@img/sharp-libvips-linux-s390x": "1.0.0"
|
841 |
+
}
|
842 |
+
},
|
843 |
+
"node_modules/@img/sharp-linux-x64": {
|
844 |
+
"version": "0.33.1",
|
845 |
+
"resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.33.1.tgz",
|
846 |
+
"integrity": "sha512-4y8osC0cAc1TRpy02yn5omBeloZZwS62fPZ0WUAYQiLhSFSpWJfY/gMrzKzLcHB9ulUV6ExFiu2elMaixKDbeg==",
|
847 |
+
"cpu": [
|
848 |
+
"x64"
|
849 |
+
],
|
850 |
+
"dev": true,
|
851 |
+
"optional": true,
|
852 |
+
"os": [
|
853 |
+
"linux"
|
854 |
+
],
|
855 |
+
"engines": {
|
856 |
+
"glibc": ">=2.26",
|
857 |
+
"node": "^18.17.0 || ^20.3.0 || >=21.0.0",
|
858 |
+
"npm": ">=9.6.5",
|
859 |
+
"pnpm": ">=7.1.0",
|
860 |
+
"yarn": ">=3.2.0"
|
861 |
+
},
|
862 |
+
"funding": {
|
863 |
+
"url": "https://opencollective.com/libvips"
|
864 |
+
},
|
865 |
+
"optionalDependencies": {
|
866 |
+
"@img/sharp-libvips-linux-x64": "1.0.0"
|
867 |
+
}
|
868 |
+
},
|
869 |
+
"node_modules/@img/sharp-linuxmusl-arm64": {
|
870 |
+
"version": "0.33.1",
|
871 |
+
"resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.33.1.tgz",
|
872 |
+
"integrity": "sha512-D3lV6clkqIKUizNS8K6pkuCKNGmWoKlBGh5p0sLO2jQERzbakhu4bVX1Gz+RS4vTZBprKlWaf+/Rdp3ni2jLfA==",
|
873 |
+
"cpu": [
|
874 |
+
"arm64"
|
875 |
+
],
|
876 |
+
"dev": true,
|
877 |
+
"optional": true,
|
878 |
+
"os": [
|
879 |
+
"linux"
|
880 |
+
],
|
881 |
+
"engines": {
|
882 |
+
"musl": ">=1.2.2",
|
883 |
+
"node": "^18.17.0 || ^20.3.0 || >=21.0.0",
|
884 |
+
"npm": ">=9.6.5",
|
885 |
+
"pnpm": ">=7.1.0",
|
886 |
+
"yarn": ">=3.2.0"
|
887 |
+
},
|
888 |
+
"funding": {
|
889 |
+
"url": "https://opencollective.com/libvips"
|
890 |
+
},
|
891 |
+
"optionalDependencies": {
|
892 |
+
"@img/sharp-libvips-linuxmusl-arm64": "1.0.0"
|
893 |
+
}
|
894 |
+
},
|
895 |
+
"node_modules/@img/sharp-linuxmusl-x64": {
|
896 |
+
"version": "0.33.1",
|
897 |
+
"resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.33.1.tgz",
|
898 |
+
"integrity": "sha512-LOGKNu5w8uu1evVqUAUKTix2sQu1XDRIYbsi5Q0c/SrXhvJ4QyOx+GaajxmOg5PZSsSnCYPSmhjHHsRBx06/wQ==",
|
899 |
+
"cpu": [
|
900 |
+
"x64"
|
901 |
+
],
|
902 |
+
"dev": true,
|
903 |
+
"optional": true,
|
904 |
+
"os": [
|
905 |
+
"linux"
|
906 |
+
],
|
907 |
+
"engines": {
|
908 |
+
"musl": ">=1.2.2",
|
909 |
+
"node": "^18.17.0 || ^20.3.0 || >=21.0.0",
|
910 |
+
"npm": ">=9.6.5",
|
911 |
+
"pnpm": ">=7.1.0",
|
912 |
+
"yarn": ">=3.2.0"
|
913 |
+
},
|
914 |
+
"funding": {
|
915 |
+
"url": "https://opencollective.com/libvips"
|
916 |
+
},
|
917 |
+
"optionalDependencies": {
|
918 |
+
"@img/sharp-libvips-linuxmusl-x64": "1.0.0"
|
919 |
+
}
|
920 |
+
},
|
921 |
+
"node_modules/@img/sharp-wasm32": {
|
922 |
+
"version": "0.33.1",
|
923 |
+
"resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.33.1.tgz",
|
924 |
+
"integrity": "sha512-vWI/sA+0p+92DLkpAMb5T6I8dg4z2vzCUnp8yvxHlwBpzN8CIcO3xlSXrLltSvK6iMsVMNswAv+ub77rsf25lA==",
|
925 |
+
"cpu": [
|
926 |
+
"wasm32"
|
927 |
+
],
|
928 |
+
"dev": true,
|
929 |
+
"optional": true,
|
930 |
+
"dependencies": {
|
931 |
+
"@emnapi/runtime": "^0.44.0"
|
932 |
+
},
|
933 |
+
"engines": {
|
934 |
+
"node": "^18.17.0 || ^20.3.0 || >=21.0.0",
|
935 |
+
"npm": ">=9.6.5",
|
936 |
+
"pnpm": ">=7.1.0",
|
937 |
+
"yarn": ">=3.2.0"
|
938 |
+
},
|
939 |
+
"funding": {
|
940 |
+
"url": "https://opencollective.com/libvips"
|
941 |
+
}
|
942 |
+
},
|
943 |
+
"node_modules/@img/sharp-win32-ia32": {
|
944 |
+
"version": "0.33.1",
|
945 |
+
"resolved": "https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.33.1.tgz",
|
946 |
+
"integrity": "sha512-/xhYkylsKL05R+NXGJc9xr2Tuw6WIVl2lubFJaFYfW4/MQ4J+dgjIo/T4qjNRizrqs/szF/lC9a5+updmY9jaQ==",
|
947 |
+
"cpu": [
|
948 |
+
"ia32"
|
949 |
+
],
|
950 |
+
"dev": true,
|
951 |
+
"optional": true,
|
952 |
+
"os": [
|
953 |
+
"win32"
|
954 |
+
],
|
955 |
+
"engines": {
|
956 |
+
"node": "^18.17.0 || ^20.3.0 || >=21.0.0",
|
957 |
+
"npm": ">=9.6.5",
|
958 |
+
"pnpm": ">=7.1.0",
|
959 |
+
"yarn": ">=3.2.0"
|
960 |
+
},
|
961 |
+
"funding": {
|
962 |
+
"url": "https://opencollective.com/libvips"
|
963 |
+
}
|
964 |
+
},
|
965 |
+
"node_modules/@img/sharp-win32-x64": {
|
966 |
+
"version": "0.33.1",
|
967 |
+
"resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.33.1.tgz",
|
968 |
+
"integrity": "sha512-XaM69X0n6kTEsp9tVYYLhXdg7Qj32vYJlAKRutxUsm1UlgQNx6BOhHwZPwukCGXBU2+tH87ip2eV1I/E8MQnZg==",
|
969 |
+
"cpu": [
|
970 |
+
"x64"
|
971 |
+
],
|
972 |
+
"dev": true,
|
973 |
+
"optional": true,
|
974 |
+
"os": [
|
975 |
+
"win32"
|
976 |
+
],
|
977 |
+
"engines": {
|
978 |
+
"node": "^18.17.0 || ^20.3.0 || >=21.0.0",
|
979 |
+
"npm": ">=9.6.5",
|
980 |
+
"pnpm": ">=7.1.0",
|
981 |
+
"yarn": ">=3.2.0"
|
982 |
+
},
|
983 |
+
"funding": {
|
984 |
+
"url": "https://opencollective.com/libvips"
|
985 |
+
}
|
986 |
+
},
|
987 |
"node_modules/@jridgewell/gen-mapping": {
|
988 |
"version": "0.3.3",
|
989 |
"resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz",
|
|
|
1073 |
"resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.24.tgz",
|
1074 |
"integrity": "sha512-2LuNTFBIO0m7kKIQvvPHN6UE63VjpmL9rnEEaOOaiSPbZK+zUOYIzBAWcED+3XYzhYsd/0mD57VdxAEqqV52CQ=="
|
1075 |
},
|
1076 |
+
"node_modules/@prisma/client": {
|
1077 |
+
"version": "5.7.1",
|
1078 |
+
"resolved": "https://registry.npmjs.org/@prisma/client/-/client-5.7.1.tgz",
|
1079 |
+
"integrity": "sha512-TUSa4nUcC4nf/e7X3jyO1pEd6XcI/TLRCA0KjkA46RDIpxUaRsBYEOqITwXRW2c0bMFyKcCRXrH4f7h4q9oOlg==",
|
1080 |
+
"hasInstallScript": true,
|
1081 |
+
"engines": {
|
1082 |
+
"node": ">=16.13"
|
1083 |
+
},
|
1084 |
+
"peerDependencies": {
|
1085 |
+
"prisma": "*"
|
1086 |
+
},
|
1087 |
+
"peerDependenciesMeta": {
|
1088 |
+
"prisma": {
|
1089 |
+
"optional": true
|
1090 |
+
}
|
1091 |
+
}
|
1092 |
+
},
|
1093 |
+
"node_modules/@prisma/debug": {
|
1094 |
+
"version": "5.7.1",
|
1095 |
+
"resolved": "https://registry.npmjs.org/@prisma/debug/-/debug-5.7.1.tgz",
|
1096 |
+
"integrity": "sha512-yrVSO/YZOxdeIxcBtZ5BaNqUfPrZkNsAKQIQg36cJKMxj/VYK3Vk5jMKkI+gQLl0KReo1YvX8GWKfV788SELjw==",
|
1097 |
+
"devOptional": true
|
1098 |
+
},
|
1099 |
+
"node_modules/@prisma/engines": {
|
1100 |
+
"version": "5.7.1",
|
1101 |
+
"resolved": "https://registry.npmjs.org/@prisma/engines/-/engines-5.7.1.tgz",
|
1102 |
+
"integrity": "sha512-R+Pqbra8tpLP2cvyiUpx+SIKglav3nTCpA+rn6826CThviQ8yvbNG0s8jNpo51vS9FuZO3pOkARqG062vKX7uA==",
|
1103 |
+
"devOptional": true,
|
1104 |
+
"hasInstallScript": true,
|
1105 |
+
"dependencies": {
|
1106 |
+
"@prisma/debug": "5.7.1",
|
1107 |
+
"@prisma/engines-version": "5.7.1-1.0ca5ccbcfa6bdc81c003cf549abe4269f59c41e5",
|
1108 |
+
"@prisma/fetch-engine": "5.7.1",
|
1109 |
+
"@prisma/get-platform": "5.7.1"
|
1110 |
+
}
|
1111 |
+
},
|
1112 |
+
"node_modules/@prisma/engines-version": {
|
1113 |
+
"version": "5.7.1-1.0ca5ccbcfa6bdc81c003cf549abe4269f59c41e5",
|
1114 |
+
"resolved": "https://registry.npmjs.org/@prisma/engines-version/-/engines-version-5.7.1-1.0ca5ccbcfa6bdc81c003cf549abe4269f59c41e5.tgz",
|
1115 |
+
"integrity": "sha512-dIR5IQK/ZxEoWRBDOHF87r1Jy+m2ih3Joi4vzJRP+FOj5yxCwS2pS5SBR3TWoVnEK1zxtLI/3N7BjHyGF84fgw==",
|
1116 |
+
"devOptional": true
|
1117 |
+
},
|
1118 |
+
"node_modules/@prisma/fetch-engine": {
|
1119 |
+
"version": "5.7.1",
|
1120 |
+
"resolved": "https://registry.npmjs.org/@prisma/fetch-engine/-/fetch-engine-5.7.1.tgz",
|
1121 |
+
"integrity": "sha512-9ELauIEBkIaEUpMIYPRlh5QELfoC6pyHolHVQgbNxglaINikZ9w9X7r1TIePAcm05pCNp2XPY1ObQIJW5nYfBQ==",
|
1122 |
+
"devOptional": true,
|
1123 |
+
"dependencies": {
|
1124 |
+
"@prisma/debug": "5.7.1",
|
1125 |
+
"@prisma/engines-version": "5.7.1-1.0ca5ccbcfa6bdc81c003cf549abe4269f59c41e5",
|
1126 |
+
"@prisma/get-platform": "5.7.1"
|
1127 |
+
}
|
1128 |
+
},
|
1129 |
+
"node_modules/@prisma/get-platform": {
|
1130 |
+
"version": "5.7.1",
|
1131 |
+
"resolved": "https://registry.npmjs.org/@prisma/get-platform/-/get-platform-5.7.1.tgz",
|
1132 |
+
"integrity": "sha512-eDlswr3a1m5z9D/55Iyt/nZqS5UpD+DZ9MooBB3hvrcPhDQrcf9m4Tl7buy4mvAtrubQ626ECtb8c6L/f7rGSQ==",
|
1133 |
+
"devOptional": true,
|
1134 |
+
"dependencies": {
|
1135 |
+
"@prisma/debug": "5.7.1"
|
1136 |
+
}
|
1137 |
+
},
|
1138 |
"node_modules/@rollup/plugin-commonjs": {
|
1139 |
"version": "25.0.7",
|
1140 |
"resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-25.0.7.tgz",
|
|
|
1304 |
"@sveltejs/kit": "^1.0.0"
|
1305 |
}
|
1306 |
},
|
1307 |
+
"node_modules/@sveltejs/enhanced-img": {
|
1308 |
+
"version": "0.1.7",
|
1309 |
+
"resolved": "https://registry.npmjs.org/@sveltejs/enhanced-img/-/enhanced-img-0.1.7.tgz",
|
1310 |
+
"integrity": "sha512-7hxH9vcxeEckOT+Iu/jPGrppIORia65BCF0SuJvjSjhOuJsoI0ycPxLLoD7XnOg3zor71gjXl3aPtghvRPucPw==",
|
1311 |
+
"dev": true,
|
1312 |
+
"dependencies": {
|
1313 |
+
"magic-string": "^0.30.5",
|
1314 |
+
"svelte-parse-markup": "^0.1.2",
|
1315 |
+
"vite-imagetools": "^6.2.8"
|
1316 |
+
}
|
1317 |
+
},
|
1318 |
"node_modules/@sveltejs/kit": {
|
1319 |
"version": "1.28.0",
|
1320 |
"resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-1.28.0.tgz",
|
|
|
1957 |
"periscopic": "^3.1.0"
|
1958 |
}
|
1959 |
},
|
1960 |
+
"node_modules/color": {
|
1961 |
+
"version": "4.2.3",
|
1962 |
+
"resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz",
|
1963 |
+
"integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==",
|
1964 |
+
"dev": true,
|
1965 |
+
"dependencies": {
|
1966 |
+
"color-convert": "^2.0.1",
|
1967 |
+
"color-string": "^1.9.0"
|
1968 |
+
},
|
1969 |
+
"engines": {
|
1970 |
+
"node": ">=12.5.0"
|
1971 |
+
}
|
1972 |
+
},
|
1973 |
"node_modules/color-convert": {
|
1974 |
"version": "2.0.1",
|
1975 |
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
|
|
|
1988 |
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
|
1989 |
"dev": true
|
1990 |
},
|
1991 |
+
"node_modules/color-string": {
|
1992 |
+
"version": "1.9.1",
|
1993 |
+
"resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz",
|
1994 |
+
"integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==",
|
1995 |
+
"dev": true,
|
1996 |
+
"dependencies": {
|
1997 |
+
"color-name": "^1.0.0",
|
1998 |
+
"simple-swizzle": "^0.2.2"
|
1999 |
+
}
|
2000 |
+
},
|
2001 |
"node_modules/commander": {
|
2002 |
"version": "4.1.1",
|
2003 |
"resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz",
|
|
|
2111 |
"node": ">=8"
|
2112 |
}
|
2113 |
},
|
2114 |
+
"node_modules/detect-libc": {
|
2115 |
+
"version": "2.0.2",
|
2116 |
+
"resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.2.tgz",
|
2117 |
+
"integrity": "sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==",
|
2118 |
+
"dev": true,
|
2119 |
+
"engines": {
|
2120 |
+
"node": ">=8"
|
2121 |
+
}
|
2122 |
+
},
|
2123 |
"node_modules/devalue": {
|
2124 |
"version": "4.3.2",
|
2125 |
"resolved": "https://registry.npmjs.org/devalue/-/devalue-4.3.2.tgz",
|
|
|
2716 |
"node": ">= 4"
|
2717 |
}
|
2718 |
},
|
2719 |
+
"node_modules/imagetools-core": {
|
2720 |
+
"version": "6.0.4",
|
2721 |
+
"resolved": "https://registry.npmjs.org/imagetools-core/-/imagetools-core-6.0.4.tgz",
|
2722 |
+
"integrity": "sha512-N1qs5qn7u9nR3kboISkYuvJm8MohiphCfBa+wx1UOropVaFis9/mh6wuDPLHJNhl6/64C7q2Pch5NASVKAaSrg==",
|
2723 |
+
"dev": true,
|
2724 |
+
"dependencies": {
|
2725 |
+
"sharp": "^0.33.1"
|
2726 |
+
},
|
2727 |
+
"engines": {
|
2728 |
+
"node": ">=12.0.0"
|
2729 |
+
}
|
2730 |
+
},
|
2731 |
"node_modules/immutable": {
|
2732 |
"version": "4.3.4",
|
2733 |
"resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.4.tgz",
|
|
|
2783 |
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
|
2784 |
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
|
2785 |
},
|
2786 |
+
"node_modules/is-arrayish": {
|
2787 |
+
"version": "0.3.2",
|
2788 |
+
"resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz",
|
2789 |
+
"integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==",
|
2790 |
+
"dev": true
|
2791 |
+
},
|
2792 |
"node_modules/is-binary-path": {
|
2793 |
"version": "2.1.0",
|
2794 |
"resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
|
|
|
3547 |
"svelte": "^3.2.0 || ^4.0.0-next.0 || ^5.0.0-next.0"
|
3548 |
}
|
3549 |
},
|
3550 |
+
"node_modules/prisma": {
|
3551 |
+
"version": "5.7.1",
|
3552 |
+
"resolved": "https://registry.npmjs.org/prisma/-/prisma-5.7.1.tgz",
|
3553 |
+
"integrity": "sha512-ekho7ziH0WEJvC4AxuJz+ewRTMskrebPcrKuBwcNzVDniYxx+dXOGcorNeIb9VEMO5vrKzwNYvhD271Ui2jnNw==",
|
3554 |
+
"devOptional": true,
|
3555 |
+
"hasInstallScript": true,
|
3556 |
+
"dependencies": {
|
3557 |
+
"@prisma/engines": "5.7.1"
|
3558 |
+
},
|
3559 |
+
"bin": {
|
3560 |
+
"prisma": "build/index.js"
|
3561 |
+
},
|
3562 |
+
"engines": {
|
3563 |
+
"node": ">=16.13"
|
3564 |
+
}
|
3565 |
+
},
|
3566 |
"node_modules/punycode": {
|
3567 |
"version": "2.3.1",
|
3568 |
"resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
|
|
|
3773 |
"resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.6.0.tgz",
|
3774 |
"integrity": "sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ=="
|
3775 |
},
|
3776 |
+
"node_modules/sharp": {
|
3777 |
+
"version": "0.33.1",
|
3778 |
+
"resolved": "https://registry.npmjs.org/sharp/-/sharp-0.33.1.tgz",
|
3779 |
+
"integrity": "sha512-iAYUnOdTqqZDb3QjMneBKINTllCJDZ3em6WaWy7NPECM4aHncvqHRm0v0bN9nqJxMiwamv5KIdauJ6lUzKDpTQ==",
|
3780 |
+
"dev": true,
|
3781 |
+
"hasInstallScript": true,
|
3782 |
+
"dependencies": {
|
3783 |
+
"color": "^4.2.3",
|
3784 |
+
"detect-libc": "^2.0.2",
|
3785 |
+
"semver": "^7.5.4"
|
3786 |
+
},
|
3787 |
+
"engines": {
|
3788 |
+
"libvips": ">=8.15.0",
|
3789 |
+
"node": "^18.17.0 || ^20.3.0 || >=21.0.0"
|
3790 |
+
},
|
3791 |
+
"funding": {
|
3792 |
+
"url": "https://opencollective.com/libvips"
|
3793 |
+
},
|
3794 |
+
"optionalDependencies": {
|
3795 |
+
"@img/sharp-darwin-arm64": "0.33.1",
|
3796 |
+
"@img/sharp-darwin-x64": "0.33.1",
|
3797 |
+
"@img/sharp-libvips-darwin-arm64": "1.0.0",
|
3798 |
+
"@img/sharp-libvips-darwin-x64": "1.0.0",
|
3799 |
+
"@img/sharp-libvips-linux-arm": "1.0.0",
|
3800 |
+
"@img/sharp-libvips-linux-arm64": "1.0.0",
|
3801 |
+
"@img/sharp-libvips-linux-s390x": "1.0.0",
|
3802 |
+
"@img/sharp-libvips-linux-x64": "1.0.0",
|
3803 |
+
"@img/sharp-libvips-linuxmusl-arm64": "1.0.0",
|
3804 |
+
"@img/sharp-libvips-linuxmusl-x64": "1.0.0",
|
3805 |
+
"@img/sharp-linux-arm": "0.33.1",
|
3806 |
+
"@img/sharp-linux-arm64": "0.33.1",
|
3807 |
+
"@img/sharp-linux-s390x": "0.33.1",
|
3808 |
+
"@img/sharp-linux-x64": "0.33.1",
|
3809 |
+
"@img/sharp-linuxmusl-arm64": "0.33.1",
|
3810 |
+
"@img/sharp-linuxmusl-x64": "0.33.1",
|
3811 |
+
"@img/sharp-wasm32": "0.33.1",
|
3812 |
+
"@img/sharp-win32-ia32": "0.33.1",
|
3813 |
+
"@img/sharp-win32-x64": "0.33.1"
|
3814 |
+
}
|
3815 |
+
},
|
3816 |
"node_modules/shebang-command": {
|
3817 |
"version": "2.0.0",
|
3818 |
"resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
|
|
|
3834 |
"node": ">=8"
|
3835 |
}
|
3836 |
},
|
3837 |
+
"node_modules/simple-swizzle": {
|
3838 |
+
"version": "0.2.2",
|
3839 |
+
"resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz",
|
3840 |
+
"integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==",
|
3841 |
+
"dev": true,
|
3842 |
+
"dependencies": {
|
3843 |
+
"is-arrayish": "^0.3.1"
|
3844 |
+
}
|
3845 |
+
},
|
3846 |
"node_modules/sirv": {
|
3847 |
"version": "2.0.3",
|
3848 |
"resolved": "https://registry.npmjs.org/sirv/-/sirv-2.0.3.tgz",
|
|
|
4077 |
"resolved": "https://registry.npmjs.org/svelte-infinite-scroll/-/svelte-infinite-scroll-2.0.1.tgz",
|
4078 |
"integrity": "sha512-goTHCfOHRDCs8C5MeSuIc6LlAQ8zVQ+M4Y3LyvrDjx5rqSSxSrdCuQwIyWYNcO6j6/mnqRro3QB64ClBzfn+Wg=="
|
4079 |
},
|
4080 |
+
"node_modules/svelte-parse-markup": {
|
4081 |
+
"version": "0.1.2",
|
4082 |
+
"resolved": "https://registry.npmjs.org/svelte-parse-markup/-/svelte-parse-markup-0.1.2.tgz",
|
4083 |
+
"integrity": "sha512-DycY7DJr7VqofiJ63ut1/NEG92HrWWL56VWITn/cJCu+LlZhMoBkBXT4opUitPEEwbq1nMQbv4vTKUfbOqIW1g==",
|
4084 |
+
"dev": true,
|
4085 |
+
"funding": {
|
4086 |
+
"url": "https://bjornlu.com/sponsor"
|
4087 |
+
},
|
4088 |
+
"peerDependencies": {
|
4089 |
+
"svelte": "^3.0.0 || ^4.0.0"
|
4090 |
+
}
|
4091 |
+
},
|
4092 |
"node_modules/svelte-preprocess": {
|
4093 |
"version": "5.1.1",
|
4094 |
"resolved": "https://registry.npmjs.org/svelte-preprocess/-/svelte-preprocess-5.1.1.tgz",
|
|
|
4480 |
}
|
4481 |
}
|
4482 |
},
|
4483 |
+
"node_modules/vite-imagetools": {
|
4484 |
+
"version": "6.2.9",
|
4485 |
+
"resolved": "https://registry.npmjs.org/vite-imagetools/-/vite-imagetools-6.2.9.tgz",
|
4486 |
+
"integrity": "sha512-C4ZYhgj2vAj43/TpZ06XlDNP0p/7LIeYbgUYr+xG44nM++4HGX6YZBKAYpiBNgiCFUTJ6eXkRppWBrfPMevgmg==",
|
4487 |
+
"dev": true,
|
4488 |
+
"dependencies": {
|
4489 |
+
"@rollup/pluginutils": "^5.0.5",
|
4490 |
+
"imagetools-core": "^6.0.4"
|
4491 |
+
},
|
4492 |
+
"engines": {
|
4493 |
+
"node": ">=12.0.0"
|
4494 |
+
}
|
4495 |
+
},
|
4496 |
"node_modules/vitefu": {
|
4497 |
"version": "0.2.5",
|
4498 |
"resolved": "https://registry.npmjs.org/vitefu/-/vitefu-0.2.5.tgz",
|
package.json
CHANGED
@@ -14,6 +14,7 @@
|
|
14 |
"@fontsource/fira-mono": "^4.5.10",
|
15 |
"@neoconfetti/svelte": "^1.0.0",
|
16 |
"@sveltejs/adapter-auto": "^2.0.0",
|
|
|
17 |
"@sveltejs/kit": "^1.27.4",
|
18 |
"@types/cookie": "^0.5.1",
|
19 |
"@typescript-eslint/eslint-plugin": "^6.0.0",
|
@@ -25,6 +26,7 @@
|
|
25 |
"postcss": "^8.4.32",
|
26 |
"prettier": "^3.0.0",
|
27 |
"prettier-plugin-svelte": "^3.0.0",
|
|
|
28 |
"sass": "^1.69.5",
|
29 |
"svelte": "^4.2.7",
|
30 |
"svelte-check": "^3.6.0",
|
@@ -36,6 +38,7 @@
|
|
36 |
"type": "module",
|
37 |
"dependencies": {
|
38 |
"@iconify/svelte": "^3.1.4",
|
|
|
39 |
"@sveltejs/adapter-node": "^1.3.1",
|
40 |
"svelte-infinite-scroll": "^2.0.1"
|
41 |
}
|
|
|
14 |
"@fontsource/fira-mono": "^4.5.10",
|
15 |
"@neoconfetti/svelte": "^1.0.0",
|
16 |
"@sveltejs/adapter-auto": "^2.0.0",
|
17 |
+
"@sveltejs/enhanced-img": "^0.1.7",
|
18 |
"@sveltejs/kit": "^1.27.4",
|
19 |
"@types/cookie": "^0.5.1",
|
20 |
"@typescript-eslint/eslint-plugin": "^6.0.0",
|
|
|
26 |
"postcss": "^8.4.32",
|
27 |
"prettier": "^3.0.0",
|
28 |
"prettier-plugin-svelte": "^3.0.0",
|
29 |
+
"prisma": "^5.7.1",
|
30 |
"sass": "^1.69.5",
|
31 |
"svelte": "^4.2.7",
|
32 |
"svelte-check": "^3.6.0",
|
|
|
38 |
"type": "module",
|
39 |
"dependencies": {
|
40 |
"@iconify/svelte": "^3.1.4",
|
41 |
+
"@prisma/client": "^5.7.1",
|
42 |
"@sveltejs/adapter-node": "^1.3.1",
|
43 |
"svelte-infinite-scroll": "^2.0.1"
|
44 |
}
|
prisma/dev.db
ADDED
Binary file (36.9 kB). View file
|
|
prisma/migrations/20240104143521_init/migration.sql
ADDED
@@ -0,0 +1,16 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
-- CreateTable
|
2 |
+
CREATE TABLE "Model" (
|
3 |
+
"id" TEXT NOT NULL PRIMARY KEY,
|
4 |
+
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
5 |
+
"repo" TEXT NOT NULL,
|
6 |
+
"title" TEXT,
|
7 |
+
"trigger_word" TEXT,
|
8 |
+
"image" TEXT,
|
9 |
+
"weights" TEXT,
|
10 |
+
"likes" INTEGER,
|
11 |
+
"downloads" INTEGER,
|
12 |
+
"isPublic" BOOLEAN NOT NULL DEFAULT false
|
13 |
+
);
|
14 |
+
|
15 |
+
-- CreateIndex
|
16 |
+
CREATE UNIQUE INDEX "Model_repo_key" ON "Model"("repo");
|
prisma/migrations/20240104145615_init/migration.sql
ADDED
@@ -0,0 +1,25 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*
|
2 |
+
Warnings:
|
3 |
+
|
4 |
+
- You are about to drop the column `downloads` on the `Model` table. All the data in the column will be lost.
|
5 |
+
- You are about to drop the column `image` on the `Model` table. All the data in the column will be lost.
|
6 |
+
- You are about to drop the column `likes` on the `Model` table. All the data in the column will be lost.
|
7 |
+
- You are about to drop the column `title` on the `Model` table. All the data in the column will be lost.
|
8 |
+
- You are about to drop the column `trigger_word` on the `Model` table. All the data in the column will be lost.
|
9 |
+
- You are about to drop the column `weights` on the `Model` table. All the data in the column will be lost.
|
10 |
+
|
11 |
+
*/
|
12 |
+
-- RedefineTables
|
13 |
+
PRAGMA foreign_keys=OFF;
|
14 |
+
CREATE TABLE "new_Model" (
|
15 |
+
"id" TEXT NOT NULL PRIMARY KEY,
|
16 |
+
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
17 |
+
"repo" TEXT NOT NULL,
|
18 |
+
"isPublic" BOOLEAN NOT NULL DEFAULT false
|
19 |
+
);
|
20 |
+
INSERT INTO "new_Model" ("createdAt", "id", "isPublic", "repo") SELECT "createdAt", "id", "isPublic", "repo" FROM "Model";
|
21 |
+
DROP TABLE "Model";
|
22 |
+
ALTER TABLE "new_Model" RENAME TO "Model";
|
23 |
+
CREATE UNIQUE INDEX "Model_repo_key" ON "Model"("repo");
|
24 |
+
PRAGMA foreign_key_check;
|
25 |
+
PRAGMA foreign_keys=ON;
|
prisma/migrations/20240104153500_init/migration.sql
ADDED
@@ -0,0 +1,2 @@
|
|
|
|
|
|
|
1 |
+
-- AlterTable
|
2 |
+
ALTER TABLE "Model" ADD COLUMN "image" TEXT;
|
prisma/migrations/20240104154419_init/migration.sql
ADDED
@@ -0,0 +1,25 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*
|
2 |
+
Warnings:
|
3 |
+
|
4 |
+
- Added the required column `title` to the `Model` table without a default value. This is not possible if the table is not empty.
|
5 |
+
- Made the column `image` on table `Model` required. This step will fail if there are existing NULL values in that column.
|
6 |
+
|
7 |
+
*/
|
8 |
+
-- RedefineTables
|
9 |
+
PRAGMA foreign_keys=OFF;
|
10 |
+
CREATE TABLE "new_Model" (
|
11 |
+
"id" TEXT NOT NULL PRIMARY KEY,
|
12 |
+
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
13 |
+
"repo" TEXT NOT NULL,
|
14 |
+
"title" TEXT NOT NULL,
|
15 |
+
"image" TEXT NOT NULL,
|
16 |
+
"likes" INTEGER,
|
17 |
+
"downloads" INTEGER,
|
18 |
+
"isPublic" BOOLEAN NOT NULL DEFAULT false
|
19 |
+
);
|
20 |
+
INSERT INTO "new_Model" ("createdAt", "id", "image", "isPublic", "repo") SELECT "createdAt", "id", "image", "isPublic", "repo" FROM "Model";
|
21 |
+
DROP TABLE "Model";
|
22 |
+
ALTER TABLE "new_Model" RENAME TO "Model";
|
23 |
+
CREATE UNIQUE INDEX "Model_repo_key" ON "Model"("repo");
|
24 |
+
PRAGMA foreign_key_check;
|
25 |
+
PRAGMA foreign_keys=ON;
|
prisma/migrations/migration_lock.toml
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
1 |
+
# Please do not edit this file manually
|
2 |
+
# It should be added in your version-control system (i.e. Git)
|
3 |
+
provider = "sqlite"
|
prisma/schema.prisma
ADDED
@@ -0,0 +1,24 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
// This is your Prisma schema file,
|
2 |
+
// learn more about it in the docs: https://pris.ly/d/prisma-schema
|
3 |
+
|
4 |
+
generator client {
|
5 |
+
provider = "prisma-client-js"
|
6 |
+
}
|
7 |
+
|
8 |
+
datasource db {
|
9 |
+
provider = "sqlite"
|
10 |
+
url = env("DATABASE_URL")
|
11 |
+
}
|
12 |
+
|
13 |
+
model Model {
|
14 |
+
id String @id @default(uuid())
|
15 |
+
createdAt DateTime @default(now())
|
16 |
+
repo String @unique
|
17 |
+
title String
|
18 |
+
// trigger_word String?
|
19 |
+
image String
|
20 |
+
// weights String?
|
21 |
+
likes Int?
|
22 |
+
downloads Int?
|
23 |
+
isPublic Boolean @default(false)
|
24 |
+
}
|
src/lib/components/Loading.svelte
ADDED
@@ -0,0 +1,23 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<div class="absolute left-0 top-0 w-full h-full flex items-center justify-center flex-col">
|
2 |
+
<svg
|
3 |
+
class="animate-spin -ml-1 mr-3 h-8 w-8 text-white"
|
4 |
+
xmlns="http://www.w3.org/2000/svg"
|
5 |
+
fill="none"
|
6 |
+
viewBox="0 0 24 24"
|
7 |
+
>
|
8 |
+
<circle
|
9 |
+
class="opacity-25"
|
10 |
+
cx="12"
|
11 |
+
cy="12"
|
12 |
+
r="10"
|
13 |
+
stroke="currentColor"
|
14 |
+
stroke-width="4"
|
15 |
+
></circle>
|
16 |
+
<path
|
17 |
+
class="opacity-75"
|
18 |
+
fill="currentColor"
|
19 |
+
d="M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"
|
20 |
+
></path>
|
21 |
+
</svg>
|
22 |
+
<slot />
|
23 |
+
</div>
|
src/lib/components/dialog/Dialog.svelte
ADDED
@@ -0,0 +1,37 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<script lang="ts">
|
2 |
+
import { browser } from "$app/environment";
|
3 |
+
|
4 |
+
export let open: boolean = false;
|
5 |
+
export let onClose: () => void;
|
6 |
+
|
7 |
+
if (browser) {
|
8 |
+
if (open) {
|
9 |
+
document.body.style.overflow = "hidden";
|
10 |
+
} else {
|
11 |
+
document.body.style.overflow = "auto";
|
12 |
+
}
|
13 |
+
}
|
14 |
+
</script>
|
15 |
+
|
16 |
+
<!-- svelte-ignore a11y-click-events-have-key-events -->
|
17 |
+
<!-- svelte-ignore a11y-no-noninteractive-element-interactions -->
|
18 |
+
<div
|
19 |
+
aria-labelledby="modal-container"
|
20 |
+
role="dialog"
|
21 |
+
class="bg-neutral-950/10 backdrop-blur-[2px] fixed top-0 left-0 h-full w-full flex items-center justify-center py-12 z-50 transition-all duration-200" class:opacity-0={!open} class:pointer-events-none={!open}
|
22 |
+
on:click={() => onClose()}
|
23 |
+
>
|
24 |
+
<div
|
25 |
+
aria-labelledby="modal-dialog"
|
26 |
+
aria-describedby="modal-description"
|
27 |
+
role="dialog"
|
28 |
+
class="max-w-xl w-full bg-neutral-900 rounded-lg p-8 border border-neutral-800 text-neutral-400 shadow-xl transition-all duration-500 relative"
|
29 |
+
class:-translate-y-5={!open}
|
30 |
+
on:click={(e) => {
|
31 |
+
e.stopPropagation();
|
32 |
+
e.preventDefault();
|
33 |
+
}}
|
34 |
+
>
|
35 |
+
<slot />
|
36 |
+
</div>
|
37 |
+
</div>
|
src/lib/components/fields/Input.svelte
CHANGED
@@ -1,6 +1,7 @@
|
|
1 |
<script lang="ts">
|
2 |
export let placeholder: string = "Search";
|
3 |
export let value: string = "";
|
|
|
4 |
export let onChange: (value: string) => void = () => {};
|
5 |
|
6 |
const handleChange = (event: any) => {
|
@@ -9,12 +10,17 @@
|
|
9 |
}
|
10 |
</script>
|
11 |
|
12 |
-
<div class="bg-neutral-900 border border-neutral-800 rounded-lg
|
|
|
|
|
|
|
|
|
|
|
13 |
<input
|
14 |
type="text"
|
15 |
{value}
|
16 |
{placeholder}
|
17 |
-
class="bg-transparent outline-none border-none placeholder:text-neutral-500 w-full"
|
18 |
on:input={handleChange}
|
19 |
>
|
20 |
</div>
|
|
|
1 |
<script lang="ts">
|
2 |
export let placeholder: string = "Search";
|
3 |
export let value: string = "";
|
4 |
+
export let prefix: string = "";
|
5 |
export let onChange: (value: string) => void = () => {};
|
6 |
|
7 |
const handleChange = (event: any) => {
|
|
|
10 |
}
|
11 |
</script>
|
12 |
|
13 |
+
<div class="bg-neutral-900 border border-neutral-800 rounded-lg text-neutral-200 text-base flex items-center justify-start overflow-hidden">
|
14 |
+
{#if prefix}
|
15 |
+
<div class="flex items-center justify-between bg-neutral-800/50 px-3 border-r border-neutral-800 py-4">
|
16 |
+
<p class="text-xs uppercase text-neutral-100 font-semibold">{prefix}</p>
|
17 |
+
</div>
|
18 |
+
{/if}
|
19 |
<input
|
20 |
type="text"
|
21 |
{value}
|
22 |
{placeholder}
|
23 |
+
class="bg-transparent outline-none border-none placeholder:text-neutral-500 w-full px-4 py-3"
|
24 |
on:input={handleChange}
|
25 |
>
|
26 |
</div>
|
src/lib/components/models/Card.svelte
CHANGED
@@ -2,6 +2,7 @@
|
|
2 |
import type { ModelCard } from "$lib/type";
|
3 |
import Button from "$lib/components/Button.svelte";
|
4 |
import Icon from "@iconify/svelte";
|
|
|
5 |
|
6 |
export let card: ModelCard;
|
7 |
|
@@ -9,15 +10,18 @@
|
|
9 |
<div
|
10 |
class="w-full cursor-pointer group bg-neutral-900 rounded-xl relative flex items-start justify-between flex-col p-3 border border-neutral-800 transition-all duration-200 brightness-75 hover:brightness-100 z-[1]"
|
11 |
>
|
12 |
-
<div class="w-full h-[
|
13 |
-
<div class="w-full h-full bg-center bg-cover rounded-lg" style="
|
|
|
|
|
|
|
14 |
<div class="group-hover:opacity-100 opacity-0 translate-x-full group-hover:translate-x-0 transition-all duration-200 absolute right-3 bottom-3">
|
15 |
<Button theme="light" size="md">
|
16 |
Try it now
|
17 |
</Button>
|
18 |
</div>
|
19 |
</div>
|
20 |
-
<div class="flex items-center justify-between w-full gap-4">
|
21 |
<p class="text-white font-semibold text-base mb-1 truncate">{card?.title ?? card?.repo}</p>
|
22 |
<div class="flex items-center justify-end gap-3">
|
23 |
<div class="text-white text-sm flex items-center justify-end gap-1.5">
|
|
|
2 |
import type { ModelCard } from "$lib/type";
|
3 |
import Button from "$lib/components/Button.svelte";
|
4 |
import Icon from "@iconify/svelte";
|
5 |
+
import Loading from "../Loading.svelte";
|
6 |
|
7 |
export let card: ModelCard;
|
8 |
|
|
|
10 |
<div
|
11 |
class="w-full cursor-pointer group bg-neutral-900 rounded-xl relative flex items-start justify-between flex-col p-3 border border-neutral-800 transition-all duration-200 brightness-75 hover:brightness-100 z-[1]"
|
12 |
>
|
13 |
+
<div class="w-full h-[270px] relative z-[1] mb-3 overflow-hidden">
|
14 |
+
<!-- <div class="w-full h-full bg-center bg-cover rounded-lg bg-neutral-800 relative" style=""> -->
|
15 |
+
<!-- <Loading /> -->
|
16 |
+
<!-- </div> -->
|
17 |
+
<img src="{card.image}" class="w-full h-full bg-center bg-cover rounded-lg object-cover object-center" alt="{card?.title}" />
|
18 |
<div class="group-hover:opacity-100 opacity-0 translate-x-full group-hover:translate-x-0 transition-all duration-200 absolute right-3 bottom-3">
|
19 |
<Button theme="light" size="md">
|
20 |
Try it now
|
21 |
</Button>
|
22 |
</div>
|
23 |
</div>
|
24 |
+
<div class="flex items-center justify-between w-full gap-4 py-1">
|
25 |
<p class="text-white font-semibold text-base mb-1 truncate">{card?.title ?? card?.repo}</p>
|
26 |
<div class="flex items-center justify-end gap-3">
|
27 |
<div class="text-white text-sm flex items-center justify-end gap-1.5">
|
src/lib/components/models/Submit.svelte
ADDED
@@ -0,0 +1,32 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<script>
|
2 |
+
import Input from "$lib/components/fields/Input.svelte";
|
3 |
+
import Button from "$lib/components/Button.svelte";
|
4 |
+
|
5 |
+
</script>
|
6 |
+
<div class="grid grid-cols-1 gap-8">
|
7 |
+
<p class="bg-yellow-500/40 rounded-full text-xs text-yellow-400 px-3 py-1 font-semibold max-w-max">
|
8 |
+
You need to be logged in to submit a model.
|
9 |
+
</p>
|
10 |
+
<header>
|
11 |
+
<p class="text-white font-semibold text-lg">
|
12 |
+
Submit a Model
|
13 |
+
</p>
|
14 |
+
<p class="text-neutral-300 text-base mt-1">
|
15 |
+
Submit a model to the LoRA Studio. You can submit a model by providing a link to the model.
|
16 |
+
</p>
|
17 |
+
</header>
|
18 |
+
<main class="grid grid-cols-1 gap-6">
|
19 |
+
<div>
|
20 |
+
<p class="text-xs uppercase text-neutral-400 font-semibold mb-2">HuggingFace model URL</p>
|
21 |
+
<Input placeholder="enzostvs/hair-color" prefix="huggingface.co/" />
|
22 |
+
</div>
|
23 |
+
<div>
|
24 |
+
<p class="text-xs uppercase text-neutral-400 font-semibold mb-2">Title</p>
|
25 |
+
<Input placeholder="Simpson style" />
|
26 |
+
</div>
|
27 |
+
</main>
|
28 |
+
<footer class="flex items-center justify-end gap-3">
|
29 |
+
<Button theme="dark" size="md">Cancel</Button>
|
30 |
+
<Button theme="blue" size="md">Submit</Button>
|
31 |
+
</footer>
|
32 |
+
</div>
|
src/lib/prisma.ts
ADDED
@@ -0,0 +1,4 @@
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import { PrismaClient } from '@prisma/client'
|
2 |
+
|
3 |
+
const prisma = new PrismaClient()
|
4 |
+
export default prisma
|
src/lib/type.ts
CHANGED
@@ -14,14 +14,11 @@ export interface CommunityCard {
|
|
14 |
}
|
15 |
|
16 |
export interface ModelCard {
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
image: string
|
22 |
-
weights: string;
|
23 |
-
likes: number;
|
24 |
-
downloads?: number;
|
25 |
}
|
26 |
|
27 |
export interface ReactionType {
|
|
|
14 |
}
|
15 |
|
16 |
export interface ModelCard {
|
17 |
+
title: string,
|
18 |
+
repo: string,
|
19 |
+
likes: number,
|
20 |
+
downloads: number,
|
21 |
+
image: string,
|
|
|
|
|
|
|
22 |
}
|
23 |
|
24 |
export interface ReactionType {
|
src/lib/utils/loras.json
CHANGED
@@ -421,7 +421,7 @@
|
|
421 |
"image": "https://huggingface.co/CiroN2022/overprint-effect/resolve/main/2139470.jpeg",
|
422 |
"weights": "Overprint_effect_sdxl.safetensors",
|
423 |
"likes": 1,
|
424 |
-
"downloads":
|
425 |
},
|
426 |
{
|
427 |
"repo": "CiroN2022/toy-face",
|
|
|
421 |
"image": "https://huggingface.co/CiroN2022/overprint-effect/resolve/main/2139470.jpeg",
|
422 |
"weights": "Overprint_effect_sdxl.safetensors",
|
423 |
"likes": 1,
|
424 |
+
"downloads": 30
|
425 |
},
|
426 |
{
|
427 |
"repo": "CiroN2022/toy-face",
|
src/routes/api/bulk-create-models/+server.ts
ADDED
@@ -0,0 +1,53 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import { json } from '@sveltejs/kit';
|
2 |
+
import prisma from '$lib/prisma';
|
3 |
+
// import { env } from '$env/dynamic/private'
|
4 |
+
|
5 |
+
// import jsonData from "$lib/utils/loras.json";
|
6 |
+
// import type { ModelCard } from '$lib/type';
|
7 |
+
|
8 |
+
/** @type {import('./$types').RequestHandler} */
|
9 |
+
|
10 |
+
export async function POST({ request }) {
|
11 |
+
const headers = Object.fromEntries(request.headers.entries());
|
12 |
+
|
13 |
+
if (headers["x-hf-token"] !== process.env.HF_TOKEN) {
|
14 |
+
return Response.json({
|
15 |
+
message: "Wrong castle fam :^)"
|
16 |
+
}, { status: 401 });
|
17 |
+
}
|
18 |
+
|
19 |
+
const { models } = await request.json();
|
20 |
+
|
21 |
+
const cards = await Promise.all(models.map(async (model: Record<string, string>) => {
|
22 |
+
const res = await fetch(`https://huggingface.co/api/models/${model.repo}`)
|
23 |
+
const data = await res.json();
|
24 |
+
const mergedData = {
|
25 |
+
image: model.image,
|
26 |
+
repo: model.repo,
|
27 |
+
title: model.title,
|
28 |
+
likes: data.likes,
|
29 |
+
downloads: data.downloads,
|
30 |
+
}
|
31 |
+
return mergedData
|
32 |
+
}
|
33 |
+
))
|
34 |
+
|
35 |
+
for (const model of cards) {
|
36 |
+
await prisma.model.create({
|
37 |
+
data: {
|
38 |
+
repo: model.repo,
|
39 |
+
image: model.image,
|
40 |
+
title: model.title,
|
41 |
+
likes: model.likes,
|
42 |
+
downloads: model.downloads,
|
43 |
+
isPublic: true,
|
44 |
+
}
|
45 |
+
})
|
46 |
+
}
|
47 |
+
|
48 |
+
const total_items = await prisma.model.count()
|
49 |
+
|
50 |
+
return json({
|
51 |
+
message: `Successfully added ${total_items} models`,
|
52 |
+
})
|
53 |
+
}
|
src/routes/api/models/+server.ts
CHANGED
@@ -1,45 +1,42 @@
|
|
1 |
import { error, json, type RequestEvent } from '@sveltejs/kit';
|
2 |
-
|
3 |
-
|
4 |
-
import jsonData from "$lib/utils/loras.json";
|
5 |
-
import type { ModelCard } from '$lib/type';
|
6 |
|
7 |
/** @type {import('./$types').RequestHandler} */
|
8 |
|
9 |
-
|
10 |
-
|
11 |
-
|
12 |
-
> = {
|
13 |
-
hotest: (a: ModelCard, b: ModelCard) => (b.downloads ?? 0) - (a.downloads ?? 0),
|
14 |
-
likes: (a: ModelCard, b: ModelCard) => b.likes - a.likes,
|
15 |
-
}
|
16 |
|
17 |
export async function GET(request : RequestEvent) {
|
18 |
-
|
19 |
-
|
20 |
const page = parseInt(request.url.searchParams.get('page') || '0')
|
21 |
const filter = request.url.searchParams.get('filter') || 'hotest'
|
22 |
const search = request.url.searchParams.get('search') || ''
|
23 |
|
24 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
25 |
|
|
|
26 |
if (hasError) {
|
27 |
return error(500, 'Internal Server Error')
|
28 |
}
|
29 |
|
30 |
-
let cards: ModelCard[] = jsonData
|
31 |
-
|
32 |
-
if (search) {
|
33 |
-
cards = cards.filter((card) => card.title.toLowerCase().includes(search.toLowerCase()))
|
34 |
-
}
|
35 |
-
|
36 |
-
const sortFunc = Dict[filter] || Dict['hotest']
|
37 |
-
cards = cards.sort(sortFunc)
|
38 |
-
|
39 |
-
cards = cards.slice(page * 25, page * 25 + 25)
|
40 |
-
|
41 |
return json({
|
42 |
cards,
|
43 |
-
total_items:
|
44 |
})
|
45 |
}
|
|
|
1 |
import { error, json, type RequestEvent } from '@sveltejs/kit';
|
2 |
+
import prisma from '$lib/prisma';
|
|
|
|
|
|
|
3 |
|
4 |
/** @type {import('./$types').RequestHandler} */
|
5 |
|
6 |
+
// TODO
|
7 |
+
// run hooks to update each model by repo using hugging face api.
|
8 |
+
// refer to bulk-create-models +server.ts for example
|
|
|
|
|
|
|
|
|
9 |
|
10 |
export async function GET(request : RequestEvent) {
|
11 |
+
|
|
|
12 |
const page = parseInt(request.url.searchParams.get('page') || '0')
|
13 |
const filter = request.url.searchParams.get('filter') || 'hotest'
|
14 |
const search = request.url.searchParams.get('search') || ''
|
15 |
|
16 |
+
const cards = await prisma.model.findMany({
|
17 |
+
where: {
|
18 |
+
isPublic: true,
|
19 |
+
OR: [
|
20 |
+
{ title: { contains: search } },
|
21 |
+
{ repo: { contains: search } },
|
22 |
+
]
|
23 |
+
},
|
24 |
+
orderBy: {
|
25 |
+
...(filter === 'hotest' ? { downloads: 'desc' } : { likes: 'desc' })
|
26 |
+
},
|
27 |
+
skip: 20 * page,
|
28 |
+
take: 20,
|
29 |
+
})
|
30 |
+
|
31 |
+
const total_reposId = await prisma.model.count()
|
32 |
|
33 |
+
const hasError = false
|
34 |
if (hasError) {
|
35 |
return error(500, 'Internal Server Error')
|
36 |
}
|
37 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
38 |
return json({
|
39 |
cards,
|
40 |
+
total_items: total_reposId
|
41 |
})
|
42 |
}
|
src/routes/models/+page.svelte
CHANGED
@@ -1,13 +1,14 @@
|
|
1 |
<script lang="ts">
|
2 |
import { browser } from "$app/environment";
|
3 |
import InfiniteScroll from "svelte-infinite-scroll";
|
4 |
-
|
5 |
import Button from "$lib/components/Button.svelte";
|
6 |
import Card from "$lib/components/models/Card.svelte";
|
7 |
import Input from "$lib/components/fields/Input.svelte";
|
8 |
import Radio from "$lib/components/fields/Radio.svelte";
|
9 |
import { MODELS_FILTER_OPTIONS } from "$lib/utils/index.js";
|
10 |
import GoTop from "$lib/components/GoTop.svelte";
|
|
|
|
|
11 |
|
12 |
export let data;
|
13 |
|
@@ -16,6 +17,7 @@
|
|
16 |
search: "",
|
17 |
page: "0",
|
18 |
}
|
|
|
19 |
|
20 |
$: elementScroll = browser ? document?.getElementById('app') : undefined;
|
21 |
|
@@ -27,9 +29,11 @@
|
|
27 |
form = { ...form, filter, page: (0).toString()};
|
28 |
refetch(false)
|
29 |
}
|
|
|
30 |
const handleChangeSearch = async (search: string) => {
|
|
|
31 |
form = { ...form, search, page: (0).toString()};
|
32 |
-
refetch(false)
|
33 |
}
|
34 |
|
35 |
const refetch = async (add: boolean) => {
|
@@ -45,18 +49,35 @@
|
|
45 |
<meta name="description" content="Svelte demo app" />
|
46 |
</svelte:head>
|
47 |
|
|
|
|
|
|
|
48 |
<h1 class="text-white font-semibold text-2xl">
|
49 |
-
Explore Models
|
50 |
</h1>
|
51 |
<div class="flex items-start sm:items-center justify-between mt-5 flex-col sm:flex-row gap-5 sm:justify-between">
|
52 |
<Radio options={MODELS_FILTER_OPTIONS} value="{form.filter}" onChange={handleChangeFilter} />
|
53 |
<div class="items-center justify-end gap-5 hidden lg:flex">
|
54 |
<Button icon="ic:round-plus" theme="dark" size="lg">Create</Button>
|
55 |
-
<Button
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
56 |
</div>
|
57 |
<div class="items-center justify-end gap-3 flex lg:hidden">
|
58 |
<Button icon="ic:round-plus" theme="dark" size="md">Create</Button>
|
59 |
-
<Button
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
60 |
</div>
|
61 |
</div>
|
62 |
<div class="mt-5 max-w-sm">
|
|
|
1 |
<script lang="ts">
|
2 |
import { browser } from "$app/environment";
|
3 |
import InfiniteScroll from "svelte-infinite-scroll";
|
|
|
4 |
import Button from "$lib/components/Button.svelte";
|
5 |
import Card from "$lib/components/models/Card.svelte";
|
6 |
import Input from "$lib/components/fields/Input.svelte";
|
7 |
import Radio from "$lib/components/fields/Radio.svelte";
|
8 |
import { MODELS_FILTER_OPTIONS } from "$lib/utils/index.js";
|
9 |
import GoTop from "$lib/components/GoTop.svelte";
|
10 |
+
import Dialog from "$lib/components/dialog/Dialog.svelte";
|
11 |
+
import SubmitModel from "$lib/components/models/Submit.svelte";
|
12 |
|
13 |
export let data;
|
14 |
|
|
|
17 |
search: "",
|
18 |
page: "0",
|
19 |
}
|
20 |
+
let submitModelDialog = false;
|
21 |
|
22 |
$: elementScroll = browser ? document?.getElementById('app') : undefined;
|
23 |
|
|
|
29 |
form = { ...form, filter, page: (0).toString()};
|
30 |
refetch(false)
|
31 |
}
|
32 |
+
let timeout: any;
|
33 |
const handleChangeSearch = async (search: string) => {
|
34 |
+
clearTimeout(timeout);
|
35 |
form = { ...form, search, page: (0).toString()};
|
36 |
+
timeout = setTimeout(() => refetch(false), 500);
|
37 |
}
|
38 |
|
39 |
const refetch = async (add: boolean) => {
|
|
|
49 |
<meta name="description" content="Svelte demo app" />
|
50 |
</svelte:head>
|
51 |
|
52 |
+
<Dialog open={submitModelDialog} onClose={() => submitModelDialog = false}>
|
53 |
+
<SubmitModel />
|
54 |
+
</Dialog>
|
55 |
<h1 class="text-white font-semibold text-2xl">
|
56 |
+
Explore Models ({data.total_items})
|
57 |
</h1>
|
58 |
<div class="flex items-start sm:items-center justify-between mt-5 flex-col sm:flex-row gap-5 sm:justify-between">
|
59 |
<Radio options={MODELS_FILTER_OPTIONS} value="{form.filter}" onChange={handleChangeFilter} />
|
60 |
<div class="items-center justify-end gap-5 hidden lg:flex">
|
61 |
<Button icon="ic:round-plus" theme="dark" size="lg">Create</Button>
|
62 |
+
<Button
|
63 |
+
icon="octicon:upload-16"
|
64 |
+
theme="blue"
|
65 |
+
size="lg"
|
66 |
+
onClick={() => submitModelDialog = true}
|
67 |
+
>
|
68 |
+
Submit model
|
69 |
+
</Button>
|
70 |
</div>
|
71 |
<div class="items-center justify-end gap-3 flex lg:hidden">
|
72 |
<Button icon="ic:round-plus" theme="dark" size="md">Create</Button>
|
73 |
+
<Button
|
74 |
+
icon="octicon:upload-16"
|
75 |
+
theme="blue"
|
76 |
+
size="md"
|
77 |
+
onClick={() => submitModelDialog = true}
|
78 |
+
>
|
79 |
+
Submit model
|
80 |
+
</Button>
|
81 |
</div>
|
82 |
</div>
|
83 |
<div class="mt-5 max-w-sm">
|
vite.config.ts
CHANGED
@@ -1,6 +1,10 @@
|
|
1 |
import { sveltekit } from '@sveltejs/kit/vite';
|
|
|
2 |
import { defineConfig } from 'vite';
|
3 |
|
4 |
export default defineConfig({
|
5 |
-
plugins: [
|
|
|
|
|
|
|
6 |
});
|
|
|
1 |
import { sveltekit } from '@sveltejs/kit/vite';
|
2 |
+
import { enhancedImages } from '@sveltejs/enhanced-img';
|
3 |
import { defineConfig } from 'vite';
|
4 |
|
5 |
export default defineConfig({
|
6 |
+
plugins: [
|
7 |
+
enhancedImages(),
|
8 |
+
sveltekit()
|
9 |
+
],
|
10 |
});
|