7 Commits

Author SHA1 Message Date
64e1492d76 More scripts added. 2023-12-28 00:04:18 +01:00
6c69245bda Update iCal-Datei download link in index.html, bump package version and copy files to docs folder. 2023-12-27 23:55:29 +01:00
Max P
05704ac899 Merge pull request #3 from PxaMMaxP/dev/init
Github page folder name corrected.
2023-12-27 23:38:26 +01:00
ebf5f3524f Github page folder name corrected. 2023-12-27 23:38:05 +01:00
Max P
ad91e6f7a2 Merge pull request #2 from PxaMMaxP/dev/init
Github page added.
2023-12-27 23:37:16 +01:00
15017dcfb3 Github page added.
Paths corrected.
2023-12-27 23:36:39 +01:00
Max P
f613e60b3e Update LICENSE 2023-12-27 23:26:49 +01:00
13 changed files with 781 additions and 11 deletions

2
.gitignore vendored
View File

@@ -1,3 +1,5 @@
.vscode/* .vscode/*
dist/* dist/*
node_modules/* node_modules/*
release/*

View File

@@ -1,6 +1,6 @@
MIT License 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 Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal of this software and associated documentation files (the "Software"), to deal

33
bump-version.js Normal file
View File

@@ -0,0 +1,33 @@
//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}`);

17
copy-release-docs.js Normal file
View 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();

2
docs/bundle.js Normal file
View File

@@ -0,0 +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)})();
//# sourceMappingURL=bundle.js.map

31
docs/github-corner.css Normal file
View 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
}
}

170
docs/index.css Normal file
View File

@@ -0,0 +1,170 @@
html {
min-height: 100vh;
min-width: 100vw;
}
body {
margin: 0;
padding: 0;
width: 100vw;
min-height: 100vh;
height: auto;
display: flex;
align-items: center;
text-align: center;
font-family: Arial, sans-serif;
}
#app-content {
width: 60%;
max-width: 880px;
padding: 30px 40px;
margin: auto;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
background-color: #ffffff;
background-image: linear-gradient(to right, #ffffff, #e6e6e6);
box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2);
border-radius: 25px;
}
#app-content .header {
width: 90%;
height: auto;
margin-bottom: 10px;
font-size: xx-large;
}
#app-content .logo {
width: 30%;
height: auto;
margin-bottom: 20px;
}
#app-content .description {
margin-bottom: 20px;
}
#working-area .areas {
margin-bottom: 25px;
}
#reminder-setting-area .reminder-days,
#reminder-setting-area .reminder-hours {
margin-bottom: 10px;
}
#upload-area .button,
#upload-area .file-input {
padding: 10px 15px;
margin-bottom: 15px;
border: none;
border-radius: 5px;
cursor: pointer;
font-size: 16px;
transition: background-color 0.3s, box-shadow 0.3s;
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
outline: none;
}
#upload-area .button:hover,
#upload-area .file-input:hover {
background-color: #007BFF;
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.3);
}
#upload-area .file-input {
display: block;
width: 80%;
color: #555;
background-color: #f9f9f9;
}
#upload-area .button {
background-color: #28a745;
color: white;
}
#upload-area .button:disabled {
background-color: #cccccc;
cursor: not-allowed;
}
#upload-area #ical-upload {
opacity: 0;
position: absolute;
z-index: -1;
}
#upload-area #ical-upload-label {
background-color: #007bff;
color: white;
display: inline-block;
cursor: pointer;
text-align: center;
}
#upload-area #ical-upload-label:hover {
background-color: #0056b3;
}
#app-content #download-area {
display: block;
overflow: hidden;
height: 0;
opacity: 0;
transition: height 1.5s ease, opacity 0.5s ease;
}
#app-content #download-area.show-download-area {
height: 175px;
opacity: 1;
}
#app-content #download-button {
background-color: #4CAF50;
color: white;
padding: 10px 20px;
text-align: center;
text-decoration: none;
display: inline-block;
font-size: 16px;
margin: 4px 2px;
cursor: pointer;
border: none;
border-radius: 5px;
transition: background-color 0.3s;
}
#app-content #download-button:hover {
background-color: #45a049;
}
#app-content #footer {
margin-top: 30px;
}
h1,
a {
text-wrap: nowrap;
}
@media (max-width: 768px) {
h1 {
font-size: 2rem;
}
h2 {
font-size: 1.5rem;
}
p {
font-size: 1rem;
}
#app-content #download-area.show-download-area {
height: 290px;
}
}

134
docs/index.html Normal file
View File

@@ -0,0 +1,134 @@
<!DOCTYPE html>
<html>
<head>
<title>AbfallAlarm</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1"> <!-- Responsive design meta tag -->
<meta name="description" content="AbfallAlarm, eine benutzerfreundliche WebApp, die darauf abzielt, das Leben der
Bürger von Arnsberg zu vereinfachen.">
<link rel="stylesheet" href="./index.css">
<link rel="stylesheet" href="./github-corner.css">
</head>
<body>
<a href="https://github.com/PxaMMaxP/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>
<path
d="M128.3,109.0 C113.8,99.7 119.0,89.6 119.0,89.6 C122.0,82.7 120.5,78.6 120.5,78.6 C119.2,72.0 123.4,76.3 123.4,76.3 C127.3,80.9 125.5,87.3 125.5,87.3 C122.9,97.6 130.6,101.9 134.4,103.2"
fill="currentColor" style="transform-origin: 130px 106px;" class="octo-arm"></path>
<path
d="M115.0,115.0 C114.9,115.1 118.7,116.5 119.8,115.4 L133.7,101.6 C136.9,99.2 139.9,98.4 142.2,98.6 C133.8,88.0 127.5,74.4 143.8,58.0 C148.5,53.4 154.0,51.2 159.7,51.0 C160.3,49.4 163.2,43.6 171.4,40.1 C171.4,40.1 176.1,42.5 178.8,56.2 C183.1,58.6 187.2,61.8 190.9,65.4 C194.5,69.0 197.7,73.2 200.1,77.6 C213.8,80.2 216.3,84.9 216.3,84.9 C212.7,93.1 206.9,96.0 205.4,96.6 C205.1,102.4 203.0,107.8 198.3,112.5 C181.9,128.9 168.3,122.5 157.7,114.1 C157.9,116.9 156.7,120.9 152.7,124.9 L141.0,136.5 C139.8,137.7 141.6,141.9 141.8,141.8 Z"
fill="currentColor" class="octo-body"></path>
</svg></a>
<div id="app-content">
<!-- Header Section -->
<div class="header">
<h1>Abfall Alarm</h1>
</div>
<!-- Logo Section -->
<div class="logo">
<img src="logo.svg" alt="Abfall Alarm Logo">
</div>
<!-- Description Text -->
<div class="description">
<p><b>Abfall Alarm</b> 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.</p>
<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://web.c-trace.de/arnsberg-abfallkalender/(S(ujf4cewvsnomrdo0l5zcrkph))/"
target="_blank">Quelle</a>. Kommen Sie danach zurück und folgen Sie den Anweisungen unten.
</p>
</div>
<!-- Working Area -->
<div class="working-area">
<!-- Reminder Settings -->
<div id="reminder-setting-area" class="areas">
<h2>1. Erinnerung einstellen</h2>
<p>Wählen Sie aus, wann Sie an die Abfuhr erinnert werden möchten.</p>
<div class="reminder-days">
<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>
<option value="4">4 Tage</option>
<option value="5">5 Tage</option>
<option value="6">6 Tage</option>
<option value="7">7 Tage</option>
</select>
</div>
<div class="reminder-hours">
<label for="reminder-hours-select">Uhrzeit:</label>
<select id="reminder-hours-select">
<!-- Options for hours -->
<option value="0">00:00 Uhr</option>
<option value="1">01:00 Uhr</option>
<option value="2">02:00 Uhr</option>
<option value="3">03:00 Uhr</option>
<option value="4">04:00 Uhr</option>
<option value="5">05:00 Uhr</option>
<option value="6">06:00 Uhr</option>
<option value="7">07:00 Uhr</option>
<option value="8">08:00 Uhr</option>
<option value="9">09:00 Uhr</option>
<option value="10">10:00 Uhr</option>
<option value="11">11:00 Uhr</option>
<option value="12" selected>12:00 Uhr</option>
<option value="13">13:00 Uhr</option>
<option value="14">14:00 Uhr</option>
<option value="15">15:00 Uhr</option>
<option value="16">16:00 Uhr</option>
<option value="17">17:00 Uhr</option>
<option value="18">18:00 Uhr</option>
<option value="19">19:00 Uhr</option>
<option value="20">20:00 Uhr</option>
<option value="21">21:00 Uhr</option>
<option value="22">22:00 Uhr</option>
<option value="23">23:00 Uhr</option>
</select>
</div>
</div>
<!-- Upload Section -->
<div id="upload-area" class="areas">
<h2>2. Abfallkalender hochladen</h2>
<p>Wählen Sie Ihren Abfallkalender aus und klicken Sie danach auf den 'Kalender bearbeiten'-Button.</p>
<!-- Hidden upload field for .ical file and label as a button replacement -->
<input type="file" id="ical-upload" accept=".ics">
<label for="ical-upload" id="ical-upload-label" class="button file-input">Datei auswählen...</label>
<button id="work-button" class="button" disabled>Kalender bearbeiten..</button>
</div>
<!-- Download Section -->
<div id="download-area" class="areas">
<h2>3. Abfallkalender inkl. Erinnerungen herunterladen</h2>
<p>Wenn Sie Ihren Abfallkalender inkl. Erinnerungen herunterladen möchten, klicken Sie auf den
folgenden Button.</p>
<a id="download-button">Herunterladen</a>
</div>
</div>
<!-- Footer Section -->
<div id="footer">
M. Passarello | <a href="https://github.com/PxaMMaxP" target="_blank">Github Profil</a>
</div>
</div>
<script src="./bundle.js"></script>
</body>
</html>

41
docs/logo.svg Normal file
View File

@@ -0,0 +1,41 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Creator: CorelDRAW 2019 (64-Bit) -->
<svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" version="1.1" style="shape-rendering:geometricPrecision; text-rendering:geometricPrecision; image-rendering:optimizeQuality; fill-rule:evenodd; clip-rule:evenodd"
viewBox="174 330 710 715"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:xodm="http://www.corel.com/coreldraw/odm/2003">
<defs>
<style type="text/css">
<![CDATA[
.fil1 {fill:#363636}
.fil5 {fill:#383838}
.fil2 {fill:#79929E}
.fil4 {fill:#9DBACD}
.fil3 {fill:#D04C7C}
.fil6 {fill:#E0EEFE}
.fil0 {fill:#E1EFFF}
]]>
</style>
</defs>
<g id="Ebene_x0020_1">
<metadata id="CorelCorpID_0Corel-Layer"/>
<g id="_1996037455472">
<path class="fil0" d="M366.28 926.47l25.19 0 -24.46 -267.19c-8.66,-3.19 -11.8,-1.89 -17.69,-8.14 -11.18,-11.85 -9.02,-43.36 6.61,-54.99 12.75,-9.48 24.1,-7.45 41.88,-7.45 16.29,0 32.59,0 48.89,0 1.47,-11.21 -5.22,-40.73 17.98,-45.72 7.52,-1.61 120,-1.61 127.47,0.01 7.76,1.68 14.46,8.81 16.55,16.11 2.4,8.41 0.21,20.25 1.44,29.6 16.75,0 33.5,0 50.25,0 17.63,0 29.17,-1.47 41.29,8.04 15,11.75 20.03,52.01 -2.21,59.95 -2.14,0.77 -3.36,0.74 -5.32,1.31 -6.45,1.87 5.19,-1.86 -2.22,0.74l-25.52 254.91 151.86 0.11c23.42,-0.77 35.23,-16.47 35.26,-40.35 0.03,-36.32 1.67,-365.52 -0.61,-377.57l-649 0c-2.35,12.38 -0.54,335.37 -0.59,372.13 -0.03,19.18 2.65,40.15 28.19,45.09 11.58,2.25 88.21,0.77 110.51,0.72 15.61,-0.04 21.18,-1.75 24.25,12.69z"/>
<path class="fil1" d="M390.29 658.32l275.54 0c-4.71,73.71 -13.22,148.56 -20.04,222.14 -3.44,37.08 -6.84,73.76 -10.34,110.88 -0.99,10.52 -3.74,15.08 -14.44,15.38 -44.08,1.22 -106.41,-0.03 -152.45,-0.03 -29.19,0 -45.17,4.63 -47.14,-14.17 -3.85,-36.87 -6.95,-73.91 -10.3,-110.81 -6.73,-74.11 -15.44,-149.18 -20.83,-223.39zm-98.22 -325.05l9.41 0c3.86,0.53 7.62,1.71 11.1,3.6 18.09,9.83 18.56,22.88 18.56,42.66l46.26 0c0,-16.96 -0.28,-23.23 7.32,-33.49 5.93,-8 14.78,-12.16 25.07,-12.77l5.53 0c25.39,1.46 32.83,22.6 32.83,46.26l44.9 0c0,-15.24 0.39,-24.79 7.79,-33.02 6.76,-7.53 14.56,-11.94 22.55,-13.24l10.06 0c7.99,1.3 15.79,5.71 22.55,13.24 7.4,8.23 7.79,17.78 7.79,33.02l44.9 0c0,-14.38 1.39,-24.76 7.91,-32.91 6.03,-7.55 14.75,-12.15 23.76,-13.35l9.42 0c3.86,0.53 7.62,1.71 11.1,3.6 4.55,2.48 8.25,5.14 11.24,9.17 7.6,10.26 7.32,16.53 7.32,33.49l46.26 0c0,-19.78 0.47,-32.83 18.56,-42.66 3.48,-1.89 7.24,-3.07 11.1,-3.6l9.41 0c9.02,1.2 17.74,5.8 23.77,13.35 6.52,8.15 7.91,18.53 7.91,32.91 33.46,0 51.07,-1.04 70.19,25.04 2.08,2.85 3.32,4.67 4.67,7.58 3.79,8.22 5.05,15.48 5.41,23.86l0 23.79 0 371.43 0 53.2c-1.64,13.18 -6.11,24.82 -17.11,35.82 -23.79,23.79 -54.34,17.1 -89.01,17.1 -35.38,0 -70.75,0 -106.13,0 -0.68,8.21 -2.48,18.33 -2.71,27.22 -0.23,8.71 -2.37,18.39 -2.73,27.2 -1.09,26.74 -15.35,35.56 -33.26,38.1l-45.65 0 -1.83 0 -1.83 0 -1.82 0 -1.83 0 -1.83 0 -1.83 0 -1.83 0 -1.83 0 -1.82 0 -1.83 0 -1.83 0 -1.83 0 -1.83 0 -1.83 0 -1.82 0 -1.83 0 -1.83 0 -1.83 0 -1.83 0 -1.82 0 -1.83 0 -1.83 0 -1.83 0 -1.83 0 -1.83 0 -1.82 0 -1.83 0 -1.83 0 -1.83 0 -1.83 0 -1.83 0 -1.82 0 -1.83 0 -1.83 0 -1.83 0 -1.83 0 -1.82 0 -1.83 0 -1.83 0 -1.83 0 -1.83 0 -1.83 0 -1.82 0 -1.83 0 -1.83 0 -1.83 0 -1.83 0 -1.83 0 -1.82 0 -1.83 0 -1.83 0 -1.83 0 -1.83 0 -1.82 0 -1.83 0 -1.83 0 -1.83 0 -1.83 0 -1.83 0 -1.82 0 -1.83 0 -1.83 0 -1.83 0 -1.83 0 -28.47 0c-15.64,-1.24 -30.24,-6.43 -34.93,-25.04 -3.57,-14.19 -6.18,-73.43 -8.24,-78.36l-24.46 -267.19c-8.66,-3.19 -11.8,-1.89 -17.69,-8.14 -11.18,-11.85 -9.02,-43.36 6.61,-54.99 12.75,-9.48 24.1,-7.45 41.88,-7.45 16.29,0 32.59,0 48.89,0 1.47,-11.21 -5.22,-40.73 17.98,-45.72 7.52,-1.61 120,-1.61 127.47,0.01 7.76,1.68 14.46,8.81 16.55,16.11 2.4,8.41 0.21,20.25 1.44,29.6 16.75,0 33.5,0 50.25,0 17.63,0 29.17,-1.47 41.29,8.04 15,11.75 20.03,52.01 -2.21,59.95 -2.14,0.77 -3.36,0.74 -5.32,1.31 -6.45,1.87 5.19,-1.86 -2.22,0.74l-25.52 254.91 151.86 0.11c23.42,-0.77 35.23,-16.47 35.26,-40.35 0.03,-36.32 1.67,-365.52 -0.61,-377.57l-649 0c-2.35,12.38 -0.54,335.37 -0.59,372.13 -0.03,19.18 2.65,40.15 28.19,45.09 11.58,2.25 88.21,0.77 110.51,0.72 15.61,-0.04 21.18,-1.75 24.25,12.69 -2.71,7.1 -2.79,10.97 -16.04,10.94 -23.74,-0.06 -110.51,2.16 -128.25,-2.47 -10.34,-2.69 -17.71,-7.97 -24.95,-14.51 -1.46,-1.31 -4.31,-4.88 -5.67,-6.58 -1.73,-2.17 -3.77,-5.7 -5.27,-8.33 -5.64,-9.86 -5.97,-21.05 -5.98,-32.38l0 -0.55 0 -0.54 0 -364.63 0 -65.15c0.88,-13.75 2.83,-25.88 6.81,-32.8 5.93,-10.28 15.75,-20.25 26.75,-24.95 15.17,-6.47 26.32,-4.99 46.71,-4.99 0,-14.38 1.39,-24.76 7.91,-32.91 6.03,-7.55 14.75,-12.15 23.77,-13.35zm398.64 301.88l-325.56 0c-0.84,-29.9 8.38,-23.26 70.75,-23.26l231.29 0c20.96,-0.04 25.13,0.74 23.52,23.26zm-220.11 -69.7l115.93 0.59 -0.26 22.45 -4.79 0.24 -106.13 0.07 -4.95 -0.41 0.2 -22.94zm-267.28 -92.96c0,-41.26 -6.5,-74.84 57.9,-69.3 0.88,14.81 -0.31,22.44 7.87,32.91 13.62,17.42 40.14,18.06 55.19,-0.81 6.7,-8.41 6.03,-19.83 7.2,-32.38l45.74 0c1.09,13.59 0.12,24.55 7.65,33.12 16.36,18.62 41.76,17.12 55.16,-0.71 8.55,-11.37 6.41,-17.42 7.29,-32.36l45.9 -0.05c1.69,15.55 -0.36,21.03 7.56,32.83 4.47,6.67 14.86,13.55 27.64,13.55 34.55,-0.01 33.68,-32.43 35.2,-46.4l45.9 0.3c0.88,14.81 -0.32,22.44 7.87,32.91 13.62,17.42 40.14,18.06 55.19,-0.81 6.7,-8.41 6.03,-19.83 7.03,-32.38l45.91 0c1.09,13.59 0.12,24.55 7.65,33.12 6,6.82 14.88,13.46 27.91,13.25 13.31,-0.21 22.14,-7.16 27.25,-13.96 8.55,-11.37 6.41,-17.42 7.29,-32.13 21.49,-1.85 40.62,-0.19 50.15,12.75 11.11,15.09 7.75,35.3 7.75,56.55l-650.2 0zm553.76 -115.15c17.7,-6.2 15.16,17.4 15.16,28.99 0,12.15 4.06,35.19 -7.61,39.04 -19.31,6.36 -15.63,-21.2 -15.63,-29.51 0,-7.72 -0.09,-15.48 -0.04,-23.19 0.06,-9.17 0.83,-12.78 8.12,-15.33zm-115.93 -0.16c17.23,-5.23 14.99,16.18 14.99,29.15 0,11.6 4.1,35.02 -7.22,38.93 -21,7.26 -16.29,-28.09 -16.07,-52.57 0.07,-8.04 0.62,-13.17 8.3,-15.51zm-232.37 0.16c17.7,-6.2 15.16,17.4 15.16,28.99 0,12.15 4.06,35.19 -7.61,39.04 -19.31,6.36 -15.63,-21.2 -15.63,-29.51 0,-20.06 -3.39,-34.5 8.08,-38.52zm-115.93 -0.16c17.23,-5.23 14.99,16.18 14.99,29.15 0,11.6 4.1,35.02 -7.22,38.93 -18.44,6.38 -16.02,-16.9 -16.02,-29.4 0,-18.38 -3.41,-35.13 8.25,-38.68zm231.89 0.35c6.52,-2.78 12.99,1.67 14.65,6.92 1.23,3.87 0.66,16.84 0.66,21.88 0,12.25 3.64,34.91 -6.82,38.86 -18.76,7.08 -16.44,-16.29 -16.44,-29.33 0,-22.14 -3.4,-33.48 7.95,-38.33z"/>
<path class="fil2" d="M516.92 972.73c-1.28,-13.11 -0.09,-180.65 -0.09,-209.53 0,-9.17 -2.86,-25.25 3.28,-31.46 7.48,-7.56 18.78,-2.56 19.82,7.35l0.08 209.15c0,9.18 2.85,25.19 -3.31,31.43 -6.95,7.05 -18.85,2.68 -19.78,-6.94zm102.85 -217.69c-4.45,45.92 -9.3,91.68 -13.76,137.43 -2.22,22.76 -4.67,45.44 -6.8,68.07 -1.02,10.78 -0.85,24.54 -14.62,22.63 -12.2,-1.69 -9.4,-15.1 -8.21,-26.81 4.64,-45.77 9.13,-91.54 13.73,-137.34 2.28,-22.65 4.54,-45.33 6.8,-68.03 1.13,-11.27 0.99,-24.12 14.22,-22.74 13.4,1.4 9.66,16.23 8.64,26.79zm-183.39 -6.8c-1.08,-10.7 0.52,-24.29 14.8,-19.39 9.39,3.21 8.34,17.42 9.48,28.9l20.69 206.71c1.13,10.64 -1.74,22.23 -14.67,18.29 -10.15,-3.09 -8.68,-18.44 -9.7,-28.45l-20.6 -206.06zm6.88 -65.41c5.5,-2.72 130.7,-1.18 154.55,-1.23 8.94,-0.01 16.38,-1.14 20.99,4.83 5.03,6.52 1.05,14.64 -4.42,17.13 -5.28,2.4 -131.75,1.14 -155.35,1.19 -34.7,0.08 -23.64,-18.03 -15.77,-21.92zm192.19 308.51c3.5,-37.12 6.9,-73.8 10.34,-110.88 6.82,-73.58 15.33,-148.43 20.04,-222.14l-275.54 0c5.39,74.21 14.1,149.28 20.83,223.39 3.35,36.9 6.45,73.94 10.3,110.81 1.97,18.8 17.95,14.17 47.14,14.17 46.04,0 108.37,1.25 152.45,0.03 10.7,-0.3 13.45,-4.86 14.44,-15.38z"/>
<path class="fil3" d="M203.32 472.49l650.2 0c0,-21.25 3.36,-41.46 -7.75,-56.55 -9.53,-12.94 -28.66,-14.6 -50.15,-12.75 -0.88,14.71 1.26,20.76 -7.29,32.13 -5.11,6.8 -13.94,13.75 -27.25,13.96 -13.03,0.21 -21.91,-6.43 -27.91,-13.25 -7.53,-8.57 -6.56,-19.53 -7.65,-33.12l-45.91 0c-1,12.55 -0.33,23.97 -7.03,32.38 -15.05,18.87 -41.57,18.23 -55.19,0.81 -8.19,-10.47 -6.99,-18.1 -7.87,-32.91l-45.9 -0.3c-1.52,13.97 -0.65,46.39 -35.2,46.4 -12.78,0 -23.17,-6.88 -27.64,-13.55 -7.92,-11.8 -5.87,-17.28 -7.56,-32.83l-45.9 0.05c-0.88,14.94 1.26,20.99 -7.29,32.36 -13.4,17.83 -38.8,19.33 -55.16,0.71 -7.53,-8.57 -6.56,-19.53 -7.65,-33.12l-45.74 0c-1.17,12.55 -0.5,23.97 -7.2,32.38 -15.05,18.87 -41.57,18.23 -55.19,0.81 -8.18,-10.47 -6.99,-18.1 -7.87,-32.91 -64.4,-5.54 -57.9,28.04 -57.9,69.3z"/>
<path class="fil4" d="M690.71 635.15c1.61,-22.52 -2.56,-23.3 -23.52,-23.26l-231.29 0c-62.37,0 -71.59,-6.64 -70.75,23.26l325.56 0z"/>
<path class="fil5" d="M516.92 972.73c0.93,9.62 12.83,13.99 19.78,6.94 6.16,-6.24 3.31,-22.25 3.31,-31.43l-0.08 -209.15c-1.04,-9.91 -12.34,-14.91 -19.82,-7.35 -6.14,6.21 -3.28,22.29 -3.28,31.46 0,28.88 -1.19,196.42 0.09,209.53z"/>
<path class="fil1" d="M456.98 954.3c1.02,10.01 -0.45,25.36 9.7,28.45 12.93,3.94 15.8,-7.65 14.67,-18.29l-20.69 -206.71c-1.14,-11.48 -0.09,-25.69 -9.48,-28.9 -14.28,-4.9 -15.88,8.69 -14.8,19.39l20.6 206.06z"/>
<path class="fil1" d="M619.77 755.04c1.02,-10.56 4.76,-25.39 -8.64,-26.79 -13.23,-1.38 -13.09,11.47 -14.22,22.74 -2.26,22.7 -4.52,45.38 -6.8,68.03 -4.6,45.8 -9.09,91.57 -13.73,137.34 -1.19,11.71 -3.99,25.12 8.21,26.81 13.77,1.91 13.6,-11.85 14.62,-22.63 2.13,-22.63 4.58,-45.31 6.8,-68.07 4.46,-45.75 9.31,-91.51 13.76,-137.43z"/>
<path class="fil1" d="M443.26 682.83c-7.87,3.89 -18.93,22 15.77,21.92 23.6,-0.05 150.07,1.21 155.35,-1.19 5.47,-2.49 9.45,-10.61 4.42,-17.13 -4.61,-5.97 -12.05,-4.84 -20.99,-4.83 -23.85,0.05 -149.05,-1.49 -154.55,1.23z"/>
<polygon class="fil2" points="470.4,588.39 475.35,588.8 581.48,588.73 586.27,588.49 586.53,566.04 470.6,565.45 "/>
<path class="fil6" d="M641.15 357.18c-7.68,2.34 -8.23,7.47 -8.3,15.51 -0.22,24.48 -4.93,59.83 16.07,52.57 11.32,-3.91 7.22,-27.33 7.22,-38.93 0,-12.97 2.24,-34.38 -14.99,-29.15z"/>
<path class="fil6" d="M408.78 357.34c-11.47,4.02 -8.08,18.46 -8.08,38.52 0,8.31 -3.68,35.87 15.63,29.51 11.67,-3.85 7.61,-26.89 7.61,-39.04 0,-11.59 2.54,-35.19 -15.16,-28.99z"/>
<path class="fil6" d="M292.85 357.18c-11.66,3.55 -8.25,20.3 -8.25,38.68 0,12.5 -2.42,35.78 16.02,29.4 11.32,-3.91 7.22,-27.33 7.22,-38.93 0,-12.97 2.24,-34.38 -14.99,-29.15z"/>
<path class="fil6" d="M757.08 357.34c-7.29,2.55 -8.06,6.16 -8.12,15.33 -0.05,7.71 0.04,15.47 0.04,23.19 0,8.31 -3.68,35.87 15.63,29.51 11.67,-3.85 7.61,-26.89 7.61,-39.04 0,-11.59 2.54,-35.19 -15.16,-28.99z"/>
<path class="fil6" d="M524.74 357.53c-11.35,4.85 -7.95,16.19 -7.95,38.33 0,13.04 -2.32,36.41 16.44,29.33 10.46,-3.95 6.82,-26.61 6.82,-38.86 0,-5.04 0.57,-18.01 -0.66,-21.88 -1.66,-5.25 -8.13,-9.7 -14.65,-6.92z"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 10 KiB

302
package-lock.json generated
View File

@@ -1,17 +1,19 @@
{ {
"name": "abfallalarm", "name": "abfallalarm",
"version": "0.1.0", "version": "0.1.2",
"lockfileVersion": 3, "lockfileVersion": 3,
"requires": true, "requires": true,
"packages": { "packages": {
"": { "": {
"name": "abfallalarm", "name": "abfallalarm",
"version": "0.1.0", "version": "0.1.2",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"fs-extra": "^11.2.0",
"ical.js": "^1.5.0" "ical.js": "^1.5.0"
}, },
"devDependencies": { "devDependencies": {
"archiver": "^6.0.1",
"ts-loader": "^9.5.1", "ts-loader": "^9.5.1",
"typescript": "^5.3.3", "typescript": "^5.3.3",
"webpack": "^5.89.0", "webpack": "^5.89.0",
@@ -631,12 +633,99 @@
"node": ">= 8" "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": { "node_modules/array-flatten": {
"version": "2.1.2", "version": "2.1.2",
"resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz",
"integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==", "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==",
"dev": true "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": { "node_modules/balanced-match": {
"version": "1.0.2", "version": "1.0.2",
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", "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": "^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": { "node_modules/buffer-from": {
"version": "1.1.2", "version": "1.1.2",
"resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", "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==", "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
"dev": true "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": { "node_modules/compressible": {
"version": "2.0.18", "version": "2.0.18",
"resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz",
@@ -995,6 +1108,31 @@
"integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==",
"dev": true "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": { "node_modules/cross-spawn": {
"version": "7.0.3", "version": "7.0.3",
"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
@@ -1307,6 +1445,12 @@
"integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
"dev": true "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": { "node_modules/fast-json-stable-stringify": {
"version": "2.1.0", "version": "2.1.0",
"resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", "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": ">= 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": { "node_modules/fs-monkey": {
"version": "1.0.5", "version": "1.0.5",
"resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.5.tgz", "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.5.tgz",
@@ -1539,8 +1696,7 @@
"node_modules/graceful-fs": { "node_modules/graceful-fs": {
"version": "4.2.11", "version": "4.2.11",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
"integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ=="
"dev": true
}, },
"node_modules/handle-thing": { "node_modules/handle-thing": {
"version": "2.0.1", "version": "2.0.1",
@@ -1987,6 +2143,17 @@
"integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
"dev": true "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": { "node_modules/kind-of": {
"version": "6.0.3", "version": "6.0.3",
"resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
@@ -2006,6 +2173,48 @@
"shell-quote": "^1.8.1" "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": { "node_modules/loader-runner": {
"version": "4.3.0", "version": "4.3.0",
"resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz",
@@ -2027,6 +2236,12 @@
"node": ">=8" "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": { "node_modules/lru-cache": {
"version": "6.0.0", "version": "6.0.0",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
@@ -2480,6 +2695,12 @@
"url": "https://github.com/sponsors/ljharb" "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": { "node_modules/randombytes": {
"version": "2.1.0", "version": "2.1.0",
"resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz",
@@ -2536,6 +2757,36 @@
"node": ">= 6" "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": { "node_modules/readdirp": {
"version": "3.6.0", "version": "3.6.0",
"resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
@@ -3039,6 +3290,16 @@
"node": ">= 0.8" "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": { "node_modules/string_decoder": {
"version": "1.3.0", "version": "1.3.0",
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
@@ -3090,6 +3351,17 @@
"node": ">=6" "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": { "node_modules/terser": {
"version": "5.26.0", "version": "5.26.0",
"resolved": "https://registry.npmjs.org/terser/-/terser-5.26.0.tgz", "resolved": "https://registry.npmjs.org/terser/-/terser-5.26.0.tgz",
@@ -3221,6 +3493,14 @@
"integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==",
"dev": true "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": { "node_modules/unpipe": {
"version": "1.0.0", "version": "1.0.0",
"resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", "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", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
"integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
"dev": true "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"
}
} }
} }
} }

View File

@@ -1,10 +1,16 @@
{ {
"name": "abfallalarm", "name": "abfallalarm",
"version": "0.1.0", "displayName": "AbfallAlarm",
"version": "0.1.2",
"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.", "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", "main": "index.js",
"scripts": { "scripts": {
"build": "webpack --config webpack.config.js --mode production", "build:patch": "webpack --config webpack.config.js --mode production && npm run bump-version patch && npm run copy-release && npm run zip-release",
"build:minor": "webpack --config webpack.config.js --mode production && npm run bump-version minor && npm run copy-release && npm run zip-release",
"build:major": "webpack --config webpack.config.js --mode production && npm run bump-version major && 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", "start": "webpack serve --config webpack.config.js --mode development",
"stop": "sh stop-server.sh" "stop": "sh stop-server.sh"
}, },
@@ -20,6 +26,7 @@
}, },
"homepage": "https://github.com/PxaMMaxP/AbfallAlarm#readme", "homepage": "https://github.com/PxaMMaxP/AbfallAlarm#readme",
"devDependencies": { "devDependencies": {
"archiver": "^6.0.1",
"ts-loader": "^9.5.1", "ts-loader": "^9.5.1",
"typescript": "^5.3.3", "typescript": "^5.3.3",
"webpack": "^5.89.0", "webpack": "^5.89.0",
@@ -27,6 +34,7 @@
"webpack-dev-server": "^4.15.1" "webpack-dev-server": "^4.15.1"
}, },
"dependencies": { "dependencies": {
"fs-extra": "^11.2.0",
"ical.js": "^1.5.0" "ical.js": "^1.5.0"
} }
} }

View File

@@ -7,8 +7,8 @@
<meta name="viewport" content="width=device-width, initial-scale=1"> <!-- Responsive design meta tag --> <meta name="viewport" content="width=device-width, initial-scale=1"> <!-- Responsive design meta tag -->
<meta name="description" content="AbfallAlarm, eine benutzerfreundliche WebApp, die darauf abzielt, das Leben der <meta name="description" content="AbfallAlarm, eine benutzerfreundliche WebApp, die darauf abzielt, das Leben der
Bürger von Arnsberg zu vereinfachen."> Bürger von Arnsberg zu vereinfachen.">
<link rel="stylesheet" href="/index.css"> <link rel="stylesheet" href="./index.css">
<link rel="stylesheet" href="/github-corner.css"> <link rel="stylesheet" href="./github-corner.css">
</head> </head>
<body> <body>
@@ -44,6 +44,11 @@
<p>Mit dieser App können Nutzer ihre iCalendar (.ics) Dateien für den Abfallkalender der Stadt Arnsberg <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> 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://web.c-trace.de/arnsberg-abfallkalender/(S(ujf4cewvsnomrdo0l5zcrkph))/"
target="_blank">Quelle</a>. Kommen Sie danach zurück und folgen Sie den Anweisungen unten.
</p>
</div> </div>
<!-- Working Area --> <!-- Working Area -->
@@ -123,7 +128,7 @@
</div> </div>
</div> </div>
<script src="/bundle.js"></script> <script src="./bundle.js"></script>
</body> </body>
</html> </html>

33
zip-release.js Normal file
View 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();