mirror of
https://github.com/LeRoid-hub/Mensa-API.git
synced 2025-01-31 11:44:55 +00:00
huh
This commit is contained in:
parent
3c6ab561fd
commit
099a388e23
11
Dockerfile
11
Dockerfile
@ -1,11 +0,0 @@
|
|||||||
FROM node:latest as build-stage
|
|
||||||
WORKDIR /app
|
|
||||||
COPY package*.json ./
|
|
||||||
RUN npm i
|
|
||||||
COPY . .
|
|
||||||
|
|
||||||
FROM build-stage as production
|
|
||||||
|
|
||||||
ENV NODE_PATH=./build
|
|
||||||
|
|
||||||
RUN npm run build
|
|
9
Makefile
9
Makefile
@ -1,9 +0,0 @@
|
|||||||
up:
|
|
||||||
docker-compose up -d
|
|
||||||
|
|
||||||
up-prod:
|
|
||||||
docker-compose -f docker-compose.yml -f docker-compose.prod.yml up
|
|
||||||
# docker-compose -f docker-compose.yml -f docker-compose.prod.yml up --build -d
|
|
||||||
|
|
||||||
down:
|
|
||||||
docker-compose down
|
|
17
README.md
17
README.md
@ -1,18 +1 @@
|
|||||||
# Mensa-API
|
# Mensa-API
|
||||||
|
|
||||||
## Usage
|
|
||||||
```
|
|
||||||
npm install
|
|
||||||
npx tsc
|
|
||||||
node ./dist/index.js
|
|
||||||
```
|
|
||||||
|
|
||||||
### Dev
|
|
||||||
```
|
|
||||||
make up
|
|
||||||
```
|
|
||||||
|
|
||||||
### Prod
|
|
||||||
```
|
|
||||||
make up-prod
|
|
||||||
```
|
|
||||||
|
@ -3,7 +3,7 @@ package main
|
|||||||
import (
|
import (
|
||||||
"net/http"
|
"net/http"
|
||||||
|
|
||||||
"fetch"
|
"github.com/LeRoid-hub/Mensa-API/blob/go/api/fetch.go"
|
||||||
"github.com/gin-gonic/gin"
|
"github.com/gin-gonic/gin"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -1,7 +0,0 @@
|
|||||||
version: '3.7'
|
|
||||||
|
|
||||||
services:
|
|
||||||
mensa-api-docker:
|
|
||||||
build:
|
|
||||||
target: production
|
|
||||||
command: node build/index.js
|
|
@ -1,17 +0,0 @@
|
|||||||
version: '3.7'
|
|
||||||
|
|
||||||
services:
|
|
||||||
mensa-api-docker:
|
|
||||||
build:
|
|
||||||
context: .
|
|
||||||
dockerfile: Dockerfile
|
|
||||||
target: build-stage
|
|
||||||
volumes:
|
|
||||||
- ./src:/home/node/app/src
|
|
||||||
- ./nodemon.json:/home/node/app/nodemon.json
|
|
||||||
container_name: mensa-api-docker
|
|
||||||
expose:
|
|
||||||
- '4000'
|
|
||||||
ports:
|
|
||||||
- '4000:4000'
|
|
||||||
command: npm run dev
|
|
@ -1 +0,0 @@
|
|||||||
TypeDoc added this file to prevent GitHub Pages from using Jekyll. You can turn off this behavior by setting the `githubPages` option to false.
|
|
@ -1,20 +0,0 @@
|
|||||||
mensa-api / [Exports](modules.md)
|
|
||||||
|
|
||||||
# Mensa-API
|
|
||||||
|
|
||||||
## Usage
|
|
||||||
```
|
|
||||||
npm install
|
|
||||||
npx tsc
|
|
||||||
node ./dist/index.js
|
|
||||||
```
|
|
||||||
|
|
||||||
### Dev
|
|
||||||
```
|
|
||||||
make up
|
|
||||||
```
|
|
||||||
|
|
||||||
### Prod
|
|
||||||
```
|
|
||||||
make up-prod
|
|
||||||
```
|
|
@ -1,70 +0,0 @@
|
|||||||
[mensa-api](README.md) / Exports
|
|
||||||
|
|
||||||
# mensa-api
|
|
||||||
|
|
||||||
## Table of contents
|
|
||||||
|
|
||||||
### Functions
|
|
||||||
|
|
||||||
- [stripCampus](modules.md#stripcampus)
|
|
||||||
- [stripMensa](modules.md#stripmensa)
|
|
||||||
|
|
||||||
## Functions
|
|
||||||
|
|
||||||
### stripCampus
|
|
||||||
|
|
||||||
▸ **stripCampus**(`html`): `JSON`
|
|
||||||
|
|
||||||
This function strips the html from the campus and Bundesland page and returns a JSON object
|
|
||||||
|
|
||||||
#### Parameters
|
|
||||||
|
|
||||||
| Name | Type | Description |
|
|
||||||
| :------ | :------ | :------ |
|
|
||||||
| `html` | `string` | The html of the campus or Bundesland page |
|
|
||||||
|
|
||||||
#### Returns
|
|
||||||
|
|
||||||
`JSON`
|
|
||||||
|
|
||||||
JSON object
|
|
||||||
|
|
||||||
**`Example`**
|
|
||||||
|
|
||||||
```ts
|
|
||||||
stripCampus(html);
|
|
||||||
```
|
|
||||||
|
|
||||||
#### Defined in
|
|
||||||
|
|
||||||
[stripper.ts:141](https://github.com/LeRoid-hub/Mensa-API/blob/5e9a6b1/src/stripper.ts#L141)
|
|
||||||
|
|
||||||
___
|
|
||||||
|
|
||||||
### stripMensa
|
|
||||||
|
|
||||||
▸ **stripMensa**(`html`): `string`
|
|
||||||
|
|
||||||
This function strips the html from the mensa page and returns a JSON object
|
|
||||||
|
|
||||||
#### Parameters
|
|
||||||
|
|
||||||
| Name | Type | Description |
|
|
||||||
| :------ | :------ | :------ |
|
|
||||||
| `html` | `string` | The html of the mensa page |
|
|
||||||
|
|
||||||
#### Returns
|
|
||||||
|
|
||||||
`string`
|
|
||||||
|
|
||||||
JSON object
|
|
||||||
|
|
||||||
**`Example`**
|
|
||||||
|
|
||||||
```ts
|
|
||||||
stripMensa(html);
|
|
||||||
```
|
|
||||||
|
|
||||||
#### Defined in
|
|
||||||
|
|
||||||
[stripper.ts:168](https://github.com/LeRoid-hub/Mensa-API/blob/5e9a6b1/src/stripper.ts#L168)
|
|
32
go.mod
Normal file
32
go.mod
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
module mensa
|
||||||
|
|
||||||
|
go 1.22.1
|
||||||
|
|
||||||
|
require github.com/gin-gonic/gin v1.9.1
|
||||||
|
|
||||||
|
require (
|
||||||
|
github.com/bytedance/sonic v1.9.1 // indirect
|
||||||
|
github.com/chenzhuoyu/base64x v0.0.0-20221115062448-fe3a3abad311 // indirect
|
||||||
|
github.com/gabriel-vasile/mimetype v1.4.2 // indirect
|
||||||
|
github.com/gin-contrib/sse v0.1.0 // indirect
|
||||||
|
github.com/go-playground/locales v0.14.1 // indirect
|
||||||
|
github.com/go-playground/universal-translator v0.18.1 // indirect
|
||||||
|
github.com/go-playground/validator/v10 v10.14.0 // indirect
|
||||||
|
github.com/goccy/go-json v0.10.2 // indirect
|
||||||
|
github.com/json-iterator/go v1.1.12 // indirect
|
||||||
|
github.com/klauspost/cpuid/v2 v2.2.4 // indirect
|
||||||
|
github.com/leodido/go-urn v1.2.4 // indirect
|
||||||
|
github.com/mattn/go-isatty v0.0.19 // indirect
|
||||||
|
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
|
||||||
|
github.com/modern-go/reflect2 v1.0.2 // indirect
|
||||||
|
github.com/pelletier/go-toml/v2 v2.0.8 // indirect
|
||||||
|
github.com/twitchyliquid64/golang-asm v0.15.1 // indirect
|
||||||
|
github.com/ugorji/go/codec v1.2.11 // indirect
|
||||||
|
golang.org/x/arch v0.3.0 // indirect
|
||||||
|
golang.org/x/crypto v0.9.0 // indirect
|
||||||
|
golang.org/x/net v0.10.0 // indirect
|
||||||
|
golang.org/x/sys v0.8.0 // indirect
|
||||||
|
golang.org/x/text v0.9.0 // indirect
|
||||||
|
google.golang.org/protobuf v1.30.0 // indirect
|
||||||
|
gopkg.in/yaml.v3 v3.0.1 // indirect
|
||||||
|
)
|
86
go.sum
Normal file
86
go.sum
Normal file
@ -0,0 +1,86 @@
|
|||||||
|
github.com/bytedance/sonic v1.5.0/go.mod h1:ED5hyg4y6t3/9Ku1R6dU/4KyJ48DZ4jPhfY1O2AihPM=
|
||||||
|
github.com/bytedance/sonic v1.9.1 h1:6iJ6NqdoxCDr6mbY8h18oSO+cShGSMRGCEo7F2h0x8s=
|
||||||
|
github.com/bytedance/sonic v1.9.1/go.mod h1:i736AoUSYt75HyZLoJW9ERYxcy6eaN6h4BZXU064P/U=
|
||||||
|
github.com/chenzhuoyu/base64x v0.0.0-20211019084208-fb5309c8db06/go.mod h1:DH46F32mSOjUmXrMHnKwZdA8wcEefY7UVqBKYGjpdQY=
|
||||||
|
github.com/chenzhuoyu/base64x v0.0.0-20221115062448-fe3a3abad311 h1:qSGYFH7+jGhDF8vLC+iwCD4WpbV1EBDSzWkJODFLams=
|
||||||
|
github.com/chenzhuoyu/base64x v0.0.0-20221115062448-fe3a3abad311/go.mod h1:b583jCggY9gE99b6G5LEC39OIiVsWj+R97kbl5odCEk=
|
||||||
|
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||||
|
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
|
||||||
|
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||||
|
github.com/gabriel-vasile/mimetype v1.4.2 h1:w5qFW6JKBz9Y393Y4q372O9A7cUSequkh1Q7OhCmWKU=
|
||||||
|
github.com/gabriel-vasile/mimetype v1.4.2/go.mod h1:zApsH/mKG4w07erKIaJPFiX0Tsq9BFQgN3qGY5GnNgA=
|
||||||
|
github.com/gin-contrib/sse v0.1.0 h1:Y/yl/+YNO8GZSjAhjMsSuLt29uWRFHdHYUb5lYOV9qE=
|
||||||
|
github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI=
|
||||||
|
github.com/gin-gonic/gin v1.9.1 h1:4idEAncQnU5cB7BeOkPtxjfCSye0AAm1R0RVIqJ+Jmg=
|
||||||
|
github.com/gin-gonic/gin v1.9.1/go.mod h1:hPrL7YrpYKXt5YId3A/Tnip5kqbEAP+KLuI3SUcPTeU=
|
||||||
|
github.com/go-playground/assert/v2 v2.2.0 h1:JvknZsQTYeFEAhQwI4qEt9cyV5ONwRHC+lYKSsYSR8s=
|
||||||
|
github.com/go-playground/assert/v2 v2.2.0/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4=
|
||||||
|
github.com/go-playground/locales v0.14.1 h1:EWaQ/wswjilfKLTECiXz7Rh+3BjFhfDFKv/oXslEjJA=
|
||||||
|
github.com/go-playground/locales v0.14.1/go.mod h1:hxrqLVvrK65+Rwrd5Fc6F2O76J/NuW9t0sjnWqG1slY=
|
||||||
|
github.com/go-playground/universal-translator v0.18.1 h1:Bcnm0ZwsGyWbCzImXv+pAJnYK9S473LQFuzCbDbfSFY=
|
||||||
|
github.com/go-playground/universal-translator v0.18.1/go.mod h1:xekY+UJKNuX9WP91TpwSH2VMlDf28Uj24BCp08ZFTUY=
|
||||||
|
github.com/go-playground/validator/v10 v10.14.0 h1:vgvQWe3XCz3gIeFDm/HnTIbj6UGmg/+t63MyGU2n5js=
|
||||||
|
github.com/go-playground/validator/v10 v10.14.0/go.mod h1:9iXMNT7sEkjXb0I+enO7QXmzG6QCsPWY4zveKFVRSyU=
|
||||||
|
github.com/goccy/go-json v0.10.2 h1:CrxCmQqYDkv1z7lO7Wbh2HN93uovUHgrECaO5ZrCXAU=
|
||||||
|
github.com/goccy/go-json v0.10.2/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I=
|
||||||
|
github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk=
|
||||||
|
github.com/google/go-cmp v0.5.5 h1:Khx7svrCpmxxtHBq5j2mp/xVjsi8hQMfNLvJFAlrGgU=
|
||||||
|
github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
||||||
|
github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
|
||||||
|
github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM=
|
||||||
|
github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo=
|
||||||
|
github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg=
|
||||||
|
github.com/klauspost/cpuid/v2 v2.2.4 h1:acbojRNwl3o09bUq+yDCtZFc1aiwaAAxtcn8YkZXnvk=
|
||||||
|
github.com/klauspost/cpuid/v2 v2.2.4/go.mod h1:RVVoqg1df56z8g3pUjL/3lE5UfnlrJX8tyFgg4nqhuY=
|
||||||
|
github.com/leodido/go-urn v1.2.4 h1:XlAE/cm/ms7TE/VMVoduSpNBoyc2dOxHs5MZSwAN63Q=
|
||||||
|
github.com/leodido/go-urn v1.2.4/go.mod h1:7ZrI8mTSeBSHl/UaRyKQW1qZeMgak41ANeCNaVckg+4=
|
||||||
|
github.com/mattn/go-isatty v0.0.19 h1:JITubQf0MOLdlGRuRq+jtsDlekdYPia9ZFsB8h/APPA=
|
||||||
|
github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
|
||||||
|
github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
|
||||||
|
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg=
|
||||||
|
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
|
||||||
|
github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M=
|
||||||
|
github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk=
|
||||||
|
github.com/pelletier/go-toml/v2 v2.0.8 h1:0ctb6s9mE31h0/lhu+J6OPmVeDxJn+kYnJc2jZR9tGQ=
|
||||||
|
github.com/pelletier/go-toml/v2 v2.0.8/go.mod h1:vuYfssBdrU2XDZ9bYydBu6t+6a6PYNcZljzZR9VXg+4=
|
||||||
|
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
|
||||||
|
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
||||||
|
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
|
||||||
|
github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
|
||||||
|
github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo=
|
||||||
|
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
|
||||||
|
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
|
||||||
|
github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
|
||||||
|
github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
|
||||||
|
github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
|
||||||
|
github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
|
||||||
|
github.com/stretchr/testify v1.8.3 h1:RP3t2pwF7cMEbC1dqtB6poj3niw/9gnV4Cjg5oW5gtY=
|
||||||
|
github.com/stretchr/testify v1.8.3/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
|
||||||
|
github.com/twitchyliquid64/golang-asm v0.15.1 h1:SU5vSMR7hnwNxj24w34ZyCi/FmDZTkS4MhqMhdFk5YI=
|
||||||
|
github.com/twitchyliquid64/golang-asm v0.15.1/go.mod h1:a1lVb/DtPvCB8fslRZhAngC2+aY1QWCk3Cedj/Gdt08=
|
||||||
|
github.com/ugorji/go/codec v1.2.11 h1:BMaWp1Bb6fHwEtbplGBGJ498wD+LKlNSl25MjdZY4dU=
|
||||||
|
github.com/ugorji/go/codec v1.2.11/go.mod h1:UNopzCgEMSXjBc6AOMqYvWC1ktqTAfzJZUZgYf6w6lg=
|
||||||
|
golang.org/x/arch v0.0.0-20210923205945-b76863e36670/go.mod h1:5om86z9Hs0C8fWVUuoMHwpExlXzs5Tkyp9hOrfG7pp8=
|
||||||
|
golang.org/x/arch v0.3.0 h1:02VY4/ZcO/gBOH6PUaoiptASxtXU10jazRCP865E97k=
|
||||||
|
golang.org/x/arch v0.3.0/go.mod h1:5om86z9Hs0C8fWVUuoMHwpExlXzs5Tkyp9hOrfG7pp8=
|
||||||
|
golang.org/x/crypto v0.9.0 h1:LF6fAI+IutBocDJ2OT0Q1g8plpYljMZ4+lty+dsqw3g=
|
||||||
|
golang.org/x/crypto v0.9.0/go.mod h1:yrmDGqONDYtNj3tH8X9dzUun2m2lzPa9ngI6/RUPGR0=
|
||||||
|
golang.org/x/net v0.10.0 h1:X2//UzNDwYmtCLn7To6G58Wr6f5ahEAQgKNzv9Y951M=
|
||||||
|
golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg=
|
||||||
|
golang.org/x/sys v0.0.0-20220704084225-05e143d24a9e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
|
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
|
golang.org/x/sys v0.8.0 h1:EBmGv8NaZBZTWvrbjNoL6HVt+IVy3QDQpJs7VRIw3tU=
|
||||||
|
golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
|
golang.org/x/text v0.9.0 h1:2sjJmO8cDvYveuX97RDLsxlyUxLl+GHoLxBiRdHllBE=
|
||||||
|
golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
|
||||||
|
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4=
|
||||||
|
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||||
|
google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
|
||||||
|
google.golang.org/protobuf v1.30.0 h1:kPPoIgf3TsEvrm0PFe15JQ+570QVxYzEvvHqChK+cng=
|
||||||
|
google.golang.org/protobuf v1.30.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
|
||||||
|
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM=
|
||||||
|
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||||
|
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
||||||
|
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
|
||||||
|
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
||||||
|
rsc.io/pdf v0.1.1/go.mod h1:n8OzWcQ6Sp37PL01nO98y4iUCRdTGarVfzxY20ICaU4=
|
@ -1,6 +0,0 @@
|
|||||||
{
|
|
||||||
"verbose": true,
|
|
||||||
"ignore": [],
|
|
||||||
"watch": ["src/**/*.ts"],
|
|
||||||
"exec": "ts-node ./src/index.ts"
|
|
||||||
}
|
|
1904
package-lock.json
generated
1904
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
33
package.json
33
package.json
@ -1,33 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "mensa-api",
|
|
||||||
"version": "1.0.0",
|
|
||||||
"description": "",
|
|
||||||
"main": "dist/index.js",
|
|
||||||
"scripts": {
|
|
||||||
"start": "NODE_PATH=./build node build/index.js",
|
|
||||||
"build": "tsc -p .",
|
|
||||||
"dev": "nodemon src/index.ts"
|
|
||||||
},
|
|
||||||
"author": "Jan Barfuss",
|
|
||||||
"license": "ISC",
|
|
||||||
"dependencies": {
|
|
||||||
"@types/cors": "^2.8.17",
|
|
||||||
"@types/morgan": "^1.9.9",
|
|
||||||
"axios": "^1.6.2",
|
|
||||||
"body-parser": "^1.20.2",
|
|
||||||
"cheerio": "^1.0.0-rc.12",
|
|
||||||
"cors": "^2.8.5",
|
|
||||||
"dotenv": "^16.3.1",
|
|
||||||
"express": "^4.18.2",
|
|
||||||
"morgan": "^1.10.0"
|
|
||||||
},
|
|
||||||
"devDependencies": {
|
|
||||||
"@types/express": "^4.17.21",
|
|
||||||
"@types/node": "^20.10.5",
|
|
||||||
"nodemon": "^3.0.2",
|
|
||||||
"ts-node": "^10.9.2",
|
|
||||||
"typedoc": "^0.25.4",
|
|
||||||
"typedoc-plugin-markdown": "^3.17.1",
|
|
||||||
"typescript": "^5.3.3"
|
|
||||||
}
|
|
||||||
}
|
|
61
src/cache.ts
61
src/cache.ts
@ -1,61 +0,0 @@
|
|||||||
class SiteCache {
|
|
||||||
cachedData: any;
|
|
||||||
lastUsed: Date;
|
|
||||||
lifeTime: number;
|
|
||||||
key: string;
|
|
||||||
|
|
||||||
constructor() {
|
|
||||||
this.cachedData = null;
|
|
||||||
this.lastUsed = new Date();
|
|
||||||
this.lifeTime = 1000 * 30;
|
|
||||||
this.key = "";
|
|
||||||
}
|
|
||||||
|
|
||||||
get() {
|
|
||||||
if (Date.now() - this.lastUsed.getTime() > this.lifeTime) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (this.cachedData == null) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
return this.cachedData;
|
|
||||||
}
|
|
||||||
|
|
||||||
set(key: string, data: any, lifeTime: number = 1000 * 60 * 30) {
|
|
||||||
this.cachedData = data;
|
|
||||||
this.lastUsed = new Date();
|
|
||||||
this.key = key;
|
|
||||||
this.lifeTime = lifeTime;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
export default class Cache {
|
|
||||||
cache: SiteCache[];
|
|
||||||
|
|
||||||
constructor() {
|
|
||||||
this.cache = [];
|
|
||||||
}
|
|
||||||
|
|
||||||
get(key: string) {
|
|
||||||
for (let i = 0; i < this.cache.length; i++) {
|
|
||||||
if (this.cache[i].key === key) {
|
|
||||||
return this.cache[i].get();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
set(key: string, data: any, lifeTime: number = 1000 * 60 * 30) {
|
|
||||||
for (let i = 0; i < this.cache.length; i++) {
|
|
||||||
if (this.cache[i].key === key) {
|
|
||||||
this.cache[i].set(key, data, lifeTime);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
let siteCache = new SiteCache();
|
|
||||||
siteCache.set(key, data);
|
|
||||||
this.cache.push(siteCache);
|
|
||||||
}
|
|
||||||
}
|
|
23
src/fetch.ts
23
src/fetch.ts
@ -1,23 +0,0 @@
|
|||||||
import axios from 'axios';
|
|
||||||
|
|
||||||
const isUrl = (url: string) => {
|
|
||||||
try {
|
|
||||||
new URL(url);
|
|
||||||
return true;
|
|
||||||
} catch (err) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
export default async function fetch(url: string) {
|
|
||||||
if (!isUrl(url)) {
|
|
||||||
throw new Error('Invalid URL');
|
|
||||||
}
|
|
||||||
try {
|
|
||||||
const res = await axios.get(url)
|
|
||||||
return res.data;
|
|
||||||
} catch (err) {
|
|
||||||
console.log(err);
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
|
93
src/index.ts
93
src/index.ts
@ -1,93 +0,0 @@
|
|||||||
// index.ts
|
|
||||||
/**
|
|
||||||
* @file This is the main file of the project.
|
|
||||||
* @version 1.0.0
|
|
||||||
*/
|
|
||||||
import express, { Express, Request, Response} from "express";
|
|
||||||
import dotenv from "dotenv";
|
|
||||||
import cors from "cors";
|
|
||||||
import bodyParser, { text } from "body-parser";
|
|
||||||
import morgan from "morgan";
|
|
||||||
|
|
||||||
import fetch from './fetch.js';
|
|
||||||
import Cache from './cache.js';
|
|
||||||
import {stripMensa, stripCampus} from "./stripper.js";
|
|
||||||
|
|
||||||
dotenv.config();
|
|
||||||
|
|
||||||
const app: Express = express().use(cors({ origin: '*' })).use(bodyParser.json());
|
|
||||||
app.use(morgan('combined'))
|
|
||||||
|
|
||||||
const port = process.env.PORT || 3000;
|
|
||||||
|
|
||||||
const baseUrl = "https://www.imensa.de/";
|
|
||||||
|
|
||||||
const cache = new Cache();
|
|
||||||
|
|
||||||
app.get("/", (req: Request, res: Response) => {
|
|
||||||
res.send("Mensa API");
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
app.get("/api/bl/:Bundesland", (req: Request, res: Response) => {
|
|
||||||
if (req.params.Bundesland === undefined) {
|
|
||||||
return res.send("Invalid request");
|
|
||||||
}
|
|
||||||
let cachedData = cache.get("BL: "+req.params.Bundesland);
|
|
||||||
if (cachedData !== null) {
|
|
||||||
return res.send(cachedData);
|
|
||||||
}else {
|
|
||||||
let url = baseUrl + req.params.Bundesland.toLowerCase()+".html";
|
|
||||||
fetch(url).then((data) => {
|
|
||||||
let stripedData = null;
|
|
||||||
if (data === null) {
|
|
||||||
return res.send("Invalid request");
|
|
||||||
}
|
|
||||||
stripedData = stripCampus(data);
|
|
||||||
const lifeTime = 1000 * 60 * 60 * 24 * 7;
|
|
||||||
cache.set("BL: "+req.params.Bundesland, stripedData, lifeTime);
|
|
||||||
res.send(stripedData);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
app.get("/api/:Location/:Mensa?", (req: Request, res: Response) => {
|
|
||||||
if (req.params.Location === undefined) {
|
|
||||||
return res.send("Invalid request");
|
|
||||||
}
|
|
||||||
let cachedData = cache.get(req.params.Mensa ?? req.params.Location);
|
|
||||||
if (cachedData !== null) {
|
|
||||||
return res.send(cachedData);
|
|
||||||
}else {
|
|
||||||
let url = baseUrl + req.params.Location.toLowerCase();
|
|
||||||
if (req.params.Mensa !== undefined) {
|
|
||||||
url += "/" + req.params.Mensa.toLowerCase();
|
|
||||||
}
|
|
||||||
fetch(url).then((data) => {
|
|
||||||
let stripedData = null;
|
|
||||||
let lifeTime = 1000 * 30;
|
|
||||||
if (data === null) {
|
|
||||||
return res.send("Invalid request");
|
|
||||||
}
|
|
||||||
if (req.params.Mensa !== undefined) {
|
|
||||||
stripedData = stripMensa(data);
|
|
||||||
lifeTime = 1000 * 60 * 60 * 24;
|
|
||||||
}else {
|
|
||||||
stripedData = stripCampus(data);
|
|
||||||
lifeTime = 1000 * 60 * 30;
|
|
||||||
}
|
|
||||||
|
|
||||||
cache.set(req.params.Mensa ?? req.params.Location, stripedData);
|
|
||||||
res.send(stripedData);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
app.get("/api", (req: Request, res: Response) => {
|
|
||||||
res.send("/api/:Location/:Mensa?");
|
|
||||||
});
|
|
||||||
|
|
||||||
app.listen(port, () => {
|
|
||||||
console.log(`[server]: Server is running at http://localhost:${port}`);
|
|
||||||
});
|
|
202
src/stripper.ts
202
src/stripper.ts
@ -1,202 +0,0 @@
|
|||||||
import * as cheerio from 'cheerio';
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This class represents a Campus or Bundesland
|
|
||||||
*@class campus
|
|
||||||
*@property {string} name The name of the Campus or Bundesland
|
|
||||||
*@property {mensa[]} locations The locations of the Campus or Bundesland
|
|
||||||
*/
|
|
||||||
class Campus {
|
|
||||||
name: string;
|
|
||||||
locations: Mensa[];
|
|
||||||
|
|
||||||
/**
|
|
||||||
* constructor for campus
|
|
||||||
* @param name The name of the Campus or Bundesland
|
|
||||||
* @returns Campus
|
|
||||||
* @example
|
|
||||||
* let campus = new Campus("Campus");
|
|
||||||
*/
|
|
||||||
constructor(name: string) {
|
|
||||||
this.name = name;
|
|
||||||
this.locations = [];
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This function adds a location to the Campus or Bundesland
|
|
||||||
* @param mensa The location or to add
|
|
||||||
* @returns void
|
|
||||||
* @example
|
|
||||||
* campus.addMensa(mensa);
|
|
||||||
*/
|
|
||||||
addMensa(mensa: Mensa) {
|
|
||||||
this.locations.push(mensa);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This function returns a string representation of the Campus or Bundesland
|
|
||||||
*/
|
|
||||||
toString() {
|
|
||||||
let str = this.name + "\n";
|
|
||||||
this.locations.forEach((elem) => {
|
|
||||||
str += " -> " + elem.name + " | " + elem.url + "\n";
|
|
||||||
});
|
|
||||||
return str;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This class represents a mensa
|
|
||||||
*@class Mensa
|
|
||||||
*@property {string} name The name of the Mensa
|
|
||||||
*@property {string} url The url of the mensa
|
|
||||||
*/
|
|
||||||
class Mensa {
|
|
||||||
name: string;
|
|
||||||
url: string;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* constructor for mensa
|
|
||||||
* @param name The name of the mensa
|
|
||||||
* @param url The url of the Mensa
|
|
||||||
* @example
|
|
||||||
* let mensa = new Mensa("Mensa", url;
|
|
||||||
*/
|
|
||||||
constructor(name: string, url: string) {
|
|
||||||
this.name = name;
|
|
||||||
this.url = url;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This class represents a menus
|
|
||||||
*@class menus
|
|
||||||
*@property {string} name The name of the menus
|
|
||||||
*@property {meal[]} meals The meals of the menus
|
|
||||||
*/
|
|
||||||
class Menu {
|
|
||||||
name: string;
|
|
||||||
meals: Meal[];
|
|
||||||
|
|
||||||
/**
|
|
||||||
* constructor for menus
|
|
||||||
* @param name The name of the menus
|
|
||||||
*/
|
|
||||||
constructor(name: string) {
|
|
||||||
this.name = name;
|
|
||||||
this.meals = [];
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This function adds a meal to the menus
|
|
||||||
* @param meal The meal to add
|
|
||||||
* @returns void
|
|
||||||
* @example
|
|
||||||
* menu.addMeal(meal);
|
|
||||||
*/
|
|
||||||
addMeal(meal: Meal) {
|
|
||||||
this.meals.push(meal);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This function returns a string representation of the menus
|
|
||||||
* @returns string
|
|
||||||
*/
|
|
||||||
toString() {
|
|
||||||
let str = this.name + "\n";
|
|
||||||
this.meals.forEach((elem) => {
|
|
||||||
str += " -> " + elem.name + " | " + elem.price + " | " + elem.atributs + "\n";
|
|
||||||
});
|
|
||||||
return str;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
class Meal {
|
|
||||||
name: string;
|
|
||||||
price: string;
|
|
||||||
atributs: string[];
|
|
||||||
|
|
||||||
/**
|
|
||||||
* constructor for meals
|
|
||||||
* @param name The name of the meal
|
|
||||||
* @param price The price of the meals
|
|
||||||
* @param atributs The atributs of the meals
|
|
||||||
* @example
|
|
||||||
* let meal = new Meal("Pommes", "2,50€", ["vegan", "vegetarisch"]);
|
|
||||||
*/
|
|
||||||
constructor(name: string, price: string, atributs: string[] ) {
|
|
||||||
this.name = name;
|
|
||||||
this.price = price;
|
|
||||||
this.atributs = atributs;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This function strips the html from the campus and Bundesland page and returns a JSON object
|
|
||||||
* @param html The html of the campus or Bundesland page
|
|
||||||
* @returns JSON object
|
|
||||||
* @example
|
|
||||||
* stripCampus(html);
|
|
||||||
*/
|
|
||||||
export function stripCampus(html: string): JSON {
|
|
||||||
|
|
||||||
const $ = cheerio.load(html);
|
|
||||||
|
|
||||||
let ort :Campus[] = [];
|
|
||||||
const $campus = $('.tagged').find('.group');
|
|
||||||
|
|
||||||
$campus.each((i, elem) => {
|
|
||||||
let campus = new Campus($(elem).find('h2').text());
|
|
||||||
//console.log($(elem).find('h2').text() + "\n");
|
|
||||||
$(elem).find('a').each((i, elem) => {
|
|
||||||
const link = $(elem).attr('href')?.replace("/index.html","");
|
|
||||||
campus.addMensa(new Mensa($(elem).text(), link ?? ""));
|
|
||||||
//console.log(" -> " + $(elem).text() + " | " + $(elem).attr('href')?.replace("/index.html","") + "\n");
|
|
||||||
});
|
|
||||||
ort.push(campus);
|
|
||||||
});
|
|
||||||
return JSON.parse(JSON.stringify(ort));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This function strips the html from the mensa page and returns a JSON object
|
|
||||||
* @param html The html of the mensa page
|
|
||||||
* @returns JSON object
|
|
||||||
* @example
|
|
||||||
* stripMensa(html);
|
|
||||||
*/
|
|
||||||
export function stripMensa(html: string): string {
|
|
||||||
const $ = cheerio.load(html);
|
|
||||||
|
|
||||||
let menus :Menu[] = [];
|
|
||||||
|
|
||||||
const $menu = $('.aw-meal-category');
|
|
||||||
$menu.each((i, elem) => {
|
|
||||||
const menu = new Menu($(elem).find('h3').text());
|
|
||||||
|
|
||||||
//meal
|
|
||||||
$(elem).find('.aw-meal').each((i, elem) => {
|
|
||||||
const name = $(elem).find('.aw-meal-description').text();
|
|
||||||
const price = $(elem).find('.aw-meal-price').text();
|
|
||||||
|
|
||||||
//delete last time served
|
|
||||||
$(elem).find('.aw-meal-attributes').find('.hidden-md').remove();
|
|
||||||
|
|
||||||
const atributs :string[] = $(elem).find('.aw-meal-attributes').text().split(" ");
|
|
||||||
|
|
||||||
atributs.forEach((elem, i) => {
|
|
||||||
elem = elem.trim();
|
|
||||||
atributs[i] = elem;
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
menu.addMeal(new Meal(name, price, atributs));
|
|
||||||
});
|
|
||||||
menus.push(menu);
|
|
||||||
});
|
|
||||||
if (menus.length === 0) {
|
|
||||||
return JSON.parse("No usable Data found");
|
|
||||||
}
|
|
||||||
return JSON.parse(JSON.stringify(menus));
|
|
||||||
}
|
|
||||||
|
|
113
tsconfig.json
113
tsconfig.json
@ -1,113 +0,0 @@
|
|||||||
{
|
|
||||||
"compilerOptions": {
|
|
||||||
/* Visit https://aka.ms/tsconfig to read more about this file */
|
|
||||||
|
|
||||||
/* Projects */
|
|
||||||
// "incremental": true, /* Save .tsbuildinfo files to allow for incremental compilation of projects. */
|
|
||||||
// "composite": true, /* Enable constraints that allow a TypeScript project to be used with project references. */
|
|
||||||
// "tsBuildInfoFile": "./.tsbuildinfo", /* Specify the path to .tsbuildinfo incremental compilation file. */
|
|
||||||
// "disableSourceOfProjectReferenceRedirect": true, /* Disable preferring source files instead of declaration files when referencing composite projects. */
|
|
||||||
// "disableSolutionSearching": true, /* Opt a project out of multi-project reference checking when editing. */
|
|
||||||
// "disableReferencedProjectLoad": true, /* Reduce the number of projects loaded automatically by TypeScript. */
|
|
||||||
|
|
||||||
/* Language and Environment */
|
|
||||||
"target": "es2016", /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */
|
|
||||||
// "lib": [], /* Specify a set of bundled library declaration files that describe the target runtime environment. */
|
|
||||||
// "jsx": "preserve", /* Specify what JSX code is generated. */
|
|
||||||
// "experimentalDecorators": true, /* Enable experimental support for legacy experimental decorators. */
|
|
||||||
// "emitDecoratorMetadata": true, /* Emit design-type metadata for decorated declarations in source files. */
|
|
||||||
// "jsxFactory": "", /* Specify the JSX factory function used when targeting React JSX emit, e.g. 'React.createElement' or 'h'. */
|
|
||||||
// "jsxFragmentFactory": "", /* Specify the JSX Fragment reference used for fragments when targeting React JSX emit e.g. 'React.Fragment' or 'Fragment'. */
|
|
||||||
// "jsxImportSource": "", /* Specify module specifier used to import the JSX factory functions when using 'jsx: react-jsx*'. */
|
|
||||||
// "reactNamespace": "", /* Specify the object invoked for 'createElement'. This only applies when targeting 'react' JSX emit. */
|
|
||||||
// "noLib": true, /* Disable including any library files, including the default lib.d.ts. */
|
|
||||||
// "useDefineForClassFields": true, /* Emit ECMAScript-standard-compliant class fields. */
|
|
||||||
// "moduleDetection": "auto", /* Control what method is used to detect module-format JS files. */
|
|
||||||
|
|
||||||
/* Modules */
|
|
||||||
"module": "commonjs", /* Specify what module code is generated. */
|
|
||||||
// "rootDir": "./", /* Specify the root folder within your source files. */
|
|
||||||
// "moduleResolution": "node10", /* Specify how TypeScript looks up a file from a given module specifier. */
|
|
||||||
// "baseUrl": "./", /* Specify the base directory to resolve non-relative module names. */
|
|
||||||
// "paths": {}, /* Specify a set of entries that re-map imports to additional lookup locations. */
|
|
||||||
// "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */
|
|
||||||
// "typeRoots": [], /* Specify multiple folders that act like './node_modules/@types'. */
|
|
||||||
// "types": [], /* Specify type package names to be included without being referenced in a source file. */
|
|
||||||
// "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */
|
|
||||||
// "moduleSuffixes": [], /* List of file name suffixes to search when resolving a module. */
|
|
||||||
// "allowImportingTsExtensions": true, /* Allow imports to include TypeScript file extensions. Requires '--moduleResolution bundler' and either '--noEmit' or '--emitDeclarationOnly' to be set. */
|
|
||||||
// "resolvePackageJsonExports": true, /* Use the package.json 'exports' field when resolving package imports. */
|
|
||||||
// "resolvePackageJsonImports": true, /* Use the package.json 'imports' field when resolving imports. */
|
|
||||||
// "customConditions": [], /* Conditions to set in addition to the resolver-specific defaults when resolving imports. */
|
|
||||||
// "resolveJsonModule": true, /* Enable importing .json files. */
|
|
||||||
// "allowArbitraryExtensions": true, /* Enable importing files with any extension, provided a declaration file is present. */
|
|
||||||
// "noResolve": true, /* Disallow 'import's, 'require's or '<reference>'s from expanding the number of files TypeScript should add to a project. */
|
|
||||||
|
|
||||||
/* JavaScript Support */
|
|
||||||
// "allowJs": true, /* Allow JavaScript files to be a part of your program. Use the 'checkJS' option to get errors from these files. */
|
|
||||||
// "checkJs": true, /* Enable error reporting in type-checked JavaScript files. */
|
|
||||||
// "maxNodeModuleJsDepth": 1, /* Specify the maximum folder depth used for checking JavaScript files from 'node_modules'. Only applicable with 'allowJs'. */
|
|
||||||
|
|
||||||
/* Emit */
|
|
||||||
// "declaration": true, /* Generate .d.ts files from TypeScript and JavaScript files in your project. */
|
|
||||||
// "declarationMap": true, /* Create sourcemaps for d.ts files. */
|
|
||||||
// "emitDeclarationOnly": true, /* Only output d.ts files and not JavaScript files. */
|
|
||||||
// "sourceMap": true, /* Create source map files for emitted JavaScript files. */
|
|
||||||
// "inlineSourceMap": true, /* Include sourcemap files inside the emitted JavaScript. */
|
|
||||||
// "outFile": "./", /* Specify a file that bundles all outputs into one JavaScript file. If 'declaration' is true, also designates a file that bundles all .d.ts output. */
|
|
||||||
"outDir": "./dist", /* Specify an output folder for all emitted files. */
|
|
||||||
// "removeComments": true, /* Disable emitting comments. */
|
|
||||||
// "noEmit": true, /* Disable emitting files from a compilation. */
|
|
||||||
// "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */
|
|
||||||
// "importsNotUsedAsValues": "remove", /* Specify emit/checking behavior for imports that are only used for types. */
|
|
||||||
// "downlevelIteration": true, /* Emit more compliant, but verbose and less performant JavaScript for iteration. */
|
|
||||||
// "sourceRoot": "", /* Specify the root path for debuggers to find the reference source code. */
|
|
||||||
// "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */
|
|
||||||
// "inlineSources": true, /* Include source code in the sourcemaps inside the emitted JavaScript. */
|
|
||||||
// "emitBOM": true, /* Emit a UTF-8 Byte Order Mark (BOM) in the beginning of output files. */
|
|
||||||
// "newLine": "crlf", /* Set the newline character for emitting files. */
|
|
||||||
// "stripInternal": true, /* Disable emitting declarations that have '@internal' in their JSDoc comments. */
|
|
||||||
// "noEmitHelpers": true, /* Disable generating custom helper functions like '__extends' in compiled output. */
|
|
||||||
// "noEmitOnError": true, /* Disable emitting files if any type checking errors are reported. */
|
|
||||||
// "preserveConstEnums": true, /* Disable erasing 'const enum' declarations in generated code. */
|
|
||||||
// "declarationDir": "./", /* Specify the output directory for generated declaration files. */
|
|
||||||
// "preserveValueImports": true, /* Preserve unused imported values in the JavaScript output that would otherwise be removed. */
|
|
||||||
|
|
||||||
/* Interop Constraints */
|
|
||||||
// "isolatedModules": true, /* Ensure that each file can be safely transpiled without relying on other imports. */
|
|
||||||
// "verbatimModuleSyntax": true, /* Do not transform or elide any imports or exports not marked as type-only, ensuring they are written in the output file's format based on the 'module' setting. */
|
|
||||||
// "allowSyntheticDefaultImports": true, /* Allow 'import x from y' when a module doesn't have a default export. */
|
|
||||||
"esModuleInterop": true, /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables 'allowSyntheticDefaultImports' for type compatibility. */
|
|
||||||
// "preserveSymlinks": true, /* Disable resolving symlinks to their realpath. This correlates to the same flag in node. */
|
|
||||||
"forceConsistentCasingInFileNames": true, /* Ensure that casing is correct in imports. */
|
|
||||||
|
|
||||||
/* Type Checking */
|
|
||||||
"strict": true, /* Enable all strict type-checking options. */
|
|
||||||
// "noImplicitAny": true, /* Enable error reporting for expressions and declarations with an implied 'any' type. */
|
|
||||||
// "strictNullChecks": true, /* When type checking, take into account 'null' and 'undefined'. */
|
|
||||||
// "strictFunctionTypes": true, /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */
|
|
||||||
// "strictBindCallApply": true, /* Check that the arguments for 'bind', 'call', and 'apply' methods match the original function. */
|
|
||||||
// "strictPropertyInitialization": true, /* Check for class properties that are declared but not set in the constructor. */
|
|
||||||
// "noImplicitThis": true, /* Enable error reporting when 'this' is given the type 'any'. */
|
|
||||||
// "useUnknownInCatchVariables": true, /* Default catch clause variables as 'unknown' instead of 'any'. */
|
|
||||||
// "alwaysStrict": true, /* Ensure 'use strict' is always emitted. */
|
|
||||||
// "noUnusedLocals": true, /* Enable error reporting when local variables aren't read. */
|
|
||||||
// "noUnusedParameters": true, /* Raise an error when a function parameter isn't read. */
|
|
||||||
// "exactOptionalPropertyTypes": true, /* Interpret optional property types as written, rather than adding 'undefined'. */
|
|
||||||
// "noImplicitReturns": true, /* Enable error reporting for codepaths that do not explicitly return in a function. */
|
|
||||||
// "noFallthroughCasesInSwitch": true, /* Enable error reporting for fallthrough cases in switch statements. */
|
|
||||||
// "noUncheckedIndexedAccess": true, /* Add 'undefined' to a type when accessed using an index. */
|
|
||||||
// "noImplicitOverride": true, /* Ensure overriding members in derived classes are marked with an override modifier. */
|
|
||||||
// "noPropertyAccessFromIndexSignature": true, /* Enforces using indexed accessors for keys declared using an indexed type. */
|
|
||||||
// "allowUnusedLabels": true, /* Disable error reporting for unused labels. */
|
|
||||||
// "allowUnreachableCode": true, /* Disable error reporting for unreachable code. */
|
|
||||||
|
|
||||||
/* Completeness */
|
|
||||||
// "skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */
|
|
||||||
"skipLibCheck": true /* Skip type checking all .d.ts files. */
|
|
||||||
},
|
|
||||||
"typedocOptions": {
|
|
||||||
"entryPoints": ["src/index.ts"],
|
|
||||||
"out": "docs"
|
|
||||||
}
|
|
||||||
}
|
|
Loading…
Reference in New Issue
Block a user