├── sveltekit-app
├── .npmrc
├── .spaceignore
├── README.md
├── Spacefile
├── vite.config.ts
├── .gitignore
├── src
│ ├── routes
│ │ ├── +page.ts
│ │ ├── api
│ │ │ └── todos
│ │ │ │ └── +server.ts
│ │ └── +page.svelte
│ ├── app.d.ts
│ └── app.html
├── Discovery.md
├── svelte.config.js
├── tsconfig.json
└── package.json
├── next-app
├── .spaceignore
├── README.md
├── Spacefile
├── next.config.js
├── pages
│ ├── _app.tsx
│ ├── _document.tsx
│ ├── index.tsx
│ └── api
│ │ └── todos.ts
├── styles
│ └── globals.css
├── Discovery.md
├── package.json
├── .gitignore
├── tsconfig.json
├── components
│ └── todos.tsx
└── package-lock.json
├── nuxt-app
├── .spaceignore
├── .npmrc
├── README.md
├── tsconfig.json
├── .gitignore
├── Spacefile
├── Discovery.md
├── nuxt.config.ts
├── package.json
├── server
│ └── api
│ │ ├── todos.get.ts
│ │ └── todos.post.ts
└── pages
│ └── index.vue
├── deno-app
├── .gitignore
├── README.md
├── Discovery.md
├── Spacefile
├── static
│ └── index.html
└── main.ts
├── python-app
├── requirements.txt
├── README.md
├── Spacefile
├── Discovery.md
├── main.py
├── static
│ └── index.html
└── .gitignore
├── tsnode-app
├── nodemon.json
├── README.md
├── Discovery.md
├── Spacefile
├── tsconfig.json
├── package.json
├── index.ts
├── static
│ └── index.html
├── .gitignore
└── package-lock.json
├── .gitignore
├── go-app
├── README.md
├── Discovery.md
├── Spacefile
├── .gitignore
├── go.mod
├── static
│ └── index.html
├── main.go
└── go.sum
├── node-app
├── README.md
├── package.json
├── Spacefile
├── Discovery.md
├── index.js
├── static
│ └── index.html
├── .gitignore
└── package-lock.json
├── LICENSE
├── CONTRIBUTING.md
└── README.md
/sveltekit-app/.npmrc:
--------------------------------------------------------------------------------
1 | engine-strict=true
2 |
--------------------------------------------------------------------------------
/next-app/.spaceignore:
--------------------------------------------------------------------------------
1 | .next
2 | node_modules
3 |
--------------------------------------------------------------------------------
/nuxt-app/.spaceignore:
--------------------------------------------------------------------------------
1 | .nuxt
2 | node_modules
3 |
--------------------------------------------------------------------------------
/deno-app/.gitignore:
--------------------------------------------------------------------------------
1 | .space
2 | .env
3 | dist
4 | deno.lock
5 |
--------------------------------------------------------------------------------
/python-app/requirements.txt:
--------------------------------------------------------------------------------
1 | deta~=1.1.0
2 | fastapi~=0.92.0
3 |
--------------------------------------------------------------------------------
/sveltekit-app/.spaceignore:
--------------------------------------------------------------------------------
1 | .svelte-kit
2 | node_modules
3 |
--------------------------------------------------------------------------------
/nuxt-app/.npmrc:
--------------------------------------------------------------------------------
1 | shamefully-hoist=true
2 | strict-peer-dependencies=false
3 |
--------------------------------------------------------------------------------
/tsnode-app/nodemon.json:
--------------------------------------------------------------------------------
1 | {
2 | "execMap": {
3 | "ts": "ts-node"
4 | }
5 | }
6 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | .vscode/
2 | .idea/
3 | .space/
4 | .venv/
5 | venv/
6 | node_modules/
7 | .env
8 |
--------------------------------------------------------------------------------
/nuxt-app/README.md:
--------------------------------------------------------------------------------
1 | # Nuxt app on Space
2 |
3 | An example Space app built with [Nuxt](https://nuxt.com).
4 |
--------------------------------------------------------------------------------
/next-app/README.md:
--------------------------------------------------------------------------------
1 | # Next.js app on Space
2 |
3 | An example Space app built with [Next.js](https://nextjs.org).
4 |
--------------------------------------------------------------------------------
/nuxt-app/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | // https://nuxt.com/docs/guide/concepts/typescript
3 | "extends": "./.nuxt/tsconfig.json"
4 | }
5 |
--------------------------------------------------------------------------------
/sveltekit-app/README.md:
--------------------------------------------------------------------------------
1 | # SvelteKit app on Space
2 |
3 | An example Space app built with [SvelteKit](https://kit.svelte.dev).
4 |
--------------------------------------------------------------------------------
/go-app/README.md:
--------------------------------------------------------------------------------
1 | # Go app on Space
2 |
3 | An example Space app built with [Go](https://go.dev) and [Echo](https://echo.labstack.com).
4 |
--------------------------------------------------------------------------------
/node-app/README.md:
--------------------------------------------------------------------------------
1 | # Node.js app on Space
2 |
3 | An example Space app built with [Node.js](https://nodejs.org) and [Express](https://expressjs.com).
4 |
--------------------------------------------------------------------------------
/python-app/README.md:
--------------------------------------------------------------------------------
1 | # Python app on Space
2 |
3 | An example Space app built with [Python](https://python.org) and [FastAPI](https://fastapi.tiangolo.com).
4 |
--------------------------------------------------------------------------------
/nuxt-app/.gitignore:
--------------------------------------------------------------------------------
1 | # Deta Space
2 | .space
3 |
4 | # Nuxt
5 | node_modules
6 | *.log*
7 | .nuxt
8 | .nitro
9 | .cache
10 | .output
11 | .env
12 | dist
13 |
--------------------------------------------------------------------------------
/next-app/Spacefile:
--------------------------------------------------------------------------------
1 | # Spacefile Docs: https://go.deta.dev/docs/spacefile/v0
2 | v: 0
3 | micros:
4 | - name: next-app
5 | src: .
6 | engine: next
7 | primary: true
8 |
--------------------------------------------------------------------------------
/nuxt-app/Spacefile:
--------------------------------------------------------------------------------
1 | # Spacefile Docs: https://go.deta.dev/docs/spacefile/v0
2 | v: 0
3 | micros:
4 | - name: nuxt-app
5 | src: .
6 | engine: nuxt
7 | primary: true
8 |
--------------------------------------------------------------------------------
/next-app/next.config.js:
--------------------------------------------------------------------------------
1 | /** @type {import('next').NextConfig} */
2 | const nextConfig = {
3 | output: "standalone",
4 | reactStrictMode: true,
5 | };
6 |
7 | export default nextConfig;
8 |
--------------------------------------------------------------------------------
/python-app/Spacefile:
--------------------------------------------------------------------------------
1 | # Spacefile Docs: https://go.deta.dev/docs/spacefile/v0
2 | v: 0
3 | micros:
4 | - name: python-app
5 | src: .
6 | engine: python3.9
7 | primary: true
8 |
--------------------------------------------------------------------------------
/sveltekit-app/Spacefile:
--------------------------------------------------------------------------------
1 | # Spacefile Docs: https://go.deta.dev/docs/spacefile/v0
2 | v: 0
3 | micros:
4 | - name: sveltekit-app
5 | src: .
6 | engine: svelte-kit
7 | primary: true
8 |
--------------------------------------------------------------------------------
/sveltekit-app/vite.config.ts:
--------------------------------------------------------------------------------
1 | import { sveltekit } from "@sveltejs/kit/vite";
2 | import { defineConfig } from "vite";
3 |
4 | export default defineConfig({
5 | plugins: [sveltekit()],
6 | });
7 |
--------------------------------------------------------------------------------
/node-app/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "private": true,
3 | "main": "index.js",
4 | "dependencies": {
5 | "deta": "^1.1.0",
6 | "express": "^4.18.2"
7 | },
8 | "type": "module"
9 | }
10 |
--------------------------------------------------------------------------------
/deno-app/README.md:
--------------------------------------------------------------------------------
1 | # Deno app on Space
2 |
3 | An example Space app built with [Deno](https://deno.land).
4 |
5 | ## Additional resources
6 |
7 | - [Oden - Deno on Space](https://github.com/abdelhai/oden)
8 |
--------------------------------------------------------------------------------
/node-app/Spacefile:
--------------------------------------------------------------------------------
1 | # Spacefile Docs: https://go.deta.dev/docs/spacefile/v0
2 | v: 0
3 | micros:
4 | - name: node-app
5 | src: .
6 | engine: nodejs16
7 | primary: true
8 | run: node index.js
9 |
--------------------------------------------------------------------------------
/tsnode-app/README.md:
--------------------------------------------------------------------------------
1 | # Node.js with Typescript app on Space
2 |
3 | An example Space app built with [Node.js](https://nodejs.org) and [Express](https://expressjs.com) with [Typescript](https://www.typescriptlang.org/).
4 |
--------------------------------------------------------------------------------
/next-app/pages/_app.tsx:
--------------------------------------------------------------------------------
1 | import "@/styles/globals.css";
2 | import type { AppProps } from "next/app";
3 |
4 | export default function App({ Component, pageProps }: AppProps) {
5 | return ;
6 | }
7 |
--------------------------------------------------------------------------------
/next-app/styles/globals.css:
--------------------------------------------------------------------------------
1 | :root {
2 | display: flex;
3 | flex-direction: column;
4 | align-items: center;
5 | background-color: #121212;
6 | color: #e0e0e0;
7 | font-family: sans-serif;
8 | padding: 2rem;
9 | }
10 |
--------------------------------------------------------------------------------
/sveltekit-app/.gitignore:
--------------------------------------------------------------------------------
1 | # Deta Space
2 | .space
3 |
4 | # SvelteKit
5 | .DS_Store
6 | node_modules
7 | /build
8 | /.svelte-kit
9 | /package
10 | .env
11 | .env.*
12 | !.env.example
13 | vite.config.js.timestamp-*
14 | vite.config.ts.timestamp-*
15 |
--------------------------------------------------------------------------------
/go-app/Discovery.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: "Go App Example"
3 | tagline: "A simple Go app deployed on Space"
4 | git: "https://github.com/deta/starters/tree/main/go-app"
5 | theme_color: "#01acd7"
6 | ---
7 |
8 | ## Features
9 |
10 | - Says "hello!"
11 | - Saves todo items
12 | - Built with Go
13 |
--------------------------------------------------------------------------------
/sveltekit-app/src/routes/+page.ts:
--------------------------------------------------------------------------------
1 | import type { PageLoad } from "./$types";
2 |
3 | export const load = (async ({ fetch }) => {
4 | const response = await fetch("/api/todos");
5 | const todos = await response.json();
6 | return {
7 | todos,
8 | };
9 | }) satisfies PageLoad;
10 |
--------------------------------------------------------------------------------
/deno-app/Discovery.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: "Deno App Example"
3 | tagline: "A simple Deno app deployed on Space"
4 | git: "https://github.com/deta/starters/tree/main/deno-app"
5 | theme_color: "#000000"
6 | ---
7 |
8 | ## Features
9 |
10 | - Says "hello!"
11 | - Saves todo items
12 | - Built with Deno
13 |
--------------------------------------------------------------------------------
/nuxt-app/Discovery.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: "Nuxt App Example"
3 | tagline: "A simple Nuxt app deployed on Space"
4 | git: "https://github.com/deta/starters/tree/main/nuxt-app"
5 | theme_color: "#02db84"
6 | ---
7 |
8 | ## Features
9 |
10 | - Says "hello!"
11 | - Saves todo items
12 | - Built with Nuxt
13 |
--------------------------------------------------------------------------------
/nuxt-app/nuxt.config.ts:
--------------------------------------------------------------------------------
1 | // https://nuxt.com/docs/api/configuration/nuxt-config
2 | export default defineNuxtConfig({
3 | app: {
4 | head: {
5 | title: "Nuxt App on Space",
6 | meta: [{ name: "description", content: "A simple Nuxt app deployed on Space" }],
7 | },
8 | },
9 | });
10 |
--------------------------------------------------------------------------------
/next-app/Discovery.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: "Next.js App Example"
3 | tagline: "A simple Next.js app deployed on Space"
4 | git: "https://github.com/deta/starters/tree/main/next-app"
5 | theme_color: "#000000"
6 | ---
7 |
8 | ## Features
9 |
10 | - Says "hello!"
11 | - Saves todo items
12 | - Built with Next.js
13 |
--------------------------------------------------------------------------------
/node-app/Discovery.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: "Node.js App Example"
3 | tagline: "A simple Node.js app deployed on Space"
4 | git: "https://github.com/deta/starters/tree/main/node-app"
5 | theme_color: "#74ac62"
6 | ---
7 |
8 | ## Features
9 |
10 | - Says "hello!"
11 | - Saves todo items
12 | - Built with Node.js
13 |
--------------------------------------------------------------------------------
/python-app/Discovery.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: "Python App Example"
3 | tagline: "A simple Python app deployed on Space"
4 | git: "https://github.com/deta/starters/tree/main/python-app"
5 | theme_color: "#3776a7"
6 | ---
7 |
8 | ## Features
9 |
10 | - Says "hello!"
11 | - Saves todo items
12 | - Built with Python
13 |
--------------------------------------------------------------------------------
/next-app/pages/_document.tsx:
--------------------------------------------------------------------------------
1 | import { Html, Head, Main, NextScript } from "next/document";
2 |
3 | export default function Document() {
4 | return (
5 |
6 |
8 |
9 |
10 |
11 |
12 | );
13 | }
14 |
--------------------------------------------------------------------------------
/go-app/Spacefile:
--------------------------------------------------------------------------------
1 | # Spacefile Docs: https://go.deta.dev/docs/spacefile/v0
2 | v: 0
3 | micros:
4 | - name: go-app
5 | src: .
6 | engine: custom
7 | primary: true
8 | commands:
9 | - go get
10 | - go build main.go
11 | include:
12 | - main
13 | - static
14 | run: ./main
15 |
--------------------------------------------------------------------------------
/sveltekit-app/Discovery.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: "SvelteKit App Example"
3 | tagline: "A simple SvelteKit app deployed on Space"
4 | git: "https://github.com/deta/starters/tree/main/sveltekit-app"
5 | theme_color: "#ff4003"
6 | ---
7 |
8 | ## Features
9 |
10 | - Says "hello!"
11 | - Saves todo items
12 | - Built with SvelteKit
13 |
--------------------------------------------------------------------------------
/sveltekit-app/src/app.d.ts:
--------------------------------------------------------------------------------
1 | // See https://kit.svelte.dev/docs/types#app
2 | // for information about these interfaces
3 | declare global {
4 | namespace App {
5 | // interface Error {}
6 | // interface Locals {}
7 | // interface PageData {}
8 | // interface Platform {}
9 | }
10 | }
11 |
12 | export {};
13 |
--------------------------------------------------------------------------------
/tsnode-app/Discovery.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: "Node.js App Example"
3 | tagline: "A simple Node.js app deployed on Space"
4 | git: "https://github.com/deta/starters/tree/main/node-app"
5 | theme_color: "#74ac62"
6 | ---
7 |
8 | ## Features
9 |
10 | - Says "hello!"
11 | - Saves todo items
12 | - Built with Node.js and Typescript
13 |
--------------------------------------------------------------------------------
/nuxt-app/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "private": true,
3 | "scripts": {
4 | "build": "nuxt build",
5 | "dev": "nuxt dev",
6 | "generate": "nuxt generate",
7 | "preview": "nuxt preview",
8 | "postinstall": "nuxt prepare"
9 | },
10 | "devDependencies": {
11 | "nuxt": "^3.2.2"
12 | },
13 | "dependencies": {
14 | "deta": "^1.1.0"
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/nuxt-app/server/api/todos.get.ts:
--------------------------------------------------------------------------------
1 | import { Base } from "deta";
2 |
3 | export default defineEventHandler(async (event) => {
4 | // Connect to a Base for storing todo items.
5 | const todos_base = Base("todos");
6 | // Fetch all items from the Base.
7 | const todos = await todos_base.fetch();
8 | // Return the items as JSON.
9 | return todos.items;
10 | });
11 |
--------------------------------------------------------------------------------
/tsnode-app/Spacefile:
--------------------------------------------------------------------------------
1 | # Spacefile Docs: https://go.deta.dev/docs/spacefile/v0
2 | v: 0
3 | micros:
4 | - name: tsnode-app
5 | src: .
6 | engine: nodejs16
7 | primary: true
8 | dev: npm run dev
9 | commands:
10 | - npm run build
11 | include:
12 | - dist
13 | - static
14 | - package.json
15 | run: node ./dist/index.js
16 |
--------------------------------------------------------------------------------
/nuxt-app/server/api/todos.post.ts:
--------------------------------------------------------------------------------
1 | import { Base } from "deta";
2 |
3 | export default defineEventHandler(async (event) => {
4 | // Connect to a Base for storing todo items.
5 | const todos_base = Base("todos");
6 | // Get the item from the request body.
7 | const item = await readBody(event);
8 | // Put the item into the Base.
9 | const resp = await todos_base.put(item);
10 | // Return the response as JSON.
11 | return resp;
12 | });
13 |
--------------------------------------------------------------------------------
/tsnode-app/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | // use your own tsconfig accordingly
3 | "compilerOptions": {
4 | "esModuleInterop": true,
5 | "moduleResolution": "node",
6 | "outDir": "dist",
7 | "module": "ES6",
8 | "strict": true,
9 | "allowSyntheticDefaultImports": true,
10 | "target": "ES6"
11 | },
12 | "include": ["./index.ts"],
13 | "ts-node": {
14 | "esm": true
15 | }
16 | }
--------------------------------------------------------------------------------
/sveltekit-app/svelte.config.js:
--------------------------------------------------------------------------------
1 | import adapter from "@sveltejs/adapter-node";
2 | import { vitePreprocess } from "@sveltejs/kit/vite";
3 |
4 | /** @type {import('@sveltejs/kit').Config} */
5 | const config = {
6 | // Consult https://kit.svelte.dev/docs/integrations#preprocessors
7 | // for more information about preprocessors
8 | preprocess: vitePreprocess(),
9 |
10 | kit: {
11 | adapter: adapter(),
12 | },
13 | };
14 |
15 | export default config;
16 |
--------------------------------------------------------------------------------
/sveltekit-app/src/app.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | SvelteKit App on Space
8 | %sveltekit.head%
9 |
10 |
11 | %sveltekit.body%
12 |
13 |
14 |
--------------------------------------------------------------------------------
/tsnode-app/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "private": true,
3 | "main": "index.js",
4 | "dependencies": {
5 | "deta": "^1.1.0",
6 | "express": "^4.18.2"
7 | },
8 | "scripts": {
9 | "dev": "npx nodemon index.ts",
10 | "build": "tsc"
11 | },
12 | "type": "module",
13 | "devDependencies": {
14 | "@types/express": "^4.17.17",
15 | "@types/node": "^18.15.11",
16 | "nodemon": "^2.0.22",
17 | "ts-node": "^10.9.1",
18 | "typescript": "^5.0.2"
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/next-app/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "private": true,
3 | "scripts": {
4 | "dev": "next dev",
5 | "build": "next build",
6 | "start": "next start"
7 | },
8 | "dependencies": {
9 | "@types/node": "18.14.0",
10 | "@types/react": "18.0.28",
11 | "@types/react-dom": "18.0.11",
12 | "deta": "^1.1.0",
13 | "next": "13.1.6",
14 | "react": "18.2.0",
15 | "react-dom": "18.2.0",
16 | "swr": "^2.0.3",
17 | "typescript": "4.9.5"
18 | },
19 | "type": "module"
20 | }
21 |
--------------------------------------------------------------------------------
/next-app/.gitignore:
--------------------------------------------------------------------------------
1 | # Deta Space
2 | .space
3 |
4 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
5 |
6 | # dependencies
7 | /node_modules
8 | /.pnp
9 | .pnp.js
10 |
11 | # testing
12 | /coverage
13 |
14 | # next.js
15 | /.next/
16 | /out/
17 |
18 | # production
19 | /build
20 |
21 | # misc
22 | .DS_Store
23 | *.pem
24 |
25 | # debug
26 | npm-debug.log*
27 | yarn-debug.log*
28 | yarn-error.log*
29 | .pnpm-debug.log*
30 |
31 | # local env files
32 | .env*.local
33 |
34 | # vercel
35 | .vercel
36 |
37 | # typescript
38 | *.tsbuildinfo
39 | next-env.d.ts
40 |
--------------------------------------------------------------------------------
/go-app/.gitignore:
--------------------------------------------------------------------------------
1 | # Deta Space
2 | .space
3 |
4 | # If you prefer the allow list template instead of the deny list, see community template:
5 | # https://github.com/github/gitignore/blob/main/community/Golang/Go.AllowList.gitignore
6 | #
7 | # Binaries for programs and plugins
8 | *.exe
9 | *.exe~
10 | *.dll
11 | *.so
12 | *.dylib
13 |
14 | # Test binary, built with `go test -c`
15 | *.test
16 |
17 | # Output of the go coverage tool, specifically when used with LiteIDE
18 | *.out
19 |
20 | # Dependency directories (remove the comment below to include it)
21 | # vendor/
22 |
23 | # Go workspace file
24 | go.work
25 |
--------------------------------------------------------------------------------
/go-app/go.mod:
--------------------------------------------------------------------------------
1 | module github.com/deta/starters/go-app
2 |
3 | go 1.20
4 |
5 | require (
6 | github.com/deta/deta-go v1.0.0
7 | github.com/labstack/echo/v4 v4.10.2
8 | )
9 |
10 | require (
11 | github.com/labstack/gommon v0.4.0 // indirect
12 | github.com/mattn/go-colorable v0.1.13 // indirect
13 | github.com/mattn/go-isatty v0.0.17 // indirect
14 | github.com/valyala/bytebufferpool v1.0.0 // indirect
15 | github.com/valyala/fasttemplate v1.2.2 // indirect
16 | golang.org/x/crypto v0.6.0 // indirect
17 | golang.org/x/net v0.7.0 // indirect
18 | golang.org/x/sys v0.5.0 // indirect
19 | golang.org/x/text v0.7.0 // indirect
20 | )
21 |
--------------------------------------------------------------------------------
/sveltekit-app/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "./.svelte-kit/tsconfig.json",
3 | "compilerOptions": {
4 | "allowJs": true,
5 | "checkJs": true,
6 | "esModuleInterop": true,
7 | "forceConsistentCasingInFileNames": true,
8 | "resolveJsonModule": true,
9 | "skipLibCheck": true,
10 | "sourceMap": true,
11 | "strict": true
12 | }
13 | // Path aliases are handled by https://kit.svelte.dev/docs/configuration#alias
14 | //
15 | // If you want to overwrite includes/excludes, make sure to copy over the relevant includes/excludes
16 | // from the referenced tsconfig.json - TypeScript does not merge them in
17 | }
18 |
--------------------------------------------------------------------------------
/next-app/pages/index.tsx:
--------------------------------------------------------------------------------
1 | import Head from "next/head";
2 | import Todos from "../components/todos";
3 |
4 | export default function Index() {
5 | return (
6 | <>
7 |
8 | Next.js App on Space
9 |
10 |
11 |
12 |
13 | Hello from Next.js on Space! ✨
14 |
15 |
16 |
17 | >
18 | );
19 | }
20 |
--------------------------------------------------------------------------------
/deno-app/Spacefile:
--------------------------------------------------------------------------------
1 | # Spacefile Docs: https://go.deta.dev/docs/spacefile/v0
2 | v: 0
3 | micros:
4 | - name: deno-app
5 | src: .
6 | engine: custom
7 | primary: true
8 | commands:
9 | - apt install -y unzip
10 | - curl -fsSL https://deno.land/x/install/install.sh | sh
11 | - $HOME/.deno/bin/deno compile --output main --allow-all main.ts
12 | - chmod +x main
13 | include:
14 | - main
15 | - static
16 | run: ./main
17 | dev: deno run -A main.ts
18 | presets:
19 | env:
20 | - name: DENO_DIR
21 | description: Deno configuration directory (do not change /tmp)
22 | default: /tmp/deno_dir
23 |
--------------------------------------------------------------------------------
/next-app/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "target": "es5",
4 | "lib": ["dom", "dom.iterable", "esnext"],
5 | "allowJs": true,
6 | "skipLibCheck": true,
7 | "strict": true,
8 | "forceConsistentCasingInFileNames": true,
9 | "noEmit": true,
10 | "esModuleInterop": true,
11 | "module": "esnext",
12 | "moduleResolution": "node",
13 | "resolveJsonModule": true,
14 | "isolatedModules": true,
15 | "jsx": "preserve",
16 | "incremental": true,
17 | "baseUrl": ".",
18 | "paths": {
19 | "@/*": ["./*"]
20 | }
21 | },
22 | "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx"],
23 | "exclude": ["node_modules"]
24 | }
25 |
--------------------------------------------------------------------------------
/sveltekit-app/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "private": true,
3 | "scripts": {
4 | "dev": "vite dev",
5 | "build": "vite build",
6 | "preview": "vite preview",
7 | "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json",
8 | "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch"
9 | },
10 | "devDependencies": {
11 | "@sveltejs/adapter-node": "^1.2.0",
12 | "@sveltejs/kit": "^1.5.0",
13 | "svelte": "^3.54.0",
14 | "svelte-check": "^3.0.1",
15 | "tslib": "^2.4.1",
16 | "typescript": "^4.9.3",
17 | "vite": "^4.0.0"
18 | },
19 | "dependencies": {
20 | "deta": "^1.1.0"
21 | },
22 | "type": "module"
23 | }
24 |
--------------------------------------------------------------------------------
/sveltekit-app/src/routes/api/todos/+server.ts:
--------------------------------------------------------------------------------
1 | import { json } from "@sveltejs/kit";
2 | import type { RequestHandler } from "./$types";
3 | import { Base } from "deta";
4 |
5 | export const GET = (async () => {
6 | // Connect to a Base for storing todo items.
7 | const todos_base = Base("todos");
8 | // Fetch all items from the Base.
9 | const todos = await todos_base.fetch();
10 | // Return the items as JSON.
11 | return json(todos.items);
12 | }) satisfies RequestHandler;
13 |
14 | export const POST = (async ({ request }) => {
15 | // Connect to a Base for storing todo items.
16 | const todos_base = Base("todos");
17 | // Get the item from the request body.
18 | const item = await request.json();
19 | // Put the item into the Base.
20 | const resp = await todos_base.put(item);
21 | // Return the response as JSON.
22 | return json(resp);
23 | }) satisfies RequestHandler;
24 |
--------------------------------------------------------------------------------
/python-app/main.py:
--------------------------------------------------------------------------------
1 | from deta import Base
2 | from fastapi import FastAPI
3 | from fastapi.responses import HTMLResponse
4 | from pydantic import BaseModel # pylint: disable=no-name-in-module
5 |
6 | app = FastAPI()
7 | # Connect to a Base for storing todo items.
8 | todos_base = Base("todos")
9 |
10 |
11 | class TodoItem(BaseModel):
12 | text: str
13 |
14 |
15 | @app.get("/")
16 | async def index():
17 | with open("./static/index.html") as file:
18 | return HTMLResponse(file.read())
19 |
20 |
21 | @app.get("/api/todos")
22 | async def get_todos():
23 | # Fetch all items from the Base.
24 | todos = todos_base.fetch()
25 | # Return the items as JSON.
26 | return todos.items
27 |
28 |
29 | @app.post("/api/todos", status_code=201)
30 | async def add_todo(item: TodoItem):
31 | # Put the item into the Base.
32 | resp = todos_base.put(item.dict())
33 | # Return the response as JSON.
34 | return resp
35 |
--------------------------------------------------------------------------------
/next-app/pages/api/todos.ts:
--------------------------------------------------------------------------------
1 | // Next.js API route support: https://nextjs.org/docs/api-routes/introduction
2 | import type { NextApiRequest, NextApiResponse } from "next";
3 | import { Base } from "deta";
4 |
5 | export type TodoItem = {
6 | text: string;
7 | key: string;
8 | };
9 |
10 | export default async function handler(request: NextApiRequest, response: NextApiResponse) {
11 | // Connect to a Base for storing todo items.
12 | const todos_base = Base("todos");
13 | if (request.method === "GET") {
14 | // Fetch all items from the Base.
15 | const todos = await todos_base.fetch();
16 | // Return the items as JSON.
17 | response.status(200).json(todos.items);
18 | } else if (request.method === "POST") {
19 | // Get the item from the request body.
20 | const item = await request.body;
21 | // Put the item into the Base.
22 | const resp = await todos_base.put(item);
23 | // Return the response as JSON.
24 | response.status(201).json(resp);
25 | } else {
26 | response.status(405).end();
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/node-app/index.js:
--------------------------------------------------------------------------------
1 | import fs from "fs";
2 | import express from "express";
3 | import { Base } from "deta";
4 |
5 | const app = express();
6 | const port = parseInt(process.env.PORT) || 8080;
7 |
8 | // Connect to a Base for storing todo items.
9 | const todos_base = Base("todos");
10 |
11 | app.use(express.json());
12 |
13 | app.get("/", async (request, response) => {
14 | response.send(fs.readFileSync("./static/index.html", "utf8"));
15 | });
16 |
17 | app.get("/api/todos", async (request, response) => {
18 | // Fetch all items from the Base.
19 | const todos = await todos_base.fetch();
20 | // Return the items as JSON.
21 | response.send(todos.items);
22 | });
23 |
24 | app.post("/api/todos", async (request, response) => {
25 | // Get the item from the request body.
26 | const item = request.body;
27 | // Put the item into the Base.
28 | const resp = await todos_base.put(item);
29 | // Return the response as JSON.
30 | response.send(resp);
31 | });
32 |
33 | app.listen(port, () => {
34 | console.log(`Server running on http://localhost:${port}`);
35 | });
36 |
--------------------------------------------------------------------------------
/tsnode-app/index.ts:
--------------------------------------------------------------------------------
1 | import fs from "fs";
2 | import express from "express";
3 | import { Base } from "deta";
4 |
5 | const app = express();
6 | const port = process.env.PORT ? parseInt(process.env.PORT) : 8080;
7 |
8 | // Connect to a Base for storing todo items.
9 | const todos_base = Base("todos");
10 |
11 | app.use(express.json());
12 |
13 | app.get("/", async (request, response) => {
14 | response.send(fs.readFileSync("./static/index.html", "utf8"));
15 | });
16 |
17 | app.get("/api/todos", async (request, response) => {
18 | // Fetch all items from the Base.
19 | const todos = await todos_base.fetch();
20 | // Return the items as JSON.
21 | response.send(todos.items);
22 | });
23 |
24 | app.post("/api/todos", async (request, response) => {
25 | // Get the item from the request body.
26 | const item = request.body;
27 | // Put the item into the Base.
28 | const resp = await todos_base.put(item);
29 | // Return the response as JSON.
30 | response.send(resp);
31 | });
32 |
33 | app.listen(port, () => {
34 | console.log(`Server running on http://localhost:${port}`);
35 | });
36 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2023 Deta
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/nuxt-app/pages/index.vue:
--------------------------------------------------------------------------------
1 |
16 |
17 |
18 | Hello from Nuxt on Space! ✨
19 |
20 | Play around with the form below to save todo items to a Deta Base!
21 | Enter some text:
22 |
23 |
24 | Here are your todo items:
25 |
26 | -
27 | {{ todo.text }}
28 |
29 |
30 |
31 |
32 |
43 |
--------------------------------------------------------------------------------
/sveltekit-app/src/routes/+page.svelte:
--------------------------------------------------------------------------------
1 |
19 |
20 | Hello from SvelteKit on Space! ✨
21 |
22 | Play around with the form below to save todo items to a Deta Base!
23 | Enter some text:
24 |
25 |
26 | Here are your todo items:
27 |
28 | {#each data.todos as todo}
29 | -
30 | {todo.text}
31 |
32 | {/each}
33 |
34 |
35 |
46 |
--------------------------------------------------------------------------------
/next-app/components/todos.tsx:
--------------------------------------------------------------------------------
1 | import { useState } from "react";
2 | import useSWR from "swr";
3 | import { TodoItem } from "../pages/api/todos";
4 |
5 | export default function Todos() {
6 | const { data, error, mutate } = useSWR("/api/todos", (key) => fetch(key).then((res) => res.json()));
7 | const [todoText, setTodoText] = useState("");
8 |
9 | if (error) {
10 | return Failed to load todos
;
11 | }
12 | if (!data) {
13 | return Loading...
;
14 | }
15 |
16 | return (
17 | <>
18 | Play around with the form below to save todo items to a Deta Base!
19 | Enter some text:
20 | setTodoText(e.target.value)} />
21 |
35 | Here are your todo items:
36 |
37 | {data.map((todo) => (
38 | - {todo.text}
39 | ))}
40 |
41 | >
42 | );
43 | }
44 |
--------------------------------------------------------------------------------
/go-app/static/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | Go App on Space
8 |
19 |
20 |
21 | Hello from Go on Space! ✨
22 |
23 | Play around with the form below to save todo items to a Deta Base!
24 | Enter some text:
25 |
26 |
27 | Here are your todo items:
28 |
29 |
49 |
50 |
51 |
--------------------------------------------------------------------------------
/deno-app/static/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | Deno App on Space
8 |
19 |
20 |
21 | Hello from Deno on Space! ✨
22 |
23 | Play around with the form below to save todo items to a Deta Base!
24 | Enter some text:
25 |
26 |
27 | Here are your todo items:
28 |
29 |
49 |
50 |
51 |
--------------------------------------------------------------------------------
/python-app/static/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | Python App on Space
8 |
19 |
20 |
21 | Hello from Python on Space! ✨
22 |
23 | Play around with the form below to save todo items to a Deta Base!
24 | Enter some text:
25 |
26 |
27 | Here are your todo items:
28 |
29 |
49 |
50 |
51 |
--------------------------------------------------------------------------------
/node-app/static/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | Node.js App on Space
8 |
19 |
20 |
21 | Hello from Node.js on Space! ✨
22 |
23 | Play around with the form below to save todo items to a Deta Base!
24 | Enter some text:
25 |
26 |
27 | Here are your todo items:
28 |
29 |
49 |
50 |
51 |
--------------------------------------------------------------------------------
/tsnode-app/static/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | Node.js App with Typescript on Space
8 |
19 |
20 |
21 | Hello from Node.js with Typescript on Space! ✨
22 |
23 | Play around with the form below to save todo items to a Deta Base!
24 | Enter some text:
25 |
26 |
27 | Here are your todo items:
28 |
29 |
49 |
50 |
51 |
--------------------------------------------------------------------------------
/deno-app/main.ts:
--------------------------------------------------------------------------------
1 | import { Deta } from "npm:deta";
2 |
3 | const deta = Deta();
4 |
5 | const handler = async (request: Request): Promise => {
6 | const url = new URL(request.url);
7 | switch (url.pathname) {
8 | case "/": {
9 | // Serve a static HTML file
10 | const body = new TextDecoder().decode(
11 | Deno.readFileSync("./static/index.html")
12 | );
13 | return new Response(body, {
14 | status: 200,
15 | headers: { "Content-Type": "text/html" },
16 | });
17 | }
18 |
19 | case "/api/todos": {
20 | // Connect to a Base for storing todo items.
21 | const todos_base = deta.Base("todos");
22 | if (request.method === "GET") {
23 | // Fetch all items from the Base.
24 | const todos = await todos_base.fetch();
25 | // Return the items as JSON.
26 | return Response.json(todos.items, {
27 | status: 200,
28 | headers: { "Content-Type": "application/json" },
29 | });
30 | } else if (request.method === "POST") {
31 | // Get the item from the request body.
32 | const item = await request.json();
33 | // Put the item into the Base.
34 | const resp = await todos_base.put(item);
35 | // Return the response as JSON.
36 | return Response.json(resp, {
37 | status: 201,
38 | headers: { "Content-Type": "application/json" },
39 | });
40 | } else {
41 | // If the request method is not GET or POST, return a 405 error
42 | return new Response("Method Not Allowed", { status: 405 });
43 | }
44 | }
45 |
46 | default:
47 | return new Response("Not Found", { status: 404 });
48 | }
49 | };
50 |
51 | Deno.serve(
52 | {
53 | port: parseInt(Deno.env.get("PORT") || "8080"),
54 | },
55 | handler
56 | );
57 |
--------------------------------------------------------------------------------
/CONTRIBUTING.md:
--------------------------------------------------------------------------------
1 | # How to contribute
2 |
3 | ## Reporting bugs
4 |
5 | If you find a bug, follow the steps below to report it.
6 |
7 | 1. Ensure the bug was not already reported by searching the [issue tracker](https://github.com/deta/starters/issues).
8 | 2. Report the bug by [opening a new issue](https://github.com/deta/starters/issues/new). Include a minimal reproducible example to help us reproduce the bug.
9 |
10 | ## Submitting fixes or improvements
11 |
12 | If you have a fix, addition, or other improvement, follow the steps below to submit it.
13 |
14 | 1. Fork the repository and create a new branch for your fix.
15 | 2. Commit your changes and push them to your fork.
16 | 3. Make sure the code style is consistent with already existing code.
17 | 4. Submit a pull request explaining the problem, what changed, and how it fixes the problem.
18 |
19 | ## Adding an app
20 |
21 | If you want to add an example app for a new language, framework, or runtime, follow the steps below to submit it.
22 |
23 | 1. Fork the repository and create a new branch for your app.
24 | 2. Create a minimal app that demonstrates setting up the language, framework, or runtime. The app should include the following.
25 | - A Spacefile
26 | - A README.md file that describes the app and what it's build with, along with any other information relating to using your chosen language, framework, or runtime
27 | - A short Discovery.md file that does approximately the same thing as the README.md file
28 | - A .gitignore file relevant to your chosen language, framework, or runtime
29 | - The app should utilize Deta Base and preferably Deta Drive as well
30 | - Any other files that are necessary to set up and run the app
31 | 3. Add the app to the [app list](README.md#app-list) in the README.md file.
32 | 4. Open a pull request explaining what the app uses.
33 |
34 | ## Thanks
35 |
36 | Thanks for reading this guide and contributing to our community! People like you make open-source awesome. ❤️
37 |
--------------------------------------------------------------------------------
/go-app/main.go:
--------------------------------------------------------------------------------
1 | package main
2 |
3 | import (
4 | "fmt"
5 | "log"
6 | "net/http"
7 | "os"
8 |
9 | "github.com/deta/deta-go/deta"
10 | "github.com/deta/deta-go/service/base"
11 | "github.com/labstack/echo/v4"
12 | )
13 |
14 | type TodoItem struct {
15 | Text string `json:"text" xml:"text" form:"text" query:"text"`
16 | }
17 |
18 | func main() {
19 | var port string
20 | if os.Getenv("PORT") != "" {
21 | port = os.Getenv("PORT")
22 | } else {
23 | port = "8080"
24 | }
25 |
26 | // Connect to a Base for storing todo items.
27 | d, _ := deta.New()
28 | todos_base, _ := base.New(d, "todos")
29 |
30 | e := echo.New()
31 |
32 | e.GET("/", func(ctx echo.Context) error {
33 | html, err := os.ReadFile("./static/index.html")
34 | if err != nil {
35 | return ctx.String(http.StatusInternalServerError, "Internal Server Error")
36 | }
37 | return ctx.HTML(http.StatusOK, string(html))
38 | })
39 |
40 | e.GET("/api/todos", func(ctx echo.Context) error {
41 | // Fetch all items from the Base.
42 | var todos []map[string]interface{}
43 | _, err := todos_base.Fetch(&base.FetchInput{Dest: &todos})
44 | if err != nil {
45 | fmt.Fprintf(os.Stderr, "error: %v\n", err)
46 | return ctx.String(http.StatusInternalServerError, "Internal Server Error")
47 | }
48 | // Return the items as JSON.
49 | return ctx.JSON(http.StatusOK, todos)
50 | })
51 |
52 | e.POST("/api/todos", func(ctx echo.Context) error {
53 | // Get the item from the request body.
54 | item := new(TodoItem)
55 | if err := ctx.Bind(item); err != nil {
56 | fmt.Fprintf(os.Stderr, "error: %v\n", err)
57 | return ctx.String(http.StatusInternalServerError, "Internal Server Error")
58 | }
59 | // Put the item into the Base.
60 | key, err := todos_base.Put(item)
61 | if err != nil {
62 | fmt.Fprintf(os.Stderr, "error: %v\n", err)
63 | return ctx.String(http.StatusInternalServerError, "Internal Server Error")
64 | }
65 | resp := map[string]string{
66 | "text": item.Text,
67 | "key": key,
68 | }
69 | // Return the response as JSON.
70 | return ctx.JSON(http.StatusCreated, resp)
71 | })
72 |
73 | fmt.Println("Server running on http://localhost:" + port)
74 | log.Fatal(e.Start(":" + port))
75 | }
76 |
--------------------------------------------------------------------------------
/node-app/.gitignore:
--------------------------------------------------------------------------------
1 | # Deta Space
2 | .space
3 |
4 | # Logs
5 | logs
6 | *.log
7 | npm-debug.log*
8 | yarn-debug.log*
9 | yarn-error.log*
10 | lerna-debug.log*
11 | .pnpm-debug.log*
12 |
13 | # Diagnostic reports (https://nodejs.org/api/report.html)
14 | report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
15 |
16 | # Runtime data
17 | pids
18 | *.pid
19 | *.seed
20 | *.pid.lock
21 |
22 | # Directory for instrumented libs generated by jscoverage/JSCover
23 | lib-cov
24 |
25 | # Coverage directory used by tools like istanbul
26 | coverage
27 | *.lcov
28 |
29 | # nyc test coverage
30 | .nyc_output
31 |
32 | # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
33 | .grunt
34 |
35 | # Bower dependency directory (https://bower.io/)
36 | bower_components
37 |
38 | # node-waf configuration
39 | .lock-wscript
40 |
41 | # Compiled binary addons (https://nodejs.org/api/addons.html)
42 | build/Release
43 |
44 | # Dependency directories
45 | node_modules/
46 | jspm_packages/
47 |
48 | # Snowpack dependency directory (https://snowpack.dev/)
49 | web_modules/
50 |
51 | # TypeScript cache
52 | *.tsbuildinfo
53 |
54 | # Optional npm cache directory
55 | .npm
56 |
57 | # Optional eslint cache
58 | .eslintcache
59 |
60 | # Optional stylelint cache
61 | .stylelintcache
62 |
63 | # Microbundle cache
64 | .rpt2_cache/
65 | .rts2_cache_cjs/
66 | .rts2_cache_es/
67 | .rts2_cache_umd/
68 |
69 | # Optional REPL history
70 | .node_repl_history
71 |
72 | # Output of 'npm pack'
73 | *.tgz
74 |
75 | # Yarn Integrity file
76 | .yarn-integrity
77 |
78 | # dotenv environment variable files
79 | .env
80 | .env.development.local
81 | .env.test.local
82 | .env.production.local
83 | .env.local
84 |
85 | # parcel-bundler cache (https://parceljs.org/)
86 | .cache
87 | .parcel-cache
88 |
89 | # Next.js build output
90 | .next
91 | out
92 |
93 | # Nuxt.js build / generate output
94 | .nuxt
95 | dist
96 |
97 | # Gatsby files
98 | .cache/
99 | # Comment in the public line in if your project uses Gatsby and not Next.js
100 | # https://nextjs.org/blog/next-9-1#public-directory-support
101 | # public
102 |
103 | # vuepress build output
104 | .vuepress/dist
105 |
106 | # vuepress v2.x temp and cache directory
107 | .temp
108 | .cache
109 |
110 | # Docusaurus cache and generated files
111 | .docusaurus
112 |
113 | # Serverless directories
114 | .serverless/
115 |
116 | # FuseBox cache
117 | .fusebox/
118 |
119 | # DynamoDB Local files
120 | .dynamodb/
121 |
122 | # TernJS port file
123 | .tern-port
124 |
125 | # Stores VSCode versions used for testing VSCode extensions
126 | .vscode-test
127 |
128 | # yarn v2
129 | .yarn/cache
130 | .yarn/unplugged
131 | .yarn/build-state.yml
132 | .yarn/install-state.gz
133 | .pnp.*
134 |
--------------------------------------------------------------------------------
/tsnode-app/.gitignore:
--------------------------------------------------------------------------------
1 | # Deta Space
2 | .space
3 |
4 | # Logs
5 | logs
6 | *.log
7 | npm-debug.log*
8 | yarn-debug.log*
9 | yarn-error.log*
10 | lerna-debug.log*
11 | .pnpm-debug.log*
12 |
13 | # Diagnostic reports (https://nodejs.org/api/report.html)
14 | report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
15 |
16 | # Runtime data
17 | pids
18 | *.pid
19 | *.seed
20 | *.pid.lock
21 |
22 | # Directory for instrumented libs generated by jscoverage/JSCover
23 | lib-cov
24 |
25 | # Coverage directory used by tools like istanbul
26 | coverage
27 | *.lcov
28 |
29 | # nyc test coverage
30 | .nyc_output
31 |
32 | # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
33 | .grunt
34 |
35 | # Bower dependency directory (https://bower.io/)
36 | bower_components
37 |
38 | # node-waf configuration
39 | .lock-wscript
40 |
41 | # Compiled binary addons (https://nodejs.org/api/addons.html)
42 | build/Release
43 |
44 | # Dependency directories
45 | node_modules/
46 | jspm_packages/
47 |
48 | # Snowpack dependency directory (https://snowpack.dev/)
49 | web_modules/
50 |
51 | # TypeScript cache
52 | *.tsbuildinfo
53 |
54 | # Optional npm cache directory
55 | .npm
56 |
57 | # Optional eslint cache
58 | .eslintcache
59 |
60 | # Optional stylelint cache
61 | .stylelintcache
62 |
63 | # Microbundle cache
64 | .rpt2_cache/
65 | .rts2_cache_cjs/
66 | .rts2_cache_es/
67 | .rts2_cache_umd/
68 |
69 | # Optional REPL history
70 | .node_repl_history
71 |
72 | # Output of 'npm pack'
73 | *.tgz
74 |
75 | # Yarn Integrity file
76 | .yarn-integrity
77 |
78 | # dotenv environment variable files
79 | .env
80 | .env.development.local
81 | .env.test.local
82 | .env.production.local
83 | .env.local
84 |
85 | # parcel-bundler cache (https://parceljs.org/)
86 | .cache
87 | .parcel-cache
88 |
89 | # Next.js build output
90 | .next
91 | out
92 |
93 | # Nuxt.js build / generate output
94 | .nuxt
95 | dist
96 |
97 | # Gatsby files
98 | .cache/
99 | # Comment in the public line in if your project uses Gatsby and not Next.js
100 | # https://nextjs.org/blog/next-9-1#public-directory-support
101 | # public
102 |
103 | # vuepress build output
104 | .vuepress/dist
105 |
106 | # vuepress v2.x temp and cache directory
107 | .temp
108 | .cache
109 |
110 | # Docusaurus cache and generated files
111 | .docusaurus
112 |
113 | # Serverless directories
114 | .serverless/
115 |
116 | # FuseBox cache
117 | .fusebox/
118 |
119 | # DynamoDB Local files
120 | .dynamodb/
121 |
122 | # TernJS port file
123 | .tern-port
124 |
125 | # Stores VSCode versions used for testing VSCode extensions
126 | .vscode-test
127 |
128 | # yarn v2
129 | .yarn/cache
130 | .yarn/unplugged
131 | .yarn/build-state.yml
132 | .yarn/install-state.gz
133 | .pnp.*
134 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Starter Space Apps
2 |
3 | This repository contains a collection of example Space apps to help you get started with Space.
4 |
5 | ## Quick Start
6 |
7 | 1. If you don't already have a Space account, create one for free [here](https://deta.space/signup).
8 | 2. Install the Space CLI and link your Space account to the CLI. Instructions to do that can be found [here](https://deta.space/docs/en/basics/cli).
9 | 3. Clone this repository and navigate to an example app directory.
10 |
11 | ```sh
12 | git clone https://github.com/deta/starters
13 | cd starters/python-app
14 | ```
15 |
16 | 4. Create a new builder project on Space.
17 |
18 | ```sh
19 | space new
20 | ```
21 |
22 | 5. Push your project to Space and create a development instance.
23 |
24 | ```sh
25 | space push
26 | ```
27 |
28 | 6. A development instance of your app is now live on Space! Find it in the [Builder][builder] and use it to test your app.
29 |
30 | > **Important**: running `space new` will create a `.space` directory inside your project. This directory contains sensitive information about your app and is used by the Space CLI to push your app to Space. Do not change the name of the directory, include it in any version control software, or add it to repositories.
31 |
32 | ## Project Structure
33 |
34 | Every Space project must have a [Spacefile][spacefile-ref]. This is the configuration file used by Space to build and deploy your app. Upon initializing your project, the Space CLI will automatically scan your project and generate a Spacefile.
35 |
36 | Besides the Spacefile, your project needs to contain some code or assets to be deployed, depending on the type of app you are building.
37 |
38 | Your project can also include a [Discovery.md][discovery-ref] file which will be used to generate a [Discovery][discovery] page if you choose to release and list your app.
39 |
40 | ## Deploying your Space App
41 |
42 | Run the `space push` command to upload your code to Space, and the build pipeline will start packaging your app. Once packaging is complete, you will see your app's development instance in the [Builder][builder]. You can use this instance to debug and test to make sure your app is ready for use.
43 |
44 | ## Releasing your Space App
45 |
46 | When you are ready to release your app , run the `space release` command. This will create a new release of your app and make it available for other users to install. If you want to make the app visible on [Discovery][discovery], add the `--listed` flag to the command. Your app will get its own page that will display the contents of the [Discovery.md][discovery-ref] file.
47 |
48 | ## App List
49 |
50 | - [Python](python-app)
51 | - [Node.js](node-app)
52 | - [Next.js](next-app)
53 | - [Nuxt](nuxt-app)
54 | - [SvelteKit](sveltekit-app)
55 | - [Go](go-app)
56 | - [Deno](deno-app)
57 |
58 | ## Contributing
59 |
60 | If you want to report a bug, submit a fix, add an app, or otherwise contribute, please read the [contributing guidelines](CONTRIBUTING.md).
61 |
62 | [builder]: https://deta.space/builder "Space Builder"
63 | [discovery]: https://deta.space/discovery "Space Discovery"
64 | [spacefile-ref]: https://deta.space/docs/en/reference/spacefile "Spacefile Reference"
65 | [discovery-ref]: https://deta.space/docs/en/reference/discovery "Discovery.md Reference"
66 |
--------------------------------------------------------------------------------
/go-app/go.sum:
--------------------------------------------------------------------------------
1 | github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
2 | github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
3 | github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
4 | github.com/deta/deta-go v1.0.0 h1:vg94dg2t7ChYhs8DEn4oXLzLAGGafgCSClHfMYrVFvY=
5 | github.com/deta/deta-go v1.0.0/go.mod h1:vbQaUT8iD6xREm816eNp7Nw1aewd95dpcb/uj0T2vuY=
6 | github.com/labstack/echo/v4 v4.10.2 h1:n1jAhnq/elIFTHr1EYpiYtyKgx4RW9ccVgkqByZaN2M=
7 | github.com/labstack/echo/v4 v4.10.2/go.mod h1:OEyqf2//K1DFdE57vw2DRgWY0M7s65IVQO2FzvI4J5k=
8 | github.com/labstack/gommon v0.4.0 h1:y7cvthEAEbU0yHOf4axH8ZG2NH8knB9iNSoTO8dyIk8=
9 | github.com/labstack/gommon v0.4.0/go.mod h1:uW6kP17uPlLJsD3ijUYn3/M5bAxtlZhMI6m3MFxTMTM=
10 | github.com/mattn/go-colorable v0.1.11/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4=
11 | github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA=
12 | github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg=
13 | github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94=
14 | github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM=
15 | github.com/mattn/go-isatty v0.0.17 h1:BTarxUcIeDqL27Mc+vyvdWYSL28zpIhv3RoTdsLMPng=
16 | github.com/mattn/go-isatty v0.0.17/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM=
17 | github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
18 | github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
19 | github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
20 | github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
21 | github.com/stretchr/testify v1.8.1 h1:w7B6lhMri9wdJUVmEZPGGhZzrYTPvgJArz7wNPgYKsk=
22 | github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw=
23 | github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc=
24 | github.com/valyala/fasttemplate v1.2.1/go.mod h1:KHLXt3tVN2HBp8eijSv/kGJopbvo7S+qRAEEKiv+SiQ=
25 | github.com/valyala/fasttemplate v1.2.2 h1:lxLXG0uE3Qnshl9QyaK6XJxMXlQZELvChBOCmQD0Loo=
26 | github.com/valyala/fasttemplate v1.2.2/go.mod h1:KHLXt3tVN2HBp8eijSv/kGJopbvo7S+qRAEEKiv+SiQ=
27 | golang.org/x/crypto v0.6.0 h1:qfktjS5LUO+fFKeJXZ+ikTRijMmljikvG68fpMMruSc=
28 | golang.org/x/crypto v0.6.0/go.mod h1:OFC/31mSvZgRz0V1QTNCzfAI1aIRzbiufJtkMIlEp58=
29 | golang.org/x/net v0.7.0 h1:rJrUqqhjsgNp7KqAIc25s9pZnjU7TUcSY7HcVZjdn1g=
30 | golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
31 | golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
32 | golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
33 | golang.org/x/sys v0.0.0-20211103235746-7861aae1554b/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
34 | golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
35 | golang.org/x/sys v0.5.0 h1:MUK/U/4lj1t1oPg0HfuXDN/Z1wv31ZJ/YcPiGccS4DU=
36 | golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
37 | golang.org/x/text v0.7.0 h1:4BRB4x83lYWy72KwLD/qYDuTu7q9PjSagHvijDw7cLo=
38 | golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
39 | gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
40 | gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
41 | gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
42 | gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
43 |
--------------------------------------------------------------------------------
/python-app/.gitignore:
--------------------------------------------------------------------------------
1 | # Custom ignores
2 | .space
3 |
4 | # Byte-compiled / optimized / DLL files
5 | __pycache__/
6 | *.py[cod]
7 | *$py.class
8 |
9 | # C extensions
10 | *.so
11 |
12 | # Distribution / packaging
13 | .Python
14 | build/
15 | develop-eggs/
16 | dist/
17 | downloads/
18 | eggs/
19 | .eggs/
20 | lib/
21 | lib64/
22 | parts/
23 | sdist/
24 | var/
25 | wheels/
26 | share/python-wheels/
27 | *.egg-info/
28 | .installed.cfg
29 | *.egg
30 | MANIFEST
31 |
32 | # PyInstaller
33 | # Usually these files are written by a python script from a template
34 | # before PyInstaller builds the exe, so as to inject date/other infos into it.
35 | *.manifest
36 | *.spec
37 |
38 | # Installer logs
39 | pip-log.txt
40 | pip-delete-this-directory.txt
41 |
42 | # Unit test / coverage reports
43 | htmlcov/
44 | .tox/
45 | .nox/
46 | .coverage
47 | .coverage.*
48 | .cache
49 | nosetests.xml
50 | coverage.xml
51 | *.cover
52 | *.py,cover
53 | .hypothesis/
54 | .pytest_cache/
55 | cover/
56 |
57 | # Translations
58 | *.mo
59 | *.pot
60 |
61 | # Django stuff:
62 | *.log
63 | local_settings.py
64 | db.sqlite3
65 | db.sqlite3-journal
66 |
67 | # Flask stuff:
68 | instance/
69 | .webassets-cache
70 |
71 | # Scrapy stuff:
72 | .scrapy
73 |
74 | # Sphinx documentation
75 | docs/_build/
76 |
77 | # PyBuilder
78 | .pybuilder/
79 | target/
80 |
81 | # Jupyter Notebook
82 | .ipynb_checkpoints
83 |
84 | # IPython
85 | profile_default/
86 | ipython_config.py
87 |
88 | # pyenv
89 | # For a library or package, you might want to ignore these files since the code is
90 | # intended to run in multiple environments; otherwise, check them in:
91 | # .python-version
92 |
93 | # pipenv
94 | # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
95 | # However, in case of collaboration, if having platform-specific dependencies or dependencies
96 | # having no cross-platform support, pipenv may install dependencies that don't work, or not
97 | # install all needed dependencies.
98 | #Pipfile.lock
99 |
100 | # poetry
101 | # Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
102 | # This is especially recommended for binary packages to ensure reproducibility, and is more
103 | # commonly ignored for libraries.
104 | # https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
105 | #poetry.lock
106 |
107 | # pdm
108 | # Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
109 | #pdm.lock
110 | # pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it
111 | # in version control.
112 | # https://pdm.fming.dev/#use-with-ide
113 | .pdm.toml
114 |
115 | # PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
116 | __pypackages__/
117 |
118 | # Celery stuff
119 | celerybeat-schedule
120 | celerybeat.pid
121 |
122 | # SageMath parsed files
123 | *.sage.py
124 |
125 | # Environments
126 | .env
127 | .venv
128 | env/
129 | venv/
130 | ENV/
131 | env.bak/
132 | venv.bak/
133 |
134 | # Spyder project settings
135 | .spyderproject
136 | .spyproject
137 |
138 | # Rope project settings
139 | .ropeproject
140 |
141 | # mkdocs documentation
142 | /site
143 |
144 | # mypy
145 | .mypy_cache/
146 | .dmypy.json
147 | dmypy.json
148 |
149 | # Pyre type checker
150 | .pyre/
151 |
152 | # pytype static type analyzer
153 | .pytype/
154 |
155 | # Cython debug symbols
156 | cython_debug/
157 |
158 | # PyCharm
159 | # JetBrains specific template is maintained in a separate JetBrains.gitignore that can
160 | # be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
161 | # and can be added to the global gitignore or merged into this file. For a more nuclear
162 | # option (not recommended) you can uncomment the following to ignore the entire idea folder.
163 | #.idea/
164 |
--------------------------------------------------------------------------------
/next-app/package-lock.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "next-app",
3 | "lockfileVersion": 3,
4 | "requires": true,
5 | "packages": {
6 | "": {
7 | "dependencies": {
8 | "@types/node": "18.14.0",
9 | "@types/react": "18.0.28",
10 | "@types/react-dom": "18.0.11",
11 | "deta": "^1.1.0",
12 | "next": "13.1.6",
13 | "react": "18.2.0",
14 | "react-dom": "18.2.0",
15 | "swr": "^2.0.3",
16 | "typescript": "4.9.5"
17 | }
18 | },
19 | "node_modules/@next/env": {
20 | "version": "13.1.6",
21 | "resolved": "https://registry.npmjs.org/@next/env/-/env-13.1.6.tgz",
22 | "integrity": "sha512-s+W9Fdqh5MFk6ECrbnVmmAOwxKQuhGMT7xXHrkYIBMBcTiOqNWhv5KbJIboKR5STXxNXl32hllnvKaffzFaWQg=="
23 | },
24 | "node_modules/@next/swc-android-arm-eabi": {
25 | "version": "13.1.6",
26 | "resolved": "https://registry.npmjs.org/@next/swc-android-arm-eabi/-/swc-android-arm-eabi-13.1.6.tgz",
27 | "integrity": "sha512-F3/6Z8LH/pGlPzR1AcjPFxx35mPqjE5xZcf+IL+KgbW9tMkp7CYi1y7qKrEWU7W4AumxX/8OINnDQWLiwLasLQ==",
28 | "cpu": [
29 | "arm"
30 | ],
31 | "optional": true,
32 | "os": [
33 | "android"
34 | ],
35 | "engines": {
36 | "node": ">= 10"
37 | }
38 | },
39 | "node_modules/@next/swc-android-arm64": {
40 | "version": "13.1.6",
41 | "resolved": "https://registry.npmjs.org/@next/swc-android-arm64/-/swc-android-arm64-13.1.6.tgz",
42 | "integrity": "sha512-cMwQjnB8vrYkWyK/H0Rf2c2pKIH4RGjpKUDvbjVAit6SbwPDpmaijLio0LWFV3/tOnY6kvzbL62lndVA0mkYpw==",
43 | "cpu": [
44 | "arm64"
45 | ],
46 | "optional": true,
47 | "os": [
48 | "android"
49 | ],
50 | "engines": {
51 | "node": ">= 10"
52 | }
53 | },
54 | "node_modules/@next/swc-darwin-arm64": {
55 | "version": "13.1.6",
56 | "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-13.1.6.tgz",
57 | "integrity": "sha512-KKRQH4DDE4kONXCvFMNBZGDb499Hs+xcFAwvj+rfSUssIDrZOlyfJNy55rH5t2Qxed1e4K80KEJgsxKQN1/fyw==",
58 | "cpu": [
59 | "arm64"
60 | ],
61 | "optional": true,
62 | "os": [
63 | "darwin"
64 | ],
65 | "engines": {
66 | "node": ">= 10"
67 | }
68 | },
69 | "node_modules/@next/swc-darwin-x64": {
70 | "version": "13.1.6",
71 | "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-13.1.6.tgz",
72 | "integrity": "sha512-/uOky5PaZDoaU99ohjtNcDTJ6ks/gZ5ykTQDvNZDjIoCxFe3+t06bxsTPY6tAO6uEAw5f6vVFX5H5KLwhrkZCA==",
73 | "cpu": [
74 | "x64"
75 | ],
76 | "optional": true,
77 | "os": [
78 | "darwin"
79 | ],
80 | "engines": {
81 | "node": ">= 10"
82 | }
83 | },
84 | "node_modules/@next/swc-freebsd-x64": {
85 | "version": "13.1.6",
86 | "resolved": "https://registry.npmjs.org/@next/swc-freebsd-x64/-/swc-freebsd-x64-13.1.6.tgz",
87 | "integrity": "sha512-qaEALZeV7to6weSXk3Br80wtFQ7cFTpos/q+m9XVRFggu+8Ib895XhMWdJBzew6aaOcMvYR6KQ6JmHA2/eMzWw==",
88 | "cpu": [
89 | "x64"
90 | ],
91 | "optional": true,
92 | "os": [
93 | "freebsd"
94 | ],
95 | "engines": {
96 | "node": ">= 10"
97 | }
98 | },
99 | "node_modules/@next/swc-linux-arm-gnueabihf": {
100 | "version": "13.1.6",
101 | "resolved": "https://registry.npmjs.org/@next/swc-linux-arm-gnueabihf/-/swc-linux-arm-gnueabihf-13.1.6.tgz",
102 | "integrity": "sha512-OybkbC58A1wJ+JrJSOjGDvZzrVEQA4sprJejGqMwiZyLqhr9Eo8FXF0y6HL+m1CPCpPhXEHz/2xKoYsl16kNqw==",
103 | "cpu": [
104 | "arm"
105 | ],
106 | "optional": true,
107 | "os": [
108 | "linux"
109 | ],
110 | "engines": {
111 | "node": ">= 10"
112 | }
113 | },
114 | "node_modules/@next/swc-linux-arm64-gnu": {
115 | "version": "13.1.6",
116 | "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-13.1.6.tgz",
117 | "integrity": "sha512-yCH+yDr7/4FDuWv6+GiYrPI9kcTAO3y48UmaIbrKy8ZJpi7RehJe3vIBRUmLrLaNDH3rY1rwoHi471NvR5J5NQ==",
118 | "cpu": [
119 | "arm64"
120 | ],
121 | "optional": true,
122 | "os": [
123 | "linux"
124 | ],
125 | "engines": {
126 | "node": ">= 10"
127 | }
128 | },
129 | "node_modules/@next/swc-linux-arm64-musl": {
130 | "version": "13.1.6",
131 | "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-13.1.6.tgz",
132 | "integrity": "sha512-ECagB8LGX25P9Mrmlc7Q/TQBb9rGScxHbv/kLqqIWs2fIXy6Y/EiBBiM72NTwuXUFCNrWR4sjUPSooVBJJ3ESQ==",
133 | "cpu": [
134 | "arm64"
135 | ],
136 | "optional": true,
137 | "os": [
138 | "linux"
139 | ],
140 | "engines": {
141 | "node": ">= 10"
142 | }
143 | },
144 | "node_modules/@next/swc-linux-x64-gnu": {
145 | "version": "13.1.6",
146 | "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-13.1.6.tgz",
147 | "integrity": "sha512-GT5w2mruk90V/I5g6ScuueE7fqj/d8Bui2qxdw6lFxmuTgMeol5rnzAv4uAoVQgClOUO/MULilzlODg9Ib3Y4Q==",
148 | "cpu": [
149 | "x64"
150 | ],
151 | "optional": true,
152 | "os": [
153 | "linux"
154 | ],
155 | "engines": {
156 | "node": ">= 10"
157 | }
158 | },
159 | "node_modules/@next/swc-linux-x64-musl": {
160 | "version": "13.1.6",
161 | "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-13.1.6.tgz",
162 | "integrity": "sha512-keFD6KvwOPzmat4TCnlnuxJCQepPN+8j3Nw876FtULxo8005Y9Ghcl7ACcR8GoiKoddAq8gxNBrpjoxjQRHeAQ==",
163 | "cpu": [
164 | "x64"
165 | ],
166 | "optional": true,
167 | "os": [
168 | "linux"
169 | ],
170 | "engines": {
171 | "node": ">= 10"
172 | }
173 | },
174 | "node_modules/@next/swc-win32-arm64-msvc": {
175 | "version": "13.1.6",
176 | "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-13.1.6.tgz",
177 | "integrity": "sha512-OwertslIiGQluFvHyRDzBCIB07qJjqabAmINlXUYt7/sY7Q7QPE8xVi5beBxX/rxTGPIbtyIe3faBE6Z2KywhQ==",
178 | "cpu": [
179 | "arm64"
180 | ],
181 | "optional": true,
182 | "os": [
183 | "win32"
184 | ],
185 | "engines": {
186 | "node": ">= 10"
187 | }
188 | },
189 | "node_modules/@next/swc-win32-ia32-msvc": {
190 | "version": "13.1.6",
191 | "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-13.1.6.tgz",
192 | "integrity": "sha512-g8zowiuP8FxUR9zslPmlju7qYbs2XBtTLVSxVikPtUDQedhcls39uKYLvOOd1JZg0ehyhopobRoH1q+MHlIN/w==",
193 | "cpu": [
194 | "ia32"
195 | ],
196 | "optional": true,
197 | "os": [
198 | "win32"
199 | ],
200 | "engines": {
201 | "node": ">= 10"
202 | }
203 | },
204 | "node_modules/@next/swc-win32-x64-msvc": {
205 | "version": "13.1.6",
206 | "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-13.1.6.tgz",
207 | "integrity": "sha512-Ls2OL9hi3YlJKGNdKv8k3X/lLgc3VmLG3a/DeTkAd+lAituJp8ZHmRmm9f9SL84fT3CotlzcgbdaCDfFwFA6bA==",
208 | "cpu": [
209 | "x64"
210 | ],
211 | "optional": true,
212 | "os": [
213 | "win32"
214 | ],
215 | "engines": {
216 | "node": ">= 10"
217 | }
218 | },
219 | "node_modules/@swc/helpers": {
220 | "version": "0.4.14",
221 | "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.4.14.tgz",
222 | "integrity": "sha512-4C7nX/dvpzB7za4Ql9K81xK3HPxCpHMgwTZVyf+9JQ6VUbn9jjZVN7/Nkdz/Ugzs2CSjqnL/UPXroiVBVHUWUw==",
223 | "dependencies": {
224 | "tslib": "^2.4.0"
225 | }
226 | },
227 | "node_modules/@types/node": {
228 | "version": "18.14.0",
229 | "resolved": "https://registry.npmjs.org/@types/node/-/node-18.14.0.tgz",
230 | "integrity": "sha512-5EWrvLmglK+imbCJY0+INViFWUHg1AHel1sq4ZVSfdcNqGy9Edv3UB9IIzzg+xPaUcAgZYcfVs2fBcwDeZzU0A=="
231 | },
232 | "node_modules/@types/prop-types": {
233 | "version": "15.7.5",
234 | "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz",
235 | "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w=="
236 | },
237 | "node_modules/@types/react": {
238 | "version": "18.0.28",
239 | "resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.28.tgz",
240 | "integrity": "sha512-RD0ivG1kEztNBdoAK7lekI9M+azSnitIn85h4iOiaLjaTrMjzslhaqCGaI4IyCJ1RljWiLCEu4jyrLLgqxBTew==",
241 | "dependencies": {
242 | "@types/prop-types": "*",
243 | "@types/scheduler": "*",
244 | "csstype": "^3.0.2"
245 | }
246 | },
247 | "node_modules/@types/react-dom": {
248 | "version": "18.0.11",
249 | "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.0.11.tgz",
250 | "integrity": "sha512-O38bPbI2CWtgw/OoQoY+BRelw7uysmXbWvw3nLWO21H1HSh+GOlqPuXshJfjmpNlKiiSDG9cc1JZAaMmVdcTlw==",
251 | "dependencies": {
252 | "@types/react": "*"
253 | }
254 | },
255 | "node_modules/@types/scheduler": {
256 | "version": "0.16.2",
257 | "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz",
258 | "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew=="
259 | },
260 | "node_modules/caniuse-lite": {
261 | "version": "1.0.30001457",
262 | "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001457.tgz",
263 | "integrity": "sha512-SDIV6bgE1aVbK6XyxdURbUE89zY7+k1BBBaOwYwkNCglXlel/E7mELiHC64HQ+W0xSKlqWhV9Wh7iHxUjMs4fA==",
264 | "funding": [
265 | {
266 | "type": "opencollective",
267 | "url": "https://opencollective.com/browserslist"
268 | },
269 | {
270 | "type": "tidelift",
271 | "url": "https://tidelift.com/funding/github/npm/caniuse-lite"
272 | }
273 | ]
274 | },
275 | "node_modules/client-only": {
276 | "version": "0.0.1",
277 | "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz",
278 | "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA=="
279 | },
280 | "node_modules/csstype": {
281 | "version": "3.1.1",
282 | "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.1.tgz",
283 | "integrity": "sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw=="
284 | },
285 | "node_modules/deta": {
286 | "version": "1.1.0",
287 | "resolved": "https://registry.npmjs.org/deta/-/deta-1.1.0.tgz",
288 | "integrity": "sha512-mQAvfAsB++McPMT3Gb39KWkxfFzaPSF+z8XNpomakkUslg9xTu6Z8gVjAXaDGJm0LFEIIZQdokpU+lOJOXtOqw==",
289 | "dependencies": {
290 | "node-fetch": "^2.6.7"
291 | }
292 | },
293 | "node_modules/js-tokens": {
294 | "version": "4.0.0",
295 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
296 | "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="
297 | },
298 | "node_modules/loose-envify": {
299 | "version": "1.4.0",
300 | "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
301 | "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
302 | "dependencies": {
303 | "js-tokens": "^3.0.0 || ^4.0.0"
304 | },
305 | "bin": {
306 | "loose-envify": "cli.js"
307 | }
308 | },
309 | "node_modules/nanoid": {
310 | "version": "3.3.4",
311 | "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz",
312 | "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==",
313 | "bin": {
314 | "nanoid": "bin/nanoid.cjs"
315 | },
316 | "engines": {
317 | "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
318 | }
319 | },
320 | "node_modules/next": {
321 | "version": "13.1.6",
322 | "resolved": "https://registry.npmjs.org/next/-/next-13.1.6.tgz",
323 | "integrity": "sha512-hHlbhKPj9pW+Cymvfzc15lvhaOZ54l+8sXDXJWm3OBNBzgrVj6hwGPmqqsXg40xO1Leq+kXpllzRPuncpC0Phw==",
324 | "dependencies": {
325 | "@next/env": "13.1.6",
326 | "@swc/helpers": "0.4.14",
327 | "caniuse-lite": "^1.0.30001406",
328 | "postcss": "8.4.14",
329 | "styled-jsx": "5.1.1"
330 | },
331 | "bin": {
332 | "next": "dist/bin/next"
333 | },
334 | "engines": {
335 | "node": ">=14.6.0"
336 | },
337 | "optionalDependencies": {
338 | "@next/swc-android-arm-eabi": "13.1.6",
339 | "@next/swc-android-arm64": "13.1.6",
340 | "@next/swc-darwin-arm64": "13.1.6",
341 | "@next/swc-darwin-x64": "13.1.6",
342 | "@next/swc-freebsd-x64": "13.1.6",
343 | "@next/swc-linux-arm-gnueabihf": "13.1.6",
344 | "@next/swc-linux-arm64-gnu": "13.1.6",
345 | "@next/swc-linux-arm64-musl": "13.1.6",
346 | "@next/swc-linux-x64-gnu": "13.1.6",
347 | "@next/swc-linux-x64-musl": "13.1.6",
348 | "@next/swc-win32-arm64-msvc": "13.1.6",
349 | "@next/swc-win32-ia32-msvc": "13.1.6",
350 | "@next/swc-win32-x64-msvc": "13.1.6"
351 | },
352 | "peerDependencies": {
353 | "fibers": ">= 3.1.0",
354 | "node-sass": "^6.0.0 || ^7.0.0",
355 | "react": "^18.2.0",
356 | "react-dom": "^18.2.0",
357 | "sass": "^1.3.0"
358 | },
359 | "peerDependenciesMeta": {
360 | "fibers": {
361 | "optional": true
362 | },
363 | "node-sass": {
364 | "optional": true
365 | },
366 | "sass": {
367 | "optional": true
368 | }
369 | }
370 | },
371 | "node_modules/node-fetch": {
372 | "version": "2.6.9",
373 | "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.9.tgz",
374 | "integrity": "sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg==",
375 | "dependencies": {
376 | "whatwg-url": "^5.0.0"
377 | },
378 | "engines": {
379 | "node": "4.x || >=6.0.0"
380 | },
381 | "peerDependencies": {
382 | "encoding": "^0.1.0"
383 | },
384 | "peerDependenciesMeta": {
385 | "encoding": {
386 | "optional": true
387 | }
388 | }
389 | },
390 | "node_modules/picocolors": {
391 | "version": "1.0.0",
392 | "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
393 | "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ=="
394 | },
395 | "node_modules/postcss": {
396 | "version": "8.4.14",
397 | "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.14.tgz",
398 | "integrity": "sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==",
399 | "funding": [
400 | {
401 | "type": "opencollective",
402 | "url": "https://opencollective.com/postcss/"
403 | },
404 | {
405 | "type": "tidelift",
406 | "url": "https://tidelift.com/funding/github/npm/postcss"
407 | }
408 | ],
409 | "dependencies": {
410 | "nanoid": "^3.3.4",
411 | "picocolors": "^1.0.0",
412 | "source-map-js": "^1.0.2"
413 | },
414 | "engines": {
415 | "node": "^10 || ^12 || >=14"
416 | }
417 | },
418 | "node_modules/react": {
419 | "version": "18.2.0",
420 | "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz",
421 | "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==",
422 | "dependencies": {
423 | "loose-envify": "^1.1.0"
424 | },
425 | "engines": {
426 | "node": ">=0.10.0"
427 | }
428 | },
429 | "node_modules/react-dom": {
430 | "version": "18.2.0",
431 | "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz",
432 | "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==",
433 | "dependencies": {
434 | "loose-envify": "^1.1.0",
435 | "scheduler": "^0.23.0"
436 | },
437 | "peerDependencies": {
438 | "react": "^18.2.0"
439 | }
440 | },
441 | "node_modules/scheduler": {
442 | "version": "0.23.0",
443 | "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz",
444 | "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==",
445 | "dependencies": {
446 | "loose-envify": "^1.1.0"
447 | }
448 | },
449 | "node_modules/source-map-js": {
450 | "version": "1.0.2",
451 | "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz",
452 | "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==",
453 | "engines": {
454 | "node": ">=0.10.0"
455 | }
456 | },
457 | "node_modules/styled-jsx": {
458 | "version": "5.1.1",
459 | "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.1.1.tgz",
460 | "integrity": "sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==",
461 | "dependencies": {
462 | "client-only": "0.0.1"
463 | },
464 | "engines": {
465 | "node": ">= 12.0.0"
466 | },
467 | "peerDependencies": {
468 | "react": ">= 16.8.0 || 17.x.x || ^18.0.0-0"
469 | },
470 | "peerDependenciesMeta": {
471 | "@babel/core": {
472 | "optional": true
473 | },
474 | "babel-plugin-macros": {
475 | "optional": true
476 | }
477 | }
478 | },
479 | "node_modules/swr": {
480 | "version": "2.0.3",
481 | "resolved": "https://registry.npmjs.org/swr/-/swr-2.0.3.tgz",
482 | "integrity": "sha512-sGvQDok/AHEWTPfhUWXEHBVEXmgGnuahyhmRQbjl9XBYxT/MSlAzvXEKQpyM++bMPaI52vcWS2HiKNaW7+9OFw==",
483 | "dependencies": {
484 | "use-sync-external-store": "^1.2.0"
485 | },
486 | "engines": {
487 | "pnpm": "7"
488 | },
489 | "peerDependencies": {
490 | "react": "^16.11.0 || ^17.0.0 || ^18.0.0"
491 | }
492 | },
493 | "node_modules/tr46": {
494 | "version": "0.0.3",
495 | "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
496 | "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw=="
497 | },
498 | "node_modules/tslib": {
499 | "version": "2.5.0",
500 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz",
501 | "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg=="
502 | },
503 | "node_modules/typescript": {
504 | "version": "4.9.5",
505 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz",
506 | "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==",
507 | "bin": {
508 | "tsc": "bin/tsc",
509 | "tsserver": "bin/tsserver"
510 | },
511 | "engines": {
512 | "node": ">=4.2.0"
513 | }
514 | },
515 | "node_modules/use-sync-external-store": {
516 | "version": "1.2.0",
517 | "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz",
518 | "integrity": "sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==",
519 | "peerDependencies": {
520 | "react": "^16.8.0 || ^17.0.0 || ^18.0.0"
521 | }
522 | },
523 | "node_modules/webidl-conversions": {
524 | "version": "3.0.1",
525 | "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
526 | "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ=="
527 | },
528 | "node_modules/whatwg-url": {
529 | "version": "5.0.0",
530 | "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz",
531 | "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==",
532 | "dependencies": {
533 | "tr46": "~0.0.3",
534 | "webidl-conversions": "^3.0.0"
535 | }
536 | }
537 | }
538 | }
539 |
--------------------------------------------------------------------------------
/node-app/package-lock.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "node-app",
3 | "lockfileVersion": 3,
4 | "requires": true,
5 | "packages": {
6 | "": {
7 | "dependencies": {
8 | "deta": "^1.1.0",
9 | "express": "^4.18.2"
10 | }
11 | },
12 | "node_modules/accepts": {
13 | "version": "1.3.8",
14 | "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz",
15 | "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==",
16 | "dependencies": {
17 | "mime-types": "~2.1.34",
18 | "negotiator": "0.6.3"
19 | },
20 | "engines": {
21 | "node": ">= 0.6"
22 | }
23 | },
24 | "node_modules/array-flatten": {
25 | "version": "1.1.1",
26 | "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
27 | "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg=="
28 | },
29 | "node_modules/body-parser": {
30 | "version": "1.20.1",
31 | "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz",
32 | "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==",
33 | "dependencies": {
34 | "bytes": "3.1.2",
35 | "content-type": "~1.0.4",
36 | "debug": "2.6.9",
37 | "depd": "2.0.0",
38 | "destroy": "1.2.0",
39 | "http-errors": "2.0.0",
40 | "iconv-lite": "0.4.24",
41 | "on-finished": "2.4.1",
42 | "qs": "6.11.0",
43 | "raw-body": "2.5.1",
44 | "type-is": "~1.6.18",
45 | "unpipe": "1.0.0"
46 | },
47 | "engines": {
48 | "node": ">= 0.8",
49 | "npm": "1.2.8000 || >= 1.4.16"
50 | }
51 | },
52 | "node_modules/bytes": {
53 | "version": "3.1.2",
54 | "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
55 | "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==",
56 | "engines": {
57 | "node": ">= 0.8"
58 | }
59 | },
60 | "node_modules/call-bind": {
61 | "version": "1.0.2",
62 | "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz",
63 | "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==",
64 | "dependencies": {
65 | "function-bind": "^1.1.1",
66 | "get-intrinsic": "^1.0.2"
67 | },
68 | "funding": {
69 | "url": "https://github.com/sponsors/ljharb"
70 | }
71 | },
72 | "node_modules/content-disposition": {
73 | "version": "0.5.4",
74 | "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz",
75 | "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==",
76 | "dependencies": {
77 | "safe-buffer": "5.2.1"
78 | },
79 | "engines": {
80 | "node": ">= 0.6"
81 | }
82 | },
83 | "node_modules/content-type": {
84 | "version": "1.0.5",
85 | "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz",
86 | "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==",
87 | "engines": {
88 | "node": ">= 0.6"
89 | }
90 | },
91 | "node_modules/cookie": {
92 | "version": "0.5.0",
93 | "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz",
94 | "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==",
95 | "engines": {
96 | "node": ">= 0.6"
97 | }
98 | },
99 | "node_modules/cookie-signature": {
100 | "version": "1.0.6",
101 | "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
102 | "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ=="
103 | },
104 | "node_modules/debug": {
105 | "version": "2.6.9",
106 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
107 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
108 | "dependencies": {
109 | "ms": "2.0.0"
110 | }
111 | },
112 | "node_modules/depd": {
113 | "version": "2.0.0",
114 | "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
115 | "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==",
116 | "engines": {
117 | "node": ">= 0.8"
118 | }
119 | },
120 | "node_modules/destroy": {
121 | "version": "1.2.0",
122 | "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz",
123 | "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==",
124 | "engines": {
125 | "node": ">= 0.8",
126 | "npm": "1.2.8000 || >= 1.4.16"
127 | }
128 | },
129 | "node_modules/deta": {
130 | "version": "1.1.0",
131 | "resolved": "https://registry.npmjs.org/deta/-/deta-1.1.0.tgz",
132 | "integrity": "sha512-mQAvfAsB++McPMT3Gb39KWkxfFzaPSF+z8XNpomakkUslg9xTu6Z8gVjAXaDGJm0LFEIIZQdokpU+lOJOXtOqw==",
133 | "dependencies": {
134 | "node-fetch": "^2.6.7"
135 | }
136 | },
137 | "node_modules/ee-first": {
138 | "version": "1.1.1",
139 | "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
140 | "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow=="
141 | },
142 | "node_modules/encodeurl": {
143 | "version": "1.0.2",
144 | "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
145 | "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==",
146 | "engines": {
147 | "node": ">= 0.8"
148 | }
149 | },
150 | "node_modules/escape-html": {
151 | "version": "1.0.3",
152 | "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
153 | "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow=="
154 | },
155 | "node_modules/etag": {
156 | "version": "1.8.1",
157 | "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
158 | "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==",
159 | "engines": {
160 | "node": ">= 0.6"
161 | }
162 | },
163 | "node_modules/express": {
164 | "version": "4.18.2",
165 | "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz",
166 | "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==",
167 | "dependencies": {
168 | "accepts": "~1.3.8",
169 | "array-flatten": "1.1.1",
170 | "body-parser": "1.20.1",
171 | "content-disposition": "0.5.4",
172 | "content-type": "~1.0.4",
173 | "cookie": "0.5.0",
174 | "cookie-signature": "1.0.6",
175 | "debug": "2.6.9",
176 | "depd": "2.0.0",
177 | "encodeurl": "~1.0.2",
178 | "escape-html": "~1.0.3",
179 | "etag": "~1.8.1",
180 | "finalhandler": "1.2.0",
181 | "fresh": "0.5.2",
182 | "http-errors": "2.0.0",
183 | "merge-descriptors": "1.0.1",
184 | "methods": "~1.1.2",
185 | "on-finished": "2.4.1",
186 | "parseurl": "~1.3.3",
187 | "path-to-regexp": "0.1.7",
188 | "proxy-addr": "~2.0.7",
189 | "qs": "6.11.0",
190 | "range-parser": "~1.2.1",
191 | "safe-buffer": "5.2.1",
192 | "send": "0.18.0",
193 | "serve-static": "1.15.0",
194 | "setprototypeof": "1.2.0",
195 | "statuses": "2.0.1",
196 | "type-is": "~1.6.18",
197 | "utils-merge": "1.0.1",
198 | "vary": "~1.1.2"
199 | },
200 | "engines": {
201 | "node": ">= 0.10.0"
202 | }
203 | },
204 | "node_modules/finalhandler": {
205 | "version": "1.2.0",
206 | "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz",
207 | "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==",
208 | "dependencies": {
209 | "debug": "2.6.9",
210 | "encodeurl": "~1.0.2",
211 | "escape-html": "~1.0.3",
212 | "on-finished": "2.4.1",
213 | "parseurl": "~1.3.3",
214 | "statuses": "2.0.1",
215 | "unpipe": "~1.0.0"
216 | },
217 | "engines": {
218 | "node": ">= 0.8"
219 | }
220 | },
221 | "node_modules/forwarded": {
222 | "version": "0.2.0",
223 | "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz",
224 | "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==",
225 | "engines": {
226 | "node": ">= 0.6"
227 | }
228 | },
229 | "node_modules/fresh": {
230 | "version": "0.5.2",
231 | "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
232 | "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==",
233 | "engines": {
234 | "node": ">= 0.6"
235 | }
236 | },
237 | "node_modules/function-bind": {
238 | "version": "1.1.1",
239 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
240 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
241 | },
242 | "node_modules/get-intrinsic": {
243 | "version": "1.2.0",
244 | "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz",
245 | "integrity": "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==",
246 | "dependencies": {
247 | "function-bind": "^1.1.1",
248 | "has": "^1.0.3",
249 | "has-symbols": "^1.0.3"
250 | },
251 | "funding": {
252 | "url": "https://github.com/sponsors/ljharb"
253 | }
254 | },
255 | "node_modules/has": {
256 | "version": "1.0.3",
257 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
258 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
259 | "dependencies": {
260 | "function-bind": "^1.1.1"
261 | },
262 | "engines": {
263 | "node": ">= 0.4.0"
264 | }
265 | },
266 | "node_modules/has-symbols": {
267 | "version": "1.0.3",
268 | "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
269 | "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==",
270 | "engines": {
271 | "node": ">= 0.4"
272 | },
273 | "funding": {
274 | "url": "https://github.com/sponsors/ljharb"
275 | }
276 | },
277 | "node_modules/http-errors": {
278 | "version": "2.0.0",
279 | "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz",
280 | "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==",
281 | "dependencies": {
282 | "depd": "2.0.0",
283 | "inherits": "2.0.4",
284 | "setprototypeof": "1.2.0",
285 | "statuses": "2.0.1",
286 | "toidentifier": "1.0.1"
287 | },
288 | "engines": {
289 | "node": ">= 0.8"
290 | }
291 | },
292 | "node_modules/iconv-lite": {
293 | "version": "0.4.24",
294 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
295 | "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
296 | "dependencies": {
297 | "safer-buffer": ">= 2.1.2 < 3"
298 | },
299 | "engines": {
300 | "node": ">=0.10.0"
301 | }
302 | },
303 | "node_modules/inherits": {
304 | "version": "2.0.4",
305 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
306 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
307 | },
308 | "node_modules/ipaddr.js": {
309 | "version": "1.9.1",
310 | "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
311 | "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==",
312 | "engines": {
313 | "node": ">= 0.10"
314 | }
315 | },
316 | "node_modules/media-typer": {
317 | "version": "0.3.0",
318 | "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
319 | "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==",
320 | "engines": {
321 | "node": ">= 0.6"
322 | }
323 | },
324 | "node_modules/merge-descriptors": {
325 | "version": "1.0.1",
326 | "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
327 | "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w=="
328 | },
329 | "node_modules/methods": {
330 | "version": "1.1.2",
331 | "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
332 | "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==",
333 | "engines": {
334 | "node": ">= 0.6"
335 | }
336 | },
337 | "node_modules/mime": {
338 | "version": "1.6.0",
339 | "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
340 | "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
341 | "bin": {
342 | "mime": "cli.js"
343 | },
344 | "engines": {
345 | "node": ">=4"
346 | }
347 | },
348 | "node_modules/mime-db": {
349 | "version": "1.52.0",
350 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
351 | "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
352 | "engines": {
353 | "node": ">= 0.6"
354 | }
355 | },
356 | "node_modules/mime-types": {
357 | "version": "2.1.35",
358 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
359 | "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
360 | "dependencies": {
361 | "mime-db": "1.52.0"
362 | },
363 | "engines": {
364 | "node": ">= 0.6"
365 | }
366 | },
367 | "node_modules/ms": {
368 | "version": "2.0.0",
369 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
370 | "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
371 | },
372 | "node_modules/negotiator": {
373 | "version": "0.6.3",
374 | "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz",
375 | "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==",
376 | "engines": {
377 | "node": ">= 0.6"
378 | }
379 | },
380 | "node_modules/node-fetch": {
381 | "version": "2.6.9",
382 | "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.9.tgz",
383 | "integrity": "sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg==",
384 | "dependencies": {
385 | "whatwg-url": "^5.0.0"
386 | },
387 | "engines": {
388 | "node": "4.x || >=6.0.0"
389 | },
390 | "peerDependencies": {
391 | "encoding": "^0.1.0"
392 | },
393 | "peerDependenciesMeta": {
394 | "encoding": {
395 | "optional": true
396 | }
397 | }
398 | },
399 | "node_modules/object-inspect": {
400 | "version": "1.12.3",
401 | "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz",
402 | "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==",
403 | "funding": {
404 | "url": "https://github.com/sponsors/ljharb"
405 | }
406 | },
407 | "node_modules/on-finished": {
408 | "version": "2.4.1",
409 | "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz",
410 | "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==",
411 | "dependencies": {
412 | "ee-first": "1.1.1"
413 | },
414 | "engines": {
415 | "node": ">= 0.8"
416 | }
417 | },
418 | "node_modules/parseurl": {
419 | "version": "1.3.3",
420 | "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
421 | "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==",
422 | "engines": {
423 | "node": ">= 0.8"
424 | }
425 | },
426 | "node_modules/path-to-regexp": {
427 | "version": "0.1.7",
428 | "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
429 | "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ=="
430 | },
431 | "node_modules/proxy-addr": {
432 | "version": "2.0.7",
433 | "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
434 | "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==",
435 | "dependencies": {
436 | "forwarded": "0.2.0",
437 | "ipaddr.js": "1.9.1"
438 | },
439 | "engines": {
440 | "node": ">= 0.10"
441 | }
442 | },
443 | "node_modules/qs": {
444 | "version": "6.11.0",
445 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz",
446 | "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==",
447 | "dependencies": {
448 | "side-channel": "^1.0.4"
449 | },
450 | "engines": {
451 | "node": ">=0.6"
452 | },
453 | "funding": {
454 | "url": "https://github.com/sponsors/ljharb"
455 | }
456 | },
457 | "node_modules/range-parser": {
458 | "version": "1.2.1",
459 | "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
460 | "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==",
461 | "engines": {
462 | "node": ">= 0.6"
463 | }
464 | },
465 | "node_modules/raw-body": {
466 | "version": "2.5.1",
467 | "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz",
468 | "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==",
469 | "dependencies": {
470 | "bytes": "3.1.2",
471 | "http-errors": "2.0.0",
472 | "iconv-lite": "0.4.24",
473 | "unpipe": "1.0.0"
474 | },
475 | "engines": {
476 | "node": ">= 0.8"
477 | }
478 | },
479 | "node_modules/safe-buffer": {
480 | "version": "5.2.1",
481 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
482 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
483 | "funding": [
484 | {
485 | "type": "github",
486 | "url": "https://github.com/sponsors/feross"
487 | },
488 | {
489 | "type": "patreon",
490 | "url": "https://www.patreon.com/feross"
491 | },
492 | {
493 | "type": "consulting",
494 | "url": "https://feross.org/support"
495 | }
496 | ]
497 | },
498 | "node_modules/safer-buffer": {
499 | "version": "2.1.2",
500 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
501 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
502 | },
503 | "node_modules/send": {
504 | "version": "0.18.0",
505 | "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz",
506 | "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==",
507 | "dependencies": {
508 | "debug": "2.6.9",
509 | "depd": "2.0.0",
510 | "destroy": "1.2.0",
511 | "encodeurl": "~1.0.2",
512 | "escape-html": "~1.0.3",
513 | "etag": "~1.8.1",
514 | "fresh": "0.5.2",
515 | "http-errors": "2.0.0",
516 | "mime": "1.6.0",
517 | "ms": "2.1.3",
518 | "on-finished": "2.4.1",
519 | "range-parser": "~1.2.1",
520 | "statuses": "2.0.1"
521 | },
522 | "engines": {
523 | "node": ">= 0.8.0"
524 | }
525 | },
526 | "node_modules/send/node_modules/ms": {
527 | "version": "2.1.3",
528 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
529 | "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
530 | },
531 | "node_modules/serve-static": {
532 | "version": "1.15.0",
533 | "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz",
534 | "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==",
535 | "dependencies": {
536 | "encodeurl": "~1.0.2",
537 | "escape-html": "~1.0.3",
538 | "parseurl": "~1.3.3",
539 | "send": "0.18.0"
540 | },
541 | "engines": {
542 | "node": ">= 0.8.0"
543 | }
544 | },
545 | "node_modules/setprototypeof": {
546 | "version": "1.2.0",
547 | "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
548 | "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw=="
549 | },
550 | "node_modules/side-channel": {
551 | "version": "1.0.4",
552 | "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
553 | "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==",
554 | "dependencies": {
555 | "call-bind": "^1.0.0",
556 | "get-intrinsic": "^1.0.2",
557 | "object-inspect": "^1.9.0"
558 | },
559 | "funding": {
560 | "url": "https://github.com/sponsors/ljharb"
561 | }
562 | },
563 | "node_modules/statuses": {
564 | "version": "2.0.1",
565 | "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
566 | "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==",
567 | "engines": {
568 | "node": ">= 0.8"
569 | }
570 | },
571 | "node_modules/toidentifier": {
572 | "version": "1.0.1",
573 | "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
574 | "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==",
575 | "engines": {
576 | "node": ">=0.6"
577 | }
578 | },
579 | "node_modules/tr46": {
580 | "version": "0.0.3",
581 | "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
582 | "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw=="
583 | },
584 | "node_modules/type-is": {
585 | "version": "1.6.18",
586 | "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
587 | "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
588 | "dependencies": {
589 | "media-typer": "0.3.0",
590 | "mime-types": "~2.1.24"
591 | },
592 | "engines": {
593 | "node": ">= 0.6"
594 | }
595 | },
596 | "node_modules/unpipe": {
597 | "version": "1.0.0",
598 | "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
599 | "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==",
600 | "engines": {
601 | "node": ">= 0.8"
602 | }
603 | },
604 | "node_modules/utils-merge": {
605 | "version": "1.0.1",
606 | "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
607 | "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==",
608 | "engines": {
609 | "node": ">= 0.4.0"
610 | }
611 | },
612 | "node_modules/vary": {
613 | "version": "1.1.2",
614 | "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
615 | "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==",
616 | "engines": {
617 | "node": ">= 0.8"
618 | }
619 | },
620 | "node_modules/webidl-conversions": {
621 | "version": "3.0.1",
622 | "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
623 | "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ=="
624 | },
625 | "node_modules/whatwg-url": {
626 | "version": "5.0.0",
627 | "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz",
628 | "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==",
629 | "dependencies": {
630 | "tr46": "~0.0.3",
631 | "webidl-conversions": "^3.0.0"
632 | }
633 | }
634 | }
635 | }
636 |
--------------------------------------------------------------------------------
/tsnode-app/package-lock.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "tsnode-app",
3 | "lockfileVersion": 3,
4 | "requires": true,
5 | "packages": {
6 | "": {
7 | "dependencies": {
8 | "deta": "^1.1.0",
9 | "express": "^4.18.2"
10 | },
11 | "devDependencies": {
12 | "@types/express": "^4.17.17",
13 | "@types/node": "^18.15.11",
14 | "nodemon": "^2.0.22",
15 | "ts-node": "^10.9.1",
16 | "typescript": "^5.0.2"
17 | }
18 | },
19 | "node_modules/@cspotcode/source-map-support": {
20 | "version": "0.8.1",
21 | "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz",
22 | "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==",
23 | "dev": true,
24 | "dependencies": {
25 | "@jridgewell/trace-mapping": "0.3.9"
26 | },
27 | "engines": {
28 | "node": ">=12"
29 | }
30 | },
31 | "node_modules/@jridgewell/resolve-uri": {
32 | "version": "3.1.0",
33 | "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz",
34 | "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==",
35 | "dev": true,
36 | "engines": {
37 | "node": ">=6.0.0"
38 | }
39 | },
40 | "node_modules/@jridgewell/sourcemap-codec": {
41 | "version": "1.4.14",
42 | "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz",
43 | "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==",
44 | "dev": true
45 | },
46 | "node_modules/@jridgewell/trace-mapping": {
47 | "version": "0.3.9",
48 | "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz",
49 | "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==",
50 | "dev": true,
51 | "dependencies": {
52 | "@jridgewell/resolve-uri": "^3.0.3",
53 | "@jridgewell/sourcemap-codec": "^1.4.10"
54 | }
55 | },
56 | "node_modules/@tsconfig/node10": {
57 | "version": "1.0.9",
58 | "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz",
59 | "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==",
60 | "dev": true
61 | },
62 | "node_modules/@tsconfig/node12": {
63 | "version": "1.0.11",
64 | "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz",
65 | "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==",
66 | "dev": true
67 | },
68 | "node_modules/@tsconfig/node14": {
69 | "version": "1.0.3",
70 | "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz",
71 | "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==",
72 | "dev": true
73 | },
74 | "node_modules/@tsconfig/node16": {
75 | "version": "1.0.3",
76 | "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.3.tgz",
77 | "integrity": "sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==",
78 | "dev": true
79 | },
80 | "node_modules/@types/body-parser": {
81 | "version": "1.19.2",
82 | "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz",
83 | "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==",
84 | "dev": true,
85 | "dependencies": {
86 | "@types/connect": "*",
87 | "@types/node": "*"
88 | }
89 | },
90 | "node_modules/@types/connect": {
91 | "version": "3.4.35",
92 | "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz",
93 | "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==",
94 | "dev": true,
95 | "dependencies": {
96 | "@types/node": "*"
97 | }
98 | },
99 | "node_modules/@types/express": {
100 | "version": "4.17.17",
101 | "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.17.tgz",
102 | "integrity": "sha512-Q4FmmuLGBG58btUnfS1c1r/NQdlp3DMfGDGig8WhfpA2YRUtEkxAjkZb0yvplJGYdF1fsQ81iMDcH24sSCNC/Q==",
103 | "dev": true,
104 | "dependencies": {
105 | "@types/body-parser": "*",
106 | "@types/express-serve-static-core": "^4.17.33",
107 | "@types/qs": "*",
108 | "@types/serve-static": "*"
109 | }
110 | },
111 | "node_modules/@types/express-serve-static-core": {
112 | "version": "4.17.33",
113 | "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.33.tgz",
114 | "integrity": "sha512-TPBqmR/HRYI3eC2E5hmiivIzv+bidAfXofM+sbonAGvyDhySGw9/PQZFt2BLOrjUUR++4eJVpx6KnLQK1Fk9tA==",
115 | "dev": true,
116 | "dependencies": {
117 | "@types/node": "*",
118 | "@types/qs": "*",
119 | "@types/range-parser": "*"
120 | }
121 | },
122 | "node_modules/@types/mime": {
123 | "version": "3.0.1",
124 | "resolved": "https://registry.npmjs.org/@types/mime/-/mime-3.0.1.tgz",
125 | "integrity": "sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA==",
126 | "dev": true
127 | },
128 | "node_modules/@types/node": {
129 | "version": "18.15.11",
130 | "resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.11.tgz",
131 | "integrity": "sha512-E5Kwq2n4SbMzQOn6wnmBjuK9ouqlURrcZDVfbo9ftDDTFt3nk7ZKK4GMOzoYgnpQJKcxwQw+lGaBvvlMo0qN/Q==",
132 | "dev": true
133 | },
134 | "node_modules/@types/qs": {
135 | "version": "6.9.7",
136 | "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz",
137 | "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==",
138 | "dev": true
139 | },
140 | "node_modules/@types/range-parser": {
141 | "version": "1.2.4",
142 | "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz",
143 | "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==",
144 | "dev": true
145 | },
146 | "node_modules/@types/serve-static": {
147 | "version": "1.15.1",
148 | "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.1.tgz",
149 | "integrity": "sha512-NUo5XNiAdULrJENtJXZZ3fHtfMolzZwczzBbnAeBbqBwG+LaG6YaJtuwzwGSQZ2wsCrxjEhNNjAkKigy3n8teQ==",
150 | "dev": true,
151 | "dependencies": {
152 | "@types/mime": "*",
153 | "@types/node": "*"
154 | }
155 | },
156 | "node_modules/abbrev": {
157 | "version": "1.1.1",
158 | "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
159 | "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==",
160 | "dev": true
161 | },
162 | "node_modules/accepts": {
163 | "version": "1.3.8",
164 | "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz",
165 | "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==",
166 | "dependencies": {
167 | "mime-types": "~2.1.34",
168 | "negotiator": "0.6.3"
169 | },
170 | "engines": {
171 | "node": ">= 0.6"
172 | }
173 | },
174 | "node_modules/acorn": {
175 | "version": "8.8.2",
176 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz",
177 | "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==",
178 | "dev": true,
179 | "bin": {
180 | "acorn": "bin/acorn"
181 | },
182 | "engines": {
183 | "node": ">=0.4.0"
184 | }
185 | },
186 | "node_modules/acorn-walk": {
187 | "version": "8.2.0",
188 | "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz",
189 | "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==",
190 | "dev": true,
191 | "engines": {
192 | "node": ">=0.4.0"
193 | }
194 | },
195 | "node_modules/anymatch": {
196 | "version": "3.1.3",
197 | "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz",
198 | "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==",
199 | "dev": true,
200 | "dependencies": {
201 | "normalize-path": "^3.0.0",
202 | "picomatch": "^2.0.4"
203 | },
204 | "engines": {
205 | "node": ">= 8"
206 | }
207 | },
208 | "node_modules/arg": {
209 | "version": "4.1.3",
210 | "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz",
211 | "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==",
212 | "dev": true
213 | },
214 | "node_modules/array-flatten": {
215 | "version": "1.1.1",
216 | "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
217 | "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg=="
218 | },
219 | "node_modules/balanced-match": {
220 | "version": "1.0.2",
221 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
222 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
223 | "dev": true
224 | },
225 | "node_modules/binary-extensions": {
226 | "version": "2.2.0",
227 | "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
228 | "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==",
229 | "dev": true,
230 | "engines": {
231 | "node": ">=8"
232 | }
233 | },
234 | "node_modules/body-parser": {
235 | "version": "1.20.1",
236 | "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz",
237 | "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==",
238 | "dependencies": {
239 | "bytes": "3.1.2",
240 | "content-type": "~1.0.4",
241 | "debug": "2.6.9",
242 | "depd": "2.0.0",
243 | "destroy": "1.2.0",
244 | "http-errors": "2.0.0",
245 | "iconv-lite": "0.4.24",
246 | "on-finished": "2.4.1",
247 | "qs": "6.11.0",
248 | "raw-body": "2.5.1",
249 | "type-is": "~1.6.18",
250 | "unpipe": "1.0.0"
251 | },
252 | "engines": {
253 | "node": ">= 0.8",
254 | "npm": "1.2.8000 || >= 1.4.16"
255 | }
256 | },
257 | "node_modules/brace-expansion": {
258 | "version": "1.1.11",
259 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
260 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
261 | "dev": true,
262 | "dependencies": {
263 | "balanced-match": "^1.0.0",
264 | "concat-map": "0.0.1"
265 | }
266 | },
267 | "node_modules/braces": {
268 | "version": "3.0.2",
269 | "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
270 | "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
271 | "dev": true,
272 | "dependencies": {
273 | "fill-range": "^7.0.1"
274 | },
275 | "engines": {
276 | "node": ">=8"
277 | }
278 | },
279 | "node_modules/bytes": {
280 | "version": "3.1.2",
281 | "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
282 | "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==",
283 | "engines": {
284 | "node": ">= 0.8"
285 | }
286 | },
287 | "node_modules/call-bind": {
288 | "version": "1.0.2",
289 | "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz",
290 | "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==",
291 | "dependencies": {
292 | "function-bind": "^1.1.1",
293 | "get-intrinsic": "^1.0.2"
294 | },
295 | "funding": {
296 | "url": "https://github.com/sponsors/ljharb"
297 | }
298 | },
299 | "node_modules/chokidar": {
300 | "version": "3.5.3",
301 | "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz",
302 | "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==",
303 | "dev": true,
304 | "funding": [
305 | {
306 | "type": "individual",
307 | "url": "https://paulmillr.com/funding/"
308 | }
309 | ],
310 | "dependencies": {
311 | "anymatch": "~3.1.2",
312 | "braces": "~3.0.2",
313 | "glob-parent": "~5.1.2",
314 | "is-binary-path": "~2.1.0",
315 | "is-glob": "~4.0.1",
316 | "normalize-path": "~3.0.0",
317 | "readdirp": "~3.6.0"
318 | },
319 | "engines": {
320 | "node": ">= 8.10.0"
321 | },
322 | "optionalDependencies": {
323 | "fsevents": "~2.3.2"
324 | }
325 | },
326 | "node_modules/concat-map": {
327 | "version": "0.0.1",
328 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
329 | "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
330 | "dev": true
331 | },
332 | "node_modules/content-disposition": {
333 | "version": "0.5.4",
334 | "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz",
335 | "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==",
336 | "dependencies": {
337 | "safe-buffer": "5.2.1"
338 | },
339 | "engines": {
340 | "node": ">= 0.6"
341 | }
342 | },
343 | "node_modules/content-type": {
344 | "version": "1.0.5",
345 | "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz",
346 | "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==",
347 | "engines": {
348 | "node": ">= 0.6"
349 | }
350 | },
351 | "node_modules/cookie": {
352 | "version": "0.5.0",
353 | "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz",
354 | "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==",
355 | "engines": {
356 | "node": ">= 0.6"
357 | }
358 | },
359 | "node_modules/cookie-signature": {
360 | "version": "1.0.6",
361 | "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
362 | "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ=="
363 | },
364 | "node_modules/create-require": {
365 | "version": "1.1.1",
366 | "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz",
367 | "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==",
368 | "dev": true
369 | },
370 | "node_modules/debug": {
371 | "version": "2.6.9",
372 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
373 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
374 | "dependencies": {
375 | "ms": "2.0.0"
376 | }
377 | },
378 | "node_modules/depd": {
379 | "version": "2.0.0",
380 | "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
381 | "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==",
382 | "engines": {
383 | "node": ">= 0.8"
384 | }
385 | },
386 | "node_modules/destroy": {
387 | "version": "1.2.0",
388 | "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz",
389 | "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==",
390 | "engines": {
391 | "node": ">= 0.8",
392 | "npm": "1.2.8000 || >= 1.4.16"
393 | }
394 | },
395 | "node_modules/deta": {
396 | "version": "1.1.0",
397 | "resolved": "https://registry.npmjs.org/deta/-/deta-1.1.0.tgz",
398 | "integrity": "sha512-mQAvfAsB++McPMT3Gb39KWkxfFzaPSF+z8XNpomakkUslg9xTu6Z8gVjAXaDGJm0LFEIIZQdokpU+lOJOXtOqw==",
399 | "dependencies": {
400 | "node-fetch": "^2.6.7"
401 | }
402 | },
403 | "node_modules/diff": {
404 | "version": "4.0.2",
405 | "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz",
406 | "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==",
407 | "dev": true,
408 | "engines": {
409 | "node": ">=0.3.1"
410 | }
411 | },
412 | "node_modules/ee-first": {
413 | "version": "1.1.1",
414 | "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
415 | "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow=="
416 | },
417 | "node_modules/encodeurl": {
418 | "version": "1.0.2",
419 | "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
420 | "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==",
421 | "engines": {
422 | "node": ">= 0.8"
423 | }
424 | },
425 | "node_modules/escape-html": {
426 | "version": "1.0.3",
427 | "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
428 | "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow=="
429 | },
430 | "node_modules/etag": {
431 | "version": "1.8.1",
432 | "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
433 | "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==",
434 | "engines": {
435 | "node": ">= 0.6"
436 | }
437 | },
438 | "node_modules/express": {
439 | "version": "4.18.2",
440 | "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz",
441 | "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==",
442 | "dependencies": {
443 | "accepts": "~1.3.8",
444 | "array-flatten": "1.1.1",
445 | "body-parser": "1.20.1",
446 | "content-disposition": "0.5.4",
447 | "content-type": "~1.0.4",
448 | "cookie": "0.5.0",
449 | "cookie-signature": "1.0.6",
450 | "debug": "2.6.9",
451 | "depd": "2.0.0",
452 | "encodeurl": "~1.0.2",
453 | "escape-html": "~1.0.3",
454 | "etag": "~1.8.1",
455 | "finalhandler": "1.2.0",
456 | "fresh": "0.5.2",
457 | "http-errors": "2.0.0",
458 | "merge-descriptors": "1.0.1",
459 | "methods": "~1.1.2",
460 | "on-finished": "2.4.1",
461 | "parseurl": "~1.3.3",
462 | "path-to-regexp": "0.1.7",
463 | "proxy-addr": "~2.0.7",
464 | "qs": "6.11.0",
465 | "range-parser": "~1.2.1",
466 | "safe-buffer": "5.2.1",
467 | "send": "0.18.0",
468 | "serve-static": "1.15.0",
469 | "setprototypeof": "1.2.0",
470 | "statuses": "2.0.1",
471 | "type-is": "~1.6.18",
472 | "utils-merge": "1.0.1",
473 | "vary": "~1.1.2"
474 | },
475 | "engines": {
476 | "node": ">= 0.10.0"
477 | }
478 | },
479 | "node_modules/fill-range": {
480 | "version": "7.0.1",
481 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
482 | "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
483 | "dev": true,
484 | "dependencies": {
485 | "to-regex-range": "^5.0.1"
486 | },
487 | "engines": {
488 | "node": ">=8"
489 | }
490 | },
491 | "node_modules/finalhandler": {
492 | "version": "1.2.0",
493 | "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz",
494 | "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==",
495 | "dependencies": {
496 | "debug": "2.6.9",
497 | "encodeurl": "~1.0.2",
498 | "escape-html": "~1.0.3",
499 | "on-finished": "2.4.1",
500 | "parseurl": "~1.3.3",
501 | "statuses": "2.0.1",
502 | "unpipe": "~1.0.0"
503 | },
504 | "engines": {
505 | "node": ">= 0.8"
506 | }
507 | },
508 | "node_modules/forwarded": {
509 | "version": "0.2.0",
510 | "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz",
511 | "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==",
512 | "engines": {
513 | "node": ">= 0.6"
514 | }
515 | },
516 | "node_modules/fresh": {
517 | "version": "0.5.2",
518 | "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
519 | "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==",
520 | "engines": {
521 | "node": ">= 0.6"
522 | }
523 | },
524 | "node_modules/fsevents": {
525 | "version": "2.3.2",
526 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
527 | "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
528 | "dev": true,
529 | "hasInstallScript": true,
530 | "optional": true,
531 | "os": [
532 | "darwin"
533 | ],
534 | "engines": {
535 | "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
536 | }
537 | },
538 | "node_modules/function-bind": {
539 | "version": "1.1.1",
540 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
541 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
542 | },
543 | "node_modules/get-intrinsic": {
544 | "version": "1.2.0",
545 | "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz",
546 | "integrity": "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==",
547 | "dependencies": {
548 | "function-bind": "^1.1.1",
549 | "has": "^1.0.3",
550 | "has-symbols": "^1.0.3"
551 | },
552 | "funding": {
553 | "url": "https://github.com/sponsors/ljharb"
554 | }
555 | },
556 | "node_modules/glob-parent": {
557 | "version": "5.1.2",
558 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
559 | "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
560 | "dev": true,
561 | "dependencies": {
562 | "is-glob": "^4.0.1"
563 | },
564 | "engines": {
565 | "node": ">= 6"
566 | }
567 | },
568 | "node_modules/has": {
569 | "version": "1.0.3",
570 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
571 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
572 | "dependencies": {
573 | "function-bind": "^1.1.1"
574 | },
575 | "engines": {
576 | "node": ">= 0.4.0"
577 | }
578 | },
579 | "node_modules/has-flag": {
580 | "version": "3.0.0",
581 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
582 | "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
583 | "dev": true,
584 | "engines": {
585 | "node": ">=4"
586 | }
587 | },
588 | "node_modules/has-symbols": {
589 | "version": "1.0.3",
590 | "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
591 | "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==",
592 | "engines": {
593 | "node": ">= 0.4"
594 | },
595 | "funding": {
596 | "url": "https://github.com/sponsors/ljharb"
597 | }
598 | },
599 | "node_modules/http-errors": {
600 | "version": "2.0.0",
601 | "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz",
602 | "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==",
603 | "dependencies": {
604 | "depd": "2.0.0",
605 | "inherits": "2.0.4",
606 | "setprototypeof": "1.2.0",
607 | "statuses": "2.0.1",
608 | "toidentifier": "1.0.1"
609 | },
610 | "engines": {
611 | "node": ">= 0.8"
612 | }
613 | },
614 | "node_modules/iconv-lite": {
615 | "version": "0.4.24",
616 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
617 | "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
618 | "dependencies": {
619 | "safer-buffer": ">= 2.1.2 < 3"
620 | },
621 | "engines": {
622 | "node": ">=0.10.0"
623 | }
624 | },
625 | "node_modules/ignore-by-default": {
626 | "version": "1.0.1",
627 | "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz",
628 | "integrity": "sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==",
629 | "dev": true
630 | },
631 | "node_modules/inherits": {
632 | "version": "2.0.4",
633 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
634 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
635 | },
636 | "node_modules/ipaddr.js": {
637 | "version": "1.9.1",
638 | "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
639 | "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==",
640 | "engines": {
641 | "node": ">= 0.10"
642 | }
643 | },
644 | "node_modules/is-binary-path": {
645 | "version": "2.1.0",
646 | "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
647 | "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
648 | "dev": true,
649 | "dependencies": {
650 | "binary-extensions": "^2.0.0"
651 | },
652 | "engines": {
653 | "node": ">=8"
654 | }
655 | },
656 | "node_modules/is-extglob": {
657 | "version": "2.1.1",
658 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
659 | "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
660 | "dev": true,
661 | "engines": {
662 | "node": ">=0.10.0"
663 | }
664 | },
665 | "node_modules/is-glob": {
666 | "version": "4.0.3",
667 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
668 | "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
669 | "dev": true,
670 | "dependencies": {
671 | "is-extglob": "^2.1.1"
672 | },
673 | "engines": {
674 | "node": ">=0.10.0"
675 | }
676 | },
677 | "node_modules/is-number": {
678 | "version": "7.0.0",
679 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
680 | "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
681 | "dev": true,
682 | "engines": {
683 | "node": ">=0.12.0"
684 | }
685 | },
686 | "node_modules/make-error": {
687 | "version": "1.3.6",
688 | "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz",
689 | "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==",
690 | "dev": true
691 | },
692 | "node_modules/media-typer": {
693 | "version": "0.3.0",
694 | "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
695 | "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==",
696 | "engines": {
697 | "node": ">= 0.6"
698 | }
699 | },
700 | "node_modules/merge-descriptors": {
701 | "version": "1.0.1",
702 | "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
703 | "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w=="
704 | },
705 | "node_modules/methods": {
706 | "version": "1.1.2",
707 | "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
708 | "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==",
709 | "engines": {
710 | "node": ">= 0.6"
711 | }
712 | },
713 | "node_modules/mime": {
714 | "version": "1.6.0",
715 | "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
716 | "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
717 | "bin": {
718 | "mime": "cli.js"
719 | },
720 | "engines": {
721 | "node": ">=4"
722 | }
723 | },
724 | "node_modules/mime-db": {
725 | "version": "1.52.0",
726 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
727 | "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
728 | "engines": {
729 | "node": ">= 0.6"
730 | }
731 | },
732 | "node_modules/mime-types": {
733 | "version": "2.1.35",
734 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
735 | "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
736 | "dependencies": {
737 | "mime-db": "1.52.0"
738 | },
739 | "engines": {
740 | "node": ">= 0.6"
741 | }
742 | },
743 | "node_modules/minimatch": {
744 | "version": "3.1.2",
745 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
746 | "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
747 | "dev": true,
748 | "dependencies": {
749 | "brace-expansion": "^1.1.7"
750 | },
751 | "engines": {
752 | "node": "*"
753 | }
754 | },
755 | "node_modules/ms": {
756 | "version": "2.0.0",
757 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
758 | "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
759 | },
760 | "node_modules/negotiator": {
761 | "version": "0.6.3",
762 | "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz",
763 | "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==",
764 | "engines": {
765 | "node": ">= 0.6"
766 | }
767 | },
768 | "node_modules/node-fetch": {
769 | "version": "2.6.9",
770 | "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.9.tgz",
771 | "integrity": "sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg==",
772 | "dependencies": {
773 | "whatwg-url": "^5.0.0"
774 | },
775 | "engines": {
776 | "node": "4.x || >=6.0.0"
777 | },
778 | "peerDependencies": {
779 | "encoding": "^0.1.0"
780 | },
781 | "peerDependenciesMeta": {
782 | "encoding": {
783 | "optional": true
784 | }
785 | }
786 | },
787 | "node_modules/nodemon": {
788 | "version": "2.0.22",
789 | "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.22.tgz",
790 | "integrity": "sha512-B8YqaKMmyuCO7BowF1Z1/mkPqLk6cs/l63Ojtd6otKjMx47Dq1utxfRxcavH1I7VSaL8n5BUaoutadnsX3AAVQ==",
791 | "dev": true,
792 | "dependencies": {
793 | "chokidar": "^3.5.2",
794 | "debug": "^3.2.7",
795 | "ignore-by-default": "^1.0.1",
796 | "minimatch": "^3.1.2",
797 | "pstree.remy": "^1.1.8",
798 | "semver": "^5.7.1",
799 | "simple-update-notifier": "^1.0.7",
800 | "supports-color": "^5.5.0",
801 | "touch": "^3.1.0",
802 | "undefsafe": "^2.0.5"
803 | },
804 | "bin": {
805 | "nodemon": "bin/nodemon.js"
806 | },
807 | "engines": {
808 | "node": ">=8.10.0"
809 | },
810 | "funding": {
811 | "type": "opencollective",
812 | "url": "https://opencollective.com/nodemon"
813 | }
814 | },
815 | "node_modules/nodemon/node_modules/debug": {
816 | "version": "3.2.7",
817 | "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
818 | "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
819 | "dev": true,
820 | "dependencies": {
821 | "ms": "^2.1.1"
822 | }
823 | },
824 | "node_modules/nodemon/node_modules/ms": {
825 | "version": "2.1.3",
826 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
827 | "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
828 | "dev": true
829 | },
830 | "node_modules/nopt": {
831 | "version": "1.0.10",
832 | "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz",
833 | "integrity": "sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg==",
834 | "dev": true,
835 | "dependencies": {
836 | "abbrev": "1"
837 | },
838 | "bin": {
839 | "nopt": "bin/nopt.js"
840 | },
841 | "engines": {
842 | "node": "*"
843 | }
844 | },
845 | "node_modules/normalize-path": {
846 | "version": "3.0.0",
847 | "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
848 | "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
849 | "dev": true,
850 | "engines": {
851 | "node": ">=0.10.0"
852 | }
853 | },
854 | "node_modules/object-inspect": {
855 | "version": "1.12.3",
856 | "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz",
857 | "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==",
858 | "funding": {
859 | "url": "https://github.com/sponsors/ljharb"
860 | }
861 | },
862 | "node_modules/on-finished": {
863 | "version": "2.4.1",
864 | "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz",
865 | "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==",
866 | "dependencies": {
867 | "ee-first": "1.1.1"
868 | },
869 | "engines": {
870 | "node": ">= 0.8"
871 | }
872 | },
873 | "node_modules/parseurl": {
874 | "version": "1.3.3",
875 | "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
876 | "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==",
877 | "engines": {
878 | "node": ">= 0.8"
879 | }
880 | },
881 | "node_modules/path-to-regexp": {
882 | "version": "0.1.7",
883 | "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
884 | "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ=="
885 | },
886 | "node_modules/picomatch": {
887 | "version": "2.3.1",
888 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
889 | "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
890 | "dev": true,
891 | "engines": {
892 | "node": ">=8.6"
893 | },
894 | "funding": {
895 | "url": "https://github.com/sponsors/jonschlinkert"
896 | }
897 | },
898 | "node_modules/proxy-addr": {
899 | "version": "2.0.7",
900 | "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
901 | "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==",
902 | "dependencies": {
903 | "forwarded": "0.2.0",
904 | "ipaddr.js": "1.9.1"
905 | },
906 | "engines": {
907 | "node": ">= 0.10"
908 | }
909 | },
910 | "node_modules/pstree.remy": {
911 | "version": "1.1.8",
912 | "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz",
913 | "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==",
914 | "dev": true
915 | },
916 | "node_modules/qs": {
917 | "version": "6.11.0",
918 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz",
919 | "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==",
920 | "dependencies": {
921 | "side-channel": "^1.0.4"
922 | },
923 | "engines": {
924 | "node": ">=0.6"
925 | },
926 | "funding": {
927 | "url": "https://github.com/sponsors/ljharb"
928 | }
929 | },
930 | "node_modules/range-parser": {
931 | "version": "1.2.1",
932 | "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
933 | "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==",
934 | "engines": {
935 | "node": ">= 0.6"
936 | }
937 | },
938 | "node_modules/raw-body": {
939 | "version": "2.5.1",
940 | "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz",
941 | "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==",
942 | "dependencies": {
943 | "bytes": "3.1.2",
944 | "http-errors": "2.0.0",
945 | "iconv-lite": "0.4.24",
946 | "unpipe": "1.0.0"
947 | },
948 | "engines": {
949 | "node": ">= 0.8"
950 | }
951 | },
952 | "node_modules/readdirp": {
953 | "version": "3.6.0",
954 | "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
955 | "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
956 | "dev": true,
957 | "dependencies": {
958 | "picomatch": "^2.2.1"
959 | },
960 | "engines": {
961 | "node": ">=8.10.0"
962 | }
963 | },
964 | "node_modules/safe-buffer": {
965 | "version": "5.2.1",
966 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
967 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
968 | "funding": [
969 | {
970 | "type": "github",
971 | "url": "https://github.com/sponsors/feross"
972 | },
973 | {
974 | "type": "patreon",
975 | "url": "https://www.patreon.com/feross"
976 | },
977 | {
978 | "type": "consulting",
979 | "url": "https://feross.org/support"
980 | }
981 | ]
982 | },
983 | "node_modules/safer-buffer": {
984 | "version": "2.1.2",
985 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
986 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
987 | },
988 | "node_modules/semver": {
989 | "version": "5.7.1",
990 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
991 | "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
992 | "dev": true,
993 | "bin": {
994 | "semver": "bin/semver"
995 | }
996 | },
997 | "node_modules/send": {
998 | "version": "0.18.0",
999 | "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz",
1000 | "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==",
1001 | "dependencies": {
1002 | "debug": "2.6.9",
1003 | "depd": "2.0.0",
1004 | "destroy": "1.2.0",
1005 | "encodeurl": "~1.0.2",
1006 | "escape-html": "~1.0.3",
1007 | "etag": "~1.8.1",
1008 | "fresh": "0.5.2",
1009 | "http-errors": "2.0.0",
1010 | "mime": "1.6.0",
1011 | "ms": "2.1.3",
1012 | "on-finished": "2.4.1",
1013 | "range-parser": "~1.2.1",
1014 | "statuses": "2.0.1"
1015 | },
1016 | "engines": {
1017 | "node": ">= 0.8.0"
1018 | }
1019 | },
1020 | "node_modules/send/node_modules/ms": {
1021 | "version": "2.1.3",
1022 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
1023 | "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
1024 | },
1025 | "node_modules/serve-static": {
1026 | "version": "1.15.0",
1027 | "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz",
1028 | "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==",
1029 | "dependencies": {
1030 | "encodeurl": "~1.0.2",
1031 | "escape-html": "~1.0.3",
1032 | "parseurl": "~1.3.3",
1033 | "send": "0.18.0"
1034 | },
1035 | "engines": {
1036 | "node": ">= 0.8.0"
1037 | }
1038 | },
1039 | "node_modules/setprototypeof": {
1040 | "version": "1.2.0",
1041 | "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
1042 | "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw=="
1043 | },
1044 | "node_modules/side-channel": {
1045 | "version": "1.0.4",
1046 | "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
1047 | "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==",
1048 | "dependencies": {
1049 | "call-bind": "^1.0.0",
1050 | "get-intrinsic": "^1.0.2",
1051 | "object-inspect": "^1.9.0"
1052 | },
1053 | "funding": {
1054 | "url": "https://github.com/sponsors/ljharb"
1055 | }
1056 | },
1057 | "node_modules/simple-update-notifier": {
1058 | "version": "1.1.0",
1059 | "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-1.1.0.tgz",
1060 | "integrity": "sha512-VpsrsJSUcJEseSbMHkrsrAVSdvVS5I96Qo1QAQ4FxQ9wXFcB+pjj7FB7/us9+GcgfW4ziHtYMc1J0PLczb55mg==",
1061 | "dev": true,
1062 | "dependencies": {
1063 | "semver": "~7.0.0"
1064 | },
1065 | "engines": {
1066 | "node": ">=8.10.0"
1067 | }
1068 | },
1069 | "node_modules/simple-update-notifier/node_modules/semver": {
1070 | "version": "7.0.0",
1071 | "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz",
1072 | "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==",
1073 | "dev": true,
1074 | "bin": {
1075 | "semver": "bin/semver.js"
1076 | }
1077 | },
1078 | "node_modules/statuses": {
1079 | "version": "2.0.1",
1080 | "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
1081 | "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==",
1082 | "engines": {
1083 | "node": ">= 0.8"
1084 | }
1085 | },
1086 | "node_modules/supports-color": {
1087 | "version": "5.5.0",
1088 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
1089 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
1090 | "dev": true,
1091 | "dependencies": {
1092 | "has-flag": "^3.0.0"
1093 | },
1094 | "engines": {
1095 | "node": ">=4"
1096 | }
1097 | },
1098 | "node_modules/to-regex-range": {
1099 | "version": "5.0.1",
1100 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
1101 | "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
1102 | "dev": true,
1103 | "dependencies": {
1104 | "is-number": "^7.0.0"
1105 | },
1106 | "engines": {
1107 | "node": ">=8.0"
1108 | }
1109 | },
1110 | "node_modules/toidentifier": {
1111 | "version": "1.0.1",
1112 | "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
1113 | "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==",
1114 | "engines": {
1115 | "node": ">=0.6"
1116 | }
1117 | },
1118 | "node_modules/touch": {
1119 | "version": "3.1.0",
1120 | "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz",
1121 | "integrity": "sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==",
1122 | "dev": true,
1123 | "dependencies": {
1124 | "nopt": "~1.0.10"
1125 | },
1126 | "bin": {
1127 | "nodetouch": "bin/nodetouch.js"
1128 | }
1129 | },
1130 | "node_modules/tr46": {
1131 | "version": "0.0.3",
1132 | "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
1133 | "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw=="
1134 | },
1135 | "node_modules/ts-node": {
1136 | "version": "10.9.1",
1137 | "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz",
1138 | "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==",
1139 | "dev": true,
1140 | "dependencies": {
1141 | "@cspotcode/source-map-support": "^0.8.0",
1142 | "@tsconfig/node10": "^1.0.7",
1143 | "@tsconfig/node12": "^1.0.7",
1144 | "@tsconfig/node14": "^1.0.0",
1145 | "@tsconfig/node16": "^1.0.2",
1146 | "acorn": "^8.4.1",
1147 | "acorn-walk": "^8.1.1",
1148 | "arg": "^4.1.0",
1149 | "create-require": "^1.1.0",
1150 | "diff": "^4.0.1",
1151 | "make-error": "^1.1.1",
1152 | "v8-compile-cache-lib": "^3.0.1",
1153 | "yn": "3.1.1"
1154 | },
1155 | "bin": {
1156 | "ts-node": "dist/bin.js",
1157 | "ts-node-cwd": "dist/bin-cwd.js",
1158 | "ts-node-esm": "dist/bin-esm.js",
1159 | "ts-node-script": "dist/bin-script.js",
1160 | "ts-node-transpile-only": "dist/bin-transpile.js",
1161 | "ts-script": "dist/bin-script-deprecated.js"
1162 | },
1163 | "peerDependencies": {
1164 | "@swc/core": ">=1.2.50",
1165 | "@swc/wasm": ">=1.2.50",
1166 | "@types/node": "*",
1167 | "typescript": ">=2.7"
1168 | },
1169 | "peerDependenciesMeta": {
1170 | "@swc/core": {
1171 | "optional": true
1172 | },
1173 | "@swc/wasm": {
1174 | "optional": true
1175 | }
1176 | }
1177 | },
1178 | "node_modules/type-is": {
1179 | "version": "1.6.18",
1180 | "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
1181 | "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
1182 | "dependencies": {
1183 | "media-typer": "0.3.0",
1184 | "mime-types": "~2.1.24"
1185 | },
1186 | "engines": {
1187 | "node": ">= 0.6"
1188 | }
1189 | },
1190 | "node_modules/typescript": {
1191 | "version": "5.0.2",
1192 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.0.2.tgz",
1193 | "integrity": "sha512-wVORMBGO/FAs/++blGNeAVdbNKtIh1rbBL2EyQ1+J9lClJ93KiiKe8PmFIVdXhHcyv44SL9oglmfeSsndo0jRw==",
1194 | "dev": true,
1195 | "bin": {
1196 | "tsc": "bin/tsc",
1197 | "tsserver": "bin/tsserver"
1198 | },
1199 | "engines": {
1200 | "node": ">=12.20"
1201 | }
1202 | },
1203 | "node_modules/undefsafe": {
1204 | "version": "2.0.5",
1205 | "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz",
1206 | "integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==",
1207 | "dev": true
1208 | },
1209 | "node_modules/unpipe": {
1210 | "version": "1.0.0",
1211 | "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
1212 | "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==",
1213 | "engines": {
1214 | "node": ">= 0.8"
1215 | }
1216 | },
1217 | "node_modules/utils-merge": {
1218 | "version": "1.0.1",
1219 | "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
1220 | "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==",
1221 | "engines": {
1222 | "node": ">= 0.4.0"
1223 | }
1224 | },
1225 | "node_modules/v8-compile-cache-lib": {
1226 | "version": "3.0.1",
1227 | "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz",
1228 | "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==",
1229 | "dev": true
1230 | },
1231 | "node_modules/vary": {
1232 | "version": "1.1.2",
1233 | "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
1234 | "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==",
1235 | "engines": {
1236 | "node": ">= 0.8"
1237 | }
1238 | },
1239 | "node_modules/webidl-conversions": {
1240 | "version": "3.0.1",
1241 | "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
1242 | "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ=="
1243 | },
1244 | "node_modules/whatwg-url": {
1245 | "version": "5.0.0",
1246 | "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz",
1247 | "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==",
1248 | "dependencies": {
1249 | "tr46": "~0.0.3",
1250 | "webidl-conversions": "^3.0.0"
1251 | }
1252 | },
1253 | "node_modules/yn": {
1254 | "version": "3.1.1",
1255 | "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz",
1256 | "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==",
1257 | "dev": true,
1258 | "engines": {
1259 | "node": ">=6"
1260 | }
1261 | }
1262 | }
1263 | }
1264 |
--------------------------------------------------------------------------------