├── 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 | 7 | 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 | Cool GIF 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 | 31 | 32 | 43 | -------------------------------------------------------------------------------- /sveltekit-app/src/routes/+page.svelte: -------------------------------------------------------------------------------- 1 | 19 | 20 |

Hello from SvelteKit on Space! ✨

21 | Cool GIF 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 | Cool GIF 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 | Cool GIF 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 | Cool GIF 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 | Cool GIF 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 | Cool GIF 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 | --------------------------------------------------------------------------------