Compare commits
17 Commits
Author | SHA1 | Date | |
---|---|---|---|
9794c3b0ef | |||
3a3b729cb7 | |||
![]() |
40daf6b447 | ||
![]() |
8a7fa81267 | ||
![]() |
9171cf0275 | ||
d759a573f0 | |||
c1c5e3461c | |||
09962d8720 | |||
![]() |
f8a78060c9 | ||
64e1492d76 | |||
![]() |
73145637c6 | ||
![]() |
877f36fa55 | ||
6c69245bda | |||
![]() |
05704ac899 | ||
![]() |
ad91e6f7a2 | ||
![]() |
f613e60b3e | ||
![]() |
e8d9606028 |
31
.github/workflows/deploy-to-gh-pages.yml
vendored
Normal file
31
.github/workflows/deploy-to-gh-pages.yml
vendored
Normal file
@@ -0,0 +1,31 @@
|
||||
name: Deploy to Github Pages
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [main]
|
||||
pull_request:
|
||||
branches: [main]
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
permissions:
|
||||
# Give the default GITHUB_TOKEN write permission to commit and push the
|
||||
# added or changed files to the repository.
|
||||
contents: write
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
|
||||
- name: Deploy 🚀
|
||||
uses: JamesIves/github-pages-deploy-action@v4
|
||||
with:
|
||||
branch: pages
|
||||
folder: docs
|
||||
clean: true
|
||||
single-commit: true
|
2
.gitignore
vendored
2
.gitignore
vendored
@@ -1,3 +1,5 @@
|
||||
.vscode/*
|
||||
dist/*
|
||||
node_modules/*
|
||||
release/*
|
||||
|
||||
|
2
LICENSE
2
LICENSE
@@ -1,6 +1,6 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2023 Max P.
|
||||
Copyright (c) 2023 M. Passarello
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
|
12
README.md
12
README.md
@@ -1,15 +1,15 @@
|
||||
# AbfallAlarm
|
||||
**AbfallAlarm** ist eine intuitive und benutzerfreundliche WebApp, die darauf abzielt, das Leben der Bürger von Arnsberg zu vereinfachen, indem sie eine zuverlässige Erinnerungsfunktion für den städtischen Abfallkalender bietet. Mit dieser App können Nutzer ihre iCalendar (.ics) Dateien für den Abfallkalender der Stadt Arnsberg hochladen und automatisch Erinnerungen für jeden Abholtermin hinzufügen.
|
||||
[**AbfallAlarm**](https://0xmax42.github.io/AbfallAlarm/) ist eine intuitive und benutzerfreundliche WebApp, die darauf abzielt, das Leben der Bürger von Arnsberg zu vereinfachen, indem sie eine zuverlässige Erinnerungsfunktion für den städtischen Abfallkalender bietet. Mit dieser App können Nutzer ihre iCalendar (.ics) Dateien für den Abfallkalender der Stadt Arnsberg hochladen und automatisch Erinnerungen für jeden Abholtermin hinzufügen.
|
||||
|
||||
## Hauptmerkmale
|
||||
- **Einfaches Hochladen**: Benutzer können ihre bestehenden iCalendar-Dateien des Abfallkalenders direkt in die App hochladen.
|
||||
**Flexible Erinnerungseinstellungen**: Benutzer haben die Möglichkeit, Erinnerungszeiten individuell anzupassen, um ihren persönlichen Bedürfnissen gerecht zu werden.
|
||||
**Automatische Aktualisierung**: Die App fügt automatisch Erinnerungen zu allen Ereignissen in der iCalendar-Datei hinzu und generiert eine neue Datei zur einfachen Integration in persönliche Kalenderanwendungen.
|
||||
**Benutzerfreundliches Interface**: Eine klare und einfache Benutzeroberfläche macht die Bedienung der App für jedermann leicht und intuitiv.
|
||||
**Datenschutzorientiert**: Keine Speicherung persönlicher Daten. Die Verarbeitung erfolgt clientseitig, und die Dateien werden nicht auf dem Server gespeichert.
|
||||
- **Flexible Erinnerungseinstellungen**: Benutzer haben die Möglichkeit, Erinnerungszeiten individuell anzupassen, um ihren persönlichen Bedürfnissen gerecht zu werden.
|
||||
- **Automatische Aktualisierung**: Die App fügt automatisch Erinnerungen zu allen Ereignissen in der iCalendar-Datei hinzu und generiert eine neue Datei zur einfachen Integration in persönliche Kalenderanwendungen.
|
||||
- **Benutzerfreundliches Interface**: Eine klare und einfache Benutzeroberfläche macht die Bedienung der App für jedermann leicht und intuitiv.
|
||||
- **Datenschutzorientiert**: Keine Speicherung persönlicher Daten. Die Verarbeitung erfolgt clientseitig, und die Dateien werden nicht auf dem Server gespeichert.
|
||||
|
||||
## Zielsetzung
|
||||
Unser Ziel ist es, den Bürgern von Arnsberg einen bequemen und effizienten Weg zu bieten, um ihre Abfallentsorgung zu planen und zu verwalten. Durch die Bereitstellung einer zuverlässigen Erinnerungsfunktion wollen wir das städtische Recycling- und Abfallmanagement fördern und dadurch einen Beitrag zum Umweltschutz leisten.
|
||||
|
||||
# Mitwirken
|
||||
Wir heißen Beiträge zur Verbesserung von AbfallAlarm herzlich willkommen! Falls Sie Ideen, Feedback oder Verbesserungsvorschläge haben, zögern Sie bitte nicht, einen Issue zu eröffnen oder einen Pull Request zu stellen.
|
||||
Wir heißen Beiträge zur Verbesserung von AbfallAlarm herzlich willkommen! Falls Sie Ideen, Feedback oder Verbesserungsvorschläge haben, zögern Sie bitte nicht, einen Issue zu eröffnen oder einen Pull Request zu stellen.
|
||||
|
37
bump-version.js
Normal file
37
bump-version.js
Normal file
@@ -0,0 +1,37 @@
|
||||
//bump-version.js
|
||||
const fs = require('fs');
|
||||
const path = require('path');
|
||||
|
||||
const packageJsonPath = path.join(__dirname, 'package.json');
|
||||
const packageJson = require(packageJsonPath);
|
||||
|
||||
// Bestimmen des Versionsteils, der erhöht werden soll
|
||||
const versionPart = process.argv[2]; // 'major', 'minor', 'patch'
|
||||
|
||||
let versionParts = packageJson.version.split('.').map(part => parseInt(part));
|
||||
|
||||
switch (versionPart) {
|
||||
case 'major':
|
||||
versionParts[0]++;
|
||||
versionParts[1] = 0;
|
||||
versionParts[2] = 0;
|
||||
break;
|
||||
case 'minor':
|
||||
versionParts[1]++;
|
||||
versionParts[2] = 0;
|
||||
break;
|
||||
case 'patch':
|
||||
default:
|
||||
versionParts[2]++;
|
||||
break;
|
||||
}
|
||||
|
||||
packageJson.version = versionParts.join('.');
|
||||
|
||||
// Zurückschreiben der package.json
|
||||
fs.writeFileSync(packageJsonPath, JSON.stringify(packageJson, null, 2));
|
||||
console.log(`Version updated to ${packageJson.version}`);
|
||||
|
||||
// Versionsnummer in Datei schreiben..
|
||||
const content = `export const version = '${packageJson.version}';\n`;
|
||||
fs.writeFileSync(path.join(__dirname, 'src', 'version.ts'), content);
|
17
copy-release-docs.js
Normal file
17
copy-release-docs.js
Normal file
@@ -0,0 +1,17 @@
|
||||
//copy-release-docs.js
|
||||
// Zweck: Kopiert die Dateien aus dem Ordner "public" in den Ordner "docs" und die Datei "dist/bundle.js" in den Ordner "docs/bundle.js"
|
||||
const copy = require('fs-extra').copy;
|
||||
|
||||
// Funktion zum Kopieren von Dateien
|
||||
async function copyFiles() {
|
||||
try {
|
||||
await copy('public', 'docs');
|
||||
await copy('dist/bundle.js', 'docs/bundle.js');
|
||||
console.log('Dateien erfolgreich kopiert.');
|
||||
} catch (error) {
|
||||
console.error('Fehler beim Kopieren der Dateien:', error);
|
||||
}
|
||||
}
|
||||
|
||||
// Kopiervorgang starten
|
||||
copyFiles();
|
@@ -1,2 +1,2 @@
|
||||
(()=>{"use strict";var e={953:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=class{constructor(e,t,n){this.reminderPrefix="Erinnerung: ",this.icsContent=e,this.reminderDays=t,this.reminderHours=n}modifyEvents(){return this.icsContent.replace(/BEGIN:VEVENT.*?END:VEVENT/gs,(e=>{const t=e.match(/SUMMARY:(.*)\r\n/),n=t?t[1]:"",r=this.createTriggerValue(),o=this.createVAlarmString(this.reminderPrefix+n,r);return e.replace(/END:VEVENT/,o+"END:VEVENT")}))}createVAlarmString(e,t){let n="BEGIN:VALARM\r\n";return n+="ACTION:DISPLAY\r\n",n+=`DESCRIPTION:${e}\r\n`,n+=`TRIGGER:${t}\r\n`,n+="END:VALARM\r\n",n}createTriggerValue(){const e=0===this.reminderHours?0:24-this.reminderHours;return`-P${this.reminderDays}DT${e}H0M0S`}}},519:function(e,t,n){var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const o=r(n(953));function s(e){!function(){const e=document.getElementById("download-area");e&&e.classList.remove("show-download-area")}();const t=document.getElementById("ical-upload"),n=document.getElementById("reminder-days-select"),r=document.getElementById("reminder-hours-select"),s=parseInt(n.value,10),d=parseInt(r.value,10),i=t.files?t.files[0]:null;if(i){console.log("File uploaded:",i.name);const e=new FileReader;e.onload=e=>{var t;const n=null===(t=e.target)||void 0===t?void 0:t.result;if("string"==typeof n){console.log("File content readable..");const e=new o.default(n,s,d).modifyEvents(),t=function(e){const t=e.lastIndexOf(".");return-1===t?e+" with reminders":e.substring(0,t)+" with reminders"+e.substring(t)}(i.name),r=new Blob([e],{type:"text/calendar"});!function(e,t){const n=document.getElementById("download-area"),r=document.getElementById("download-button");n&&r&&(r.href=t,r.download=e,setTimeout((()=>n.classList.add("show-download-area")),0),document.getElementById("work-button").disabled=!0)}(t,URL.createObjectURL(r))}},e.readAsText(i)}}document.addEventListener("DOMContentLoaded",(()=>{console.log("Loading the WebApp...");const e=document.getElementById("work-button");document.getElementById("ical-upload").addEventListener("change",(()=>{e.disabled=!1})),e.addEventListener("click",s)}))}},t={};!function n(r){var o=t[r];if(void 0!==o)return o.exports;var s=t[r]={exports:{}};return e[r].call(s.exports,s,s.exports,n),s.exports}(519)})();
|
||||
(()=>{"use strict";var e={953:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=class{constructor(e,t,n){this.reminderPrefix="Erinnerung: ",this.icsContent=e,this.reminderDays=t,this.reminderHours=n}modifyEvents(){return this.icsContent.replace(/BEGIN:VEVENT.*?END:VEVENT/gs,(e=>{const t=e.match(/SUMMARY:(.*)\r\n/),n=t?t[1]:"",r=this.createTriggerValue(),o=this.createVAlarmString(this.reminderPrefix+n,r);return e.replace(/END:VEVENT/,o+"END:VEVENT")}))}createVAlarmString(e,t){let n="BEGIN:VALARM\r\n";return n+="ACTION:DISPLAY\r\n",n+=`DESCRIPTION:${e}\r\n`,n+=`TRIGGER:${t}\r\n`,n+="END:VALARM\r\n",n}createTriggerValue(){const e=0===this.reminderHours?0:24-this.reminderHours;let t=this.reminderDays;return 1===t&&(t=0),`-P${t}DT${e}H0M0S`}}},519:function(e,t,n){var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const o=r(n(953)),s=n(412);function d(e){!function(){const e=document.getElementById("download-area");e&&e.classList.remove("show-download-area")}();const t=document.getElementById("ical-upload"),n=document.getElementById("reminder-days-select"),r=document.getElementById("reminder-hours-select"),s=parseInt(n.value,10),d=parseInt(r.value,10),i=t.files?t.files[0]:null;if(i){console.log("File uploaded:",i.name);const e=new FileReader;e.onload=e=>{var t;const n=null===(t=e.target)||void 0===t?void 0:t.result;if("string"==typeof n){console.log("File content readable..");const e=new o.default(n,s,d).modifyEvents(),t=function(e){const t=e.lastIndexOf(".");return-1===t?e+" with reminders":e.substring(0,t)+" with reminders"+e.substring(t)}(i.name),r=new Blob([e],{type:"text/calendar"});!function(e,t){const n=document.getElementById("download-area"),r=document.getElementById("download-button");n&&r&&(r.href=t,r.download=e,setTimeout((()=>n.classList.add("show-download-area")),0),document.getElementById("work-button").disabled=!0)}(t,URL.createObjectURL(r))}},e.readAsText(i)}}document.addEventListener("DOMContentLoaded",(()=>{console.log("Loading the WebApp Version "+s.version+"..."),document.getElementById("footer-version").innerText=`Version: ${s.version}`;const e=document.getElementById("work-button");document.getElementById("ical-upload").addEventListener("change",(()=>{e.disabled=!1})),e.addEventListener("click",d)}))},412:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.version=void 0,t.version="0.1.5"}},t={};!function n(r){var o=t[r];if(void 0!==o)return o.exports;var s=t[r]={exports:{}};return e[r].call(s.exports,s,s.exports,n),s.exports}(519)})();
|
||||
//# sourceMappingURL=bundle.js.map
|
31
docs/github-corner.css
Normal file
31
docs/github-corner.css
Normal file
@@ -0,0 +1,31 @@
|
||||
.github-corner:hover .octo-arm {
|
||||
animation: octocat-wave 560ms ease-in-out
|
||||
}
|
||||
|
||||
@keyframes octocat-wave {
|
||||
|
||||
0%,
|
||||
100% {
|
||||
transform: rotate(0)
|
||||
}
|
||||
|
||||
20%,
|
||||
60% {
|
||||
transform: rotate(-25deg)
|
||||
}
|
||||
|
||||
40%,
|
||||
80% {
|
||||
transform: rotate(10deg)
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width:500px) {
|
||||
.github-corner:hover .octo-arm {
|
||||
animation: none
|
||||
}
|
||||
|
||||
.github-corner .octo-arm {
|
||||
animation: octocat-wave 560ms ease-in-out
|
||||
}
|
||||
}
|
@@ -12,7 +12,7 @@
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<a href="https://github.com/PxaMMaxP/AbfallAlarm" class="github-corner" aria-label="View source on GitHub"><svg
|
||||
<a href="https://github.com/0xmax42/AbfallAlarm" class="github-corner" aria-label="View source on GitHub"><svg
|
||||
width="80" height="80" viewBox="0 0 250 250"
|
||||
style="fill:#64CEAA; color:#fff; position: absolute; top: 0; border: 0; right: 0;" aria-hidden="true">
|
||||
<path d="M0,0 L115,115 L130,115 L142,142 L250,250 L250,0 Z"></path>
|
||||
@@ -44,6 +44,11 @@
|
||||
|
||||
<p>Mit dieser App können Nutzer ihre iCalendar (.ics) Dateien für den Abfallkalender der Stadt Arnsberg
|
||||
hochladen und automatisch Erinnerungen für jeden Abholtermin hinzufügen.</p>
|
||||
|
||||
<p>Laden Sie sich bitte zuerst eine entsprechende <b>iCal-Datei</b> von der Stadt Arnsberg herunter:
|
||||
<a href="https://abfallkalender.arnsberg.de/" target="_blank">Quelle</a>. Kommen Sie danach zurück und
|
||||
folgen Sie den Anweisungen unten.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<!-- Working Area -->
|
||||
@@ -56,7 +61,6 @@
|
||||
<label for="reminder-days-select">Tage vor Abfuhr erinnern:</label>
|
||||
<select id="reminder-days-select">
|
||||
<!-- Options for days -->
|
||||
<option value="0">Am Tag selbst</option>
|
||||
<option value="1" selected>1 Tag</option>
|
||||
<option value="2">2 Tage</option>
|
||||
<option value="3">3 Tage</option>
|
||||
@@ -119,11 +123,13 @@
|
||||
|
||||
<!-- Footer Section -->
|
||||
<div id="footer">
|
||||
M. Passarello | <a href="https://github.com/PxaMMaxP" target="_blank">Github Profil</a>
|
||||
0xMax42 | <a href="https://github.com/0xmax42" target="_blank">Github Profil</a>
|
||||
<br>
|
||||
<span id="footer-version"></span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script src="./bundle.js"></script>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
</html>
|
||||
|
302
package-lock.json
generated
302
package-lock.json
generated
@@ -1,17 +1,19 @@
|
||||
{
|
||||
"name": "abfallalarm",
|
||||
"version": "0.1.0",
|
||||
"version": "0.1.3",
|
||||
"lockfileVersion": 3,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "abfallalarm",
|
||||
"version": "0.1.0",
|
||||
"version": "0.1.3",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"fs-extra": "^11.2.0",
|
||||
"ical.js": "^1.5.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"archiver": "^6.0.1",
|
||||
"ts-loader": "^9.5.1",
|
||||
"typescript": "^5.3.3",
|
||||
"webpack": "^5.89.0",
|
||||
@@ -631,12 +633,99 @@
|
||||
"node": ">= 8"
|
||||
}
|
||||
},
|
||||
"node_modules/archiver": {
|
||||
"version": "6.0.1",
|
||||
"resolved": "https://registry.npmjs.org/archiver/-/archiver-6.0.1.tgz",
|
||||
"integrity": "sha512-CXGy4poOLBKptiZH//VlWdFuUC1RESbdZjGjILwBuZ73P7WkAUN0htfSfBq/7k6FRFlpu7bg4JOkj1vU9G6jcQ==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"archiver-utils": "^4.0.1",
|
||||
"async": "^3.2.4",
|
||||
"buffer-crc32": "^0.2.1",
|
||||
"readable-stream": "^3.6.0",
|
||||
"readdir-glob": "^1.1.2",
|
||||
"tar-stream": "^3.0.0",
|
||||
"zip-stream": "^5.0.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 12.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/archiver-utils": {
|
||||
"version": "4.0.1",
|
||||
"resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-4.0.1.tgz",
|
||||
"integrity": "sha512-Q4Q99idbvzmgCTEAAhi32BkOyq8iVI5EwdO0PmBDSGIzzjYNdcFn7Q7k3OzbLy4kLUPXfJtG6fO2RjftXbobBg==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"glob": "^8.0.0",
|
||||
"graceful-fs": "^4.2.0",
|
||||
"lazystream": "^1.0.0",
|
||||
"lodash": "^4.17.15",
|
||||
"normalize-path": "^3.0.0",
|
||||
"readable-stream": "^3.6.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 12.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/archiver-utils/node_modules/brace-expansion": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
|
||||
"integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"balanced-match": "^1.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/archiver-utils/node_modules/glob": {
|
||||
"version": "8.1.0",
|
||||
"resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz",
|
||||
"integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"fs.realpath": "^1.0.0",
|
||||
"inflight": "^1.0.4",
|
||||
"inherits": "2",
|
||||
"minimatch": "^5.0.1",
|
||||
"once": "^1.3.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=12"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/isaacs"
|
||||
}
|
||||
},
|
||||
"node_modules/archiver-utils/node_modules/minimatch": {
|
||||
"version": "5.1.6",
|
||||
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz",
|
||||
"integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"brace-expansion": "^2.0.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=10"
|
||||
}
|
||||
},
|
||||
"node_modules/array-flatten": {
|
||||
"version": "2.1.2",
|
||||
"resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz",
|
||||
"integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/async": {
|
||||
"version": "3.2.5",
|
||||
"resolved": "https://registry.npmjs.org/async/-/async-3.2.5.tgz",
|
||||
"integrity": "sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/b4a": {
|
||||
"version": "1.6.4",
|
||||
"resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.4.tgz",
|
||||
"integrity": "sha512-fpWrvyVHEKyeEvbKZTVOeZF3VSKKWtJxFIxX/jaVPf+cLbGUSitjb49pHLqPV2BUNNZ0LcoeEGfE/YCpyDYHIw==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/balanced-match": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
|
||||
@@ -757,6 +846,15 @@
|
||||
"node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
|
||||
}
|
||||
},
|
||||
"node_modules/buffer-crc32": {
|
||||
"version": "0.2.13",
|
||||
"resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz",
|
||||
"integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==",
|
||||
"dev": true,
|
||||
"engines": {
|
||||
"node": "*"
|
||||
}
|
||||
},
|
||||
"node_modules/buffer-from": {
|
||||
"version": "1.1.2",
|
||||
"resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
|
||||
@@ -902,6 +1000,21 @@
|
||||
"integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/compress-commons": {
|
||||
"version": "5.0.1",
|
||||
"resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-5.0.1.tgz",
|
||||
"integrity": "sha512-MPh//1cERdLtqwO3pOFLeXtpuai0Y2WCd5AhtKxznqM7WtaMYaOEMSgn45d9D10sIHSfIKE603HlOp8OPGrvag==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"crc-32": "^1.2.0",
|
||||
"crc32-stream": "^5.0.0",
|
||||
"normalize-path": "^3.0.0",
|
||||
"readable-stream": "^3.6.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 12.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/compressible": {
|
||||
"version": "2.0.18",
|
||||
"resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz",
|
||||
@@ -995,6 +1108,31 @@
|
||||
"integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/crc-32": {
|
||||
"version": "1.2.2",
|
||||
"resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz",
|
||||
"integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==",
|
||||
"dev": true,
|
||||
"bin": {
|
||||
"crc32": "bin/crc32.njs"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=0.8"
|
||||
}
|
||||
},
|
||||
"node_modules/crc32-stream": {
|
||||
"version": "5.0.0",
|
||||
"resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-5.0.0.tgz",
|
||||
"integrity": "sha512-B0EPa1UK+qnpBZpG+7FgPCu0J2ETLpXq09o9BkLkEAhdB6Z61Qo4pJ3JYu0c+Qi+/SAL7QThqnzS06pmSSyZaw==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"crc-32": "^1.2.0",
|
||||
"readable-stream": "^3.4.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 12.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/cross-spawn": {
|
||||
"version": "7.0.3",
|
||||
"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
|
||||
@@ -1307,6 +1445,12 @@
|
||||
"integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/fast-fifo": {
|
||||
"version": "1.3.2",
|
||||
"resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz",
|
||||
"integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/fast-json-stable-stringify": {
|
||||
"version": "2.1.0",
|
||||
"resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
|
||||
@@ -1424,6 +1568,19 @@
|
||||
"node": ">= 0.6"
|
||||
}
|
||||
},
|
||||
"node_modules/fs-extra": {
|
||||
"version": "11.2.0",
|
||||
"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz",
|
||||
"integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==",
|
||||
"dependencies": {
|
||||
"graceful-fs": "^4.2.0",
|
||||
"jsonfile": "^6.0.1",
|
||||
"universalify": "^2.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=14.14"
|
||||
}
|
||||
},
|
||||
"node_modules/fs-monkey": {
|
||||
"version": "1.0.5",
|
||||
"resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.5.tgz",
|
||||
@@ -1539,8 +1696,7 @@
|
||||
"node_modules/graceful-fs": {
|
||||
"version": "4.2.11",
|
||||
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
|
||||
"integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==",
|
||||
"dev": true
|
||||
"integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ=="
|
||||
},
|
||||
"node_modules/handle-thing": {
|
||||
"version": "2.0.1",
|
||||
@@ -1987,6 +2143,17 @@
|
||||
"integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/jsonfile": {
|
||||
"version": "6.1.0",
|
||||
"resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
|
||||
"integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
|
||||
"dependencies": {
|
||||
"universalify": "^2.0.0"
|
||||
},
|
||||
"optionalDependencies": {
|
||||
"graceful-fs": "^4.1.6"
|
||||
}
|
||||
},
|
||||
"node_modules/kind-of": {
|
||||
"version": "6.0.3",
|
||||
"resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
|
||||
@@ -2006,6 +2173,48 @@
|
||||
"shell-quote": "^1.8.1"
|
||||
}
|
||||
},
|
||||
"node_modules/lazystream": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.1.tgz",
|
||||
"integrity": "sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"readable-stream": "^2.0.5"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 0.6.3"
|
||||
}
|
||||
},
|
||||
"node_modules/lazystream/node_modules/readable-stream": {
|
||||
"version": "2.3.8",
|
||||
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
|
||||
"integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"core-util-is": "~1.0.0",
|
||||
"inherits": "~2.0.3",
|
||||
"isarray": "~1.0.0",
|
||||
"process-nextick-args": "~2.0.0",
|
||||
"safe-buffer": "~5.1.1",
|
||||
"string_decoder": "~1.1.1",
|
||||
"util-deprecate": "~1.0.1"
|
||||
}
|
||||
},
|
||||
"node_modules/lazystream/node_modules/safe-buffer": {
|
||||
"version": "5.1.2",
|
||||
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
|
||||
"integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/lazystream/node_modules/string_decoder": {
|
||||
"version": "1.1.1",
|
||||
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
|
||||
"integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"safe-buffer": "~5.1.0"
|
||||
}
|
||||
},
|
||||
"node_modules/loader-runner": {
|
||||
"version": "4.3.0",
|
||||
"resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz",
|
||||
@@ -2027,6 +2236,12 @@
|
||||
"node": ">=8"
|
||||
}
|
||||
},
|
||||
"node_modules/lodash": {
|
||||
"version": "4.17.21",
|
||||
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
|
||||
"integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/lru-cache": {
|
||||
"version": "6.0.0",
|
||||
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
|
||||
@@ -2480,6 +2695,12 @@
|
||||
"url": "https://github.com/sponsors/ljharb"
|
||||
}
|
||||
},
|
||||
"node_modules/queue-tick": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/queue-tick/-/queue-tick-1.0.1.tgz",
|
||||
"integrity": "sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/randombytes": {
|
||||
"version": "2.1.0",
|
||||
"resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz",
|
||||
@@ -2536,6 +2757,36 @@
|
||||
"node": ">= 6"
|
||||
}
|
||||
},
|
||||
"node_modules/readdir-glob": {
|
||||
"version": "1.1.3",
|
||||
"resolved": "https://registry.npmjs.org/readdir-glob/-/readdir-glob-1.1.3.tgz",
|
||||
"integrity": "sha512-v05I2k7xN8zXvPD9N+z/uhXPaj0sUFCe2rcWZIpBsqxfP7xXFQ0tipAd/wjj1YxWyWtUS5IDJpOG82JKt2EAVA==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"minimatch": "^5.1.0"
|
||||
}
|
||||
},
|
||||
"node_modules/readdir-glob/node_modules/brace-expansion": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
|
||||
"integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"balanced-match": "^1.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/readdir-glob/node_modules/minimatch": {
|
||||
"version": "5.1.6",
|
||||
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz",
|
||||
"integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"brace-expansion": "^2.0.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=10"
|
||||
}
|
||||
},
|
||||
"node_modules/readdirp": {
|
||||
"version": "3.6.0",
|
||||
"resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
|
||||
@@ -3039,6 +3290,16 @@
|
||||
"node": ">= 0.8"
|
||||
}
|
||||
},
|
||||
"node_modules/streamx": {
|
||||
"version": "2.15.6",
|
||||
"resolved": "https://registry.npmjs.org/streamx/-/streamx-2.15.6.tgz",
|
||||
"integrity": "sha512-q+vQL4AAz+FdfT137VF69Cc/APqUbxy+MDOImRrMvchJpigHj9GksgDU2LYbO9rx7RX6osWgxJB2WxhYv4SZAw==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"fast-fifo": "^1.1.0",
|
||||
"queue-tick": "^1.0.1"
|
||||
}
|
||||
},
|
||||
"node_modules/string_decoder": {
|
||||
"version": "1.3.0",
|
||||
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
|
||||
@@ -3090,6 +3351,17 @@
|
||||
"node": ">=6"
|
||||
}
|
||||
},
|
||||
"node_modules/tar-stream": {
|
||||
"version": "3.1.6",
|
||||
"resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.6.tgz",
|
||||
"integrity": "sha512-B/UyjYwPpMBv+PaFSWAmtYjwdrlEaZQEhMIBFNC5oEG8lpiW8XjcSdmEaClj28ArfKScKHs2nshz3k2le6crsg==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"b4a": "^1.6.4",
|
||||
"fast-fifo": "^1.2.0",
|
||||
"streamx": "^2.15.0"
|
||||
}
|
||||
},
|
||||
"node_modules/terser": {
|
||||
"version": "5.26.0",
|
||||
"resolved": "https://registry.npmjs.org/terser/-/terser-5.26.0.tgz",
|
||||
@@ -3221,6 +3493,14 @@
|
||||
"integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/universalify": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz",
|
||||
"integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==",
|
||||
"engines": {
|
||||
"node": ">= 10.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/unpipe": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
|
||||
@@ -3712,6 +3992,20 @@
|
||||
"resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
|
||||
"integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/zip-stream": {
|
||||
"version": "5.0.1",
|
||||
"resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-5.0.1.tgz",
|
||||
"integrity": "sha512-UfZ0oa0C8LI58wJ+moL46BDIMgCQbnsb+2PoiJYtonhBsMh2bq1eRBVkvjfVsqbEHd9/EgKPUuL9saSSsec8OA==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"archiver-utils": "^4.0.1",
|
||||
"compress-commons": "^5.0.1",
|
||||
"readable-stream": "^3.6.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 12.0.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
12
package.json
12
package.json
@@ -1,10 +1,16 @@
|
||||
{
|
||||
"name": "abfallalarm",
|
||||
"version": "0.1.0",
|
||||
"displayName": "AbfallAlarm",
|
||||
"version": "0.1.5",
|
||||
"description": "AbfallAlarm ist eine intuitive und benutzerfreundliche WebApp, die darauf abzielt, das Leben der Bürger von Arnsberg zu vereinfachen, indem sie eine zuverlässige Erinnerungsfunktion für den städtischen Abfallkalender bietet.",
|
||||
"main": "index.js",
|
||||
"scripts": {
|
||||
"build": "webpack --config webpack.config.js --mode production",
|
||||
"build:patch": "npm run bump-version patch && webpack --config webpack.config.js --mode production && npm run copy-release && npm run zip-release",
|
||||
"build:minor": "npm run copy-release && webpack --config webpack.config.js --mode production && npm run zip-release",
|
||||
"build:major": "npm run bump-version major && webpack --config webpack.config.js --mode production && npm run copy-release && npm run zip-release",
|
||||
"bump-version": "node bump-version.js",
|
||||
"copy-release": "node copy-release-docs.js",
|
||||
"zip-release": "node zip-release.js",
|
||||
"start": "webpack serve --config webpack.config.js --mode development",
|
||||
"stop": "sh stop-server.sh"
|
||||
},
|
||||
@@ -20,6 +26,7 @@
|
||||
},
|
||||
"homepage": "https://github.com/PxaMMaxP/AbfallAlarm#readme",
|
||||
"devDependencies": {
|
||||
"archiver": "^6.0.1",
|
||||
"ts-loader": "^9.5.1",
|
||||
"typescript": "^5.3.3",
|
||||
"webpack": "^5.89.0",
|
||||
@@ -27,6 +34,7 @@
|
||||
"webpack-dev-server": "^4.15.1"
|
||||
},
|
||||
"dependencies": {
|
||||
"fs-extra": "^11.2.0",
|
||||
"ical.js": "^1.5.0"
|
||||
}
|
||||
}
|
@@ -44,6 +44,11 @@
|
||||
|
||||
<p>Mit dieser App können Nutzer ihre iCalendar (.ics) Dateien für den Abfallkalender der Stadt Arnsberg
|
||||
hochladen und automatisch Erinnerungen für jeden Abholtermin hinzufügen.</p>
|
||||
|
||||
<p>Laden Sie sich bitte zuerst eine entsprechende <b>iCal-Datei</b> von der Stadt Arnsberg herunter:
|
||||
<a href="https://abfallkalender.arnsberg.de/" target="_blank">Quelle</a>. Kommen Sie danach zurück und
|
||||
folgen Sie den Anweisungen unten.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<!-- Working Area -->
|
||||
@@ -56,7 +61,6 @@
|
||||
<label for="reminder-days-select">Tage vor Abfuhr erinnern:</label>
|
||||
<select id="reminder-days-select">
|
||||
<!-- Options for days -->
|
||||
<option value="0">Am Tag selbst</option>
|
||||
<option value="1" selected>1 Tag</option>
|
||||
<option value="2">2 Tage</option>
|
||||
<option value="3">3 Tage</option>
|
||||
@@ -120,6 +124,8 @@
|
||||
<!-- Footer Section -->
|
||||
<div id="footer">
|
||||
M. Passarello | <a href="https://github.com/PxaMMaxP" target="_blank">Github Profil</a>
|
||||
<br>
|
||||
<span id="footer-version"></span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
@@ -51,7 +51,11 @@ export default class IcsModifier {
|
||||
const hoursUntilMidnight = this.reminderHours === 0 ? 0 : 24 - this.reminderHours;
|
||||
|
||||
// Use reminderDays directly as daysPart
|
||||
const daysPart = this.reminderDays;
|
||||
let daysPart = this.reminderDays;
|
||||
// daysPart is 1 set to 0
|
||||
if (daysPart === 1) {
|
||||
daysPart = 0;
|
||||
}
|
||||
|
||||
// Create the trigger string
|
||||
const trigger = `-P${daysPart}DT${hoursUntilMidnight}H0M0S`;
|
||||
|
@@ -1,9 +1,13 @@
|
||||
// main.ts
|
||||
import IcsModifier from './IcsModifier';
|
||||
import { version } from './version';
|
||||
|
||||
// Event listener for DOMContentLoaded to initialize the application
|
||||
document.addEventListener('DOMContentLoaded', () => {
|
||||
console.log('Loading the WebApp...');
|
||||
console.log('Loading the WebApp Version ' + version + '...');
|
||||
|
||||
const versionTag = document.getElementById('footer-version') as HTMLSpanElement;
|
||||
versionTag.innerText = `Version: ${version}`;
|
||||
|
||||
const workButton = document.getElementById('work-button') as HTMLButtonElement;
|
||||
const fileInput = document.getElementById('ical-upload') as HTMLInputElement;
|
||||
|
1
src/version.ts
Normal file
1
src/version.ts
Normal file
@@ -0,0 +1 @@
|
||||
export const version = '0.1.5';
|
33
zip-release.js
Normal file
33
zip-release.js
Normal file
@@ -0,0 +1,33 @@
|
||||
const fs = require('fs');
|
||||
const archiver = require('archiver');
|
||||
const path = require('path');
|
||||
|
||||
const packageJsonPath = path.join(__dirname, 'package.json');
|
||||
const packageJson = require(packageJsonPath);
|
||||
|
||||
const outputFileName = `${packageJson.displayName}_v${packageJson.version}.zip`;
|
||||
const outputFilePath = path.join(__dirname, 'release', outputFileName);
|
||||
const sourceDirPath = path.join(__dirname, 'docs');
|
||||
|
||||
// Stellen Sie sicher, dass das Release-Verzeichnis existiert
|
||||
if (!fs.existsSync(path.join(__dirname, 'release'))) {
|
||||
fs.mkdirSync(path.join(__dirname, 'release'));
|
||||
}
|
||||
|
||||
// Erstellen des ZIP-Archivs
|
||||
const output = fs.createWriteStream(outputFilePath);
|
||||
const archive = archiver('zip', {
|
||||
zlib: { level: 9 } // Maximaler Kompressionsgrad
|
||||
});
|
||||
|
||||
output.on('close', function () {
|
||||
console.log(`Archiv ${outputFileName} erstellt: ${archive.pointer()} Bytes`);
|
||||
});
|
||||
|
||||
archive.on('error', function (err) {
|
||||
throw err;
|
||||
});
|
||||
|
||||
archive.pipe(output);
|
||||
archive.directory(sourceDirPath, false);
|
||||
archive.finalize();
|
Reference in New Issue
Block a user