Compare commits
485 Commits
dev-jens-m
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f56c0f83c2 | ||
|
|
35a849913e | ||
|
|
e01b9b5445 | ||
|
|
e3484718a0 | ||
|
|
762c0aeb97 | ||
|
|
c010bbaff0 | ||
|
|
6e3f749b07 | ||
|
|
e4ef1230dd | ||
|
|
a7bdd02652 | ||
|
|
aa60e63d1b | ||
|
|
6b5ae04e36 | ||
|
|
634bef971d | ||
|
|
2b76953e68 | ||
|
|
192396933f | ||
|
|
82f8cfc0ff | ||
|
|
c2e96aad74 | ||
|
|
2d7ea57f57 | ||
|
|
9e6e893c28 | ||
|
|
f71c4b9ef9 | ||
|
|
ce8d4bde18 | ||
|
|
4e54511fe0 | ||
|
|
a1a286b67f | ||
|
|
fe4b4fb53a | ||
|
|
b4f84d7ecd | ||
|
|
9157df7a1c | ||
|
|
ef7086a08a | ||
|
|
15d57f0a2c | ||
|
|
82993ce74d | ||
|
|
76fa34bf64 | ||
|
|
d31c8c2fb2 | ||
|
|
4f5b94cbd7 | ||
|
|
db4325ad2c | ||
|
|
1d2f0a7ce8 | ||
|
|
3fc7196652 | ||
|
|
a7bd398f39 | ||
|
|
cd4e021332 | ||
|
|
9c897bd1e3 | ||
|
|
addb647618 | ||
|
|
8d07486bed | ||
|
|
208ade8219 | ||
|
|
2cc44d2c09 | ||
|
|
366e813f29 | ||
|
|
5683596e09 | ||
|
|
811d574576 | ||
|
|
4df30004de | ||
|
|
55a0248de4 | ||
|
|
b3c84e1cb6 | ||
|
|
7b7a1f77a0 | ||
|
|
24da37aa87 | ||
|
|
2fdd71f6d6 | ||
|
|
648ecc5901 | ||
|
|
f0e2bd8096 | ||
|
|
10591444a8 | ||
|
|
6c706573b0 | ||
|
|
0106d380fc | ||
|
|
a05c32167e | ||
|
|
cbfa49b7bc | ||
|
|
f56684a6e8 | ||
|
|
2bee3f55c6 | ||
|
|
eb04f5b0b5 | ||
|
|
0866a6e4a1 | ||
|
|
0dc4289232 | ||
|
|
6d8d8cb39e | ||
|
|
3096f05f67 | ||
|
|
641fdf6213 | ||
|
|
ea695e3234 | ||
|
|
ac502169a9 | ||
|
|
f6d9b565d7 | ||
|
|
288072ce1a | ||
|
|
e9c7f91a1d | ||
|
|
f29aaa2170 | ||
|
|
249caafddb | ||
|
|
38333a117b | ||
|
|
c5042066ff | ||
|
|
f028ac2d4e | ||
|
|
6372ade5c1 | ||
|
|
8378909517 | ||
|
|
67a44f8bdb | ||
|
|
10b1aec389 | ||
|
|
f9dc9ebd48 | ||
|
|
8bfa14352c | ||
|
|
ec7fccac35 | ||
|
|
397a2ced4e | ||
|
|
056cbfa144 | ||
|
|
e50f54eedc | ||
|
|
4eee179d37 | ||
|
|
1e3b5dff60 | ||
|
|
7b894ffd00 | ||
|
|
dbd725797c | ||
|
|
d9b0d6ac95 | ||
|
|
5bb5fb9401 | ||
|
|
c0d546fb9d | ||
|
|
9a2359a993 | ||
|
|
ed20bb1c76 | ||
|
|
fc6462c653 | ||
|
|
df7d80e2e4 | ||
|
|
89e71c4641 | ||
|
|
2d0e27075b | ||
|
|
bd758e3793 | ||
|
|
3e73203c94 | ||
|
|
e9f51560f6 | ||
|
|
1e7fd7afe0 | ||
|
|
3aa3349d72 | ||
|
|
042bad25e0 | ||
|
|
50f36dbc6c | ||
|
|
6894468e58 | ||
|
|
51257bbde8 | ||
|
|
5bd06fa0ef | ||
|
|
9a1625fa1b | ||
|
|
d98a5065ef | ||
|
|
54d8fb5d1b | ||
|
|
feef273c8c | ||
|
|
e48cd6acde | ||
|
|
8791516498 | ||
|
|
19136d475d | ||
|
|
3983aabcb2 | ||
|
|
4d6b8283ff | ||
|
|
5f5e3f4bed | ||
|
|
85591431eb | ||
|
|
4d9bae412c | ||
|
|
9fa8ee2251 | ||
|
|
744c9c3f52 | ||
|
|
429ce4c4e5 | ||
|
|
9d58502f29 | ||
|
|
fcf12db850 | ||
|
|
5d0ef29272 | ||
|
|
36bcacd8a2 | ||
|
|
d6fc6be6d0 | ||
|
|
5869b282c4 | ||
|
|
e2f230e240 | ||
|
|
4db097b544 | ||
|
|
b8bb16b0ba | ||
|
|
42b2767c70 | ||
|
|
7e047125a7 | ||
|
|
058a84025c | ||
|
|
d76b8b4e14 | ||
|
|
4bf104fc76 | ||
|
|
58a8136479 | ||
|
|
7371fa8765 | ||
|
|
22a88599d1 | ||
|
|
c6d7cbe661 | ||
|
|
c7f18dd7ae | ||
|
|
235969ccda | ||
|
|
fe06c09336 | ||
|
|
01d3824514 | ||
|
|
c67355ace7 | ||
|
|
39e91dae7b | ||
|
|
8d7d59bb4e | ||
|
|
ed37399c3c | ||
|
|
76943d8ef4 | ||
|
|
ed33d19648 | ||
|
|
ebabb8d667 | ||
|
|
6600d8dee8 | ||
|
|
a603c5d202 | ||
|
|
7fed3d0625 | ||
|
|
9efce15f51 | ||
|
|
4acca5591c | ||
|
|
75c4e3fa2b | ||
|
|
da7f91bab3 | ||
|
|
bb3caa04c4 | ||
|
|
e18f27675d | ||
|
|
1380dcb43a | ||
|
|
a8be6db8aa | ||
|
|
cee45ffef5 | ||
|
|
e24310bdb7 | ||
|
|
39e8527c59 | ||
|
|
76bd0bb5dd | ||
|
|
4b9e7dda5f | ||
|
|
73b44d574b | ||
|
|
f778641be6 | ||
|
|
75723d666e | ||
|
|
272b044157 | ||
|
|
10bc17963a | ||
|
|
35c24b0380 | ||
|
|
3e09686cf6 | ||
|
|
aca01b859f | ||
|
|
344651dfc1 | ||
|
|
4a2eb72f0a | ||
|
|
eb1763a6c1 | ||
|
|
e276c71461 | ||
|
|
2bf4eba44d | ||
|
|
9e2d7ecf08 | ||
|
|
058b61908f | ||
|
|
5a6bfcc900 | ||
|
|
ec0d5ddf5a | ||
|
|
7204957749 | ||
|
|
8c4345924f | ||
|
|
ed609a4690 | ||
|
|
b29b26ef0e | ||
|
|
d6f01bef98 | ||
|
|
bfb17795a6 | ||
|
|
dc5c6ac557 | ||
|
|
6416b0f749 | ||
|
|
a094036d07 | ||
|
|
8c69e6add1 | ||
|
|
78decc697e | ||
|
|
5c846ec400 | ||
|
|
b13b145d16 | ||
|
|
c2542e7dab | ||
|
|
422a03a2e8 | ||
|
|
e09513d50e | ||
|
|
e159e81c2d | ||
|
|
a113d09775 | ||
|
|
25aa048c4a | ||
|
|
207bf31058 | ||
|
|
f9daeceeca | ||
|
|
b47a5fd5f6 | ||
|
|
88c35f81f7 | ||
|
|
cc583080ea | ||
|
|
e535cdaeba | ||
|
|
f17a8a6481 | ||
|
|
d5fb937dd6 | ||
|
|
23246fbda2 | ||
|
|
735344cea4 | ||
|
|
8488472ebc | ||
|
|
299ec89216 | ||
|
|
a9aaa508f5 | ||
|
|
52261e8d2a | ||
|
|
4ac3999f67 | ||
|
|
9c059eb4b6 | ||
|
|
ba5d5ac5d5 | ||
|
|
6d48cee1fa | ||
|
|
d157ed3c0f | ||
|
|
0495d48669 | ||
|
|
7ba5c9de92 | ||
|
|
b64282a7ca | ||
|
|
bd67288887 | ||
|
|
68f51d4553 | ||
|
|
5dbbde0856 | ||
|
|
a9f01a5a8e | ||
|
|
28a383a476 | ||
|
|
56b6bcd1a1 | ||
|
|
14b3cdf744 | ||
|
|
38f77d862d | ||
|
|
f3c2c82d8d | ||
|
|
87f6bf14d8 | ||
|
|
72ed91ddcc | ||
|
|
a4c3c38912 | ||
|
|
e86b44f5a0 | ||
|
|
101b1e9aab | ||
|
|
ecd4b08119 | ||
|
|
f958eb07bf | ||
|
|
611866508c | ||
|
|
076c49c054 | ||
|
|
9c8b1b1913 | ||
|
|
cfad65878e | ||
|
|
379ae672c4 | ||
|
|
b568f5c101 | ||
|
|
7c36bb8728 | ||
|
|
df0fa82482 | ||
|
|
70fd424488 | ||
|
|
8470ad5915 | ||
|
|
a8a9553d20 | ||
|
|
8d8fb96f0d | ||
|
|
25280f2cd1 | ||
|
|
3ab5992210 | ||
|
|
de8dd9e9f1 | ||
|
|
3e15724c3e | ||
|
|
dfe7856d03 | ||
|
|
b70417e9ed | ||
|
|
f5d6fa03e5 | ||
|
|
e35378ced8 | ||
|
|
414727fdc1 | ||
|
|
e2c14dace9 | ||
|
|
568f9769ee | ||
|
|
6901973e5c | ||
|
|
a588837605 | ||
|
|
6e6ac36178 | ||
|
|
cfc6d3c230 | ||
|
|
b6aa1fdf6d | ||
|
|
d9f6b7e825 | ||
|
|
68bffa8944 | ||
|
|
f8e890e9a9 | ||
|
|
64eb0d4e15 | ||
|
|
d7a862e061 | ||
|
|
6a2c386b5d | ||
|
|
62e6dd44b9 | ||
|
|
05b31a4862 | ||
|
|
55305f31b7 | ||
|
|
1f86a063ef | ||
|
|
217885587e | ||
|
|
28f8933f72 | ||
|
|
5360ec3d24 | ||
|
|
6339a3aeda | ||
|
|
974d0e28a1 | ||
|
|
e9dab58a57 | ||
|
|
3aa72ea258 | ||
|
|
0b161cf53e | ||
|
|
590723b297 | ||
|
|
fd390238d9 | ||
|
|
6388669d66 | ||
|
|
b475e4dd79 | ||
|
|
f5373fc7b1 | ||
|
|
265e58d80d | ||
|
|
d2fac65a6d | ||
|
|
b0df7fc4cf | ||
|
|
e21a829cb6 | ||
|
|
bef1cff348 | ||
|
|
f9555c7a1e | ||
|
|
03389a04ba | ||
|
|
008a6f05a5 | ||
|
|
6aa8816dd1 | ||
|
|
70427e8a45 | ||
|
|
51ea0ec007 | ||
|
|
1381f5787a | ||
|
|
722db2d2ec | ||
|
|
72458f4631 | ||
|
|
bde6b3e102 | ||
|
|
936ca5abaa | ||
|
|
1f03bf5570 | ||
|
|
e7e2390bcd | ||
|
|
3ac6164c82 | ||
|
|
3bb6778e67 | ||
|
|
fa797c00c2 | ||
|
|
f0ae1a9205 | ||
|
|
af7da9c07f | ||
|
|
4106253b58 | ||
|
|
c787dce10c | ||
|
|
b265910b2a | ||
|
|
5e3f4c0f59 | ||
|
|
2fe07ebfad | ||
|
|
7be766d2c7 | ||
|
|
15651fc803 | ||
|
|
5b3b81551e | ||
|
|
330841f8ee | ||
|
|
0708c6ce43 | ||
|
|
2c1945584d | ||
|
|
183178f943 | ||
|
|
b1b95159fa | ||
|
|
b0828592c5 | ||
|
|
21446b3bf3 | ||
|
|
935fbfba78 | ||
|
|
fa195a79f5 | ||
|
|
f6a367c567 | ||
|
|
bf6d8f47e7 | ||
|
|
02761610d1 | ||
|
|
bf3107d3b7 | ||
|
|
66e596bb57 | ||
|
|
cdfdb6c001 | ||
|
|
c583229cc8 | ||
|
|
417009fd6e | ||
|
|
d3ffbca858 | ||
|
|
db4fc19c1a | ||
|
|
eefae0635a | ||
|
|
1d7c12ec60 | ||
|
|
4d7f94e292 | ||
|
|
e13810b16a | ||
|
|
d4be779cf1 | ||
|
|
3912262f4b | ||
|
|
ed753b71c1 | ||
|
|
5b78e8b075 | ||
|
|
71dd1de503 | ||
|
|
2a95f7750a | ||
|
|
6d3dcb503a | ||
|
|
57c6bbd96c | ||
|
|
3f18ad9c59 | ||
|
|
c09cdcc788 | ||
|
|
473ff8d774 | ||
|
|
4ec3f42a8b | ||
|
|
36a4d7415c | ||
|
|
df81964b86 | ||
|
|
7130b6ba65 | ||
|
|
bfa79fb06e | ||
|
|
52e2459d47 | ||
|
|
5081f70570 | ||
|
|
f4e6b7baf8 | ||
|
|
e55388e4b7 | ||
|
|
f14c376791 | ||
|
|
071fd8c7be | ||
|
|
2bb2bd74db | ||
|
|
9d9fdebf3a | ||
|
|
0d9675fb35 | ||
|
|
7b5b272c17 | ||
|
|
a7427c3462 | ||
|
|
2b8ebcf182 | ||
|
|
eb72b600b4 | ||
|
|
606b851661 | ||
|
|
15f94c7752 | ||
|
|
04dbd4adcd | ||
|
|
853fe54e3b | ||
|
|
e2490f2296 | ||
|
|
cbddcf0968 | ||
|
|
8b1e5df851 | ||
|
|
29d8e5e7b3 | ||
|
|
e86328b0c2 | ||
|
|
b8d37d4e38 | ||
|
|
fd93f3fd54 | ||
|
|
9035de79ce | ||
|
|
2304de45b1 | ||
|
|
f1007d325f | ||
|
|
44679dbef0 | ||
|
|
682c97b3e7 | ||
|
|
b65c3eeeaa | ||
|
|
883c019293 | ||
|
|
50c2e3a6ce | ||
|
|
b7082e2318 | ||
|
|
f30b1cbd09 | ||
|
|
8936479c78 | ||
|
|
f02b30c6b5 | ||
|
|
fd34f6bcf7 | ||
|
|
e9eb113c33 | ||
|
|
1caee4e19e | ||
|
|
e18188d2a8 | ||
|
|
682cf056b6 | ||
|
|
5d11889fb2 | ||
|
|
566780b5e2 | ||
|
|
2d025b9fde | ||
|
|
64e97b6593 | ||
|
|
a05daedc54 | ||
|
|
e5756abb4d | ||
|
|
bfd30ace70 | ||
|
|
5858bff825 | ||
|
|
99c1a127b4 | ||
|
|
70af2e2d07 | ||
|
|
7db145af7c | ||
|
|
dfe13dd6bd | ||
|
|
33596e4b61 | ||
|
|
ca9c1b025a | ||
|
|
ca5102cd77 | ||
|
|
cfe160f34d | ||
|
|
d0a7033bf4 | ||
|
|
415291b083 | ||
|
|
4208c3ecc5 | ||
|
|
76dbe27c5d | ||
|
|
cfbf1dd69b | ||
|
|
313b6e328e | ||
|
|
22532f3783 | ||
|
|
3ced32b235 | ||
|
|
300b1d5ea3 | ||
|
|
40df8c7104 | ||
|
|
83727ac71d | ||
|
|
f31d710b20 | ||
|
|
6da7c0e501 | ||
|
|
f7b6a50482 | ||
|
|
48f72a2f0f | ||
|
|
43d2c114f4 | ||
|
|
aa84dd967e | ||
|
|
c413f76fe2 | ||
|
|
7762310bf3 | ||
|
|
7dd3a6c60d | ||
|
|
80a6992f5b | ||
|
|
4b651b733b | ||
|
|
c269306d9d | ||
|
|
cf0f0bdee0 | ||
|
|
d4e2d50e00 | ||
|
|
e303c44822 | ||
|
|
3eb30d2248 | ||
|
|
9b6b30ae30 | ||
|
|
9d9e6f7786 | ||
|
|
98f32ca279 | ||
|
|
ab7e5bc6d6 | ||
|
|
636c5463b2 | ||
|
|
85c0216e9d | ||
|
|
5e2861546f | ||
|
|
c1fc08ecba | ||
|
|
458a6ab254 | ||
|
|
1259f642e1 | ||
|
|
3cb71b8e2c | ||
|
|
eb8bae6d69 | ||
|
|
4f382c150d | ||
|
|
53ea51885a | ||
|
|
f5ae2cd0d4 | ||
|
|
8860750487 | ||
|
|
a58c8d466e | ||
|
|
8daee69576 | ||
|
|
7665141a5a | ||
|
|
7327d39c57 | ||
|
|
9177ca18f0 | ||
|
|
0956744878 | ||
|
|
b0235056a7 | ||
|
|
d354189d3c | ||
|
|
07760aa26a | ||
|
|
13322836aa | ||
|
|
d8acd0476a | ||
|
|
a2e0d50b1f | ||
|
|
176f1c08ad | ||
|
|
1970a105a9 | ||
|
|
71438a39eb | ||
|
|
ba7792a4b9 | ||
|
|
145bf46ee1 | ||
|
|
ecdce5b279 | ||
|
|
c0d4ede483 | ||
|
|
3fa207ea9c | ||
|
|
2a302a4b59 | ||
|
|
42e0907bb9 |
3
.crontab
3
.crontab
@@ -1,3 +0,0 @@
|
|||||||
# Jeden Monat müssen wir die neuen Klimafaktoren vom DWD abholen, der Cronjob läuft immer am 28. für die höchste Wahrscheinlichkeit
|
|
||||||
# dass die Daten schon da sind, falls der DWD mal später dran ist...
|
|
||||||
0 12 28 * * bun ./src/cronjobs/update-dwd-klimafaktoren.ts
|
|
||||||
12
.github/workflows/dev-pipeline.yml
vendored
12
.github/workflows/dev-pipeline.yml
vendored
@@ -1,10 +1,8 @@
|
|||||||
name: Dev Pipeline
|
name: Development Pipeline
|
||||||
|
|
||||||
on:
|
on:
|
||||||
pull_request:
|
|
||||||
branches: [main]
|
|
||||||
push:
|
push:
|
||||||
branches: [main]
|
branches: [dev]
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
deploy:
|
deploy:
|
||||||
@@ -26,8 +24,8 @@ jobs:
|
|||||||
export PATH=$HOME/.nvm/versions/node/v22.14.0/bin:$PATH
|
export PATH=$HOME/.nvm/versions/node/v22.14.0/bin:$PATH
|
||||||
echo $PATH
|
echo $PATH
|
||||||
cd ~/online-energieausweis
|
cd ~/online-energieausweis
|
||||||
git reset --hard origin/main
|
git reset --hard origin/dev
|
||||||
git clean -f -d
|
git clean -f -d
|
||||||
git pull origin main
|
git pull origin dev
|
||||||
git status
|
git status
|
||||||
make prod
|
make prod-no-backup
|
||||||
18
.github/workflows/enforce-pr-source.yml
vendored
Normal file
18
.github/workflows/enforce-pr-source.yml
vendored
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
name: Enforce PR Source
|
||||||
|
|
||||||
|
on:
|
||||||
|
pull_request:
|
||||||
|
types: [opened, synchronize, reopened, ready_for_review]
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
check-pr-source:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Enforce only staging → main
|
||||||
|
run: |
|
||||||
|
if [[ "${{ github.head_ref }}" != "staging" ]]; then
|
||||||
|
echo "ERROR: Only 'staging' branch may create PRs into 'main'!"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
28
.github/workflows/prevent-wrong-pr.yml
vendored
Normal file
28
.github/workflows/prevent-wrong-pr.yml
vendored
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
name: PR Rules Enforcement
|
||||||
|
|
||||||
|
on:
|
||||||
|
pull_request:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
- staging
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
check-pr:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
name: Validate Pull Request Sources
|
||||||
|
steps:
|
||||||
|
- name: Prevent dev merges
|
||||||
|
run: |
|
||||||
|
if [[ "${{ github.head_ref }}" == "dev" && "${{ github.base_ref }}" == "main" ]]; then
|
||||||
|
echo "ERROR: Merging 'dev' into 'main' is forbidden!"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
- name: Allow only staging into main
|
||||||
|
if: github.base_ref == 'main'
|
||||||
|
run: |
|
||||||
|
if [[ "${{ github.head_ref }}" != "staging" ]]; then
|
||||||
|
echo "ERROR: Only 'staging' branch is allowed to merge into 'main'. Current: '${{ github.head_ref }}'"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
31
.github/workflows/prod-pipeline.yml
vendored
Normal file
31
.github/workflows/prod-pipeline.yml
vendored
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
name: Production Pipeline
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches: [main]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
deploy:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
- name: Install Bun
|
||||||
|
run: |
|
||||||
|
curl -fsSL https://bun.sh/install | bash
|
||||||
|
|
||||||
|
- uses: appleboy/ssh-action@master
|
||||||
|
with:
|
||||||
|
host: ${{ secrets.PROD_HOST }}
|
||||||
|
username: ${{ secrets.PROD_USERNAME }}
|
||||||
|
password: ${{ secrets.PROD_PASSWORD }}
|
||||||
|
port: 22
|
||||||
|
script: |
|
||||||
|
export PATH=$HOME/.bun/bin:$PATH
|
||||||
|
export PATH=$HOME/.nvm/versions/node/v22.14.0/bin:$PATH
|
||||||
|
echo $PATH
|
||||||
|
cd ~/online-energieausweis
|
||||||
|
git reset --hard origin/main
|
||||||
|
git clean -f -d
|
||||||
|
git pull origin main
|
||||||
|
git status
|
||||||
|
make prod
|
||||||
2
.gitignore
vendored
2
.gitignore
vendored
@@ -34,7 +34,7 @@ dbml/schema.dbml
|
|||||||
|
|
||||||
prisma/migrations/20250315143314_/migration.sql
|
prisma/migrations/20250315143314_/migration.sql
|
||||||
|
|
||||||
src/astro-typesafe-api-caller.ts
|
# src/astro-typesafe-api-caller.ts
|
||||||
|
|
||||||
src/testing/ausweise.csv
|
src/testing/ausweise.csv
|
||||||
src/testing/users.csv
|
src/testing/users.csv
|
||||||
|
|||||||
39
.ssh/id_rsa
39
.ssh/id_rsa
@@ -1,39 +0,0 @@
|
|||||||
-----BEGIN OPENSSH PRIVATE KEY-----
|
|
||||||
b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAABlwAAAAdzc2gtcn
|
|
||||||
NhAAAAAwEAAQAAAYEAzUGXt3GYcT3344iWGGGcgL0zDKhkrieikZ+yqzDpLuEzRwu3epuT
|
|
||||||
mvmHpT45awHyWr6pgOPpD7MGSDo13BVRAjCapYC23RL87E3ZRaH6aezVtV+tjl6vcCRtQx
|
|
||||||
4uQWOtGzV8Mi84ErBxt3xKo19ieyVoJnJig9W7oLbf46I0/3Jz31SRQokfoDc7TFHrtVE2
|
|
||||||
1UZgxNuDfKMhMsBaZcPNP+Rbpcs7s8Bd3Q1PfrbA6bTGGa4DYAR5Hgm+z/FMcu1PSrAA4f
|
|
||||||
x+YxQrgNC4TNl8T3HSsGnnthNoQMCcl3LcAiy0C1JaWqXWGjYwawnfUdgB2nhb9i5t+yvb
|
|
||||||
T/UL1+obIhJRx9EaK4CScNraa0ZWmawl/NY6Dumvly8OpeUwMaynsZEFPEZVxdXFUHVRLR
|
|
||||||
74NGx23sq6qPYZuy5bFhbPJqIXsh2Pl6gvFE6HZcm5U6jgJOaHt98MSFIkILtWeab0cSmC
|
|
||||||
Aokt8XF+/ezu37mbEvNzCNZpFYG9d6MXuK5HOG0xAAAFqMTKAD/EygA/AAAAB3NzaC1yc2
|
|
||||||
EAAAGBAM1Bl7dxmHE99+OIlhhhnIC9MwyoZK4nopGfsqsw6S7hM0cLt3qbk5r5h6U+OWsB
|
|
||||||
8lq+qYDj6Q+zBkg6NdwVUQIwmqWAtt0S/OxN2UWh+mns1bVfrY5er3AkbUMeLkFjrRs1fD
|
|
||||||
IvOBKwcbd8SqNfYnslaCZyYoPVu6C23+OiNP9yc99UkUKJH6A3O0xR67VRNtVGYMTbg3yj
|
|
||||||
ITLAWmXDzT/kW6XLO7PAXd0NT362wOm0xhmuA2AEeR4Jvs/xTHLtT0qwAOH8fmMUK4DQuE
|
|
||||||
zZfE9x0rBp57YTaEDAnJdy3AIstAtSWlql1ho2MGsJ31HYAdp4W/Yubfsr20/1C9fqGyIS
|
|
||||||
UcfRGiuAknDa2mtGVpmsJfzWOg7pr5cvDqXlMDGsp7GRBTxGVcXVxVB1US0e+DRsdt7Kuq
|
|
||||||
j2GbsuWxYWzyaiF7Idj5eoLxROh2XJuVOo4CTmh7ffDEhSJCC7Vnmm9HEpggKJLfFxfv3s
|
|
||||||
7t+5mxLzcwjWaRWBvXejF7iuRzhtMQAAAAMBAAEAAAGAOgLIWPHzlknf1kCDv2dTHrWaiI
|
|
||||||
DNV8Ve9o5upmCf/v5qCjHfDPmMibftpP/FpZ86unf5mzKO6796zo4ZK9cgeqB3DMCorinQ
|
|
||||||
Lw8/kaUai7aCngzpFfxf1C+Pa/FLPHLp+W8v51UeIXYZ5bRsuejbAhgL7BXXDxCow178Py
|
|
||||||
9YkDvuUNfraCUuOY9ypHrgxfGqsDOAZRLvghnu55Oi2PEygNTPLDgY6xA61x+McLFBK6xK
|
|
||||||
cvaSAKCzBJDXi5jUtQSpqykEpPSQHnD1PvbsLWIJoaolhaew9gv0ADu3iVIWFLeBMAuwQB
|
|
||||||
N6fWRjJBT3hD9vmQ39OOCDkbpoATugAu3EOvY9pGLzN0Xf1Epc71eHLJj79hDC4H7Brz7A
|
|
||||||
bOmkUNFtLOZR4ZoHfpm8N3taZ7IdXX/PA3VLCh9qhbFcaUp3uTpXRxTSvHBL03Gl/BQY19
|
|
||||||
23FevrBH4GobkMpRVCWFFLawC4e9GPPB2QvQAq19W4RvoKmrOZCAa+VoKZKzCsLqG7AAAA
|
|
||||||
wA9sQSy5+KfXVrkQOaF8OrEBI4g2yd8Q3RNpGMVIWfFtKIL1CCht9UxaOnJC7r/xos9Y6H
|
|
||||||
LVnMB9tozQTFf0R3S8H90AAyS6uEzuW6BWDwbQBJvmkPL8gG/AszZWJU9JBfiAHvaWM00A
|
|
||||||
QwzIv2+veCA2TcYIKhyiXg8r6fOQNLYkSYPpasycJy0nFknCC5Ma6XBgdzHm8QGSD4NfTZ
|
|
||||||
jbO+uK2z5ZzM+BUprj4Af3vOXqiDD66aZbKdcwzcTRLVy/rgAAAMEA8B/4ilNBG7Z/sYGB
|
|
||||||
zcBz52dkCG4tfsiY1dDYqEsDnLxF39giZj7Q0yLOHf52lt4GVEneCa5v8Q8jnN6zHZHt9A
|
|
||||||
C4P6DxtD/D28CGF3smMw6ai+W7fsl1OgEIYfSA9iKzh+sA3egSakiqKAk4H9soE9ZgERkx
|
|
||||||
cFuDljNGk+cekdzizpE2bmHfx4FscBcJxlZAeI35jSV5u6wzIkB2W13bq8nEI8VRu/n+PV
|
|
||||||
luxwuy6B5bUfuUDxL9W9Wr9P8t9mkHAAAAwQDa03teSRCRU/ymaua+sv3ysIDOUeSb09vf
|
|
||||||
8wX9xQpFq50CM99S3bGnwWk4A66JlK70rfWb3yoo5+Bmi22VRckQbhFhGBSWjnkKtAz5Mo
|
|
||||||
dXHOlcfPcXtxpOW4xwCsoNhnwaELt09b2BjkwWl5gdYUPHs2rIhSupK3otFN5j5GuVd6gf
|
|
||||||
bSuqavru4Xi5sySWyhKX2y+FkCDeNeOkIFeA12NNvoF4w+osLoz4GLdtydEhwSXUP9U+mr
|
|
||||||
lRqC1/Jc8qggcAAAAxbW9yaXR6QG1vcml0ei1BU1VTLVRVRi1HYW1pbmctQTE1LUZBNTA3
|
|
||||||
TlYtRkE1MDdOVgEC
|
|
||||||
-----END OPENSSH PRIVATE KEY-----
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDNQZe3cZhxPffjiJYYYZyAvTMMqGSuJ6KRn7KrMOku4TNHC7d6m5Oa+YelPjlrAfJavqmA4+kPswZIOjXcFVECMJqlgLbdEvzsTdlFofpp7NW1X62OXq9wJG1DHi5BY60bNXwyLzgSsHG3fEqjX2J7JWgmcmKD1bugtt/jojT/cnPfVJFCiR+gNztMUeu1UTbVRmDE24N8oyEywFplw80/5FulyzuzwF3dDU9+tsDptMYZrgNgBHkeCb7P8Uxy7U9KsADh/H5jFCuA0LhM2XxPcdKwaee2E2hAwJyXctwCLLQLUlpapdYaNjBrCd9R2AHaeFv2Lm37K9tP9QvX6hsiElHH0RorgJJw2tprRlaZrCX81joO6a+XLw6l5TAxrKexkQU8RlXF1cVQdVEtHvg0bHbeyrqo9hm7LlsWFs8moheyHY+XqC8UTodlyblTqOAk5oe33wxIUiQgu1Z5pvRxKYICiS3xcX797O7fuZsS83MI1mkVgb13oxe4rkc4bTE= moritz@moritz-ASUS-TUF-Gaming-A15-FA507NV-FA507NV
|
|
||||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
19
Makefile
19
Makefile
@@ -1,4 +1,4 @@
|
|||||||
.PHONY: dev online-energieausweis all prod backup run-database build-database install-dependencies wait-for-database prod database prisma-studio backup-database-cronjob
|
.PHONY: dev online-energieausweis all prod backup run-database build-database install-dependencies wait-for-database prod database prisma-studio backup-database-cronjob update-dwd-klimafaktoren-cron
|
||||||
|
|
||||||
DB_CONTAINER_NAME := database
|
DB_CONTAINER_NAME := database
|
||||||
DB_NAME := main
|
DB_NAME := main
|
||||||
@@ -10,7 +10,7 @@ PERSISTENT_DIR := $(HOME)/persistent/$(APP_NAME)
|
|||||||
BACKUP_FILENAME := $(HOME)/backups/$(shell date +"%Y-%m-%d_%H-%M-%S").sql.gz
|
BACKUP_FILENAME := $(HOME)/backups/$(shell date +"%Y-%m-%d_%H-%M-%S").sql.gz
|
||||||
|
|
||||||
online-energieausweis:
|
online-energieausweis:
|
||||||
bun run dev --host
|
NODE_ENV="development" bun run dev --host
|
||||||
|
|
||||||
dev: database online-energieausweis
|
dev: database online-energieausweis
|
||||||
|
|
||||||
@@ -30,6 +30,10 @@ run-database: stop-database
|
|||||||
docker volume create $(DB_VOLUME)
|
docker volume create $(DB_VOLUME)
|
||||||
docker build -t $(DB_CONTAINER_NAME) .
|
docker build -t $(DB_CONTAINER_NAME) .
|
||||||
docker run -d --name $(DB_CONTAINER_NAME) \
|
docker run -d --name $(DB_CONTAINER_NAME) \
|
||||||
|
--log-driver=json-file \
|
||||||
|
--log-opt max-size=50m \
|
||||||
|
--log-opt max-file=3 \
|
||||||
|
--restart=always \
|
||||||
-e POSTGRES_USER=$(DB_USER) \
|
-e POSTGRES_USER=$(DB_USER) \
|
||||||
-e POSTGRES_PASSWORD=$(DB_PASSWORD) \
|
-e POSTGRES_PASSWORD=$(DB_PASSWORD) \
|
||||||
-p $(DB_PORT):5432 \
|
-p $(DB_PORT):5432 \
|
||||||
@@ -41,7 +45,7 @@ stop-database:
|
|||||||
- docker stop $(DB_CONTAINER_NAME)
|
- docker stop $(DB_CONTAINER_NAME)
|
||||||
- docker rm $(DB_CONTAINER_NAME)
|
- docker rm $(DB_CONTAINER_NAME)
|
||||||
|
|
||||||
wait-fordatabase:
|
wait-for-database:
|
||||||
@while ! docker exec $(DB_CONTAINER_NAME) pg_isready -U $(DB_USER) -h localhost -p $(DB_PORT) > /dev/null 2>&1; do \
|
@while ! docker exec $(DB_CONTAINER_NAME) pg_isready -U $(DB_USER) -h localhost -p $(DB_PORT) > /dev/null 2>&1; do \
|
||||||
sleep 1; \
|
sleep 1; \
|
||||||
done
|
done
|
||||||
@@ -57,7 +61,12 @@ all:
|
|||||||
mkdir -p ~/logs
|
mkdir -p ~/logs
|
||||||
bun run dev 2>&1 | tee ~/logs/`date '+%d-%m-%Y_%H:%M:%S'`.log
|
bun run dev 2>&1 | tee ~/logs/`date '+%d-%m-%Y_%H:%M:%S'`.log
|
||||||
|
|
||||||
prod: install-dependencies prisma-studio backup-database-cronjob
|
update-dwd-klimafaktoren-cron:
|
||||||
|
pm2 start bun --name "update-dwd-klimafaktoren-cron" --cron "0 12 28 * *" -- src/cronjobs/update-dwd-klimafaktoren.ts
|
||||||
|
|
||||||
|
prod: prod-no-backup backup-database-cronjob
|
||||||
|
|
||||||
|
prod-no-backup: install-dependencies prisma-studio update-dwd-klimafaktoren-cron
|
||||||
bun run build
|
bun run build
|
||||||
mkdir -p ~/logs
|
mkdir -p ~/logs
|
||||||
mkdir -p ~/persistent/online-energieausweis
|
mkdir -p ~/persistent/online-energieausweis
|
||||||
@@ -68,4 +77,4 @@ prod: install-dependencies prisma-studio backup-database-cronjob
|
|||||||
|
|
||||||
backup-database-cronjob:
|
backup-database-cronjob:
|
||||||
- pm2 delete daily-db-backup
|
- pm2 delete daily-db-backup
|
||||||
pm2 start backup-database.bash --name "daily-db-backup" --cron "0 0 * * *"
|
pm2 start bash --name "daily-db-backup" --no-autorestart --cron "0 0 * * *" -- backup-database.bash
|
||||||
@@ -2,19 +2,27 @@
|
|||||||
|
|
||||||
FILE_NAME=data-dump_`date +%Y-%m-%d"_"%H_%M_%S`.sql.br
|
FILE_NAME=data-dump_`date +%Y-%m-%d"_"%H_%M_%S`.sql.br
|
||||||
FILE_NAME_COMPLETE=full-dump_`date +%Y-%m-%d"_"%H_%M_%S`.sql.br
|
FILE_NAME_COMPLETE=full-dump_`date +%Y-%m-%d"_"%H_%M_%S`.sql.br
|
||||||
# Wir exportieren die Datenbank und komprimieren sie.
|
DATABASE_NAME=database
|
||||||
docker exec -t online-energieausweis-database-1 pg_dump --data-only -U main main | brotli --best > $FILE_NAME
|
|
||||||
docker exec -t online-energieausweis-database-1 pg_dumpall -c -U main | brotli --best > $FILE_NAME_COMPLETE
|
|
||||||
|
|
||||||
# Das wird benötigt für AWS Ionos Kompatibilität.
|
# Das wird benötigt für AWS Ionos Kompatibilität.
|
||||||
export AWS_REQUEST_CHECKSUM_CALCULATION=when_required
|
export AWS_REQUEST_CHECKSUM_CALCULATION=when_required
|
||||||
export AWS_RESPONSE_CHECKSUM_VALIDATION=when_required
|
export AWS_RESPONSE_CHECKSUM_VALIDATION=when_required
|
||||||
|
|
||||||
|
# Wir exportieren die Datenbank und komprimieren sie.
|
||||||
# IMPORTANT: Dieser Befehl benötigt das `ionos` Profil, sonst wird er nicht funktionieren.
|
# IMPORTANT: Dieser Befehl benötigt das `ionos` Profil, sonst wird er nicht funktionieren.
|
||||||
# Das Profil kann mit `aws configure --profile ionos` erstellt werden.
|
# Das Profil kann mit `aws configure --profile ionos` erstellt werden.
|
||||||
# Den Key dafür findet man auf https://dcd.ionos.com/latest/?lang=en#/key-management
|
# Den Key dafür findet man auf https://dcd.ionos.com/latest/?lang=en#/key-management
|
||||||
aws s3 cp $FILE_NAME s3://ibc-db-backup/ --profile ionos --endpoint-url https://s3-eu-central-1.ionoscloud.com --storage-class STANDARD
|
docker exec -t $DATABASE_NAME pg_dump --data-only -U main main | brotli --quality=3 > $FILE_NAME
|
||||||
aws s3 cp $FILE_NAME_COMPLETE s3://ibc-db-backup/ --profile ionos --endpoint-url https://s3-eu-central-1.ionoscloud.com --storage-class STANDARD
|
|
||||||
|
aws s3 cp $FILE_NAME s3://ibc-db-backup/ --profile ionos --endpoint-url https://s3.eu-central-3.ionoscloud.com --storage-class STANDARD
|
||||||
|
|
||||||
|
echo "Uploaded $FILE_NAME"
|
||||||
|
|
||||||
|
docker exec -t $DATABASE_NAME pg_dumpall -c -U main | brotli --quality=3 > $FILE_NAME_COMPLETE
|
||||||
|
|
||||||
|
aws s3 cp $FILE_NAME_COMPLETE s3://ibc-db-backup/ --profile ionos --endpoint-url https://s3.eu-central-3.ionoscloud.com --storage-class STANDARD
|
||||||
|
|
||||||
|
echo "Uploaded $FILE_NAME_COMPLETE"
|
||||||
|
|
||||||
# Wir entfernen das Backup
|
# Wir entfernen das Backup
|
||||||
rm $FILE_NAME
|
rm $FILE_NAME
|
||||||
|
|||||||
203
bun.lock
203
bun.lock
@@ -15,10 +15,11 @@
|
|||||||
"@pdfme/common": "^5.2.16",
|
"@pdfme/common": "^5.2.16",
|
||||||
"@pdfme/generator": "^5.2.16",
|
"@pdfme/generator": "^5.2.16",
|
||||||
"@pdfme/ui": "^5.2.16",
|
"@pdfme/ui": "^5.2.16",
|
||||||
|
"@svelte-plugins/datepicker": "^1.0.11",
|
||||||
"@trpc/client": "^10.45.2",
|
"@trpc/client": "^10.45.2",
|
||||||
"@trpc/server": "^10.45.2",
|
"@trpc/server": "^10.45.2",
|
||||||
"astro": "^4.16.17",
|
"astro": "^4.16.17",
|
||||||
"astro-typesafe-api": "^0.2.2",
|
"astro-typesafe-api": "^0.2.4",
|
||||||
"body-scroll-lock": "^4.0.0-beta.0",
|
"body-scroll-lock": "^4.0.0-beta.0",
|
||||||
"buffer": "^6.0.3",
|
"buffer": "^6.0.3",
|
||||||
"bun": "^1.2.5",
|
"bun": "^1.2.5",
|
||||||
@@ -26,6 +27,8 @@
|
|||||||
"express": "^4.21.2",
|
"express": "^4.21.2",
|
||||||
"flag-icons": "^6.15.0",
|
"flag-icons": "^6.15.0",
|
||||||
"fontkit": "^2.0.4",
|
"fontkit": "^2.0.4",
|
||||||
|
"handlebars": "^4.7.8",
|
||||||
|
"heic2any": "^0.0.4",
|
||||||
"highlight.run": "^9.14.0",
|
"highlight.run": "^9.14.0",
|
||||||
"is-base64": "^1.1.0",
|
"is-base64": "^1.1.0",
|
||||||
"js-cookie": "^3.0.5",
|
"js-cookie": "^3.0.5",
|
||||||
@@ -34,16 +37,18 @@
|
|||||||
"jwt-decode": "^4.0.0",
|
"jwt-decode": "^4.0.0",
|
||||||
"mime": "^4.0.6",
|
"mime": "^4.0.6",
|
||||||
"moment": "^2.30.1",
|
"moment": "^2.30.1",
|
||||||
"moment-timezone": "^0.5.46",
|
"moment-timezone": "^0.6.0",
|
||||||
"nodemailer": "^6.10.0",
|
"nodemailer": "^6.10.0",
|
||||||
"pdf-lib": "^1.17.1",
|
"pdf-lib": "^1.17.1",
|
||||||
"postcss-nested": "^7.0.2",
|
"postcss-nested": "^7.0.2",
|
||||||
|
"puppeteer": "^24.15.0",
|
||||||
"radix-svelte-icons": "^1.0.0",
|
"radix-svelte-icons": "^1.0.0",
|
||||||
"sass": "^1.83.4",
|
"sass": "^1.83.4",
|
||||||
"sharp": "^0.33.5",
|
"sharp": "^0.33.5",
|
||||||
"siema": "^1.5.1",
|
"siema": "^1.5.1",
|
||||||
"soap": "^1.1.8",
|
"soap": "^1.1.8",
|
||||||
"sqids": "^0.3.0",
|
"sqids": "^0.3.0",
|
||||||
|
"ssh2-sftp-client": "^12.0.0",
|
||||||
"svelte": "^3.59.2",
|
"svelte": "^3.59.2",
|
||||||
"svelte-dialogs": "^1.2.2",
|
"svelte-dialogs": "^1.2.2",
|
||||||
"svelte-preprocess": "^5.1.4",
|
"svelte-preprocess": "^5.1.4",
|
||||||
@@ -51,6 +56,7 @@
|
|||||||
"tailwindcss": "^3.4.17",
|
"tailwindcss": "^3.4.17",
|
||||||
"trpc-openapi": "^1.2.0",
|
"trpc-openapi": "^1.2.0",
|
||||||
"uuid": "^9.0.1",
|
"uuid": "^9.0.1",
|
||||||
|
"winston": "^3.17.0",
|
||||||
"zod": "^3.24.1",
|
"zod": "^3.24.1",
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
@@ -67,6 +73,7 @@
|
|||||||
"@types/nodemailer": "^6.4.17",
|
"@types/nodemailer": "^6.4.17",
|
||||||
"@types/papaparse": "^5.3.15",
|
"@types/papaparse": "^5.3.15",
|
||||||
"@types/siema": "^1.4.11",
|
"@types/siema": "^1.4.11",
|
||||||
|
"@types/ssh2-sftp-client": "^9.0.4",
|
||||||
"@types/uuid": "^9.0.8",
|
"@types/uuid": "^9.0.8",
|
||||||
"@typescript-eslint/eslint-plugin": "^5.62.0",
|
"@typescript-eslint/eslint-plugin": "^5.62.0",
|
||||||
"@typescript-eslint/parser": "^5.62.0",
|
"@typescript-eslint/parser": "^5.62.0",
|
||||||
@@ -82,11 +89,11 @@
|
|||||||
"postcss-import": "^16.1.0",
|
"postcss-import": "^16.1.0",
|
||||||
"postcss-nesting": "^13.0.1",
|
"postcss-nesting": "^13.0.1",
|
||||||
"prettier": "^2.8.8",
|
"prettier": "^2.8.8",
|
||||||
"prisma": "^6.4.1",
|
"prisma": "6.4.1",
|
||||||
"prisma-dbml-generator": "^0.12.0",
|
"prisma-dbml-generator": "^0.12.0",
|
||||||
"prisma-generator-fake-data": "^0.14.3",
|
"prisma-generator-fake-data": "^0.14.3",
|
||||||
"tsx": "^4.19.3",
|
"tsx": "^4.19.3",
|
||||||
"typescript": "^5",
|
"typescript": "^5.8.3",
|
||||||
"zod-prisma": "^0.5.4",
|
"zod-prisma": "^0.5.4",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@@ -251,7 +258,7 @@
|
|||||||
|
|
||||||
"@cfcs/core": ["@cfcs/core@0.0.6", "", { "dependencies": { "@egjs/component": "^3.0.2" } }, "sha512-FxfJMwoLB8MEMConeXUCqtMGqxdtePQxRBOiGip9ULcYYam3WfCgoY6xdnMaSkYvRvmosp5iuG+TiPofm65+Pw=="],
|
"@cfcs/core": ["@cfcs/core@0.0.6", "", { "dependencies": { "@egjs/component": "^3.0.2" } }, "sha512-FxfJMwoLB8MEMConeXUCqtMGqxdtePQxRBOiGip9ULcYYam3WfCgoY6xdnMaSkYvRvmosp5iuG+TiPofm65+Pw=="],
|
||||||
|
|
||||||
"@colors/colors": ["@colors/colors@1.5.0", "", {}, "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ=="],
|
"@colors/colors": ["@colors/colors@1.6.0", "", {}, "sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA=="],
|
||||||
|
|
||||||
"@csstools/selector-resolve-nested": ["@csstools/selector-resolve-nested@3.0.0", "", { "peerDependencies": { "postcss-selector-parser": "^7.0.0" } }, "sha512-ZoK24Yku6VJU1gS79a5PFmC8yn3wIapiKmPgun0hZgEI5AOqgH2kiPRsPz1qkGv4HL+wuDLH83yQyk6inMYrJQ=="],
|
"@csstools/selector-resolve-nested": ["@csstools/selector-resolve-nested@3.0.0", "", { "peerDependencies": { "postcss-selector-parser": "^7.0.0" } }, "sha512-ZoK24Yku6VJU1gS79a5PFmC8yn3wIapiKmPgun0hZgEI5AOqgH2kiPRsPz1qkGv4HL+wuDLH83yQyk6inMYrJQ=="],
|
||||||
|
|
||||||
@@ -263,6 +270,8 @@
|
|||||||
|
|
||||||
"@cypress/xvfb": ["@cypress/xvfb@1.2.4", "", { "dependencies": { "debug": "^3.1.0", "lodash.once": "^4.1.1" } }, "sha512-skbBzPggOVYCbnGgV+0dmBdW/s77ZkAOXIC1knS8NagwDjBrNC1LuXtQJeiN6l+m7lzmHtaoUw/ctJKdqkG57Q=="],
|
"@cypress/xvfb": ["@cypress/xvfb@1.2.4", "", { "dependencies": { "debug": "^3.1.0", "lodash.once": "^4.1.1" } }, "sha512-skbBzPggOVYCbnGgV+0dmBdW/s77ZkAOXIC1knS8NagwDjBrNC1LuXtQJeiN6l+m7lzmHtaoUw/ctJKdqkG57Q=="],
|
||||||
|
|
||||||
|
"@dabh/diagnostics": ["@dabh/diagnostics@2.0.3", "", { "dependencies": { "colorspace": "1.1.x", "enabled": "2.0.x", "kuler": "^2.0.0" } }, "sha512-hrlQOIi7hAfzsMqlGSFyVucrx38O+j6wiGOf//H2ecvIEqYN4ADBSS2iLMh5UFyDunCNniUIPk/q3riFv45xRA=="],
|
||||||
|
|
||||||
"@daybrush/utils": ["@daybrush/utils@1.13.0", "", {}, "sha512-ALK12C6SQNNHw1enXK+UO8bdyQ+jaWNQ1Af7Z3FNxeAwjYhQT7do+TRE4RASAJ3ObaS2+TJ7TXR3oz2Gzbw0PQ=="],
|
"@daybrush/utils": ["@daybrush/utils@1.13.0", "", {}, "sha512-ALK12C6SQNNHw1enXK+UO8bdyQ+jaWNQ1Af7Z3FNxeAwjYhQT7do+TRE4RASAJ3ObaS2+TJ7TXR3oz2Gzbw0PQ=="],
|
||||||
|
|
||||||
"@dnd-kit/accessibility": ["@dnd-kit/accessibility@3.1.1", "", { "dependencies": { "tslib": "^2.0.0" }, "peerDependencies": { "react": ">=16.8.0" } }, "sha512-2P+YgaXF+gRsIihwwY1gCsQSYnu9Zyj2py8kY5fFvUM1qm2WA2u639R6YNVfU4GWr+ZM5mqEsfHZZLoRONbemw=="],
|
"@dnd-kit/accessibility": ["@dnd-kit/accessibility@3.1.1", "", { "dependencies": { "tslib": "^2.0.0" }, "peerDependencies": { "react": ">=16.8.0" } }, "sha512-2P+YgaXF+gRsIihwwY1gCsQSYnu9Zyj2py8kY5fFvUM1qm2WA2u639R6YNVfU4GWr+ZM5mqEsfHZZLoRONbemw=="],
|
||||||
@@ -517,6 +526,8 @@
|
|||||||
|
|
||||||
"@proload/core": ["@proload/core@0.3.3", "", { "dependencies": { "deepmerge": "^4.2.2", "escalade": "^3.1.1" } }, "sha512-7dAFWsIK84C90AMl24+N/ProHKm4iw0akcnoKjRvbfHifJZBLhaDsDus1QJmhG12lXj4e/uB/8mB/0aduCW+NQ=="],
|
"@proload/core": ["@proload/core@0.3.3", "", { "dependencies": { "deepmerge": "^4.2.2", "escalade": "^3.1.1" } }, "sha512-7dAFWsIK84C90AMl24+N/ProHKm4iw0akcnoKjRvbfHifJZBLhaDsDus1QJmhG12lXj4e/uB/8mB/0aduCW+NQ=="],
|
||||||
|
|
||||||
|
"@puppeteer/browsers": ["@puppeteer/browsers@2.10.6", "", { "dependencies": { "debug": "^4.4.1", "extract-zip": "^2.0.1", "progress": "^2.0.3", "proxy-agent": "^6.5.0", "semver": "^7.7.2", "tar-fs": "^3.1.0", "yargs": "^17.7.2" }, "bin": { "browsers": "lib/cjs/main-cli.js" } }, "sha512-pHUn6ZRt39bP3698HFQlu2ZHCkS/lPcpv7fVQcGBSzNNygw171UXAKrCUhy+TEMw4lEttOKDgNpb04hwUAJeiQ=="],
|
||||||
|
|
||||||
"@rc-component/async-validator": ["@rc-component/async-validator@5.0.4", "", { "dependencies": { "@babel/runtime": "^7.24.4" } }, "sha512-qgGdcVIF604M9EqjNF0hbUTz42bz/RDtxWdWuU5EQe3hi7M8ob54B6B35rOsvX5eSvIHIzT9iH1R3n+hk3CGfg=="],
|
"@rc-component/async-validator": ["@rc-component/async-validator@5.0.4", "", { "dependencies": { "@babel/runtime": "^7.24.4" } }, "sha512-qgGdcVIF604M9EqjNF0hbUTz42bz/RDtxWdWuU5EQe3hi7M8ob54B6B35rOsvX5eSvIHIzT9iH1R3n+hk3CGfg=="],
|
||||||
|
|
||||||
"@rc-component/color-picker": ["@rc-component/color-picker@2.0.1", "", { "dependencies": { "@ant-design/fast-color": "^2.0.6", "@babel/runtime": "^7.23.6", "classnames": "^2.2.6", "rc-util": "^5.38.1" }, "peerDependencies": { "react": ">=16.9.0", "react-dom": ">=16.9.0" } }, "sha512-WcZYwAThV/b2GISQ8F+7650r5ZZJ043E57aVBFkQ+kSY4C6wdofXgB0hBx+GPGpIU0Z81eETNoDUJMr7oy/P8Q=="],
|
"@rc-component/color-picker": ["@rc-component/color-picker@2.0.1", "", { "dependencies": { "@ant-design/fast-color": "^2.0.6", "@babel/runtime": "^7.23.6", "classnames": "^2.2.6", "rc-util": "^5.38.1" }, "peerDependencies": { "react": ">=16.9.0", "react-dom": ">=16.9.0" } }, "sha512-WcZYwAThV/b2GISQ8F+7650r5ZZJ043E57aVBFkQ+kSY4C6wdofXgB0hBx+GPGpIU0Z81eETNoDUJMr7oy/P8Q=="],
|
||||||
@@ -703,6 +714,8 @@
|
|||||||
|
|
||||||
"@smithy/util-waiter": ["@smithy/util-waiter@4.0.2", "", { "dependencies": { "@smithy/abort-controller": "^4.0.1", "@smithy/types": "^4.1.0", "tslib": "^2.6.2" } }, "sha512-piUTHyp2Axx3p/kc2CIJkYSv0BAaheBQmbACZgQSSfWUumWNW+R1lL+H9PDBxKJkvOeEX+hKYEFiwO8xagL8AQ=="],
|
"@smithy/util-waiter": ["@smithy/util-waiter@4.0.2", "", { "dependencies": { "@smithy/abort-controller": "^4.0.1", "@smithy/types": "^4.1.0", "tslib": "^2.6.2" } }, "sha512-piUTHyp2Axx3p/kc2CIJkYSv0BAaheBQmbACZgQSSfWUumWNW+R1lL+H9PDBxKJkvOeEX+hKYEFiwO8xagL8AQ=="],
|
||||||
|
|
||||||
|
"@svelte-plugins/datepicker": ["@svelte-plugins/datepicker@1.0.11", "", {}, "sha512-Tqc07QLyRkCpc3Glg6oRLTUApLtCrOh52d6vJ7L32QI17HrwvcDDjaH3LF3X1SBm3CWdMrnqfJp3xjUZmB4wzw=="],
|
||||||
|
|
||||||
"@sveltejs/vite-plugin-svelte": ["@sveltejs/vite-plugin-svelte@2.5.3", "", { "dependencies": { "@sveltejs/vite-plugin-svelte-inspector": "^1.0.4", "debug": "^4.3.4", "deepmerge": "^4.3.1", "kleur": "^4.1.5", "magic-string": "^0.30.3", "svelte-hmr": "^0.15.3", "vitefu": "^0.2.4" }, "peerDependencies": { "svelte": "^3.54.0 || ^4.0.0 || ^5.0.0-next.0", "vite": "^4.0.0" } }, "sha512-erhNtXxE5/6xGZz/M9eXsmI7Pxa6MS7jyTy06zN3Ck++ldrppOnOlJwHHTsMC7DHDQdgUp4NAc4cDNQ9eGdB/w=="],
|
"@sveltejs/vite-plugin-svelte": ["@sveltejs/vite-plugin-svelte@2.5.3", "", { "dependencies": { "@sveltejs/vite-plugin-svelte-inspector": "^1.0.4", "debug": "^4.3.4", "deepmerge": "^4.3.1", "kleur": "^4.1.5", "magic-string": "^0.30.3", "svelte-hmr": "^0.15.3", "vitefu": "^0.2.4" }, "peerDependencies": { "svelte": "^3.54.0 || ^4.0.0 || ^5.0.0-next.0", "vite": "^4.0.0" } }, "sha512-erhNtXxE5/6xGZz/M9eXsmI7Pxa6MS7jyTy06zN3Ck++ldrppOnOlJwHHTsMC7DHDQdgUp4NAc4cDNQ9eGdB/w=="],
|
||||||
|
|
||||||
"@sveltejs/vite-plugin-svelte-inspector": ["@sveltejs/vite-plugin-svelte-inspector@1.0.4", "", { "dependencies": { "debug": "^4.3.4" }, "peerDependencies": { "@sveltejs/vite-plugin-svelte": "^2.2.0", "svelte": "^3.54.0 || ^4.0.0", "vite": "^4.0.0" } }, "sha512-zjiuZ3yydBtwpF3bj0kQNV0YXe+iKE545QGZVTaylW3eAzFr+pJ/cwK8lZEaRp4JtaJXhD5DyWAV4AxLh6DgaQ=="],
|
"@sveltejs/vite-plugin-svelte-inspector": ["@sveltejs/vite-plugin-svelte-inspector@1.0.4", "", { "dependencies": { "debug": "^4.3.4" }, "peerDependencies": { "@sveltejs/vite-plugin-svelte": "^2.2.0", "svelte": "^3.54.0 || ^4.0.0", "vite": "^4.0.0" } }, "sha512-zjiuZ3yydBtwpF3bj0kQNV0YXe+iKE545QGZVTaylW3eAzFr+pJ/cwK8lZEaRp4JtaJXhD5DyWAV4AxLh6DgaQ=="],
|
||||||
@@ -711,6 +724,8 @@
|
|||||||
|
|
||||||
"@tailwindcss/typography": ["@tailwindcss/typography@0.5.16", "", { "dependencies": { "lodash.castarray": "^4.4.0", "lodash.isplainobject": "^4.0.6", "lodash.merge": "^4.6.2", "postcss-selector-parser": "6.0.10" }, "peerDependencies": { "tailwindcss": ">=3.0.0 || insiders || >=4.0.0-alpha.20 || >=4.0.0-beta.1" } }, "sha512-0wDLwCVF5V3x3b1SGXPCDcdsbDHMBe+lkFzBRaHeLvNi+nrrnZ1lA18u+OTWO8iSWU2GxUOCvlXtDuqftc1oiA=="],
|
"@tailwindcss/typography": ["@tailwindcss/typography@0.5.16", "", { "dependencies": { "lodash.castarray": "^4.4.0", "lodash.isplainobject": "^4.0.6", "lodash.merge": "^4.6.2", "postcss-selector-parser": "6.0.10" }, "peerDependencies": { "tailwindcss": ">=3.0.0 || insiders || >=4.0.0-alpha.20 || >=4.0.0-beta.1" } }, "sha512-0wDLwCVF5V3x3b1SGXPCDcdsbDHMBe+lkFzBRaHeLvNi+nrrnZ1lA18u+OTWO8iSWU2GxUOCvlXtDuqftc1oiA=="],
|
||||||
|
|
||||||
|
"@tootallnate/quickjs-emscripten": ["@tootallnate/quickjs-emscripten@0.23.0", "", {}, "sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA=="],
|
||||||
|
|
||||||
"@trpc/client": ["@trpc/client@10.45.2", "", { "peerDependencies": { "@trpc/server": "10.45.2" } }, "sha512-ykALM5kYWTLn1zYuUOZ2cPWlVfrXhc18HzBDyRhoPYN0jey4iQHEFSEowfnhg1RvYnrAVjNBgHNeSAXjrDbGwg=="],
|
"@trpc/client": ["@trpc/client@10.45.2", "", { "peerDependencies": { "@trpc/server": "10.45.2" } }, "sha512-ykALM5kYWTLn1zYuUOZ2cPWlVfrXhc18HzBDyRhoPYN0jey4iQHEFSEowfnhg1RvYnrAVjNBgHNeSAXjrDbGwg=="],
|
||||||
|
|
||||||
"@trpc/server": ["@trpc/server@10.45.2", "", {}, "sha512-wOrSThNNE4HUnuhJG6PfDRp4L2009KDVxsd+2VYH8ro6o/7/jwYZ8Uu5j+VaW+mOmc8EHerHzGcdbGNQSAUPgg=="],
|
"@trpc/server": ["@trpc/server@10.45.2", "", {}, "sha512-wOrSThNNE4HUnuhJG6PfDRp4L2009KDVxsd+2VYH8ro6o/7/jwYZ8Uu5j+VaW+mOmc8EHerHzGcdbGNQSAUPgg=="],
|
||||||
@@ -807,6 +822,12 @@
|
|||||||
|
|
||||||
"@types/sizzle": ["@types/sizzle@2.3.9", "", {}, "sha512-xzLEyKB50yqCUPUJkIsrVvoWNfFUbIZI+RspLWt8u+tIW/BetMBZtgV2LY/2o+tYH8dRvQ+eoPf3NdhQCcLE2w=="],
|
"@types/sizzle": ["@types/sizzle@2.3.9", "", {}, "sha512-xzLEyKB50yqCUPUJkIsrVvoWNfFUbIZI+RspLWt8u+tIW/BetMBZtgV2LY/2o+tYH8dRvQ+eoPf3NdhQCcLE2w=="],
|
||||||
|
|
||||||
|
"@types/ssh2": ["@types/ssh2@1.15.5", "", { "dependencies": { "@types/node": "^18.11.18" } }, "sha512-N1ASjp/nXH3ovBHddRJpli4ozpk6UdDYIX4RJWFa9L1YKnzdhTlVmiGHm4DZnj/jLbqZpes4aeR30EFGQtvhQQ=="],
|
||||||
|
|
||||||
|
"@types/ssh2-sftp-client": ["@types/ssh2-sftp-client@9.0.4", "", { "dependencies": { "@types/ssh2": "^1.0.0" } }, "sha512-gnIn56MTB9W3A3hPL/1sHI23t8YwcE3eVYa1O2XjT9vaqimFdtNHxyQiy5Y78+ociQTKazMSD8YyMEO4QjNMrg=="],
|
||||||
|
|
||||||
|
"@types/triple-beam": ["@types/triple-beam@1.3.5", "", {}, "sha512-6WaYesThRMCl19iryMYP7/x2OVgCtbIVflDGFpWnb9irXI3UjYE4AzmYuiUKY1AJstGijoY+MgUszMgRxIYTYw=="],
|
||||||
|
|
||||||
"@types/unist": ["@types/unist@3.0.3", "", {}, "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q=="],
|
"@types/unist": ["@types/unist@3.0.3", "", {}, "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q=="],
|
||||||
|
|
||||||
"@types/uuid": ["@types/uuid@9.0.8", "", {}, "sha512-jg+97EGIcY9AGHJJRaaPVgetKDsrTgbRjQ5Msgjh/DQKEFl0DtyRr/VCOyD1T2R1MNeWPK/u7JoGhlDZnKBAfA=="],
|
"@types/uuid": ["@types/uuid@9.0.8", "", {}, "sha512-jg+97EGIcY9AGHJJRaaPVgetKDsrTgbRjQ5Msgjh/DQKEFl0DtyRr/VCOyD1T2R1MNeWPK/u7JoGhlDZnKBAfA=="],
|
||||||
@@ -903,13 +924,15 @@
|
|||||||
|
|
||||||
"assert-plus": ["assert-plus@1.0.0", "", {}, "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw=="],
|
"assert-plus": ["assert-plus@1.0.0", "", {}, "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw=="],
|
||||||
|
|
||||||
|
"ast-types": ["ast-types@0.13.4", "", { "dependencies": { "tslib": "^2.0.1" } }, "sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w=="],
|
||||||
|
|
||||||
"astral-regex": ["astral-regex@2.0.0", "", {}, "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ=="],
|
"astral-regex": ["astral-regex@2.0.0", "", {}, "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ=="],
|
||||||
|
|
||||||
"astring": ["astring@1.9.0", "", { "bin": { "astring": "bin/astring" } }, "sha512-LElXdjswlqjWrPpJFg1Fx4wpkOCxj1TDHlSV4PlaRxHGWko024xICaa97ZkMfs6DRKlCguiAI+rbXv5GWwXIkg=="],
|
"astring": ["astring@1.9.0", "", { "bin": { "astring": "bin/astring" } }, "sha512-LElXdjswlqjWrPpJFg1Fx4wpkOCxj1TDHlSV4PlaRxHGWko024xICaa97ZkMfs6DRKlCguiAI+rbXv5GWwXIkg=="],
|
||||||
|
|
||||||
"astro": ["astro@4.16.18", "", { "dependencies": { "@astrojs/compiler": "^2.10.3", "@astrojs/internal-helpers": "0.4.1", "@astrojs/markdown-remark": "5.3.0", "@astrojs/telemetry": "3.1.0", "@babel/core": "^7.26.0", "@babel/plugin-transform-react-jsx": "^7.25.9", "@babel/types": "^7.26.0", "@oslojs/encoding": "^1.1.0", "@rollup/pluginutils": "^5.1.3", "@types/babel__core": "^7.20.5", "@types/cookie": "^0.6.0", "acorn": "^8.14.0", "aria-query": "^5.3.2", "axobject-query": "^4.1.0", "boxen": "8.0.1", "ci-info": "^4.1.0", "clsx": "^2.1.1", "common-ancestor-path": "^1.0.1", "cookie": "^0.7.2", "cssesc": "^3.0.0", "debug": "^4.3.7", "deterministic-object-hash": "^2.0.2", "devalue": "^5.1.1", "diff": "^5.2.0", "dlv": "^1.1.3", "dset": "^3.1.4", "es-module-lexer": "^1.5.4", "esbuild": "^0.21.5", "estree-walker": "^3.0.3", "fast-glob": "^3.3.2", "flattie": "^1.1.1", "github-slugger": "^2.0.0", "gray-matter": "^4.0.3", "html-escaper": "^3.0.3", "http-cache-semantics": "^4.1.1", "js-yaml": "^4.1.0", "kleur": "^4.1.5", "magic-string": "^0.30.14", "magicast": "^0.3.5", "micromatch": "^4.0.8", "mrmime": "^2.0.0", "neotraverse": "^0.6.18", "ora": "^8.1.1", "p-limit": "^6.1.0", "p-queue": "^8.0.1", "preferred-pm": "^4.0.0", "prompts": "^2.4.2", "rehype": "^13.0.2", "semver": "^7.6.3", "shiki": "^1.23.1", "tinyexec": "^0.3.1", "tsconfck": "^3.1.4", "unist-util-visit": "^5.0.0", "vfile": "^6.0.3", "vite": "^5.4.11", "vitefu": "^1.0.4", "which-pm": "^3.0.0", "xxhash-wasm": "^1.1.0", "yargs-parser": "^21.1.1", "zod": "^3.23.8", "zod-to-json-schema": "^3.23.5", "zod-to-ts": "^1.2.0" }, "optionalDependencies": { "sharp": "^0.33.3" }, "bin": { "astro": "astro.js" } }, "sha512-G7zfwJt9BDHEZwlaLNvjbInIw2hPryyD654314KV/XT34pJU6SfN1S+mWa8RAkALcZNJnJXCJmT3JXLQStD3Lw=="],
|
"astro": ["astro@4.16.18", "", { "dependencies": { "@astrojs/compiler": "^2.10.3", "@astrojs/internal-helpers": "0.4.1", "@astrojs/markdown-remark": "5.3.0", "@astrojs/telemetry": "3.1.0", "@babel/core": "^7.26.0", "@babel/plugin-transform-react-jsx": "^7.25.9", "@babel/types": "^7.26.0", "@oslojs/encoding": "^1.1.0", "@rollup/pluginutils": "^5.1.3", "@types/babel__core": "^7.20.5", "@types/cookie": "^0.6.0", "acorn": "^8.14.0", "aria-query": "^5.3.2", "axobject-query": "^4.1.0", "boxen": "8.0.1", "ci-info": "^4.1.0", "clsx": "^2.1.1", "common-ancestor-path": "^1.0.1", "cookie": "^0.7.2", "cssesc": "^3.0.0", "debug": "^4.3.7", "deterministic-object-hash": "^2.0.2", "devalue": "^5.1.1", "diff": "^5.2.0", "dlv": "^1.1.3", "dset": "^3.1.4", "es-module-lexer": "^1.5.4", "esbuild": "^0.21.5", "estree-walker": "^3.0.3", "fast-glob": "^3.3.2", "flattie": "^1.1.1", "github-slugger": "^2.0.0", "gray-matter": "^4.0.3", "html-escaper": "^3.0.3", "http-cache-semantics": "^4.1.1", "js-yaml": "^4.1.0", "kleur": "^4.1.5", "magic-string": "^0.30.14", "magicast": "^0.3.5", "micromatch": "^4.0.8", "mrmime": "^2.0.0", "neotraverse": "^0.6.18", "ora": "^8.1.1", "p-limit": "^6.1.0", "p-queue": "^8.0.1", "preferred-pm": "^4.0.0", "prompts": "^2.4.2", "rehype": "^13.0.2", "semver": "^7.6.3", "shiki": "^1.23.1", "tinyexec": "^0.3.1", "tsconfck": "^3.1.4", "unist-util-visit": "^5.0.0", "vfile": "^6.0.3", "vite": "^5.4.11", "vitefu": "^1.0.4", "which-pm": "^3.0.0", "xxhash-wasm": "^1.1.0", "yargs-parser": "^21.1.1", "zod": "^3.23.8", "zod-to-json-schema": "^3.23.5", "zod-to-ts": "^1.2.0" }, "optionalDependencies": { "sharp": "^0.33.3" }, "bin": { "astro": "astro.js" } }, "sha512-G7zfwJt9BDHEZwlaLNvjbInIw2hPryyD654314KV/XT34pJU6SfN1S+mWa8RAkALcZNJnJXCJmT3JXLQStD3Lw=="],
|
||||||
|
|
||||||
"astro-typesafe-api": ["astro-typesafe-api@0.2.2", "", { "dependencies": { "es-codec": "^0.5.0", "globby": "^14.0.2" }, "peerDependencies": { "astro": "^4.16.17", "typescript": "^5.0.0", "zod": "^3.24.1" }, "bin": { "astro-typesafe-api": "src/cli.ts" } }, "sha512-SEHV2iPyIrdpYdYb0mIN1WmcvC61bvsCQqb/X+R4EOcFjuozJ9fJhSiFGxJMvNoxJ9S3P3GKLyDnxXvFlKq0mw=="],
|
"astro-typesafe-api": ["astro-typesafe-api@0.2.4", "", { "dependencies": { "es-codec": "^0.5.0", "globby": "^14.0.2" }, "peerDependencies": { "astro": "^4.16.17", "typescript": "^5.0.0", "zod": "^3.24.1" }, "bin": { "astro-typesafe-api": "src/cli.ts" } }, "sha512-KiAw7+QJyuzz606GSkeaTdav8vttDUEYVaFAdVRlDuSvUdhcYsJB14zHkMe6ZSMfRNBQRxaMZBgPgEtWb1mf1w=="],
|
||||||
|
|
||||||
"async": ["async@3.2.6", "", {}, "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA=="],
|
"async": ["async@3.2.6", "", {}, "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA=="],
|
||||||
|
|
||||||
@@ -933,16 +956,30 @@
|
|||||||
|
|
||||||
"axobject-query": ["axobject-query@4.1.0", "", {}, "sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ=="],
|
"axobject-query": ["axobject-query@4.1.0", "", {}, "sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ=="],
|
||||||
|
|
||||||
|
"b4a": ["b4a@1.6.7", "", {}, "sha512-OnAYlL5b7LEkALw87fUVafQw5rVR9RjwGd4KUwNQ6DrrNmaVaUCgLipfVlzrPQ4tWOR9P0IXGNOx50jYCCdSJg=="],
|
||||||
|
|
||||||
"babel-runtime": ["babel-runtime@6.26.0", "", { "dependencies": { "core-js": "^2.4.0", "regenerator-runtime": "^0.11.0" } }, "sha512-ITKNuq2wKlW1fJg9sSW52eepoYgZBggvOAHC0u/CYu/qxQ9EVzThCgR69BnSXLHjy2f7SY5zaQ4yt7H9ZVxY2g=="],
|
"babel-runtime": ["babel-runtime@6.26.0", "", { "dependencies": { "core-js": "^2.4.0", "regenerator-runtime": "^0.11.0" } }, "sha512-ITKNuq2wKlW1fJg9sSW52eepoYgZBggvOAHC0u/CYu/qxQ9EVzThCgR69BnSXLHjy2f7SY5zaQ4yt7H9ZVxY2g=="],
|
||||||
|
|
||||||
"bail": ["bail@2.0.2", "", {}, "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw=="],
|
"bail": ["bail@2.0.2", "", {}, "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw=="],
|
||||||
|
|
||||||
"balanced-match": ["balanced-match@1.0.2", "", {}, "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="],
|
"balanced-match": ["balanced-match@1.0.2", "", {}, "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="],
|
||||||
|
|
||||||
|
"bare-events": ["bare-events@2.5.4", "", {}, "sha512-+gFfDkR8pj4/TrWCGUGWmJIkBwuxPS5F+a5yWjOHQt2hHvNZd5YLzadjmDUtFmMM4y429bnKLa8bYBMHcYdnQA=="],
|
||||||
|
|
||||||
|
"bare-fs": ["bare-fs@4.1.3", "", { "dependencies": { "bare-events": "^2.5.4", "bare-path": "^3.0.0", "bare-stream": "^2.6.4" }, "peerDependencies": { "bare-buffer": "*" }, "optionalPeers": ["bare-buffer"] }, "sha512-OeEZYIg+2qepaWLyphaOXHAHKo3xkM8y3BeGAvHdMN8GNWvEAU1Yw6rYpGzu/wDDbKxgEjVeVDpgGhDzaeMpjg=="],
|
||||||
|
|
||||||
|
"bare-os": ["bare-os@3.6.1", "", {}, "sha512-uaIjxokhFidJP+bmmvKSgiMzj2sV5GPHaZVAIktcxcpCyBFFWO+YlikVAdhmUo2vYFvFhOXIAlldqV29L8126g=="],
|
||||||
|
|
||||||
|
"bare-path": ["bare-path@3.0.0", "", { "dependencies": { "bare-os": "^3.0.1" } }, "sha512-tyfW2cQcB5NN8Saijrhqn0Zh7AnFNsnczRcuWODH0eYAXBsJ5gVxAUuNr7tsHSC6IZ77cA0SitzT+s47kot8Mw=="],
|
||||||
|
|
||||||
|
"bare-stream": ["bare-stream@2.6.5", "", { "dependencies": { "streamx": "^2.21.0" }, "peerDependencies": { "bare-buffer": "*", "bare-events": "*" }, "optionalPeers": ["bare-buffer", "bare-events"] }, "sha512-jSmxKJNJmHySi6hC42zlZnq00rga4jjxcgNZjY9N5WlOe/iOoGRtdwGsHzQv2RlH2KOYMwGUXhf2zXd32BA9RA=="],
|
||||||
|
|
||||||
"base-64": ["base-64@1.0.0", "", {}, "sha512-kwDPIFCGx0NZHog36dj+tHiwP4QMzsZ3AgMViUBKI0+V5n4U0ufTCUMhnQ04diaRI8EX/QcPfql7zlhZ7j4zgg=="],
|
"base-64": ["base-64@1.0.0", "", {}, "sha512-kwDPIFCGx0NZHog36dj+tHiwP4QMzsZ3AgMViUBKI0+V5n4U0ufTCUMhnQ04diaRI8EX/QcPfql7zlhZ7j4zgg=="],
|
||||||
|
|
||||||
"base64-js": ["base64-js@1.5.1", "", {}, "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA=="],
|
"base64-js": ["base64-js@1.5.1", "", {}, "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA=="],
|
||||||
|
|
||||||
|
"basic-ftp": ["basic-ftp@5.0.5", "", {}, "sha512-4Bcg1P8xhUuqcii/S0Z9wiHIrQVPMermM1any+MX5GeGD7faD3/msQUDGLol9wOcz4/jbg/WJnGqoJF6LiBdtg=="],
|
||||||
|
|
||||||
"bcrypt-pbkdf": ["bcrypt-pbkdf@1.0.2", "", { "dependencies": { "tweetnacl": "^0.14.3" } }, "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w=="],
|
"bcrypt-pbkdf": ["bcrypt-pbkdf@1.0.2", "", { "dependencies": { "tweetnacl": "^0.14.3" } }, "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w=="],
|
||||||
|
|
||||||
"binary-extensions": ["binary-extensions@2.3.0", "", {}, "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw=="],
|
"binary-extensions": ["binary-extensions@2.3.0", "", {}, "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw=="],
|
||||||
@@ -975,6 +1012,10 @@
|
|||||||
|
|
||||||
"buffer-equal-constant-time": ["buffer-equal-constant-time@1.0.1", "", {}, "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA=="],
|
"buffer-equal-constant-time": ["buffer-equal-constant-time@1.0.1", "", {}, "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA=="],
|
||||||
|
|
||||||
|
"buffer-from": ["buffer-from@1.1.2", "", {}, "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ=="],
|
||||||
|
|
||||||
|
"buildcheck": ["buildcheck@0.0.6", "", {}, "sha512-8f9ZJCUXyT1M35Jx7MkBgmBMo3oHTTBIPLiY9xyL0pl3T5RwcPEY8cUHr5LBNfu/fk6c2T4DJZuVM/8ZZT2D2A=="],
|
||||||
|
|
||||||
"bun": ["bun@1.2.5", "", { "optionalDependencies": { "@oven/bun-darwin-aarch64": "1.2.5", "@oven/bun-darwin-x64": "1.2.5", "@oven/bun-darwin-x64-baseline": "1.2.5", "@oven/bun-linux-aarch64": "1.2.5", "@oven/bun-linux-aarch64-musl": "1.2.5", "@oven/bun-linux-x64": "1.2.5", "@oven/bun-linux-x64-baseline": "1.2.5", "@oven/bun-linux-x64-musl": "1.2.5", "@oven/bun-linux-x64-musl-baseline": "1.2.5", "@oven/bun-windows-x64": "1.2.5", "@oven/bun-windows-x64-baseline": "1.2.5" }, "os": [ "linux", "win32", "darwin", ], "cpu": [ "x64", "arm64", ], "bin": { "bun": "bin/bun.exe", "bunx": "bin/bun.exe" } }, "sha512-fbQLt+DPiGUrPKdmsHRRT7cQAlfjdxPVFvLZrsUPmKiTdv+pU50ypdx9yRJluknSbyaZchFVV7Lx2KXikXKX2Q=="],
|
"bun": ["bun@1.2.5", "", { "optionalDependencies": { "@oven/bun-darwin-aarch64": "1.2.5", "@oven/bun-darwin-x64": "1.2.5", "@oven/bun-darwin-x64-baseline": "1.2.5", "@oven/bun-linux-aarch64": "1.2.5", "@oven/bun-linux-aarch64-musl": "1.2.5", "@oven/bun-linux-x64": "1.2.5", "@oven/bun-linux-x64-baseline": "1.2.5", "@oven/bun-linux-x64-musl": "1.2.5", "@oven/bun-linux-x64-musl-baseline": "1.2.5", "@oven/bun-windows-x64": "1.2.5", "@oven/bun-windows-x64-baseline": "1.2.5" }, "os": [ "linux", "win32", "darwin", ], "cpu": [ "x64", "arm64", ], "bin": { "bun": "bin/bun.exe", "bunx": "bin/bun.exe" } }, "sha512-fbQLt+DPiGUrPKdmsHRRT7cQAlfjdxPVFvLZrsUPmKiTdv+pU50ypdx9yRJluknSbyaZchFVV7Lx2KXikXKX2Q=="],
|
||||||
|
|
||||||
"bun-types": ["bun-types@1.2.2", "", { "dependencies": { "@types/node": "*", "@types/ws": "~8.5.10" } }, "sha512-RCbMH5elr9gjgDGDhkTTugA21XtJAy/9jkKe/G3WR2q17VPGhcquf9Sir6uay9iW+7P/BV0CAHA1XlHXMAVKHg=="],
|
"bun-types": ["bun-types@1.2.2", "", { "dependencies": { "@types/node": "*", "@types/ws": "~8.5.10" } }, "sha512-RCbMH5elr9gjgDGDhkTTugA21XtJAy/9jkKe/G3WR2q17VPGhcquf9Sir6uay9iW+7P/BV0CAHA1XlHXMAVKHg=="],
|
||||||
@@ -1021,6 +1062,8 @@
|
|||||||
|
|
||||||
"chownr": ["chownr@2.0.0", "", {}, "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ=="],
|
"chownr": ["chownr@2.0.0", "", {}, "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ=="],
|
||||||
|
|
||||||
|
"chromium-bidi": ["chromium-bidi@7.2.0", "", { "dependencies": { "mitt": "^3.0.1", "zod": "^3.24.1" }, "peerDependencies": { "devtools-protocol": "*" } }, "sha512-gREyhyBstermK+0RbcJLbFhcQctg92AGgDe/h/taMJEOLRdtSswBAO9KmvltFSQWgM2LrwWu5SIuEUbdm3JsyQ=="],
|
||||||
|
|
||||||
"ci-info": ["ci-info@4.1.0", "", {}, "sha512-HutrvTNsF48wnxkzERIXOe5/mlcfFcbfCmwcg6CJnizbSue78AbDt+1cgl26zwn61WFxhcPykPfZrbqjGmBb4A=="],
|
"ci-info": ["ci-info@4.1.0", "", {}, "sha512-HutrvTNsF48wnxkzERIXOe5/mlcfFcbfCmwcg6CJnizbSue78AbDt+1cgl26zwn61WFxhcPykPfZrbqjGmBb4A=="],
|
||||||
|
|
||||||
"cjs-module-lexer": ["cjs-module-lexer@1.4.3", "", {}, "sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q=="],
|
"cjs-module-lexer": ["cjs-module-lexer@1.4.3", "", {}, "sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q=="],
|
||||||
@@ -1039,6 +1082,8 @@
|
|||||||
|
|
||||||
"cli-truncate": ["cli-truncate@2.1.0", "", { "dependencies": { "slice-ansi": "^3.0.0", "string-width": "^4.2.0" } }, "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg=="],
|
"cli-truncate": ["cli-truncate@2.1.0", "", { "dependencies": { "slice-ansi": "^3.0.0", "string-width": "^4.2.0" } }, "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg=="],
|
||||||
|
|
||||||
|
"cliui": ["cliui@8.0.1", "", { "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.1", "wrap-ansi": "^7.0.0" } }, "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ=="],
|
||||||
|
|
||||||
"clone": ["clone@2.1.2", "", {}, "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w=="],
|
"clone": ["clone@2.1.2", "", {}, "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w=="],
|
||||||
|
|
||||||
"clsx": ["clsx@2.1.1", "", {}, "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA=="],
|
"clsx": ["clsx@2.1.1", "", {}, "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA=="],
|
||||||
@@ -1061,6 +1106,8 @@
|
|||||||
|
|
||||||
"colorette": ["colorette@2.0.19", "", {}, "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ=="],
|
"colorette": ["colorette@2.0.19", "", {}, "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ=="],
|
||||||
|
|
||||||
|
"colorspace": ["colorspace@1.1.4", "", { "dependencies": { "color": "^3.1.3", "text-hex": "1.0.x" } }, "sha512-BgvKJiuVu1igBUF2kEjRCZXol6wiiGbY5ipL/oVPwm0BL9sIpMIzM8IK7vwuxIIzOXMV3Ey5w+vxhm0rR/TN8w=="],
|
||||||
|
|
||||||
"combined-stream": ["combined-stream@1.0.8", "", { "dependencies": { "delayed-stream": "~1.0.0" } }, "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg=="],
|
"combined-stream": ["combined-stream@1.0.8", "", { "dependencies": { "delayed-stream": "~1.0.0" } }, "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg=="],
|
||||||
|
|
||||||
"comma-separated-tokens": ["comma-separated-tokens@2.0.3", "", {}, "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg=="],
|
"comma-separated-tokens": ["comma-separated-tokens@2.0.3", "", {}, "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg=="],
|
||||||
@@ -1083,6 +1130,8 @@
|
|||||||
|
|
||||||
"concat-map": ["concat-map@0.0.1", "", {}, "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg=="],
|
"concat-map": ["concat-map@0.0.1", "", {}, "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg=="],
|
||||||
|
|
||||||
|
"concat-stream": ["concat-stream@2.0.0", "", { "dependencies": { "buffer-from": "^1.0.0", "inherits": "^2.0.3", "readable-stream": "^3.0.2", "typedarray": "^0.0.6" } }, "sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A=="],
|
||||||
|
|
||||||
"consola": ["consola@3.4.0", "", {}, "sha512-EiPU8G6dQG0GFHNR8ljnZFki/8a+cQwEQ+7wpxdChl02Q8HXlwEZWD5lqAF8vC2sEC3Tehr8hy7vErz88LHyUA=="],
|
"consola": ["consola@3.4.0", "", {}, "sha512-EiPU8G6dQG0GFHNR8ljnZFki/8a+cQwEQ+7wpxdChl02Q8HXlwEZWD5lqAF8vC2sEC3Tehr8hy7vErz88LHyUA=="],
|
||||||
|
|
||||||
"console-control-strings": ["console-control-strings@1.1.0", "", {}, "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ=="],
|
"console-control-strings": ["console-control-strings@1.1.0", "", {}, "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ=="],
|
||||||
@@ -1107,6 +1156,10 @@
|
|||||||
|
|
||||||
"core-util-is": ["core-util-is@1.0.2", "", {}, "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ=="],
|
"core-util-is": ["core-util-is@1.0.2", "", {}, "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ=="],
|
||||||
|
|
||||||
|
"cosmiconfig": ["cosmiconfig@9.0.0", "", { "dependencies": { "env-paths": "^2.2.1", "import-fresh": "^3.3.0", "js-yaml": "^4.1.0", "parse-json": "^5.2.0" }, "peerDependencies": { "typescript": ">=4.9.5" }, "optionalPeers": ["typescript"] }, "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg=="],
|
||||||
|
|
||||||
|
"cpu-features": ["cpu-features@0.0.10", "", { "dependencies": { "buildcheck": "~0.0.6", "nan": "^2.19.0" } }, "sha512-9IkYqtX3YHPCzoVg1Py+o9057a3i0fp7S530UWokCSaFVTc7CwXPRiOjRjBQQ18ZCNafx78YfnG+HALxtVmOGA=="],
|
||||||
|
|
||||||
"crc-32": ["crc-32@1.2.2", "", { "bin": { "crc32": "bin/crc32.njs" } }, "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ=="],
|
"crc-32": ["crc-32@1.2.2", "", { "bin": { "crc32": "bin/crc32.njs" } }, "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ=="],
|
||||||
|
|
||||||
"crc32-stream": ["crc32-stream@4.0.3", "", { "dependencies": { "crc-32": "^1.2.0", "readable-stream": "^3.4.0" } }, "sha512-NT7w2JVU7DFroFdYkeq8cywxrgjPHWkdX1wjpRQXPX5Asews3tA+Ght6lddQO5Mkumffp3X7GEqku3epj2toIw=="],
|
"crc32-stream": ["crc32-stream@4.0.3", "", { "dependencies": { "crc-32": "^1.2.0", "readable-stream": "^3.4.0" } }, "sha512-NT7w2JVU7DFroFdYkeq8cywxrgjPHWkdX1wjpRQXPX5Asews3tA+Ght6lddQO5Mkumffp3X7GEqku3epj2toIw=="],
|
||||||
@@ -1141,6 +1194,8 @@
|
|||||||
|
|
||||||
"dashdash": ["dashdash@1.14.1", "", { "dependencies": { "assert-plus": "^1.0.0" } }, "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g=="],
|
"dashdash": ["dashdash@1.14.1", "", { "dependencies": { "assert-plus": "^1.0.0" } }, "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g=="],
|
||||||
|
|
||||||
|
"data-uri-to-buffer": ["data-uri-to-buffer@6.0.2", "", {}, "sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw=="],
|
||||||
|
|
||||||
"date-fns": ["date-fns@4.1.0", "", {}, "sha512-Ukq0owbQXxa/U3EGtsdVBkR1w7KOQ5gIBqdH2hkvknzZPYvBxb/aa6E8L7tmjFtkwZBu3UXBbjIgPo/Ez4xaNg=="],
|
"date-fns": ["date-fns@4.1.0", "", {}, "sha512-Ukq0owbQXxa/U3EGtsdVBkR1w7KOQ5gIBqdH2hkvknzZPYvBxb/aa6E8L7tmjFtkwZBu3UXBbjIgPo/Ez4xaNg=="],
|
||||||
|
|
||||||
"dayjs": ["dayjs@1.11.13", "", {}, "sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg=="],
|
"dayjs": ["dayjs@1.11.13", "", {}, "sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg=="],
|
||||||
@@ -1161,6 +1216,8 @@
|
|||||||
|
|
||||||
"defu": ["defu@6.1.4", "", {}, "sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg=="],
|
"defu": ["defu@6.1.4", "", {}, "sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg=="],
|
||||||
|
|
||||||
|
"degenerator": ["degenerator@5.0.1", "", { "dependencies": { "ast-types": "^0.13.4", "escodegen": "^2.1.0", "esprima": "^4.0.1" } }, "sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ=="],
|
||||||
|
|
||||||
"del": ["del@6.1.1", "", { "dependencies": { "globby": "^11.0.1", "graceful-fs": "^4.2.4", "is-glob": "^4.0.1", "is-path-cwd": "^2.2.0", "is-path-inside": "^3.0.2", "p-map": "^4.0.0", "rimraf": "^3.0.2", "slash": "^3.0.0" } }, "sha512-ua8BhapfP0JUJKC/zV9yHHDW/rDoDxP4Zhn3AkA6/xT6gY7jYXJiaeyBZznYVujhZZET+UgcbZiQ7sN3WqcImg=="],
|
"del": ["del@6.1.1", "", { "dependencies": { "globby": "^11.0.1", "graceful-fs": "^4.2.4", "is-glob": "^4.0.1", "is-path-cwd": "^2.2.0", "is-path-inside": "^3.0.2", "p-map": "^4.0.0", "rimraf": "^3.0.2", "slash": "^3.0.0" } }, "sha512-ua8BhapfP0JUJKC/zV9yHHDW/rDoDxP4Zhn3AkA6/xT6gY7jYXJiaeyBZznYVujhZZET+UgcbZiQ7sN3WqcImg=="],
|
||||||
|
|
||||||
"delayed-stream": ["delayed-stream@1.0.0", "", {}, "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ=="],
|
"delayed-stream": ["delayed-stream@1.0.0", "", {}, "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ=="],
|
||||||
@@ -1189,6 +1246,8 @@
|
|||||||
|
|
||||||
"devlop": ["devlop@1.1.0", "", { "dependencies": { "dequal": "^2.0.0" } }, "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA=="],
|
"devlop": ["devlop@1.1.0", "", { "dependencies": { "dequal": "^2.0.0" } }, "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA=="],
|
||||||
|
|
||||||
|
"devtools-protocol": ["devtools-protocol@0.0.1464554", "", {}, "sha512-CAoP3lYfwAGQTaAXYvA6JZR0fjGUb7qec1qf4mToyoH2TZgUFeIqYcjh6f9jNuhHfuZiEdH+PONHYrLhRQX6aw=="],
|
||||||
|
|
||||||
"dezalgo": ["dezalgo@1.0.4", "", { "dependencies": { "asap": "^2.0.0", "wrappy": "1" } }, "sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig=="],
|
"dezalgo": ["dezalgo@1.0.4", "", { "dependencies": { "asap": "^2.0.0", "wrappy": "1" } }, "sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig=="],
|
||||||
|
|
||||||
"dfa": ["dfa@1.2.0", "", {}, "sha512-ED3jP8saaweFTjeGX8HQPjeC1YYyZs98jGNZx6IiBvxW7JG5v492kamAQB3m2wop07CvU/RQmzcKr6bgcC5D/Q=="],
|
"dfa": ["dfa@1.2.0", "", {}, "sha512-ED3jP8saaweFTjeGX8HQPjeC1YYyZs98jGNZx6IiBvxW7JG5v492kamAQB3m2wop07CvU/RQmzcKr6bgcC5D/Q=="],
|
||||||
@@ -1225,6 +1284,8 @@
|
|||||||
|
|
||||||
"emoji-regex-xs": ["emoji-regex-xs@1.0.0", "", {}, "sha512-LRlerrMYoIDrT6jgpeZ2YYl/L8EulRTt5hQcYjy5AInh7HWXKimpqx68aknBFpGL2+/IcogTcaydJEgaTmOpDg=="],
|
"emoji-regex-xs": ["emoji-regex-xs@1.0.0", "", {}, "sha512-LRlerrMYoIDrT6jgpeZ2YYl/L8EulRTt5hQcYjy5AInh7HWXKimpqx68aknBFpGL2+/IcogTcaydJEgaTmOpDg=="],
|
||||||
|
|
||||||
|
"enabled": ["enabled@2.0.0", "", {}, "sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ=="],
|
||||||
|
|
||||||
"encodeurl": ["encodeurl@2.0.0", "", {}, "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg=="],
|
"encodeurl": ["encodeurl@2.0.0", "", {}, "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg=="],
|
||||||
|
|
||||||
"end-of-stream": ["end-of-stream@1.4.4", "", { "dependencies": { "once": "^1.4.0" } }, "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q=="],
|
"end-of-stream": ["end-of-stream@1.4.4", "", { "dependencies": { "once": "^1.4.0" } }, "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q=="],
|
||||||
@@ -1263,6 +1324,8 @@
|
|||||||
|
|
||||||
"escape-string-regexp": ["escape-string-regexp@4.0.0", "", {}, "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA=="],
|
"escape-string-regexp": ["escape-string-regexp@4.0.0", "", {}, "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA=="],
|
||||||
|
|
||||||
|
"escodegen": ["escodegen@2.1.0", "", { "dependencies": { "esprima": "^4.0.1", "estraverse": "^5.2.0", "esutils": "^2.0.2" }, "optionalDependencies": { "source-map": "~0.6.1" }, "bin": { "esgenerate": "bin/esgenerate.js", "escodegen": "bin/escodegen.js" } }, "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w=="],
|
||||||
|
|
||||||
"eslint": ["eslint@8.15.0", "", { "dependencies": { "@eslint/eslintrc": "^1.2.3", "@humanwhocodes/config-array": "^0.9.2", "ajv": "^6.10.0", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", "debug": "^4.3.2", "doctrine": "^3.0.0", "escape-string-regexp": "^4.0.0", "eslint-scope": "^7.1.1", "eslint-utils": "^3.0.0", "eslint-visitor-keys": "^3.3.0", "espree": "^9.3.2", "esquery": "^1.4.0", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", "file-entry-cache": "^6.0.1", "functional-red-black-tree": "^1.0.1", "glob-parent": "^6.0.1", "globals": "^13.6.0", "ignore": "^5.2.0", "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", "js-yaml": "^4.1.0", "json-stable-stringify-without-jsonify": "^1.0.1", "levn": "^0.4.1", "lodash.merge": "^4.6.2", "minimatch": "^3.1.2", "natural-compare": "^1.4.0", "optionator": "^0.9.1", "regexpp": "^3.2.0", "strip-ansi": "^6.0.1", "strip-json-comments": "^3.1.0", "text-table": "^0.2.0", "v8-compile-cache": "^2.0.3" }, "bin": { "eslint": "bin/eslint.js" } }, "sha512-GG5USZ1jhCu8HJkzGgeK8/+RGnHaNYZGrGDzUtigK3BsGESW/rs2az23XqE0WVwDxy1VRvvjSSGu5nB0Bu+6SA=="],
|
"eslint": ["eslint@8.15.0", "", { "dependencies": { "@eslint/eslintrc": "^1.2.3", "@humanwhocodes/config-array": "^0.9.2", "ajv": "^6.10.0", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", "debug": "^4.3.2", "doctrine": "^3.0.0", "escape-string-regexp": "^4.0.0", "eslint-scope": "^7.1.1", "eslint-utils": "^3.0.0", "eslint-visitor-keys": "^3.3.0", "espree": "^9.3.2", "esquery": "^1.4.0", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", "file-entry-cache": "^6.0.1", "functional-red-black-tree": "^1.0.1", "glob-parent": "^6.0.1", "globals": "^13.6.0", "ignore": "^5.2.0", "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", "js-yaml": "^4.1.0", "json-stable-stringify-without-jsonify": "^1.0.1", "levn": "^0.4.1", "lodash.merge": "^4.6.2", "minimatch": "^3.1.2", "natural-compare": "^1.4.0", "optionator": "^0.9.1", "regexpp": "^3.2.0", "strip-ansi": "^6.0.1", "strip-json-comments": "^3.1.0", "text-table": "^0.2.0", "v8-compile-cache": "^2.0.3" }, "bin": { "eslint": "bin/eslint.js" } }, "sha512-GG5USZ1jhCu8HJkzGgeK8/+RGnHaNYZGrGDzUtigK3BsGESW/rs2az23XqE0WVwDxy1VRvvjSSGu5nB0Bu+6SA=="],
|
||||||
|
|
||||||
"eslint-config-prettier": ["eslint-config-prettier@8.1.0", "", { "peerDependencies": { "eslint": ">=7.0.0" }, "bin": { "eslint-config-prettier": "bin/cli.js" } }, "sha512-oKMhGv3ihGbCIimCAjqkdzx2Q+jthoqnXSP+d86M9tptwugycmTFdVR4IpLgq2c4SHifbwO90z2fQ8/Aio73yw=="],
|
"eslint-config-prettier": ["eslint-config-prettier@8.1.0", "", { "peerDependencies": { "eslint": ">=7.0.0" }, "bin": { "eslint-config-prettier": "bin/cli.js" } }, "sha512-oKMhGv3ihGbCIimCAjqkdzx2Q+jthoqnXSP+d86M9tptwugycmTFdVR4IpLgq2c4SHifbwO90z2fQ8/Aio73yw=="],
|
||||||
@@ -1323,6 +1386,8 @@
|
|||||||
|
|
||||||
"fast-deep-equal": ["fast-deep-equal@3.1.3", "", {}, "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="],
|
"fast-deep-equal": ["fast-deep-equal@3.1.3", "", {}, "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="],
|
||||||
|
|
||||||
|
"fast-fifo": ["fast-fifo@1.3.2", "", {}, "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ=="],
|
||||||
|
|
||||||
"fast-glob": ["fast-glob@3.3.3", "", { "dependencies": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", "glob-parent": "^5.1.2", "merge2": "^1.3.0", "micromatch": "^4.0.8" } }, "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg=="],
|
"fast-glob": ["fast-glob@3.3.3", "", { "dependencies": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", "glob-parent": "^5.1.2", "merge2": "^1.3.0", "micromatch": "^4.0.8" } }, "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg=="],
|
||||||
|
|
||||||
"fast-json-stable-stringify": ["fast-json-stable-stringify@2.1.0", "", {}, "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw=="],
|
"fast-json-stable-stringify": ["fast-json-stable-stringify@2.1.0", "", {}, "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw=="],
|
||||||
@@ -1337,6 +1402,8 @@
|
|||||||
|
|
||||||
"fd-slicer": ["fd-slicer@1.1.0", "", { "dependencies": { "pend": "~1.2.0" } }, "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g=="],
|
"fd-slicer": ["fd-slicer@1.1.0", "", { "dependencies": { "pend": "~1.2.0" } }, "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g=="],
|
||||||
|
|
||||||
|
"fecha": ["fecha@4.2.3", "", {}, "sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw=="],
|
||||||
|
|
||||||
"figures": ["figures@3.2.0", "", { "dependencies": { "escape-string-regexp": "^1.0.5" } }, "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg=="],
|
"figures": ["figures@3.2.0", "", { "dependencies": { "escape-string-regexp": "^1.0.5" } }, "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg=="],
|
||||||
|
|
||||||
"file-entry-cache": ["file-entry-cache@6.0.1", "", { "dependencies": { "flat-cache": "^3.0.4" } }, "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg=="],
|
"file-entry-cache": ["file-entry-cache@6.0.1", "", { "dependencies": { "flat-cache": "^3.0.4" } }, "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg=="],
|
||||||
@@ -1361,6 +1428,8 @@
|
|||||||
|
|
||||||
"flattie": ["flattie@1.1.1", "", {}, "sha512-9UbaD6XdAL97+k/n+N7JwX46K/M6Zc6KcFYskrYL8wbBV/Uyk0CTAMY0VT+qiK5PM7AIc9aTWYtq65U7T+aCNQ=="],
|
"flattie": ["flattie@1.1.1", "", {}, "sha512-9UbaD6XdAL97+k/n+N7JwX46K/M6Zc6KcFYskrYL8wbBV/Uyk0CTAMY0VT+qiK5PM7AIc9aTWYtq65U7T+aCNQ=="],
|
||||||
|
|
||||||
|
"fn.name": ["fn.name@1.1.0", "", {}, "sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw=="],
|
||||||
|
|
||||||
"follow-redirects": ["follow-redirects@1.15.9", "", {}, "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ=="],
|
"follow-redirects": ["follow-redirects@1.15.9", "", {}, "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ=="],
|
||||||
|
|
||||||
"fontkit": ["fontkit@2.0.4", "", { "dependencies": { "@swc/helpers": "^0.5.12", "brotli": "^1.3.2", "clone": "^2.1.2", "dfa": "^1.2.0", "fast-deep-equal": "^3.1.3", "restructure": "^3.0.0", "tiny-inflate": "^1.0.3", "unicode-properties": "^1.4.0", "unicode-trie": "^2.0.0" } }, "sha512-syetQadaUEDNdxdugga9CpEYVaQIxOwk7GlwZWWZ19//qW4zE5bknOKeMBDYAASwnpaSHKJITRLMF9m1fp3s6g=="],
|
"fontkit": ["fontkit@2.0.4", "", { "dependencies": { "@swc/helpers": "^0.5.12", "brotli": "^1.3.2", "clone": "^2.1.2", "dfa": "^1.2.0", "fast-deep-equal": "^3.1.3", "restructure": "^3.0.0", "tiny-inflate": "^1.0.3", "unicode-properties": "^1.4.0", "unicode-trie": "^2.0.0" } }, "sha512-syetQadaUEDNdxdugga9CpEYVaQIxOwk7GlwZWWZ19//qW4zE5bknOKeMBDYAASwnpaSHKJITRLMF9m1fp3s6g=="],
|
||||||
@@ -1407,6 +1476,8 @@
|
|||||||
|
|
||||||
"gesto": ["gesto@1.19.4", "", { "dependencies": { "@daybrush/utils": "^1.13.0", "@scena/event-emitter": "^1.0.2" } }, "sha512-hfr/0dWwh0Bnbb88s3QVJd1ZRJeOWcgHPPwmiH6NnafDYvhTsxg+SLYu+q/oPNh9JS3V+nlr6fNs8kvPAtcRDQ=="],
|
"gesto": ["gesto@1.19.4", "", { "dependencies": { "@daybrush/utils": "^1.13.0", "@scena/event-emitter": "^1.0.2" } }, "sha512-hfr/0dWwh0Bnbb88s3QVJd1ZRJeOWcgHPPwmiH6NnafDYvhTsxg+SLYu+q/oPNh9JS3V+nlr6fNs8kvPAtcRDQ=="],
|
||||||
|
|
||||||
|
"get-caller-file": ["get-caller-file@2.0.5", "", {}, "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg=="],
|
||||||
|
|
||||||
"get-east-asian-width": ["get-east-asian-width@1.3.0", "", {}, "sha512-vpeMIQKxczTD/0s2CdEWHcb0eeJe6TFjxb+J5xgX7hScxqrGuyjmv4c1D4A/gelKfyox0gJJwIHF+fLjeaM8kQ=="],
|
"get-east-asian-width": ["get-east-asian-width@1.3.0", "", {}, "sha512-vpeMIQKxczTD/0s2CdEWHcb0eeJe6TFjxb+J5xgX7hScxqrGuyjmv4c1D4A/gelKfyox0gJJwIHF+fLjeaM8kQ=="],
|
||||||
|
|
||||||
"get-intrinsic": ["get-intrinsic@1.2.7", "", { "dependencies": { "call-bind-apply-helpers": "^1.0.1", "es-define-property": "^1.0.1", "es-errors": "^1.3.0", "es-object-atoms": "^1.0.0", "function-bind": "^1.1.2", "get-proto": "^1.0.0", "gopd": "^1.2.0", "has-symbols": "^1.1.0", "hasown": "^2.0.2", "math-intrinsics": "^1.1.0" } }, "sha512-VW6Pxhsrk0KAOqs3WEd0klDiF/+V7gQOpAvY1jVU/LHmaD/kQO4523aiJuikX/QAKYiW6x8Jh+RJej1almdtCA=="],
|
"get-intrinsic": ["get-intrinsic@1.2.7", "", { "dependencies": { "call-bind-apply-helpers": "^1.0.1", "es-define-property": "^1.0.1", "es-errors": "^1.3.0", "es-object-atoms": "^1.0.0", "function-bind": "^1.1.2", "get-proto": "^1.0.0", "gopd": "^1.2.0", "has-symbols": "^1.1.0", "hasown": "^2.0.2", "math-intrinsics": "^1.1.0" } }, "sha512-VW6Pxhsrk0KAOqs3WEd0klDiF/+V7gQOpAvY1jVU/LHmaD/kQO4523aiJuikX/QAKYiW6x8Jh+RJej1almdtCA=="],
|
||||||
@@ -1419,6 +1490,8 @@
|
|||||||
|
|
||||||
"get-tsconfig": ["get-tsconfig@4.10.0", "", { "dependencies": { "resolve-pkg-maps": "^1.0.0" } }, "sha512-kGzZ3LWWQcGIAmg6iWvXn0ei6WDtV26wzHRMwDSzmAbcXrTEXxHy6IehI6/4eT6VRKyMP1eF1VqwrVUmE/LR7A=="],
|
"get-tsconfig": ["get-tsconfig@4.10.0", "", { "dependencies": { "resolve-pkg-maps": "^1.0.0" } }, "sha512-kGzZ3LWWQcGIAmg6iWvXn0ei6WDtV26wzHRMwDSzmAbcXrTEXxHy6IehI6/4eT6VRKyMP1eF1VqwrVUmE/LR7A=="],
|
||||||
|
|
||||||
|
"get-uri": ["get-uri@6.0.4", "", { "dependencies": { "basic-ftp": "^5.0.2", "data-uri-to-buffer": "^6.0.2", "debug": "^4.3.4" } }, "sha512-E1b1lFFLvLgak2whF2xDBcOy6NLVGZBqqjJjsIhvopKfWWEi64pLVTWWehV8KlLerZkfNTA95sTe2OdJKm1OzQ=="],
|
||||||
|
|
||||||
"getopts": ["getopts@2.3.0", "", {}, "sha512-5eDf9fuSXwxBL6q5HX+dhDj+dslFGWzU5thZ9kNKUkcPtaPdatmUFKwHFrLb/uf/WpA4BHET+AX3Scl56cAjpA=="],
|
"getopts": ["getopts@2.3.0", "", {}, "sha512-5eDf9fuSXwxBL6q5HX+dhDj+dslFGWzU5thZ9kNKUkcPtaPdatmUFKwHFrLb/uf/WpA4BHET+AX3Scl56cAjpA=="],
|
||||||
|
|
||||||
"getos": ["getos@3.2.1", "", { "dependencies": { "async": "^3.2.0" } }, "sha512-U56CfOK17OKgTVqozZjUKNdkfEv6jk5WISBJ8SHoagjE6L69zOwl3Z+O8myjY9MEW3i2HPWQBt/LTbCgcC973Q=="],
|
"getos": ["getos@3.2.1", "", { "dependencies": { "async": "^3.2.0" } }, "sha512-U56CfOK17OKgTVqozZjUKNdkfEv6jk5WISBJ8SHoagjE6L69zOwl3Z+O8myjY9MEW3i2HPWQBt/LTbCgcC973Q=="],
|
||||||
@@ -1447,6 +1520,8 @@
|
|||||||
|
|
||||||
"h3": ["h3@1.14.0", "", { "dependencies": { "cookie-es": "^1.2.2", "crossws": "^0.3.2", "defu": "^6.1.4", "destr": "^2.0.3", "iron-webcrypto": "^1.2.1", "ohash": "^1.1.4", "radix3": "^1.1.2", "ufo": "^1.5.4", "uncrypto": "^0.1.3", "unenv": "^1.10.0" } }, "sha512-ao22eiONdgelqcnknw0iD645qW0s9NnrJHr5OBz4WOMdBdycfSas1EQf1wXRsm+PcB2Yoj43pjBPwqIpJQTeWg=="],
|
"h3": ["h3@1.14.0", "", { "dependencies": { "cookie-es": "^1.2.2", "crossws": "^0.3.2", "defu": "^6.1.4", "destr": "^2.0.3", "iron-webcrypto": "^1.2.1", "ohash": "^1.1.4", "radix3": "^1.1.2", "ufo": "^1.5.4", "uncrypto": "^0.1.3", "unenv": "^1.10.0" } }, "sha512-ao22eiONdgelqcnknw0iD645qW0s9NnrJHr5OBz4WOMdBdycfSas1EQf1wXRsm+PcB2Yoj43pjBPwqIpJQTeWg=="],
|
||||||
|
|
||||||
|
"handlebars": ["handlebars@4.7.8", "", { "dependencies": { "minimist": "^1.2.5", "neo-async": "^2.6.2", "source-map": "^0.6.1", "wordwrap": "^1.0.0" }, "optionalDependencies": { "uglify-js": "^3.1.4" }, "bin": { "handlebars": "bin/handlebars" } }, "sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ=="],
|
||||||
|
|
||||||
"has-flag": ["has-flag@4.0.0", "", {}, "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="],
|
"has-flag": ["has-flag@4.0.0", "", {}, "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="],
|
||||||
|
|
||||||
"has-symbols": ["has-symbols@1.1.0", "", {}, "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ=="],
|
"has-symbols": ["has-symbols@1.1.0", "", {}, "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ=="],
|
||||||
@@ -1481,6 +1556,8 @@
|
|||||||
|
|
||||||
"hastscript": ["hastscript@9.0.0", "", { "dependencies": { "@types/hast": "^3.0.0", "comma-separated-tokens": "^2.0.0", "hast-util-parse-selector": "^4.0.0", "property-information": "^6.0.0", "space-separated-tokens": "^2.0.0" } }, "sha512-jzaLBGavEDKHrc5EfFImKN7nZKKBdSLIdGvCwDZ9TfzbF2ffXiov8CKE445L2Z1Ek2t/m4SKQ2j6Ipv7NyUolw=="],
|
"hastscript": ["hastscript@9.0.0", "", { "dependencies": { "@types/hast": "^3.0.0", "comma-separated-tokens": "^2.0.0", "hast-util-parse-selector": "^4.0.0", "property-information": "^6.0.0", "space-separated-tokens": "^2.0.0" } }, "sha512-jzaLBGavEDKHrc5EfFImKN7nZKKBdSLIdGvCwDZ9TfzbF2ffXiov8CKE445L2Z1Ek2t/m4SKQ2j6Ipv7NyUolw=="],
|
||||||
|
|
||||||
|
"heic2any": ["heic2any@0.0.4", "", {}, "sha512-3lLnZiDELfabVH87htnRolZ2iehX9zwpRyGNz22GKXIu0fznlblf0/ftppXKNqS26dqFSeqfIBhAmAj/uSp0cA=="],
|
||||||
|
|
||||||
"hexoid": ["hexoid@2.0.0", "", {}, "sha512-qlspKUK7IlSQv2o+5I7yhUd7TxlOG2Vr5LTa3ve2XSNVKAL/n/u/7KLvKmFNimomDIKvZFXWHv0T12mv7rT8Aw=="],
|
"hexoid": ["hexoid@2.0.0", "", {}, "sha512-qlspKUK7IlSQv2o+5I7yhUd7TxlOG2Vr5LTa3ve2XSNVKAL/n/u/7KLvKmFNimomDIKvZFXWHv0T12mv7rT8Aw=="],
|
||||||
|
|
||||||
"highlight.run": ["highlight.run@9.14.0", "", {}, "sha512-ZR+ZLHlVU8lXqsuto0ZEMAOuvptaTBBf1jradnKDIn9OfAXupcYFbkASDlbsZtyBh2SYJSK50xwrucXujhksRg=="],
|
"highlight.run": ["highlight.run@9.14.0", "", {}, "sha512-ZR+ZLHlVU8lXqsuto0ZEMAOuvptaTBBf1jradnKDIn9OfAXupcYFbkASDlbsZtyBh2SYJSK50xwrucXujhksRg=="],
|
||||||
@@ -1541,6 +1618,8 @@
|
|||||||
|
|
||||||
"intersection-observer": ["intersection-observer@0.12.2", "", {}, "sha512-7m1vEcPCxXYI8HqnL8CKI6siDyD+eIWSwgB3DZA+ZTogxk9I4CDnj4wilt9x/+/QbHI4YG5YZNmC6458/e9Ktg=="],
|
"intersection-observer": ["intersection-observer@0.12.2", "", {}, "sha512-7m1vEcPCxXYI8HqnL8CKI6siDyD+eIWSwgB3DZA+ZTogxk9I4CDnj4wilt9x/+/QbHI4YG5YZNmC6458/e9Ktg=="],
|
||||||
|
|
||||||
|
"ip-address": ["ip-address@9.0.5", "", { "dependencies": { "jsbn": "1.1.0", "sprintf-js": "^1.1.3" } }, "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g=="],
|
||||||
|
|
||||||
"ipaddr.js": ["ipaddr.js@1.9.1", "", {}, "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g=="],
|
"ipaddr.js": ["ipaddr.js@1.9.1", "", {}, "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g=="],
|
||||||
|
|
||||||
"iron-webcrypto": ["iron-webcrypto@1.2.1", "", {}, "sha512-feOM6FaSr6rEABp/eDfVseKyTMDt+KGpeB35SkVn9Tyn0CqvVsY3EwI0v5i8nMHyJnzCIQf7nsy3p41TPkJZhg=="],
|
"iron-webcrypto": ["iron-webcrypto@1.2.1", "", {}, "sha512-feOM6FaSr6rEABp/eDfVseKyTMDt+KGpeB35SkVn9Tyn0CqvVsY3EwI0v5i8nMHyJnzCIQf7nsy3p41TPkJZhg=="],
|
||||||
@@ -1549,7 +1628,7 @@
|
|||||||
|
|
||||||
"is-alphanumerical": ["is-alphanumerical@2.0.1", "", { "dependencies": { "is-alphabetical": "^2.0.0", "is-decimal": "^2.0.0" } }, "sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw=="],
|
"is-alphanumerical": ["is-alphanumerical@2.0.1", "", { "dependencies": { "is-alphabetical": "^2.0.0", "is-decimal": "^2.0.0" } }, "sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw=="],
|
||||||
|
|
||||||
"is-arrayish": ["is-arrayish@0.3.2", "", {}, "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ=="],
|
"is-arrayish": ["is-arrayish@0.2.1", "", {}, "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg=="],
|
||||||
|
|
||||||
"is-base64": ["is-base64@1.1.0", "", { "bin": { "is-base64": "bin/is-base64", "is_base64": "bin/is-base64" } }, "sha512-Nlhg7Z2dVC4/PTvIFkgVVNvPHSO2eR/Yd0XzhGiXCXEvWnptXlXa/clQ8aePPiMuxEGcWfzWbGw2Fe3d+Y3v1g=="],
|
"is-base64": ["is-base64@1.1.0", "", { "bin": { "is-base64": "bin/is-base64", "is_base64": "bin/is-base64" } }, "sha512-Nlhg7Z2dVC4/PTvIFkgVVNvPHSO2eR/Yd0XzhGiXCXEvWnptXlXa/clQ8aePPiMuxEGcWfzWbGw2Fe3d+Y3v1g=="],
|
||||||
|
|
||||||
@@ -1661,6 +1740,8 @@
|
|||||||
|
|
||||||
"knex": ["knex@2.5.1", "", { "dependencies": { "colorette": "2.0.19", "commander": "^10.0.0", "debug": "4.3.4", "escalade": "^3.1.1", "esm": "^3.2.25", "get-package-type": "^0.1.0", "getopts": "2.3.0", "interpret": "^2.2.0", "lodash": "^4.17.21", "pg-connection-string": "2.6.1", "rechoir": "^0.8.0", "resolve-from": "^5.0.0", "tarn": "^3.0.2", "tildify": "2.0.0" }, "bin": { "knex": "bin/cli.js" } }, "sha512-z78DgGKUr4SE/6cm7ku+jHvFT0X97aERh/f0MUKAKgFnwCYBEW4TFBqtHWFYiJFid7fMrtpZ/gxJthvz5mEByA=="],
|
"knex": ["knex@2.5.1", "", { "dependencies": { "colorette": "2.0.19", "commander": "^10.0.0", "debug": "4.3.4", "escalade": "^3.1.1", "esm": "^3.2.25", "get-package-type": "^0.1.0", "getopts": "2.3.0", "interpret": "^2.2.0", "lodash": "^4.17.21", "pg-connection-string": "2.6.1", "rechoir": "^0.8.0", "resolve-from": "^5.0.0", "tarn": "^3.0.2", "tildify": "2.0.0" }, "bin": { "knex": "bin/cli.js" } }, "sha512-z78DgGKUr4SE/6cm7ku+jHvFT0X97aERh/f0MUKAKgFnwCYBEW4TFBqtHWFYiJFid7fMrtpZ/gxJthvz5mEByA=="],
|
||||||
|
|
||||||
|
"kuler": ["kuler@2.0.0", "", {}, "sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A=="],
|
||||||
|
|
||||||
"lazy-ass": ["lazy-ass@1.6.0", "", {}, "sha512-cc8oEVoctTvsFZ/Oje/kGnHbpWHYBe8IAJe4C0QNc3t8uM/0Y8+erSz/7Y1ALuXTEZTMvxXwO6YbX1ey3ujiZw=="],
|
"lazy-ass": ["lazy-ass@1.6.0", "", {}, "sha512-cc8oEVoctTvsFZ/Oje/kGnHbpWHYBe8IAJe4C0QNc3t8uM/0Y8+erSz/7Y1ALuXTEZTMvxXwO6YbX1ey3ujiZw=="],
|
||||||
|
|
||||||
"lazystream": ["lazystream@1.0.1", "", { "dependencies": { "readable-stream": "^2.0.5" } }, "sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw=="],
|
"lazystream": ["lazystream@1.0.1", "", { "dependencies": { "readable-stream": "^2.0.5" } }, "sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw=="],
|
||||||
@@ -1713,6 +1794,8 @@
|
|||||||
|
|
||||||
"log-update": ["log-update@4.0.0", "", { "dependencies": { "ansi-escapes": "^4.3.0", "cli-cursor": "^3.1.0", "slice-ansi": "^4.0.0", "wrap-ansi": "^6.2.0" } }, "sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg=="],
|
"log-update": ["log-update@4.0.0", "", { "dependencies": { "ansi-escapes": "^4.3.0", "cli-cursor": "^3.1.0", "slice-ansi": "^4.0.0", "wrap-ansi": "^6.2.0" } }, "sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg=="],
|
||||||
|
|
||||||
|
"logform": ["logform@2.7.0", "", { "dependencies": { "@colors/colors": "1.6.0", "@types/triple-beam": "^1.3.2", "fecha": "^4.2.0", "ms": "^2.1.1", "safe-stable-stringify": "^2.3.1", "triple-beam": "^1.3.0" } }, "sha512-TFYA4jnP7PVbmlBIfhlSe+WKxs9dklXMTEGcBCIvLhE/Tn3H6Gk1norupVW7m5Cnd4bLcr08AytbyV/xj7f/kQ=="],
|
||||||
|
|
||||||
"longest-streak": ["longest-streak@3.1.0", "", {}, "sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g=="],
|
"longest-streak": ["longest-streak@3.1.0", "", {}, "sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g=="],
|
||||||
|
|
||||||
"loose-envify": ["loose-envify@1.4.0", "", { "dependencies": { "js-tokens": "^3.0.0 || ^4.0.0" }, "bin": { "loose-envify": "cli.js" } }, "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q=="],
|
"loose-envify": ["loose-envify@1.4.0", "", { "dependencies": { "js-tokens": "^3.0.0 || ^4.0.0" }, "bin": { "loose-envify": "cli.js" } }, "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q=="],
|
||||||
@@ -1877,13 +1960,15 @@
|
|||||||
|
|
||||||
"minizlib": ["minizlib@2.1.2", "", { "dependencies": { "minipass": "^3.0.0", "yallist": "^4.0.0" } }, "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg=="],
|
"minizlib": ["minizlib@2.1.2", "", { "dependencies": { "minipass": "^3.0.0", "yallist": "^4.0.0" } }, "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg=="],
|
||||||
|
|
||||||
|
"mitt": ["mitt@3.0.1", "", {}, "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw=="],
|
||||||
|
|
||||||
"mkdirp": ["mkdirp@1.0.4", "", { "bin": { "mkdirp": "bin/cmd.js" } }, "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw=="],
|
"mkdirp": ["mkdirp@1.0.4", "", { "bin": { "mkdirp": "bin/cmd.js" } }, "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw=="],
|
||||||
|
|
||||||
"module-details-from-path": ["module-details-from-path@1.0.3", "", {}, "sha512-ySViT69/76t8VhE1xXHK6Ch4NcDd26gx0MzKXLO+F7NOtnqH68d9zF94nT8ZWSxXh8ELOERsnJO/sWt1xZYw5A=="],
|
"module-details-from-path": ["module-details-from-path@1.0.3", "", {}, "sha512-ySViT69/76t8VhE1xXHK6Ch4NcDd26gx0MzKXLO+F7NOtnqH68d9zF94nT8ZWSxXh8ELOERsnJO/sWt1xZYw5A=="],
|
||||||
|
|
||||||
"moment": ["moment@2.30.1", "", {}, "sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how=="],
|
"moment": ["moment@2.30.1", "", {}, "sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how=="],
|
||||||
|
|
||||||
"moment-timezone": ["moment-timezone@0.5.47", "", { "dependencies": { "moment": "^2.29.4" } }, "sha512-UbNt/JAWS0m/NJOebR0QMRHBk0hu03r5dx9GK8Cs0AS3I81yDcOc9k+DytPItgVvBP7J6Mf6U2n3BPAacAV9oA=="],
|
"moment-timezone": ["moment-timezone@0.6.0", "", { "dependencies": { "moment": "^2.29.4" } }, "sha512-ldA5lRNm3iJCWZcBCab4pnNL3HSZYXVb/3TYr75/1WCTWYuTqYUb5f/S384pncYjJ88lbO8Z4uPDvmoluHJc8Q=="],
|
||||||
|
|
||||||
"mrmime": ["mrmime@2.0.0", "", {}, "sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw=="],
|
"mrmime": ["mrmime@2.0.0", "", {}, "sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw=="],
|
||||||
|
|
||||||
@@ -1901,8 +1986,12 @@
|
|||||||
|
|
||||||
"negotiator": ["negotiator@0.6.3", "", {}, "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg=="],
|
"negotiator": ["negotiator@0.6.3", "", {}, "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg=="],
|
||||||
|
|
||||||
|
"neo-async": ["neo-async@2.6.2", "", {}, "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw=="],
|
||||||
|
|
||||||
"neotraverse": ["neotraverse@0.6.18", "", {}, "sha512-Z4SmBUweYa09+o6pG+eASabEpP6QkQ70yHj351pQoEXIs8uHbaU2DWVmzBANKgflPa47A50PtB2+NgRpQvr7vA=="],
|
"neotraverse": ["neotraverse@0.6.18", "", {}, "sha512-Z4SmBUweYa09+o6pG+eASabEpP6QkQ70yHj351pQoEXIs8uHbaU2DWVmzBANKgflPa47A50PtB2+NgRpQvr7vA=="],
|
||||||
|
|
||||||
|
"netmask": ["netmask@2.0.2", "", {}, "sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg=="],
|
||||||
|
|
||||||
"new-github-issue-url": ["new-github-issue-url@0.2.1", "", {}, "sha512-md4cGoxuT4T4d/HDOXbrUHkTKrp/vp+m3aOA7XXVYwNsUNMK49g3SQicTSeV5GIz/5QVGAeYRAOlyp9OvlgsYA=="],
|
"new-github-issue-url": ["new-github-issue-url@0.2.1", "", {}, "sha512-md4cGoxuT4T4d/HDOXbrUHkTKrp/vp+m3aOA7XXVYwNsUNMK49g3SQicTSeV5GIz/5QVGAeYRAOlyp9OvlgsYA=="],
|
||||||
|
|
||||||
"nlcst-to-string": ["nlcst-to-string@4.0.0", "", { "dependencies": { "@types/nlcst": "^2.0.0" } }, "sha512-YKLBCcUYKAg0FNlOBT6aI91qFmSiFKiluk655WzPF+DDMA02qIyy8uiRqI8QXtcFpEvll12LpL5MXqEmAZ+dcA=="],
|
"nlcst-to-string": ["nlcst-to-string@4.0.0", "", { "dependencies": { "@types/nlcst": "^2.0.0" } }, "sha512-YKLBCcUYKAg0FNlOBT6aI91qFmSiFKiluk655WzPF+DDMA02qIyy8uiRqI8QXtcFpEvll12LpL5MXqEmAZ+dcA=="],
|
||||||
@@ -1953,6 +2042,8 @@
|
|||||||
|
|
||||||
"once": ["once@1.4.0", "", { "dependencies": { "wrappy": "1" } }, "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w=="],
|
"once": ["once@1.4.0", "", { "dependencies": { "wrappy": "1" } }, "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w=="],
|
||||||
|
|
||||||
|
"one-time": ["one-time@1.0.0", "", { "dependencies": { "fn.name": "1.x.x" } }, "sha512-5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g=="],
|
||||||
|
|
||||||
"onetime": ["onetime@5.1.2", "", { "dependencies": { "mimic-fn": "^2.1.0" } }, "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg=="],
|
"onetime": ["onetime@5.1.2", "", { "dependencies": { "mimic-fn": "^2.1.0" } }, "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg=="],
|
||||||
|
|
||||||
"oniguruma-to-es": ["oniguruma-to-es@2.3.0", "", { "dependencies": { "emoji-regex-xs": "^1.0.0", "regex": "^5.1.1", "regex-recursion": "^5.1.1" } }, "sha512-bwALDxriqfKGfUufKGGepCzu9x7nJQuoRoAFp4AnwehhC2crqrDIAP/uN2qdlsAvSMpeRC3+Yzhqc7hLmle5+g=="],
|
"oniguruma-to-es": ["oniguruma-to-es@2.3.0", "", { "dependencies": { "emoji-regex-xs": "^1.0.0", "regex": "^5.1.1", "regex-recursion": "^5.1.1" } }, "sha512-bwALDxriqfKGfUufKGGepCzu9x7nJQuoRoAFp4AnwehhC2crqrDIAP/uN2qdlsAvSMpeRC3+Yzhqc7hLmle5+g=="],
|
||||||
@@ -1985,6 +2076,10 @@
|
|||||||
|
|
||||||
"p-try": ["p-try@2.2.0", "", {}, "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ=="],
|
"p-try": ["p-try@2.2.0", "", {}, "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ=="],
|
||||||
|
|
||||||
|
"pac-proxy-agent": ["pac-proxy-agent@7.2.0", "", { "dependencies": { "@tootallnate/quickjs-emscripten": "^0.23.0", "agent-base": "^7.1.2", "debug": "^4.3.4", "get-uri": "^6.0.1", "http-proxy-agent": "^7.0.0", "https-proxy-agent": "^7.0.6", "pac-resolver": "^7.0.1", "socks-proxy-agent": "^8.0.5" } }, "sha512-TEB8ESquiLMc0lV8vcd5Ql/JAKAoyzHFXaStwjkzpOpC5Yv+pIzLfHvjTSdf3vpa2bMiUQrg9i6276yn8666aA=="],
|
||||||
|
|
||||||
|
"pac-resolver": ["pac-resolver@7.0.1", "", { "dependencies": { "degenerator": "^5.0.0", "netmask": "^2.0.2" } }, "sha512-5NPgf87AT2STgwa2ntRMr45jTKrYBGkVU36yT0ig/n/GMAa3oPqhZfIQ2kMEimReg0+t9kZViDVZ83qfVUlckg=="],
|
||||||
|
|
||||||
"package-json-from-dist": ["package-json-from-dist@1.0.1", "", {}, "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw=="],
|
"package-json-from-dist": ["package-json-from-dist@1.0.1", "", {}, "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw=="],
|
||||||
|
|
||||||
"pako": ["pako@1.0.11", "", {}, "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw=="],
|
"pako": ["pako@1.0.11", "", {}, "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw=="],
|
||||||
@@ -2095,12 +2190,18 @@
|
|||||||
|
|
||||||
"proxy-addr": ["proxy-addr@2.0.7", "", { "dependencies": { "forwarded": "0.2.0", "ipaddr.js": "1.9.1" } }, "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg=="],
|
"proxy-addr": ["proxy-addr@2.0.7", "", { "dependencies": { "forwarded": "0.2.0", "ipaddr.js": "1.9.1" } }, "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg=="],
|
||||||
|
|
||||||
|
"proxy-agent": ["proxy-agent@6.5.0", "", { "dependencies": { "agent-base": "^7.1.2", "debug": "^4.3.4", "http-proxy-agent": "^7.0.1", "https-proxy-agent": "^7.0.6", "lru-cache": "^7.14.1", "pac-proxy-agent": "^7.1.0", "proxy-from-env": "^1.1.0", "socks-proxy-agent": "^8.0.5" } }, "sha512-TmatMXdr2KlRiA2CyDu8GqR8EjahTG3aY3nXjdzFyoZbmB8hrBsTyMezhULIXKnC0jpfjlmiZ3+EaCzoInSu/A=="],
|
||||||
|
|
||||||
"proxy-from-env": ["proxy-from-env@1.0.0", "", {}, "sha512-F2JHgJQ1iqwnHDcQjVBsq3n/uoaFL+iPW/eAeL7kVxy/2RrWaN4WroKjjvbsoRtv0ftelNyC01bjRhn/bhcf4A=="],
|
"proxy-from-env": ["proxy-from-env@1.0.0", "", {}, "sha512-F2JHgJQ1iqwnHDcQjVBsq3n/uoaFL+iPW/eAeL7kVxy/2RrWaN4WroKjjvbsoRtv0ftelNyC01bjRhn/bhcf4A=="],
|
||||||
|
|
||||||
"pump": ["pump@3.0.2", "", { "dependencies": { "end-of-stream": "^1.1.0", "once": "^1.3.1" } }, "sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw=="],
|
"pump": ["pump@3.0.2", "", { "dependencies": { "end-of-stream": "^1.1.0", "once": "^1.3.1" } }, "sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw=="],
|
||||||
|
|
||||||
"punycode": ["punycode@2.3.1", "", {}, "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg=="],
|
"punycode": ["punycode@2.3.1", "", {}, "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg=="],
|
||||||
|
|
||||||
|
"puppeteer": ["puppeteer@24.15.0", "", { "dependencies": { "@puppeteer/browsers": "2.10.6", "chromium-bidi": "7.2.0", "cosmiconfig": "^9.0.0", "devtools-protocol": "0.0.1464554", "puppeteer-core": "24.15.0", "typed-query-selector": "^2.12.0" }, "bin": { "puppeteer": "lib/cjs/puppeteer/node/cli.js" } }, "sha512-HPSOTw+DFsU/5s2TUUWEum9WjFbyjmvFDuGHtj2X4YUz2AzOzvKMkT3+A3FR+E+ZefiX/h3kyLyXzWJWx/eMLQ=="],
|
||||||
|
|
||||||
|
"puppeteer-core": ["puppeteer-core@24.15.0", "", { "dependencies": { "@puppeteer/browsers": "2.10.6", "chromium-bidi": "7.2.0", "debug": "^4.4.1", "devtools-protocol": "0.0.1464554", "typed-query-selector": "^2.12.0", "ws": "^8.18.3" } }, "sha512-2iy0iBeWbNyhgiCGd/wvGrDSo73emNFjSxYOcyAqYiagkYt5q4cPfVXaVDKBsukgc2fIIfLAalBZlaxldxdDYg=="],
|
||||||
|
|
||||||
"qs": ["qs@6.13.0", "", { "dependencies": { "side-channel": "^1.0.6" } }, "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg=="],
|
"qs": ["qs@6.13.0", "", { "dependencies": { "side-channel": "^1.0.6" } }, "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg=="],
|
||||||
|
|
||||||
"queue-microtask": ["queue-microtask@1.2.3", "", {}, "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A=="],
|
"queue-microtask": ["queue-microtask@1.2.3", "", {}, "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A=="],
|
||||||
@@ -2265,6 +2366,8 @@
|
|||||||
|
|
||||||
"request-progress": ["request-progress@3.0.0", "", { "dependencies": { "throttleit": "^1.0.0" } }, "sha512-MnWzEHHaxHO2iWiQuHrUPBi/1WeBf5PkxQqNyNvLl9VAYSdXkP8tQ3pBSeCPD+yw0v0Aq1zosWLz0BdeXpWwZg=="],
|
"request-progress": ["request-progress@3.0.0", "", { "dependencies": { "throttleit": "^1.0.0" } }, "sha512-MnWzEHHaxHO2iWiQuHrUPBi/1WeBf5PkxQqNyNvLl9VAYSdXkP8tQ3pBSeCPD+yw0v0Aq1zosWLz0BdeXpWwZg=="],
|
||||||
|
|
||||||
|
"require-directory": ["require-directory@2.1.1", "", {}, "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q=="],
|
||||||
|
|
||||||
"require-in-the-middle": ["require-in-the-middle@7.5.2", "", { "dependencies": { "debug": "^4.3.5", "module-details-from-path": "^1.0.3", "resolve": "^1.22.8" } }, "sha512-gAZ+kLqBdHarXB64XpAe2VCjB7rIRv+mU8tfRWziHRJ5umKsIHN2tLLv6EtMw7WCdP19S0ERVMldNvxYCHnhSQ=="],
|
"require-in-the-middle": ["require-in-the-middle@7.5.2", "", { "dependencies": { "debug": "^4.3.5", "module-details-from-path": "^1.0.3", "resolve": "^1.22.8" } }, "sha512-gAZ+kLqBdHarXB64XpAe2VCjB7rIRv+mU8tfRWziHRJ5umKsIHN2tLLv6EtMw7WCdP19S0ERVMldNvxYCHnhSQ=="],
|
||||||
|
|
||||||
"resize-observer-polyfill": ["resize-observer-polyfill@1.5.1", "", {}, "sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg=="],
|
"resize-observer-polyfill": ["resize-observer-polyfill@1.5.1", "", {}, "sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg=="],
|
||||||
@@ -2307,6 +2410,8 @@
|
|||||||
|
|
||||||
"safe-buffer": ["safe-buffer@5.2.1", "", {}, "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="],
|
"safe-buffer": ["safe-buffer@5.2.1", "", {}, "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="],
|
||||||
|
|
||||||
|
"safe-stable-stringify": ["safe-stable-stringify@2.5.0", "", {}, "sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA=="],
|
||||||
|
|
||||||
"safer-buffer": ["safer-buffer@2.1.2", "", {}, "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="],
|
"safer-buffer": ["safer-buffer@2.1.2", "", {}, "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="],
|
||||||
|
|
||||||
"sander": ["sander@0.5.1", "", { "dependencies": { "es6-promise": "^3.1.2", "graceful-fs": "^4.1.3", "mkdirp": "^0.5.1", "rimraf": "^2.5.2" } }, "sha512-3lVqBir7WuKDHGrKRDn/1Ye3kwpXaDOMsiRP1wd6wpZW56gJhsbp5RqQpA6JG/P+pkXizygnr1dKR8vzWaVsfA=="],
|
"sander": ["sander@0.5.1", "", { "dependencies": { "es6-promise": "^3.1.2", "graceful-fs": "^4.1.3", "mkdirp": "^0.5.1", "rimraf": "^2.5.2" } }, "sha512-3lVqBir7WuKDHGrKRDn/1Ye3kwpXaDOMsiRP1wd6wpZW56gJhsbp5RqQpA6JG/P+pkXizygnr1dKR8vzWaVsfA=="],
|
||||||
@@ -2373,8 +2478,14 @@
|
|||||||
|
|
||||||
"slice-ansi": ["slice-ansi@3.0.0", "", { "dependencies": { "ansi-styles": "^4.0.0", "astral-regex": "^2.0.0", "is-fullwidth-code-point": "^3.0.0" } }, "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ=="],
|
"slice-ansi": ["slice-ansi@3.0.0", "", { "dependencies": { "ansi-styles": "^4.0.0", "astral-regex": "^2.0.0", "is-fullwidth-code-point": "^3.0.0" } }, "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ=="],
|
||||||
|
|
||||||
|
"smart-buffer": ["smart-buffer@4.2.0", "", {}, "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg=="],
|
||||||
|
|
||||||
"soap": ["soap@1.1.8", "", { "dependencies": { "axios": "^1.7.9", "axios-ntlm": "^1.4.2", "debug": "^4.4.0", "formidable": "^3.5.2", "get-stream": "^6.0.1", "lodash": "^4.17.21", "sax": "^1.4.1", "strip-bom": "^3.0.0", "whatwg-mimetype": "4.0.0", "xml-crypto": "^6.0.0" } }, "sha512-fDNGyGsPkQP3bZX/366Ud5Kpjo9mCMh7ZKYIc3uipBEPPM2ZqCNkv1Z2/w0qpzpYFLL7do8WWwVUAjAwuUe1AQ=="],
|
"soap": ["soap@1.1.8", "", { "dependencies": { "axios": "^1.7.9", "axios-ntlm": "^1.4.2", "debug": "^4.4.0", "formidable": "^3.5.2", "get-stream": "^6.0.1", "lodash": "^4.17.21", "sax": "^1.4.1", "strip-bom": "^3.0.0", "whatwg-mimetype": "4.0.0", "xml-crypto": "^6.0.0" } }, "sha512-fDNGyGsPkQP3bZX/366Ud5Kpjo9mCMh7ZKYIc3uipBEPPM2ZqCNkv1Z2/w0qpzpYFLL7do8WWwVUAjAwuUe1AQ=="],
|
||||||
|
|
||||||
|
"socks": ["socks@2.8.4", "", { "dependencies": { "ip-address": "^9.0.5", "smart-buffer": "^4.2.0" } }, "sha512-D3YaD0aRxR3mEcqnidIs7ReYJFVzWdd6fXJYUM8ixcQcJRGTka/b3saV0KflYhyVJXKhb947GndU35SxYNResQ=="],
|
||||||
|
|
||||||
|
"socks-proxy-agent": ["socks-proxy-agent@8.0.5", "", { "dependencies": { "agent-base": "^7.1.2", "debug": "^4.3.4", "socks": "^2.8.3" } }, "sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw=="],
|
||||||
|
|
||||||
"sorcery": ["sorcery@0.11.1", "", { "dependencies": { "@jridgewell/sourcemap-codec": "^1.4.14", "buffer-crc32": "^1.0.0", "minimist": "^1.2.0", "sander": "^0.5.0" }, "bin": { "sorcery": "bin/sorcery" } }, "sha512-o7npfeJE6wi6J9l0/5LKshFzZ2rMatRiCDwYeDQaOzqdzRJwALhX7mk/A/ecg6wjMu7wdZbmXfD2S/vpOg0bdQ=="],
|
"sorcery": ["sorcery@0.11.1", "", { "dependencies": { "@jridgewell/sourcemap-codec": "^1.4.14", "buffer-crc32": "^1.0.0", "minimist": "^1.2.0", "sander": "^0.5.0" }, "bin": { "sorcery": "bin/sorcery" } }, "sha512-o7npfeJE6wi6J9l0/5LKshFzZ2rMatRiCDwYeDQaOzqdzRJwALhX7mk/A/ecg6wjMu7wdZbmXfD2S/vpOg0bdQ=="],
|
||||||
|
|
||||||
"source-map": ["source-map@0.7.4", "", {}, "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA=="],
|
"source-map": ["source-map@0.7.4", "", {}, "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA=="],
|
||||||
@@ -2395,12 +2506,20 @@
|
|||||||
|
|
||||||
"sqids": ["sqids@0.3.0", "", {}, "sha512-lOQK1ucVg+W6n3FhRwwSeUijxe93b51Bfz5PMRMihVf1iVkl82ePQG7V5vwrhzB11v0NtsR25PSZRGiSomJaJw=="],
|
"sqids": ["sqids@0.3.0", "", {}, "sha512-lOQK1ucVg+W6n3FhRwwSeUijxe93b51Bfz5PMRMihVf1iVkl82ePQG7V5vwrhzB11v0NtsR25PSZRGiSomJaJw=="],
|
||||||
|
|
||||||
|
"ssh2": ["ssh2@1.16.0", "", { "dependencies": { "asn1": "^0.2.6", "bcrypt-pbkdf": "^1.0.2" }, "optionalDependencies": { "cpu-features": "~0.0.10", "nan": "^2.20.0" } }, "sha512-r1X4KsBGedJqo7h8F5c4Ybpcr5RjyP+aWIG007uBPRjmdQWfEiVLzSK71Zji1B9sKxwaCvD8y8cwSkYrlLiRRg=="],
|
||||||
|
|
||||||
|
"ssh2-sftp-client": ["ssh2-sftp-client@12.0.0", "", { "dependencies": { "concat-stream": "^2.0.0", "ssh2": "^1.16.0" } }, "sha512-k+ocDsx6N2eDwQlIRwJFa0I1bkQpFPhIc+cv1iplaQaIPXFt9YM1ZnXCJOW4OILS5dzE+12OlhYIF5g0AzgVfg=="],
|
||||||
|
|
||||||
"sshpk": ["sshpk@1.18.0", "", { "dependencies": { "asn1": "~0.2.3", "assert-plus": "^1.0.0", "bcrypt-pbkdf": "^1.0.0", "dashdash": "^1.12.0", "ecc-jsbn": "~0.1.1", "getpass": "^0.1.1", "jsbn": "~0.1.0", "safer-buffer": "^2.0.2", "tweetnacl": "~0.14.0" }, "bin": { "sshpk-conv": "bin/sshpk-conv", "sshpk-sign": "bin/sshpk-sign", "sshpk-verify": "bin/sshpk-verify" } }, "sha512-2p2KJZTSqQ/I3+HX42EpYOa2l3f8Erv8MWKsy2I9uf4wA7yFIkXRffYdsx86y6z4vHtV8u7g+pPlr8/4ouAxsQ=="],
|
"sshpk": ["sshpk@1.18.0", "", { "dependencies": { "asn1": "~0.2.3", "assert-plus": "^1.0.0", "bcrypt-pbkdf": "^1.0.0", "dashdash": "^1.12.0", "ecc-jsbn": "~0.1.1", "getpass": "^0.1.1", "jsbn": "~0.1.0", "safer-buffer": "^2.0.2", "tweetnacl": "~0.14.0" }, "bin": { "sshpk-conv": "bin/sshpk-conv", "sshpk-sign": "bin/sshpk-sign", "sshpk-verify": "bin/sshpk-verify" } }, "sha512-2p2KJZTSqQ/I3+HX42EpYOa2l3f8Erv8MWKsy2I9uf4wA7yFIkXRffYdsx86y6z4vHtV8u7g+pPlr8/4ouAxsQ=="],
|
||||||
|
|
||||||
|
"stack-trace": ["stack-trace@0.0.10", "", {}, "sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg=="],
|
||||||
|
|
||||||
"statuses": ["statuses@2.0.1", "", {}, "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ=="],
|
"statuses": ["statuses@2.0.1", "", {}, "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ=="],
|
||||||
|
|
||||||
"stdin-discarder": ["stdin-discarder@0.2.2", "", {}, "sha512-UhDfHmA92YAlNnCfhmq0VeNL5bDbiZGg7sZ2IvPsXubGkiNa9EC+tUTsjBRsYUAz87btI6/1wf4XoVvQ3uRnmQ=="],
|
"stdin-discarder": ["stdin-discarder@0.2.2", "", {}, "sha512-UhDfHmA92YAlNnCfhmq0VeNL5bDbiZGg7sZ2IvPsXubGkiNa9EC+tUTsjBRsYUAz87btI6/1wf4XoVvQ3uRnmQ=="],
|
||||||
|
|
||||||
|
"streamx": ["streamx@2.22.0", "", { "dependencies": { "fast-fifo": "^1.3.2", "text-decoder": "^1.1.0" }, "optionalDependencies": { "bare-events": "^2.2.0" } }, "sha512-sLh1evHOzBy/iWRiR6d1zRcLao4gGZr3C1kzNz4fopCOKJb6xD9ub8Mpi9Mr1R6id5o43S+d93fI48UC5uM9aw=="],
|
||||||
|
|
||||||
"string-convert": ["string-convert@0.2.1", "", {}, "sha512-u/1tdPl4yQnPBjnVrmdLo9gtuLvELKsAoRapekWggdiQNvvvum+jYF329d84NAa660KQw7pB2n36KrIKVoXa3A=="],
|
"string-convert": ["string-convert@0.2.1", "", {}, "sha512-u/1tdPl4yQnPBjnVrmdLo9gtuLvELKsAoRapekWggdiQNvvvum+jYF329d84NAa660KQw7pB2n36KrIKVoXa3A=="],
|
||||||
|
|
||||||
"string-width": ["string-width@4.2.3", "", { "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" } }, "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g=="],
|
"string-width": ["string-width@4.2.3", "", { "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" } }, "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g=="],
|
||||||
@@ -2455,6 +2574,8 @@
|
|||||||
|
|
||||||
"tar": ["tar@6.2.1", "", { "dependencies": { "chownr": "^2.0.0", "fs-minipass": "^2.0.0", "minipass": "^5.0.0", "minizlib": "^2.1.1", "mkdirp": "^1.0.3", "yallist": "^4.0.0" } }, "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A=="],
|
"tar": ["tar@6.2.1", "", { "dependencies": { "chownr": "^2.0.0", "fs-minipass": "^2.0.0", "minipass": "^5.0.0", "minizlib": "^2.1.1", "mkdirp": "^1.0.3", "yallist": "^4.0.0" } }, "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A=="],
|
||||||
|
|
||||||
|
"tar-fs": ["tar-fs@3.1.0", "", { "dependencies": { "pump": "^3.0.0", "tar-stream": "^3.1.5" }, "optionalDependencies": { "bare-fs": "^4.0.1", "bare-path": "^3.0.0" } }, "sha512-5Mty5y/sOF1YWj1J6GiBodjlDc05CUR8PKXrsnFAiSG0xA+GHeWLovaZPYUDXkH/1iKRf2+M5+OrRgzC7O9b7w=="],
|
||||||
|
|
||||||
"tar-stream": ["tar-stream@2.2.0", "", { "dependencies": { "bl": "^4.0.3", "end-of-stream": "^1.4.1", "fs-constants": "^1.0.0", "inherits": "^2.0.3", "readable-stream": "^3.1.1" } }, "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ=="],
|
"tar-stream": ["tar-stream@2.2.0", "", { "dependencies": { "bl": "^4.0.3", "end-of-stream": "^1.4.1", "fs-constants": "^1.0.0", "inherits": "^2.0.3", "readable-stream": "^3.1.1" } }, "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ=="],
|
||||||
|
|
||||||
"tarn": ["tarn@3.0.2", "", {}, "sha512-51LAVKUSZSVfI05vjPESNc5vwqqZpbXCsU+/+wxlOrUjk2SnFTt97v9ZgQrD4YmxYW1Px6w2KjaDitCfkvgxMQ=="],
|
"tarn": ["tarn@3.0.2", "", {}, "sha512-51LAVKUSZSVfI05vjPESNc5vwqqZpbXCsU+/+wxlOrUjk2SnFTt97v9ZgQrD4YmxYW1Px6w2KjaDitCfkvgxMQ=="],
|
||||||
@@ -2467,6 +2588,10 @@
|
|||||||
|
|
||||||
"terminal-link": ["terminal-link@2.1.1", "", { "dependencies": { "ansi-escapes": "^4.2.1", "supports-hyperlinks": "^2.0.0" } }, "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ=="],
|
"terminal-link": ["terminal-link@2.1.1", "", { "dependencies": { "ansi-escapes": "^4.2.1", "supports-hyperlinks": "^2.0.0" } }, "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ=="],
|
||||||
|
|
||||||
|
"text-decoder": ["text-decoder@1.2.3", "", { "dependencies": { "b4a": "^1.6.4" } }, "sha512-3/o9z3X0X0fTupwsYvR03pJ/DjWuqqrfwBgTQzdWDiQSm9KitAyz/9WqsT2JQW7KV2m+bC2ol/zqpW37NHxLaA=="],
|
||||||
|
|
||||||
|
"text-hex": ["text-hex@1.0.0", "", {}, "sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg=="],
|
||||||
|
|
||||||
"text-table": ["text-table@0.2.0", "", {}, "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw=="],
|
"text-table": ["text-table@0.2.0", "", {}, "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw=="],
|
||||||
|
|
||||||
"thenify": ["thenify@3.3.1", "", { "dependencies": { "any-promise": "^1.0.0" } }, "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw=="],
|
"thenify": ["thenify@3.3.1", "", { "dependencies": { "any-promise": "^1.0.0" } }, "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw=="],
|
||||||
@@ -2511,6 +2636,8 @@
|
|||||||
|
|
||||||
"trim-lines": ["trim-lines@3.0.1", "", {}, "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg=="],
|
"trim-lines": ["trim-lines@3.0.1", "", {}, "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg=="],
|
||||||
|
|
||||||
|
"triple-beam": ["triple-beam@1.4.1", "", {}, "sha512-aZbgViZrg1QNcG+LULa7nhZpJTZSLm/mXnHXnbAbjmN5aSa0y7V+wvv6+4WaBtpISJzThKy+PIPxc1Nq1EJ9mg=="],
|
||||||
|
|
||||||
"trough": ["trough@2.2.0", "", {}, "sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw=="],
|
"trough": ["trough@2.2.0", "", {}, "sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw=="],
|
||||||
|
|
||||||
"trpc-openapi": ["trpc-openapi@1.2.0", "", { "dependencies": { "co-body": "^6.1.0", "h3": "^1.6.4", "lodash.clonedeep": "^4.5.0", "node-mocks-http": "^1.12.2", "openapi-types": "^12.1.1", "zod-to-json-schema": "^3.21.1" }, "peerDependencies": { "@trpc/server": "^10.0.0", "zod": "^3.14.4" } }, "sha512-pfYoCd/3KYXWXvUPZBKJw455OOwngKN/6SIcj7Yit19OMLJ+8yVZkEvGEeg5wUSwfsiTdRsKuvqkRPXVSwV7ew=="],
|
"trpc-openapi": ["trpc-openapi@1.2.0", "", { "dependencies": { "co-body": "^6.1.0", "h3": "^1.6.4", "lodash.clonedeep": "^4.5.0", "node-mocks-http": "^1.12.2", "openapi-types": "^12.1.1", "zod-to-json-schema": "^3.21.1" }, "peerDependencies": { "@trpc/server": "^10.0.0", "zod": "^3.14.4" } }, "sha512-pfYoCd/3KYXWXvUPZBKJw455OOwngKN/6SIcj7Yit19OMLJ+8yVZkEvGEeg5wUSwfsiTdRsKuvqkRPXVSwV7ew=="],
|
||||||
@@ -2539,10 +2666,16 @@
|
|||||||
|
|
||||||
"type-is": ["type-is@1.6.18", "", { "dependencies": { "media-typer": "0.3.0", "mime-types": "~2.1.24" } }, "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g=="],
|
"type-is": ["type-is@1.6.18", "", { "dependencies": { "media-typer": "0.3.0", "mime-types": "~2.1.24" } }, "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g=="],
|
||||||
|
|
||||||
|
"typed-query-selector": ["typed-query-selector@2.12.0", "", {}, "sha512-SbklCd1F0EiZOyPiW192rrHZzZ5sBijB6xM+cpmrwDqObvdtunOHHIk9fCGsoK5JVIYXoyEp4iEdE3upFH3PAg=="],
|
||||||
|
|
||||||
|
"typedarray": ["typedarray@0.0.6", "", {}, "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA=="],
|
||||||
|
|
||||||
"typescript": ["typescript@5.8.3", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ=="],
|
"typescript": ["typescript@5.8.3", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ=="],
|
||||||
|
|
||||||
"ufo": ["ufo@1.5.4", "", {}, "sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ=="],
|
"ufo": ["ufo@1.5.4", "", {}, "sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ=="],
|
||||||
|
|
||||||
|
"uglify-js": ["uglify-js@3.19.3", "", { "bin": { "uglifyjs": "bin/uglifyjs" } }, "sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ=="],
|
||||||
|
|
||||||
"uncrypto": ["uncrypto@0.1.3", "", {}, "sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q=="],
|
"uncrypto": ["uncrypto@0.1.3", "", {}, "sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q=="],
|
||||||
|
|
||||||
"undici-types": ["undici-types@6.20.0", "", {}, "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg=="],
|
"undici-types": ["undici-types@6.20.0", "", {}, "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg=="],
|
||||||
@@ -2635,24 +2768,36 @@
|
|||||||
|
|
||||||
"widest-line": ["widest-line@5.0.0", "", { "dependencies": { "string-width": "^7.0.0" } }, "sha512-c9bZp7b5YtRj2wOe6dlj32MK+Bx/M/d+9VB2SHM1OtsUHR0aV0tdP6DWh/iMt0kWi1t5g1Iudu6hQRNd1A4PVA=="],
|
"widest-line": ["widest-line@5.0.0", "", { "dependencies": { "string-width": "^7.0.0" } }, "sha512-c9bZp7b5YtRj2wOe6dlj32MK+Bx/M/d+9VB2SHM1OtsUHR0aV0tdP6DWh/iMt0kWi1t5g1Iudu6hQRNd1A4PVA=="],
|
||||||
|
|
||||||
|
"winston": ["winston@3.17.0", "", { "dependencies": { "@colors/colors": "^1.6.0", "@dabh/diagnostics": "^2.0.2", "async": "^3.2.3", "is-stream": "^2.0.0", "logform": "^2.7.0", "one-time": "^1.0.0", "readable-stream": "^3.4.0", "safe-stable-stringify": "^2.3.1", "stack-trace": "0.0.x", "triple-beam": "^1.3.0", "winston-transport": "^4.9.0" } }, "sha512-DLiFIXYC5fMPxaRg832S6F5mJYvePtmO5G9v9IgUFPhXm9/GkXarH/TUrBAVzhTCzAj9anE/+GjrgXp/54nOgw=="],
|
||||||
|
|
||||||
|
"winston-transport": ["winston-transport@4.9.0", "", { "dependencies": { "logform": "^2.7.0", "readable-stream": "^3.6.2", "triple-beam": "^1.3.0" } }, "sha512-8drMJ4rkgaPo1Me4zD/3WLfI/zPdA9o2IipKODunnGDcuqbHwjsbB79ylv04LCGGzU0xQ6vTznOMpQGaLhhm6A=="],
|
||||||
|
|
||||||
"word-wrap": ["word-wrap@1.2.5", "", {}, "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA=="],
|
"word-wrap": ["word-wrap@1.2.5", "", {}, "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA=="],
|
||||||
|
|
||||||
|
"wordwrap": ["wordwrap@1.0.0", "", {}, "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q=="],
|
||||||
|
|
||||||
"wrap-ansi": ["wrap-ansi@7.0.0", "", { "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", "strip-ansi": "^6.0.0" } }, "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q=="],
|
"wrap-ansi": ["wrap-ansi@7.0.0", "", { "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", "strip-ansi": "^6.0.0" } }, "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q=="],
|
||||||
|
|
||||||
"wrap-ansi-cjs": ["wrap-ansi@7.0.0", "", { "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", "strip-ansi": "^6.0.0" } }, "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q=="],
|
"wrap-ansi-cjs": ["wrap-ansi@7.0.0", "", { "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", "strip-ansi": "^6.0.0" } }, "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q=="],
|
||||||
|
|
||||||
"wrappy": ["wrappy@1.0.2", "", {}, "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="],
|
"wrappy": ["wrappy@1.0.2", "", {}, "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="],
|
||||||
|
|
||||||
|
"ws": ["ws@8.18.3", "", { "peerDependencies": { "bufferutil": "^4.0.1", "utf-8-validate": ">=5.0.2" }, "optionalPeers": ["bufferutil", "utf-8-validate"] }, "sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg=="],
|
||||||
|
|
||||||
"xml-crypto": ["xml-crypto@6.0.0", "", { "dependencies": { "@xmldom/is-dom-node": "^1.0.1", "@xmldom/xmldom": "^0.8.10", "xpath": "^0.0.33" } }, "sha512-L3RgnkaDrHaYcCnoENv4Idzt1ZRj5U1z1BDH98QdDTQfssScx8adgxhd9qwyYo+E3fXbQZjEQH7aiXHLVgxGvw=="],
|
"xml-crypto": ["xml-crypto@6.0.0", "", { "dependencies": { "@xmldom/is-dom-node": "^1.0.1", "@xmldom/xmldom": "^0.8.10", "xpath": "^0.0.33" } }, "sha512-L3RgnkaDrHaYcCnoENv4Idzt1ZRj5U1z1BDH98QdDTQfssScx8adgxhd9qwyYo+E3fXbQZjEQH7aiXHLVgxGvw=="],
|
||||||
|
|
||||||
"xpath": ["xpath@0.0.33", "", {}, "sha512-NNXnzrkDrAzalLhIUc01jO2mOzXGXh1JwPgkihcLLzw98c0WgYDmmjSh1Kl3wzaxSVWMuA+fe0WTWOBDWCBmNA=="],
|
"xpath": ["xpath@0.0.33", "", {}, "sha512-NNXnzrkDrAzalLhIUc01jO2mOzXGXh1JwPgkihcLLzw98c0WgYDmmjSh1Kl3wzaxSVWMuA+fe0WTWOBDWCBmNA=="],
|
||||||
|
|
||||||
"xxhash-wasm": ["xxhash-wasm@1.1.0", "", {}, "sha512-147y/6YNh+tlp6nd/2pWq38i9h6mz/EuQ6njIrmW8D1BS5nCqs0P6DG+m6zTGnNz5I+uhZ0SHxBs9BsPrwcKDA=="],
|
"xxhash-wasm": ["xxhash-wasm@1.1.0", "", {}, "sha512-147y/6YNh+tlp6nd/2pWq38i9h6mz/EuQ6njIrmW8D1BS5nCqs0P6DG+m6zTGnNz5I+uhZ0SHxBs9BsPrwcKDA=="],
|
||||||
|
|
||||||
|
"y18n": ["y18n@5.0.8", "", {}, "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA=="],
|
||||||
|
|
||||||
"yallist": ["yallist@3.1.1", "", {}, "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g=="],
|
"yallist": ["yallist@3.1.1", "", {}, "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g=="],
|
||||||
|
|
||||||
"yaml": ["yaml@2.7.0", "", { "bin": { "yaml": "bin.mjs" } }, "sha512-+hSoy/QHluxmC9kCIJyL/uyFmLmc+e5CFR5Wa+bpIhIj85LVb9ZH2nVnqrHoSvKogwODv0ClqZkmiSSaIH5LTA=="],
|
"yaml": ["yaml@2.7.0", "", { "bin": { "yaml": "bin.mjs" } }, "sha512-+hSoy/QHluxmC9kCIJyL/uyFmLmc+e5CFR5Wa+bpIhIj85LVb9ZH2nVnqrHoSvKogwODv0ClqZkmiSSaIH5LTA=="],
|
||||||
|
|
||||||
|
"yargs": ["yargs@17.7.2", "", { "dependencies": { "cliui": "^8.0.1", "escalade": "^3.1.1", "get-caller-file": "^2.0.5", "require-directory": "^2.1.1", "string-width": "^4.2.3", "y18n": "^5.0.5", "yargs-parser": "^21.1.1" } }, "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w=="],
|
||||||
|
|
||||||
"yargs-parser": ["yargs-parser@21.1.1", "", {}, "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw=="],
|
"yargs-parser": ["yargs-parser@21.1.1", "", {}, "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw=="],
|
||||||
|
|
||||||
"yauzl": ["yauzl@2.10.0", "", { "dependencies": { "buffer-crc32": "~0.2.3", "fd-slicer": "~1.1.0" } }, "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g=="],
|
"yauzl": ["yauzl@2.10.0", "", { "dependencies": { "buffer-crc32": "~0.2.3", "fd-slicer": "~1.1.0" } }, "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g=="],
|
||||||
@@ -2737,10 +2882,16 @@
|
|||||||
|
|
||||||
"@prisma/schema-files-loader/fs-extra": ["fs-extra@11.1.1", "", { "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", "universalify": "^2.0.0" } }, "sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ=="],
|
"@prisma/schema-files-loader/fs-extra": ["fs-extra@11.1.1", "", { "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", "universalify": "^2.0.0" } }, "sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ=="],
|
||||||
|
|
||||||
|
"@puppeteer/browsers/debug": ["debug@4.4.1", "", { "dependencies": { "ms": "^2.1.3" } }, "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ=="],
|
||||||
|
|
||||||
|
"@puppeteer/browsers/semver": ["semver@7.7.2", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA=="],
|
||||||
|
|
||||||
"@rollup/pluginutils/estree-walker": ["estree-walker@2.0.2", "", {}, "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w=="],
|
"@rollup/pluginutils/estree-walker": ["estree-walker@2.0.2", "", {}, "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w=="],
|
||||||
|
|
||||||
"@sveltejs/vite-plugin-svelte/vitefu": ["vitefu@0.2.5", "", { "peerDependencies": { "vite": "^3.0.0 || ^4.0.0 || ^5.0.0" }, "optionalPeers": ["vite"] }, "sha512-SgHtMLoqaeeGnd2evZ849ZbACbnwQCIwRH57t18FxcXoZop0uQu0uzlIhJBlF/eWVzuce0sHeqPcDo+evVcg8Q=="],
|
"@sveltejs/vite-plugin-svelte/vitefu": ["vitefu@0.2.5", "", { "peerDependencies": { "vite": "^3.0.0 || ^4.0.0 || ^5.0.0" }, "optionalPeers": ["vite"] }, "sha512-SgHtMLoqaeeGnd2evZ849ZbACbnwQCIwRH57t18FxcXoZop0uQu0uzlIhJBlF/eWVzuce0sHeqPcDo+evVcg8Q=="],
|
||||||
|
|
||||||
|
"@types/ssh2/@types/node": ["@types/node@18.19.86", "", { "dependencies": { "undici-types": "~5.26.4" } }, "sha512-fifKayi175wLyKyc5qUfyENhQ1dCNI1UNjp653d8kuYcPQN5JhX3dGuP/XmvPTg/xRBn1VTLpbmi+H/Mr7tLfQ=="],
|
||||||
|
|
||||||
"@typescript-eslint/typescript-estree/globby": ["globby@11.1.0", "", { "dependencies": { "array-union": "^2.1.0", "dir-glob": "^3.0.1", "fast-glob": "^3.2.9", "ignore": "^5.2.0", "merge2": "^1.4.1", "slash": "^3.0.0" } }, "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g=="],
|
"@typescript-eslint/typescript-estree/globby": ["globby@11.1.0", "", { "dependencies": { "array-union": "^2.1.0", "dir-glob": "^3.0.1", "fast-glob": "^3.2.9", "ignore": "^5.2.0", "merge2": "^1.4.1", "slash": "^3.0.0" } }, "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g=="],
|
||||||
|
|
||||||
"@typescript-eslint/utils/eslint-scope": ["eslint-scope@5.1.1", "", { "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^4.1.1" } }, "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw=="],
|
"@typescript-eslint/utils/eslint-scope": ["eslint-scope@5.1.1", "", { "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^4.1.1" } }, "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw=="],
|
||||||
@@ -2779,8 +2930,12 @@
|
|||||||
|
|
||||||
"chokidar/glob-parent": ["glob-parent@5.1.2", "", { "dependencies": { "is-glob": "^4.0.1" } }, "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow=="],
|
"chokidar/glob-parent": ["glob-parent@5.1.2", "", { "dependencies": { "is-glob": "^4.0.1" } }, "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow=="],
|
||||||
|
|
||||||
|
"cli-table3/@colors/colors": ["@colors/colors@1.5.0", "", {}, "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ=="],
|
||||||
|
|
||||||
"co-body/qs": ["qs@6.14.0", "", { "dependencies": { "side-channel": "^1.1.0" } }, "sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w=="],
|
"co-body/qs": ["qs@6.14.0", "", { "dependencies": { "side-channel": "^1.1.0" } }, "sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w=="],
|
||||||
|
|
||||||
|
"colorspace/color": ["color@3.2.1", "", { "dependencies": { "color-convert": "^1.9.3", "color-string": "^1.6.0" } }, "sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA=="],
|
||||||
|
|
||||||
"csvtojson/strip-bom": ["strip-bom@2.0.0", "", { "dependencies": { "is-utf8": "^0.2.0" } }, "sha512-kwrX1y7czp1E69n2ajbG65mIo9dqvJ+8aBQXOGVxqwvNbsXdFM6Lq37dLAY3mknUwru8CfcCbfOLL/gMo+fi3g=="],
|
"csvtojson/strip-bom": ["strip-bom@2.0.0", "", { "dependencies": { "is-utf8": "^0.2.0" } }, "sha512-kwrX1y7czp1E69n2ajbG65mIo9dqvJ+8aBQXOGVxqwvNbsXdFM6Lq37dLAY3mknUwru8CfcCbfOLL/gMo+fi3g=="],
|
||||||
|
|
||||||
"cypress/buffer": ["buffer@5.7.1", "", { "dependencies": { "base64-js": "^1.3.1", "ieee754": "^1.1.13" } }, "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ=="],
|
"cypress/buffer": ["buffer@5.7.1", "", { "dependencies": { "base64-js": "^1.3.1", "ieee754": "^1.1.13" } }, "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ=="],
|
||||||
@@ -2793,7 +2948,7 @@
|
|||||||
|
|
||||||
"dir-glob/path-type": ["path-type@4.0.0", "", {}, "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw=="],
|
"dir-glob/path-type": ["path-type@4.0.0", "", {}, "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw=="],
|
||||||
|
|
||||||
"error-ex/is-arrayish": ["is-arrayish@0.2.1", "", {}, "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg=="],
|
"escodegen/source-map": ["source-map@0.6.1", "", {}, "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="],
|
||||||
|
|
||||||
"eslint-utils/eslint-visitor-keys": ["eslint-visitor-keys@2.1.0", "", {}, "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw=="],
|
"eslint-utils/eslint-visitor-keys": ["eslint-visitor-keys@2.1.0", "", {}, "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw=="],
|
||||||
|
|
||||||
@@ -2827,10 +2982,16 @@
|
|||||||
|
|
||||||
"gray-matter/js-yaml": ["js-yaml@3.14.1", "", { "dependencies": { "argparse": "^1.0.7", "esprima": "^4.0.0" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g=="],
|
"gray-matter/js-yaml": ["js-yaml@3.14.1", "", { "dependencies": { "argparse": "^1.0.7", "esprima": "^4.0.0" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g=="],
|
||||||
|
|
||||||
|
"handlebars/source-map": ["source-map@0.6.1", "", {}, "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="],
|
||||||
|
|
||||||
"hasha/type-fest": ["type-fest@0.8.1", "", {}, "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA=="],
|
"hasha/type-fest": ["type-fest@0.8.1", "", {}, "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA=="],
|
||||||
|
|
||||||
"ignore-walk/minimatch": ["minimatch@5.1.6", "", { "dependencies": { "brace-expansion": "^2.0.1" } }, "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g=="],
|
"ignore-walk/minimatch": ["minimatch@5.1.6", "", { "dependencies": { "brace-expansion": "^2.0.1" } }, "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g=="],
|
||||||
|
|
||||||
|
"ip-address/jsbn": ["jsbn@1.1.0", "", {}, "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A=="],
|
||||||
|
|
||||||
|
"ip-address/sprintf-js": ["sprintf-js@1.1.3", "", {}, "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA=="],
|
||||||
|
|
||||||
"is-wsl/is-docker": ["is-docker@2.2.1", "", { "bin": { "is-docker": "cli.js" } }, "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ=="],
|
"is-wsl/is-docker": ["is-docker@2.2.1", "", { "bin": { "is-docker": "cli.js" } }, "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ=="],
|
||||||
|
|
||||||
"knex/commander": ["commander@10.0.1", "", {}, "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug=="],
|
"knex/commander": ["commander@10.0.1", "", {}, "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug=="],
|
||||||
@@ -2889,6 +3050,10 @@
|
|||||||
|
|
||||||
"p-locate/p-limit": ["p-limit@3.1.0", "", { "dependencies": { "yocto-queue": "^0.1.0" } }, "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ=="],
|
"p-locate/p-limit": ["p-limit@3.1.0", "", { "dependencies": { "yocto-queue": "^0.1.0" } }, "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ=="],
|
||||||
|
|
||||||
|
"pac-proxy-agent/http-proxy-agent": ["http-proxy-agent@7.0.2", "", { "dependencies": { "agent-base": "^7.1.0", "debug": "^4.3.4" } }, "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig=="],
|
||||||
|
|
||||||
|
"pac-proxy-agent/https-proxy-agent": ["https-proxy-agent@7.0.6", "", { "dependencies": { "agent-base": "^7.1.2", "debug": "4" } }, "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw=="],
|
||||||
|
|
||||||
"parse-entities/@types/unist": ["@types/unist@2.0.11", "", {}, "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA=="],
|
"parse-entities/@types/unist": ["@types/unist@2.0.11", "", {}, "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA=="],
|
||||||
|
|
||||||
"path-scurry/lru-cache": ["lru-cache@10.4.3", "", {}, "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ=="],
|
"path-scurry/lru-cache": ["lru-cache@10.4.3", "", {}, "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ=="],
|
||||||
@@ -2909,6 +3074,16 @@
|
|||||||
|
|
||||||
"prop-types/react-is": ["react-is@16.13.1", "", {}, "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="],
|
"prop-types/react-is": ["react-is@16.13.1", "", {}, "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="],
|
||||||
|
|
||||||
|
"proxy-agent/http-proxy-agent": ["http-proxy-agent@7.0.2", "", { "dependencies": { "agent-base": "^7.1.0", "debug": "^4.3.4" } }, "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig=="],
|
||||||
|
|
||||||
|
"proxy-agent/https-proxy-agent": ["https-proxy-agent@7.0.6", "", { "dependencies": { "agent-base": "^7.1.2", "debug": "4" } }, "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw=="],
|
||||||
|
|
||||||
|
"proxy-agent/lru-cache": ["lru-cache@7.18.3", "", {}, "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA=="],
|
||||||
|
|
||||||
|
"proxy-agent/proxy-from-env": ["proxy-from-env@1.1.0", "", {}, "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg=="],
|
||||||
|
|
||||||
|
"puppeteer-core/debug": ["debug@4.4.1", "", { "dependencies": { "ms": "^2.1.3" } }, "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ=="],
|
||||||
|
|
||||||
"rc-align/rc-util": ["rc-util@4.21.1", "", { "dependencies": { "add-dom-event-listener": "^1.1.0", "prop-types": "^15.5.10", "react-is": "^16.12.0", "react-lifecycles-compat": "^3.0.4", "shallowequal": "^1.1.0" } }, "sha512-Z+vlkSQVc1l8O2UjR3WQ+XdWlhj5q9BMQNLk2iOBch75CqPfrJyGtcWMcnhRlNuDu0Ndtt4kLVO8JI8BrABobg=="],
|
"rc-align/rc-util": ["rc-util@4.21.1", "", { "dependencies": { "add-dom-event-listener": "^1.1.0", "prop-types": "^15.5.10", "react-is": "^16.12.0", "react-lifecycles-compat": "^3.0.4", "shallowequal": "^1.1.0" } }, "sha512-Z+vlkSQVc1l8O2UjR3WQ+XdWlhj5q9BMQNLk2iOBch75CqPfrJyGtcWMcnhRlNuDu0Ndtt4kLVO8JI8BrABobg=="],
|
||||||
|
|
||||||
"rc-animate/rc-util": ["rc-util@4.21.1", "", { "dependencies": { "add-dom-event-listener": "^1.1.0", "prop-types": "^15.5.10", "react-is": "^16.12.0", "react-lifecycles-compat": "^3.0.4", "shallowequal": "^1.1.0" } }, "sha512-Z+vlkSQVc1l8O2UjR3WQ+XdWlhj5q9BMQNLk2iOBch75CqPfrJyGtcWMcnhRlNuDu0Ndtt4kLVO8JI8BrABobg=="],
|
"rc-animate/rc-util": ["rc-util@4.21.1", "", { "dependencies": { "add-dom-event-listener": "^1.1.0", "prop-types": "^15.5.10", "react-is": "^16.12.0", "react-lifecycles-compat": "^3.0.4", "shallowequal": "^1.1.0" } }, "sha512-Z+vlkSQVc1l8O2UjR3WQ+XdWlhj5q9BMQNLk2iOBch75CqPfrJyGtcWMcnhRlNuDu0Ndtt4kLVO8JI8BrABobg=="],
|
||||||
@@ -2941,6 +3116,8 @@
|
|||||||
|
|
||||||
"serve-static/send": ["send@0.19.0", "", { "dependencies": { "debug": "2.6.9", "depd": "2.0.0", "destroy": "1.2.0", "encodeurl": "~1.0.2", "escape-html": "~1.0.3", "etag": "~1.8.1", "fresh": "0.5.2", "http-errors": "2.0.0", "mime": "1.6.0", "ms": "2.1.3", "on-finished": "2.4.1", "range-parser": "~1.2.1", "statuses": "2.0.1" } }, "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw=="],
|
"serve-static/send": ["send@0.19.0", "", { "dependencies": { "debug": "2.6.9", "depd": "2.0.0", "destroy": "1.2.0", "encodeurl": "~1.0.2", "escape-html": "~1.0.3", "etag": "~1.8.1", "fresh": "0.5.2", "http-errors": "2.0.0", "mime": "1.6.0", "ms": "2.1.3", "on-finished": "2.4.1", "range-parser": "~1.2.1", "statuses": "2.0.1" } }, "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw=="],
|
||||||
|
|
||||||
|
"simple-swizzle/is-arrayish": ["is-arrayish@0.3.2", "", {}, "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ=="],
|
||||||
|
|
||||||
"soap/strip-bom": ["strip-bom@3.0.0", "", {}, "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA=="],
|
"soap/strip-bom": ["strip-bom@3.0.0", "", {}, "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA=="],
|
||||||
|
|
||||||
"sorcery/buffer-crc32": ["buffer-crc32@1.0.0", "", {}, "sha512-Db1SbgBS/fg/392AblrMJk97KggmvYhr4pB5ZIMTWtaivCPMWLkmb7m21cJvpvgK+J3nsU2CmmixNBZx4vFj/w=="],
|
"sorcery/buffer-crc32": ["buffer-crc32@1.0.0", "", {}, "sha512-Db1SbgBS/fg/392AblrMJk97KggmvYhr4pB5ZIMTWtaivCPMWLkmb7m21cJvpvgK+J3nsU2CmmixNBZx4vFj/w=="],
|
||||||
@@ -2959,6 +3136,8 @@
|
|||||||
|
|
||||||
"tar/yallist": ["yallist@4.0.0", "", {}, "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="],
|
"tar/yallist": ["yallist@4.0.0", "", {}, "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="],
|
||||||
|
|
||||||
|
"tar-fs/tar-stream": ["tar-stream@3.1.7", "", { "dependencies": { "b4a": "^1.6.4", "fast-fifo": "^1.2.0", "streamx": "^2.15.0" } }, "sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ=="],
|
||||||
|
|
||||||
"temp-write/temp-dir": ["temp-dir@1.0.0", "", {}, "sha512-xZFXEGbG7SNC3itwBzI3RYjq/cEhBkx2hJuKGIUOcEULmkQExXiHat2z/qkISYsuR+IKumhEfKKbV5qXmhICFQ=="],
|
"temp-write/temp-dir": ["temp-dir@1.0.0", "", {}, "sha512-xZFXEGbG7SNC3itwBzI3RYjq/cEhBkx2hJuKGIUOcEULmkQExXiHat2z/qkISYsuR+IKumhEfKKbV5qXmhICFQ=="],
|
||||||
|
|
||||||
"temp-write/uuid": ["uuid@3.4.0", "", { "bin": { "uuid": "./bin/uuid" } }, "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A=="],
|
"temp-write/uuid": ["uuid@3.4.0", "", { "bin": { "uuid": "./bin/uuid" } }, "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A=="],
|
||||||
@@ -3001,6 +3180,8 @@
|
|||||||
|
|
||||||
"@prisma/internals/globby/slash": ["slash@3.0.0", "", {}, "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q=="],
|
"@prisma/internals/globby/slash": ["slash@3.0.0", "", {}, "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q=="],
|
||||||
|
|
||||||
|
"@types/ssh2/@types/node/undici-types": ["undici-types@5.26.5", "", {}, "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA=="],
|
||||||
|
|
||||||
"@typescript-eslint/typescript-estree/globby/slash": ["slash@3.0.0", "", {}, "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q=="],
|
"@typescript-eslint/typescript-estree/globby/slash": ["slash@3.0.0", "", {}, "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q=="],
|
||||||
|
|
||||||
"@typescript-eslint/utils/eslint-scope/estraverse": ["estraverse@4.3.0", "", {}, "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw=="],
|
"@typescript-eslint/utils/eslint-scope/estraverse": ["estraverse@4.3.0", "", {}, "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw=="],
|
||||||
@@ -3019,6 +3200,8 @@
|
|||||||
|
|
||||||
"boxen/wrap-ansi/strip-ansi": ["strip-ansi@7.1.0", "", { "dependencies": { "ansi-regex": "^6.0.1" } }, "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ=="],
|
"boxen/wrap-ansi/strip-ansi": ["strip-ansi@7.1.0", "", { "dependencies": { "ansi-regex": "^6.0.1" } }, "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ=="],
|
||||||
|
|
||||||
|
"colorspace/color/color-convert": ["color-convert@1.9.3", "", { "dependencies": { "color-name": "1.1.3" } }, "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg=="],
|
||||||
|
|
||||||
"express/debug/ms": ["ms@2.0.0", "", {}, "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="],
|
"express/debug/ms": ["ms@2.0.0", "", {}, "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="],
|
||||||
|
|
||||||
"express/send/encodeurl": ["encodeurl@1.0.2", "", {}, "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w=="],
|
"express/send/encodeurl": ["encodeurl@1.0.2", "", {}, "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w=="],
|
||||||
@@ -3169,6 +3352,8 @@
|
|||||||
|
|
||||||
"boxen/wrap-ansi/strip-ansi/ansi-regex": ["ansi-regex@6.1.0", "", {}, "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA=="],
|
"boxen/wrap-ansi/strip-ansi/ansi-regex": ["ansi-regex@6.1.0", "", {}, "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA=="],
|
||||||
|
|
||||||
|
"colorspace/color/color-convert/color-name": ["color-name@1.1.3", "", {}, "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw=="],
|
||||||
|
|
||||||
"form-render/color/color-convert/color-name": ["color-name@1.1.3", "", {}, "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw=="],
|
"form-render/color/color-convert/color-name": ["color-name@1.1.3", "", {}, "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw=="],
|
||||||
|
|
||||||
"npm-packlist/glob/minimatch/brace-expansion": ["brace-expansion@2.0.1", "", { "dependencies": { "balanced-match": "^1.0.0" } }, "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA=="],
|
"npm-packlist/glob/minimatch/brace-expansion": ["brace-expansion@2.0.1", "", { "dependencies": { "balanced-match": "^1.0.0" } }, "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA=="],
|
||||||
|
|||||||
@@ -1,7 +1,11 @@
|
|||||||
version: '3'
|
version: '3'
|
||||||
services:
|
services:
|
||||||
database:
|
database:
|
||||||
|
container_name: database
|
||||||
|
image: postgres:17.5
|
||||||
|
|
||||||
build: ./
|
build: ./
|
||||||
|
restart: always
|
||||||
env_file:
|
env_file:
|
||||||
- .env
|
- .env
|
||||||
ports:
|
ports:
|
||||||
|
|||||||
13
package.json
13
package.json
@@ -29,10 +29,11 @@
|
|||||||
"@pdfme/common": "^5.2.16",
|
"@pdfme/common": "^5.2.16",
|
||||||
"@pdfme/generator": "^5.2.16",
|
"@pdfme/generator": "^5.2.16",
|
||||||
"@pdfme/ui": "^5.2.16",
|
"@pdfme/ui": "^5.2.16",
|
||||||
|
"@svelte-plugins/datepicker": "^1.0.11",
|
||||||
"@trpc/client": "^10.45.2",
|
"@trpc/client": "^10.45.2",
|
||||||
"@trpc/server": "^10.45.2",
|
"@trpc/server": "^10.45.2",
|
||||||
"astro": "^4.16.17",
|
"astro": "^4.16.17",
|
||||||
"astro-typesafe-api": "^0.2.2",
|
"astro-typesafe-api": "^0.2.4",
|
||||||
"body-scroll-lock": "^4.0.0-beta.0",
|
"body-scroll-lock": "^4.0.0-beta.0",
|
||||||
"buffer": "^6.0.3",
|
"buffer": "^6.0.3",
|
||||||
"bun": "^1.2.5",
|
"bun": "^1.2.5",
|
||||||
@@ -40,6 +41,8 @@
|
|||||||
"express": "^4.21.2",
|
"express": "^4.21.2",
|
||||||
"flag-icons": "^6.15.0",
|
"flag-icons": "^6.15.0",
|
||||||
"fontkit": "^2.0.4",
|
"fontkit": "^2.0.4",
|
||||||
|
"handlebars": "^4.7.8",
|
||||||
|
"heic2any": "^0.0.4",
|
||||||
"highlight.run": "^9.14.0",
|
"highlight.run": "^9.14.0",
|
||||||
"is-base64": "^1.1.0",
|
"is-base64": "^1.1.0",
|
||||||
"js-cookie": "^3.0.5",
|
"js-cookie": "^3.0.5",
|
||||||
@@ -48,16 +51,18 @@
|
|||||||
"jwt-decode": "^4.0.0",
|
"jwt-decode": "^4.0.0",
|
||||||
"mime": "^4.0.6",
|
"mime": "^4.0.6",
|
||||||
"moment": "^2.30.1",
|
"moment": "^2.30.1",
|
||||||
"moment-timezone": "^0.5.46",
|
"moment-timezone": "^0.6.0",
|
||||||
"nodemailer": "^6.10.0",
|
"nodemailer": "^6.10.0",
|
||||||
"pdf-lib": "^1.17.1",
|
"pdf-lib": "^1.17.1",
|
||||||
"postcss-nested": "^7.0.2",
|
"postcss-nested": "^7.0.2",
|
||||||
|
"puppeteer": "^24.15.0",
|
||||||
"radix-svelte-icons": "^1.0.0",
|
"radix-svelte-icons": "^1.0.0",
|
||||||
"sass": "^1.83.4",
|
"sass": "^1.83.4",
|
||||||
"sharp": "^0.33.5",
|
"sharp": "^0.33.5",
|
||||||
"siema": "^1.5.1",
|
"siema": "^1.5.1",
|
||||||
"soap": "^1.1.8",
|
"soap": "^1.1.8",
|
||||||
"sqids": "^0.3.0",
|
"sqids": "^0.3.0",
|
||||||
|
"ssh2-sftp-client": "^12.0.0",
|
||||||
"svelte": "^3.59.2",
|
"svelte": "^3.59.2",
|
||||||
"svelte-dialogs": "^1.2.2",
|
"svelte-dialogs": "^1.2.2",
|
||||||
"svelte-preprocess": "^5.1.4",
|
"svelte-preprocess": "^5.1.4",
|
||||||
@@ -65,6 +70,7 @@
|
|||||||
"tailwindcss": "^3.4.17",
|
"tailwindcss": "^3.4.17",
|
||||||
"trpc-openapi": "^1.2.0",
|
"trpc-openapi": "^1.2.0",
|
||||||
"uuid": "^9.0.1",
|
"uuid": "^9.0.1",
|
||||||
|
"winston": "^3.17.0",
|
||||||
"zod": "^3.24.1"
|
"zod": "^3.24.1"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
@@ -81,6 +87,7 @@
|
|||||||
"@types/nodemailer": "^6.4.17",
|
"@types/nodemailer": "^6.4.17",
|
||||||
"@types/papaparse": "^5.3.15",
|
"@types/papaparse": "^5.3.15",
|
||||||
"@types/siema": "^1.4.11",
|
"@types/siema": "^1.4.11",
|
||||||
|
"@types/ssh2-sftp-client": "^9.0.4",
|
||||||
"@types/uuid": "^9.0.8",
|
"@types/uuid": "^9.0.8",
|
||||||
"@typescript-eslint/eslint-plugin": "^5.62.0",
|
"@typescript-eslint/eslint-plugin": "^5.62.0",
|
||||||
"@typescript-eslint/parser": "^5.62.0",
|
"@typescript-eslint/parser": "^5.62.0",
|
||||||
@@ -96,7 +103,7 @@
|
|||||||
"postcss-import": "^16.1.0",
|
"postcss-import": "^16.1.0",
|
||||||
"postcss-nesting": "^13.0.1",
|
"postcss-nesting": "^13.0.1",
|
||||||
"prettier": "^2.8.8",
|
"prettier": "^2.8.8",
|
||||||
"prisma": "^6.4.1",
|
"prisma": "6.4.1",
|
||||||
"prisma-dbml-generator": "^0.12.0",
|
"prisma-dbml-generator": "^0.12.0",
|
||||||
"prisma-generator-fake-data": "^0.14.3",
|
"prisma-generator-fake-data": "^0.14.3",
|
||||||
"tsx": "^4.19.3",
|
"tsx": "^4.19.3",
|
||||||
|
|||||||
BIN
persistent/images/haken.png
Normal file
BIN
persistent/images/haken.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 256 B |
17
prisma/migrations/20250409152238_ausweis_id/migration.sql
Normal file
17
prisma/migrations/20250409152238_ausweis_id/migration.sql
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
-- AlterTable
|
||||||
|
ALTER TABLE "BedarfsausweisGewerbe" ADD COLUMN "ausweisart" "Ausweisart" NOT NULL DEFAULT 'BedarfsausweisGewerbe';
|
||||||
|
|
||||||
|
-- AlterTable
|
||||||
|
ALTER TABLE "BedarfsausweisWohnen" ADD COLUMN "ausweisart" "Ausweisart" NOT NULL DEFAULT 'BedarfsausweisWohnen';
|
||||||
|
|
||||||
|
-- AlterTable
|
||||||
|
ALTER TABLE "GEGNachweisGewerbe" ADD COLUMN "ausweisart" "Ausweisart" NOT NULL DEFAULT 'GEGNachweisGewerbe';
|
||||||
|
|
||||||
|
-- AlterTable
|
||||||
|
ALTER TABLE "GEGNachweisWohnen" ADD COLUMN "ausweisart" "Ausweisart" NOT NULL DEFAULT 'GEGNachweisWohnen';
|
||||||
|
|
||||||
|
-- AlterTable
|
||||||
|
ALTER TABLE "VerbrauchsausweisGewerbe" ADD COLUMN "ausweisart" "Ausweisart" NOT NULL DEFAULT 'VerbrauchsausweisGewerbe';
|
||||||
|
|
||||||
|
-- AlterTable
|
||||||
|
ALTER TABLE "VerbrauchsausweisWohnen" ADD COLUMN "ausweisart" "Ausweisart" NOT NULL DEFAULT 'VerbrauchsausweisWohnen';
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
-- AlterTable
|
||||||
|
ALTER TABLE "BedarfsausweisWohnen" ALTER COLUMN "fenster_art_1" SET DATA TYPE TEXT,
|
||||||
|
ALTER COLUMN "fenster_art_2" SET DATA TYPE TEXT,
|
||||||
|
ALTER COLUMN "dachfenster_art" SET DATA TYPE TEXT,
|
||||||
|
ALTER COLUMN "haustuer_art" SET DATA TYPE TEXT,
|
||||||
|
ALTER COLUMN "dach_daemmung" SET DATA TYPE TEXT,
|
||||||
|
ALTER COLUMN "decke_daemmung" SET DATA TYPE TEXT,
|
||||||
|
ALTER COLUMN "aussenwand_daemmung" SET DATA TYPE TEXT,
|
||||||
|
ALTER COLUMN "boden_daemmung" SET DATA TYPE TEXT;
|
||||||
49
prisma/migrations/20250804180940_provisionen/migration.sql
Normal file
49
prisma/migrations/20250804180940_provisionen/migration.sql
Normal file
@@ -0,0 +1,49 @@
|
|||||||
|
/*
|
||||||
|
Warnings:
|
||||||
|
|
||||||
|
- The `fenster_art_1` column on the `BedarfsausweisWohnen` table would be dropped and recreated. This will lead to data loss if there is data in the column.
|
||||||
|
- The `fenster_art_2` column on the `BedarfsausweisWohnen` table would be dropped and recreated. This will lead to data loss if there is data in the column.
|
||||||
|
- The `dachfenster_art` column on the `BedarfsausweisWohnen` table would be dropped and recreated. This will lead to data loss if there is data in the column.
|
||||||
|
- The `haustuer_art` column on the `BedarfsausweisWohnen` table would be dropped and recreated. This will lead to data loss if there is data in the column.
|
||||||
|
- The `dach_daemmung` column on the `BedarfsausweisWohnen` table would be dropped and recreated. This will lead to data loss if there is data in the column.
|
||||||
|
- The `decke_daemmung` column on the `BedarfsausweisWohnen` table would be dropped and recreated. This will lead to data loss if there is data in the column.
|
||||||
|
- The `aussenwand_daemmung` column on the `BedarfsausweisWohnen` table would be dropped and recreated. This will lead to data loss if there is data in the column.
|
||||||
|
- The `boden_daemmung` column on the `BedarfsausweisWohnen` table would be dropped and recreated. This will lead to data loss if there is data in the column.
|
||||||
|
|
||||||
|
*/
|
||||||
|
-- AlterEnum
|
||||||
|
ALTER TYPE "BenutzerRolle" ADD VALUE 'RESELLER';
|
||||||
|
|
||||||
|
-- AlterTable
|
||||||
|
ALTER TABLE "BedarfsausweisWohnen" DROP COLUMN "fenster_art_1",
|
||||||
|
ADD COLUMN "fenster_art_1" DOUBLE PRECISION,
|
||||||
|
DROP COLUMN "fenster_art_2",
|
||||||
|
ADD COLUMN "fenster_art_2" DOUBLE PRECISION,
|
||||||
|
DROP COLUMN "dachfenster_art",
|
||||||
|
ADD COLUMN "dachfenster_art" DOUBLE PRECISION,
|
||||||
|
DROP COLUMN "haustuer_art",
|
||||||
|
ADD COLUMN "haustuer_art" DOUBLE PRECISION,
|
||||||
|
DROP COLUMN "dach_daemmung",
|
||||||
|
ADD COLUMN "dach_daemmung" DOUBLE PRECISION,
|
||||||
|
DROP COLUMN "decke_daemmung",
|
||||||
|
ADD COLUMN "decke_daemmung" DOUBLE PRECISION,
|
||||||
|
DROP COLUMN "aussenwand_daemmung",
|
||||||
|
ADD COLUMN "aussenwand_daemmung" DOUBLE PRECISION,
|
||||||
|
DROP COLUMN "boden_daemmung",
|
||||||
|
ADD COLUMN "boden_daemmung" DOUBLE PRECISION;
|
||||||
|
|
||||||
|
-- CreateTable
|
||||||
|
CREATE TABLE "Provisionen" (
|
||||||
|
"id" TEXT NOT NULL,
|
||||||
|
"ausweisart" TEXT NOT NULL,
|
||||||
|
"provision_prozent" DOUBLE PRECISION NOT NULL,
|
||||||
|
"provision_betrag" DOUBLE PRECISION NOT NULL,
|
||||||
|
"benutzer_id" VARCHAR(11),
|
||||||
|
"created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||||
|
"updated_at" TIMESTAMP(3) NOT NULL,
|
||||||
|
|
||||||
|
CONSTRAINT "Provisionen_pkey" PRIMARY KEY ("id")
|
||||||
|
);
|
||||||
|
|
||||||
|
-- AddForeignKey
|
||||||
|
ALTER TABLE "Provisionen" ADD CONSTRAINT "Provisionen_benutzer_id_fkey" FOREIGN KEY ("benutzer_id") REFERENCES "benutzer"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
/*
|
||||||
|
Warnings:
|
||||||
|
|
||||||
|
- The primary key for the `Provisionen` table will be changed. If it partially fails, the table could be left without primary key constraint.
|
||||||
|
- The `id` column on the `Provisionen` table would be dropped and recreated. This will lead to data loss if there is data in the column.
|
||||||
|
- Changed the type of `ausweisart` on the `Provisionen` table. No cast exists, the column would be dropped and recreated, which cannot be done if there is data, since the column is required.
|
||||||
|
|
||||||
|
*/
|
||||||
|
-- AlterTable
|
||||||
|
ALTER TABLE "Provisionen" DROP CONSTRAINT "Provisionen_pkey",
|
||||||
|
DROP COLUMN "id",
|
||||||
|
ADD COLUMN "id" SERIAL NOT NULL,
|
||||||
|
DROP COLUMN "ausweisart",
|
||||||
|
ADD COLUMN "ausweisart" "Ausweisart" NOT NULL,
|
||||||
|
ADD CONSTRAINT "Provisionen_pkey" PRIMARY KEY ("id");
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
-- AlterTable
|
||||||
|
ALTER TABLE "benutzer" ADD COLUMN "partner_code" TEXT;
|
||||||
12
prisma/migrations/20250924181725_flaeche_float/migration.sql
Normal file
12
prisma/migrations/20250924181725_flaeche_float/migration.sql
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
/*
|
||||||
|
Warnings:
|
||||||
|
|
||||||
|
- Added the required column `ausweistyp` to the `Provisionen` table without a default value. This is not possible if the table is not empty.
|
||||||
|
|
||||||
|
*/
|
||||||
|
-- AlterTable
|
||||||
|
ALTER TABLE "Aufnahme" ALTER COLUMN "flaeche" SET DATA TYPE DOUBLE PRECISION,
|
||||||
|
ALTER COLUMN "nutzflaeche" SET DATA TYPE DOUBLE PRECISION;
|
||||||
|
|
||||||
|
-- AlterTable
|
||||||
|
ALTER TABLE "Provisionen" ADD COLUMN "ausweistyp" "AusweisTyp" NOT NULL;
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
-- AlterTable
|
||||||
|
ALTER TABLE "Bild" ADD COLUMN "benutzer_id" TEXT;
|
||||||
|
|
||||||
|
-- AddForeignKey
|
||||||
|
ALTER TABLE "Bild" ADD CONSTRAINT "Bild_benutzer_id_fkey" FOREIGN KEY ("benutzer_id") REFERENCES "benutzer"("id") ON DELETE NO ACTION ON UPDATE NO ACTION;
|
||||||
10
prisma/migrations/20250925141939_float_to_int/migration.sql
Normal file
10
prisma/migrations/20250925141939_float_to_int/migration.sql
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
/*
|
||||||
|
Warnings:
|
||||||
|
|
||||||
|
- You are about to alter the column `flaeche` on the `Aufnahme` table. The data in that column could be lost. The data in that column will be cast from `DoublePrecision` to `Integer`.
|
||||||
|
- You are about to alter the column `nutzflaeche` on the `Aufnahme` table. The data in that column could be lost. The data in that column will be cast from `DoublePrecision` to `Integer`.
|
||||||
|
|
||||||
|
*/
|
||||||
|
-- AlterTable
|
||||||
|
ALTER TABLE "Aufnahme" ALTER COLUMN "flaeche" SET DATA TYPE INTEGER,
|
||||||
|
ALTER COLUMN "nutzflaeche" SET DATA TYPE INTEGER;
|
||||||
@@ -26,6 +26,7 @@ model BedarfsausweisGewerbe {
|
|||||||
klimatisierung Boolean? @default(false)
|
klimatisierung Boolean? @default(false)
|
||||||
|
|
||||||
nachweistyp AusweisTyp @default(Standard)
|
nachweistyp AusweisTyp @default(Standard)
|
||||||
|
ausweisart Ausweisart @default(BedarfsausweisGewerbe)
|
||||||
|
|
||||||
created_at DateTime @default(now())
|
created_at DateTime @default(now())
|
||||||
updated_at DateTime @updatedAt @default(now())
|
updated_at DateTime @updatedAt @default(now())
|
||||||
|
|||||||
@@ -100,6 +100,7 @@ model BedarfsausweisWohnen {
|
|||||||
pruefpunkt_fenster Boolean? @default(false)
|
pruefpunkt_fenster Boolean? @default(false)
|
||||||
|
|
||||||
ausweistyp AusweisTyp @default(Standard)
|
ausweistyp AusweisTyp @default(Standard)
|
||||||
|
ausweisart Ausweisart @default(BedarfsausweisWohnen)
|
||||||
|
|
||||||
benutzer Benutzer? @relation(fields: [benutzer_id], references: [id], onDelete: NoAction, onUpdate: NoAction)
|
benutzer Benutzer? @relation(fields: [benutzer_id], references: [id], onDelete: NoAction, onUpdate: NoAction)
|
||||||
|
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
enum BenutzerRolle {
|
enum BenutzerRolle {
|
||||||
USER
|
USER
|
||||||
ADMIN
|
ADMIN
|
||||||
|
RESELLER
|
||||||
}
|
}
|
||||||
|
|
||||||
model Benutzer {
|
model Benutzer {
|
||||||
@@ -20,6 +21,7 @@ model Benutzer {
|
|||||||
rolle BenutzerRolle @default(USER)
|
rolle BenutzerRolle @default(USER)
|
||||||
firma String?
|
firma String?
|
||||||
lex_office_id String?
|
lex_office_id String?
|
||||||
|
partner_code String?
|
||||||
|
|
||||||
verified Boolean @default(false)
|
verified Boolean @default(false)
|
||||||
|
|
||||||
@@ -50,6 +52,8 @@ model Benutzer {
|
|||||||
events Event[]
|
events Event[]
|
||||||
|
|
||||||
@@map("benutzer")
|
@@map("benutzer")
|
||||||
|
Provisionen Provisionen[]
|
||||||
|
bilder Bild[]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -15,6 +15,8 @@ model Bild {
|
|||||||
created_at DateTime @default(now())
|
created_at DateTime @default(now())
|
||||||
updated_at DateTime @updatedAt @default(now())
|
updated_at DateTime @updatedAt @default(now())
|
||||||
|
|
||||||
|
benutzer_id String?
|
||||||
|
benutzer Benutzer? @relation(fields: [benutzer_id], references: [id], onDelete: NoAction, onUpdate: NoAction)
|
||||||
aufnahme_id String?
|
aufnahme_id String?
|
||||||
aufnahme Aufnahme? @relation(fields: [aufnahme_id], references: [id], onDelete: NoAction, onUpdate: NoAction)
|
aufnahme Aufnahme? @relation(fields: [aufnahme_id], references: [id], onDelete: NoAction, onUpdate: NoAction)
|
||||||
}
|
}
|
||||||
@@ -17,6 +17,7 @@ model GEGNachweisGewerbe {
|
|||||||
beschreibung String? @db.Text
|
beschreibung String? @db.Text
|
||||||
|
|
||||||
nachweistyp AusweisTyp @default(Standard)
|
nachweistyp AusweisTyp @default(Standard)
|
||||||
|
ausweisart Ausweisart @default(GEGNachweisGewerbe)
|
||||||
|
|
||||||
created_at DateTime @default(now())
|
created_at DateTime @default(now())
|
||||||
updated_at DateTime @updatedAt @default(now())
|
updated_at DateTime @updatedAt @default(now())
|
||||||
|
|||||||
@@ -17,6 +17,7 @@ model GEGNachweisWohnen {
|
|||||||
beschreibung String? @db.Text
|
beschreibung String? @db.Text
|
||||||
|
|
||||||
nachweistyp AusweisTyp @default(Standard)
|
nachweistyp AusweisTyp @default(Standard)
|
||||||
|
ausweisart Ausweisart @default(GEGNachweisWohnen)
|
||||||
|
|
||||||
created_at DateTime @default(now())
|
created_at DateTime @default(now())
|
||||||
updated_at DateTime @updatedAt @default(now())
|
updated_at DateTime @updatedAt @default(now())
|
||||||
|
|||||||
11
prisma/schema/Provisionen.prisma
Normal file
11
prisma/schema/Provisionen.prisma
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
model Provisionen {
|
||||||
|
id Int @id @default(autoincrement())
|
||||||
|
ausweisart Ausweisart
|
||||||
|
ausweistyp AusweisTyp
|
||||||
|
provision_prozent Float
|
||||||
|
provision_betrag Float
|
||||||
|
benutzer_id String? @db.VarChar(11)
|
||||||
|
benutzer Benutzer? @relation(fields: [benutzer_id], references: [id])
|
||||||
|
created_at DateTime @default(now())
|
||||||
|
updated_at DateTime @updatedAt
|
||||||
|
}
|
||||||
@@ -74,6 +74,7 @@ model VerbrauchsausweisGewerbe {
|
|||||||
updated_at DateTime @updatedAt @default(now())
|
updated_at DateTime @updatedAt @default(now())
|
||||||
|
|
||||||
ausweistyp AusweisTyp @default(Standard)
|
ausweistyp AusweisTyp @default(Standard)
|
||||||
|
ausweisart Ausweisart @default(VerbrauchsausweisGewerbe)
|
||||||
|
|
||||||
pruefpunkt_heizungsalter Boolean? @default(false)
|
pruefpunkt_heizungsalter Boolean? @default(false)
|
||||||
pruefpunkt_verbrauch_niedrig Boolean? @default(false)
|
pruefpunkt_verbrauch_niedrig Boolean? @default(false)
|
||||||
|
|||||||
@@ -75,6 +75,7 @@ model VerbrauchsausweisWohnen {
|
|||||||
kontrolldatei_angefragt Boolean? @default(false)
|
kontrolldatei_angefragt Boolean? @default(false)
|
||||||
|
|
||||||
ausweistyp AusweisTyp @default(Standard)
|
ausweistyp AusweisTyp @default(Standard)
|
||||||
|
ausweisart Ausweisart @default(VerbrauchsausweisWohnen)
|
||||||
|
|
||||||
created_at DateTime @default(now())
|
created_at DateTime @default(now())
|
||||||
updated_at DateTime @updatedAt @default(now())
|
updated_at DateTime @updatedAt @default(now())
|
||||||
|
|||||||
40599
public/images/dashboard/DatenblattHaken.svg
Normal file
40599
public/images/dashboard/DatenblattHaken.svg
Normal file
File diff suppressed because one or more lines are too long
|
After Width: | Height: | Size: 10 MiB |
Binary file not shown.
|
Before Width: | Height: | Size: 7.4 KiB |
Binary file not shown.
Binary file not shown.
78
recover-db-dev.bash
Normal file
78
recover-db-dev.bash
Normal file
@@ -0,0 +1,78 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# === Configuration ===
|
||||||
|
BUCKET_NAME="ibc-db-backup"
|
||||||
|
ENDPOINT_URL="https://s3.eu-central-3.ionoscloud.com"
|
||||||
|
LOCAL_DOWNLOAD_DIR="./" # Where to save the file
|
||||||
|
DATABASE_NAME=database
|
||||||
|
|
||||||
|
# === Check if a custom file is given as a command line argument ===
|
||||||
|
if [ $# -eq 1 ]; then
|
||||||
|
CUSTOM_FILE="$1"
|
||||||
|
echo "🔍 Using custom file: $CUSTOM_FILE"
|
||||||
|
# Check if file exists locally
|
||||||
|
if [ ! -f "$CUSTOM_FILE" ]; then
|
||||||
|
# Check if the file exists on the remote
|
||||||
|
if ! aws s3api head-object --bucket "$BUCKET_NAME" --key "$CUSTOM_FILE" --endpoint-url "$ENDPOINT_URL" > /dev/null 2>&1; then
|
||||||
|
echo "❌ Custom file does not exist in S3 bucket or locally."
|
||||||
|
exit 1
|
||||||
|
else
|
||||||
|
echo "📥 Downloading $CUSTOM_FILE from S3"
|
||||||
|
aws s3 cp "s3://$BUCKET_NAME/$CUSTOM_FILE" "$LOCAL_DOWNLOAD_DIR" \
|
||||||
|
--endpoint-url "$ENDPOINT_URL"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
LATEST_FILE="$CUSTOM_FILE"
|
||||||
|
FILENAME=$(basename "$LATEST_FILE")
|
||||||
|
if [[ "$FILENAME" == *.br ]]; then
|
||||||
|
echo "🗜️ Detected compressed file: $FILENAME"
|
||||||
|
# Remove the .br suffix for the SQL file
|
||||||
|
SQL_FILE="${FILENAME%.br}" # Remove .br suffix
|
||||||
|
brotli -d "$FILENAME"
|
||||||
|
else
|
||||||
|
SQL_FILE=$FILENAME
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo "🔍 No custom file provided, searching for latest .sql.br file in S3"
|
||||||
|
|
||||||
|
# === Get latest file from IONOS S3 bucket ===
|
||||||
|
LATEST_FILE=$(aws s3api list-objects-v2 \
|
||||||
|
--bucket "$BUCKET_NAME" \
|
||||||
|
--prefix "data-dump" \
|
||||||
|
--endpoint-url "$ENDPOINT_URL" \
|
||||||
|
--query 'Contents | sort_by(@, &LastModified) | [-1].Key' \
|
||||||
|
--output text)
|
||||||
|
|
||||||
|
# === Check if file was found ===
|
||||||
|
if [ "$LATEST_FILE" == "None" ] || [ -z "$LATEST_FILE" ]; then
|
||||||
|
echo "❌ No matching .sql.br file found."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
echo "🔍 Latest file found: $LATEST_FILE"
|
||||||
|
FILENAME=$(basename "$LATEST_FILE")
|
||||||
|
SQL_FILE="${FILENAME%.br}" # Remove .br suffix
|
||||||
|
echo "📥 Downloading $LATEST_FILE"
|
||||||
|
aws s3 cp "s3://$BUCKET_NAME/$LATEST_FILE" "$LOCAL_DOWNLOAD_DIR" \
|
||||||
|
--endpoint-url "$ENDPOINT_URL"
|
||||||
|
|
||||||
|
brotli -d "$FILENAME"
|
||||||
|
echo "🗜️ Decompressed to $SQL_FILE"
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
# === Import into Postgres inside Docker ===
|
||||||
|
echo "🐘 Importing into PostgreSQL ($DATABASE_NAME:main)"
|
||||||
|
docker exec -i "$DATABASE_NAME" env PGPASSWORD="hHMP8cd^N3SnzGRR" \
|
||||||
|
psql -v ON_ERROR_STOP=0 -U main -d main < "$SQL_FILE"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
echo "✅ Import complete."
|
||||||
|
|
||||||
|
# === Optional: Clean up
|
||||||
|
# If custom file was provided, do not delete it
|
||||||
|
if [ -z "$CUSTOM_FILE" ]; then
|
||||||
|
echo "🧹 Cleaning up downloaded files..."
|
||||||
|
rm "$FILENAME" "$SQL_FILE"
|
||||||
|
fi
|
||||||
@@ -5,38 +5,39 @@ export const createCaller = createCallerFactory({
|
|||||||
"klimafaktoren": await import("../src/pages/api/klimafaktoren.ts"),
|
"klimafaktoren": await import("../src/pages/api/klimafaktoren.ts"),
|
||||||
"postleitzahlen": await import("../src/pages/api/postleitzahlen.ts"),
|
"postleitzahlen": await import("../src/pages/api/postleitzahlen.ts"),
|
||||||
"unterlage": await import("../src/pages/api/unterlage.ts"),
|
"unterlage": await import("../src/pages/api/unterlage.ts"),
|
||||||
|
"ausweise": await import("../src/pages/api/ausweise/index.ts"),
|
||||||
|
"bedarfsausweis-gewerbe/[id]": await import("../src/pages/api/bedarfsausweis-gewerbe/[id].ts"),
|
||||||
|
"bedarfsausweis-gewerbe": await import("../src/pages/api/bedarfsausweis-gewerbe/index.ts"),
|
||||||
"aufnahme": await import("../src/pages/api/aufnahme/index.ts"),
|
"aufnahme": await import("../src/pages/api/aufnahme/index.ts"),
|
||||||
|
"bedarfsausweis-wohnen/[id]": await import("../src/pages/api/bedarfsausweis-wohnen/[id].ts"),
|
||||||
|
"bedarfsausweis-wohnen": await import("../src/pages/api/bedarfsausweis-wohnen/index.ts"),
|
||||||
"admin/ausstellen": await import("../src/pages/api/admin/ausstellen.ts"),
|
"admin/ausstellen": await import("../src/pages/api/admin/ausstellen.ts"),
|
||||||
|
"admin/bedarfsausweis-ausstellen": await import("../src/pages/api/admin/bedarfsausweis-ausstellen.ts"),
|
||||||
"admin/bestellbestaetigung": await import("../src/pages/api/admin/bestellbestaetigung.ts"),
|
"admin/bestellbestaetigung": await import("../src/pages/api/admin/bestellbestaetigung.ts"),
|
||||||
"admin/erinnern": await import("../src/pages/api/admin/erinnern.ts"),
|
"admin/erinnern": await import("../src/pages/api/admin/erinnern.ts"),
|
||||||
"admin/nicht-ausstellen": await import("../src/pages/api/admin/nicht-ausstellen.ts"),
|
"admin/nicht-ausstellen": await import("../src/pages/api/admin/nicht-ausstellen.ts"),
|
||||||
"admin/post-ausstellen": await import("../src/pages/api/admin/post-ausstellen.ts"),
|
|
||||||
"admin/registriernummer": await import("../src/pages/api/admin/registriernummer.ts"),
|
"admin/registriernummer": await import("../src/pages/api/admin/registriernummer.ts"),
|
||||||
"admin/stornieren": await import("../src/pages/api/admin/stornieren.ts"),
|
"admin/stornieren": await import("../src/pages/api/admin/stornieren.ts"),
|
||||||
"bedarfsausweis-gewerbe/[id]": await import("../src/pages/api/bedarfsausweis-gewerbe/[id].ts"),
|
|
||||||
"bedarfsausweis-gewerbe": await import("../src/pages/api/bedarfsausweis-gewerbe/index.ts"),
|
|
||||||
"ausweise": await import("../src/pages/api/ausweise/index.ts"),
|
|
||||||
"auth/access-token": await import("../src/pages/api/auth/access-token.ts"),
|
|
||||||
"auth/passwort-vergessen": await import("../src/pages/api/auth/passwort-vergessen.ts"),
|
|
||||||
"auth/refresh-token": await import("../src/pages/api/auth/refresh-token.ts"),
|
|
||||||
"bedarfsausweis-wohnen/[id]": await import("../src/pages/api/bedarfsausweis-wohnen/[id].ts"),
|
|
||||||
"bedarfsausweis-wohnen": await import("../src/pages/api/bedarfsausweis-wohnen/index.ts"),
|
|
||||||
"bilder/[id]": await import("../src/pages/api/bilder/[id].ts"),
|
"bilder/[id]": await import("../src/pages/api/bilder/[id].ts"),
|
||||||
"geg-nachweis-gewerbe/[id]": await import("../src/pages/api/geg-nachweis-gewerbe/[id].ts"),
|
|
||||||
"geg-nachweis-gewerbe": await import("../src/pages/api/geg-nachweis-gewerbe/index.ts"),
|
|
||||||
"geg-nachweis-wohnen/[id]": await import("../src/pages/api/geg-nachweis-wohnen/[id].ts"),
|
"geg-nachweis-wohnen/[id]": await import("../src/pages/api/geg-nachweis-wohnen/[id].ts"),
|
||||||
"geg-nachweis-wohnen": await import("../src/pages/api/geg-nachweis-wohnen/index.ts"),
|
"geg-nachweis-wohnen": await import("../src/pages/api/geg-nachweis-wohnen/index.ts"),
|
||||||
"objekt": await import("../src/pages/api/objekt/index.ts"),
|
"objekt": await import("../src/pages/api/objekt/index.ts"),
|
||||||
"user": await import("../src/pages/api/user/index.ts"),
|
"auth/access-token": await import("../src/pages/api/auth/access-token.ts"),
|
||||||
"user/self": await import("../src/pages/api/user/self.ts"),
|
"auth/passwort-vergessen": await import("../src/pages/api/auth/passwort-vergessen.ts"),
|
||||||
|
"auth/refresh-token": await import("../src/pages/api/auth/refresh-token.ts"),
|
||||||
"rechnung/[id]": await import("../src/pages/api/rechnung/[id].ts"),
|
"rechnung/[id]": await import("../src/pages/api/rechnung/[id].ts"),
|
||||||
"rechnung/anfordern": await import("../src/pages/api/rechnung/anfordern.ts"),
|
"rechnung/anfordern": await import("../src/pages/api/rechnung/anfordern.ts"),
|
||||||
"rechnung": await import("../src/pages/api/rechnung/index.ts"),
|
"rechnung": await import("../src/pages/api/rechnung/index.ts"),
|
||||||
|
"user": await import("../src/pages/api/user/index.ts"),
|
||||||
|
"user/self": await import("../src/pages/api/user/self.ts"),
|
||||||
"ticket": await import("../src/pages/api/ticket/index.ts"),
|
"ticket": await import("../src/pages/api/ticket/index.ts"),
|
||||||
"verbrauchsausweis-wohnen/[id]": await import("../src/pages/api/verbrauchsausweis-wohnen/[id].ts"),
|
"verbrauchsausweis-wohnen/[id]": await import("../src/pages/api/verbrauchsausweis-wohnen/[id].ts"),
|
||||||
"verbrauchsausweis-wohnen": await import("../src/pages/api/verbrauchsausweis-wohnen/index.ts"),
|
"verbrauchsausweis-wohnen": await import("../src/pages/api/verbrauchsausweis-wohnen/index.ts"),
|
||||||
"verbrauchsausweis-gewerbe/[id]": await import("../src/pages/api/verbrauchsausweis-gewerbe/[id].ts"),
|
"verbrauchsausweis-gewerbe/[id]": await import("../src/pages/api/verbrauchsausweis-gewerbe/[id].ts"),
|
||||||
"verbrauchsausweis-gewerbe": await import("../src/pages/api/verbrauchsausweis-gewerbe/index.ts"),
|
"verbrauchsausweis-gewerbe": await import("../src/pages/api/verbrauchsausweis-gewerbe/index.ts"),
|
||||||
|
"ticket": await import("../src/pages/api/ticket/index.ts"),
|
||||||
|
"verbrauchsausweis-wohnen/[id]": await import("../src/pages/api/verbrauchsausweis-wohnen/[id].ts"),
|
||||||
|
"verbrauchsausweis-wohnen": await import("../src/pages/api/verbrauchsausweis-wohnen/index.ts"),
|
||||||
"webhooks/mollie": await import("../src/pages/api/webhooks/mollie.ts"),
|
"webhooks/mollie": await import("../src/pages/api/webhooks/mollie.ts"),
|
||||||
"aufnahme/[id]/bilder": await import("../src/pages/api/aufnahme/[id]/bilder.ts"),
|
"aufnahme/[id]/bilder": await import("../src/pages/api/aufnahme/[id]/bilder.ts"),
|
||||||
"aufnahme/[id]": await import("../src/pages/api/aufnahme/[id]/index.ts"),
|
"aufnahme/[id]": await import("../src/pages/api/aufnahme/[id]/index.ts"),
|
||||||
|
|||||||
@@ -1,5 +1,4 @@
|
|||||||
import { api } from "astro-typesafe-api/client";
|
import { api } from "astro-typesafe-api/client";
|
||||||
import { exclude } from "#lib/exclude.js";
|
|
||||||
import Cookies from "js-cookie";
|
import Cookies from "js-cookie";
|
||||||
import { API_ACCESS_TOKEN_COOKIE_NAME } from "#lib/constants.js";
|
import { API_ACCESS_TOKEN_COOKIE_NAME } from "#lib/constants.js";
|
||||||
import {
|
import {
|
||||||
@@ -11,8 +10,11 @@ import {
|
|||||||
VerbrauchsausweisWohnenClient,
|
VerbrauchsausweisWohnenClient,
|
||||||
} from "#components/Ausweis/types.js";
|
} from "#components/Ausweis/types.js";
|
||||||
import {
|
import {
|
||||||
|
Aufnahme,
|
||||||
BedarfsausweisWohnen,
|
BedarfsausweisWohnen,
|
||||||
|
Bild,
|
||||||
Enums,
|
Enums,
|
||||||
|
Objekt,
|
||||||
Unterlage,
|
Unterlage,
|
||||||
VerbrauchsausweisGewerbe,
|
VerbrauchsausweisGewerbe,
|
||||||
VerbrauchsausweisWohnen,
|
VerbrauchsausweisWohnen,
|
||||||
@@ -529,12 +531,12 @@ export async function bedarfsausweisWohnenSpeichern(
|
|||||||
|
|
||||||
export async function ausweisSpeichern(
|
export async function ausweisSpeichern(
|
||||||
ausweis:
|
ausweis:
|
||||||
| VerbrauchsausweisWohnenClient
|
| VerbrauchsausweisWohnen
|
||||||
| VerbrauchsausweisGewerbeClient
|
| VerbrauchsausweisGewerbe
|
||||||
| BedarfsausweisWohnenClient,
|
| BedarfsausweisWohnen,
|
||||||
objekt: ObjektClient,
|
objekt: Objekt,
|
||||||
aufnahme: AufnahmeClient,
|
aufnahme: Aufnahme,
|
||||||
bilder: BildClient[],
|
bilder: Bild[],
|
||||||
unterlagen: Unterlage[],
|
unterlagen: Unterlage[],
|
||||||
ausweisart: Enums.Ausweisart
|
ausweisart: Enums.Ausweisart
|
||||||
) {
|
) {
|
||||||
@@ -566,7 +568,7 @@ export async function ausweisSpeichern(
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
aufnahme.id = aufnahme_id;
|
aufnahme.id = aufnahme_id as string;
|
||||||
|
|
||||||
if (ausweisart == Enums.Ausweisart.VerbrauchsausweisWohnen) {
|
if (ausweisart == Enums.Ausweisart.VerbrauchsausweisWohnen) {
|
||||||
const id = await verbrauchsausweisWohnenSpeichern(
|
const id = await verbrauchsausweisWohnenSpeichern(
|
||||||
|
|||||||
15
src/client/lib/lesen.ts
Normal file
15
src/client/lib/lesen.ts
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
import { API_ACCESS_TOKEN_COOKIE_NAME } from "#lib/constants.js";
|
||||||
|
import { Benutzer } from "#lib/client/prisma.js";
|
||||||
|
import { api } from "astro-typesafe-api/client";
|
||||||
|
import Cookies from "js-cookie";
|
||||||
|
|
||||||
|
export async function benutzerLesen(benutzerId: string): Promise<Benutzer> {
|
||||||
|
const benutzer = await api.user.GET.fetch({ id: benutzerId }
|
||||||
|
, {
|
||||||
|
headers: {
|
||||||
|
Authorization: `Bearer ${Cookies.get(API_ACCESS_TOKEN_COOKIE_NAME)}`
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
return benutzer[0];
|
||||||
|
}
|
||||||
@@ -1,49 +0,0 @@
|
|||||||
import { dialogs } from "../../../svelte-dialogs.config";
|
|
||||||
import { loginClient } from "#lib/login";
|
|
||||||
import { addNotification } from "#components/Notifications/shared";
|
|
||||||
|
|
||||||
export async function spawnLoginPrompt() {
|
|
||||||
const result = await dialogs.prompt(
|
|
||||||
[
|
|
||||||
{
|
|
||||||
label: "Email",
|
|
||||||
type: "email",
|
|
||||||
required: true,
|
|
||||||
placeholder: "Email",
|
|
||||||
name: "email"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
label: "Passwort",
|
|
||||||
type: "password",
|
|
||||||
name: "passwort",
|
|
||||||
required: true,
|
|
||||||
placeholder: "********",
|
|
||||||
},
|
|
||||||
],
|
|
||||||
{
|
|
||||||
title: "Login",
|
|
||||||
submitButtonText: "Einloggen",
|
|
||||||
cancelButtonText: "Abbrechen",
|
|
||||||
}
|
|
||||||
);
|
|
||||||
|
|
||||||
if (!result) return false;
|
|
||||||
|
|
||||||
const [email, passwort] = result;
|
|
||||||
|
|
||||||
const loginResult = await loginClient(email, passwort);
|
|
||||||
|
|
||||||
if (loginResult === null) {
|
|
||||||
addNotification({
|
|
||||||
type: "error",
|
|
||||||
message: "Einloggen fehlgeschlagen",
|
|
||||||
dismissable: true,
|
|
||||||
subtext: "Bitte überprüfen Sie ihre Eingaben und versuchen es erneut.",
|
|
||||||
timeout: 5000,
|
|
||||||
})
|
|
||||||
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
@@ -1,67 +0,0 @@
|
|||||||
import { dialogs } from "../../../svelte-dialogs.config.js";
|
|
||||||
import { addNotification } from "#components/Notifications/shared.js";
|
|
||||||
import { api } from "astro-typesafe-api/client";
|
|
||||||
|
|
||||||
export async function spawnSignupPrompt() {
|
|
||||||
const result = await dialogs.prompt(
|
|
||||||
[
|
|
||||||
{
|
|
||||||
label: "Vorname",
|
|
||||||
type: "text",
|
|
||||||
required: true,
|
|
||||||
placeholder: "Vorname",
|
|
||||||
name: "vorname"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
label: "Name",
|
|
||||||
type: "text",
|
|
||||||
required: true,
|
|
||||||
placeholder: "Name",
|
|
||||||
name: "name"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
label: "Email",
|
|
||||||
type: "email",
|
|
||||||
required: true,
|
|
||||||
placeholder: "Email",
|
|
||||||
name: "email"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
label: "Passwort",
|
|
||||||
type: "password",
|
|
||||||
name: "passwort",
|
|
||||||
required: true,
|
|
||||||
placeholder: "********",
|
|
||||||
},
|
|
||||||
],
|
|
||||||
{
|
|
||||||
title: "Registrieren",
|
|
||||||
submitButtonText: "Registrieren",
|
|
||||||
cancelButtonText: "Abbrechen",
|
|
||||||
}
|
|
||||||
);
|
|
||||||
|
|
||||||
if (!result) return false;
|
|
||||||
|
|
||||||
const [vorname, name, email, passwort] = result;
|
|
||||||
|
|
||||||
try {
|
|
||||||
const response = await api.user.PUT.fetch({
|
|
||||||
email,
|
|
||||||
passwort,
|
|
||||||
vorname,
|
|
||||||
name,
|
|
||||||
});
|
|
||||||
|
|
||||||
return true;
|
|
||||||
} catch(e) {
|
|
||||||
addNotification({
|
|
||||||
type: "error",
|
|
||||||
message: "Registrieren fehlgeschlagen",
|
|
||||||
dismissable: true,
|
|
||||||
subtext: "Ein Fehler ist aufgetreten, vielleicht wird die angegebene Email bereits verwendet.",
|
|
||||||
timeout: 5000,
|
|
||||||
})
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
import { API_ACCESS_TOKEN_COOKIE_NAME } from "#lib/constants.js";
|
import { API_ACCESS_TOKEN_COOKIE_NAME } from "#lib/constants.js";
|
||||||
import { Aufnahme, Objekt } from "#lib/client/prisma.js";
|
import { Aufnahme, Benutzer, Objekt } from "#lib/client/prisma.js";
|
||||||
import { api } from "astro-typesafe-api/client";
|
import { api } from "astro-typesafe-api/client";
|
||||||
import Cookies from "js-cookie";
|
import Cookies from "js-cookie";
|
||||||
|
|
||||||
@@ -145,7 +145,7 @@ export async function objektSpeichern(objekt: Objekt & { id?: string }): Promise
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
return objekt.id;
|
return objekt.id;
|
||||||
} else {
|
} else {
|
||||||
const { id } = await api.objekt.PUT.fetch({
|
const { id } = await api.objekt.PUT.fetch({
|
||||||
adresse: objekt.adresse,
|
adresse: objekt.adresse,
|
||||||
@@ -161,4 +161,32 @@ export async function objektSpeichern(objekt: Objekt & { id?: string }): Promise
|
|||||||
|
|
||||||
return id;
|
return id;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export async function benutzerSpeichern(benutzer: Partial<Benutzer>): Promise<string> {
|
||||||
|
const completeBenutzer: Benutzer = {
|
||||||
|
id: benutzer.id,
|
||||||
|
name: benutzer.name ?? null,
|
||||||
|
email: benutzer.email,
|
||||||
|
passwort: "",
|
||||||
|
adresse: benutzer.adresse ?? null,
|
||||||
|
anrede: benutzer.anrede ?? null,
|
||||||
|
firma: benutzer.firma ?? null,
|
||||||
|
vorname: benutzer.vorname ?? null,
|
||||||
|
ort: benutzer.ort ?? null,
|
||||||
|
plz: benutzer.plz ?? null,
|
||||||
|
profilbild: benutzer.profilbild ?? null,
|
||||||
|
telefon: benutzer.telefon ?? null,
|
||||||
|
updated_at: new Date(),
|
||||||
|
verified: benutzer.verified ?? false,
|
||||||
|
};
|
||||||
|
|
||||||
|
await api.user.POST.fetch(completeBenutzer
|
||||||
|
, {
|
||||||
|
headers: {
|
||||||
|
Authorization: `Bearer ${Cookies.get(API_ACCESS_TOKEN_COOKIE_NAME)}`
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
return benutzer.id;
|
||||||
}
|
}
|
||||||
133
src/components/Abrechnung/AbrechnungTable.svelte
Normal file
133
src/components/Abrechnung/AbrechnungTable.svelte
Normal file
@@ -0,0 +1,133 @@
|
|||||||
|
<script lang="ts">
|
||||||
|
import { Aufnahme, BedarfsausweisWohnen, Enums, Objekt, Provisionen, Rechnung, VerbrauchsausweisGewerbe, VerbrauchsausweisWohnen } from "#lib/server/prisma.js";
|
||||||
|
import moment from "moment-timezone"
|
||||||
|
import { DatePicker } from "@svelte-plugins/datepicker"
|
||||||
|
import { getProvision } from "#lib/provision.js";
|
||||||
|
export let bestellungen: (Rechnung & {
|
||||||
|
ausweis: (VerbrauchsausweisWohnen | BedarfsausweisWohnen | VerbrauchsausweisGewerbe) & { aufnahme: Aufnahme & { objekt: Objekt }}
|
||||||
|
})[];
|
||||||
|
export let provisionen: Provisionen[];
|
||||||
|
export let email: string;
|
||||||
|
export let startdatum: Date;
|
||||||
|
export let enddatum: Date;
|
||||||
|
moment.locale("de");
|
||||||
|
moment.tz.setDefault("Europe/Berlin");
|
||||||
|
|
||||||
|
const bestellungenNachMonat: Record<string, (typeof bestellungen)> = {};
|
||||||
|
for (const bestellung of bestellungen) {
|
||||||
|
const monat = moment(bestellung.created_at).format("Y-MM");
|
||||||
|
if (monat in bestellungenNachMonat) {
|
||||||
|
bestellungenNachMonat[monat].push(bestellung)
|
||||||
|
} else {
|
||||||
|
bestellungenNachMonat[monat] = [bestellung]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Wir brauchen alle Monate zwischen dem ersten Mal, dass der partner_code benutzt wurde bis zum heutigen Zeitpunkt.
|
||||||
|
function getMonthlyPeriods(from: Date, to: Date): moment.Moment[] {
|
||||||
|
const start = moment(from).startOf('month');
|
||||||
|
const end = moment(to).endOf('month');
|
||||||
|
|
||||||
|
const monthsArray: moment.Moment[] = [];
|
||||||
|
const current = start.clone();
|
||||||
|
|
||||||
|
while (current.isBefore(end)) {
|
||||||
|
monthsArray.push(current.clone());
|
||||||
|
current.add(1, 'month');
|
||||||
|
}
|
||||||
|
|
||||||
|
return monthsArray.reverse(); // Most recent month first
|
||||||
|
}
|
||||||
|
|
||||||
|
const periods = getMonthlyPeriods(startdatum, enddatum)
|
||||||
|
|
||||||
|
|
||||||
|
let isOpen = false;
|
||||||
|
$: formatiertesStartDatum = moment(startdatum).format("DD.MM.YYYY");
|
||||||
|
$: formatiertesEndDatum = moment(enddatum).format("DD.MM.YYYY");
|
||||||
|
function toggleDatePicker() {
|
||||||
|
isOpen = !isOpen;
|
||||||
|
}
|
||||||
|
|
||||||
|
const onChange = ({ startDate, endDate }: { startDate: number, endDate: number }) => {
|
||||||
|
window.location.href = `/dashboard/abrechnung?start=${moment(startDate).format("YYYY-MM-DD")}&end=${moment(endDate).format("YYYY-MM-DD")}`;
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<div class="fixed top-0 left-0 right-0 bg-white p-4 shadow z-10">
|
||||||
|
<div class="flex justify-between items-center">
|
||||||
|
<DatePicker bind:isOpen bind:startDate={startdatum} bind:endDate={enddatum} enableFutureDates={false} isRange={true} onDateChange={onChange} isMultipane={true}>
|
||||||
|
<input type="text" class="w-min" readonly value={`${formatiertesStartDatum} - ${formatiertesEndDatum}`} on:click={toggleDatePicker} />
|
||||||
|
</DatePicker>
|
||||||
|
<p>Abrechnungsübersicht für <strong>{email}</strong></p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<main class="my-24 flex flex-col justify-center max-w-6xl mx-auto px-4">
|
||||||
|
{#if !bestellungen || bestellungen.length === 0}
|
||||||
|
<p class="text-center text-gray-500">Keine Bestellungen gefunden.</p>
|
||||||
|
{/if}
|
||||||
|
{#each periods as dt}
|
||||||
|
{@const jahrMonat = dt.format("Y-MM")}
|
||||||
|
{#if jahrMonat in bestellungenNachMonat && bestellungenNachMonat[jahrMonat].length > 0}
|
||||||
|
<!-- Echo dropdown foreach month. -->
|
||||||
|
{@const provisionMonat = bestellungenNachMonat[jahrMonat].reduce((acc, bestellung) => {
|
||||||
|
const { provision_prozent, provision_betrag } = getProvision(bestellung.ausweis.ausweisart, bestellung.ausweis.ausweistyp, provisionen);
|
||||||
|
return acc + provision_betrag;
|
||||||
|
}, 0)}
|
||||||
|
|
||||||
|
<details class="group" open>
|
||||||
|
<summary class="flex justify-between items-center cursor-pointer p-4 bg-gray-100 hover:bg-gray-200">
|
||||||
|
<span class="font-semibold">{moment(dt).format("MMMM YYYY")}</span>
|
||||||
|
<div class="flex flex-row gap-4 items-center">
|
||||||
|
<a href={`/dashboard/abrechnung/monatlich.pdf?d=${moment(dt).format("YYYY-MM")}`} target="_blank" rel="noreferrer noopener">PDF generieren</a>
|
||||||
|
<span class="text-gray-500">{provisionMonat.toFixed(2)} €</span>
|
||||||
|
<svg class="w-4 h-4 transition-transform duration-300 group-open:rotate-180" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
||||||
|
<polyline points="6 9 12 15 18 9"></polyline>
|
||||||
|
</svg>
|
||||||
|
</div>
|
||||||
|
</summary>
|
||||||
|
<div class="p-4">
|
||||||
|
<table class="w-full mb-4 border-collapse border border-gray-300">
|
||||||
|
<thead>
|
||||||
|
<tr class="bg-primary text-white w-full">
|
||||||
|
<td class="text-center p-2 font-bold">ID</td>
|
||||||
|
<td class="text-center p-2 font-bold">Datum</td>
|
||||||
|
<td class="text-center p-2 font-bold">Ausweis</td>
|
||||||
|
<td class="text-center p-2 font-bold">Provision in %</td>
|
||||||
|
<td class="text-center p-2 font-bold">Betrag Netto</td>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody class="text-sm">
|
||||||
|
{#each bestellungenNachMonat[jahrMonat] as bestellung}
|
||||||
|
{@const provisionBestellung = getProvision(bestellung.ausweis.ausweisart, bestellung.ausweis.ausweistyp, provisionen)}
|
||||||
|
<tr class="border-b border-gray-300 hover:bg-gray-100">
|
||||||
|
<td class="text-center py-2 px-4 w-24" style="font-family: monospace;">{bestellung.ausweis.id}</td>
|
||||||
|
<td class="text-center py-2 font-bold w-32">{moment(bestellung.created_at).format("DD.MM.YYYY HH:mm")}</td>
|
||||||
|
<td class="text-center py-2 w-32">{bestellung.ausweis.ausweisart} {bestellung.ausweis.ausweistyp}</td>
|
||||||
|
<td class="text-center py-2 w-32">{provisionBestellung?.provision_prozent || 0} %</td>
|
||||||
|
<td class="text-right py-2 w-24" style="font-family: monospace;">{provisionBestellung?.provision_betrag.toFixed(2)} €</td>
|
||||||
|
</tr>
|
||||||
|
{/each}
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</details>
|
||||||
|
{:else if !bestellungenNachMonat[jahrMonat] || bestellungenNachMonat[jahrMonat].length === 0}
|
||||||
|
<details class="group">
|
||||||
|
<summary class="flex justify-between items-center cursor-pointer p-4 bg-gray-100 hover:bg-gray-200">
|
||||||
|
<span class="font-semibold">{moment(dt).format("MMMM YYYY")}</span>
|
||||||
|
<div class="flex flex-row gap-4 items-center">
|
||||||
|
<span class="text-gray-500">Keine Bestellungen gefunden</span>
|
||||||
|
<svg class="w-4 h-4 transition-transform duration-300 group-open:rotate-180" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
||||||
|
<polyline points="6 9 12 15 18 9"></polyline>
|
||||||
|
</svg>
|
||||||
|
</div>
|
||||||
|
</summary>
|
||||||
|
<div class="p-4 border-t border-gray-200">
|
||||||
|
<p class="text-gray-500">Für diesen Monat liegen uns keine Bestellungen über ihren Resellercode vor.</p>
|
||||||
|
</div>
|
||||||
|
</details>
|
||||||
|
{/if}
|
||||||
|
{/each}
|
||||||
|
</main>
|
||||||
@@ -131,11 +131,11 @@
|
|||||||
window.history.pushState(
|
window.history.pushState(
|
||||||
{},
|
{},
|
||||||
"",
|
"",
|
||||||
`${location.pathname}?id=${ausweis.id}`
|
`${location.pathname}?ausweis_id=${ausweis.id}`
|
||||||
);
|
);
|
||||||
blockLocalStorageSync = true;
|
blockLocalStorageSync = true;
|
||||||
localStorage.clear()
|
localStorage.clear()
|
||||||
window.location.href = `/speichern-erfolgreich?id=${ausweis.id}`
|
window.location.href = `/dashboard/objekte/${ausweis.id}`
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -214,8 +214,8 @@ grid-cols-1 gap-x-2 gap-y-4
|
|||||||
/>
|
/>
|
||||||
|
|
||||||
<div class="text-center xs:text-left justify-self-stretch">
|
<div class="text-center xs:text-left justify-self-stretch">
|
||||||
<b>Verbrauchsausweis online</b><br>inkl. ausführlicher telefonischer
|
<b>Selbsteingabe online</b><br>inkl. ausführlicher telefonischer
|
||||||
Beratung
|
Beratung!
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="text-center xs:text-right">
|
<div class="text-center xs:text-right">
|
||||||
@@ -234,7 +234,7 @@ grid-cols-1 gap-x-2 gap-y-4
|
|||||||
/>
|
/>
|
||||||
|
|
||||||
<div class="text-center xs:text-left justify-self-stretch">
|
<div class="text-center xs:text-left justify-self-stretch">
|
||||||
<b>Verbrauchsausweis offline</b><br>Sie schicken uns 3 Verbrauchsabrechnungen zu)
|
<b>Wir übernehmen die Eingabe</b><br>Sie übermitteln die nötigen Unterlagen per Upload oder E-Mail.
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="text-center xs:text-right">
|
<div class="text-center xs:text-right">
|
||||||
|
|||||||
@@ -11,6 +11,22 @@
|
|||||||
export let objekt: ObjektClient;
|
export let objekt: ObjektClient;
|
||||||
|
|
||||||
export let ausweisart: Enums.Ausweisart;
|
export let ausweisart: Enums.Ausweisart;
|
||||||
|
|
||||||
|
function onlyAllowIntegerInput(event: KeyboardEvent) {
|
||||||
|
const charCode = event.which || event.keyCode;
|
||||||
|
// Allow only numbers (0-9) and control keys (e.g., backspace)
|
||||||
|
if (charCode < 48 || charCode > 57) {
|
||||||
|
event.preventDefault();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function onlyAllowPastingIntegers(event: ClipboardEvent) {
|
||||||
|
const clipboardData = event.clipboardData || (window as any).clipboardData;
|
||||||
|
const pastedData = clipboardData.getData("Text");
|
||||||
|
if (!/^\d+$/.test(pastedData)) {
|
||||||
|
event.preventDefault();
|
||||||
|
}
|
||||||
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<div
|
<div
|
||||||
@@ -97,10 +113,11 @@ xl:grid-cols-3 xl:gap-x-8 xl:gap-y-8
|
|||||||
data-test="flaeche"
|
data-test="flaeche"
|
||||||
maxlength="4"
|
maxlength="4"
|
||||||
type="number"
|
type="number"
|
||||||
|
step="1"
|
||||||
required
|
required
|
||||||
autocomplete="off"
|
autocomplete="off"
|
||||||
data-rule-minlength="2"
|
on:keypress={onlyAllowIntegerInput}
|
||||||
data-msg-minlength="min. 2 Zeichen"
|
on:paste={onlyAllowPastingIntegers}
|
||||||
bind:value={aufnahme.flaeche}
|
bind:value={aufnahme.flaeche}
|
||||||
/>
|
/>
|
||||||
|
|
||||||
@@ -124,7 +141,10 @@ xl:grid-cols-3 xl:gap-x-8 xl:gap-y-8
|
|||||||
data-test="nutzflaeche"
|
data-test="nutzflaeche"
|
||||||
maxlength="4"
|
maxlength="4"
|
||||||
type="number"
|
type="number"
|
||||||
|
step="1"
|
||||||
required
|
required
|
||||||
|
on:keypress={onlyAllowIntegerInput}
|
||||||
|
on:paste={onlyAllowPastingIntegers}
|
||||||
bind:value={aufnahme.nutzflaeche}
|
bind:value={aufnahme.nutzflaeche}
|
||||||
/>
|
/>
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,4 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import { endEnergieVerbrauchVerbrauchsausweis_2016 } from "#lib/Berechnungen/VerbrauchsausweisWohnen/VerbrauchsausweisWohnen_2016.js";
|
|
||||||
import ThickArrowDown from "radix-svelte-icons/src/lib/icons/ThickArrowDown.svelte";
|
import ThickArrowDown from "radix-svelte-icons/src/lib/icons/ThickArrowDown.svelte";
|
||||||
import {
|
import {
|
||||||
BedarfsausweisWohnenClient,
|
BedarfsausweisWohnenClient,
|
||||||
@@ -9,8 +8,9 @@
|
|||||||
VerbrauchsausweisWohnenClient,
|
VerbrauchsausweisWohnenClient,
|
||||||
} from "./types.js";
|
} from "./types.js";
|
||||||
import ThickArrowUp from "radix-svelte-icons/src/lib/icons/ThickArrowUp.svelte";
|
import ThickArrowUp from "radix-svelte-icons/src/lib/icons/ThickArrowUp.svelte";
|
||||||
import { Enums } from "#lib/client/prisma";
|
import { Enums } from "#lib/client/prisma.js";
|
||||||
import { endEnergieVerbrauchVerbrauchsausweisGewerbe_2016 } from "#lib/Berechnungen/VerbrauchsausweisGewerbe/VerbrauchsausweisGewerbe_2016.js";
|
import { endEnergieVerbrauchVerbrauchsausweis_2016_Client } from "#lib/Berechnungen/VerbrauchsausweisWohnen/VerbrauchsausweisWohnen_2016_Client.js";
|
||||||
|
import { endEnergieVerbrauchVerbrauchsausweisGewerbe_2016_Client } from "#lib/Berechnungen/VerbrauchsausweisGewerbe/VerbrauchsausweisGewerbe_2016_Client.js";
|
||||||
|
|
||||||
export let ausweis: VerbrauchsausweisWohnenClient | VerbrauchsausweisGewerbeClient | BedarfsausweisWohnenClient;
|
export let ausweis: VerbrauchsausweisWohnenClient | VerbrauchsausweisGewerbeClient | BedarfsausweisWohnenClient;
|
||||||
export let aufnahme: AufnahmeClient;
|
export let aufnahme: AufnahmeClient;
|
||||||
@@ -21,7 +21,9 @@
|
|||||||
[Enums.Ausweisart.VerbrauchsausweisGewerbe]: 1000,
|
[Enums.Ausweisart.VerbrauchsausweisGewerbe]: 1000,
|
||||||
[Enums.Ausweisart.VerbrauchsausweisWohnen]: 250,
|
[Enums.Ausweisart.VerbrauchsausweisWohnen]: 250,
|
||||||
[Enums.Ausweisart.BedarfsausweisWohnen]: 250,
|
[Enums.Ausweisart.BedarfsausweisWohnen]: 250,
|
||||||
[Enums.Ausweisart.BedarfsausweisGewerbe]: 250
|
[Enums.Ausweisart.BedarfsausweisGewerbe]: 0,
|
||||||
|
[Enums.Ausweisart.GEGNachweisGewerbe]: 0,
|
||||||
|
[Enums.Ausweisart.GEGNachweisWohnen]: 0,
|
||||||
}[ausweisart];
|
}[ausweisart];
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -58,20 +60,23 @@
|
|||||||
return centeredValue;
|
return centeredValue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
let translation_1 = 0;
|
let translation_1 = 0;
|
||||||
let translation_2 = 0;
|
let translation_2 = 0;
|
||||||
$: {
|
$: {
|
||||||
(async () => {
|
(async () => {
|
||||||
let result;
|
let result;
|
||||||
if (ausweisart === Enums.Ausweisart.VerbrauchsausweisWohnen || ausweisart === Enums.Ausweisart.BedarfsausweisWohnen) {
|
if (ausweisart === Enums.Ausweisart.VerbrauchsausweisWohnen || ausweisart === Enums.Ausweisart.BedarfsausweisWohnen) {
|
||||||
result = await endEnergieVerbrauchVerbrauchsausweis_2016(ausweis, aufnahme, objekt);
|
result = await endEnergieVerbrauchVerbrauchsausweis_2016_Client(ausweis, aufnahme, objekt);
|
||||||
} else if (ausweisart === Enums.Ausweisart.VerbrauchsausweisGewerbe) {
|
} else if (ausweisart === Enums.Ausweisart.VerbrauchsausweisGewerbe) {
|
||||||
result = await endEnergieVerbrauchVerbrauchsausweisGewerbe_2016(ausweis, aufnahme, objekt);
|
result = await endEnergieVerbrauchVerbrauchsausweisGewerbe_2016_Client(ausweis, aufnahme, objekt);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!result) {
|
if (!result) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
translation_1 = Math.max(
|
translation_1 = Math.max(
|
||||||
0,
|
0,
|
||||||
Math.min(
|
Math.min(
|
||||||
|
|||||||
@@ -20,9 +20,13 @@
|
|||||||
export let ausweisart: Enums.Ausweisart;
|
export let ausweisart: Enums.Ausweisart;
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
|
||||||
{#if ausweisart=="BedarfsausweisWohnen"}
|
{#if ausweisart=="BedarfsausweisWohnen"}
|
||||||
<AngabenZurHeizunganlage bind:ausweis/>
|
<AngabenZurHeizunganlage bind:ausweis/>
|
||||||
{/if}
|
{/if}
|
||||||
|
|
||||||
|
-->
|
||||||
|
|
||||||
<div
|
<div
|
||||||
id="sanierungszustand"
|
id="sanierungszustand"
|
||||||
|
|||||||
@@ -63,8 +63,15 @@
|
|||||||
fuelMap[fuel[0]].push(fuel[1]);
|
fuelMap[fuel[0]].push(fuel[1]);
|
||||||
}
|
}
|
||||||
|
|
||||||
let month = moment(ausweis.startdatum).month();
|
// Falls der Ausweis bereits einmal gespeichert wurde mit einem Startdatum sollten wir dieses benutzen.
|
||||||
let year = moment(ausweis.startdatum).year();
|
let month: number, year: number;
|
||||||
|
if (ausweis.startdatum) {
|
||||||
|
month = moment(ausweis.startdatum).get("month")
|
||||||
|
year = moment(ausweis.startdatum).get("year")
|
||||||
|
} else {
|
||||||
|
month = availableDates[availableDates.length - 1].month;
|
||||||
|
year = availableDates[availableDates.length - 1].year;
|
||||||
|
}
|
||||||
|
|
||||||
$: {
|
$: {
|
||||||
if (typeof month === "number" && typeof year === "number") {
|
if (typeof month === "number" && typeof year === "number") {
|
||||||
|
|||||||
@@ -52,7 +52,7 @@ $: {
|
|||||||
<!-- % Anteil Warmwasser -->
|
<!-- % Anteil Warmwasser -->
|
||||||
|
|
||||||
<div class="input-standard order-2 md:order-2 xl:order-2">
|
<div class="input-standard order-2 md:order-2 xl:order-2">
|
||||||
<Inputlabel title="% Anteil Warmwasser"></Inputlabel>
|
<Inputlabel title="% Anteil Kühlung"></Inputlabel>
|
||||||
|
|
||||||
<input
|
<input
|
||||||
name="anteil_kuehlung_1"
|
name="anteil_kuehlung_1"
|
||||||
|
|||||||
@@ -40,15 +40,15 @@
|
|||||||
"Dezember",
|
"Dezember",
|
||||||
];
|
];
|
||||||
|
|
||||||
const startDate = moment(aufnahme.erstellungsdatum || Date.now())
|
const earlistPossibleStartDate = moment(aufnahme.erstellungsdatum || Date.now())
|
||||||
.subtract(4, "years")
|
.subtract(4, "years")
|
||||||
.subtract(6, "months");
|
.subtract(6, "months");
|
||||||
const endDate = moment(aufnahme.erstellungsdatum || Date.now()).subtract(
|
const lastPossibleEndDate = moment(aufnahme.erstellungsdatum || Date.now()).subtract(
|
||||||
3,
|
3,
|
||||||
"years"
|
"years"
|
||||||
);
|
);
|
||||||
|
|
||||||
for (let m = moment(startDate); m.isBefore(endDate); m.add(1, "month")) {
|
for (let m = moment(earlistPossibleStartDate); m.isBefore(lastPossibleEndDate); m.add(1, "month")) {
|
||||||
availableDates.push({
|
availableDates.push({
|
||||||
year: m.year(),
|
year: m.year(),
|
||||||
month: m.month(),
|
month: m.month(),
|
||||||
@@ -62,8 +62,15 @@
|
|||||||
fuelMap[fuel[0]].push(fuel[1]);
|
fuelMap[fuel[0]].push(fuel[1]);
|
||||||
}
|
}
|
||||||
|
|
||||||
let month = availableDates[availableDates.length - 1].month;
|
// Falls der Ausweis bereits einmal gespeichert wurde mit einem Startdatum sollten wir dieses benutzen.
|
||||||
let year = availableDates[availableDates.length - 1].year;
|
let month: number, year: number;
|
||||||
|
if (ausweis.startdatum) {
|
||||||
|
month = moment(ausweis.startdatum).get("month")
|
||||||
|
year = moment(ausweis.startdatum).get("year")
|
||||||
|
} else {
|
||||||
|
month = availableDates[availableDates.length - 1].month;
|
||||||
|
year = availableDates[availableDates.length - 1].year;
|
||||||
|
}
|
||||||
|
|
||||||
$: {
|
$: {
|
||||||
if (typeof month === "number" && typeof year === "number") {
|
if (typeof month === "number" && typeof year === "number") {
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ const brennstoffe: [
|
|||||||
["Flüssiggas", "kg", 13.0, 1.1, 0.27],
|
["Flüssiggas", "kg", 13.0, 1.1, 0.27],
|
||||||
["Braunkohle", "kg", 5.5, 1.2, 0.43],
|
["Braunkohle", "kg", 5.5, 1.2, 0.43],
|
||||||
["Holzhackschnitzel", "SRm", 650.0, 0.2, 0.02],
|
["Holzhackschnitzel", "SRm", 650.0, 0.2, 0.02],
|
||||||
["Strommix", "kWh", 1.0, 2.4, 0.56],
|
["Strommix", "kWh", 1.0, 1.8, 0.56],
|
||||||
["Fernwärme KWK FB", "kWh", 1.0, 0.7, 0.3],
|
["Fernwärme KWK FB", "kWh", 1.0, 0.7, 0.3],
|
||||||
["Nahwärme KWK FB", "kWh", 1.0, 0.7, 0.3],
|
["Nahwärme KWK FB", "kWh", 1.0, 0.7, 0.3],
|
||||||
["Heizöl EL", "kWh", 1.0, 1.1, 0.31],
|
["Heizöl EL", "kWh", 1.0, 1.1, 0.31],
|
||||||
@@ -41,6 +41,10 @@ const brennstoffe: [
|
|||||||
["Fernwärme KWK EB", "kWh", 1.0, 0.0, 0.04],
|
["Fernwärme KWK EB", "kWh", 1.0, 0.0, 0.04],
|
||||||
["Fernwärme HKW FB", "kWh", 1.0, 1.3, 0.4],
|
["Fernwärme HKW FB", "kWh", 1.0, 1.3, 0.4],
|
||||||
["Fernwärme HKW EB", "kWh", 1.0, 0.1, 0.06],
|
["Fernwärme HKW EB", "kWh", 1.0, 0.1, 0.06],
|
||||||
|
["Fernwärme Hamburg", "kWh", 1.0, 0.33, 0.064],
|
||||||
|
["Fernwärme Erfurt", "kWh", 1.0, 0.3, 0],
|
||||||
|
["Fernwärme Neumünster", "kWh", 1.0, 0.28, 0.0133],
|
||||||
|
["Fernwärme Pforzheim", "kWh", 1.0, 0.25, 0],
|
||||||
["Erdgas", "kWh", 1.0, 1.1, 0.24],
|
["Erdgas", "kWh", 1.0, 1.1, 0.24],
|
||||||
["Heizöl", "kWh", 1.0, 1.1, 0.31],
|
["Heizöl", "kWh", 1.0, 1.1, 0.31],
|
||||||
["Heizöl", "l", 10.0, 1.1, 0.31],
|
["Heizöl", "l", 10.0, 1.1, 0.31],
|
||||||
|
|||||||
@@ -14,6 +14,7 @@ import {
|
|||||||
GEGNachweisWohnen,
|
GEGNachweisWohnen,
|
||||||
BedarfsausweisGewerbe,
|
BedarfsausweisGewerbe,
|
||||||
GEGNachweisGewerbe,
|
GEGNachweisGewerbe,
|
||||||
|
GEGEinpreisung
|
||||||
} from "#lib/client/prisma.js";
|
} from "#lib/client/prisma.js";
|
||||||
import { z, ZodSchema } from "zod";
|
import { z, ZodSchema } from "zod";
|
||||||
|
|
||||||
@@ -79,6 +80,8 @@ export type BenutzerClient = OmitKeys<Benutzer, "passwort">;
|
|||||||
|
|
||||||
export type RechnungClient = Rechnung
|
export type RechnungClient = Rechnung
|
||||||
|
|
||||||
|
export type GEGEinpreisungClient = GEGEinpreisung
|
||||||
|
|
||||||
export function ZodOverlap<T, S = z.ZodType<T, z.ZodTypeDef, T>>(arg: S): S {
|
export function ZodOverlap<T, S = z.ZodType<T, z.ZodTypeDef, T>>(arg: S): S {
|
||||||
return arg;
|
return arg;
|
||||||
}
|
}
|
||||||
@@ -97,7 +100,7 @@ export type OptionalNullable<T> = T extends object ? {
|
|||||||
[K in keyof PickNotNullable<T>]: OptionalNullable<T[K]>
|
[K in keyof PickNotNullable<T>]: OptionalNullable<T[K]>
|
||||||
} : T;
|
} : T;
|
||||||
|
|
||||||
export const UUidWithPrefix = z.string().refine((value) => {
|
export const IDWithPrefix = z.string().refine((value) => {
|
||||||
const prefixedUUidRegex = /^([A-Z]{2})[0-9A-Z]{6,9}$/i
|
const prefixedUUidRegex = /^([A-Z]{2})[0-9A-Z]{6,9}$/i
|
||||||
|
|
||||||
const match = value.match(prefixedUUidRegex)
|
const match = value.match(prefixedUUidRegex)
|
||||||
@@ -110,7 +113,7 @@ export const UUidWithPrefix = z.string().refine((value) => {
|
|||||||
})
|
})
|
||||||
|
|
||||||
export function getAusweisartFromId(id: string): Enums.Ausweisart | null {
|
export function getAusweisartFromId(id: string): Enums.Ausweisart | null {
|
||||||
if (!UUidWithPrefix.safeParse(id).success) {
|
if (!IDWithPrefix.safeParse(id).success) {
|
||||||
return null
|
return null
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,939 +0,0 @@
|
|||||||
<script lang="ts">
|
|
||||||
import { endEnergieVerbrauchVerbrauchsausweis_2016 } from "#lib/Berechnungen/VerbrauchsausweisWohnen/VerbrauchsausweisWohnen_2016.js";
|
|
||||||
import moment from "moment";
|
|
||||||
import {
|
|
||||||
AufnahmeClient,
|
|
||||||
getAusweisartFromId,
|
|
||||||
ObjektClient,
|
|
||||||
BildClient,
|
|
||||||
VerbrauchsausweisWohnenClient,
|
|
||||||
} from "./Ausweis/types.js";
|
|
||||||
import AusweisPruefenTooltip from "./AusweisPruefenTooltip.svelte";
|
|
||||||
import { addNotification } from "#components/Notifications/shared.js";
|
|
||||||
import { CheckCircled, CrossCircled, Image } from "radix-svelte-icons";
|
|
||||||
import ChevronDown from "radix-svelte-icons/src/lib/icons/ChevronDown.svelte";
|
|
||||||
import { Event } from "#lib/client/prisma.js";
|
|
||||||
import { api } from "astro-typesafe-api/client";
|
|
||||||
import Cookies from "js-cookie";
|
|
||||||
import { API_ACCESS_TOKEN_COOKIE_NAME } from "#lib/constants.js";
|
|
||||||
import NotificationWrapper from "./Notifications/NotificationWrapper.svelte";
|
|
||||||
|
|
||||||
|
|
||||||
export let ausweis: VerbrauchsausweisWohnenClient;
|
|
||||||
export let aufnahme: AufnahmeClient;
|
|
||||||
export let objekt: ObjektClient;
|
|
||||||
export let bilder: BildClient[]
|
|
||||||
export let events: Event[]
|
|
||||||
export let calculations: Awaited<
|
|
||||||
ReturnType<typeof endEnergieVerbrauchVerbrauchsausweis_2016>
|
|
||||||
>;
|
|
||||||
|
|
||||||
async function ausweisAusstellen(uid: string) {
|
|
||||||
try {
|
|
||||||
await api.admin.ausstellen.GET.fetch({
|
|
||||||
id_ausweis: uid
|
|
||||||
}, {
|
|
||||||
headers: {
|
|
||||||
"Authorization": `Bearer ${Cookies.get(API_ACCESS_TOKEN_COOKIE_NAME)}`
|
|
||||||
}
|
|
||||||
})
|
|
||||||
} catch(e) {
|
|
||||||
addNotification({
|
|
||||||
message: "Das hat nicht geklappt.",
|
|
||||||
subtext: e as string,
|
|
||||||
timeout: 3000,
|
|
||||||
type: "error",
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
const ausweisArt = getAusweisartFromId(ausweis.id)
|
|
||||||
|
|
||||||
let verbrauchWWGesamt_1 = "";
|
|
||||||
let verbrauchWWGesamt_2 = "";
|
|
||||||
|
|
||||||
var Ausweisbild,
|
|
||||||
DatenBlattBild,
|
|
||||||
warmWasser,
|
|
||||||
anteilWarmwasser,
|
|
||||||
solarsystemWarmwasser;
|
|
||||||
|
|
||||||
let zurueckGestellt: any;
|
|
||||||
let symbolPruefung: any;
|
|
||||||
let StatusIcon: any;
|
|
||||||
let tooltip3Z1: any;
|
|
||||||
let tooltip3Z2: any;
|
|
||||||
let tooltip4Z1: any;
|
|
||||||
let tooltip4Z2: any;
|
|
||||||
let tooltip5Z1: any;
|
|
||||||
let tooltip5Z2: any;
|
|
||||||
let tooltip5Z3: any;
|
|
||||||
let tooltip6Z1: any;
|
|
||||||
let tooltip6Z2: any;
|
|
||||||
let tooltip7Z1: any;
|
|
||||||
let tooltip7Z2: any;
|
|
||||||
let tooltip8Z1: any;
|
|
||||||
let tooltip8Z2: any;
|
|
||||||
let tooltip9Z1: any;
|
|
||||||
let tooltip9Z2: any;
|
|
||||||
let tooltip10Z1: any;
|
|
||||||
let tooltip10Z2: any;
|
|
||||||
let tooltip11Z1: any;
|
|
||||||
let tooltip11Z2: any;
|
|
||||||
let tooltip12Z1: any;
|
|
||||||
let tooltip12Z2: any;
|
|
||||||
let tooltip13Z1: any;
|
|
||||||
let tooltip13Z2: any;
|
|
||||||
let tooltip14Z1: any;
|
|
||||||
let tooltip14Z2: any;
|
|
||||||
let tooltip15Z1: any;
|
|
||||||
let tooltip15Z2: any;
|
|
||||||
let tooltip16Z1: any;
|
|
||||||
let tooltip16Z2: any;
|
|
||||||
|
|
||||||
let table3Z1: any;
|
|
||||||
let table3Z2: any;
|
|
||||||
let table4Z1: any;
|
|
||||||
let table4Z2: any;
|
|
||||||
let table5Z1: any;
|
|
||||||
let table5Z2: any;
|
|
||||||
let table6Z1: any;
|
|
||||||
let table6Z2: any;
|
|
||||||
let table7Z1: any;
|
|
||||||
let table7Z2: any;
|
|
||||||
let table8Z1: any;
|
|
||||||
let table8Z2: any;
|
|
||||||
let table9Z1: any;
|
|
||||||
let table9Z2: any;
|
|
||||||
let table10Z1: any;
|
|
||||||
let table10Z2: any;
|
|
||||||
let table11Z1: any;
|
|
||||||
let table11Z2: any;
|
|
||||||
let table12Z1: any;
|
|
||||||
let table12Z2: any;
|
|
||||||
let table13Z1: any;
|
|
||||||
let table13Z2: any;
|
|
||||||
let table14Z1: any;
|
|
||||||
let table14Z2: any;
|
|
||||||
let table15Z1: any;
|
|
||||||
let table15Z2: any;
|
|
||||||
let table16Z1: any;
|
|
||||||
let table16Z2: any;
|
|
||||||
|
|
||||||
let Abgeschlossen: any;
|
|
||||||
|
|
||||||
if (ausweis.ausgestellt) {
|
|
||||||
Ausweisbild = "/images/dashboard/ausweishaken.jpg";
|
|
||||||
DatenBlattBild = "/images/dashboard/datenblatthaken.jpg";
|
|
||||||
StatusIcon = "/images/dashboard/erledigt.svg";
|
|
||||||
Abgeschlossen = 0;
|
|
||||||
} else if (ausweis.bestellt) {
|
|
||||||
Ausweisbild = "/images/dashboard/ausweis.jpg";
|
|
||||||
DatenBlattBild = "/images/dashboard/datenblatt.jpg";
|
|
||||||
StatusIcon = "/images/dashboard/bestellt.svg";
|
|
||||||
Abgeschlossen = 1;
|
|
||||||
} else {
|
|
||||||
Ausweisbild = "/images/dashboard/ausweiskreuz.jpg";
|
|
||||||
DatenBlattBild = "/images/dashboard/datenblattkreuz.jpg";
|
|
||||||
StatusIcon = "/images/dashboard/gespeichert.svg";
|
|
||||||
Abgeschlossen = 2;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (ausweis.boxpruefung) {
|
|
||||||
symbolPruefung = "/images/dashboard/kreishaken.png";
|
|
||||||
} else {
|
|
||||||
symbolPruefung = "/images/dashboard/kreiskreuz.png";
|
|
||||||
}
|
|
||||||
|
|
||||||
if (ausweis.zurueckgestellt) {
|
|
||||||
zurueckGestellt =
|
|
||||||
"<img src='/images/dashboard/zurueckGestellt.svg' alt='Status' width=\"25\" height=\"25\"></img>";
|
|
||||||
} else {
|
|
||||||
zurueckGestellt = "";
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
if (ausweis.warmwasser_enthalten) {
|
|
||||||
warmWasser = "Warmwasser enthalten";
|
|
||||||
} else {
|
|
||||||
warmWasser = "Warmwasser nicht enthalten";
|
|
||||||
}
|
|
||||||
if (ausweis.warmwasser_anteil_bekannt) {
|
|
||||||
anteilWarmwasser = "Anteil bekannt";
|
|
||||||
} else {
|
|
||||||
anteilWarmwasser = "Anteil unbekannt";
|
|
||||||
}
|
|
||||||
|
|
||||||
if (
|
|
||||||
ausweis.warmwasser_enthalten &&
|
|
||||||
ausweis.warmwasser_anteil_bekannt
|
|
||||||
) {
|
|
||||||
if (aufnahme.solarsystem_warmwasser) {
|
|
||||||
// Wenn Warmwasser enthalten und Anteil bekannt und Solarsystem
|
|
||||||
verbrauchWWGesamt_1 = `${calculations?.energieVerbrauchGesamt_1} kWh x ${(ausweis.anteil_warmwasser_1 || 0) / 100} x 0.6`;
|
|
||||||
verbrauchWWGesamt_2 = `${calculations?.energieVerbrauchGesamt_2} kWh x ${(ausweis.anteil_warmwasser_2 || 0) / 100} x 0.6`;
|
|
||||||
solarsystemWarmwasser = "Solarsystem Warmwasser";
|
|
||||||
} else {
|
|
||||||
// Wenn Warmwasser enthalten und Anteil bekannt und **kein** Solarsystem
|
|
||||||
verbrauchWWGesamt_1 = `${calculations?.energieVerbrauchGesamt_1} kWh x ${(ausweis.anteil_warmwasser_1 || 0) / 100} x 0.6`
|
|
||||||
verbrauchWWGesamt_2 = `${calculations?.energieVerbrauchGesamt_2} kWh x ${(ausweis.anteil_warmwasser_2 || 0) / 100} x 0.6`
|
|
||||||
solarsystemWarmwasser = "kein Solarsystem Warmwasser";
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if (aufnahme.solarsystem_warmwasser) {
|
|
||||||
// Wenn Warmwasser Anteil unbekannt und Solarsystem
|
|
||||||
verbrauchWWGesamt_1 =
|
|
||||||
calculations?.energetischeNutzflaeche +
|
|
||||||
" m² x 12 kWh/m² x 3 Jahre";
|
|
||||||
solarsystemWarmwasser = "Solarsystem Warmwasser";
|
|
||||||
} else {
|
|
||||||
// Wenn Warmwasser Anteil unbekannt und **kein** Solarsystem
|
|
||||||
verbrauchWWGesamt_1 =
|
|
||||||
calculations?.energetischeNutzflaeche +
|
|
||||||
" m² x 20 kWh/m² x 3 Jahre";
|
|
||||||
solarsystemWarmwasser = "kein Solarsystem Warmwasser";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
tooltip3Z1 = "Wohnfläche in m²";
|
|
||||||
tooltip3Z2 =
|
|
||||||
ausweis.faktorKeller +
|
|
||||||
" x " +
|
|
||||||
aufnahme.flaeche +
|
|
||||||
" m² Energetische Nutzfläche (Keller " +
|
|
||||||
aufnahme.keller +
|
|
||||||
" ) in m²";
|
|
||||||
table3Z1 = aufnahme.flaeche;
|
|
||||||
table3Z2 = calculations?.energetischeNutzflaeche;
|
|
||||||
|
|
||||||
|
|
||||||
tooltip4Z1 =
|
|
||||||
"(" +
|
|
||||||
ausweis.verbrauch_1 +
|
|
||||||
" " +
|
|
||||||
ausweis.einheit_1 +
|
|
||||||
" + " +
|
|
||||||
ausweis.verbrauch_2 +
|
|
||||||
" " +
|
|
||||||
ausweis.einheit_1 +
|
|
||||||
" + " +
|
|
||||||
ausweis.verbrauch_3 +
|
|
||||||
" " +
|
|
||||||
ausweis.einheit_1 +
|
|
||||||
") x " +
|
|
||||||
calculations?.brennstoff_1.umrechnungsfaktor +
|
|
||||||
" kWh/" +
|
|
||||||
ausweis.einheit_1 +
|
|
||||||
" >> Verbrauch 1 " +
|
|
||||||
ausweis.brennstoff_1 +
|
|
||||||
" in kWh";
|
|
||||||
tooltip4Z2 =
|
|
||||||
"(" +
|
|
||||||
ausweis.verbrauch_4 +
|
|
||||||
" " +
|
|
||||||
ausweis.einheit_2 +
|
|
||||||
" + " +
|
|
||||||
ausweis.verbrauch_5 +
|
|
||||||
" " +
|
|
||||||
ausweis.einheit_2 +
|
|
||||||
" + " +
|
|
||||||
ausweis.verbrauch_6 +
|
|
||||||
" " +
|
|
||||||
ausweis.einheit_2 +
|
|
||||||
") x " +
|
|
||||||
calculations?.brennstoff_2.umrechnungsfaktor +
|
|
||||||
" kWh/" +
|
|
||||||
ausweis.einheit_2 +
|
|
||||||
" >> Verbrauch 2 " +
|
|
||||||
ausweis.brennstoff_2 +
|
|
||||||
" in kWh";
|
|
||||||
table4Z1 = calculations?.energieVerbrauchGesamt_1;
|
|
||||||
table4Z2 = calculations?.energieVerbrauchGesamt_2;
|
|
||||||
|
|
||||||
tooltip5Z1 =
|
|
||||||
warmWasser + ", " + anteilWarmwasser + ", " + solarsystemWarmwasser;
|
|
||||||
tooltip5Z2 = verbrauchWWGesamt_1;
|
|
||||||
tooltip5Z3 = verbrauchWWGesamt_2;
|
|
||||||
table5Z1 = calculations?.energieVerbrauchWarmwasser_1;
|
|
||||||
table5Z2 = calculations?.energieVerbrauchWarmwasser_2;
|
|
||||||
|
|
||||||
tooltip6Z1 =
|
|
||||||
"(" +
|
|
||||||
calculations?.klimafaktoren[0].klimafaktor +
|
|
||||||
" + " +
|
|
||||||
calculations?.klimafaktoren[1].klimafaktor +
|
|
||||||
" + " +
|
|
||||||
calculations?.klimafaktoren[2].klimafaktor +
|
|
||||||
") / 3 >> durchschnittlicher Klimafaktor";
|
|
||||||
tooltip6Z2 = "";
|
|
||||||
table6Z1 = calculations?.durchschnittsKlimafaktor;
|
|
||||||
table6Z2 = "";
|
|
||||||
|
|
||||||
tooltip7Z1 =
|
|
||||||
calculations?.energieVerbrauchHeizung_1 +
|
|
||||||
" kWh x " +
|
|
||||||
calculations?.durchschnittsKlimafaktor +
|
|
||||||
" >> Klimabereinigter Heizverbrauch 1 in kWh";
|
|
||||||
tooltip7Z2 =
|
|
||||||
calculations?.energieVerbrauchHeizung_2 +
|
|
||||||
" kWh x " +
|
|
||||||
calculations?.durchschnittsKlimafaktor +
|
|
||||||
" >> Klimabereinigter Heizverbrauch 2 in kWh";
|
|
||||||
table7Z1 = calculations?.energieVerbrauchHeizungBereinigt_1;
|
|
||||||
table7Z2 = calculations?.energieVerbrauchHeizungBereinigt_2;
|
|
||||||
|
|
||||||
|
|
||||||
tooltip8Z1 =
|
|
||||||
calculations?.energetischeNutzflaeche +
|
|
||||||
" m² x 6 kWh/m² x 3 Jahre >> Kühlungszuschlag in kWh";
|
|
||||||
tooltip8Z2 = "";
|
|
||||||
table8Z1 = calculations?.kuehlungsZuschlag;
|
|
||||||
table8Z2 = "";
|
|
||||||
|
|
||||||
tooltip9Z1 =
|
|
||||||
"-0.0028 x " +
|
|
||||||
calculations?.durchschnittsEnergieVerbrauchHeizungBereingt +
|
|
||||||
" + 0.9147 >> Heizungsfaktor";
|
|
||||||
tooltip9Z2 =
|
|
||||||
"(" +
|
|
||||||
calculations?.energieVerbrauchHeizungBereinigt_1 +
|
|
||||||
" + " +
|
|
||||||
calculations?.energieVerbrauchHeizungBereinigt_2 +
|
|
||||||
") / (3 * " +
|
|
||||||
calculations?.energetischeNutzflaeche +
|
|
||||||
") >> Durchschnittsverbrauch Heizung in kWh";
|
|
||||||
table9Z1 =
|
|
||||||
calculations?.faktorDurchschnittsEnergieVerbrauchHeizungBereinigt;
|
|
||||||
table9Z2 = calculations?.durchschnittsEnergieVerbrauchHeizungBereingt;
|
|
||||||
|
|
||||||
tooltip10Z1 =
|
|
||||||
calculations[
|
|
||||||
"faktorDurchschnittsEnergieVerbrauchHeizungBereinigt"
|
|
||||||
] +
|
|
||||||
" x " +
|
|
||||||
calculations?.leerstand +
|
|
||||||
" x (" +
|
|
||||||
calculations.energieVerbrauchHeizungBereinigt_1 +
|
|
||||||
" + " +
|
|
||||||
calculations.energieVerbrauchHeizungBereinigt_2 +
|
|
||||||
") >> Leerstandszuschlag Heizung in kWh";
|
|
||||||
tooltip10Z2 =
|
|
||||||
calculations?.leerstand +
|
|
||||||
" x (" +
|
|
||||||
calculations?.energieVerbrauchWarmwasser_1 +
|
|
||||||
" + " +
|
|
||||||
calculations?.energieVerbrauchWarmwasser_2 +
|
|
||||||
") >> Leerstandszuschlag Warmwasser in kWh";
|
|
||||||
table10Z1 = calculations?.leerstandsZuschlagHeizung;
|
|
||||||
table10Z2 = calculations?.leerstandsZuschlagWarmwasser;
|
|
||||||
|
|
||||||
tooltip11Z2 =
|
|
||||||
"(" +
|
|
||||||
calculations?.energieVerbrauchHeizungBereinigt_2 +
|
|
||||||
" + " +
|
|
||||||
calculations?.energieVerbrauchWarmwasser_2 +
|
|
||||||
") / (3 Jahre x " +
|
|
||||||
calculations?.energetischeNutzflaeche +
|
|
||||||
") Endenergieverbrauch 2 in kWh/m²a";
|
|
||||||
table11Z1 = calculations?.endEnergieVerbrauch_1;
|
|
||||||
table11Z2 = calculations?.endEnergieVerbrauch_2;
|
|
||||||
|
|
||||||
tooltip12Z1 =
|
|
||||||
"((" +
|
|
||||||
calculations?.energieVerbrauchHeizungBereinigt_1 +
|
|
||||||
" x " +
|
|
||||||
calculations?.primaerfaktor_1 +
|
|
||||||
") + (" +
|
|
||||||
calculations?.energieVerbrauchWarmwasser_1 +
|
|
||||||
" x " +
|
|
||||||
calculations?.primaerfaktorww +
|
|
||||||
")) / (3 Jahre x " +
|
|
||||||
calculations?.energetischeNutzflaeche +
|
|
||||||
") Primärenergieverbrauch 1 in kWh/m²a";
|
|
||||||
tooltip12Z2 =
|
|
||||||
"((" +
|
|
||||||
calculations?.energieVerbrauchHeizungBereinigt_2 +
|
|
||||||
" x " +
|
|
||||||
calculations?.primaerfaktor_1 +
|
|
||||||
") + (" +
|
|
||||||
calculations?.energieVerbrauchWarmwasser_2 +
|
|
||||||
" x " +
|
|
||||||
calculations?.primaerfaktorww_1 +
|
|
||||||
")) / (3 Jahre x " +
|
|
||||||
calculations?.energetischeNutzflaeche +
|
|
||||||
") Primärenergieverbrauch 2 in kWh/m²a";
|
|
||||||
table12Z1 = calculations?.primaerEnergieVerbrauch_1;
|
|
||||||
table12Z2 = calculations?.primaerEnergieVerbrauch_2;
|
|
||||||
|
|
||||||
tooltip13Z1 =
|
|
||||||
"(" +
|
|
||||||
calculations?.leerstandsZuschlagHeizung +
|
|
||||||
" + " +
|
|
||||||
calculations?.leerstandsZuschlagWarmwasser +
|
|
||||||
") / (3 Jahre x " +
|
|
||||||
calculations?.energetischeNutzflaeche +
|
|
||||||
") Endenergieverbrauch Leerstand in kWh/m²a";
|
|
||||||
tooltip13Z2 =
|
|
||||||
"(" +
|
|
||||||
calculations?.kuehlungsZuschlag +
|
|
||||||
") / (3 Jahre x " +
|
|
||||||
calculations?.energetischeNutzflaeche +
|
|
||||||
") Endenergieverbrauch Kühlung in kWh/m²a";
|
|
||||||
table13Z1 = calculations?.endEnergieVerbrauchLeerstandsZuschlag;
|
|
||||||
table13Z2 = calculations?.endEnergieVerbrauchKuehlungsZuschlag;
|
|
||||||
|
|
||||||
tooltip14Z1 =
|
|
||||||
calculations?.endEnergieVerbrauchLeerstandsZuschlag +
|
|
||||||
" x " +
|
|
||||||
calculations?.primaerfaktor +
|
|
||||||
" Primärenergieverbrauch Leerstand in kWh/m²a";
|
|
||||||
tooltip14Z2 =
|
|
||||||
calculations?.endEnergieVerbrauchKuehlungsZuschlag +
|
|
||||||
" x 1.8 Primärenergieverbrauch Kühlung in kWh/m²a";
|
|
||||||
table14Z1 = calculations?.primaerEnergieVerbrauchLeerstandsZuschlag;
|
|
||||||
table14Z2 = calculations?.primaerEnergieVerbrauchKuehlungsZuschlag;
|
|
||||||
|
|
||||||
tooltip15Z1 =
|
|
||||||
calculations?.endEnergieVerbrauch_1 +
|
|
||||||
" + " +
|
|
||||||
calculations?.endEnergieVerbrauch_2 +
|
|
||||||
" + " +
|
|
||||||
calculations?.endEnergieVerbrauchLeerstandsZuschlag +
|
|
||||||
" + " +
|
|
||||||
calculations?.endEnergieVerbrauchKuehlungsZuschlag +
|
|
||||||
" Endenergieverbrauch in kWh/m²a";
|
|
||||||
tooltip15Z2 =
|
|
||||||
"(" +
|
|
||||||
calculations?.endEnergieVerbrauch_1 +
|
|
||||||
" x " +
|
|
||||||
calculations?.co2Emissionen_1 +
|
|
||||||
") + (" +
|
|
||||||
calculations?.endEnergieVerbrauch_2 +
|
|
||||||
" x " +
|
|
||||||
calculations?.co2Emissionen_2 +
|
|
||||||
") + (" +
|
|
||||||
calculations?.endEnergieVerbrauchLeerstandsZuschlag +
|
|
||||||
" x " +
|
|
||||||
calculations?.co2Emissionen_1 +
|
|
||||||
") + (" +
|
|
||||||
calculations?.endEnergieVerbrauchKuehlungsZuschlag +
|
|
||||||
" x " +
|
|
||||||
calculations?.co2Emissionen_1 +
|
|
||||||
") CO2-Emissionen in kg/m²a";
|
|
||||||
table15Z1 = calculations?.endEnergieVerbrauchGesamt;
|
|
||||||
table15Z2 = calculations?.co2EmissionenGesamt;
|
|
||||||
|
|
||||||
tooltip16Z1 =
|
|
||||||
calculations?.primaerEnergieVerbrauch_1 +
|
|
||||||
" + " +
|
|
||||||
calculations?.primaerEnergieVerbrauch_2 +
|
|
||||||
" + " +
|
|
||||||
calculations?.primaerEnergieVerbrauchLeerstandsZuschlag +
|
|
||||||
" x " +
|
|
||||||
calculations?.primaerEnergieVerbrauchKuehlungsZuschlag +
|
|
||||||
" Primärenergieverbrauch in kWh/m²a";
|
|
||||||
tooltip16Z2 = "Effizienzklasse";
|
|
||||||
table16Z1 = calculations?.primaerEnergieVerbrauchGesamt;
|
|
||||||
table16Z2 = aufnahme.energieeffizienzklasse;
|
|
||||||
|
|
||||||
let imagePreview = "";
|
|
||||||
|
|
||||||
// let imageJson = JSON.parse(ausweis.images);
|
|
||||||
// let imagePreview = "";
|
|
||||||
// if (typeof imageJson === "object") {
|
|
||||||
// imagePreview =
|
|
||||||
// imageJson.daemmung.toString() +
|
|
||||||
// "," +
|
|
||||||
// imageJson.general.toString() +
|
|
||||||
// "," +
|
|
||||||
// imageJson.fenster.toString() +
|
|
||||||
// "," +
|
|
||||||
// imageJson.heizung.toString();
|
|
||||||
// }
|
|
||||||
|
|
||||||
async function stornieren(ausweis: VerbrauchsausweisWohnenClient) {
|
|
||||||
try {
|
|
||||||
const response = await api.admin.stornieren.PUT.fetch({
|
|
||||||
uid_ausweis: ausweis.id
|
|
||||||
}, {
|
|
||||||
headers: {
|
|
||||||
"Authorization": `Bearer ${Cookies.get(API_ACCESS_TOKEN_COOKIE_NAME)}`
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
addNotification({
|
|
||||||
message: "Ausweis wurde storniert",
|
|
||||||
type: "success",
|
|
||||||
dismissable: true,
|
|
||||||
timeout: 3000,
|
|
||||||
})
|
|
||||||
|
|
||||||
ausweis.storniert = true;
|
|
||||||
ausweis = ausweis;
|
|
||||||
} catch(e) {
|
|
||||||
addNotification({
|
|
||||||
message: "Ausweis konnte nicht storniert werden.",
|
|
||||||
subtext: e as string,
|
|
||||||
type: "error",
|
|
||||||
dismissable: true,
|
|
||||||
timeout: 3000,
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
let bilderModal: HTMLDialogElement;
|
|
||||||
let infoVisible = false;
|
|
||||||
|
|
||||||
|
|
||||||
async function registriernummerAnfordern(uid: string) {
|
|
||||||
try {
|
|
||||||
const result = await api.admin.registriernummer.GET.fetch({
|
|
||||||
uid
|
|
||||||
}, {
|
|
||||||
headers: {
|
|
||||||
"Authorization": `Bearer ${Cookies.get(API_ACCESS_TOKEN_COOKIE_NAME)}`
|
|
||||||
}
|
|
||||||
})
|
|
||||||
} catch(e) {
|
|
||||||
addNotification({
|
|
||||||
message: "Registriernummer anfordern fehlgeschlagen.",
|
|
||||||
subtext: e as string,
|
|
||||||
type: "error",
|
|
||||||
dismissable: true,
|
|
||||||
timeout: 3000,
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<div class="border rounded-lg bg-base-200">
|
|
||||||
<table class="">
|
|
||||||
<tbody>
|
|
||||||
<tr>
|
|
||||||
<td><button on:click={() => infoVisible = !infoVisible}><ChevronDown size={22} class="transition-all {infoVisible ? "" : "rotate-180"}"></ChevronDown></button></td>
|
|
||||||
<td class="w-6 px-2"
|
|
||||||
>
|
|
||||||
{#if ausweis.ausgestellt}
|
|
||||||
<div class="tooltip" data-tip="Ausweis wurde ausgestellt">
|
|
||||||
<div class="rounded-full w-6 h-6 bg-success"></div>
|
|
||||||
</div>
|
|
||||||
{:else if ausweis.bestellt}
|
|
||||||
<div class="tooltip" data-tip="Ausweis wurde bestellt">
|
|
||||||
<div class="rounded-full w-6 h-6 bg-warning"></div>
|
|
||||||
</div>
|
|
||||||
{:else}
|
|
||||||
<div class="tooltip" data-tip="Ausweis ist in Bearbeitung">
|
|
||||||
<div class="rounded-full w-6 h-6 bg-error"></div>
|
|
||||||
</div>
|
|
||||||
{/if}
|
|
||||||
</td
|
|
||||||
>
|
|
||||||
<td width="150px"
|
|
||||||
>
|
|
||||||
<AusweisPruefenTooltip>
|
|
||||||
<div slot="tooltip">
|
|
||||||
<span>{aufnahme.adresse} {aufnahme.plz} {aufnahme.ort}</span>
|
|
||||||
<br>
|
|
||||||
<span>{aufnahme.gebaeudetyp}, Einheiten: {aufnahme.einheiten}</span>
|
|
||||||
</div>
|
|
||||||
<span>{ausweisArt} - {aufnahme.id}</span>
|
|
||||||
<span>{moment(aufnahme.erstellungsdatum).format("DD.MM.YYYY")}</span>
|
|
||||||
</AusweisPruefenTooltip></td
|
|
||||||
>
|
|
||||||
<td width="35px"
|
|
||||||
>
|
|
||||||
<AusweisPruefenTooltip>
|
|
||||||
<div slot="tooltip">
|
|
||||||
<span>Baujahr Gebäude / Baujahr Heizung</span>
|
|
||||||
</div>
|
|
||||||
<span>{aufnahme.baujahr_gebaeude.join(", ")}</span>
|
|
||||||
<span>{aufnahme.baujahr_heizung.join(", ")}</span>
|
|
||||||
</AusweisPruefenTooltip>
|
|
||||||
<div class="tooltip" data-tip="">
|
|
||||||
|
|
||||||
</div></td
|
|
||||||
>
|
|
||||||
<td width="45px"
|
|
||||||
>
|
|
||||||
<AusweisPruefenTooltip>
|
|
||||||
<div slot="tooltip">
|
|
||||||
<span>Wohnfläche in m²</span>
|
|
||||||
<br>
|
|
||||||
<span>{ausweis.faktorKeller} x {aufnahme.flaeche}m² Energetische Nutzfläche (Keller {aufnahme.keller}) in m²</span>
|
|
||||||
</div>
|
|
||||||
<span>{aufnahme.flaeche}</span>
|
|
||||||
<span><strong>{calculations?.energetischeNutzflaeche}</strong></span>
|
|
||||||
</AusweisPruefenTooltip>
|
|
||||||
</td
|
|
||||||
>
|
|
||||||
<td width="90px"
|
|
||||||
>
|
|
||||||
<AusweisPruefenTooltip>
|
|
||||||
<div slot="tooltip">
|
|
||||||
<span>{tooltip4Z1}</span>
|
|
||||||
<br>
|
|
||||||
<span>{tooltip4Z2}</span>
|
|
||||||
</div>
|
|
||||||
<span>{table4Z1}</span>
|
|
||||||
<span>{table4Z2}</span>
|
|
||||||
</AusweisPruefenTooltip></td
|
|
||||||
>
|
|
||||||
<td width="70px"
|
|
||||||
>
|
|
||||||
<AusweisPruefenTooltip>
|
|
||||||
<div slot="tooltip">
|
|
||||||
<span>{tooltip5Z1}</span>
|
|
||||||
<br>
|
|
||||||
<span>{tooltip5Z2}</span>
|
|
||||||
<br>
|
|
||||||
<span>{tooltip5Z3}</span>
|
|
||||||
</div>
|
|
||||||
<span>{table5Z1}</span>
|
|
||||||
<span>{table5Z2}</span>
|
|
||||||
</AusweisPruefenTooltip>
|
|
||||||
</td
|
|
||||||
>
|
|
||||||
<td width="50px"
|
|
||||||
>
|
|
||||||
<AusweisPruefenTooltip>
|
|
||||||
<div slot="tooltip">
|
|
||||||
<span>{tooltip6Z1}</span>
|
|
||||||
<br>
|
|
||||||
<span>{tooltip6Z2}</span>
|
|
||||||
</div>
|
|
||||||
<span><strong>{table6Z1}</strong></span>
|
|
||||||
<span><strong>{table6Z2}</strong></span>
|
|
||||||
</AusweisPruefenTooltip></td
|
|
||||||
>
|
|
||||||
<td width="90px"
|
|
||||||
>
|
|
||||||
<AusweisPruefenTooltip>
|
|
||||||
<div slot="tooltip">
|
|
||||||
<span>{tooltip7Z1}</span>
|
|
||||||
<br>
|
|
||||||
<span>{tooltip7Z2}</span>
|
|
||||||
</div>
|
|
||||||
<span>{table7Z1}</span>
|
|
||||||
<span>{table7Z2}</span>
|
|
||||||
</AusweisPruefenTooltip></td
|
|
||||||
>
|
|
||||||
<td width="60px"
|
|
||||||
>
|
|
||||||
<AusweisPruefenTooltip>
|
|
||||||
<div slot="tooltip">
|
|
||||||
<span>{tooltip8Z1}</span>
|
|
||||||
<br>
|
|
||||||
<span>{tooltip8Z2}</span>
|
|
||||||
</div>
|
|
||||||
<span>{table8Z1}</span>
|
|
||||||
<span>{table8Z2}</span>
|
|
||||||
</AusweisPruefenTooltip></td
|
|
||||||
>
|
|
||||||
<td width="50px"
|
|
||||||
>
|
|
||||||
<AusweisPruefenTooltip>
|
|
||||||
<div slot="tooltip">
|
|
||||||
<span>{tooltip9Z1}</span>
|
|
||||||
<br>
|
|
||||||
<span>{tooltip9Z2}</span>
|
|
||||||
</div>
|
|
||||||
<span>{table9Z1}</span>
|
|
||||||
<span><strong>{table9Z2}</strong></span>
|
|
||||||
</AusweisPruefenTooltip></td
|
|
||||||
>
|
|
||||||
<td width="100px"
|
|
||||||
>
|
|
||||||
<AusweisPruefenTooltip>
|
|
||||||
<div slot="tooltip">
|
|
||||||
<span>{tooltip10Z1}</span>
|
|
||||||
<br>
|
|
||||||
<span>{tooltip10Z2}</span>
|
|
||||||
</div>
|
|
||||||
<span>{table10Z1}</span>
|
|
||||||
<span>{table10Z2}</span>
|
|
||||||
</AusweisPruefenTooltip></td
|
|
||||||
>
|
|
||||||
<td width="110px"
|
|
||||||
>
|
|
||||||
<AusweisPruefenTooltip>
|
|
||||||
<div slot="tooltip">
|
|
||||||
<span>({calculations?.energieVerbrauchHeizungBereinigt_1} + {calculations?.energieVerbrauchWarmwasser_1}) / (3 Jahre x {calculations?.energetischeNutzflaeche}) Endenergieverbrauch 1 in kWh/m²a</span>
|
|
||||||
<br>
|
|
||||||
<span>{tooltip11Z2}</span>
|
|
||||||
</div>
|
|
||||||
<span>{table11Z1}</span>
|
|
||||||
<span>{table11Z2}</span>
|
|
||||||
</AusweisPruefenTooltip></td
|
|
||||||
>
|
|
||||||
<td width="50px"
|
|
||||||
>
|
|
||||||
<AusweisPruefenTooltip>
|
|
||||||
<div slot="tooltip">
|
|
||||||
<span>{tooltip12Z1}</span>
|
|
||||||
<br>
|
|
||||||
<span>{tooltip12Z2}</span>
|
|
||||||
</div>
|
|
||||||
<span>{table12Z1}</span>
|
|
||||||
<span>{table12Z2}</span>
|
|
||||||
</AusweisPruefenTooltip>
|
|
||||||
</td
|
|
||||||
>
|
|
||||||
<td width="60px"
|
|
||||||
>
|
|
||||||
<AusweisPruefenTooltip>
|
|
||||||
<div slot="tooltip">
|
|
||||||
<span>{tooltip13Z1}</span>
|
|
||||||
<br>
|
|
||||||
<span>{tooltip13Z2}</span>
|
|
||||||
</div>
|
|
||||||
<span>{table13Z1}</span>
|
|
||||||
<span>{table13Z2}</span>
|
|
||||||
</AusweisPruefenTooltip>
|
|
||||||
</td
|
|
||||||
>
|
|
||||||
<td width="45px"
|
|
||||||
>
|
|
||||||
<AusweisPruefenTooltip>
|
|
||||||
<div slot="tooltip">
|
|
||||||
<span>{tooltip14Z1}</span>
|
|
||||||
<br>
|
|
||||||
<span>{tooltip14Z2}</span>
|
|
||||||
</div>
|
|
||||||
<span>{table14Z1}</span>
|
|
||||||
<span>{table14Z2}</span>
|
|
||||||
</AusweisPruefenTooltip>
|
|
||||||
</td
|
|
||||||
>
|
|
||||||
<td width="45px"
|
|
||||||
>
|
|
||||||
<AusweisPruefenTooltip>
|
|
||||||
<div slot="tooltip">
|
|
||||||
<span>{tooltip15Z1}</span>
|
|
||||||
<br>
|
|
||||||
<span>{tooltip15Z2}</span>
|
|
||||||
</div>
|
|
||||||
<span><strong>{table15Z1}</strong></span>
|
|
||||||
<span><strong>{table15Z2}</strong></span>
|
|
||||||
</AusweisPruefenTooltip>
|
|
||||||
</td
|
|
||||||
>
|
|
||||||
<td width="50px"
|
|
||||||
>
|
|
||||||
<AusweisPruefenTooltip>
|
|
||||||
<div slot="tooltip">
|
|
||||||
<span>{tooltip16Z1}</span>
|
|
||||||
<br>
|
|
||||||
<span>{tooltip16Z2}</span>
|
|
||||||
</div>
|
|
||||||
<span><strong>{table16Z1}</strong></span>
|
|
||||||
<span><strong>{table16Z2}</strong></span>
|
|
||||||
</AusweisPruefenTooltip>
|
|
||||||
</td
|
|
||||||
>
|
|
||||||
<td title="Gebäudebilder anzeigen"
|
|
||||||
><!-- Open the modal using ID.showModal() method -->
|
|
||||||
<button class="btn btn-square" on:click={() => bilderModal.showModal()}><Image size={22}></Image></button>
|
|
||||||
<dialog bind:this={bilderModal} class="modal p-4 rounded-lg">
|
|
||||||
<div class="modal-box flex flex-row gap-4 items-center justify-center">
|
|
||||||
{#if bilder.length === 0}
|
|
||||||
<div class="flex flex-col gap-4 items-center justify-center">
|
|
||||||
<p>Für diesen Ausweis sind noch keine Bilder vorhanden.</p>
|
|
||||||
<button class="button" tabindex="0">Erinnerung Verschicken</button>
|
|
||||||
</div>
|
|
||||||
{:else}
|
|
||||||
{#each bilder as image}
|
|
||||||
<div>
|
|
||||||
<h2 class="text-lg mb-4 font-bold">{image.kategorie}</h2>
|
|
||||||
<img src="/bilder/{image.id}.jpg">
|
|
||||||
</div>
|
|
||||||
{/each}
|
|
||||||
{/if}
|
|
||||||
</div>
|
|
||||||
<form method="dialog" class="modal-backdrop">
|
|
||||||
<button class="button">Close</button>
|
|
||||||
</form>
|
|
||||||
</dialog></td
|
|
||||||
>
|
|
||||||
<td class="w-[30px]"
|
|
||||||
>
|
|
||||||
<AusweisPruefenTooltip>
|
|
||||||
<div slot="tooltip">
|
|
||||||
<span>{aufnahme.prueftext}</span>
|
|
||||||
</div>
|
|
||||||
{#if ausweis.boxpruefung}
|
|
||||||
<CheckCircled size={22}></CheckCircled>
|
|
||||||
{:else}
|
|
||||||
<CrossCircled size={22}></CrossCircled>
|
|
||||||
{/if}
|
|
||||||
</AusweisPruefenTooltip></td
|
|
||||||
>
|
|
||||||
<td title="Ausweis anzeigen" class="w-[50px]"
|
|
||||||
><a
|
|
||||||
class="energieausweis-img"
|
|
||||||
href="/pdf/ansichtsausweis?uid={ausweis.id}"
|
|
||||||
target="_blank"
|
|
||||||
><img
|
|
||||||
src="/images/dashboard/ausweis.jpg"
|
|
||||||
alt="Energieausweis"
|
|
||||||
class="w-full h-8"
|
|
||||||
/></a
|
|
||||||
></td
|
|
||||||
>
|
|
||||||
<td title="Datenblatt anzeigen" width="50px"
|
|
||||||
><a
|
|
||||||
class="energieausweis-img"
|
|
||||||
href="/pdf/datenblatt?uid={ausweis.id}"
|
|
||||||
target="_blank"
|
|
||||||
><img
|
|
||||||
src="/images/dashboard/datenblatt.jpg"
|
|
||||||
alt="Datenblatt"
|
|
||||||
/></a
|
|
||||||
></td
|
|
||||||
>
|
|
||||||
<td
|
|
||||||
title="Ausweis stornieren und Zahlung wenn erforderlich automatisch zurückbuchen"
|
|
||||||
class="w-4 p-1"
|
|
||||||
><button
|
|
||||||
class="btn btn-xs btn-ghost"
|
|
||||||
on:click={() => stornieren(ausweis)}>S</button
|
|
||||||
></td
|
|
||||||
>
|
|
||||||
<td title="Ausweis ausstellen" class="w-4 p-1"
|
|
||||||
><button
|
|
||||||
class="btn btn-xs btn-ghost"
|
|
||||||
on:click={() => ausweisAusstellen(aufnahme.uid)}>A</button
|
|
||||||
></td
|
|
||||||
>
|
|
||||||
<td
|
|
||||||
title="Ausweis ausstellen und per Post verschicken"
|
|
||||||
class="w-4 p-1"
|
|
||||||
><button
|
|
||||||
class="btn btn-xs btn-ghost"
|
|
||||||
on:click={() => ausweisAusstellenPost(aufnahme.uid)}>P</button
|
|
||||||
></td
|
|
||||||
>
|
|
||||||
<td
|
|
||||||
title="E-Mail an Kunden schicken mit Erläuterungen warum der Ausweis noch nicht ausgestellt werden kann."
|
|
||||||
class="w-4 p-1"
|
|
||||||
><button
|
|
||||||
class="btn btn-xs btn-ghost"
|
|
||||||
on:click={() => ausweisnichtAusstellen(aufnahme.uid)}>N</button
|
|
||||||
></td
|
|
||||||
>
|
|
||||||
<td
|
|
||||||
title="Bestellbestätigung nochmal schicken (Zahlung nicht erfolgreich)"
|
|
||||||
class="w-4 p-1"
|
|
||||||
><button
|
|
||||||
class="btn btn-xs btn-ghost"
|
|
||||||
on:click={() => bestellBestaetigung(aufnahme.uid)}>B</button
|
|
||||||
></td
|
|
||||||
>
|
|
||||||
<td
|
|
||||||
title="E-Mail an Kunden schicken mit Erinnerung die Bestellung abzuschließen."
|
|
||||||
class="w-4 p-1"
|
|
||||||
><button
|
|
||||||
class="btn btn-xs btn-ghost"
|
|
||||||
on:click={() => erinnern(aufnahme.uid)}
|
|
||||||
>E</button
|
|
||||||
></td
|
|
||||||
>
|
|
||||||
<td
|
|
||||||
title="Zum Formular mit allen Eingabedaten."
|
|
||||||
class="w-4 p-1"
|
|
||||||
><a
|
|
||||||
class="btn btn-xs btn-ghost"
|
|
||||||
target="_blank"
|
|
||||||
href="/energieausweis-erstellen/gespeichert?id={aufnahme.uid}">F</a
|
|
||||||
></td
|
|
||||||
>
|
|
||||||
{#if aufnahme.kontrolldatei}
|
|
||||||
<td title="XML-Datei an das DiBT verschicken." class="w-4 p-1"><button class="btn btn-xs btn-ghost" on:click={() => {
|
|
||||||
xmlAbschicken(aufnahme.uid)
|
|
||||||
}}>X</button></td>
|
|
||||||
{/if}
|
|
||||||
{#if !ausweis.registriernummer}
|
|
||||||
<td title="Registriernummer vom DiBT anfordern." class="w-4 p-1"><button class="btn btn-xs btn-ghost" on:click={() => {
|
|
||||||
registriernummerAnfordern(ausweis.id)
|
|
||||||
}}>R</button></td>
|
|
||||||
{/if}
|
|
||||||
</tr>
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
|
|
||||||
<div class:hidden={!infoVisible} class:block={infoVisible} class="py-4 border-t">
|
|
||||||
<div class="grid grid-cols-[2fr_1fr] prose max-w-full">
|
|
||||||
<div class="border-r px-8">
|
|
||||||
<h3 class="mt-0">Wichtige Daten</h3>
|
|
||||||
<table>
|
|
||||||
<tbody>
|
|
||||||
<tr>
|
|
||||||
<td>Angewendete Berechnungsformel</td>
|
|
||||||
<td><strong>EnEV 2016</strong></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>Berechnungsergebnis</td>
|
|
||||||
<td>{calculations?.endEnergieVerbrauchGesamt}kWh/m2/A - Energieeffizienzklasse <strong>{calculations?.energieEffizienzKlasse}</strong></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>Informationen des Nutzers</td>
|
|
||||||
<td>{ausweis.boxpruefung}</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>UID</td>
|
|
||||||
<td><strong><pre>{ausweis.id}</pre></strong></td>
|
|
||||||
</tr>
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
</div>
|
|
||||||
<div class="px-8">
|
|
||||||
<h3 class="mt-0">Ereignisse</h3>
|
|
||||||
<ul class="timeline timeline-snap-icon max-md:timeline-compact timeline-vertical">
|
|
||||||
<li>
|
|
||||||
<div class="timeline-middle">
|
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" class="h-5 w-5"><path fill-rule="evenodd" d="M10 18a8 8 0 100-16 8 8 0 000 16zm3.857-9.809a.75.75 0 00-1.214-.882l-3.483 4.79-1.88-1.88a.75.75 0 10-1.06 1.061l2.5 2.5a.75.75 0 001.137-.089l4-5.5z" clip-rule="evenodd" /></svg>
|
|
||||||
</div>
|
|
||||||
<div class="timeline-start md:text-end mb-10">
|
|
||||||
<time class="font-mono italic">{moment(ausweis.erstellungsdatum).format("DD.MM.YYYY - HH:mm")} Uhr</time>
|
|
||||||
<div class="text-lg font-black">Ausweis erstellt</div>
|
|
||||||
</div>
|
|
||||||
<hr/>
|
|
||||||
</li>
|
|
||||||
{#each events as event, i}
|
|
||||||
<li>
|
|
||||||
<hr />
|
|
||||||
<div class="timeline-middle">
|
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" class="h-5 w-5"><path fill-rule="evenodd" d="M10 18a8 8 0 100-16 8 8 0 000 16zm3.857-9.809a.75.75 0 00-1.214-.882l-3.483 4.79-1.88-1.88a.75.75 0 10-1.06 1.061l2.5 2.5a.75.75 0 001.137-.089l4-5.5z" clip-rule="evenodd" /></svg>
|
|
||||||
</div>
|
|
||||||
<div class="mb-10" class:timeline-end={i % 2 == 0} class:timeline-start={i % 2 == 1}>
|
|
||||||
<time class="font-mono italic">{moment(event.date).format("DD.MM.YYYY - HH:mm")} Uhr</time>
|
|
||||||
<div class="text-lg font-black">{event.title}</div>
|
|
||||||
{event.description || ""}
|
|
||||||
</div>
|
|
||||||
<hr />
|
|
||||||
</li>
|
|
||||||
{/each}
|
|
||||||
{#if ausweis.erledigt}
|
|
||||||
<li>
|
|
||||||
<hr />
|
|
||||||
<div class="timeline-middle">
|
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" class="h-5 w-5"><path fill-rule="evenodd" d="M10 18a8 8 0 100-16 8 8 0 000 16zm3.857-9.809a.75.75 0 00-1.214-.882l-3.483 4.79-1.88-1.88a.75.75 0 10-1.06 1.061l2.5 2.5a.75.75 0 001.137-.089l4-5.5z" clip-rule="evenodd" /></svg>
|
|
||||||
</div>
|
|
||||||
<div class="mb-10 timeline-end">
|
|
||||||
<time class="font-mono italic">{moment(ausweis.ausstellungsdatum).format("DD.MM.YYYY - HH:mm")} Uhr</time>
|
|
||||||
<div class="text-lg font-black">Ausweis ausgestellt</div>
|
|
||||||
{ausweis.registriernummer ? `Registriernummer: ${ausweis.registriernummer}` : ""}
|
|
||||||
</div>
|
|
||||||
<hr />
|
|
||||||
</li>
|
|
||||||
{/if}
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<NotificationWrapper />
|
|
||||||
@@ -1,68 +0,0 @@
|
|||||||
<script lang="ts">
|
|
||||||
import { getZodBaseType } from "#client/lib/helpers.js";
|
|
||||||
import { filterAusweise } from "#lib/filters.js";
|
|
||||||
import { ZodTypeAny } from "astro:schema";
|
|
||||||
import { Cross1 } from "radix-svelte-icons";
|
|
||||||
import z, { ZodBoolean, ZodNativeEnum, ZodNumber } from "zod"
|
|
||||||
|
|
||||||
export let filters: { name: keyof z.infer<typeof filterAusweise>, type: ZodTypeAny, value: any }[] = []
|
|
||||||
</script>
|
|
||||||
|
|
||||||
{#each filters as filter, i}
|
|
||||||
{@const type = getZodBaseType(filter.type)}
|
|
||||||
<div class="flex flex-row bg-white gap-4 px-2 py-2 rounded-lg">
|
|
||||||
{#if i === 0}
|
|
||||||
<span class="badge">where</span>
|
|
||||||
{:else}
|
|
||||||
<span class="badge">and</span>
|
|
||||||
{/if}
|
|
||||||
<select on:change={function(e) {
|
|
||||||
delete filters[filter.name]
|
|
||||||
filter.name = e.target.value;
|
|
||||||
filter.type = filterAusweise._def.shape()[filter.name]
|
|
||||||
filters = filters.filter(Boolean);
|
|
||||||
}}>
|
|
||||||
<option value={filter.name} selected>{filter.name}</option>
|
|
||||||
{#each Object.keys(filterAusweise._def.shape()) as n}
|
|
||||||
{#if !filters.find(filter => filter.name === n)}
|
|
||||||
<option value={n}>{n}</option>
|
|
||||||
{/if}
|
|
||||||
{/each}
|
|
||||||
</select>
|
|
||||||
<span class="badge">equals</span>
|
|
||||||
{#if type instanceof ZodNumber}
|
|
||||||
<input type="number" bind:value={filter.value}>
|
|
||||||
{:else if type instanceof ZodBoolean}
|
|
||||||
<select bind:value={filter.value}>
|
|
||||||
<option value={true}>true</option>
|
|
||||||
<option value={false}>false</option>
|
|
||||||
</select>
|
|
||||||
{:else if type instanceof ZodNativeEnum}
|
|
||||||
<select bind:value={filter.value}>
|
|
||||||
{#each Object.entries(type._def.values) as [key, value]}
|
|
||||||
<option {value}>{key}</option>
|
|
||||||
{/each}
|
|
||||||
</select>
|
|
||||||
{:else}
|
|
||||||
<input type="text" bind:value={filter.value}>
|
|
||||||
{/if}
|
|
||||||
<Cross1 size={24} class="cursor-pointer"></Cross1>
|
|
||||||
</div>
|
|
||||||
{/each}
|
|
||||||
|
|
||||||
<button on:click={() => {
|
|
||||||
const entry = Object.entries(filterAusweise._def.shape())[0]
|
|
||||||
filters.push({
|
|
||||||
name: entry[0],
|
|
||||||
type: entry[1],
|
|
||||||
value: null
|
|
||||||
})
|
|
||||||
filters = filters
|
|
||||||
}}>Filter Hinzufügen</button>
|
|
||||||
|
|
||||||
|
|
||||||
<style>
|
|
||||||
.badge {
|
|
||||||
@apply rounded-lg px-2 py-1 bg-gray-500 text-white;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
File diff suppressed because it is too large
Load Diff
@@ -47,19 +47,6 @@
|
|||||||
<div class="text-sm text-center">Energieausweis</div>
|
<div class="text-sm text-center">Energieausweis</div>
|
||||||
</a>
|
</a>
|
||||||
{/if}
|
{/if}
|
||||||
{#if objekt.aufnahmen.at(-1)?.bedarfsausweise_wohnen.length}
|
|
||||||
{@const ausweis = objekt.aufnahmen.at(-1)?.bedarfsausweise_wohnen.at(-1)}
|
|
||||||
<a href="/pdf/ansichtsausweis?id={ausweis.id}" target="_blank">
|
|
||||||
<div class="inline-block border rounded-lg bg-white">
|
|
||||||
{#if ausweis?.ausgestellt}
|
|
||||||
<img src="/images/dashboard/AusweisHaken.svg" class="h-auto w-auto max-h-[150px] max-w-full object-contain p-1" alt="Energieausweis ausgestellt">
|
|
||||||
{:else}
|
|
||||||
<img src="/images/dashboard/AusweisKreuz.svg" class="h-auto w-auto max-h-[150px] max-w-full object-contain p-1" alt="Energieausweis ausgestellt">
|
|
||||||
{/if}
|
|
||||||
</div>
|
|
||||||
<div class="text-sm text-center">Energieausweis</div>
|
|
||||||
</a>
|
|
||||||
{/if}
|
|
||||||
</div>
|
</div>
|
||||||
<div class="flex flex-col gap-4">
|
<div class="flex flex-col gap-4">
|
||||||
{#each objekt.aufnahmen as aufnahme}
|
{#each objekt.aufnahmen as aufnahme}
|
||||||
|
|||||||
@@ -1,147 +1,235 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import { ripple } from "svelte-ripple-action";
|
import {
|
||||||
import type { RippleOptions } from "svelte-ripple-action/dist/constants.js";
|
Gear,
|
||||||
import { Reader, Bell, Gear, LockClosed, CaretDown } from "radix-svelte-icons"
|
LockClosed,
|
||||||
import NotificationProvider from "#components/NotificationProvider/NotificationProvider.svelte";
|
CaretDown,
|
||||||
import DashboardNotification from "./DashboardNotification.svelte";
|
MagnifyingGlass,
|
||||||
import { notifications } from "#components/NotificationProvider/shared.js";
|
} from "radix-svelte-icons";
|
||||||
import ThemeController from "#components/ThemeController.svelte";
|
import { Benutzer, Enums } from "#lib/client/prisma.js";
|
||||||
import { BenutzerClient, ObjektKomplettClient } from "#components/Ausweis/types.js";
|
|
||||||
|
|
||||||
export let lightTheme: boolean;
|
export let lightTheme: boolean;
|
||||||
export let benutzer: BenutzerClient;
|
export let benutzer: Benutzer;
|
||||||
|
export let besteller: Benutzer | null;
|
||||||
|
|
||||||
const rippleOptions: RippleOptions = {
|
let id: string;
|
||||||
center: false,
|
|
||||||
color: lightTheme ? "rgba(233,233,233,0.1)" : "rgba(113, 128, 150, 0.1)",
|
|
||||||
};
|
|
||||||
|
|
||||||
let headerOpen = false;
|
let dropdownOpen = false;
|
||||||
|
|
||||||
|
function toggleDropdown() {
|
||||||
|
dropdownOpen = !dropdownOpen;
|
||||||
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<aside class:hidden={!headerOpen} class="fixed left-0 top-16 w-full h-[calc(100%-4rem)] flex md:relative md:h-auto md:w-auto md:top-0 md:flex bg-base-200 border-r border-r-base-300 flex-col py-4">
|
<aside class="rounded-lg bg-white box px-6 py-5">
|
||||||
|
<div class="flex flex-row items-center">
|
||||||
<div class="flex flex-row items-center px-4">
|
|
||||||
|
|
||||||
<div class="flex flex-row mr-6">
|
<div class="flex flex-row mr-6">
|
||||||
<a href="/"><img src="/images/header/logo-IBC-big.svg" class="h-16" alt="IBCornelsen - Logo"/></a>
|
<a href="/"
|
||||||
|
><img
|
||||||
|
src="/images/header/logo-IBC-big.svg"
|
||||||
|
class="h-16"
|
||||||
|
alt="IBCornelsen - Logo"
|
||||||
|
/></a
|
||||||
|
>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="flex-col items-end">
|
<div class="flex-col items-end">
|
||||||
<div class="text-base-content font-semibold text-left flex"
|
<div class="text-base-content font-semibold text-left flex">
|
||||||
>{benutzer.vorname} {benutzer.name}</div>
|
{benutzer.vorname}
|
||||||
|
{benutzer.name}
|
||||||
|
</div>
|
||||||
<div class="text-base-content text-sm flex">{benutzer.email}</div>
|
<div class="text-base-content text-sm flex">{benutzer.email}</div>
|
||||||
|
{#if benutzer.rolle === Enums.BenutzerRolle.RESELLER}
|
||||||
|
<div class="text-xs text-gray-500 flex">Reseller</div>
|
||||||
|
{/if}
|
||||||
|
{#if benutzer.rolle === Enums.BenutzerRolle.ADMIN}
|
||||||
|
<div class="text-xs text-gray-500 flex">Admin</div>
|
||||||
|
{/if}
|
||||||
<a href="/auth/logout" class="text-xs">Logout</a>
|
<a href="/auth/logout" class="text-xs">Logout</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div class="flex flex-col gap-2 mt-0 md:mt-8 px-0">
|
<div class="flex flex-col gap-2 mt-0 md:mt-8 px-0">
|
||||||
<a use:ripple={rippleOptions} class="button-tab" href="/dashboard">
|
<!-- <a class="button-tab" href="/dashboard">
|
||||||
<Reader width={22} height={22} />
|
<Reader width={22} height={22} />
|
||||||
Vorgänge
|
Ausweise
|
||||||
</a>
|
</a> -->
|
||||||
<a use:ripple={rippleOptions} class="button-tab" href="/dashboard">
|
|
||||||
<Reader width={22} height={22} />
|
|
||||||
Inbox
|
|
||||||
</a>
|
|
||||||
|
|
||||||
<hr class="border-gray-600">
|
|
||||||
|
|
||||||
<!--
|
<div class="flex flex-row gap-2 mb-2">
|
||||||
<div class="text-base-content text-xl px-4 mt-4">Mitwirkende</div>
|
<input type="text" bind:value={id} placeholder="ID">
|
||||||
<div class="flex flex-col gap-4 px-4">
|
<button class="button" on:click={() => {
|
||||||
{#each [
|
window.location.href = `/dashboard/objekte/${id}`
|
||||||
{ name: "Max Mustermann", image: "/images/profile-placeholder.svg", profession: "Architekt" },
|
}}><MagnifyingGlass size={24}></MagnifyingGlass></button>
|
||||||
{ name: "Erika Musterfrau", image: "/images/profile-placeholder.svg", profession: "Ingenieurin" },
|
</div>
|
||||||
{ name: "Hans Beispiel", image: "/images/profile-placeholder.svg", profession: "Energieberater" },
|
|
||||||
{ name: "Anna Beispiel", image: "/images/profile-placeholder.svg", profession: "Bauleiterin" }
|
<div class="relative mb-4">
|
||||||
] as person}
|
<button class="button flex flex-row rounded-lg gap-2 bg-secondary text-white text-center" on:click={toggleDropdown}>
|
||||||
<div class="flex items-center gap-4">
|
Energieausweis erstellen +
|
||||||
<img src={person.image} alt={person.name} class="w-12 h-12 rounded-full object-cover" />
|
</button>
|
||||||
<div class="flex flex-col">
|
{#if dropdownOpen}
|
||||||
<span class="text-base-content font-medium">{person.name}</span>
|
<div class="absolute top-15 left-0 mt-2 w-50 rounded-md shadow-lg bg-white ring-1 ring-black ring-opacity-5 z-[9999]" on:click|stopPropagation on:keydown|stopPropagation on:keyup|stopPropagation>
|
||||||
<span class="text-sm text-gray-500">{person.profession}</span>
|
<div class="py-1 w-full" role="menu" aria-orientation="vertical" aria-labelledby="options-menu">
|
||||||
</div>
|
<a href="/energieausweis-erstellen/verbrauchsausweis-wohngebaeude" class="block px-4 py-2 text-sm text-gray-700 hover:bg-gray-100 w-full text-left" role="menuitem">Verbrauchsausweis<br>Wohnen Erstellen</a>
|
||||||
<button class="ml-auto btn btn-primary btn-sm">Chat</button>
|
<a href="/energieausweis-erstellen/verbrauchsausweis-gewerbe" class="block px-4 py-2 text-sm text-gray-700 hover:bg-gray-100 w-full text-left" role="menuitem">Verbrauchsausweis<br>Gewerbe Erstellen</a>
|
||||||
</div>
|
<a href="/energieausweis-erstellen/bedarfsausweis-wohngebaeude" class="block px-4 py-2 text-sm text-gray-700 hover:bg-gray-100 w-full text-left" role="menuitem">Bedarfsausweis<br>Wohnen Erstellen</a>
|
||||||
{/each}
|
</div>
|
||||||
</div>
|
</div>
|
||||||
-->
|
{/if}
|
||||||
|
{#if benutzer.rolle === Enums.BenutzerRolle.RESELLER}
|
||||||
<!-- <button use:ripple={rippleOptions} class="button-tab">
|
<a href="/dashboard/abrechnung" class="button ">Monatliche Abrechnung</a>
|
||||||
<EnvelopeClosed width={22} height={22} />
|
{/if}
|
||||||
Kontakt
|
</div>
|
||||||
</button>
|
|
||||||
<li><details class="[&_.caret]:open:rotate-180">
|
<hr class="border-gray-600" />
|
||||||
<summary class="button-tab w-full outline-0 hover:outline-0">
|
|
||||||
<Cube width={22} height={22} />
|
{#if besteller}
|
||||||
Services <CaretDown size={24} class="caret ml-auto transition-transform"></CaretDown></summary>
|
Besteller
|
||||||
<ul>
|
|
||||||
<li>
|
<div class="flex flex-row mb-4">
|
||||||
<button use:ripple={rippleOptions} class="button-tab">
|
<div class="item-center mr-4">
|
||||||
Kontakt
|
<img src="../../images/profile-placeholder.svg" alt="profile icon" width="40" height="40" />
|
||||||
</button>
|
</div>
|
||||||
</li>
|
<div>
|
||||||
<li>
|
<div>
|
||||||
<button use:ripple={rippleOptions} class="button-tab">
|
{besteller.vorname} {besteller.name}
|
||||||
Kontakt
|
</div>
|
||||||
</button>
|
<div class="text-xs text-gray-500">
|
||||||
</li>
|
Eigentümer oder im Auftrag
|
||||||
</ul>
|
</div>
|
||||||
</details></li> -->
|
<div class="text-xs text-gray-500">
|
||||||
{#if benutzer.rolle === "ADMIN"}
|
<!-- Soll für den Aussteller sichtbar sein -->
|
||||||
<li><details class="[&_.caret]:open:rotate-180" open>
|
Tel. 1: {besteller.telefon}<br>
|
||||||
<summary class="button-tab w-full outline-0 hover:outline-0 cursor-pointer">
|
<!-- Tel. 2: {rechnung.telefon} -->
|
||||||
<LockClosed width={22} height={22} />
|
</div>
|
||||||
Admin <CaretDown size={24} class="caret ml-auto transition-transform"></CaretDown></summary>
|
</div>
|
||||||
<ul>
|
</div>
|
||||||
<li>
|
<hr class="border-gray-600" />
|
||||||
<a use:ripple={rippleOptions} class="button-tab" href="/dashboard/admin/ausweise-pruefen">
|
|
||||||
Ausweise Prüfen
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a use:ripple={rippleOptions} class="button-tab" href="/dashboard/admin/impersonate-user">
|
|
||||||
Impersonate User
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</details></li>
|
|
||||||
{/if}
|
{/if}
|
||||||
</div>
|
|
||||||
<div class="mt-10 flex flex-col gap-4 px-8">
|
|
||||||
<div class="flex flex-row justify-between items-center">
|
<!--
|
||||||
<ThemeController bind:lightTheme></ThemeController>
|
Mitwirkende
|
||||||
<div class="dropdown dropdown-top">
|
|
||||||
<div class="indicator">
|
<div class="flex flex-row mb-1">
|
||||||
{#if Object.keys($notifications).length > 0}
|
<div class="item-center mr-4">
|
||||||
<span class="indicator-item badge badge-accent text-xs">{Object.keys($notifications).length}</span>
|
<img src="../../images/profile-placeholder.svg" alt="profile icon" width="40" height="40" />
|
||||||
{/if}
|
</div>
|
||||||
<button tabindex="0" class="hover:bg-gray-200 p-3 rounded-lg">
|
<div>
|
||||||
<Bell size={24} />
|
<div>
|
||||||
|
Ernie Energieberater
|
||||||
|
</div>
|
||||||
|
<div class="text-xs text-gray-500">
|
||||||
|
Energieberater
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="flex flex-row mb-1">
|
||||||
|
<div class="item-center mr-4">
|
||||||
|
<img src="../../images/profile-placeholder.svg" alt="profile icon" width="40" height="40" />
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<div>
|
||||||
|
Peter Planer
|
||||||
|
</div>
|
||||||
|
<div class="text-xs text-gray-500">
|
||||||
|
Architekt
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="flex flex-row mb-1">
|
||||||
|
<div class="item-center mr-4">
|
||||||
|
<img src="../../images/profile-placeholder.svg" alt="profile icon" width="40" height="40" />
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<div>
|
||||||
|
Hans Meier
|
||||||
|
</div>
|
||||||
|
<div class="text-xs text-gray-500">
|
||||||
|
Eigentümer
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<hr class="border-gray-600" />
|
||||||
|
|
||||||
|
Experten in der Nähe
|
||||||
|
|
||||||
|
<div class="flex flex-row mb-1">
|
||||||
|
<div class="item-center mr-4">
|
||||||
|
<img src="../../images/profile-placeholder.svg" alt="profile icon" width="40" height="40" />
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<div>
|
||||||
|
Thorsten Maas
|
||||||
|
</div>
|
||||||
|
<div class="text-xs text-gray-500">
|
||||||
|
Energieberater
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="flex flex-row mb-1">
|
||||||
|
<div class="item-center mr-4">
|
||||||
|
<img src="../../images/profile-placeholder.svg" alt="profile icon" width="40" height="40" />
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<div>
|
||||||
|
Herbert Holm
|
||||||
|
</div>
|
||||||
|
<div class="text-xs text-gray-500">
|
||||||
|
Gutachter
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<hr class="border-gray-600" />
|
||||||
|
|
||||||
|
<div class="flex justify-end mt-2 mb-2">
|
||||||
|
<button class="button flex flex-row rounded-lg gap-2 bg-secondary text-white text-center">
|
||||||
|
Einladen
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
<ul class="dropdown-content mb-2 border border-base-300 z-10 menu py-4 px-0 bg-base-200 rounded-box w-80">
|
-->
|
||||||
<NotificationProvider component={DashboardNotification} />
|
|
||||||
</ul>
|
{#if benutzer.rolle === "ADMIN"}
|
||||||
</div>
|
<li>
|
||||||
|
<details class="[&_.caret]:open:rotate-180" open>
|
||||||
<a href="/dashboard/einstellungen"
|
<summary
|
||||||
|
class="button-tab w-full outline-0 hover:outline-0 cursor-pointer"
|
||||||
|
>
|
||||||
|
<LockClosed size={22}/>
|
||||||
|
Admin <CaretDown
|
||||||
|
size={24}
|
||||||
|
class="caret ml-auto transition-transform"
|
||||||
|
></CaretDown></summary
|
||||||
|
>
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
<a
|
||||||
|
class="button-tab"
|
||||||
|
href="/dashboard/admin/impersonate-user"
|
||||||
|
>
|
||||||
|
Impersonate User
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</details>
|
||||||
|
</li>
|
||||||
|
{/if}
|
||||||
|
</div>
|
||||||
|
<div class="items-end bottom-4 right-4 z-50 mt-4">
|
||||||
|
<div class="flex flex-row justify-end items-end">
|
||||||
|
<a
|
||||||
|
href="/dashboard/einstellungen"
|
||||||
class="hover:bg-gray-200 p-3 rounded-lg"
|
class="hover:bg-gray-200 p-3 rounded-lg"
|
||||||
>
|
>
|
||||||
<Gear size={24} />
|
<Gear size={24} />
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="divider px-8"></div>
|
|
||||||
<a
|
|
||||||
href="/dashboard/einstellungen"
|
|
||||||
use:ripple={rippleOptions}
|
|
||||||
class="hover:bg-gray-200 no-animation focus:shadow-none justify-start py-4 h-auto px-8 rounded-none w-full flex flex-row gap-4"
|
|
||||||
>
|
|
||||||
|
|
||||||
</a>
|
|
||||||
</aside>
|
</aside>
|
||||||
|
|
||||||
<style>
|
<style>
|
||||||
|
|||||||
@@ -28,6 +28,12 @@ export function updateNotification(uid: string, updater: Partial<Notification>)
|
|||||||
value[uid] = { ...defaults, ...value[uid], ...updater } as Notification;
|
value[uid] = { ...defaults, ...value[uid], ...updater } as Notification;
|
||||||
return value;
|
return value;
|
||||||
})
|
})
|
||||||
|
|
||||||
|
if (updater.timeout) {
|
||||||
|
setTimeout(() => {
|
||||||
|
deleteNotification(uid);
|
||||||
|
}, updater.timeout);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export function addNotification(notification: Partial<Notification>): string {
|
export function addNotification(notification: Partial<Notification>): string {
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
export let hidden: boolean = true;
|
export let hidden: boolean = true;
|
||||||
export let closeable: boolean = true;
|
export let closeable: boolean = true;
|
||||||
import { disableBodyScroll, enableBodyScroll } from 'body-scroll-lock';
|
import { disableBodyScroll, enableBodyScroll } from 'body-scroll-lock';
|
||||||
|
import { Cross1 } from 'radix-svelte-icons';
|
||||||
|
|
||||||
$: if (globalThis.window) {
|
$: if (globalThis.window) {
|
||||||
if (hidden) {
|
if (hidden) {
|
||||||
@@ -12,13 +13,11 @@
|
|||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<div class="fixed top-0 left-0 w-[100vw] h-[100vh] flex items-center justify-center bg-[rgba(0,0,0,0.8)] z-50" class:hidden={hidden} on:click|self={() => {
|
<div class="fixed top-0 left-0 w-[100vw] h-[100vh] flex items-center justify-center bg-[rgba(0,0,0,0.8)] z-50" class:hidden={hidden}>
|
||||||
hidden = closeable ? true : hidden;
|
|
||||||
}}>
|
|
||||||
{#if closeable}
|
{#if closeable}
|
||||||
<button class="absolute top-4 left-4 text-white" on:click={() => {
|
<button class="absolute top-4 right-4 text-white bg-gray-50 bg-opacity-25 px-4 py-2 rounded-lg" type="button" on:click={() => {
|
||||||
hidden = true;
|
hidden = true;
|
||||||
}}>Schließen</button>
|
}}><Cross1 size={20}></Cross1></button>
|
||||||
{/if}
|
{/if}
|
||||||
<slot></slot>
|
<slot></slot>
|
||||||
</div>
|
</div>
|
||||||
@@ -2,9 +2,10 @@
|
|||||||
import { dialogs } from "svelte-dialogs";
|
import { dialogs } from "svelte-dialogs";
|
||||||
import TicketPopup from "./TicketPopup.svelte";
|
import TicketPopup from "./TicketPopup.svelte";
|
||||||
import { addNotification } from "@ibcornelsen/ui";
|
import { addNotification } from "@ibcornelsen/ui";
|
||||||
|
export let userEmail: string = "";
|
||||||
|
|
||||||
async function showTicketPopup() {
|
async function showTicketPopup() {
|
||||||
const success = await dialogs.modal(TicketPopup);
|
const success = await dialogs.modal(TicketPopup, { email: userEmail });
|
||||||
|
|
||||||
console.log(success);
|
console.log(success);
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import { api } from "astro-typesafe-api/client";
|
import { api } from "astro-typesafe-api/client";
|
||||||
import { getClose } from "svelte-dialogs";
|
import { getClose } from "svelte-dialogs";
|
||||||
|
export let email: string = "";
|
||||||
|
|
||||||
const close = getClose();
|
const close = getClose();
|
||||||
|
|
||||||
@@ -12,7 +13,7 @@
|
|||||||
email: email,
|
email: email,
|
||||||
metadata: {
|
metadata: {
|
||||||
category: category,
|
category: category,
|
||||||
phone: phone,
|
telefon: telefon,
|
||||||
},
|
},
|
||||||
titel: title,
|
titel: title,
|
||||||
})
|
})
|
||||||
@@ -27,8 +28,8 @@
|
|||||||
let category = "";
|
let category = "";
|
||||||
let title = "";
|
let title = "";
|
||||||
let description = "";
|
let description = "";
|
||||||
let email = "";
|
//let email = "";
|
||||||
let phone = "";
|
let telefon = "";
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<form class="max-w-lg" on:submit={createTicket}>
|
<form class="max-w-lg" on:submit={createTicket}>
|
||||||
@@ -89,9 +90,9 @@
|
|||||||
<input
|
<input
|
||||||
class="input input-bordered"
|
class="input input-bordered"
|
||||||
type="tel"
|
type="tel"
|
||||||
placeholder="Ihre Telefonnumer"
|
placeholder="Ihre Telefonnummer"
|
||||||
name="phone"
|
name="telefon"
|
||||||
bind:value={phone}
|
bind:value={telefon}
|
||||||
required
|
required
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -1,7 +1,9 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import HelpLabel from "#components/labels/HelpLabel.svelte";
|
import HelpLabel from "#components/labels/HelpLabel.svelte";
|
||||||
import type { Enums } from "#lib/client/prisma.js";
|
import type { Enums } from "#lib/client/prisma.js";
|
||||||
|
import Cookies from "js-cookie";
|
||||||
import { tryCatch } from "#lib/tryCatch.js";
|
import { tryCatch } from "#lib/tryCatch.js";
|
||||||
|
import heic2any from "heic2any";
|
||||||
|
|
||||||
export let max: number = 2;
|
export let max: number = 2;
|
||||||
export let min: number = 1;
|
export let min: number = 1;
|
||||||
@@ -17,6 +19,7 @@
|
|||||||
} from "./Ausweis/types.js";
|
} from "./Ausweis/types.js";
|
||||||
import { api } from "astro-typesafe-api/client";
|
import { api } from "astro-typesafe-api/client";
|
||||||
import { addNotification } from "./Notifications/shared.js";
|
import { addNotification } from "./Notifications/shared.js";
|
||||||
|
import { API_ACCESS_TOKEN_COOKIE_NAME } from "#lib/constants.js";
|
||||||
|
|
||||||
export let images: BildClient[] = [];
|
export let images: BildClient[] = [];
|
||||||
export let ausweis:
|
export let ausweis:
|
||||||
@@ -36,8 +39,10 @@
|
|||||||
|
|
||||||
for (let i = 0; i < files.length; i++) {
|
for (let i = 0; i < files.length; i++) {
|
||||||
const file = files[i];
|
const file = files[i];
|
||||||
|
console.log(file);
|
||||||
|
|
||||||
|
|
||||||
if (file.type !== "image/jpeg" && file.type !== "image/png") {
|
if (file.type !== "image/jpeg" && file.type !== "image/png" && file.type !== "image/webp" && file.type !== "image/heif" && file.type !== "image/heic") {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -47,7 +52,7 @@
|
|||||||
|
|
||||||
const reader = new FileReader();
|
const reader = new FileReader();
|
||||||
|
|
||||||
reader.onload = () => {
|
reader.onload = async () => {
|
||||||
if (reader.readyState != reader.DONE) {
|
if (reader.readyState != reader.DONE) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -57,6 +62,18 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
let blob = new Blob([reader.result as ArrayBuffer]);
|
let blob = new Blob([reader.result as ArrayBuffer]);
|
||||||
|
|
||||||
|
if (file.type === "image/heif" || file.type === "image/heic") {
|
||||||
|
// Heic files are not supported by canvas, so we convert them to jpeg first
|
||||||
|
// using an external library.
|
||||||
|
// This is a workaround until all browsers support heic natively.
|
||||||
|
// For more information see: https://caniuse.com/?search=heic
|
||||||
|
// and https://developer.apple.com/documentation/imageio/reading_heif_and_heic_images_on_ios
|
||||||
|
// and https://stackoverflow.com/questions/65887402/how-to-convert-heic-to-jpeg-in-javascript
|
||||||
|
// and https://github.com/mbitsnbites/heic2any
|
||||||
|
blob = await heic2any({ blob, toType: "image/jpeg", quality: 0.8 });
|
||||||
|
}
|
||||||
|
|
||||||
let url = URL.createObjectURL(blob);
|
let url = URL.createObjectURL(blob);
|
||||||
let image = new Image();
|
let image = new Image();
|
||||||
image.onload = async () => {
|
image.onload = async () => {
|
||||||
@@ -85,6 +102,12 @@
|
|||||||
data: dataURL,
|
data: dataURL,
|
||||||
kategorie,
|
kategorie,
|
||||||
name: file.name
|
name: file.name
|
||||||
|
}, {
|
||||||
|
headers: {
|
||||||
|
"Authorization": `Bearer ${Cookies.get(
|
||||||
|
API_ACCESS_TOKEN_COOKIE_NAME
|
||||||
|
)}`
|
||||||
|
}
|
||||||
}))
|
}))
|
||||||
|
|
||||||
if (error) {
|
if (error) {
|
||||||
@@ -128,6 +151,7 @@
|
|||||||
<div class="input-standard">
|
<div class="input-standard">
|
||||||
<input
|
<input
|
||||||
type="file"
|
type="file"
|
||||||
|
accept="image/*"
|
||||||
class="file-input file-input-ghost h-[38px]"
|
class="file-input file-input-ghost h-[38px]"
|
||||||
bind:this={fileUpload}
|
bind:this={fileUpload}
|
||||||
{name}
|
{name}
|
||||||
@@ -144,6 +168,7 @@
|
|||||||
<div class="input-standard">
|
<div class="input-standard">
|
||||||
<input
|
<input
|
||||||
type="file"
|
type="file"
|
||||||
|
accept="image/*"
|
||||||
class="file-input file-input-ghost h-[38px]"
|
class="file-input file-input-ghost h-[38px]"
|
||||||
bind:this={fileUpload}
|
bind:this={fileUpload}
|
||||||
{name}
|
{name}
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ export async function auditEndEnergie(ausweis: VerbrauchsausweisWohnenClient | V
|
|||||||
if (aufnahme){
|
if (aufnahme){
|
||||||
if (aufnahme.flaeche && ausweis.verbrauch_1 && ausweis.verbrauch_2 && ausweis.verbrauch_3) {
|
if (aufnahme.flaeche && ausweis.verbrauch_1 && ausweis.verbrauch_2 && ausweis.verbrauch_3) {
|
||||||
try {
|
try {
|
||||||
const response = await getKlimafaktoren(ausweis.startdatum, objekt.plz);
|
const response = await getKlimafaktoren(ausweis.startdatum as Date, objekt.plz as string);
|
||||||
// Alle Klimfaktoren konnten abgefragt werden.
|
// Alle Klimfaktoren konnten abgefragt werden.
|
||||||
const eevva = await endEnergieVerbrauchVerbrauchsausweis_2016(ausweis, aufnahme, objekt);
|
const eevva = await endEnergieVerbrauchVerbrauchsausweis_2016(ausweis, aufnahme, objekt);
|
||||||
if (eevva){
|
if (eevva){
|
||||||
|
|||||||
@@ -1,90 +1,179 @@
|
|||||||
<script>
|
<script>
|
||||||
import { PRICES } from "#lib/constants";
|
import { PRICES } from "#lib/constants";
|
||||||
export let bullets;
|
|
||||||
export let title;
|
|
||||||
export let ref = "";
|
|
||||||
import { Enums } from "#lib/client/prisma";
|
import { Enums } from "#lib/client/prisma";
|
||||||
|
export let ref = "";
|
||||||
bullets = [
|
|
||||||
["Prüfung durch Dipl. Ing.<br>Registrierung beim DiBt<br>rechtssicher nach GEG",true, true, true],
|
const bullets = [
|
||||||
["Originalausweis als PDF per <span class='text-nowrap'>E-Mail</span><br>Originalausweis per Post (zubuchbar)",true, true, true],
|
[
|
||||||
["Bearbeitung innerhalb 24 Stunden<br>Selbsteingabe",true, true, false],
|
"Prüfung durch Dipl. Ing.<br>Registrierung beim DiBt<br>rechtssicher nach GEG",
|
||||||
["Same day service (zubuchbar)",true, true, false],
|
true,
|
||||||
["Fotoupload",true, true, true],
|
true,
|
||||||
["automatische Vorprüfung<br>Live Vorschau direkt bei Eingabe<br>Live Vorschauausweis vorab<br>Vorschauausweis per E-Mail<br>dynamische Eingabehilfe",true, true, false],
|
true,
|
||||||
["Prüfanmerkungen per <span class='text-nowrap'>E-Mail</span>",true, true, false],
|
],
|
||||||
["persönlicher Support",false, true, true],
|
[
|
||||||
["telefonische Beratung<br>persönlicher Energieberater",false, true, true],
|
"Originalausweis als PDF per <span class='text-nowrap'>E-Mail</span><br>Originalausweis per Post (zubuchbar)",
|
||||||
["Dokumentenupload (Pläne, Bauunterlagen)",false, false, true],
|
true,
|
||||||
["Eingabe durch Dipl. Ing.",false, false, true],]
|
true,
|
||||||
|
true,
|
||||||
|
],
|
||||||
</script>
|
[
|
||||||
|
"Bearbeitung innerhalb 24 Stunden<br>Selbsteingabe",
|
||||||
<h1>Produktübersicht: <span class="text-secondary">Bedarfsausweis Wohngebäude</span></h1>
|
true,
|
||||||
<h3>Bedarfsausweis Leistungen und Preise in der Übersicht:</h3>
|
true,
|
||||||
|
false,
|
||||||
<hr>
|
],
|
||||||
<br>
|
["Same day service (zubuchbar)", true, true, false],
|
||||||
|
["Fotoupload", true, true, true],
|
||||||
<div id="ProduktUebersichtBedarfssausweisWohnen">
|
[
|
||||||
|
"automatische Vorprüfung<br>Live Vorschau direkt bei Eingabe<br>Live Vorschauausweis vorab<br>Vorschauausweis per E-Mail<br>dynamische Eingabehilfe",
|
||||||
<div class="w-full sm:w-[90%] sm:mx-auto grid grid-cols-[1fr_max-content_max-content_max-content] sm:grid-cols-[1fr_min-content_min-content_min-content]">
|
true,
|
||||||
|
true,
|
||||||
<div class="zeile grid grid-cols-subgrid col-span-4 py-4 border-b-[1px] justify-items-center items-center sm:text-[1.25rem]">
|
false,
|
||||||
<div class="justify-self-start pl-2"><b>Leistung</b></div><div><b>online</b></div><div><b>premium</b></div><div><b>offline</b></div>
|
],
|
||||||
</div>
|
[
|
||||||
|
"Prüfanmerkungen per <span class='text-nowrap'>E-Mail</span>",
|
||||||
{#each bullets as [bullet,online,premium,offline]}
|
true,
|
||||||
<div class="bullet grid grid-cols-subgrid col-span-4 py-4 border-b-[1px] justify-items-center items-center">
|
true,
|
||||||
<div class="justify-self-start pl-2">{@html bullet}</div>
|
false,
|
||||||
<div class:check={online} class:check-no={!online}>{online ? "✔" : "⁃"}</div>
|
],
|
||||||
<div class:check={premium} class:check-no={!premium}>{premium ? "✔" : "⁃"}</div>
|
["persönlicher Support", false, true, true],
|
||||||
<div class:check={offline} class:check-no={!offline}>{offline ? "✔" : "⁃"}</div>
|
[
|
||||||
</div>
|
"telefonische Beratung<br>persönlicher Energieberater",
|
||||||
{/each}
|
false,
|
||||||
|
true,
|
||||||
<div class="zeile grid grid-cols-subgrid col-span-4 py-4 border-b-[0px] justify-items-center items-center sm:text-[1.25rem]">
|
true,
|
||||||
<div class="price justify-self-start pl-2">Preis inkl. MwSt.</div>
|
],
|
||||||
<div class="price"><b>{PRICES.BedarfsausweisWohnen[Enums.AusweisTyp.Standard]} €</b></div>
|
["Dokumentenupload (Pläne, Bauunterlagen)", false, false, true],
|
||||||
<div class="price"><b>{PRICES.BedarfsausweisWohnen[Enums.AusweisTyp.Beratung]} €</b></div>
|
["Eingabe durch Dipl. Ing.", false, false, true],
|
||||||
<div class="price"><b>{PRICES.BedarfsausweisWohnen[Enums.AusweisTyp.Offline]} €</b></div>
|
];
|
||||||
</div>
|
</script>
|
||||||
|
|
||||||
<div class="zeile grid grid-cols-subgrid col-span-4 py-4 border-b-[0px] justify-items-center items-center">
|
<h1>
|
||||||
<div class="justify-self-start pl-2"></div>
|
Produktübersicht: <span class="text-secondary"
|
||||||
<a href="{ref}/energieausweis-erstellen/bedarfsausweis-wohngebaeude?ausweistyp={Enums.AusweisTyp.Standard}"><button class="bestellbutton" type="button">sofort<br>bestellen</button></a>
|
>Bedarfsausweis Wohngebäude</span
|
||||||
<a href="{ref}/energieausweis-erstellen/bedarfsausweis-wohngebaeude?ausweistyp={Enums.AusweisTyp.Beratung}"><button class="bestellbutton" type="button">sofort<br>bestellen</button></a>
|
>
|
||||||
<a href="{ref}/energieausweis-erstellen/bedarfsausweis-wohngebaeude?ausweistyp={Enums.AusweisTyp.Offline}"><button class="bestellbutton" type="button">sofort<br>bestellen</button></a>
|
</h1>
|
||||||
</div>
|
<h3>Bedarfsausweis Leistungen und Preise in der Übersicht:</h3>
|
||||||
|
|
||||||
</div>
|
<hr />
|
||||||
|
<br />
|
||||||
|
|
||||||
|
<div id="ProduktUebersichtBedarfssausweisWohnen">
|
||||||
</div>
|
<div
|
||||||
|
class="w-full sm:w-[90%] sm:mx-auto grid grid-cols-[1fr_max-content_max-content_max-content] sm:grid-cols-[1fr_min-content_min-content_min-content]"
|
||||||
<style lang="postcss">
|
>
|
||||||
|
<div
|
||||||
.bestellbutton{@apply px-[2px] sm:px-4 mx-[2px] sm:mx-2 py-2 bg-secondary ring-2 ring-secondary/25 rounded-none xs:rounded-md text-white text-nowrap font-bold
|
class="zeile grid grid-cols-subgrid col-span-4 py-4 border-b-[1px] justify-items-center items-center sm:text-[1.25rem]"
|
||||||
hover:bg-gradient-to-br from-secondary to-secondary-grad hover:shadow-lg transition-all hover:no-underline hover:ring-2 hover:ring-primary;}
|
>
|
||||||
|
<div class="justify-self-start pl-2"><b>Leistung</b></div>
|
||||||
|
<div><b>online</b></div>
|
||||||
|
<div><b>premium</b></div>
|
||||||
|
<div><b>offline</b></div>
|
||||||
.zeile{@apply text-[0.6rem] sm:text-[1rem] md:text-[1.5rem]}
|
</div>
|
||||||
.bullet{@apply text-[0.75rem] sm:text-[1rem] md:text-[1.25rem]}
|
|
||||||
.bullet:nth-child(even){@apply bg-blue-100/40}
|
{#each bullets as [bullet, online, premium, offline]}
|
||||||
.bullet:nth-child(2){@apply !border-t-[6px]}
|
<div
|
||||||
.bullet:nth-child(12){@apply !border-b-[6px]}
|
class="bullet grid grid-cols-subgrid col-span-4 py-4 border-b-[1px] justify-items-center items-center"
|
||||||
|
>
|
||||||
.check {
|
<div class="justify-self-start pl-2">{@html bullet}</div>
|
||||||
@apply text-[1.25rem] sm:text-[1.5rem] font-bold text-green-700;
|
<div class:check={online} class:check-no={!online}>
|
||||||
}
|
{online ? "✔" : "⁃"}
|
||||||
.check-no {
|
</div>
|
||||||
@apply text-[1.25rem] sm:text-[1.5rem] font-bold text-black;
|
<div class:check={premium} class:check-no={!premium}>
|
||||||
}
|
{premium ? "✔" : "⁃"}
|
||||||
|
</div>
|
||||||
.price{@apply text-[1.25rem] sm:text-[2rem]}
|
<div class:check={offline} class:check-no={!offline}>
|
||||||
|
{offline ? "✔" : "⁃"}
|
||||||
</style>
|
</div>
|
||||||
|
</div>
|
||||||
|
{/each}
|
||||||
|
|
||||||
|
<div
|
||||||
|
class="zeile grid grid-cols-subgrid col-span-4 py-4 border-b-[0px] justify-items-center items-center sm:text-[1.25rem]"
|
||||||
|
>
|
||||||
|
<div class="price justify-self-start pl-2">Preis inkl. MwSt.</div>
|
||||||
|
<div class="price">
|
||||||
|
<b
|
||||||
|
>{PRICES.BedarfsausweisWohnen[
|
||||||
|
Enums.AusweisTyp.Standard
|
||||||
|
]} €</b
|
||||||
|
>
|
||||||
|
</div>
|
||||||
|
<div class="price">
|
||||||
|
<b
|
||||||
|
>{PRICES.BedarfsausweisWohnen[
|
||||||
|
Enums.AusweisTyp.Beratung
|
||||||
|
]} €</b
|
||||||
|
>
|
||||||
|
</div>
|
||||||
|
<div class="price">
|
||||||
|
<b
|
||||||
|
>{PRICES.BedarfsausweisWohnen[
|
||||||
|
Enums.AusweisTyp.Offline
|
||||||
|
]} €</b
|
||||||
|
>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div
|
||||||
|
class="zeile grid grid-cols-subgrid col-span-4 py-4 border-b-[0px] justify-items-center items-center"
|
||||||
|
>
|
||||||
|
<div class="justify-self-start pl-2"></div>
|
||||||
|
<a
|
||||||
|
href="{ref}/energieausweis-erstellen/bedarfsausweis-wohngebaeude?ausweistyp={Enums
|
||||||
|
.AusweisTyp.Standard}"
|
||||||
|
><button class="bestellbutton" type="button"
|
||||||
|
>sofort<br />bestellen</button
|
||||||
|
></a
|
||||||
|
>
|
||||||
|
<a
|
||||||
|
href="{ref}/energieausweis-erstellen/bedarfsausweis-wohngebaeude?ausweistyp={Enums
|
||||||
|
.AusweisTyp.Beratung}"
|
||||||
|
><button class="bestellbutton" type="button"
|
||||||
|
>sofort<br />bestellen</button
|
||||||
|
></a
|
||||||
|
>
|
||||||
|
<a
|
||||||
|
href="{ref}/energieausweis-erstellen/bedarfsausweis-wohngebaeude?ausweistyp={Enums
|
||||||
|
.AusweisTyp.Offline}"
|
||||||
|
><button class="bestellbutton" type="button"
|
||||||
|
>sofort<br />bestellen</button
|
||||||
|
></a
|
||||||
|
>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<style lang="postcss">
|
||||||
|
.bestellbutton {
|
||||||
|
@apply px-[2px] sm:px-4 mx-[2px] sm:mx-2 py-2 bg-secondary ring-2 ring-secondary/25 rounded-none xs:rounded-md text-white text-nowrap font-bold
|
||||||
|
hover:bg-gradient-to-br from-secondary to-secondary-grad hover:shadow-lg transition-all hover:no-underline hover:ring-2 hover:ring-primary;
|
||||||
|
}
|
||||||
|
|
||||||
|
.zeile {
|
||||||
|
@apply text-[0.6rem] sm:text-[1rem] md:text-[1.5rem];
|
||||||
|
}
|
||||||
|
.bullet {
|
||||||
|
@apply text-[0.75rem] sm:text-[1rem] md:text-[1.25rem];
|
||||||
|
}
|
||||||
|
.bullet:nth-child(even) {
|
||||||
|
@apply bg-blue-100/40;
|
||||||
|
}
|
||||||
|
.bullet:nth-child(2) {
|
||||||
|
@apply !border-t-[6px];
|
||||||
|
}
|
||||||
|
.bullet:nth-child(12) {
|
||||||
|
@apply !border-b-[6px];
|
||||||
|
}
|
||||||
|
|
||||||
|
.check {
|
||||||
|
@apply text-[1.25rem] sm:text-[1.5rem] font-bold text-green-700;
|
||||||
|
}
|
||||||
|
.check-no {
|
||||||
|
@apply text-[1.25rem] sm:text-[1.5rem] font-bold text-black;
|
||||||
|
}
|
||||||
|
|
||||||
|
.price {
|
||||||
|
@apply text-[1.25rem] sm:text-[2rem];
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|||||||
@@ -1,89 +1,179 @@
|
|||||||
<script>
|
<script>
|
||||||
import { PRICES } from "#lib/constants";
|
import { PRICES } from "#lib/constants";
|
||||||
import { Enums } from "#lib/client/prisma";
|
import { Enums } from "#lib/client/prisma";
|
||||||
export let ref = "";
|
export let ref = "";
|
||||||
|
|
||||||
const bullets = [
|
const bullets = [
|
||||||
["Prüfung durch Dipl. Ing.<br>Registrierung beim DiBt<br>rechtssicher nach GEG",true, true, true],
|
[
|
||||||
["Originalausweis als PDF per <span class='text-nowrap'>E-Mail</span><br>Originalausweis per Post (zubuchbar)",true, true, true],
|
"Prüfung durch Dipl. Ing.<br>Registrierung beim DiBt<br>rechtssicher nach GEG",
|
||||||
["Bearbeitung innerhalb 24 Stunden<br>Selbsteingabe",true, true, false],
|
true,
|
||||||
["Same day service (zubuchbar)",true, true, false],
|
true,
|
||||||
["Fotoupload",true, true, true],
|
true,
|
||||||
["automatische Vorprüfung<br>Live Vorschau direkt bei Eingabe<br>Live Vorschauausweis vorab<br>Vorschauausweis per E-Mail<br>dynamische Eingabehilfe",true, true, false],
|
],
|
||||||
["Prüfanmerkungen per <span class='text-nowrap'>E-Mail</span>",true, true, false],
|
[
|
||||||
["persönlicher Support",false, true, true],
|
"Originalausweis als PDF per <span class='text-nowrap'>E-Mail</span><br>Originalausweis per Post (zubuchbar)",
|
||||||
["telefonische Beratung<br>persönlicher Energieberater",false, true, true],
|
true,
|
||||||
["Dokumentenupload (Verbrauchsabrechnungen)",false, false, true],
|
true,
|
||||||
["Eingabe durch Dipl. Ing.",false, false, true],
|
true,
|
||||||
]
|
],
|
||||||
|
[
|
||||||
|
"Bearbeitung innerhalb 24 Stunden<br>Selbsteingabe",
|
||||||
</script>
|
true,
|
||||||
|
true,
|
||||||
<h1>Produktübersicht: <span class="text-secondary">Verbrauchsausweis Gewerbegebäude</span></h1>
|
false,
|
||||||
<h3>Verbrauchsausweis Leistungen und Preise in der Übersicht:</h3>
|
],
|
||||||
|
["Same day service (zubuchbar)", true, true, false],
|
||||||
<hr>
|
["Fotoupload", true, true, true],
|
||||||
<br>
|
[
|
||||||
|
"automatische Vorprüfung<br>Live Vorschau direkt bei Eingabe<br>Live Vorschauausweis vorab<br>Vorschauausweis per E-Mail<br>dynamische Eingabehilfe",
|
||||||
<div id="ProduktUebersichtVerbrauchsausweisGewerbe">
|
true,
|
||||||
|
true,
|
||||||
<div class="w-full sm:w-[90%] sm:mx-auto grid grid-cols-[1fr_max-content_max-content_max-content] sm:grid-cols-[1fr_min-content_min-content_min-content]">
|
false,
|
||||||
|
],
|
||||||
<div class="zeile grid grid-cols-subgrid col-span-4 py-4 border-b-[1px] justify-items-center items-center sm:text-[1.25rem]">
|
[
|
||||||
<div class="justify-self-start pl-2"><b>Leistung</b></div><div><b>online</b></div><div><b>premium</b></div><div><b>offline</b></div>
|
"Prüfanmerkungen per <span class='text-nowrap'>E-Mail</span>",
|
||||||
</div>
|
true,
|
||||||
|
true,
|
||||||
{#each bullets as [bullet,online,premium,offline]}
|
false,
|
||||||
<div class="bullet grid grid-cols-subgrid col-span-4 py-4 border-b-[1px] justify-items-center items-center">
|
],
|
||||||
<div class="justify-self-start pl-2">{@html bullet}</div>
|
["persönlicher Support", false, true, true],
|
||||||
<div class:check={online} class:check-no={!online}>{online ? "✔" : "⁃"}</div>
|
[
|
||||||
<div class:check={premium} class:check-no={!premium}>{premium ? "✔" : "⁃"}</div>
|
"telefonische Beratung<br>persönlicher Energieberater",
|
||||||
<div class:check={offline} class:check-no={!offline}>{offline ? "✔" : "⁃"}</div>
|
false,
|
||||||
</div>
|
true,
|
||||||
{/each}
|
true,
|
||||||
|
],
|
||||||
<div class="zeile grid grid-cols-subgrid col-span-4 py-4 border-b-[0px] justify-items-center items-center sm:text-[1.25rem]">
|
["Dokumentenupload (Verbrauchsabrechnungen)", false, false, true],
|
||||||
<div class="price justify-self-start pl-2">Preis inkl. MwSt.</div>
|
["Eingabe durch Dipl. Ing.", false, false, true],
|
||||||
<div class="price"><b>{PRICES.VerbrauchsausweisGewerbe[Enums.AusweisTyp.Standard]} €</b></div>
|
];
|
||||||
<div class="price"><b>{PRICES.VerbrauchsausweisGewerbe[Enums.AusweisTyp.Beratung]} €</b></div>
|
</script>
|
||||||
<div class="price"><b>{PRICES.VerbrauchsausweisGewerbe[Enums.AusweisTyp.Offline]} €</b></div>
|
|
||||||
</div>
|
<h1>
|
||||||
|
Produktübersicht: <span class="text-secondary"
|
||||||
<div class="zeile grid grid-cols-subgrid col-span-4 py-4 border-b-[0px] justify-items-center items-center">
|
>Verbrauchsausweis Gewerbegebäude</span
|
||||||
<div class="justify-self-start pl-2"></div>
|
>
|
||||||
<a href="{ref}/energieausweis-erstellen/verbrauchsausweis-gewerbe?ausweistyp={Enums.AusweisTyp.Standard}"><button class="bestellbutton" type="button">sofort<br>bestellen</button></a>
|
</h1>
|
||||||
<a href="{ref}/energieausweis-erstellen/verbrauchsausweis-gewerbe?ausweistyp={Enums.AusweisTyp.Beratung}"><button class="bestellbutton" type="button">sofort<br>bestellen</button></a>
|
<h3>Verbrauchsausweis Leistungen und Preise in der Übersicht:</h3>
|
||||||
<a href="{ref}/energieausweis-erstellen/verbrauchsausweis-gewerbe?ausweistyp={Enums.AusweisTyp.Offline}"><button class="bestellbutton" type="button">sofort<br>bestellen</button></a>
|
|
||||||
</div>
|
<hr />
|
||||||
|
<br />
|
||||||
</div>
|
|
||||||
|
<div id="ProduktUebersichtVerbrauchsausweisGewerbe">
|
||||||
|
<div
|
||||||
|
class="w-full sm:w-[90%] sm:mx-auto grid grid-cols-[1fr_max-content_max-content_max-content] sm:grid-cols-[1fr_min-content_min-content_min-content]"
|
||||||
</div>
|
>
|
||||||
|
<div
|
||||||
<style lang="postcss">
|
class="zeile grid grid-cols-subgrid col-span-4 py-4 border-b-[1px] justify-items-center items-center sm:text-[1.25rem]"
|
||||||
|
>
|
||||||
.bestellbutton{@apply px-[2px] sm:px-4 mx-[2px] sm:mx-2 py-2 bg-secondary ring-2 ring-secondary/25 rounded-none xs:rounded-md text-white text-nowrap font-bold
|
<div class="justify-self-start pl-2"><b>Leistung</b></div>
|
||||||
hover:bg-gradient-to-br from-secondary to-secondary-grad hover:shadow-lg transition-all hover:no-underline hover:ring-2 hover:ring-primary;}
|
<div><b>online</b></div>
|
||||||
|
<div><b>premium</b></div>
|
||||||
|
<div><b>offline</b></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
.zeile{@apply text-[0.6rem] sm:text-[1rem] md:text-[1.5rem]}
|
{#each bullets as [bullet, online, premium, offline]}
|
||||||
.bullet{@apply text-[0.75rem] sm:text-[1rem] md:text-[1.25rem]}
|
<div
|
||||||
.bullet:nth-child(even){@apply bg-blue-100/40}
|
class="bullet grid grid-cols-subgrid col-span-4 py-4 border-b-[1px] justify-items-center items-center"
|
||||||
.bullet:nth-child(2){@apply !border-t-[6px]}
|
>
|
||||||
.bullet:nth-child(12){@apply !border-b-[6px]}
|
<div class="justify-self-start pl-2">{@html bullet}</div>
|
||||||
|
<div class:check={online} class:check-no={!online}>
|
||||||
.check {
|
{online ? "✔" : "⁃"}
|
||||||
@apply text-[1.25rem] sm:text-[1.5rem] font-bold text-green-700;
|
</div>
|
||||||
}
|
<div class:check={premium} class:check-no={!premium}>
|
||||||
.check-no {
|
{premium ? "✔" : "⁃"}
|
||||||
@apply text-[1.25rem] sm:text-[1.5rem] font-bold text-black;
|
</div>
|
||||||
}
|
<div class:check={offline} class:check-no={!offline}>
|
||||||
|
{offline ? "✔" : "⁃"}
|
||||||
.price{@apply text-[1.25rem] sm:text-[2rem]}
|
</div>
|
||||||
|
</div>
|
||||||
</style>
|
{/each}
|
||||||
|
|
||||||
|
<div
|
||||||
|
class="zeile grid grid-cols-subgrid col-span-4 py-4 border-b-[0px] justify-items-center items-center sm:text-[1.25rem]"
|
||||||
|
>
|
||||||
|
<div class="price justify-self-start pl-2">Preis inkl. MwSt.</div>
|
||||||
|
<div class="price">
|
||||||
|
<b
|
||||||
|
>{PRICES.VerbrauchsausweisGewerbe[
|
||||||
|
Enums.AusweisTyp.Standard
|
||||||
|
]} €</b
|
||||||
|
>
|
||||||
|
</div>
|
||||||
|
<div class="price">
|
||||||
|
<b
|
||||||
|
>{PRICES.VerbrauchsausweisGewerbe[
|
||||||
|
Enums.AusweisTyp.Beratung
|
||||||
|
]} €</b
|
||||||
|
>
|
||||||
|
</div>
|
||||||
|
<div class="price">
|
||||||
|
<b
|
||||||
|
>{PRICES.VerbrauchsausweisGewerbe[
|
||||||
|
Enums.AusweisTyp.Offline
|
||||||
|
]} €</b
|
||||||
|
>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div
|
||||||
|
class="zeile grid grid-cols-subgrid col-span-4 py-4 border-b-[0px] justify-items-center items-center"
|
||||||
|
>
|
||||||
|
<div class="justify-self-start pl-2"></div>
|
||||||
|
<a
|
||||||
|
href="{ref}/energieausweis-erstellen/verbrauchsausweis-gewerbe?ausweistyp={Enums
|
||||||
|
.AusweisTyp.Standard}"
|
||||||
|
><button class="bestellbutton" type="button"
|
||||||
|
>sofort<br />bestellen</button
|
||||||
|
></a
|
||||||
|
>
|
||||||
|
<a
|
||||||
|
href="{ref}/energieausweis-erstellen/verbrauchsausweis-gewerbe?ausweistyp={Enums
|
||||||
|
.AusweisTyp.Beratung}"
|
||||||
|
><button class="bestellbutton" type="button"
|
||||||
|
>sofort<br />bestellen</button
|
||||||
|
></a
|
||||||
|
>
|
||||||
|
<a
|
||||||
|
href="{ref}/energieausweis-erstellen/verbrauchsausweis-gewerbe?ausweistyp={Enums
|
||||||
|
.AusweisTyp.Offline}"
|
||||||
|
><button class="bestellbutton" type="button"
|
||||||
|
>sofort<br />bestellen</button
|
||||||
|
></a
|
||||||
|
>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<style lang="postcss">
|
||||||
|
.bestellbutton {
|
||||||
|
@apply px-[2px] sm:px-4 mx-[2px] sm:mx-2 py-2 bg-secondary ring-2 ring-secondary/25 rounded-none xs:rounded-md text-white text-nowrap font-bold
|
||||||
|
hover:bg-gradient-to-br from-secondary to-secondary-grad hover:shadow-lg transition-all hover:no-underline hover:ring-2 hover:ring-primary;
|
||||||
|
}
|
||||||
|
|
||||||
|
.zeile {
|
||||||
|
@apply text-[0.6rem] sm:text-[1rem] md:text-[1.5rem];
|
||||||
|
}
|
||||||
|
.bullet {
|
||||||
|
@apply text-[0.75rem] sm:text-[1rem] md:text-[1.25rem];
|
||||||
|
}
|
||||||
|
.bullet:nth-child(even) {
|
||||||
|
@apply bg-blue-100/40;
|
||||||
|
}
|
||||||
|
.bullet:nth-child(2) {
|
||||||
|
@apply !border-t-[6px];
|
||||||
|
}
|
||||||
|
.bullet:nth-child(12) {
|
||||||
|
@apply !border-b-[6px];
|
||||||
|
}
|
||||||
|
|
||||||
|
.check {
|
||||||
|
@apply text-[1.25rem] sm:text-[1.5rem] font-bold text-green-700;
|
||||||
|
}
|
||||||
|
.check-no {
|
||||||
|
@apply text-[1.25rem] sm:text-[1.5rem] font-bold text-black;
|
||||||
|
}
|
||||||
|
|
||||||
|
.price {
|
||||||
|
@apply text-[1.25rem] sm:text-[2rem];
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|||||||
@@ -1,93 +1,179 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import { PRICES } from "#lib/constants.js";
|
import { PRICES } from "#lib/constants.js";
|
||||||
import { Enums } from "#lib/client/prisma.js";
|
import { Enums } from "#lib/client/prisma.js";
|
||||||
export let bullets;
|
export let ref = "";
|
||||||
export let title;
|
|
||||||
export let ref = "";
|
|
||||||
|
|
||||||
|
|
||||||
bullets = [
|
|
||||||
["Prüfung durch Dipl. Ing.<br>Registrierung beim DiBt<br>rechtssicher nach GEG",true, true, true],
|
|
||||||
["Originalausweis als PDF per <span class='text-nowrap'>E-Mail</span><br>Originalausweis per Post (zubuchbar)",true, true, true],
|
|
||||||
["Bearbeitung innerhalb 24 Stunden<br>Selbsteingabe",true, true, false],
|
|
||||||
["Same day service (zubuchbar)",true, true, false],
|
|
||||||
["Fotoupload",true, true, true],
|
|
||||||
["automatische Vorprüfung<br>Live Vorschau direkt bei Eingabe<br>Live Vorschauausweis vorab<br>Vorschauausweis per E-Mail<br>dynamische Eingabehilfe",true, true, false],
|
|
||||||
["Prüfanmerkungen per <span class='text-nowrap'>E-Mail</span>",true, true, false],
|
|
||||||
["persönlicher Support",false, true, true],
|
|
||||||
["telefonische Beratung<br>persönlicher Energieberater",false, true, true],
|
|
||||||
["Dokumentenupload (Verbrauchsabrechnungen)",false, false, true],
|
|
||||||
["Eingabe durch Dipl. Ing.",false, false, true],
|
|
||||||
|
|
||||||
]
|
|
||||||
|
|
||||||
|
|
||||||
|
const bullets = [
|
||||||
|
[
|
||||||
|
"Prüfung durch Dipl. Ing.<br>Registrierung beim DiBt<br>rechtssicher nach GEG",
|
||||||
|
true,
|
||||||
|
true,
|
||||||
|
true,
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"Originalausweis als PDF per <span class='text-nowrap'>E-Mail</span><br>Originalausweis per Post (zubuchbar)",
|
||||||
|
true,
|
||||||
|
true,
|
||||||
|
true,
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"Bearbeitung innerhalb 24 Stunden<br>Selbsteingabe",
|
||||||
|
true,
|
||||||
|
true,
|
||||||
|
false,
|
||||||
|
],
|
||||||
|
["Same day service (zubuchbar)", true, true, false],
|
||||||
|
["Fotoupload", true, true, true],
|
||||||
|
[
|
||||||
|
"automatische Vorprüfung<br>Live Vorschau direkt bei Eingabe<br>Live Vorschauausweis vorab<br>Vorschauausweis per E-Mail<br>dynamische Eingabehilfe",
|
||||||
|
true,
|
||||||
|
true,
|
||||||
|
false,
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"Prüfanmerkungen per <span class='text-nowrap'>E-Mail</span>",
|
||||||
|
true,
|
||||||
|
true,
|
||||||
|
false,
|
||||||
|
],
|
||||||
|
["persönlicher Support", false, true, true],
|
||||||
|
[
|
||||||
|
"telefonische Beratung<br>persönlicher Energieberater",
|
||||||
|
false,
|
||||||
|
true,
|
||||||
|
true,
|
||||||
|
],
|
||||||
|
["Dokumentenupload (Verbrauchsabrechnungen)", false, false, true],
|
||||||
|
["Eingabe durch Dipl. Ing.", false, false, true],
|
||||||
|
];
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<h1>Produktübersicht: <span class="text-secondary">Verbrauchsausweis Wohngebäude</span></h1>
|
<h1>
|
||||||
|
Produktübersicht: <span class="text-secondary"
|
||||||
|
>Verbrauchsausweis Wohngebäude</span
|
||||||
|
>
|
||||||
|
</h1>
|
||||||
<h3>Verbrauchsausweis Leistungen und Preise in der Übersicht:</h3>
|
<h3>Verbrauchsausweis Leistungen und Preise in der Übersicht:</h3>
|
||||||
|
|
||||||
<hr>
|
<hr />
|
||||||
<br>
|
<br />
|
||||||
|
|
||||||
<div id="ProduktUebersichtVerbrauchsausweisWohnen">
|
<div id="ProduktUebersichtVerbrauchsausweisWohnen">
|
||||||
|
<div
|
||||||
|
class="w-full sm:w-[90%] sm:mx-auto grid grid-cols-[1fr_max-content_max-content_max-content] sm:grid-cols-[1fr_min-content_min-content_min-content]"
|
||||||
|
>
|
||||||
|
<div
|
||||||
|
class="zeile grid grid-cols-subgrid col-span-4 py-4 border-b-[1px] justify-items-center items-center sm:text-[1.25rem]"
|
||||||
|
>
|
||||||
|
<div class="justify-self-start pl-2"><b>Leistung</b></div>
|
||||||
|
<div><b>online</b></div>
|
||||||
|
<div><b>premium</b></div>
|
||||||
|
<div><b>offline</b></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
<div class="w-full sm:w-[90%] sm:mx-auto grid grid-cols-[1fr_max-content_max-content_max-content] sm:grid-cols-[1fr_min-content_min-content_min-content]">
|
{#each bullets as [bullet, online, premium, offline]}
|
||||||
|
<div
|
||||||
<div class="zeile grid grid-cols-subgrid col-span-4 py-4 border-b-[1px] justify-items-center items-center sm:text-[1.25rem]">
|
class="bullet grid grid-cols-subgrid col-span-4 py-4 border-b-[1px] justify-items-center items-center"
|
||||||
<div class="justify-self-start pl-2"><b>Leistung</b></div><div><b>online</b></div><div><b>premium</b></div><div><b>offline</b></div>
|
>
|
||||||
</div>
|
<div class="justify-self-start pl-2">{@html bullet}</div>
|
||||||
|
<div class:check={online} class:check-no={!online}>
|
||||||
{#each bullets as [bullet,online,premium,offline]}
|
{online ? "✔" : "⁃"}
|
||||||
<div class="bullet grid grid-cols-subgrid col-span-4 py-4 border-b-[1px] justify-items-center items-center">
|
</div>
|
||||||
<div class="justify-self-start pl-2">{@html bullet}</div>
|
<div class:check={premium} class:check-no={!premium}>
|
||||||
<div class:check={online} class:check-no={!online}>{online ? "✔" : "⁃"}</div>
|
{premium ? "✔" : "⁃"}
|
||||||
<div class:check={premium} class:check-no={!premium}>{premium ? "✔" : "⁃"}</div>
|
</div>
|
||||||
<div class:check={offline} class:check-no={!offline}>{offline ? "✔" : "⁃"}</div>
|
<div class:check={offline} class:check-no={!offline}>
|
||||||
</div>
|
{offline ? "✔" : "⁃"}
|
||||||
{/each}
|
</div>
|
||||||
|
</div>
|
||||||
<div class="zeile grid grid-cols-subgrid col-span-4 py-4 border-b-[0px] justify-items-center items-center sm:text-[1.25rem]">
|
{/each}
|
||||||
<div class="price justify-self-start pl-2">Preis inkl. MwSt.</div>
|
|
||||||
<div class="price"><b>{PRICES.VerbrauchsausweisWohnen[Enums.AusweisTyp.Standard]} €</b></div>
|
|
||||||
<div class="price"><b>{PRICES.VerbrauchsausweisWohnen[Enums.AusweisTyp.Beratung]} €</b></div>
|
|
||||||
<div class="price"><b>{PRICES.VerbrauchsausweisWohnen[Enums.AusweisTyp.Offline]} €</b></div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="zeile grid grid-cols-subgrid col-span-4 py-4 border-b-[0px] justify-items-center items-center">
|
|
||||||
<div class="justify-self-start pl-2"></div>
|
|
||||||
<a href="{ref}/energieausweis-erstellen/verbrauchsausweis-wohngebaeude?ausweistyp={Enums.AusweisTyp.Standard}" ><button class="bestellbutton" type="button">sofort<br>bestellen</button></a>
|
|
||||||
<a href="{ref}/energieausweis-erstellen/verbrauchsausweis-wohngebaeude?ausweistyp={Enums.AusweisTyp.Beratung}" ><button class="bestellbutton" type="button">sofort<br>bestellen</button></a>
|
|
||||||
<a href="{ref}/energieausweis-erstellen/verbrauchsausweis-wohngebaeude?ausweistyp={Enums.AusweisTyp.Offline}" ><button class="bestellbutton" type="button">sofort<br>bestellen</button></a>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
|
<div
|
||||||
|
class="zeile grid grid-cols-subgrid col-span-4 py-4 border-b-[0px] justify-items-center items-center sm:text-[1.25rem]"
|
||||||
|
>
|
||||||
|
<div class="price justify-self-start pl-2">Preis inkl. MwSt.</div>
|
||||||
|
<div class="price">
|
||||||
|
<b
|
||||||
|
>{PRICES.VerbrauchsausweisWohnen[
|
||||||
|
Enums.AusweisTyp.Standard
|
||||||
|
]} €</b
|
||||||
|
>
|
||||||
|
</div>
|
||||||
|
<div class="price">
|
||||||
|
<b
|
||||||
|
>{PRICES.VerbrauchsausweisWohnen[
|
||||||
|
Enums.AusweisTyp.Beratung
|
||||||
|
]} €</b
|
||||||
|
>
|
||||||
|
</div>
|
||||||
|
<div class="price">
|
||||||
|
<b
|
||||||
|
>{PRICES.VerbrauchsausweisWohnen[
|
||||||
|
Enums.AusweisTyp.Offline
|
||||||
|
]} €</b
|
||||||
|
>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div
|
||||||
|
class="zeile grid grid-cols-subgrid col-span-4 py-4 border-b-[0px] justify-items-center items-center"
|
||||||
|
>
|
||||||
|
<div class="justify-self-start pl-2"></div>
|
||||||
|
<a
|
||||||
|
href="{ref}/energieausweis-erstellen/verbrauchsausweis-wohngebaeude?ausweistyp={Enums
|
||||||
|
.AusweisTyp.Standard}"
|
||||||
|
><button class="bestellbutton" type="button"
|
||||||
|
>sofort<br />bestellen</button
|
||||||
|
></a
|
||||||
|
>
|
||||||
|
<a
|
||||||
|
href="{ref}/energieausweis-erstellen/verbrauchsausweis-wohngebaeude?ausweistyp={Enums
|
||||||
|
.AusweisTyp.Beratung}"
|
||||||
|
><button class="bestellbutton" type="button"
|
||||||
|
>sofort<br />bestellen</button
|
||||||
|
></a
|
||||||
|
>
|
||||||
|
<a
|
||||||
|
href="{ref}/energieausweis-erstellen/verbrauchsausweis-wohngebaeude?ausweistyp={Enums
|
||||||
|
.AusweisTyp.Offline}"
|
||||||
|
><button class="bestellbutton" type="button"
|
||||||
|
>sofort<br />bestellen</button
|
||||||
|
></a
|
||||||
|
>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<style lang="postcss">
|
<style lang="postcss">
|
||||||
|
.bestellbutton {
|
||||||
|
@apply px-[2px] sm:px-4 mx-[2px] sm:mx-2 py-2 bg-secondary ring-2 ring-secondary/25 rounded-none xs:rounded-md text-white text-nowrap font-bold
|
||||||
|
hover:bg-gradient-to-br from-secondary to-secondary-grad hover:shadow-lg transition-all hover:no-underline hover:ring-2 hover:ring-primary;
|
||||||
|
}
|
||||||
|
|
||||||
.bestellbutton{@apply px-[2px] sm:px-4 mx-[2px] sm:mx-2 py-2 bg-secondary ring-2 ring-secondary/25 rounded-none xs:rounded-md text-white text-nowrap font-bold
|
.zeile {
|
||||||
hover:bg-gradient-to-br from-secondary to-secondary-grad hover:shadow-lg transition-all hover:no-underline hover:ring-2 hover:ring-primary;}
|
@apply text-[0.6rem] sm:text-[1rem] md:text-[1.5rem];
|
||||||
|
}
|
||||||
|
.bullet {
|
||||||
|
@apply text-[0.75rem] sm:text-[1rem] md:text-[1.25rem];
|
||||||
|
}
|
||||||
|
.bullet:nth-child(even) {
|
||||||
|
@apply bg-blue-100/40;
|
||||||
|
}
|
||||||
|
.bullet:nth-child(2) {
|
||||||
|
@apply !border-t-[6px];
|
||||||
|
}
|
||||||
|
.bullet:nth-child(12) {
|
||||||
|
@apply !border-b-[6px];
|
||||||
|
}
|
||||||
|
|
||||||
|
.check {
|
||||||
|
|
||||||
|
|
||||||
.zeile{@apply text-[0.6rem] sm:text-[1rem] md:text-[1.5rem]}
|
|
||||||
.bullet{@apply text-[0.75rem] sm:text-[1rem] md:text-[1.25rem]}
|
|
||||||
.bullet:nth-child(even){@apply bg-blue-100/40}
|
|
||||||
.bullet:nth-child(2){@apply !border-t-[6px]}
|
|
||||||
.bullet:nth-child(12){@apply !border-b-[6px]}
|
|
||||||
|
|
||||||
.check {
|
|
||||||
@apply text-[1.25rem] sm:text-[1.5rem] font-bold text-green-700;
|
@apply text-[1.25rem] sm:text-[1.5rem] font-bold text-green-700;
|
||||||
}
|
}
|
||||||
.check-no {
|
.check-no {
|
||||||
@apply text-[1.25rem] sm:text-[1.5rem] font-bold text-black;
|
@apply text-[1.25rem] sm:text-[1.5rem] font-bold text-black;
|
||||||
}
|
}
|
||||||
|
|
||||||
.price{@apply text-[1.25rem] sm:text-[2rem]}
|
.price {
|
||||||
|
@apply text-[1.25rem] sm:text-[2rem];
|
||||||
</style>
|
}
|
||||||
|
</style>
|
||||||
|
|||||||
184
src/components/design/header/AusweisHeaderPartner.astro
Normal file
184
src/components/design/header/AusweisHeaderPartner.astro
Normal file
@@ -0,0 +1,184 @@
|
|||||||
|
---
|
||||||
|
export interface Props {
|
||||||
|
tab: number;
|
||||||
|
}
|
||||||
|
|
||||||
|
const { tab } = Astro.props;
|
||||||
|
const { params } = Astro;
|
||||||
|
const partner = params.partner;
|
||||||
|
|
||||||
|
const pathname = Astro.url.pathname;
|
||||||
|
const isVA = pathname.includes("verbrauchsausweis-wohngebaeude");
|
||||||
|
const isVAG = pathname.includes("verbrauchsausweis-gewerbe");
|
||||||
|
const isBA = pathname.includes("bedarfsausweis-wohngebaeude");
|
||||||
|
const isBAG = pathname.includes("bedarfsausweis-gewerbe-anfragen");
|
||||||
|
const isGGW = pathname.includes("geg-nachweis-wohnen-anfragen");
|
||||||
|
const isGGG = pathname.includes("geg-nachweis-gewerbe-anfragen");
|
||||||
|
const isWEA = pathname.includes("welcher-ausweis");
|
||||||
|
|
||||||
|
const isWelt = pathname.includes("immowelt");
|
||||||
|
const isNET = pathname.includes("immonet");
|
||||||
|
---
|
||||||
|
|
||||||
|
<header id="header" class="w-full bg-white h-[81px] sm:pl-8">
|
||||||
|
<div class="grid grid-cols-[min-content_1fr] items-center">
|
||||||
|
<div class="w-[150px] h-[80px]">
|
||||||
|
<div
|
||||||
|
class="w-full h-full grid grid-col-1 justify-items-center items-center"
|
||||||
|
>
|
||||||
|
<img
|
||||||
|
class={isNET
|
||||||
|
? "w-[149px]"
|
||||||
|
: isWelt
|
||||||
|
? "w-[109px]"
|
||||||
|
: "w-[109px]"}
|
||||||
|
src={`/images/partner/${partner}/${partner}.svg`}
|
||||||
|
alt={partner}
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div>
|
||||||
|
<!-- Navigation als Liste (nur ab sm sichtbar) -->
|
||||||
|
<ul class="navlist hidden xl:flex">
|
||||||
|
<li><a href={`/${partner}/energieausweis-erstellen/verbrauchsausweis-wohngebaeude/`}><button class={tab === 0 ? "glow" : ""}>Verbrauchsausweis</button></a></li>
|
||||||
|
<li><a href={`/${partner}/energieausweis-erstellen/verbrauchsausweis-gewerbe/`}><button class={tab === 1 ? "glow" : ""}>Verbrauchsausweis Gewerbe</button></a></li>
|
||||||
|
<li><a href={`/${partner}/energieausweis-erstellen/bedarfsausweis-wohngebaeude/`}><button class={tab === 2 ? "glow" : ""}>Bedarfsausweis</button></a></li>
|
||||||
|
<li><a href={`/${partner}/angebot-anfragen/bedarfsausweis-gewerbe-anfragen/`}><button class={tab === 3 ? "glow" : ""}>Bedarfsausweis Gewerbe</button></a></li>
|
||||||
|
<li><a href={`/${partner}/angebot-anfragen/geg-nachweis-wohnen-anfragen/`}><button class={tab === 4 ? "glow" : ""}>GEG Nachweis Wohngebäude</button></a></li>
|
||||||
|
<li><a href={`/${partner}/angebot-anfragen/geg-nachweis-gewerbe-anfragen/`}><button class={tab === 5 ? "glow" : ""}>GEG Nachweis Gewerbe</button></a></li>
|
||||||
|
<li><a href={`/${partner}/welcher-ausweis/${partner}`}><button class={tab === 6 ? "glow" : ""}>Welcher Ausweis</button></a></li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<!-- Navigation als Dropdown (nur bis sm sichtbar) -->
|
||||||
|
<select
|
||||||
|
class="xl:hidden border rounded p-2 w-[calc(100%-2rem)]"
|
||||||
|
onchange="if (this.value) window.location.href=this.value"
|
||||||
|
>
|
||||||
|
<option value="">Auswahl treffen…</option>
|
||||||
|
<option value={`/${partner}/energieausweis-erstellen/verbrauchsausweis-wohngebaeude/`} selected={tab === 0}>Verbrauchsausweis</option>
|
||||||
|
<option value={`/${partner}/energieausweis-erstellen/verbrauchsausweis-gewerbe/`} selected={tab === 1}>Verbrauchsausweis Gewerbe</option>
|
||||||
|
<option value={`/${partner}/energieausweis-erstellen/bedarfsausweis-wohngebaeude/`} selected={tab === 2}>Bedarfsausweis</option>
|
||||||
|
<option value={`/${partner}/angebot-anfragen/bedarfsausweis-gewerbe-anfragen/`} selected={tab === 3}>Bedarfsausweis Gewerbe</option>
|
||||||
|
<option value={`/${partner}/angebot-anfragen/geg-nachweis-wohnen-anfragen/`} selected={tab === 4}>GEG Nachweis Wohngebäude</option>
|
||||||
|
<option value={`/${partner}/angebot-anfragen/geg-nachweis-gewerbe-anfragen/`} selected={tab === 5}>GEG Nachweis Gewerbe</option>
|
||||||
|
<option value={`/${partner}/welcher-ausweis/${partner}`} selected={tab === 6}>Welcher Ausweis</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
<div
|
||||||
|
id="titel"
|
||||||
|
class="block w-full lg:h-[270px] bg-cover !px-8 md:px-32 !py-8 md:py-16"
|
||||||
|
style={`background-image: url('/images/partner/${partner}/hero-energieausweis.jpg');
|
||||||
|
background-repeat:no-repeat; background-position:right;`}
|
||||||
|
>
|
||||||
|
{
|
||||||
|
isVA ? (
|
||||||
|
<div>
|
||||||
|
Hier komfortabel und einfach online den{" "}
|
||||||
|
<b>Verbrauchsausweis Wohngebäude</b> bestellen
|
||||||
|
</div>
|
||||||
|
) : (
|
||||||
|
""
|
||||||
|
)
|
||||||
|
}
|
||||||
|
{
|
||||||
|
isVAG ? (
|
||||||
|
<div>
|
||||||
|
Hier komfortabel und einfach online den{" "}
|
||||||
|
<b>Verbrauchsausweis Gewerbe</b> bestellen
|
||||||
|
</div>
|
||||||
|
) : (
|
||||||
|
""
|
||||||
|
)
|
||||||
|
}
|
||||||
|
{
|
||||||
|
isBA ? (
|
||||||
|
<div>
|
||||||
|
Hier komfortabel und einfach online den{" "}
|
||||||
|
<b>Bedarfsausweis Wohngebäude</b> bestellen
|
||||||
|
</div>
|
||||||
|
) : (
|
||||||
|
""
|
||||||
|
)
|
||||||
|
}
|
||||||
|
{
|
||||||
|
isBAG ? (
|
||||||
|
<div>
|
||||||
|
Hier komfortabel und einfach online den{" "}
|
||||||
|
<b>Bedarfsausweis Gewerbe</b> anfragen
|
||||||
|
</div>
|
||||||
|
) : (
|
||||||
|
""
|
||||||
|
)
|
||||||
|
}
|
||||||
|
{
|
||||||
|
isGGW ? (
|
||||||
|
<div>
|
||||||
|
Hier komfortabel und einfach online den{" "}
|
||||||
|
<b>GEG Nachweis Wohngebäude</b> anfragen
|
||||||
|
</div>
|
||||||
|
) : (
|
||||||
|
""
|
||||||
|
)
|
||||||
|
}
|
||||||
|
{
|
||||||
|
isGGG ? (
|
||||||
|
<div>
|
||||||
|
Hier komfortabel und einfach online den{" "}
|
||||||
|
<b>GEG Nachweis Gewerbe</b> anfragen
|
||||||
|
</div>
|
||||||
|
) : (
|
||||||
|
""
|
||||||
|
)
|
||||||
|
}
|
||||||
|
{
|
||||||
|
isWEA ? (
|
||||||
|
<div>
|
||||||
|
Hier komfortabel und einfach online den richtigen Ausweis finden
|
||||||
|
</div>
|
||||||
|
) : (
|
||||||
|
""
|
||||||
|
)
|
||||||
|
}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<style lang="postcss">
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: "immo Sans";
|
||||||
|
src: url('/fonts/Immo-Sans/immoSans-Regular.eot');
|
||||||
|
src: url('/fonts/Immo-Sans/immoSans-Regular.eot?#iefix') format('embedded-opentype'),
|
||||||
|
url('/fonts/Immo-Sans/immoSans-Regular.woff2') format('woff2'),
|
||||||
|
url('/fonts/Immo-Sans/immoSans-Regular.woff') format('woff');
|
||||||
|
font-style: normal;
|
||||||
|
font-weight: 400;
|
||||||
|
}
|
||||||
|
|
||||||
|
#titel{
|
||||||
|
font-family: "immo Sans";
|
||||||
|
font-weight:400;
|
||||||
|
|
||||||
|
div{@apply w-fit bg-white/75 py-6 px-4 md:px-16 rounded-lg ring-2 ring-black/15 text-[1.45rem];box-shadow:8px 8px 16px rgba(0,0,0,0.5);}
|
||||||
|
}
|
||||||
|
|
||||||
|
.header-button {
|
||||||
|
@apply px-4 py-2 text-primary-content font-medium text-lg tracking-normal hover:bg-secondary h-full;
|
||||||
|
}
|
||||||
|
|
||||||
|
.navlist {
|
||||||
|
@apply flex flex-wrap flex-col sm:flex-row pl-[1.75rem] sm:pl-[1.75rem];
|
||||||
|
}
|
||||||
|
.navlist li {
|
||||||
|
@apply pr-0 sm:pr-[6px] pb-1 sm:pb-0;
|
||||||
|
}
|
||||||
|
.navlist li button{@apply text-[0.75rem] md:text-[1rem] text-[#646464] sm:p-2 text-left
|
||||||
|
hover:rounded-[1rem] hover:bg-[rgba(50,50,50,0.1)];
|
||||||
|
font-family: "immo Sans";
|
||||||
|
font-weight:400;}
|
||||||
|
|
||||||
|
.glow{@apply rounded-[1rem] bg-[rgba(50,50,50,0.1)];}
|
||||||
|
|
||||||
|
</style>
|
||||||
@@ -1,114 +0,0 @@
|
|||||||
---
|
|
||||||
import HeaderLogin from "#components/design/header/HeaderLogin.svelte";
|
|
||||||
const { tabHover1 } = Astro.props;
|
|
||||||
const { tabHover2 } = Astro.props;
|
|
||||||
const { tabHover3 } = Astro.props;
|
|
||||||
const { tabHover4 } = Astro.props;
|
|
||||||
const { tabHover5 } = Astro.props;
|
|
||||||
const { tabHover6 } = Astro.props;
|
|
||||||
const { tabHover7 } = Astro.props;
|
|
||||||
|
|
||||||
|
|
||||||
const { params, url } = Astro;
|
|
||||||
const partner = params.partner;
|
|
||||||
|
|
||||||
const url1 = new URL(Astro.request.url);
|
|
||||||
|
|
||||||
const urlPath = url1.pathname;
|
|
||||||
const isVA = urlPath.includes("verbrauchsausweis-wohngebaeude");
|
|
||||||
const isVAG = urlPath.includes("verbrauchsausweis-gewerbe");
|
|
||||||
const isBA = urlPath.includes("bedarfsausweis-wohngebaeude");
|
|
||||||
const isBAG = urlPath.includes("bedarfsausweis-gewerbe-anfragen");
|
|
||||||
const isGGW = urlPath.includes("geg-nachweis-wohnen-anfragen");
|
|
||||||
const isGGG = urlPath.includes("geg-nachweis-gewerbe-anfragen");
|
|
||||||
const isWEA = urlPath.includes("welcher-ausweis");
|
|
||||||
|
|
||||||
const isWelt = urlPath.includes("immowelt");
|
|
||||||
const isNET = urlPath.includes("immonet");
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
<header id="header" class="w-full bg-white h-[81px] sm:pl-8">
|
|
||||||
|
|
||||||
<div class="grid grid-cols-[min-content_1fr] items-center">
|
|
||||||
|
|
||||||
|
|
||||||
<div class="w-[150px] h-[80px]">
|
|
||||||
<div class="w-full h-full grid grid-col-1 justify-items-center items-center">
|
|
||||||
<img class={isNET ? "w-[149px]" : isWelt ? "w-[109px]" : "w-[109px]"} src={`/images/partner/${partner}/${partner}.svg`} alt={partner} />
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div>
|
|
||||||
|
|
||||||
<ul class="navlist">
|
|
||||||
<li><a href={`/${partner}/energieausweis-erstellen/verbrauchsausweis-wohngebaeude/`}><button class={tabHover1}>Verbrauchsausweis</button></a></li>
|
|
||||||
<li><a href={`/${partner}/energieausweis-erstellen/verbrauchsausweis-gewerbe/`}><button class={tabHover2}>Verbrauchsausweis Gewerbe</button></a></li>
|
|
||||||
<li><a href={`/${partner}/energieausweis-erstellen/bedarfsausweis-wohngebaeude/`}><button class={tabHover3}>Bedarfsausweis</button></a></li>
|
|
||||||
<li><a href={`/${partner}/angebot-anfragen/bedarfsausweis-gewerbe-anfragen/`}><button class={tabHover4}>Bedarfsausweis Gewerbe</button></a></li>
|
|
||||||
<li><a href={`/${partner}/angebot-anfragen/geg-nachweis-wohnen-anfragen/`}><button class={tabHover5}>GEG Nachweis Wohngebäude</button></a></li>
|
|
||||||
<li><a href={`/${partner}/angebot-anfragen/geg-nachweis-gewerbe-anfragen/`}><button class={tabHover6}>GEG Nachweis Gewerbe</button></a></li>
|
|
||||||
<li><a href={`/${partner}/welcher-ausweis/${partner}`}><button class={tabHover7}>Welcher Ausweis</button></a></li>
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</header>
|
|
||||||
|
|
||||||
<div id="titel" class="block w-full 2xl:h-[270px] lg:h-[148px] bg-cover px-24 py-20"
|
|
||||||
style={`background-image: url('/images/partner/${partner}/hero-energieausweis.jpg');
|
|
||||||
background-repeat:no-repeat; background-position:right;`}>
|
|
||||||
|
|
||||||
|
|
||||||
{isVA ? <div>Hier komfortabel und einfach online den <b>Verbrauchsausweis Wohngebäude</b> bestellen</div> : ""}
|
|
||||||
{isVAG ? <div>Hier komfortabel und einfach online den <b>Verbrauchsausweis Gewerbe</b> bestellen</div> : ""}
|
|
||||||
{isBA ? <div>Hier komfortabel und einfach online den <b>Bedarfsausweis Wohngebäude</b> bestellen</div> : ""}
|
|
||||||
{isBAG ? <div>Hier komfortabel und einfach online den <b>Bedarfsausweis Gewerbe</b> anfragen</div> : ""}
|
|
||||||
{isGGW ? <div>Hier komfortabel und einfach online den <b>GEG Nachweis Wohngebäude</b> anfragen</div> : ""}
|
|
||||||
{isGGG ? <div>Hier komfortabel und einfach online den <b>GEG Nachweis Gewerbe</b> anfragen</div> : ""}
|
|
||||||
{isWEA ? <div>Hier komfortabel und einfach online den richtigen Ausweis finden</div> : ""}
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<style lang="postcss">
|
|
||||||
|
|
||||||
@font-face {
|
|
||||||
font-family: "immo Sans";
|
|
||||||
src: url('/fonts/Immo-Sans/immoSans-Regular.eot');
|
|
||||||
src: url('/fonts/Immo-Sans/immoSans-Regular.eot?#iefix') format('embedded-opentype'),
|
|
||||||
url('/fonts/Immo-Sans/immoSans-Regular.woff2') format('woff2'),
|
|
||||||
url('/fonts/Immo-Sans/immoSans-Regular.woff') format('woff');
|
|
||||||
font-style: normal;
|
|
||||||
font-weight: 400;
|
|
||||||
}
|
|
||||||
|
|
||||||
#titel{
|
|
||||||
font-family: "immo Sans";
|
|
||||||
font-weight:400;
|
|
||||||
|
|
||||||
div{@apply w-fit bg-white/75 py-6 px-16 rounded-lg ring-2 ring-black/15 text-[1.45rem];box-shadow:8px 8px 16px rgba(0,0,0,0.5);}
|
|
||||||
}
|
|
||||||
|
|
||||||
.header-button {
|
|
||||||
@apply px-4 py-2 text-primary-content font-medium text-lg tracking-normal hover:bg-secondary h-full;
|
|
||||||
}
|
|
||||||
|
|
||||||
.navlist {
|
|
||||||
@apply flex flex-wrap flex-col sm:flex-row pl-[1.75rem] sm:pl-[1.75rem];
|
|
||||||
}
|
|
||||||
.navlist li {
|
|
||||||
@apply pr-0 sm:pr-[6px] pb-1 sm:pb-0;
|
|
||||||
}
|
|
||||||
.navlist li button{@apply text-[0.75rem] md:text-[1rem] text-[#646464] sm:p-2 text-left
|
|
||||||
hover:rounded-[1rem] hover:bg-[rgba(50,50,50,0.1)];
|
|
||||||
font-family: "immo Sans";
|
|
||||||
font-weight:400;}
|
|
||||||
|
|
||||||
.glow{@apply rounded-[1rem] bg-[rgba(50,50,50,0.1)];}
|
|
||||||
|
|
||||||
</style>
|
|
||||||
@@ -1,82 +0,0 @@
|
|||||||
---
|
|
||||||
import HeaderLogin from "#components/design/header/HeaderLogin.svelte";
|
|
||||||
---
|
|
||||||
|
|
||||||
<header id="header">
|
|
||||||
|
|
||||||
<div id="header-grid" class="grid relative bg-white items-center gap-x-4 pt-4 px-0
|
|
||||||
|
|
||||||
grid-cols-1
|
|
||||||
sm:grid-cols-1
|
|
||||||
md:grid-cols-1
|
|
||||||
|
|
||||||
lg:grid-cols-[1fr_minmax(450px,450px)] lg:gap-x-3 lg:px-4 lg:py-4
|
|
||||||
xl:grid-cols-[1fr_minmax(450px,450px)] xl:gap-x-4 xl:px-6 xl:py-4
|
|
||||||
2xl:grid-cols-[1fr_minmax(450px,450px)] 2xl:gap-x-5 2xl:px-6 2xl:py-4">
|
|
||||||
|
|
||||||
<div class="justify-self-center xs:justify-self-start">
|
|
||||||
|
|
||||||
<div class="grid grid-cols-1 px-2 gap-2 gap-y-1
|
|
||||||
xs:grid-cols-[max-content,1fr] xs:gap-x-2 xs:px-4
|
|
||||||
md:gap-y-4
|
|
||||||
lg:px-0 lg:gap-x-4">
|
|
||||||
|
|
||||||
<div class="self-start justify-self-start">
|
|
||||||
<a href="/">
|
|
||||||
<img id="header-logo" class="w-full
|
|
||||||
xs:max-w-[64px]
|
|
||||||
sm:max-w-[64px]
|
|
||||||
md:max-w-[64px] md:ml-6
|
|
||||||
lg:max-w-[64px] lg:ml-0
|
|
||||||
xl:max-w-[94px] xl:ml-0
|
|
||||||
"
|
|
||||||
src="/images/header/logo-IBC-big.svg" alt="IBCornelsen-Logo"/>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="self-center justify-self-center md:justify-self-start xs:mt-[20px] md:mt-[18px]">
|
|
||||||
|
|
||||||
<div id="header-text-1"class="text-secondary justify-self-center
|
|
||||||
xs:[font-size:_clamp(15px,5vw,36px)] xs:justify-self-start xs:leading-[36px]
|
|
||||||
|
|
||||||
lg:[font-size:_clamp(15px,3vw,26px)]
|
|
||||||
lg:leading-[2rem]
|
|
||||||
xl:[font-size:_clamp(15px,3vw,36px)]
|
|
||||||
xl:leading-[4.5rem] pt-[0px]">
|
|
||||||
Energieausweis online erstellen</div>
|
|
||||||
|
|
||||||
<div id="header-text-2"class="text-primary justify-self-center
|
|
||||||
xs:[font-size:_clamp(15px,4vw,28px)] xs:justify-self-start xs:leading-[20px]
|
|
||||||
|
|
||||||
lg:[font-size:_clamp(15px,3vw,20px)]
|
|
||||||
lg:leading-[2rem]
|
|
||||||
xl:[font-size:_clamp(15px,3vw,24px)]
|
|
||||||
xl:leading-[0.5rem]">
|
|
||||||
Energieausweise nach aktuellem GEG</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="w-full justify-self-center">
|
|
||||||
<HeaderLogin client:load />
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="col-start-1 col-span-3">
|
|
||||||
<div id="header-line" class="px-2 flex flex-row w-full justify-end items-center bg-primary
|
|
||||||
lg:h-[12px] xl:h-[12px]"></div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</header>
|
|
||||||
|
|
||||||
<style>
|
|
||||||
.header-button {
|
|
||||||
@apply px-4 py-2 text-primary-content font-medium text-lg tracking-normal hover:bg-secondary h-full;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
@@ -1,19 +1,22 @@
|
|||||||
---
|
---
|
||||||
import NavigationCard from "#components/design/sidebars/cards/NavigationCard.svelte";
|
import NavigationCard from "#components/design/sidebars/cards/NavigationCard.svelte";
|
||||||
import CardPriceiInfo from "#components/design/sidebars/cards/cardPriceiInfo.svelte";
|
import CardPriceInfo from "#components/design/sidebars/cards/CardPriceInfo.svelte";
|
||||||
import CardProduktSidebar from "#components/design/sidebars/cards/CardProduktSidebar.svelte";
|
import CardProduktSidebar from "#components/design/sidebars/cards/CardProduktSidebar.svelte";
|
||||||
|
|
||||||
import { PRICES } from "#lib/constants";
|
import { PRICES } from "#lib/constants";
|
||||||
import { Enums } from "#lib/client/prisma";
|
import { Enums } from "#lib/client/prisma";
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
||||||
<div class="">
|
<div class="">
|
||||||
|
<NavigationCard client:load />
|
||||||
|
|
||||||
<NavigationCard client:load/>
|
<CardProduktSidebar
|
||||||
|
art="Verbrauchsausweis Gewerbe"
|
||||||
<CardProduktSidebar art="Verbrauchsausweis Gewerbe" price={PRICES.VerbrauchsausweisGewerbe[Enums.AusweisTyp.Standard]}></CardProduktSidebar>
|
price={PRICES.VerbrauchsausweisGewerbe[Enums.AusweisTyp.Standard]}
|
||||||
<CardPriceiInfo />
|
/>
|
||||||
<CardProduktSidebar art="Bedarfsausweis Wohnen" price={PRICES.BedarfsausweisWohnen[Enums.AusweisTyp.Standard]}></CardProduktSidebar>
|
<CardPriceInfo />
|
||||||
|
<CardProduktSidebar
|
||||||
</div>
|
art="Bedarfsausweis Wohnen"
|
||||||
|
price={PRICES.BedarfsausweisWohnen[Enums.AusweisTyp.Standard]}
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
---
|
---
|
||||||
import CardContact from "#components/design/sidebars/cards/ContactCard.svelte";
|
import CardContact from "#components/design/sidebars/cards/ContactCard.svelte";
|
||||||
import CardPriceiInfo from "#components/design/sidebars/cards/cardPriceiInfo.svelte";
|
import CardPriceInfo from "#components/design/sidebars/cards/CardPriceInfo.svelte";
|
||||||
import CardProduktSidebar from "#components/design/sidebars/cards/CardProduktSidebar.svelte";
|
import CardProduktSidebar from "#components/design/sidebars/cards/CardProduktSidebar.svelte";
|
||||||
|
|
||||||
import { PRICES } from "#lib/constants";
|
import { PRICES } from "#lib/constants";
|
||||||
@@ -8,16 +8,15 @@ import { Enums } from "#lib/client/prisma";
|
|||||||
---
|
---
|
||||||
|
|
||||||
<div class="hidden 2xl:block">
|
<div class="hidden 2xl:block">
|
||||||
|
<CardContact />
|
||||||
|
|
||||||
<CardContact />
|
<CardProduktSidebar
|
||||||
|
art="Verbrauchsausweis Wohnen"
|
||||||
|
price={PRICES.VerbrauchsausweisWohnen[Enums.AusweisTyp.Standard]}
|
||||||
<CardProduktSidebar art="Verbrauchsausweis Wohnen" price={PRICES.VerbrauchsausweisWohnen[Enums.AusweisTyp.Standard]}></CardProduktSidebar>
|
/>
|
||||||
<CardPriceiInfo />
|
<CardPriceInfo />
|
||||||
<CardProduktSidebar art="Bedarfsausweis Gewerbe" price={PRICES.BedarfsausweisGewerbe[Enums.AusweisTyp.Standard]}></CardProduktSidebar>
|
<CardProduktSidebar
|
||||||
|
art="Bedarfsausweis Gewerbe"
|
||||||
|
price={PRICES.BedarfsausweisGewerbe[Enums.AusweisTyp.Standard]}
|
||||||
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
66
src/components/design/sidebars/cards/CardPriceInfo.svelte
Normal file
66
src/components/design/sidebars/cards/CardPriceInfo.svelte
Normal file
@@ -0,0 +1,66 @@
|
|||||||
|
<script>
|
||||||
|
import { PRICES } from "#lib/constants";
|
||||||
|
import { Enums } from "#lib/client/prisma";
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<div id="cardPriceinfo" class="box card hidden lg:block">
|
||||||
|
<h2>Was wird der Energieausweis kosten?</h2>
|
||||||
|
|
||||||
|
<div>Verbrauchsausweis Wohngebäude</div>
|
||||||
|
<div>
|
||||||
|
ab <span class="price"
|
||||||
|
>{PRICES.VerbrauchsausweisWohnen[Enums.AusweisTyp.Standard]}€</span
|
||||||
|
> inkl. MwSt.
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<hr class="trenner" />
|
||||||
|
<div>Bedarfsausweis Wohngebäude</div>
|
||||||
|
<div>
|
||||||
|
ab <span class="price"
|
||||||
|
>{PRICES.BedarfsausweisWohnen[Enums.AusweisTyp.Standard]}€</span
|
||||||
|
> inkl. MwSt.
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<hr class="trenner" />
|
||||||
|
<div>Verbrauchsausweis Gewerbe</div>
|
||||||
|
<div>
|
||||||
|
ab <span class="price"
|
||||||
|
>{PRICES.VerbrauchsausweisGewerbe[Enums.AusweisTyp.Standard]}€</span
|
||||||
|
> inkl. MwSt.
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<hr class="trenner" />
|
||||||
|
<div>Bedarfsausweis Gewerbe</div>
|
||||||
|
<div>
|
||||||
|
ab <span class="price"
|
||||||
|
>{PRICES.BedarfsausweisGewerbe[Enums.AusweisTyp.Standard]}€</span
|
||||||
|
> inkl. MwSt.
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<hr class="trenner" />
|
||||||
|
<div>GEG-Nachweis Wohngebäude</div>
|
||||||
|
<div>
|
||||||
|
ab <span class="price"
|
||||||
|
>{PRICES.GEGNachweisWohnen[Enums.AusweisTyp.Standard]}€</span
|
||||||
|
> inkl. MwSt.
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<hr class="trenner" />
|
||||||
|
<div>GEG-Nachweis Gewerbe</div>
|
||||||
|
<div>
|
||||||
|
ab <span class="price"
|
||||||
|
>{PRICES.GEGNachweisGewerbe[Enums.AusweisTyp.Standard]}€</span
|
||||||
|
> inkl. MwSt.
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<hr class="mt-2" />
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<style lang="postcss">
|
||||||
|
.trenner {
|
||||||
|
@apply my-2;
|
||||||
|
}
|
||||||
|
.price {
|
||||||
|
@apply font-bold;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@@ -1,465 +0,0 @@
|
|||||||
<script lang="ts">
|
|
||||||
let innerWidth: number;
|
|
||||||
|
|
||||||
function dropdown() {
|
|
||||||
if (innerWidth < 1024) {
|
|
||||||
const check_element = this.lastChild;
|
|
||||||
|
|
||||||
const rotate_list = document.querySelectorAll(".dd-symbol-clone");
|
|
||||||
const rotate_element = this.childNodes[0].children[0];
|
|
||||||
|
|
||||||
var first_check = check_element.classList.contains(
|
|
||||||
"show-dropdown-content"
|
|
||||||
);
|
|
||||||
const nodeList = document.querySelectorAll(".dropdown-content");
|
|
||||||
|
|
||||||
if (first_check == true) {
|
|
||||||
check_element.classList.remove("show-dropdown-content");
|
|
||||||
rotate_element.classList.toggle("rotate-symbol");
|
|
||||||
} else {
|
|
||||||
for (let i = 0; i < nodeList.length; i++) {
|
|
||||||
const element = nodeList[i];
|
|
||||||
element.classList.remove("show-dropdown-content");
|
|
||||||
}
|
|
||||||
for (let i = 0; i < rotate_list.length; i++) {
|
|
||||||
const element = rotate_list[i];
|
|
||||||
element.classList.remove("rotate-symbol");
|
|
||||||
}
|
|
||||||
|
|
||||||
check_element.classList.add("show-dropdown-content");
|
|
||||||
rotate_element.classList.add("rotate-symbol");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function hover() {
|
|
||||||
if (innerWidth > 1024) {
|
|
||||||
const check_element = this.firstChild.lastChild;
|
|
||||||
check_element.style.visibility = "visible";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function hoverout() {
|
|
||||||
if (innerWidth > 1024) {
|
|
||||||
const check_element = this.firstChild.lastChild;
|
|
||||||
check_element.style.visibility = "hidden";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function hamburger() {
|
|
||||||
const nodeList = document.querySelectorAll(".dropdown-content");
|
|
||||||
for (let i = 0; i < nodeList.length; i++) {
|
|
||||||
nodeList[i].classList.remove("show-dropdown-content");
|
|
||||||
}
|
|
||||||
var element = document.getElementById("cardNavigation");
|
|
||||||
element.classList.toggle("hidden");
|
|
||||||
|
|
||||||
const spans = this.children;
|
|
||||||
var first_check = spans[0].classList.contains("hamburger-swing-0");
|
|
||||||
|
|
||||||
if (first_check == true) {
|
|
||||||
for (let i = 0; i < spans.length; i++) {
|
|
||||||
spans[i].classList.remove("hamburger-swing-" + i);
|
|
||||||
}
|
|
||||||
const rotate_list = document.querySelectorAll(".dd-symbol");
|
|
||||||
for (let i = 0; i < rotate_list.length; i++) {
|
|
||||||
rotate_list[i].classList.remove("rotate-symbol");
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
for (let i = 0; i < spans.length; i++) {
|
|
||||||
spans[i].classList.add("hamburger-swing-" + i);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<svelte:window bind:innerWidth />
|
|
||||||
|
|
||||||
<div
|
|
||||||
class="hamburger_menu py-1 px-2 bg-secondary
|
|
||||||
xs:px-4
|
|
||||||
lg:hidden"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
id="hamburger"
|
|
||||||
on:click={hamburger}
|
|
||||||
on:keydown={hamburger}
|
|
||||||
class="cursor-pointer"
|
|
||||||
>
|
|
||||||
|
|
||||||
<span></span>
|
|
||||||
<span></span>
|
|
||||||
<span></span>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<nav
|
|
||||||
id="cardNavigation"
|
|
||||||
class="cardNavigation box hidden relative ring-0 md:ring-2 ring-primary/50 rounded-tr-none lg:block mb-0 lg:mb-5"
|
|
||||||
>
|
|
||||||
<div class="nav-element bg-secondary/5 py-1 pl-2 text-xs font-bold">
|
|
||||||
Jetzt bestellen
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="nav-element">
|
|
||||||
<a class="no-dropdown nav-element-child" href="/welcher-energieausweis/"
|
|
||||||
>Welcher Energieausweis?</a
|
|
||||||
>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<!-- svelte-ignore a11y-mouse-events-have-key-events -->
|
|
||||||
<div
|
|
||||||
class="nav-element dropdown lg:dropdown-right"
|
|
||||||
on:click={dropdown}
|
|
||||||
on:keydown={dropdown}
|
|
||||||
on:mouseover={hover}
|
|
||||||
on:mouseleave={hoverout}
|
|
||||||
>
|
|
||||||
{#if innerWidth > 1023}
|
|
||||||
<a href={undefined} class="nav-element-child"
|
|
||||||
>Energieausweis erstellen<span class="dd-symbol-clone">❯</span
|
|
||||||
><span class="dd-symbol">❯</span></a
|
|
||||||
>
|
|
||||||
{:else}
|
|
||||||
<a href={undefined} class="nav-element-child"
|
|
||||||
>Energieausweis erstellen<span class="dd-symbol-clone">❯</span
|
|
||||||
><span class="dd-symbol">❯</span></a
|
|
||||||
>
|
|
||||||
{/if}
|
|
||||||
|
|
||||||
<ul class="dropdown-content energieasusweis-erstellen">
|
|
||||||
{#if innerWidth < 1023}
|
|
||||||
<li>
|
|
||||||
<a href="/energieausweis-erstellen"
|
|
||||||
>Energieausweis erstellen</a
|
|
||||||
>
|
|
||||||
</li>
|
|
||||||
{/if}
|
|
||||||
<li>
|
|
||||||
<a
|
|
||||||
href="/energieausweis-erstellen/verbrauchsausweis-wohngebaeude/"
|
|
||||||
>Verbrauchsausweis erstellen</a
|
|
||||||
>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="/energieausweis-erstellen/bedarfsausweis-wohngebaeude/"
|
|
||||||
>Bedarfsausweis erstellen</a
|
|
||||||
>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="/energieausweis-erstellen/verbrauchsausweis-gewerbe/"
|
|
||||||
>Verbrauchsausweis Gewerbe erstellen</a
|
|
||||||
>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<!-- svelte-ignore a11y-mouse-events-have-key-events -->
|
|
||||||
<div
|
|
||||||
class="nav-element dropdown lg:dropdown-right"
|
|
||||||
on:click={dropdown}
|
|
||||||
on:keydown={dropdown}
|
|
||||||
on:mouseover={hover}
|
|
||||||
on:mouseleave={hoverout}
|
|
||||||
>
|
|
||||||
{#if innerWidth > 1023}
|
|
||||||
<a href={undefined} class="nav-element-child"
|
|
||||||
>Angebot anfragen<span class="dd-symbol-clone">❯</span><span
|
|
||||||
class="dd-symbol">❯</span
|
|
||||||
></a
|
|
||||||
>
|
|
||||||
{:else}
|
|
||||||
<a href={undefined} class="nav-element-child"
|
|
||||||
>Angebot anfragen<span class="dd-symbol-clone">❯</span><span
|
|
||||||
class="dd-symbol">❯</span
|
|
||||||
></a
|
|
||||||
>
|
|
||||||
{/if}
|
|
||||||
|
|
||||||
<ul class="dropdown-content angebot-anfragen">
|
|
||||||
{#if innerWidth < 1023}
|
|
||||||
<li>
|
|
||||||
<a href="/energieausweis-erstellen">Angebot anfragen</a>
|
|
||||||
</li>
|
|
||||||
{/if}
|
|
||||||
<li>
|
|
||||||
<a
|
|
||||||
href="/angebot-anfragen/bedarfsausweis-gewerbe-anfragen"
|
|
||||||
>Bedarfsausweis Gewerbe anfragen</a
|
|
||||||
>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="/angebot-anfragen/geg-nachweis-wohnen-anfragen"
|
|
||||||
>GEG Nachweis Wohnen anfragen</a
|
|
||||||
>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="/angebot-anfragen/geg-nachweis-gewerbe-anfragen"
|
|
||||||
>GEG Nachweis Gewerbe anfragen</a
|
|
||||||
>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="nav-element">
|
|
||||||
<a class="no-dropdown nav-element-child" href="/sanierungsfahrplan"
|
|
||||||
>Sanierungsfahrplan (iSFP)</a
|
|
||||||
>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="nav-element bg-secondary/5 py-1 pl-2 text-xs font-bold">
|
|
||||||
Produkte & Preise
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<!-- svelte-ignore a11y-mouse-events-have-key-events -->
|
|
||||||
<div
|
|
||||||
class="nav-element dropdown lg:dropdown-right"
|
|
||||||
on:click={dropdown}
|
|
||||||
on:keydown={dropdown}
|
|
||||||
on:mouseover={hover}
|
|
||||||
on:mouseleave={hoverout}
|
|
||||||
>
|
|
||||||
<a href="/verbrauchsausweis/" class="nav-element-child"
|
|
||||||
>Verbrauchsausweis<span class="dd-symbol-clone">❯</span><span
|
|
||||||
class="dd-symbol">❯</span
|
|
||||||
></a
|
|
||||||
>
|
|
||||||
<ul class="dropdown-content verbrauchsausweis">
|
|
||||||
{#if innerWidth < 1023}
|
|
||||||
<li><a href="index">Verbrauchsausweis</a></li>
|
|
||||||
{/if}
|
|
||||||
<li><a href="/verbrauchsausweis/verbrauchsausweis-wohngebaeude/">Verbrauchsausweis Wohngebäude</a></li>
|
|
||||||
<li><a href="/energieausweis-erstellen/verbrauchsausweis-wohngebaeude/">Verbrauchsausweis online erstellen</a></li>
|
|
||||||
<li><a href="/verbrauchsausweis/haeufige-fragen-zum-verbrauchsausweis/">Häufige Fragen zum Verbrauchsausweis</a></li>
|
|
||||||
<li>
|
|
||||||
<a href="/verbrauchsausweis/statistiken-zum-verbrauchsausweis/">Statistiken zum Verbrauchsausweis Wohngebäude</a
|
|
||||||
>
|
|
||||||
</li>
|
|
||||||
<li><a href="/verbrauchsausweis/verbrauchsausweis-gewerbe/">Verbrauchsausweis Gewerbe</a></li>
|
|
||||||
<li>
|
|
||||||
<a href="/energieausweis-erstellen/verbrauchsausweis-gewerbe/">Verbrauchsausweis Gewerbe online erstellen</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="/verbrauchsausweis/haeufige-fragen-zum-verbrauchsausweis-gewerbe/">Häufige Fragen zum Verbrauchsausweis Gewerbe</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="/verbrauchsausweis/statistiken-zum-verbrauchsausweis-gewerbe/">Statistiken zum Verbrauchsausweis Gewerbe</a>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<!-- svelte-ignore a11y-mouse-events-have-key-events -->
|
|
||||||
<div
|
|
||||||
class="nav-element dropdown lg:dropdown-right"
|
|
||||||
on:click={dropdown}
|
|
||||||
on:keydown={dropdown}
|
|
||||||
on:mouseover={hover}
|
|
||||||
on:mouseleave={hoverout}
|
|
||||||
>
|
|
||||||
<a href="/bedarfsausweis/" class="nav-element-child"
|
|
||||||
>Bedarfsausweis<span class="dd-symbol-clone">❯</span><span
|
|
||||||
class="dd-symbol">❯</span
|
|
||||||
></a
|
|
||||||
>
|
|
||||||
<ul class="dropdown-content bedarfsausweis">
|
|
||||||
{#if innerWidth < 1023}
|
|
||||||
<li><a href="/bedarfsausweis/">Bedarfsausweis</a></li>
|
|
||||||
{/if}
|
|
||||||
<li><a href="/bedarfsausweis/bedarfsausweis-wohngebaeude/">Bedarfsausweis Wohngebäude</a></li>
|
|
||||||
<li><a href="/energieausweis-erstellen/bedarfsausweis-wohngebaeude/">Bedarfsausweis online erstellen</a></li>
|
|
||||||
<li><a href="/bedarfsausweis/haeufige-fragen-zum-bedarfsausweis/">Häufige Fragen zum Bedarfsausweis</a></li>
|
|
||||||
<li>
|
|
||||||
<a href="/bedarfsausweis/statistiken-zum-bedarfsausweis/">Statistiken zum Bedarfsausweis Wohngebäude</a>
|
|
||||||
</li>
|
|
||||||
<li><a href="/bedarfsausweis/bedarfsausweis-gewerbe/">Bedarfsausweis Gewerbe</a></li>
|
|
||||||
<li><a href="/angebot-anfragen/bedarfsausweis-gewerbe-anfragen">Bedarfsausweis Gewerbe anfragen</a></li>
|
|
||||||
<li>
|
|
||||||
<a href="/bedarfsausweis/haeufige-fragen-zum-bedarfsausweis-gewerbe/">Häufige Fragen zum Bedarfsausweis Gewerbe</a>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="nav-element">
|
|
||||||
<a class="no-dropdown nav-element-child" href="/sanierungsfahrplan"
|
|
||||||
>Sanierungsfahrplan</a
|
|
||||||
>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<!-- svelte-ignore a11y-mouse-events-have-key-events -->
|
|
||||||
<div
|
|
||||||
class="nav-element dropdown lg:dropdown-right"
|
|
||||||
on:click={dropdown}
|
|
||||||
on:keydown={dropdown}
|
|
||||||
on:mouseover={hover}
|
|
||||||
on:mouseleave={hoverout}
|
|
||||||
>
|
|
||||||
<a href="/" class="nav-element-child"
|
|
||||||
>Energieausweis<span class="dd-symbol-clone">❯</span><span
|
|
||||||
class="dd-symbol">❯</span
|
|
||||||
></a
|
|
||||||
>
|
|
||||||
<ul class="dropdown-content energieausweis">
|
|
||||||
{#if innerWidth < 1023}
|
|
||||||
<li><a href="/energieausweis/">Energieausweis</a></li>
|
|
||||||
{/if}
|
|
||||||
<li><a href="/energieausweis/energieausweis-pflicht/">Energieausweis Pflicht</a></li>
|
|
||||||
<li><a href="/energieausweis/energieausweis-kosten/">Energieausweis Kosten</a></li>
|
|
||||||
<li><a href="/energieausweis/energieausweis-haus/">Energieausweis Haus</a></li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<!-- <div class="nav-element">
|
|
||||||
<a
|
|
||||||
class="no-dropdown nav-element-child"
|
|
||||||
href="/energieausweis-aussteller">Energieberater finden</a
|
|
||||||
>
|
|
||||||
</div> -->
|
|
||||||
|
|
||||||
<div class="nav-element bg-secondary/5 py-1 pl-2 text-xs font-bold">
|
|
||||||
FAQ & Hilfe
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<!-- svelte-ignore a11y-mouse-events-have-key-events -->
|
|
||||||
<div
|
|
||||||
class="nav-element dropdown lg:dropdown-right"
|
|
||||||
on:click={dropdown}
|
|
||||||
on:keydown={dropdown}
|
|
||||||
on:mouseover={hover}
|
|
||||||
on:mouseleave={hoverout}
|
|
||||||
>
|
|
||||||
{#if innerWidth > 1023}
|
|
||||||
<a href="/bestellprozess-energieausweis" class="nav-element-child"
|
|
||||||
>Bestellprozess Energieausweis<span class="dd-symbol-clone"
|
|
||||||
>❯</span
|
|
||||||
><span class="dd-symbol">❯</span></a
|
|
||||||
>
|
|
||||||
{:else}
|
|
||||||
<a href="/bestellprozess-energieausweis" class="nav-element-child"
|
|
||||||
>Bestellprozess Energieausweis<span class="dd-symbol-clone"
|
|
||||||
>❯</span
|
|
||||||
><span class="dd-symbol">❯</span></a
|
|
||||||
>
|
|
||||||
{/if}
|
|
||||||
|
|
||||||
<ul class="dropdown-content bestellprozess-energieausweis">
|
|
||||||
{#if innerWidth < 1023}
|
|
||||||
<li>
|
|
||||||
<a href="/bestellprozess-energieausweis"
|
|
||||||
>Bestellprozess Energieausweis</a
|
|
||||||
>
|
|
||||||
</li>
|
|
||||||
{/if}
|
|
||||||
<li>
|
|
||||||
<a
|
|
||||||
href="/bestellprozess-energieausweis/merkblatt-verbrauchsausweis-wohnen/"
|
|
||||||
>Merkblatt Verbrauchsausweis Wohnen</a
|
|
||||||
>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="/energieausweis-erstellen/bedarfsausweis-wohngebaeude/"
|
|
||||||
>Merkblatt Bedarfsausweis Wohnen</a
|
|
||||||
>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="/energieausweis-erstellen/verbrauchsausweis-gewerbe/"
|
|
||||||
>Merkblatt Verbrauchsausweis Gewerbe</a
|
|
||||||
>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<!-- svelte-ignore a11y-mouse-events-have-key-events -->
|
|
||||||
<div
|
|
||||||
class="nav-element dropdown lg:dropdown-right"
|
|
||||||
on:click={dropdown}
|
|
||||||
on:keydown={dropdown}
|
|
||||||
on:mouseover={hover}
|
|
||||||
on:mouseleave={hoverout}
|
|
||||||
>
|
|
||||||
<a href="/geg/" class="nav-element-child"
|
|
||||||
>Gebäudeenergiegesetz (GEG)<span class="dd-symbol-clone">❯</span><span
|
|
||||||
class="dd-symbol">❯</span
|
|
||||||
></a
|
|
||||||
>
|
|
||||||
<ul class="dropdown-content geg">
|
|
||||||
{#if innerWidth < 1023}
|
|
||||||
<li><a href="/geg/">Gebäudeenergiegesetz (GEG)</a></li>
|
|
||||||
{/if}
|
|
||||||
<li><a href="/geg/geg-2024-volltext/">GEG 2024 Volltext</a></li>
|
|
||||||
<li><a href="/geg/enev-zusammenfassung">EnEV Zusammenfassung-Archiv</a></li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="nav-element">
|
|
||||||
<a class="no-dropdown nav-element-child" href="/faq/">FAQ</a>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="nav-element">
|
|
||||||
<a class="no-dropdown nav-element-child" href="/glossar/">Glossar</a>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<!--<div class="nav-element">
|
|
||||||
<a class="no-dropdown nav-element-child lg:rounded-b-xl" href="/kundenbewertungen/"
|
|
||||||
>Kundenbewertungen</a
|
|
||||||
>
|
|
||||||
</div>
|
|
||||||
<div class="nav-element">
|
|
||||||
<a
|
|
||||||
class="no-dropdown nav-element-child lg:!rounded-b-lg xl:!rounded-b-xl"
|
|
||||||
href="/fuer-entwickler/">Für Entwickler</a
|
|
||||||
>
|
|
||||||
</div> -->
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
<style lang="scss">
|
|
||||||
.dd-symbol::before {
|
|
||||||
content: "❯";
|
|
||||||
font-size: 0.95rem;
|
|
||||||
position: absolute;
|
|
||||||
top: 0px;
|
|
||||||
left: -7px;
|
|
||||||
animation-name: flim;
|
|
||||||
animation-duration: 2s;
|
|
||||||
animation-iteration-count: infinite;
|
|
||||||
}
|
|
||||||
|
|
||||||
.dd-symbol {
|
|
||||||
visibility: hidden;
|
|
||||||
}
|
|
||||||
|
|
||||||
.dd-symbol::after {
|
|
||||||
content: "❯";
|
|
||||||
font-size: 0.95rem;
|
|
||||||
position: absolute;
|
|
||||||
top: 0px;
|
|
||||||
right: -7px;
|
|
||||||
animation-name: flim;
|
|
||||||
animation-duration: 2s;
|
|
||||||
animation-delay: 1s;
|
|
||||||
animation-iteration-count: infinite;
|
|
||||||
}
|
|
||||||
|
|
||||||
@keyframes flim {
|
|
||||||
0% {
|
|
||||||
opacity: 0;
|
|
||||||
}
|
|
||||||
16.66% {
|
|
||||||
opacity: 0.25;
|
|
||||||
}
|
|
||||||
33.32% {
|
|
||||||
opacity: 0.5;
|
|
||||||
}
|
|
||||||
49.98% {
|
|
||||||
opacity: 0.75;
|
|
||||||
}
|
|
||||||
66.64% {
|
|
||||||
opacity: 0.5;
|
|
||||||
}
|
|
||||||
83.33% {
|
|
||||||
opacity: 0.25;
|
|
||||||
}
|
|
||||||
100% {
|
|
||||||
opacity: 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
@@ -1,25 +0,0 @@
|
|||||||
<script lang="ts">
|
|
||||||
import { PRICES } from "#lib/constants.js";
|
|
||||||
import { Enums } from "#lib/client/prisma";
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<div id ="cardBAGpromo"
|
|
||||||
class=" box card">
|
|
||||||
|
|
||||||
<div class="grid">
|
|
||||||
|
|
||||||
<h2>Bedarfssausweis Gewerbe</h2>
|
|
||||||
<hr class="mb-4">
|
|
||||||
<img class="w-[70%] justify-self-center !min-w-[100px] mb-[1rem]" src="/images/right-sidebar/UMBE_gewerbegebaeude.svg" alt="Gewerbe Bedarfsausweis"/>
|
|
||||||
<p class="promo tracking-tighter text-[2rem] text-gray-700 pl-6">ab<span class="promo pl-[0.2rem]">{PRICES.BedarfsausweisGewerbe[Enums.AusweisTyp.Standard]}</span>€</p>
|
|
||||||
<a href="./angebot-anfragen/bedarfsausweis-gewerbe-anfragen id="link-BA-promo"
|
|
||||||
class=" w-[90%] justify-self-center text-center text-white font-[700] bg-secondary rounded-md px-3 py-1 mt-2 no-underline text-[1rem]
|
|
||||||
hover:bg-primary
|
|
||||||
" >jetzt Bedarfssausweis anfragen</a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
<style lang="scss">
|
|
||||||
|
|
||||||
</style>
|
|
||||||
@@ -1,25 +0,0 @@
|
|||||||
<script lang="ts">
|
|
||||||
import { PRICES } from "#lib/constants.js";
|
|
||||||
import { Enums } from "#lib/client/prisma";
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<div id ="cardBApromo"
|
|
||||||
class=" box card">
|
|
||||||
|
|
||||||
<div class="grid">
|
|
||||||
|
|
||||||
<h2>Bedarfssausweis Wohngebäude</h2>
|
|
||||||
<hr class="mb-4">
|
|
||||||
<img class="w-[70%] justify-self-center !min-w-[100px] mb-[1rem]" src="/images/right-sidebar/UMBE_wohngebaeude.svg" alt="Wohnhaus Bedarfsausweis"/>
|
|
||||||
<p class="promo tracking-tighter text-[2rem] text-gray-700 pl-6">ab<span class="promo pl-[0.2rem]">{PRICES.BedarfsausweisWohnen[Enums.AusweisTyp.Standard]}</span>€</p>
|
|
||||||
<a href="/energieausweis-erstellen/bedarfsausweis-wohngebaeude/" id="link-BA-promo"
|
|
||||||
class=" w-[90%] justify-self-center text-center text-white font-[700] bg-secondary rounded-md px-3 py-1 mt-2 no-underline text-[1rem]
|
|
||||||
hover:bg-primary
|
|
||||||
" >jetzt Bedarfssausweis erstellen</a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
<style lang="scss">
|
|
||||||
|
|
||||||
</style>
|
|
||||||
@@ -1,43 +0,0 @@
|
|||||||
<script>
|
|
||||||
import { PRICES } from "#lib/constants";
|
|
||||||
import { Enums } from "#lib/client/prisma";
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<div id ="cardPriceinfo" class="box card hidden lg:block">
|
|
||||||
|
|
||||||
<h2>Was wird der Energieausweis kosten?</h2>
|
|
||||||
|
|
||||||
|
|
||||||
<div>Verbrauchsausweis Wohngebäude</div>
|
|
||||||
<div>ab <span class="price">{PRICES.VerbrauchsausweisWohnen[Enums.AusweisTyp.Standard]}€</span> inkl. MwSt.</div>
|
|
||||||
|
|
||||||
<hr class="trenner">
|
|
||||||
<div>Bedarfsausweis Wohngebäude</div>
|
|
||||||
<div>ab <span class="price">{PRICES.BedarfsausweisWohnen[Enums.AusweisTyp.Standard]}€</span> inkl. MwSt.</div>
|
|
||||||
|
|
||||||
<hr class="trenner">
|
|
||||||
<div>Verbrauchsausweis Gewerbe</div>
|
|
||||||
<div>ab <span class="price">{PRICES.VerbrauchsausweisGewerbe[Enums.AusweisTyp.Standard]}€</span> inkl. MwSt.</div>
|
|
||||||
|
|
||||||
<hr class="trenner">
|
|
||||||
<div>Bedarfsausweis Gewerbe</div>
|
|
||||||
<div>ab <span class="price">{PRICES.BedarfsausweisGewerbe[Enums.AusweisTyp.Standard]}€</span> inkl. MwSt.</div>
|
|
||||||
|
|
||||||
<hr class="trenner">
|
|
||||||
<div>GEG-Nachweis Wohngebäude</div>
|
|
||||||
<div>ab <span class="price">{PRICES.GEGNachweisWohnen[Enums.AusweisTyp.Standard]}€</span> inkl. MwSt.</div>
|
|
||||||
|
|
||||||
<hr class="trenner">
|
|
||||||
<div>GEG-Nachweis Gewerbe</div>
|
|
||||||
<div>ab <span class="price">{PRICES.GEGNachweisGewerbe[Enums.AusweisTyp.Standard]}€</span> inkl. MwSt.</div>
|
|
||||||
|
|
||||||
<hr class="mt-2">
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<style lang="postcss">
|
|
||||||
|
|
||||||
.trenner{@apply my-2}
|
|
||||||
.price{@apply font-bold}
|
|
||||||
|
|
||||||
</style>
|
|
||||||
@@ -1,26 +0,0 @@
|
|||||||
<script lang="ts">
|
|
||||||
import { PRICES } from "#lib/constants.js";
|
|
||||||
import { Enums } from "#lib/client/prisma";
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<div id ="cardVAGpromo"
|
|
||||||
class=" box card">
|
|
||||||
|
|
||||||
<div class="grid">
|
|
||||||
|
|
||||||
<h2>Verbrauchsausweis Gewerbe</h2>
|
|
||||||
<hr class="mb-4">
|
|
||||||
<img class="w-[70%] justify-self-center !min-w-[100px]" src="/images/right-sidebar/UMBE_gewerbegebaeude.svg" alt="Gewerbe Verbrauchsausweis"/>
|
|
||||||
<p class="promo tracking-tighter text-[2rem] text-gray-700 pl-6">ab<span class="promo pl-2">{PRICES.VerbrauchsausweisGewerbe[Enums.AusweisTyp.Standard]}</span>€</p>
|
|
||||||
<a href="./energieausweis-erstellen/verbrauchsausweis-gewerbe/" id="link-VA-promo"
|
|
||||||
class=" w-[90%] justify-self-center text-center text-white font-[700] bg-gradient-to-br from-secondary to-secondary-grad rounded-md px-3 py-1 mt-2 no-underline text-[1rem]
|
|
||||||
hover:bg-primary
|
|
||||||
" >Verbrauchsausweis sofort erstellen</a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
<style lang="scss">
|
|
||||||
|
|
||||||
|
|
||||||
</style>
|
|
||||||
@@ -1,34 +0,0 @@
|
|||||||
<script lang="ts">
|
|
||||||
import { PRICES } from "#lib/constants.js";
|
|
||||||
import { Enums } from "#lib/client/prisma";
|
|
||||||
</script>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div id="card-VA-promo" class="box card">
|
|
||||||
<div class="grid">
|
|
||||||
<h2>Verbrauchsausweis Wohngebäude</h2>
|
|
||||||
<hr class="mb-4" />
|
|
||||||
<img
|
|
||||||
class="w-[70%] justify-self-center !min-w-[100px] mb-[1rem]"
|
|
||||||
src="/images/right-sidebar/UMBE_wohngebaeude.svg"
|
|
||||||
alt="Wohnhaus Verbrauchsausweis"
|
|
||||||
/>
|
|
||||||
<p class="promo tracking-tighter text-[2rem] text-gray-700 pl-6">
|
|
||||||
ab<span class="promo pl-2">{PRICES.VerbrauchsausweisWohnen[Enums.AusweisTyp.Standard]}</span
|
|
||||||
>€
|
|
||||||
</p>
|
|
||||||
<a
|
|
||||||
href="./energieausweis-erstellen/verbrauchsausweis-wohngebaeude/"
|
|
||||||
id="link-VA-promo"
|
|
||||||
class=" w-[90%] justify-self-center text-center text-white font-[700] bg-secondary rounded-md px-3 py-1 mt-2 no-underline text-[1rem]
|
|
||||||
hover:bg-primary
|
|
||||||
">jetzt Verbrauchsausweis erstellen</a
|
|
||||||
>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<style lang="scss">
|
|
||||||
</style>
|
|
||||||
@@ -177,7 +177,10 @@ $: standardXL =
|
|||||||
|
|
||||||
<WidgetCardTemplate
|
<WidgetCardTemplate
|
||||||
name="Verbrauchsausweis Wohngebäude"
|
name="Verbrauchsausweis Wohngebäude"
|
||||||
price={PRICES.VerbrauchsausweisWohnen[Enums.AusweisTyp.Standard] + (standardXL ? 10 : 0)}
|
price = {PRICES.VerbrauchsausweisWohnen[standardXL ? Enums.AusweisTyp.standardXL : Enums.AusweisTyp.Standard]}
|
||||||
|
price1 = {PRICES.VerbrauchsausweisWohnen[standardXL ? Enums.AusweisTyp.BeratungXL : Enums.AusweisTyp.Beratung]}
|
||||||
|
price2 = {PRICES.VerbrauchsausweisWohnen[standardXL ? Enums.AusweisTyp.OfflineXL : Enums.AusweisTyp.Offline]}
|
||||||
|
|
||||||
src={'https://online-energieausweis.org/images/partner/'+partner+'/wohngebaeude.svg'}
|
src={'https://online-energieausweis.org/images/partner/'+partner+'/wohngebaeude.svg'}
|
||||||
alt="Wohnhaus Verbrauchsausweis"
|
alt="Wohnhaus Verbrauchsausweis"
|
||||||
variant="einfach"
|
variant="einfach"
|
||||||
@@ -190,9 +193,12 @@ $: standardXL =
|
|||||||
["Ungenau durch individuelles Heizverhalten.", false],
|
["Ungenau durch individuelles Heizverhalten.", false],
|
||||||
["Wird nicht immer bei den Banken akzeptiert.", false]
|
["Wird nicht immer bei den Banken akzeptiert.", false]
|
||||||
]}
|
]}
|
||||||
href_buy={"https://online-energieausweis.org/"+partner+"/energieausweis-erstellen/verbrauchsausweis-wohngebaeude/"}{standardXL ? '?ausweistyp=standardXL' : ''}
|
|
||||||
href_overview={"https://online-energieausweis.org/"+partner+"/energieausweis-erstellen/verbrauchsausweis-wohngebaeude/produkt-uebersicht/"}{standardXL ? '?ausweistyp=standardXL' : ''}
|
href_buy1={`https://online-energieausweis.org/${partner}/energieausweis-erstellen/verbrauchsausweis-wohngebaeude/${standardXL ? '?ausweistyp=standardXL' : ''}`}
|
||||||
></WidgetCardTemplate>
|
href_buy2={`https://online-energieausweis.org/${partner}/energieausweis-erstellen/verbrauchsausweis-wohngebaeude/${standardXL ? '?ausweistyp=BeratungXL' : '?ausweistyp=Beratung'}`}
|
||||||
|
href_buy3={`https://online-energieausweis.org/${partner}/energieausweis-erstellen/verbrauchsausweis-wohngebaeude/${standardXL ? '?ausweistyp=OfflineXL' : '?ausweistyp=Offline'}`}
|
||||||
|
|
||||||
|
></WidgetCardTemplate>
|
||||||
|
|
||||||
{/if}
|
{/if}
|
||||||
|
|
||||||
@@ -200,7 +206,9 @@ $: standardXL =
|
|||||||
|
|
||||||
<WidgetCardTemplate
|
<WidgetCardTemplate
|
||||||
name="Bedarfsausweis Wohngebäude"
|
name="Bedarfsausweis Wohngebäude"
|
||||||
price={PRICES.BedarfsausweisWohnen[Enums.AusweisTyp.Standard] + (standardXL ? 25 : 0)}
|
price = {PRICES.BedarfsausweisWohnen[standardXL ? Enums.AusweisTyp.standardXL : Enums.AusweisTyp.Standard]}
|
||||||
|
price1 = {PRICES.BedarfsausweisWohnen[standardXL ? Enums.AusweisTyp.BeratungXL : Enums.AusweisTyp.Beratung]}
|
||||||
|
price2 = {PRICES.BedarfsausweisWohnen[standardXL ? Enums.AusweisTyp.OfflineXL : Enums.AusweisTyp.Offline]}
|
||||||
src={'https://online-energieausweis.org/images/partner/'+partner+'/wohngebaeude.svg'}
|
src={'https://online-energieausweis.org/images/partner/'+partner+'/wohngebaeude.svg'}
|
||||||
alt="Wohnhaus Bedarfsausweis"
|
alt="Wohnhaus Bedarfsausweis"
|
||||||
variant="fundiert"
|
variant="fundiert"
|
||||||
@@ -213,8 +221,11 @@ $: standardXL =
|
|||||||
["Kann als Grundlage für den ISFP dienen.", true],
|
["Kann als Grundlage für den ISFP dienen.", true],
|
||||||
["Objektivere Berechnungsmethode nach DIN 18599.", true],
|
["Objektivere Berechnungsmethode nach DIN 18599.", true],
|
||||||
]}
|
]}
|
||||||
href_buy={"https://online-energieausweis.org/"+partner+"/energieausweis-erstellen/bedarfsausweis-wohngebaeude/"}{standardXL ? '?ausweistyp=standardXL' : ''}
|
|
||||||
href_overview={"https://online-energieausweis.org/"+partner+"/energieausweis-erstellen/bedarfsausweis-wohngebaeude/produkt-uebersicht"}{standardXL ? '?ausweistyp=standardXL' : ''}
|
href_buy1={`https://online-energieausweis.org/${partner}/energieausweis-erstellen/bedarfsausweis-wohngebaeude/${standardXL ? '?ausweistyp=standardXL' : ''}`}
|
||||||
|
href_buy2={`https://online-energieausweis.org/${partner}/energieausweis-erstellen/bedarfsausweis-wohngebaeude/${standardXL ? '?ausweistyp=BeratungXL' : '?ausweistyp=Beratung'}`}
|
||||||
|
href_buy3={`https://online-energieausweis.org/${partner}/energieausweis-erstellen/bedarfsausweis-wohngebaeude/${standardXL ? '?ausweistyp=OfflineXL' : '?ausweistyp=Offline'}`}
|
||||||
|
|
||||||
></WidgetCardTemplate>
|
></WidgetCardTemplate>
|
||||||
|
|
||||||
{/if}
|
{/if}
|
||||||
@@ -223,7 +234,9 @@ $: standardXL =
|
|||||||
|
|
||||||
<WidgetCardTemplate
|
<WidgetCardTemplate
|
||||||
name="Verbrauchsausweis Gewerbegebäude"
|
name="Verbrauchsausweis Gewerbegebäude"
|
||||||
price={PRICES.VerbrauchsausweisGewerbe[Enums.AusweisTyp.Standard] + (standardXL ? 15 : 0)}
|
price = {PRICES.VerbrauchsausweisGewerbe[standardXL ? Enums.AusweisTyp.standardXL : Enums.AusweisTyp.Standard]}
|
||||||
|
price1 = {PRICES.VerbrauchsausweisGewerbe[standardXL ? Enums.AusweisTyp.BeratungXL : Enums.AusweisTyp.Beratung]}
|
||||||
|
price2 = {PRICES.VerbrauchsausweisGewerbe[standardXL ? Enums.AusweisTyp.OfflineXL : Enums.AusweisTyp.Offline]}
|
||||||
src={'https://online-energieausweis.org/images/partner/'+partner+'/gewerbegebaeude.svg'}
|
src={'https://online-energieausweis.org/images/partner/'+partner+'/gewerbegebaeude.svg'}
|
||||||
alt="Gewerbe Verbrauchsausweis"
|
alt="Gewerbe Verbrauchsausweis"
|
||||||
variant="einfach"
|
variant="einfach"
|
||||||
@@ -237,8 +250,10 @@ $: standardXL =
|
|||||||
["Wird nicht immer bei den Banken akzeptiert.", false],
|
["Wird nicht immer bei den Banken akzeptiert.", false],
|
||||||
["Ungenau durch individuelles Heizverhalten", false],
|
["Ungenau durch individuelles Heizverhalten", false],
|
||||||
]}
|
]}
|
||||||
href_buy={"https://online-energieausweis.org/"+partner+"/energieausweis-erstellen/verbrauchsausweis-gewerbe/"}{standardXL ? '?ausweistyp=standardXL' : ''}
|
|
||||||
href_overview={"https://online-energieausweis.org/"+partner+"/energieausweis-erstellen/verbrauchsausweis-gewerbe/produkt-uebersicht/"}{standardXL ? '?ausweistyp=standardXL' : ''}
|
href_buy1={`https://online-energieausweis.org/${partner}/energieausweis-erstellen/verbrauchsausweis-gewerbe/${standardXL ? '?ausweistyp=standardXL' : ''}`}
|
||||||
|
href_buy2={`https://online-energieausweis.org/${partner}/energieausweis-erstellen/verbrauchsausweis-gewerbe/${standardXL ? '?ausweistyp=BeratungXL' : '?ausweistyp=Beratung'}`}
|
||||||
|
href_buy3={`https://online-energieausweis.org/${partner}/energieausweis-erstellen/verbrauchsausweis-gewerbe/${standardXL ? '?ausweistyp=OfflineXL' : '?ausweistyp=Offline'}`}
|
||||||
></WidgetCardTemplate>
|
></WidgetCardTemplate>
|
||||||
|
|
||||||
{/if}
|
{/if}
|
||||||
@@ -247,7 +262,9 @@ $: standardXL =
|
|||||||
|
|
||||||
<WidgetCardTemplate
|
<WidgetCardTemplate
|
||||||
name="Bedarfsausweis Gewerbegebäude"
|
name="Bedarfsausweis Gewerbegebäude"
|
||||||
price={PRICES.BedarfsausweisGewerbe[Enums.AusweisTyp.Standard]}
|
price = {PRICES.BedarfsausweisGewerbe[standardXL ? Enums.AusweisTyp.standardXL : Enums.AusweisTyp.Standard]}
|
||||||
|
price1 = {PRICES.BedarfsausweisGewerbe[standardXL ? Enums.AusweisTyp.BeratungXL : Enums.AusweisTyp.Beratung]}
|
||||||
|
price2 = {PRICES.BedarfsausweisGewerbe[standardXL ? Enums.AusweisTyp.OfflineXL : Enums.AusweisTyp.Offline]}
|
||||||
src={'https://online-energieausweis.org/images/partner/'+partner+'/gewerbegebaeude.svg'}
|
src={'https://online-energieausweis.org/images/partner/'+partner+'/gewerbegebaeude.svg'}
|
||||||
alt="Gewerbe Bedarfsausweis"
|
alt="Gewerbe Bedarfsausweis"
|
||||||
variant="fundiert"
|
variant="fundiert"
|
||||||
@@ -261,8 +278,10 @@ $: standardXL =
|
|||||||
["Objektiveres, besser vergleichbares Ergebnis.", true],
|
["Objektiveres, besser vergleichbares Ergebnis.", true],
|
||||||
["Zulässig bei Leerstand oder fehlenden Verbräuchen", true],
|
["Zulässig bei Leerstand oder fehlenden Verbräuchen", true],
|
||||||
]}
|
]}
|
||||||
href_buy={"https://online-energieausweis.org/"+partner+"/angebot-anfragen/bedarfsausweis-gewerbe-anfragen/"}
|
|
||||||
href_overview={"https://online-energieausweis.org/"+partner+"/angebot-anfragen/bedarfsausweis-gewerbe-anfragen/produkt-uebersicht/"}
|
href_buy1={`https://online-energieausweis.org/${partner}/angebot-anfragen/bedarfsausweis-gewerbe-anfragen/${standardXL ? '?ausweistyp=standardXL' : ''}`}
|
||||||
|
href_buy2={`https://online-energieausweis.org/${partner}/angebot-anfragen/bedarfsausweis-gewerbe-anfragen/${standardXL ? '?ausweistyp=BeratungXL' : '?ausweistyp=Beratung'}`}
|
||||||
|
|
||||||
></WidgetCardTemplate>
|
></WidgetCardTemplate>
|
||||||
|
|
||||||
{/if}
|
{/if}
|
||||||
@@ -271,7 +290,9 @@ $: standardXL =
|
|||||||
|
|
||||||
<WidgetCardTemplate
|
<WidgetCardTemplate
|
||||||
name="GEG-Nachweis Wohngebäude"
|
name="GEG-Nachweis Wohngebäude"
|
||||||
price={PRICES.GEGNachweisWohnen[Enums.AusweisTyp.Standard]}
|
price = {PRICES.GEGNachweisWohnen[standardXL ? Enums.AusweisTyp.standardXL : Enums.AusweisTyp.Standard]}
|
||||||
|
price1 = {PRICES.GEGNachweisWohnen[standardXL ? Enums.AusweisTyp.BeratungXL : Enums.AusweisTyp.Beratung]}
|
||||||
|
price2 = {PRICES.GEGNachweisWohnen[standardXL ? Enums.AusweisTyp.OfflineXL : Enums.AusweisTyp.Offline]}
|
||||||
src={'https://online-energieausweis.org/images/partner/'+partner+'/wohngebaeude.svg'}
|
src={'https://online-energieausweis.org/images/partner/'+partner+'/wohngebaeude.svg'}
|
||||||
alt="GEG-Nachweis-Wohnen"
|
alt="GEG-Nachweis-Wohnen"
|
||||||
variant="Bauvorlage"
|
variant="Bauvorlage"
|
||||||
@@ -285,8 +306,10 @@ $: standardXL =
|
|||||||
["Berechnung und Bilanzierung nach aktueller DIN 18599.", true],
|
["Berechnung und Bilanzierung nach aktueller DIN 18599.", true],
|
||||||
["Zonierung und Erstellung eines 3D Gebäudemodells.", true],
|
["Zonierung und Erstellung eines 3D Gebäudemodells.", true],
|
||||||
]}
|
]}
|
||||||
href_buy={"https://online-energieausweis.org/"+partner+"/angebot-anfragen/geg-nachweis-wohnen-anfragen/"}
|
|
||||||
href_overview={"https://online-energieausweis.org/"+partner+"/angebot-anfragen/geg-nachweis-wohnen-anfragen/produkt-uebersicht/"}
|
href_buy1={`https://online-energieausweis.org/${partner}/angebot-anfragen/geg-nachweis-wohnen-anfragen/${standardXL ? '?ausweistyp=standardXL' : ''}`}
|
||||||
|
href_buy2={`https://online-energieausweis.org/${partner}/angebot-anfragen/geg-nachweis-wohnen-anfragen/${standardXL ? '?ausweistyp=BeratungXL' : '?ausweistyp=Beratung'}`}
|
||||||
|
|
||||||
|
|
||||||
></WidgetCardTemplate>
|
></WidgetCardTemplate>
|
||||||
|
|
||||||
@@ -296,7 +319,9 @@ $: standardXL =
|
|||||||
|
|
||||||
<WidgetCardTemplate
|
<WidgetCardTemplate
|
||||||
name="GEG-Nachweis Gewerbegebäude"
|
name="GEG-Nachweis Gewerbegebäude"
|
||||||
price={PRICES.GEGNachweisGewerbe[Enums.AusweisTyp.Standard]}
|
price = {PRICES.GEGNachweisGewerbe[standardXL ? Enums.AusweisTyp.standardXL : Enums.AusweisTyp.Standard]}
|
||||||
|
price1 = {PRICES.GEGNachweisGewerbe[standardXL ? Enums.AusweisTyp.BeratungXL : Enums.AusweisTyp.Beratung]}
|
||||||
|
price2 = {PRICES.GEGNachweisGewerbe[standardXL ? Enums.AusweisTyp.OfflineXL : Enums.AusweisTyp.Offline]}
|
||||||
src={'https://online-energieausweis.org/images/partner/'+partner+'/gewerbegebaeude.svg'}
|
src={'https://online-energieausweis.org/images/partner/'+partner+'/gewerbegebaeude.svg'}
|
||||||
alt="GEG-Nachweis-Gewerbe"
|
alt="GEG-Nachweis-Gewerbe"
|
||||||
variant="Bauvorlage"
|
variant="Bauvorlage"
|
||||||
@@ -310,8 +335,10 @@ $: standardXL =
|
|||||||
["Berechnung und Bilanzierung nach aktueller DIN 18599.", true],
|
["Berechnung und Bilanzierung nach aktueller DIN 18599.", true],
|
||||||
["Mehrzonenmodell inkl. Erstellung eines 3D Gebäudemodells.", true],
|
["Mehrzonenmodell inkl. Erstellung eines 3D Gebäudemodells.", true],
|
||||||
]}
|
]}
|
||||||
href_buy={"https://online-energieausweis.org/"+partner+"/angebot-anfragen/geg-nachweis-gewerbe-anfragen/"}
|
|
||||||
href_overview={"https://online-energieausweis.org/"+partner+"/angebot-anfragen/geg-nachweis-gewerbe-anfragen/produkt-uebersicht/"}
|
href_buy1={`https://online-energieausweis.org/${partner}/angebot-anfragen/geg-nachweis-gewerbe-anfragen/${standardXL ? '?ausweistyp=standardXL' : ''}`}
|
||||||
|
href_buy2={`https://online-energieausweis.org/${partner}/angebot-anfragen/geg-nachweis-gewerbe-anfragen/${standardXL ? '?ausweistyp=BeratungXL' : '?ausweistyp=Beratung'}`}
|
||||||
|
|
||||||
></WidgetCardTemplate>
|
></WidgetCardTemplate>
|
||||||
|
|
||||||
{/if}
|
{/if}
|
||||||
|
|||||||
@@ -1,115 +1,148 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import { fade } from "svelte/transition";
|
import { fade } from "svelte/transition";
|
||||||
export let price: number;
|
export let price: number;
|
||||||
|
|
||||||
|
export let price1: number;
|
||||||
|
export let price2: number;
|
||||||
|
|
||||||
export let name: string;
|
export let name: string;
|
||||||
export let variant: string;
|
export let variant: string;
|
||||||
export let services: [string, boolean][];
|
export let services: [string, boolean][];
|
||||||
export let href_buy: string;
|
export let href_buy1: string;
|
||||||
export let href_overview: string;
|
export let href_buy2: string;
|
||||||
|
export let href_buy3: string = "";
|
||||||
|
|
||||||
export let src: string;
|
export let src: string;
|
||||||
export let alt: string;
|
export let alt: string;
|
||||||
export let empfehlung: string;
|
export let empfehlung: string;
|
||||||
export let cta: string;
|
export let cta: string;
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<div
|
<div class="produktbox" transition:fade={{ duration: 0 }}>
|
||||||
class="produktbox"
|
{#if empfehlung === "ja"}
|
||||||
transition:fade={{ duration: 0 }}
|
<div class="empfehlung" aria-label="Empfohlenes Produkt">
|
||||||
>
|
Empfehlung
|
||||||
|
</div>
|
||||||
|
{/if}
|
||||||
|
<h2 class="titel sm:mb-2">{name}</h2>
|
||||||
|
|
||||||
{#if empfehlung === "ja"}
|
<div class="sumCent">
|
||||||
<div class="empfehlung" aria-label="Empfohlenes Produkt">Empfehlung</div>
|
<div class="variante">{variant}</div>
|
||||||
{/if}
|
<img class="image" {src} {alt} />
|
||||||
<h2 class="titel sm:mb-2">{name}</h2>
|
<div class="">
|
||||||
|
<p class="price">
|
||||||
|
ab {price} €
|
||||||
<div class="sumCent">
|
</p>
|
||||||
<div class="variante">{variant}</div>
|
</div>
|
||||||
<img
|
|
||||||
class="image"
|
|
||||||
{src}
|
|
||||||
{alt}
|
|
||||||
/>
|
|
||||||
<div class="">
|
|
||||||
<p class="price">
|
|
||||||
ab {price} €
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="sumCent buttoncols">
|
|
||||||
<a
|
|
||||||
href={href_buy}
|
|
||||||
class="buttoncol"
|
|
||||||
aria-label="Jetzt {name} kaufen"
|
|
||||||
target="_blank"
|
|
||||||
>{cta}
|
|
||||||
</a>
|
|
||||||
|
|
||||||
<a
|
|
||||||
href={href_overview}
|
|
||||||
class="buttoncol"
|
|
||||||
aria-label="{name} Produkt-Übersicht"
|
|
||||||
target="_blank"
|
|
||||||
>Produkt-Übersicht</a
|
|
||||||
>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="sumRows forServices">
|
|
||||||
|
|
||||||
{#each services as [service, check]}
|
</div>
|
||||||
<div class="services">
|
|
||||||
|
<hr class="col-span-2 w-full md:w-[50%] md:m-auto bg-[#ffcc00] h-[2px]" />
|
||||||
|
|
||||||
|
<div class="sumRows forServices">
|
||||||
|
{#each services as [service, check]}
|
||||||
|
<div class="services">
|
||||||
<span>{@html service}</span>
|
<span>{@html service}</span>
|
||||||
<span class={check ? "check" : "check-no"}>{check ? "✔" : "✘"}</span>
|
<span class={check ? "check" : "check-no"}
|
||||||
</div>
|
>{check ? "✔" : "✘"}</span
|
||||||
{/each}
|
>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
{/each}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<hr class="col-span-2 w-full md:w-[50%] md:m-auto bg-[#ffcc00] h-[2px]" />
|
||||||
|
|
||||||
|
<div class="sumCent buttoncols"
|
||||||
|
class:md:grid-cols-3={href_buy3}
|
||||||
|
class:md:grid-cols-2={!href_buy3}>
|
||||||
|
<a
|
||||||
|
href={href_buy1}
|
||||||
|
class="buttoncol"
|
||||||
|
aria-label="Jetzt {name} kaufen"
|
||||||
|
target="_blank"
|
||||||
|
>mach selbst (<span class="inside-price">{price}</span> €)
|
||||||
|
</a>
|
||||||
|
|
||||||
|
<a
|
||||||
|
href={href_buy2}
|
||||||
|
class="buttoncol"
|
||||||
|
aria-label="{name} Produkt-Übersicht"
|
||||||
|
target="_blank"
|
||||||
|
>wir helfen (<span class="inside-price">{price1}</span> €)
|
||||||
|
</a>
|
||||||
|
|
||||||
|
{#if href_buy3}
|
||||||
|
<a
|
||||||
|
href={href_buy3}
|
||||||
|
class="buttoncol"
|
||||||
|
aria-label="{name} Produkt-Übersicht"
|
||||||
|
target="_blank"
|
||||||
|
>wir machen (<span class="inside-price">{price2}</span> €)
|
||||||
|
</a>
|
||||||
|
{/if}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
<style lang="postcss">
|
<style lang="postcss">
|
||||||
|
.produktbox {
|
||||||
.produktbox{@apply grid grid-cols-subgrid col-span-2 grid-rows-subgrid row-span-3 md:row-span-12 bg-black/5 rounded-lg
|
@apply grid grid-cols-subgrid col-span-2 grid-rows-subgrid row-span-3 md:row-span-12 bg-black/5 rounded-lg
|
||||||
px-2 py-2 mt-5;
|
px-2 py-2 mt-5;
|
||||||
box-shadow:2px 2px 8px rgba(0,0,0,0.25);
|
box-shadow: 2px 2px 8px rgba(0, 0, 0, 0.25);
|
||||||
|
|
||||||
.sumCent{@apply justify-self-center col-span-2}
|
.sumCent {
|
||||||
.sumRows{@apply hidden sm:grid grid-rows-subgrid row-span-5 items-center}
|
@apply justify-self-center col-span-2;
|
||||||
.forServices{@apply grid-rows-subgrid row-span-5 items-center col-span-2 justify-center px-6}
|
}
|
||||||
|
.sumRows {
|
||||||
|
@apply hidden sm:grid grid-rows-subgrid row-span-5 items-center;
|
||||||
|
}
|
||||||
|
.forServices {
|
||||||
|
@apply grid-rows-subgrid row-span-5 items-center col-span-2 justify-center px-6;
|
||||||
|
}
|
||||||
|
|
||||||
.image{@apply w-[75%] mx-auto
|
.image {
|
||||||
md:w-[75%] md:pl-0}
|
@apply w-[75%] mx-auto
|
||||||
|
md:w-[75%] md:pl-0;
|
||||||
|
}
|
||||||
|
|
||||||
.buttoncols{@apply grid grid-cols-1 gap-x-4 w-full mb-4
|
.buttoncols {
|
||||||
md:grid-cols-2 md:w-[auto]}
|
@apply grid grid-cols-1 gap-x-4 w-full my-4
|
||||||
|
md:grid-cols-3 md:w-[auto];
|
||||||
|
}
|
||||||
|
|
||||||
.buttoncol{@apply mt-2 md:mt-0 text-center text-black bg-[#ffcc00] rounded-md px-3 py-1 no-underline
|
.buttoncol {
|
||||||
hover:bg-[#222222] hover:text-white}
|
@apply mt-2 md:mt-0 text-center text-black bg-[#ffcc00] rounded-md px-3 py-1 no-underline
|
||||||
|
hover:bg-[#222222] hover:text-white;
|
||||||
|
}
|
||||||
|
.inside-price {
|
||||||
|
@apply font-bold;
|
||||||
|
}
|
||||||
|
|
||||||
.price{@apply tracking-tighter text-[2rem] text-[#222222] pl-12 m-0 -mt-7 text-nowrap text-left;
|
.price {
|
||||||
font-family: "Antique Olive Compact bold";}
|
@apply tracking-tighter text-[2rem] text-[#222222] pl-12 m-0 -mt-7 text-nowrap text-left;
|
||||||
|
font-family: "Antique Olive Compact bold";
|
||||||
|
}
|
||||||
|
|
||||||
.titel {@apply col-span-2 text-center [font-size:_clamp(20px,2.5vw,28px)]}
|
.titel {
|
||||||
.empfehlung{@apply -mt-4 absolute justify-self-end rounded-md bg-red-700 text-white w-fit h-fit px-2 py-1 rotate-1 text-[0.65rem] ring-4 ring-white mr-6}
|
@apply col-span-2 text-center [font-size:_clamp(20px,2.5vw,28px)];
|
||||||
.variante {
|
}
|
||||||
@apply w-fit italic col-span-2 -mt-2 -mb-4 text-[1rem] text-[#222222] justify-self-start ring-2 ring-[#ffcc00] rounded-md pl-[4px] pr-[6px] py-[0px];
|
.empfehlung {
|
||||||
|
@apply -mt-4 absolute justify-self-end rounded-md bg-red-700 text-white w-fit h-fit px-2 py-1 rotate-1 text-[0.65rem] ring-4 ring-white mr-6;
|
||||||
|
}
|
||||||
|
.variante {
|
||||||
|
@apply w-fit italic col-span-2 -mt-2 -mb-4 text-[1rem] text-[#222222] justify-self-start ring-2 ring-[#ffcc00] rounded-md pl-[4px] pr-[6px] py-[0px];
|
||||||
|
}
|
||||||
|
|
||||||
|
.services {
|
||||||
|
@apply hidden text-start py-1 md:grid grid-rows-subgrid row-span-1 items-center md:grid-cols-[1fr_50px];
|
||||||
|
}
|
||||||
|
.services:not(:last-child) {
|
||||||
|
@apply border-b-[1px] border-gray-200;
|
||||||
|
}
|
||||||
|
.check {
|
||||||
|
@apply justify-self-end self-center font-bold text-green-700;
|
||||||
|
}
|
||||||
|
.check-no {
|
||||||
|
@apply justify-self-end self-center font-bold text-red-700;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.services {
|
|
||||||
@apply hidden text-start py-1 md:grid grid-rows-subgrid row-span-1 items-center md:grid-cols-[1fr_50px]
|
|
||||||
}
|
|
||||||
.services:not(:last-child) {
|
|
||||||
@apply border-b-[1px] border-gray-200;
|
|
||||||
}
|
|
||||||
.check {
|
|
||||||
@apply justify-self-end self-center font-bold text-green-700;
|
|
||||||
}
|
|
||||||
.check-no {
|
|
||||||
@apply justify-self-end self-center font-bold text-red-700;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ describe("Verbrauchsausweis für Wohngebäude bearbeiten", async () => {
|
|||||||
}).then((ausweis: VerbrauchsausweisWohnen & { benutzer: Benutzer, aufnahme: Aufnahme & { objekt: Objekt }, rechnung: Rechnung | null }) => {
|
}).then((ausweis: VerbrauchsausweisWohnen & { benutzer: Benutzer, aufnahme: Aufnahme & { objekt: Objekt }, rechnung: Rechnung | null }) => {
|
||||||
cy.login("user@ib-cornelsen.de", "passwort");
|
cy.login("user@ib-cornelsen.de", "passwort");
|
||||||
|
|
||||||
cy.visit(`/energieausweis-erstellen/verbrauchsausweis-wohngebaeude?id=${ausweis.id}`);
|
cy.visit(`/energieausweis-erstellen/verbrauchsausweis-wohngebaeude?ausweis_id=${ausweis.id}`);
|
||||||
|
|
||||||
cy.wait(2000);
|
cy.wait(2000);
|
||||||
|
|
||||||
|
|||||||
@@ -19,6 +19,7 @@ export type Lueftungskonzept = (typeof Lueftungskonzept)[keyof typeof Lueftungsk
|
|||||||
export const BenutzerRolle = {
|
export const BenutzerRolle = {
|
||||||
USER: "USER",
|
USER: "USER",
|
||||||
ADMIN: "ADMIN",
|
ADMIN: "ADMIN",
|
||||||
|
RESELLER: "RESELLER",
|
||||||
} as const;
|
} as const;
|
||||||
|
|
||||||
export type BenutzerRolle = (typeof BenutzerRolle)[keyof typeof BenutzerRolle];
|
export type BenutzerRolle = (typeof BenutzerRolle)[keyof typeof BenutzerRolle];
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import * as z from "zod"
|
import * as z from "zod"
|
||||||
import { Ausstellgrund, AusweisTyp } from "@prisma/client"
|
import { Ausstellgrund, AusweisTyp, Ausweisart } from "@prisma/client"
|
||||||
|
|
||||||
export const BedarfsausweisGewerbeSchema = z.object({
|
export const BedarfsausweisGewerbeSchema = z.object({
|
||||||
id: z.string(),
|
id: z.string(),
|
||||||
@@ -20,6 +20,7 @@ export const BedarfsausweisGewerbeSchema = z.object({
|
|||||||
bauteilaktivierung: z.boolean().nullish(),
|
bauteilaktivierung: z.boolean().nullish(),
|
||||||
klimatisierung: z.boolean().nullish(),
|
klimatisierung: z.boolean().nullish(),
|
||||||
nachweistyp: z.nativeEnum(AusweisTyp),
|
nachweistyp: z.nativeEnum(AusweisTyp),
|
||||||
|
ausweisart: z.nativeEnum(Ausweisart),
|
||||||
created_at: z.date(),
|
created_at: z.date(),
|
||||||
updated_at: z.date(),
|
updated_at: z.date(),
|
||||||
benutzer_id: z.string().describe("Die ID des Benutzers, welchem dieser Ausweis gehört").nullish(),
|
benutzer_id: z.string().describe("Die ID des Benutzers, welchem dieser Ausweis gehört").nullish(),
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import * as z from "zod"
|
import * as z from "zod"
|
||||||
import { Ausstellgrund, AusweisTyp } from "@prisma/client"
|
import { Ausstellgrund, AusweisTyp, Ausweisart } from "@prisma/client"
|
||||||
|
|
||||||
export const BedarfsausweisWohnenSchema = z.object({
|
export const BedarfsausweisWohnenSchema = z.object({
|
||||||
id: z.string(),
|
id: z.string(),
|
||||||
@@ -86,6 +86,7 @@ export const BedarfsausweisWohnenSchema = z.object({
|
|||||||
pruefpunkt_geometrie: z.boolean().nullish(),
|
pruefpunkt_geometrie: z.boolean().nullish(),
|
||||||
pruefpunkt_fenster: z.boolean().nullish(),
|
pruefpunkt_fenster: z.boolean().nullish(),
|
||||||
ausweistyp: z.nativeEnum(AusweisTyp),
|
ausweistyp: z.nativeEnum(AusweisTyp),
|
||||||
|
ausweisart: z.nativeEnum(Ausweisart),
|
||||||
rechnung_id: z.string().nullish(),
|
rechnung_id: z.string().nullish(),
|
||||||
aufnahme_id: z.string().describe("ID der korrespondierenden Gebäudeaufnahme"),
|
aufnahme_id: z.string().describe("ID der korrespondierenden Gebäudeaufnahme"),
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -17,6 +17,7 @@ export const BenutzerSchema = z.object({
|
|||||||
rolle: z.nativeEnum(BenutzerRolle),
|
rolle: z.nativeEnum(BenutzerRolle),
|
||||||
firma: z.string().nullish(),
|
firma: z.string().nullish(),
|
||||||
lex_office_id: z.string().nullish(),
|
lex_office_id: z.string().nullish(),
|
||||||
|
partner_code: z.string().nullish(),
|
||||||
verified: z.boolean(),
|
verified: z.boolean(),
|
||||||
created_at: z.date(),
|
created_at: z.date(),
|
||||||
updated_at: z.date(),
|
updated_at: z.date(),
|
||||||
|
|||||||
@@ -7,5 +7,6 @@ export const BildSchema = z.object({
|
|||||||
name: z.string(),
|
name: z.string(),
|
||||||
created_at: z.date(),
|
created_at: z.date(),
|
||||||
updated_at: z.date(),
|
updated_at: z.date(),
|
||||||
|
benutzer_id: z.string().nullish(),
|
||||||
aufnahme_id: z.string().nullish(),
|
aufnahme_id: z.string().nullish(),
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import * as z from "zod"
|
import * as z from "zod"
|
||||||
import { Ausstellgrund, AusweisTyp } from "@prisma/client"
|
import { Ausstellgrund, AusweisTyp, Ausweisart } from "@prisma/client"
|
||||||
|
|
||||||
export const GEGNachweisGewerbeSchema = z.object({
|
export const GEGNachweisGewerbeSchema = z.object({
|
||||||
id: z.string(),
|
id: z.string(),
|
||||||
@@ -10,6 +10,7 @@ export const GEGNachweisGewerbeSchema = z.object({
|
|||||||
zurueckgestellt: z.boolean().describe("Falls der Nachweis vom Aussteller zurückgestellt wurde, sollte dieser Wert auf true stehen").nullish(),
|
zurueckgestellt: z.boolean().describe("Falls der Nachweis vom Aussteller zurückgestellt wurde, sollte dieser Wert auf true stehen").nullish(),
|
||||||
beschreibung: z.string().describe("Beschreibung des Bauvorhabens").nullish(),
|
beschreibung: z.string().describe("Beschreibung des Bauvorhabens").nullish(),
|
||||||
nachweistyp: z.nativeEnum(AusweisTyp),
|
nachweistyp: z.nativeEnum(AusweisTyp),
|
||||||
|
ausweisart: z.nativeEnum(Ausweisart),
|
||||||
created_at: z.date(),
|
created_at: z.date(),
|
||||||
updated_at: z.date(),
|
updated_at: z.date(),
|
||||||
benutzer_id: z.string().describe("Die ID des Benutzers, welchem dieser Ausweis gehört").nullish(),
|
benutzer_id: z.string().describe("Die ID des Benutzers, welchem dieser Ausweis gehört").nullish(),
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import * as z from "zod"
|
import * as z from "zod"
|
||||||
import { Ausstellgrund, AusweisTyp } from "@prisma/client"
|
import { Ausstellgrund, AusweisTyp, Ausweisart } from "@prisma/client"
|
||||||
|
|
||||||
export const GEGNachweisWohnenSchema = z.object({
|
export const GEGNachweisWohnenSchema = z.object({
|
||||||
id: z.string(),
|
id: z.string(),
|
||||||
@@ -10,6 +10,7 @@ export const GEGNachweisWohnenSchema = z.object({
|
|||||||
zurueckgestellt: z.boolean().describe("Falls der Nachweis vom Aussteller zurückgestellt wurde, sollte dieser Wert auf true stehen").nullish(),
|
zurueckgestellt: z.boolean().describe("Falls der Nachweis vom Aussteller zurückgestellt wurde, sollte dieser Wert auf true stehen").nullish(),
|
||||||
beschreibung: z.string().describe("Beschreibung des Bauvorhabens").nullish(),
|
beschreibung: z.string().describe("Beschreibung des Bauvorhabens").nullish(),
|
||||||
nachweistyp: z.nativeEnum(AusweisTyp),
|
nachweistyp: z.nativeEnum(AusweisTyp),
|
||||||
|
ausweisart: z.nativeEnum(Ausweisart),
|
||||||
created_at: z.date(),
|
created_at: z.date(),
|
||||||
updated_at: z.date(),
|
updated_at: z.date(),
|
||||||
benutzer_id: z.string().describe("Die ID des Benutzers, welchem dieser Ausweis gehört").nullish(),
|
benutzer_id: z.string().describe("Die ID des Benutzers, welchem dieser Ausweis gehört").nullish(),
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ export * from "./gegnachweiswohnen"
|
|||||||
export * from "./klimafaktoren"
|
export * from "./klimafaktoren"
|
||||||
export * from "./objekt"
|
export * from "./objekt"
|
||||||
export * from "./postleitzahlen"
|
export * from "./postleitzahlen"
|
||||||
|
export * from "./provisionen"
|
||||||
export * from "./rechnung"
|
export * from "./rechnung"
|
||||||
export * from "./refreshtokens"
|
export * from "./refreshtokens"
|
||||||
export * from "./tickets"
|
export * from "./tickets"
|
||||||
|
|||||||
13
src/generated/zod/provisionen.ts
Normal file
13
src/generated/zod/provisionen.ts
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
import * as z from "zod"
|
||||||
|
import { Ausweisart, AusweisTyp } from "@prisma/client"
|
||||||
|
|
||||||
|
export const ProvisionenSchema = z.object({
|
||||||
|
id: z.number().int(),
|
||||||
|
ausweisart: z.nativeEnum(Ausweisart),
|
||||||
|
ausweistyp: z.nativeEnum(AusweisTyp),
|
||||||
|
provision_prozent: z.number(),
|
||||||
|
provision_betrag: z.number(),
|
||||||
|
benutzer_id: z.string().nullish(),
|
||||||
|
created_at: z.date(),
|
||||||
|
updated_at: z.date(),
|
||||||
|
})
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
import * as z from "zod"
|
import * as z from "zod"
|
||||||
import { Ausstellgrund, AusweisTyp } from "@prisma/client"
|
import { Ausstellgrund, AusweisTyp, Ausweisart } from "@prisma/client"
|
||||||
|
|
||||||
export const VerbrauchsausweisGewerbeSchema = z.object({
|
export const VerbrauchsausweisGewerbeSchema = z.object({
|
||||||
id: z.string(),
|
id: z.string(),
|
||||||
@@ -52,6 +52,7 @@ export const VerbrauchsausweisGewerbeSchema = z.object({
|
|||||||
created_at: z.date(),
|
created_at: z.date(),
|
||||||
updated_at: z.date(),
|
updated_at: z.date(),
|
||||||
ausweistyp: z.nativeEnum(AusweisTyp),
|
ausweistyp: z.nativeEnum(AusweisTyp),
|
||||||
|
ausweisart: z.nativeEnum(Ausweisart),
|
||||||
pruefpunkt_heizungsalter: z.boolean().nullish(),
|
pruefpunkt_heizungsalter: z.boolean().nullish(),
|
||||||
pruefpunkt_verbrauch_niedrig: z.boolean().nullish(),
|
pruefpunkt_verbrauch_niedrig: z.boolean().nullish(),
|
||||||
pruefpunkt_verbrauch_hoch: z.boolean().nullish(),
|
pruefpunkt_verbrauch_hoch: z.boolean().nullish(),
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import * as z from "zod"
|
import * as z from "zod"
|
||||||
import { Ausstellgrund, AusweisTyp } from "@prisma/client"
|
import { Ausstellgrund, AusweisTyp, Ausweisart } from "@prisma/client"
|
||||||
|
|
||||||
export const VerbrauchsausweisWohnenSchema = z.object({
|
export const VerbrauchsausweisWohnenSchema = z.object({
|
||||||
id: z.string().describe("ID des Ausweises"),
|
id: z.string().describe("ID des Ausweises"),
|
||||||
@@ -38,6 +38,7 @@ export const VerbrauchsausweisWohnenSchema = z.object({
|
|||||||
beschreibung: z.string().nullish(),
|
beschreibung: z.string().nullish(),
|
||||||
kontrolldatei_angefragt: z.boolean().describe("Ob bei der Anfrage der Registriernummer eine Kontrolldatei angefragt wurde").nullish(),
|
kontrolldatei_angefragt: z.boolean().describe("Ob bei der Anfrage der Registriernummer eine Kontrolldatei angefragt wurde").nullish(),
|
||||||
ausweistyp: z.nativeEnum(AusweisTyp),
|
ausweistyp: z.nativeEnum(AusweisTyp),
|
||||||
|
ausweisart: z.nativeEnum(Ausweisart),
|
||||||
created_at: z.date(),
|
created_at: z.date(),
|
||||||
updated_at: z.date(),
|
updated_at: z.date(),
|
||||||
pruefpunkt_heizungsalter: z.boolean().nullish(),
|
pruefpunkt_heizungsalter: z.boolean().nullish(),
|
||||||
|
|||||||
@@ -18,19 +18,19 @@ const { title } = Astro.props;
|
|||||||
---
|
---
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import { H } from "highlight.run";
|
// import { H } from "highlight.run";
|
||||||
|
|
||||||
if (import.meta.env.PROD) {
|
// if (import.meta.env.PROD) {
|
||||||
H.init("1jdkoe52", {
|
// H.init("1jdkoe52", {
|
||||||
serviceName: "online-energieausweis",
|
// serviceName: "online-energieausweis",
|
||||||
backendUrl: "https://highlight-backend.online-energieausweis.org/public",
|
// backendUrl: "https://highlight-backend.online-energieausweis.org/public",
|
||||||
tracingOrigins: true,
|
// tracingOrigins: true,
|
||||||
networkRecording: {
|
// networkRecording: {
|
||||||
enabled: true,
|
// enabled: true,
|
||||||
recordHeadersAndBody: true
|
// recordHeadersAndBody: true
|
||||||
}
|
// }
|
||||||
});
|
// });
|
||||||
}
|
// }
|
||||||
|
|
||||||
window.addEventListener("scroll", () => {
|
window.addEventListener("scroll", () => {
|
||||||
const skala = document.getElementById("skala");
|
const skala = document.getElementById("skala");
|
||||||
@@ -102,6 +102,13 @@ const { title } = Astro.props;
|
|||||||
|
|
||||||
<html lang="de">
|
<html lang="de">
|
||||||
<head>
|
<head>
|
||||||
|
<!-- Google Tag Manager -->
|
||||||
|
<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
|
||||||
|
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
|
||||||
|
j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
|
||||||
|
'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
|
||||||
|
})(window,document,'script','dataLayer','GTM-59QKHH8');</script>
|
||||||
|
<!-- End Google Tag Manager -->
|
||||||
<meta charset="UTF-8" />
|
<meta charset="UTF-8" />
|
||||||
<meta name="viewport" content="width=device-width" />
|
<meta name="viewport" content="width=device-width" />
|
||||||
<link rel="icon" type="image/svg+xml" href="/favicon.jpg" />
|
<link rel="icon" type="image/svg+xml" href="/favicon.jpg" />
|
||||||
@@ -147,6 +154,11 @@ const { title } = Astro.props;
|
|||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
|
<!-- Google Tag Manager (noscript) -->
|
||||||
|
<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-59QKHH8"
|
||||||
|
height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
|
||||||
|
<!-- End Google Tag Manager (noscript) -->
|
||||||
|
|
||||||
<Header {user} />
|
<Header {user} />
|
||||||
|
|
||||||
<main
|
<main
|
||||||
|
|||||||
@@ -1,156 +0,0 @@
|
|||||||
---
|
|
||||||
import "../style/global.css";
|
|
||||||
import "../style/formular.css";
|
|
||||||
import "../../svelte-dialogs.config"
|
|
||||||
import Header from "#components/design/header/AusweisHeaderImmowelt.astro";
|
|
||||||
import Footer from "#components/design/footer/Footer.astro";
|
|
||||||
import { NotificationWrapper } from "@ibcornelsen/ui";
|
|
||||||
|
|
||||||
export interface Props {
|
|
||||||
title: string;
|
|
||||||
}
|
|
||||||
|
|
||||||
const { title } = Astro.props;
|
|
||||||
---
|
|
||||||
<script>
|
|
||||||
window.addEventListener("scroll", (event) => {
|
|
||||||
let scroll = window.scrollY;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
console.log(scroll);
|
|
||||||
if(scroll>=400){
|
|
||||||
|
|
||||||
document.getElementById('skala')?.classList.add('2xl:fixed','2xl:py-4','2xl:top-0','2xl:z-20');
|
|
||||||
document.getElementById('skala')?.classList.remove('w-full');
|
|
||||||
|
|
||||||
|
|
||||||
document.getElementById('skala').style.borderBottom = "3px solid #e6e6e6";
|
|
||||||
|
|
||||||
|
|
||||||
document.getElementById('performance-box').style.maxWidth = "688.5px";
|
|
||||||
document.getElementById('progress-box').style.maxWidth = "688.5px";
|
|
||||||
|
|
||||||
document.getElementById('formInput-1')?.classList.add('2xl:mt-[370px]');
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}else{
|
|
||||||
|
|
||||||
document.getElementById('skala')?.classList.remove('2xl:fixed','2xl:py-4','2xl:top-0','2xl:z-20');
|
|
||||||
document.getElementById('skala')?.classList.add('w-full');
|
|
||||||
|
|
||||||
document.getElementById('skala').style.borderBottom = "none";
|
|
||||||
|
|
||||||
document.getElementById('formInput-1')?.classList.remove('2xl:mt-[370px]');
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
});
|
|
||||||
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<!DOCTYPE html>
|
|
||||||
<html lang="de">
|
|
||||||
<head>
|
|
||||||
<meta charset="UTF-8" />
|
|
||||||
<meta name="viewport" content="width=device-width" />
|
|
||||||
<link rel="icon" type="image/svg+xml" href="/favicon.jpg" />
|
|
||||||
|
|
||||||
<meta
|
|
||||||
name="description"
|
|
||||||
content="✅ Jetzt Ihren Energieausweis online erstellen. Erhalten Sie Ihren online Energieausweis rechtssicher und nach aktueller GEG (vormals EnEV) vom Diplom Ingenieur geprüft."
|
|
||||||
/>
|
|
||||||
<link rel="canonical" href="https://online-energieausweis.org/" />
|
|
||||||
|
|
||||||
<meta property="og:locale" content="de_DE" />
|
|
||||||
<meta property="og:type" content="website" />
|
|
||||||
<meta
|
|
||||||
property="og:title"
|
|
||||||
content="Energieausweis online erstellen - Online Energieausweis"
|
|
||||||
/>
|
|
||||||
<meta
|
|
||||||
property="og:description"
|
|
||||||
content="✅ Jetzt Ihren Energieausweis online erstellen. Erhalten Sie Ihren online Energieausweis rechtssicher und nach aktueller GEG (vormals EnEV) vom Diplom Ingenieur geprüft."
|
|
||||||
/>
|
|
||||||
<meta property="og:url" content="https://online-energieausweis.org/" />
|
|
||||||
<meta property="og:site_name" content="Energieausweis online erstellen" />
|
|
||||||
|
|
||||||
<meta name="twitter:card" content="summary_large_image" />
|
|
||||||
<meta
|
|
||||||
name="twitter:description"
|
|
||||||
content="✅ Jetzt Ihren Energieausweis online erstellen. Erhalten Sie Ihren online Energieausweis rechtssicher und nach aktueller GEG (vormals EnEV) vom Diplom Ingenieur geprüft."
|
|
||||||
/>
|
|
||||||
<meta
|
|
||||||
name="twitter:title"
|
|
||||||
content="Energieausweis online erstellen - Online Energieausweis"
|
|
||||||
/>
|
|
||||||
<meta
|
|
||||||
name="twitter:image"
|
|
||||||
content="https://online-energieausweis.org/images/energieausweis-online-erstellen.jpg"
|
|
||||||
/>
|
|
||||||
<title>
|
|
||||||
{title || 'Energieausweis online erstellen - Online Energieausweis'}
|
|
||||||
</title>
|
|
||||||
</head>
|
|
||||||
|
|
||||||
<body>
|
|
||||||
|
|
||||||
<Header />
|
|
||||||
|
|
||||||
<main
|
|
||||||
class="w-full p-0 grid
|
|
||||||
xs:grid-cols-[minmax(1fr)] xs:gap-1 xs:p-0
|
|
||||||
sm:grid-cols-[minmax(1fr)] sm:gap-1 sm:p-0
|
|
||||||
md:grid-cols-[minmax(1fr)] md:gap-2 md:p-0
|
|
||||||
lg:grid-cols-[minmax(1fr)] lg:gap-3 lg:p-4
|
|
||||||
xl:grid-cols-[minmax(1fr)] xl:gap-4 xl:p-6
|
|
||||||
2xl:grid-cols-[minmax(1fr)] 2xl:gap-5 2xl:p-6
|
|
||||||
">
|
|
||||||
|
|
||||||
|
|
||||||
<article class="box rounded-tl-none p-2 lg:p-12">
|
|
||||||
<slot />
|
|
||||||
</article>
|
|
||||||
|
|
||||||
</main>
|
|
||||||
|
|
||||||
<Footer />
|
|
||||||
<NotificationWrapper client:load />
|
|
||||||
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
|
|
||||||
<style is:global lang="postcss">
|
|
||||||
body {
|
|
||||||
min-height: 100vh;
|
|
||||||
width:100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
article {
|
|
||||||
p, h1, h2, h3, h4, h5, h6 {
|
|
||||||
@apply text-base-content;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
.headline {
|
|
||||||
@apply text-lg;
|
|
||||||
}
|
|
||||||
|
|
||||||
.radio-inline {
|
|
||||||
@apply flex flex-row gap-2;
|
|
||||||
}
|
|
||||||
|
|
||||||
.checkbox-inline {
|
|
||||||
@apply flex flex-row gap-2;
|
|
||||||
}
|
|
||||||
|
|
||||||
</style>
|
|
||||||
@@ -1,156 +0,0 @@
|
|||||||
---
|
|
||||||
import "../style/global.css";
|
|
||||||
import "../style/formular.css";
|
|
||||||
import "../../svelte-dialogs.config"
|
|
||||||
import Header from "#components/design/header/AusweisHeaderImmowelt2.astro";
|
|
||||||
import Footer from "#components/design/footer/Footer.astro";
|
|
||||||
import { NotificationWrapper } from "@ibcornelsen/ui";
|
|
||||||
|
|
||||||
export interface Props {
|
|
||||||
title: string;
|
|
||||||
}
|
|
||||||
|
|
||||||
const { title } = Astro.props;
|
|
||||||
---
|
|
||||||
<script>
|
|
||||||
window.addEventListener("scroll", (event) => {
|
|
||||||
let scroll = window.scrollY;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
console.log(scroll);
|
|
||||||
if(scroll>=400){
|
|
||||||
|
|
||||||
document.getElementById('skala')?.classList.add('2xl:fixed','2xl:py-4','2xl:top-0','2xl:z-20');
|
|
||||||
document.getElementById('skala')?.classList.remove('w-full');
|
|
||||||
|
|
||||||
|
|
||||||
document.getElementById('skala').style.borderBottom = "3px solid #e6e6e6";
|
|
||||||
|
|
||||||
|
|
||||||
document.getElementById('performance-box').style.maxWidth = "688.5px";
|
|
||||||
document.getElementById('progress-box').style.maxWidth = "688.5px";
|
|
||||||
|
|
||||||
document.getElementById('formInput-1')?.classList.add('2xl:mt-[370px]');
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}else{
|
|
||||||
|
|
||||||
document.getElementById('skala')?.classList.remove('2xl:fixed','2xl:py-4','2xl:top-0','2xl:z-20');
|
|
||||||
document.getElementById('skala')?.classList.add('w-full');
|
|
||||||
|
|
||||||
document.getElementById('skala').style.borderBottom = "none";
|
|
||||||
|
|
||||||
document.getElementById('formInput-1')?.classList.remove('2xl:mt-[370px]');
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
});
|
|
||||||
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<!DOCTYPE html>
|
|
||||||
<html lang="de">
|
|
||||||
<head>
|
|
||||||
<meta charset="UTF-8" />
|
|
||||||
<meta name="viewport" content="width=device-width" />
|
|
||||||
<link rel="icon" type="image/svg+xml" href="/favicon.jpg" />
|
|
||||||
|
|
||||||
<meta
|
|
||||||
name="description"
|
|
||||||
content="✅ Jetzt Ihren Energieausweis online erstellen. Erhalten Sie Ihren online Energieausweis rechtssicher und nach aktueller GEG (vormals EnEV) vom Diplom Ingenieur geprüft."
|
|
||||||
/>
|
|
||||||
<link rel="canonical" href="https://online-energieausweis.org/" />
|
|
||||||
|
|
||||||
<meta property="og:locale" content="de_DE" />
|
|
||||||
<meta property="og:type" content="website" />
|
|
||||||
<meta
|
|
||||||
property="og:title"
|
|
||||||
content="Energieausweis online erstellen - Online Energieausweis"
|
|
||||||
/>
|
|
||||||
<meta
|
|
||||||
property="og:description"
|
|
||||||
content="✅ Jetzt Ihren Energieausweis online erstellen. Erhalten Sie Ihren online Energieausweis rechtssicher und nach aktueller GEG (vormals EnEV) vom Diplom Ingenieur geprüft."
|
|
||||||
/>
|
|
||||||
<meta property="og:url" content="https://online-energieausweis.org/" />
|
|
||||||
<meta property="og:site_name" content="Energieausweis online erstellen" />
|
|
||||||
|
|
||||||
<meta name="twitter:card" content="summary_large_image" />
|
|
||||||
<meta
|
|
||||||
name="twitter:description"
|
|
||||||
content="✅ Jetzt Ihren Energieausweis online erstellen. Erhalten Sie Ihren online Energieausweis rechtssicher und nach aktueller GEG (vormals EnEV) vom Diplom Ingenieur geprüft."
|
|
||||||
/>
|
|
||||||
<meta
|
|
||||||
name="twitter:title"
|
|
||||||
content="Energieausweis online erstellen - Online Energieausweis"
|
|
||||||
/>
|
|
||||||
<meta
|
|
||||||
name="twitter:image"
|
|
||||||
content="https://online-energieausweis.org/images/energieausweis-online-erstellen.jpg"
|
|
||||||
/>
|
|
||||||
<title>
|
|
||||||
{title || 'Energieausweis online erstellen - Online Energieausweis'}
|
|
||||||
</title>
|
|
||||||
</head>
|
|
||||||
|
|
||||||
<body>
|
|
||||||
|
|
||||||
<Header />
|
|
||||||
|
|
||||||
<main
|
|
||||||
class="w-full p-0 grid
|
|
||||||
xs:grid-cols-[minmax(1fr)] xs:gap-1 xs:p-0
|
|
||||||
sm:grid-cols-[minmax(1fr)] sm:gap-1 sm:p-0
|
|
||||||
md:grid-cols-[minmax(1fr)] md:gap-2 md:p-0
|
|
||||||
lg:grid-cols-[minmax(1fr)] lg:gap-3 lg:p-4
|
|
||||||
xl:grid-cols-[minmax(1fr)] xl:gap-4 xl:p-6
|
|
||||||
2xl:grid-cols-[minmax(1fr)] 2xl:gap-5 2xl:p-6
|
|
||||||
">
|
|
||||||
|
|
||||||
|
|
||||||
<article class="box rounded-tl-none p-2 lg:p-12">
|
|
||||||
<slot />
|
|
||||||
</article>
|
|
||||||
|
|
||||||
</main>
|
|
||||||
|
|
||||||
<Footer />
|
|
||||||
<NotificationWrapper client:load />
|
|
||||||
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
|
|
||||||
<style is:global lang="postcss">
|
|
||||||
body {
|
|
||||||
min-height: 100vh;
|
|
||||||
width:100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
article {
|
|
||||||
p, h1, h2, h3, h4, h5, h6 {
|
|
||||||
@apply text-base-content;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
.headline {
|
|
||||||
@apply text-lg;
|
|
||||||
}
|
|
||||||
|
|
||||||
.radio-inline {
|
|
||||||
@apply flex flex-row gap-2;
|
|
||||||
}
|
|
||||||
|
|
||||||
.checkbox-inline {
|
|
||||||
@apply flex flex-row gap-2;
|
|
||||||
}
|
|
||||||
|
|
||||||
</style>
|
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user