Compare commits
199 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 9ed35589f7 | |||
| e946dd18e0 | |||
| 51cad598c1 | |||
| 0595f23c18 | |||
| b88816706b | |||
| 80edaae023 | |||
| 883c46b064 | |||
| 4248cc31f2 | |||
| 5f81c6d61a | |||
| 00d82cc817 | |||
| a9edfde162 | |||
| 468d7f445d | |||
| 4cc74deece | |||
| f9831490af | |||
| a055a616eb | |||
| 8009a2cbc4 | |||
| 693cc149cf | |||
| d126fe0bce | |||
| 4cc49cce9e | |||
| f7cb4cd805 | |||
| a2bd9883d1 | |||
| 10a079c304 | |||
| 65f12f1082 | |||
| c15f855c72 | |||
| 3d38483022 | |||
| 57dc1e7175 | |||
| ead68c929f | |||
| d54b346259 | |||
| a05de8269c | |||
| 130b70c6af | |||
| 7247a54c08 | |||
| 28de7ebff8 | |||
| e2c9d4dc2d | |||
| 4866382180 | |||
| 1b1507db1a | |||
| 0ea7d687a7 | |||
| 502e1539ca | |||
| f3910fea1b | |||
| ee9b48fb79 | |||
| 142686ef92 | |||
| 2aa187984e | |||
| c20d4d71c3 | |||
| 4f4d1e1b39 | |||
| f38b590f70 | |||
| c2caf42fd3 | |||
| 8c279c8c10 | |||
| 3480c78360 | |||
| 79ce708f60 | |||
| a4526eb4b5 | |||
| 866a133917 | |||
| adce978244 | |||
| dd3c26b29a | |||
| 25ad42ba9b | |||
| 3285b7e472 | |||
| c7da55480a | |||
| 35e81b5782 | |||
| 769a9526e7 | |||
| 5470153f4f | |||
| 9d6ad87275 | |||
| ac6261d9ac | |||
| 48effe077e | |||
| c656bf8612 | |||
| 9daf7c7156 | |||
| 4bd3bfae9d | |||
| 727964949c | |||
| 21e1fc1aca | |||
| eeba2ef2d4 | |||
| b3e738ce03 | |||
| 46848c7b19 | |||
| 5f3d48597f | |||
| 0efc3e5999 | |||
| 0c0ce89317 | |||
| 4a47061f76 | |||
| 9b3ff9b362 | |||
| 8315fede7d | |||
| d6d0568f67 | |||
| ff0119db9b | |||
| 37d776c315 | |||
| f53d4abd8b | |||
| f827bd4aeb | |||
| f28c4e96c5 | |||
| cf81b11c0b | |||
| 17dc752902 | |||
| bc9faf9456 | |||
| e5b615267c | |||
| 70e9086646 | |||
| 0cc30bc67e | |||
| 73792e7ce6 | |||
| 32f873d9c2 | |||
| 6566bc5f8f | |||
| cc93114eab | |||
| 6d5d949f5c | |||
| f1be4a4db0 | |||
| 8b9f576b30 | |||
| 0735f959ef | |||
| f91d65b7a4 | |||
| c8d4920cd3 | |||
| 27625bc31a | |||
| 67e22e4339 | |||
| b4ed5cffd6 | |||
| 6209ff12bb | |||
| 392a0e85be | |||
| a7abf37781 | |||
| c09f87daa7 | |||
| 43072d2777 | |||
| ed52f28743 | |||
| fe953b6b36 | |||
| d931f3ec6d | |||
| 2fbf404bf3 | |||
| 49064e4e25 | |||
| 2c4004d91f | |||
| 37706b87c4 | |||
| c8a98a745d | |||
| abae472545 | |||
| 749593f1af | |||
| a824a5dcf2 | |||
| 8b2fe90eb7 | |||
| e6370fab66 | |||
| 92ea4b64f9 | |||
| 9f6d071f25 | |||
| 274536eafa | |||
| 5b0ad39526 | |||
| 01d54f504b | |||
| e413fb7ecd | |||
| dc665ec581 | |||
| f7fa0452cd | |||
| 47253cc54b | |||
| 71b56db909 | |||
| ad41edc972 | |||
| 9076561644 | |||
| ff5601aad2 | |||
| 21629b7bed | |||
| 052e38a292 | |||
| 38c44396b0 | |||
| f80e19e18a | |||
| ebdda050f8 | |||
| 110fb1c180 | |||
| fd361f9482 | |||
| 1b8e05ad1f | |||
| 28184d2a52 | |||
| 9a14a81956 | |||
| 3312bbe8e4 | |||
| a9602f5576 | |||
| 0f5dd0fd31 | |||
| e45b016cca | |||
| e1fe07cf26 | |||
| 18e851a205 | |||
| c992ec22ca | |||
| c57f75d1ea | |||
| 5abfafe2fa | |||
| bd87aded67 | |||
| c0332fe035 | |||
| 3941cc4e9b | |||
| 6ebaec5c3b | |||
| 4b8aebdc1b | |||
| 10afb34921 | |||
| 068a3b9c5e | |||
| 94ac704582 | |||
| fd677396ee | |||
| 06d81fb419 | |||
| 3264e86426 | |||
| 5767f2d2c3 | |||
| a267c4028a | |||
| 4916a6b380 | |||
| 55550ade86 | |||
| 8a30906bd4 | |||
| e049ec7782 | |||
| fab2a2aed7 | |||
| 3abc8b730f | |||
| 80bf60e75d | |||
| d0095d3e31 | |||
| 04a9e85bd2 | |||
| 5bab933364 | |||
| ad768296c3 | |||
| cc830827bb | |||
| 0c24507bb2 | |||
| be1ecf1af6 | |||
| 1f449258ab | |||
| 3e7579852b | |||
| b58af80552 | |||
| e17ccd1519 | |||
| 780d053871 | |||
| a25ce58ebf | |||
| fa1a16ad30 | |||
| 0c9073aa6f | |||
| e8a39cbe19 | |||
| c3d3ff39f0 | |||
| 240f3b0380 | |||
| 1238b379ce | |||
| c580472282 | |||
| 07d9aab45f | |||
| 6bb9808d0c | |||
| 283c38c9a5 | |||
| c0084a5d61 | |||
| f0ccb32b51 | |||
| f6e2fb3e89 | |||
| 6114e2693d | |||
| 9dde9b0763 | |||
| 4fed2f32ae |
@@ -0,0 +1,6 @@
|
||||
node_modules
|
||||
dist
|
||||
build
|
||||
.env
|
||||
.DS_Store
|
||||
*.log
|
||||
@@ -0,0 +1,12 @@
|
||||
KENER_SECRET_KEY=please_change_me
|
||||
NODE_ENV=production
|
||||
PORT=3000
|
||||
KENER_BASE_PATH=""
|
||||
RESEND_API_KEY=
|
||||
ORIGIN=http://localhost:3000
|
||||
DATABASE_URL=sqlite://./database/kener.sqlite.db
|
||||
TZ=UTC
|
||||
RESEND_SENDER_EMAIL=Accounts <accounts@resend.dev>
|
||||
|
||||
# DATABASE_URL=postgresql://myuser:mypassword@localhost:5432/mydatabase
|
||||
# DATABASE_URL=mysql://root:password@127.0.0.1:3306/kener
|
||||
@@ -0,0 +1,48 @@
|
||||
# Contributing to Kener
|
||||
|
||||
Thank you for considering contributing to our project! Here are some guidelines to help you get started.
|
||||
|
||||
---
|
||||
|
||||
## How to Contribute
|
||||
|
||||
1. Fork the repository and clone it locally.
|
||||
2. Create a new branch for your feature or bug fix:
|
||||
```bash
|
||||
git checkout -b feature/your-feature-name
|
||||
```
|
||||
3. Make your changes and commit them:
|
||||
```bash
|
||||
git commit -m 'Describe your changes'
|
||||
```
|
||||
4. Push your changes to your fork:
|
||||
```bash
|
||||
git push origin feature/your-feature-name
|
||||
```
|
||||
5. Create a pull request to the `main` branch.
|
||||
|
||||
|
||||
## Development
|
||||
|
||||
1. Install dependencies:
|
||||
```bash
|
||||
npm install
|
||||
```
|
||||
2. Create a `.env` file in the root of the project and add the following:
|
||||
```bash
|
||||
cp .env.example .env
|
||||
```
|
||||
2. Start the development server:
|
||||
```bash
|
||||
npm run dev
|
||||
```
|
||||
3. Open [http://localhost:3000](http://localhost:3000) in your browser.
|
||||
|
||||
## Documentation
|
||||
|
||||
The documentation is available in the `docs` folder. You can view it by going to [http://localhost:3000/docs/home](http://localhost:3000/docs/home) in your browser.
|
||||
|
||||
## Where to Start
|
||||
|
||||
1. Check out the [roadmap items](https://kener.ing/docs/roadmap/)
|
||||
2. Add language support by following the [i18n guide](https://kener.ing/docs/i18n/)
|
||||
@@ -0,0 +1,2 @@
|
||||
github: rajnandan1
|
||||
buy_me_a_coffee: rajnandan1
|
||||
@@ -1,40 +1,32 @@
|
||||
---
|
||||
name: Publish Docker image to Dockerhub and GHCR
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- 'main'
|
||||
# add additional branches that should build to images here
|
||||
# they will be tagged based on the branch name IE kener:test
|
||||
#- 'test'
|
||||
- main
|
||||
tags:
|
||||
- '*.*.*'
|
||||
# don't trigger if just updating docs
|
||||
- "*.*.*"
|
||||
paths-ignore:
|
||||
- 'docs.md'
|
||||
- 'README.md'
|
||||
|
||||
- '**/*.md'
|
||||
- 'docs/**'
|
||||
jobs:
|
||||
push_to_registry:
|
||||
name: Push Docker image to Docker Hub
|
||||
runs-on: ubuntu-latest
|
||||
# only run if we've specified image tag to push to
|
||||
if: ${{ vars.DOCKERHUB_IMAGE_NAME != '' || vars.GHCR_IMAGE_NAME != '' }}
|
||||
# https://docs.github.com/en/actions/security-guides/automatic-token-authentication#permissions-for-the-github_token
|
||||
permissions:
|
||||
packages: write
|
||||
contents: read
|
||||
steps:
|
||||
- name: Check out the repo
|
||||
uses: actions/checkout@v2
|
||||
|
||||
- name: Log in to Docker Hub
|
||||
if: ${{ github.event_name != 'pull_request' && vars.DOCKERHUB_IMAGE_NAME != '' }}
|
||||
if: ${{ github.event_name != 'pull_request' && vars.DOCKERHUB_IMAGE_NAME != ''
|
||||
}}
|
||||
uses: docker/login-action@v2
|
||||
with:
|
||||
username: ${{ secrets.DOCKER_USERNAME }}
|
||||
password: ${{ secrets.DOCKER_PASSWORD }}
|
||||
|
||||
- name: Login to GitHub Container Registry
|
||||
if: ${{ github.event_name != 'pull_request' && vars.GHCR_IMAGE_NAME != '' }}
|
||||
uses: docker/login-action@v2
|
||||
@@ -42,7 +34,6 @@ jobs:
|
||||
registry: ghcr.io
|
||||
username: ${{ github.repository_owner }}
|
||||
password: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
- name: Extract metadata (tags, labels) for Docker
|
||||
id: meta
|
||||
uses: docker/metadata-action@v3
|
||||
@@ -50,20 +41,16 @@ jobs:
|
||||
images: |
|
||||
${{ vars.DOCKERHUB_IMAGE_NAME }}
|
||||
${{ vars.GHCR_IMAGE_NAME }}
|
||||
# generate Docker tags based on the following events/attributes
|
||||
tags: |
|
||||
type=raw,value=latest,enable=${{ endsWith(github.ref, 'main') }}
|
||||
type=ref,event=branch,enable=${{ !endsWith(github.ref, 'main') }}
|
||||
type=semver,pattern={{version}}
|
||||
flavor: |
|
||||
latest=false
|
||||
|
||||
- name: Set up QEMU
|
||||
uses: docker/setup-qemu-action@v2
|
||||
|
||||
- name: Set up Docker Buildx
|
||||
uses: docker/setup-buildx-action@v2
|
||||
|
||||
- name: Build and push Docker image
|
||||
uses: docker/build-push-action@v4
|
||||
with:
|
||||
|
||||
@@ -1,9 +1,10 @@
|
||||
.DS_Store
|
||||
node_modules
|
||||
static/kener
|
||||
build/client/kener
|
||||
build
|
||||
config/monitors.yaml
|
||||
config/site.yaml
|
||||
config/server.yaml
|
||||
/.svelte-kit
|
||||
/src/lib/.kener
|
||||
/package
|
||||
@@ -15,4 +16,14 @@ vite.config.ts.timestamp-*
|
||||
nodemon.json
|
||||
.okgit/
|
||||
config/static/*
|
||||
!config/static/.kener
|
||||
!config/static/.kener
|
||||
db/*
|
||||
!db/.kener
|
||||
database/*
|
||||
!database/.kener
|
||||
uploads/*
|
||||
!uploads/upload.dir
|
||||
|
||||
static/uploads/*
|
||||
!static/uploads/upload.dir
|
||||
temp.txt
|
||||
@@ -0,0 +1,22 @@
|
||||
.DS_Store
|
||||
node_modules
|
||||
static/kener
|
||||
build
|
||||
config/monitors.yaml
|
||||
config/site.yaml
|
||||
/.svelte-kit
|
||||
/package
|
||||
.env
|
||||
.env.*
|
||||
!.env.example
|
||||
|
||||
# Ignore files for PNPM, NPM and YARN
|
||||
pnpm-lock.yaml
|
||||
package-lock.json
|
||||
yarn.lock
|
||||
.okgit/
|
||||
config/static/*
|
||||
!config/static/.kener
|
||||
**/*.yaml
|
||||
**/*.yml
|
||||
.github/
|
||||
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"useTabs": true,
|
||||
"semi": true,
|
||||
"tabWidth": 4,
|
||||
"trailingComma": "none",
|
||||
"printWidth": 100,
|
||||
"plugins": ["prettier-plugin-svelte", "prettier-plugin-tailwindcss"],
|
||||
"overrides": [{ "files": "*.svelte", "options": { "parser": "svelte" } }]
|
||||
}
|
||||
@@ -1,73 +1,49 @@
|
||||
FROM lsiobase/alpine:3.18 as base
|
||||
FROM node:23
|
||||
|
||||
ENV TZ=Etc/GMT
|
||||
|
||||
RUN \
|
||||
echo "**** install build packages ****" && \
|
||||
apk add --no-cache \
|
||||
# Install necessary packages including tzdata for timezone setting
|
||||
RUN apt-get update && apt-get install -y \
|
||||
build-essential \
|
||||
libnode108 \
|
||||
nodejs \
|
||||
npm && \
|
||||
echo "**** cleanup ****" && \
|
||||
rm -rf \
|
||||
/root/.cache \
|
||||
/tmp/*
|
||||
python3 \
|
||||
sqlite3 \
|
||||
libsqlite3-dev \
|
||||
make \
|
||||
node-gyp \
|
||||
g++ \
|
||||
tzdata \
|
||||
iputils-ping && \
|
||||
rm -rf /var/lib/apt/lists/*
|
||||
|
||||
# set OS timezone specified by docker ENV
|
||||
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
|
||||
|
||||
ARG data_dir=/config
|
||||
VOLUME $data_dir
|
||||
ENV CONFIG_DIR=$data_dir
|
||||
|
||||
COPY docker/root/ /
|
||||
|
||||
# Dir ENVs need to be set before building or else build throws errors
|
||||
ENV PUBLIC_KENER_FOLDER=/config/static \
|
||||
MONITOR_YAML_PATH=/config/monitors.yaml \
|
||||
SITE_YAML_PATH=/config/site.yaml
|
||||
|
||||
# build requires devDependencies which are not used by production deploy
|
||||
# so build in a stage so we can copy results to clean "deploy" stage later
|
||||
FROM base as build
|
||||
# Set the timezone environment variable and the application environment
|
||||
ARG KENER_BASE_PATH=
|
||||
ENV TZ=Etc/UTC
|
||||
ENV KENER_BASE_PATH=${KENER_BASE_PATH}
|
||||
|
||||
# Set the working directory
|
||||
WORKDIR /app
|
||||
|
||||
COPY --chown=abc:abc . /app
|
||||
# Copy package files and install dependencies
|
||||
COPY package*.json ./
|
||||
RUN npm install && npm cache clean --force
|
||||
|
||||
# build requires PUBLIC_KENER_FOLDER dir exists so create temporarily
|
||||
# -- it is non-existent in final stage to allow proper startup and chown'ing/example population
|
||||
RUN mkdir -p "${CONFIG_DIR}"/static \
|
||||
&& npm install \
|
||||
&& chown -R root:root node_modules \
|
||||
&& npm run kener:build
|
||||
# Copy the rest of the application code
|
||||
COPY . .
|
||||
|
||||
FROM base as app
|
||||
# Ensure /app/uploads and /app/database have rw permissions
|
||||
RUN mkdir -p /app/uploads /app/database && \
|
||||
chmod -R 777 /app/uploads /app/database
|
||||
|
||||
# copy package, required libs (npm,nodejs) results of build, prod entrypoint, and examples to be used to populate config dir
|
||||
# to clean, new stage
|
||||
COPY --chown=abc:abc package*.json ./
|
||||
COPY --from=base /usr/local/bin /usr/local/bin
|
||||
COPY --from=base /usr/local/lib /usr/local/lib
|
||||
COPY --chown=abc:abc scripts /app/scripts
|
||||
COPY --chown=abc:abc static /app/static
|
||||
COPY --chown=abc:abc config /app/config
|
||||
COPY --chown=abc:abc src/lib/helpers.js /app/src/lib/helpers.js
|
||||
COPY --from=build --chown=abc:abc /app/build /app/build
|
||||
COPY --from=build --chown=abc:abc /app/prod.js /app/prod.js
|
||||
# Build the application
|
||||
RUN npm run build
|
||||
|
||||
# Argument for the port
|
||||
ARG PORT=3000
|
||||
# Set the environment variable for the port
|
||||
ENV PORT=$PORT
|
||||
|
||||
ENV NODE_ENV=production
|
||||
|
||||
# install prod depdendencies and clean cache
|
||||
RUN npm install --omit=dev \
|
||||
&& npm cache clean --force \
|
||||
&& chown -R abc:abc node_modules
|
||||
|
||||
ARG webPort=3000
|
||||
ENV PORT=$webPort
|
||||
# Expose the application port
|
||||
EXPOSE $PORT
|
||||
|
||||
# leave entrypoint blank!
|
||||
# uses LSIO s6-init entrypoint with scripts
|
||||
# that populate CONFIG_DIR with static dir, monitor/site.yaml when dir is empty
|
||||
# and chown's all files so they are owned by proper user based on PUID/GUID env
|
||||
# Set the command to run the application
|
||||
CMD ["node", "main"]
|
||||
@@ -1,90 +1,112 @@
|
||||
# Kener - A Beautiful Status Page System
|
||||
|
||||
<p align="center">
|
||||
<img src="https://kener.ing/ss.png" width="100%" height="auto" alt="kener example illustration">
|
||||
<img src="https://kener.ing/newbg.png?v=1" width="100%" height="auto" class="rounded-lg shadow-lg" alt="kener example illustration">
|
||||
</p>
|
||||
|
||||
|
||||
<p align="center">
|
||||
<img alt="GitHub Repo stars" src="https://img.shields.io/github/stars/rajnandan1/kener?label=Star%20Repo&style=social">
|
||||
<a href="https://github.com/ivbeg/awesome-status-pages"><img src="https://cdn.rawgit.com/sindresorhus/awesome/d7305f38d29fed78fa85652e3a63e154dd8e8829/media/badge.svg" alt="Awesome status page" /></a>
|
||||
<a href="https://hub.docker.com/r/rajnandan1/kener"><img src="https://img.shields.io/docker/pulls/rajnandan1/kener" alt="Docker Kener" /></a>
|
||||
</p>
|
||||
|
||||
#### 👉 Visit a live server [here](https://kener.ing)
|
||||
|
||||
#### 👉 Read the documentation [here](https://kener.ing/docs)
|
||||
|
||||
# Kener - Status Page System
|
||||
Kener: Open-source Node.js status page tool, designed to make service monitoring and incident handling a breeze. It offers a sleek and user-friendly interface that simplifies tracking service outages and improves how we communicate during incidents. And the best part? Kener integrates seamlessly with GitHub, making incident management a team effort—making it easier for us to track and fix issues together in a collaborative and friendly environment.
|
||||
|
||||
It uses files to store the data. Other adapters are coming soon
|
||||
|
||||
<p align="center">
|
||||
<picture>
|
||||
<source srcset="https://fonts.gstatic.com/s/e/notoemoji/latest/1f514/512.webp" type="image/webp">
|
||||
<img src="https://fonts.gstatic.com/s/e/notoemoji/latest/1f514/512.gif" alt="🔔" width="32" height="32">
|
||||
</picture>
|
||||
<picture>
|
||||
<source srcset="https://fonts.gstatic.com/s/e/notoemoji/latest/1f680/512.webp" type="image/webp">
|
||||
<img src="https://fonts.gstatic.com/s/e/notoemoji/latest/1f680/512.gif" alt="🚀" width="32" height="32">
|
||||
</picture>
|
||||
<picture>
|
||||
<source srcset="https://fonts.gstatic.com/s/e/notoemoji/latest/1f6a7/512.webp" type="image/webp">
|
||||
<img src="https://fonts.gstatic.com/s/e/notoemoji/latest/1f6a7/512.gif" alt="🚧" width="32" height="32">
|
||||
</picture>
|
||||
</p>
|
||||
|
||||
#### [👉 Visit a live server](https://kener.ing)
|
||||
|
||||
#### [👉 Quick Start](https://kener.ing/docs/quick-start)
|
||||
|
||||
#### [👉 Documentation](https://kener.ing/docs/home)
|
||||
|
||||
## What is Kener?
|
||||
|
||||
Kener is status page system built with Sveltekit and NodeJS. It does not try to replace the Datadogs and Atlassian of the world. It tries to help some who wants to come up with a status page that looks nice and minimum overhead, in a modern way.
|
||||
|
||||
It is carefully crafted to be easy to use and customize.
|
||||
|
||||
It comes with all the basic asks for a status page. It is open-source and free to use.
|
||||
|
||||
Kener name is derived from the word "Kene" which means "how is it going" in Assamese, then .ing because it was a cheaply available domain.
|
||||
|
||||
<div align="left">
|
||||
<img alt="Visitor Stats" src="https://widgetbite.com/stats/rajnandan"/>
|
||||
</div>
|
||||
|
||||
## Features
|
||||
|
||||
**Monitoring and Tracking:**
|
||||
- Real-time monitoring
|
||||
- Polls HTTP endpoint or Push data to monitor using Rest APIs
|
||||
- Handles Timezones for visitors
|
||||
- Categorize Monitors into different Sections
|
||||
- Cron-based scheduling for monitors. Minimum per minute
|
||||
- Flexible monitor configuration using YAML. Define your own parsing for monitor being UP/DOWN/DEGRADED
|
||||
- Construct complex API Polls - Chain, Secrets etc
|
||||
- Supports a Default Status for Monitors. Example defaultStatus=DOWN if you dont hit API per minute with Status UP
|
||||
Here are some of the features that you get out of the box. Please read the documentation to know how to use them.
|
||||
|
||||
**Customization and Branding:**
|
||||
- Customizable status page using yaml or code
|
||||
- Badge generation for status and uptime of Monitors
|
||||
- Support for custom domains
|
||||
- Embed Monitor as an iframe or widget
|
||||
- Light + Dark Theme
|
||||
### Monitoring and Tracking
|
||||
|
||||
**Incident Management:**
|
||||
- Create Incidents using Github Issues - Rich Text
|
||||
- Or use APIs to create Incidents
|
||||
- Advanced application performance monitoring tools
|
||||
- Real-time network monitor software capabilities
|
||||
- Polls HTTP endpoint or Push data to monitor using Rest APIs
|
||||
- Adjusts Timezones for visitors
|
||||
- Categorize Monitors into different Sections
|
||||
- Cron-based scheduling for monitors. Minimum per minute
|
||||
- Construct complex API Polls - Chain, Secrets etc
|
||||
- Supports a Default Status for Monitors
|
||||
- Supports base path for hosting in k8s
|
||||
- Pre-built docker image for easy deployment
|
||||
- Automatically adjusts timezones for visitors
|
||||
|
||||
**User Experience and Design:**
|
||||
- 100% Accessibility Score
|
||||
- Easy installation and setup
|
||||
- User-friendly interface
|
||||
- Responsive design for various devices
|
||||
- Auto SEO and Social Media ready
|
||||
### Customization and Branding
|
||||
|
||||
- Customizable status page
|
||||
- Badge generation for status and uptime of Monitors
|
||||
- Support for custom domains
|
||||
- Embed Monitor as an iframe or widget
|
||||
- Light + Dark Theme
|
||||
- Internationalization support
|
||||
- Beautifully Crafted Status Page
|
||||
|
||||
### Incident Management
|
||||
|
||||
- Incident Management
|
||||
- Incident Communication
|
||||
- Comprehensive APIs for Incident Management
|
||||
|
||||
### User Experience and Design
|
||||
|
||||
- Good Accessibility Score
|
||||
- Easy installation and setup
|
||||
- User-friendly interface
|
||||
- Responsive design for various devices
|
||||
- Auto SEO and Social Media ready
|
||||
- Server Side Rendering
|
||||
|
||||
## Technologies used
|
||||
- [SvelteKit](https://kit.svelte.dev/)
|
||||
- [shadcn-svelte](https://www.shadcn-svelte.com/)
|
||||
|
||||
## Inspired from
|
||||
- [Upptime](https://upptime.js.org/)
|
||||
- [SvelteKit](https://kit.svelte.dev/)
|
||||
- [shadcn-svelte](https://www.shadcn-svelte.com/)
|
||||
|
||||
## Roadmap
|
||||
## Support Me
|
||||
|
||||
- [x] Add api to create incident
|
||||
- [x] Add docker file
|
||||
- [ ] Add notification
|
||||
- [ ] Add Mysql adapter
|
||||
If you are using Kener and want to support me, you can do so by sponsoring me on GitHub or buying me a coffee.
|
||||
|
||||
## Screenshots
|
||||
[Sponsor Me Using Github](https://github.com/sponsors/rajnandan1)
|
||||
|
||||

|
||||

|
||||

|
||||

|
||||

|
||||

|
||||

|
||||

|
||||

|
||||
[Buy Me a Coffee](https://www.buymeacoffee.com/rajnandan1)
|
||||
|
||||

|
||||
|
||||
## Support
|
||||
## Contributing
|
||||
|
||||
<a href="https://stackexchange.com/users/3713933"><img src="https://stackexchange.com/users/flair/3713933.png" width="108" height="28" alt="profile for Raj Nandan Sharma on Stack Exchange, a network of free, community-driven Q&A sites" title="profile for Raj Nandan Sharma on Stack Exchange, a network of free, community-driven Q&A sites"></a>
|
||||
|
||||
<a href="https://www.buymeacoffee.com/rajnandan1"><img src="https://img.buymeacoffee.com/button-api/?text=Buy me a coffee&emoji=&slug=rajnandan1&button_colour=5F7FFF&font_colour=ffffff&font_family=Poppins&outline_colour=000000&coffee_colour=FFDD00" /></a>
|
||||
|
||||
<a href="https://www.paypal.com/paypalme/rajnandan1"><img style="height:90px;margin-left:-15px" src="static/paypal.png" /></a>
|
||||
If you want to contribute to Kener, please read the [Contributing Guide](https://github.com/rajnandan1/kener/blob/main/.github/CONTRIBUTING.md).
|
||||
|
||||
## Star History
|
||||
|
||||
[](https://star-history.com/#rajnandan1/kener&Date)
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
.toggle.svelte-1rrlwjr.svelte-1rrlwjr{display:none;transition:all .15s ease-in-out}.toggle.open.svelte-1rrlwjr.svelte-1rrlwjr{transform:rotate(180deg)}.incident-div.svelte-1rrlwjr:hover .toggle.svelte-1rrlwjr{display:block}
|
||||
@@ -1 +0,0 @@
|
||||
.daygrid90.svelte-1nwu38p.svelte-1nwu38p{-ms-overflow-style:none;scrollbar-width:none}.daygrid90.svelte-1nwu38p.svelte-1nwu38p::-webkit-scrollbar{display:none}.oneline.svelte-1nwu38p.svelte-1nwu38p{transition:transform .1s ease-in;cursor:pointer}.oneline.svelte-1nwu38p.svelte-1nwu38p:hover{transform:scaleY(1.2)}.oneline.svelte-1nwu38p:hover+.show-hover.svelte-1nwu38p{display:block!important}.show-hover.svelte-1nwu38p.svelte-1nwu38p{display:none;top:40px;padding:0;text-align:left}.today-sq+.hiddenx.svelte-1nwu38p .message.svelte-1nwu38p{position:absolute;white-space:nowrap}.today-sq.svelte-1nwu38p+.hiddenx.svelte-1nwu38p{visibility:hidden;z-index:30}.today-sq.svelte-1nwu38p:hover+.hiddenx.svelte-1nwu38p{visibility:visible}.today-sq.svelte-1nwu38p.svelte-1nwu38p:hover{box-shadow:#32326926 0 2px 5px,#0000000d 0 1px 1px;opacity:.75;transition:all .1s ease-in;cursor:pointer}.today-sq.svelte-1nwu38p.svelte-1nwu38p{position:relative;z-index:0}
|
||||
@@ -1 +0,0 @@
|
||||
import{s as u,I as r,J as i,y as m,A as d,B as p,C as g}from"./scheduler.8852886c.js";import{S as $,i as h,b as C,d as v,m as b,a as _,t as f,e as I}from"./index.fb8f3617.js";import{I as N,g as w,d as S}from"./Icon.7b7db889.js";function j(l){let e;const s=l[2].default,o=m(s,l,l[3],null);return{c(){o&&o.c()},l(n){o&&o.l(n)},m(n,t){o&&o.m(n,t),e=!0},p(n,t){o&&o.p&&(!e||t&8)&&d(o,s,n,n[3],e?g(s,n[3],t,null):p(n[3]),null)},i(n){e||(_(o,n),e=!0)},o(n){f(o,n),e=!1},d(n){o&&o.d(n)}}}function q(l){let e,s;const o=[{name:"chevron-down"},l[1],{iconNode:l[0]}];let n={$$slots:{default:[j]},$$scope:{ctx:l}};for(let t=0;t<o.length;t+=1)n=r(n,o[t]);return e=new N({props:n}),{c(){C(e.$$.fragment)},l(t){v(e.$$.fragment,t)},m(t,a){b(e,t,a),s=!0},p(t,[a]){const c=a&3?w(o,[o[0],a&2&&S(t[1]),a&1&&{iconNode:t[0]}]):{};a&8&&(c.$$scope={dirty:a,ctx:t}),e.$set(c)},i(t){s||(_(e.$$.fragment,t),s=!0)},o(t){f(e.$$.fragment,t),s=!1},d(t){I(e,t)}}}function A(l,e,s){let{$$slots:o={},$$scope:n}=e;const t=[["path",{d:"m6 9 6 6 6-6"}]];return l.$$set=a=>{s(1,e=r(r({},e),i(a))),"$$scope"in a&&s(3,n=a.$$scope)},e=i(e),[t,e,o,n]}class B extends ${constructor(e){super(),h(this,e,A,q,u,{})}}const z=B;export{z as C};
|
||||
@@ -1 +0,0 @@
|
||||
import{R as a}from"./scheduler.8852886c.js";function i(){const n=a();return t=>{const{originalEvent:e}=t.detail,{cancelable:r}=t,c=e.type;n(c,{originalEvent:e,currentTarget:e.currentTarget},{cancelable:r})||t.preventDefault()}}export{i as c};
|
||||
@@ -1 +0,0 @@
|
||||
const o=typeof window<"u"?window:typeof globalThis<"u"?globalThis:global;export{o as g};
|
||||
@@ -1 +0,0 @@
|
||||
import{u as b,s as w,$ as m,N as q,T as x}from"./scheduler.8852886c.js";const a=[];function z(s,u){return{subscribe:A(s,u).subscribe}}function A(s,u=b){let t;const r=new Set;function o(n){if(w(s,n)&&(s=n,t)){const i=!a.length;for(const e of r)e[1](),a.push(e,s);if(i){for(let e=0;e<a.length;e+=2)a[e][0](a[e+1]);a.length=0}}}function f(n){o(n(s))}function l(n,i=b){const e=[n,i];return r.add(e),r.size===1&&(t=u(o,f)||b),n(s),()=>{r.delete(e),r.size===0&&t&&(t(),t=null)}}return{set:o,update:f,subscribe:l}}function E(s,u,t){const r=!Array.isArray(s),o=r?[s]:s;if(!o.every(Boolean))throw new Error("derived() expects stores as input, got a falsy value");const f=u.length<2;return z(t,(l,n)=>{let i=!1;const e=[];let d=0,p=b;const y=()=>{if(d)return;p();const c=u(r?e[0]:e,l,n);f?l(c):p=x(c)?c:b},h=o.map((c,g)=>m(c,_=>{e[g]=_,d&=~(1<<g),i&&y()},()=>{d|=1<<g}));return i=!0,y(),function(){q(h),p(),i=!1}})}function N(s){return{subscribe:s.subscribe.bind(s)}}export{N as a,E as d,z as r,A as w};
|
||||
@@ -1,4 +0,0 @@
|
||||
var K=Object.defineProperty;var Q=(t,e,n)=>e in t?K(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n;var A=(t,e,n)=>(Q(t,typeof e!="symbol"?e+"":e,n),n);import{u as w,a0 as W,d as q,a1 as X,N as E,T as j,O,a2 as Y,a3 as I,a4 as U,h as Z,a5 as tt,a6 as et,a7 as nt,a8 as it,a9 as V,aa as st,ab as rt,ac as at,ad as ot,ae as ft}from"./scheduler.8852886c.js";const G=typeof window<"u";let B=G?()=>window.performance.now():()=>Date.now(),D=G?t=>requestAnimationFrame(t):w;const k=new Set;function H(t){k.forEach(e=>{e.c(t)||(k.delete(e),e.f())}),k.size!==0&&D(H)}function F(t){let e;return k.size===0&&D(H),{promise:new Promise(n=>{k.add(e={c:t,f:n})}),abort(){k.delete(e)}}}const N=new Map;let P=0;function ut(t){let e=5381,n=t.length;for(;n--;)e=(e<<5)-e^t.charCodeAt(n);return e>>>0}function ct(t,e){const n={stylesheet:X(e),rules:{}};return N.set(t,n),n}function R(t,e,n,s,u,a,c,i=0){const l=16.666/s;let r=`{
|
||||
`;for(let $=0;$<=1;$+=l){const m=e+(n-e)*a($);r+=$*100+`%{${c(m,1-m)}}
|
||||
`}const d=r+`100% {${c(n,1-n)}}
|
||||
}`,f=`__svelte_${ut(d)}_${i}`,g=W(t),{stylesheet:h,rules:o}=N.get(g)||ct(g,t);o[f]||(o[f]=!0,h.insertRule(`@keyframes ${f} ${d}`,h.cssRules.length));const _=t.style.animation||"";return t.style.animation=`${_?`${_}, `:""}${f} ${s}ms linear ${u}ms 1 both`,P+=1,f}function z(t,e){const n=(t.style.animation||"").split(", "),s=n.filter(e?a=>a.indexOf(e)<0:a=>a.indexOf("__svelte")===-1),u=n.length-s.length;u&&(t.style.animation=s.join(", "),P-=u,P||lt())}function lt(){D(()=>{P||(N.forEach(t=>{const{ownerNode:e}=t.stylesheet;e&&q(e)}),N.clear())})}let S;function L(){return S||(S=Promise.resolve(),S.then(()=>{S=null})),S}function v(t,e,n){t.dispatchEvent(Y(`${e?"intro":"outro"}${n}`))}const M=new Set;let p;function yt(){p={r:0,c:[],p}}function xt(){p.r||E(p.c),p=p.p}function dt(t,e){t&&t.i&&(M.delete(t),t.i(e))}function vt(t,e,n,s){if(t&&t.o){if(M.has(t))return;M.add(t),p.c.push(()=>{M.delete(t),s&&(n&&t.d(1),s())}),t.o(e)}else s&&s()}const T={duration:0};function wt(t,e,n){const s={direction:"in"};let u=e(t,n,s),a=!1,c,i,l=0;function r(){c&&z(t,c)}function d(){const{delay:g=0,duration:h=300,easing:o=I,tick:_=w,css:$}=u||T;$&&(c=R(t,0,1,h,g,o,$,l++)),_(0,1);const m=B()+g,y=m+h;i&&i.abort(),a=!0,O(()=>v(t,!0,"start")),i=F(x=>{if(a){if(x>=y)return _(1,0),v(t,!0,"end"),r(),a=!1;if(x>=m){const b=o((x-m)/h);_(b,1-b)}}return a})}let f=!1;return{start(){f||(f=!0,z(t),j(u)?(u=u(s),L().then(d)):d())},invalidate(){f=!1},end(){a&&(r(),a=!1)}}}function bt(t,e,n){const s={direction:"out"};let u=e(t,n,s),a=!0,c;const i=p;i.r+=1;let l;function r(){const{delay:d=0,duration:f=300,easing:g=I,tick:h=w,css:o}=u||T;o&&(c=R(t,1,0,f,d,g,o));const _=B()+d,$=_+f;O(()=>v(t,!1,"start")),"inert"in t&&(l=t.inert,t.inert=!0),F(m=>{if(a){if(m>=$)return h(0,1),v(t,!1,"end"),--i.r||E(i.c),!1;if(m>=_){const y=g((m-_)/f);h(1-y,y)}}return a})}return j(u)?L().then(()=>{u=u(s),r()}):r(),{end(d){d&&"inert"in t&&(t.inert=l),d&&u.tick&&u.tick(1,0),a&&(c&&z(t,c),a=!1)}}}function kt(t,e,n,s){let a=e(t,n,{direction:"both"}),c=s?0:1,i=null,l=null,r=null,d;function f(){r&&z(t,r)}function g(o,_){const $=o.b-c;return _*=Math.abs($),{a:c,b:o.b,d:$,duration:_,start:o.start,end:o.start+_,group:o.group}}function h(o){const{delay:_=0,duration:$=300,easing:m=I,tick:y=w,css:x}=a||T,b={start:B()+_,b:o};o||(b.group=p,p.r+=1),"inert"in t&&(o?d!==void 0&&(t.inert=d):(d=t.inert,t.inert=!0)),i||l?l=b:(x&&(f(),r=R(t,c,o,$,_,m,x)),o&&y(0,1),i=g(b,$),O(()=>v(t,o,"start")),F(C=>{if(l&&C>l.start&&(i=g(l,$),l=null,v(t,i.b,"start"),x&&(f(),r=R(t,c,i.b,i.duration,0,m,a.css))),i){if(C>=i.end)y(c=i.b,1-c),v(t,i.b,"end"),l||(i.b?f():--i.group.r||E(i.group.c)),i=null;else if(C>=i.start){const J=C-i.start;c=i.a+i.d*m(J/i.duration),y(c,1-c)}}return!!(i||l)}))}return{run(o){j(a)?L().then(()=>{a=a({direction:o?"in":"out"}),h(o)}):h(o)},end(){f(),i=l=null}}}function Et(t,e,n){const s=t.$$.props[e];s!==void 0&&(t.$$.bound[s]=n,n(t.$$.ctx[s]))}function St(t){t&&t.c()}function Ot(t,e){t&&t.l(e)}function _t(t,e,n){const{fragment:s,after_update:u}=t.$$;s&&s.m(e,n),O(()=>{const a=t.$$.on_mount.map(st).filter(j);t.$$.on_destroy?t.$$.on_destroy.push(...a):E(a),t.$$.on_mount=[]}),u.forEach(O)}function $t(t,e){const n=t.$$;n.fragment!==null&&(nt(n.after_update),E(n.on_destroy),n.fragment&&n.fragment.d(e),n.on_destroy=n.fragment=null,n.ctx=[])}function ht(t,e){t.$$.dirty[0]===-1&&(rt.push(t),at(),t.$$.dirty.fill(0)),t.$$.dirty[e/31|0]|=1<<e%31}function jt(t,e,n,s,u,a,c=null,i=[-1]){const l=it;V(t);const r=t.$$={fragment:null,ctx:[],props:a,update:w,not_equal:u,bound:U(),on_mount:[],on_destroy:[],on_disconnect:[],before_update:[],after_update:[],context:new Map(e.context||(l?l.$$.context:[])),callbacks:U(),dirty:i,skip_bound:!1,root:e.target||l.$$.root};c&&c(r.root);let d=!1;if(r.ctx=n?n(t,e.props||{},(f,g,...h)=>{const o=h.length?h[0]:g;return r.ctx&&u(r.ctx[f],r.ctx[f]=o)&&(!r.skip_bound&&r.bound[f]&&r.bound[f](o),d&&ht(t,f)),g}):[],r.update(),d=!0,E(r.before_update),r.fragment=s?s(r.ctx):!1,e.target){if(e.hydrate){ot();const f=Z(e.target);r.fragment&&r.fragment.l(f),f.forEach(q)}else r.fragment&&r.fragment.c();e.intro&&dt(t.$$.fragment),_t(t,e.target,e.anchor),ft(),tt()}V(l)}class Ct{constructor(){A(this,"$$");A(this,"$$set")}$destroy(){$t(this,1),this.$destroy=w}$on(e,n){if(!j(n))return w;const s=this.$$.callbacks[e]||(this.$$.callbacks[e]=[]);return s.push(n),()=>{const u=s.indexOf(n);u!==-1&&s.splice(u,1)}}$set(e){this.$$set&&!et(e)&&(this.$$.skip_bound=!0,this.$$set(e),this.$$.skip_bound=!1)}}const gt="4";typeof window<"u"&&(window.__svelte||(window.__svelte={v:new Set})).v.add(gt);export{Ct as S,dt as a,St as b,xt as c,Ot as d,$t as e,bt as f,yt as g,wt as h,jt as i,kt as j,Et as k,_t as m,vt as t};
|
||||
@@ -1 +0,0 @@
|
||||
var s;const e=((s=globalThis.__sveltekit_1uv9na3)==null?void 0:s.base)??"";var a;const t=((a=globalThis.__sveltekit_1uv9na3)==null?void 0:a.assets)??e;export{t as a,e as b};
|
||||
@@ -1 +0,0 @@
|
||||
import{w as u}from"./index.97524e95.js";import{a as b}from"./paths.504696e9.js";const v="1712895187809",A="sveltekit:snapshot",R="sveltekit:scroll",y="sveltekit:index",f={tap:1,hover:2,viewport:3,eager:4,off:-1},_=location.origin;function I(e){let t=e.baseURI;if(!t){const n=e.getElementsByTagName("base");t=n.length?n[0].href:e.URL}return t}function S(){return{x:pageXOffset,y:pageYOffset}}function c(e,t){return e.getAttribute(`data-sveltekit-${t}`)}const d={...f,"":f.hover};function g(e){let t=e.assignedSlot??e.parentNode;return(t==null?void 0:t.nodeType)===11&&(t=t.host),t}function T(e,t){for(;e&&e!==t;){if(e.nodeName.toUpperCase()==="A"&&e.hasAttribute("href"))return e;e=g(e)}}function x(e,t){let n;try{n=new URL(e instanceof SVGAElement?e.href.baseVal:e.href,document.baseURI)}catch{}const s=e instanceof SVGAElement?e.target.baseVal:e.target,r=!n||!!s||k(n,t)||(e.getAttribute("rel")||"").split(/\s+/).includes("external"),l=(n==null?void 0:n.origin)===_&&e.hasAttribute("download");return{url:n,external:r,target:s,download:l}}function O(e){let t=null,n=null,s=null,r=null,l=null,o=null,a=e;for(;a&&a!==document.documentElement;)s===null&&(s=c(a,"preload-code")),r===null&&(r=c(a,"preload-data")),t===null&&(t=c(a,"keepfocus")),n===null&&(n=c(a,"noscroll")),l===null&&(l=c(a,"reload")),o===null&&(o=c(a,"replacestate")),a=g(a);function i(h){switch(h){case"":case"true":return!0;case"off":case"false":return!1;default:return null}}return{preload_code:d[s??"off"],preload_data:d[r??"off"],keep_focus:i(t),noscroll:i(n),reload:i(l),replace_state:i(o)}}function p(e){const t=u(e);let n=!0;function s(){n=!0,t.update(o=>o)}function r(o){n=!1,t.set(o)}function l(o){let a;return t.subscribe(i=>{(a===void 0||n&&i!==a)&&o(a=i)})}return{notify:s,set:r,subscribe:l}}function m(){const{set:e,subscribe:t}=u(!1);let n;async function s(){clearTimeout(n);try{const r=await fetch(`${b}/_app/version.json`,{headers:{pragma:"no-cache","cache-control":"no-cache"}});if(!r.ok)return!1;const o=(await r.json()).version!==v;return o&&(e(!0),clearTimeout(n)),o}catch{return!1}}return{subscribe:t,check:s}}function k(e,t){return e.origin!==_||!e.pathname.startsWith(t)}function U(e){e.client}const L={url:p({}),page:p({}),navigating:u(null),updated:m()};export{y as I,f as P,R as S,A as a,x as b,O as c,L as d,U as e,T as f,I as g,k as i,_ as o,S as s};
|
||||
@@ -1 +0,0 @@
|
||||
import{d as e}from"./singletons.09f1db94.js";const r=()=>{const s=e;return{page:{subscribe:s.page.subscribe},navigating:{subscribe:s.navigating.subscribe},updated:s.updated}},b={subscribe(s){return r().page.subscribe(s)}};export{b as p};
|
||||
@@ -1 +0,0 @@
|
||||
import{s as x,f as u,l as h,a as S,g as d,h as v,m as g,d as m,c as q,i as _,r as E,n as $,u as b,E as y}from"../chunks/scheduler.8852886c.js";import{S as C,i as H}from"../chunks/index.fb8f3617.js";import{p as P}from"../chunks/stores.b8369d52.js";function j(i){var f;let a,s=i[0].status+"",r,o,n,p=((f=i[0].error)==null?void 0:f.message)+"",c;return{c(){a=u("h1"),r=h(s),o=S(),n=u("p"),c=h(p)},l(e){a=d(e,"H1",{});var t=v(a);r=g(t,s),t.forEach(m),o=q(e),n=d(e,"P",{});var l=v(n);c=g(l,p),l.forEach(m)},m(e,t){_(e,a,t),E(a,r),_(e,o,t),_(e,n,t),E(n,c)},p(e,[t]){var l;t&1&&s!==(s=e[0].status+"")&&$(r,s),t&1&&p!==(p=((l=e[0].error)==null?void 0:l.message)+"")&&$(c,p)},i:b,o:b,d(e){e&&(m(a),m(o),m(n))}}}function k(i,a,s){let r;return y(i,P,o=>s(0,r=o)),[r]}class B extends C{constructor(a){super(),H(this,a,k,j,x,{})}}export{B as component};
|
||||
@@ -1,2 +0,0 @@
|
||||
import{s as S,e as b,i as _,d as u,E as y,o as P,p as j,f as k,g as x,h as M,j as d,a as F,F as C,c as I,u as O,x as q}from"../chunks/scheduler.8852886c.js";import{S as B,i as W,t as m,c as L,a as i,g as H,b as p,d as h,m as $,e as g}from"../chunks/index.fb8f3617.js";import{e as v}from"../chunks/ctx.1e61a5a6.js";import{M as A}from"../chunks/monitor.b8d7520d.js";import{C as N,a as z}from"../chunks/Icon.7b7db889.js";import"../chunks/axios.baaa6432.js";import{p as D}from"../chunks/stores.b8369d52.js";function E(l,t,o){const n=l.slice();return n[5]=t[o],n}function G(l){let t,o,n;return o=new N({props:{class:"mx-auto",$$slots:{default:[Q]},$$scope:{ctx:l}}}),{c(){t=k("section"),p(o.$$.fragment),this.h()},l(e){t=x(e,"SECTION",{class:!0,id:!0});var a=M(t);h(o.$$.fragment,a),a.forEach(u),this.h()},h(){d(t,"class","mx-auto bg-transparent mb-4 flex w-full max-w-[890px] flex-1 flex-col items-start justify-center"),d(t,"id","")},m(e,a){_(e,t,a),$(o,t,null),n=!0},p(e,a){const r={};a&256&&(r.$$scope={dirty:a,ctx:e}),o.$set(r)},i(e){n||(i(o.$$.fragment,e),n=!0)},o(e){m(o.$$.fragment,e),n=!1},d(e){e&&u(t),g(o)}}}function J(l){let t,o,n;return o=new N({props:{class:"w-[580px] border-0 shadow-none",$$slots:{default:[U]},$$scope:{ctx:l}}}),{c(){t=k("section"),p(o.$$.fragment),this.h()},l(e){t=x(e,"SECTION",{class:!0});var a=M(t);h(o.$$.fragment,a),a.forEach(u),this.h()},h(){d(t,"class","w-fit p-0")},m(e,a){_(e,t,a),$(o,t,null),l[3](t),n=!0},p(e,a){const r={};a&257&&(r.$$scope={dirty:a,ctx:e}),o.$set(r)},i(e){n||(i(o.$$.fragment,e),n=!0)},o(e){m(o.$$.fragment,e),n=!1},d(e){e&&u(t),g(o),l[3](null)}}}function K(l){let t,o="No Monitor Found.",n,e,a=`Please read the documentation on how to add monitors
|
||||
<a href="https://kener.ing/docs#h1add-monitors" target="_blank" class="underline">here</a>.`;return{c(){t=k("h1"),t.textContent=o,n=F(),e=k("p"),e.innerHTML=a,this.h()},l(r){t=x(r,"H1",{class:!0,"data-svelte-h":!0}),C(t)!=="svelte-1vwlrnd"&&(t.textContent=o),n=I(r),e=x(r,"P",{class:!0,"data-svelte-h":!0}),C(e)!=="svelte-oy4ufi"&&(e.innerHTML=a),this.h()},h(){d(t,"class","scroll-m-20 text-2xl font-extrabold tracking-tight lg:text-2xl text-center"),d(e,"class","mt-3 text-center")},m(r,c){_(r,t,c),_(r,n,c),_(r,e,c)},p:O,d(r){r&&(u(t),u(n),u(e))}}}function Q(l){let t,o;return t=new z({props:{class:"pt-4",$$slots:{default:[K]},$$scope:{ctx:l}}}),{c(){p(t.$$.fragment)},l(n){h(t.$$.fragment,n)},m(n,e){$(t,n,e),o=!0},p(n,e){const a={};e&256&&(a.$$scope={dirty:e,ctx:n}),t.$set(a)},i(n){o||(i(t.$$.fragment,n),o=!0)},o(n){m(t.$$.fragment,n),o=!1},d(n){g(t,n)}}}function T(l){let t,o;return t=new A({props:{monitor:l[5],localTz:l[0].localTz}}),t.$on("heightChange",l[2]),{c(){p(t.$$.fragment)},l(n){h(t.$$.fragment,n)},m(n,e){$(t,n,e),o=!0},p(n,e){const a={};e&1&&(a.monitor=n[5]),e&1&&(a.localTz=n[0].localTz),t.$set(a)},i(n){o||(i(t.$$.fragment,n),o=!0)},o(n){m(t.$$.fragment,n),o=!1},d(n){g(t,n)}}}function R(l){let t,o,n=v(l[0].monitors),e=[];for(let r=0;r<n.length;r+=1)e[r]=T(E(l,n,r));const a=r=>m(e[r],1,1,()=>{e[r]=null});return{c(){for(let r=0;r<e.length;r+=1)e[r].c();t=b()},l(r){for(let c=0;c<e.length;c+=1)e[c].l(r);t=b()},m(r,c){for(let s=0;s<e.length;s+=1)e[s]&&e[s].m(r,c);_(r,t,c),o=!0},p(r,c){if(c&5){n=v(r[0].monitors);let s;for(s=0;s<n.length;s+=1){const f=E(r,n,s);e[s]?(e[s].p(f,c),i(e[s],1)):(e[s]=T(f),e[s].c(),i(e[s],1),e[s].m(t.parentNode,t))}for(H(),s=n.length;s<e.length;s+=1)a(s);L()}},i(r){if(!o){for(let c=0;c<n.length;c+=1)i(e[c]);o=!0}},o(r){e=e.filter(Boolean);for(let c=0;c<e.length;c+=1)m(e[c]);o=!1},d(r){r&&u(t),q(e,r)}}}function U(l){let t,o;return t=new z({props:{class:"p-0 monitors-card ",$$slots:{default:[R]},$$scope:{ctx:l}}}),{c(){p(t.$$.fragment)},l(n){h(t.$$.fragment,n)},m(n,e){$(t,n,e),o=!0},p(n,e){const a={};e&257&&(a.$$scope={dirty:e,ctx:n}),t.$set(a)},i(n){o||(i(t.$$.fragment,n),o=!0)},o(n){m(t.$$.fragment,n),o=!1},d(n){g(t,n)}}}function V(l){let t,o,n,e;const a=[J,G],r=[];function c(s,f){return s[0].monitors.length>0?0:1}return t=c(l),o=r[t]=a[t](l),{c(){o.c(),n=b()},l(s){o.l(s),n=b()},m(s,f){r[t].m(s,f),_(s,n,f),e=!0},p(s,[f]){let w=t;t=c(s),t===w?r[t].p(s,f):(H(),m(r[w],1,1,()=>{r[w]=null}),L(),o=r[t],o?o.p(s,f):(o=r[t]=a[t](s),o.c()),i(o,1),o.m(n.parentNode,n))},i(s){e||(i(o),e=!0)},o(s){m(o),e=!1},d(s){s&&u(n),r[t].d(s)}}}function X(l,t,o){let n;y(l,D,s=>o(4,n=s));let e,{data:a}=t;function r(s){window.parent.postMessage({height:e.offsetHeight,width:e.offsetWidth,slug:n.params.tag},"*")}P(()=>{a.theme==="dark"?(document.documentElement.classList.add("dark"),document.documentElement.classList.add("dark:bg-background")):(document.documentElement.classList.remove("dark"),document.documentElement.classList.remove("dark:bg-background"))});function c(s){j[s?"unshift":"push"](()=>{e=s,o(1,e)})}return l.$$set=s=>{"data"in s&&o(0,a=s.data)},[a,e,r,c]}class se extends B{constructor(t){super(),W(this,t,X,V,S,{data:0})}}export{se as component};
|
||||
@@ -1 +0,0 @@
|
||||
{"version":"1712895187809"}
|
||||
|
Before Width: | Height: | Size: 156 KiB |
|
Before Width: | Height: | Size: 4.8 KiB |
|
Before Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 20 KiB |
|
Before Width: | Height: | Size: 20 KiB |
|
Before Width: | Height: | Size: 2.5 KiB |
|
Before Width: | Height: | Size: 339 KiB |
|
Before Width: | Height: | Size: 460 KiB |
|
Before Width: | Height: | Size: 162 KiB |
|
Before Width: | Height: | Size: 242 KiB |
|
Before Width: | Height: | Size: 547 KiB |
|
Before Width: | Height: | Size: 368 KiB |
|
Before Width: | Height: | Size: 655 KiB |
|
Before Width: | Height: | Size: 677 KiB |
|
Before Width: | Height: | Size: 508 KiB |
|
Before Width: | Height: | Size: 4.4 KiB |
@@ -1 +0,0 @@
|
||||
User-agent: *
|
||||
|
Before Width: | Height: | Size: 420 KiB |
|
Before Width: | Height: | Size: 70 KiB |
|
Before Width: | Height: | Size: 9.1 KiB |
@@ -1,7 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="256px" height="308px" viewBox="0 0 256 308" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" preserveAspectRatio="xMidYMid">
|
||||
<g>
|
||||
<path d="M239.681566,40.706757 C211.113272,-0.181889366 154.69089,-12.301439 113.894816,13.6910393 L42.2469062,59.3555354 C22.6760042,71.6680028 9.1958152,91.6538543 5.11196889,114.412133 C1.69420521,133.371174 4.6982178,152.928576 13.6483951,169.987905 C7.51549676,179.291145 3.33259428,189.7413 1.3524912,200.706787 C-2.77083771,223.902098 2.62286977,247.780539 16.3159596,266.951444 C44.8902975,307.843936 101.312954,319.958266 142.10271,293.967161 L213.75062,248.302665 C233.322905,235.991626 246.803553,216.005094 250.885557,193.246067 C254.302867,174.287249 251.30121,154.730228 242.355449,137.668922 C248.486748,128.365895 252.667894,117.916162 254.646134,106.951413 C258.772188,83.7560394 253.378243,59.8765465 239.682665,40.706757" fill="#FF3E00"></path>
|
||||
<path d="M106.888658,270.841265 C83.7871855,276.848065 59.3915045,267.805346 45.7864111,248.192566 C37.5477583,236.66102 34.3023491,222.296573 36.7830958,208.343155 C37.1989333,206.075414 37.7711933,203.839165 38.4957755,201.650433 L39.845476,197.534835 L43.5173097,200.231763 C51.9971301,206.462491 61.4784803,211.199728 71.5527203,214.239302 L74.2164003,215.047419 L73.9710252,217.705878 C73.6455499,221.487851 74.6696022,225.262925 76.8616703,228.361972 C80.9560313,234.269749 88.3011363,236.995968 95.2584831,235.190159 C96.8160691,234.773852 98.3006859,234.121384 99.6606718,233.25546 L171.331634,187.582718 C174.877468,185.349963 177.321139,181.729229 178.065299,177.605596 C178.808171,173.400048 177.830501,169.072361 175.351884,165.594581 C171.255076,159.685578 163.908134,156.9582 156.947927,158.762547 C155.392392,159.178888 153.90975,159.83088 152.551509,160.695872 L125.202489,178.130144 C120.705281,180.989558 115.797437,183.144784 110.64897,184.521162 C87.547692,190.527609 63.1523949,181.484801 49.5475471,161.872188 C41.3085624,150.340895 38.0631179,135.976391 40.5442317,122.023052 C43.0002744,108.333716 51.1099574,96.3125326 62.8835328,88.9089537 L134.548175,43.2323647 C139.047294,40.3682559 143.958644,38.21032 149.111311,36.8336525 C172.21244,30.8273594 196.607527,39.8700206 210.212459,59.4823515 C218.451112,71.013898 221.696522,85.3783452 219.215775,99.3317627 C218.798144,101.59911 218.225915,103.835236 217.503095,106.024485 L216.153395,110.140083 L212.483484,107.447276 C204.004261,101.212984 194.522,96.4735732 184.44615,93.4336926 L181.78247,92.6253012 L182.027845,89.9668419 C182.350522,86.1852063 181.326723,82.4111645 179.1372,79.3110228 C175.042839,73.4032457 167.697734,70.677026 160.740387,72.4828355 C159.182801,72.8991426 157.698185,73.5516104 156.338199,74.4175344 L84.6672364,120.0922 C81.1218886,122.323199 78.6795938,125.943704 77.9387928,130.066574 C77.1913232,134.271925 78.1673502,138.601163 80.6469865,142.078963 C84.7438467,147.987899 92.0907405,150.71526 99.0509435,148.910997 C100.608143,148.493836 102.092543,147.841423 103.452857,146.976298 L130.798305,129.548621 C135.293566,126.685437 140.201191,124.528302 145.350175,123.152382 C168.451453,117.145935 192.846751,126.188743 206.451598,145.801356 C214.690583,157.332649 217.936027,171.697153 215.454914,185.650492 C212.997261,199.340539 204.888162,211.362752 193.115613,218.769811 L121.450695,264.442553 C116.951576,267.306662 112.040226,269.464598 106.887559,270.841265" fill="#FFFFFF"></path>
|
||||
</g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 3.4 KiB |
@@ -1,37 +0,0 @@
|
||||
/* global "" */
|
||||
|
||||
const expected = new Set([
|
||||
'SOCKET_PATH',
|
||||
'HOST',
|
||||
'PORT',
|
||||
'ORIGIN',
|
||||
'XFF_DEPTH',
|
||||
'ADDRESS_HEADER',
|
||||
'PROTOCOL_HEADER',
|
||||
'HOST_HEADER',
|
||||
'BODY_SIZE_LIMIT'
|
||||
]);
|
||||
|
||||
if ("") {
|
||||
for (const name in process.env) {
|
||||
if (name.startsWith("")) {
|
||||
const unprefixed = name.slice("".length);
|
||||
if (!expected.has(unprefixed)) {
|
||||
throw new Error(
|
||||
`You should change envPrefix (${""}) to avoid conflicts with existing environment variables — unexpectedly saw ${name}`
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {string} name
|
||||
* @param {any} fallback
|
||||
*/
|
||||
function env(name, fallback) {
|
||||
const prefixed = "" + name;
|
||||
return prefixed in process.env ? process.env[prefixed] : fallback;
|
||||
}
|
||||
|
||||
export { env };
|
||||
@@ -1,225 +0,0 @@
|
||||
import { handler } from './handler.js';
|
||||
import { env } from './env.js';
|
||||
import http from 'http';
|
||||
import * as qs from 'querystring';
|
||||
|
||||
function parse$1 (str, loose) {
|
||||
if (str instanceof RegExp) return { keys:false, pattern:str };
|
||||
var c, o, tmp, ext, keys=[], pattern='', arr = str.split('/');
|
||||
arr[0] || arr.shift();
|
||||
|
||||
while (tmp = arr.shift()) {
|
||||
c = tmp[0];
|
||||
if (c === '*') {
|
||||
keys.push('wild');
|
||||
pattern += '/(.*)';
|
||||
} else if (c === ':') {
|
||||
o = tmp.indexOf('?', 1);
|
||||
ext = tmp.indexOf('.', 1);
|
||||
keys.push( tmp.substring(1, !!~o ? o : !!~ext ? ext : tmp.length) );
|
||||
pattern += !!~o && !~ext ? '(?:/([^/]+?))?' : '/([^/]+?)';
|
||||
if (!!~ext) pattern += (!!~o ? '?' : '') + '\\' + tmp.substring(ext);
|
||||
} else {
|
||||
pattern += '/' + tmp;
|
||||
}
|
||||
}
|
||||
|
||||
return {
|
||||
keys: keys,
|
||||
pattern: new RegExp('^' + pattern + (loose ? '(?=$|\/)' : '\/?$'), 'i')
|
||||
};
|
||||
}
|
||||
|
||||
class Trouter {
|
||||
constructor() {
|
||||
this.routes = [];
|
||||
|
||||
this.all = this.add.bind(this, '');
|
||||
this.get = this.add.bind(this, 'GET');
|
||||
this.head = this.add.bind(this, 'HEAD');
|
||||
this.patch = this.add.bind(this, 'PATCH');
|
||||
this.options = this.add.bind(this, 'OPTIONS');
|
||||
this.connect = this.add.bind(this, 'CONNECT');
|
||||
this.delete = this.add.bind(this, 'DELETE');
|
||||
this.trace = this.add.bind(this, 'TRACE');
|
||||
this.post = this.add.bind(this, 'POST');
|
||||
this.put = this.add.bind(this, 'PUT');
|
||||
}
|
||||
|
||||
use(route, ...fns) {
|
||||
let handlers = [].concat.apply([], fns);
|
||||
let { keys, pattern } = parse$1(route, true);
|
||||
this.routes.push({ keys, pattern, method:'', handlers });
|
||||
return this;
|
||||
}
|
||||
|
||||
add(method, route, ...fns) {
|
||||
let { keys, pattern } = parse$1(route);
|
||||
let handlers = [].concat.apply([], fns);
|
||||
this.routes.push({ keys, pattern, method, handlers });
|
||||
return this;
|
||||
}
|
||||
|
||||
find(method, url) {
|
||||
let isHEAD=(method === 'HEAD');
|
||||
let i=0, j=0, k, tmp, arr=this.routes;
|
||||
let matches=[], params={}, handlers=[];
|
||||
for (; i < arr.length; i++) {
|
||||
tmp = arr[i];
|
||||
if (tmp.method.length === 0 || tmp.method === method || isHEAD && tmp.method === 'GET') {
|
||||
if (tmp.keys === false) {
|
||||
matches = tmp.pattern.exec(url);
|
||||
if (matches === null) continue;
|
||||
if (matches.groups !== void 0) for (k in matches.groups) params[k]=matches.groups[k];
|
||||
tmp.handlers.length > 1 ? (handlers=handlers.concat(tmp.handlers)) : handlers.push(tmp.handlers[0]);
|
||||
} else if (tmp.keys.length > 0) {
|
||||
matches = tmp.pattern.exec(url);
|
||||
if (matches === null) continue;
|
||||
for (j=0; j < tmp.keys.length;) params[tmp.keys[j]]=matches[++j];
|
||||
tmp.handlers.length > 1 ? (handlers=handlers.concat(tmp.handlers)) : handlers.push(tmp.handlers[0]);
|
||||
} else if (tmp.pattern.test(url)) {
|
||||
tmp.handlers.length > 1 ? (handlers=handlers.concat(tmp.handlers)) : handlers.push(tmp.handlers[0]);
|
||||
}
|
||||
} // else not a match
|
||||
}
|
||||
|
||||
return { params, handlers };
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @typedef ParsedURL
|
||||
* @type {import('.').ParsedURL}
|
||||
*/
|
||||
|
||||
/**
|
||||
* @typedef Request
|
||||
* @property {string} url
|
||||
* @property {ParsedURL} _parsedUrl
|
||||
*/
|
||||
|
||||
/**
|
||||
* @param {Request} req
|
||||
* @returns {ParsedURL|void}
|
||||
*/
|
||||
function parse(req) {
|
||||
let raw = req.url;
|
||||
if (raw == null) return;
|
||||
|
||||
let prev = req._parsedUrl;
|
||||
if (prev && prev.raw === raw) return prev;
|
||||
|
||||
let pathname=raw, search='', query;
|
||||
|
||||
if (raw.length > 1) {
|
||||
let idx = raw.indexOf('?', 1);
|
||||
|
||||
if (idx !== -1) {
|
||||
search = raw.substring(idx);
|
||||
pathname = raw.substring(0, idx);
|
||||
if (search.length > 1) {
|
||||
query = qs.parse(search.substring(1));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return req._parsedUrl = { pathname, search, query, raw };
|
||||
}
|
||||
|
||||
function onError(err, req, res) {
|
||||
let code = typeof err.status === 'number' && err.status;
|
||||
code = res.statusCode = (code && code >= 100 ? code : 500);
|
||||
if (typeof err === 'string' || Buffer.isBuffer(err)) res.end(err);
|
||||
else res.end(err.message || http.STATUS_CODES[code]);
|
||||
}
|
||||
|
||||
const mount = fn => fn instanceof Polka ? fn.attach : fn;
|
||||
|
||||
class Polka extends Trouter {
|
||||
constructor(opts={}) {
|
||||
super();
|
||||
this.parse = parse;
|
||||
this.server = opts.server;
|
||||
this.handler = this.handler.bind(this);
|
||||
this.onError = opts.onError || onError; // catch-all handler
|
||||
this.onNoMatch = opts.onNoMatch || this.onError.bind(null, { status: 404 });
|
||||
this.attach = (req, res) => setImmediate(this.handler, req, res);
|
||||
}
|
||||
|
||||
use(base, ...fns) {
|
||||
if (base === '/') {
|
||||
super.use(base, fns.map(mount));
|
||||
} else if (typeof base === 'function' || base instanceof Polka) {
|
||||
super.use('/', [base, ...fns].map(mount));
|
||||
} else {
|
||||
super.use(base,
|
||||
(req, _, next) => {
|
||||
if (typeof base === 'string') {
|
||||
let len = base.length;
|
||||
base.startsWith('/') || len++;
|
||||
req.url = req.url.substring(len) || '/';
|
||||
req.path = req.path.substring(len) || '/';
|
||||
} else {
|
||||
req.url = req.url.replace(base, '') || '/';
|
||||
req.path = req.path.replace(base, '') || '/';
|
||||
}
|
||||
if (req.url.charAt(0) !== '/') {
|
||||
req.url = '/' + req.url;
|
||||
}
|
||||
next();
|
||||
},
|
||||
fns.map(mount),
|
||||
(req, _, next) => {
|
||||
req.path = req._parsedUrl.pathname;
|
||||
req.url = req.path + req._parsedUrl.search;
|
||||
next();
|
||||
}
|
||||
);
|
||||
}
|
||||
return this; // chainable
|
||||
}
|
||||
|
||||
listen() {
|
||||
(this.server = this.server || http.createServer()).on('request', this.attach);
|
||||
this.server.listen.apply(this.server, arguments);
|
||||
return this;
|
||||
}
|
||||
|
||||
handler(req, res, next) {
|
||||
let info = this.parse(req), path = info.pathname;
|
||||
let obj = this.find(req.method, req.path=path);
|
||||
|
||||
req.url = path + info.search;
|
||||
req.originalUrl = req.originalUrl || req.url;
|
||||
req.query = info.query || {};
|
||||
req.search = info.search;
|
||||
req.params = obj.params;
|
||||
|
||||
if (path.length > 1 && path.indexOf('%', 1) !== -1) {
|
||||
for (let k in req.params) {
|
||||
try { req.params[k] = decodeURIComponent(req.params[k]); }
|
||||
catch (e) { /* malform uri segment */ }
|
||||
}
|
||||
}
|
||||
|
||||
let i=0, arr=obj.handlers.concat(this.onNoMatch), len=arr.length;
|
||||
let loop = async () => res.finished || (i < len) && arr[i++](req, res, next);
|
||||
(next = next || (err => err ? this.onError(err, req, res, next) : loop().catch(next)))(); // init
|
||||
}
|
||||
}
|
||||
|
||||
function polka (opts) {
|
||||
return new Polka(opts);
|
||||
}
|
||||
|
||||
const path = env('SOCKET_PATH', false);
|
||||
const host = env('HOST', '0.0.0.0');
|
||||
const port = env('PORT', !path && '3000');
|
||||
|
||||
const server = polka().use(handler);
|
||||
|
||||
server.listen({ path, host, port }, () => {
|
||||
console.log(`Listening on ${path ? path : host + ':' + port}`);
|
||||
});
|
||||
|
||||
export { host, path, port, server };
|
||||
@@ -1,43 +0,0 @@
|
||||
import fs from 'fs-extra';
|
||||
import { p as public_env } from './shared-server-58a5f352.js';
|
||||
|
||||
async function load({ params, route, url, cookies, request }) {
|
||||
let site = JSON.parse(fs.readFileSync(public_env.PUBLIC_KENER_FOLDER + "/site.json", "utf8"));
|
||||
const headers = request.headers;
|
||||
const userAgent = headers.get("user-agent");
|
||||
let localTz = "GMT";
|
||||
const localTzCookie = cookies.get("localTz");
|
||||
if (!!localTzCookie) {
|
||||
localTz = localTzCookie;
|
||||
}
|
||||
let showNav = true;
|
||||
if (url.pathname.startsWith("/embed")) {
|
||||
showNav = false;
|
||||
}
|
||||
let isBot = false;
|
||||
if (userAgent?.includes("Chrome-Lighthouse") || userAgent?.includes("bot")) {
|
||||
isBot = true;
|
||||
}
|
||||
return {
|
||||
site,
|
||||
localTz,
|
||||
showNav,
|
||||
isBot
|
||||
};
|
||||
}
|
||||
|
||||
var _layout_server = /*#__PURE__*/Object.freeze({
|
||||
__proto__: null,
|
||||
load: load
|
||||
});
|
||||
|
||||
const index = 0;
|
||||
let component_cache;
|
||||
const component = async () => component_cache ??= (await import('./_layout.svelte-c7eb1f78.js')).default;
|
||||
const server_id = "src/routes/+layout.server.js";
|
||||
const imports = ["_app/immutable/nodes/0.762daf68.js","_app/immutable/chunks/scheduler.8852886c.js","_app/immutable/chunks/index.fb8f3617.js","_app/immutable/chunks/globals.7f7f1b26.js","_app/immutable/chunks/ctx.1e61a5a6.js","_app/immutable/chunks/index.97524e95.js","_app/immutable/chunks/index.cd89ef46.js"];
|
||||
const stylesheets = ["_app/immutable/assets/0.1c2a189f.css"];
|
||||
const fonts = [];
|
||||
|
||||
export { component, fonts, imports, index, _layout_server as server, server_id, stylesheets };
|
||||
//# sourceMappingURL=0-44f6362d.js.map
|
||||
@@ -1 +0,0 @@
|
||||
{"version":3,"file":"0-44f6362d.js","sources":["../../../.svelte-kit/adapter-node/entries/pages/_layout.server.js","../../../.svelte-kit/adapter-node/nodes/0.js"],"sourcesContent":["import fs from \"fs-extra\";\nimport { p as public_env } from \"../../chunks/shared-server.js\";\nasync function load({ params, route, url, cookies, request }) {\n let site = JSON.parse(fs.readFileSync(public_env.PUBLIC_KENER_FOLDER + \"/site.json\", \"utf8\"));\n const headers = request.headers;\n const userAgent = headers.get(\"user-agent\");\n let localTz = \"GMT\";\n const localTzCookie = cookies.get(\"localTz\");\n if (!!localTzCookie) {\n localTz = localTzCookie;\n }\n let showNav = true;\n if (url.pathname.startsWith(\"/embed\")) {\n showNav = false;\n }\n let isBot = false;\n if (userAgent?.includes(\"Chrome-Lighthouse\") || userAgent?.includes(\"bot\")) {\n isBot = true;\n }\n return {\n site,\n localTz,\n showNav,\n isBot\n };\n}\nexport {\n load\n};\n","import * as server from '../entries/pages/_layout.server.js';\n\nexport const index = 0;\nlet component_cache;\nexport const component = async () => component_cache ??= (await import('../entries/pages/_layout.svelte.js')).default;\nexport { server };\nexport const server_id = \"src/routes/+layout.server.js\";\nexport const imports = [\"_app/immutable/nodes/0.762daf68.js\",\"_app/immutable/chunks/scheduler.8852886c.js\",\"_app/immutable/chunks/index.fb8f3617.js\",\"_app/immutable/chunks/globals.7f7f1b26.js\",\"_app/immutable/chunks/ctx.1e61a5a6.js\",\"_app/immutable/chunks/index.97524e95.js\",\"_app/immutable/chunks/index.cd89ef46.js\"];\nexport const stylesheets = [\"_app/immutable/assets/0.1c2a189f.css\"];\nexport const fonts = [];\n"],"names":[],"mappings":";;;AAEA,eAAe,IAAI,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE;AAC9D,EAAE,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,UAAU,CAAC,mBAAmB,GAAG,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC;AAChG,EAAE,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;AAClC,EAAE,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;AAC9C,EAAE,IAAI,OAAO,GAAG,KAAK,CAAC;AACtB,EAAE,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AAC/C,EAAE,IAAI,CAAC,CAAC,aAAa,EAAE;AACvB,IAAI,OAAO,GAAG,aAAa,CAAC;AAC5B,GAAG;AACH,EAAE,IAAI,OAAO,GAAG,IAAI,CAAC;AACrB,EAAE,IAAI,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE;AACzC,IAAI,OAAO,GAAG,KAAK,CAAC;AACpB,GAAG;AACH,EAAE,IAAI,KAAK,GAAG,KAAK,CAAC;AACpB,EAAE,IAAI,SAAS,EAAE,QAAQ,CAAC,mBAAmB,CAAC,IAAI,SAAS,EAAE,QAAQ,CAAC,KAAK,CAAC,EAAE;AAC9E,IAAI,KAAK,GAAG,IAAI,CAAC;AACjB,GAAG;AACH,EAAE,OAAO;AACT,IAAI,IAAI;AACR,IAAI,OAAO;AACX,IAAI,OAAO;AACX,IAAI,KAAK;AACT,GAAG,CAAC;AACJ;;;;;;;ACvBY,MAAC,KAAK,GAAG,EAAE;AACvB,IAAI,eAAe,CAAC;AACR,MAAC,SAAS,GAAG,YAAY,eAAe,KAAK,CAAC,MAAM,OAAO,8BAAoC,CAAC,EAAE,QAAQ;AAE1G,MAAC,SAAS,GAAG,+BAA+B;AAC5C,MAAC,OAAO,GAAG,CAAC,oCAAoC,CAAC,6CAA6C,CAAC,yCAAyC,CAAC,2CAA2C,CAAC,uCAAuC,CAAC,yCAAyC,CAAC,yCAAyC,EAAE;AAClT,MAAC,WAAW,GAAG,CAAC,sCAAsC,EAAE;AACxD,MAAC,KAAK,GAAG;;;;"}
|
||||
@@ -1,9 +0,0 @@
|
||||
const index = 1;
|
||||
let component_cache;
|
||||
const component = async () => component_cache ??= (await import('./error.svelte-e53c3896.js')).default;
|
||||
const imports = ["_app/immutable/nodes/1.7cee7167.js","_app/immutable/chunks/scheduler.8852886c.js","_app/immutable/chunks/index.fb8f3617.js","_app/immutable/chunks/stores.b8369d52.js","_app/immutable/chunks/singletons.09f1db94.js","_app/immutable/chunks/index.97524e95.js","_app/immutable/chunks/paths.504696e9.js"];
|
||||
const stylesheets = [];
|
||||
const fonts = [];
|
||||
|
||||
export { component, fonts, imports, index, stylesheets };
|
||||
//# sourceMappingURL=1-c2b013f6.js.map
|
||||
@@ -1 +0,0 @@
|
||||
{"version":3,"file":"1-c2b013f6.js","sources":["../../../.svelte-kit/adapter-node/nodes/1.js"],"sourcesContent":["\n\nexport const index = 1;\nlet component_cache;\nexport const component = async () => component_cache ??= (await import('../entries/fallbacks/error.svelte.js')).default;\nexport const imports = [\"_app/immutable/nodes/1.7cee7167.js\",\"_app/immutable/chunks/scheduler.8852886c.js\",\"_app/immutable/chunks/index.fb8f3617.js\",\"_app/immutable/chunks/stores.b8369d52.js\",\"_app/immutable/chunks/singletons.09f1db94.js\",\"_app/immutable/chunks/index.97524e95.js\",\"_app/immutable/chunks/paths.504696e9.js\"];\nexport const stylesheets = [];\nexport const fonts = [];\n"],"names":[],"mappings":"AAEY,MAAC,KAAK,GAAG,EAAE;AACvB,IAAI,eAAe,CAAC;AACR,MAAC,SAAS,GAAG,YAAY,eAAe,KAAK,CAAC,MAAM,OAAO,4BAAsC,CAAC,EAAE,QAAQ;AAC5G,MAAC,OAAO,GAAG,CAAC,oCAAoC,CAAC,6CAA6C,CAAC,yCAAyC,CAAC,0CAA0C,CAAC,8CAA8C,CAAC,yCAAyC,CAAC,yCAAyC,EAAE;AACxT,MAAC,WAAW,GAAG,GAAG;AAClB,MAAC,KAAK,GAAG;;;;"}
|
||||
@@ -1,51 +0,0 @@
|
||||
import { G as GetOpenIncidents, M as Mapper, F as FilterAndInsertMonitorInIncident } from './github-c018834c.js';
|
||||
import { F as FetchData } from './page-576e2fb0.js';
|
||||
import { p as public_env } from './shared-server-58a5f352.js';
|
||||
import fs from 'fs-extra';
|
||||
import 'axios';
|
||||
import './tool-b4b3e524.js';
|
||||
import 'marked';
|
||||
|
||||
async function load({ parent }) {
|
||||
let monitors = JSON.parse(fs.readFileSync(public_env.PUBLIC_KENER_FOLDER + "/monitors.json", "utf8"));
|
||||
const parentData = await parent();
|
||||
const siteData = parentData.site;
|
||||
const github = siteData.github;
|
||||
const monitorsActive = [];
|
||||
for (let i = 0; i < monitors.length; i++) {
|
||||
if (monitors[i].hidden !== void 0 && monitors[i].hidden === true) {
|
||||
continue;
|
||||
}
|
||||
if (monitors[i].category !== void 0 && monitors[i].category !== "home") {
|
||||
continue;
|
||||
}
|
||||
delete monitors[i].api;
|
||||
delete monitors[i].defaultStatus;
|
||||
let data = await FetchData(monitors[i], parentData.localTz);
|
||||
monitors[i].pageData = data;
|
||||
monitors[i].activeIncidents = [];
|
||||
monitorsActive.push(monitors[i]);
|
||||
}
|
||||
let openIncidents = await GetOpenIncidents(github);
|
||||
let openIncidentsReduced = openIncidents.map(Mapper);
|
||||
return {
|
||||
monitors: monitorsActive,
|
||||
openIncidents: FilterAndInsertMonitorInIncident(openIncidentsReduced, monitorsActive)
|
||||
};
|
||||
}
|
||||
|
||||
var _page_server = /*#__PURE__*/Object.freeze({
|
||||
__proto__: null,
|
||||
load: load
|
||||
});
|
||||
|
||||
const index = 2;
|
||||
let component_cache;
|
||||
const component = async () => component_cache ??= (await import('./_page.svelte-b9177f34.js')).default;
|
||||
const server_id = "src/routes/+page.server.js";
|
||||
const imports = ["_app/immutable/nodes/2.6a901bcb.js","_app/immutable/chunks/scheduler.8852886c.js","_app/immutable/chunks/index.fb8f3617.js","_app/immutable/chunks/ctx.1e61a5a6.js","_app/immutable/chunks/index.97524e95.js","_app/immutable/chunks/monitor.b8d7520d.js","_app/immutable/chunks/axios.baaa6432.js","_app/immutable/chunks/Icon.7b7db889.js","_app/immutable/chunks/index.cd89ef46.js","_app/immutable/chunks/events.b4751e74.js","_app/immutable/chunks/incident.fe542872.js","_app/immutable/chunks/chevron-down.f8b4fb7d.js"];
|
||||
const stylesheets = ["_app/immutable/assets/monitor.13f869bc.css","_app/immutable/assets/incident.d0acbf00.css"];
|
||||
const fonts = [];
|
||||
|
||||
export { component, fonts, imports, index, _page_server as server, server_id, stylesheets };
|
||||
//# sourceMappingURL=2-3c89c25e.js.map
|
||||
@@ -1 +0,0 @@
|
||||
{"version":3,"file":"2-3c89c25e.js","sources":["../../../.svelte-kit/adapter-node/entries/pages/_page.server.js","../../../.svelte-kit/adapter-node/nodes/2.js"],"sourcesContent":["import { e as GetOpenIncidents, M as Mapper, F as FilterAndInsertMonitorInIncident } from \"../../chunks/github.js\";\nimport { F as FetchData } from \"../../chunks/page.js\";\nimport { p as public_env } from \"../../chunks/shared-server.js\";\nimport fs from \"fs-extra\";\nasync function load({ parent }) {\n let monitors = JSON.parse(fs.readFileSync(public_env.PUBLIC_KENER_FOLDER + \"/monitors.json\", \"utf8\"));\n const parentData = await parent();\n const siteData = parentData.site;\n const github = siteData.github;\n const monitorsActive = [];\n for (let i = 0; i < monitors.length; i++) {\n if (monitors[i].hidden !== void 0 && monitors[i].hidden === true) {\n continue;\n }\n if (monitors[i].category !== void 0 && monitors[i].category !== \"home\") {\n continue;\n }\n delete monitors[i].api;\n delete monitors[i].defaultStatus;\n let data = await FetchData(monitors[i], parentData.localTz);\n monitors[i].pageData = data;\n monitors[i].activeIncidents = [];\n monitorsActive.push(monitors[i]);\n }\n let openIncidents = await GetOpenIncidents(github);\n let openIncidentsReduced = openIncidents.map(Mapper);\n return {\n monitors: monitorsActive,\n openIncidents: FilterAndInsertMonitorInIncident(openIncidentsReduced, monitorsActive)\n };\n}\nexport {\n load\n};\n","import * as server from '../entries/pages/_page.server.js';\n\nexport const index = 2;\nlet component_cache;\nexport const component = async () => component_cache ??= (await import('../entries/pages/_page.svelte.js')).default;\nexport { server };\nexport const server_id = \"src/routes/+page.server.js\";\nexport const imports = [\"_app/immutable/nodes/2.6a901bcb.js\",\"_app/immutable/chunks/scheduler.8852886c.js\",\"_app/immutable/chunks/index.fb8f3617.js\",\"_app/immutable/chunks/ctx.1e61a5a6.js\",\"_app/immutable/chunks/index.97524e95.js\",\"_app/immutable/chunks/monitor.b8d7520d.js\",\"_app/immutable/chunks/axios.baaa6432.js\",\"_app/immutable/chunks/Icon.7b7db889.js\",\"_app/immutable/chunks/index.cd89ef46.js\",\"_app/immutable/chunks/events.b4751e74.js\",\"_app/immutable/chunks/incident.fe542872.js\",\"_app/immutable/chunks/chevron-down.f8b4fb7d.js\"];\nexport const stylesheets = [\"_app/immutable/assets/monitor.13f869bc.css\",\"_app/immutable/assets/incident.d0acbf00.css\"];\nexport const fonts = [];\n"],"names":[],"mappings":";;;;;;;;AAIA,eAAe,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE;AAChC,EAAE,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,UAAU,CAAC,mBAAmB,GAAG,gBAAgB,EAAE,MAAM,CAAC,CAAC,CAAC;AACxG,EAAE,MAAM,UAAU,GAAG,MAAM,MAAM,EAAE,CAAC;AACpC,EAAE,MAAM,QAAQ,GAAG,UAAU,CAAC,IAAI,CAAC;AACnC,EAAE,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;AACjC,EAAE,MAAM,cAAc,GAAG,EAAE,CAAC;AAC5B,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC5C,IAAI,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,KAAK,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,IAAI,EAAE;AACtE,MAAM,SAAS;AACf,KAAK;AACL,IAAI,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,KAAK,KAAK,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,KAAK,MAAM,EAAE;AAC5E,MAAM,SAAS;AACf,KAAK;AACL,IAAI,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;AAC3B,IAAI,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC;AACrC,IAAI,IAAI,IAAI,GAAG,MAAM,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC;AAChE,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,IAAI,CAAC;AAChC,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,eAAe,GAAG,EAAE,CAAC;AACrC,IAAI,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACrC,GAAG;AACH,EAAE,IAAI,aAAa,GAAG,MAAM,gBAAgB,CAAC,MAAM,CAAC,CAAC;AACrD,EAAE,IAAI,oBAAoB,GAAG,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACvD,EAAE,OAAO;AACT,IAAI,QAAQ,EAAE,cAAc;AAC5B,IAAI,aAAa,EAAE,gCAAgC,CAAC,oBAAoB,EAAE,cAAc,CAAC;AACzF,GAAG,CAAC;AACJ;;;;;;;AC5BY,MAAC,KAAK,GAAG,EAAE;AACvB,IAAI,eAAe,CAAC;AACR,MAAC,SAAS,GAAG,YAAY,eAAe,KAAK,CAAC,MAAM,OAAO,4BAAkC,CAAC,EAAE,QAAQ;AAExG,MAAC,SAAS,GAAG,6BAA6B;AAC1C,MAAC,OAAO,GAAG,CAAC,oCAAoC,CAAC,6CAA6C,CAAC,yCAAyC,CAAC,uCAAuC,CAAC,yCAAyC,CAAC,2CAA2C,CAAC,yCAAyC,CAAC,wCAAwC,CAAC,yCAAyC,CAAC,0CAA0C,CAAC,4CAA4C,CAAC,gDAAgD,EAAE;AAC9gB,MAAC,WAAW,GAAG,CAAC,4CAA4C,CAAC,6CAA6C,EAAE;AAC5G,MAAC,KAAK,GAAG;;;;"}
|
||||
@@ -1,50 +0,0 @@
|
||||
import { G as GetOpenIncidents, M as Mapper, F as FilterAndInsertMonitorInIncident } from './github-c018834c.js';
|
||||
import { F as FetchData } from './page-576e2fb0.js';
|
||||
import { p as public_env } from './shared-server-58a5f352.js';
|
||||
import fs from 'fs-extra';
|
||||
import 'axios';
|
||||
import './tool-b4b3e524.js';
|
||||
import 'marked';
|
||||
|
||||
async function load({ params, route, url, parent }) {
|
||||
let monitors = JSON.parse(fs.readFileSync(public_env.PUBLIC_KENER_FOLDER + "/monitors.json", "utf8"));
|
||||
const parentData = await parent();
|
||||
const siteData = parentData.site;
|
||||
const github = siteData.github;
|
||||
const monitorsActive = [];
|
||||
for (let i = 0; i < monitors.length; i++) {
|
||||
if (monitors[i].hidden !== void 0 && monitors[i].hidden === true) {
|
||||
continue;
|
||||
}
|
||||
if (monitors[i].category === void 0 || monitors[i].category !== params.category) {
|
||||
continue;
|
||||
}
|
||||
delete monitors[i].api;
|
||||
delete monitors[i].defaultStatus;
|
||||
let data = await FetchData(monitors[i], parentData.localTz);
|
||||
monitors[i].pageData = data;
|
||||
monitorsActive.push(monitors[i]);
|
||||
}
|
||||
let openIncidents = await GetOpenIncidents(github);
|
||||
let openIncidentsReduced = openIncidents.map(Mapper);
|
||||
return {
|
||||
monitors: monitorsActive,
|
||||
openIncidents: FilterAndInsertMonitorInIncident(openIncidentsReduced, monitorsActive)
|
||||
};
|
||||
}
|
||||
|
||||
var _page_server = /*#__PURE__*/Object.freeze({
|
||||
__proto__: null,
|
||||
load: load
|
||||
});
|
||||
|
||||
const index = 3;
|
||||
let component_cache;
|
||||
const component = async () => component_cache ??= (await import('./_page.svelte-85f71bac.js')).default;
|
||||
const server_id = "src/routes/category-[category]/+page.server.js";
|
||||
const imports = ["_app/immutable/nodes/3.5e894945.js","_app/immutable/chunks/scheduler.8852886c.js","_app/immutable/chunks/index.fb8f3617.js","_app/immutable/chunks/ctx.1e61a5a6.js","_app/immutable/chunks/index.97524e95.js","_app/immutable/chunks/monitor.b8d7520d.js","_app/immutable/chunks/axios.baaa6432.js","_app/immutable/chunks/Icon.7b7db889.js","_app/immutable/chunks/index.cd89ef46.js","_app/immutable/chunks/events.b4751e74.js","_app/immutable/chunks/incident.fe542872.js","_app/immutable/chunks/chevron-down.f8b4fb7d.js","_app/immutable/chunks/stores.b8369d52.js","_app/immutable/chunks/singletons.09f1db94.js","_app/immutable/chunks/paths.504696e9.js"];
|
||||
const stylesheets = ["_app/immutable/assets/monitor.13f869bc.css","_app/immutable/assets/incident.d0acbf00.css"];
|
||||
const fonts = [];
|
||||
|
||||
export { component, fonts, imports, index, _page_server as server, server_id, stylesheets };
|
||||
//# sourceMappingURL=3-7822e551.js.map
|
||||
@@ -1 +0,0 @@
|
||||
{"version":3,"file":"3-7822e551.js","sources":["../../../.svelte-kit/adapter-node/entries/pages/category-_category_/_page.server.js","../../../.svelte-kit/adapter-node/nodes/3.js"],"sourcesContent":["import { e as GetOpenIncidents, M as Mapper, F as FilterAndInsertMonitorInIncident } from \"../../../chunks/github.js\";\nimport { F as FetchData } from \"../../../chunks/page.js\";\nimport { p as public_env } from \"../../../chunks/shared-server.js\";\nimport fs from \"fs-extra\";\nasync function load({ params, route, url, parent }) {\n let monitors = JSON.parse(fs.readFileSync(public_env.PUBLIC_KENER_FOLDER + \"/monitors.json\", \"utf8\"));\n const parentData = await parent();\n const siteData = parentData.site;\n const github = siteData.github;\n const monitorsActive = [];\n for (let i = 0; i < monitors.length; i++) {\n if (monitors[i].hidden !== void 0 && monitors[i].hidden === true) {\n continue;\n }\n if (monitors[i].category === void 0 || monitors[i].category !== params.category) {\n continue;\n }\n delete monitors[i].api;\n delete monitors[i].defaultStatus;\n let data = await FetchData(monitors[i], parentData.localTz);\n monitors[i].pageData = data;\n monitorsActive.push(monitors[i]);\n }\n let openIncidents = await GetOpenIncidents(github);\n let openIncidentsReduced = openIncidents.map(Mapper);\n return {\n monitors: monitorsActive,\n openIncidents: FilterAndInsertMonitorInIncident(openIncidentsReduced, monitorsActive)\n };\n}\nexport {\n load\n};\n","import * as server from '../entries/pages/category-_category_/_page.server.js';\n\nexport const index = 3;\nlet component_cache;\nexport const component = async () => component_cache ??= (await import('../entries/pages/category-_category_/_page.svelte.js')).default;\nexport { server };\nexport const server_id = \"src/routes/category-[category]/+page.server.js\";\nexport const imports = [\"_app/immutable/nodes/3.5e894945.js\",\"_app/immutable/chunks/scheduler.8852886c.js\",\"_app/immutable/chunks/index.fb8f3617.js\",\"_app/immutable/chunks/ctx.1e61a5a6.js\",\"_app/immutable/chunks/index.97524e95.js\",\"_app/immutable/chunks/monitor.b8d7520d.js\",\"_app/immutable/chunks/axios.baaa6432.js\",\"_app/immutable/chunks/Icon.7b7db889.js\",\"_app/immutable/chunks/index.cd89ef46.js\",\"_app/immutable/chunks/events.b4751e74.js\",\"_app/immutable/chunks/incident.fe542872.js\",\"_app/immutable/chunks/chevron-down.f8b4fb7d.js\",\"_app/immutable/chunks/stores.b8369d52.js\",\"_app/immutable/chunks/singletons.09f1db94.js\",\"_app/immutable/chunks/paths.504696e9.js\"];\nexport const stylesheets = [\"_app/immutable/assets/monitor.13f869bc.css\",\"_app/immutable/assets/incident.d0acbf00.css\"];\nexport const fonts = [];\n"],"names":[],"mappings":";;;;;;;;AAIA,eAAe,IAAI,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE;AACpD,EAAE,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,UAAU,CAAC,mBAAmB,GAAG,gBAAgB,EAAE,MAAM,CAAC,CAAC,CAAC;AACxG,EAAE,MAAM,UAAU,GAAG,MAAM,MAAM,EAAE,CAAC;AACpC,EAAE,MAAM,QAAQ,GAAG,UAAU,CAAC,IAAI,CAAC;AACnC,EAAE,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;AACjC,EAAE,MAAM,cAAc,GAAG,EAAE,CAAC;AAC5B,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC5C,IAAI,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,KAAK,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,IAAI,EAAE;AACtE,MAAM,SAAS;AACf,KAAK;AACL,IAAI,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,KAAK,KAAK,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,KAAK,MAAM,CAAC,QAAQ,EAAE;AACrF,MAAM,SAAS;AACf,KAAK;AACL,IAAI,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;AAC3B,IAAI,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC;AACrC,IAAI,IAAI,IAAI,GAAG,MAAM,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC;AAChE,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,IAAI,CAAC;AAChC,IAAI,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACrC,GAAG;AACH,EAAE,IAAI,aAAa,GAAG,MAAM,gBAAgB,CAAC,MAAM,CAAC,CAAC;AACrD,EAAE,IAAI,oBAAoB,GAAG,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACvD,EAAE,OAAO;AACT,IAAI,QAAQ,EAAE,cAAc;AAC5B,IAAI,aAAa,EAAE,gCAAgC,CAAC,oBAAoB,EAAE,cAAc,CAAC;AACzF,GAAG,CAAC;AACJ;;;;;;;AC3BY,MAAC,KAAK,GAAG,EAAE;AACvB,IAAI,eAAe,CAAC;AACR,MAAC,SAAS,GAAG,YAAY,eAAe,KAAK,CAAC,MAAM,OAAO,4BAAsD,CAAC,EAAE,QAAQ;AAE5H,MAAC,SAAS,GAAG,iDAAiD;AAC9D,MAAC,OAAO,GAAG,CAAC,oCAAoC,CAAC,6CAA6C,CAAC,yCAAyC,CAAC,uCAAuC,CAAC,yCAAyC,CAAC,2CAA2C,CAAC,yCAAyC,CAAC,wCAAwC,CAAC,yCAAyC,CAAC,0CAA0C,CAAC,4CAA4C,CAAC,gDAAgD,CAAC,0CAA0C,CAAC,8CAA8C,CAAC,yCAAyC,EAAE;AAClpB,MAAC,WAAW,GAAG,CAAC,4CAA4C,CAAC,6CAA6C,EAAE;AAC5G,MAAC,KAAK,GAAG;;;;"}
|
||||
@@ -1,24 +0,0 @@
|
||||
import axios from 'axios';
|
||||
|
||||
async function load({ params, route, url, parent }) {
|
||||
const { data } = await axios.get("https://raw.githubusercontent.com/rajnandan1/kener/main/docs.md");
|
||||
return {
|
||||
md: data
|
||||
};
|
||||
}
|
||||
|
||||
var _page_server = /*#__PURE__*/Object.freeze({
|
||||
__proto__: null,
|
||||
load: load
|
||||
});
|
||||
|
||||
const index = 4;
|
||||
let component_cache;
|
||||
const component = async () => component_cache ??= (await import('./_page.svelte-f5dc29c8.js')).default;
|
||||
const server_id = "src/routes/docs/+page.server.js";
|
||||
const imports = ["_app/immutable/nodes/4.67b330c5.js","_app/immutable/chunks/scheduler.8852886c.js","_app/immutable/chunks/index.fb8f3617.js","_app/immutable/chunks/globals.7f7f1b26.js","_app/immutable/chunks/ctx.1e61a5a6.js","_app/immutable/chunks/index.97524e95.js","_app/immutable/chunks/Icon.7b7db889.js","_app/immutable/chunks/events.b4751e74.js","_app/immutable/chunks/chevron-down.f8b4fb7d.js"];
|
||||
const stylesheets = [];
|
||||
const fonts = [];
|
||||
|
||||
export { component, fonts, imports, index, _page_server as server, server_id, stylesheets };
|
||||
//# sourceMappingURL=4-88a8e0b2.js.map
|
||||
@@ -1 +0,0 @@
|
||||
{"version":3,"file":"4-88a8e0b2.js","sources":["../../../.svelte-kit/adapter-node/entries/pages/docs/_page.server.js","../../../.svelte-kit/adapter-node/nodes/4.js"],"sourcesContent":["import axios from \"axios\";\nasync function load({ params, route, url, parent }) {\n const { data } = await axios.get(\"https://raw.githubusercontent.com/rajnandan1/kener/main/docs.md\");\n return {\n md: data\n };\n}\nexport {\n load\n};\n","import * as server from '../entries/pages/docs/_page.server.js';\n\nexport const index = 4;\nlet component_cache;\nexport const component = async () => component_cache ??= (await import('../entries/pages/docs/_page.svelte.js')).default;\nexport { server };\nexport const server_id = \"src/routes/docs/+page.server.js\";\nexport const imports = [\"_app/immutable/nodes/4.67b330c5.js\",\"_app/immutable/chunks/scheduler.8852886c.js\",\"_app/immutable/chunks/index.fb8f3617.js\",\"_app/immutable/chunks/globals.7f7f1b26.js\",\"_app/immutable/chunks/ctx.1e61a5a6.js\",\"_app/immutable/chunks/index.97524e95.js\",\"_app/immutable/chunks/Icon.7b7db889.js\",\"_app/immutable/chunks/events.b4751e74.js\",\"_app/immutable/chunks/chevron-down.f8b4fb7d.js\"];\nexport const stylesheets = [];\nexport const fonts = [];\n"],"names":[],"mappings":";;AACA,eAAe,IAAI,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE;AACpD,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,iEAAiE,CAAC,CAAC;AACtG,EAAE,OAAO;AACT,IAAI,EAAE,EAAE,IAAI;AACZ,GAAG,CAAC;AACJ;;;;;;;ACJY,MAAC,KAAK,GAAG,EAAE;AACvB,IAAI,eAAe,CAAC;AACR,MAAC,SAAS,GAAG,YAAY,eAAe,KAAK,CAAC,MAAM,OAAO,4BAAuC,CAAC,EAAE,QAAQ;AAE7G,MAAC,SAAS,GAAG,kCAAkC;AAC/C,MAAC,OAAO,GAAG,CAAC,oCAAoC,CAAC,6CAA6C,CAAC,yCAAyC,CAAC,2CAA2C,CAAC,uCAAuC,CAAC,yCAAyC,CAAC,wCAAwC,CAAC,0CAA0C,CAAC,gDAAgD,EAAE;AAC7Y,MAAC,WAAW,GAAG,GAAG;AAClB,MAAC,KAAK,GAAG;;;;"}
|
||||
@@ -1,43 +0,0 @@
|
||||
import { F as FetchData } from './page-576e2fb0.js';
|
||||
import { p as public_env } from './shared-server-58a5f352.js';
|
||||
import fs from 'fs-extra';
|
||||
|
||||
async function load({ params, route, url, parent }) {
|
||||
let monitors = JSON.parse(fs.readFileSync(public_env.PUBLIC_KENER_FOLDER + "/monitors.json", "utf8"));
|
||||
const parentData = await parent();
|
||||
const monitorsActive = [];
|
||||
const query = url.searchParams;
|
||||
const theme = query.get("theme");
|
||||
for (let i = 0; i < monitors.length; i++) {
|
||||
if (monitors[i].tag !== params.tag) {
|
||||
continue;
|
||||
}
|
||||
delete monitors[i].api;
|
||||
delete monitors[i].defaultStatus;
|
||||
monitors[i].embed = true;
|
||||
let data = await FetchData(monitors[i], parentData.localTz);
|
||||
monitors[i].pageData = data;
|
||||
monitorsActive.push(monitors[i]);
|
||||
}
|
||||
return {
|
||||
monitors: monitorsActive,
|
||||
theme,
|
||||
openIncidents: []
|
||||
};
|
||||
}
|
||||
|
||||
var _page_server = /*#__PURE__*/Object.freeze({
|
||||
__proto__: null,
|
||||
load: load
|
||||
});
|
||||
|
||||
const index = 5;
|
||||
let component_cache;
|
||||
const component = async () => component_cache ??= (await import('./_page.svelte-e60523b0.js')).default;
|
||||
const server_id = "src/routes/embed-[tag]/+page.server.js";
|
||||
const imports = ["_app/immutable/nodes/5.c348aae9.js","_app/immutable/chunks/scheduler.8852886c.js","_app/immutable/chunks/index.fb8f3617.js","_app/immutable/chunks/ctx.1e61a5a6.js","_app/immutable/chunks/index.97524e95.js","_app/immutable/chunks/monitor.b8d7520d.js","_app/immutable/chunks/axios.baaa6432.js","_app/immutable/chunks/Icon.7b7db889.js","_app/immutable/chunks/index.cd89ef46.js","_app/immutable/chunks/events.b4751e74.js","_app/immutable/chunks/stores.b8369d52.js","_app/immutable/chunks/singletons.09f1db94.js","_app/immutable/chunks/paths.504696e9.js"];
|
||||
const stylesheets = ["_app/immutable/assets/monitor.13f869bc.css"];
|
||||
const fonts = [];
|
||||
|
||||
export { component, fonts, imports, index, _page_server as server, server_id, stylesheets };
|
||||
//# sourceMappingURL=5-56fbbe77.js.map
|
||||
@@ -1 +0,0 @@
|
||||
{"version":3,"file":"5-56fbbe77.js","sources":["../../../.svelte-kit/adapter-node/entries/pages/embed-_tag_/_page.server.js","../../../.svelte-kit/adapter-node/nodes/5.js"],"sourcesContent":["import { F as FetchData } from \"../../../chunks/page.js\";\nimport { p as public_env } from \"../../../chunks/shared-server.js\";\nimport fs from \"fs-extra\";\nasync function load({ params, route, url, parent }) {\n let monitors = JSON.parse(fs.readFileSync(public_env.PUBLIC_KENER_FOLDER + \"/monitors.json\", \"utf8\"));\n const parentData = await parent();\n const monitorsActive = [];\n const query = url.searchParams;\n const theme = query.get(\"theme\");\n for (let i = 0; i < monitors.length; i++) {\n if (monitors[i].tag !== params.tag) {\n continue;\n }\n delete monitors[i].api;\n delete monitors[i].defaultStatus;\n monitors[i].embed = true;\n let data = await FetchData(monitors[i], parentData.localTz);\n monitors[i].pageData = data;\n monitorsActive.push(monitors[i]);\n }\n return {\n monitors: monitorsActive,\n theme,\n openIncidents: []\n };\n}\nexport {\n load\n};\n","import * as server from '../entries/pages/embed-_tag_/_page.server.js';\n\nexport const index = 5;\nlet component_cache;\nexport const component = async () => component_cache ??= (await import('../entries/pages/embed-_tag_/_page.svelte.js')).default;\nexport { server };\nexport const server_id = \"src/routes/embed-[tag]/+page.server.js\";\nexport const imports = [\"_app/immutable/nodes/5.c348aae9.js\",\"_app/immutable/chunks/scheduler.8852886c.js\",\"_app/immutable/chunks/index.fb8f3617.js\",\"_app/immutable/chunks/ctx.1e61a5a6.js\",\"_app/immutable/chunks/index.97524e95.js\",\"_app/immutable/chunks/monitor.b8d7520d.js\",\"_app/immutable/chunks/axios.baaa6432.js\",\"_app/immutable/chunks/Icon.7b7db889.js\",\"_app/immutable/chunks/index.cd89ef46.js\",\"_app/immutable/chunks/events.b4751e74.js\",\"_app/immutable/chunks/stores.b8369d52.js\",\"_app/immutable/chunks/singletons.09f1db94.js\",\"_app/immutable/chunks/paths.504696e9.js\"];\nexport const stylesheets = [\"_app/immutable/assets/monitor.13f869bc.css\"];\nexport const fonts = [];\n"],"names":[],"mappings":";;;;AAGA,eAAe,IAAI,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE;AACpD,EAAE,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,UAAU,CAAC,mBAAmB,GAAG,gBAAgB,EAAE,MAAM,CAAC,CAAC,CAAC;AACxG,EAAE,MAAM,UAAU,GAAG,MAAM,MAAM,EAAE,CAAC;AACpC,EAAE,MAAM,cAAc,GAAG,EAAE,CAAC;AAC5B,EAAE,MAAM,KAAK,GAAG,GAAG,CAAC,YAAY,CAAC;AACjC,EAAE,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AACnC,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC5C,IAAI,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,MAAM,CAAC,GAAG,EAAE;AACxC,MAAM,SAAS;AACf,KAAK;AACL,IAAI,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;AAC3B,IAAI,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC;AACrC,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC;AAC7B,IAAI,IAAI,IAAI,GAAG,MAAM,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC;AAChE,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,IAAI,CAAC;AAChC,IAAI,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACrC,GAAG;AACH,EAAE,OAAO;AACT,IAAI,QAAQ,EAAE,cAAc;AAC5B,IAAI,KAAK;AACT,IAAI,aAAa,EAAE,EAAE;AACrB,GAAG,CAAC;AACJ;;;;;;;ACvBY,MAAC,KAAK,GAAG,EAAE;AACvB,IAAI,eAAe,CAAC;AACR,MAAC,SAAS,GAAG,YAAY,eAAe,KAAK,CAAC,MAAM,OAAO,4BAA8C,CAAC,EAAE,QAAQ;AAEpH,MAAC,SAAS,GAAG,yCAAyC;AACtD,MAAC,OAAO,GAAG,CAAC,oCAAoC,CAAC,6CAA6C,CAAC,yCAAyC,CAAC,uCAAuC,CAAC,yCAAyC,CAAC,2CAA2C,CAAC,yCAAyC,CAAC,wCAAwC,CAAC,yCAAyC,CAAC,0CAA0C,CAAC,0CAA0C,CAAC,8CAA8C,CAAC,yCAAyC,EAAE;AACpjB,MAAC,WAAW,GAAG,CAAC,4CAA4C,EAAE;AAC9D,MAAC,KAAK,GAAG;;;;"}
|
||||
@@ -1,43 +0,0 @@
|
||||
import { p as public_env } from './shared-server-58a5f352.js';
|
||||
import { a as GetIncidents, M as Mapper } from './github-c018834c.js';
|
||||
import fs from 'fs-extra';
|
||||
import 'axios';
|
||||
import './tool-b4b3e524.js';
|
||||
import 'marked';
|
||||
|
||||
async function load({ params, route, url, parent }) {
|
||||
let monitors = JSON.parse(fs.readFileSync(public_env.PUBLIC_KENER_FOLDER + "/monitors.json", "utf8"));
|
||||
const siteData = await parent();
|
||||
const github = siteData.site.github;
|
||||
const { description, name, tag, image } = monitors.find((monitor) => monitor.folderName === params.id);
|
||||
const allIncidents = await GetIncidents(tag, github, "all");
|
||||
const gitHubActiveIssues = allIncidents.filter((issue) => {
|
||||
return issue.state === "open";
|
||||
});
|
||||
const gitHubPastIssues = allIncidents.filter((issue) => {
|
||||
return issue.state === "closed";
|
||||
});
|
||||
return {
|
||||
issues: params.id,
|
||||
githubConfig: github,
|
||||
monitor: { description, name, image },
|
||||
activeIncidents: await Promise.all(gitHubActiveIssues.map(Mapper, { github })),
|
||||
pastIncidents: await Promise.all(gitHubPastIssues.map(Mapper, { github }))
|
||||
};
|
||||
}
|
||||
|
||||
var _page_server = /*#__PURE__*/Object.freeze({
|
||||
__proto__: null,
|
||||
load: load
|
||||
});
|
||||
|
||||
const index = 6;
|
||||
let component_cache;
|
||||
const component = async () => component_cache ??= (await import('./_page.svelte-5de3ecd2.js')).default;
|
||||
const server_id = "src/routes/incident/[id]/+page.server.js";
|
||||
const imports = ["_app/immutable/nodes/6.b99c92be.js","_app/immutable/chunks/scheduler.8852886c.js","_app/immutable/chunks/index.fb8f3617.js","_app/immutable/chunks/ctx.1e61a5a6.js","_app/immutable/chunks/index.97524e95.js","_app/immutable/chunks/incident.fe542872.js","_app/immutable/chunks/Icon.7b7db889.js","_app/immutable/chunks/index.cd89ef46.js","_app/immutable/chunks/axios.baaa6432.js","_app/immutable/chunks/chevron-down.f8b4fb7d.js"];
|
||||
const stylesheets = ["_app/immutable/assets/incident.d0acbf00.css"];
|
||||
const fonts = [];
|
||||
|
||||
export { component, fonts, imports, index, _page_server as server, server_id, stylesheets };
|
||||
//# sourceMappingURL=6-862852f6.js.map
|
||||
@@ -1 +0,0 @@
|
||||
{"version":3,"file":"6-862852f6.js","sources":["../../../.svelte-kit/adapter-node/entries/pages/incident/_id_/_page.server.js","../../../.svelte-kit/adapter-node/nodes/6.js"],"sourcesContent":["import { p as public_env } from \"../../../../chunks/shared-server.js\";\nimport { f as GetIncidents, M as Mapper } from \"../../../../chunks/github.js\";\nimport fs from \"fs-extra\";\nasync function load({ params, route, url, parent }) {\n let monitors = JSON.parse(fs.readFileSync(public_env.PUBLIC_KENER_FOLDER + \"/monitors.json\", \"utf8\"));\n const siteData = await parent();\n const github = siteData.site.github;\n const { description, name, tag, image } = monitors.find((monitor) => monitor.folderName === params.id);\n const allIncidents = await GetIncidents(tag, github, \"all\");\n const gitHubActiveIssues = allIncidents.filter((issue) => {\n return issue.state === \"open\";\n });\n const gitHubPastIssues = allIncidents.filter((issue) => {\n return issue.state === \"closed\";\n });\n return {\n issues: params.id,\n githubConfig: github,\n monitor: { description, name, image },\n activeIncidents: await Promise.all(gitHubActiveIssues.map(Mapper, { github })),\n pastIncidents: await Promise.all(gitHubPastIssues.map(Mapper, { github }))\n };\n}\nexport {\n load\n};\n","import * as server from '../entries/pages/incident/_id_/_page.server.js';\n\nexport const index = 6;\nlet component_cache;\nexport const component = async () => component_cache ??= (await import('../entries/pages/incident/_id_/_page.svelte.js')).default;\nexport { server };\nexport const server_id = \"src/routes/incident/[id]/+page.server.js\";\nexport const imports = [\"_app/immutable/nodes/6.b99c92be.js\",\"_app/immutable/chunks/scheduler.8852886c.js\",\"_app/immutable/chunks/index.fb8f3617.js\",\"_app/immutable/chunks/ctx.1e61a5a6.js\",\"_app/immutable/chunks/index.97524e95.js\",\"_app/immutable/chunks/incident.fe542872.js\",\"_app/immutable/chunks/Icon.7b7db889.js\",\"_app/immutable/chunks/index.cd89ef46.js\",\"_app/immutable/chunks/axios.baaa6432.js\",\"_app/immutable/chunks/chevron-down.f8b4fb7d.js\"];\nexport const stylesheets = [\"_app/immutable/assets/incident.d0acbf00.css\"];\nexport const fonts = [];\n"],"names":[],"mappings":";;;;;;;AAGA,eAAe,IAAI,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE;AACpD,EAAE,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,UAAU,CAAC,mBAAmB,GAAG,gBAAgB,EAAE,MAAM,CAAC,CAAC,CAAC;AACxG,EAAE,MAAM,QAAQ,GAAG,MAAM,MAAM,EAAE,CAAC;AAClC,EAAE,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC;AACtC,EAAE,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,UAAU,KAAK,MAAM,CAAC,EAAE,CAAC,CAAC;AACzG,EAAE,MAAM,YAAY,GAAG,MAAM,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;AAC9D,EAAE,MAAM,kBAAkB,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK;AAC5D,IAAI,OAAO,KAAK,CAAC,KAAK,KAAK,MAAM,CAAC;AAClC,GAAG,CAAC,CAAC;AACL,EAAE,MAAM,gBAAgB,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK;AAC1D,IAAI,OAAO,KAAK,CAAC,KAAK,KAAK,QAAQ,CAAC;AACpC,GAAG,CAAC,CAAC;AACL,EAAE,OAAO;AACT,IAAI,MAAM,EAAE,MAAM,CAAC,EAAE;AACrB,IAAI,YAAY,EAAE,MAAM;AACxB,IAAI,OAAO,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,KAAK,EAAE;AACzC,IAAI,eAAe,EAAE,MAAM,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;AAClF,IAAI,aAAa,EAAE,MAAM,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;AAC9E,GAAG,CAAC;AACJ;;;;;;;ACpBY,MAAC,KAAK,GAAG,EAAE;AACvB,IAAI,eAAe,CAAC;AACR,MAAC,SAAS,GAAG,YAAY,eAAe,KAAK,CAAC,MAAM,OAAO,4BAAgD,CAAC,EAAE,QAAQ;AAEtH,MAAC,SAAS,GAAG,2CAA2C;AACxD,MAAC,OAAO,GAAG,CAAC,oCAAoC,CAAC,6CAA6C,CAAC,yCAAyC,CAAC,uCAAuC,CAAC,yCAAyC,CAAC,4CAA4C,CAAC,wCAAwC,CAAC,yCAAyC,CAAC,yCAAyC,CAAC,gDAAgD,EAAE;AACvb,MAAC,WAAW,GAAG,CAAC,6CAA6C,EAAE;AAC/D,MAAC,KAAK,GAAG;;;;"}
|
||||
@@ -1,47 +0,0 @@
|
||||
import { G as GetOpenIncidents, M as Mapper, F as FilterAndInsertMonitorInIncident } from './github-c018834c.js';
|
||||
import { F as FetchData } from './page-576e2fb0.js';
|
||||
import { p as public_env } from './shared-server-58a5f352.js';
|
||||
import fs from 'fs-extra';
|
||||
import 'axios';
|
||||
import './tool-b4b3e524.js';
|
||||
import 'marked';
|
||||
|
||||
async function load({ params, route, url, parent }) {
|
||||
let monitors = JSON.parse(fs.readFileSync(public_env.PUBLIC_KENER_FOLDER + "/monitors.json", "utf8"));
|
||||
const parentData = await parent();
|
||||
const siteData = parentData.site;
|
||||
const github = siteData.github;
|
||||
const monitorsActive = [];
|
||||
for (let i = 0; i < monitors.length; i++) {
|
||||
if (monitors[i].tag !== params.tag) {
|
||||
continue;
|
||||
}
|
||||
delete monitors[i].api;
|
||||
delete monitors[i].defaultStatus;
|
||||
let data = await FetchData(monitors[i], parentData.localTz);
|
||||
monitors[i].pageData = data;
|
||||
monitorsActive.push(monitors[i]);
|
||||
}
|
||||
let openIncidents = await GetOpenIncidents(github);
|
||||
let openIncidentsReduced = openIncidents.map(Mapper);
|
||||
return {
|
||||
monitors: monitorsActive,
|
||||
openIncidents: FilterAndInsertMonitorInIncident(openIncidentsReduced, monitorsActive)
|
||||
};
|
||||
}
|
||||
|
||||
var _page_server = /*#__PURE__*/Object.freeze({
|
||||
__proto__: null,
|
||||
load: load
|
||||
});
|
||||
|
||||
const index = 7;
|
||||
let component_cache;
|
||||
const component = async () => component_cache ??= (await import('./_page.svelte-277c90e9.js')).default;
|
||||
const server_id = "src/routes/monitor-[tag]/+page.server.js";
|
||||
const imports = ["_app/immutable/nodes/7.18ad8054.js","_app/immutable/chunks/scheduler.8852886c.js","_app/immutable/chunks/index.fb8f3617.js","_app/immutable/chunks/ctx.1e61a5a6.js","_app/immutable/chunks/index.97524e95.js","_app/immutable/chunks/monitor.b8d7520d.js","_app/immutable/chunks/axios.baaa6432.js","_app/immutable/chunks/Icon.7b7db889.js","_app/immutable/chunks/index.cd89ef46.js","_app/immutable/chunks/events.b4751e74.js","_app/immutable/chunks/incident.fe542872.js","_app/immutable/chunks/chevron-down.f8b4fb7d.js","_app/immutable/chunks/paths.504696e9.js"];
|
||||
const stylesheets = ["_app/immutable/assets/monitor.13f869bc.css","_app/immutable/assets/incident.d0acbf00.css"];
|
||||
const fonts = [];
|
||||
|
||||
export { component, fonts, imports, index, _page_server as server, server_id, stylesheets };
|
||||
//# sourceMappingURL=7-2b6475c8.js.map
|
||||
@@ -1 +0,0 @@
|
||||
{"version":3,"file":"7-2b6475c8.js","sources":["../../../.svelte-kit/adapter-node/entries/pages/monitor-_tag_/_page.server.js","../../../.svelte-kit/adapter-node/nodes/7.js"],"sourcesContent":["import { e as GetOpenIncidents, M as Mapper, F as FilterAndInsertMonitorInIncident } from \"../../../chunks/github.js\";\nimport { F as FetchData } from \"../../../chunks/page.js\";\nimport { p as public_env } from \"../../../chunks/shared-server.js\";\nimport fs from \"fs-extra\";\nasync function load({ params, route, url, parent }) {\n let monitors = JSON.parse(fs.readFileSync(public_env.PUBLIC_KENER_FOLDER + \"/monitors.json\", \"utf8\"));\n const parentData = await parent();\n const siteData = parentData.site;\n const github = siteData.github;\n const monitorsActive = [];\n for (let i = 0; i < monitors.length; i++) {\n if (monitors[i].tag !== params.tag) {\n continue;\n }\n delete monitors[i].api;\n delete monitors[i].defaultStatus;\n let data = await FetchData(monitors[i], parentData.localTz);\n monitors[i].pageData = data;\n monitorsActive.push(monitors[i]);\n }\n let openIncidents = await GetOpenIncidents(github);\n let openIncidentsReduced = openIncidents.map(Mapper);\n return {\n monitors: monitorsActive,\n openIncidents: FilterAndInsertMonitorInIncident(openIncidentsReduced, monitorsActive)\n };\n}\nexport {\n load\n};\n","import * as server from '../entries/pages/monitor-_tag_/_page.server.js';\n\nexport const index = 7;\nlet component_cache;\nexport const component = async () => component_cache ??= (await import('../entries/pages/monitor-_tag_/_page.svelte.js')).default;\nexport { server };\nexport const server_id = \"src/routes/monitor-[tag]/+page.server.js\";\nexport const imports = [\"_app/immutable/nodes/7.18ad8054.js\",\"_app/immutable/chunks/scheduler.8852886c.js\",\"_app/immutable/chunks/index.fb8f3617.js\",\"_app/immutable/chunks/ctx.1e61a5a6.js\",\"_app/immutable/chunks/index.97524e95.js\",\"_app/immutable/chunks/monitor.b8d7520d.js\",\"_app/immutable/chunks/axios.baaa6432.js\",\"_app/immutable/chunks/Icon.7b7db889.js\",\"_app/immutable/chunks/index.cd89ef46.js\",\"_app/immutable/chunks/events.b4751e74.js\",\"_app/immutable/chunks/incident.fe542872.js\",\"_app/immutable/chunks/chevron-down.f8b4fb7d.js\",\"_app/immutable/chunks/paths.504696e9.js\"];\nexport const stylesheets = [\"_app/immutable/assets/monitor.13f869bc.css\",\"_app/immutable/assets/incident.d0acbf00.css\"];\nexport const fonts = [];\n"],"names":[],"mappings":";;;;;;;;AAIA,eAAe,IAAI,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE;AACpD,EAAE,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,UAAU,CAAC,mBAAmB,GAAG,gBAAgB,EAAE,MAAM,CAAC,CAAC,CAAC;AACxG,EAAE,MAAM,UAAU,GAAG,MAAM,MAAM,EAAE,CAAC;AACpC,EAAE,MAAM,QAAQ,GAAG,UAAU,CAAC,IAAI,CAAC;AACnC,EAAE,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;AACjC,EAAE,MAAM,cAAc,GAAG,EAAE,CAAC;AAC5B,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC5C,IAAI,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,MAAM,CAAC,GAAG,EAAE;AACxC,MAAM,SAAS;AACf,KAAK;AACL,IAAI,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;AAC3B,IAAI,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC;AACrC,IAAI,IAAI,IAAI,GAAG,MAAM,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC;AAChE,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,IAAI,CAAC;AAChC,IAAI,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACrC,GAAG;AACH,EAAE,IAAI,aAAa,GAAG,MAAM,gBAAgB,CAAC,MAAM,CAAC,CAAC;AACrD,EAAE,IAAI,oBAAoB,GAAG,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACvD,EAAE,OAAO;AACT,IAAI,QAAQ,EAAE,cAAc;AAC5B,IAAI,aAAa,EAAE,gCAAgC,CAAC,oBAAoB,EAAE,cAAc,CAAC;AACzF,GAAG,CAAC;AACJ;;;;;;;ACxBY,MAAC,KAAK,GAAG,EAAE;AACvB,IAAI,eAAe,CAAC;AACR,MAAC,SAAS,GAAG,YAAY,eAAe,KAAK,CAAC,MAAM,OAAO,4BAAgD,CAAC,EAAE,QAAQ;AAEtH,MAAC,SAAS,GAAG,2CAA2C;AACxD,MAAC,OAAO,GAAG,CAAC,oCAAoC,CAAC,6CAA6C,CAAC,yCAAyC,CAAC,uCAAuC,CAAC,yCAAyC,CAAC,2CAA2C,CAAC,yCAAyC,CAAC,wCAAwC,CAAC,yCAAyC,CAAC,0CAA0C,CAAC,4CAA4C,CAAC,gDAAgD,CAAC,yCAAyC,EAAE;AACxjB,MAAC,WAAW,GAAG,CAAC,4CAA4C,CAAC,6CAA6C,EAAE;AAC5G,MAAC,KAAK,GAAG;;;;"}
|
||||
@@ -1,133 +0,0 @@
|
||||
import { c as create_ssr_component, f as compute_rest_props, g as spread, k as escape_attribute_value, h as escape_object, a as each } from './ssr-f056b9d4.js';
|
||||
import { clsx } from 'clsx';
|
||||
import { twMerge } from 'tailwind-merge';
|
||||
|
||||
const void_element_names = /^(?:area|base|br|col|command|embed|hr|img|input|keygen|link|meta|param|source|track|wbr)$/;
|
||||
function is_void(name) {
|
||||
return void_element_names.test(name) || name.toLowerCase() === "!doctype";
|
||||
}
|
||||
function cubicOut(t) {
|
||||
const f = t - 1;
|
||||
return f * f * f + 1;
|
||||
}
|
||||
function cn(...inputs) {
|
||||
return twMerge(clsx(inputs));
|
||||
}
|
||||
const flyAndScale = (node, params = { y: -8, x: 0, start: 0.95, duration: 150 }) => {
|
||||
const style = getComputedStyle(node);
|
||||
const transform = style.transform === "none" ? "" : style.transform;
|
||||
const scaleConversion = (valueA, scaleA, scaleB) => {
|
||||
const [minA, maxA] = scaleA;
|
||||
const [minB, maxB] = scaleB;
|
||||
const percentage = (valueA - minA) / (maxA - minA);
|
||||
const valueB = percentage * (maxB - minB) + minB;
|
||||
return valueB;
|
||||
};
|
||||
const styleToString = (style2) => {
|
||||
return Object.keys(style2).reduce((str, key) => {
|
||||
if (style2[key] === void 0)
|
||||
return str;
|
||||
return str + `${key}:${style2[key]};`;
|
||||
}, "");
|
||||
};
|
||||
return {
|
||||
duration: params.duration ?? 200,
|
||||
delay: 0,
|
||||
css: (t) => {
|
||||
const y = scaleConversion(t, [0, 1], [params.y ?? 5, 0]);
|
||||
const x = scaleConversion(t, [0, 1], [params.x ?? 0, 0]);
|
||||
const scale = scaleConversion(t, [0, 1], [params.start ?? 0.95, 1]);
|
||||
return styleToString({
|
||||
transform: `${transform} translate3d(${x}px, ${y}px, 0) scale(${scale})`,
|
||||
opacity: t
|
||||
});
|
||||
},
|
||||
easing: cubicOut
|
||||
};
|
||||
};
|
||||
const Card = create_ssr_component(($$result, $$props, $$bindings, slots) => {
|
||||
let $$restProps = compute_rest_props($$props, ["class"]);
|
||||
let { class: className = void 0 } = $$props;
|
||||
if ($$props.class === void 0 && $$bindings.class && className !== void 0)
|
||||
$$bindings.class(className);
|
||||
return `<div${spread(
|
||||
[
|
||||
{
|
||||
class: escape_attribute_value(cn("rounded-lg border bg-card text-card-foreground shadow-sm", className))
|
||||
},
|
||||
escape_object($$restProps)
|
||||
],
|
||||
{}
|
||||
)}>${slots.default ? slots.default({}) : ``}</div>`;
|
||||
});
|
||||
const Card_content = create_ssr_component(($$result, $$props, $$bindings, slots) => {
|
||||
let $$restProps = compute_rest_props($$props, ["class"]);
|
||||
let { class: className = void 0 } = $$props;
|
||||
if ($$props.class === void 0 && $$bindings.class && className !== void 0)
|
||||
$$bindings.class(className);
|
||||
return `<div${spread(
|
||||
[
|
||||
{
|
||||
class: escape_attribute_value(cn("p-6 pt-0", className))
|
||||
},
|
||||
escape_object($$restProps)
|
||||
],
|
||||
{}
|
||||
)}>${slots.default ? slots.default({}) : ``}</div>`;
|
||||
});
|
||||
const defaultAttributes = {
|
||||
xmlns: "http://www.w3.org/2000/svg",
|
||||
width: 24,
|
||||
height: 24,
|
||||
viewBox: "0 0 24 24",
|
||||
fill: "none",
|
||||
stroke: "currentColor",
|
||||
"stroke-width": 2,
|
||||
"stroke-linecap": "round",
|
||||
"stroke-linejoin": "round"
|
||||
};
|
||||
const Icon = create_ssr_component(($$result, $$props, $$bindings, slots) => {
|
||||
let $$restProps = compute_rest_props($$props, ["name", "color", "size", "strokeWidth", "absoluteStrokeWidth", "iconNode"]);
|
||||
let { name } = $$props;
|
||||
let { color = "currentColor" } = $$props;
|
||||
let { size = 24 } = $$props;
|
||||
let { strokeWidth = 2 } = $$props;
|
||||
let { absoluteStrokeWidth = false } = $$props;
|
||||
let { iconNode } = $$props;
|
||||
if ($$props.name === void 0 && $$bindings.name && name !== void 0)
|
||||
$$bindings.name(name);
|
||||
if ($$props.color === void 0 && $$bindings.color && color !== void 0)
|
||||
$$bindings.color(color);
|
||||
if ($$props.size === void 0 && $$bindings.size && size !== void 0)
|
||||
$$bindings.size(size);
|
||||
if ($$props.strokeWidth === void 0 && $$bindings.strokeWidth && strokeWidth !== void 0)
|
||||
$$bindings.strokeWidth(strokeWidth);
|
||||
if ($$props.absoluteStrokeWidth === void 0 && $$bindings.absoluteStrokeWidth && absoluteStrokeWidth !== void 0)
|
||||
$$bindings.absoluteStrokeWidth(absoluteStrokeWidth);
|
||||
if ($$props.iconNode === void 0 && $$bindings.iconNode && iconNode !== void 0)
|
||||
$$bindings.iconNode(iconNode);
|
||||
return `<svg${spread(
|
||||
[
|
||||
escape_object(defaultAttributes),
|
||||
escape_object($$restProps),
|
||||
{ width: escape_attribute_value(size) },
|
||||
{ height: escape_attribute_value(size) },
|
||||
{ stroke: escape_attribute_value(color) },
|
||||
{
|
||||
"stroke-width": escape_attribute_value(absoluteStrokeWidth ? Number(strokeWidth) * 24 / Number(size) : strokeWidth)
|
||||
},
|
||||
{
|
||||
class: escape_attribute_value(`lucide-icon lucide lucide-${name} ${$$props.class ?? ""}`)
|
||||
}
|
||||
],
|
||||
{}
|
||||
)}>${each(iconNode, ([tag, attrs]) => {
|
||||
return `${((tag$1) => {
|
||||
return tag$1 ? `<${tag}${spread([escape_object(attrs)], {})}>${is_void(tag$1) ? "" : ``}${is_void(tag$1) ? "" : `</${tag$1}>`}` : "";
|
||||
})(tag)}`;
|
||||
})}${slots.default ? slots.default({}) : ``}</svg>`;
|
||||
});
|
||||
const Icon$1 = Icon;
|
||||
|
||||
export { Card as C, Icon$1 as I, Card_content as a, cubicOut as b, cn as c, flyAndScale as f, is_void as i };
|
||||
//# sourceMappingURL=Icon-2d61886b.js.map
|
||||
@@ -1,26 +0,0 @@
|
||||
import { c as create_ssr_component, v as validate_component, e as escape, a as each, b as add_attribute } from './ssr-f056b9d4.js';
|
||||
import './index3-940e7b25.js';
|
||||
import './ctx-719e1af3.js';
|
||||
import './index2-ef0fcb8d.js';
|
||||
import 'clsx';
|
||||
import 'tailwind-variants';
|
||||
|
||||
const Nav = create_ssr_component(($$result, $$props, $$bindings, slots) => {
|
||||
let { data } = $$props;
|
||||
if ($$props.data === void 0 && $$bindings.data && data !== void 0)
|
||||
$$bindings.data(data);
|
||||
return `<div class="one"></div> <header class="relative z-50 w-full"><div class="container flex h-14 items-center "><div class="mr-4 flex blurry-bg w-full justify-between"><a${add_attribute("href", data.site.home ? data.site.home : "/", 0)} class="mr-6 flex items-center space-x-2">${data.site.logo ? `<img${add_attribute("src", data.site.logo, 0)} class="h-8"${add_attribute("alt", data.site.title, 0)} srcset="">` : ``} ${data.site.title ? `<span class="hidden font-bold md:inline-block text-[15px] lg:text-base">${escape(data.site.title)}</span>` : ``}</a> ${data.site.nav ? `<nav class="flex flex-wrap items-center space-x-6 text-sm font-medium">${each(data.site.nav, (navItem) => {
|
||||
return `<a${add_attribute("href", navItem.url, 0)}>${escape(navItem.name)} </a>`;
|
||||
})}</nav>` : ``}</div></div></header>`;
|
||||
});
|
||||
const Layout = create_ssr_component(($$result, $$props, $$bindings, slots) => {
|
||||
let { data } = $$props;
|
||||
if ($$props.data === void 0 && $$bindings.data && data !== void 0)
|
||||
$$bindings.data(data);
|
||||
return `${data.showNav ? `${validate_component(Nav, "Nav").$$render($$result, { data }, {}, {})}` : ``} ${$$result.head += `<!-- HEAD_svelte-3shchj_START -->${$$result.title = `<title>${escape(data.site.title)}</title>`, ""}${each(Object.entries(data.site.metaTags), ([key, value]) => {
|
||||
return `<meta${add_attribute("name", key, 0)}${add_attribute("content", value, 0)}>`;
|
||||
})}<!-- HEAD_svelte-3shchj_END -->`, ""} ${slots.default ? slots.default({}) : ``} ${data.showNav && !!data.site.footerHTML ? `<footer class="py-6 z-10 md:px-8 md:py-0"><div class="container relative flex flex-col pl-0 items-center justify-center max-w-[890px] gap-4 md:h-24 md:flex-row"><div class="flex flex-col items-center gap-4 px-8 md:flex-row md:gap-2 md:px-0"><p class="text-center text-sm leading-loose text-muted-foreground md:text-left"><!-- HTML_TAG_START -->${data.site.footerHTML}<!-- HTML_TAG_END --></p></div></div></footer>` : ``}`;
|
||||
});
|
||||
|
||||
export { Layout as default };
|
||||
//# sourceMappingURL=_layout.svelte-c7eb1f78.js.map
|
||||
@@ -1 +0,0 @@
|
||||
{"version":3,"file":"_layout.svelte-c7eb1f78.js","sources":["../../../.svelte-kit/adapter-node/entries/pages/_layout.svelte.js"],"sourcesContent":["import { c as create_ssr_component, a as add_attribute, e as escape, b as each, v as validate_component } from \"../../chunks/ssr.js\";\nimport \"../../chunks/index3.js\";\nconst app = \"\";\nconst kener = \"\";\nconst Nav = create_ssr_component(($$result, $$props, $$bindings, slots) => {\n let { data } = $$props;\n if ($$props.data === void 0 && $$bindings.data && data !== void 0)\n $$bindings.data(data);\n return `<div class=\"one\"></div> <header class=\"relative z-50 w-full\"><div class=\"container flex h-14 items-center \"><div class=\"mr-4 flex blurry-bg w-full justify-between\"><a${add_attribute(\"href\", data.site.home ? data.site.home : \"/\", 0)} class=\"mr-6 flex items-center space-x-2\">${data.site.logo ? `<img${add_attribute(\"src\", data.site.logo, 0)} class=\"h-8\"${add_attribute(\"alt\", data.site.title, 0)} srcset=\"\">` : ``} ${data.site.title ? `<span class=\"hidden font-bold md:inline-block text-[15px] lg:text-base\">${escape(data.site.title)}</span>` : ``}</a> ${data.site.nav ? `<nav class=\"flex flex-wrap items-center space-x-6 text-sm font-medium\">${each(data.site.nav, (navItem) => {\n return `<a${add_attribute(\"href\", navItem.url, 0)}>${escape(navItem.name)} </a>`;\n })}</nav>` : ``}</div></div></header>`;\n});\nconst Layout = create_ssr_component(($$result, $$props, $$bindings, slots) => {\n let { data } = $$props;\n if ($$props.data === void 0 && $$bindings.data && data !== void 0)\n $$bindings.data(data);\n return `${data.showNav ? `${validate_component(Nav, \"Nav\").$$render($$result, { data }, {}, {})}` : ``} ${$$result.head += `<!-- HEAD_svelte-3shchj_START -->${$$result.title = `<title>${escape(data.site.title)}</title>`, \"\"}${each(Object.entries(data.site.metaTags), ([key, value]) => {\n return `<meta${add_attribute(\"name\", key, 0)}${add_attribute(\"content\", value, 0)}>`;\n })}<!-- HEAD_svelte-3shchj_END -->`, \"\"} ${slots.default ? slots.default({}) : ``} ${data.showNav && !!data.site.footerHTML ? `<footer class=\"py-6 z-10 md:px-8 md:py-0\"><div class=\"container relative flex flex-col pl-0 items-center justify-center max-w-[890px] gap-4 md:h-24 md:flex-row\"><div class=\"flex flex-col items-center gap-4 px-8 md:flex-row md:gap-2 md:px-0\"><p class=\"text-center text-sm leading-loose text-muted-foreground md:text-left\"><!-- HTML_TAG_START -->${data.site.footerHTML}<!-- HTML_TAG_END --></p></div></div></footer>` : ``}`;\n});\nexport {\n Layout as default\n};\n"],"names":[],"mappings":";;;;;;;AAIA,MAAM,GAAG,GAAG,oBAAoB,CAAC,CAAC,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,KAAK;AAC3E,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC;AACzB,EAAE,IAAI,OAAO,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,UAAU,CAAC,IAAI,IAAI,IAAI,KAAK,KAAK,CAAC;AACnE,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,EAAE,OAAO,CAAC,sKAAsK,EAAE,aAAa,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,0CAA0C,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,EAAE,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,YAAY,EAAE,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,wEAAwE,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,uEAAuE,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,KAAK;AAC/qB,IAAI,OAAO,CAAC,EAAE,EAAE,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC;AACrF,GAAG,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC;AACzC,CAAC,CAAC,CAAC;AACE,MAAC,MAAM,GAAG,oBAAoB,CAAC,CAAC,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,KAAK;AAC9E,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC;AACzB,EAAE,IAAI,OAAO,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,UAAU,CAAC,IAAI,IAAI,IAAI,KAAK,KAAK,CAAC;AACnE,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,OAAO,GAAG,CAAC,EAAE,kBAAkB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,IAAI,IAAI,CAAC,iCAAiC,EAAE,QAAQ,CAAC,KAAK,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK;AAC/R,IAAI,OAAO,CAAC,KAAK,EAAE,aAAa,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,aAAa,CAAC,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACzF,GAAG,CAAC,CAAC,+BAA+B,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,wVAAwV,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,8CAA8C,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACviB,CAAC;;;;"}
|
||||
@@ -1,69 +0,0 @@
|
||||
import { c as create_ssr_component, e as escape, v as validate_component, a as each } from './ssr-f056b9d4.js';
|
||||
import { M as Monitor } from './monitor-4022e836.js';
|
||||
import { C as Card, a as Card_content } from './Icon-2d61886b.js';
|
||||
import 'clsx';
|
||||
import { I as Incident } from './incident-2dcbb3c6.js';
|
||||
import './ctx-719e1af3.js';
|
||||
import { B as Badge } from './index4-9cd90a9b.js';
|
||||
import './index2-ef0fcb8d.js';
|
||||
import './events-3e3c01b3.js';
|
||||
import './index3-940e7b25.js';
|
||||
import 'tailwind-variants';
|
||||
import 'tailwind-merge';
|
||||
import './helpers-0acb6e43.js';
|
||||
import 'moment';
|
||||
import './chevron-down-afdb97a6.js';
|
||||
|
||||
const Page = create_ssr_component(($$result, $$props, $$bindings, slots) => {
|
||||
let { data } = $$props;
|
||||
let hasActiveIncidents = data.openIncidents.length > 0;
|
||||
if ($$props.data === void 0 && $$bindings.data && data !== void 0)
|
||||
$$bindings.data(data);
|
||||
return `${$$result.head += `<!-- HEAD_svelte-11ekmvk_START -->${data.monitors.length > 0 ? `${$$result.title = `<title>${escape(data.monitors[0].name)} Monitor Page</title>`, ""}` : ``}<!-- HEAD_svelte-11ekmvk_END -->`, ""} <div class="mt-32"></div> ${hasActiveIncidents ? `<section class="mx-auto bg-transparent mb-4 flex w-full max-w-[890px] flex-1 flex-col items-start justify-center" id=""><div class="grid w-full grid-cols-2 gap-4"><div class="col-span-2 md:col-span-1 text-center md:text-left">${validate_component(Badge, "Badge").$$render($$result, { variant: "outline" }, {}, {
|
||||
default: () => {
|
||||
return `Ongoing Incidents`;
|
||||
}
|
||||
})}</div></div></section> <section class="mx-auto mb-8 flex w-full max-w-[890px] flex-1 flex-col items-start justify-center" id="">${each(data.openIncidents, (incident, i) => {
|
||||
return `${validate_component(Incident, "Incident").$$render(
|
||||
$$result,
|
||||
{
|
||||
incident,
|
||||
state: "close",
|
||||
variant: "title+body+comments+monitor",
|
||||
monitor: incident.monitor
|
||||
},
|
||||
{},
|
||||
{}
|
||||
)}`;
|
||||
})}</section>` : ``} ${data.monitors.length > 0 ? `<section class="mx-auto bg-transparent mb-4 flex w-full max-w-[890px] flex-1 flex-col items-start justify-center" id=""><div class="grid w-full grid-cols-2 gap-4"><div class="col-span-2 md:col-span-1 text-center md:text-left">${validate_component(Badge, "Badge").$$render($$result, { class: "", variant: "outline" }, {}, {
|
||||
default: () => {
|
||||
return `Availability per Component`;
|
||||
}
|
||||
})}</div> <div class="col-span-2 md:col-span-1 text-center md:text-right">${validate_component(Badge, "Badge").$$render($$result, { variant: "outline" }, {}, {
|
||||
default: () => {
|
||||
return `<span class="w-[8px] h-[8px] inline-flex rounded-full bg-api-up opacity-75 mr-1"></span> <span class="mr-3" data-svelte-h="svelte-fd8nbr">UP</span> <span class="w-[8px] h-[8px] inline-flex rounded-full bg-api-degraded opacity-75 mr-1"></span> <span class="mr-3" data-svelte-h="svelte-ddctvm">DEGRADED</span> <span class="w-[8px] h-[8px] inline-flex rounded-full bg-api-down opacity-75 mr-1"></span> <span class="mr-3" data-svelte-h="svelte-1o75psw">DOWN</span>`;
|
||||
}
|
||||
})}</div></div></section> <section class="mx-auto backdrop-blur-[2px] mb-8 flex w-full max-w-[890px] flex-1 flex-col items-start justify-center">${validate_component(Card, "Card.Root").$$render($$result, { class: "w-full" }, {}, {
|
||||
default: () => {
|
||||
return `${validate_component(Card_content, "Card.Content").$$render($$result, { class: "p-0 monitors-card" }, {}, {
|
||||
default: () => {
|
||||
return `${each(data.monitors, (monitor) => {
|
||||
return `${validate_component(Monitor, "Monitor").$$render($$result, { monitor, localTz: data.localTz }, {}, {})}`;
|
||||
})}`;
|
||||
}
|
||||
})}`;
|
||||
}
|
||||
})}</section>` : `<section class="mx-auto bg-transparent mb-4 flex w-full max-w-[890px] flex-1 flex-col items-start justify-center" id="">${validate_component(Card, "Card.Root").$$render($$result, { class: "mx-auto" }, {}, {
|
||||
default: () => {
|
||||
return `${validate_component(Card_content, "Card.Content").$$render($$result, { class: "pt-4" }, {}, {
|
||||
default: () => {
|
||||
return `<h1 class="scroll-m-20 text-2xl font-extrabold tracking-tight lg:text-2xl text-center" data-svelte-h="svelte-pnpgii">No Monitor Found.</h1> <p class="mt-3 text-center" data-svelte-h="svelte-x3h5nn">Please read the documentation on how to add monitors
|
||||
<a href="https://kener.ing/docs#h1add-monitors" target="_blank" class="underline">here</a>.</p>`;
|
||||
}
|
||||
})}`;
|
||||
}
|
||||
})}</section>`}`;
|
||||
});
|
||||
|
||||
export { Page as default };
|
||||
//# sourceMappingURL=_page.svelte-277c90e9.js.map
|
||||
@@ -1,112 +0,0 @@
|
||||
import { c as create_ssr_component, e as escape, v as validate_component, a as each, f as compute_rest_props, d as subscribe, g as spread, h as escape_object } from './ssr-f056b9d4.js';
|
||||
import 'clsx';
|
||||
import { I as Incident } from './incident-2dcbb3c6.js';
|
||||
import { e as setCtx, f as getAttrs } from './ctx-719e1af3.js';
|
||||
import { c as cn } from './Icon-2d61886b.js';
|
||||
import 'moment';
|
||||
import { B as Badge } from './index4-9cd90a9b.js';
|
||||
import './helpers-0acb6e43.js';
|
||||
import './index3-940e7b25.js';
|
||||
import 'tailwind-variants';
|
||||
import './chevron-down-afdb97a6.js';
|
||||
import './index2-ef0fcb8d.js';
|
||||
import 'tailwind-merge';
|
||||
|
||||
const Separator$1 = create_ssr_component(($$result, $$props, $$bindings, slots) => {
|
||||
let builder;
|
||||
let $$restProps = compute_rest_props($$props, ["orientation", "decorative", "asChild"]);
|
||||
let $root, $$unsubscribe_root;
|
||||
let { orientation = "horizontal" } = $$props;
|
||||
let { decorative = true } = $$props;
|
||||
let { asChild = false } = $$props;
|
||||
const { elements: { root }, updateOption } = setCtx({ orientation, decorative });
|
||||
$$unsubscribe_root = subscribe(root, (value) => $root = value);
|
||||
const attrs = getAttrs("root");
|
||||
if ($$props.orientation === void 0 && $$bindings.orientation && orientation !== void 0)
|
||||
$$bindings.orientation(orientation);
|
||||
if ($$props.decorative === void 0 && $$bindings.decorative && decorative !== void 0)
|
||||
$$bindings.decorative(decorative);
|
||||
if ($$props.asChild === void 0 && $$bindings.asChild && asChild !== void 0)
|
||||
$$bindings.asChild(asChild);
|
||||
{
|
||||
updateOption("orientation", orientation);
|
||||
}
|
||||
{
|
||||
updateOption("decorative", decorative);
|
||||
}
|
||||
builder = $root;
|
||||
$$unsubscribe_root();
|
||||
return `${asChild ? `${slots.default ? slots.default({ builder, attrs }) : ``}` : `<div${spread([escape_object(builder), escape_object($$restProps), escape_object(attrs)], {})}></div>`}`;
|
||||
});
|
||||
const Separator = create_ssr_component(($$result, $$props, $$bindings, slots) => {
|
||||
let $$restProps = compute_rest_props($$props, ["class", "orientation", "decorative"]);
|
||||
let { class: className = void 0 } = $$props;
|
||||
let { orientation = "horizontal" } = $$props;
|
||||
let { decorative = void 0 } = $$props;
|
||||
if ($$props.class === void 0 && $$bindings.class && className !== void 0)
|
||||
$$bindings.class(className);
|
||||
if ($$props.orientation === void 0 && $$bindings.orientation && orientation !== void 0)
|
||||
$$bindings.orientation(orientation);
|
||||
if ($$props.decorative === void 0 && $$bindings.decorative && decorative !== void 0)
|
||||
$$bindings.decorative(decorative);
|
||||
return `${validate_component(Separator$1, "SeparatorPrimitive.Root").$$render(
|
||||
$$result,
|
||||
Object.assign(
|
||||
{},
|
||||
{
|
||||
class: cn(
|
||||
"shrink-0 bg-border",
|
||||
orientation === "horizontal" ? "h-[1px] w-full" : "h-full w-[1px]",
|
||||
className
|
||||
)
|
||||
},
|
||||
{ orientation },
|
||||
{ decorative },
|
||||
$$restProps
|
||||
),
|
||||
{},
|
||||
{}
|
||||
)}`;
|
||||
});
|
||||
const Page = create_ssr_component(($$result, $$props, $$bindings, slots) => {
|
||||
let { data } = $$props;
|
||||
if ($$props.data === void 0 && $$bindings.data && data !== void 0)
|
||||
$$bindings.data(data);
|
||||
return `${$$result.head += `<!-- HEAD_svelte-1j8jcnk_START -->${$$result.title = `<title> ${escape(data.monitor.name)} - Incidents
|
||||
</title>`, ""}<!-- HEAD_svelte-1j8jcnk_END -->`, ""} <section class="mx-auto flex w-full max-w-4xl flex-1 flex-col items-start justify-center"><div class="mx-auto max-w-screen-xl px-4 pt-32 pb-16 lg:flex lg:items-center"><div class="mx-auto max-w-3xl text-center blurry-bg"><h1 class="bg-gradient-to-r from-green-300 via-blue-500 to-purple-600 bg-clip-text text-5xl font-extrabold text-transparent leading-snug">${escape(data.monitor.name)}</h1> <p class="mx-auto mt-4 max-w-xl sm:text-xl"><!-- HTML_TAG_START -->${data.monitor.description}<!-- HTML_TAG_END --></p></div></div></section> <section class="mx-auto flex-1 mt-8 flex-col mb-4 flex w-full"><div class="container"><h1 class="mb-4 text-2xl font-bold leading-none">${validate_component(Badge, "Badge").$$render($$result, { variant: "outline" }, {}, {
|
||||
default: () => {
|
||||
return `Active Incidents`;
|
||||
}
|
||||
})}</h1> ${data.activeIncidents.length > 0 ? `${each(data.activeIncidents, (incident, i) => {
|
||||
return `${validate_component(Incident, "Incident").$$render(
|
||||
$$result,
|
||||
{
|
||||
incident,
|
||||
state: i == 0 ? "open" : "close",
|
||||
variant: "title+body+comments",
|
||||
monitor: data.monitor
|
||||
},
|
||||
{},
|
||||
{}
|
||||
)}`;
|
||||
})}` : `<div class="flex items-center justify-left" data-svelte-h="svelte-otycm6"><p class="text-base font-semibold">No active incidents</p></div>`}</div></section> ${validate_component(Separator, "Separator").$$render($$result, { class: "container mb-4 w-[400px]" }, {}, {})} <section class="mx-auto flex-1 mt-8 flex-col mb-4 flex w-full"><div class="container"><h1 class="mb-4 text-2xl font-bold leading-none">${validate_component(Badge, "Badge").$$render($$result, { variant: "outline" }, {}, {
|
||||
default: () => {
|
||||
return `Recent Incidents - Last ${escape(data.site.github.incidentSince)} Hours`;
|
||||
}
|
||||
})}</h1> ${data.pastIncidents.length > 0 ? `${each(data.pastIncidents, (incident) => {
|
||||
return `${validate_component(Incident, "Incident").$$render(
|
||||
$$result,
|
||||
{
|
||||
incident,
|
||||
state: "close",
|
||||
variant: "title+body+comments",
|
||||
monitor: data.monitor
|
||||
},
|
||||
{},
|
||||
{}
|
||||
)}`;
|
||||
})}` : `<div class="flex items-center justify-left" data-svelte-h="svelte-1wctao9"><p class="text-base font-semibold">No recent incidents</p></div>`}</div></section>`;
|
||||
});
|
||||
|
||||
export { Page as default };
|
||||
//# sourceMappingURL=_page.svelte-5de3ecd2.js.map
|
||||
@@ -1,74 +0,0 @@
|
||||
import { c as create_ssr_component, d as subscribe, e as escape, b as add_attribute, v as validate_component, a as each } from './ssr-f056b9d4.js';
|
||||
import { M as Monitor } from './monitor-4022e836.js';
|
||||
import { C as Card, a as Card_content } from './Icon-2d61886b.js';
|
||||
import 'clsx';
|
||||
import { I as Incident } from './incident-2dcbb3c6.js';
|
||||
import './ctx-719e1af3.js';
|
||||
import { B as Badge } from './index4-9cd90a9b.js';
|
||||
import { p as page } from './stores-0262db6b.js';
|
||||
import './index2-ef0fcb8d.js';
|
||||
import './events-3e3c01b3.js';
|
||||
import './index3-940e7b25.js';
|
||||
import 'tailwind-variants';
|
||||
import 'tailwind-merge';
|
||||
import './helpers-0acb6e43.js';
|
||||
import 'moment';
|
||||
import './chevron-down-afdb97a6.js';
|
||||
|
||||
const Page = create_ssr_component(($$result, $$props, $$bindings, slots) => {
|
||||
let $page, $$unsubscribe_page;
|
||||
$$unsubscribe_page = subscribe(page, (value) => $page = value);
|
||||
let { data } = $$props;
|
||||
let category = data.site.categories.find((c) => c.name === $page.params.category);
|
||||
let hasActiveIncidents = data.openIncidents.length > 0;
|
||||
if ($$props.data === void 0 && $$bindings.data && data !== void 0)
|
||||
$$bindings.data(data);
|
||||
$$unsubscribe_page();
|
||||
return `${$$result.head += `<!-- HEAD_svelte-zgbzo2_START -->${category ? `${$$result.title = `<title>${escape(category.name)} Categorry Page</title>`, ""} ${category.description ? `<meta name="description"${add_attribute("content", category.description, 0)}>` : ``}` : ``}<!-- HEAD_svelte-zgbzo2_END -->`, ""} <div class="mt-32"></div> ${category ? `<section class="mx-auto flex w-full max-w-4xl mb-8 flex-1 flex-col items-start justify-center"><div class="mx-auto max-w-screen-xl px-4 lg:flex lg:items-center"><div class="mx-auto max-w-3xl text-center blurry-bg">${category.name ? `<h1 class="bg-gradient-to-r from-green-300 via-blue-500 to-purple-600 bg-clip-text text-5xl font-extrabold text-transparent leading-snug">${escape(category.name)}</h1>` : ``} ${category.description ? `<p class="mx-auto mt-4 max-w-xl sm:text-xl">${escape(category.description)}</p>` : ``}</div></div></section>` : ``} ${hasActiveIncidents ? `<section class="mx-auto bg-transparent mb-4 flex w-full max-w-[890px] flex-1 flex-col items-start justify-center" id=""><div class="grid w-full grid-cols-2 gap-4"><div class="col-span-2 md:col-span-1 text-center md:text-left">${validate_component(Badge, "Badge").$$render($$result, { variant: "outline" }, {}, {
|
||||
default: () => {
|
||||
return `Ongoing Incidents`;
|
||||
}
|
||||
})}</div></div></section> <section class="mx-auto backdrop-blur-[2px] mb-8 flex w-full max-w-[890px] flex-1 flex-col items-start justify-center" id="">${each(data.openIncidents, (incident, i) => {
|
||||
return `${validate_component(Incident, "Incident").$$render(
|
||||
$$result,
|
||||
{
|
||||
incident,
|
||||
state: "close",
|
||||
variant: "title+body+comments+monitor",
|
||||
monitor: incident.monitor
|
||||
},
|
||||
{},
|
||||
{}
|
||||
)}`;
|
||||
})}</section>` : ``} ${data.monitors.length > 0 ? `<section class="mx-auto bg-transparent mb-4 flex w-full max-w-[890px] flex-1 flex-col items-start justify-center" id=""><div class="grid w-full grid-cols-2 gap-4"><div class="col-span-2 md:col-span-1 text-center md:text-left">${validate_component(Badge, "Badge").$$render($$result, { class: "", variant: "outline" }, {}, {
|
||||
default: () => {
|
||||
return `Availability per Component`;
|
||||
}
|
||||
})}</div> <div class="col-span-2 md:col-span-1 text-center md:text-right">${validate_component(Badge, "Badge").$$render($$result, { variant: "outline" }, {}, {
|
||||
default: () => {
|
||||
return `<span class="w-[8px] h-[8px] inline-flex rounded-full bg-api-up opacity-75 mr-1"></span> <span class="mr-3" data-svelte-h="svelte-fd8nbr">UP</span> <span class="w-[8px] h-[8px] inline-flex rounded-full bg-api-degraded opacity-75 mr-1"></span> <span class="mr-3" data-svelte-h="svelte-ddctvm">DEGRADED</span> <span class="w-[8px] h-[8px] inline-flex rounded-full bg-api-down opacity-75 mr-1"></span> <span class="mr-3" data-svelte-h="svelte-1o75psw">DOWN</span>`;
|
||||
}
|
||||
})}</div></div></section> <section class="mx-auto backdrop-blur-[2px] mb-8 flex w-full max-w-[890px] flex-1 flex-col items-start justify-center">${validate_component(Card, "Card.Root").$$render($$result, { class: "w-full" }, {}, {
|
||||
default: () => {
|
||||
return `${validate_component(Card_content, "Card.Content").$$render($$result, { class: "p-0 monitors-card" }, {}, {
|
||||
default: () => {
|
||||
return `${each(data.monitors, (monitor) => {
|
||||
return `${validate_component(Monitor, "Monitor").$$render($$result, { monitor, localTz: data.localTz }, {}, {})}`;
|
||||
})}`;
|
||||
}
|
||||
})}`;
|
||||
}
|
||||
})}</section>` : `<section class="mx-auto bg-transparent mb-4 flex w-full max-w-[890px] flex-1 flex-col items-start justify-center" id="">${validate_component(Card, "Card.Root").$$render($$result, { class: "mx-auto" }, {}, {
|
||||
default: () => {
|
||||
return `${validate_component(Card_content, "Card.Content").$$render($$result, { class: "pt-4" }, {}, {
|
||||
default: () => {
|
||||
return `<h1 class="scroll-m-20 text-2xl font-extrabold tracking-tight lg:text-2xl text-center" data-svelte-h="svelte-pnpgii">No Monitor Found.</h1> <p class="mt-3 text-center" data-svelte-h="svelte-x3h5nn">Please read the documentation on how to add monitors
|
||||
<a href="https://kener.ing/docs#h1add-monitors" target="_blank" class="underline">here</a>.</p>`;
|
||||
}
|
||||
})}`;
|
||||
}
|
||||
})}</section>`}`;
|
||||
});
|
||||
|
||||
export { Page as default };
|
||||
//# sourceMappingURL=_page.svelte-85f71bac.js.map
|
||||
@@ -1,78 +0,0 @@
|
||||
import { c as create_ssr_component, b as add_attribute, e as escape, v as validate_component, a as each } from './ssr-f056b9d4.js';
|
||||
import { M as Monitor } from './monitor-4022e836.js';
|
||||
import { C as Card, a as Card_content } from './Icon-2d61886b.js';
|
||||
import { I as Incident, C as Card_header, a as Card_title, b as Card_description } from './incident-2dcbb3c6.js';
|
||||
import 'clsx';
|
||||
import { b as buttonVariants } from './index3-940e7b25.js';
|
||||
import { B as Badge } from './index4-9cd90a9b.js';
|
||||
import './ctx-719e1af3.js';
|
||||
import './index2-ef0fcb8d.js';
|
||||
import './events-3e3c01b3.js';
|
||||
import 'tailwind-merge';
|
||||
import './helpers-0acb6e43.js';
|
||||
import 'moment';
|
||||
import './chevron-down-afdb97a6.js';
|
||||
import 'tailwind-variants';
|
||||
|
||||
const Page = create_ssr_component(($$result, $$props, $$bindings, slots) => {
|
||||
let { data } = $$props;
|
||||
let hasActiveIncidents = data.openIncidents.length > 0;
|
||||
if ($$props.data === void 0 && $$bindings.data && data !== void 0)
|
||||
$$bindings.data(data);
|
||||
return `<div class="mt-32"></div> ${data.site.hero ? `<section class="mx-auto mb-8 flex w-full max-w-4xl flex-1 flex-col items-start justify-center"><div class="mx-auto max-w-screen-xl px-4 lg:flex lg:items-center"><div class="blurry-bg mx-auto max-w-3xl text-center">${data.site.hero.image ? `<img${add_attribute("src", data.site.hero.image, 0)} class="m-auto h-16 w-16" alt="" srcset="">` : ``} ${data.site.hero.title ? `<h1 class="bg-gradient-to-r from-green-300 via-blue-500 to-purple-600 bg-clip-text text-5xl font-extrabold leading-snug text-transparent">${escape(data.site.hero.title)}</h1>` : ``} ${data.site.hero.subtitle ? `<p class="mx-auto mt-4 max-w-xl sm:text-xl">${escape(data.site.hero.subtitle)}</p>` : ``}</div></div></section>` : ``} ${hasActiveIncidents ? `<section class="mx-auto mb-4 flex w-full max-w-[890px] flex-1 flex-col items-start justify-center bg-transparent" id=""><div class="grid w-full grid-cols-2 gap-4"><div class="col-span-2 text-center md:col-span-1 md:text-left">${validate_component(Badge, "Badge").$$render($$result, { variant: "outline" }, {}, {
|
||||
default: () => {
|
||||
return `Ongoing Incidents`;
|
||||
}
|
||||
})}</div></div></section> <section class="mx-auto mb-8 flex w-full max-w-[890px] flex-1 flex-col items-start justify-center backdrop-blur-[2px]" id="">${each(data.openIncidents, (incident, i) => {
|
||||
return `${validate_component(Incident, "Incident").$$render(
|
||||
$$result,
|
||||
{
|
||||
incident,
|
||||
state: "close",
|
||||
variant: "title+body+comments+monitor",
|
||||
monitor: incident.monitor
|
||||
},
|
||||
{},
|
||||
{}
|
||||
)}`;
|
||||
})}</section>` : ``} ${data.monitors.length > 0 ? `<section class="mx-auto mb-4 flex w-full max-w-[890px] flex-1 flex-col items-start justify-center bg-transparent" id=""><div class="grid w-full grid-cols-2 gap-4"><div class="col-span-2 text-center md:col-span-1 md:text-left">${validate_component(Badge, "Badge").$$render($$result, { class: "", variant: "outline" }, {}, {
|
||||
default: () => {
|
||||
return `Availability per Component`;
|
||||
}
|
||||
})}</div> <div class="col-span-2 text-center md:col-span-1 md:text-right">${validate_component(Badge, "Badge").$$render($$result, { variant: "outline" }, {}, {
|
||||
default: () => {
|
||||
return `<span class="bg-api-up mr-1 inline-flex h-[8px] w-[8px] rounded-full opacity-75"></span> <span class="mr-3" data-svelte-h="svelte-fd8nbr">UP</span> <span class="bg-api-degraded mr-1 inline-flex h-[8px] w-[8px] rounded-full opacity-75"></span> <span class="mr-3" data-svelte-h="svelte-ddctvm">DEGRADED</span> <span class="bg-api-down mr-1 inline-flex h-[8px] w-[8px] rounded-full opacity-75"></span> <span class="mr-3" data-svelte-h="svelte-1o75psw">DOWN</span>`;
|
||||
}
|
||||
})}</div></div></section> <section class="mx-auto mb-8 flex w-full max-w-[890px] flex-1 flex-col items-start justify-center backdrop-blur-[2px]">${validate_component(Card, "Card.Root").$$render($$result, {}, {}, {
|
||||
default: () => {
|
||||
return `${validate_component(Card_content, "Card.Content").$$render($$result, { class: "monitors-card p-0" }, {}, {
|
||||
default: () => {
|
||||
return `${each(data.monitors, (monitor) => {
|
||||
return `${validate_component(Monitor, "Monitor").$$render($$result, { monitor, localTz: data.localTz }, {}, {})}`;
|
||||
})}`;
|
||||
}
|
||||
})}`;
|
||||
}
|
||||
})}</section>` : ``} ${data.site.categories ? `<section class="mx-auto mb-8 w-full max-w-[890px] flex-1 flex-col items-start backdrop-blur-[2px]"><h2 class="mb-2 mt-2 px-2 text-xl font-semibold" data-svelte-h="svelte-3lfsa8">Other Monitors</h2> ${each(data.site.categories, (category) => {
|
||||
return `${validate_component(Card, "Card.Root").$$render($$result, { class: "mb-2 w-full" }, {}, {
|
||||
default: () => {
|
||||
return `${validate_component(Card_header, "Card.Header").$$render($$result, {}, {}, {
|
||||
default: () => {
|
||||
return `${validate_component(Card_title, "Card.Title").$$render($$result, {}, {}, {
|
||||
default: () => {
|
||||
return `${escape(category.name)}`;
|
||||
}
|
||||
})} ${validate_component(Card_description, "Card.Description").$$render($$result, { class: "relative pr-[100px]" }, {}, {
|
||||
default: () => {
|
||||
return `${category.description ? `${escape(category.description)}` : ``} <a href="${"/category-" + escape(category.name, true)}" class="${escape(buttonVariants({ variant: "secondary" }), true) + " absolute -top-4 right-2"}">View</a> `;
|
||||
}
|
||||
})} `;
|
||||
}
|
||||
})} `;
|
||||
}
|
||||
})}`;
|
||||
})}</section>` : ``}`;
|
||||
});
|
||||
|
||||
export { Page as default };
|
||||
//# sourceMappingURL=_page.svelte-b9177f34.js.map
|
||||
@@ -1,45 +0,0 @@
|
||||
import { c as create_ssr_component, d as subscribe, b as add_attribute, v as validate_component, a as each } from './ssr-f056b9d4.js';
|
||||
import { M as Monitor } from './monitor-4022e836.js';
|
||||
import { C as Card, a as Card_content } from './Icon-2d61886b.js';
|
||||
import 'clsx';
|
||||
import './ctx-719e1af3.js';
|
||||
import './index4-9cd90a9b.js';
|
||||
import { p as page } from './stores-0262db6b.js';
|
||||
import './index2-ef0fcb8d.js';
|
||||
import './events-3e3c01b3.js';
|
||||
import './index3-940e7b25.js';
|
||||
import 'tailwind-variants';
|
||||
import 'tailwind-merge';
|
||||
|
||||
const Page = create_ssr_component(($$result, $$props, $$bindings, slots) => {
|
||||
let $$unsubscribe_page;
|
||||
$$unsubscribe_page = subscribe(page, (value) => value);
|
||||
let element;
|
||||
let { data } = $$props;
|
||||
if ($$props.data === void 0 && $$bindings.data && data !== void 0)
|
||||
$$bindings.data(data);
|
||||
$$unsubscribe_page();
|
||||
return `${data.monitors.length > 0 ? `<section class="w-fit p-0"${add_attribute("this", element, 0)}>${validate_component(Card, "Card.Root").$$render($$result, { class: "w-[580px] border-0 shadow-none" }, {}, {
|
||||
default: () => {
|
||||
return `${validate_component(Card_content, "Card.Content").$$render($$result, { class: "p-0 monitors-card " }, {}, {
|
||||
default: () => {
|
||||
return `${each(data.monitors, (monitor) => {
|
||||
return `${validate_component(Monitor, "Monitor").$$render($$result, { monitor, localTz: data.localTz }, {}, {})}`;
|
||||
})}`;
|
||||
}
|
||||
})}`;
|
||||
}
|
||||
})}</section>` : `<section class="mx-auto bg-transparent mb-4 flex w-full max-w-[890px] flex-1 flex-col items-start justify-center" id="">${validate_component(Card, "Card.Root").$$render($$result, { class: "mx-auto" }, {}, {
|
||||
default: () => {
|
||||
return `${validate_component(Card_content, "Card.Content").$$render($$result, { class: "pt-4" }, {}, {
|
||||
default: () => {
|
||||
return `<h1 class="scroll-m-20 text-2xl font-extrabold tracking-tight lg:text-2xl text-center" data-svelte-h="svelte-1vwlrnd">No Monitor Found.</h1> <p class="mt-3 text-center" data-svelte-h="svelte-oy4ufi">Please read the documentation on how to add monitors
|
||||
<a href="https://kener.ing/docs#h1add-monitors" target="_blank" class="underline">here</a>.</p>`;
|
||||
}
|
||||
})}`;
|
||||
}
|
||||
})}</section>`}`;
|
||||
});
|
||||
|
||||
export { Page as default };
|
||||
//# sourceMappingURL=_page.svelte-e60523b0.js.map
|
||||
@@ -1 +0,0 @@
|
||||
{"version":3,"file":"_page.svelte-e60523b0.js","sources":["../../../.svelte-kit/adapter-node/entries/pages/embed-_tag_/_page.svelte.js"],"sourcesContent":["import { c as create_ssr_component, d as subscribe, a as add_attribute, v as validate_component, b as each } from \"../../../chunks/ssr.js\";\nimport { M as Monitor } from \"../../../chunks/monitor.js\";\nimport { C as Card, a as Card_content } from \"../../../chunks/Icon.js\";\nimport \"clsx\";\nimport \"dequal\";\nimport \"../../../chunks/ctx.js\";\nimport \"../../../chunks/index4.js\";\nimport { p as page } from \"../../../chunks/stores.js\";\nconst Page = create_ssr_component(($$result, $$props, $$bindings, slots) => {\n let $$unsubscribe_page;\n $$unsubscribe_page = subscribe(page, (value) => value);\n let element;\n let { data } = $$props;\n if ($$props.data === void 0 && $$bindings.data && data !== void 0)\n $$bindings.data(data);\n $$unsubscribe_page();\n return `${data.monitors.length > 0 ? `<section class=\"w-fit p-0\"${add_attribute(\"this\", element, 0)}>${validate_component(Card, \"Card.Root\").$$render($$result, { class: \"w-[580px] border-0 shadow-none\" }, {}, {\n default: () => {\n return `${validate_component(Card_content, \"Card.Content\").$$render($$result, { class: \"p-0 monitors-card \" }, {}, {\n default: () => {\n return `${each(data.monitors, (monitor) => {\n return `${validate_component(Monitor, \"Monitor\").$$render($$result, { monitor, localTz: data.localTz }, {}, {})}`;\n })}`;\n }\n })}`;\n }\n })}</section>` : `<section class=\"mx-auto bg-transparent mb-4 flex w-full max-w-[890px] flex-1 flex-col items-start justify-center\" id=\"\">${validate_component(Card, \"Card.Root\").$$render($$result, { class: \"mx-auto\" }, {}, {\n default: () => {\n return `${validate_component(Card_content, \"Card.Content\").$$render($$result, { class: \"pt-4\" }, {}, {\n default: () => {\n return `<h1 class=\"scroll-m-20 text-2xl font-extrabold tracking-tight lg:text-2xl text-center\" data-svelte-h=\"svelte-1vwlrnd\">No Monitor Found.</h1> <p class=\"mt-3 text-center\" data-svelte-h=\"svelte-oy4ufi\">Please read the documentation on how to add monitors\n <a href=\"https://kener.ing/docs#h1add-monitors\" target=\"_blank\" class=\"underline\">here</a>.</p>`;\n }\n })}`;\n }\n })}</section>`}`;\n});\nexport {\n Page as default\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;AAQK,MAAC,IAAI,GAAG,oBAAoB,CAAC,CAAC,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,KAAK;AAC5E,EAAE,IAAI,kBAAkB,CAAC;AACzB,EAAE,kBAAkB,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC;AACzD,EAAE,IAAI,OAAO,CAAC;AACd,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC;AACzB,EAAE,IAAI,OAAO,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,UAAU,CAAC,IAAI,IAAI,IAAI,KAAK,KAAK,CAAC;AACnE,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,EAAE,kBAAkB,EAAE,CAAC;AACvB,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,0BAA0B,EAAE,aAAa,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,kBAAkB,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,gCAAgC,EAAE,EAAE,EAAE,EAAE;AACnN,IAAI,OAAO,EAAE,MAAM;AACnB,MAAM,OAAO,CAAC,EAAE,kBAAkB,CAAC,YAAY,EAAE,cAAc,CAAC,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,EAAE,EAAE,EAAE;AACzH,QAAQ,OAAO,EAAE,MAAM;AACvB,UAAU,OAAO,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,OAAO,KAAK;AACrD,YAAY,OAAO,CAAC,EAAE,kBAAkB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;AAC9H,WAAW,CAAC,CAAC,CAAC,CAAC;AACf,SAAS;AACT,OAAO,CAAC,CAAC,CAAC,CAAC;AACX,KAAK;AACL,GAAG,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,wHAAwH,EAAE,kBAAkB,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE,EAAE;AACjO,IAAI,OAAO,EAAE,MAAM;AACnB,MAAM,OAAO,CAAC,EAAE,kBAAkB,CAAC,YAAY,EAAE,cAAc,CAAC,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE;AAC3G,QAAQ,OAAO,EAAE,MAAM;AACvB,UAAU,OAAO,CAAC;AAClB,+GAA+G,CAAC,CAAC;AACjH,SAAS;AACT,OAAO,CAAC,CAAC,CAAC,CAAC;AACX,KAAK;AACL,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AACnB,CAAC;;;;"}
|
||||
@@ -1,328 +0,0 @@
|
||||
import { c as create_ssr_component, v as validate_component, a as each, e as escape, f as compute_rest_props, d as subscribe, g as spread, h as escape_object } from './ssr-f056b9d4.js';
|
||||
import { marked } from 'marked';
|
||||
import { C as Card, a as Card_content, c as cn, b as cubicOut } from './Icon-2d61886b.js';
|
||||
import 'clsx';
|
||||
import { s as setCtx$3, a as setItem, g as getCtx$2, b as getTrigger, c as getContent, d as getAttrs$4 } from './ctx-719e1af3.js';
|
||||
import { c as createDispatcher } from './events-3e3c01b3.js';
|
||||
import { C as ChevronDown } from './chevron-down-afdb97a6.js';
|
||||
import 'tailwind-merge';
|
||||
import './index2-ef0fcb8d.js';
|
||||
|
||||
const Accordion = create_ssr_component(($$result, $$props, $$bindings, slots) => {
|
||||
let builder;
|
||||
let $$restProps = compute_rest_props($$props, ["multiple", "value", "onValueChange", "disabled", "asChild"]);
|
||||
let $root, $$unsubscribe_root;
|
||||
let { multiple = false } = $$props;
|
||||
let { value = void 0 } = $$props;
|
||||
let { onValueChange = void 0 } = $$props;
|
||||
let { disabled = false } = $$props;
|
||||
let { asChild = false } = $$props;
|
||||
const { elements: { root }, states: { value: localValue }, updateOption } = setCtx$3({
|
||||
multiple,
|
||||
disabled,
|
||||
defaultValue: value,
|
||||
onValueChange: ({ next }) => {
|
||||
if (value !== next) {
|
||||
onValueChange?.(next);
|
||||
value = next;
|
||||
}
|
||||
return next;
|
||||
}
|
||||
});
|
||||
$$unsubscribe_root = subscribe(root, (value2) => $root = value2);
|
||||
const attrs = getAttrs$4("root");
|
||||
if ($$props.multiple === void 0 && $$bindings.multiple && multiple !== void 0)
|
||||
$$bindings.multiple(multiple);
|
||||
if ($$props.value === void 0 && $$bindings.value && value !== void 0)
|
||||
$$bindings.value(value);
|
||||
if ($$props.onValueChange === void 0 && $$bindings.onValueChange && onValueChange !== void 0)
|
||||
$$bindings.onValueChange(onValueChange);
|
||||
if ($$props.disabled === void 0 && $$bindings.disabled && disabled !== void 0)
|
||||
$$bindings.disabled(disabled);
|
||||
if ($$props.asChild === void 0 && $$bindings.asChild && asChild !== void 0)
|
||||
$$bindings.asChild(asChild);
|
||||
{
|
||||
localValue.set(value);
|
||||
}
|
||||
{
|
||||
updateOption("multiple", multiple);
|
||||
}
|
||||
{
|
||||
updateOption("disabled", disabled);
|
||||
}
|
||||
builder = $root;
|
||||
$$unsubscribe_root();
|
||||
return `${asChild ? `${slots.default ? slots.default({ builder, attrs }) : ``}` : `<div${spread([escape_object(builder), escape_object($$restProps), escape_object(attrs)], {})}>${slots.default ? slots.default({ builder, attrs }) : ``}</div>`}`;
|
||||
});
|
||||
const AccordionItem = create_ssr_component(($$result, $$props, $$bindings, slots) => {
|
||||
let builder;
|
||||
let $$restProps = compute_rest_props($$props, ["value", "disabled", "asChild"]);
|
||||
let $item, $$unsubscribe_item;
|
||||
let { value } = $$props;
|
||||
let { disabled = void 0 } = $$props;
|
||||
let { asChild = false } = $$props;
|
||||
const { item, props } = setItem({ value, disabled });
|
||||
$$unsubscribe_item = subscribe(item, (value2) => $item = value2);
|
||||
const attrs = getAttrs$4("item");
|
||||
if ($$props.value === void 0 && $$bindings.value && value !== void 0)
|
||||
$$bindings.value(value);
|
||||
if ($$props.disabled === void 0 && $$bindings.disabled && disabled !== void 0)
|
||||
$$bindings.disabled(disabled);
|
||||
if ($$props.asChild === void 0 && $$bindings.asChild && asChild !== void 0)
|
||||
$$bindings.asChild(asChild);
|
||||
builder = $item(props);
|
||||
$$unsubscribe_item();
|
||||
return `${asChild ? `${slots.default ? slots.default({ builder, attrs }) : ``}` : `<div${spread([escape_object(builder), escape_object($$restProps), escape_object(attrs)], {})}>${slots.default ? slots.default({ builder, attrs }) : ``}</div>`}`;
|
||||
});
|
||||
const AccordionHeader = create_ssr_component(($$result, $$props, $$bindings, slots) => {
|
||||
let builder;
|
||||
let $$restProps = compute_rest_props($$props, ["level", "asChild"]);
|
||||
let $header, $$unsubscribe_header;
|
||||
let { level = 3 } = $$props;
|
||||
let { asChild = false } = $$props;
|
||||
const { elements: { heading: header } } = getCtx$2();
|
||||
$$unsubscribe_header = subscribe(header, (value) => $header = value);
|
||||
const attrs = getAttrs$4("header");
|
||||
if ($$props.level === void 0 && $$bindings.level && level !== void 0)
|
||||
$$bindings.level(level);
|
||||
if ($$props.asChild === void 0 && $$bindings.asChild && asChild !== void 0)
|
||||
$$bindings.asChild(asChild);
|
||||
builder = $header(level);
|
||||
$$unsubscribe_header();
|
||||
return `${asChild ? `${slots.default ? slots.default({ builder, attrs }) : ``}` : `<div${spread([escape_object(builder), escape_object($$restProps), escape_object(attrs)], {})}>${slots.default ? slots.default({ builder, attrs }) : ``}</div>`}`;
|
||||
});
|
||||
const AccordionTrigger = create_ssr_component(($$result, $$props, $$bindings, slots) => {
|
||||
let builder;
|
||||
let $$restProps = compute_rest_props($$props, ["asChild"]);
|
||||
let $trigger, $$unsubscribe_trigger;
|
||||
let { asChild = false } = $$props;
|
||||
const { trigger, props } = getTrigger();
|
||||
$$unsubscribe_trigger = subscribe(trigger, (value) => $trigger = value);
|
||||
createDispatcher();
|
||||
const attrs = getAttrs$4("trigger");
|
||||
if ($$props.asChild === void 0 && $$bindings.asChild && asChild !== void 0)
|
||||
$$bindings.asChild(asChild);
|
||||
builder = $trigger(props);
|
||||
$$unsubscribe_trigger();
|
||||
return `${asChild ? `${slots.default ? slots.default({ builder, attrs }) : ``}` : `<button${spread(
|
||||
[
|
||||
escape_object(builder),
|
||||
{ type: "button" },
|
||||
escape_object($$restProps),
|
||||
escape_object(attrs)
|
||||
],
|
||||
{}
|
||||
)}>${slots.default ? slots.default({ builder, attrs }) : ``}</button>`}`;
|
||||
});
|
||||
const AccordionContent = create_ssr_component(($$result, $$props, $$bindings, slots) => {
|
||||
let builder;
|
||||
let $$restProps = compute_rest_props($$props, [
|
||||
"transition",
|
||||
"transitionConfig",
|
||||
"inTransition",
|
||||
"inTransitionConfig",
|
||||
"outTransition",
|
||||
"outTransitionConfig",
|
||||
"asChild"
|
||||
]);
|
||||
let $content, $$unsubscribe_content;
|
||||
let $isSelected, $$unsubscribe_isSelected;
|
||||
let { transition = void 0 } = $$props;
|
||||
let { transitionConfig = void 0 } = $$props;
|
||||
let { inTransition = void 0 } = $$props;
|
||||
let { inTransitionConfig = void 0 } = $$props;
|
||||
let { outTransition = void 0 } = $$props;
|
||||
let { outTransitionConfig = void 0 } = $$props;
|
||||
let { asChild = false } = $$props;
|
||||
const { content, isSelected, props } = getContent();
|
||||
$$unsubscribe_content = subscribe(content, (value) => $content = value);
|
||||
$$unsubscribe_isSelected = subscribe(isSelected, (value) => $isSelected = value);
|
||||
const attrs = getAttrs$4("content");
|
||||
if ($$props.transition === void 0 && $$bindings.transition && transition !== void 0)
|
||||
$$bindings.transition(transition);
|
||||
if ($$props.transitionConfig === void 0 && $$bindings.transitionConfig && transitionConfig !== void 0)
|
||||
$$bindings.transitionConfig(transitionConfig);
|
||||
if ($$props.inTransition === void 0 && $$bindings.inTransition && inTransition !== void 0)
|
||||
$$bindings.inTransition(inTransition);
|
||||
if ($$props.inTransitionConfig === void 0 && $$bindings.inTransitionConfig && inTransitionConfig !== void 0)
|
||||
$$bindings.inTransitionConfig(inTransitionConfig);
|
||||
if ($$props.outTransition === void 0 && $$bindings.outTransition && outTransition !== void 0)
|
||||
$$bindings.outTransition(outTransition);
|
||||
if ($$props.outTransitionConfig === void 0 && $$bindings.outTransitionConfig && outTransitionConfig !== void 0)
|
||||
$$bindings.outTransitionConfig(outTransitionConfig);
|
||||
if ($$props.asChild === void 0 && $$bindings.asChild && asChild !== void 0)
|
||||
$$bindings.asChild(asChild);
|
||||
builder = $content(props);
|
||||
$$unsubscribe_content();
|
||||
$$unsubscribe_isSelected();
|
||||
return `${asChild && $isSelected(props) ? `${slots.default ? slots.default({ builder, attrs }) : ``}` : `${transition && $isSelected(props) ? `<div${spread([escape_object(builder), escape_object($$restProps), escape_object(attrs)], {})}>${slots.default ? slots.default({ builder, attrs }) : ``}</div>` : `${inTransition && outTransition && $isSelected(props) ? `<div${spread([escape_object(builder), escape_object($$restProps), escape_object(attrs)], {})}>${slots.default ? slots.default({ builder, attrs }) : ``}</div>` : `${inTransition && $isSelected(props) ? `<div${spread(
|
||||
[
|
||||
escape_object(builder),
|
||||
escape_object($$restProps),
|
||||
escape_object(attrs)
|
||||
],
|
||||
{}
|
||||
)}>${slots.default ? slots.default({ builder, attrs }) : ``}</div>` : `${outTransition && $isSelected(props) ? `<div${spread(
|
||||
[
|
||||
escape_object(builder),
|
||||
escape_object($$restProps),
|
||||
escape_object(attrs)
|
||||
],
|
||||
{}
|
||||
)}>${slots.default ? slots.default({ builder, attrs }) : ``}</div>` : `${$isSelected(props) ? `<div${spread(
|
||||
[
|
||||
escape_object(builder),
|
||||
escape_object($$restProps),
|
||||
escape_object(attrs)
|
||||
],
|
||||
{}
|
||||
)}>${slots.default ? slots.default({ builder, attrs }) : ``}</div>` : ``}`}`}`}`}`}`;
|
||||
});
|
||||
function slide(node, { delay = 0, duration = 400, easing = cubicOut, axis = "y" } = {}) {
|
||||
const style = getComputedStyle(node);
|
||||
const opacity = +style.opacity;
|
||||
const primary_property = axis === "y" ? "height" : "width";
|
||||
const primary_property_value = parseFloat(style[primary_property]);
|
||||
const secondary_properties = axis === "y" ? ["top", "bottom"] : ["left", "right"];
|
||||
const capitalized_secondary_properties = secondary_properties.map(
|
||||
(e) => `${e[0].toUpperCase()}${e.slice(1)}`
|
||||
);
|
||||
const padding_start_value = parseFloat(style[`padding${capitalized_secondary_properties[0]}`]);
|
||||
const padding_end_value = parseFloat(style[`padding${capitalized_secondary_properties[1]}`]);
|
||||
const margin_start_value = parseFloat(style[`margin${capitalized_secondary_properties[0]}`]);
|
||||
const margin_end_value = parseFloat(style[`margin${capitalized_secondary_properties[1]}`]);
|
||||
const border_width_start_value = parseFloat(
|
||||
style[`border${capitalized_secondary_properties[0]}Width`]
|
||||
);
|
||||
const border_width_end_value = parseFloat(
|
||||
style[`border${capitalized_secondary_properties[1]}Width`]
|
||||
);
|
||||
return {
|
||||
delay,
|
||||
duration,
|
||||
easing,
|
||||
css: (t) => `overflow: hidden;opacity: ${Math.min(t * 20, 1) * opacity};${primary_property}: ${t * primary_property_value}px;padding-${secondary_properties[0]}: ${t * padding_start_value}px;padding-${secondary_properties[1]}: ${t * padding_end_value}px;margin-${secondary_properties[0]}: ${t * margin_start_value}px;margin-${secondary_properties[1]}: ${t * margin_end_value}px;border-${secondary_properties[0]}-width: ${t * border_width_start_value}px;border-${secondary_properties[1]}-width: ${t * border_width_end_value}px;`
|
||||
};
|
||||
}
|
||||
const Accordion_content = create_ssr_component(($$result, $$props, $$bindings, slots) => {
|
||||
let $$restProps = compute_rest_props($$props, ["class", "transition", "transitionConfig"]);
|
||||
let { class: className = void 0 } = $$props;
|
||||
let { transition = slide } = $$props;
|
||||
let { transitionConfig = { duration: 200 } } = $$props;
|
||||
if ($$props.class === void 0 && $$bindings.class && className !== void 0)
|
||||
$$bindings.class(className);
|
||||
if ($$props.transition === void 0 && $$bindings.transition && transition !== void 0)
|
||||
$$bindings.transition(transition);
|
||||
if ($$props.transitionConfig === void 0 && $$bindings.transitionConfig && transitionConfig !== void 0)
|
||||
$$bindings.transitionConfig(transitionConfig);
|
||||
return `${validate_component(AccordionContent, "AccordionPrimitive.Content").$$render(
|
||||
$$result,
|
||||
Object.assign(
|
||||
{},
|
||||
{
|
||||
class: cn("overflow-hidden text-sm transition-all", className)
|
||||
},
|
||||
{ transition },
|
||||
{ transitionConfig },
|
||||
$$restProps
|
||||
),
|
||||
{},
|
||||
{
|
||||
default: () => {
|
||||
return `<div class="pb-4 pt-0">${slots.default ? slots.default({}) : ``}</div>`;
|
||||
}
|
||||
}
|
||||
)}`;
|
||||
});
|
||||
const Accordion_item = create_ssr_component(($$result, $$props, $$bindings, slots) => {
|
||||
let $$restProps = compute_rest_props($$props, ["class", "value"]);
|
||||
let { class: className = void 0 } = $$props;
|
||||
let { value } = $$props;
|
||||
if ($$props.class === void 0 && $$bindings.class && className !== void 0)
|
||||
$$bindings.class(className);
|
||||
if ($$props.value === void 0 && $$bindings.value && value !== void 0)
|
||||
$$bindings.value(value);
|
||||
return `${validate_component(AccordionItem, "AccordionPrimitive.Item").$$render($$result, Object.assign({}, { value }, { class: cn("border-b", className) }, $$restProps), {}, {
|
||||
default: () => {
|
||||
return `${slots.default ? slots.default({}) : ``}`;
|
||||
}
|
||||
})}`;
|
||||
});
|
||||
const Accordion_trigger = create_ssr_component(($$result, $$props, $$bindings, slots) => {
|
||||
let $$restProps = compute_rest_props($$props, ["class", "level"]);
|
||||
let { class: className = void 0 } = $$props;
|
||||
let { level = 3 } = $$props;
|
||||
if ($$props.class === void 0 && $$bindings.class && className !== void 0)
|
||||
$$bindings.class(className);
|
||||
if ($$props.level === void 0 && $$bindings.level && level !== void 0)
|
||||
$$bindings.level(level);
|
||||
return `${validate_component(AccordionHeader, "AccordionPrimitive.Header").$$render($$result, { level, class: "flex" }, {}, {
|
||||
default: () => {
|
||||
return `${validate_component(AccordionTrigger, "AccordionPrimitive.Trigger").$$render(
|
||||
$$result,
|
||||
Object.assign(
|
||||
{},
|
||||
{
|
||||
class: cn("flex flex-1 items-center justify-between py-4 font-medium transition-all hover:underline [&[data-state=open]>svg]:rotate-180", className)
|
||||
},
|
||||
$$restProps
|
||||
),
|
||||
{},
|
||||
{
|
||||
default: () => {
|
||||
return `${slots.default ? slots.default({}) : ``} ${validate_component(ChevronDown, "ChevronDown").$$render(
|
||||
$$result,
|
||||
{
|
||||
class: "h-4 w-4 transition-transform duration-200"
|
||||
},
|
||||
{},
|
||||
{}
|
||||
)}`;
|
||||
}
|
||||
}
|
||||
)}`;
|
||||
}
|
||||
})}`;
|
||||
});
|
||||
const Root = Accordion;
|
||||
const Page = create_ssr_component(($$result, $$props, $$bindings, slots) => {
|
||||
let { data } = $$props;
|
||||
let html = marked.parse(data.md);
|
||||
let sideBar = [];
|
||||
if ($$props.data === void 0 && $$bindings.data && data !== void 0)
|
||||
$$bindings.data(data);
|
||||
return `${$$result.head += `<!-- HEAD_svelte-tjl0wq_START -->${$$result.title = `<title>
|
||||
Kener Documentation
|
||||
</title>`, ""}<!-- HEAD_svelte-tjl0wq_END -->`, ""} <section class="mx-auto md:container rounded-3xl scroll-smooth mt-8">${validate_component(Card, "Card.Root").$$render($$result, {}, {}, {
|
||||
default: () => {
|
||||
return `${validate_component(Card_content, "Card.Content").$$render($$result, { class: "px-1" }, {}, {
|
||||
default: () => {
|
||||
return `<div class="grid grid-cols-5 gap-4"><div class="col-span-5 md:col-span-1 pt-2 hidden md:block pr-1 border-r-2 border-secondary sticky top-0 overflow-y-auto max-h-screen">${each(sideBar, (item) => {
|
||||
return `${validate_component(Root, "Accordion.Root").$$render($$result, {}, {}, {
|
||||
default: () => {
|
||||
return `${validate_component(Accordion_item, "Accordion.Item").$$render($$result, { value: item.id }, {}, {
|
||||
default: () => {
|
||||
return `${validate_component(Accordion_trigger, "Accordion.Trigger").$$render($$result, { class: "text-sm font-semibold pl-2 pr-3" }, {}, {
|
||||
default: () => {
|
||||
return `<a href="${"#" + escape(item.id, true)}" class="sidebar-a">${escape(item.text)}</a> `;
|
||||
}
|
||||
})} ${validate_component(Accordion_content, "Accordion.Content").$$render($$result, {}, {}, {
|
||||
default: () => {
|
||||
return ` <ul class="text-sm font-medium pl-6">${each(item.children, (child) => {
|
||||
return `<li class="w-full py-2"><a href="${"#" + escape(child.id, true)}" class="sidebar-a">${escape(child.text)}</a> </li>`;
|
||||
})}</ul> `;
|
||||
}
|
||||
})} `;
|
||||
}
|
||||
})} `;
|
||||
}
|
||||
})}`;
|
||||
})}</div> <div class="col-span-5 md:col-span-4"><div class="pt-6 p-0 md:p-10 "><article id="markdown" class="prose prose-stone max-w-none dark:prose-invert dark:prose-pre:bg-neutral-900 prose-code:py-[0.2rem] prose-code:font-normal prose-code:font-mono prose-code:text-sm prose-code:rounded"><!-- HTML_TAG_START -->${html}<!-- HTML_TAG_END --></article></div></div></div>`;
|
||||
}
|
||||
})}`;
|
||||
}
|
||||
})} </section>`;
|
||||
});
|
||||
|
||||
export { Page as default };
|
||||
//# sourceMappingURL=_page.svelte-f5dc29c8.js.map
|
||||
@@ -1,84 +0,0 @@
|
||||
import { j as json } from './index-2b68e648.js';
|
||||
import { a as auth, P as ParseIncidentPayload, G as GHIssueToKenerIncident } from './webhook-c20a13d6.js';
|
||||
import { U as UpdateIssue, b as GetIncidentByNumber } from './github-c018834c.js';
|
||||
import { p as public_env } from './shared-server-58a5f352.js';
|
||||
import fs from 'fs-extra';
|
||||
import './helpers-0acb6e43.js';
|
||||
import './tool-b4b3e524.js';
|
||||
import 'randomstring';
|
||||
import 'axios';
|
||||
import 'marked';
|
||||
|
||||
async function PATCH({ request, params }) {
|
||||
const authError = auth(request);
|
||||
if (authError !== null) {
|
||||
return json(
|
||||
{ error: authError.message },
|
||||
{
|
||||
status: 401
|
||||
}
|
||||
);
|
||||
}
|
||||
const incidentNumber = params.incidentNumber;
|
||||
const payload = await request.json();
|
||||
if (!incidentNumber || isNaN(incidentNumber)) {
|
||||
return json(
|
||||
{ error: "Invalid incidentNumber" },
|
||||
{
|
||||
status: 400
|
||||
}
|
||||
);
|
||||
}
|
||||
let { title, body, githubLabels, error } = ParseIncidentPayload(payload);
|
||||
if (error) {
|
||||
return json(
|
||||
{ error },
|
||||
{
|
||||
status: 400
|
||||
}
|
||||
);
|
||||
}
|
||||
let site = JSON.parse(fs.readFileSync(public_env.PUBLIC_KENER_FOLDER + "/site.json", "utf8"));
|
||||
let github = site.github;
|
||||
let resp = await UpdateIssue(github, incidentNumber, title, body, githubLabels);
|
||||
if (resp === null) {
|
||||
return json(
|
||||
{ error: "github error" },
|
||||
{
|
||||
status: 400
|
||||
}
|
||||
);
|
||||
}
|
||||
return json(GHIssueToKenerIncident(resp), {
|
||||
status: 200
|
||||
});
|
||||
}
|
||||
async function GET({ request, params }) {
|
||||
const authError = auth(request);
|
||||
if (authError !== null) {
|
||||
return json(
|
||||
{ error: authError.message },
|
||||
{
|
||||
status: 401
|
||||
}
|
||||
);
|
||||
}
|
||||
const incidentNumber = params.incidentNumber;
|
||||
let site = JSON.parse(fs.readFileSync(public_env.PUBLIC_KENER_FOLDER + "/site.json", "utf8"));
|
||||
let github = site.github;
|
||||
let issue = await GetIncidentByNumber(github, incidentNumber);
|
||||
if (issue === null) {
|
||||
return json(
|
||||
{ error: "incident not found" },
|
||||
{
|
||||
status: 404
|
||||
}
|
||||
);
|
||||
}
|
||||
return json(GHIssueToKenerIncident(issue), {
|
||||
status: 200
|
||||
});
|
||||
}
|
||||
|
||||
export { GET, PATCH };
|
||||
//# sourceMappingURL=_server-00acfba6.js.map
|
||||
@@ -1 +0,0 @@
|
||||
{"version":3,"file":"_server-00acfba6.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/api/incident/_incidentNumber_/_server.js"],"sourcesContent":["import { j as json } from \"../../../../../chunks/index.js\";\nimport { a as auth, P as ParseIncidentPayload, G as GHIssueToKenerIncident } from \"../../../../../chunks/webhook.js\";\nimport { U as UpdateIssue, G as GetIncidentByNumber } from \"../../../../../chunks/github.js\";\nimport { p as public_env } from \"../../../../../chunks/shared-server.js\";\nimport fs from \"fs-extra\";\nasync function PATCH({ request, params }) {\n const authError = auth(request);\n if (authError !== null) {\n return json(\n { error: authError.message },\n {\n status: 401\n }\n );\n }\n const incidentNumber = params.incidentNumber;\n const payload = await request.json();\n if (!incidentNumber || isNaN(incidentNumber)) {\n return json(\n { error: \"Invalid incidentNumber\" },\n {\n status: 400\n }\n );\n }\n let { title, body, githubLabels, error } = ParseIncidentPayload(payload);\n if (error) {\n return json(\n { error },\n {\n status: 400\n }\n );\n }\n let site = JSON.parse(fs.readFileSync(public_env.PUBLIC_KENER_FOLDER + \"/site.json\", \"utf8\"));\n let github = site.github;\n let resp = await UpdateIssue(github, incidentNumber, title, body, githubLabels);\n if (resp === null) {\n return json(\n { error: \"github error\" },\n {\n status: 400\n }\n );\n }\n return json(GHIssueToKenerIncident(resp), {\n status: 200\n });\n}\nasync function GET({ request, params }) {\n const authError = auth(request);\n if (authError !== null) {\n return json(\n { error: authError.message },\n {\n status: 401\n }\n );\n }\n const incidentNumber = params.incidentNumber;\n let site = JSON.parse(fs.readFileSync(public_env.PUBLIC_KENER_FOLDER + \"/site.json\", \"utf8\"));\n let github = site.github;\n let issue = await GetIncidentByNumber(github, incidentNumber);\n if (issue === null) {\n return json(\n { error: \"incident not found\" },\n {\n status: 404\n }\n );\n }\n return json(GHIssueToKenerIncident(issue), {\n status: 200\n });\n}\nexport {\n GET,\n PATCH\n};\n"],"names":[],"mappings":";;;;;;;;;;;AAKA,eAAe,KAAK,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE;AAC1C,EAAE,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC;AAClC,EAAE,IAAI,SAAS,KAAK,IAAI,EAAE;AAC1B,IAAI,OAAO,IAAI;AACf,MAAM,EAAE,KAAK,EAAE,SAAS,CAAC,OAAO,EAAE;AAClC,MAAM;AACN,QAAQ,MAAM,EAAE,GAAG;AACnB,OAAO;AACP,KAAK,CAAC;AACN,GAAG;AACH,EAAE,MAAM,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC;AAC/C,EAAE,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;AACvC,EAAE,IAAI,CAAC,cAAc,IAAI,KAAK,CAAC,cAAc,CAAC,EAAE;AAChD,IAAI,OAAO,IAAI;AACf,MAAM,EAAE,KAAK,EAAE,wBAAwB,EAAE;AACzC,MAAM;AACN,QAAQ,MAAM,EAAE,GAAG;AACnB,OAAO;AACP,KAAK,CAAC;AACN,GAAG;AACH,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,GAAG,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAC3E,EAAE,IAAI,KAAK,EAAE;AACb,IAAI,OAAO,IAAI;AACf,MAAM,EAAE,KAAK,EAAE;AACf,MAAM;AACN,QAAQ,MAAM,EAAE,GAAG;AACnB,OAAO;AACP,KAAK,CAAC;AACN,GAAG;AACH,EAAE,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,UAAU,CAAC,mBAAmB,GAAG,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC;AAChG,EAAE,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;AAC3B,EAAE,IAAI,IAAI,GAAG,MAAM,WAAW,CAAC,MAAM,EAAE,cAAc,EAAE,KAAK,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC;AAClF,EAAE,IAAI,IAAI,KAAK,IAAI,EAAE;AACrB,IAAI,OAAO,IAAI;AACf,MAAM,EAAE,KAAK,EAAE,cAAc,EAAE;AAC/B,MAAM;AACN,QAAQ,MAAM,EAAE,GAAG;AACnB,OAAO;AACP,KAAK,CAAC;AACN,GAAG;AACH,EAAE,OAAO,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAE;AAC5C,IAAI,MAAM,EAAE,GAAG;AACf,GAAG,CAAC,CAAC;AACL,CAAC;AACD,eAAe,GAAG,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE;AACxC,EAAE,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC;AAClC,EAAE,IAAI,SAAS,KAAK,IAAI,EAAE;AAC1B,IAAI,OAAO,IAAI;AACf,MAAM,EAAE,KAAK,EAAE,SAAS,CAAC,OAAO,EAAE;AAClC,MAAM;AACN,QAAQ,MAAM,EAAE,GAAG;AACnB,OAAO;AACP,KAAK,CAAC;AACN,GAAG;AACH,EAAE,MAAM,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC;AAC/C,EAAE,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,UAAU,CAAC,mBAAmB,GAAG,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC;AAChG,EAAE,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;AAC3B,EAAE,IAAI,KAAK,GAAG,MAAM,mBAAmB,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;AAChE,EAAE,IAAI,KAAK,KAAK,IAAI,EAAE;AACtB,IAAI,OAAO,IAAI;AACf,MAAM,EAAE,KAAK,EAAE,oBAAoB,EAAE;AACrC,MAAM;AACN,QAAQ,MAAM,EAAE,GAAG;AACnB,OAAO;AACP,KAAK,CAAC;AACN,GAAG;AACH,EAAE,OAAO,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,EAAE;AAC7C,IAAI,MAAM,EAAE,GAAG;AACf,GAAG,CAAC,CAAC;AACL;;;;"}
|
||||
@@ -1,100 +0,0 @@
|
||||
import { j as json } from './index-2b68e648.js';
|
||||
import { a as auth } from './webhook-c20a13d6.js';
|
||||
import { c as GetCommentsForIssue, A as AddComment } from './github-c018834c.js';
|
||||
import { p as public_env } from './shared-server-58a5f352.js';
|
||||
import fs from 'fs-extra';
|
||||
import './helpers-0acb6e43.js';
|
||||
import './tool-b4b3e524.js';
|
||||
import 'randomstring';
|
||||
import 'axios';
|
||||
import 'marked';
|
||||
|
||||
async function GET({ request, params }) {
|
||||
const authError = auth(request);
|
||||
if (authError !== null) {
|
||||
return json(
|
||||
{ error: authError.message },
|
||||
{
|
||||
status: 401
|
||||
}
|
||||
);
|
||||
}
|
||||
const incidentNumber = params.incidentNumber;
|
||||
if (!incidentNumber || isNaN(incidentNumber)) {
|
||||
return json(
|
||||
{ error: "Invalid incidentNumber" },
|
||||
{
|
||||
status: 400
|
||||
}
|
||||
);
|
||||
}
|
||||
let site = JSON.parse(fs.readFileSync(public_env.PUBLIC_KENER_FOLDER + "/site.json", "utf8"));
|
||||
let github = site.github;
|
||||
let resp = await GetCommentsForIssue(incidentNumber, github);
|
||||
return json(
|
||||
resp.map((comment) => {
|
||||
return {
|
||||
commentID: comment.id,
|
||||
body: comment.body,
|
||||
createdAt: Math.floor(new Date(comment.created_at).getTime() / 1e3)
|
||||
};
|
||||
}),
|
||||
{
|
||||
status: 200
|
||||
}
|
||||
);
|
||||
}
|
||||
async function POST({ request, params }) {
|
||||
const authError = auth(request);
|
||||
if (authError !== null) {
|
||||
return json(
|
||||
{ error: authError.message },
|
||||
{
|
||||
status: 401
|
||||
}
|
||||
);
|
||||
}
|
||||
const incidentNumber = params.incidentNumber;
|
||||
if (!incidentNumber || isNaN(incidentNumber)) {
|
||||
return json(
|
||||
{ error: "Invalid incidentNumber" },
|
||||
{
|
||||
status: 400
|
||||
}
|
||||
);
|
||||
}
|
||||
const payload = await request.json();
|
||||
let body = payload.body;
|
||||
if (!body || typeof body !== "string") {
|
||||
return json(
|
||||
{ error: "Invalid body" },
|
||||
{
|
||||
status: 400
|
||||
}
|
||||
);
|
||||
}
|
||||
let site = JSON.parse(fs.readFileSync(public_env.PUBLIC_KENER_FOLDER + "/site.json", "utf8"));
|
||||
let github = site.github;
|
||||
let resp = await AddComment(github, incidentNumber, body);
|
||||
if (resp === null) {
|
||||
return json(
|
||||
{ error: "github error" },
|
||||
{
|
||||
status: 400
|
||||
}
|
||||
);
|
||||
}
|
||||
return json(
|
||||
{
|
||||
commentID: resp.id,
|
||||
body: resp.body,
|
||||
createdAt: Math.floor(new Date(resp.created_at).getTime() / 1e3)
|
||||
},
|
||||
{
|
||||
status: 200
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
export { GET, POST };
|
||||
//# sourceMappingURL=_server-1eceb496.js.map
|
||||